@font-face{font-family:Geist;src:url(assets/geist.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{--paper:#f1eee6;--ink:#243631;--muted:#53605a;--line:#b9bdb0;--accent:#586d59;--serif:'Instrument Serif',Georgia,serif;color:var(--ink);background:var(--paper);font-family:Geist,sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{scrollbar-color:#8e998e var(--paper);scrollbar-width:thin}body{margin:0}::selection{background:#c8d2c0;color:#16251e}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:6px}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-underline-offset:4px}button{border:0;background:none}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linejoin:round;stroke-linecap:round}.skip{position:fixed;top:-100px;left:20px;background:var(--paper);padding:15px;z-index:30}.skip:focus{top:20px}
#scene{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;outline:none}header{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:32px 3.8vw;z-index:8;pointer-events:none}header>*{pointer-events:auto}.identity{display:flex;flex-direction:column;gap:5px;text-decoration:none}.identity-name{font-size:27px;letter-spacing:.16em;font-weight:450}.identity-detail{font-size:9px;letter-spacing:.17em;font-weight:500}.plan-button{display:flex;gap:16px;align-items:center;font-size:12px;padding:12px 0;border-bottom:1px solid var(--ink)}.plan-button svg{width:16px;height:16px}.plan-button:hover{color:#60745c}
#hero{position:fixed;top:29vh;left:6.2vw;z-index:3;max-width:37vw;pointer-events:none}h1{font-size:clamp(40px,4.7vw,78px);font-weight:380;letter-spacing:-.04em;line-height:1.04;margin:0 0 30px;text-wrap:balance}h1 em{font-style:normal;font-weight:500}#hero p{font-size:14px;line-height:1.9;color:var(--muted);margin:0 0 30px}.play-button{display:flex;align-items:center;gap:13px;font-size:12px;padding:12px 0;pointer-events:auto}.play-button svg{width:25px;height:25px;padding:5px;border:1px solid var(--ink);border-radius:50%;fill:var(--ink)}.play-button:hover{color:#6d7d66}.play-button:hover svg{transform:scale(1.1)}
#scroll-track{height:2800vh}#drawing-labels{position:fixed;inset:0;pointer-events:none;z-index:2;overflow:hidden}.room-label{position:absolute;transform:translate(-50%,-50%);text-align:center;white-space:nowrap;line-height:1.4;font-size:9px;letter-spacing:.065em;font-weight:550;color:#253831}.room-label small{display:block;font-size:8px;letter-spacing:0;font-weight:400;color:#4f5d54}.room-label.dim{font-size:8px;font-weight:400}
#loading{position:fixed;top:126px;right:3.8vw;z-index:10;width:210px;display:grid;grid-template-columns:1fr auto;gap:9px;font-size:10px;color:var(--muted)}#loading i{height:1px;background:#c3c7ba;grid-column:1/-1;display:block}#loading b{display:block;height:100%;width:0;background:var(--ink);transition:width .2s}#loading.done{opacity:0;transition:opacity .4s;pointer-events:none}
#caption{position:fixed;left:5vw;bottom:136px;z-index:4;max-width:350px;opacity:0;pointer-events:none;background:var(--paper);padding:19px 24px 21px;box-shadow:0 7px 24px #13201912}#caption h2{font-size:29px;font-weight:410;letter-spacing:-.035em;margin:0 0 8px;line-height:1.1}#caption p{font-size:12px;line-height:1.65;margin:0;color:var(--muted)}#sheet-note{position:fixed;bottom:136px;right:5vw;display:flex;flex-direction:column;text-align:right;font-size:8px;letter-spacing:.12em;line-height:1.8;pointer-events:none;z-index:2}#sheet-note span:first-child{font-weight:600;font-size:10px}
footer{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px 3.8vw calc(25px + env(safe-area-inset-bottom));z-index:8;background:var(--paper)}.credit{font-size:9px;letter-spacing:.12em;font-weight:600;display:flex;flex-direction:column;gap:6px;flex:1}.credit span{font-size:8px;letter-spacing:.09em;font-weight:400;color:var(--muted)}nav{display:flex;gap:6px;align-items:center;flex:1;justify-content:center}nav button{font-size:11px;padding:12px 13px;color:var(--muted);white-space:nowrap;position:relative}nav button[aria-current]{color:var(--ink)}nav button:after{content:'';position:absolute;bottom:4px;left:13px;right:13px;height:1px;background:var(--ink);transform:scaleX(0);transition:transform .25s}nav button[aria-current]:after,nav button:hover:after{transform:scaleX(1)}.scroll-cue{display:flex;align-items:center;justify-content:flex-end;gap:18px;font-size:8px;letter-spacing:.12em;flex:1}.scroll-cue svg{width:17px;height:17px}.progress{position:fixed;bottom:0;left:0;right:0;height:2px;background:#d8dccf;z-index:12}.progress i{display:block;height:100%;background:#60785b;transform:scaleX(0);transform-origin:left}
dialog{border:0;background:#fff;color:var(--ink);padding:22px;max-width:94vw;width:1150px;max-height:92dvh;box-shadow:0 20px 80px #11251e30}dialog::backdrop{background:#14231e70}.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-top h2{font-size:18px;font-weight:450;letter-spacing:-.02em;margin:0}.dialog-top button{font-size:12px;padding:12px;display:flex;align-items:center;gap:20px}.dialog-top span{font-size:24px;font-weight:300}dialog img{display:block;width:100%;max-height:70dvh;object-fit:contain}dialog>p{font-size:10px;color:var(--muted);margin:16px 0 0}#error{position:fixed;inset:0;z-index:20;background:var(--paper);align-content:center;text-align:center;padding:30px}#error h2{font-weight:400;letter-spacing:-.03em;font-size:32px}#error p{font-size:14px;line-height:1.8}#error button{border:1px solid var(--ink);padding:14px 20px;margin:20px 6px}
@media(min-width:1600px){#hero{left:7vw}}
@media(max-width:850px){header{padding:25px 5vw}.identity-name{font-size:23px}.identity-detail{font-size:8px}.plan-button{font-size:10px;gap:9px}#hero{top:18vh;left:6vw;max-width:72vw}h1{font-size:52px;margin-bottom:18px}#hero p{font-size:12px;line-height:1.7}.play-button{font-size:11px;padding-top:6px}#sheet-note{bottom:132px;right:6vw}footer{padding:18px 4vw calc(18px + env(safe-area-inset-bottom));flex-wrap:wrap;gap:8px}.credit{flex:1}.scroll-cue{flex:1;font-size:7px;gap:10px}nav{order:3;flex-basis:100%;gap:8px}nav button{font-size:11px;padding:12px 17px}#caption{left:5vw;bottom:150px;max-width:290px;padding:16px 20px}#caption h2{font-size:25px}#caption p{font-size:11px}.room-label{font-size:8px}.room-label small{font-size:7px}#loading{top:96px;right:5vw;width:160px;font-size:9px}}
@media(max-width:500px){#hero{top:17vh}h1{font-size:43px;line-height:1.04}#hero p{margin-bottom:17px}#sheet-note{font-size:6px;bottom:137px}#sheet-note span:first-child{font-size:8px}.room-label{font-size:6px}.room-label small{font-size:5px}.credit span{font-size:7px}#caption{max-width:260px;bottom:146px}nav button{padding:12px 10px}#loading{top:auto;bottom:144px;left:6vw;right:auto;width:150px}}
@media(max-height:500px) and (min-width:600px){header{padding:18px 4vw}.identity-name{font-size:20px}#hero{top:28vh;max-width:38vw}h1{font-size:35px;margin-bottom:15px}#hero p{font-size:11px;line-height:1.5;margin-bottom:10px}#sheet-note{bottom:83px}footer{padding:10px 4vw}#caption{bottom:75px;max-width:280px}#caption h2{font-size:23px}.play-button{padding:4px 0}#loading{top:85px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}select{font:inherit;color:var(--ink);background:var(--paper);border:0;border-bottom:1px solid var(--line);padding:10px 25px 10px 10px;max-width:190px;font-size:11px;cursor:pointer}select:focus-visible{outline:2px solid var(--ink);outline-offset:3px}#toggle-play{flex:0 0 auto;padding:12px 0;text-transform:uppercase;min-width:102px}footer .credit{flex:0 0 160px}footer nav{flex:1}#room-select:disabled{opacity:.5}
@media(max-width:850px){footer .credit{flex:1}footer nav{flex-basis:100%;justify-content:center;gap:4px}#toggle-play{flex:0 0 auto}select{max-width:160px;font-size:11px}footer nav button{padding:12px 10px}}
@media(max-width:420px){select{max-width:139px;font-size:10px}footer nav button{font-size:10px;padding:12px 7px}}

#chapter-veil{position:fixed;inset:0;background:var(--paper);opacity:0;z-index:1;pointer-events:none}

body.interior header{background:linear-gradient(to bottom,#f1eee6f2,#f1eee6c9 58%,#f1eee600);padding-bottom:34px}

body.garage-view #caption{left:auto;right:4vw;top:112px;bottom:auto;max-width:310px;padding:14px 18px}
body.overview-view #caption{top:112px;bottom:auto;max-width:270px;padding:14px 18px}
@media(max-width:500px){body.garage-view #caption{right:5vw;top:103px;max-width:220px}body.overview-view #caption{top:103px;max-width:220px}body.garage-view #caption h2,body.overview-view #caption h2{font-size:22px}}

#scroll-track{height:3600vh}
.identity-name{font-size:22px;letter-spacing:.06em}.identity-detail{letter-spacing:.11em}
#tower-hero{position:fixed;left:6.2vw;top:29vh;z-index:3;max-width:39vw;pointer-events:none}#tower-hero h1{font-size:clamp(44px,4.65vw,76px)}#tower-hero p{font-size:14px;line-height:1.9;color:var(--muted);margin:0 0 25px}#tower-hero em{font-style:normal;font-weight:500}
#selection-marker{position:fixed;z-index:4;opacity:0;pointer-events:none;transform:translate(-100%,-120%);padding:13px 17px;background:var(--paper);box-shadow:0 5px 22px #29393018;white-space:nowrap}#selection-marker strong{display:block;font-size:19px;font-weight:450;letter-spacing:-.025em}#selection-marker span{display:block;font-size:10px;margin-top:5px;color:var(--muted)}#selection-marker:after{content:'';position:absolute;right:0;bottom:-17px;width:1px;height:17px;background:#ec773d}
#story-curtain{position:fixed;inset:0;z-index:2;background:var(--paper);opacity:0;pointer-events:none}
#source-note{position:fixed;bottom:96px;left:3.8vw;z-index:9;font-size:9px;color:var(--muted);padding:9px 0;border-bottom:1px solid #a7afa0}#source-dialog{max-width:580px;padding:28px}#source-dialog p{font-size:14px;line-height:1.8;color:var(--muted)}
#explore-intro{position:fixed;left:6vw;top:25vh;z-index:5;background:var(--paper);padding:28px 32px 27px;max-width:420px;box-shadow:0 8px 30px #29393010}#explore-intro h2{font-size:clamp(35px,3.4vw,52px);font-weight:400;line-height:1.06;letter-spacing:-.035em;margin:0 0 21px}#explore-intro p{font-size:13px;line-height:1.8;color:var(--muted)}#explorer-status{font-size:11px!important;max-width:32ch}#enter-explorer{background:var(--ink);color:var(--paper);padding:15px 18px;margin:8px 0;display:flex;align-items:center;gap:25px;font-size:13px;min-height:48px}#enter-explorer:disabled{opacity:.5;cursor:wait}#return-walk{display:block;font-size:11px;min-height:44px;color:var(--muted)}
body.exploring{overflow:hidden}body.exploring #scene{touch-action:none;cursor:grab}body.exploring footer,body.exploring #source-note{display:none}body.exploring .identity{pointer-events:none}#explorer-controls{position:fixed;inset:0;z-index:6;pointer-events:none}#explorer-controls button,#explorer-controls select,#joystick{pointer-events:auto}.explorer-top{position:absolute;top:100px;left:4vw;display:flex;gap:7px;flex-wrap:wrap;max-width:75vw}.explorer-top button,.explorer-top select{background:var(--paper);padding:12px 14px;font-size:11px;min-height:44px;box-shadow:0 4px 15px #29393012}.explorer-top select{max-width:190px}#mini-plan{position:absolute;right:4vw;bottom:80px;background:var(--paper);padding:10px;width:180px;text-align:left;box-shadow:0 7px 23px #29393018}#mini-canvas{display:block;width:100%;height:auto}#current-space{display:block;padding:7px 4px 1px;font-size:11px}#joystick{position:absolute;left:5vw;bottom:90px;width:100px;height:100px;border-radius:50%;background:#f1eee69c;border:1px solid #58684e70;touch-action:none}#joystick-thumb{position:absolute;width:39px;height:39px;left:30px;top:30px;border-radius:50%;background:#53634ee0;pointer-events:none}#joystick span{position:absolute;top:110px;left:0;right:0;text-align:center;font-size:10px;background:var(--paper);padding:4px}#movement-hint{position:absolute;left:0;right:0;bottom:23px;text-align:center;color:var(--ink);font-size:11px;text-shadow:0 1px 8px var(--paper);padding:10px;margin:0;background:#f1eee6e8}.step-controls{position:absolute;left:calc(5vw + 120px);bottom:105px;display:flex;gap:3px}.step-controls button{width:36px;height:44px;background:var(--paper);font-size:18px}#separate-room{position:absolute;top:40%;left:50%;transform:translateX(-50%);padding:25px;background:var(--paper);pointer-events:auto}#separate-room button{display:block;padding:13px;border-bottom:1px solid var(--line)}body.model-stage #caption{visibility:hidden}
@media(max-width:850px){.identity-name{font-size:18px}#tower-hero{left:6vw;top:17vh;max-width:85vw}#tower-hero h1{font-size:44px;margin-bottom:17px}#tower-hero p{font-size:12px;line-height:1.7;max-width:32ch}#source-note{bottom:137px;left:4vw;font-size:8px;padding:6px 0}#explore-intro{left:5vw;right:5vw;top:23vh;padding:23px;max-width:340px}#explore-intro h2{font-size:38px}.explorer-top{top:91px;left:5vw;right:5vw;max-width:none;gap:4px}.explorer-top button,.explorer-top select{font-size:10px;padding:9px 10px}.explorer-top select{max-width:160px}.explorer-top #reset-explorer{display:none}#mini-plan{width:125px;right:5vw;bottom:88px}#joystick{width:88px;height:88px;left:6vw;bottom:103px}#joystick-thumb{width:34px;height:34px;left:26px;top:26px}#joystick span{top:95px}.step-controls{left:6vw;bottom:50px}.step-controls button{width:33px;height:35px;font-size:16px}#movement-hint{font-size:9px;bottom:5px;padding:7px}footer nav{gap:2px}footer nav button{font-size:10px;padding:12px 8px}#room-select{max-width:135px}#selection-marker{transform:translate(-85%,-140%)}#selection-marker strong{font-size:17px}#selection-marker span{font-size:8px}}
@media(max-width:420px){.identity-name{font-size:16px}#tower-hero h1{font-size:40px}#tower-hero{top:16vh}#tower-hero p{font-size:11px}#room-select{max-width:116px}footer nav button{padding:12px 7px;font-size:9px}.plan-button{font-size:9px}#selection-marker{max-width:205px;white-space:normal}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

#source-note{background:var(--paper);padding:8px 10px;border-bottom:0}#hero,#tower-hero{visibility:hidden}body.tower-mode #tower-hero{visibility:visible}

#interactive-scene{position:fixed;inset:0;width:100%;height:100%;z-index:1}body.exploring #interactive-scene{touch-action:none;cursor:grab}

footer #source-note{position:static;background:transparent;border:0;padding:0;min-height:44px;align-items:flex-start;justify-content:center;text-align:left;color:var(--ink)}.step-controls button{width:44px;height:44px}@media(max-width:850px){#joystick span{top:-26px;background:var(--paper)}.step-controls button{width:44px;height:44px}}

#scroll-direction{position:fixed;right:4vw;bottom:118px;z-index:7;display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--paper);font-size:10px;letter-spacing:.035em;pointer-events:none}#scroll-direction svg{width:19px;height:24px;stroke-width:1.4;animation:scroll-nudge 2.4s ease-in-out infinite}#scroll-direction.up svg{transform:rotate(180deg);animation:none}body.exploring #scroll-direction{display:none}@keyframes scroll-nudge{0%,100%{translate:0 -2px}50%{translate:0 3px}}@media(max-width:850px){#scroll-direction{bottom:129px;right:5vw;font-size:9px;gap:7px;padding:8px 9px}#caption{bottom:184px}}@media(prefers-reduced-motion:reduce){#scroll-direction svg{animation:none}}
#room-measure{display:block;margin-top:8px;font-size:11px;font-weight:450;line-height:1.4;letter-spacing:.015em;color:var(--ink)}#room-measure[hidden]{display:none}
@media(max-width:700px){#room-measure{font-size:10px}}
/* Keep the existing header readable over the restored moving exterior. */
body.tower-mode header .identity{background:var(--paper);padding:7px 10px;margin:-7px -10px}
body.tower-mode header .plan-button{background:var(--paper);padding:10px 12px}

/* Keep the opening headline legible over the architectural drawing. */
#tower-hero .headline-line{display:block;width:fit-content;background:var(--paper);padding:.035em .12em;margin-left:-.12em;font-weight:430}

/* A direct floor-plan experience with a clear laptop loading notice. */
body.loading{overflow:hidden}
#loading{inset:0;width:auto;display:flex;align-items:center;justify-content:center;background:var(--paper);z-index:100;padding:28px;color:var(--ink)}
#loading.done{visibility:hidden;opacity:0;transition:opacity .35s,visibility .35s}
.loading-content{width:min(480px,100%)}
#loading h1{font-size:clamp(32px,4vw,48px);margin-bottom:30px}
#loading p{font-size:14px;line-height:1.7;letter-spacing:0;color:var(--muted);margin:10px 0}
#loading .laptop-notice{font-size:18px;font-weight:550;color:var(--ink)}
.loading-progress{display:grid;grid-template-columns:1fr auto;gap:12px;margin-top:32px;font-size:11px}
#scroll-track{height:2800vh}
#scroll-direction{left:50%;right:auto;bottom:104px;transform:translateX(-50%);font-size:12px;white-space:nowrap;gap:12px;padding:12px 18px}
#scroll-direction svg{animation:scroll-nudge 1.25s ease-in-out infinite}
#scroll-direction.up svg{animation:none}
@keyframes scroll-nudge{0%,100%{translate:0 -4px}60%{translate:0 5px}}
footer a.credit{text-decoration:none}footer a.credit:hover{text-decoration:underline;text-underline-offset:4px}
@media(max-width:850px){#scroll-direction{bottom:145px;font-size:11px}#sheet-note{display:none}}
@media(prefers-reduced-motion:reduce){#scroll-direction svg{animation:none}}
