:root{--bg:#050506;--panel:#0c0b0eeb;--panel-2:#161418f2;--line:#c9b27a2e;--line-2:#c9b27a59;--text:#e8e2d6;--dim:#9a9284;--faint:#6b655b;--gold:#c9b27a;--gold-2:#e6cf93;--blood:#b3261e;--blood-2:#e0473b;--good:#7fbf7a;--warn:#e0b04a;--cold:#8fb3d9;--serif:Georgia, "Times New Roman", serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--mono:ui-monospace, "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:15px/1.4 var(--sans);-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}canvas#view{width:100vw;height:100vh;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:none}#ui .interactive,#ui .interactive *{pointer-events:auto}button,input,select{font:inherit;color:inherit}.hidden{display:none!important}.btn{appearance:none;border:1px solid var(--line-2);color:var(--text);cursor:pointer;letter-spacing:.02em;background:linear-gradient(#1d1a17,#120f0d);border-radius:6px;padding:9px 16px;transition:border-color .15s,background .15s,transform 50ms}.btn:hover{border-color:var(--gold)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{color:#fbe9e4;background:linear-gradient(#5b1712,#3a0d0a);border-color:#8c2a22}.btn.primary:hover{border-color:var(--blood-2)}.btn.small{padding:5px 10px;font-size:13px}.btn.ghost{background:0 0}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label{color:var(--dim);letter-spacing:.06em;text-transform:uppercase;font-size:12px}.field input,.field select{border:1px solid var(--line);background:#0c0b0d;border-radius:6px;outline:none;padding:9px 11px}.field input:focus{border-color:var(--gold)}.err{color:var(--blood-2);min-height:20px;font-size:13px}kbd{border:1px solid var(--line-2);min-width:20px;font:12px var(--mono);color:var(--gold-2);text-align:center;background:#00000073;border-bottom-width:2px;border-radius:4px;padding:1px 6px;display:inline-block}.title{background:radial-gradient(at 30%,#0000 30%,#000000bf 100%);grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:32px;padding:6vh 5vw;display:grid;position:absolute;inset:0}.title .logo-wrap{align-self:center}.title h1{font:400 clamp(40px, 5.6vw, 100px) / .9 var(--serif);letter-spacing:.14em;color:#d8cfbd;text-shadow:0 0 30px #000000e6,0 0 2px #ffdcaa4d;margin:0}.title .tag{color:var(--dim);font:italic 18px var(--serif);letter-spacing:.04em;margin-top:14px}.title .online{color:var(--dim);margin-top:26px;font-size:14px}.title .online b{color:var(--gold-2);font-weight:600}.title .event-line{color:var(--blood-2);margin-top:6px;font-size:14px}.title .side{flex-direction:column;align-self:center;gap:16px;max-height:88vh;display:flex}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px 20px;box-shadow:0 10px 40px #0009}.panel h2{font:400 20px var(--serif);color:var(--gold-2);letter-spacing:.04em;margin:0 0 14px}.tabs{gap:6px;margin-bottom:14px;display:flex}.tabs button{border:1px solid var(--line);cursor:pointer;color:var(--dim);background:0 0;border-radius:6px;flex:1;padding:7px}.tabs button.on{color:var(--text);border-color:var(--gold);background:#c9b27a14}.boards{grid-template-columns:1fr 1fr;gap:10px 16px;font-size:13px;display:grid}.boards h3{font:600 11px var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--faint);margin:0 0 4px}.boards ol{color:var(--dim);margin:0;padding-left:18px}.boards li span{color:var(--text)}.me-line{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.me-line .who{font:18px var(--serif)}.me-line .lvl{color:var(--dim);font-size:13px}.note{color:var(--faint);margin-top:10px;font-size:12px}.play-row{gap:8px;display:flex}.play-row .btn.primary{flex:1;padding:12px;font-size:17px}.loading{background:var(--bg);font:italic 18px var(--serif);color:var(--dim);place-items:center;display:grid;position:absolute;inset:0}.loading .bar{background:#1b1916;width:260px;height:2px;margin-top:16px;overflow:hidden}.loading .bar i{background:var(--gold);width:0;height:100%;transition:width .2s;display:block}.hud{position:absolute;inset:0}.crosshair{background:#ffffff8c;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;transition:opacity .3s;position:absolute;top:50%;left:50%}.prompt{color:var(--text);text-shadow:0 1px 3px #000;white-space:nowrap;opacity:0;font-size:14px;transition:opacity .15s;position:absolute;top:calc(50% + 34px);left:50%;transform:translate(-50%)}.prompt.on{opacity:1}.progress-ring{opacity:0;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute;top:50%;left:50%}.progress-ring.on{opacity:1}.meters{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:34px;left:50%;transform:translate(-50%)}.meter{opacity:0;background:#ffffff14;border-radius:2px;width:220px;height:4px;transition:opacity .4s;overflow:hidden}.meter.on{opacity:1}.meter i{background:#e6e1d2bf;height:100%;display:block}.meter.stamina.exhausted i{background:var(--blood-2)}.meter.battery i{background:var(--warn)}.meter-label{color:var(--dim);letter-spacing:.06em;text-transform:uppercase;opacity:0;font-size:11px;transition:opacity .4s}.meter-label.on{opacity:.9}.hotbar{opacity:0;gap:6px;transition:opacity .5s;display:flex;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.hotbar.on{opacity:1}.hotbar .slot{border:1px solid var(--line);width:54px;height:54px;color:var(--dim);text-align:center;background:#08080abf;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;padding:3px;font-size:11px;line-height:1.1;display:flex;position:relative}.hotbar .slot.sel{border-color:var(--gold);color:var(--text)}.hotbar .slot .n{font:600 11px var(--mono);color:var(--gold-2);position:absolute;bottom:2px;right:4px}.hotbar .slot .k{font:10px var(--mono);color:var(--faint);position:absolute;top:2px;left:4px}.hotbar .slot .ic{margin-bottom:2px;font-size:18px}.loot-pop{text-align:right;flex-direction:column;gap:4px;font-size:14px;display:flex;position:absolute;top:22px;right:24px}.loot-pop .line{opacity:0;text-shadow:0 1px 3px #000;transition:opacity .3s,transform .3s;transform:translateY(-4px)}.loot-pop .line.on{opacity:1;transform:none}.loot-pop .worth{color:var(--gold-2)}.pack{color:var(--dim);opacity:0;font-size:12px;transition:opacity .6s;position:absolute;top:22px;right:24px}.toasts{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:18px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line);text-align:center;background:#0a090bd9;border-radius:7px;max-width:70vw;padding:7px 14px;font-size:14px;animation:.25s ease-out toastIn}.toast.good{border-color:#7fbf7a73}.toast.warn{border-color:#e0b04a80}.toast.danger,.toast.event{color:#ffd8d2;border-color:#e0473b99}.toast.out{opacity:0;transition:opacity .6s}@keyframes toastIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.event-banner{text-align:center;opacity:0;text-shadow:0 2px 12px #000;transition:opacity .8s;position:absolute;top:14%;left:50%;transform:translate(-50%)}.event-banner.on{opacity:1}.event-banner .big{font:400 38px var(--serif);letter-spacing:.12em;color:#f0d6cf}.event-banner .small{color:var(--dim);margin-top:4px;font-size:15px}.event-timer{font:13px var(--mono);color:var(--blood-2);opacity:.85;position:absolute;bottom:24px;right:24px}.chat{flex-direction:column;gap:2px;width:min(420px,40vw);font-size:13.5px;display:flex;position:absolute;bottom:18px;left:18px}.chat .lines{flex-direction:column;justify-content:flex-end;gap:2px;max-height:34vh;display:flex;overflow:hidden}.chat .line{text-shadow:0 1px 2px #000,0 0 6px #000;word-wrap:break-word;transition:opacity 1s}.chat .line.faded{opacity:0}.chat.open .line.faded{opacity:.85}.chat .line .n{color:var(--gold-2);font-weight:600}.chat .line .n.staff{color:var(--cold)}.chat .line.sys{color:var(--dim);font-style:italic}.chat .line.announce{color:#ffd8b0}.chat input{border:1px solid var(--line-2);background:#050506d9;border-radius:6px;outline:none;margin-top:6px;padding:7px 10px}.compass{border-bottom:1px solid var(--line);opacity:0;width:260px;height:26px;font:12px var(--mono);color:var(--dim);transition:opacity .4s;position:absolute;top:22px;left:50%;overflow:hidden;transform:translate(-50%)}.compass.on{opacity:1}.compass .strip{white-space:nowrap;position:absolute;top:4px}.compass .needle{background:var(--gold);width:2px;height:8px;margin-left:-1px;position:absolute;bottom:0;left:50%}.compass .safe{color:#ffd28a;font-size:14px;position:absolute;top:2px;transform:translate(-50%)}.ping{text-align:center;text-shadow:0 1px 3px #000;white-space:nowrap;font-size:12px;transition:opacity .4s;position:absolute;transform:translate(-50%,-100%)}.ping .ic{font-size:20px;display:block}.ping.help .ic{color:var(--blood-2)}.ping.monster .ic{color:#ff7a5c}.ping.here .ic{color:var(--cold)}.ping.loot .ic{color:var(--gold-2)}.ping .d{color:var(--dim)}.target-marker{text-align:center;color:var(--gold-2);text-shadow:0 1px 4px #000;font-size:12px;animation:1.4s ease-in-out infinite pulse;position:absolute;transform:translate(-50%,-50%)}.target-marker .ic{font-size:20px}.target-marker.edge .ic{font-size:16px}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.radar-dot{background:var(--blood-2);width:10px;height:10px;box-shadow:0 0 10px var(--blood-2);border-radius:50%;margin:-5px;position:absolute}.voice-ind{color:var(--dim);flex-direction:column;gap:3px;font-size:12px;display:flex;position:absolute;top:18px;left:18px}.voice-ind .me{color:var(--good)}.voice-ind .me.loud{color:var(--warn)}.downed{text-align:center;opacity:0;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:14vh;transition:opacity .5s;display:flex;position:absolute;inset:0}.downed.on{opacity:1}.downed .t{font:400 30px var(--serif);color:#f3d5cf;letter-spacing:.08em;text-shadow:0 2px 8px #000}.downed .s{color:var(--dim);text-shadow:0 1px 4px #000;margin-top:6px}.death{text-align:center;opacity:0;background:#000000d1;place-items:center;transition:opacity 1.2s;display:grid;position:absolute;inset:0}.death.on{opacity:1}.death h2{font:400 46px var(--serif);color:#e9c9c2;letter-spacing:.1em;margin:0}.death .by{color:var(--dim);font:italic 18px var(--serif);margin:10px 0 22px}.death .stats{color:var(--dim);margin-bottom:26px;font-size:14px;line-height:1.7}.death .stats b{color:var(--text);font-weight:600}.flash{opacity:0;background:#000;position:absolute;inset:0}.vignette{pointer-events:none;position:absolute;inset:0}.hide-slats{opacity:0;background:radial-gradient(60% 55%,#0000 35%,#000000d9 100%),repeating-linear-gradient(0deg,#040404f0 0 26px,#0000001f 26px 40px);transition:opacity .3s;position:absolute;inset:0}.hide-slats.on{opacity:1}.hide-slats.hedge{background:radial-gradient(30% 26%,#0000 40%,#040a04f5 75%)}.modal-back{background:#0009;place-items:center;display:grid;position:absolute;inset:0}.modal{background:var(--panel-2);border:1px solid var(--line-2);border-radius:12px;flex-direction:column;width:min(880px,94vw);max-height:88vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #000c}.modal.narrow{width:min(460px,94vw)}.modal header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal header h2{font:400 21px var(--serif);color:var(--gold-2);margin:0}.modal header .coins{color:var(--gold-2);font:600 15px var(--mono)}.modal .body{padding:16px 18px;overflow-y:auto}.modal .foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.shop-tabs{flex-wrap:wrap;gap:6px;padding:10px 18px 0;display:flex}.shop-tabs button{border:1px solid var(--line);color:var(--dim);cursor:pointer;background:0 0;border-radius:6px;padding:6px 12px}.shop-tabs button.on{color:var(--text);border-color:var(--gold)}.grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;display:grid}.card{border:1px solid var(--line);background:#00000040;border-radius:9px;flex-direction:column;gap:6px;padding:12px;display:flex}.card.owned{border-color:#7fbf7a4d}.card.equipped{border-color:var(--gold)}.card .nm{font-weight:600}.card .ds{color:var(--dim);flex:1;font-size:13px}.card .row{justify-content:space-between;align-items:center;gap:6px;display:flex}.card .pr{font:600 13px var(--mono);color:var(--gold-2)}.card .lock{color:var(--faint);font-size:12px}.swatch{vertical-align:middle;border:1px solid #fff3;border-radius:4px;width:18px;height:18px;display:inline-block}.menu-list{flex-direction:column;gap:8px;display:flex}.menu-list .btn{text-align:left}.settings-row{border-bottom:1px solid #ffffff0a;justify-content:space-between;align-items:center;gap:16px;padding:8px 0;display:flex}.settings-row .lab{flex:1}.settings-row .lab small{color:var(--faint);font-size:12px;display:block}.settings-row input[type=range]{width:180px;accent-color:var(--gold)}.settings-row select{border:1px solid var(--line);background:#0c0b0d;border-radius:6px;padding:6px 8px}.controls-table{border-collapse:collapse;width:100%;font-size:14px}.controls-table td{border-bottom:1px solid #ffffff0a;padding:6px 4px}.controls-table td:first-child{width:42%}.player-row{border-bottom:1px solid #ffffff0d;align-items:center;gap:10px;padding:8px 0;display:flex}.player-row .nm{flex:1}.keypad{grid-template-columns:repeat(3,64px);justify-content:center;gap:8px;margin:12px 0;display:grid}.keypad button{height:54px;font:600 20px var(--mono)}.keypad-display{text-align:center;font:600 34px var(--mono);letter-spacing:.4em;color:#9fe39a;background:#050a05;border:1px solid #1d2a1b;border-radius:6px;padding:8px}.keypad-display.bad{color:var(--blood-2)}.map-wrap{background:#040302e6;place-items:center;display:grid;position:absolute;inset:0}.map-frame{border:2px solid #4a3420;line-height:0;position:relative;box-shadow:0 0 0 6px #1c140c,0 10px 40px #000c}.map-frame canvas{cursor:grab;display:block}.map-title{color:#3a2614;letter-spacing:.5px;pointer-events:none;white-space:nowrap;background:#e2cea0e6;border:1px solid #4a3420b3;padding:5px 18px;font:italic 600 20px/1.2 Georgia,Times New Roman,serif;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #28180a59}.map-tools{flex-direction:column;gap:6px;line-height:1;display:flex;position:absolute;top:14px;left:14px}.map-btn{color:#3a2614;cursor:pointer;background:#e2cea0d9;border:2px solid #4a3420;border-radius:50%;width:34px;height:34px;padding:0;font:700 18px Georgia,serif}.map-btn:hover{background:#f0deb4f2}.map-wrap .legend{color:#3a2614;background:#e2cea0b3;border:1px solid #4a342099;gap:14px;padding:6px 10px;font:13px/1.2 Georgia,serif;display:flex;position:absolute;bottom:14px;right:16px}.map-wrap .legend i{vertical-align:-1px;border:1px solid #4a3420;width:11px;height:11px;margin-right:5px;display:inline-block}.map-wrap .legend .k-safe{background:#ecc478}.map-wrap .legend .k-puzzle{background:#b0ce96}.map-wrap .legend .k-water{background:#8ca8aa}.map-wrap .legend .k-stale{background:repeating-linear-gradient(45deg,#342416 0 2px,#d8c8a0 2px 5px)}.map-wrap .legend .k-you{background:#b8241a;border-radius:50%}.map-wrap .close-hint{text-align:center;color:var(--dim);font-size:12px;position:absolute;bottom:8px;left:0;right:0}.tutorial-box{border:1px solid var(--line-2);text-align:center;background:#0a090bd9;border-radius:10px;max-width:520px;padding:12px 18px;font-size:15px;position:absolute;top:13%;left:50%;transform:translate(-50%)}.tutorial-box .step{font:11px var(--sans);color:var(--faint);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}.click-to-play{font:italic 20px var(--serif);color:var(--dim);cursor:pointer;background:#0000008c;place-items:center;display:grid;position:absolute;inset:0}.badge-pop{text-align:center;border:1px solid var(--gold);background:#0a090be6;border-radius:10px;padding:12px 22px;animation:.3s toastIn;position:absolute;bottom:22%;left:50%;transform:translate(-50%)}.badge-pop .k{font:11px var(--sans);text-transform:uppercase;letter-spacing:.12em;color:var(--gold)}.badge-pop .n{font:22px var(--serif);margin-top:2px}.badge-pop .d{color:var(--dim);font-size:13px}.fps{font:11px var(--mono);color:var(--faint);position:absolute;top:6px;right:8px}@media (max-width:900px){.title{grid-template-columns:1fr;overflow-y:auto}}
