:root{--bg:#0b121b;--surface:#0c1721;--text:#eae3d5;--muted:#91999d;--accent:#d4b274;--line:#536064;--serif:'Noto Serif SC','Songti SC','SimSun',serif;--sans:'Microsoft YaHei','PingFang SC',sans-serif;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.7 var(--sans)}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit;transition:background .18s,border-color .18s,color .18s}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button svg{flex-shrink:0}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}button{border:0;background:none}svg{vertical-align:middle}.header{height:82px;padding:0 32px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:21px;white-space:nowrap}.brand>span{font:30px/1 var(--serif);letter-spacing:5px}.brand small{font:13px Georgia,serif;letter-spacing:5px;color:var(--muted);margin-left:3px}.utilities{display:flex;align-items:center;gap:28px;font:15px var(--serif)}.utilities>button,.save-status{display:flex;align-items:center;gap:12px}.utilities>button{border-left:1px solid var(--line);padding-left:28px}.save-status{color:#c8c8bf}.toggle{width:35px;height:19px;border:1px solid var(--accent);border-radius:20px;padding:2px;display:flex;align-items:center}.toggle:after{content:'';width:13px;height:13px;border-radius:50%;background:var(--muted);transition:transform .2s}.toggle.on:after{background:var(--accent);transform:translateX(16px)}.shell{max-width:1720px;margin:auto;padding:0 32px}.room-tabs{display:flex;align-items:center;gap:40px;height:64px}.room-tabs button{font:21px var(--serif);letter-spacing:2px;height:100%;padding:0 19px;position:relative;color:var(--muted);display:flex;align-items:center;gap:10px}.room-tabs button.active{color:var(--accent)}.room-tabs button.active:after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--accent)}.room-tabs button:hover{color:var(--text)}.session-time{margin-left:auto;font:12px/1.2 monospace;letter-spacing:2px;color:var(--muted)}.stage{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.scene-panel{border:1px solid var(--line);min-width:0}.visual{position:relative;aspect-ratio:1.6;overflow:hidden;background:#101922}.scene-art{width:100%;height:100%;object-fit:cover;display:block;user-select:none}.scene-heading{position:absolute;top:28px;left:30px;pointer-events:none;text-shadow:0 2px 6px #000,0 0 20px #000}.scene-heading h1{font-size:60px;line-height:1.3;letter-spacing:6px}.scene-heading p{font:18px/1.8 var(--serif);letter-spacing:2px;margin-top:5px}.hotspot{position:absolute;transform:translate(-50%,-50%);width:48px;height:48px;display:grid;place-items:center;padding:0}.hotspot>span{width:35px;height:35px;display:grid;place-items:center;border-radius:50%;border:1.5px solid var(--accent);background:#0b121bdc;box-shadow:0 0 0 4px #101a2233;color:#f7e6be;font:19px Georgia,serif;transition:transform .2s,background .2s}.hotspot:hover>span,.hotspot:focus-visible>span{transform:scale(1.15);background:#4e412e}.hotspot.solved>span{background:#24382d;color:#c4d5b6;border-color:#a6b595}.hotspot em{display:none;position:absolute;bottom:53px;left:50%;transform:translateX(-50%);font:12px var(--sans);font-style:normal;white-space:nowrap;padding:6px 10px;background:#0b121bf0;color:var(--text);border:1px solid var(--line);pointer-events:none}.hotspot:hover em,.hotspot:focus-visible em{display:block}.scene-caption{min-height:49px;padding:12px 17px;display:flex;align-items:center;gap:13px;border-top:1px solid var(--line);font:14px/1.6 var(--serif)}.scene-caption svg{color:var(--accent)}.scene-caption small{color:var(--muted);font:11px var(--sans);margin-left:auto;white-space:nowrap;letter-spacing:1px}.investigation{border:1px solid var(--line);padding:28px 26px 18px;display:flex;flex-direction:column;min-width:0}.investigation>h2{font-size:26px;color:var(--accent);letter-spacing:4px;border-bottom:1px solid var(--line);padding-bottom:16px}.objective{padding:24px 0 30px;border-bottom:1px solid var(--line)}.objective h3{font-size:20px;line-height:1.5;display:flex;align-items:flex-start;gap:10px}.objective h3 svg{color:var(--accent);margin-top:3px}.objective p{font:15px/1.9 var(--serif);letter-spacing:1px;color:#d1cec2;margin-top:17px}.progress-section{padding-top:26px}.progress-section h2{font-size:21px;letter-spacing:2px;color:var(--accent);display:flex;align-items:center;justify-content:space-between}.progress-section h2 span{font:12px monospace;color:var(--muted);letter-spacing:1px}.progress-track{height:8px;border:1px solid #7f8884;margin:18px 0 26px}.progress-track i{display:block;height:100%;background:var(--accent);transition:width .4s}.milestone{display:flex;gap:16px;align-items:flex-start;margin-bottom:23px}.check-box{width:23px;height:23px;border:1px solid var(--accent);margin-top:2px;flex-shrink:0;display:grid;place-items:center}.milestone strong{font:18px/1.4 var(--serif);letter-spacing:1px}.milestone small{display:block;color:var(--muted);font:12px/1.7 var(--serif);margin-top:6px}.milestone.completed{color:var(--accent)}.rail-actions{display:grid;gap:9px;margin-top:auto;padding-top:8px}.rail-actions button{width:100%;display:flex;justify-content:center;gap:9px;align-items:center}.rail-actions button>span{font:11px monospace;border:1px solid var(--line);padding:1px 5px;margin-left:auto}.rail-note{font-size:10px;text-align:center;color:var(--muted);margin-top:8px;letter-spacing:1px}.primary,.secondary,.danger{min-height:42px;padding:10px 20px;border:1px solid var(--accent);border-radius:2px;font:15px/1.4 var(--serif);display:inline-flex;justify-content:center;align-items:center;gap:9px;letter-spacing:1px}.primary{color:#101821;background:var(--accent)}.primary:hover{background:#e2c48e}.secondary{color:var(--text);background:transparent}.secondary:hover{background:#d4b27415;border-color:#efd19d}.danger{background:#722e2e;border-color:#ad7670}.quiet{font-size:12px;color:var(--muted);padding:8px 0;display:inline-flex;gap:8px;align-items:center}.quiet:hover{color:var(--accent)}.inventory{border-top:1px solid var(--line);margin-top:23px;padding:22px 0 14px;display:flex;align-items:center;gap:26px}.inventory-title{flex-shrink:0;width:185px}.inventory-title h2{font-size:23px;letter-spacing:3px}.inventory-title small{font-size:10px;color:var(--muted);letter-spacing:1px}.inventory-slots{display:flex;gap:12px;flex:1;min-width:0;overflow-x:auto;padding:4px}.item{border:1px solid var(--line);min-width:94px;min-height:76px;padding:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;position:relative;flex:1}.item>span{font:12px var(--serif);white-space:nowrap}.item>svg{color:var(--accent)}.item>small{font-size:9px;color:var(--muted)}.item.empty>span{font:22px var(--serif);color:#808a8d}.item.selected{border-color:var(--accent);background:#d4b27418;box-shadow:inset 0 0 0 1px var(--accent)}.item:hover:not(.empty){border-color:var(--accent)}.combine{min-width:180px}footer{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #25313a;padding:16px 0 20px;font-size:10px;color:#717d85;letter-spacing:2px}footer button{font-size:10px;color:var(--muted);letter-spacing:1px}footer button:hover{color:var(--accent)}.dialog{background:#0e1923;color:var(--text);border:1px solid #967f58;border-radius:2px;padding:36px 40px 28px;max-width:620px;width:calc(100% - 40px);max-height:85dvh;box-shadow:0 30px 90px #000a;overflow:auto}.dialog::backdrop{background:#030a10bf;backdrop-filter:blur(5px)}.dialog .close{position:absolute;right:15px;top:15px;padding:6px;color:var(--muted)}.dialog .close:hover{color:var(--accent)}.modal-kicker{font-size:10px;color:var(--accent);letter-spacing:3px;padding-right:15px;margin-bottom:10px}.dialog h2{font-size:30px;letter-spacing:2px;line-height:1.45;margin-bottom:21px}.dialog p{font-size:14px;line-height:1.95;margin-bottom:19px}.dialog .lead{font-family:var(--serif);font-size:17px;line-height:2;letter-spacing:.6px}.muted{color:var(--muted);font-size:12px!important}.paper{background:#d3cab7;color:#222c33;padding:25px 28px;font:16px/2 var(--serif);border-left:3px solid var(--accent);margin:20px 0;box-shadow:0 3px 12px #0004}.paper .muted{color:#566368}.document-link{display:flex;width:100%;align-items:center;gap:12px;color:var(--accent);font:14px/1.6 var(--serif);padding:13px 0;border-bottom:1px solid #39434b;text-align:left}.document-link:hover{color:#f1d6a4}.document-link:after{content:'↗';margin-left:auto}.clue-list{max-height:260px;overflow:auto;margin-bottom:23px}.field{display:block;margin:19px 0}.field>span{display:block;font-size:11px;letter-spacing:1px;color:var(--muted);margin-bottom:9px}.field input:not([type=range]),.field textarea{width:100%;border:1px solid #536064;background:#08121b;color:var(--text);padding:12px 15px;border-radius:2px}.field input[name=code]{font:25px/1.5 monospace;letter-spacing:10px;text-transform:uppercase}.field textarea{height:100px;resize:vertical;font-size:13px;line-height:1.8}.field-row{display:flex;gap:20px}.field-row>.field{flex:1}.field input[type=number]{font:23px monospace}.field input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.button-row{display:flex;align-items:center;gap:13px;margin-top:20px;flex-wrap:wrap}.feedback{font-size:13px;color:#e0a296;line-height:1.8;margin-top:15px;min-height:0}.feedback:empty{display:none}.feedback.success{color:#bcd4a5}.found{display:flex;align-items:center;gap:12px;color:#bdd0a5;background:#9db18410;border:1px solid #4b6046;padding:11px 13px;margin:18px 0;font-size:12px}.use-row{border-top:1px solid #39434b;border-bottom:1px solid #39434b;padding:19px 0;margin:22px 0;display:flex;align-items:center;gap:13px;justify-content:space-between}.use-row>span{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:9px}.use-row button{font-size:12px;white-space:nowrap;min-height:36px;padding:8px 12px}.hint-section{margin-top:24px;border-top:1px solid #39434b;padding-top:12px}.hint-section h3{font:14px var(--serif);color:var(--accent);margin:5px 0 16px}.hint-section p{font-size:13px;display:flex;gap:14px;align-items:baseline;margin-bottom:14px}.hint-section p>span{color:var(--accent);font:11px monospace}.hint-section .quiet{color:var(--accent)}.clock-face{display:grid;place-items:center;padding:27px;margin:20px 0;border:1px solid var(--line)}.clock-face>span{font:45px Georgia,serif;color:var(--accent);letter-spacing:6px}.clock-face>small{color:var(--muted);font-size:12px;margin-top:8px}.switches{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:25px 0 15px}.switches label{position:relative;cursor:pointer}.switches input{position:absolute;opacity:0;width:100%;height:100%;margin:0}.switches input:focus-visible+span{outline:2px solid var(--accent);outline-offset:4px}.switches span{border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;padding:20px 10px;background:#08121b}.switches b{font:21px monospace;color:var(--muted)}.switches i{display:block;width:33px;height:52px;border:1px solid var(--line);border-radius:3px;position:relative}.switches i:after{content:'';display:block;position:absolute;bottom:4px;left:4px;right:4px;height:17px;background:#66737a;box-shadow:0 1px 5px #000}.switches input:checked+span{border-color:var(--accent)}.switches input:checked+span b{color:var(--accent)}.switches input:checked+span i:after{background:var(--accent);top:4px;bottom:auto}.reading{text-align:center;font-size:12px;color:var(--muted);margin-bottom:23px}.reading strong{font:18px monospace;color:var(--accent);margin:0 12px}.radio-display{background:#09131a;border:1px solid var(--line);text-align:center;padding:25px 20px 12px;margin:24px 0}.radio-display output{font:48px monospace;color:var(--accent)}.radio-display>span{color:var(--muted);font:12px monospace;margin-left:8px}.waveform{display:flex;align-items:center;justify-content:center;gap:4px;height:52px;margin-top:16px}.waveform i{width:2px;background:#d4b27477}.morse{font:23px/2 monospace;color:var(--accent);text-align:center;padding:15px;margin:15px 0;border:1px solid var(--line)}.code{font:20px monospace;letter-spacing:5px;color:var(--accent)}.constellations{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:26px 0 18px}.constellations button{border:1px solid var(--line);padding:10px 5px;color:var(--accent)}.constellations button:hover{border-color:var(--accent);background:#d4b27410}.constellations svg{width:100%;height:70px}.constellations span{font:14px var(--serif)}.sequence{min-height:48px;border:1px dashed #617074;padding:10px 13px;display:flex;gap:9px;justify-content:center;flex-wrap:wrap;color:var(--accent);font-size:12px}.sequence small{color:var(--muted);align-self:center}.timeline{list-style:none;padding:0;margin:25px 0}.timeline li{display:flex;align-items:center;gap:17px;padding:14px 0;border-bottom:1px solid #39434b}.order-number{font:13px monospace;color:var(--accent)}.timeline strong{font:16px var(--serif)}.timeline li>div{margin-left:auto;display:flex;gap:7px}.timeline li button{border:1px solid var(--line);width:31px;height:31px;padding:5px}.timeline li button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.ending-choices{display:grid;gap:12px;margin:25px 0 0}.locked-ending{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px!important;margin:6px 0!important}.ending-emblem{text-align:center;padding:12px 0 25px}.ending-dialog{text-align:center}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-around;padding:20px 0;margin:28px 0}.stats>div{display:flex;flex-direction:column;gap:8px}.stats strong{font:20px monospace;color:var(--accent)}.stats span{font-size:10px;color:var(--muted);letter-spacing:2px}.ending-dialog .button-row{justify-content:center}.howto p{font-size:13px}.howto b{display:block;color:var(--accent);font-weight:400;letter-spacing:1px;margin-bottom:4px}.item-detail{display:flex;gap:23px;align-items:center;margin:25px 0}.item-detail svg{color:var(--accent)}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);max-width:calc(100% - 32px);width:max-content;padding:12px 20px;color:var(--text);background:#13232df5;border:1px solid var(--accent);font-size:13px;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1251px){.header{height:66px}.room-tabs{height:56px}.visual{aspect-ratio:1.7}.objective h3{font-size:24px}.objective p{font-size:17px}.milestone strong{font-size:20px}.milestone small{font-size:14px}.scene-caption{font-size:16px}.inventory{padding:16px 0 10px}.inventory-title{width:355px;display:flex;align-items:center;gap:20px}.inventory-title h2{white-space:nowrap}.inventory-title small{padding-left:20px;border-left:1px solid var(--line);line-height:1.8;font-size:11px}}
@media(min-width:1600px){.visual{aspect-ratio:1.75}.investigation{padding:35px 30px}.stage{grid-template-columns:minmax(0,1fr) 350px}}
@media(max-width:1250px){.stage{grid-template-columns:minmax(0,1fr) 270px;gap:16px}.header{padding:0 24px}.shell{padding:0 24px}.brand{gap:15px}.brand>span{font-size:25px}.brand small{font-size:10px;letter-spacing:3px}.utilities{gap:18px}.utilities>button{padding-left:18px}.investigation{padding:22px 20px 15px}.objective{padding:19px 0 23px}.objective h3{font-size:18px}.objective p{font-size:13px}.milestone{margin-bottom:20px;gap:12px}.milestone strong{font-size:16px}.scene-heading h1{font-size:48px}.scene-heading p{font-size:15px}.inventory-title{width:140px}.combine{min-width:145px;padding:10px 12px}.inventory{gap:15px}.item{min-width:78px}.scene-caption small{display:none}.visual{aspect-ratio:1.35}}
@media(max-width:900px){.header{height:74px}.brand>span{font-size:24px;letter-spacing:3px}.brand img{width:40px;height:40px}.brand small{display:none}.utilities{gap:15px}.utilities .save-status{display:none}.stage{grid-template-columns:minmax(0,1fr) 240px}.investigation{padding:20px 16px 15px}.investigation>h2{font-size:22px}.progress-section h2{font-size:18px}.rail-note{display:none}.scene-heading{left:20px;top:20px}.scene-heading h1{font-size:40px}.scene-heading p{font-size:13px;letter-spacing:0}.visual{aspect-ratio:1.05}.scene-art{object-fit:fill}.inventory{flex-wrap:wrap}.inventory-title{width:100%;display:flex;align-items:center;gap:20px}.inventory-title h2{font-size:21px}.item{min-width:73px}.combine{min-width:135px}.room-tabs{gap:18px}.room-tabs button{font-size:18px;padding:0 13px}}
@media(max-width:700px){body{font-size:14px}.header{padding:0 16px;height:68px}.brand{gap:10px}.brand>span{font-size:21px;letter-spacing:2px}.brand img{width:34px;height:34px}.utilities{gap:12px}.utilities>button{border:0;padding:8px 0;gap:7px;font-size:13px}.utilities>button>svg{width:17px;height:17px}.utilities button[data-action=sound]>span:not(.toggle){display:none}.toggle{width:29px;height:17px}.toggle:after{width:11px;height:11px}.toggle.on:after{transform:translateX(12px)}.shell{padding:0 14px}.room-tabs{height:56px;gap:4px}.room-tabs button{font-size:17px;letter-spacing:1px;padding:0 10px;gap:5px}.room-tabs svg{width:11px}.session-time{font-size:9px;letter-spacing:.5px}.stage{display:flex;flex-direction:column;gap:15px}.visual{aspect-ratio:1.4}.scene-art{object-fit:fill}.scene-heading{top:15px;left:18px}.scene-heading h1{font-size:34px;letter-spacing:3px}.scene-heading p{font-size:12px;letter-spacing:0}.hotspot>span{width:30px;height:30px;font-size:16px}.hotspot{width:44px;height:44px}.hotspot em{display:none!important}.scene-caption{font-size:12px;padding:10px 11px;gap:9px;min-height:43px}.scene-caption>svg{width:18px}.investigation{padding:19px 20px}.investigation>h2{font-size:21px;padding-bottom:11px;letter-spacing:2px}.objective{padding:17px 0 18px}.objective h3{font-size:19px}.objective p{margin-top:10px;font:13px/1.9 var(--serif);letter-spacing:.5px}.progress-section{padding-top:18px}.progress-section h2{font-size:18px}.progress-track{margin:14px 0 20px;height:6px}.milestone{margin-bottom:16px;gap:13px}.milestone strong{font-size:16px}.milestone small{font-size:12px;margin-top:4px}.check-box{width:20px;height:20px}.rail-actions{grid-template-columns:1fr 1fr;padding-top:0;gap:12px}.rail-actions .quiet{justify-content:flex-end}.rail-actions .primary{grid-column:1/-1}.rail-actions .secondary{font-size:13px;padding:9px}.inventory{margin-top:20px;padding-top:18px;gap:11px}.inventory-title{gap:13px}.inventory-title h2{font-size:19px}.inventory-title small{font-size:10px}.inventory-slots{width:100%;flex:auto;gap:9px}.item{min-width:72px;min-height:70px;padding:8px 7px;flex:none}.item>svg{width:22px}.item>span{font-size:11px}.combine{width:100%;min-height:40px;font-size:14px;margin-top:3px}footer{font-size:9px;letter-spacing:.5px;padding:15px 0 20px;flex-wrap:wrap}footer>span:nth-child(2){display:none}.dialog{padding:28px 22px 23px;width:calc(100% - 26px);max-height:87dvh}.dialog h2{font-size:26px;margin-bottom:17px}.dialog p{font-size:13px}.dialog .lead{font-size:16px}.paper{font-size:14px;padding:20px 18px}.use-row{align-items:flex-start;flex-direction:column;gap:13px}.use-row button{width:100%}.constellations{gap:7px}.constellations svg{height:56px}.constellations span{font-size:12px}.timeline{margin:19px 0}.timeline li{gap:11px}.timeline strong{font-size:14px}.timeline li>div{gap:5px}.timeline li button{width:29px;height:31px}.switches{gap:9px}.switches span{padding:18px 8px}.field-row{gap:12px}.stats strong{font-size:16px}.stats span{font-size:9px}.button-row .primary,.button-row .secondary{font-size:13px;flex:1}.dialog .close{right:9px;top:9px}}
.scene-panel{display:flex;flex-direction:column}.visual{flex-grow:1;flex-shrink:0}.scene-art{position:absolute;inset:0}
@media(min-width:1251px){.investigation{padding:24px 26px 14px}.objective{padding:20px 0 22px}.progress-section{padding-top:21px}.progress-track{margin:16px 0 22px}.milestone{margin-bottom:20px}.rail-actions .secondary{min-height:38px}.rail-note{font-size:9px;margin-top:6px}}
.switches input{z-index:1}.switches span{pointer-events:none}
.inventory-slots .empty{min-width:0;flex:1}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
