:root{--bg:#120d1d;--bg-2:#1b1430;--card:#221a3a;--card-2:#2b2148;--line:#3a2f5c;--text:#f1ecff;--muted:#a99cc9;--accent:#9b6bff;--accent-2:#c9a2ff;--gold:#e8c26a;--danger:#ff6b8a;--radius:16px;--font:"Inter", system-ui, -apple-system, sans-serif;--display:"Cinzel", Georgia, serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:radial-gradient(1200px 800px at 50% -10%, #2a1d4d 0%, var(--bg) 60%) fixed, var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0}h1,h2{margin:0}h2{letter-spacing:.02em;align-items:center;gap:8px;margin-bottom:12px;font-size:1rem;font-weight:600;display:flex}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}input{font:inherit}.screen{max-width:560px;min-height:100%;padding:max(20px, env(safe-area-inset-top)) 16px max(24px, env(safe-area-inset-bottom));flex-direction:column;gap:16px;margin:0 auto;display:flex}.screen.center{justify-content:center;align-items:center}.stack{flex-direction:column;gap:14px;display:flex}.row{align-items:center;gap:12px;display:flex}.card{background:linear-gradient(180deg, var(--card) 0%, var(--bg-2) 100%);border:1px solid var(--line);border-radius:var(--radius);width:100%;padding:18px}.card.narrow{max-width:400px}.brand{text-align:center;margin-bottom:8px}.logo{font-family:var(--display);letter-spacing:.08em;background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:clamp(2.6rem,10vw,3.6rem);font-weight:800}.tagline{color:var(--muted);margin:6px 0 0}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.72rem}.muted{color:var(--muted)}.small{font-size:.85rem}.field{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.field input{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:12px;outline:none;padding:14px;font-size:1.05rem}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #9b6bff40}.code-input{font-family:var(--display);letter-spacing:.4em;text-align:center;text-transform:uppercase;font-size:1.8rem!important}.primary{background:linear-gradient(180deg, var(--accent), #7a47e6);border:none;border-radius:12px;padding:14px 18px;font-size:1.05rem;font-weight:700;box-shadow:0 6px 20px #7b47e659}.primary:not(:disabled):active{transform:translateY(1px)}.ghost{border:1px solid var(--line);background:0 0;border-radius:10px;padding:6px 10px}.ghost.small{font-size:.78rem}.danger{color:var(--danger)}.link{color:var(--accent-2);background:0 0;border:none;padding:8px}.link.small{align-self:flex-start;padding:0;font-size:.85rem}.link.danger{color:var(--danger);align-self:center}.problem{color:#ffc2cf;background:#ff6b8a1f;border:1px solid #ff6b8a66;border-radius:10px;margin:0;padding:10px 12px;font-size:.9rem}.tabs{background:var(--bg);border-radius:12px;grid-template-columns:1fr 1fr;margin-bottom:16px;padding:4px;display:grid}.tab{color:var(--muted);background:0 0;border:none;border-radius:9px;padding:10px;font-weight:600}.tab.active{background:var(--card-2);color:var(--text)}.choice{border:none;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.choice legend{color:var(--muted);margin-bottom:6px;font-size:.85rem}.option{border:1px solid var(--line);cursor:pointer;border-radius:12px;grid-template-columns:auto 1fr;column-gap:10px;padding:12px;display:grid}.option input{accent-color:var(--accent);grid-row:span 2}.option small{color:var(--muted)}.option.selected{border-color:var(--accent);background:#9b6bff14}.toggle{align-items:center;gap:10px;font-size:.95rem;display:flex}.toggle input{width:20px;height:20px;accent-color:var(--accent)}.room-header{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.room-code{font-family:var(--display);letter-spacing:.18em;color:var(--gold);font-size:2.4rem;line-height:1}.you{text-align:right}.you-name{font-size:1.2rem;font-weight:700}.count{background:var(--card-2);color:var(--accent-2);border-radius:999px;padding:2px 10px;font-size:.85rem}.player-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.player{background:#ffffff05;border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.player.away{opacity:.5}.avatar{background:var(--card-2);width:34px;height:34px;color:var(--accent-2);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.player-name{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;font-weight:500;display:flex}.player-actions{flex-shrink:0;gap:6px;display:flex}.tag{text-transform:uppercase;letter-spacing:.08em;background:var(--card-2);color:var(--muted);border-radius:6px;padding:2px 6px;font-size:.68rem}.tag.host{color:var(--gold)}.waiting p{margin:0 0 4px}.host-panel{flex-direction:column;gap:12px;display:flex}.stepper{justify-content:space-between;align-items:center;gap:12px;display:flex}.stepper-label{font-weight:500}.stepper-hint{color:var(--muted);font-size:.78rem}.stepper-controls{align-items:center;gap:8px;display:flex}.stepper-controls button{background:var(--card-2);border:1px solid var(--line);border-radius:10px;width:36px;height:36px;font-size:1.2rem;line-height:1}.stepper-controls output{text-align:center;font-variant-numeric:tabular-nums;min-width:64px;font-weight:600}.banner{z-index:10;background:var(--gold);color:#2a1d00;text-align:center;padding:6px;font-weight:600;position:fixed;top:0;left:0;right:0}.spinner{border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.tv{grid-template-columns:1fr;min-height:100%;display:grid}.tv.tv-with-host{grid-template-columns:1fr minmax(320px,400px)}.tv-stage{flex-direction:column;gap:4vh;min-width:0;padding:4vh 4vw;display:flex}.tv-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;display:flex}.tv-header .logo{font-size:clamp(3rem,7vw,6rem)}.tv-join{text-align:right}.tv-join .eyebrow{font-size:clamp(.8rem,1.4vw,1.2rem)}.tv-code{font-family:var(--display);letter-spacing:.15em;color:var(--gold);font-size:clamp(3rem,9vw,8rem);line-height:1}.tv-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);text-align:center;padding:2vh 1.5vw}.stat-value{font-family:var(--display);color:var(--accent-2);font-size:clamp(1.8rem,4vw,3.4rem)}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:clamp(.7rem,1vw,.95rem)}.tv-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.tv-player{background:var(--card-2);border:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;border-radius:12px;padding:14px 18px;font-size:clamp(1rem,1.8vw,1.6rem);font-weight:600;animation:.35s ease-out pop-in;overflow:hidden}.tv-player.away{opacity:.45}.tv-empty{color:var(--muted);text-align:center;font-size:clamp(1.2rem,2.4vw,2rem)}.tv-locked{color:var(--gold);text-align:center;text-transform:uppercase;letter-spacing:.2em}.tv-host{background:var(--bg-2);border-left:1px solid var(--line);flex-direction:column;gap:16px;max-height:100vh;padding:16px;display:flex;overflow-y:auto}@keyframes pop-in{0%{opacity:0;transform:scale(.9)translateY(6px)}to{opacity:1;transform:none}}@media (width<=800px){.tv.tv-with-host{grid-template-columns:1fr}.tv-host{border-left:none;border-top:1px solid var(--line);max-height:none}}@media (prefers-reduced-motion:reduce){.tv-player,.spinner{animation:none}}.phase-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.phase-title{font-family:var(--display);color:var(--accent-2);font-size:1.6rem;line-height:1.1}.timer{font-family:var(--display);color:var(--gold);font-variant-numeric:tabular-nums;font-size:2rem}.timer.urgent,.tv-timer.urgent{color:var(--danger);animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55}}.role-card{padding:0;overflow:hidden}.role-toggle{width:100%;color:var(--accent-2);background:0 0;border:none;justify-content:space-between;align-items:center;padding:14px 18px;font-weight:600;display:flex}.role-card.shown{border-color:var(--accent)}.role-details{padding:0 18px 16px}.role-name{margin:0 0 10px;font-size:1.1rem}.coven-members{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.coven-members li{background:#ffffff08;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.coven-members li>span:first-child{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ascended{border-color:var(--gold);background:linear-gradient(180deg, #3a2c12, var(--bg-2))}.ascended p{margin:6px 0 0}.phase-body h2{font-size:1.15rem}.phase-body p{margin:0 0 8px;line-height:1.45}.pick-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin:12px 0;display:grid}.pick{background:var(--card-2);border:1px solid var(--line);text-align:center;text-overflow:ellipsis;white-space:nowrap;border-radius:12px;padding:14px 10px;font-size:1rem;font-weight:600;overflow:hidden}.pick.selected{background:linear-gradient(180deg, var(--accent), #7a47e6);border-color:var(--accent-2)}.vote-status{margin-top:4px!important}.coven-board ul,.tally{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.coven-board li,.tally li{background:#ffffff08;border-radius:10px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.coven-board li.mine,.tally li.mine{outline:1px solid var(--accent)}.coven-size{font-family:var(--display);color:var(--gold);font-size:1.3rem}.cauldron-line{margin:10px 0 0}.tally-change{font-variant-numeric:tabular-nums}.gain{color:#7ee2a8;font-weight:700}.outcome{font-weight:600;margin-top:12px!important}.outcome.good{color:#7ee2a8}.reveal{text-align:center}.accused{font-family:var(--display);color:var(--gold);margin:4px 0 8px;font-size:2.2rem}.verdict{font-size:1.1rem}.verdict.guilty{color:var(--accent-2)}.verdict.innocent{color:#7ee2a8}.vote-counts{flex-direction:column;gap:4px;max-width:320px;margin:14px auto 0;padding:0;list-style:none;display:flex}.vote-counts li{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.chips{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.chips.center{justify-content:center}.chip{background:var(--card-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:4px 12px;font-size:.9rem}.chip.done{color:var(--text);border-color:var(--accent);background:#9b6bff2e}.chip.exposed{color:var(--text);border-color:var(--danger);background:#ff6b8a26}.vote-progress{flex-direction:column;gap:8px;display:flex}.progress-bar{background:var(--bg);border-radius:999px;height:8px;overflow:hidden}.progress-bar>div{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .3s}.results{flex-direction:column;gap:12px;display:flex}.results .verdict{text-align:center;font-size:1.25rem}.final-covens{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.final-coven.winner{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold), 0 8px 30px #e8c26a33}.final-coven.disbanded{opacity:.6}.host-game{border-color:var(--gold);flex-direction:column;gap:12px;display:flex}.host-actions{gap:8px;display:flex}.host-actions .primary{flex:1}.host-actions .ghost{padding:10px 14px}.tv-game-header{justify-content:space-between;align-items:center;gap:24px;display:flex}.tv-round{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;font-size:clamp(.9rem,1.4vw,1.3rem)}.tv-phase{font-family:var(--display);color:var(--accent-2);font-size:clamp(2.4rem,5.5vw,5rem);line-height:1.05}.tv-timer{font-family:var(--display);color:var(--gold);font-variant-numeric:tabular-nums;font-size:clamp(3rem,8vw,7.5rem)}.tv-body{flex:1;grid-template-columns:1fr minmax(240px,26%);gap:3vw;display:grid}.tv-body.full{grid-template-columns:1fr}.tv-main{flex-direction:column;justify-content:center;gap:2vh;min-width:0;display:flex}.tv-main .chip{padding:6px 16px;font-size:clamp(.9rem,1.3vw,1.3rem)}.tv-main .tally li,.tv-main .vote-counts li{font-size:clamp(1rem,1.8vw,1.8rem)}.tv-prompt{margin:0;font-size:clamp(1.3rem,2.4vw,2.4rem)}.tv-prompt.big{text-align:center;font-size:clamp(2rem,4vw,4rem)}.reveal.big .accused{font-size:clamp(3rem,8vw,7rem)}.reveal.big .verdict{font-size:clamp(1.4rem,2.8vw,2.6rem)}.reveal.big .chip{font-size:clamp(1rem,1.8vw,1.6rem)}.tv-covens{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);align-self:start;padding:2vh 1.5vw}.tv-covens ul{flex-direction:column;gap:1vh;margin:1vh 0 0;padding:0;list-style:none;display:flex}.tv-covens li{justify-content:space-between;font-size:clamp(1rem,1.7vw,1.7rem);display:flex}.tv-covens strong{font-family:var(--display);color:var(--gold)}.tv-cauldron{text-align:center;border-top:1px solid var(--line);margin-top:3vh;padding-top:2vh}.tv-footer{text-align:right;letter-spacing:.15em}@media (width<=800px){.tv-body{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.timer.urgent,.tv-timer.urgent{animation:none}}.results>.muted{text-align:center;margin:0}.tv-body.full .tv-main{justify-content:flex-start;padding-top:4vh}.tv-main .final-coven .chip{font-size:clamp(.95rem,1.4vw,1.4rem)}.phase-header{flex-direction:column;align-items:stretch;gap:2px}.phase-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.phase-main{justify-content:space-between;align-items:center;gap:12px;display:flex}.me-name{background:var(--card-2);border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:.9rem;font-weight:700}.role-hint{color:var(--muted);margin:0 0 10px;font-size:.9rem;line-height:1.4}.role-details .ascended{border:1px solid var(--gold);border-radius:12px;margin-bottom:12px;padding:10px 12px}.role-details .outcome{margin:0 0 10px!important}.center{text-align:center}.voters{color:var(--muted);font-size:.8rem}.live-votes{flex-direction:column;gap:8px;margin-top:14px;display:flex}.live-votes ul{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.live-row{justify-content:space-between;font-weight:600;display:flex}.live-count{font-family:var(--display);color:var(--gold)}.live-bar{background:var(--bg);border-radius:999px;height:6px;margin:4px 0;overflow:hidden}.live-bar>div{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .3s}.live-votes li.leading .live-bar>div{background:linear-gradient(90deg, var(--gold), #f3d999)}.live-votes.big .live-row{font-size:clamp(1.2rem,2.2vw,2.2rem)}.live-votes.big .voters{font-size:clamp(.9rem,1.3vw,1.3rem)}.live-votes.big .live-bar{height:12px}.live-votes.big>.muted{font-size:clamp(.9rem,1.3vw,1.2rem)}.confirm-vote{width:100%;margin-top:4px}.vote-locked{font-size:1.1rem;margin:6px 0 8px!important}.vote-locked strong{color:var(--gold)}.toggles{border-top:1px solid var(--line);flex-direction:column;gap:10px;padding-top:4px;display:flex}.toggles .eyebrow{margin-top:10px}.toggle-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.toggle-row.disabled .switch-label{color:var(--muted)}.switch{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;display:flex}.switch input{opacity:0;width:1px;height:1px;position:absolute}.switch-track{background:var(--bg);border:1px solid var(--line);border-radius:999px;flex-shrink:0;width:44px;height:26px;transition:background .2s;position:relative}.switch-track:after{content:"";background:var(--muted);border-radius:50%;width:20px;height:20px;transition:transform .2s,background .2s;position:absolute;top:2px;left:2px}.switch input:checked+.switch-track{background:var(--accent);border-color:var(--accent-2)}.switch input:checked+.switch-track:after{background:#fff;transform:translate(18px)}.switch input:focus-visible+.switch-track{box-shadow:0 0 0 3px #9b6bff66}.switch input:disabled+.switch-track{opacity:.4}.switch:has(input:disabled){cursor:not-allowed}.switch-label{font-size:.95rem;line-height:1.3}.infotip{flex-shrink:0;display:inline-flex;position:relative}.infotip-button{border:1px solid var(--line);background:var(--card-2);width:26px;height:26px;color:var(--accent-2);border-radius:50%;padding:0;font-size:.85rem;font-weight:700;line-height:1}.infotip-pop{z-index:20;background:var(--bg);border:1px solid var(--accent);width:min(280px,80vw);color:var(--text);border-radius:12px;padding:10px 12px;font-size:.85rem;line-height:1.45;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #00000080}
