@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Noto+Sans+KR:wght@400;500;600;700;900&display=swap');
:root{color-scheme:dark;--bg:#101919;--panel:#182323;--ink:#eeeae0;--muted:#9caaa5;--gold:#d5b47b;--line:#344240;--accent:#c9aa73}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.7 'Noto Sans KR',sans-serif}button,input,select{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;background:#24312f;border:1px solid var(--line);border-radius:6px;min-height:44px;padding:10px 16px;transition:background .18s,border-color .18s}button:hover{background:#34443f;border-color:#75867c}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}a{color:inherit;text-decoration:none}a:hover{color:var(--gold)}[hidden]{display:none!important}header{height:78px;padding:0 4.5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:2;background:#101919}header nav{display:flex;gap:8px}header nav button{background:none;font-size:12px;border-color:transparent}.brand{font-size:25px;letter-spacing:-1.2px;font-weight:900}.brand span{color:var(--gold)}.brand small{margin-left:20px;font:10px 'IBM Plex Mono',monospace;letter-spacing:3px;color:#a2aaa1}.eyebrow{font:11px/1.5 'IBM Plex Mono',monospace;letter-spacing:2.4px;color:var(--gold);margin:0 0 12px}main{max-width:1600px;margin:auto}.intro{min-height:calc(100svh - 78px);position:relative;display:grid;grid-template-columns:1fr 1.12fr;align-items:center;overflow:hidden;padding:60px 6% 110px;background:radial-gradient(ellipse at 80% 40%,#2c3933 0,transparent 57%)}.intro-copy{z-index:1}.intro h1{font-size:clamp(64px,8vw,112px);line-height:1.25;letter-spacing:-7px;margin:24px 0;color:#eee9db;font-weight:900}.intro h1 span{display:block;font-size:clamp(23px,3vw,38px);font-weight:400;letter-spacing:5px;margin-top:14px}.intro-line{font-size:18px;color:#b4bdb5;line-height:1.9;margin:30px 0}.intro-meta{display:flex;gap:18px;font-size:11px;color:#b4bdb5;margin:30px 0 20px}.primary{background:var(--gold);border:1px solid var(--gold);color:#17221e;font-weight:700}.primary:hover{background:#e9cc94}.start{width:310px;max-width:100%;display:flex;justify-content:space-between;padding:16px 22px;font-size:16px}.text{background:none;border:none;color:var(--gold);padding:8px 0}.fine{font-size:11px;color:var(--muted);line-height:1.9}.intro-art{position:relative;height:540px;perspective:650px;transform:rotate(-3deg)}.intro-door{position:absolute;inset:10% 20% 8%;background:linear-gradient(90deg,#303c35,#465048 48%,#14211c 49%,#22372d 50%,#35423b 51%,#303c35);border:16px solid #182722;box-shadow:0 0 0 2px #5e6c58,20px 30px 60px #0008,inset 0 0 70px #0007;transform:rotateY(-14deg);display:flex;align-items:center;justify-content:center;flex-direction:column}.intro-door:after{content:'';position:absolute;width:18px;height:60px;background:#80917a;right:15%;top:55%;box-shadow:3px 3px 0 #0006}.intro-door>span{font:110px Georgia;color:#b6bc9b99}.intro-door small{text-align:center;font:9px/1.8 'IBM Plex Mono',monospace;letter-spacing:2px;color:#d3d2ab88}.door-light{position:absolute;top:-22px;left:20%;right:20%;height:6px;background:#dfdda2;box-shadow:0 0 60px 15px #a8c59e66}.orbital{border:1px solid #82907a33;border-radius:50%;position:absolute;inset:0}.orbital.b{inset:-30px;transform:rotate(20deg) scaleX(.8)}.floor-grid{position:absolute;bottom:-50px;left:0;right:0;height:130px;background:repeating-linear-gradient(0deg,transparent 0 28px,#74877130 29px 30px),repeating-linear-gradient(90deg,transparent 0 58px,#74877130 59px 60px);transform:rotateX(60deg);mask-image:linear-gradient(transparent,black,transparent)}.coordinate{position:absolute;bottom:0;right:0;font:10px/2 'IBM Plex Mono';color:#9aaa90;letter-spacing:1px}.coordinate b{color:var(--gold)}.intro-bottom{position:absolute;bottom:28px;left:6%;right:6%;display:flex;justify-content:space-between;font:10px/1.7 'IBM Plex Mono';color:#899b91;letter-spacing:1.5px}#game{padding:26px 4.5% 32px}.mission-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.mission-bar h1{font-size:29px;letter-spacing:-1px;margin:0}.mission-bar .eyebrow{margin-bottom:4px}.mission-stats{display:flex;align-items:center;gap:20px;font:13px 'IBM Plex Mono'}.mission-stats button{font:11px 'Noto Sans KR'}.game-layout{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(300px,1fr);gap:28px}.viewport{min-height:530px;position:relative;border:1px solid #465149;border-radius:12px;overflow:hidden;background:radial-gradient(ellipse,#34473e,#15211e);isolation:isolate}#scene,#scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}#scene canvas{touch-action:pan-y}.scene-top{position:absolute;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;pointer-events:none;font:11px 'IBM Plex Mono';text-shadow:0 2px 4px #000}.live-dot{color:#b6c4ac}.live-dot:before{content:'●';color:#d3b879;margin-right:8px}.room-caption{position:absolute;bottom:90px;left:24px;right:24px;text-align:center;pointer-events:none;color:#d0d4c4;font-size:11px;text-shadow:0 2px 5px #000;background:#10191980;padding:8px}.view-controls{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:18px}.view-controls button{background:#172420c9;border-color:#87917b70;font-size:20px;min-width:48px}.view-controls span{white-space:nowrap;font-size:11px;color:#d4d9cc}#stick{position:absolute;bottom:22px;left:18px;width:62px;height:62px;border:1px solid #a3b49c70;border-radius:50%;background:#18251e90;touch-action:none}#stick i{display:block;width:24px;height:24px;border-radius:50%;background:#bac6aa70;position:absolute;left:18px;top:18px}#webgl-note{position:absolute;left:16px;right:16px;top:70px;background:#152620;padding:20px}.hotspot{position:absolute;z-index:1;border:1px solid #e2cd97;border-radius:24px;background:#1c2a23d9;font-size:11px;display:flex;align-items:center;gap:7px;padding:6px 13px;box-shadow:0 2px 18px #0005;transform:translate(-50%,-50%);max-width:80%;white-space:nowrap}.hotspot b{color:#f0cc81}.hotspot.done{border-color:#8bb59a;color:#b2d0b8}.dossier{padding:3px 0}.dossier-head{display:flex;justify-content:space-between}.dossier-head span{font:11px 'IBM Plex Mono';color:var(--muted)}h2{font-size:22px;line-height:1.5;margin:8px 0 15px}.dossier>p{font-size:13px;color:#a8b6ad;line-height:1.9}.dossier details{background:#1f2d28;border-left:2px solid var(--gold);padding:12px 15px;margin:22px 0}.dossier summary{cursor:pointer;font-size:12px;color:#dbc597}.dossier details p{font-size:12px;color:#bbc4b7;line-height:1.9;margin:12px 0 0}.task-list{display:grid;gap:7px}.task-list button{text-align:left;display:flex;align-items:center;gap:12px;background:#192622;padding:12px 14px;font-size:12px}.task-list button .num{font:11px 'IBM Plex Mono';color:var(--gold)}.task-list button .state{margin-left:auto;font-size:11px;color:#9eaf9e}.task-list button.done{opacity:.65}.inventory{border-top:1px solid var(--line);margin-top:20px;padding-top:16px;font-size:11px;color:#9caaa5}.inventory div{margin-top:8px;color:#d2c4a0}.inventory b{display:inline-block;font-size:11px;font-weight:400;padding:3px 8px;background:#29322b;border:1px solid #4e5849;border-radius:3px;margin:0 5px 5px 0}#next{width:100%;margin-top:12px}.chapter-track{display:flex;gap:4px;margin-top:28px}.chapter-track span{flex:1;border-top:2px solid #35413b;padding-top:10px;font-size:10px;color:#8a988f}.chapter-track span.active{border-color:var(--gold);color:var(--gold)}dialog{background:#17231f;border:1px solid #5d6957;color:var(--ink);border-radius:12px;width:520px;max-width:calc(100% - 28px);max-height:88svh;padding:26px;box-shadow:0 25px 100px #0008}dialog::backdrop{background:#050e0bc9;backdrop-filter:blur(5px)}.dialog-top{display:flex;justify-content:space-between;align-items:center}.dialog-top button{background:none;border:0;font-size:26px;padding:0;min-width:44px}.dialog-top .eyebrow{margin:0}dialog h2{font-size:25px}dialog>p{font-size:13px;color:#b8c3b4}#puzzle-body{margin:24px 0}.dialog-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:12px;font-size:11px;color:#91a28f}#feedback{min-height:28px;color:#dfc58c}.puzzle-row{display:flex;gap:10px;justify-content:center;align-items:center;margin:16px 0;flex-wrap:wrap}.puzzle-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;max-width:330px;margin:16px auto}.puzzle-grid button{min-height:60px;font-size:23px}input:not([type=range]),select{padding:12px;background:#0d1914;border:1px solid #596952;border-radius:5px;color:#f1e5c5;min-height:48px;min-width:0;max-width:100%}input[type=range]{width:100%;accent-color:var(--gold);height:44px}.answer-form{display:flex;gap:8px;margin-top:20px}.answer-form input{width:100%;flex:1}.answer-form button{flex-shrink:0}.digit{display:flex;align-items:center;flex-direction:column;gap:5px}.digit b{font:36px 'IBM Plex Mono';color:#e2c48a;padding:7px}.digit button{min-width:48px}.display{padding:20px;text-align:center;background:#0a1712;border:1px solid #42503d;border-radius:6px;font:25px/1.7 'IBM Plex Mono';letter-spacing:5px;color:#d8c08e;min-height:84px}.subtle{font-size:12px;color:#a5b29f}.picked{border-color:var(--gold)!important;background:#5e5438!important}.flash{background:#e3c482!important;color:#1d281d!important;box-shadow:0 0 20px #ddc18366}.target{border:2px dashed #7e8b72;min-height:100px;display:grid;place-items:center;border-radius:8px;font-size:24px;width:100%;margin:10px 0}.mirror{transform:scaleX(-1)}.lens-area{background:repeating-linear-gradient(40deg,#243d2c 0 4px,#101f16 5px 10px);padding:20px;text-align:center;font-size:28px;letter-spacing:8px;border-radius:6px}.shadow-object{width:110px;height:80px;margin:35px auto;background:#d8bf89;clip-path:polygon(0 0,100% 0,100% 35%,35% 35%,35% 100%,0 100%);filter:drop-shadow(30px 20px 0 #000)}.clock-face{width:160px;height:160px;border:5px solid #827656;border-radius:50%;margin:10px auto;position:relative;background:#0e1b15}.clock-face:before{content:'12';position:absolute;top:2px;left:65px}.clock-face:after{content:'6';position:absolute;bottom:2px;left:72px}.hand{position:absolute;left:75px;bottom:75px;width:3px;height:55px;background:#d6c190;transform-origin:bottom}.hand.hour{height:40px;width:5px}.laser-view{height:130px;position:relative;background:#0b1711;overflow:hidden;border-radius:5px}.laser-view svg{width:100%;height:100%}.terminal{white-space:pre-wrap;font:13px/1.8 'IBM Plex Mono';background:#08170f;padding:16px;color:#a9c6a3}.ending-mark{font:70px Georgia;color:var(--gold);text-align:center}.sheet-actions{display:grid;gap:10px}.sheet-actions a{display:block;padding:12px 16px;border:1px solid var(--line);border-radius:6px}.credit{font-size:12px;color:#b1bfa8}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#e1c58b;color:#18241b;padding:12px 20px;border-radius:6px;box-shadow:0 8px 30px #0005;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90%;text-align:center}#toast.show{opacity:1}.shot-view{height:140px;background:#101b16;position:relative;overflow:hidden}.shot-view .ball{position:absolute;bottom:15px;left:10%;font-size:25px}.shot-view .key{position:absolute;right:20%;top:20px;font-size:30px}.shot-view .ball.fly{animation:throw .65s ease-out forwards}@keyframes throw{to{transform:translate(210px,-85px)}}.book-row button{width:50px;height:135px;writing-mode:vertical-rl;background:#495442}.book-row button:nth-child(2){background:#66503a}.book-row button:nth-child(3){background:#394d58}.book-row button:nth-child(4){background:#695545}

/* 2026-10-16 개선: 단서 조사 · 퍼즐 상호작용 · 엔딩 */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(min-width:901px){body:has(#gamenow-exit-launcher) header,body:has(#gamenow-exit-launcher) #game{padding-right:max(4.5%,96px)}}
.challenge{background:#2a2a1e;border:1px solid var(--gold);border-radius:6px;padding:10px 14px;font-size:13px;color:#f0dcae;max-width:420px}
.base-clock{font-size:11px;color:var(--muted)}.base-clock b{color:#e8d6a8;font-weight:500}.base-clock b.late{color:#e39a80}
.button-link{display:block;padding:14px;border-radius:6px;text-align:center}
.hotspot.clue{border-color:#9fc3d6;background:#15232ae0}.hotspot.clue b{color:#bfe0f0}
.hotspot.anchored{transform:translate(-50%,-100%)}.hotspot.secret.anchored{transform:translate(-50%,-50%)}
.hotspot.offscreen{opacity:0;pointer-events:none}
.hotspot.locked{border-color:#6c7468;color:#aab3a6}.hotspot.locked b{color:#aab3a6}
.hotspot.secret{min-width:34px;min-height:34px;padding:0;justify-content:center;border:none;background:none;box-shadow:none;color:#f6e6b0;font-size:16px;opacity:.55;animation:glint 2.6s ease-in-out infinite}
@keyframes glint{50%{opacity:.95;text-shadow:0 0 10px #ffe9a8}}
#notes{display:grid;gap:8px;margin-top:12px}#notes .fine{margin:4px 0 0}
.note{text-align:left;display:grid;gap:3px;background:#17241f;border-color:#3b4a43;font-size:12px;line-height:1.7}.note b{color:#dbc597;font-weight:600}.note span{color:#bbc4b7}
.task-list button.locked{opacity:.55}
.chapter-track span.done{color:#a7c0a9;border-color:#5f7a66}
.clue-art{display:block;width:100%;max-width:340px;margin:10px auto;border-radius:6px}
.clue-text{font-size:15px!important;line-height:1.9;color:#e7e0cc!important;white-space:normal}
.wide{width:100%;margin-top:12px}
.wheels .digit b{min-width:46px;text-align:center}
.dpad{display:grid;grid-template-columns:repeat(3,56px);grid-template-areas:". u ." "l d r";justify-content:center}
.dpad button{font-size:22px}.dpad button:nth-child(1){grid-area:u}.dpad button:nth-child(2){grid-area:l}.dpad button:nth-child(3){grid-area:d}.dpad button:nth-child(4){grid-area:r}
.symbol-slot{width:72px;height:72px;font-size:32px}
.key-stage{position:relative;height:190px;background:linear-gradient(90deg,#2e3a33,#46524a 48%,#1a2620 50%,#36443b);border-radius:8px}
.key-item{position:absolute;left:14px;bottom:14px;font-size:34px;z-index:2;min-width:64px;min-height:64px;touch-action:none}
.key-item.inserted{opacity:0;transition:opacity .3s}
.keyhole{position:absolute;left:50%;top:50%;width:70px;height:90px;transform:translate(-50%,-50%);border:2px dashed #c9b27a;border-radius:10px;background:radial-gradient(circle at 50% 38%,#050807 0 9px,transparent 10px),linear-gradient(#050807,#050807) 50% 62%/8px 22px no-repeat,#59625a}
.shelf{position:relative;height:250px;border-radius:8px;background:linear-gradient(#1b2824 0 31%,#7a6648 31% 33%,#1b2824 33% 64%,#7a6648 64% 66%,#1b2824 66% 97%,#7a6648 97%);overflow:hidden}
.jar{position:absolute;width:40px;height:var(--h,44px);min-height:0;padding:0;border-radius:6px 6px 10px 10px;background:linear-gradient(90deg,#5c7a72aa,#a9c9bdcc,#5c7a72aa);border:1px solid #9cb8ad}
.jar.checked{opacity:.5}
.fuse{position:absolute;left:91%;top:88%;width:30px;height:30px;min-height:0;padding:0;border:none;border-radius:50%;background:radial-gradient(circle,#ffe8a6 0 2px,#d8b55b55 3px,transparent 8px)}
.fuse.found{background:radial-gradient(circle,#ffe8a6 0 6px,transparent 10px)}
.uv-wall{--x:20%;--y:70%;position:relative;height:220px;border-radius:8px;overflow:hidden;background:repeating-linear-gradient(-20deg,#26302c 0 3px,#202925 4px 9px);touch-action:none;cursor:crosshair}
.uv-wall:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at var(--x) var(--y),#6b4dff55 0,#3b2a9f33 48px,transparent 70px);pointer-events:none}
.uv-dirt{position:absolute;inset:16px;color:#55605a;font-size:13px;line-height:2.6;letter-spacing:3px}
.uv-secret{position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at var(--x) var(--y),#000 0 46px,transparent 64px);mask-image:radial-gradient(circle at var(--x) var(--y),#000 0 46px,transparent 64px)}
.uv-code{position:absolute;left:78%;top:18%;transform:translate(-50%,-50%);font:28px 'IBM Plex Mono';color:#c9b4ff;text-shadow:0 0 12px #8f6bff;white-space:nowrap}
.uv-omega{position:absolute;left:12%;top:80%;transform:translate(-50%,-50%);background:none;border:none;color:#bfa5ff;font-size:26px;text-shadow:0 0 12px #8f6bff}
.lens-paper{--x:20%;--y:30%;position:relative;height:210px;border-radius:6px;overflow:hidden;background:#d9d0b6;color:#8c8470}
.lens-noise{position:absolute;inset:14px;font:20px/2.2 'IBM Plex Mono';letter-spacing:6px;filter:blur(1.5px);word-break:break-all}
.lens-layer{position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at var(--x) var(--y),#000 0 32px,transparent 44px);mask-image:radial-gradient(circle at var(--x) var(--y),#000 0 32px,transparent 44px)}
.lens-word{position:absolute;left:74%;top:72%;transform:translate(-50%,-50%);font:700 26px 'IBM Plex Mono';letter-spacing:6px;color:#1d3c63;filter:blur(3px);opacity:.6}
.lens-word.sharp{filter:none;opacity:1}
.lens{position:absolute;width:86px;height:86px;transform:translate(-50%,-50%);border-radius:50%;border:5px solid #6c5a3b;background:radial-gradient(circle,#ffffff22,#bfe1ff22);box-shadow:0 4px 18px #0006;cursor:grab;z-index:2}
.mirror-note{background:#e9e2cc;color:#2a2620;border-radius:4px;padding:22px;text-align:center;transform:scaleX(-1);box-shadow:0 4px 14px #0006}
.mirror-text{font:700 40px Georgia,serif;letter-spacing:8px}.mirror-small{font:12px 'IBM Plex Mono';margin-top:8px;color:#5c5546}
.shadow-stage svg,.laser-view svg,.scale-view svg{width:100%;height:auto;display:block;background:#0b1711;border-radius:6px}
.laser-view{height:auto;background:none}.mirror-node{cursor:pointer}.mirror-node:focus-visible circle{stroke:var(--gold);stroke-width:3}
.pipe-wrap{width:max-content;margin:6px auto}.pipe-wrap .src{text-align:left;margin-bottom:4px}.pipe-wrap .out{text-align:right;margin-top:4px}
.pipe-grid{display:grid;grid-template-columns:repeat(3,72px);gap:4px}
.pipe{width:72px;height:72px;padding:0;color:#5b6a62;background:#101a16}.pipe svg{width:100%;height:100%}.pipe.lit{color:#ecd08a;background:#202a1d}
.pipe-end{text-align:center;font:11px 'IBM Plex Mono';color:var(--muted)}.pipe-end.src{color:#ecd08a}.pipe-end.out.lit{color:#99d7a0}
.slide button{font:600 24px 'IBM Plex Mono'}.slide button.empty{opacity:.15}
.tangram-slot{width:96px;height:96px;padding:6px;position:relative;background:#0e1914}.tangram-slot svg,.tangram-piece svg{width:100%;height:100%}
.tangram-slot .piece{position:absolute;inset:6px;color:#d8bf89}.tangram-slot.locked{border-color:#99d7a0}.tangram-slot.locked .piece{color:#99d7a0}
.tangram-piece{width:76px;height:76px;padding:8px;color:#d8bf89;touch-action:none}
.morse-lamp{width:90px;height:90px;margin:8px auto;border-radius:50%;background:#2b2a22;border:4px solid #565244;transition:background .05s}
.morse-lamp.on{background:#ffe9a6;box-shadow:0 0 40px #ffd77a}
.simon-key{width:64px;height:64px;font:600 20px 'IBM Plex Mono'}.simon-key.k1{color:#e6b3a3}.simon-key.k2{color:#b3d6a3}.simon-key.k3{color:#a3c4e6}.simon-key.k4{color:#e6dba3}
.meter{height:12px;background:#0b1711;border:1px solid #42503d;border-radius:6px;overflow:hidden;margin:10px 0}.meter div{height:100%;width:0;background:linear-gradient(90deg,#6d8f78,#e3c482);transition:width .15s}
.radio-voice{min-height:40px;text-align:center}
.range{display:block;font-size:12px;color:var(--muted)}
.wires{display:grid;gap:8px;margin:12px 0}
.wire{position:relative;text-align:left;min-height:46px;background:linear-gradient(transparent 42%,var(--c) 42% 58%,transparent 58%),#0e1914}
.wire.striped{background:linear-gradient(transparent 42%,transparent 58%,transparent 58%),repeating-linear-gradient(90deg,var(--c) 0 14px,#f2f2f2 14px 20px) 0 50%/100% 8px no-repeat,#0e1914}
.wire span{background:#0e1914cc;padding:2px 8px;border-radius:4px;font-size:12px}.wire.cut{background:linear-gradient(90deg,transparent 47%,#0e1914 47% 53%,transparent 53%),linear-gradient(transparent 42%,var(--c) 42% 58%,transparent 58%),#0e1914}
.clock-wrap{max-width:220px;margin:0 auto}.clock{width:100%;display:block;cursor:grab}
.display.small{font-size:16px;min-height:0;padding:12px;letter-spacing:2px}
.terminal{max-height:220px;overflow:auto;border-radius:6px}
.doc-board{display:grid;gap:6px;margin:8px 0}.doc-slot{text-align:left;min-height:52px;border-style:dashed;font-size:12px;color:var(--muted)}.doc-slot.filled{border-style:solid;color:#2a2620;background:#e2d9bf}
.doc-tray{display:grid;gap:6px;margin-top:12px}.doc-piece{text-align:left;font-size:12px;background:#e2d9bf;color:#2a2620;border-color:#b9ae8d;touch-action:none;clip-path:polygon(0 4%,4% 0,30% 6%,60% 0,100% 5%,98% 100%,70% 95%,35% 100%,0 96%)}
.formula-card{font:22px 'IBM Plex Mono';text-align:center;padding:18px;border:1px solid #42503d;border-radius:6px;background:#0a1712;color:#d8c08e}
.rel-view svg{width:100%;height:120px;display:block}.rel-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.rel-col{display:grid;gap:8px}
.chain-scene{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.chain-obj{min-height:64px}.chain-inv{justify-content:flex-start}
.book-row{gap:6px}.book-row .book{width:46px;height:140px;font:24px Georgia;writing-mode:horizontal-tb;transition:transform .3s}
.book.b0{background:#495442}.book.b1{background:#66503a}.book.b2{background:#394d58}.book.b3{background:#695545}.book.b4{background:#4f3f55}.book.b5{background:#3f5a4c}
.book.nudge{transform:translateY(8px)}.book.pulled{transform:translateY(18px) rotate(-8deg)}.book-row.open{transform:translateX(30px);transition:transform .7s}
.inspect-stage{perspective:700px;height:200px;display:grid;place-items:center;touch-action:pan-y}
.device{width:180px;height:140px;position:relative;transform-style:preserve-3d;transition:transform .45s}
.face{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:10px;font:12px 'IBM Plex Mono';color:#dfe5d8;background:#3d4a43;border:2px solid #7f8e82;border-radius:8px;backface-visibility:hidden}
.face.f0{transform:translateZ(90px)}.face.f1{transform:rotateY(90deg) translateZ(90px)}.face.f2{transform:rotateY(180deg) translateZ(90px);background:#2f3a35}.face.f3{transform:rotateY(270deg) translateZ(90px)}
.screws{display:flex;gap:40px}.screw{width:48px;height:48px;padding:0;border-radius:50%;font-size:20px;background:#9aa49b;color:#2b322e;transition:transform .2s}.screw.gone{visibility:hidden}
.shot-canvas{width:100%;height:auto;display:block;border-radius:6px}
.ending-items{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.countdown{font-size:30px}.countdown.urgent{color:#ec8f78;border-color:#ec8f78}
.result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:14px 0}.result-grid div{background:#0a1712;border:1px solid #42503d;border-radius:6px;padding:8px;text-align:center}.result-grid small{display:block;font-size:10px;color:var(--muted)}.result-grid b{font:16px 'IBM Plex Mono';color:#e2c48a}
.ending-list{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 16px}.ending-list span{font-size:11px;padding:3px 8px;border:1px solid #42503d;border-radius:12px;color:#6f7c73}.ending-list span.seen{color:#e2c48a;border-color:#8f7b53}
.ending-mark.bad{color:#ec8f78}
@media(min-width:1600px){.viewport{min-height:630px}}@media(max-width:900px){.game-layout{grid-template-columns:1fr;gap:24px}.viewport{min-height:420px}.dossier{padding:0 5px}.intro{grid-template-columns:1fr 1fr;padding-left:5%;padding-right:5%}.intro-art{height:430px}.intro h1{font-size:80px}.intro h1 span{font-size:25px;letter-spacing:2px}.intro-meta{display:block}.intro-meta span{display:block}.brand small{display:none}}@media(max-width:600px){header{height:62px;padding:0 16px}.brand{font-size:23px}header nav{gap:0}header nav button{padding:8px;font-size:11px}#game{padding:20px 14px 26px}.intro{min-height:calc(100svh - 62px);display:flex;align-items:flex-start;padding:40px 24px 80px}.intro-copy{width:100%}.intro .eyebrow{font-size:9px}.intro h1{font-size:78px;margin-top:24px}.intro h1 span{font-size:22px;letter-spacing:2px}.intro-line{font-size:15px;margin:24px 0}.intro-art{position:absolute;width:270px;height:350px;right:-110px;top:60px;opacity:.35;z-index:0;transform:rotate(-8deg)}.intro-meta{display:flex;gap:15px;margin-top:36px;font-size:10px}.start{width:100%}.intro-bottom{left:24px;right:24px;bottom:22px;font-size:8px;display:block}.intro-bottom a{display:block;margin-top:8px}.mission-bar{align-items:flex-start;margin-bottom:16px}.mission-bar h1{font-size:25px}.mission-bar .eyebrow{font-size:8px;letter-spacing:1.5px}.mission-stats{gap:10px;font-size:11px;flex-wrap:wrap;justify-content:flex-end;max-width:145px}.mission-stats button{min-height:32px;padding:4px 8px;font-size:10px}.viewport{min-height:355px}.scene-top{left:15px;right:15px;top:15px;font-size:9px}.room-caption{bottom:82px;font-size:10px;left:12px;right:12px}.view-controls{bottom:18px;gap:12px}.view-controls button{min-width:44px}#stick{bottom:19px;width:52px;height:52px;left:14px}#stick i{left:13px;top:13px}.hotspot{font-size:10px;padding:7px 10px;min-height:44px}.chapter-track span{font-size:9px;line-height:2}.dossier details{margin:15px 0}.dossier h2{font-size:21px}dialog{padding:20px;max-height:90svh}dialog h2{font-size:22px}.puzzle-row{gap:8px}.digit button{min-width:46px;padding:8px}.answer-form{flex-wrap:wrap}.answer-form input{min-width:140px}.answer-form button{flex:1}.display{font-size:22px}.chapter-track{gap:7px}.chapter-track span{word-break:keep-all}body{padding-bottom:env(safe-area-inset-bottom)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(max-width:600px){.result-grid{grid-template-columns:1fr 1fr}.pipe-grid{grid-template-columns:repeat(3,64px)}.pipe{width:64px;height:64px}.tangram-slot{width:84px;height:84px}.symbol-slot{width:64px;height:64px}.mission-stats{max-width:170px}}
