@font-face{font-family:"Baloo 2";font-style:normal;font-weight:600 800;font-display:swap;src:url(/fonts/baloo-2-600-vietnamese.woff2) format("woff2");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:"Baloo 2";font-style:normal;font-weight:600 800;font-display:swap;src:url(/fonts/baloo-2-600-latin-ext.woff2) format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:600 800;font-display:swap;src:url(/fonts/baloo-2-600-latin.woff2) format("woff2");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:Nunito;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/nunito-400i-vietnamese.woff2) format("woff2");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:Nunito;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/nunito-400i-latin-ext.woff2) format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/nunito-400i-latin.woff2) format("woff2");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:Nunito;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/nunito-400-vietnamese.woff2) format("woff2");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:Nunito;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/nunito-400-latin-ext.woff2) format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/nunito-400-latin.woff2) format("woff2");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;--night-0:#0c1424;--night-1:#111c31;--well:#0a1220;--surface:#16223a;--surface-2:#1c2b48;--surface-3:#26395e;--line:#2a3d62;--line-strong:#3a5584;--edge:#060b16;--text-hi:#ffffff;--text:#eef2f8;--muted:#a7b5cd;--fire:#ff8a3d;--fire-hot:#ffb259;--fire-deep:#c4561a;--fire-ink:#341400;--gold:#ffcc4d;--green:#4cd07d;--green-deep:#25894a;--red:#ff5a5f;--red-deep:#b9343a;--sky:#3d8bff;--sky-deep:#2462c8;--team-village:#5fb0ff;--team-wolf:#ff5a5f;--team-neutral:#c08bff;--paper:var(--text);--ember:var(--fire);--ember2:var(--fire-hot);--panel:var(--surface);--gilt:#f2c46b;--gilt-soft:#f2c46b59;--ink:#0a1220;--font-body:"Nunito",system-ui,sans-serif;--font-display:"Baloo 2","Nunito",system-ui,sans-serif;--radius-sm:8px;--radius:12px;--radius-lg:18px;--shadow-1:0 6px 16px #0008;--shadow-2:0 16px 40px #000a;font-family:var(--font-body);color:var(--text);background:var(--night-0);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 50% 90%,#1a283f 0,#0d1420 32%,var(--night-0) 70%)}button,input{font:inherit}button{color:inherit;background:var(--surface-2);border:1px solid #243758;border-radius:8px;padding:.68rem 1rem;cursor:pointer;transition:.18s ease}button:hover:not(:disabled),button:focus-visible{border-color:#d8885e;background:#1c2a43;outline:none}button:disabled{opacity:.4;cursor:not-allowed}.primary{background:linear-gradient(135deg,#c85d32,#e6804d);color:#fff9ef;border:0;font-weight:700;box-shadow:0 8px 25px #b84a272d}.primary:hover:not(:disabled){background:linear-gradient(135deg,#d76a3d,#ef9461)}.gate{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(#090e1644,#090e16dd),radial-gradient(circle at 50% 25%,#ae58342b,transparent 30%)}.gate-card{width:min(440px,100%);padding:36px;border:1px solid #243859;background:#0c131fdd;box-shadow:0 30px 80px #0008;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:20px}.brand-mark{font-size:44px;text-align:center;filter:drop-shadow(0 0 18px #ff7b45)}.eyebrow{text-align:center;font-size:11px;letter-spacing:.22em;color:#ca8b66;margin:8px 0}.gate h1{font:700 42px/1 var(--font-display);text-align:center;margin:8px 0 12px}.lede{color:#a3afc4;text-align:center;line-height:1.55}.tabs{display:grid;grid-template-columns:1fr 1fr;margin:26px 0 20px;background:var(--well);padding:4px;border-radius:10px}.tabs button{border:0;background:transparent}.tabs .active{background:var(--surface-3);color:#fff}label{display:grid;gap:7px;font-size:13px;color:#b5becf;margin:14px 0}input{width:100%;border:1px solid #233656;border-radius:8px;padding:.8rem;background:var(--well);color:#f6efe3;outline:none}input:focus{border-color:#cd7851;box-shadow:0 0 0 3px #cd785122}.gate form>.primary{width:100%;margin-top:10px}.privacy{font-size:11px;color:#607395;text-align:center;margin:18px 0 0}.error{color:#ff9b88;font-size:13px}.loading{height:100vh;display:grid;place-content:center;text-align:center;font-size:52px}.loading p{font-size:14px;color:var(--muted)}.game{height:100vh;overflow:hidden;display:grid;grid-template:60px 1fr/1fr 390px;background:var(--night-0)}.game>header{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:#0c121cef;border-bottom:1px solid #1b2942;z-index:5}.game>header>div{display:flex;align-items:center;gap:10px}.game>header strong{font-family:var(--font-display);font-size:18px}.mini-fire{font-size:22px}.room-code{font-size:10px;letter-spacing:.14em;color:#8d9cb6;border-left:1px solid #263a5c;padding-left:12px}.header-actions{display:flex;gap:8px}.header-actions button{padding:.45rem .7rem;font-size:12px}.scene{position:relative;min-width:0;overflow:hidden}.scene canvas{touch-action:none}.phase-card{position:absolute;left:22px;top:22px;display:grid;grid-template-columns:auto auto;gap:3px 18px;align-items:center;padding:11px 15px;border:1px solid #ffffff19;border-radius:11px;background:#0a101ac7;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);box-shadow:0 8px 30px #0007}.phase-card p{margin:0;font-size:10px;letter-spacing:.16em;color:#c99a77}.phase-card strong{grid-row:1/3;grid-column:2;font:700 28px var(--font-display)}.phase-card span{font-size:11px;color:#99a7be}.scene-fallback{height:100%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,#473024,#0e1623 45%,#090e17);color:#adb8cb}.scene-fallback span{font-size:80px}.panel{position:relative;background:linear-gradient(180deg,#0f1826,#0b101a);border-left:1px solid #1e2e49;min-height:0;display:flex;flex-direction:column}.panel-scroll{overflow:auto;padding:22px 22px 120px}.panel section{border-bottom:1px solid #1c2b44;padding:0 0 18px;margin-bottom:18px}.panel h2{font:600 28px var(--font-display);margin:0 0 14px}.panel h3{font-size:12px;text-transform:none;font-weight:800;letter-spacing:.01em;color:#adb8ca;margin:0 0 10px}.role-card{background:linear-gradient(135deg,#3d2925,#131d2f);border:1px solid #654237;border-radius:12px;padding:16px;box-shadow:inset 0 1px #ffffff10}.role-card p{font-size:9px;letter-spacing:.18em;color:#e09a6e;margin:0}.role-card h3{font:600 26px var(--font-display);color:var(--text-hi);text-transform:none;letter-spacing:0;margin:4px 0}.role-card span,.role-card small{display:block;color:#c2c0b7;font-size:12px;line-height:1.45}.role-card small{margin-top:9px;color:#e49a70}.resources,.result{font-size:12px;padding:8px;background:#152032;border-radius:7px}.section-title{display:flex;justify-content:space-between;align-items:center}.section-title span{font-size:10px;color:#6e81a2}.roster{list-style:none;margin:0;padding:0;display:grid;gap:5px}.roster button{width:100%;border:0;background:transparent;display:grid;grid-template-columns:10px 1fr auto auto auto;align-items:center;text-align:left;gap:7px;padding:7px}.roster button:disabled{opacity:1;cursor:default}.roster li.selected button{background:#314036}.roster li.dead{opacity:.55}.roster i{width:9px;height:9px;border-radius:50%}.roster b,.roster em{font-size:8px;text-transform:none;font-weight:800;letter-spacing:.01em;font-style:normal;color:#e29465}.roster em{color:#7eb59c}.roster button>span{font-size:9px;color:#63779a}.role-deck{display:flex;flex-wrap:wrap;gap:6px}.role-deck span{font-size:10px;padding:5px 8px;background:#172439;border-radius:20px;color:#aeb9cc}.caveat{font-size:11px;color:#d1a078}.wide{width:100%;margin-top:8px}.text-button{width:100%;border:0;background:transparent;color:#7b8dab;font-size:11px}.actions p,.quiet,.rulebook p{font-size:12px;line-height:1.5;color:#92a0b9}.actions>button:not(.wide){margin:5px 5px 0 0}.winner{padding:16px!important;border:1px solid #87583d!important;border-radius:10px;background:#3d292377}.winner h3{font:600 23px var(--font-display);text-transform:none;letter-spacing:0;color:#ffdabd}.voice-buttons{display:flex;gap:5px}.voice-buttons button{padding:.5rem;font-size:10px;flex:1}.panel small{font-size:9px;color:#5f7294}.history{padding-left:18px;margin:0;color:#8c9bb5;font-size:11px;line-height:1.5}.rulebook summary{cursor:pointer;font-size:12px;color:#c7d0ca}.chat{position:absolute;bottom:0;left:0;right:0;display:flex;padding:16px;background:#0c121cf2;border-top:1px solid #1d2d48;gap:7px}.chat input{padding:.65rem}.chat button{padding:.6rem}.toast{position:absolute;bottom:76px;left:18px;right:18px;background:#612e28;color:#ffd8d0;border:1px solid #b95f4f;border-radius:8px;padding:9px;font-size:11px;box-shadow:0 8px 20px #0008}.game ::-webkit-scrollbar{width:7px}.game ::-webkit-scrollbar-thumb{background:#233656;border-radius:6px}@media(max-width:850px){.game{height:auto;min-height:100vh;overflow:auto;grid-template:56px 52vh auto/1fr}.game>header{position:sticky;top:0}.scene{min-height:52vh}.panel{border-left:0;border-top:1px solid #1e2e49;min-height:70vh}.panel-scroll{padding-bottom:100px}.chat{position:fixed;z-index:6}.phase-card{left:10px;top:10px}.header-actions button:first-child{display:none}}select{font:inherit;width:100%;border:1px solid #233656;border-radius:8px;padding:.6rem;background:var(--well);color:#f6efe3;outline:none}select:focus{border-color:#cd7851;box-shadow:0 0 0 3px #cd785122}.panel-scroll{padding-bottom:22px}.roster li{display:grid;gap:5px}.roster .player-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}.roster .player-main{width:100%;border:0;background:transparent;display:grid;grid-template-columns:10px minmax(0,1fr) auto auto auto auto;align-items:center;text-align:left;gap:7px;padding:7px}.roster .player-main:disabled{opacity:1;cursor:default}.roster li.selected .player-main{background:#314036}.roster .player-main>span{font-size:9px;color:#63779a}.speaking-mark{color:#79d6a2!important}.roster li.speaking .player-main{box-shadow:inset 2px 0 #79d6a2}.roster .kick{width:auto;display:block;padding:.35rem .5rem;color:#e99b84}.roster li.selected .kick{background:var(--surface-2)}.peer-audio{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;margin:0 0 5px 16px}.peer-audio label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px;margin:0;font-size:9px}.peer-audio input{padding:0}.peer-audio button{padding:.3rem .45rem;font-size:9px}.lobby-settings .role-editor{display:grid;gap:5px}.role-editor>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:5px;padding:5px 0;border-bottom:1px solid #1b2a43}.role-editor button{padding:.3rem .55rem}.role-editor strong{min-width:22px;text-align:center}.timer-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.timer-grid label{font-size:10px}.timer-grid input{padding:.55rem}.check-row{display:flex;grid-template-columns:none;align-items:center;gap:8px}.check-row input{width:auto}.validation{padding-left:18px;color:#ff9b88;font-size:10px;line-height:1.5}.settings-actions{display:flex;gap:6px}.settings-actions button{flex:1;padding:.55rem;font-size:10px}.setting-summary{font-size:11px;line-height:1.55;color:#92a0b9}.submitted{font-size:10px;color:#8bd7aa}.voice-buttons{flex-wrap:wrap}.voice-panel select{padding:.55rem}.voice-mode{display:grid;grid-template-columns:1fr 1fr;gap:7px}.voice-mode label{display:flex;align-items:center;gap:5px;margin:6px 0;font-size:10px}.voice-mode input{width:auto}.meter{height:7px;background:var(--well);border-radius:8px;overflow:hidden;margin:8px 0}.meter i{display:block;height:100%;background:linear-gradient(90deg,#65b98a,#e5a05f);transition:width .08s linear}.ballot-results .vote-totals{display:flex;flex-wrap:wrap;gap:5px}.vote-totals span{padding:5px 7px;background:#172439;border-radius:6px;font-size:10px}.ballot-results details{margin-top:8px}.ballot-results summary{font-size:10px;cursor:pointer}.chat-panel .messages{display:grid;gap:7px;max-height:230px;overflow:auto;padding:8px;background:var(--well);border-radius:8px}.messages .quiet{text-align:center}.messages article{padding:7px 8px;background:#121b2b;border-radius:7px}.messages article header{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:#7d8eac}.messages article p{margin:4px 0 0;font-size:11px;line-height:1.4;overflow-wrap:anywhere}.chat-panel form{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:8px}.chat-panel input{padding:.62rem}.chat-panel button{padding:.55rem .7rem}.toast{bottom:18px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.nameplate-anchor{pointer-events:none}.nameplate{display:inline-block;white-space:nowrap;padding:2px 8px;border-radius:999px;background:#091216b8;border:1px solid rgba(233,226,212,.18);color:var(--paper);font-size:11px;font-weight:600;letter-spacing:.01em;text-shadow:0 1px 2px #000}.nameplate.dead{color:#b1bbcd;background:#1e2838b3;font-style:italic}.nameplate.selected{border-color:var(--gold);color:#ffe2a8}.nameplate.aimed{border-color:#fff4cf;color:#fff;background:#1c2b45e8;box-shadow:0 0 0 2px #ffd27a66,0 0 18px #ffd27a55}.sound-panel label{grid-template-columns:5.5rem 1fr;align-items:center;margin:8px 0}.sound-panel input[type=range]{padding:0}.voice-buttons button,.settings-actions button,.voice-mode button{font-size:12px;padding:.55rem .5rem}.voice-mode button.active{border-color:var(--ember);background:#3a2a22;color:#ffd9bf;font-weight:700}.peer-audio button{font-size:11px}.peer-audio{grid-template-columns:auto minmax(0,1fr)}.peer-audio label{grid-template-columns:auto minmax(0,1fr);min-width:0}.peer-audio input[type=range]{min-width:0}.peer-audio button{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:auto;white-space:nowrap}.peer-audio-icon{display:none}.right-panel .peer-audio{grid-template-columns:34px minmax(0,1fr);margin-left:16px}.right-panel .peer-audio button{width:34px;min-height:32px;padding:0;font-size:14px}.right-panel .peer-audio-icon{display:inline}.right-panel .peer-audio-text{display:none}.right-panel .peer-audio label{grid-template-columns:auto minmax(0,1fr);font-size:9px}.roster button>span{font-size:12px;color:var(--paper)}.sound-panel .wide{font-size:13px;padding:.55rem}input[type=range]{accent-color:var(--ember)}.mic-hint{display:block;color:#9fd3b0;margin:4px 0 0;font-size:12px}.toast{position:fixed;z-index:50}.mic-diag{display:block;color:var(--muted);font-size:11px;margin-top:2px;word-break:break-word}.mic-hint b{display:block;color:#ffcf9a;font-weight:600;margin-top:3px}.stage{--glass:rgba(10,20,24,.84);--edge:#1e2e4a;position:relative;height:100vh;height:100dvh;overflow:hidden;background:var(--night-0)}.stage .scene{position:absolute;inset:0}.stage .scene canvas{touch-action:none}.stage.look-mode .scene canvas{cursor:none!important}.fov-hud{position:absolute;inset:0;z-index:19;pointer-events:none;overflow:hidden}.fov-reticle{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:1px solid #edeff3aa;border-radius:50%;filter:drop-shadow(0 1px 2px #000);transition:.12s ease}.fov-reticle:before,.fov-reticle:after{content:"";position:absolute;left:50%;top:50%;background:#f5f7f9;transform:translate(-50%,-50%);box-shadow:0 0 4px #000}.fov-reticle:before{width:4px;height:1px}.fov-reticle:after{width:1px;height:4px}.fov-hud.has-target .fov-reticle{width:24px;height:24px;border-color:var(--gold);box-shadow:0 0 12px #ffd27a66}.fov-prompt{position:absolute;left:50%;top:calc(50% + 28px);transform:translate(-50%);display:grid;gap:2px;min-width:180px;padding:6px 12px;border-radius:9px;background:#090e16c7;border:1px solid #ffffff20;text-align:center;text-shadow:0 1px 2px #000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.fov-prompt b{font-size:13px;color:#fff1df}.fov-prompt small{font-size:10px!important;color:#a5b1c6!important;text-transform:none;font-weight:800;letter-spacing:.01em}.fov-hand{position:absolute;right:22%;bottom:-18px;font-size:88px;line-height:1;transform:rotate(-14deg);transform-origin:bottom right;filter:drop-shadow(0 9px 12px #0009);opacity:.8;animation:fov-hand-idle 2.2s ease-in-out infinite}.fov-hand.gesture-bomb-throw,.fov-hand.gesture-bomb-place{font-size:66px}.fov-hand.gesture-heart{color:#ff89bc}.fov-hand.gesture-attack{color:#ffd7aa}.fov-hand.gesture-oil{color:#bb8a4f}.fov-effect{position:absolute;right:23%;bottom:8%;font-size:72px;line-height:1;filter:drop-shadow(0 8px 12px #000b);opacity:.9}.fov-effect.windup{animation:fov-windup .28s ease-out both}.fov-effect.accepted{animation:fov-activate .72s cubic-bezier(.2,.7,.25,1) both}.fov-effect.gesture-bomb-throw.accepted{animation-name:fov-throw}.fov-effect.gesture-point.accepted{animation-name:fov-point}@keyframes fov-hand-idle{0%,to{transform:rotate(-14deg) translateY(0)}50%{transform:rotate(-12deg) translateY(-4px)}}@keyframes fov-windup{0%{transform:translate(0) rotate(-10deg)}to{transform:translate(18px,18px) rotate(8deg)}}@keyframes fov-activate{0%{transform:translateY(16px) scale(.8);opacity:.4}35%{opacity:1}to{transform:translate(-28vw,-26vh) scale(.65);opacity:0}}@keyframes fov-throw{0%{transform:translateY(18px) rotate(0) scale(1)}70%{opacity:1}to{transform:translate(-27vw,-36vh) rotate(540deg) scale(.3);opacity:0}}@keyframes fov-point{0%{transform:translateY(15px) rotate(-10deg)}35%{transform:translate(-16vw,-16vh) rotate(-24deg);opacity:1}to{transform:translate(-18vw,-18vh) rotate(-24deg);opacity:0}}.stage .scene-fallback{height:100%}.stage h3{font-size:12px;text-transform:none;font-weight:800;letter-spacing:.01em;color:#adb8ca;margin:0 0 8px}.stage small{font-size:12px;color:#7b8dab}.stage section{margin:0}.topbar,.left-panel,.right-panel,.dock,.banner,.tabbar{z-index:20}.left-panel,.right-panel,.dock{background:var(--glass);border:1px solid var(--edge);border-radius:14px;box-shadow:0 10px 30px #0007;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.slim{padding:.45rem .7rem;font-size:13px;display:inline-flex;align-items:center;gap:6px}.slim em,.quick em{font-style:normal}.topbar{position:absolute;top:0;left:0;right:0;height:60px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:0 14px;background:linear-gradient(#090e16f0,#090e1600)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:8px;min-width:0}.topbar-right{justify-content:flex-end}.view-toggle.on{border-color:#7bb9dc;background:#1a2841;color:#e8ebf0}.topbar .room-code{font-size:12px;color:#c3cbd8;border-left:0;padding-left:0;white-space:nowrap}.phase-pill{position:relative;overflow:hidden;display:flex;align-items:baseline;gap:12px;padding:8px 18px;border-radius:999px;background:var(--glass);border:1px solid var(--edge);white-space:nowrap}.phase-pill b{font-size:12px;letter-spacing:.14em;color:#e9b48f}.phase-pill strong{font:600 22px var(--font-display);color:var(--text-hi);min-width:2.6em;text-align:right}.phase-pill i{position:absolute;left:0;bottom:0;height:3px;width:100%;background:linear-gradient(90deg,#e6804d,#ffcf7a);transform-origin:left;transition:transform .25s linear}.quick{display:flex;gap:4px}.quick button{padding:.45rem .6rem;font-size:13px;display:inline-flex;align-items:center;gap:6px}.quick button.on{border-color:#5fb98a;background:#1a283f}.quick button.off{border-color:#b95f4f;background:#3a2422}.banner{position:absolute;top:72px;left:50%;transform:translate(-50%);max-width:min(560px,calc(100% - 700px));padding:10px 18px;border-radius:12px;background:#2a1a14ee;border:1px solid #87583d;color:#ffe2c8;font:600 16px var(--font-display);text-align:center;box-shadow:0 10px 30px #0008}.sunrise-skip{position:absolute;z-index:24;top:76px;left:50%;transform:translate(-50%);padding:.5rem .9rem;border-color:#ffd18a88;background:#241a16cc;color:#ffe8c5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.stage.dawn-opening .scene:before{content:"";position:absolute;z-index:12;inset:0;pointer-events:none;background:radial-gradient(ellipse 55% 20% at 50% 53%,rgba(2,6,10,calc(var(--dawn-shade) * .78)) 0,rgba(2,6,10,var(--dawn-shade)) 78%);box-shadow:inset 0 calc(42vh * var(--dawn-shade)) 0 #02060a,inset 0 calc(-42vh * var(--dawn-shade)) 0 #02060a}.death-symbol{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;font-size:34px;font-weight:800;line-height:1;animation:death-symbol-rise 2.5s cubic-bezier(.18,.7,.25,1) forwards;pointer-events:none}.death-hearts{font-size:40px}.death-feathers,.death-confetti{transform:rotate(-12deg)}@keyframes death-symbol-rise{0%{opacity:0;transform:translateY(12px) scale(.45)}18%{opacity:1;transform:translateY(0) scale(1.16)}70%{opacity:.85;transform:translateY(-24px) scale(1)}to{opacity:0;transform:translateY(-52px) scale(.72)}}.left-panel{position:absolute;top:72px;left:14px;bottom:14px;width:330px;display:flex;flex-direction:column;padding:10px;min-height:0}.panel-tabs{display:flex;gap:4px;margin-bottom:8px}.panel-tabs button,.tabbar button{flex:1;padding:.45rem;font-size:13px;background:transparent;border-color:transparent;position:relative}.panel-tabs button.active,.tabbar button.active{background:#1b2941;border-color:var(--edge);color:var(--text-hi)}.badge{display:inline-block;margin-left:6px;min-width:18px;padding:0 5px;border-radius:9px;background:#e6804d;color:#fff;font-size:11px;line-height:18px}.left-panel .chat-panel{flex:1;display:flex;flex-direction:column;min-height:0}.left-panel .chat-panel .section-title{display:none}.left-panel .chat-panel .messages{flex:1;max-height:none;min-height:0;background:#070b1280}.messages article header{font-size:11px}.messages article p{font-size:14px}.log{flex:1;overflow:auto;display:grid;gap:12px;align-content:start;padding-right:4px}.log .history{font-size:13px;color:#b0bbcd}.log .ballot-results{padding:10px;border-radius:10px;background:#0b111b}.vote-totals span{font-size:12px}.ballot-results summary{font-size:12px}.right-panel{position:absolute;top:72px;right:14px;width:270px;max-height:calc(100% - 86px);overflow:auto;padding:12px}.right-panel .section-title span{font-size:11px}.roster .player-main{padding:8px;border-radius:8px}.roster .player-main>span{font-size:14px!important;color:var(--text)!important}.roster b,.roster em{font-size:10px}.roster small{font-size:11px}.roster li.selected .player-main{background:#3a3020;box-shadow:inset 0 0 0 1px var(--gold)}.roster li.speaking .player-main{box-shadow:inset 0 0 0 2px #5fdc96}.roster .player-main:not(:disabled):hover{background:#19263c}.dock{position:absolute;bottom:14px;left:358px;right:298px;margin:0 auto;max-width:720px;display:flex;gap:12px;padding:10px;align-items:stretch}.dock .role-card{flex:0 0 210px;padding:10px 12px;border-radius:10px}.dock .role-card h3{font-size:22px}.dock .role-card span{font-size:12px}.dock .role-card small{margin-top:5px;font-size:12px}.dock-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px}.dock-prompt{margin:0;font:600 17px var(--font-display);color:var(--text-hi);line-height:1.3}.dock-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.dock-buttons button{padding:.6rem 1rem;font-size:14px}.dock-buttons .ready-on{border-color:#5fb98a;background:#1a283f}.dock-choice{padding:.5rem .8rem;border-radius:8px;background:#3a3020;border:1px solid #ffd27a88;color:#ffe2a8;font-weight:700;font-size:14px}.dock-note{font-size:12px!important;color:#94a2bb!important}.dock-note b{color:#8bd7aa}.dock .winner{padding:0!important;border:0!important;background:none;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.dock .winner h3{margin:0;font-size:24px}kbd{padding:1px 6px;border-radius:5px;border:1px solid #304a77;background:#131d2f;font:inherit;font-size:11px}.ptt{color:#8bd7aa!important}.tabbar{display:none}.modal-backdrop{position:fixed;inset:0;z-index:60;background:#020708b8;display:grid;place-items:center;padding:16px}.modal{width:min(620px,100%);max-height:min(86vh,800px);display:flex;flex-direction:column;background:linear-gradient(180deg,#121c2c,#0b111c);border:1px solid var(--edge);border-radius:16px;box-shadow:0 30px 80px #000a}.modal>header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--edge)}.modal h2{margin:0;font:600 24px var(--font-display)}.modal-body{overflow:auto;padding:16px 18px 20px;display:grid;gap:18px}.modal-body section{border:0;padding:0}.modal-body small{font-size:12px}.modal-body .settings-section{padding:14px;border:1px solid #20314e;border-radius:12px;background:#0a0f1899}.voice-status-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;background:#101827;border:1px solid #233554}.voice-status-card>i{width:10px;height:10px;border-radius:50%;background:#6a7d9f;box-shadow:0 0 0 4px #6a7d9f20}.voice-status-card.connected>i{background:#48d597;box-shadow:0 0 0 4px #48d59722,0 0 10px #48d59766}.voice-status-card>span{display:grid;min-width:0;gap:2px}.voice-status-card b{font-size:14px;color:#eef4ef}.voice-status-card small{color:#8696b1!important;line-height:1.35}.voice-status-card button{min-width:104px;padding:.55rem .75rem}.voice-status-card .disconnect{border-color:#91474c;background:#3d2427;color:#ffc0c3}.settings-group{display:grid;gap:8px;margin-top:14px}.settings-field-title,.settings-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-field-title>span,.settings-section-heading>span{display:grid;gap:2px}.settings-field-title b{font-size:13px;color:#dadfe7}.settings-field-title small,.settings-section-heading small{color:#7688a7!important;line-height:1.35}.compact{padding:.42rem .7rem;font-size:11px;white-space:nowrap}.voice-panel select{margin:0;padding:.7rem}.mic-test-group .meter{height:9px;margin:1px 0 0;border:1px solid #1c2b45}.voice-mode{border:0;padding:0;margin:16px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.voice-mode legend{grid-column:1/-1;width:100%;margin-bottom:7px;font-size:12px;font-weight:700;color:#dadfe7}.voice-mode button{min-height:78px;display:grid;align-content:center;gap:4px;text-align:left;padding:10px 12px}.voice-mode button b{font-size:13px}.voice-mode button small{font-size:10px!important;line-height:1.35;color:#8393af!important}.voice-mode button.active{border-color:var(--fire);background:#39281f;box-shadow:inset 0 0 0 1px #df754455}.voice-mode button.active small{color:#e7cbbb!important}.settings-footnote{margin:12px 0 0;padding-top:10px;border-top:1px solid #1c2b44;color:#7486a6;font-size:11px}.settings-section-heading h3{margin:0!important;color:#dadfe7!important}.sound-panel .volume-list{margin-top:12px}.sound-panel .volume-list.muted{opacity:.45}.sound-panel .volume-list label{grid-template-columns:5.5rem 1fr;align-items:center;margin:9px 0}@media(max-width:560px){.voice-status-card{grid-template-columns:auto minmax(0,1fr)}.voice-status-card button{grid-column:1/-1;width:100%}.voice-mode{grid-template-columns:1fr}}.controls-intro{margin:0;color:#9eabc1;line-height:1.5}.controls-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.controls-grid article{padding:12px;border:1px solid #20314e;border-radius:11px;background:#0a0f1899}.controls-grid h3{margin-bottom:10px!important;color:#e1e8e3!important}.controls-grid dl{margin:0;display:grid;gap:8px}.controls-grid dl>div{display:grid;gap:3px;padding-bottom:8px;border-bottom:1px solid #1c2b44}.controls-grid dl>div:last-child{border-bottom:0;padding-bottom:0}.controls-grid dt{font-size:12px;font-weight:700;color:#ecd8c7}.controls-grid dd{margin:0;font-size:11px;line-height:1.35;color:#8393af}.controls-tip{margin:0;padding:10px 12px;border-radius:9px;background:#141e30;color:#b2bccd;font-size:12px}.lobby-settings{display:grid;gap:12px}.setup-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.setup-summary>span{display:grid;place-items:center;padding:8px;border:1px solid #20314f;border-radius:9px;background:#0b111b}.setup-summary b{font-size:14px;color:#f3e8d8}.setup-summary small{font-size:9px!important;text-transform:none;font-weight:800;letter-spacing:.01em;color:#6e81a2!important}.setup-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:4px;border-radius:10px;background:#090d15}.setup-tabs button{border:0;background:transparent;padding:.55rem;font-size:12px}.setup-tabs button small{display:block;font-size:9px!important;color:#6e81a2!important}.setup-tabs button.active{background:#1b2941;color:var(--text-hi);box-shadow:inset 0 0 0 1px #2c446d}.setup-pane{display:grid;gap:12px;min-height:275px;align-content:start}.setup-heading{display:flex;justify-content:space-between;align-items:end;gap:12px}.setup-heading h3{margin:0!important;color:#dde1e9!important}.setup-heading small{max-width:62%;text-align:right;color:#7688a8!important}.setup-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.setup-presets button,.deck-mode button,.preset-row button{display:grid;align-content:start;gap:4px;text-align:left;padding:10px}.setup-presets button b,.deck-mode button b,.preset-row button b{font-size:13px}.setup-presets button small,.deck-mode button small,.preset-row button small{font-size:10px!important;line-height:1.35;color:#7b8dab!important}.setup-presets button.active,.deck-mode button.active,.preset-row button.active{border-color:var(--fire);background:#39281f;box-shadow:inset 0 0 0 1px #df754455}.setup-option-card{padding:11px 12px;border:1px solid #1e2f4b;border-radius:10px;background:#0a101999}.setup-option-card h3{margin-bottom:8px!important;color:#dadfe7!important}.setup-option-card .check-row{margin:8px 0}.deck-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px}.setup-team-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.setup-team-tabs button{padding:.5rem;border-bottom:3px solid transparent}.setup-team-tabs button.active{background:#19273e;border-color:var(--team-color);color:#fff}.lobby-settings .role-deck{max-height:62px;overflow:auto;padding:7px;border:1px solid #1c2b45;border-radius:8px;background:#090e16}.lobby-settings .preset-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0}.lobby-settings .timer-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 12px}.lobby-settings .timer-grid label{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px;margin:0;padding:7px 8px;border:1px solid #1c2b45;border-radius:8px;background:#0b111b;font-size:11px}.lobby-settings .timer-grid label>span{display:flex;align-items:center;gap:4px}.lobby-settings .timer-grid input{width:64px;padding:.4rem;text-align:right}.lobby-settings .timer-grid small{font-size:9px!important}.setup-footer{position:sticky;bottom:-20px;z-index:2;margin:2px -18px -20px;padding:10px 18px 12px;border-top:1px solid #243757;background:#0c131eef;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.setup-footer .validation{margin:0 0 8px;padding:7px 10px 7px 27px;border-radius:8px;background:#3b2020;color:#ffb6a9;font-size:11px}.setup-valid{display:block;margin-bottom:8px;color:#7bd7a0;font-size:12px;font-weight:700}.setup-footer>small{display:block;margin-top:6px;text-align:center;color:#6d80a1!important}.setup-footer .settings-actions button{font-size:12px}@media(max-width:620px){.controls-grid,.setup-presets,.deck-mode,.lobby-settings .timer-grid{grid-template-columns:1fr}.setup-pane{min-height:0}}.roles-guide ul{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:8px}.roles-guide li{display:grid;gap:2px;padding:10px;border-radius:10px;background:#0b111b}.roles-guide li span,.rulebook p{font-size:14px;color:#b0bbcd;line-height:1.5}.rulebook summary{font-size:14px}.stage .toast{position:fixed;inset:72px auto auto 50%;transform:translate(-50%);max-width:min(520px,calc(100% - 32px));font-size:13px;z-index:70;cursor:pointer}@media(max-width:1500px){.topbar-right .slim em,.topbar-right .quick em{display:none}}@media(max-width:1180px){.left-panel{width:280px}.right-panel{width:230px}.dock{left:308px;right:258px}.dock .role-card{flex-basis:170px}.slim em,.quick em{display:none}.banner{max-width:calc(100% - 600px)}}.nameplate i{font-style:normal}.nameplate b.ready{color:#7fe0a8}.nameplate b.not-ready{color:#8c9bb5}.nameplate.talking{border-color:#5fdc96;box-shadow:0 0 0 2px #5fdc9655,0 0 14px #5fdc9688;color:#f0f2f5}.chat-overlay{position:absolute;left:14px;bottom:14px;width:380px;z-index:25;display:flex;flex-direction:column;gap:6px;pointer-events:none}.chat-overlay>*{pointer-events:auto}.chat-lines{display:flex;flex-direction:column;gap:3px;max-height:34vh;overflow:hidden}.chat-line{margin:0;padding:3px 8px;border-radius:6px;font-size:14px;line-height:1.35;color:#f3eee4;text-shadow:0 1px 2px #000,0 0 6px #000;overflow-wrap:anywhere;transition:opacity 3s ease}.chat-line b{color:#fff}.chat-line .ch{font-size:12px;font-weight:700}.chat-line.fading{opacity:0}.ch-public .ch,.chat-channel.ch-public{color:#8fd0ff}.ch-lobby .ch,.chat-channel.ch-lobby{color:#c7d0ca}.ch-wolves .ch,.chat-channel.ch-wolves{color:#ff7a6b}.ch-ghosts .ch,.chat-channel.ch-ghosts{color:#b9a7ff}.ch-endgame .ch,.chat-channel.ch-endgame{color:var(--gold)}.ch-waiting .ch,.chat-channel.ch-waiting{color:#8c9bb5}.chat-overlay.open .chat-lines{overflow:auto;max-height:42vh;padding:8px 4px;border-radius:10px;background:#06090ecc;border:1px solid var(--edge)}.chat-overlay.open .chat-line{text-shadow:none}.chat-overlay form{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;background:#06090ee6;border:1px solid #e6804d88}.chat-overlay form input{flex:1;min-width:0;background:transparent;border:0;padding:.35rem 0;font-size:14px;color:#fff;outline:none}.chat-channel{font-size:12px;font-weight:700;white-space:nowrap}.chat-hint{align-self:flex-start;padding:.3rem .6rem;font-size:12px;background:#06090e99;border-color:#fff2;color:#c7d0ca}.dock{left:408px}@media(max-width:1180px){.chat-overlay{width:300px}.dock{left:328px}}.chat-overlay form input,.chat-overlay form input:focus{border:0!important;box-shadow:none!important;background:transparent!important;outline:none}.nameplate b{font-weight:600;font-size:10px}.voice-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.voice-chip{font-size:12px;padding:3px 9px;border-radius:999px;background:#131d2f;border:1px solid #2f6b55;color:#ced4df}.voice-chip.warn{background:#3a2422;border-color:#b95f4f;color:#ffd8d0}.voice-chip.live{box-shadow:0 0 0 2px #5fdc9677,0 0 12px #5fdc9688}.voice-console{display:grid;grid-template-columns:minmax(145px,1fr) auto;align-items:center;gap:7px 10px;padding:7px 8px;border:1px solid #1e2e4a;border-radius:10px;background:linear-gradient(180deg,#0f1624ee,#090e16ee);box-shadow:inset 0 1px #ffffff08}.voice-connection{display:flex;align-items:center;gap:8px;min-width:0}.voice-connection>i{width:9px;height:9px;border-radius:50%;background:#6a7d9f;box-shadow:0 0 0 3px #6a7d9f22;flex:none;transition:background .2s,box-shadow .2s}.voice-console.connected .voice-connection>i{background:#48d597;box-shadow:0 0 0 3px #48d59722,0 0 8px #48d59766}.voice-console.speaking .voice-connection>i{box-shadow:0 0 0 4px #48d59744,0 0 13px #48d597aa}.voice-connection span{display:grid;min-width:0}.voice-connection b{font-size:12px;color:#e7eee9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-connection small{font-size:10px!important;color:#8191ae!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-console-actions{display:flex;gap:5px}.voice-control{min-width:46px;height:43px;padding:4px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-color:#243757;background:#131c2d}.voice-control span{font-size:15px;line-height:1}.voice-control small{font-size:8px!important;color:#b7c1d1!important;line-height:1.1}.voice-control.danger,.voice-control.disconnect{background:#4a2528;border-color:#b94e55;color:#ffb0b4}.voice-control.join{background:#172439;border-color:#459a70;color:#bff4d5}.voice-control:disabled{opacity:.42;cursor:not-allowed}.voice-mode-hint{grid-column:1/-1;color:#8394b0!important;font-size:10px!important}.voice-console>.ptt-button{grid-column:1/-1;justify-self:stretch;width:100%}.ptt-button{min-height:46px;padding:.45rem .8rem;display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:8px;text-align:left;font-size:13px;user-select:none;-webkit-user-select:none;touch-action:none}.ptt-button>span{grid-row:1/3;font-size:18px}.ptt-button>b{line-height:1.15}.ptt-button>small{font-size:9px!important;color:#8394b0!important}.ptt-button:active,.ptt-button.held{background:#18243a;border-color:#5fdc96;box-shadow:inset 0 0 0 1px #5fdc9655,0 0 12px #5fdc9633}.ptt-button.held>span{color:#62e59f;filter:drop-shadow(0 0 5px #62e59f)}@media(pointer:coarse){.ptt-button{min-height:58px;font-size:15px}.ptt-button>small{font-size:10px!important}}@media(max-width:1300px){.voice-console{grid-template-columns:1fr}.voice-console-actions{justify-content:stretch}.voice-control{flex:1}}.team-village{--team:var(--team-village)}.team-wolf{--team:var(--team-wolf)}.team-neutral{--team:var(--team-neutral)}.role-card{border-left:3px solid var(--team,#654237)}.role-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start}.role-card-copy{min-width:0}.role-glyph{display:block;flex:0 0 auto;overflow:visible;color:var(--team,#ff9c64)}.role-glyph-halo{fill:color-mix(in srgb,var(--team,#ff9c64) 13%,transparent);stroke:color-mix(in srgb,var(--team,#ff9c64) 55%,transparent);stroke-width:1.5}.role-glyph-ring{fill:none;stroke:color-mix(in srgb,var(--team,#ff9c64) 42%,transparent);stroke-width:1;stroke-dasharray:2 5}.role-glyph-mark{fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px color-mix(in srgb,currentColor 45%,transparent))}.role-glyph-claw .role-glyph-mark{stroke-width:5}.role-gallery{min-height:100vh;padding:44px clamp(18px,4vw,64px) 80px;background:radial-gradient(circle at 50% 0,#1d2c46 0,#0d1420 28%,var(--night-0) 70%);color:var(--paper)}.role-gallery header{max-width:1100px;margin:0 auto 34px}.role-gallery header p{margin:0 0 8px;color:#d79067;font-size:11px;letter-spacing:.2em}.role-gallery h1{margin:0;font:700 clamp(38px,6vw,72px)/.95 var(--font-display);color:var(--text-hi)}.role-gallery header span{display:block;margin-top:14px;color:#a3afc4}.role-gallery section{max-width:1100px;margin:0 auto 34px}.role-gallery section>h2{display:flex;align-items:baseline;gap:10px;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid color-mix(in srgb,var(--team-color) 45%,transparent);font:600 24px var(--font-display);color:var(--team-color)}.role-gallery section>h2 small{font:10px var(--font-body);text-transform:none;font-weight:800;letter-spacing:.01em;color:#7083a4}.role-gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px}.role-gallery-card{display:flex;align-items:center;gap:11px;min-height:104px;padding:12px;border:1px solid #ffffff14;border-left:2px solid var(--team);border-radius:12px;background:linear-gradient(135deg,#111b2bdd,#0a101add);box-shadow:inset 0 1px #ffffff0b}.role-gallery-card>.role-glyph{color:var(--team)}.role-gallery-card b{display:block;color:#f5eadc;font:600 16px var(--font-display)}.role-gallery-card small{display:block;margin-top:4px;color:#7587a6;font-size:10px;text-transform:none;font-weight:800;letter-spacing:.01em}.role-card small.alert{color:#ffcf7a}.role-card small.lovers{color:#ff8fc0}.role-deck span{border-left:3px solid var(--team,#314b79)}.night-call{position:absolute;top:72px;left:50%;transform:translate(-50%);z-index:5;padding:8px 18px;border-radius:999px;background:#101826ee;border:1px solid #3c5a86;color:#e2e6ec;font:600 15px var(--font-display);white-space:nowrap;pointer-events:none}.night-call.night-sequence{--night-primary:#9cbcf0;--night-secondary:#263f68;z-index:18;width:min(620px,calc(100vw - 660px));min-width:430px;min-height:70px;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:11px;padding:9px 13px;border-radius:16px;border-color:color-mix(in srgb,var(--night-primary) 62%,transparent);background:linear-gradient(115deg,#090e17f2,color-mix(in srgb,var(--night-secondary) 58%,#090e17) 62%,#090e17ed);box-shadow:0 12px 34px #0009,inset 0 1px #ffffff12;white-space:normal;overflow:hidden;animation:night-call-in .65s cubic-bezier(.2,.8,.2,1) both}.night-icon{position:relative;z-index:2;width:48px;height:48px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--night-primary) 72%,transparent);border-radius:50%;background:#090e16bb;font-size:27px;filter:drop-shadow(0 0 10px var(--night-primary))}.night-copy{position:relative;z-index:2;display:grid;min-width:0;gap:1px}.night-copy small{text-transform:none;font-weight:800;letter-spacing:.01em;color:var(--night-primary)!important;font-size:9px!important}.night-copy b{overflow:hidden;text-overflow:ellipsis;font:600 18px var(--font-display);color:#fff5e9}.night-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:normal 11px/1.3 var(--font-body);color:#a7b3c7}.night-status{position:relative;z-index:2;display:grid;justify-items:end;gap:3px;max-width:160px}.night-status b{font:700 11px var(--font-body);color:var(--night-primary);text-align:right}.night-status strong{font:600 20px var(--font-display);color:#fff}.night-orbit{position:absolute;left:6px;top:1px;width:64px;height:64px;animation:night-orbit 9s linear infinite}.night-orbit i{position:absolute;left:30px;top:30px;width:4px;height:4px;border-radius:50%;background:var(--night-primary);box-shadow:0 0 8px var(--night-primary);transform:rotate(calc(var(--i,0) * 60deg)) translate(29px)}.night-orbit i:nth-child(1){--i:0}.night-orbit i:nth-child(2){--i:1}.night-orbit i:nth-child(3){--i:2}.night-orbit i:nth-child(4){--i:3}.night-orbit i:nth-child(5){--i:4}.night-orbit i:nth-child(6){--i:5}@keyframes night-call-in{0%{opacity:0;transform:translate(-50%,-10px) scale(.97)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes night-orbit{to{transform:rotate(360deg)}}.action-symbol{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;font-size:31px;line-height:1;background:#090e16cc;animation:action-symbol-pop .9s cubic-bezier(.2,.8,.2,1) forwards;pointer-events:none}.action-flash{position:absolute;z-index:19;left:50%;top:46%;width:100px;height:100px;display:grid;place-items:center;transform:translate(-50%,-50%);border:2px solid var(--action-color);border-radius:50%;background:color-mix(in srgb,var(--action-color) 16%,transparent);box-shadow:0 0 35px color-mix(in srgb,var(--action-color) 70%,transparent);pointer-events:none;animation:action-flash .9s ease-out forwards}.action-flash b{font-size:46px;filter:drop-shadow(0 0 12px var(--action-color))}@keyframes action-symbol-pop{0%{opacity:0;transform:translateY(12px) scale(.4)}30%{opacity:1;transform:translateY(0) scale(1.15)}to{opacity:0;transform:translateY(-28px) scale(.75)}}@keyframes action-flash{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}25%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.7)}}.ballot-tray{display:grid;gap:8px;padding:10px 11px!important;border:1px solid #6b5434!important;border-radius:11px;background:linear-gradient(135deg,#211b15dd,#0b111cdd)}.ballot-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.ballot-heading>span{display:grid;gap:2px}.ballot-heading small{font-size:9px!important;text-transform:none;font-weight:800;letter-spacing:.01em;color:#d8a66e!important}.ballot-heading b{font-size:12px;color:var(--text)}.ballot-heading strong{font-size:11px;color:var(--gold);text-align:right}.ballot-tray>p{margin:0;color:#94a2bb;font-size:12px}.ballot-choice{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;background:#090e17;border:1px solid #253859}.ballot-choice small{text-transform:none;font-weight:800;letter-spacing:.01em;font-size:9px!important}.ballot-choice b{font-size:15px;color:#fff1df}.ballot-choice.pending{border-color:#ffd27a88;box-shadow:inset 3px 0 var(--gold)}.ballot-choice.submitted{border-color:#5fb98a66;box-shadow:inset 3px 0 #5fb98a}.ballot-actions{display:flex;flex-wrap:wrap;gap:7px}.ballot-actions button{padding:.5rem .75rem;font-size:12px}.ballot-actions button.selected{border-color:var(--gold);background:#3a3020}.ballot-actions .primary{margin-left:auto}.ballot-cast{color:#8bd7aa!important;font-weight:700}.skip-control{position:relative;overflow:hidden;width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;padding:7px 10px;text-align:left;border-color:#2c436a;background:#0e1623}.skip-control>span:first-child{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#1b2942;color:#d2d8e2}.skip-control>span:nth-child(2){display:grid;gap:1px}.skip-control b{font-size:12px}.skip-control small{font-size:10px!important;color:#8192af!important}.skip-control>i{position:absolute;left:0;right:0;bottom:0;height:3px;background:#1c2c46}.skip-control>i em{display:block;height:100%;background:linear-gradient(90deg,#7bb9dc,#8bd7aa);transition:width .25s ease}.skip-control.requested{border-color:#5fb98a;background:#152032}.skip-control.requested>span:first-child{background:#2b684d;color:#ebeef3}.sunrise-skip{display:grid!important;gap:1px;text-align:left}.sunrise-skip span{font-weight:700}.sunrise-skip small{font-size:9px!important;color:#d8c5a8!important}.sunrise-skip kbd{font-size:9px;padding:0 4px}@media(max-width:1180px)and (min-width:901px){.night-call.night-sequence{width:min(510px,calc(100vw - 540px));min-width:360px}.night-copy em{display:none}.night-status{max-width:120px}}@media(max-width:900px){.night-call.night-sequence{top:116px;width:calc(100% - 20px);min-width:0;grid-template-columns:43px minmax(0,1fr) auto;min-height:58px;padding:7px 9px}.night-icon{width:40px;height:40px;font-size:23px}.night-copy b{font-size:15px}.night-copy em{display:none}.night-status{max-width:105px}.night-status b{font-size:9px}.night-status strong{font-size:17px}.night-orbit{display:none}.ballot-actions .primary{margin-left:0;flex:1}.sunrise-skip{top:186px!important}}@media(max-width:520px){.night-status b{display:none}.night-copy b{font-size:14px}.ballot-heading{align-items:flex-start;flex-direction:column}.ballot-heading strong{text-align:left}}.banner p{margin:2px 0}.stage.eyes-closed .scene:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,#02060acc 0,#02060af2 70%);pointer-events:none;transition:opacity .6s}.stage.peeking .scene:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 30% 24% at 50% 50%,transparent 0 92%,#02060af5 100%)}.seat-overhead{display:flex;gap:4px;justify-content:center;margin-bottom:3px;font-size:16px;text-shadow:0 1px 3px #000}.seat-badge{display:grid;place-items:center;width:25px;height:25px;font-style:normal;filter:drop-shadow(0 2px 3px #000)}.status-icon{display:block;width:100%;height:100%;overflow:visible;color:#e8d8bd}.status-icon-disc{fill:#090e17e8;stroke:currentColor;stroke-width:1}.status-icon-mark{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.status-icon-mark circle:not(.status-icon-disc){fill:none}.status-icon-slash{stroke:#ff746b;stroke-width:2.5}.status-mayor{color:var(--gold)}.status-raven{color:#b6b4ca}.status-asleep{color:#69ddd3}.status-bomb{color:#ff9a64}.status-voteBanned,.status-silenced{color:#ff9a91}.status-lover{color:#ff8fc0}.status-oiled{color:#d8a66e}.status-charmed{color:#67dfb5}.status-model{color:#8fd36b}.status-wolf,.status-visionWolf{color:#ff7a6b}.status-vision{color:#9cc8ff}.status-candle{color:#ffe39b}.vote-count{padding:1px 7px;border-radius:999px;background:#c85d32;color:#fff;font-size:12px}.vote-dots{display:inline-flex;gap:2px;margin-left:5px;vertical-align:middle}.vote-dots i{width:7px;height:7px;border-radius:50%;box-shadow:0 0 0 1px #0008}.vote-chip{margin-bottom:3px;padding:1px 8px;border:2px solid;border-radius:999px;background:#0c121cdd;color:#fff3e2;font-size:12px;font-weight:600;white-space:nowrap;text-shadow:0 1px 2px #000}.ballot-board{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #1c2b44}.ballot-board h3{margin:0 0 6px}.ballot-board ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px}.ballot-board li{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:7px;min-width:0;font-size:12px}.ballot-board li i{width:9px;height:9px;border-radius:50%}.ballot-board li b{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ballot-board li span{max-width:110px;color:var(--gold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ballot-board li em{font-style:normal;color:#7d8eac;white-space:nowrap}.ballot-board .section-title span{flex:none;white-space:nowrap}.ballot-board li.ballot-blank em{color:#c7d0ca}.ballot-mist{margin:4px 0;font-size:12px;line-height:1.4;color:#d3d9e3}.nameplate-anchor{display:flex;flex-direction:column;align-items:center}.nameplate.bomb-holder{border:2px solid #ff7a3d;color:#fff3e2;animation:bomb-pulse .7s ease-in-out infinite alternate}@keyframes bomb-pulse{0%{box-shadow:0 0 #ff7a3d00}to{box-shadow:0 0 14px 3px #ff7a3daa}}.bomb-blast{font-size:54px;filter:drop-shadow(0 0 18px #ff8a2a)}@media(prefers-reduced-motion:reduce){.nameplate.bomb-holder{animation:none;box-shadow:0 0 10px 2px #ff7a3d88}}.roster-badge{display:grid;place-items:center;width:18px;height:18px;background:none!important;padding:0!important}.roster-badge .status-icon{width:18px;height:18px}.roster-votes{background:#c85d32!important;color:#fff!important}.end-screen{display:grid;gap:10px;width:100%}.end-screen h2{margin:0;font:700 28px var(--font-display);color:var(--text-hi)}.end-screen .won{color:var(--gold);margin:0;font-weight:700}.end-screen .lost{color:var(--muted);margin:0}.end-roster{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));gap:6px;min-width:0}.end-roster li{display:grid;grid-template-columns:22px minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.end-roster li.winner{padding:6px 8px!important;border-color:#c8a04a;background:#2a2412}.end-roster li.dead b{opacity:.6}.end-roster b,.end-roster em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.end-roster em{color:var(--muted);font-size:12px;font-style:normal}.end-roster li>i{font-style:normal}.dock .end-roster li{display:grid;flex-wrap:nowrap;gap:8px;padding:6px 8px!important;border:1px solid var(--line)!important;background:var(--surface)}.dock .end-roster li.winner{border-color:#c8a04a!important;background:#2a2412}.role-team h4{margin:14px 0 6px;font-size:12px;letter-spacing:.01em;text-transform:none;font-weight:800}.ban-grid{display:flex;flex-wrap:wrap;gap:6px}.ban-grid button{padding:.4rem .7rem;font-size:13px}.ban-grid button.banned{background:#4a1f1a;border-color:#c0503c;text-decoration:line-through}.preset-row{display:flex;gap:6px;margin:8px 0}.check-row small{display:block;color:var(--muted);font-size:11px}.check-row.inline{display:inline-flex;align-items:center;gap:6px;margin:0}.check-row.inline input{width:auto}button.danger{background:#7d2a20;border-color:#c0503c;color:#fff}.chat-channel{padding:.2rem .6rem;font-size:12px}.ch-lovers .ch,.chat-channel.ch-lovers{color:#ff8fc0}.roles-guide li.in-deck b{color:var(--gold)}.history .ev-deaths{color:#ffb4a0}.history .ev-end{color:var(--gold);font-weight:700}.gate-card{position:relative}.gate-card>.lang-switch{position:absolute;top:14px;right:14px}.lang-switch{display:inline-flex;gap:2px;padding:3px;background:var(--well);border:1px solid var(--line);border-radius:8px}.lang-switch button{border:0;background:transparent;padding:.32rem .65rem;font-size:11px;letter-spacing:.04em}.lang-switch button.active{background:var(--surface-3);color:#fff}.roster .player-main{grid-template-columns:10px minmax(4.5rem,1fr) auto auto auto auto;row-gap:1px}.roster .player-main>span:first-of-type,.roster .player-main>small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster .player-main>small{grid-row:2;grid-column:2/-1}.sound-panel .volume-list label.look-slider{grid-template-columns:1fr auto;row-gap:8px}.look-slider b{font-variant-numeric:tabular-nums;color:var(--paper)}.look-slider input{grid-column:1/-1}.roster .player-main>b,.roster .player-main>em{white-space:nowrap}.role-art{position:relative;display:block;flex:0 0 auto;width:76px;height:92px;overflow:hidden;border-radius:8px;border:1px solid color-mix(in srgb,var(--team,#ff9c64) 55%,transparent);background:#090d15;box-shadow:0 7px 18px #0007}.role-art>img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.role-art-sigil{position:absolute;right:4px;bottom:4px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#090e16d9;border:1px solid color-mix(in srgb,var(--team,#ff9c64) 70%,transparent);box-shadow:0 2px 9px #000b}.role-art-sigil .role-glyph{width:26px;height:26px}.role-art-sigil .role-glyph-halo{fill:transparent}.role-art-sigil .role-glyph-ring{display:none}.role-art-sigil .role-glyph-mark{stroke-width:6}.role-gallery-card>.role-art{width:76px;height:76px;border-radius:9px}.role-chip-art{width:22px;height:22px;border-radius:50%;border:1px solid color-mix(in srgb,var(--team,#c9a46a) 60%,transparent);box-shadow:none}.role-chip-art>img{object-position:center 18%}.role-chip-art.unknown{display:grid;place-items:center;flex:0 0 22px;background:#131c2d;color:var(--muted);font-size:11px}.lobby-settings .role-deck{max-height:84px;gap:6px}.role-deck .role-chip>span{display:inline-flex;align-items:center;gap:7px;padding:3px 11px 3px 3px;border:1px solid #ffffff14;border-left:0;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--team) 14%,#0f1725),#0f1725 60%);color:#d9dfdb;font-size:12px;cursor:help;outline:none}.role-deck .role-chip>span:focus-visible{box-shadow:0 0 0 2px var(--gilt)}.role-deck .role-chip b{color:var(--gilt);font-weight:600;font-variant-numeric:tabular-nums}.role-deck span.role-chip{padding:0;background:none;border:0;border-radius:0}.modal.modal-wide{width:min(880px,100%)}.role-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px}.role-tile{position:relative;display:flex;flex-direction:column;border-radius:12px;background:linear-gradient(180deg,#111b2b,#0b101a);border:1px solid #ffffff12;box-shadow:0 10px 24px #0006;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.role-tile:hover,.role-tile.open{transform:translateY(-2px);border-color:color-mix(in srgb,var(--team) 45%,transparent);box-shadow:0 14px 30px #0008,0 0 0 1px color-mix(in srgb,var(--team) 25%,transparent)}.role-tile.picked{border-color:var(--gilt-soft);box-shadow:0 12px 28px #0007,0 0 22px color-mix(in srgb,var(--gilt) 22%,transparent)}.role-tile-face{position:relative;display:block;aspect-ratio:3/4;overflow:hidden;border-radius:11px 11px 0 0;cursor:help;outline:none}.role-tile-face:focus-visible{box-shadow:inset 0 0 0 2px var(--gilt)}.role-tile-art.role-art{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;box-shadow:none}.role-tile-art>img{object-position:center 22%;transition:transform .5s ease,filter .3s ease;filter:saturate(.82) brightness(.92)}.role-tile:hover .role-tile-art>img,.role-tile.picked .role-tile-art>img{transform:scale(1.04);filter:saturate(1) brightness(1)}.role-tile-face:before{content:"";position:absolute;inset:6px;z-index:2;border:1px solid #c9a46a40;border-radius:7px;pointer-events:none}.role-tile-face:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,transparent 42%,#080c14e6 86%);pointer-events:none}.role-tile .role-art-sigil{top:10px;right:10px;bottom:auto;width:26px;height:26px;z-index:3;opacity:.9}.role-tile .role-art-sigil .role-glyph{width:20px;height:20px}.role-tile-count{position:absolute;top:10px;left:10px;z-index:3;min-width:24px;height:24px;display:grid;place-items:center;padding:0 6px;border-radius:999px;background:var(--gilt);color:#1a1209;font:700 12px/1 var(--font-body);box-shadow:0 2px 8px #0009}.role-tile-name{position:absolute;left:0;right:0;bottom:0;z-index:3;display:grid;gap:2px;padding:0 12px 11px}.role-tile-name small{font-size:9px!important;letter-spacing:.01em;text-transform:none;font-weight:800;color:color-mix(in srgb,var(--team) 80%,#fff)!important;opacity:.9}.role-tile-name strong{font:600 16px/1.15 var(--font-display);color:#f6ead8;text-shadow:0 1px 8px #000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:root:lang(vi) .role-tile-name strong{font-weight:600;font-size:14px}.role-tile-stepper{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-top:1px solid #ffffff0f}.role-tile-stepper button{border:0;border-radius:0;background:transparent;padding:.42rem 0;font-size:16px;line-height:1;color:#c3cbd8}.role-tile-stepper button:first-child{border-bottom-left-radius:11px}.role-tile-stepper button:last-child{border-bottom-right-radius:11px}.role-tile-stepper button:hover:not(:disabled),.role-tile-stepper button:focus-visible{background:#ffffff0d;color:var(--gilt)}.role-tile-stepper button:disabled{opacity:.25}.role-tile-stepper b{min-width:22px;text-align:center;font-variant-numeric:tabular-nums;color:var(--text)}.role-tile:not(.picked) .role-tile-stepper b{color:#556786}.ban-grid{gap:7px}.ban-grid button{display:inline-flex;align-items:center;gap:8px;padding:3px 12px 3px 3px;border-radius:999px;font-size:12px;background:#0f1725;border-color:#ffffff14}.ban-grid button.banned{background:#3a1a17;border-color:#a8483a;text-decoration:none;color:#ffb5a6}.ban-grid button.banned .role-chip-art{filter:grayscale(1) brightness(.7)}.role-hint-pop{position:fixed;z-index:80;pointer-events:none;animation:role-hint-in .16s ease-out}.role-hint-pop.above{transform:translateY(-100%)}.role-hint-card{display:grid;grid-template-columns:86px minmax(0,1fr);gap:13px;padding:12px;border-radius:12px;background:linear-gradient(160deg,#131e30,#0a1019);border:1px solid #c9a46a3d;box-shadow:0 22px 50px #000c,inset 0 1px #ffffff0d;text-align:left}.role-hint-art.role-art{width:86px;height:118px;border-radius:8px;border-color:color-mix(in srgb,var(--team) 45%,transparent)}.role-hint-art>img{object-position:center 22%}.role-hint-copy{display:grid;align-content:start;gap:5px;min-width:0}.role-hint-meta{display:flex;gap:6px;align-items:center;font-size:10px;letter-spacing:.01em;text-transform:none;font-weight:800;color:#7d8eac}.role-hint-meta b{font-weight:700}.role-hint-meta i{font-style:normal;opacity:.5}.role-hint-copy strong{font:600 18px/1.15 var(--font-display);color:var(--text-hi)}:root:lang(vi) .role-hint-copy strong{font-size:16px}.role-hint-text{font-size:12.5px;line-height:1.5;color:#bfc7d6}.role-hint-copy small{font-size:10px;color:var(--gilt);letter-spacing:.06em}@keyframes role-hint-in{0%{opacity:0;margin-top:4px}to{opacity:1;margin-top:0}}@media(max-width:620px){.role-tiles{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:9px}.role-tile-name strong{font-size:14px}}.roles-guide li.guide-role{display:grid;grid-template-columns:54px minmax(0,1fr);gap:13px;align-items:start;padding:10px;border:1px solid #ffffff0d;border-radius:12px;background:linear-gradient(90deg,color-mix(in srgb,var(--team) 7%,#0c121d),#0a101a)}.guide-role-art.role-art{width:54px;height:72px;border-radius:7px}.guide-role-art>img{object-position:center 22%}.guide-role-art .role-art-sigil{display:none}.guide-role>div{display:grid;gap:3px;min-width:0}.guide-role b{font:600 17px var(--font-display);color:#f4e8d6}:root:lang(vi) .guide-role b{font-size:15px}.guide-role b em{margin-left:6px;font:600 10px var(--font-body);letter-spacing:.08em;color:var(--gilt);font-style:normal}.guide-role b em.guide-count{margin:0 6px 0 0;font-size:13px}.guide-role small{font-size:10px!important;letter-spacing:.01em;text-transform:none;font-weight:800;color:color-mix(in srgb,var(--team) 70%,#7d8eac)!important}.roles-guide li.guide-role.in-deck{border-color:#c9a46a4d}.roles-guide li.in-deck b{color:#ffe6c2}.end-roster li .role-chip-art{flex:0 0 22px}.role-card-view{padding:0;border:0;background:none;border-radius:8px}.role-card-view:hover:not(:disabled),.role-card-view:focus-visible{background:none;box-shadow:0 0 0 2px var(--gilt)}.role-card .role-art>img{object-position:center 22%}.reveal-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-content:center;justify-items:center;gap:18px;padding:16px;background:radial-gradient(circle at 50% 45%,#1b120dcc,#030709f2 70%);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);perspective:1400px;cursor:pointer;animation:reveal-fade .4s ease-out}.role-flip{--w:min(330px,78vw, calc((100dvh - 120px)*.66) );position:relative;width:var(--w);aspect-ratio:2/3;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.2,.75,.2,1);animation:card-deal .8s cubic-bezier(.2,.8,.2,1) backwards;outline:none;border-radius:18px}.reveal-backdrop.reopened .role-flip{animation:card-rise .35s ease-out backwards}.role-flip:focus-visible{box-shadow:0 0 0 3px var(--gilt)}.role-flip.flipped{transform:rotateY(180deg)}.role-flip:not(.flipped):hover{transform:translateY(-4px) rotateX(3deg)}.role-flip .face{position:absolute;inset:0;display:block;overflow:hidden;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 40px 90px #000d,0 0 0 1px #c9a46a55}.card-frame{position:absolute;inset:10px;z-index:3;border:1px solid #c9a46a73;border-radius:11px;pointer-events:none}.card-frame:before{content:"";position:absolute;inset:4px;border:1px solid #c9a46a2e;border-radius:8px}.role-flip .back{display:grid;place-items:center;align-content:center;gap:14px;background:radial-gradient(circle at 50% 42%,#3a2416 0,#1a110c 46%,#06090f)}.role-flip .back:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,#c9a46a0d 0 1px,transparent 1px 14px),repeating-linear-gradient(-45deg,#c9a46a0d 0 1px,transparent 1px 14px)}.role-flip .back:after{content:"";position:absolute;inset:-40%;background:linear-gradient(105deg,transparent 42%,#ffe9c41f 50%,transparent 58%);animation:card-sheen 3.6s ease-in-out infinite}.card-back-emblem{position:relative;z-index:2;width:46%;fill:none;stroke:var(--gilt);stroke-width:1.4;stroke-linecap:round;filter:drop-shadow(0 0 12px #e08a4b55)}.card-back-emblem .card-back-moon{fill:#c9a46a26}.card-back-emblem .card-back-flame{fill:#df754433;stroke:#e9925e}.card-back-title{position:relative;z-index:2;font:500 12px var(--font-display);letter-spacing:.01em;text-transform:none;font-weight:800;color:#d8b986;padding-left:.42em}.role-flip .front{transform:rotateY(180deg);background:#090d15;box-shadow:0 40px 90px #000d,0 0 0 1px color-mix(in srgb,var(--team) 60%,#c9a46a),0 0 70px color-mix(in srgb,var(--team) 28%,transparent)}.role-reveal-art.role-art{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;box-shadow:none}.role-reveal-art>img{object-position:center 18%}.role-flip .front:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#05070b99 0,transparent 16%,transparent 44%,#060a10e6 70%,#060a10 100%)}.role-flip.flipped .front:before{content:"";position:absolute;inset:-40%;z-index:4;background:linear-gradient(105deg,transparent 40%,#fff4dd38 50%,transparent 60%);transform:translate(-60%);animation:card-glint 1.4s .75s ease-out forwards;pointer-events:none}.role-reveal-eyebrow{position:absolute;top:24px;left:0;right:0;z-index:3;text-align:center;font-size:10px;letter-spacing:.32em;color:#e8cfa5;text-shadow:0 1px 6px #000}.role-reveal-copy{position:absolute;left:24px;right:24px;bottom:26px;z-index:3;display:grid;justify-items:center;gap:8px;text-align:center}.role-reveal-team{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.01em;text-transform:none;font-weight:800;color:var(--team)}.role-reveal-team i{width:26px;height:1px;background:linear-gradient(90deg,transparent,currentColor)}.role-reveal-team i:last-child{transform:scaleX(-1)}.role-flip .front h2{margin:0;font:600 clamp(26px,8vw,34px)/1.05 var(--font-display);color:#fff3e2;text-shadow:0 2px 14px #000}:root:lang(vi) .role-flip .front h2{font-size:clamp(22px,6.5vw,28px)}.role-reveal-text{font-size:13px;line-height:1.5;color:#d3d0c8;text-wrap:pretty}.reveal-hint{margin:0;font-size:11px;letter-spacing:.01em;text-transform:none;font-weight:800;color:#b7a58a;animation:reveal-fade .6s .6s ease-out both}.reveal-backdrop.low .role-flip .back:after,.reveal-backdrop.low .role-flip.flipped .front:before{display:none}@keyframes reveal-fade{0%{opacity:0}to{opacity:1}}@keyframes card-deal{0%{opacity:0;transform:translateY(60px) rotate(-5deg) scale(.86)}to{opacity:1;transform:none}}@keyframes card-rise{0%{opacity:0;transform:rotateY(180deg) translateY(24px) scale(.94)}to{opacity:1;transform:rotateY(180deg)}}@keyframes card-sheen{0%,55%{transform:translate(-60%)}to{transform:translate(60%)}}@keyframes card-glint{to{transform:translate(60%)}}.dock .role-card{flex:0 0 260px;grid-template-columns:54px minmax(0,1fr);gap:11px;align-items:center;padding:9px 11px;background:linear-gradient(120deg,color-mix(in srgb,var(--team) 10%,#111a2a),#0f1724 70%);border:1px solid #ffffff12;border-left:2px solid var(--team)}.dock .role-card .role-art{width:54px;height:72px;border-radius:7px}.dock .role-card .role-art-sigil{width:22px;height:22px;right:2px;bottom:2px}.dock .role-card .role-art-sigil .role-glyph{width:17px;height:17px}.dock .role-card-copy p{font-size:9px;letter-spacing:.2em;color:#d9a77c}.dock .role-card-copy h3{margin:1px 0 3px;font:600 19px/1.1 var(--font-display);text-transform:none;letter-spacing:0;color:var(--text-hi);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:root:lang(vi) .dock .role-card-copy h3{font-size:16px}.dock .role-card-copy>span{font-size:11.5px;line-height:1.4;color:#b9bfba;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dock .role-card-copy small{margin-top:4px;font-size:11px;line-height:1.35}@media(max-width:1180px){.dock .role-card{flex-basis:220px}}@media(max-width:900px){.dock{left:auto}.dock .role-card{flex:none}}.dock.ballot-active{left:50%;right:auto;width:min(460px,calc(100% - 24px));max-width:none;max-height:calc(100dvh - 76px);transform:translate(-50%);gap:7px;padding:7px;overflow:auto}.dock.ballot-active>.role-card{display:none}.dock.ballot-active .dock-prompt{display:none}.dock.ballot-active .dock-main{gap:5px}.dock.ballot-active .ballot-tray{gap:5px;padding:7px 9px!important}.dock.ballot-active .voice-console{padding:5px 7px}.dock.ballot-active .skip-control{padding:5px 8px}.dock.terminal-active{left:50%;right:auto;width:min(820px,calc(100% - 28px));max-width:none;max-height:calc(100dvh - 86px);transform:translate(-50%);align-items:flex-start;overflow:auto}.dock.terminal-active>.role-card{flex:0 0 54px;grid-template-columns:44px;gap:0;padding:4px}.dock.terminal-active>.role-card .role-card-view{width:44px}.dock.terminal-active>.role-card .role-art{width:44px;height:58px}.dock.terminal-active>.role-card .role-card-copy{display:none}.dock.terminal-active .dock-main{width:100%}@media(max-height:520px)and (pointer:fine){.dock.ballot-active{bottom:8px}.dock.ballot-active .voice-connection small,.dock.ballot-active .voice-mode-hint{display:none}.dock.ballot-active .voice-control{min-height:36px;padding:3px 6px}.dock.ballot-active .voice-control span{font-size:14px}}.setup-footer{z-index:6}.role-tile{isolation:isolate}.role-tile-face{aspect-ratio:4/5}.role-chip-art.role-art{width:26px;height:26px}.role-chip-art>img{object-position:50% 28%;transform:scale(1.7);transform-origin:50% 30%}.role-deck .role-chip>span{padding-right:12px}.modal.modal-wide{max-height:min(94vh,980px)}@media(max-width:620px){.modal-wide .setup-summary,.modal-wide .deck-mode button small{display:none}}.feedback{position:fixed;right:16px;bottom:16px;z-index:10;display:flex;flex-direction:column;align-items:flex-end;gap:10px}.feedback-toggle{display:inline-flex;align-items:center;gap:7px;padding:.6rem 1rem;border-radius:999px;background:#0c131fe6;border-color:#4a3a32;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 26px #0008;font-size:13px}.feedback-toggle[aria-expanded=true]{border-color:#d8885e}.feedback-panel{width:min(300px,calc(100vw - 32px));padding:16px;border:1px solid #243859;border-radius:14px;background:#0c131ff2;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 18px 40px #0009}.feedback-panel-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.feedback-panel h2{font:600 17px var(--font-display);margin:0}.feedback-close{border:0;background:transparent;padding:.2rem .45rem;font-size:16px;line-height:1;color:var(--muted)}.feedback-panel p{margin:8px 0 0;font-size:12px;line-height:1.5;color:#a3afc4}.feedback-panel a{display:inline-block;margin-top:4px;color:#ff9c64;font-weight:600;white-space:nowrap}.feedback-panel a:hover,.feedback-panel a:focus-visible{color:#ffc29c}@media(max-width:640px){.gate{padding-bottom:84px}}.gate-form{display:grid}.gate-form label:first-child{margin-top:0}.gate-form>.primary{width:100%;margin-top:10px}.gate .modal{width:min(420px,100%)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.gate.lobby-page{display:block;place-items:initial;padding:0 0 96px;background:var(--night-0)}.lobby-hero{position:relative;overflow:hidden;padding:20px 16px 150px;isolation:isolate}.lobby-hero-inner{position:relative;z-index:2;width:min(1120px,100%);margin:0 auto}.lobby-backdrop{position:absolute;inset:0;z-index:-1;pointer-events:none}.lobby-sky{position:absolute;inset:0;background:radial-gradient(1px 1px at 12% 18%,#fff9 50%,transparent 52%),radial-gradient(1px 1px at 27% 42%,#fff6 50%,transparent 52%),radial-gradient(1.5px 1.5px at 41% 12%,#fffb 50%,transparent 52%),radial-gradient(1px 1px at 55% 33%,#fff7 50%,transparent 52%),radial-gradient(1px 1px at 67% 9%,#fff8 50%,transparent 52%),radial-gradient(1.5px 1.5px at 78% 27%,#fffa 50%,transparent 52%),radial-gradient(1px 1px at 89% 15%,#fff7 50%,transparent 52%),radial-gradient(1px 1px at 95% 44%,#fff5 50%,transparent 52%),radial-gradient(1px 1px at 6% 50%,#fff5 50%,transparent 52%),radial-gradient(ellipse 70% 60% at 50% 115%,#c8603a55,transparent 70%),linear-gradient(180deg,#070b12,#0d1420 55%,#111928)}.lobby-moon{position:absolute;top:44px;right:12%;width:84px;height:84px;border-radius:50%;background:radial-gradient(circle at 38% 38%,#fff7e6,#e9dcc0 55%,#c9b994);box-shadow:0 0 60px 18px #f6e7c233,0 0 140px 50px #f6e7c214;opacity:.85}.lobby-ridge{position:absolute;left:0;bottom:0;width:100%;display:block}.lobby-ridge.far{height:200px;bottom:30px;fill:#0e1521;opacity:.9}.lobby-ridge.near{height:150px;fill:var(--night-0)}.lobby-ember{position:absolute;bottom:40px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:#ffb27a;box-shadow:0 0 6px 2px #ff7b45aa;opacity:0;animation:lobby-rise var(--d) linear var(--delay) infinite}@keyframes lobby-rise{0%{transform:translate(0);opacity:0}12%{opacity:.95}70%{opacity:.6}to{transform:translate(var(--dx),-340px);opacity:0}}@media(prefers-reduced-motion:reduce){.lobby-ember{animation:none;opacity:.5;transform:translateY(-120px)}}.lobby-top{display:flex;align-items:center;justify-content:space-between;gap:16px}.lobby-brand{font-size:30px;line-height:1}.lobby-hero-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:48px;align-items:center;margin-top:40px}.gate.lobby-page .lobby-hero-copy h1{font:700 clamp(40px,6vw,72px)/1 var(--font-display);text-align:left;margin:0;background:linear-gradient(180deg,#fff4e2,#f0c9a2);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 40px #ff8a4f22}.lobby-hero-copy .lede{text-align:left;font-size:17px;max-width:520px;margin:16px 0 26px}.lobby-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:stretch}.lobby-create{padding:.85rem 1.4rem;font-size:15px}.room-code-form{display:flex;gap:8px;flex:1 1 240px;max-width:320px}.room-code-form input{letter-spacing:.14em;text-transform:uppercase;padding:.7rem .8rem;background:#090e16cc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.room-code-form input::placeholder{letter-spacing:normal;text-transform:none;color:#5a6c8c}.room-code-form button{flex:none;background:#152033cc}.lobby-stats{padding:20px;border:1px solid #ffffff1a;border-radius:18px;background:linear-gradient(160deg,#131d2ecc,#0c121ccc);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 24px 60px #0008}.lobby-stats-title{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:11px;letter-spacing:.01em;text-transform:none;font-weight:800;color:#c9a387}.live-dot{width:8px;height:8px;border-radius:50%;background:#6fcf97;box-shadow:0 0 0 3px #6fcf9726;flex:none;animation:live-pulse 2.4s ease-in-out infinite}@keyframes live-pulse{50%{box-shadow:0 0 0 6px #6fcf9710}}@media(prefers-reduced-motion:reduce){.live-dot{animation:none}}.lobby-stat-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.lobby-stat{padding:14px 12px;border-radius:12px;background:#0a0f18b3;border:1px solid #1a283f;animation:stat-in .5s ease var(--delay) both}@keyframes stat-in{0%{opacity:0;transform:translateY(6px)}}.lobby-stat b{display:block;font:700 34px/1 var(--font-display);color:#fff1de;font-variant-numeric:tabular-nums}.lobby-stat small{display:block;margin-top:6px;font-size:11px;color:#8191ae}.lobby-stat.online b{color:#9be3b9}.lobby-stat.match b{color:#f3a77d}.lobby-body{position:relative;z-index:3;width:min(1120px,100%);margin:-96px auto 0;padding:0 16px}.room-browser{border:1px solid #203250;background:linear-gradient(180deg,#0e1623f2,#0a101af2);box-shadow:0 30px 80px #0009;border-radius:20px;padding:22px 24px 20px}.room-browser-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.room-browser h2{font:600 24px var(--font-display);margin:0}.room-browser-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.room-filters{display:inline-flex;gap:2px;padding:3px;background:var(--well);border:1px solid #1a283f;border-radius:10px}.room-filters button{border:0;background:transparent;padding:.4rem .8rem;font-size:12px;display:inline-flex;align-items:center;gap:6px}.room-filters button.active{background:var(--surface-3);color:#fff}.room-filters small{font-size:10px;padding:1px 6px;border-radius:10px;background:#ffffff12;color:#adb8ca}.room-browser-reload{flex:none;padding:.45rem .8rem;font-size:12px;white-space:nowrap}.room-browser-reload span{display:inline-block}.room-browser-reload .spinning{animation:room-spin 1s linear infinite}@keyframes room-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.room-browser-reload .spinning{animation:none}}.room-browser-note{margin:8px 0;font-size:13px;color:#7b8dab}.room-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}.room-card{position:relative;display:grid;gap:14px;padding:16px;border-radius:14px;border:1px solid #1e2d48;background:linear-gradient(170deg,#121b2b,#0c121d);overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.room-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--fire),#ffb27a)}.room-card.match:before{background:linear-gradient(90deg,#3d8bff,#7cc0ff)}.room-card.full:before{background:#263a5c}.room-card:not(.full):not(.skeleton):not(.ghost):hover{transform:translateY(-2px);border-color:#7b4a33;box-shadow:0 14px 34px #0008,0 0 0 1px #df754422}.room-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.room-card-code{font-size:15px;letter-spacing:.2em;color:#f6efe3}.room-status{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-style:normal;text-transform:none;font-weight:800;letter-spacing:.01em;padding:4px 9px;border-radius:20px;background:#1a283f;color:#8fd0ad;white-space:nowrap}.room-status.match{background:#16305a;color:#a9d2ff}.room-status.full{background:#1c2b44;color:#7b8dab}.room-card-host{display:flex;align-items:center;gap:10px;min-width:0}.room-card-host>i{flex:none;width:34px;height:34px;display:grid;place-items:center;font-style:normal}.room-card-host>span{display:grid;min-width:0}.room-card-host small{font-size:10px;letter-spacing:.01em;text-transform:none;font-weight:800;color:#6e81a2}.room-card-host strong{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-icon{display:block;width:100%;height:100%;color:var(--host-color,#e6a06f);overflow:visible}.host-icon-disc{fill:color-mix(in srgb,currentColor 20%,#090e17);stroke:currentColor;stroke-width:1}.host-icon-room,.host-icon-key{fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}.host-icon-key{stroke:var(--text-hi)}.host-badge{display:inline-flex!important;align-items:center;gap:3px}.host-badge .host-icon{width:16px;height:16px}.host-badge>span{display:inline!important;color:inherit!important;font:inherit!important;line-height:inherit!important}.seat-pips{display:grid;grid-template-columns:repeat(16,1fr);gap:4px}.seat-pips span{aspect-ratio:1;border-radius:50%;background:#162237;box-shadow:inset 0 0 0 1px #1f2f4b}.seat-pips span.on{background:radial-gradient(circle at 40% 35%,#ffc79c,var(--fire));box-shadow:0 0 6px #df754488}.seat-pips span.away{background:#6b4a3a}.room-card.match .seat-pips span.on{background:radial-gradient(circle at 40% 35%,#d6ebff,#4a97ff);box-shadow:0 0 6px #4a97ff77}.room-card-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}.room-card-foot>span{font-size:12px;color:var(--muted)}.room-card-foot button{padding:.5rem .95rem;font-size:12px;white-space:nowrap}.room-card.skeleton{min-height:176px;background:linear-gradient(100deg,#0f1624 30%,#141e30,#0f1624 70%);background-size:300% 100%;animation:skeleton 1.4s ease infinite}.room-card.skeleton:before{display:none}@keyframes skeleton{to{background-position:-150% 0}}.room-empty{display:grid;grid-template-columns:auto 1fr;gap:20px 28px;align-items:center;padding:8px 4px 4px}.room-empty-fire{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#df754433,transparent 65%)}.room-empty-fire span{font-size:58px;filter:drop-shadow(0 0 18px #ff7b45);animation:flicker 3s ease-in-out infinite}@keyframes flicker{50%{transform:scale(1.06) rotate(-2deg)}}@media(prefers-reduced-motion:reduce){.room-empty-fire span{animation:none}}.room-empty h3{font:600 22px var(--font-display);margin:0 0 6px}.room-empty p{margin:0 0 14px;font-size:14px;line-height:1.5;color:var(--muted);max-width:520px}.room-grid.ghost{grid-column:1/-1}.room-card.ghost{min-height:120px;place-items:center;align-content:center;gap:4px;border-style:dashed;border-color:#1f2f4b;background:transparent;color:#3b5a8f}.room-card.ghost:before{display:none}.room-card.ghost span{font-size:22px}.room-card.ghost small{font-size:11px;letter-spacing:.01em;text-transform:none;font-weight:800}.room-pager{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:16px;font-size:12px;color:var(--muted)}.room-pager button{padding:.45rem .85rem;font-size:12px}.lobby-privacy{margin-top:16px}.legal{text-align:center;margin:8px 0 0;color:#607395;font-size:11px}.legal a{color:#9eabc1;text-underline-offset:2px}@media(max-width:800px){.lobby-hero{padding-bottom:130px}.lobby-hero-grid{grid-template-columns:1fr;gap:28px;margin-top:36px}.lobby-moon{width:56px;height:56px;top:70px;right:8%}}@media(max-width:560px){.lobby-moon{display:none}.lobby-hero{padding:16px 16px 120px}.lobby-hero-copy .lede{font-size:15px}.lobby-actions{flex-direction:column}.lobby-create{width:100%}.room-code-form{max-width:none;flex:auto}.lobby-stats{padding:14px}.lobby-stat{padding:10px 8px}.lobby-stat b{font-size:26px}.lobby-stat small{font-size:10px}.lobby-body{margin-top:-84px}.room-browser{padding:16px 14px;border-radius:16px}.room-browser-head{align-items:flex-start}.room-browser-tools{width:100%;justify-content:space-between}.room-empty{grid-template-columns:1fr;justify-items:center;text-align:center}.room-empty p{margin-inline:auto}.room-grid{grid-template-columns:1fr}}.roles-guide .guide-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px;margin:0 0 14px}.roles-guide .guide-grid li.guide-role{grid-template-columns:42px minmax(0,1fr);gap:11px;padding:9px 10px;align-items:start}.guide-grid .guide-role-art.role-art{width:42px;height:56px;border-radius:6px}.guide-grid .guide-role>div{gap:1px}.guide-grid .guide-role b{font-size:14px;display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px}.guide-grid .guide-role b em.guide-count{margin:0}.guide-grid .guide-role span{font-size:12.5px;line-height:1.45}.guide-in-play{margin:0!important;padding:1px 7px;border-radius:10px;background:#c9a46a26;font-size:9px!important;text-transform:none;font-weight:800}.roles-guide h3 small{margin-left:6px;font-size:11px;color:#6e81a2;letter-spacing:0}.codex-bar{position:sticky;top:-16px;z-index:2;display:grid;gap:10px;margin:-16px -18px 14px;padding:14px 18px 12px;background:linear-gradient(180deg,#111b2b 85%,#111b2b00);border-bottom:1px solid #ffffff0d}.codex-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:3px;background:var(--well);border:1px solid #1a283f;border-radius:10px;width:max-content;max-width:100%}.codex-tabs button{border:0;background:transparent;padding:.42rem .85rem;font-size:13px;display:inline-flex;align-items:center;gap:6px}.codex-tabs button.active{background:var(--surface-3);color:#fff;box-shadow:inset 0 -2px 0 var(--team-color,var(--fire))}.codex-tabs small{font-size:10px;padding:1px 6px;border-radius:10px;background:#ffffff12;color:#adb8ca}.codex-filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.codex-filters input[type=search]{flex:1 1 220px;max-width:340px;padding:.55rem .75rem}.codex-toggle{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:13px;cursor:pointer;white-space:nowrap}.codex-toggle input{width:auto;accent-color:var(--fire)}@media(max-width:560px){.roles-guide .guide-grid{grid-template-columns:1fr}.codex-filters input[type=search]{max-width:none}}.roles-guide{min-width:0}.roles-guide .guide-grid{grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr))}.codex-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.codex-tabs::-webkit-scrollbar{display:none}.codex-tabs button{flex:none}@media(max-width:560px){.codex-tabs{width:100%}.codex-tabs button{flex:1 0 auto;padding:.42rem .6rem;justify-content:center}.codex-filters{display:grid;gap:8px}.codex-filters input[type=search]{flex:none;width:100%}}@media(max-width:560px){.codex-tabs small{display:none}.codex-tabs button{padding:.42rem .5rem;font-size:12.5px}}.codex-bar>input[type=search]{max-width:340px;padding:.55rem .75rem}.codex-hidden-deck{padding:28px 16px;border:1px dashed #20314f;border-radius:12px;text-align:center;color:#aeb9cc;font-size:14px}@media(max-width:560px){.codex-bar>input[type=search]{max-width:none}}@media(max-width:560px){.codex-tabs{flex-wrap:wrap;overflow:visible}.codex-tabs button{flex:1 1 auto}}.stage.mobile{position:fixed;left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);overflow:hidden;overscroll-behavior:none}.stage.mobile .scene{inset:0 0 var(--sheet-peek,128px) 0}.stage.mobile .topbar{height:auto;min-height:52px;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;padding:calc(6px + env(safe-area-inset-top,0px)) calc(10px + env(safe-area-inset-right,0px)) 6px calc(10px + env(safe-area-inset-left,0px));z-index:30}.stage.mobile .topbar-left{min-width:0;overflow:hidden}.stage.mobile .topbar-left .slim{display:none}.stage.mobile .topbar .room-code{overflow:hidden;text-overflow:ellipsis;font-size:12px}.stage.mobile .phase-pill{padding:6px 12px;gap:8px}.stage.mobile .phase-pill b{font-size:11px}.stage.mobile .phase-pill strong{font-size:18px;min-width:2.2em}.more-toggle{min-width:44px;min-height:44px;justify-content:center;font-size:20px;line-height:1}.more-toggle.on{border-color:#d8885e}.stage.mobile .topbar-right{display:none}.stage.mobile .topbar-right.open{position:absolute;top:calc(100% + 4px);right:calc(10px + env(safe-area-inset-right,0px));z-index:40;display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:210px;padding:8px;border:1px solid var(--edge);border-radius:12px;background:#0a101af5;box-shadow:0 18px 40px #000a}.stage.mobile .topbar-right.open .slim,.stage.mobile .topbar-right.open .quick button{width:100%;min-height:44px;justify-content:flex-start;font-size:15px}.stage.mobile .topbar-right.open em{display:inline}.menu-scrim{position:absolute;inset:0;z-index:29}.stage.mobile .night-call,.stage.mobile .night-call.night-sequence{top:calc(60px + env(safe-area-inset-top,0px))}.stage.mobile .banner{top:calc(60px + env(safe-area-inset-top,0px));max-width:calc(100% - 20px);width:max-content;font-size:15px}.stage.mobile .sunrise-skip{top:calc(128px + env(safe-area-inset-top,0px))!important}.stage.mobile .toast{top:calc(60px + env(safe-area-inset-top,0px))}.mobile-sheet{position:absolute;left:0;right:0;bottom:0;z-index:22;display:flex;flex-direction:column;min-height:0;padding:0 env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:linear-gradient(180deg,#0f1724f7,#0a0f18fa);border-top:1px solid var(--edge);border-radius:18px 18px 0 0;box-shadow:0 -14px 40px #0009;transition:height .26s cubic-bezier(.2,.8,.2,1)}.mobile-sheet.dragging{transition:none}.sheet-head{flex:none}.sheet-grip{display:block;width:100%;height:22px;padding:0;border:0;border-radius:18px 18px 0 0;background:transparent;touch-action:none;cursor:grab}.sheet-grip i{display:block;width:44px;height:5px;margin:8px auto 0;border-radius:3px;background:#385588}.sheet-grip:hover:not(:disabled),.sheet-grip:focus-visible{background:transparent}.sheet-grip:focus-visible i{background:#d8885e}.sheet-bar{display:flex;align-items:center;gap:10px;min-height:56px;padding:2px 12px 6px}.sheet-prompt{flex:1;min-width:0;margin:0;font:600 16px/1.3 var(--font-display);color:var(--text-hi);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.role-chip{flex:none;display:flex;align-items:center;gap:8px;max-width:42%;min-height:48px;padding:4px 10px 4px 4px;border-radius:10px;border-color:color-mix(in srgb,var(--team) 45%,#243757);background:color-mix(in srgb,var(--team) 10%,#101928);text-align:left}.role-chip .role-art{width:36px;height:46px;border-radius:6px;box-shadow:none}.role-chip .role-art-sigil{display:none}.role-chip span:not(.role-art){display:grid;min-width:0}.role-chip small{font-size:10px!important;letter-spacing:.16em;color:#d9a77c!important}.role-chip b{font:600 15px/1.15 var(--font-display);color:var(--text-hi);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mic-button{flex:none;width:56px;min-height:52px;padding:4px;display:grid;justify-items:center;align-content:center;gap:1px;border-radius:12px;touch-action:none;user-select:none;-webkit-user-select:none}.mic-button span{font-size:20px;line-height:1}.mic-button small{font-size:10px!important;color:#c7d0ca!important;line-height:1.1}.mic-button.join{background:#172439;border-color:#459a70}.mic-button.muted{background:#4a2528;border-color:#b94e55}.mic-button.live.speaking,.mic-button.held{background:#18243a;border-color:#5fdc96;box-shadow:0 0 0 2px #5fdc9655,0 0 14px #5fdc9666}.sheet-tabs{display:flex;gap:4px;padding:0 10px 8px}.sheet-tabs button{flex:1;min-height:44px;padding:.4rem;font-size:14px;background:transparent;border-color:transparent;position:relative}.sheet-tabs button.active{background:#1b2941;border-color:var(--edge);color:var(--text-hi)}.sheet-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:4px 12px 16px;border-top:1px solid #ffffff0d}.sheet-body>*{display:grid;gap:12px;align-content:start}.sheet-body .dock-buttons button{min-height:46px;font-size:15px}.sheet-body .lobby-buttons{display:grid;grid-template-columns:1fr 1fr}.sheet-body .lobby-buttons button{width:100%;padding:.6rem .5rem}.sheet-body .lobby-buttons .primary{grid-column:1/-1;order:-1}.sheet-body .dock-prompt{display:none}.sheet-body .role-card{padding:12px}.sheet-body .role-card small{font-size:13px}.sheet-body .ballot-tray button{min-height:46px}.sheet-body .voice-console{grid-template-columns:minmax(0,1fr) auto}.sheet-body .voice-console-actions{justify-content:flex-end;flex:none}.sheet-body .voice-control{flex:0 0 46px;min-height:48px}.sheet-body .voice-console>.ptt-button{grid-column:1/-1}.sheet-body .roster .player-main{min-height:48px}.sheet-body .roster b,.sheet-body .roster em{font-size:11px}.sheet-body .roster small{font-size:12px}.sheet-body .peer-audio{grid-template-columns:40px minmax(0,1fr);margin-left:16px}.sheet-body .peer-audio button{width:40px;min-height:40px;padding:0;font-size:16px}.sheet-body .peer-audio-icon{display:inline}.sheet-body .peer-audio-text{display:none}.sheet-body .peer-audio label{grid-template-columns:auto minmax(0,1fr);font-size:10px}.sheet-body .log .history{font-size:14px}.sheet-body .chat-overlay{position:static;width:auto;display:flex;height:100%;min-height:0;pointer-events:auto}.sheet-body>.chat-overlay{display:flex}.sheet-body .chat-overlay .chat-lines,.sheet-body .chat-overlay.open .chat-lines{flex:1;max-height:none;min-height:0;padding:8px 4px;border-radius:10px;background:#06090e99}.sheet-body .chat-overlay form{padding:6px 8px}.sheet-body .chat-overlay .chat-channel{min-height:40px;padding:.3rem .6rem}.sheet-body:has(>.chat-overlay){display:flex;flex-direction:column;padding-bottom:10px}.target-picker h3{margin:2px 0 8px}.target-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}.target-grid button{display:flex;align-items:center;gap:8px;min-height:52px;padding:.5rem .7rem;text-align:left;font-size:15px}.target-grid button i{flex:none;width:12px;height:12px;border-radius:50%}.target-grid button span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-grid button em{font-style:normal;font-size:11px;color:#7eb59c}.target-grid button b{font-size:12px;color:var(--gold)}.target-grid button.selected{background:#3a3020;border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.stage.mobile.landscape .scene{inset:0 min(360px,46vw) 0 0}.stage.mobile.landscape .mobile-sheet{top:0;left:auto;width:min(360px,46vw);height:auto!important;border-radius:0;border-top:0;border-left:1px solid var(--edge);padding-top:env(safe-area-inset-top,0px)}.stage.mobile.landscape .topbar{right:min(360px,46vw)}.stage.mobile.landscape .sheet-bar{padding-top:8px}@media(pointer:coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font-size:16px!important}}body{background:radial-gradient(ellipse 80% 50% at 50% 110%,#3a2414 0,#141d33 45%,var(--night-0) 75%) fixed,var(--night-0)}::selection{background:#ff8a3d66;color:#fff}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}h1,h2{font-family:var(--font-display);font-weight:800;letter-spacing:0}a{color:var(--fire-hot)}button{border-radius:var(--radius);border-color:var(--line-strong);background:var(--surface-3);color:var(--text-hi);font-weight:700}button:hover:not(:disabled),button:focus-visible{border-color:#5a7cb8;background:#2f4774}button:focus-visible{outline:3px solid #7cb6ff;outline-offset:2px}.primary,.lobby-actions button,.room-card-foot button,.room-browser-reload,.room-pager button,.dock-buttons button,.ballot-actions button,.settings-actions button,.gate-form button,.feedback-toggle,.voice-status-card button{box-shadow:0 4px 0 var(--edge);transition:transform .08s ease,box-shadow .08s ease,background .15s ease}:is(.primary,.lobby-actions button,.room-card-foot button,.room-browser-reload,.room-pager button,.dock-buttons button,.ballot-actions button,.settings-actions button,.gate-form button,.feedback-toggle,.voice-status-card button):hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 0 var(--edge)}:is(.primary,.lobby-actions button,.room-card-foot button,.room-browser-reload,.room-pager button,.dock-buttons button,.ballot-actions button,.settings-actions button,.gate-form button,.feedback-toggle,.voice-status-card button):active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.primary,.primary:hover:not(:disabled){border:0;background:linear-gradient(180deg,var(--fire-hot),var(--fire));color:var(--fire-ink);font-family:var(--font-display);font-weight:800;box-shadow:0 4px 0 var(--fire-deep),0 8px 20px #ff7a2a33}.primary:hover:not(:disabled){background:linear-gradient(180deg,#ffc070,#ff9548);box-shadow:0 5px 0 var(--fire-deep),0 10px 26px #ff7a2a55}.primary:active:not(:disabled){box-shadow:0 1px 0 var(--fire-deep)}.primary:disabled{filter:saturate(.3) brightness(.8)}button.danger,.voice-status-card .disconnect{background:var(--red-deep);border-color:var(--red);color:#fff}.dock-buttons .ready-on{background:var(--green-deep);border-color:var(--green);color:#fff}input,select{border-radius:var(--radius);border:2px solid var(--line);background:var(--well);color:var(--text-hi)}input:focus,select:focus{border-color:var(--sky);box-shadow:0 0 0 3px #3d8bff33}input::placeholder{color:#7c8db0}input[type=range],input[type=checkbox],input[type=radio]{border:0;accent-color:var(--fire)}kbd{display:inline-block;min-width:1.7em;padding:1px 6px;border:1px solid var(--line-strong);border-bottom-width:3px;border-radius:6px;background:var(--surface-3);color:#fff;font:800 11px/1.4 var(--font-body);text-align:center}.modal,.room-browser,.feedback-panel,.role-hint-card{border:2px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-2)}.left-panel,.right-panel,.dock{border:2px solid #2a3d62cc;border-radius:var(--radius-lg);background:#121c31e6}.modal>header{border-bottom:2px solid var(--line)}.modal>header button{width:38px;height:38px;padding:0;display:grid;place-items:center;border-radius:50%}.modal-backdrop{background:#050a14cc}.modal-body .settings-section,.controls-grid article,.setup-option-card,.voice-status-card{border:2px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}.stage h3,.modal h3,.section-title h3{font-family:var(--font-display);font-weight:700;font-size:15px;color:#fff}.section-title span,.stage small{color:var(--muted)}.setup-tabs,.room-filters,.codex-tabs,.lang-switch{border:0;border-radius:var(--radius);background:var(--well);padding:4px}.setup-tabs button,.room-filters button,.codex-tabs button,.lang-switch button,.sheet-tabs button{border:0;border-radius:9px;background:transparent;color:var(--muted);box-shadow:none}.setup-tabs button:hover:not(:disabled),.room-filters button:hover:not(:disabled),.codex-tabs button:hover:not(:disabled),.lang-switch button:hover:not(:disabled),.sheet-tabs button:hover:not(:disabled){background:#ffffff0f;color:#fff}.setup-tabs button.active,.room-filters button.active,.codex-tabs button.active,.lang-switch button.active,.sheet-tabs button.active{background:var(--sky-deep);color:#fff;box-shadow:0 2px 0 var(--edge)}.room-filters small,.codex-tabs small{background:#fff2;color:#fff;font-weight:800}.setup-presets button.active,.deck-mode button.active,.preset-row button.active,.voice-mode button.active{border-color:var(--fire);background:#3a2a22;box-shadow:inset 0 0 0 1px var(--fire)}.topbar{background:linear-gradient(#0c1424f0,#0c142400)}.mini-fire,.lobby-brand{display:inline-grid;place-items:center;color:var(--fire)}.mini-fire .icon{width:24px;height:24px}.topbar .room-code{font-weight:800;letter-spacing:.06em;color:#fff}.phase-pill{border:2px solid var(--line);background:#121c31f0;box-shadow:var(--shadow-1)}.phase-pill b{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:0;color:var(--fire-hot)}.phase-pill strong{font-family:var(--font-display);font-weight:800;font-variant-numeric:tabular-nums;color:#fff}.phase-pill i{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--fire),var(--gold))}.quick button,.topbar .slim{min-width:38px;min-height:36px;justify-content:center}.quick button.on{border-color:var(--green);background:#1d4a31}.quick button.off{border-color:var(--red);background:#4a1f26}.view-toggle.on{border-color:var(--sky);background:#16305a}.icon{display:inline-block;flex:none;width:1.15em;height:1.15em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.icon .fill{fill:currentColor;stroke:none}.voice-control .icon,.mic-button .icon{width:18px;height:18px}.ptt-button>span .icon{width:22px;height:22px}.right-panel .peer-audio-icon .icon,.sheet-body .peer-audio-icon .icon{width:16px;height:16px}.loading{gap:10px;font-size:16px}.loading .icon,.scene-fallback .icon{width:64px;height:64px;color:var(--fire);filter:drop-shadow(0 0 16px #ff8a3d88);animation:flame-flicker 2.4s ease-in-out infinite}@keyframes flame-flicker{0%,to{transform:scale(1) rotate(0)}30%{transform:scale(1.05,.96) rotate(-2deg)}60%{transform:scale(.97,1.04) rotate(2deg)}}.fov-hand,.fov-effect{color:#fff}.night-icon .icon{width:26px;height:26px}.action-flash b .icon{width:46px;height:46px}.banner{border:2px solid #ff8a3d88;border-radius:var(--radius-lg);background:#2b1d18f2;color:#fff;font:700 17px var(--font-display)}.night-call.night-sequence{border-width:2px;border-radius:var(--radius-lg)}.night-copy b,.night-status strong{font-family:var(--font-display);font-weight:700}.ballot-tray{border:2px solid #ffcc4d55!important;border-radius:var(--radius)}.ballot-choice{border-radius:var(--radius-sm)}.roster .player-main{border-radius:10px}.roster li.selected .player-main{background:#3a3020;box-shadow:inset 0 0 0 2px var(--gold)}.roster li.speaking .player-main{box-shadow:inset 0 0 0 2px var(--green)}.vote-count,.roster-votes{background:var(--fire)!important;color:var(--fire-ink)!important;font-weight:800}.dock-prompt,.sheet-prompt{font-family:var(--font-display);font-weight:700}.nameplate{font-weight:800;border-width:2px;background:#0c1424d9}.nameplate.selected{border-color:var(--gold)}.role-flip .front h2,.role-tile-name strong,.guide-role b,.role-hint-copy strong,.dock .role-card-copy h3,.role-chip b,.end-screen h2{font-family:var(--font-display);font-weight:800}.end-screen h2{font-size:32px;color:#fff}.end-screen .won{color:var(--gold);font-weight:800}.end-roster li.winner,.dock .end-roster li.winner{border-color:var(--gold)!important;background:#3a3020!important}.gate.lobby-page{background:var(--night-0)}.lobby-sky{background:radial-gradient(1px 1px at 12% 18%,#fff9 50%,transparent 52%),radial-gradient(1px 1px at 27% 42%,#fff6 50%,transparent 52%),radial-gradient(1.5px 1.5px at 41% 12%,#fffb 50%,transparent 52%),radial-gradient(1px 1px at 55% 33%,#fff7 50%,transparent 52%),radial-gradient(1px 1px at 67% 9%,#fff8 50%,transparent 52%),radial-gradient(1.5px 1.5px at 78% 27%,#fffa 50%,transparent 52%),radial-gradient(1px 1px at 89% 15%,#fff7 50%,transparent 52%),radial-gradient(1px 1px at 95% 44%,#fff5 50%,transparent 52%),radial-gradient(1px 1px at 6% 50%,#fff5 50%,transparent 52%),radial-gradient(ellipse 60% 60% at 30% 115%,#ff7a2a55,transparent 70%),linear-gradient(180deg,#0a1222,#12203a 60%,#172a3a)}.lobby-ridge.far{fill:#13233a}.lobby-ridge.near{fill:var(--night-0)}.lobby-brand .icon{width:36px;height:36px}.gate.lobby-page .lobby-hero-copy h1{font:800 clamp(46px,7vw,88px)/.95 var(--font-display);background:none;-webkit-background-clip:border-box;background-clip:border-box;color:#fff;text-shadow:0 4px 0 var(--fire),0 8px 0 #7a2e08,0 14px 30px #000a}.lobby-hero-copy .lede{margin:22px 0 28px;color:var(--fire-hot);font:700 clamp(20px,2.4vw,26px)/1.3 var(--font-display)}.lobby-create{display:inline-flex;align-items:center;gap:8px;padding:.85rem 1.5rem;font-size:18px}.lobby-create .icon{stroke-width:3}.room-code-form input{font-weight:800;letter-spacing:.12em}.room-code-form input::placeholder{font-weight:600;letter-spacing:normal}.room-code-form button{background:var(--surface-3)}.lobby-stats{border:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0}.lobby-stats-title{font:700 16px var(--font-display);letter-spacing:0;text-transform:none;color:#fff}.live-dot{background:var(--green);box-shadow:0 0 0 4px #4cd07d33}.lobby-stat{border:2px solid #4cd07d55;border-radius:var(--radius-lg);background:#173a2bcc}.lobby-stat:nth-child(2){border-color:#3d8bff66;background:#16305acc}.lobby-stat:nth-child(3){border-color:#ff8a3d66;background:#3d2414cc}.lobby-stat b{font:800 36px/1 var(--font-display);color:#fff}.lobby-stat.online b{color:#8ff0b2}.lobby-stat.match b{color:var(--fire-hot)}.lobby-stat small{font-size:13px;font-weight:700;color:#d6deeb}.room-browser h2{font-size:28px}.room-card{border:2px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);box-shadow:0 4px 0 var(--edge)}.room-card:before{display:none}.room-card:not(.full):not(.skeleton):not(.ghost):hover{transform:translateY(-3px);border-color:var(--fire);box-shadow:0 7px 0 var(--edge),0 14px 30px #0008}.room-card.match:not(.full):hover{border-color:var(--sky)}.room-card-code{font:800 20px var(--font-display);letter-spacing:.08em;color:#fff}.room-status{gap:6px;padding:4px 10px;border-radius:999px;background:#1d4a31;color:#a8f5c4;font-size:13px;font-weight:800;letter-spacing:0;text-transform:none}.room-status.match{background:#16305a;color:#b5d8ff}.room-status.full{background:#2a3550;color:var(--muted)}.room-status .icon{width:14px;height:14px}.room-card-host small{font-size:12px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--muted)}.room-card-host strong{font-size:16px;font-weight:800;color:#fff}.seat-pips span{background:#24365a;box-shadow:none}.seat-pips span.on{background:var(--fire);box-shadow:0 0 6px #ff8a3d88}.room-card.match .seat-pips span.on{background:var(--sky);box-shadow:0 0 6px #3d8bff88}.room-card-foot>span{font-weight:700;color:var(--muted)}.room-card.ghost{border:2px dashed var(--line);background:transparent;box-shadow:none;color:#6d80a6}.room-card.ghost .icon{width:24px;height:24px}.room-card.skeleton{background:linear-gradient(100deg,#1a2843 30%,#22355a,#1a2843 70%);background-size:300% 100%}.room-empty-fire{color:var(--fire)}.room-empty-fire .icon{width:64px;height:64px;filter:drop-shadow(0 0 16px #ff8a3d);animation:flame-flicker 3s ease-in-out infinite}.room-empty h3{font-family:var(--font-display)}.room-browser-reload .icon{width:15px;height:15px}.room-browser-reload .spinning{display:inline-block;animation:room-spin 1s linear infinite}.feedback-toggle{border-radius:999px;background:var(--surface-3)}.feedback-toggle .icon{width:17px;height:17px}.mobile-sheet{border-top:2px solid var(--line);border-radius:20px 20px 0 0;background:var(--surface)}.sheet-grip i{background:#5a6f96}.target-grid button.selected{background:#3a3020;border-color:var(--gold);box-shadow:inset 0 0 0 2px var(--gold)}.badge{background:var(--fire);color:var(--fire-ink);font-weight:800}@media(prefers-reduced-motion:reduce){.loading .icon,.scene-fallback .icon,.room-empty-fire .icon{animation:none}}.lobby-moon{top:120px;right:3%}.lobby-brand .icon{width:40px;height:40px;stroke-width:2.6;filter:drop-shadow(0 0 12px #ff8a3d88)}.dock .role-card-copy p,.role-card p,.role-chip small,.role-reveal-eyebrow{letter-spacing:.04em!important;font-weight:800}.phase-pill b,.topbar .room-code{letter-spacing:.03em}.setup-summary small:first-letter{text-transform:uppercase}
