:root{--bg:#0b0a18;--panel:#100d22c7;--panel2:#1e183cd9;--line:#a08cff38;--text:#efeaff;--dim:#a89fc8;--accent:#ff8a2a;--accent2:#b06cff;--good:#50ff90;--bad:#ff4a6a;--surv:#7cf0ff;--killer:#ff4a4a;color:var(--text);font-family:Fredoka,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);-webkit-user-select:none;user-select:none;height:100%;margin:0;overflow:hidden}button{cursor:pointer;font-family:inherit}input{font-family:inherit}.game-canvas{display:block;position:fixed;inset:0}.ui{pointer-events:none;position:fixed;inset:0}.ui>*{pointer-events:auto}.vignette{pointer-events:none;background:radial-gradient(#0000 55%,#05030fbf 100%);position:fixed;inset:0}.menu{background:linear-gradient(90deg,#080614eb 0%,#08061499 40%,#0000 70%);grid-template-columns:minmax(380px,520px) 1fr;gap:24px;padding:32px 40px;display:grid;position:absolute;inset:0;overflow-y:auto}.logo{letter-spacing:3px;background:linear-gradient(#ffd56a 0%,#ff8a2a 45%,#c0301a 100%);color:#0000;filter:drop-shadow(0 4px #2a0a3a)drop-shadow(0 0 24px #ff782859);-webkit-background-clip:text;background-clip:text;font-family:Creepster,Fredoka,cursive;font-size:84px;line-height:.9;animation:6s infinite flicker}@keyframes flicker{0%,92%,to{opacity:1}93%{opacity:.6}94%{opacity:1}96%{opacity:.75}}.tagline{color:var(--dim);margin:6px 0 22px 4px;font-size:15px}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;padding:18px;box-shadow:0 20px 60px #00000073}.label{text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);margin:2px 0 6px;font-size:12px}.text-input{border:1px solid var(--line);width:100%;color:var(--text);background:#00000059;border-radius:12px;outline:none;padding:12px 14px;font-size:18px}.text-input:focus{border-color:var(--accent2);box-shadow:0 0 0 3px #b06cff40}.role-toggle{grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 10px;display:grid}.role-btn{border:2px solid var(--line);color:var(--dim);background:#00000040;border-radius:12px;padding:12px;font-size:17px;font-weight:600;transition:all .15s}.role-btn.on.survivor{border-color:var(--surv);color:var(--surv);background:#7cf0ff14;box-shadow:0 0 20px #7cf0ff26}.role-btn.on.killer{border-color:var(--killer);color:var(--killer);background:#ff4a4a14;box-shadow:0 0 20px #ff4a4a26}.chars{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.chars.k3{grid-template-columns:repeat(3,1fr)}.char-card{text-align:center;color:var(--text);background:#ffffff0a;border:2px solid #0000;border-radius:12px;padding:8px 4px;transition:transform .12s,border-color .12s}.char-card:hover{transform:translateY(-2px)}.char-card.on{border-color:var(--c);background:color-mix(in srgb, var(--c) 14%, transparent)}.avatar{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 70%, white), var(--c) 60%, color-mix(in srgb, var(--c) 50%, black));border-radius:50%;place-items:center;width:52px;height:52px;margin:0 auto 4px;font-size:26px;display:grid;box-shadow:0 4px #00000059}.char-name{font-size:15px;font-weight:600}.char-title{color:var(--dim);font-size:11px}.char-detail{background:#0000004d;border-radius:12px;margin-top:10px;padding:10px 12px;font-size:14px;line-height:1.35}.char-detail b{color:var(--accent)}.ab-list{gap:4px;display:grid}.key{color:#fff;background:#2a2350;border:1px solid #4a3f88;border-bottom-width:3px;border-radius:6px;place-items:center;min-width:22px;height:22px;margin-right:6px;padding:0 6px;font-size:12px;font-weight:600;display:inline-grid}.play{letter-spacing:2px;color:#2a0d00;background:linear-gradient(#ffc35a,#ff8a2a 55%,#e0601a);border:none;border-radius:14px;width:100%;margin-top:14px;padding:16px;font-size:26px;font-weight:700;transition:transform 80ms,box-shadow 80ms;box-shadow:0 6px #8a3208,0 0 30px #ff8a2a59}.play:hover{filter:brightness(1.05);transform:translateY(-1px)}.play:active{transform:translateY(4px);box-shadow:0 2px #8a3208}.play:disabled{filter:grayscale(.6)brightness(.7)}.row{gap:8px;margin-top:10px;display:flex}.btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:12px;padding:10px 14px;font-size:15px;font-weight:500}.btn:hover{border-color:var(--accent2)}.btn.primary{background:linear-gradient(#8b5cf6,#6d3ad6);border-color:#0000}.btn.danger{background:#ff4a6a26;border-color:#ff4a6a66}.code-input{text-transform:uppercase;text-align:center;letter-spacing:3px;width:110px;padding:10px;font-size:16px}.err{color:var(--bad);margin-top:10px;font-size:14px}.menu-right{place-self:end;max-width:420px}.howto{color:var(--dim);font-size:14px;line-height:1.5}.howto h3{color:var(--text);margin:0 0 6px;font-size:16px}.controls{grid-template-columns:auto 1fr;align-items:center;gap:5px 8px;margin-top:8px;font-size:13px;display:grid}.credits{color:#6f6890;margin-top:10px;font-size:11px}.lobby{background:radial-gradient(#08061480,#080614eb);place-items:center;display:grid;position:absolute;inset:0}.lobby-card{grid-template-columns:1.1fr 1fr;gap:16px;width:min(880px,94vw);display:grid}.room-code{letter-spacing:8px;color:var(--accent);font-size:40px;font-weight:700}.countdown{margin:8px 0;font-size:22px}.countdown b{color:var(--accent);font-size:34px}.slot{background:#ffffff0a;border-radius:12px;align-items:center;gap:10px;margin-bottom:6px;padding:8px 10px;display:flex}.slot .mini{width:30px;height:30px;margin:0;font-size:15px}.slot .who{flex:1;font-weight:500}.tag{text-transform:uppercase;letter-spacing:1px;border-radius:99px;padding:2px 8px;font-size:11px;font-weight:600}.tag.survivor{color:var(--surv);background:#7cf0ff1a}.tag.killer{color:var(--killer);background:#ff4a4a1a}.tag.host{color:#ffd56a;background:#ffd56a1f}.slot.empty{color:#6f6890;font-style:italic}.chat{background:#00000040;border-radius:10px;height:120px;margin-top:10px;padding:8px;font-size:13px;overflow-y:auto}.chat b{color:var(--accent2)}.hud{pointer-events:none;position:absolute;inset:0}.hud *{pointer-events:none}.crosshair{background:#fffc;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 2px #0006}.objective{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;align-items:center;gap:14px;padding:8px 18px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.gears{gap:5px;display:flex}.gear{opacity:.45;border:3px dotted #ffb040;border-radius:50%;width:22px;height:22px}.gear.done{opacity:1;border-style:solid;border-color:var(--good);background:radial-gradient(circle, var(--good) 30%, transparent 35%);box-shadow:0 0 10px var(--good)}.timer{font-variant-numeric:tabular-nums;font-size:22px;font-weight:600}.timer.low{color:var(--bad)}.obj-text{color:var(--dim);font-size:15px}.obj-text.powered{color:var(--good);font-weight:600;animation:1s infinite pulse}@keyframes pulse{50%{opacity:.55}}.team{gap:8px;display:grid;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.mate{background:var(--panel);border:1px solid var(--line);border-radius:99px;align-items:center;gap:8px;min-width:170px;padding:6px 12px 6px 6px;display:flex}.mate.me{border-color:#7cf0ff80}.mate .mini{width:34px;height:34px;margin:0;font-size:16px}.mate .nm{font-size:14px;font-weight:500}.mate .st{color:var(--dim);font-size:11px}.mate .hpbar{background:#ffffff1f;border-radius:2px;width:110px;height:4px;margin-top:3px;overflow:hidden}.mate .hpbar i{background:var(--good);height:100%;display:block}.mate.downed{border-color:#ffcf40}.mate.chaired{border-color:#ff40d0;animation:.8s infinite pulse}.mate.dead{opacity:.45;filter:grayscale()}.mate.escaped{border-color:var(--good)}.feed{justify-items:end;gap:6px;display:grid;position:absolute;top:16px;right:16px}.feed div{background:var(--panel);border-left:3px solid var(--dim);border-radius:10px;padding:6px 12px;font-size:14px;animation:.25s ease-out slidein}.feed .good{border-color:var(--good)}.feed .bad{border-color:var(--bad)}@keyframes slidein{0%{opacity:0;transform:translate(30px)}}.bottom-left{width:300px;position:absolute;bottom:20px;left:20px}.bar{border:1px solid var(--line);background:#00000080;border-radius:8px;height:14px;margin-top:6px;overflow:hidden}.bar i{height:100%;transition:width .1s;display:block}.bar.hp i{background:linear-gradient(90deg,#ff4a6a,#ff8a6a)}.bar.st i{background:linear-gradient(90deg,#ffd040,#fff080)}.bar.st.tired i{background:#886a20}.bar-label{color:var(--dim);justify-content:space-between;margin-top:6px;font-size:12px;display:flex}.abilities{gap:10px;display:flex;position:absolute;bottom:20px;right:20px}.ab{background:var(--panel);border:2px solid var(--line);text-align:center;border-radius:16px;place-items:center;width:74px;height:74px;padding:4px;font-size:11px;line-height:1.1;display:grid;position:relative;overflow:hidden}.ab.ready{border-color:var(--accent);box-shadow:0 0 14px #ff8a2a4d}.ab .k{color:var(--accent);font-size:11px;font-weight:700;position:absolute;top:3px;left:4px}.ab .cdfill{background:#0009;position:absolute;bottom:0;left:0;right:0}.ab .cdtext{place-items:center;font-size:22px;font-weight:700;display:grid;position:absolute;inset:0}.ab .name{z-index:1;font-weight:600;position:relative}.prompt{text-align:center;position:absolute;bottom:22%;left:50%;transform:translate(-50%)}.prompt .p1{background:#0000008c;border-radius:12px;padding:7px 16px;font-size:19px;font-weight:600;display:inline-block}.prompt .p2{color:#fff3c0;background:#00000073;border-radius:10px;margin-top:6px;padding:5px 12px;font-size:15px;display:inline-block}.progress{text-align:center;width:340px;position:absolute;bottom:30%;left:50%;transform:translate(-50%)}.progress .bar{height:16px}.progress .bar i{background:linear-gradient(90deg,#ffb040,#ffe080)}.progress.cursed .bar i{background:linear-gradient(90deg,#9040ff,#d080ff)}.progress .lbl{text-shadow:0 2px 4px #000;font-size:15px;font-weight:600}.big-status{text-align:center;width:460px;position:absolute;top:30%;left:50%;transform:translate(-50%)}.big-status h2{text-shadow:0 3px 8px #000;margin:0 0 6px;font-size:30px}.big-status .bar{height:18px}.big-status .sub{color:var(--dim);text-shadow:0 2px 4px #000;font-size:15px}.banner{text-align:center;white-space:nowrap;animation:4s ease-out forwards banner;position:absolute;top:18%;left:50%;transform:translate(-50%)}.banner h1{letter-spacing:2px;text-shadow:0 4px #0009,0 0 30px;margin:0;font-family:Creepster,Fredoka;font-size:64px;font-weight:400}.banner p{color:#fff;text-shadow:0 2px 6px #000;margin:4px 0 0;font-size:18px}@keyframes banner{0%{opacity:0;transform:translate(-50%)scale(1.4)}10%{opacity:1;transform:translate(-50%)scale(1)}80%{opacity:1}to{opacity:0}}.overlay-red{background:radial-gradient(#0000 40%,#a000148c 100%);position:absolute;inset:0}.overlay-blind{background:#fff;position:absolute;inset:0}.overlay-invis{background:radial-gradient(#0000 50%,#8b6cf059 100%);position:absolute;inset:0}.overlay-haste{background:radial-gradient(#0000 60%,#ffaa2838 100%);position:absolute;inset:0}.ping{color:#6f6890;font-size:11px;position:absolute;bottom:4px;right:10px}.killer-card{color:var(--dim);font-size:13px;position:absolute;top:70px;left:50%;transform:translate(-50%)}.skill{text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.skill .hint{text-shadow:0 2px 4px #000;margin-top:4px;font-size:13px;font-weight:600}.modal-bg{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#05030f99;place-items:center;display:grid;position:absolute;inset:0}.modal{width:min(520px,92vw)}.modal h2{margin:0 0 4px}.setting{grid-template-columns:140px 1fr 50px;align-items:center;gap:10px;margin:10px 0;font-size:14px;display:grid}.setting input[type=range]{width:100%;accent-color:var(--accent2)}.end{width:min(720px,94vw)}.end h1{text-align:center;margin:0;font-family:Creepster,Fredoka;font-size:64px;font-weight:400}.results{border-collapse:collapse;width:100%;margin:10px 0}.results td,.results th{text-align:left;padding:7px 8px;font-size:15px}.results th{color:var(--dim);text-transform:uppercase;letter-spacing:1px;font-size:11px}.results tr{border-bottom:1px solid var(--line)}.outcome-Escaped,.outcome-Survived,.outcome-Victory{color:var(--good);font-weight:600}.outcome-Sacrificed,.outcome-Defeat{color:var(--bad);font-weight:600}.click-hint{background:#0000008c;border-radius:12px;padding:10px 18px;font-size:18px;animation:1.4s infinite pulse;position:absolute;top:58%;left:50%;transform:translate(-50%)}.chatbox{width:340px;font-size:14px;position:absolute;bottom:120px;left:16px}.chatbox .line{text-shadow:0 1px 3px #000;margin-top:2px}.chatbox .line b{color:var(--accent2)}.chatbox input{border:1px solid var(--line);color:#fff;pointer-events:auto;background:#0009;border-radius:8px;outline:none;width:100%;margin-top:4px;padding:6px 10px}@media (max-height:800px){.menu{padding:18px 28px}.logo{font-size:62px}.tagline{margin-bottom:12px}.avatar{width:40px;height:40px;font-size:20px}.char-card{padding:6px 4px}.play{padding:12px;font-size:22px}.panel{padding:14px}}@media (max-width:900px){.menu{grid-template-columns:1fr}.menu-right{display:none}.lobby-card{grid-template-columns:1fr}}
