:root{--bone:#d9d0bb;--bone-dim:#9b9384;--ash:#5f5a51;--ink:#050505;--blood:#8b1a12;--blood-bright:#c4271b;--sick:#8fae86;--panel:#080808db;--line:#d9d0bb29;--serif:"Cormorant Garamond", "Times New Roman", serif;--type:"Special Elite", "Courier New", monospace;--mono:"IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{background:var(--ink);width:100%;height:100%;color:var(--bone);font-family:var(--serif);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.game-canvas{inset:0;position:fixed!important}.layer{pointer-events:none;position:fixed;inset:0}.layer.interactive{pointer-events:auto}#blackout{opacity:0;pointer-events:none;z-index:5;background:#000;position:fixed;inset:0}.menu{background:radial-gradient(at 50% 120%,#10141a 0%,#050608 55%,#020203 100%);position:fixed;inset:0;overflow:hidden}.menu-art,.menu canvas.rain{width:100%;height:100%;position:absolute;inset:0}.fog{filter:blur(18px);background:radial-gradient(#78879629 0%,#0000 60%);width:200%;height:40%;animation:40s linear infinite drift;position:absolute;bottom:-5%;left:-50%}.fog.f2{opacity:.6;animation-duration:65s;animation-direction:reverse;bottom:10%}@keyframes drift{0%{transform:translate(-12%)}to{transform:translate(12%)}}.menu-content{max-width:560px;position:absolute;top:50%;left:max(6vw,32px);transform:translateY(-50%)}.title{font-family:var(--serif);letter-spacing:.06em;color:var(--bone);text-shadow:0 0 30px #000000e6;margin:0;font-size:clamp(54px,8vw,112px);font-weight:600;line-height:.9;animation:7s infinite titleFlicker}.title span{letter-spacing:.5em;color:var(--bone-dim);margin-bottom:.25em;font-size:.38em;font-weight:400;display:block}@keyframes titleFlicker{0%,91%,93%,to{opacity:1}92%{opacity:.4}92.5%{opacity:.9}}.tagline{font-family:var(--type);color:var(--bone-dim);letter-spacing:.08em;margin:22px 0 46px;font-size:15px}.menu-buttons{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.menu-btn{font-family:var(--serif);letter-spacing:.32em;color:var(--bone-dim);padding:6px 0;font-size:22px;transition:color .25s,letter-spacing .4s;position:relative}.menu-btn:before{content:"";background:var(--blood-bright);transform-origin:0;width:14px;height:1px;transition:transform .3s;position:absolute;top:50%;left:-28px;transform:scaleX(0)}.menu-btn:hover:not(:disabled),.menu-btn:focus-visible{color:var(--bone);letter-spacing:.4em;outline:none}.menu-btn:hover:not(:disabled):before,.menu-btn:focus-visible:before{transform:scaleX(1)}.menu-btn:disabled{opacity:.3;cursor:default}.menu-foot{font-family:var(--mono);color:var(--ash);letter-spacing:.1em;text-align:right;font-size:11px;position:absolute;bottom:22px;right:28px}.overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:auto;z-index:10;background:#000000b3;place-items:center;animation:.25s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.panel{background:var(--panel);border:1px solid var(--line);width:min(760px,100vw - 32px);max-height:calc(100vh - 48px);padding:34px 40px;overflow:auto;box-shadow:0 30px 80px #000c}.panel h2{font-family:var(--serif);letter-spacing:.22em;color:var(--bone);margin:0 0 22px;font-size:30px;font-weight:600}.panel h3{font-family:var(--mono);letter-spacing:.25em;text-transform:uppercase;color:var(--bone-dim);margin:22px 0 10px;font-size:11px;font-weight:500}.panel p,.panel li{color:var(--bone-dim);font-size:18px;line-height:1.5}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.btn{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;border:1px solid var(--line);color:var(--bone);background:#ffffff05;padding:11px 18px;font-size:12px;transition:background .2s,border-color .2s}.btn:hover:not(:disabled){background:#8b1a1240;border-color:#c4271b99}.btn:disabled{opacity:.35;cursor:default}.btn.primary{border-color:#c4271b8c}.btn.ghost{color:var(--bone-dim);border-color:#0000}.kbd{border:1px solid var(--line);min-width:24px;font-family:var(--mono);color:var(--bone);text-align:center;border-bottom-width:2px;margin-right:8px;padding:2px 7px;font-size:12px;display:inline-block}.controls-grid{font-family:var(--mono);color:var(--bone-dim);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px;font-size:13px;display:grid}.setting{font-family:var(--mono);color:var(--bone-dim);border-bottom:1px solid #ffffff0a;grid-template-columns:1fr 220px;align-items:center;gap:18px;padding:9px 0;font-size:13px;display:grid}.setting input[type=range]{width:100%;accent-color:var(--blood-bright)}.seg{border:1px solid var(--line);display:flex}.seg button{font-family:var(--mono);letter-spacing:.15em;color:var(--bone-dim);text-transform:uppercase;flex:1;padding:7px 0;font-size:11px}.seg button.on{color:var(--bone);background:#8b1a1259}.diff-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:10px;display:grid}.diff-card{text-align:left;border:1px solid var(--line);background:#ffffff04;padding:20px 18px;transition:border-color .2s,background .2s}.diff-card:hover,.diff-card:focus-visible{background:#8b1a121f;border-color:#c4271b99;outline:none}.diff-card strong{font-family:var(--serif);letter-spacing:.12em;color:var(--bone);margin-bottom:8px;font-size:24px;display:block}.diff-card span{color:var(--bone-dim);font-size:15px;line-height:1.4}.hud{pointer-events:none;z-index:4;font-family:var(--mono);position:fixed;inset:0}.crosshair{background:#d9d0bb8c;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;transition:transform .15s,background .15s;position:absolute;top:50%;left:50%}.crosshair.active{background:#d9d0bbe6;transform:scale(2.4);box-shadow:0 0 0 1px #0009}.prompt{font-family:var(--mono);letter-spacing:.14em;color:var(--bone);text-shadow:0 1px 3px #000;white-space:nowrap;font-size:13px;animation:.15s fadeIn;position:absolute;top:calc(50% + 34px);left:50%;transform:translate(-50%)}.prompt .kbd{background:#0006}.objective{max-width:420px;position:absolute;top:24px;left:28px}.objective .label{letter-spacing:.32em;color:var(--ash);text-transform:uppercase;font-size:10px}.objective .text{font-family:var(--serif);color:var(--bone);text-shadow:0 1px 4px #000;margin-top:4px;font-size:21px}.objective .missing{color:var(--bone-dim);letter-spacing:.08em;margin-top:6px;font-size:11px}.night{text-align:right;position:absolute;top:24px;right:28px}.night .n{font-family:var(--serif);letter-spacing:.3em;color:var(--bone);font-size:26px}.night .clock{letter-spacing:.2em;color:var(--bone-dim);margin-top:2px;font-size:12px}.night .room{letter-spacing:.25em;color:var(--ash);text-transform:uppercase;margin-top:6px;font-size:10px}.meters{flex-direction:column;gap:10px;width:190px;display:flex;position:absolute;bottom:26px;left:28px}.meter .lbl{letter-spacing:.25em;color:var(--bone-dim);justify-content:space-between;margin-bottom:4px;font-size:10px;display:flex}.meter .bar{background:#ffffff14;height:3px}.meter .bar i{background:var(--bone);height:100%;transition:width .2s;display:block}.meter.low .bar i{background:var(--blood-bright)}.held{letter-spacing:.15em;color:var(--bone-dim);align-items:center;gap:12px;font-size:11px;display:flex;position:absolute;bottom:26px;right:28px}.held svg{width:38px;height:38px}.toasts{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:18%;left:50%;transform:translate(-50%)}.toast{font-family:var(--serif);color:var(--bone);text-shadow:0 1px 4px #000;text-align:center;max-width:720px;font-size:19px;animation:3.8s forwards toastIn}.toast.warn{color:#e6c9a8}.toast.item{color:#e8e0c8;font-style:italic}.toast.clue{color:#c9dcc2}@keyframes toastIn{0%{opacity:0;transform:translateY(6px)}8%,80%{opacity:1;transform:none}to{opacity:0}}.danger-vignette{background:radial-gradient(#0000 55%,#5a00008c 100%);transition:opacity .5s;position:absolute;inset:0}.hide-mask{background:radial-gradient(60% 40%,#0000 40%,#000000d9 100%);position:absolute;inset:0}.hide-mask.bed{background:linear-gradient(#000000f2 0%,#000000bf 30%,#0000 48%),radial-gradient(70% 50% at 50% 70%,#0000 40%,#000c 100%)}.hint{letter-spacing:.12em;color:var(--bone);text-shadow:0 1px 4px #000;border:1px solid var(--line);background:#00000059;padding:8px 16px;font-size:13px;animation:.6s fadeIn;position:absolute;top:22%;left:50%;transform:translate(-50%)}.fps{color:var(--ash);font-size:10px;position:absolute;bottom:6px;right:8px}.inv{width:min(900px,100vw - 32px)}.tabs{border-bottom:1px solid var(--line);gap:24px;margin-bottom:22px;display:flex}.tabs button{font-family:var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--ash);border-bottom:1px solid #0000;margin-bottom:-1px;padding:0 0 12px;font-size:12px}.tabs button.on{color:var(--bone);border-bottom-color:var(--blood-bright)}.inv-body{grid-template-columns:minmax(0,1fr) 300px;gap:28px;display:grid}.slots{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));align-content:start;gap:10px;display:grid}.slot{aspect-ratio:1;border:1px solid var(--line);background:#ffffff04;place-items:center;transition:border-color .15s,background .15s;display:grid;position:relative}.slot svg{width:58%;height:58%}.slot.sel{border-color:var(--blood-bright);background:#8b1a1224}.slot.held:after{content:"HELD";font-family:var(--mono);letter-spacing:.15em;color:var(--blood-bright);font-size:8px;position:absolute;top:5px;left:6px}.slot .count{font-family:var(--mono);color:var(--bone);font-size:11px;position:absolute;bottom:4px;right:6px}.slot.empty{opacity:.25}.detail h4{font-family:var(--serif);letter-spacing:.08em;color:var(--bone);margin:0 0 10px;font-size:26px;font-weight:600}.detail p{margin:0 0 18px;font-size:17px}.detail .big{border:1px solid var(--line);place-items:center;width:120px;height:120px;margin-bottom:18px;display:grid}.detail .big svg{width:70%;height:70%}.journal li{border-bottom:1px solid #ffffff0a;padding:6px 0;font-size:17px;list-style:none}.journal ul{margin:0;padding:0}.journal .done{color:var(--ash);text-decoration:line-through}.journal .cur{color:var(--bone)}.check{font-family:var(--mono);color:var(--blood-bright);margin-right:8px;font-size:12px}.check.ok{color:var(--sick)}.paper{color:#2a2117;width:min(560px,100vw - 32px);font-family:var(--type);white-space:pre-wrap;background:linear-gradient(#d2c6a4 0%,#c3b48e 100%);padding:44px 46px 36px;font-size:16px;line-height:1.65;position:relative;transform:rotate(-.6deg);box-shadow:0 30px 80px #000c,inset 0 0 80px #50321459}.paper h2{font-family:var(--type);letter-spacing:.15em;text-transform:uppercase;color:#4a3a28;margin:0 0 18px;font-size:15px}.paper .close-hint{letter-spacing:.2em;color:#6a5a44;text-align:right;margin-top:26px;font-size:11px}.photo{aspect-ratio:4/3;perspective:1200px;cursor:pointer;width:min(420px,100vw - 32px)}.photo-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .8s;position:relative}.photo.flipped .photo-inner{transform:rotateY(180deg)}.photo-face{backface-visibility:hidden;border:10px solid #d8d0bc;position:absolute;inset:0;box-shadow:0 30px 80px #000c}.photo-face.back{color:#2a2117;font-family:var(--type);white-space:pre-wrap;background:#d4cbb3;border-color:#d4cbb3;padding:26px;font-size:18px;transform:rotateY(180deg)}.clock-ui{grid-template-columns:260px 1fr;align-items:center;gap:34px;display:grid}.clock-ui svg{width:260px;height:260px}.clock-ui .ctrl{font-family:var(--mono);letter-spacing:.2em;color:var(--bone-dim);grid-template-columns:auto auto auto;align-items:center;gap:10px 14px;font-size:12px;display:grid}.clock-ui .time{font-family:var(--serif);color:var(--bone);letter-spacing:.1em;grid-column:1/-1;margin-bottom:6px;font-size:40px}.keypad{width:300px;margin:0 auto}.keypad .display{font-family:var(--mono);letter-spacing:.5em;text-align:center;color:#7dff9a;border:1px solid var(--line);background:#050806;margin-bottom:14px;padding:16px 0 16px .5em;font-size:34px}.keypad .display.err{color:#ff4a3a;animation:.3s shake}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.keypad .keys{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.keypad .keys button{font-family:var(--mono);border:1px solid var(--line);background:#ffffff05;padding:14px 0;font-size:20px}.keypad .keys button:hover{background:#ffffff12}.cctv{width:min(880px,100vw - 32px)}.cctv .feeds{grid-template-columns:1fr 1fr;gap:10px;display:grid}.cctv canvas{width:100%;image-rendering:pixelated;background:#030503;border:1px solid #7dff9a33}.cine{z-index:20;pointer-events:auto;background:#000;place-items:center;display:grid;position:fixed;inset:0}.cine-line{font-family:var(--type);letter-spacing:.06em;color:var(--bone);text-align:center;max-width:760px;padding:0 24px;font-size:clamp(18px,2.2vw,26px);animation:3.6s forwards lineIn}@keyframes lineIn{0%{opacity:0;filter:blur(4px)}20%,75%{opacity:1;filter:none}to{opacity:0}}.skip{font-family:var(--mono);letter-spacing:.2em;color:var(--ash);font-size:11px;position:absolute;bottom:22px;right:26px}.end{z-index:20;pointer-events:auto;background:radial-gradient(#120404 0%,#000 70%);place-items:center;animation:1.2s fadeIn;display:grid;position:fixed;inset:0}.end .inner{text-align:center;width:min(640px,100vw - 32px)}.end h1{font-family:var(--serif);letter-spacing:.14em;color:var(--bone);margin:0 0 8px;font-size:clamp(44px,7vw,88px);font-weight:600}.end .sub{font-family:var(--type);color:var(--bone-dim);margin-bottom:30px;font-size:17px}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 30px;display:grid}.stats div{font-family:var(--mono);letter-spacing:.2em;color:var(--ash);text-transform:uppercase;padding:14px 6px;font-size:10px}.stats b{font-family:var(--serif);color:var(--bone);letter-spacing:.05em;margin-bottom:4px;font-size:30px;font-weight:600;display:block}.silhouette{width:120px;margin:0 auto 18px;animation:6s ease-in-out infinite loom}@keyframes loom{50%{transform:scale(1.04)translateY(-3px)}}.victory{z-index:20;pointer-events:auto;background:#000;position:fixed;inset:0;overflow:hidden}.victory svg{width:100%;height:100%;position:absolute;inset:0}.victory .text{text-align:center;position:absolute;bottom:12%;left:0;right:0}.click-start{z-index:9;pointer-events:auto;cursor:pointer;background:#0000008c;place-items:center;display:grid;position:fixed;inset:0}.click-start .box{text-align:center}.click-start .go{font-family:var(--serif);letter-spacing:.3em;color:var(--bone);margin-top:26px;font-size:30px;animation:2.4s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.loading{font-family:var(--mono);letter-spacing:.3em;color:var(--ash);z-index:3;place-items:center;font-size:12px;display:grid;position:fixed;inset:0}@media (width<=720px){.diff-grid,.inv-body,.clock-ui,.controls-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
