@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2) format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-italic-CIM4raJp.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-700-italic-5nF77AAc.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-italic-CbhzQEkf.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-700-italic-BL4pfkGS.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-italic-DjyOzRJ7.woff2) format("woff2"),url(/assets/barlow-condensed-latin-700-italic-B90Hg2GM.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-vietnamese-800-italic-DdsBx9lY.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-800-italic-aDhyDJMT.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-latin-ext-800-italic-BbzArEj4.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-800-italic-Ca7Cun8E.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:italic;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-latin-800-italic-Cnej2eWp.woff2) format("woff2"),url(/assets/barlow-condensed-latin-800-italic-B5BpsPSY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--font-ui: "Inter Variable", Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Barlow Condensed", "Arial Narrow", var(--font-ui);--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .9375rem;--fs-lg: 1.0625rem;--fs-xl: 1.375rem;--fs-2xl: 1.875rem;--fs-3xl: 2.5rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 20px;--r-pill: 999px;--shadow: 0 16px 48px rgb(0 0 0 / .45);--tap: 44px;--ease: cubic-bezier(.2, .7, .2, 1);--t-fast: .12s;--t-med: .22s;--t-slow: .6s;--content: 460px;--phase-night: #a5b4fc;--phase-day: #fbbf24;--warning: #fbbf24;--warning-soft: rgb(251 191 36 / .12)}:root{--bg: #0b0b12;--surface: #13131d;--surface-2: #1b1b28;--surface-3: #242435;--line: #262636;--line-strong: #36364c;--text: #f4f4f8;--text-2: #b6b6c8;--text-3: #8f8fa8;--primary: #6d4aff;--primary-2: #8b45ff;--primary-text: #a78bfa;--on-primary: #ffffff;--primary-soft: rgb(124 92 255 / .14);--primary-line: rgb(167 139 250 / .38);--mafia: #ff5c7a;--mafia-soft: rgb(255 92 122 / .13);--town: #34d399;--town-soft: rgb(52 211 153 / .12);--danger: #ff5c7a;--glow-base: rgb(124 92 255 / .16)}:root{--glow: var(--glow-base);--phase-accent: var(--primary-text)}[data-phase=night]{--glow: rgb(99 102 241 / .2);--phase-accent: var(--phase-night)}[data-phase=day]{--glow: rgb(251 191 36 / .14);--phase-accent: var(--phase-day)}[data-phase=ended-town]{--glow: var(--town-soft);--phase-accent: var(--town)}[data-phase=ended-mafia]{--glow: var(--mafia-soft);--phase-accent: var(--mafia)}@media (prefers-reduced-motion: reduce){:root{--t-fast: 0ms;--t-med: 0ms;--t-slow: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;overscroll-behavior:none}body{min-height:100dvh;font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-feature-settings:"cv11","ss01"}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(120% 60% at 50% -10%,var(--glow),transparent 70%);transition:background var(--t-slow) var(--ease);z-index:0}#root{position:relative;z-index:1}h1,h2,h3,p{margin:0}h1{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:800;font-style:italic;text-transform:uppercase;line-height:1.02;letter-spacing:.01em;text-wrap:balance}h2{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.005em}h3{font-size:var(--fs-md);font-weight:600}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--primary-text);outline-offset:2px;border-radius:var(--r-sm)}:focus:not(:focus-visible){outline:none}::selection{background:var(--primary-line)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.stack{display:flex;flex-direction:column;gap:var(--s-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--s-2)}.stack-lg{display:flex;flex-direction:column;gap:var(--s-5)}.row{display:flex;align-items:center;gap:var(--s-2)}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.center{text-align:center}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.eyebrow{font-family:var(--font-display);font-size:.875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--phase-accent)}.display{font-family:var(--font-display);font-weight:800;font-style:italic;text-transform:uppercase}.gradient-text{background:linear-gradient(100deg,var(--text) 20%,var(--primary-text));-webkit-background-clip:text;background-clip:text;color:transparent}.tabular{font-variant-numeric:lining-nums tabular-nums}.text-mafia{color:var(--mafia)}.text-town{color:var(--town)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-md);border:1px solid transparent;font-weight:700;font-size:var(--fs-md);transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),opacity var(--t-fast);-webkit-user-select:none;user-select:none}.btn:not(:disabled):active{transform:translateY(2px) scale(.99)}.btn:disabled{opacity:.4;box-shadow:none}.btn-lg{min-height:54px;font-family:var(--font-display);font-size:1.25rem;font-weight:700;font-style:italic;text-transform:uppercase;letter-spacing:.04em}.btn-block{width:100%}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:var(--on-primary);box-shadow:inset 0 1px #ffffff40,0 3px color-mix(in srgb,var(--primary) 55%,#000),0 10px 28px -8px var(--primary)}.btn-primary:not(:disabled):hover{filter:brightness(1.08)}.btn-secondary{background:var(--surface-2);border-color:var(--line-strong);box-shadow:0 2px #00000059}.btn-secondary:not(:disabled):hover{border-color:var(--primary-line);background:var(--surface-3)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:not(:disabled):hover{color:var(--text);background:var(--surface-2)}.btn-danger{background:transparent;color:var(--danger);border-color:#e0606a73}.btn-danger:not(:disabled):hover{background:var(--mafia-soft)}.icon-btn{position:relative;display:inline-grid;place-items:center;width:var(--tap);height:var(--tap);flex-shrink:0;border-radius:var(--r-md);border:none;background:transparent;color:var(--text-2);transition:background var(--t-fast),color var(--t-fast)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn-danger:hover{color:var(--danger)}.count-badge{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--mafia);color:#fff;font-size:.6875rem;font-weight:700;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--bg)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.card{position:relative;background:linear-gradient(180deg,rgb(255 255 255 / .03),transparent 60%),var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4)}.card-gilded{border-color:var(--primary-line);box-shadow:0 0 0 1px var(--primary-soft),0 18px 50px -24px var(--primary)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-3)}.card-header h2{display:flex;align-items:center;gap:var(--s-2)}.card-header svg{color:var(--phase-accent)}.notice{display:flex;gap:var(--s-2);align-items:flex-start;padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);color:var(--text-2);font-size:var(--fs-sm)}.notice svg{flex-shrink:0;margin-top:2px}.notice-warning{background:var(--warning-soft);border-color:#e1aa4859;color:var(--text)}.notice-warning svg{color:var(--warning)}.tag,.role-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--r-pill);border:1px solid var(--line-strong);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;white-space:nowrap;color:var(--text-2)}.role-tag.team-mafia{color:var(--mafia);border-color:#d0454f73;background:var(--mafia-soft)}.role-tag.team-town{color:var(--town);border-color:#74b39473;background:var(--town-soft)}.avatar{--size: 36px;width:var(--size);height:var(--size);flex-shrink:0;display:grid;place-items:center;border-radius:50%;font-weight:700;font-size:calc(var(--size) * .42);color:var(--c);background:color-mix(in srgb,var(--c) 16%,var(--surface-2));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c) 55%,transparent)}.avatar-sm{--size: 24px}.avatar-lg{--size: 48px}.avatar-dead{color:var(--text-3);background:var(--surface-2);box-shadow:inset 0 0 0 1.5px var(--line-strong)}.player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.player-row{display:flex;align-items:center;gap:var(--s-3);min-height:52px;padding:var(--s-1) 0;border-top:1px solid var(--line)}.player-row:first-child{border-top:none}.player-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.player-name{display:flex;align-items:center;gap:6px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.player-detail{font-size:var(--fs-xs);color:var(--text-3)}.you-mark{display:inline-block;text-decoration:none}.player-row.is-dead .player-name{color:var(--text-3);text-decoration:line-through;text-decoration-color:var(--line-strong)}.host-crown{color:var(--primary-text);flex-shrink:0}.offline-icon{color:var(--warning);flex-shrink:0}.status-done{color:var(--town);display:inline-flex}.status-wait{font-size:var(--fs-xs);color:var(--text-3)}.presence{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:var(--s-3) var(--s-2);list-style:none;margin:0;padding:0}.presence li{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--text-2);text-align:center}.presence li>span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.presence .avatar{--size: 40px;transition:opacity var(--t-med)}.presence li.is-waiting .avatar{opacity:.45}.presence li.is-dead{color:var(--text-3)}.presence-check{position:absolute;top:-2px;right:calc(50% - 26px);width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:var(--town);color:var(--bg);box-shadow:0 0 0 2px var(--surface)}.timer{display:flex;flex-direction:column;align-items:center;gap:var(--s-2)}.timer-clock{font-family:var(--font-display);font-size:3.5rem;font-weight:800;font-style:italic;font-variant-numeric:tabular-nums;line-height:.9;letter-spacing:.02em;color:var(--text)}.timer-track{width:min(240px,72%);height:4px;border-radius:2px;background:var(--line);overflow:hidden}.timer-fill{display:block;height:100%;border-radius:2px;background:var(--phase-accent);box-shadow:0 0 12px var(--phase-accent);transform-origin:left;transition:transform .25s linear}.timer.is-urgent .timer-clock{color:var(--danger)}.timer.is-urgent .timer-fill{background:var(--danger)}.timer-empty{display:inline-flex;gap:6px;align-items:center;justify-content:center}.screen:has(.action-bar){padding-bottom:150px}.action-bar{position:fixed;left:0;right:0;bottom:0;z-index:15;padding:var(--s-4) var(--s-4) calc(var(--s-4) + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--bg) 28%);pointer-events:none}.action-bar-inner{max-width:var(--content);margin:0 auto;display:flex;flex-direction:column;gap:var(--s-2);pointer-events:auto}.action-hint{text-wrap:balance}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:#050407a8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in var(--t-med) var(--ease)}.sheet{width:100%;max-width:var(--content);max-height:88dvh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-bottom:none;border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow);animation:sheet-up var(--t-med) var(--ease)}.sheet:focus{outline:none}.sheet-tall{height:min(82dvh,680px)}.sheet-grip{width:36px;height:4px;margin:8px auto 0;border-radius:2px;background:var(--line-strong)}.sheet-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4)}.sheet-header h2{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.sheet-body{flex:1;min-height:0;overflow-y:auto;padding:0 var(--s-4) var(--s-4)}.sheet-footer{padding:var(--s-3) var(--s-4) calc(var(--s-4) + env(safe-area-inset-bottom));border-top:1px solid var(--line)}@media (min-width: 600px){.sheet-backdrop{align-items:center}.sheet{border-radius:var(--r-lg);border-bottom:1px solid var(--line)}.sheet-grip{display:none}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}@keyframes fade-in{0%{opacity:0}}.toasts{position:fixed;top:calc(var(--s-3) + env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:60;width:min(420px,calc(100% - 32px));display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none}.toast{display:flex;gap:var(--s-2);align-items:flex-start;padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-3);border:1px solid var(--line-strong);box-shadow:var(--shadow);font-size:var(--fs-sm);animation:sheet-up var(--t-med) var(--ease)}.toast svg{flex-shrink:0;margin-top:1px}.toast-error svg{color:var(--danger)}.toast-success svg{color:var(--town)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-2)}.input{width:100%;min-height:48px;padding:0 var(--s-3);border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--bg);font-size:1rem;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.input::placeholder{color:var(--text-3)}.input:focus{outline:none;border-color:var(--primary-text);box-shadow:0 0 0 3px var(--primary-line)}.input-code{text-align:center;font-family:var(--font-display);font-size:1.5rem;letter-spacing:.5em;padding-left:.5em;text-transform:uppercase}.field-error{font-size:var(--fs-sm);color:var(--danger)}select.input{min-height:40px;width:auto;padding:0 var(--s-3)}.segmented{display:inline-flex;padding:3px;border-radius:var(--r-md);background:var(--bg);border:1px solid var(--line)}.segmented button{min-height:34px;padding:0 var(--s-3);border:none;border-radius:7px;background:transparent;color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.segmented button[aria-checked=true]{background:var(--primary-soft);color:var(--primary-text);box-shadow:inset 0 0 0 1px var(--primary-line)}.switch{position:relative;width:46px;height:28px;flex-shrink:0;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--bg);transition:background var(--t-fast)}.switch-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--text-3);transition:transform var(--t-fast) var(--ease),background var(--t-fast)}.switch[aria-checked=true]{background:var(--primary);border-color:transparent}.switch[aria-checked=true] .switch-thumb{transform:translate(18px);background:var(--on-primary)}.stepper{display:inline-flex;align-items:center;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--bg)}.stepper button{width:40px;height:40px;display:grid;place-items:center;border:none;background:transparent;color:var(--text)}.stepper button:disabled{color:var(--text-3);opacity:.5}.stepper-value{min-width:24px;text-align:center;font-weight:700}.choices{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.choice{position:relative;width:100%;display:flex;align-items:center;gap:var(--s-3);min-height:56px;padding:var(--s-2) var(--s-3);border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface-2);text-align:left;overflow:hidden;transition:border-color var(--t-fast),background var(--t-fast)}.choice:not(:disabled):hover{border-color:var(--line-strong)}.choice[aria-pressed=true],.choice[aria-checked=true]{border-color:var(--phase-accent);background:color-mix(in srgb,var(--phase-accent) 12%,var(--surface-2));box-shadow:0 0 0 1px var(--phase-accent),0 8px 26px -12px var(--phase-accent);animation:pop var(--t-med) var(--ease)}.choice:disabled:not([aria-pressed=true]):not([aria-checked=true]){opacity:.45}.choice-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.choice-title{font-weight:600}.choice-sub{font-size:var(--fs-xs);color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.choice-check{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;border:1.5px solid var(--line-strong);color:var(--bg)}.choice[aria-pressed=true] .choice-check,.choice[aria-checked=true] .choice-check{border-color:var(--phase-accent);background:var(--phase-accent)}.choice-meter{position:absolute;left:0;bottom:0;height:3px;background:var(--phase-accent);transition:width var(--t-med) var(--ease)}.choice-meter.is-skip{background:var(--text-3)}.vote-count{min-width:30px;height:30px;display:grid;place-items:center;border-radius:var(--r-sm);background:var(--bg);font-weight:700;font-variant-numeric:tabular-nums}.avatar-stack{display:flex}.avatar-stack .avatar{margin-left:-6px;box-shadow:0 0 0 2px var(--surface-2),inset 0 0 0 1.5px color-mix(in srgb,var(--c) 55%,transparent)}.avatar-stack .avatar:first-child{margin-left:0}.role-card{position:relative;width:100%;min-height:340px;padding:var(--s-6) var(--s-5);overflow:hidden;border-radius:24px;border:1px solid var(--primary-line);color:var(--text);background:radial-gradient(120% 80% at 0% 0%,color-mix(in srgb,var(--primary) 45%,transparent),transparent 60%),radial-gradient(120% 80% at 100% 100%,color-mix(in srgb,var(--primary-2) 40%,transparent),transparent 60%),var(--surface-2);box-shadow:0 24px 60px -28px var(--primary);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;transition:transform var(--t-med) var(--ease),box-shadow var(--t-med) var(--ease)}.role-card:active{transform:scale(.985)}.role-card-frame{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgb(255 255 255 / .12) 45%,transparent 60%);background-size:250% 100%;animation:sheen 3.5s var(--ease) infinite}.role-card.is-revealed{background:var(--surface)}.role-card.is-revealed.team-mafia{border-color:var(--mafia);box-shadow:0 0 0 1px var(--mafia),0 24px 70px -20px var(--mafia)}.role-card.is-revealed.team-town{border-color:var(--town);box-shadow:0 0 0 1px var(--town),0 24px 70px -20px var(--town)}.role-card-back,.role-card-face{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--s-3);text-align:center}.role-card-back{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--s-3);text-align:center;color:var(--text);padding-top:var(--s-5)}.role-card-back-title{font-family:var(--font-display);font-size:2rem;font-weight:800;font-style:italic;text-transform:uppercase;letter-spacing:.04em}.role-card-emblem{width:88px;height:88px;display:grid;place-items:center;border-radius:28px;background:var(--surface-2);border:1px solid var(--line-strong)}.team-mafia .role-card-emblem{color:var(--mafia);background:var(--mafia-soft);border-color:color-mix(in srgb,var(--mafia) 50%,transparent)}.team-town .role-card-emblem{color:var(--town);background:var(--town-soft);border-color:color-mix(in srgb,var(--town) 50%,transparent)}.role-card-name{font-size:3.25rem;line-height:.95}.role-card-desc{color:var(--text-2);max-width:30ch}.role-card-team{color:var(--text)}.btn-primary:not(:disabled):active{box-shadow:inset 0 1px #fff3,0 1px color-mix(in srgb,var(--primary) 55%,#000),0 4px 14px -6px var(--primary)}@keyframes pop{50%{transform:scale(1.015)}}.role-card.is-revealed .role-card-frame{display:none}@keyframes sheen{0%{background-position:150% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion: reduce){.role-card-frame,.choice[aria-pressed=true]{animation:none}}.choices.is-uniform .choice:disabled:not([aria-pressed=true]){opacity:1}.app{max-width:var(--content);margin:0 auto;padding:0 var(--s-4) var(--s-6);padding-top:env(safe-area-inset-top)}.screen{padding-top:var(--s-2);animation:fade-in var(--t-med) var(--ease)}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);min-height:56px;margin:0 calc(var(--s-4) * -1);padding:0 var(--s-2) 0 var(--s-4)}.app-header:before{content:"";position:absolute;top:0;right:50%;bottom:0;left:50%;width:100vw;transform:translate(-50%);z-index:-1;background:linear-gradient(180deg,var(--bg) 65%,transparent)}.brand{display:flex;align-items:center;gap:var(--s-2)}.brand-name{font-family:var(--font-display);font-size:1.5rem;font-weight:800;font-style:italic;letter-spacing:.06em;text-transform:uppercase}.header-actions{display:flex;align-items:center}.conn-banner{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:center;align-items:center;gap:6px;padding:calc(6px + env(safe-area-inset-top)) var(--s-3) 6px;background:var(--warning);color:var(--on-primary);font-size:var(--fs-sm);font-weight:600}.screen-head{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-4) 0 var(--s-2)}.screen-head .eyebrow{display:inline-flex;align-items:center;gap:6px}.row-center{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px}.center-row{justify-content:center}.action-title{display:flex;align-items:center;gap:var(--s-2);margin-bottom:2px}.stack-0{display:flex;flex-direction:column}.hero{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);padding:var(--s-6) 0 var(--s-2)}.hero-title{font-size:3.5rem;line-height:.92}.hero p{max-width:34ch}.invite-banner{text-align:center;color:var(--text-2)}.invite-banner strong{color:var(--primary-text);font-size:1.25rem;letter-spacing:.1em}.divider{display:flex;align-items:center;gap:var(--s-3);color:var(--text-3);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.14em}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.room-code-card{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-5) var(--s-4)}.room-code{font-family:var(--font-display);font-size:4rem;font-weight:800;font-style:italic;line-height:1;letter-spacing:.16em;padding-left:.16em;color:var(--primary-text);text-shadow:0 0 32px color-mix(in srgb,var(--primary-text) 45%,transparent);margin-bottom:var(--s-2)}.scoreboard{display:flex;align-items:center;justify-content:center;gap:var(--s-3);font-family:var(--font-display);font-size:1.375rem;font-weight:800;font-style:italic;text-transform:uppercase;font-variant-numeric:tabular-nums}.lobby-hint{margin-top:var(--s-2)}.setup-note{margin-top:var(--s-3)}.role-grid{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.role-tile{display:flex;align-items:center;gap:var(--s-3);min-height:52px;padding:var(--s-1) var(--s-1) var(--s-1) var(--s-3);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line)}.role-tile.is-empty{opacity:.5}.role-tile-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--bg)}.role-tile.team-mafia .role-tile-icon{color:var(--mafia)}.role-tile.team-town .role-tile-icon{color:var(--town)}.role-tile-name{flex:1;font-weight:500}.role-tile-count{min-width:40px;text-align:center;font-family:var(--font-display);font-size:1.75rem;font-weight:800;font-style:italic;font-variant-numeric:tabular-nums}.rules summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);min-height:var(--tap);cursor:pointer;list-style:none}.rules summary::-webkit-details-marker{display:none}.rules-title{display:flex;align-items:center;gap:var(--s-2)}.rules-title>svg{color:var(--phase-accent);flex-shrink:0}.rules-heading{font-weight:600;font-size:var(--fs-lg)}.rules-chevron{color:var(--text-3);transition:transform var(--t-fast) var(--ease)}.rules[open] .rules-chevron{transform:rotate(180deg)}.settings{margin-top:var(--s-2)}.setting{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-height:56px;border-top:1px solid var(--line)}.setting-label{display:flex;flex-direction:column;line-height:1.35}.state-card{align-items:center;padding:var(--s-5) var(--s-4)}.state-icon{color:var(--phase-accent)}.host-tools{display:flex;flex-direction:column;gap:var(--s-2);border-style:dashed}.skip-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;border:1px dashed var(--line-strong);color:var(--text-3);flex-shrink:0}.vote-tally{display:flex;align-items:center;gap:var(--s-2)}.verdict{align-items:center;padding:var(--s-5) var(--s-4)}.verdict-title{font-size:2rem;line-height:1}.verdict.team-mafia{border-color:#d0454f66}.verdict.team-town{border-color:#74b39466}.game-over{padding-top:var(--s-6)}.game-over-icon{color:var(--phase-accent);filter:drop-shadow(0 0 22px var(--phase-accent))}.game-over.team-mafia .hero-title{color:var(--mafia)}.game-over.team-town .hero-title{color:var(--town)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-4)}.timeline-item{position:relative;padding-left:var(--s-4);border-left:1px solid var(--line-strong)}.timeline-night{border-left-color:#9aa8ff80}.timeline-day{border-left-color:#e1aa4880}.timeline h3{display:flex;align-items:center;gap:6px;margin-bottom:var(--s-1);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-2)}.timeline-line{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-sm);line-height:1.6}.timeline-line svg{flex-shrink:0;margin-top:4px}.timeline-line .role-tag{margin-left:4px;vertical-align:1px}.chat-tabs{position:sticky;top:0;z-index:1;display:flex;gap:var(--s-1);margin:0 calc(var(--s-4) * -1) var(--s-2);padding:0 var(--s-4) var(--s-2);background:var(--surface);border-bottom:1px solid var(--line)}.chat-tab{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 var(--s-3);border-radius:var(--r-pill);border:1px solid transparent;background:transparent;color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.chat-tab[aria-selected=true]{background:var(--surface-3);border-color:var(--line-strong);color:var(--text)}.chat-tab-mafia[aria-selected=true]{border-color:#d0454f80}.tab-badge{min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--mafia);color:#fff;font-size:.6875rem;line-height:18px}.chat-list{display:flex;flex-direction:column;gap:2px;padding-top:var(--s-2)}.chat-empty{height:100%;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-2);color:var(--text-3)}.chat-msg{display:flex;gap:var(--s-2);max-width:88%;margin-top:var(--s-3)}.chat-msg.is-continued{margin-top:0}.chat-msg.is-mine{align-self:flex-end;justify-content:flex-end}.chat-avatar{width:24px;flex-shrink:0;padding-top:18px}.chat-msg.is-continued .chat-avatar{padding-top:0}.chat-body{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.chat-msg.is-mine .chat-body{align-items:flex-end}.chat-name{font-size:var(--fs-xs);font-weight:600;margin:0 0 2px 4px}.chat-bubble{max-width:100%;padding:var(--s-2) var(--s-3);border-radius:4px 14px 14px;border:1px solid var(--line);background:var(--surface-2);text-align:left;font-size:var(--fs-md);line-height:1.4;overflow-wrap:anywhere}.chat-msg.is-continued .chat-bubble{border-top-left-radius:14px}.chat-msg.is-mine .chat-bubble{border-radius:16px 4px 16px 16px;border-color:transparent;background:linear-gradient(135deg,var(--primary),var(--primary-2));color:var(--on-primary)}.chat-reactions,.reaction-picker{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.chat-reactions button{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:0 var(--s-2);border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface-2);font-size:var(--fs-sm)}.chat-reactions button.is-mine{border-color:var(--primary-text);background:var(--primary-soft)}.reaction-picker{padding:4px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--surface-3);box-shadow:var(--shadow)}.reaction-picker button{width:40px;height:40px;border:none;border-radius:50%;background:transparent;font-size:1.25rem}.reaction-picker button:hover{background:var(--surface-2)}.composer{display:flex;gap:var(--s-2)}.composer .input{min-height:var(--tap)}.send-btn{width:var(--tap);height:var(--tap);flex-shrink:0;display:grid;place-items:center;border:none;border-radius:var(--r-md);background:linear-gradient(135deg,var(--primary),var(--primary-2));color:var(--on-primary)}.send-btn:disabled{background:var(--surface-3);color:var(--text-3)}.chat-locked{display:flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);text-align:center}.curtain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:grid;place-items:center;padding:var(--s-5);background:radial-gradient(80% 60% at 50% 40%,var(--curtain-glow),transparent 75%),var(--bg);animation:curtain 2.6s var(--ease) both;cursor:pointer}.curtain-night{--curtain-glow: rgb(70 82 170 / .55);--phase-accent: #9aa8ff}.curtain-day{--curtain-glow: rgb(200 140 50 / .45);--phase-accent: var(--warning)}.curtain-reveal{--curtain-glow: color-mix(in srgb, var(--primary) 45%, transparent);--phase-accent: var(--primary-text)}.curtain-mafia{--curtain-glow: rgb(170 40 50 / .55);--phase-accent: var(--mafia)}.curtain-town{--curtain-glow: rgb(80 150 115 / .45);--phase-accent: var(--town)}.curtain-inner{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);text-align:center;max-width:360px;animation:curtain-rise .6s var(--ease) both}.curtain-icon{color:var(--phase-accent);filter:drop-shadow(0 0 18px var(--phase-accent))}.curtain-title{font-size:4rem;line-height:.9}.curtain-sub{font-size:var(--fs-lg);color:var(--text-2)}@keyframes curtain{0%{opacity:0}12%{opacity:1}85%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.curtain{animation:none}}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.steps li,.role-guide li{display:flex;gap:var(--s-3);align-items:flex-start;color:var(--text-2)}.steps svg{flex-shrink:0;margin-top:2px;color:var(--primary-text)}.steps strong,.role-guide strong{color:var(--text)}.role-guide{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.role-guide-icon{width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:var(--surface-2);border:1px solid var(--line)}.role-guide .team-mafia .role-guide-icon{color:var(--mafia)}.role-guide .team-town .role-guide-icon{color:var(--town)}.skeleton{border-radius:var(--r-lg);background:linear-gradient(90deg,var(--surface) 0%,var(--surface-2) 50%,var(--surface) 100%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}@keyframes curtain-rise{0%{transform:translateY(16px) scale(.96);opacity:0}}.hold-reveal{width:100%;min-height:56px;margin-top:var(--s-2);padding:var(--s-3);border-radius:var(--r-md);border:1px dashed var(--line-strong);background:var(--bg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}.hold-reveal.is-held{border-style:solid;border-color:var(--phase-accent)}.hold-reveal-detail{font-weight:600}.private-notes{padding-top:var(--s-2)}
