:root{--bg:#0b1a1d;--ink:#ecede0;--muted:#b3c1b6;--quiet:#8caaa1;--gold:#d6be82;--line:rgba(216,231,211,.18);--sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--serif:"Songti SC","Noto Serif CJK SC","STSong","SimSun",serif;--mono:"SFMono-Regular",Consolas,monospace}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font:14px/1.65 var(--sans)}button,input,select{font:inherit}button{color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.42;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:hover:not(:disabled){color:#fff}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}a{color:var(--gold);text-underline-offset:4px}p,h1,h2,h3{margin:0}#world,.vignette,#water-mask{position:fixed;inset:0;width:100%;height:100%}#world{display:block;touch-action:none}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(4,17,19,.93),rgba(4,17,19,.30) 58%,rgba(4,17,19,.5)),linear-gradient(0deg,rgba(3,12,13,.96),transparent 60%)}#water-mask{pointer-events:none;opacity:0;box-shadow:inset 0 0 100px 15px rgba(1,8,10,.37);transition:opacity 1s}.playing .vignette{background:linear-gradient(0deg,rgba(0,10,12,.62),transparent 24%,transparent 70%,rgba(0,10,12,.48));pointer-events:none}.playing #water-mask{opacity:1}#home{position:fixed;inset:0;display:flex;flex-direction:column;padding:34px 5vw 18px}.masthead{display:flex;justify-content:space-between;align-items:center;flex-shrink:0}#brand{font-family:var(--serif);font-weight:600;letter-spacing:3px;font-size:23px;padding:0}.brand-mark{display:inline-block;font-size:34px;margin-right:4px;line-height:1;color:var(--gold)}.brand-en{font:10px var(--mono);letter-spacing:3px;margin-left:12px}.masthead nav{display:flex;gap:32px;font-size:12px;letter-spacing:1px}.landing{display:flex;flex:1;align-items:center;gap:8vw;min-height:280px;padding:18px 0 25px}.hero{flex:1}.eyebrow{font:10px/1.8 var(--mono);letter-spacing:2px;color:var(--gold);text-transform:uppercase}.hero .eyebrow{margin-bottom:22px}.hero .eyebrow span{color:var(--quiet)}h1{font:500 clamp(38px,4.2vw,66px)/1.40 var(--serif);letter-spacing:4px}h1 em{font-style:normal;color:#e5e5d6}.hero-copy{margin-top:20px;color:var(--muted);font-size:14px;line-height:1.9;letter-spacing:1px}.hero-actions{display:flex;align-items:center;gap:24px;margin-top:30px}.primary{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;background:var(--gold);color:#102529;min-height:48px;padding:12px 22px;font-size:14px;font-weight:600}.primary:hover:not(:disabled){background:#e8d5a8;color:#06171b}.primary span{font-size:21px}.text-button{font-size:12px;padding:6px 0;color:var(--muted);text-align:left}.quiet{font-size:11px;color:var(--quiet);line-height:1.6}#render-status{max-width:550px;margin-top:14px}.chapter-intro{width:280px;max-width:27vw;border-left:1px solid var(--line);padding-left:28px;position:relative}.chapter-year{font:italic 56px/1 var(--serif);color:rgba(223,224,200,.65);margin-bottom:24px;letter-spacing:3px}.chapter-intro h2{font:24px var(--serif);letter-spacing:2px;margin:9px 0 17px}.chapter-intro>p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.9}.chapter-meta{display:flex;flex-direction:column;margin:22px 0 12px;font-size:10px;color:var(--quiet);gap:4px}.story-dock{flex-shrink:0}.dock-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.dock-heading p{font-size:12px;letter-spacing:1px}.dot{display:inline-block;border-radius:50%;width:5px;height:5px;background:var(--gold);margin-right:8px}.dock-heading small{color:var(--quiet);font-size:11px}.chapter-list{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.chapter-card{text-align:left;border-top:1px solid var(--line);padding:14px 12px 10px 0;position:relative;min-width:0;transition:background .2s}.chapter-card.active{border-top:2px solid var(--gold);padding-top:13px}.chapter-card.active:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,transparent,rgba(208,188,138,.07));pointer-events:none}.chapter-card .card-no{font:10px var(--mono);color:var(--quiet);display:flex;justify-content:space-between}.chapter-card .card-title{display:block;font:18px var(--serif);letter-spacing:1px;margin:10px 0 6px}.chapter-card .card-kind{font-size:10px;color:var(--quiet)}.dock-footer{display:flex;justify-content:space-between;font-size:10px;color:var(--quiet);margin-top:13px}.dock-footer button{padding:0;font-size:10px}#hud{position:fixed;inset:0;pointer-events:none}#hud button{pointer-events:auto}.mission{position:absolute;top:27px;left:32px;width:min(430px,44vw);text-shadow:0 1px 10px #00191c}.mission-progress{display:flex;gap:6px;margin:9px 0 10px}.mission-progress i{width:24px;height:2px;background:rgba(210,226,212,.27)}.mission-progress i.done{background:var(--gold)}.mission h2{font:23px/1.4 var(--serif);letter-spacing:1px}.mission>p:last-child{font-size:12px;color:var(--muted);line-height:1.7;margin-top:9px;max-width:370px}.hud-right{position:absolute;top:25px;right:30px;width:230px}.hud-buttons{display:flex;justify-content:flex-end;gap:12px}.hud-buttons button,#team-actions button{font-size:11px;background:rgba(8,27,30,.65);border:1px solid var(--line);padding:6px 10px;backdrop-filter:blur(8px)}kbd{font:10px var(--mono);opacity:.60;margin-left:7px}#team{display:flex;flex-direction:column;gap:10px;margin-top:25px}.teammate{display:flex;align-items:center;justify-content:space-between;background:rgba(5,23,27,.57);padding:8px 11px;border-left:2px solid var(--gold);font-size:12px;backdrop-filter:blur(8px)}.teammate div small{display:block;font-size:9px;color:var(--quiet);letter-spacing:.2px}.teammate>span{font:11px var(--mono);color:var(--muted)}#team-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:11px}.landmark{position:absolute;text-align:center;transform:translate(-50%,-50%);text-shadow:0 1px 5px #000;white-space:nowrap}.landmark>span{color:var(--gold);font-size:24px}.landmark p{font-size:10px;padding:3px 8px;background:rgba(6,22,25,.72);border:1px solid var(--line)}.subtitle{position:absolute;left:50%;top:58%;transform:translateX(-50%);width:min(600px,64vw);text-align:center;line-height:1.8;padding:10px 18px;background:linear-gradient(90deg,transparent,rgba(2,15,19,.83) 20%,rgba(2,15,19,.83) 80%,transparent);font-size:13px;letter-spacing:.4px}.subtitle small{display:block;font:9px var(--mono);color:var(--gold);letter-spacing:2px;margin-bottom:3px}.instruments{position:absolute;bottom:29px;left:32px;display:flex;align-items:flex-end;gap:23px}.depth>span{display:block;font-size:10px;color:var(--quiet)}.depth strong{font:34px var(--mono);letter-spacing:-1px}.depth strong small{font-size:12px;margin-left:5px;color:var(--muted)}.resource{width:136px;padding-bottom:4px}.resource>span{display:flex;justify-content:space-between;font-size:10px;color:var(--quiet)}.resource b{font:13px var(--mono);color:var(--ink)}.gas-track{height:3px;background:rgba(190,215,201,.2);margin:9px 0}.gas-track i{display:block;height:100%;background:var(--gold);transition:width .2s}.resource p{display:flex;justify-content:space-between;font:10px var(--mono);color:var(--muted)}#battery{font:10px var(--mono);color:var(--quiet);margin-bottom:3px}.navigation{position:absolute;right:30px;bottom:25px;text-align:right;max-width:220px}.navigation>span{font-size:10px;color:var(--quiet)}.navigation strong{display:block;font-size:12px;font-weight:500;letter-spacing:.5px;margin:3px 0}.navigation p{font:10px var(--mono);color:var(--quiet)}.navigation button{font-size:10px;border:1px solid var(--line);background:rgba(6,28,31,.8);padding:7px 10px;margin-top:9px;touch-action:none}.navigation button.active{border-color:var(--gold);color:var(--gold)}.interact-wrap{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);width:350px;text-align:center}.interact{display:inline-flex;align-items:center;gap:13px;padding:8px 16px 8px 8px;min-width:245px;background:rgba(5,27,30,.88);border:1px solid var(--line);text-align:left;touch-action:none;user-select:none;backdrop-filter:blur(10px)}.hold-key{position:relative;display:block;width:48px;height:48px;flex-shrink:0}.hold-key svg{position:absolute;inset:0;transform:rotate(-90deg)}.hold-key circle{fill:none;stroke:rgba(219,220,196,.18);stroke-width:1.2}#hold-ring{stroke:var(--gold);stroke-width:2;stroke-dasharray:132;stroke-dashoffset:132}.hold-key b{position:absolute;inset:0;display:grid;place-items:center;font:15px var(--mono)}.interact>span:last-child{display:flex;flex-direction:column}.interact small{font-size:9px;color:var(--quiet)}.interact strong{font-size:12px;font-weight:500}.tutorial{font-size:10px;line-height:1.7;color:var(--muted);margin:10px auto 0;text-shadow:0 1px 4px #000;max-width:390px}.panel h3{font:21px/1.5 var(--serif);margin:28px 0 12px}.panel p{margin-bottom:14px;color:var(--muted)}#modal{position:fixed;inset:0;z-index:20;display:flex;justify-content:flex-end}#scrim{position:absolute;inset:0;background:rgba(0,9,12,.64);backdrop-filter:blur(5px)}.panel{position:relative;width:min(700px,94vw);height:100%;background:rgba(10,28,31,.98);border-left:1px solid var(--line);display:flex;flex-direction:column}.panel>header{display:flex;justify-content:space-between;align-items:center;padding:29px 35px 22px;border-bottom:1px solid var(--line);flex-shrink:0}.panel>header .eyebrow{margin:0 0 7px;font-size:9px}.panel>header h2{font:27px var(--serif);letter-spacing:2px}.panel>header>button{font-size:20px;width:35px;height:35px;color:var(--muted)}#panel-body{padding:28px 35px 40px;overflow-y:auto;overscroll-behavior:contain}.panel .lede{font:25px/1.7 var(--serif);letter-spacing:1px;color:var(--ink);margin-bottom:22px}.panel .small{font-size:11px;color:var(--quiet);line-height:1.9}.notice-box{border-left:2px solid var(--gold);background:rgba(194,179,137,.05);padding:14px 17px;margin:20px 0;color:var(--muted);font-size:12px;line-height:1.9}.button-row{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.secondary{border:1px solid var(--line);padding:10px 15px;background:rgba(160,180,165,.03);font-size:12px;min-height:44px}.wide{width:100%}.option-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.option{border:1px solid var(--line);padding:14px 10px;text-align:left;font-size:12px}.option b{display:block;font-size:13px;font-weight:500;margin-bottom:5px}.option small{font-size:10px;color:var(--quiet);display:block}.option.selected{border-color:var(--gold);background:rgba(212,187,124,.07)}.cast-card{display:flex;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid var(--line)}.cast-card .initial{width:43px;height:43px;border:1px solid var(--line);display:grid;place-items:center;font:24px var(--serif);color:var(--gold)}.cast-card h4{font-weight:500;margin:0;font-size:14px}.cast-card span{font-size:10px;color:var(--quiet)}.cast-card p{font-size:12px;margin:4px 0 0}.source-card{padding:17px 0;border-bottom:1px solid var(--line)}.source-card>small{display:block;font-size:10px;color:var(--quiet)}.source-card a{font-size:13px;display:inline-block;margin:5px 0}.source-card p{font-size:11px;line-height:1.8;margin:5px 0}.story-index{display:block;text-align:left;width:100%;border-bottom:1px solid var(--line);padding:17px 0}.story-index span{font:12px var(--mono);color:var(--gold);margin-right:20px}.story-index strong{font:19px var(--serif)}.story-index small{display:block;margin-top:5px;color:var(--quiet);font-size:11px}.map-svg{width:100%;height:auto;background:rgba(0,12,16,.25);border:1px solid var(--line)}.map-legend{font-size:10px;display:flex;flex-wrap:wrap;gap:20px;color:var(--quiet);margin:8px 0 18px}.stats{display:grid;grid-template-columns:repeat(3,1fr);padding:15px 0 25px;border-bottom:1px solid var(--line)}.stats strong{display:block;font:27px var(--mono);color:var(--ink)}.stats span{font-size:10px;color:var(--quiet)}.log-row{display:flex;gap:17px;padding:8px 0;border-bottom:1px solid rgba(220,234,210,.06);font-size:11px}.log-row time{color:var(--gold);font:10px var(--mono);min-width:44px;margin-top:4px}.log-row span{color:var(--muted)}.photo-card{margin:15px 0}.photo-card img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--line)}.photo-card figcaption{font-size:11px;color:var(--quiet);display:flex;justify-content:space-between;padding:7px 0}.setting{padding:15px 0;border-bottom:1px solid var(--line)}.setting label{display:flex;justify-content:space-between;color:var(--ink);font-size:13px;margin-bottom:10px}.setting input[type=range]{width:100%;accent-color:var(--gold)}.setting p{font-size:11px;margin:9px 0 0;color:var(--quiet)}.controls-table{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12px;color:var(--muted)}.controls-table kbd{color:var(--gold);display:inline-block;min-width:60px;margin:0 12px 0 0;opacity:1}#toast{position:fixed;top:45%;left:50%;transform:translate(-50%,-50%);background:rgba(3,22,26,.94);border:1px solid var(--line);color:var(--ink);padding:13px 22px;font-size:12px;z-index:50;max-width:80vw;text-align:center;pointer-events:none}#mobile-controls{display:none}.reduced *{transition:none!important;scroll-behavior:auto!important}.danger{color:#dfaa91!important}.graph-map .cursor{fill:#f5e3af}.graph-map text{font-family:var(--sans)}.intro-fade{position:fixed;inset:0;pointer-events:none;background:#0a2529;opacity:0}.empty{text-align:center;padding:25px;border:1px dashed var(--line);color:var(--quiet);font-size:12px}
@media(max-width:1000px){#home{padding:24px 4vw 14px}.landing{gap:3vw}.chapter-intro{width:240px;max-width:28vw;padding-left:20px}.chapter-year{font-size:46px}.hero .eyebrow{font-size:9px;letter-spacing:1.5px}h1{font-size:43px}.hero-copy{font-size:12px}.hero-actions{margin-top:22px}.chapter-card .card-title{font-size:16px}.interact-wrap{bottom:110px}.subtitle{top:55%;width:60vw}.navigation{max-width:185px}.mission{width:43vw}.mission h2{font-size:20px}}
@media(max-width:650px){#home{padding:18px 22px 14px;overflow-y:auto}.masthead nav{gap:14px;font-size:11px}.brand-en{display:none}#brand{font-size:21px}.landing{display:block;flex:1;padding:24px 0 17px;min-height:0}.hero .eyebrow{margin-bottom:15px;letter-spacing:1.3px;font-size:8px}h1{font-size:36px;letter-spacing:2px;line-height:1.45}.hero-copy{font-size:12px;line-height:1.7;margin-top:15px}.hero-actions{margin-top:22px;gap:15px}.primary{min-height:45px;font-size:13px;padding:10px 18px}.chapter-intro{display:none}.dock-heading{display:block;margin:0 0 10px}.dock-heading small{display:block;font-size:9px;margin-top:5px}.dock-heading p{font-size:11px}.chapter-list{display:flex;overflow-x:auto;gap:15px;scroll-snap-type:x mandatory;padding-bottom:7px}.chapter-card{min-width:153px;scroll-snap-align:start;padding-top:11px}.chapter-card .card-title{font-size:17px}.dock-footer{display:block;font-size:8px;margin-top:4px}.dock-footer button{margin-top:4px}.mission{top:15px;left:17px;width:62vw}.mission .eyebrow{font-size:8px;letter-spacing:1px;max-width:61vw;white-space:nowrap;overflow:hidden}.mission h2{font-size:18px}.mission>p:last-child{font-size:10px;line-height:1.6;max-width:220px;margin-top:6px}.mission-progress{margin:7px 0}.hud-right{top:14px;right:13px;width:110px}.hud-buttons{gap:6px}.hud-buttons button{padding:5px 8px;font-size:10px}.hud-buttons kbd{display:none}#team{margin-top:85px;gap:6px}.teammate{font-size:10px;padding:6px 7px}.teammate div small{font-size:8px;max-width:63px;white-space:nowrap;overflow:hidden}.teammate>span{font-size:9px}#team-actions{gap:5px;flex-direction:column;margin-top:7px}#team-actions button{font-size:9px;padding:4px 6px}#team-actions kbd{display:none}.instruments{left:17px;bottom:18px;gap:18px}.depth strong{font-size:27px}.depth>span{font-size:9px}.resource{width:108px}.resource>span,.resource p{font-size:9px}.navigation{right:15px;bottom:17px;max-width:115px}.navigation strong{font-size:10px}.navigation>span,.navigation p{font-size:8px}.navigation button{font-size:9px;padding:5px 7px}.interact-wrap{bottom:185px;width:85vw}.interact{min-width:235px}.tutorial{font-size:10px;max-width:85vw;line-height:1.6}.subtitle{top:42%;width:88vw;font-size:12px;padding:8px 12px}.landmark p{font-size:9px}.panel{width:100vw}.panel>header{padding:22px}.panel>header h2{font-size:24px}#panel-body{padding:22px}.panel .lede{font-size:23px}.option-grid{gap:7px}.option{padding:10px 8px}.option b{font-size:12px}.controls-table{grid-template-columns:1fr}.stats strong{font-size:24px}.stats span{font-size:9px}#battery{position:absolute;bottom:66px;font-size:9px}}
@media(max-height:550px) and (min-width:651px){#home{padding-top:14px;padding-bottom:8px}.masthead{height:35px}.landing{min-height:0;padding:10px 0;gap:5vw}.hero .eyebrow{margin-bottom:7px;font-size:8px}h1{font-size:29px;line-height:1.35;letter-spacing:2px}.hero-copy{margin-top:8px;font-size:11px}.hero-actions{margin-top:12px}.primary{min-height:38px;padding:7px 16px;font-size:12px}#render-status{margin-top:6px;font-size:9px}.chapter-intro{padding-left:18px;width:255px;max-width:34vw}.chapter-year{font-size:33px;margin-bottom:7px}.chapter-intro h2{font-size:19px;margin:3px 0 8px}.chapter-intro>p:not(.eyebrow){font-size:11px}.chapter-meta{margin:8px 0 0;font-size:9px}.dock-heading{margin-bottom:4px}.dock-heading p{font-size:10px}.dock-heading small{font-size:9px}.chapter-card{padding-top:7px;padding-bottom:3px}.chapter-card.active{padding-top:6px}.chapter-card .card-title{font-size:14px;margin:5px 0 2px}.card-no,.card-kind{font-size:8px!important}.dock-footer{margin-top:6px;font-size:8px}.mission{left:20px;top:13px}.mission h2{font-size:18px}.mission>p:last-child{font-size:10px;max-width:320px}.hud-right{top:12px;right:15px;width:170px}#team{margin-top:12px;gap:5px}.teammate{padding:5px 8px;font-size:10px}.teammate div small{font-size:8px}.interact-wrap{bottom:30px;width:330px}.interact{padding:3px 10px 3px 5px;min-width:225px}.hold-key{width:38px;height:38px}.hold-key svg{width:38px;height:38px}.interact strong{font-size:10px}.tutorial{font-size:9px;max-width:310px;line-height:1.4}.instruments{bottom:15px;left:20px;gap:15px}.depth strong{font-size:28px}.resource{width:112px}.navigation{bottom:12px;right:15px;width:160px}.navigation strong{font-size:10px}.subtitle{top:48%;font-size:11px;width:57vw}.panel>header{padding:16px 25px}.panel>header h2{font-size:22px}#panel-body{padding:18px 25px}.landmark p{font-size:9px}}


@media(max-width:650px){.playing #toast{top:29%;max-width:80vw;font-size:11px;padding:9px 15px}}

/* v0.6 chapter-one narrative layer. All controls stay outside the camera layer. */
.hero h1{font-size:clamp(35px,3.65vw,58px);letter-spacing:2px}.hero h1 em{font-size:.85em;color:#c7d3c4}.chapter-intro{width:310px;max-width:29vw}.chapter-list .chapter-card:first-child{border-color:#d6be82}.chapter-card .card-title{font-size:17px}
.tension-vignette{position:fixed;inset:0;pointer-events:none;opacity:0;box-shadow:inset 0 0 12vw 5vw rgba(1,5,8,.82);transition:opacity .35s;z-index:1}.playing .tension-vignette{opacity:var(--tension,0)}#hud{z-index:2}
#story-status{position:absolute;top:24px;left:50%;transform:translateX(-50%);width:240px;text-align:center;border-top:1px solid #bd896970;padding:8px 12px;background:linear-gradient(180deg,#071819b0,transparent);color:#e5baa0}#story-status>span{display:block;font-size:10px;letter-spacing:3px}#missing-clock{display:block;font:29px/1.6 var(--mono);letter-spacing:3px;font-variant-numeric:tabular-nums}#last-contact{display:block;font-size:10px;color:#a7b9ad}#story-status.reunited{border-color:#9bb4a5;color:#d0dbbc}
#tension-console{position:absolute;left:32px;bottom:148px;width:217px;color:var(--muted)}#tension-console>div:first-child{display:flex;justify-content:space-between;font-size:10px}#calm-value{font:11px var(--mono)}.calm-track{height:2px;margin:7px 0;background:#c2d5c331}.calm-track i{height:100%;display:block;background:#bacba8;transition:width .2s}#consumption{font-size:10px;letter-spacing:.3px}#gauge-button{position:absolute;left:32px;bottom:98px;border:1px solid var(--line);background:#09262de6;font-size:11px;padding:6px 12px;min-height:34px;min-width:88px}
#focus-control{position:absolute;bottom:151px;right:30px;border:1px solid #b3c8b846;background:#092127db;padding:11px 14px;min-height:44px;max-width:250px;overflow:hidden;font-size:11px;touch-action:none;user-select:none}#focus-control>kbd{margin:0 10px 0 0;opacity:1;color:var(--gold);font-size:12px}#focus-control.focusing{border-color:#dfd3aa}#focus-meter{position:absolute;left:0;bottom:0;height:2px;background:var(--gold);transition:width .15s}
.gas-track{position:relative}#turn-mark{position:absolute;top:-4px;width:1px;height:11px;background:#f5e6c7;z-index:2}#turn-status{display:block;font-size:8px;margin:-2px 0 6px;color:#c3b48c;white-space:nowrap}.gas-track .below-plan{background:#d29575}#gas-text{font-variant-numeric:tabular-nums}
.memory-strip{margin:20px 0;padding:17px;border:1px solid #cbb67438;background:#c0ba7d08}.memory-strip>b{display:block;font:19px/1.7 var(--serif);color:var(--ink)}.memory-strip>span{font-size:10px;color:var(--quiet)}.memory-strip img{width:100%;margin-top:15px;display:block}.reduced .tension-vignette{display:none}
@media(max-width:1100px){#story-status{top:160px;width:205px;left:auto;right:22px;transform:none}#tension-console{bottom:152px;width:190px}#focus-control{bottom:142px}.mission{width:50vw}.interact-wrap{bottom:46px}.subtitle{top:55%;width:62vw}}
@media(max-width:650px){.hero h1{font-size:34px}.hero h1 em{font-size:.78em}.hero-actions{gap:12px}.hero-actions .primary{font-size:12px;padding:10px 14px}.chapter-list .card-title{font-size:16px}.mission{width:calc(100% - 105px);left:16px}.mission h2{font-size:17px}.mission>p:last-child{font-size:10px}.hud-right{width:98px;right:10px}#team{margin-top:101px}.teammate>span{font-size:8px}#story-status{top:255px;right:12px;width:152px;padding:5px 9px}#missing-clock{font-size:23px;line-height:1.4}#story-status>span{font-size:9px;letter-spacing:1px}#last-contact{font-size:8px;line-height:1.5}#tension-console{left:17px;bottom:281px;width:151px}#tension-label{font-size:9px}#consumption{font-size:8px}#gauge-button{left:17px;bottom:234px;min-height:36px;min-width:75px;font-size:10px}#focus-control{right:14px;bottom:276px;font-size:9px;padding:10px 11px;max-width:169px}#focus-control kbd{margin-right:6px}.interact-wrap{bottom:184px;width:91vw}.interact{min-width:230px;max-width:90vw;min-height:57px}.interact strong{font-size:11px}.tutorial{font-size:9px;max-width:88vw}.subtitle{top:45%;width:92vw;font-size:11px}.subtitle small{font-size:8px;letter-spacing:1px}.navigation{max-width:123px}.navigation strong{font-size:9px}#turn-status{font-size:7px}.instruments{gap:16px}}
@media(max-height:550px) and (min-width:651px){.hero h1{font-size:29px}.hero h1 em{font-size:.81em}.hero-copy{font-size:10px}#story-status{right:18px;top:166px;width:165px}#missing-clock{font-size:22px}#last-contact{font-size:8px}#story-status>span{font-size:9px}#tension-console{left:20px;bottom:132px;width:162px}#consumption{font-size:8px}#gauge-button{left:20px;bottom:85px;min-height:31px;padding:4px 10px}#focus-control{right:18px;bottom:110px;max-width:187px;font-size:9px;padding:6px 10px;min-height:33px}.interact-wrap{bottom:28px;width:330px}.subtitle{top:47%;width:54vw;font-size:11px}.mission{width:46vw}.mission>p:last-child{max-width:320px}.hud-right{width:167px}}

/* v0.8. An in-world title sequence and a deliberately quiet game shell. */
:root{--ink:#e7e5da;--gold:#cfb991;--line:rgba(215,220,210,.15);--quiet:#91a39e;--sans:system-ui,-apple-system,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif}
button{transition:color .18s,background .18s,border-color .18s,opacity .18s,transform .18s}button:disabled{cursor:not-allowed}.vignette{background:linear-gradient(90deg,rgba(3,12,15,.96) 0%,rgba(4,13,16,.88) 24%,rgba(3,12,15,.34) 54%,transparent 80%),linear-gradient(0deg,rgba(2,10,13,.68),transparent 32%,transparent 85%,rgba(2,10,13,.4));z-index:1}
#home.cinema-home{padding:0;z-index:3;display:block;color:#e8e5dc}.menu-signature{position:absolute;top:32px;left:5vw;right:5vw;display:flex;justify-content:space-between;align-items:center;color:#8c9996;font:9px var(--mono);letter-spacing:2px}.menu-signature button{font-size:18px;padding:0 4px;opacity:.6}.title-menu{position:absolute;left:8vw;top:15vh;width:330px}.menu-overline{font:10px var(--mono);letter-spacing:5px;color:#aaafa1}.game-logotype{font:400 clamp(70px,7.4vw,114px)/1.22 var(--serif);letter-spacing:.06em;margin:19px 0 0;text-shadow:0 3px 35px #0005}.game-logotype>span{margin-left:.24em}.game-subtitle{display:flex;align-items:center;gap:15px;margin:18px 0 38px}.game-subtitle i{display:block;width:40px;height:1px;background:#a69779}.game-subtitle span{font:12px var(--serif);letter-spacing:5px;color:#b8b3a5}.game-menu{display:flex;flex-direction:column;align-items:stretch;gap:3px;max-width:264px}.game-menu button{position:relative;text-align:left;display:flex;align-items:center;justify-content:space-between;padding:11px 18px 11px 0;font-size:16px;letter-spacing:3px;min-height:46px;border-bottom:1px solid transparent}.game-menu button small{font:8px var(--mono);letter-spacing:1px;color:#768d86;opacity:0;transform:translateX(-6px);transition:.25s}.game-menu button:hover:not(:disabled),.game-menu button:focus-visible{color:#fff;border-color:#bdac7952;transform:translateX(9px)}.game-menu button:hover small,.game-menu button:focus-visible small{opacity:1;transform:none}.game-menu button:first-child:not([hidden]){color:#eddfbd}.game-menu button::before{content:'';position:absolute;left:-20px;top:22px;width:4px;height:4px;transform:rotate(45deg);background:#cfb991;opacity:0}.game-menu button:hover::before,.game-menu button:focus-visible::before{opacity:1}.title-menu #render-status{font-size:10px;color:#739087;margin-top:18px;max-width:280px;line-height:1.7}.menu-story{position:absolute;right:6vw;bottom:14vh;text-align:right;width:340px}.menu-story>span{font:10px var(--mono);letter-spacing:3px;color:#a8b5a6}.menu-story p{font:24px/1.6 var(--serif);letter-spacing:2px;margin:13px 0 8px;text-shadow:0 1px 20px #001416}.menu-story button{font-size:10px;letter-spacing:1px;color:#aab1a0;padding:3px 0}.menu-story button span{margin-left:17px}.menu-footer{position:absolute;left:5vw;right:5vw;bottom:23px;display:flex;align-items:center;gap:25px;color:#7c918a;font-size:10px;letter-spacing:1px}.menu-footer small{margin-left:auto;font:9px var(--mono);letter-spacing:2px}.menu-footer button{padding:0;font-size:10px}.menu-footer button span{font-size:17px;margin-left:8px}.admitted .title-menu{animation:title-arrive 1.2s cubic-bezier(.2,.8,.2,1) both}.admitted .menu-story{animation:title-arrive 1.4s .16s both}@keyframes title-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
#entry-gate{position:fixed;inset:0;background:radial-gradient(ellipse at 65% 35%,#17252a,#070d10 65%);z-index:90;display:grid;place-items:center;overflow:auto;padding:35px 24px}#entry-gate .entry-copy{max-width:650px;text-align:center;position:relative;z-index:1}.entry-eyebrow{font:10px var(--mono);letter-spacing:4px;color:#9d9484}.entry-copy h1{font:400 clamp(24px,3vw,37px)/1.6 var(--serif);letter-spacing:5px;margin:22px 0;color:#e1dbce}.entry-rule{width:55px;height:1px;background:#a88f65;margin:0 auto 30px}.entry-copy>p{font-size:14px;color:#b4b7ae;line-height:2.1;margin-bottom:22px}.entry-copy .entry-small{font-size:11px;line-height:1.95;color:#7f928d;max-width:590px;margin:16px auto}.entry-enter{margin:20px auto 17px;border:1px solid #97856a65;padding:15px 30px;min-width:265px;font-size:12px;letter-spacing:2px;display:flex;justify-content:space-between;gap:30px;background:#d5bf8808;min-height:50px}.entry-enter:hover{background:#b2997016;border-color:#c1ab82}.entry-footer{display:block;font-size:9px;color:#586e69;letter-spacing:2px}.entry-line{position:absolute;top:0;bottom:0;left:12vw;border-left:1px solid #4f686234;transform:rotate(15deg);pointer-events:none}
#loading-screen{position:fixed;inset:0;z-index:80;display:grid;place-content:center;justify-items:center;background:#060d10}.loading-logo{font:56px var(--serif);letter-spacing:20px;margin-left:20px}.loading-line{width:210px;height:1px;background:linear-gradient(90deg,transparent,#e9d0a9,transparent);margin:22px 0;animation:load-pulse 1.6s ease-in-out infinite}#loading-label{font-size:11px;letter-spacing:3px;color:#9baaa1;margin-top:24px}@keyframes load-pulse{50%{opacity:.2;transform:scaleX(.6)}}
#opening{position:fixed;inset:0;z-index:7;pointer-events:none;background:linear-gradient(0deg,#020b1070,transparent 40%)}.cinema-bar{position:absolute;left:0;right:0;height:8vh;background:#03080b}.cinema-bar.top{top:0}.cinema-bar.bottom{bottom:0}.chapter-slate{position:absolute;left:7vw;bottom:18vh;animation:chapter-arrive 3.8s ease both;text-shadow:0 2px 20px #000}.chapter-slate>span{font:12px var(--mono);letter-spacing:5px;color:#d3c29e}.chapter-slate h2{font:34px/1.6 var(--serif);letter-spacing:4px;margin:15px 0 8px}.chapter-slate p{font-size:12px;color:#b7c1b7;letter-spacing:2px}#skip-opening{pointer-events:auto;position:absolute;right:5vw;bottom:2.7vh;font-size:10px;color:#9baba3;padding:8px 12px}.opening #hud{opacity:0}@keyframes chapter-arrive{0%,9%{opacity:0;transform:translateY(12px)}23%,84%{opacity:1;transform:none}100%{opacity:0}}
#photo-flash{position:fixed;inset:0;z-index:11;pointer-events:none;background:#e8ede4;opacity:0}#photo-flash.shutter{animation:shutter .32s ease-out}@keyframes shutter{0%{opacity:.7}25%{opacity:.12}100%{opacity:0}}
/* Pause / chapter screens occupy a stable centre stage, rather than a web drawer. */
#modal{justify-content:center;align-items:center;padding:4vh 3vw}#scrim{background:#050f14ce;backdrop-filter:blur(10px)}.panel{width:min(840px,94vw);height:min(90vh,950px);border:1px solid #82928624;background:linear-gradient(145deg,#14272aef,#081419f2);box-shadow:0 25px 150px #0008}.panel>header{padding:30px 40px 22px;border-color:#bcc7b713}.panel>header h2{font-weight:400;letter-spacing:3px}.panel>header .eyebrow{font-size:9px;letter-spacing:3px}#panel-body{padding:28px 40px 42px}.chapter-select-intro{font:21px/1.7 var(--serif);letter-spacing:2px;margin-bottom:30px!important}.chapter-collection{display:grid;grid-template-columns:1fr;gap:6px}.chapter-collection .chapter-card{padding:20px 24px;border:1px solid #9eac9c1c;background:#d4d2a002;min-height:105px;display:grid;grid-template-columns:110px 1fr;align-items:center;column-gap:20px}.chapter-collection .chapter-card:hover{background:#d4d2a00b}.chapter-collection .chapter-card.active{border-color:#c3ad743d;padding-top:20px}.chapter-collection .card-no{grid-row:span 2;display:block!important;line-height:2!important;font-size:11px!important}.chapter-collection .card-no>span:last-child{display:none}.chapter-collection .card-title{font-size:23px;letter-spacing:2px;margin:0 0 4px}.chapter-collection .card-kind{font-size:11px;letter-spacing:1px}.kit-lede{font:19px/1.8 var(--serif)}.kit-section{padding:20px 0;border-top:1px solid var(--line)}.kit-section h3{margin:0 0 9px}.kit-section p{font-size:12px;max-width:480px}.kit-section small{display:block;font-size:10px;color:#809e91;margin-top:10px}.kit-count{float:right;font:12px var(--mono);color:#cfb991;padding-top:6px}.tool-directions{display:flex;gap:12px}.tool-directions button{flex:1;min-height:76px;background:#b8c2ac05;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:15px}.tool-directions button strong{font:29px var(--serif);color:#dab882}.tool-directions button span{font-size:11px}.tool-directions button:hover:not(:disabled){border-color:#c8b7948c;background:#b8c2ac10}.primary,.secondary{font-weight:400;letter-spacing:1px}.primary{background:#c6b18a;border:1px solid #d1bd98;color:#14262b}.primary:hover:not(:disabled){background:#e0c99e}.notice-box{background:#c8b98005;border-color:#b1ba9e1c}.cast-card .initial{border:0;background:none;font:38px var(--serif);color:#c4b392}.hud-buttons{gap:7px}.hud-buttons button{font-size:10px;background:#07161c62;backdrop-filter:blur(5px);border-color:#c2cab619;padding:7px 9px;min-height:34px}#hud .mission{transition:opacity .8s}.mission-progress{display:none}.mission h2{font-size:20px;font-weight:400;letter-spacing:2px;margin-top:9px}.mission>p:last-child{font-size:11px;color:#a8b7a8}.mission .eyebrow{font-size:8px;letter-spacing:2px}.hud-quiet .mission>p:last-child{opacity:.38}.hud-quiet #tension-console{opacity:.25}.hud-quiet #team{opacity:.58}.teammate{background:transparent;border-left-width:1px;padding:4px 10px;backdrop-filter:none}.teammate small{opacity:.65}.interact{background:#071820ae;min-width:225px;border-color:#a9b59d35;box-shadow:0 4px 35px #0003}.subtitle{top:auto;bottom:25%;background:linear-gradient(90deg,transparent,#031015c7 20%,#031015c7 80%,transparent);font-size:14px}.subtitle small{font-size:9px;letter-spacing:3px}.landmark>span{font-size:14px}.landmark p:empty{display:none}.landmark p{background:none;border:0;text-shadow:0 2px 7px #000}.navigation>strong{font-size:10px;color:#aab7a9}#story-status{border:none;background:linear-gradient(180deg,#040e1385,transparent);top:28px}.navigation button,#gauge-button,#focus-control{border-color:#9caf9a25;background:#07182099}.navigation button{opacity:.6}#tension-console{transition:opacity .8s}.playing .vignette{background:linear-gradient(0deg,#020e1350,transparent 20%,transparent 85%,#020e1340)}
@media(max-width:650px){#home.cinema-home{overflow:hidden}.title-menu{left:10vw;top:12vh;width:260px}.game-logotype{font-size:78px}.menu-signature{top:20px;left:7vw;right:7vw;font-size:7px;letter-spacing:1.2px}.game-subtitle{margin:17px 0 28px}.game-menu{max-width:220px;gap:4px}.game-menu button{font-size:15px;padding:9px 10px 9px 0;min-height:44px}.game-menu small{display:none}.menu-story{right:7vw;bottom:12vh;width:270px}.menu-story>span{font-size:8px;letter-spacing:2px}.menu-story p{font-size:20px}.menu-story button{font-size:9px}.menu-footer{left:7vw;right:7vw;bottom:18px;flex-wrap:wrap;gap:10px;font-size:8px}.menu-footer small{font-size:7px;letter-spacing:1px}.menu-footer button{display:none}.entry-copy h1{font-size:24px;letter-spacing:2px}.entry-copy>p{font-size:12px;line-height:1.9}.entry-copy .entry-small{font-size:10px;text-align:left}.entry-eyebrow{font-size:8px}.entry-rule{margin-bottom:23px}.entry-enter{margin-top:23px}.entry-footer{font-size:8px;letter-spacing:1px}.chapter-slate{left:8vw;bottom:19vh}.chapter-slate h2{font-size:27px}.chapter-slate p{font-size:10px}.panel>header{padding:22px}.panel>header h2{font-size:24px}#panel-body{padding:23px 22px 32px}.chapter-collection .chapter-card{grid-template-columns:64px 1fr;gap:8px;padding:15px 12px;min-height:98px}.chapter-collection .chapter-card.active{padding-top:15px}.chapter-collection .card-title{font-size:19px}.chapter-collection .card-no{font-size:9px!important}.chapter-collection .card-kind{font-size:9px}.hud-right{width:105px}.hud-buttons{flex-wrap:wrap;gap:4px}.hud-buttons button{font-size:9px;padding:5px 7px;min-height:30px}.hud-buttons kbd{display:none}.mission{top:23px;width:calc(100% - 130px)}.mission h2{font-size:17px}.mission .eyebrow{font-size:7px}.subtitle{top:auto;bottom:39%;font-size:12px;width:94vw}.tool-directions{gap:6px}.tool-directions button{gap:8px;min-height:69px}.tool-directions button strong{font-size:24px}.kit-section p{font-size:11px}#story-status{top:250px}#panel .lede{font-size:24px}#home #render-status{font-size:9px;max-width:230px}}
@media(max-height:570px) and (min-width:651px){.title-menu{top:13vh;left:7vw;width:310px}.game-logotype{font-size:57px;margin-top:6px}.menu-overline{font-size:8px;letter-spacing:4px}.game-subtitle{margin:7px 0 12px}.game-subtitle span{font-size:9px}.game-menu{gap:0;max-width:235px}.game-menu button{padding:5px 12px 5px 0;min-height:30px;font-size:12px}.game-menu button::before{top:14px}.title-menu #render-status{margin-top:8px;font-size:8px}.menu-signature{top:15px;font-size:7px}.menu-footer{bottom:12px;font-size:8px}.menu-story{bottom:15vh}.menu-story p{font-size:22px}.entry-copy{max-width:670px!important}.entry-copy h1{font-size:25px;margin:9px 0}.entry-rule{margin-bottom:12px}.entry-copy>p{font-size:11px;line-height:1.6;margin-bottom:10px}.entry-copy .entry-small{font-size:9px;line-height:1.6;margin:9px auto;max-width:650px}.entry-enter{margin:10px auto 8px;padding:8px 24px;min-height:38px;font-size:10px}.entry-eyebrow,.entry-footer{font-size:8px}.chapter-slate h2{font-size:25px}.panel>header{padding:16px 24px}#panel-body{padding:20px 24px}.subtitle{top:auto;bottom:25%;font-size:11px}.mission h2{font-size:17px}.hud-right{width:190px}#story-status{top:163px}.cinema-bar{height:7vh}}
.reduced *, .reduced *::before{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reduced #photo-flash{display:none}

body.panel-open .chapter-slate{animation-play-state:paused}

/* v0.9: a quiet spectator voice. Never a screenful of fake live danmaku. */
.menu-story .audience-welcome{display:block;font:12px var(--sans);letter-spacing:2px;color:#d0bea0;margin-bottom:22px}
.menu-story p.audience-tagline{font:12px/1.7 var(--sans);letter-spacing:1px;color:#a7b7ae;margin:14px 0 8px}
.menu-story #audience-open{display:block;margin:0 0 4px auto;min-height:38px;color:#cbbb9e;font-size:11px}
.menu-story #audience-open b{font-weight:400}.menu-story #audience-open:hover{color:#fff}
.audience-caption{position:fixed;left:50%;top:38%;transform:translateX(-50%);width:min(550px,88vw);pointer-events:none;text-align:center;padding:14px 25px;background:linear-gradient(90deg,transparent,#061216d9 18%,#061216d9 82%,transparent);text-shadow:0 2px 12px #000;z-index:6}
.audience-caption small{font:9px var(--sans);letter-spacing:3px;color:#bca787;display:block;margin-bottom:9px}
.audience-caption p{font:16px/1.75 var(--serif);letter-spacing:1px;color:#eee6d6;margin:0}
.audience-caption.arrive{animation:audience-arrive .6s ease both}
@keyframes audience-arrive{from{opacity:0;filter:blur(3px)}to{opacity:1;filter:none}}
.panel-open .audience-caption{display:none!important}
.audience-note{color:#9aad9f;font-size:12px!important}
.persona-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0 32px}
.persona-card{text-align:left;padding:20px 17px;min-height:154px;border:1px solid #a8b5a328;background:#bcc8a503;display:flex;flex-direction:column;gap:12px}
.persona-card small{font:9px var(--mono);letter-spacing:2px;color:#83998f}.persona-card strong{font:21px var(--serif);color:#e1daca;font-weight:400}.persona-card>span{font:12px/1.9 var(--sans);color:#99aca0}
.persona-card:hover{background:#d2c3a00a;border-color:#c9b69277}.persona-card.selected{border-color:#ccb48991;background:#c5b58b0c}.persona-card.selected small{color:#c6ad7e}
.lounge-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.lounge-heading>span{font-size:10px;color:#839c91}
.lounge-lines{margin:6px 0 26px}.lounge-lines article{display:flex;gap:20px;padding:19px 0;border-bottom:1px solid #adc0ac12}.lounge-no{font:12px var(--mono);color:#8a978b;padding-top:4px}.lounge-lines small{font-size:10px;color:#c8b085;letter-spacing:2px}.lounge-lines p{margin:6px 0!important;font:15px/1.8 var(--sans)!important}.lounge-lines article div>span{font-size:12px;color:#94a99c}
.audience-debrief{border:1px solid #b6ab902b;background:#c9bc9605;padding:26px;margin:32px 0}.audience-debrief>h3{font:24px/1.5 var(--serif);margin:13px 0 20px}.boast-contrast{display:grid;grid-template-columns:1fr 1fr;gap:26px}.boast-contrast small{font-size:10px;color:#a4b8a8;letter-spacing:2px}.boast-contrast p{font:16px/1.8 var(--serif)!important;margin-top:10px}.boast-contrast>div:first-child{border-right:1px solid var(--line);padding-right:22px}.audience-beats article{padding:13px 0;border-top:1px solid var(--line)}.audience-beats h4{font:14px/1.7 var(--sans);font-weight:400;color:#d8c6a4;margin:0 0 5px}.audience-beats p{font-size:12px!important;color:#a3b4a8;margin:0!important}.audience-debrief button{margin-top:20px}
@media(max-width:650px){.menu-story #menu-chapter,.menu-story #menu-quote{display:none}.menu-story .audience-welcome{font-size:10px;margin-bottom:8px}.menu-story p.audience-tagline{font-size:11px;margin:6px 0}.menu-story #audience-open{font-size:10px;min-height:36px}.menu-story #chapter-detail{min-height:32px}.menu-story{bottom:10vh}.persona-grid{grid-template-columns:1fr;gap:8px}.persona-card{min-height:110px;padding:15px;gap:7px}.persona-card strong{font-size:20px}.lounge-heading{display:block;padding-bottom:13px}.lounge-heading h3{margin-bottom:8px}.lounge-lines p{font-size:13px!important}.lounge-lines article{gap:13px}.audience-caption{top:41%;padding:12px 16px}.audience-caption p{font-size:13px}.audience-caption small{font-size:8px;letter-spacing:2px}.audience-debrief{padding:19px}.audience-debrief>h3{font-size:21px}.boast-contrast{grid-template-columns:1fr;gap:9px}.boast-contrast>div:first-child{border:0;border-bottom:1px solid var(--line);padding:0 0 12px}.boast-contrast p{font-size:15px!important}}
@media(max-width:650px) and (max-height:740px){.title-menu{top:9vh}.game-logotype{font-size:60px}.game-subtitle{margin:11px 0 18px}.game-menu button{min-height:38px;padding:7px 10px 7px 0}.menu-story{bottom:8vh}.menu-story .audience-welcome{display:none}}
@media(min-width:651px) and (max-height:570px){.menu-story{width:300px;right:5vw;bottom:12vh}.menu-story .audience-welcome{font-size:10px;margin-bottom:12px}.menu-story p{font-size:19px}.menu-story p.audience-tagline{font-size:10px}.menu-story #audience-open{min-height:32px;font-size:10px}.audience-caption{top:36%;width:360px}.audience-caption p{font-size:12px}.audience-caption small{font-size:8px}}

/* v0.9.1 readability pass — larger, more legible HUD/menu/panel type.
   Type scale only; no layout or behaviour changes. Short landscape stays as tuned. */
@media (min-width: 651px) and (min-height: 571px) {
  .mission .eyebrow { font-size: 11px !important; letter-spacing: 2px !important; }
  #mission-title { font-size: 27px !important; }
  #mission-detail { font-size: 14px !important; line-height: 1.6 !important; }
  .mission-progress { font-size: 12px !important; }
  .instruments .resource span, .instruments .depth span, .instruments p { font-size: 12px !important; }
  #gas-text { font-size: 16px !important; }
  .instruments .depth strong { font-size: 32px !important; }
  #timer, #lamp-state { font-size: 12px !important; }
  #battery { font-size: 12px !important; }
  .landmark p { font-size: 13px !important; }
  .navigation strong { font-size: 13px !important; }
  .navigation > span, .navigation p { font-size: 12px !important; }
  .navigation button { font-size: 12px !important; padding: 7px 10px !important; }
  .tutorial { font-size: 13px !important; }
  #subtitle { font-size: 18px !important; }
  #subtitle small { font-size: 12px !important; }
  #audience-caption p { font-size: 18px !important; }
  #audience-label { font-size: 11px !important; }
  #team, .team { font-size: 16px !important; }
  .hud-buttons button { font-size: 12px !important; }
  #story-status #missing-clock { font-size: 24px !important; }
  #story-status #missing-label { font-size: 13px !important; }
  #story-status small { font-size: 11px !important; }
  .game-menu button span { font-size: 20px !important; }
  .game-menu button small { font-size: 10px !important; }
  .game-subtitle span { font-size: 14px !important; }
  .audience-welcome { font-size: 13px !important; }
  .audience-tagline { font-size: 14px !important; }
  #menu-quote { font-size: 26px !important; }
  .menu-footer small { font-size: 11px !important; }
  #audience-open { font-size: 13px !important; }
  #chapter-detail { font-size: 12px !important; }
  .panel > header h2, .panel h2 { font-size: 30px !important; }
  .panel p { font-size: 13px !important; line-height: 1.7 !important; }
  .panel .lede { font-size: 19px !important; }
  .panel .small { font-size: 12px !important; }
  .option b { font-size: 14px !important; }
  .card-title { font-size: 18px !important; }
  .source-card p, .controls-table { font-size: 13px !important; }
  .stats strong { font-size: 30px !important; }
  .stats span { font-size: 11px !important; }
}
@media (max-width: 650px) {
  #mission-title { font-size: 22px !important; }
  #mission-detail { font-size: 13px !important; }
  #gas-text { font-size: 15px !important; }
  .instruments .resource span, .instruments p { font-size: 12px !important; }
  #subtitle { font-size: 16px !important; }
  .tutorial { font-size: 12px !important; }
  .landmark p { font-size: 12px !important; }
  .navigation strong { font-size: 12px !important; }
  .navigation p { font-size: 11px !important; }
  #audience-caption p { font-size: 16px !important; }
  #audience-label { font-size: 11px !important; }
  .game-menu button span { font-size: 18px !important; }
  .panel > header h2, .panel h2 { font-size: 26px !important; }
  .panel p { font-size: 13px !important; }
}

/* v0.9.1 sprint feedback: light vignette + faint speed streaks while holding Shift.
   Streaks live on a wider ::before and animate transform, so the loop stays on the
   compositor instead of repainting the full screen every frame. */
#sprint-fx { position: fixed; inset: 0; pointer-events: none; opacity: 0; transition: opacity .18s ease; z-index: 9;
  background: radial-gradient(ellipse 62% 58% at 50% 52%, rgba(0,0,0,0) 46%, rgba(4,16,18,.34) 100%); }
#sprint-fx::before { content: ''; position: absolute; top: 0; bottom: 0; left: -230px; right: 0; will-change: transform;
  background: repeating-linear-gradient(90deg, rgba(198,226,216,.055) 0 1px, rgba(0,0,0,0) 1px 230px); }
.sprinting #sprint-fx { opacity: 1; }
.sprinting #sprint-fx::before { animation: sprint-streak .62s linear infinite; }
.sprinting #sprint-fx::after { content: '加速'; position: absolute; left: 50%; bottom: 15%; transform: translateX(-50%);
  font: 11px/1 var(--mono); letter-spacing: 5px; color: rgba(206,228,218,.5); }
@keyframes sprint-streak { from { transform: translate3d(0,0,0); } to { transform: translate3d(-230px,0,0); } }
.reduced.sprinting #sprint-fx::before { animation: none; }

/* Cover art stays inside the menu so gameplay keeps its live 3D scene. */
#home.cinema-home{isolation:isolate;overflow:hidden}
.home-cover{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:#061216}
.home-cover img{width:100%;height:100%;object-fit:cover;object-position:62% 45%;transform:scale(1.035);animation:cover-drift 28s ease-in-out infinite alternate}
.home-cover-shade{position:absolute;inset:0;background:linear-gradient(90deg,#030d12c9, #030d1240 43%,transparent 70%),linear-gradient(0deg,#030d12e6,transparent 48%,#030d1233)}
.home-waterlight{position:absolute;inset:-8%;background:radial-gradient(ellipse at 72% 25%,#8cdec927,transparent 43%);mix-blend-mode:screen;animation:waterlight-breathe 12s ease-in-out infinite alternate}
.home-silt{position:absolute;inset:-8%;opacity:.3;background-image:radial-gradient(circle at 12% 24%,#d4e8d77a 0 1px,transparent 1.6px),radial-gradient(circle at 61% 73%,#d4e8d752 0 1px,transparent 1.5px),radial-gradient(circle at 86% 38%,#d4e8d74d 0 .7px,transparent 1.4px);background-size:263px 277px,379px 331px,431px 397px;animation:silt-drift 24s ease-in-out infinite alternate}
.admitted .title-menu{animation:none}
.admitted .title-menu>*,.admitted .game-menu>button,.admitted .menu-footer{animation:menu-emerge 1s cubic-bezier(.2,.7,.25,1) both}
.admitted .title-menu>.game-menu{animation:none}
.admitted .game-logotype{animation-delay:.1s}
.admitted .game-subtitle{animation-delay:.22s}
.admitted .game-menu>button:nth-child(1){animation-delay:.3s}
.admitted .game-menu>button:nth-child(2){animation-delay:.38s}
.admitted .game-menu>button:nth-child(3){animation-delay:.46s}
.admitted .game-menu>button:nth-child(4){animation-delay:.54s}
.admitted .game-menu>button:nth-child(5){animation-delay:.62s}
.admitted .title-menu>#render-status,.admitted .menu-footer{animation-delay:.7s}
.admitted .menu-story{animation:menu-emerge 1.4s .55s both}
.game-menu button::after{content:'';position:absolute;left:0;right:12px;bottom:0;height:1px;background:linear-gradient(90deg,#cfb991a6,transparent);transform:scaleX(0);transform-origin:left;transition:transform .4s ease}
.game-menu button:hover:not(:disabled)::after,.game-menu button:focus-visible::after{transform:scaleX(1)}
body:not(.admitted) .home-cover *,body.panel-open .home-cover *,body.page-hidden #home *{animation-play-state:paused!important}
@keyframes cover-drift{from{transform:scale(1.035) translate3d(.35%,.2%,0)}to{transform:scale(1.085) translate3d(-.6%,-.35%,0)}}
@keyframes waterlight-breathe{from{opacity:.35;transform:translate3d(0,0,0)}to{opacity:.8;transform:translate3d(-2%,1%,0)}}
@keyframes silt-drift{from{transform:translate3d(0,1%,0)}to{transform:translate3d(-1.5%,-2%,0)}}
@keyframes menu-emerge{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(max-width:650px){.home-cover img{object-position:64% 45%}.home-cover-shade{background:linear-gradient(90deg,#030d12b3,transparent 95%),linear-gradient(0deg,#030d12ed,transparent 58%)}.home-silt{opacity:.2}}
.reduced #home *,.reduced #home *::after{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){#home *,#home *::before,#home *::after{animation:none!important;transition:none!important}}

/* Name, genre, then action: explain the game before asking players to start. */
.menu-signature>span{font:12px/1.6 var(--serif);letter-spacing:2px;color:#a8b5af}
.game-subtitle{margin-bottom:14px}
.game-genre{font:12px/1.8 var(--sans);letter-spacing:1.2px;color:#c4c7b8;margin:0 0 25px;white-space:nowrap}
.admitted .game-genre{animation-delay:.28s}
@media(max-width:650px){
 .menu-signature>span{font-size:10px;letter-spacing:1px}
 .game-subtitle{margin-bottom:10px}
 .game-genre{font-size:11px;letter-spacing:.6px;margin-bottom:20px}
 .menu-story #menu-quote{display:block;font-size:21px!important;margin:0 0 8px;letter-spacing:1px}
 .menu-story .audience-welcome{display:none}
}
@media(max-width:650px) and (max-height:740px){
 .game-subtitle{margin-bottom:8px}
 .game-genre{font-size:10px;margin-bottom:12px}
 .game-menu{gap:0}
 .game-menu button{min-height:35px;padding-top:5px;padding-bottom:5px}
 .menu-story{bottom:8vh}
 .menu-story #menu-quote{font-size:19px!important;margin-bottom:4px}
 .menu-story p.audience-tagline{font-size:10px;margin:3px 0}
 .menu-story #audience-open,.menu-story #chapter-detail{min-height:28px}
}
@media(min-width:651px) and (max-height:570px){
 .game-subtitle{margin-bottom:7px}
 .game-genre{font-size:10px;margin-bottom:10px}
}

/* Lightweight ambient comments leave the cave artwork unobstructed. */
.menu-story{bottom:calc(8vh + 140px);width:340px;padding:0;border:0;background:none;text-align:right}
.menu-story #menu-quote{font-size:24px!important}
.menu-story .home-origins{font:10px/1.8 var(--sans);letter-spacing:.6px;color:#a9b6ab;margin:12px 0 7px}
.home-chat{position:absolute;right:6vw;bottom:8vh;width:300px;height:110px;pointer-events:none}
.home-chat-heading{display:flex;justify-content:space-between;align-items:center;font:9px/1.5 var(--sans);letter-spacing:1px;color:#91a69a;margin-bottom:8px}
.home-chat-heading button{pointer-events:auto;font:10px var(--sans);color:#a9b5a8;padding:5px 8px;min-height:28px}
.chat-bubble{padding:10px 14px;border-left:1px solid #cab48c65;background:linear-gradient(90deg,#06151bc7,#06151b66);border-radius:3px 9px 9px 3px;transition:opacity .45s,transform .45s}
.chat-bubble>span{font:10px/1.6 var(--sans);color:#cdb995;letter-spacing:.5px}
.chat-bubble p{font:13px/1.65 var(--sans);color:#dce1d7;margin:3px 0 0}
.chat-arrive{animation:chat-arrive .55s ease-out both}
.chat-bubble.chat-leaving{animation:none;opacity:0;transform:translateY(-5px)}
@keyframes chat-arrive{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
body.panel-open .home-chat{visibility:hidden}
.reduced .chat-bubble{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){.chat-bubble{animation:none!important;transition:none!important}}
@media(max-width:650px){
 .menu-story{bottom:calc(8vh + 117px);width:280px}
 .menu-story #menu-quote{display:none}
 .menu-story .home-origins{font-size:9px;margin:0 0 4px}
 .menu-story #audience-open,.menu-story #chapter-detail{min-height:28px}
 .home-chat{right:7vw;bottom:7vh;width:min(280px,86vw);height:106px}
 .chat-bubble p{font-size:12px}
}
@media(max-width:650px) and (max-height:740px){
 .title-menu{top:9vh}
 .game-logotype{font-size:54px}
 .game-menu button{min-height:32px;padding-top:4px;padding-bottom:4px}
 .game-subtitle{margin-top:8px}
 .game-genre{margin-bottom:9px}
 .menu-story .home-origins{font-size:8px}
}
@media(min-width:651px) and (max-height:570px){.menu-story{bottom:calc(8vh + 115px)}.menu-story #menu-quote{font-size:20px!important;margin:5px 0}.home-chat{height:100px}.menu-story .home-origins{margin:6px 0}}

/* Short laptop windows: tighten the title stack so the menu never collides with
   the footer (measured 73px overlap at 577px height before this). */
@media(min-width:651px) and (max-height:690px){
 .title-menu{top:10vh}
 .game-logotype{font-size:clamp(50px,5.2vw,80px)}
 .game-subtitle{margin:11px 0 20px}
 .game-menu button{min-height:38px;padding:7px 18px 7px 0}
 .game-menu button::before{top:17px}
}

/* v0.9.3 community card: same stage as the gauge, but image-led. */
#community-card{position:fixed;z-index:13;left:50%;top:50%;transform:translate(-50%,-50%);width:min(380px,92vw);max-height:92vh;overflow:auto;background:#0c2428fa;border:1px solid #d6be8260;box-shadow:0 20px 90px #000b;padding:20px 24px 22px;color:var(--muted);backdrop-filter:blur(12px);text-align:center}
#community-card>header{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#c9bb8b;letter-spacing:1px;text-align:left}
#close-community{width:36px;height:36px;font-size:20px;flex-shrink:0}
#community-card p{font-size:12px;line-height:1.8;margin:8px 0 14px}
#community-card img{width:100%;max-width:290px;height:auto;display:block;margin:0 auto;border-radius:4px;background:#fff}
#community-card small{display:block;font-size:10px;color:var(--quiet);margin-top:12px;line-height:1.7}
#community-card .community-shortcuts{display:flex;gap:10px;justify-content:center;margin-top:6px}
#community-card .community-shortcuts button{min-height:44px;font-size:12px}
.menu-footer #community-open{color:#cbbb9e}
.menu-footer #community-open:hover{color:#fff}
@media(max-width:650px){.menu-footer #community-open{display:inline-block}}

/* ---------------------------------------------------------------------------
   While a dive is running nothing in the HUD is text to be selected. Without
   this, holding the long-press actions made the phone pop its selection menu
   ("拷贝") on the nearest sentence, which reads as a bug in a game.
   --------------------------------------------------------------------------- */
body.playing #world,body.playing #hud,body.playing #hud *,body.playing #toast,body.playing .vignette,body.playing #water-mask,body.playing .tension-vignette{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
body.playing #hud .interact,body.playing #mobile-controls button{touch-action:none}

/* ---------------------------------------------------------------------------
   Touch controls. Everything keys off body.touch, which JS sets from the
   device capability check (plus the manual override in settings), because a
   landscape phone is wider than any width media query would suggest.

   Landscape is the designed layout. The cave is a wide space, so the extra
   width is real view, and the two thumb clusters fit on opposite bottom
   corners without covering the briefing. Portrait still works but is the
   fallback: there simply is not room for two clusters and the readouts beside
   a tall, narrow view, so the game offers to rotate first.

   The right cluster is only the things a thumb needs mid-swim: rise, sink,
   sprint and follow-the-line. The occasional switches (lamp, gauge, DPV) sit
   in a small strip at the top, out of the way.

   Safe-area insets keep every cluster clear of the home indicator and corners.
   --------------------------------------------------------------------------- */
:root{--pad:46px;--pad-gap:6px;--edge-l:calc(14px + env(safe-area-inset-left));--edge-r:calc(14px + env(safe-area-inset-right));--edge-b:calc(14px + env(safe-area-inset-bottom));--edge-t:calc(12px + env(safe-area-inset-top));--col:132px;--pad-w:calc(var(--pad)*3 + var(--pad-gap)*2);--pad-h:calc(var(--pad)*2 + var(--pad-gap));--rail-h:calc(var(--pad)*2 + var(--pad-gap))}
.touch #mobile-controls{display:block;position:absolute;inset:0;pointer-events:none;z-index:3}
.touch #mobile-controls button{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;border:1px solid var(--line);background:rgba(5,26,29,.66);backdrop-filter:blur(6px)}
.touch #mobile-controls button:active,.touch #mobile-controls button.active,.touch #mobile-controls button.on{border-color:var(--gold);color:var(--gold);background:rgba(214,190,130,.18)}
.touch #mobile-controls button:disabled{opacity:.4}
/* The desktop guide and gauge buttons are replaced by their touch copies. */
.touch .navigation #guide{display:none}
.touch #gauge-button{display:none}
/* The focus caption already names the state, so the console yields the corner
   to the controls on touch. */
.touch #tension-console{display:none}

/* Floating stick: the left half is the surface, so the thumb can start
   anywhere instead of hunting for four fixed buttons. */
.touch #stick-zone{position:absolute;left:0;top:36%;width:50%;bottom:0;pointer-events:auto;touch-action:none;z-index:1}
.touch #stick{position:absolute;width:calc(54px*2);height:calc(54px*2);margin:-54px 0 0 -54px;pointer-events:none;z-index:2}
.touch #stick i{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(214,190,130,.30);background:radial-gradient(circle,rgba(5,26,29,.34),rgba(5,26,29,.12))}
.touch #stick b{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;border:1px solid rgba(214,190,130,.62);background:rgba(214,190,130,.18)}

.touch .mobile-rail{position:absolute;right:var(--edge-r);bottom:var(--edge-b);display:grid;grid-template-columns:1fr 1fr;gap:var(--pad-gap);width:var(--col)}
.touch .mobile-rail button{height:var(--pad);font-size:11px}

.touch .interact-wrap{position:absolute;width:var(--col);text-align:center}
.touch .interact{width:100%;min-width:0;min-height:62px;padding:6px 8px;gap:8px;justify-content:center}
.touch .interact .hold-key{width:36px;height:36px}
.touch .interact .hold-key svg{width:36px;height:36px}
.touch .interact strong{font-size:11px;line-height:1.35}

/* The occasional switches, parked at the top where no thumb rests. */
.touch .mobile-verbs{position:absolute;right:var(--edge-r);display:flex;gap:var(--pad-gap)}
.touch .mobile-verbs button{height:36px;min-width:54px;padding:0 8px;font-size:11px}

/* Shared interaction slot on the left: the steady lesson blocks interactions,
   so "steady" and the pad are the only two things that ever want those pixels. */
.touch #focus-control{left:auto;right:var(--edge-r);transform:none;bottom:calc(var(--edge-b) + var(--rail-h) + 8px);width:var(--col);max-width:var(--col);min-height:44px}

/* Portrait: the column stacks above the rail, the verbs and readouts go to the
   top band, and the briefing is capped so it cannot reach them. */
@media (orientation:portrait){
 .touch .interact-wrap{right:var(--edge-r);left:auto;bottom:calc(var(--edge-b) + var(--rail-h) + 60px);transform:none}
 .touch .mobile-verbs{right:var(--edge-r);left:auto;bottom:calc(var(--edge-b) + var(--rail-h) + 130px);justify-content:flex-end}
 .touch #tutorial{max-width:min(220px,52vw)}
 /* Users with the always-on panel get two rows here, so the band clears the tallest briefing. */
.touch .instruments{top:calc(var(--edge-t) + 146px);bottom:auto;left:var(--edge-l);gap:15px}
 .touch .navigation{top:calc(var(--edge-t) + 226px);bottom:auto;left:var(--edge-l);right:auto;text-align:left;max-width:min(150px,40vw)}
 .touch #tutorial{position:fixed;top:calc(var(--edge-t) + 296px);left:var(--edge-l);right:auto;max-width:min(230px,56vw);text-align:left;margin:0;z-index:2}
 .touch .mission{width:min(calc(100% - 132px),430px)}
}
/* Narrow phones: the action column must not reach into the thumb surface. */
@media (max-width:360px) and (orientation:portrait){
 .touch{--col:120px}
 .touch #stick-zone{width:40%}
 .touch .mobile-verbs button{min-width:46px}
 .touch .mobile-rail button{font-size:10px}
}

/* Short portrait: lift the readout band and cap the briefing to two lines. */
.touch .mission>p:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (orientation:portrait) and (max-height:720px){
 .touch .instruments{gap:12px}
 .touch .navigation{top:calc(var(--edge-t) + 232px)}
}
/* Very short portrait: the bearing is already on the on-screen landmark. */
@media (orientation:portrait) and (max-height:620px){
 .touch .navigation{display:none}
 .touch #tutorial{top:calc(var(--edge-t) + 202px)}
 .touch .instruments{gap:12px}
 .touch .instruments .depth strong{font-size:22px}
 .touch .instruments .resource{width:96px}
}

/* Landscape: the two clusters take the bottom corners and everything else fits
   in the left band, so the interaction prompt can sit back in the middle. */
@media (orientation:landscape){
 .touch{--pad:44px;--stick-top:46%;--stick-w:31%}
 .touch .interact-wrap{left:50%;right:auto;transform:translateX(-50%);bottom:var(--edge-b);width:min(240px,30vw)}
 .touch .mobile-verbs{top:calc(var(--edge-t) + 84px);left:auto;right:var(--edge-r);transform:none}
 /* Readouts move to the top band: the lower left belongs to the thumb, and a
    stick whose surface sits under the depth readout would cover it. */
 .touch .instruments{top:calc(var(--edge-t) + 6px);bottom:auto;left:calc(var(--edge-l) + min(256px,34vw));gap:10px}
 .touch .instruments .depth strong{font-size:24px}
 .touch .instruments .resource{width:98px}
 .touch .navigation{top:calc(var(--edge-t) + 76px);bottom:auto;left:calc(var(--edge-l) + min(256px,34vw));max-width:min(190px,24vw)}
 .touch #tutorial{position:static;max-width:min(260px,32vw);text-align:center;margin:8px auto 0}
 /* The team drops below the switch strip so the two share the right band. */
 .touch #team{margin-top:74px;max-width:130px}
 .touch .mission{width:min(240px,28vw)}
 .touch #stick-zone{top:var(--stick-top);width:var(--stick-w)}
}

/* Rotate offer. Shown once, in portrait, before the cramped layout is used. */
#rotate-card{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:28px 24px;background:radial-gradient(ellipse at 50% 40%,#12262b,#050e12 70%)}
#rotate-card h2{font:400 24px/1.5 var(--serif);letter-spacing:3px}
#rotate-card p{font-size:13px;line-height:1.9;color:var(--muted);max-width:330px}
#rotate-card small{font-size:10px;line-height:1.8;color:var(--quiet);max-width:330px}
#rotate-card .rotate-actions{display:flex;flex-direction:column;gap:9px;width:min(300px,86vw);margin-top:6px}
#rotate-card button{min-height:48px;border:1px solid var(--line);background:rgba(214,190,130,.10);font-size:13px}
#rotate-card #rotate-skip{background:none;color:var(--quiet);border-color:transparent}
.rotate-device{width:52px;height:34px;border:1px solid var(--gold);border-radius:5px;transform:rotate(-90deg);animation:rotate-nudge 2.4s ease-in-out infinite}
@keyframes rotate-nudge{0%,55%,100%{transform:rotate(-90deg)}75%{transform:rotate(0)}}
.reduced .rotate-device{animation:none}

/* ---------------------------------------------------------------------------
   Wrist readout. Gas and depth live on the arm you raise, not on the screen
   edge, so the numbers are read off the instrument instead of a panel. The
   element is pointer-transparent and is positioned each frame from the same
   camera-space anchor the diver rig lifts the gauge to.
   --------------------------------------------------------------------------- */
#wrist-readout{position:fixed;z-index:4;transform:translate(14px,-4px);pointer-events:none;min-width:116px;
 padding:7px 10px 8px;background:linear-gradient(180deg,rgba(8,26,29,.90),rgba(4,16,19,.93));
 border:1px solid rgba(214,190,130,.32);border-left:2px solid var(--gold);box-shadow:0 6px 26px rgba(0,0,0,.55)}
#wrist-readout .wr-row{display:flex;align-items:baseline;gap:6px}
#wrist-readout .wr-row span{flex:1;font-size:9px;letter-spacing:1px;color:var(--quiet)}
#wrist-readout .wr-row b{font:16px/1.15 var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}
#wrist-readout .wr-row i{font-style:normal;font-size:10px;color:var(--muted)}
#wrist-readout .wr-row b.danger{color:#dfaa91}
#wrist-readout .wr-track{position:relative;height:2px;margin-top:6px;background:rgba(190,215,201,.20)}
#wrist-readout .wr-track i{display:block;height:100%;background:var(--gold);transition:width .2s}
#wrist-readout .wr-track u{position:absolute;top:-4px;left:70%;width:2px;height:11px;background:#f7f0d0;display:none}
#wrist-readout .wr-track i.below-plan+u{display:block}
#wrist-readout small{display:block;margin-top:5px;font-size:8px;letter-spacing:1px;color:var(--quiet)}
/* With the instruments on the wrist, the left panel keeps only the clock.
   Each of these carries an ID rule of its own, so the selector has to be at
   least as specific as the one that gives it `display`. */
body.gauge-wrist.playing .instruments .depth,
body.gauge-wrist.playing .instruments .resource>span,
body.gauge-wrist.playing .instruments .gas-track,
body.gauge-wrist.playing .instruments #turn-status,
body.gauge-wrist.playing .instruments #turn-mark{display:none}
/* The readout sits at the wrist, which is where the centred subtitle lands. */
body.gauge-open .subtitle{bottom:auto;top:32%}

/* ---------------------------------------------------------------------------
   Objective pointer. The mission card names the task; the pointer keeps the
   target on screen so a first-time player always knows which way to turn.
   Past the screen edge it clamps, swaps the diamond for a chevron and keeps
   only the distance, so it guides without revealing a hidden position.
   --------------------------------------------------------------------------- */
.mission-tag{display:inline-block;margin:0 0 7px;padding:2px 8px;border:1px solid rgba(214,190,130,.40);
 font:9px/1.6 var(--mono);letter-spacing:2px;color:var(--gold)}
.touch .mission-tag{font-size:8px;letter-spacing:1.4px;padding:1px 6px}
.landmark.clamped>span{display:none}
.landmark.clamped::before{content:"";position:absolute;left:50%;top:50%;width:0;height:0;border:6px solid transparent}
.landmark.clamped[data-dir="left"]::before{border-right-color:var(--gold);margin-left:-12px}
.landmark.clamped[data-dir="right"]::before{border-left-color:var(--gold);margin-left:12px}
.landmark.clamped[data-dir="ahead"]::before{border-bottom-color:var(--gold);margin-top:-14px}
.landmark.clamped[data-dir="back"]::before{border-top-color:var(--gold);margin-top:14px}
.landmark.clamped p{opacity:.85}
/* On a phone the wrist sits in the same bottom band as the interaction prompt,
   so the readout goes above the hand instead of beside it. */
.touch #wrist-readout{transform:translate(-50%,-100%);margin-top:-8px}

/* ---------------------------------------------------------------------------
   The real cave a chapter is anchored to. The story title stays the headline;
   the site sits under it, and the chapter panel repeats it next to the
   "this is fiction" note so the anchor never reads as a reconstruction.
   --------------------------------------------------------------------------- */
.chapter-collection .card-site{display:block;font-size:11px;letter-spacing:1px;color:var(--gold);margin:0 0 4px}
.chapter-collection .card-site i{font-style:normal;color:var(--quiet);font-size:9px;letter-spacing:.5px;margin-left:8px}
.chapter-card .card-site{display:block;font-size:10px;letter-spacing:.6px;color:var(--gold);margin:6px 0 3px}
.chapter-card .card-site i{display:none}
.site-card{margin:0 0 22px;padding:14px 17px;border:1px solid rgba(214,190,130,.26);border-left:2px solid var(--gold);background:rgba(194,179,137,.05)}
.site-card span{display:block;font:9px/1.6 var(--mono);letter-spacing:2px;color:var(--quiet)}
.site-card strong{display:block;font:21px/1.5 var(--serif);letter-spacing:2px;color:var(--ink);margin:2px 0 1px}
.site-card small{display:block;font-size:10px;letter-spacing:1px;color:var(--quiet)}
.site-card p{font-size:11px;line-height:1.85;color:var(--muted);margin:11px 0 0}
@media(max-width:650px){.chapter-collection .card-site{font-size:10px}.chapter-collection .card-site i{display:none}.site-card strong{font-size:19px}}
