*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}html,body{overscroll-behavior:none;touch-action:none}body{color:#d8eeff;-webkit-text-size-adjust:100%;background:#020510;width:100%;height:100%;font-family:JetBrains Mono,Fira Code,Noto Sans SC,Microsoft YaHei,monospace,system-ui,sans-serif;position:fixed;inset:0}*{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.statement-list,.text,.menu-panel,.turn-log-panel,.log-list{scrollbar-width:none;-ms-overflow-style:none}.statement-list::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.text::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.menu-panel::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.turn-log-panel::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.log-list::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}body:after{content:"";z-index:9999;pointer-events:none;opacity:.5;background:repeating-linear-gradient(0deg,#00ffff05 0 1px,#0000 1px 3px);position:fixed;inset:0}:root{--neon-cyan:#0cf;--neon-cyan-dim:#00c8e659;--neon-red:#f66;--neon-yellow:#fe0;--neon-green:#0f8;--sleep-gray:#448;--text-white:#d8eeff;--text-dim:#00c8dc73;--holo-bg:linear-gradient(180deg,#040816eb,#02040ef5);--holo-bg-strong:linear-gradient(180deg,#060c1cf2,#030612fa);--holo-border:1px solid var(--neon-cyan-dim);--holo-glow:0 0 12px #00c8ff40,0 0 4px #00c8ff26;--holo-glow-strong:0 0 20px #00e6ff66,0 0 8px #00c8ff40}.boot{z-index:200;background:radial-gradient(140% 90% at 50% 40%,#040a1a,#010308 70%);justify-content:center;align-items:center;width:100vw;height:100dvh;min-height:100svh;display:flex;position:fixed;inset:0;overflow:hidden}.boot-inner{text-align:center;flex-direction:column;align-items:center;gap:.9rem;max-width:min(26rem,100vw - 2rem);display:flex}.boot-label{color:#0cf;letter-spacing:.14em;text-transform:uppercase;text-shadow:0 0 12px #00c8ff80;font-size:.88rem;font-weight:800}.boot-sub{color:var(--text-dim);letter-spacing:.08em;font-size:.75rem}.boot-bar{background:#00c8e61f;width:min(15rem,52vw);height:2px;position:relative;overflow:hidden}.boot-fill{background:linear-gradient(90deg,#00dcff80,#0cf);height:100%;transition:width .3s ease-out;position:absolute;top:0;left:0;box-shadow:0 0 14px #00dcffb3}.title-screen{touch-action:none;place-items:center;width:100vw;height:100dvh;min-height:100svh;padding:0 8vw;display:grid;position:relative;overflow:hidden}.title-bg{filter:brightness(.78)saturate(1.1);background-color:#0000;background-image:radial-gradient(circle at 24% 22%,#0096dc2e,#0000 28rem),radial-gradient(circle at 76% 28%,#781eb41f,#0000 30rem),linear-gradient(160deg,#02060f,#080e1e 52%,#030a14);background-position:50%;background-repeat:no-repeat;background-size:cover;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;position:absolute;inset:0}.title-bg.has-title-image:after{content:"";background:linear-gradient(90deg,#000000b8,#00000047 48%,#0000009e),linear-gradient(#0003,#000000ad);position:absolute;inset:0}.title-inner{z-index:2;text-align:center;justify-items:center;gap:.75rem;max-width:42rem;display:grid;position:relative}.title-inner .eyebrow{color:#0cf;letter-spacing:.22em;text-transform:uppercase;text-shadow:0 0 16px #00c8ff66;margin:0;font-size:.78rem;font-weight:800}.title-inner h1{text-shadow:0 0 40px #00c8ff73,0 0 12px #00b4f04d;color:#e8f6ff;margin:0;font-size:clamp(2.6rem,6vw,5.2rem);line-height:1}.title-inner .subtitle{color:#7ec8e8;letter-spacing:.08em;margin:0;font-size:.95rem}.title-inner .premise{color:#a0d0ec;text-shadow:0 2px 8px #0009;max-width:34rem;margin:.35rem 0 1.1rem;font-size:.98rem;line-height:1.8}.title-actions{flex-wrap:wrap;justify-content:center;gap:.8rem;display:flex}.title-actions button{border:1px solid var(--neon-cyan-dim);color:#d0f0ff;cursor:pointer;background:#001428b8;border-radius:.25rem;align-items:center;gap:.5rem;height:3.05rem;padding:0 1.4rem;font-family:inherit;font-size:.95rem;font-weight:800;transition:border-color .16s,box-shadow .16s,transform .12s;display:flex}.title-actions button:hover{border-color:var(--neon-cyan);box-shadow:var(--holo-glow-strong);transform:translateY(-1px)}.title-actions .primary{color:#02101f;background:linear-gradient(#008cc8d9,#003c6ee6);border-color:#00dcffe6;box-shadow:0 0 22px #00c8ff73}.title-hint{color:#a0d0ec;letter-spacing:.06em;text-shadow:0 2px 10px #0009;margin:1.2rem 0 0;font-size:.86rem;font-weight:600;animation:1.8s ease-in-out infinite hint-blink}@keyframes hint-blink{0%,to{opacity:.3}50%{opacity:1}}.game-shell,.fog-shell{touch-action:none;background:#020510;width:100vw;height:100dvh;min-height:100svh;position:relative;overflow:hidden}.bg{filter:brightness(.78)saturate(1.1)contrast(1.1);background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.bg-tint{filter:none}.shade{pointer-events:none;background:radial-gradient(circle at 50% 30%,#0000 0 35%,#00000073),linear-gradient(#00000005,#0000000a 52%,#000000b8);position:absolute;inset:0}.round-status{z-index:30;border-bottom:2px solid var(--neon-cyan-dim);letter-spacing:.04em;color:#9ad8f0;background:linear-gradient(#020816f5,#020610eb);justify-content:space-between;align-items:center;padding:.42rem .9rem;font-size:.78rem;display:flex;position:absolute;top:0;left:0;right:0;box-shadow:0 0 16px #00c8ff26}.round-left,.round-right{align-items:center;gap:.55rem;display:flex}.round-right{gap:1rem}.live-dot{background:#0cf;border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 8px #0cf}.live-day .live-dot{animation:2s ease-in-out infinite pulse-cyan}.live-vote .live-dot{background:#fe0;animation:.33s step-end infinite flash-yellow;box-shadow:0 0 8px #fe0}.live-night .live-dot{background:#f66;animation:2s step-end infinite flash-red;box-shadow:0 0 8px #f66}.live-text{color:#0cf;font-weight:900}.live-vote .live-text{color:#fe0}.live-night .live-text{color:#f66}.round-num{color:#e8f6ff;font-weight:800}.round-phase{color:#a0d0ec}.round-sep{opacity:.45}.round-right b{color:#0cf;font-weight:800}.round-right .warn-red{color:#f66}@keyframes pulse-cyan{0%,to{opacity:.45}50%{opacity:1}}@keyframes flash-yellow{0%,49%{opacity:1}50%,to{opacity:.2}}@keyframes flash-red{0%,70%{opacity:1}71%,to{opacity:.25}}.fog-toolbar{z-index:28;box-shadow:none;background:linear-gradient(#020816b8,#02061073);border:none;border-bottom:1px solid #00c8e61f;align-items:center;gap:.4rem;padding:.35rem .75rem;display:flex;position:absolute;top:2rem;left:0;right:0}.tool{color:#b0e0f8;cursor:pointer;background:#00c8ff0f;border:1px solid #00c8e62e;border-radius:.2rem;place-items:center;width:2.15rem;height:2.15rem;transition:border-color .16s,box-shadow .16s;display:grid}.tool:hover{border-color:var(--neon-cyan);box-shadow:var(--holo-glow)}.tool:disabled{opacity:.4;cursor:not-allowed}.tool-sep{background:#00c8e633;width:1px;height:1.2rem;margin:0 .1rem}.tool.ai.on{color:#0f8;background:#00c87826;border-color:#00ff8c73}.tool.ai.thinking{color:#fe0;background:#c8a00026;border-color:#ffdc3c66}.tool.ai.fallback{color:#f66;background:#c8283c26;border-color:#ff506e66}.toolbar-arc{color:var(--text-dim);letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;max-width:40vw;margin-left:auto;font-size:.72rem;overflow:hidden}.survivor-panel{z-index:22;pointer-events:auto;flex-direction:column;gap:.28rem;width:7.4rem;display:flex;position:absolute;top:5.2rem;bottom:auto;left:.55rem}.panel-title{color:var(--text-dim);letter-spacing:.16em;border-left:2px solid var(--neon-cyan-dim);padding:.2rem .35rem;font-size:.68rem;font-weight:800}.panel-title.btnish{border:none;border-left:2px solid var(--neon-cyan-dim);color:var(--text-dim);cursor:pointer;text-align:left;background:0 0;font-family:inherit}.survivor-slot{color:#0cf;cursor:pointer;background:#040816d1;border:1px solid #00c8e61f;border-radius:0;align-items:center;gap:.25rem;min-height:2.35rem;padding:.3rem .4rem;font-family:inherit;font-size:.72rem;font-weight:700;transition:border-color .15s,box-shadow .15s,opacity .2s;display:flex}.survivor-slot:hover:not(:disabled){border-color:#00dcff8c;box-shadow:0 0 8px #00c8ff33}.survivor-slot:disabled{cursor:default}.survivor-slot.is-active{color:#fff;border-color:#0cf;box-shadow:0 0 10px #00c8ff59}.survivor-slot.is-suspect{color:#fe0;border-color:#ffdc3c59}.survivor-slot.is-exiled{color:#448;opacity:.35;text-decoration:line-through}.survivor-slot.is-dead{color:#f66;opacity:.45;position:relative}.survivor-slot.is-dead:after{content:"";pointer-events:none;background:repeating-linear-gradient(0deg,#ff3c501f 0 1px,#0000 1px 3px);position:absolute;inset:0}.survivor-slot.is-player{opacity:.9;border-style:dashed}.surv-name{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.surv-warn{color:#fe0;animation:.8s step-end infinite flash-yellow}.surv-status{opacity:.85;font-size:.58rem}.surv-vote{color:#fe0;font-size:.58rem}.hud-right{z-index:22;pointer-events:auto;flex-direction:column;gap:.55rem;width:13.5rem;display:flex;position:absolute;top:5.2rem;right:.55rem}.meter-dashboard{background:var(--holo-bg);box-shadow:var(--holo-glow);border:1px solid #00c8e638;flex-direction:column;gap:.28rem;padding:.45rem .5rem;display:flex}.meter-row{color:#9ad4ec;grid-template-columns:3.2rem 1fr 2.1rem;align-items:center;gap:.3rem;font-size:.68rem;font-weight:700;display:grid}.meter-label{letter-spacing:.04em}.meter-track{background:#00c8e614;border:1px solid #00c8e61f;height:.42rem;position:relative;overflow:hidden}.meter-fill{background:#0cf;height:100%;transition:width .35s;box-shadow:0 0 8px #00c8ff80}.meter-suspect .meter-fill{background:#fe0;box-shadow:0 0 8px #ffdc3c73}.meter-neg .meter-fill{background:#f66;box-shadow:0 0 8px #ff506473}.meter-insight-mid .meter-fill{box-shadow:0 0 10px #00dcffb3}.meter-insight-hot .meter-fill{animation:1.4s ease-in-out infinite pulse-cyan;box-shadow:0 0 14px #00fffff2}.meter-val{text-align:right;color:#d8eeff;position:relative}.meter-val em{font-size:.62rem;font-style:normal;animation:1s ease-out forwards float-delta;position:absolute;top:-.9rem;right:0}.meter-val em.up{color:#0f8}.meter-val em.down{color:#f66}@keyframes float-delta{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.statement-panel{background:var(--holo-bg);border:1px solid #00c8e62e;flex-direction:column;max-height:38vh;display:flex}.statement-panel.is-collapsed{max-height:5.5rem}.statement-list{flex-direction:column;gap:.28rem;padding:.25rem .35rem .45rem;display:flex;overflow:auto}.statement-empty{color:var(--text-dim);padding:.3rem;font-size:.68rem}.statement-item{color:#b8d8ec;background:#00142859;border-left:2px solid #00c8ff40;padding:.25rem .35rem;font-size:.68rem;line-height:1.45}.statement-item.is-accuse{border-left-color:#fe0}.statement-item.is-contra{border-left-color:#f66}.st-head{color:#0cf;justify-content:space-between;margin-bottom:.1rem;font-weight:800;display:flex}.st-ico{font-size:.7rem}.st-body{color:#c5dff0}.stage{pointer-events:none;z-index:5;justify-content:center;align-items:flex-end;padding-bottom:28vh;display:flex;position:absolute;inset:0}.sprite{object-fit:contain;object-position:center bottom;filter:drop-shadow(0 0 28px #00c8ff33)drop-shadow(0 24px 40px #000000a6);opacity:0;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;max-width:40vw;max-height:64vh;transition:opacity .22s}.sprite.is-loaded{opacity:1}.sprite.is-loading{opacity:.35}.sprite-fallback{color:#0cf;filter:drop-shadow(0 0 28px #00c8ff33);border:1px solid #00c8ff40;place-items:center;width:min(28vw,220px);height:min(58vh,520px);font-size:2rem;font-weight:900;display:grid}.sprite-empty{width:1px;height:1px}.dock{z-index:20;pointer-events:none;flex-direction:column;align-items:center;gap:.55rem;padding:0 0 .7rem;display:flex;position:absolute;bottom:0;left:0;right:0}.dock>*{pointer-events:auto}.lie-bar{text-align:center;color:#b8f0ff;background:#00c8e626;border:1px solid #00c8e640;width:min(70vw,36rem);min-height:2rem;padding:.4rem .8rem;font-size:.82rem;font-weight:700;animation:.25s lie-in}.lie-bar.level-2{color:#ffe9a0;background:#ffc83c26;border-color:#ffc83c8c}.lie-bar.level-3{color:#ffd0d6;background:#ff3c502e;border-color:#ff5064b3;animation:.25s lie-in,1s ease-in-out infinite pulse-red-border}@keyframes lie-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pulse-red-border{0%,to{box-shadow:0 0 #ff3c5000}50%{box-shadow:0 0 16px #ff3c5073}}.vote-interface{background:var(--holo-bg-strong);width:min(86vw,52rem);box-shadow:var(--holo-glow-strong);border:1px solid #00c8e64d;padding:.7rem .8rem .85rem}.vote-title{color:#fe0;letter-spacing:.08em;text-align:center;margin-bottom:.55rem;font-size:.82rem;font-weight:800}.vote-cards{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.vote-card{color:#d8eeff;cursor:pointer;background:#020814e0;border:1px solid #00c8e62e;flex-direction:column;align-items:center;gap:.3rem;width:6.6rem;min-height:6.2rem;padding:.5rem .35rem;font-family:inherit;transition:border-color .15s,box-shadow .15s,transform .12s;display:flex}.vote-card:hover{border-color:#0cf;transform:translateY(-1px);box-shadow:0 0 8px #00c8ff59}.vote-card.is-selected{border:2px solid #0cf;box-shadow:0 0 16px #00c8ff8c}.vote-card.is-suspect .vote-flag{color:#fe0}.vote-avatar{color:#0cf;background:#00283c66;border:1px solid #00c8e64d;place-items:center;width:2.4rem;height:2.4rem;font-size:1rem;font-weight:900;display:grid}.vote-name{text-align:center;font-size:.72rem;font-weight:700;line-height:1.3}.vote-flag{font-size:.62rem}.vote-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.65rem;display:flex}.vote-confirm,.vote-abstain{cursor:pointer;border-radius:.2rem;height:2.4rem;padding:0 1rem;font-family:inherit;font-weight:800}.vote-confirm{color:#e8f8ff;background:#0078a059;border:1px solid #0cf}.vote-confirm:disabled{opacity:.4;cursor:not-allowed}.vote-abstain{color:#9ad;background:0 0;border:1px solid #00c8e640}.choice-float{flex-direction:column;gap:.38rem;width:min(74vw,44rem);display:flex}.choice-btn{color:#d8eeff;cursor:pointer;text-align:left;background:#020814e6;border:1px solid #00c8e659;border-radius:.2rem;align-items:center;gap:.65rem;min-height:2.55rem;padding:.45rem .65rem;font-family:inherit;font-size:.9rem;font-weight:700;transition:border-color .15s,box-shadow .15s,transform .12s;display:flex}.choice-btn:hover{border-color:#0cf;transform:translateY(-1px);box-shadow:0 0 20px #00e6ff66}.choice-idx{color:#0cf;background:#00283c59;border:1px solid #00c8e659;place-items:center;min-width:1.8rem;height:1.5rem;padding:0 .25rem;font-size:.72rem;font-weight:900;display:inline-grid}.choice-label{flex:1}.dialogue{cursor:pointer;background:linear-gradient(#040816f0,#02040ef7);border:2px solid #00c8e673;border-radius:.25rem;width:min(74vw,46rem);padding:.7rem .9rem .65rem;box-shadow:0 0 18px #00c8ff2e,inset 0 1px #00c8ff14}.dialogue-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.35rem;display:flex}.speaker{color:#0cf;text-shadow:0 0 10px #00c8ff73;letter-spacing:.04em;font-size:.95rem;font-weight:900}.scene-tag{color:var(--text-dim);letter-spacing:.08em;font-size:.7rem}.text{color:#d8eeff;white-space:pre-wrap;min-height:4.6rem;max-height:8.5rem;font-size:.95rem;font-weight:500;line-height:1.75;overflow:auto}.cursor{color:#0cf;font-weight:900;animation:1s step-end infinite hint-blink}.input-row{gap:.45rem;margin-top:.55rem;display:flex}.input-row input{color:#d8eeff;background:#000c1cbf;border:1px solid #00c8e640;border-radius:.2rem;outline:none;flex:1;height:2.3rem;padding:0 .7rem;font-family:inherit;font-size:.88rem}.input-row input:focus{border-color:#0cf;box-shadow:0 0 10px #00c8ff40}.input-row .send{color:#d8eeff;cursor:pointer;background:#00507859;border:1px solid #00c8e673;border-radius:.2rem;height:2.3rem;padding:0 .9rem;font-family:inherit;font-weight:800}.input-row .send:disabled{opacity:.4;cursor:not-allowed}.menu-panel,.turn-log-panel{z-index:40;background:var(--holo-bg-strong);width:min(22rem,88vw);max-height:70vh;box-shadow:var(--holo-glow-strong);border:1px solid #00c8e659;padding:.7rem .8rem;position:absolute;top:5.1rem;right:.7rem;overflow:auto}.menu-head{color:#0cf;justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.menu-premise{color:#9ad;font-size:.82rem;line-height:1.55}.menu-actions{flex-direction:column;gap:.35rem;margin:.6rem 0;display:flex}.menu-actions button{color:#d8eeff;cursor:pointer;background:#001e3280;border:1px solid #00c8e64d;height:2.2rem;font-family:inherit;font-weight:700}.menu-meters,.menu-flags{color:var(--text-dim);margin-top:.4rem;font-size:.75rem;line-height:1.5}.log-list{flex-direction:column;gap:.45rem;display:flex}.log-item{background:#00142859;border-left:2px solid #00c8e64d;padding:.3rem .45rem}.log-turn{color:#0cf;font-size:.72rem;font-weight:800}.log-input{color:#fe0;margin:.15rem 0;font-size:.72rem}.log-resp{color:#b8d8ec;font-size:.75rem;line-height:1.45}.phase-overlay{z-index:80;pointer-events:none;background:#000000b8;place-items:center;animation:.35s overlay-in;display:grid;position:fixed;inset:0}.phase-overlay.type-night{background:linear-gradient(#000000b3,#140000d1)}.phase-overlay.type-day{background:linear-gradient(#001428bf,#000000a6)}.phase-overlay.type-exile,.phase-overlay.type-vote{background:radial-gradient(circle,#50000a8c,#000000d1)}.phase-overlay-text{color:#0cf;letter-spacing:.18em;text-shadow:0 0 24px #00c8ff99;text-align:center;padding:0 1rem;font-size:clamp(1.4rem,4vw,2.4rem);font-weight:900}.phase-overlay.type-exile .phase-overlay-text,.phase-overlay.type-vote .phase-overlay-text{color:#f66;text-shadow:0 0 24px #ff3c508c}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.toast{z-index:50;color:#d8eeff;background:#020a18eb;border:1px solid #00c8e659;padding:.45rem .9rem;font-size:.82rem;font-weight:700;position:absolute;bottom:32vh;left:50%;transform:translate(-50%)}.busy-strip{z-index:45;color:#fe0;letter-spacing:.08em;background:#141000bf;border:1px solid #ffdc3c59;padding:.4rem .9rem;font-size:.8rem;font-weight:800;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)}@media (width<=900px){.survivor-panel{width:5.6rem}.hud-right{width:10.5rem}.dialogue,.choice-float{width:min(92vw,46rem)}.sprite{max-width:55vw;max-height:52vh}.surv-name{font-size:.62rem}}@media (width<=640px){.survivor-panel{top:auto;bottom:34vh;left:.3rem}.hud-right{width:9.2rem;top:4.8rem}.meter-label{font-size:.58rem}.round-status{padding:.35rem .5rem;font-size:.65rem}.fog-toolbar{top:1.75rem}.dialogue{width:min(96vw,46rem);padding:.55rem .65rem}.text{min-height:4rem;font-size:.88rem}}
