/* Existing pages: fluid canvases with bounded reading and form measures. */
.lt-finish :is(.sf-technology,.sf-services,.xp-boutique,.espace--compte,.espace--aide,.espace--abonnements){--lt-wrap:max(72rem,94vw)}
.jm-page :is(.jm-main,.jm-footer){width:94%;max-width:none}
@media(min-width:90rem){
 .lt-finish :is(.sf-head,.sf-service-head,.xp-boutique .xp-head,.espace--compte .entete-espace){padding-block:clamp(1rem,2svh,2.5rem)}
 .lt-finish :is(.sf-head,.sf-service-head,.xp-boutique .xp-head) .xp-title,.lt-finish .espace--compte .entete-espace h1{font-size:clamp(2.5rem,min(3.5vw,6svh),5.25rem)}
 .lt-finish :is(.sf-lead,.sf-service-head .xp-lead,.xp-boutique .xp-lead){font-size:clamp(1rem,calc(.75rem + .3vw),1.35rem);max-width:72ch}
 .lt-finish .sf-topic-nav button{font-size:clamp(.875rem,calc(.6rem + .3vw),1.2rem);padding:clamp(.5rem,1.4svh,1.25rem) clamp(.875rem,1.1vw,1.5rem)}
 .lt-finish .sf-topic-nav .pp-nav-thumb{flex-basis:clamp(2.375rem,2.2vw,4rem);height:clamp(3rem,2.9vw,5.2rem)}
 .lt-finish .sf-topic-nav .pp-nav-kind{font-size:clamp(.75rem,calc(.5rem + .2vw),.95rem)}
 .lt-finish .sf-topic{padding:clamp(1.5rem,min(2.5vw,3svh),4rem) clamp(1.5rem,2.5vw,4rem) .75rem}
 .lt-finish .sf-topic h2{font-size:clamp(2.25rem,min(2.5vw,5.5svh),4.5rem)}
 .lt-finish .sf-topic>p{font-size:clamp(.9375rem,calc(.75rem + min(.4vw,.6svh)),1.45rem);max-width:54ch}
 .lt-finish .sf-topic :is(.sf-specs,.sf-models){max-width:64ch}
 .lt-finish .sf-topic :is(dt,dd){font-size:clamp(.8125rem,calc(.6rem + .3vw),1.1rem)}
 .lt-finish .sf-technology .xp-stage{min-height:clamp(18rem,calc(100svh - 35rem),68rem)}
 .lt-finish .sf-tech-actions{padding-inline:clamp(1.5rem,2.5vw,4rem);padding-bottom:clamp(1rem,2svh,2.5rem)}
 .lt-finish .sf-tech-actions .xp-btn,.lt-finish .sf-technology .xp-gallery-controls .xp-chip{font-size:clamp(.875rem,calc(.65rem + .2vw),1.1rem)}
 .lt-finish .sf-technology .xp-hero-figure>.xp-stage-caption,.lt-finish .sf-footnote{font-size:clamp(.8125rem,calc(.6rem + .2vw),1rem)}
 .lt-finish .sf-services .sc-grid{gap:clamp(1rem,1.5vw,3rem)}
 .lt-finish .sf-services .sc-art{height:clamp(10rem,min(18vw,29svh),28rem)}
 .lt-finish .sf-services .sc-card-body{padding:clamp(1rem,1.5vw,2.5rem)}
 .lt-finish .sf-services .sc-card h2{font-size:clamp(1.4rem,1.4vw,2.25rem)}
 .lt-finish .sf-services .sc-card :is(.sc-card-lead,.sc-card-desc){font-size:clamp(.875rem,calc(.65rem + .25vw),1.15rem);max-width:52ch}
 .lt-finish .sf-services :is(.sc-filter,.sc-card button,.sc-direct){font-size:clamp(.875rem,calc(.65rem + .2vw),1.1rem)}
 .lt-finish .sf-services>.xp-notebook{max-width:100rem;margin-inline:auto}
 .lt-finish .sf-services .xp-side-frame{height:clamp(12rem,25svh,24rem)}
 .lt-finish .xp-boutique .xp-collection.psf-ready{grid-template-columns:clamp(12rem,14%,20rem) minmax(0,1fr);gap:clamp(1.5rem,2vw,3rem)}
 .lt-finish .xp-boutique .psf-ready .xp-piece.psf-piece{grid-template-columns:minmax(12rem,min(28rem,34%)) minmax(0,1fr);gap:clamp(1.5rem,2.5vw,4rem);padding:clamp(1.5rem,2.5vw,4rem)}
 .lt-finish .xp-boutique .psf-ready .xp-piece-figure{max-width:none}
 .lt-finish .xp-boutique .psf-ready .xp-piece-art{width:100%;height:auto;max-width:none;max-height:clamp(16rem,calc(100svh - 35rem),54rem)}
 .lt-finish .xp-boutique .psf-family-title{font-size:clamp(2rem,2.5vw,4rem)}
 .lt-finish .xp-boutique .psf-description{font-size:clamp(.9375rem,calc(.75rem + .25vw),1.2rem);max-width:60ch}
 .lt-finish .xp-boutique :is(.xp-family,.psf-facts dt,.psf-facts dd,.psf-model){font-size:clamp(.8125rem,calc(.6rem + .25vw),1.05rem)}
 .lt-finish .xp-boutique .ps-book-feature{grid-template-columns:minmax(15rem,.55fr) minmax(0,1fr);gap:clamp(2rem,3vw,5rem)}
 .lt-finish .xp-boutique .ps-book-feature img{width:auto;max-width:100%;max-height:clamp(20rem,55svh,44rem);margin-inline:auto}
 .lt-finish .xp-boutique .ps-book-feature p{font-size:clamp(.9375rem,calc(.75rem + .25vw),1.2rem)}
 .lt-finish .espace--compte :is(.member-card,.lt-drafts,.book-library,.shop-orders){max-width:100rem;margin-inline:auto}
 .lt-finish .espace--compte :is(.member-form,.member-choices){max-width:42rem}
 .lt-finish .espace--compte .member-main{padding:clamp(1.5rem,2.5vw,4rem)}
 .lt-finish .espace--compte .member-side::before{height:clamp(10rem,28svh,30rem)}
 .lt-finish .espace--compte :is(.member-title,.member-side h2){font-size:clamp(1.75rem,1.6vw,3rem)}
 .lt-finish .espace--compte :is(.member-intro,.member-label,.member-input,.member-submit){font-size:clamp(.9375rem,calc(.75rem + .2vw),1.15rem)}
 .lt-finish .espace--compte :is(.member-intro,.member-side>p){max-width:60ch}
 .jm-page .jm-hero{padding:clamp(1.5rem,min(3vw,4svh),5rem);gap:clamp(2rem,3vw,5rem)}
 .jm-page .jm-hero .jm-main-title{font-size:clamp(3rem,min(3.6vw,7svh),7rem)}
 .jm-page .jm-lead{font-size:clamp(1rem,calc(.75rem + .4vw),1.5rem);max-width:44ch}
 .jm-page .jm-book{height:clamp(24rem,calc(100svh - 32rem),64rem)}
 .jm-page .jm-card-preview{width:60%;max-width:none;height:75%;bottom:3rem}
 .jm-page .jm-card-preview img{width:100%;height:100%;object-fit:contain}
 .jm-page .jm-book figcaption,.jm-page .jm-note{font-size:clamp(.8125rem,calc(.6rem + .2vw),1rem)}
 .jm-page .jm-art img{height:clamp(18rem,38svh,50rem)}
 .jm-page .jm-steps p{font-size:clamp(.9375rem,calc(.75rem + .2vw),1.2rem);max-width:75ch}
 .welcome .introduction{padding-inline:clamp(1.75rem,3.4vw,10rem)}
 .welcome .invitation h1{font-size:clamp(3rem,min(3.6vw,8svh),7.5rem)}
 .welcome .description{font-size:clamp(1.0625rem,calc(.8rem + .4vw),1.65rem);max-width:40ch}
 .welcome .welcome-actions a{font-size:clamp(.875rem,calc(.65rem + .25vw),1.2rem)}
 .welcome .eyebrow{font-size:clamp(.8125rem,calc(.6rem + .2vw),1.1rem)}
}
@media(min-width:90rem) and (max-height:50rem){.lt-finish :is(.sf-head,.sf-service-head,.xp-boutique .xp-head){padding-block:.5rem}}

/* Secondary views: scale the content inside the fluid canvas too. */
@media(min-width:90rem){
 .lt-finish .sf-services>.xp-notebook{max-width:none;width:94%;padding-inline:0}
 .lt-finish .sf-services .xp-carnet{padding:clamp(1.5rem,2vw,4rem);gap:clamp(1rem,1.4vw,2.5rem)}
 .lt-finish .sf-services :is(.xp-label,.xp-legend,.xp-usage-name){font-size:clamp(1rem,calc(.6rem + .4vw),1.6rem);line-height:1.45}
 .lt-finish .sf-services :is(.xp-help,.xp-usage-desc,.xp-notebook-scope,.xp-privacy,.xp-process dd,.lt-save-brief>p,.xp-review p){font-size:clamp(.875rem,calc(.5rem + .35vw),1.35rem);line-height:1.6}
 .lt-finish .sf-services .xp-usage-num{font-size:clamp(.7rem,.45vw,1rem)}
 .lt-finish .sf-services .xp-usage-body{padding:clamp(.875rem,1.2vw,2rem)}
 .lt-finish .sf-services .xp-usages{gap:clamp(.5rem,.7vw,1.25rem)}
 .lt-finish .sf-services :is(.xp-textarea,.xp-select){font-size:clamp(1rem,calc(.6rem + .35vw),1.5rem);padding:clamp(.75rem,1vw,1.5rem)}
 .lt-finish .sf-services #xp-editor>.xp-field:first-child .xp-textarea{height:clamp(8rem,15svh,22rem);min-height:8rem}
 .lt-finish .sf-services .xp-select{min-height:clamp(3rem,4svh,5rem)}
 .lt-finish .sf-services :is(.xp-btn,.lt-save-brief .btn){font-size:clamp(.875rem,calc(.55rem + .3vw),1.35rem);padding:clamp(.75rem,1vw,1.5rem)}
 .lt-finish .sf-services :is(.xp-process,.lt-save-brief){padding:clamp(1rem,1.5vw,2.5rem);gap:clamp(.75rem,1vw,2rem)}
 .lt-finish .sf-services :is(.xp-process dt,.lt-save-brief h3){font-size:clamp(1rem,calc(.6rem + .35vw),1.5rem)}
 .lt-finish .sf-services .xp-side-frame{height:clamp(15rem,34svh,44rem)}
 .lt-finish .sf-services .xp-side-caption{font-size:clamp(.8125rem,calc(.5rem + .25vw),1.15rem);padding:clamp(.75rem,1vw,1.5rem)}
 .lt-finish .sf-services .xp-review{padding:clamp(1.5rem,2.5vw,4rem)}
 .lt-finish.is-sectors-view .sf-technology #secteurs{gap:clamp(1rem,1.5vw,3rem)}
 .lt-finish.is-sectors-view #secteurs>.titre-section{font-size:clamp(2rem,min(2.8vw,5.5svh),4.5rem);margin-block:clamp(.75rem,2svh,2rem)}
 .lt-finish.is-sectors-view #secteurs>.secteur{padding:clamp(1.5rem,2vw,4rem);gap:clamp(1rem,1.5svh,2rem);min-height:clamp(30rem,calc(100svh - 23rem),90rem);align-items:stretch}
 .lt-finish.is-sectors-view #secteurs .secteur-figure{width:100%;min-height:0}
 .lt-finish.is-sectors-view #secteurs .cadre{width:100%;max-width:none;margin:0}
 .lt-finish.is-sectors-view #secteurs .cadre img{width:100%;height:clamp(12rem,min(26vw,42svh),52rem);object-fit:contain}
 .lt-finish.is-sectors-view #secteurs .secteur-texte{margin-top:auto;width:100%}
 .lt-finish.is-sectors-view .sf-technology #secteurs :is(h2,h3){font-size:clamp(1.75rem,min(2vw,4svh),3.5rem)}
 .lt-finish.is-sectors-view .sf-technology #secteurs .numero{font-size:clamp(1.5rem,1.5vw,3rem)}
 .lt-finish.is-sectors-view .sf-technology #secteurs .secteur p:not(.numero){font-size:clamp(1rem,calc(.6rem + .4vw),1.6rem);line-height:1.65;max-width:64ch}
 .lt-finish.is-sectors-view .sf-technology #secteurs :is(.lien-fleche,.presentation-controls .btn){font-size:clamp(1rem,calc(.6rem + .35vw),1.5rem)}
 .lt-finish .espace--compte :is(.member-card,.lt-drafts,.book-library,.shop-orders){max-width:none}
 .lt-finish .espace--compte :is(.member-form,.member-choices){width:100%;max-width:72rem}
 .lt-finish .espace--compte :is(.member-title,.member-side h2){font-size:clamp(2rem,min(2.2vw,5svh),5rem)}
 .lt-finish .espace--compte :is(.member-choice,.member-label,.member-intro,.member-input,.member-submit,.member-side>p,.member-shortcuts a,.member-side>a,.member-private-shortcuts a){font-size:clamp(1rem,calc(.6rem + .35vw),1.5rem)}
 .lt-finish .espace--compte :is(.member-explanation,.member-status,.member-reveal,.member-side .member-help){font-size:clamp(.875rem,calc(.5rem + .3vw),1.25rem);line-height:1.6}
 .lt-finish .espace--compte .member-side{padding:clamp(1.5rem,2vw,4rem);gap:clamp(.75rem,1vw,2rem)}
 .lt-finish .espace--compte .member-side::before{height:clamp(14rem,32svh,44rem);margin:calc(-1 * clamp(1.5rem,2vw,4rem)) calc(-1 * clamp(1.5rem,2vw,4rem)) .5rem}
 .lt-finish .espace--compte :is(.member-input,.member-submit,.member-choice,.member-shortcuts a){min-height:clamp(3rem,4svh,5rem)}
 .lt-finish .espace--compte .member-form{gap:clamp(.5rem,1svh,1.5rem)}
 .lt-finish .espace--compte :is(.book-library,.shop-orders){padding-block:clamp(1.5rem,3svh,4rem)}
 .lt-finish .espace--compte :is(.book-library h2,.shop-orders h2,.lt-drafts-head h3){font-size:clamp(2rem,min(2.3vw,4.5svh),4rem)}
 .lt-finish .espace--compte :is(.book-copy h3,.book-history h3,.book-owned-title){font-size:clamp(1.5rem,1.6vw,3rem)}
 .lt-finish .espace--compte :is(.book-welcome,.book-locked){padding:clamp(1.5rem,2vw,4rem);gap:clamp(1rem,1.5vw,3rem)}
 .lt-finish .espace--compte :is(.book-library-grid,.book-owned-grid){gap:clamp(1rem,1.5vw,3rem)}
 .lt-finish .espace--compte :is(.book-copy p,.book-library-heading p,.book-library-status,.book-history-note,.book-library-footnote,.shop-orders-lead,.shop-read-status,.shop-footnote,.lt-drafts-head p){font-size:clamp(.9375rem,calc(.55rem + .3vw),1.35rem);line-height:1.65}
 .lt-finish .espace--compte :is(.book-free,.book-lock-label,.book-disabled,.book-file-pending,.book-price-row>span){font-size:clamp(.8125rem,calc(.5rem + .25vw),1.2rem)}
 .lt-finish .espace--compte .book-price-row strong{font-size:clamp(1.75rem,1.6vw,3rem)}
 .lt-finish .espace--compte .book-access-mark{width:clamp(4rem,5vw,10rem);font-size:clamp(2.7rem,3vw,6rem)}
}

@media(min-width:90rem){
 .lt-finish .sf-services .xp-carnet label:not(.xp-usage){font-size:clamp(1rem,calc(.6rem + .4vw),1.6rem)}
 .lt-finish .sf-services .xp-side-frame img{width:100%;height:100%;max-height:none;object-fit:cover}
 .lt-finish .espace--compte>:is(.book-library,.shop-orders){width:94%;max-width:none}
 .lt-finish .espace--compte .member-side>p:not(.member-help),.lt-finish .espace--compte .member-side>a:not(.member-back),.lt-finish .espace--compte .member-side .member-back{font-size:clamp(1rem,calc(.6rem + .35vw),1.5rem);line-height:1.6}
 .lt-finish .espace--compte .member-side .member-help{font-size:clamp(.875rem,calc(.5rem + .3vw),1.25rem)}
}

/* Review of secondary content: maintain a readable scale inside each canvas. */
@media(min-width:90rem){
 .jm-page :is(.jm-stories,.jm-collection){padding:clamp(1.5rem,2.5vw,4rem)}
 .jm-page :is(.jm-stories,.jm-collection) h2{font-size:clamp(2rem,min(2.6vw,5svh),4.5rem)}
 .jm-page .jm-steps li{padding:clamp(1rem,2svh,2rem) 0 clamp(1rem,2svh,2rem) clamp(2.5rem,3vw,5rem)}
 .jm-page .jm-steps li::before{font-size:clamp(.875rem,.8vw,1.3rem);top:clamp(1.2rem,2.3svh,2.5rem)}
 .jm-page .jm-steps h3{font-size:clamp(1.5rem,1.6vw,3rem)}
 .jm-page .jm-collection>div>p{font-size:clamp(1rem,calc(.65rem + .35vw),1.5rem);line-height:1.7;max-width:52ch}
 .jm-page .jm-view-nav :is(.jm-tab,.jm-back),.jm-page .jm-btn{font-size:clamp(.9375rem,calc(.6rem + .25vw),1.25rem)}
 .jm-page .jm-tab{padding:clamp(.625rem,1svh,1rem) clamp(1rem,1.4vw,2rem)}
 .jm-page .jm-book-offer{max-width:60ch;font-size:clamp(.9375rem,calc(.6rem + .3vw),1.35rem)}
 .jm-page .jm-book-offer p{font-size:inherit;line-height:1.65}
 .jm-page .jm-hero .jm-gift-copy h2{font-size:clamp(1.5rem,1.5vw,2.75rem)}
 .jm-page .jm-art figcaption{font-size:clamp(.875rem,calc(.6rem + .2vw),1.15rem)}
 .lt-finish :is(.espace--aide,.espace--abonnements) .entete-espace h1{font-size:clamp(2.5rem,min(3.5vw,6svh),5.25rem)}
 .lt-finish :is(.espace--aide,.espace--abonnements) .entete-espace .lead{font-size:clamp(1rem,calc(.65rem + .3vw),1.35rem);max-width:66ch}
 .lt-finish .xp-boutique .psf-ready :is(.psf-index,.psf-purchase-note,.psf-variant-count,.xp-piece-note){font-size:clamp(.875rem,calc(.55rem + .25vw),1.15rem);line-height:1.6}
 .lt-finish .xp-boutique .psf-ready :is(.psf-buy,.psf-badge){font-size:clamp(.8125rem,calc(.5rem + .25vw),1.1rem)}
 .lt-finish .xp-boutique .psf-purchase{flex-wrap:wrap;gap:clamp(.75rem,1vw,1.5rem)}
 .lt-finish .xp-boutique :is(.shop-entry-note,.shop-entry-actions>a,.shop-cart-open,.ps-news-jump){font-size:clamp(.9375rem,calc(.55rem + .25vw),1.2rem)}
 .lt-finish .xp-boutique :is(.ps-book-facts dt,.ps-book-facts dd,.ps-books-footnote,.ps-book-feature figcaption,.ps-book-candidates p){font-size:clamp(.875rem,calc(.55rem + .25vw),1.15rem);line-height:1.65}
 .lt-finish .xp-boutique :is(.ps-new-books h2,.ps-book-feature h3){font-size:clamp(2rem,2.3vw,4rem)}
 .lt-finish .xp-boutique .ps-book-candidates h3{font-size:clamp(1.5rem,1.5vw,2.5rem)}
 .lt-finish .espace--compte .book-transaction{grid-template-columns:minmax(8rem,.65fr) minmax(0,3fr) minmax(6rem,.55fr) minmax(8rem,1fr) auto;gap:clamp(1rem,1.5vw,2.5rem);padding-block:clamp(1.125rem,2svh,2.5rem)}
 .lt-finish .espace--compte .shop-order-row{grid-template-columns:minmax(8rem,.65fr) minmax(0,3fr) minmax(6rem,.55fr) auto;gap:clamp(1rem,1.5vw,2.5rem);padding-block:clamp(1.125rem,2svh,2.5rem)}
 .lt-finish .espace--compte :is(.book-transaction,.book-order-state,.book-order-date,.shop-order-row,.shop-order-row time,.shop-order-meta,.book-history-pages,.shop-pages,.lt-draft-excerpt){font-size:clamp(.9375rem,calc(.55rem + .25vw),1.2rem);line-height:1.6}
 .lt-finish .espace--compte :is(.book-order-ref,.shop-order-reference,.lt-draft-date){font-size:clamp(.875rem,calc(.5rem + .2vw),1.1rem)}
 .lt-finish .espace--compte :is(.book-order-detail,.book-history-pages button,.shop-order-row .shop-button,.shop-pages button,.lt-drafts-actions .btn,.lt-draft-actions .btn){font-size:clamp(.9375rem,calc(.55rem + .25vw),1.2rem)}
 .lt-finish .espace--compte .shop-order-row .shop-button{max-width:none}
 .lt-finish .espace--compte :is(.book-order-item h4,.shop-order-row h3,.lt-draft h4){font-size:clamp(1.25rem,1.3vw,2rem)}
 .lt-finish .espace--compte .lt-draft{padding:clamp(1rem,1.5vw,2.5rem)}
 .lt-finish :is(.shop-dialog,.book-receipt-dialog) :is(p,li,dt,dd,.shop-read-status,.shop-dialog-lead,.shop-cart-line-price,.shop-quantity){font-size:1rem}
 .lt-finish :is(.shop-dialog,.book-receipt-dialog) :is(.shop-button,.shop-back,.shop-link,.shop-remove,.book-order-detail,.book-history-pages button,[data-detail-back],[data-detail-retry]){font-size:.9375rem}
}

@media(max-width:600px){
 .lt-finish .shop-entry>div{width:100%;min-width:0;max-width:100%}
 .lt-finish .shop-product-grid,.lt-finish .shop-product-card,.lt-finish .shop-product-card label{min-width:0;max-width:100%}
 .lt-finish .shop-product-card select{width:100%;min-width:0;max-width:100%}
 .lt-finish .shop-cart-line{grid-template-columns:minmax(0,1fr)}
 .lt-finish .shop-cart-line>div{min-width:0}
 .lt-finish .shop-quantity{flex-wrap:wrap}
}
