:root{background:#243e4c}html,body.immersive{width:100%;height:100%;overflow:hidden}.immersive main{width:100%;max-width:none;height:100dvh;padding:0}.immersive #film{position:fixed;inset:0;width:100%;height:100dvh;aspect-ratio:auto;background:#2a4452}.immersive #canvas{width:100%;height:100%;object-fit:cover;object-position:center}.immersive-header{position:fixed;inset:0 0 auto;height:100px;padding:0 48px;z-index:5;background:linear-gradient(#122b3c50,transparent);pointer-events:none}.immersive-header>*{pointer-events:auto}.immersive-header .wordmark{font-size:15px;letter-spacing:5px;color:#dae0d5cc}.immersive-header nav{gap:23px;font:11px Arial,sans-serif;letter-spacing:1px}.immersive-header button[hidden]{display:none}.immersive-header #actsMenu{display:flex;align-items:center;gap:16px;font:12px Georgia,'Noto Serif CJK SC',serif;letter-spacing:3px;padding:12px 0}.menu-count{font:10px Arial,sans-serif;color:#a3b5b7;letter-spacing:1px}.menu-icon{font:24px Arial,sans-serif;transform:scaleX(1.1);line-height:.8;color:#bacac4}.nav-divider{height:14px;width:1px;background:#a5b8b340}.immersive-header nav a.active{color:#eee8d8;border:0;padding:0}.immersive #cover{background:linear-gradient(90deg,#0c171c55,#1e2c3210)}.immersive #cover .eyebrow{font-size:12px;color:#b8c4bf;letter-spacing:4px;margin:0 0 18px}.immersive #cover h1{font-size:clamp(56px,6.5vw,106px);letter-spacing:.3em;margin:20px 0 46px}.immersive #cover #start{font-size:15px;letter-spacing:6px;margin:0;padding:15px 1px;gap:28px}.immersive #cover .note{font-size:9px;color:#a3b3b3;margin-top:18px}.immersive #subtitles{bottom:11%;left:10%;width:80%;font-size:clamp(17px,1.55vw,24px);line-height:1.9}.immersive footer{position:fixed;inset:auto 0 0;padding:0 48px 35px;z-index:4;pointer-events:none;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(transparent,#10283950)}.immersive footer .transport{pointer-events:auto;gap:12px;height:32px;color:#b6c6c3;font:11px Georgia,'Noto Serif CJK SC',serif;letter-spacing:2px}.immersive #play{font:14px Arial,sans-serif;width:17px;min-width:17px;padding:0}.immersive #pauseWord{margin-right:23px;font-size:11px;color:#b3c1bc}.immersive footer #sound{font-size:11px;padding:8px 0}.immersive footer #time,.immersive footer #seek,.immersive footer #captions,.immersive footer #full,.immersive footer .score-study,.immersive footer .mixer,.immersive footer .footnote{display:none}.immersive .chapters{display:none}.immersive:not(.has-started) footer{visibility:hidden}.reading-marker{position:fixed;right:48px;bottom:46px;z-index:3;display:flex;gap:16px;align-items:center;font:11px Georgia,'Noto Serif CJK SC',serif;color:#a2b3b3;letter-spacing:3px;pointer-events:none}.reading-marker i{width:33px;height:1px;background:#a2b5b14d}.immersive:not(.has-started) .reading-marker{opacity:.65}.immersive.has-started footer,.immersive.has-started .immersive-header,.immersive.has-started .reading-marker{transition:opacity .8s}.immersive.is-idle footer,.immersive.is-idle .immersive-header,.immersive.is-idle .reading-marker{opacity:0;pointer-events:none}.immersive.is-idle:focus-within .immersive-header,.immersive.is-idle:focus-within footer{opacity:1;pointer-events:auto}#directoryShade{position:fixed;inset:0;background:#07192150;backdrop-filter:blur(3px);z-index:9}#directoryShade[hidden],#actDirectory[hidden]{display:none}#actDirectory{position:fixed;inset:0 0 0 auto;width:min(440px,100vw);padding:43px 42px 28px;background:#1b3541f5;border-left:1px solid #b6c9bf20;z-index:10;overflow:auto;color:#d6ded4;box-shadow:-30px 0 80px #09192225}.directory-top{display:flex;justify-content:space-between;align-items:center}.directory-top p{font-size:13px;letter-spacing:4px;margin:0}.directory-top button{font:10px sans-serif;color:#a4b6b8;padding:8px 0 8px 12px}.directory-intro{font-size:11px;color:#91a6a9;letter-spacing:2px;margin:21px 0 30px;line-height:1.8}.act-list{padding:0;margin:0;list-style:none}.act-choice{display:flex;align-items:center;width:100%;gap:23px;padding:21px 0;border-top:1px solid #abc0bb1f;text-align:left}.act-number{font:10px Arial,sans-serif;letter-spacing:2px;color:#88a0a4;width:20px}.act-title{font-size:19px;letter-spacing:4px;font-weight:400}.act-state{margin-left:auto;font:9px sans-serif;letter-spacing:1px;color:#aebeb7}.act-choice[aria-current]{color:#e7e2cc}.act-choice[aria-current] .act-number{color:#c2b797}.act-choice:disabled{color:#6f898f}.act-choice:disabled .act-state{color:#718990}.act-choice:not(:disabled):hover .act-title{color:#fff3d1}.directory-open footer,.directory-open .reading-marker{opacity:0!important}.immersive #interaction{left:54%;top:40%;width:30%;background:#172d37ad}.immersive #interaction p{line-height:1.8}@media(max-width:650px){.immersive-header{height:82px;padding:0 24px}.immersive-header nav{gap:15px}.immersive-header .wordmark{font-size:12px;letter-spacing:3px}.immersive-header #actsMenu{font-size:11px;gap:9px;letter-spacing:2px}.menu-count{display:none}.menu-icon{font-size:21px}.immersive #canvas{object-fit:contain;background:radial-gradient(ellipse at center,#3d5762,#213b49)}.immersive #cover h1{font-size:clamp(44px,11vw,64px);letter-spacing:.25em;margin:20px 0 35px}.immersive #cover .eyebrow{font-size:10px;letter-spacing:1.2px;max-width:100%;padding:0 20px;margin:0 0 12px}.immersive #cover #start{font-size:13px;letter-spacing:4px;gap:20px}.immersive footer{padding:0 24px 25px}.reading-marker{right:24px;bottom:36px;font-size:10px;gap:10px}.immersive #subtitles{bottom:17%;left:8%;width:84%;font-size:16px}.immersive #interaction{left:12%;width:76%;top:37%;max-width:none}#actDirectory{padding:32px 28px 26px}.act-choice{padding:19px 0}.act-title{font-size:18px}.directory-intro{margin-bottom:24px}}@media(prefers-reduced-motion:reduce){.immersive *{transition:none!important}}
@media(max-width:650px){.immersive:not(.has-started) #canvas{object-fit:cover;background:none}.immersive.has-started #canvas{mask-image:linear-gradient(to bottom,transparent calc(50% - 31.25vw),#000 calc(50% - 23vw),#000 calc(50% + 23vw),transparent calc(50% + 31.25vw));background:none}.immersive #film{background:radial-gradient(ellipse at center,#405b66,#243e4c 70%)}}

.speed-control{position:relative;margin-left:25px}.speed-control #speedToggle{font:11px Georgia,'Noto Serif CJK SC',serif;letter-spacing:1px;padding:8px 0;display:flex;gap:10px;align-items:center}.speed-control #speedValue{font:10px Arial,sans-serif;letter-spacing:.5px;color:#a9bcb8}#speedOptions{position:absolute;bottom:44px;left:-18px;padding:8px 0;min-width:99px;background:#1b3541f5;border:1px solid #b6c9bf30;box-shadow:0 9px 30px #0b202644}#speedOptions[hidden]{display:none}#speedOptions button{display:block;width:100%;padding:12px 18px;text-align:left;font:11px Arial,sans-serif;letter-spacing:1px;color:#bbccc5}#speedOptions button:hover,#speedOptions button[aria-pressed=true]{background:#6e898522;color:#f0e4c4}.immersive.speed-open footer{opacity:1;pointer-events:auto}@media(max-width:650px){.speed-control{margin-left:9px}.immersive #pauseWord{margin-right:9px}.immersive footer .transport{gap:9px}.immersive footer #sound{font-size:10px}.speed-control #speedToggle{font-size:10px}.reading-marker{display:none}}

/* Approved English title and chapter typography, self-hosted with OFL. */
@font-face{font-family:'Cormorant Garamond';src:url('assets/fonts/cormorant-garamond.ttf') format('truetype');font-weight:300 700;font-style:normal;font-display:swap}
html[lang=en] .immersive #cover h1.english-title{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(96px,10vw,152px);font-weight:400;font-style:normal;letter-spacing:-.025em;line-height:.84;margin:12px 0 76px;padding:0;font-synthesis:none}
.english-title span{display:block}.english-title span+span{margin-top:.045em}
html[lang=en] .immersive #cover .eyebrow{font:10px/1.8 Arial,sans-serif;letter-spacing:.1em;max-width:490px;margin-bottom:30px}
html[lang=en] .immersive #cover #start{font:10px/1.6 Arial,sans-serif;letter-spacing:.18em;gap:21px;padding-bottom:14px}
html[lang=en] .immersive-header .wordmark{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;letter-spacing:.015em}
.act-title{min-width:0;flex:1}.act-state{flex-shrink:0;white-space:nowrap}
html[lang=en] .act-title{font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;line-height:1.15;letter-spacing:0;font-weight:400}
html[lang=en] .reading-marker{font-family:Arial,sans-serif;font-size:9px;letter-spacing:1px}
@media(max-width:650px){html[lang=en] .immersive #cover h1.english-title{font-size:clamp(96px,27vw,124px);margin:15px 0 34px}html[lang=en] .immersive #cover .eyebrow{font-size:9px;letter-spacing:.055em;max-width:320px;line-height:1.9;margin-bottom:20px}html[lang=en] .immersive #cover #start{font-size:9px;letter-spacing:.12em;gap:12px}html[lang=en] .immersive-header .wordmark{font-size:19px}html[lang=en] .act-title{font-size:23px}.act-choice{gap:18px}.act-title{line-height:1.45}}

/* Approved ending layout. */
body.is-ending .immersive-header,body.is-ending footer,body.is-ending .reading-marker{display:none!important}
body #ending{background:linear-gradient(90deg,#142d3852 0%,#142d3833 51%,#142d3814 100%);align-items:center;justify-content:center;padding:0;text-align:center}
body #ending .endnote{display:flex;align-items:baseline;gap:14px;margin:0;color:#e8e6d8;letter-spacing:0;font-size:20px;text-shadow:0 1px 12px #13262d50;line-height:1.8}
.ending-act{font-size:17px;letter-spacing:3px;color:#bdc9c3}.ending-divider{font:12px Georgia,serif;color:#b6c4be88}.ending-name{font-size:42px;letter-spacing:4px;font-weight:400}.ending-pending{font-size:15px;letter-spacing:2px;color:#b2c2bd;margin-left:6px}
body #ending #replay{display:inline-flex;align-items:center;gap:12px;margin:29px 0 0;padding:9px 0 11px;border-bottom:1px solid #c1cdc26b;font-size:19px;letter-spacing:2px;color:#cad4cc;transition:color .2s,border-color .2s}
body #ending #replay svg{opacity:.65;display:block}body #ending #replay:hover{color:#f0eddf;border-color:#dddccb}
html[lang=en] body #ending .ending-name{font-family:'Cormorant Garamond',Georgia,serif;font-size:42px;letter-spacing:.01em}html[lang=en] body #ending .ending-act,html[lang=en] body #ending .ending-pending{font-family:Arial,sans-serif;font-size:12px;letter-spacing:1.4px}html[lang=en] body #ending #replay{font:15px Arial,sans-serif;letter-spacing:1px}
@media(max-width:650px){body #ending{padding-left:0;padding-bottom:0;background:linear-gradient(90deg,#142d3877,#142d381a)}body #ending .endnote{gap:8px;flex-wrap:nowrap}.ending-act{font-size:12px;letter-spacing:1.5px}.ending-name{font-size:24px;letter-spacing:2px}.ending-pending{font-size:10px;letter-spacing:1px;margin-left:1px}body #ending #replay{font-size:15px;margin-top:23px}html[lang=en] body #ending .endnote{gap:7px}html[lang=en] body #ending .ending-name{font-size:23px}html[lang=en] body #ending .ending-pending{font-size:10px;letter-spacing:.5px}}
@media(min-width:651px){body #ending .ending-name{font-size:clamp(56px,6.5vw,106px);line-height:1.15;letter-spacing:.2em}body #ending .ending-act{font-size:20px;letter-spacing:4px}body #ending .ending-pending{font-size:18px;letter-spacing:2px}body #ending .endnote{gap:19px}body #ending #replay{font-size:20px;margin-top:40px}html[lang=en] body #ending .ending-name{font-size:clamp(96px,10vw,152px);line-height:1;letter-spacing:-.025em}html[lang=en] body #ending .ending-act,html[lang=en] body #ending .ending-pending{font-size:12px}}

.ending-actions{display:flex;justify-content:center;align-items:center;gap:38px;margin-top:38px}body #ending .ending-actions #replay{margin:0;font-size:18px;padding:12px 0 10px}body #ending #nextAct{min-width:168px;padding:14px 32px;border:1px solid #c0cbb65e;background:#d1dbc010;color:#c0cdbd;font-size:17px;font-weight:400;letter-spacing:4px;opacity:.78;cursor:default;line-height:1.5}html[lang=en] body #ending #nextAct{font:11px/1.6 Arial,sans-serif;letter-spacing:1px}html[lang=en] body #ending .ending-actions #replay{font:13px Arial,sans-serif;letter-spacing:1px}@media(max-width:650px){.ending-actions{gap:24px;margin-top:28px}body #ending #nextAct{min-width:130px;padding:12px 24px;font-size:14px}body #ending .ending-actions #replay{font-size:14px}html[lang=en] body #ending #nextAct{font-size:10px;min-width:142px;padding-inline:18px}html[lang=en] body #ending .ending-actions #replay{font-size:11px}}
@media(min-width:651px){body #ending .endnote{position:relative}body #ending .ending-act{position:absolute;right:calc(100% + 18px);bottom:8px;white-space:nowrap}body #ending .ending-divider{position:absolute;right:calc(100% + 3px);bottom:10px}body #ending .ending-name{padding-left:.2em}html[lang=en] body #ending .ending-name{padding-left:0}}

/* Equal text-link treatments; replay precedes the reserved next-act control. */
body #ending .ending-actions #replay,body #ending .ending-actions #nextAct{display:inline-flex;align-items:center;justify-content:center;min-width:148px;gap:12px;margin:0;padding:12px 8px 14px;border:0;border-bottom:1px solid #c1cdc26b;background:none;color:#d1d8cc;font-size:18px;line-height:1.5;letter-spacing:2px}
body #ending .ending-actions #nextAct:disabled{opacity:.68;cursor:default}
@media(max-width:650px){body #ending .ending-actions{gap:24px}body #ending .ending-actions #replay,body #ending .ending-actions #nextAct{min-width:122px;font-size:14px;padding:10px 4px 12px}html[lang=en] body #ending .ending-actions #replay,html[lang=en] body #ending .ending-actions #nextAct{font-family:Arial,sans-serif;font-size:11px;letter-spacing:.5px}}

/* Notebook closure: a small prompt at the cover edge, with keyboard slider. */
body.immersive #interaction{left:50%;top:62%;transform:translateX(-50%);width:190px;max-width:50vw;padding:0;border:0;background:none;text-align:center;z-index:3}
body.immersive #gestureText{font-size:17px;letter-spacing:4px;margin:0 0 18px;color:#d1d8c9}
body.immersive #interaction input{width:100%;margin:0;touch-action:none}
body.immersive #canvas{touch-action:none}

/* End card settles over the street instead of cutting onto it. */
body #ending:not([hidden]){animation:ending-veil 1.6s cubic-bezier(.22,.61,.36,1) both}
body #ending:not([hidden]) .endnote{animation:ending-title 1.8s cubic-bezier(.22,.61,.36,1) .18s both}
body #ending:not([hidden]) .ending-actions{animation:ending-title 1.5s cubic-bezier(.22,.61,.36,1) .65s both}
@keyframes ending-veil{from{opacity:0}to{opacity:1}}
@keyframes ending-title{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){body #ending:not([hidden]),body #ending:not([hidden]) .endnote,body #ending:not([hidden]) .ending-actions{animation-duration:.01s;animation-delay:0s}}
