:root{--blood: #7a1f1f;--bone: #cfc7b8;--fog: #8fa3a8;--ink: #0a0d10;--accent: #9fb8a8;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--hand: "Snell Roundhand", "Savoye LET", "Brush Script MT", cursive}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#000}#game{position:fixed;inset:0;width:100%;height:100%;display:block;cursor:none}#ui{position:fixed;inset:0;pointer-events:none;font-family:var(--serif);color:var(--bone);user-select:none;-webkit-user-select:none}#ui.hud-hidden #objective,#ui.hud-hidden #ekg-wrap,#ui.hud-hidden #inventory,#ui.hud-hidden #stamina,#ui.hud-hidden #crosshair,#ui.hud-hidden #prompt{opacity:0!important}.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;pointer-events:auto;background:radial-gradient(ellipse at 50% 40%,#04080a73,#010203e0 75%);opacity:1;transition:opacity .8s ease;cursor:default}.screen.hidden{opacity:0;pointer-events:none}.screen h1{font-size:clamp(38px,7vw,84px);font-weight:400;letter-spacing:.28em;text-indent:.28em;text-transform:uppercase;color:var(--bone);text-shadow:0 0 24px rgba(120,160,150,.25),0 2px 8px #000;animation:titleBreath 6s ease-in-out infinite}@keyframes titleBreath{0%,to{opacity:.85;text-shadow:0 0 18px rgba(120,160,150,.15),0 2px 8px #000}50%{opacity:1;text-shadow:0 0 34px rgba(140,190,170,.35),0 2px 8px #000}}.screen .subtitle{font-size:15px;letter-spacing:.5em;text-indent:.5em;text-transform:uppercase;color:#a0aaa0b3}.screen .deathtitle{color:#b05050;text-shadow:0 0 30px rgba(150,30,30,.5)}.screen .wintitle{color:#c9d6c2}.btn{margin-top:10px;padding:13px 46px;font-family:var(--serif);font-size:17px;letter-spacing:.22em;text-indent:.22em;text-transform:uppercase;color:var(--bone);background:#141c1e8c;border:1px solid rgba(170,180,170,.35);cursor:pointer;transition:all .25s ease}.btn:hover{background:#32403ca6;border-color:#c8d7c8cc;box-shadow:0 0 22px #78aa9640;text-shadow:0 0 8px rgba(220,240,220,.6)}.btn.danger{border-color:#a0464680}.btn.danger:hover{background:#46191999;box-shadow:0 0 22px #aa3c3c4d}.controls-hint{margin-top:26px;display:grid;grid-template-columns:auto auto;gap:7px 18px;font-size:13.5px;letter-spacing:.08em;color:#aab4afbf}.controls-hint b{font-weight:400;color:var(--bone);border:1px solid rgba(170,180,170,.3);padding:1px 9px;text-align:center;background:#0006}.options-row{display:flex;gap:26px;margin-top:16px;align-items:center;font-size:13px;letter-spacing:.12em;color:#aab4afcc}.options-row select,.options-row input[type=range]{font-family:var(--serif);background:#0f1618cc;color:var(--bone);border:1px solid rgba(170,180,170,.3);padding:4px 8px;accent-color:#6e8a7c}.screen .stats{font-size:14px;letter-spacing:.15em;color:#aab9afcc;line-height:2;text-align:center}#intro-lines{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(18px,2.6vw,30px);letter-spacing:.18em;color:#c8cdc3eb;text-shadow:0 2px 12px #000;opacity:0;transition:opacity 1.1s ease}#intro-lines.visible{opacity:1}#crosshair{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#d2d7cd8c;box-shadow:0 0 4px #000c;transition:transform .15s ease,background .15s ease}#crosshair.active{background:#e1ebd7f2;transform:scale(1.7);box-shadow:0 0 10px #bedcc899}#prompt{position:absolute;left:50%;top:56%;transform:translate(-50%);font-size:16px;letter-spacing:.14em;color:var(--bone);text-shadow:0 1px 6px #000,0 0 14px rgba(0,0,0,.9);opacity:0;transition:opacity .18s ease}#prompt.visible{opacity:1}#prompt b{font-weight:400;border:1px solid rgba(190,200,190,.5);padding:0 8px;margin-right:9px;background:#00000073}#objective{position:absolute;top:26px;left:30px;max-width:380px;font-size:14.5px;font-style:italic;letter-spacing:.1em;color:#c3cdbed9;text-shadow:0 1px 5px #000;border-left:2px solid rgba(140,160,145,.4);padding-left:14px;transition:opacity .5s ease}#objective .obj-label{display:block;font-size:10.5px;font-style:normal;letter-spacing:.34em;text-transform:uppercase;color:#96a59b99;margin-bottom:4px}#toast{position:absolute;bottom:17%;left:50%;transform:translate(-50%);font-size:15.5px;font-style:italic;letter-spacing:.12em;color:#d2d7c8f2;text-shadow:0 1px 6px #000,0 0 16px #000;opacity:0;transition:opacity .4s ease;text-align:center;max-width:60vw}#toast.visible{opacity:1}#inventory{position:absolute;bottom:24px;right:28px;display:flex;gap:10px}.inv-slot{width:54px;height:54px;border:1px solid rgba(160,170,160,.35);background:#080c0d8c;display:flex;align-items:center;justify-content:center;position:relative;animation:slotIn .35s ease}@keyframes slotIn{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.inv-slot svg{width:34px;height:34px;opacity:.92;filter:drop-shadow(0 0 6px rgba(180,200,180,.25))}.inv-slot .qty{position:absolute;bottom:2px;right:5px;font-size:12px;color:var(--bone)}.inv-slot .slot-name{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:7px;white-space:nowrap;font-size:11px;letter-spacing:.12em;color:#c8d2c3e6;opacity:0;transition:opacity .2s}.inv-slot:hover .slot-name{opacity:1}#stamina{position:absolute;bottom:96px;right:30px;width:180px;height:3px;background:#ffffff14;opacity:0;transition:opacity .4s}#stamina.visible{opacity:1}#stamina .fill{height:100%;background:linear-gradient(90deg,#8caa9680,#bed7bee6);width:100%}#ekg-wrap{position:absolute;bottom:24px;left:28px;display:flex;align-items:center;gap:12px;opacity:.95}#ekg{display:block}#bpm{font-size:13px;letter-spacing:.18em;color:#bec8b9b3}#bpm.danger{color:#c46a6a;text-shadow:0 0 12px rgba(190,60,60,.6)}#note-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#020304b8;opacity:0;pointer-events:none;transition:opacity .3s ease}#note-overlay.visible{opacity:1;pointer-events:auto}.note-paper{width:min(520px,86vw);max-height:76vh;overflow-y:auto;padding:46px 52px;background:radial-gradient(ellipse at 18% 8%,rgba(106,86,50,.25),transparent 55%),radial-gradient(ellipse at 85% 92%,rgba(80,60,35,.3),transparent 50%),linear-gradient(174deg,#b3a584,#a89a78 48%,#968867);color:#2b2317;box-shadow:0 18px 70px #000000d9,inset 0 0 60px #3c2d1459;transform:rotate(-.8deg)}.note-paper h3{font-family:var(--serif);font-size:15px;letter-spacing:.26em;text-transform:uppercase;border-bottom:1px solid rgba(50,38,20,.4);padding-bottom:10px;margin-bottom:18px;color:#3a2f1d}.note-paper .body{font-family:var(--hand);font-size:23px;line-height:1.65;white-space:pre-line}.note-close{margin-top:26px;text-align:center;font-family:var(--serif);font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:#3c301ca6}#keypad-overlay,#symbols-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#020304b3;opacity:0;pointer-events:none;transition:opacity .25s ease}#keypad-overlay.visible,#symbols-overlay.visible{opacity:1;pointer-events:auto}.keypad{background:linear-gradient(165deg,#2a2d2e,#181b1c);border:1px solid #3c4140;padding:26px 30px;box-shadow:0 16px 60px #000000e6,inset 0 1px #ffffff0f}.keypad .kp-screen{font-family:Courier New,monospace;font-size:30px;letter-spacing:.5em;text-align:center;color:#8fc9a0;text-shadow:0 0 12px rgba(110,220,150,.7);background:#0a120c;border:1px solid #2c3a2e;padding:10px 6px 8px 14px;margin-bottom:20px;min-height:54px}.keypad .kp-screen.error{color:#d06a5a;text-shadow:0 0 12px rgba(220,90,60,.7)}.kp-grid{display:grid;grid-template-columns:repeat(3,64px);gap:9px}.kp-btn{height:52px;font-family:var(--serif);font-size:21px;color:#b8bdb6;background:linear-gradient(180deg,#33383a,#212526);border:1px solid #44494a;cursor:pointer;transition:all .12s}.kp-btn:hover{background:#3d4446;color:#e4e9e0}.kp-btn:active{transform:translateY(1px);background:#1c2021}.symbols-box{background:linear-gradient(170deg,#2c2419,#191410);border:2px solid #4a3c28;padding:34px 40px;text-align:center;box-shadow:0 16px 60px #000000e6}.symbols-box h3{font-size:14px;letter-spacing:.3em;text-transform:uppercase;color:#9a8a6a;margin-bottom:24px}.dials{display:flex;gap:22px;justify-content:center}.dial{width:92px;height:92px;border-radius:50%;border:2px solid #5a4a30;background:radial-gradient(circle at 35% 30%,#3a3022,#1c1710);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 4px 14px #000c,0 2px 8px #0009;transition:border-color .3s,box-shadow .3s}.dial:hover{border-color:#8a7448}.dial.solved{border-color:#6e8a5c;box-shadow:0 0 18px #78aa6459,inset 0 4px 14px #000c}.dial svg{width:52px;height:52px}.symbols-hint{margin-top:22px;font-size:12px;font-style:italic;letter-spacing:.14em;color:#8a7a5e}.overlay-close{margin-top:20px;background:none;border:none;font-family:var(--serif);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:#aab4aa99;cursor:pointer}.overlay-close:hover{color:var(--bone)}#journal{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#020304c7}#journal.visible{display:flex}.journal-box{width:min(640px,90vw);max-height:78vh;background:linear-gradient(170deg,#1c1f1e,#101312);border:1px solid rgba(150,160,150,.25);padding:30px 36px;overflow-y:auto;pointer-events:auto}.journal-box h2{font-size:16px;letter-spacing:.32em;text-transform:uppercase;color:var(--bone);margin-bottom:18px;font-weight:400;border-bottom:1px solid rgba(150,160,150,.2);padding-bottom:10px}.journal-entry{margin-bottom:14px}.journal-entry .je-title{font-size:14px;letter-spacing:.16em;color:#a8b8a8;cursor:pointer}.journal-entry .je-title:hover{color:#d6e2d2}.journal-entry .je-body{display:none;font-family:var(--hand);font-size:19px;line-height:1.5;color:#c8c3afd9;padding:8px 0 4px 16px;white-space:pre-line}.journal-entry.open .je-body{display:block}.journal-empty{font-style:italic;font-size:14px;color:#a0aaa080}#damage-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 52%,rgba(90,8,8,.55) 100%);opacity:0;transition:opacity .3s}#loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#030405;z-index:50;transition:opacity 1s ease}#loader.hidden{opacity:0;pointer-events:none}#loader .l-title{font-size:13px;letter-spacing:.5em;text-transform:uppercase;color:#96a59b99}#loader .l-bar{width:220px;height:1px;background:#ffffff1a}#loader .l-bar .l-fill{height:100%;width:0%;background:#aac3b4b3;transition:width .2s}
