.settings-modal{z-index:40;background:#0000008c;place-items:center;font-family:Special Elite,Courier New,monospace;display:grid;position:fixed;inset:0}.settings-modal.hidden{display:none}.settings-panel{color:#e8e0c8;background:#14171b;border:1px solid #d8b25a59;width:min(360px,90vw);padding:20px 22px 16px;box-shadow:0 20px 60px #000}.settings-panel h3{color:#d8b25a;margin:0 0 14px;font-family:Playfair Display,Georgia,serif;font-size:22px}.settings-panel .row{grid-template-columns:80px 1fr 34px;align-items:center;gap:10px;margin:10px 0;font-size:14px;display:grid}.settings-panel .row.check{grid-template-columns:auto 1fr}.settings-panel input[type=range]{accent-color:#d8b25a;touch-action:pan-x;width:100%}.settings-panel output{text-align:right;color:#9a927c;font-size:12px}.settings-panel .actions{text-align:right;margin-top:12px}.settings-panel button{color:#d8b25a;cursor:pointer;background:0 0;border:1px solid #d8b25a;padding:8px 18px;font-family:inherit}.settings-panel select{color:#e8e0c8;background:#0c0e11;border:1px solid #d8b25a59;width:100%;padding:4px 6px;font-family:inherit}.settings-panel .group{margin:0 0 14px}.settings-panel h4{letter-spacing:3px;text-transform:uppercase;color:#9a927c;border-bottom:1px solid #d8b25a33;margin:0 0 4px;padding-bottom:4px;font-size:11px;font-weight:400}.settings-panel .note{color:#9a927c;margin:2px 0 0;font-size:12px;line-height:1.4}.touch-root{z-index:9;touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}.touch-root.hidden{display:none}.touch-zone{touch-action:none;position:absolute;top:0;bottom:0}.touch-zone.move{width:45%;left:0}.touch-zone.look{width:55%;right:0}.stick-base{opacity:0;pointer-events:none;background:#080a0e59;border:2px solid #e8e0c840;border-radius:50%;width:120px;height:120px;margin:-60px 0 0 -60px;transition:opacity .15s;position:fixed;top:calc(100% - 120px);left:90px}.stick-base.active{opacity:1}.stick-knob{background:#d8b25a8c;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%;box-shadow:0 0 12px #0009}.touch-zone.move:after{content:"MOVE";letter-spacing:2px;color:#e8e0c859;pointer-events:none;font:12px Special Elite,monospace;position:absolute;bottom:60px;left:50px}.touch-zone.look:after{content:"DRAG TO LOOK · TAP TO EXAMINE";letter-spacing:1px;color:#e8e0c84d;pointer-events:none;font:11px Special Elite,monospace;position:absolute;top:70px;right:24px}@media (orientation:portrait){.touch-zone.look:after{top:auto;bottom:150px}}.touch-btn{right:calc(24px + env(safe-area-inset-right));bottom:calc(40px + env(safe-area-inset-bottom));color:#d8b25a99;touch-action:manipulation;background:#080a0e99;border:2px solid #d8b25a66;border-radius:50%;width:76px;height:76px;font-size:30px;position:absolute}.touch-btn.ready{color:#d8b25a;border-color:#d8b25a;box-shadow:0 0 18px #d8b25a8c}.touch-btn:active{transform:scale(.94)}:root{--ink:#e8e0c8;--dim:#9a927c;--accent:#d8b25a;--danger:#ff4a3a;--uv:#c07bff;--panel:#080a0edb;--edge:#d8b25a59;--type:"Special Elite", "Courier New", monospace;--serif:"Playfair Display", Georgia, serif}.ui-root{pointer-events:none;font-family:var(--type);color:var(--ink);z-index:10;-webkit-user-select:none;user-select:none;position:fixed;inset:0}.ui-root button{font-family:var(--type);pointer-events:auto;cursor:pointer}.hidden{display:none!important}.crosshair{background:#e8e0c8b3;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;transition:transform .12s,background .12s;position:absolute;top:50%;left:50%;box-shadow:0 0 4px #000}.crosshair.active{background:var(--accent);transform:scale(2.2)}.prompt{background:var(--panel);border:1px solid var(--edge);white-space:nowrap;padding:6px 12px;font-size:15px;position:absolute;top:calc(50% + 28px);left:50%;transform:translate(-50%)}.prompt kbd{color:var(--accent);margin-right:6px}.hud-top{align-items:center;gap:10px;display:flex;position:absolute;top:16px;right:16px}.timer{background:var(--panel);border:1px solid var(--edge);letter-spacing:2px;padding:6px 12px;font-size:22px}.timer.urgent{color:var(--danger);border-color:var(--danger);animation:1s infinite pulse}.settings-btn{background:var(--panel);color:var(--dim);border:1px solid var(--edge);padding:5px 10px;font-size:17px;line-height:1}.settings-btn:hover{color:var(--accent)}.ui-root.touch .settings-btn{padding:9px 12px}.hint-btn{background:var(--panel);color:var(--accent);border:1px solid var(--edge);padding:7px 12px;font-size:15px}.toasts{flex-direction:column;align-items:center;gap:6px;width:min(640px,90vw);display:flex;position:absolute;bottom:110px;left:50%;transform:translate(-50%)}.toast{background:var(--panel);border-left:3px solid var(--accent);text-align:center;padding:9px 16px;font-size:15px;line-height:1.4;animation:.25s ease-out toastIn}.toast.hint{border-left-color:var(--uv)}.toast.fade{opacity:0;transition:opacity .6s}.inventory{gap:8px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.slot{background:var(--panel);border:1px solid var(--edge);pointer-events:auto;cursor:pointer;place-items:center;width:64px;height:64px;font-size:28px;display:grid;position:relative}.slot.selected{border-color:var(--accent);box-shadow:0 0 12px #d8b25a99}.slot .num{color:var(--dim);font-size:11px;position:absolute;top:2px;left:5px}.slot .name{white-space:nowrap;color:var(--dim);text-shadow:0 1px 2px #000,0 0 4px #000;font-size:11px;position:absolute;bottom:-18px}.screen{pointer-events:auto;background:radial-gradient(#0a0c12b8,#000000f2);place-items:center;display:grid;position:absolute;inset:0}.screen .card{text-align:center;max-width:640px;padding:36px 40px}.screen h1{font-family:var(--serif);letter-spacing:3px;color:var(--ink);text-shadow:0 0 24px #d8b25a59;margin:0;font-size:clamp(38px,7vw,72px)}.screen h2{color:var(--accent);letter-spacing:6px;margin:6px 0 22px;font-size:15px;font-weight:400}.screen p{color:var(--dim);line-height:1.6}.screen .controls{color:var(--dim);grid-template-columns:auto auto;justify-content:center;gap:4px 16px;margin:18px 0 26px;font-size:14px;display:grid}.screen .controls kbd{color:var(--accent);text-align:right}.big-btn{color:var(--accent);border:1px solid var(--accent);letter-spacing:2px;background:0 0;padding:12px 34px;font-size:18px}.big-btn:hover{background:#d8b25a1f}.screen.won h1{color:var(--accent)}.screen.lost h1{color:var(--danger)}.paused{background:#00000073}.paused .card{background:var(--panel);border:1px solid var(--edge);padding:18px 26px}.modal{pointer-events:auto;background:#0000008c;place-items:center;display:grid;position:absolute;inset:0}.panel{color:#1b1a17;background:#e9e0c6;width:min(520px,92vw);padding:26px 30px 20px;transform:rotate(-.6deg);box-shadow:0 20px 60px #000}.panel h3{font-family:var(--serif);border-bottom:2px solid #1b1a17;margin:0 0 12px;padding-bottom:6px;font-size:24px}.panel .body{white-space:pre-wrap;font-size:16px;line-height:1.55}.panel .actions{text-align:right;margin-top:18px}.panel .actions button{color:#e9e0c6;background:#1b1a17;border:none;padding:6px 16px;font-size:14px}.keypad{color:var(--ink);background:#1a1d21;border:1px solid #444;width:290px;transform:none}.keypad h3{color:var(--accent);border-color:#444;font-size:18px}.keypad .display{color:#4bff7a;letter-spacing:8px;text-align:center;text-shadow:0 0 8px #2bff5a;background:#051005;border:1px solid #0a3a12;min-height:40px;margin-bottom:12px;padding:10px;font-size:30px}.keypad .keys{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.keypad .keys button{color:var(--ink);background:#2c3036;border:1px solid #555;padding:12px 0;font-size:20px}.keypad .keys button:active{background:#3d434b}.keypad input{-webkit-user-select:text;user-select:text;box-sizing:border-box;width:100%;font-family:var(--type);letter-spacing:4px;text-transform:uppercase;color:#4bff7a;text-align:center;background:#051005;border:1px solid #0a3a12;outline:none;padding:8px;font-size:24px}.keypad .row{gap:8px;margin-top:12px;display:flex}.keypad .row button{color:var(--ink);background:#2c3036;border:1px solid #555;flex:1;padding:10px;font-size:15px}.keypad.shake{animation:.35s shake}.keypad.ok .display,.keypad.ok input{color:#b6ffc8}.night-tag{flex-direction:column;gap:2px;margin:-8px 0 14px;display:flex}.night-num{color:var(--accent);letter-spacing:5px;text-transform:uppercase;font-size:12px}.night-name{font-family:var(--serif);color:var(--ink);font-size:26px}.night-where{color:var(--dim);font-size:13px}.end-fragment{color:var(--uv)}.end-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.cases .card{width:min(560px,92vw)}.case-list{text-align:left;gap:8px;margin:0 0 22px;padding:0;list-style:none;display:grid}.case button{background:var(--panel);border:1px solid var(--edge);width:100%;color:var(--ink);text-align:left;flex-direction:column;gap:3px;padding:12px 16px;display:flex}.case button:not(:disabled):hover{border-color:var(--accent)}.case button:disabled{cursor:default;opacity:.45}.case.current button{border-color:var(--accent)}.case-name{font-size:16px}.case-meta{color:var(--dim);font-size:12px}.case.escaped .case-meta{color:var(--accent)}.build-badge{z-index:60;border:1px solid var(--uv);color:var(--uv);letter-spacing:1.5px;background:#c07bff2e;padding:4px 9px;font-size:11px;position:absolute;bottom:12px;left:12px}.ui-root.touch .build-badge{bottom:auto;left:50%;top:calc(74px + env(safe-area-inset-top));transform:translate(-50%)}.ui-root .touch-only{display:none}.ui-root.touch .touch-only{display:grid}.ui-root.touch .desktop-only{display:none}.ui-root.touch .hud-top{top:calc(10px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right))}.ui-root.touch .hint-btn{padding:10px 14px}.ui-root.touch .inventory{left:calc(10px + env(safe-area-inset-left));top:calc(10px + env(safe-area-inset-top));bottom:auto;transform:none}@media (orientation:portrait){.ui-root.touch .inventory{top:calc(64px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right));flex-wrap:wrap;row-gap:22px}}.ui-root.touch .slot{width:54px;height:54px;font-size:24px}.ui-root.touch .slot .name{font-size:10px}.ui-root.touch .toasts{bottom:calc(150px + env(safe-area-inset-bottom));width:min(520px,70vw)}.ui-root.touch .toast{padding:7px 12px;font-size:13px}.ui-root.touch .prompt{font-size:13px}.ui-root.touch .keypad .keys button{padding:16px 0}@media (max-width:600px),(max-height:500px){.screen .card{padding:20px 18px}.screen p{font-size:13px;line-height:1.45}.screen .controls{margin:10px 0 16px;font-size:12px}.screen h2{margin-bottom:12px}.panel{padding:18px 18px 14px}.panel .body{max-height:55vh;font-size:14px;overflow-y:auto}.big-btn{padding:12px 22px;font-size:16px}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-9px)}40%,80%{transform:translate(9px)}}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}}@keyframes pulse{50%{opacity:.55}}.link-btn{color:var(--dim);background:0 0;border:none;margin-top:10px;font-size:13px;text-decoration:underline}.link-btn:hover{color:var(--accent)}.slot.combinable{border-style:dashed}.slot.notebook-new{border-color:var(--accent);animation:1.4s ease-in-out infinite notebookGlow}@keyframes notebookGlow{50%{box-shadow:0 0 16px #d8b25ad9}}.inventory{flex-wrap:wrap;justify-content:center}.inv-hint{text-align:center;color:var(--dim);flex-basis:100%;margin-top:20px;font-size:12px}.ui-root.touch .inv-hint{text-align:left;margin-top:18px}.keypad.dial-mode .row .submit{display:none}.dial{width:190px;height:190px;margin:4px auto 12px;position:relative}.dial-face{background:radial-gradient(circle,#3a3f46 0 38%,#1e2227 39% 100%);border:3px solid #555;border-radius:50%;transition:transform .12s ease-out;position:absolute;inset:0}.dial-tick{transform-origin:50% 91px;text-align:center;color:#cfc6ad;width:24px;height:91px;margin-left:-12px;font-size:11px;position:absolute;top:4px;left:50%}.dial-marker{color:var(--danger);font-size:12px;position:absolute;top:-14px;left:50%;transform:translate(-50%)}.dial-now{color:#4bff7a;text-shadow:0 0 8px #2bff5a;pointer-events:none;place-items:center;font-size:30px;display:grid;position:absolute;inset:0}.dial-row{gap:8px;display:flex}.dial-row button{color:var(--ink);background:#2c3036;border:1px solid #555;flex:1;padding:12px 0;font-size:20px}.dial-row .dial-set{flex:2;font-size:14px}.dial-seq{text-align:center;letter-spacing:1px;color:var(--dim);margin-top:10px;font-size:13px}.clock-face{background:radial-gradient(circle,#efe6c8 0 70%,#d8cba2 71% 100%);border:5px solid #8a6a2c;border-radius:50%;width:190px;height:190px;margin:4px auto 8px;position:relative;box-shadow:inset 0 0 12px #00000059}.clock-num{font-family:var(--serif);color:#1b1a17;font-size:15px;position:absolute;transform:translate(-50%,-50%)}.clock-hand{transform-origin:50% 100%;background:#1b1a17;border-radius:3px;transition:transform .15s ease-out;position:absolute;bottom:50%;left:50%}.clock-hand.hour{width:6px;height:48px;margin-left:-3px}.clock-hand.minute{width:4px;height:72px;margin-left:-2px}.clock-pin{background:#8a6a2c;border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;position:absolute;top:50%;left:50%}.clock-now{text-align:center;color:#4bff7a;text-shadow:0 0 8px #2bff5a;margin-bottom:8px;font-size:22px}.clock-label{color:var(--dim);flex:1.4;place-items:center;font-size:14px;display:grid}.keypad .dial-row+.dial-row{margin-top:8px}.note-modal .pager{align-items:center;gap:8px;margin-right:14px;display:inline-flex}.note-modal .pager button{color:#1b1a17;background:0 0;border:1px solid #1b1a17;padding:4px 10px;font-size:16px}.note-modal .pager button:disabled{opacity:.3}.note-modal .page-num{font-size:13px}.modal{box-sizing:border-box;place-items:safe center center;padding:8px 0;overflow-y:auto}.keypad .clock-set{box-sizing:border-box;letter-spacing:1px;background:var(--accent);color:#14120c;border:1px solid #f0d890;width:100%;margin-top:12px;padding:12px;font-size:17px;display:block;box-shadow:0 0 12px #d8b25a73}.keypad .clock-set:active{filter:brightness(.9)}@media (max-height:520px) and (orientation:landscape){.keypad.clock-mode{width:min(480px,94vw);padding:14px 18px 12px}.keypad.clock-mode h3{margin-bottom:6px;font-size:16px}.keypad.clock-mode .entry{grid-template-columns:150px 1fr;align-items:center;column-gap:16px;display:grid}.keypad.clock-mode .clock-face{grid-area:1/1/span 3;width:140px;height:140px;margin:0}.keypad.clock-mode .clock-hand.hour{height:36px}.keypad.clock-mode .clock-hand.minute{height:54px}.keypad.clock-mode .clock-now{grid-area:4/1;margin:4px 0 0;font-size:18px}.keypad.clock-mode .clock-hours{grid-area:1/2}.keypad.clock-mode .clock-mins{grid-area:2/2}.keypad.clock-mode .clock-set{grid-area:3/2;margin-top:4px}.keypad.clock-mode .row{margin-top:8px}.keypad.dial-mode:not(.clock-mode) .dial{width:130px;height:130px}.keypad.dial-mode:not(.clock-mode) .dial-tick{transform-origin:50% 61px;height:61px}}.notebook{box-sizing:border-box;width:min(640px,96vw);max-height:calc(100vh - 16px);padding:18px 20px 14px;overflow-y:auto}.notebook .grid-help{color:#4a4436;margin:0 0 8px;font-size:13px}.notebook .grid-wrap{overflow-x:auto}.notebook .grid{border-collapse:collapse;margin:0 auto}.notebook .grid th,.notebook .grid td{text-align:center;border:1px solid #8a7e62;padding:0}.notebook .grid th{background:#ddd1b0;padding:4px 6px;font-size:13px}.notebook .grid th.row{text-align:left;white-space:nowrap}.notebook .grid th.unfound{color:#9a8f74}.notebook .grid .mark{color:#1b1a17;background:0 0;border:0;width:42px;height:38px;font-size:20px}.notebook .grid .mark.m1{color:#9a1c1c}.notebook .grid .mark.m2{color:#1f6a34;background:#1f6a341f}.notebook .grid-clues{margin:10px 0 0;padding-left:20px;font-size:14px;line-height:1.45}.notebook .grid-clues .none{color:#6a604a;margin-left:-20px;list-style:none}.notebook .close-grid{color:#e9e0c6;background:#1b1a17;border:none;padding:6px 16px;font-size:14px}.end-credits{color:var(--dim);margin:14px 0;padding:0;font-size:14px;line-height:1.7;list-style:none}.captions{box-sizing:border-box;z-index:30;color:#f2ecd8;text-align:center;pointer-events:none;background:#000000c7;border-bottom:2px solid #40c86e8c;width:-moz-fit-content;width:fit-content;max-width:min(720px,100vw - 32px);margin:0 auto;padding:8px 16px;font-family:Special Elite,Courier New,monospace;font-size:17px;line-height:1.45;position:fixed;top:68px;left:0;right:0}.captions.hidden{display:none}.captions .speaker{color:#5fd88a}.captions.sound{color:#c9c1a8;border-bottom-color:#c9c1a859;font-style:italic}@media (max-width:600px){.captions{padding:6px 12px;font-size:15px;top:80px}}
