html[data-bespoke-entry=direct]{scroll-behavior:auto}
/* V26 / Le seuil à échelle impossible. A filmic opening precedes the places. */
body.bespoke-home .bespoke-opening{height:135svh;isolation:isolate}
body.bespoke-home .bespoke-opening .chapter-stage{height:100svh;min-height:0;background:#d9dfd4;color:#fff;isolation:isolate}
.opening-image,.opening-image picture,.opening-image img,.opening-image canvas,.opening-air{position:absolute;inset:0;width:100%;height:100%}
.opening-image{overflow:hidden;margin:0}
.opening-image img{object-fit:cover;object-position:50% 50%;transform:scale(var(--opening-scale,1.035)) translate3d(var(--opening-x,0px),var(--opening-y,0px),0);transform-origin:55% 54%;will-change:transform}
.opening-image canvas{opacity:0;transition:opacity .5s;pointer-events:none}
.opening-image[data-painted=true] canvas{opacity:1}
.opening-air{background:linear-gradient(180deg,#f4f2e61f 0%,transparent 32%,transparent 55%,#102d2c35 83%,#102d2c55);pointer-events:none}
.opening-kicker{position:absolute;top:145px;left:var(--space);font:400 11px/1.6 var(--sans);letter-spacing:.05em;color:#243c32;display:flex;align-items:center;gap:15px;opacity:calc(1 - var(--opening-progress,0)*.6)}
.opening-kicker i{font-style:normal;opacity:.5}
.opening-title{position:absolute;top:40%;left:var(--space);margin:0;font:400 clamp(98px,11.9vw,202px)/.83 var(--serif);letter-spacing:-.035em;color:#fff9ef;transform:translate3d(0,calc(var(--opening-progress,0)*-36px),0);text-shadow:0 2px 28px #23362930;z-index:2}
.opening-line{display:block;overflow:clip;padding:.15em .08em .22em;margin:-.15em -.08em -.22em}
.opening-line>span,.opening-line>em{display:block;animation:opening-word 1.25s cubic-bezier(.22,.7,.15,1) both;animation-delay:.12s}
.opening-line>em{font-style:italic;margin-left:.65em;animation-delay:.25s}
.opening-thought{position:absolute;bottom:52px;left:var(--space);font:400 14px/1.7 var(--sans);color:#fff9ef;text-shadow:0 1px 8px #17332a44}
.opening-invitation{position:absolute;right:var(--space);bottom:45px;display:flex;align-items:center;gap:40px;font:400 13px/1.5 var(--sans);padding:8px 0;min-height:48px;border-bottom:1px solid #fff9ef80;z-index:3;color:#fff9ef}
.opening-invitation i{font:400 32px/1 var(--serif);transition:transform .3s}.opening-invitation:hover i{transform:translateY(5px)}
.opening-material{position:absolute;right:var(--space);top:51%;color:#29493e;font:400 12px/1.7 var(--sans);text-align:right;text-shadow:none}.opening-material small{display:block;font-size:10px;opacity:.85;margin-top:8px}
/* Keep the small editorial annotations legible as glass and daylight move
   behind them. The pale paper remains local to the words. */
.opening-kicker,.opening-material{padding:8px 12px;background:#f6f3e9f0;border-left:1px solid #29493e40;backdrop-filter:blur(6px)}
.opening-measure{position:absolute;left:var(--space);right:var(--space);bottom:17px;display:flex;gap:16px;align-items:center;font:400 9px/1.5 var(--mono);color:#fff9efaa;pointer-events:none}.opening-measure i{flex:1;height:1px;background:#fff9ef4d;transform-origin:left;scale:calc(.28 + var(--opening-progress,0)*.72) 1}
body.bespoke-home .journey-chapter{height:220svh}
/* A full original photograph accompanies each place when scripts are disabled.
   The noscript content is absent from the rendered DOM in the animated site. */
.passage-still{position:absolute;inset:0;margin:0;overflow:hidden;pointer-events:none}
.passage-still img{width:100%;height:100%;object-fit:cover;object-position:55% center}
.passage-still[data-still-form="1"] img{object-position:50% 40%}
.passage-still::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#142b2680,transparent 44%,#142b2625)}
.chapter-stage:has(.passage-still) .passage-copy{--passage-reading:1;--passage-title-opacity:1}
.chapter-stage:has(.passage-still) .passage-copy :is(.passage-title,.passage-question,.passage-description,.passage-project-link),
.chapter-stage:has(.passage-still) :is(.scene-caption,.passage-label){color:#fff;text-shadow:0 1px 7px #092e25ba,0 2px 20px #092e258c}
.chapter-stage:has(.passage-still) .passage-project-link{border-color:#ffffff80}
.chapter-stage:has(.passage-still) .passage-copy::before{opacity:.8}
.chapter-stage:has(.passage-still) .label-form{display:none}
.chapter-stage:has(.passage-still) .label-place{opacity:1}
.world-unavailable body.bespoke-home .journey-chapter :is(.scene-caption,.passage-label){color:#fff;text-shadow:0 1px 7px #092e25ba,0 2px 20px #092e258c}
.world-unavailable body.bespoke-home[data-bespoke-section=passage] .site-header{color:#fff9ef;background:linear-gradient(180deg,#173b32cb,#173b3266 65%,transparent)}
.world-unavailable body.bespoke-home[data-bespoke-section=passage] .site-header :is(.wordmark-point,.wordmark small){color:#fff9ef}
.world-unavailable body.bespoke-home .journey-nav a>span:first-child{color:#fff;border-color:#ffffff85;text-shadow:0 1px 7px #092e25ba}
body.bespoke-home .journey-nav{opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
body.bespoke-home[data-bespoke-section=passage] .journey-nav{opacity:1;visibility:visible}
body.bespoke-home .scene-caption{top:125px;font-family:var(--sans);font-size:11px}
body.bespoke-home .passage-label{font:400 10px/1.7 var(--sans)}
body.bespoke-home .passage-intention-line{display:none}
.bespoke-coda{min-height:0;position:relative;overflow:hidden;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:60px 5vw;background:#e4e8dc;padding-top:95px;padding-bottom:55px;scroll-margin-top:96px;isolation:isolate}
.bespoke-coda::before{content:'';position:absolute;width:38vw;height:100%;background:#f2eee3;right:7%;top:0;transform:skew(-13deg);z-index:-1}
.coda-copy{position:relative;z-index:2}.coda-copy>.eyebrow{font-size:11px;line-height:1.7;color:#4d675b}
.coda-copy h2{font:400 clamp(62px,6.3vw,102px)/.99 var(--serif);letter-spacing:-.035em;margin:27px 0 30px}.coda-copy h2 em{font-style:italic}
.coda-copy p{font-size:14px;line-height:1.85;max-width:365px;color:#455c50;margin:0 0 20px}
.coda-model{position:relative;margin:35px -8vw 35px -4vw;transform:rotate(-5deg);box-shadow:0 35px 70px #293d2420;border:10px solid #f6f3e9;background:#f6f3e9}
.coda-model img{aspect-ratio:3/2;object-fit:cover}.coda-model figcaption{padding:17px 6px 5px;display:flex;flex-direction:column;gap:7px;font-size:11px;line-height:1.5}.coda-model figcaption span{font-size:9px;color:#5b6d60}
.coda-register{display:grid;grid-template-columns:repeat(3,1fr);grid-column:1/-1;gap:35px;position:relative;z-index:2}
.coda-register a{display:flex;align-items:center;gap:18px;border-top:1px solid #233f303d;min-height:63px;font-size:12px}.coda-register a>span{font-size:9px;opacity:.65}.coda-register strong{font-weight:400}.coda-register i{font-style:normal;margin-left:auto;font-size:22px;transition:transform .3s}.coda-register a:hover i{transform:translate(3px,-3px)}
@keyframes opening-word{from{transform:translateY(108%) rotate(3deg)}to{transform:translateY(0) rotate(0)}}
@media(max-width:1000px){.opening-title{font-size:16vw;top:40%}.opening-material{top:33%;font-size:11px}.bespoke-coda{gap:40px 4vw}.coda-copy h2{font-size:8vw}.coda-model{margin-left:-1vw}}
@media(max-aspect-ratio:4/5){.opening-title{top:46%;font-size:clamp(95px,18vw,160px)}.opening-line>em{margin-left:.3em}.opening-image img{transform-origin:50% 50%}.opening-material{top:30%;text-align:left;left:var(--space);right:auto;color:#314f44;text-shadow:none}.opening-kicker{top:132px}}
@media(max-width:680px){body.bespoke-home .bespoke-opening{height:130svh}.opening-title{font-size:clamp(82px,22.8vw,145px);top:47%}.opening-line>em{margin-left:.27em}.opening-kicker{top:114px;font-size:9px;gap:11px}.opening-material{top:31%;font-size:10px}.opening-material small{font-size:9px}.opening-thought{bottom:112px;font-size:12px}.opening-invitation{bottom:48px;right:var(--space);left:var(--space);gap:20px;justify-content:space-between;font-size:12px}.opening-measure{bottom:18px;font-size:8px}body.bespoke-home .journey-chapter{height:200svh}body.bespoke-home .scene-caption{top:112px;font-size:10px}body.bespoke-home .journey-nav{right:12px;gap:12px}body.bespoke-home .journey-nav a{min-height:44px}.bespoke-coda{grid-template-columns:1fr;padding-top:65px;padding-bottom:35px;gap:35px}.bespoke-coda::before{width:65vw;right:5%;transform:skew(-9deg)}.coda-copy h2{font-size:clamp(56px,12vw,82px);margin:24px 0}.coda-copy p{font-size:13px}.coda-model{margin:8px -22px 22px 4vw;border-width:7px}.coda-register{grid-template-columns:1fr;gap:0}.coda-register a{min-height:59px;font-size:13px}.coda-copy .text-link{font-size:13px}}
@media(max-height:580px) and (min-aspect-ratio:4/3){.opening-title{top:33%;font-size:clamp(72px,9vw,108px)}.opening-kicker{top:110px}.opening-material{top:42%}.opening-thought{bottom:45px;font-size:11px}.opening-invitation{bottom:37px;font-size:11px}.opening-measure{bottom:11px}}
@media(prefers-reduced-motion:reduce){.opening-line>span,.opening-line>em{animation:none}.opening-title,.opening-image img{transform:none!important;will-change:auto}.opening-invitation i,.coda-register i,.journey-nav,.opening-image canvas{transition:none!important}}

@media(max-width:680px) and (max-height:650px) and (max-aspect-ratio:4/3){.opening-title{top:41%;font-size:clamp(76px,22vw,100px)}.opening-material{top:28%}}

/* V28 / Each generated film keeps a control attached to its own place. */
.passage-film-control{position:absolute;top:153px;right:var(--space);z-index:8;display:flex;align-items:center;gap:12px;min-height:44px;padding:6px 14px;border:1px solid #f6f3e96b;border-radius:999px;background:#18352bb3;color:#fff9ef;font:400 10px/1.4 var(--sans);cursor:pointer;backdrop-filter:blur(8px)}
.passage-film-control[hidden]{display:none!important}
.passage-film-control i{font-style:normal;font-size:13px;min-width:13px;text-align:center}
.passage-film-control:hover{background:#18352be6}
.passage-film-control:focus-visible{outline:2px solid #fff9ef;outline-offset:4px}
.passage-film-control[data-film-control-form="1"]{top:calc(20% + 42.9px + 16px)}
/* Relier's right-hand question occupies two lines; its film command follows
   those lines with 16px of air instead of crossing the editorial sentence. */
@media(min-width:681px) and (max-width:1050px),(min-width:681px) and (max-height:720px){.passage-film-control[data-film-control-form="1"]{top:calc(20% + 39.6px + 16px)}}
@media(max-width:680px){.passage-film-control,.passage-film-control[data-film-control-form="1"]{top:calc(max(144px,16%) + 38.4px + 16px);right:calc(var(--space) + 38px);font-size:10px;padding:5px 12px}}
@media(max-width:680px) and (max-height:650px){.passage-film-control,.passage-film-control[data-film-control-form="1"]{top:calc(max(144px,16%) + 34.1px + 16px)}}
/* Short portraits need the command beside the word, keeping its 44px target.
   Abriter leaves space on the right; S’effacer leaves space on the left. */
@media(max-width:680px) and (max-height:650px){
 .passage-film-control[data-film-control-form="0"]{right:calc(var(--space) + 26px);font-size:9px;gap:5px;padding-left:6px;padding-right:6px}
 .passage-film-control[data-film-control-form="2"]{left:var(--space);right:auto;font-size:9px;gap:4px;padding-left:4px;padding-right:4px}
}
/* On narrow phones the Maison's complete word shares this height. Compact
   only its pill so Reprendre stays beyond the word and before the index. */
@media(max-width:360px){.passage-film-control[data-film-control-form="1"]{gap:4px;padding-left:5px;padding-right:5px}}
@media(prefers-reduced-motion:reduce){.passage-film-control{display:none!important}}
