:root{
  --progress:0;--copy-opacity:0;--journey-opacity:0;--journey-progress:0;
  --arrival-opacity:0;--couple-scale:.58;--couple-y:12vh;--chrome-opacity:0;
  --cover-base-opacity:1;--cover-house-opacity:1;--cover-house-scale:1;--cover-house-x:0px;--cover-house-y:0px;--cover-portal-opacity:1
}
*{box-sizing:border-box}
html{background:#020303;scroll-behavior:smooth}
body{margin:0;background:#020303;color:#f2f1ed;font:16px/1.5 "Helvetica Neue",Arial,sans-serif;overflow-x:hidden}
a{color:inherit}.skip{position:fixed;z-index:100;left:1rem;top:-5rem;padding:.8rem;background:#fff;color:#111}.skip:focus{top:1rem}
.progress{position:fixed;z-index:90;inset:0 0 auto;height:2px;background:#ffffff12;opacity:var(--chrome-opacity)}.progress span{display:block;width:calc(var(--progress)*100%);height:100%;background:#f4f4f1}
.site-head{position:fixed;z-index:80;inset:0 0 auto;display:flex;justify-content:space-between;padding:1.35rem 1.6rem;color:#fff;mix-blend-mode:difference;pointer-events:none;opacity:var(--chrome-opacity)}
.wordmark{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-decoration:none;pointer-events:auto}.version{font-size:.58rem;letter-spacing:.15em;opacity:.56}
a.version{pointer-events:auto;color:inherit;text-decoration:none;opacity:.85;display:inline}
.cinema{position:fixed;z-index:0;inset:0;overflow:hidden;background:var(--end-background,#000)}
#house-canvas{position:absolute;z-index:2;inset:0;width:100%;height:100%;display:block}
#car-viewport{position:absolute;z-index:3;inset:0;pointer-events:none;opacity:0;filter:brightness(.91) saturate(.82);will-change:transform,opacity}
#car-viewport canvas{display:block;width:100%;height:100%}
#cover-portal{position:absolute;z-index:20;inset:0;overflow:hidden;background:transparent;opacity:var(--cover-portal-opacity);pointer-events:none;will-change:opacity}
.cover-frame{position:absolute;left:50%;top:50%;height:min(100vh,131.325vw);width:min(76.147vh,100vw);transform:translate(-50%,-50%);transform-origin:50% 50%}
.cover-frame img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill;user-select:none}
.cover-art{opacity:var(--cover-base-opacity);will-change:opacity}
.cover-house{clip-path:polygon(35.30% 59.63%,41.20% 57.16%,45.42% 55.41%,53.62% 55.78%,58.92% 55.69%,69.40% 59.72%,68.08% 60.46%,68.08% 70.83%,58.55% 70.83%,58.19% 72.02%,48.55% 72.02%,48.19% 70.92%,36.87% 70.92%,36.87% 60.46%);transform-origin:52.35% 63.53%;transform:translate3d(var(--cover-house-x),var(--cover-house-y),0) scale(var(--cover-house-scale));opacity:var(--cover-house-opacity);will-change:transform,opacity;filter:drop-shadow(0 1.1rem 1.5rem rgba(0,0,0,.28))}
.cover-invitation{position:absolute;z-index:2;left:4vw;bottom:5vh;width:min(21rem,23vw);color:#f2f1ed;text-shadow:0 2px 16px #000;opacity:var(--cover-base-opacity)}
.cover-invitation p{margin:0 0 .7rem;font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}.cover-invitation h1{margin:0;font:400 clamp(1.45rem,2.25vw,2.35rem)/1.02 Georgia,serif;letter-spacing:-.025em}.cover-invitation span{display:block;margin-top:1.15rem;font-size:.61rem;font-weight:700;letter-spacing:.19em;text-transform:uppercase}
.cover-entry{position:relative;z-index:5;min-height:250vh;pointer-events:none}
.arrival-couple{position:absolute;z-index:6;left:50%;bottom:0;width:min(25vw,340px);opacity:var(--arrival-opacity);transform:translate(-50%,var(--couple-y)) scale(var(--couple-scale));transform-origin:50% 100%;filter:drop-shadow(0 1.3rem 1rem #000d);will-change:opacity,transform}
.scene-label{position:absolute;z-index:10;left:1.6rem;bottom:1.3rem;display:flex;align-items:center;gap:.7rem;color:#c6cccc99;font-size:.61rem;letter-spacing:.16em;text-transform:uppercase}.scene-label span{width:2.5rem;height:1px;background:#c6cccc80}
.scene{position:relative;z-index:5;min-height:165vh;pointer-events:none}.frontage{min-height:190vh}.opening{min-height:170vh}.foundations{min-height:190vh}.closing{min-height:190vh}.archived-scene,[hidden]{display:none!important}
.copy-frame{position:sticky;top:0;height:100vh;display:flex;padding:8vh 7vw;opacity:var(--copy-opacity);transform:translateY(calc((1 - var(--copy-opacity))*2rem));will-change:opacity,transform}
.align-left{justify-content:flex-start}.align-right{justify-content:flex-end}.align-centre{justify-content:center;text-align:center}.align-top{align-items:flex-start;padding-top:8vh}.align-middle{align-items:center}.align-bottom{align-items:flex-end;padding-bottom:9vh}
.copy{position:relative;isolation:isolate;width:min(35rem,43vw);padding:1rem 0;text-shadow:0 2px 18px #000,0 1px 3px #000}.align-centre .copy{width:min(48rem,82vw)}
.scene:not(.frontage):not(.journey):not(.understanding) .copy::before{content:"";position:absolute;z-index:-1;inset:-3rem -4rem;background:radial-gradient(ellipse,#020303dc 0,#020303b0 46%,transparent 75%);filter:blur(14px)}
.eyebrow,.room-name{margin:0 0 1rem;color:#d5d9d7;font-size:.71rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.room-name{display:flex;align-items:center;gap:.8rem}.room-name::before{content:"";width:2.5rem;height:1px;background:#ddd}
h2{max-width:12ch;margin:0;font:400 clamp(2.8rem,5.4vw,6.1rem)/.98 Georgia,"Times New Roman",serif;letter-spacing:-.038em}.align-centre h2{max-width:14ch;margin-inline:auto}.dek{max-width:33rem;margin:1.6rem 0 0;color:#f2f2ef;font-size:clamp(1.04rem,1.35vw,1.23rem);font-weight:450;line-height:1.62}.align-centre .dek{margin-inline:auto}
.frontage .copy-frame{justify-content:center;text-align:center;padding-bottom:8vh}.frontage .copy{width:auto}.instruction{display:flex;align-items:center;gap:1rem;margin:0;color:#e2d7c4;font:400 clamp(1.1rem,1.7vw,1.5rem)/1.4 Georgia,serif;letter-spacing:.015em}.instruction span{width:2.1rem;height:1px;background:#b39a6c}
.understanding .copy{width:min(56rem,88vw)}.understanding h2{max-width:24ch;font-size:clamp(2.8rem,4.4vw,5rem)}.understanding .copy-frame{position:fixed;inset:0}
.after-house{position:relative;z-index:20;min-height:100vh;padding:15vh 7vw 10vh;background:linear-gradient(#dce4e4,#f3f1ec 42%);color:#121718}.after-inner{max-width:74rem;margin:auto}.after-inner .eyebrow{color:#536165}.after-inner h2{max-width:15ch;font-size:clamp(3.2rem,7vw,7.3rem)}.after-inner>p:not(.eyebrow){max-width:44rem;margin:2.4rem 0;font:clamp(1.15rem,2vw,1.55rem)/1.55 Georgia,serif}.links{margin-top:3rem}.links a{display:inline-block;padding:1rem 1.2rem;border:1px solid #172124;text-decoration:none;text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}
@media(max-width:720px){.version{display:none}.site-head{padding:1rem}.scene{min-height:145vh}.frontage{min-height:175vh}.copy-frame{padding:8vh 1.1rem}.align-left,.align-right{justify-content:flex-start}.align-middle{align-items:flex-end;padding-bottom:10vh}.copy,.align-centre .copy{width:100%}.copy::after{content:"";position:absolute;z-index:-2;inset:-6rem -1.1rem -3rem;background:linear-gradient(transparent,#030405e8)}h2{font-size:clamp(2.6rem,12vw,4.3rem)}.dek{font-size:1rem}.arrival-couple{width:36vw}.scene-label{display:none}}
@media(max-width:720px){.cover-invitation{left:1rem;right:1rem;bottom:2.25vh;width:auto;padding:.9rem 1rem;color:#f2f1ed;text-shadow:0 1px 12px #000;background:linear-gradient(90deg,rgba(0,0,0,.72),rgba(0,0,0,.16),transparent)}.cover-invitation h1{max-width:17rem;font-size:1.45rem}}
@media(max-width:720px){.journey{min-height:420vh}.arrival{min-height:130vh}.threshold{min-height:110vh}.understanding{min-height:190vh}.understanding .copy::after{display:none}}
@media(prefers-reduced-motion:reduce){.cinema,.progress,.instruction{display:none}.scene,.frontage,.opening,.foundations,.journey,.arrival,.threshold,.understanding{min-height:auto;padding:12vh 6vw;background:#111718}.copy-frame,.understanding .copy-frame{position:relative;height:auto;padding:0;opacity:1!important;transform:none!important}.copy,.align-centre .copy{width:min(43rem,100%);text-align:left;text-shadow:none}.align-centre h2,.align-centre .dek{margin-left:0}}
@media(prefers-reduced-motion:reduce){.closing{min-height:0}}
/* Locked V1 loop. The official image is never enlarged, stretched or redrawn. */
.cellophane-environment{position:absolute;z-index:1;inset:-8%;opacity:calc(var(--environment-opacity,1)*(1 - var(--editorial-progress,0)));background:linear-gradient(118deg,transparent 20%,#fff9 20.3%,transparent 21%,transparent 57%,#ffffff70 57.2%,transparent 58%),linear-gradient(34deg,#d6d7d5,#f8f7f2 38%,#e1e2df 68%,#f2f1ec);transform:translateY(calc(var(--cellophane-loosen,0)*5vh)) scale(1.04);will-change:transform,opacity}
.cellophane-environment::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(143deg,transparent 0 18%,#fff5 18.3%,#a6aaa220 18.6%,transparent 19%);opacity:.42}
.cover-frame{height:min(84vh,112vw);width:min(63.964vh,85.285vw);left:calc(50% - var(--editorial-progress,0)*26%);transform:translate(-50%,-50%) scale(calc(1 - var(--editorial-progress,0)*.12));filter:drop-shadow(0 1.5rem 2rem #0002)}
.cover-frame img{object-fit:contain}
.cover-house{transform:none;filter:none}
.cover-invitation{color:#202527;text-shadow:none;opacity:var(--invitation-opacity,1);left:4vw;bottom:9vh;width:min(20rem,23vw)}
.cover-entry{min-height:280vh}
#return-book{position:relative;min-height:230vh;pointer-events:none}
.closing{min-height:120vh}
.after-house{z-index:22;min-height:145vh;background:transparent;pointer-events:none;display:flex;align-items:center;padding:0 7vw 0 53vw}
.after-inner{position:sticky;top:25vh;max-width:38rem;margin:0;pointer-events:auto}
.after-inner h2{font-size:clamp(2rem,3.6vw,4rem);line-height:1.04;letter-spacing:-.03em;max-width:15ch}
.after-inner>p:not(.eyebrow){font:clamp(1.05rem,1.5vw,1.3rem)/1.6 "Helvetica Neue",Arial,sans-serif;margin:2rem 0}
.links a{padding:.75rem 0;border:0;border-bottom:1px solid #64706a;letter-spacing:.1em}
@media(max-width:720px){.cover-frame{height:min(68vh,112vw);width:min(51.78vh,85.285vw);top:calc(50% - var(--editorial-progress,0)*21%);left:50%;transform:translate(-50%,-50%) scale(calc(1 - var(--editorial-progress,0)*.45))}.cover-invitation{bottom:3vh;background:none;padding:0;text-shadow:none;color:#202527;max-width:90vw;width:auto}.cover-invitation h1{font-size:1.25rem;max-width:22rem}.after-house{padding:61vh 1.5rem 12vh;align-items:flex-start;min-height:140vh}.after-inner{top:61vh}.after-inner h2{font-size:2rem}.after-inner>p:not(.eyebrow){font-size:1rem}}
@media(prefers-reduced-motion:reduce){.cover-entry,#return-book{display:none}.after-house{background:#f2f1ec;padding:10vh 7vw;min-height:100vh}.after-inner{position:relative;top:auto}}
/* v23: one derived background plate; original book pixels stay authoritative. */
.cellophane-environment{background:#d4d6da url('assets/cellophane-background-v23.png') center/cover no-repeat}
.cellophane-environment::after{display:none}
.cover-art{mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent),linear-gradient(transparent,#000 5%,#000 95%,transparent);mask-composite:intersect;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent),linear-gradient(transparent,#000 5%,#000 95%,transparent);-webkit-mask-composite:source-in}
.cover-reforming{position:absolute;inset:0;opacity:var(--cover-ghost,0);pointer-events:none}
.cover-reforming img{transform:scale(calc(1.08 - var(--cover-reform,0)*.08));will-change:transform,opacity}
.reform-title{clip-path:inset(16% 19% 66% 23%);transform-origin:52% 25%}
.reform-subtitle{clip-path:inset(36% 24% 58% 28%);transform-origin:51% 39%}
.reform-family{clip-path:inset(45% 38% 47% 41%);transform-origin:51% 49%}
.reform-author{clip-path:inset(80% 25% 13% 27%);transform-origin:51% 84%}
.cover-reforming .reform-shell{transform-origin:50% 50%;transform:scale(calc(1.03 - var(--cover-reform,0)*.03))}
/* Finishing pass: type ownership changes, not the approved room cameras. */
.scene:not(.frontage):not(.opening):not(.foundations):not(.closing) h2{font-size:clamp(2.46rem,4.75vw,5.37rem)}
.foundations .copy-frame{align-items:flex-end;padding-bottom:3vh}
.foundations .copy{width:min(70rem,90vw)}
.foundations h2{max-width:none;font-size:clamp(2.24rem,4.32vw,4.88rem)}
.foundations .dek{font-size:1rem;max-width:44rem;margin-top:.8rem;color:#d4d3cf}
.scene[data-label="Bedroom"] .copy-frame{align-items:flex-start;padding-top:8vh}
.scene[data-label="Hallway"] .copy{width:min(26rem,34vw)}
.opening .copy-frame{align-items:flex-start;padding:8vh 7vw 0}
.opening .copy{position:static;width:100%;padding:0}
.opening .copy::before,.opening .copy::after{display:none}
.opening .eyebrow{margin-bottom:.7rem}
.opening h2{max-width:30ch;font-size:clamp(2rem,3.6vw,4rem);line-height:1.04;text-wrap:balance}
.opening .dek{position:absolute;left:50%;bottom:2.5vh;transform:translateX(-50%);width:min(60rem,86vw);max-width:60rem;margin:0}
.copy h2,.copy .dek,.after-inner>p{text-wrap:pretty}
.opening .copy h2{text-wrap:balance}
@media(max-width:720px){.scene[data-label="Hallway"] .copy{width:100%}}
@media(max-width:720px){.opening .copy-frame{padding:8vh 1.1rem 0}.opening h2{font-size:clamp(2rem,8.5vw,3rem)}.opening .dek{width:calc(100% - 2.2rem);bottom:3vh}}
