.phasekit-division{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--panel-2) 80%,transparent);position:relative;overflow:hidden;text-align:left}.phasekit-division .pk-row{display:flex;justify-content:space-between;gap:10px;font-size:.82rem;color:var(--muted)}.phasekit-division .pk-row b{color:var(--text);font-variant-numeric:tabular-nums}.phasekit-division .pk-title{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-weight:800}.phasekit-meter{height:8px;border-radius:999px;background:#ffffff14;overflow:hidden}.phasekit-meter>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-2),var(--accent));transition:width .35s ease}.phasekit-division.is-majority .phasekit-meter>span{animation:afx-threshold .9s ease both}.phasekit-division.is-majority .pk-title{color:var(--good, #52c28a)}.phasekit-note{margin:0;font-size:.72rem;color:var(--muted)}.phasekit-slip{position:absolute;left:14%;bottom:8px;width:22px;height:15px;border-radius:2px;background:#f2e6ca;border:1px solid #bcaa84;opacity:0;pointer-events:none;box-shadow:0 3px 7px #0007}.phasekit-division.is-casting .phasekit-slip{animation:pk-cast-ballot .72s cubic-bezier(.35,.04,.22,1) both}@keyframes pk-cast-ballot{0%{opacity:0;transform:translate(-16px,10px) rotate(-18deg)}25%{opacity:1}70%{opacity:1;transform:translate(40px,-46px) rotate(9deg) scale(.82)}to{opacity:0;transform:translate(48px,-40px) rotate(2deg) scale(.55)}}@keyframes afx-threshold{0%{filter:brightness(1)}55%{filter:brightness(2.1)}to{filter:brightness(1)}}.seat-votes.afx-bumped,.ptile .votes.afx-bumped{animation:afx-vote-add .5s cubic-bezier(.2,1.6,.4,1)}@keyframes afx-vote-add{0%{transform:scale(.4)}60%{transform:scale(1.25)}to{transform:scale(1)}}.ring .seat.dead:before{content:"";position:absolute;top:-6px;right:-6px;bottom:14px;left:-6px;border-radius:14px;border:1px dashed color-mix(in srgb,var(--border) 70%,transparent);pointer-events:none}.phasekit-procession{animation:afx-procession .7s cubic-bezier(.25,.9,.3,1) both}@keyframes afx-procession{0%{transform:translate(-26%) scale(.82);opacity:.2}to{transform:none;opacity:1}}.phasekit-podium{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-size:.72rem;font-weight:700}.phasekit-mic{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:700;color:var(--muted)}.phasekit-mic .pk-dot{width:9px;height:9px;border-radius:50%;background:currentColor;flex:none}.phasekit-mic.is-live{color:#3e8bff}.phasekit-mic.is-live .pk-dot{animation:afx-mic 1.4s ease-out infinite}@keyframes afx-mic{0%{box-shadow:0 0 #3e8bffcc}to{box-shadow:0 0 0 9px #3e8bff00}}.phasekit-sealed{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;color:var(--muted)}.phasekit-reveal{animation:afx-ballot-drop .55s cubic-bezier(.2,.9,.3,1) both}@keyframes afx-ballot-drop{0%{transform:translateY(-16px) rotate(-5deg);opacity:0}to{transform:none;opacity:1}}.timer.urgent.final,.tv-timer.urgent.final{animation:afx-urgent 1s ease-in-out infinite}@keyframes afx-urgent{0%,to{transform:scale(1)}50%{transform:scale(1.07);filter:brightness(1.35)}}.seat.afx-spot:after,.ptile.afx-spot:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:14px;pointer-events:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 60%,transparent),0 0 26px color-mix(in srgb,var(--accent) 45%,transparent);animation:afx-spotlight .5s ease-out both}@keyframes afx-spotlight{0%{opacity:0;transform:scale(1.35)}to{opacity:1;transform:scale(1)}}.phasekit-order{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:10px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text);font-size:.8rem;font-weight:700}.phasekit-order .pk-mark{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-weight:900;flex:none}.phasekit-order.is-confirmed{animation:afx-stamp .42s cubic-bezier(.2,1.6,.4,1) both}.phasekit-order.is-withdrawn{border-color:var(--border);background:transparent;color:var(--muted);animation:afx-retract .5s ease-in both}.phasekit-order.is-withdrawn .pk-mark{background:var(--border);color:var(--text)}@keyframes afx-stamp{0%{transform:scale(1.45) rotate(-6deg);opacity:0}to{transform:none;opacity:1}}@keyframes afx-retract{0%{transform:none;opacity:1}to{transform:translateY(-10px) scale(.94);opacity:.55}}.phasekit-link{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:700;white-space:nowrap;border:1px solid color-mix(in srgb,var(--warn, #e8a84b) 45%,transparent);background:color-mix(in srgb,var(--warn, #e8a84b) 14%,transparent);color:var(--warn, #e8a84b)}.phasekit-link.is-synced{border-color:color-mix(in srgb,var(--good, #52c28a) 45%,transparent);background:color-mix(in srgb,var(--good, #52c28a) 14%,transparent);color:var(--good, #52c28a)}.phasekit-link .pk-spin{display:inline-block;animation:afx-spin 1.1s linear infinite}@keyframes afx-spin{to{transform:rotate(360deg)}}.phasekit-outcome{--pk-tone: var(--muted);position:relative;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:12px;border-radius:14px;overflow:hidden;border:1px solid color-mix(in srgb,var(--pk-tone) 55%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--pk-tone) 16%,var(--panel)),var(--panel))}.phasekit-outcome.tone-success{--pk-tone: #52c28a}.phasekit-outcome.tone-info{--pk-tone: #3e8bff}.phasekit-outcome.tone-warning{--pk-tone: #e8a84b}.phasekit-outcome.tone-danger{--pk-tone: #e05260}.phasekit-outcome-art{position:relative;width:74px;height:74px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#0c0c11;border:1px solid #ffffff1f;flex:none}.phasekit-outcome-art .pk-symbol{position:absolute;z-index:5;right:0;bottom:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--pk-tone);color:#09090d;font-weight:900;animation:pk-pop .45s cubic-bezier(.2,1.7,.4,1)}.phasekit-outcome-art:before,.phasekit-outcome-art:after{content:"";position:absolute;pointer-events:none}.phasekit-outcome.effect-doctor .phasekit-outcome-art:before{top:10px;right:10px;bottom:10px;left:10px;border:2px solid #52c28a;border-radius:50%;animation:pk-heal 1.6s ease-out infinite}.phasekit-outcome.effect-bodyguard .phasekit-outcome-art:before{top:4px;right:4px;bottom:4px;left:4px;border:3px solid #72a8ff;clip-path:polygon(50% 0,94% 18%,86% 72%,50% 100%,14% 72%,6% 18%);animation:pk-shield .7s cubic-bezier(.2,1.5,.4,1) both}.phasekit-outcome.effect-scan .phasekit-outcome-art:after{left:6px;right:6px;height:2px;top:18%;z-index:3;background:linear-gradient(90deg,transparent,#3e8bff,transparent);box-shadow:0 0 12px #3e8bff;animation:pk-scan 1.9s ease-in-out infinite}.phasekit-outcome.effect-blocked .phasekit-outcome-art{animation:pk-blocked .38s ease-in-out}.phasekit-outcome-copy .pk-kicker{margin:0;color:var(--pk-tone);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:.66rem}.phasekit-outcome-copy h3{margin:3px 0;font-size:1rem}.phasekit-outcome-copy .pk-body{color:var(--muted);font-size:.84rem}.phasekit-dismiss{position:absolute;right:6px;top:4px;border:0;background:transparent;color:var(--muted);font-size:1.2rem;line-height:1;cursor:pointer;padding:4px 6px}@keyframes pk-pop{0%{transform:scale(.2) rotate(-20deg)}to{transform:scale(1)}}@keyframes pk-heal{0%{transform:scale(.72);opacity:.8}to{transform:scale(1.35);opacity:0}}@keyframes pk-shield{0%{transform:scale(.35) rotate(-15deg);opacity:0}to{transform:scale(1);opacity:.75}}@keyframes pk-scan{0%,to{top:18%;opacity:.25}50%{top:76%;opacity:1}}@keyframes pk-blocked{0%,to{transform:none}30%{transform:translate(-6px)}65%{transform:translate(6px)}}.phasekit-memorial{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:flex-end}.phasekit-memorial .pk-name{display:grid;justify-items:center;gap:2px;font-size:.85rem;color:var(--muted)}.phasekit-candle{width:10px;height:26px;border-radius:3px;background:linear-gradient(#f3e6c8,#b59a63);position:relative}.phasekit-candle:after{content:"";position:absolute;left:50%;top:-11px;width:8px;height:12px;margin-left:-4px;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff3b0,#ff9d3c 60%,transparent 72%);animation:afx-flame 1.3s ease-in-out infinite alternate;transform-origin:bottom center}@keyframes afx-flame{0%{transform:scale(.92) rotate(-4deg)}to{transform:scale(1.08) rotate(4deg)}}.phasekit-paper{display:grid;gap:2px;justify-items:center;padding:10px 18px;border-radius:6px;background:linear-gradient(#f4ecd8,#ddd0b0);color:#2a2318;border:1px solid #b7a888;box-shadow:0 10px 26px #0007;animation:afx-paper .6s cubic-bezier(.2,.9,.3,1) both;max-width:min(680px,90%);margin:0 auto 10px}.phasekit-paper .pk-masthead{font-family:Georgia,Times New Roman,serif;font-weight:800;letter-spacing:.06em;text-transform:uppercase;font-size:1.1rem}.phasekit-paper .pk-headline{font-family:Georgia,Times New Roman,serif;font-size:1.5rem;text-align:center}.phasekit-paper .pk-dateline{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#6a5c42}@keyframes afx-paper{0%{transform:translateY(26px) rotate(3deg);opacity:0}to{transform:none;opacity:1}}.skyline .win.alive{animation:afx-window-life var(--pk-life, 7s) ease-in-out infinite}@keyframes afx-window-life{0%,to{opacity:.25}35%{opacity:.95}55%{opacity:.45}75%{opacity:.9}}.timeline.phasekit-recap>div{animation:afx-recap-node .4s ease-out both;animation-delay:calc(var(--i, 0) * 45ms)}@keyframes afx-recap-node{0%{transform:translateY(6px) scale(.98);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.phasekit-division .phasekit-slip,.phasekit-candle:after{display:none}.phasekit-division *,.phasekit-outcome *,.phasekit-outcome,.phasekit-order,.phasekit-paper,.phasekit-procession,.phasekit-mic .pk-dot,.phasekit-link .pk-spin,.phasekit-reveal,.timeline.phasekit-recap>div,.skyline .win.alive,.seat-votes.afx-bumped,.ptile .votes.afx-bumped,.timer.urgent.final,.tv-timer.urgent.final,.seat.afx-spot:after,.ptile.afx-spot:after{animation:none!important;opacity:1;transform:none!important}}.seat-face,.role-portrait.seat-face{border-radius:50%;overflow:hidden;filter:grayscale(.35) brightness(.9)}.seat-face img{border-radius:50%}.role-card.turning{animation:pk-card-turn .75s cubic-bezier(.2,.8,.3,1) both;transform-style:preserve-3d}.role-card.turning .reveal-portrait{animation:pk-portrait-in .75s cubic-bezier(.2,1.4,.4,1) .25s both}@keyframes pk-card-turn{0%{transform:perspective(900px) rotateY(88deg) scale(.92);opacity:0}60%{transform:perspective(900px) rotateY(-6deg) scale(1.01);opacity:1}to{transform:none;opacity:1}}@keyframes pk-portrait-in{0%{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}.curtain-call{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:4px 0 2px}.curtain-call .bow{display:grid;justify-items:center;gap:2px;width:74px;animation:pk-bow .5s cubic-bezier(.2,.9,.3,1) both;animation-delay:calc(var(--i, 0) * 70ms)}.curtain-call .bow .role-portrait{border-radius:12px;overflow:hidden;border:2px solid var(--border)}.curtain-call .bow.town .role-portrait{border-color:color-mix(in srgb,#3e8bff 60%,transparent)}.curtain-call .bow.mafia .role-portrait{border-color:color-mix(in srgb,#e05260 60%,transparent)}.curtain-call .bow.neutral .role-portrait{border-color:color-mix(in srgb,#b98af5 60%,transparent)}.curtain-call .bow.won .role-portrait{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}.curtain-call .bow.won{transform:translateY(-4px)}@keyframes pk-bow{0%{transform:translateY(14px) scale(.9);opacity:0}to{opacity:1}}.tv-sweep{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60;opacity:0;background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--accent) 22%,transparent) 50%,transparent 70%)}.tv.phase-turning .tv-sweep{animation:pk-sweep .85s cubic-bezier(.4,0,.2,1) both}@keyframes pk-sweep{0%{opacity:0;transform:translate(-60%)}35%{opacity:1}to{opacity:0;transform:translate(60%)}}@media (prefers-reduced-motion: reduce){.role-card.turning,.role-card.turning .reveal-portrait,.curtain-call .bow,.tv.phase-turning .tv-sweep{animation:none!important;opacity:1;transform:none!important}.tv-sweep{display:none}}.fx-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;pointer-events:none;display:grid;place-items:center;animation:fxSettle var(--d) linear forwards}@keyframes fxSettle{0%,90%{opacity:1}to{opacity:0}}.fx-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:#000;opacity:0;animation:fxDim var(--d) ease-in-out forwards}@keyframes fxDim{0%{opacity:0}12%{opacity:.82}85%{opacity:.82}to{opacity:0}}.fx-stage{position:relative;width:min(92vw,520px);aspect-ratio:1;overflow:hidden;border-radius:24px}.fx-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:24px;opacity:0;background:radial-gradient(circle at 50% 46%,#ffffff1f,transparent 62%),radial-gradient(ellipse at 50% 78%,#00000090,transparent 70%);animation:fxDim var(--d) ease-in-out forwards}.fx-caption{position:absolute;left:0;right:0;bottom:6%;text-align:center;font-family:var(--font-display);font-size:clamp(1.4rem,6vw,2.6rem);color:#fff;text-shadow:0 3px 0 #000,0 0 18px #000;text-transform:var(--display-transform);letter-spacing:var(--display-spacing);animation:fxCap var(--d) ease-out forwards;opacity:0;padding:0 12px}.fx-caption small{display:block;font-family:var(--font-body);font-size:.45em;letter-spacing:0;text-transform:none;margin-top:4px}@keyframes fxCap{0%{opacity:0;transform:scale(.6)}18%{opacity:1;transform:scale(1.08)}26%{transform:scale(1)}85%{opacity:1}to{opacity:0}}.fx-char{position:absolute;left:50%;top:50%;width:30%;aspect-ratio:1;margin:-15% 0 0 -15%;border-radius:50%;display:grid;place-items:center;font-size:clamp(3rem,14vw,5rem)}.fx-char img,.fx-char .avatar{width:100%!important;height:100%!important;font-size:2.2rem;border:4px solid #fff;box-shadow:0 6px 20px #0008}.fx-prop{position:absolute;font-size:clamp(3rem,16vw,6rem);line-height:1}.fx-floor{position:absolute;left:10%;right:10%;top:66%;height:6px;background:#fff8;border-radius:3px}.a-trapdoor .fx-char{animation:fallDown var(--d) cubic-bezier(.55,0,.8,.4) forwards}.a-trapdoor .door{position:absolute;left:38%;width:24%;top:66%;height:6px;background:#fff;transform-origin:left center;animation:doorOpen var(--d) forwards}@keyframes doorOpen{0%,30%{transform:rotate(0)}38%,to{transform:rotate(80deg)}}@keyframes fallDown{0%,32%{transform:translateY(0)}34%{transform:translateY(-4%) scaleY(1.1)}70%,to{transform:translateY(260%) rotate(40deg)}}.a-catapult .arm{position:absolute;left:22%;top:58%;width:40%;height:6%;background:#b07a3a;border-radius:6px;transform-origin:left center;animation:armFling var(--d) forwards}.a-catapult .fx-char{left:42%;top:44%;width:22%;margin:0;animation:fling var(--d) cubic-bezier(.2,.7,.4,1) forwards}@keyframes armFling{0%,25%{transform:rotate(10deg)}35%,to{transform:rotate(-70deg)}}@keyframes fling{0%,27%{transform:translate(0) rotate(0)}70%{transform:translate(180%,-300%) rotate(720deg) scale(.4)}to{transform:translate(260%,-420%) rotate(900deg) scale(0)}}.a-boot .boot{left:-30%;top:42%;animation:bootSwing var(--d) forwards}.a-boot .fx-char{animation:kicked var(--d) cubic-bezier(.2,.7,.4,1) forwards}@keyframes bootSwing{0%{transform:translate(0) rotate(-30deg)}30%{transform:translate(120%) rotate(20deg)}45%,to{transform:translate(90%) rotate(0);opacity:.9}}@keyframes kicked{0%,28%{transform:translate(0)}75%{transform:translate(160%,-220%) rotate(540deg) scale(.3)}to{transform:translate(200%,-280%) rotate(720deg) scale(0)}}.star{position:absolute;right:12%;top:8%;font-size:2.4rem;opacity:0;animation:twinkle var(--d) forwards}@keyframes twinkle{0%,70%{opacity:0;transform:scale(0)}80%{opacity:1;transform:scale(1.4) rotate(40deg)}to{opacity:0;transform:scale(.6)}}.a-tumbleweed .fx-char{animation:runOff var(--d) ease-in forwards}.a-tumbleweed .weed{right:-30%;top:48%;animation:rollIn var(--d) linear forwards}@keyframes runOff{0%,25%{transform:translate(0)}30%{transform:translate(-5%) translateY(-6%)}to{transform:translate(-340%) translateY(0)}}@keyframes rollIn{0%{transform:translate(0) rotate(0)}to{transform:translate(-260%) rotate(-900deg)}}.a-plank .plank{position:absolute;left:10%;top:58%;width:60%;height:5%;background:#8b5a2b;border-radius:4px}.a-plank .waves{left:0;right:0;bottom:-6%;text-align:center;animation:waves 1s ease-in-out infinite alternate}.a-plank .fx-char{left:18%;top:36%;width:22%;margin:0;animation:walkPlank var(--d) forwards}@keyframes walkPlank{0%{transform:translate(0)}40%{transform:translate(170%) rotate(8deg)}48%{transform:translate(200%) translateY(-10%)}80%,to{transform:translate(230%) translateY(260%) rotate(80deg)}}@keyframes waves{to{transform:translate(4%)}}.a-airlock .panel{position:absolute;top:0;bottom:0;width:50%;background:repeating-linear-gradient(45deg,#333 0,#333 16px,#f5c400 16px,#f5c400 32px);animation:doorSlide var(--d) forwards}.a-airlock .panel.l{left:0;--dir: -1}.a-airlock .panel.r{right:0;--dir: 1}.a-airlock .space{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle,#fff 1px,transparent 1px) 0 0 / 22px 22px,#020212}.a-airlock .fx-char{animation:sucked var(--d) ease-in forwards;z-index:2}@keyframes doorSlide{0%,25%{transform:translate(0)}40%,to{transform:translate(calc(var(--dir) * 100%))}}@keyframes sucked{0%,35%{transform:scale(1) rotate(0)}to{transform:scale(0) rotate(1080deg)}}.a-anvil .drop,.a-piano .drop{left:50%;top:-40%;transform:translate(-50%);animation:dropIn var(--d) cubic-bezier(.5,0,1,.6) forwards;z-index:3}.a-anvil .fx-char,.a-piano .fx-char{animation:squash var(--d) forwards;transform-origin:bottom center}.chalk{position:absolute;left:32%;right:32%;top:56%;height:18%;border:3px dashed #fff;border-radius:50% 50% 40% 40%;opacity:0;animation:chalk var(--d) forwards}@keyframes dropIn{0%,20%{top:-40%}38%{top:30%}44%{top:26%}50%,85%{top:30%;opacity:1}to{top:30%;opacity:0}}@keyframes squash{0%,37%{transform:scale(1)}40%,to{transform:scale(1.5,.15) translateY(120%)}}@keyframes chalk{0%,60%{opacity:0}70%,to{opacity:1}}.a-wanted .poster{position:absolute;left:50%;top:50%;width:46%;aspect-ratio:3/4;background:#f1ddb0;color:#3a200d;border:4px solid #7b4a1e;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:Rye,Georgia,serif;font-size:1.5rem;transform:translate(-50%,-50%) rotate(-8deg);animation:posterFlap var(--d) forwards;z-index:3}.a-wanted .flicker{position:absolute;top:0;right:0;bottom:0;left:0;background:#000;animation:flicker var(--d) steps(1) forwards}@keyframes posterFlap{0%{transform:translate(-260%,-50%) rotate(-40deg)}30%{transform:translate(-50%,-50%) rotate(6deg)}70%{transform:translate(-50%,-50%) rotate(-6deg)}to{transform:translate(260%,-50%) rotate(40deg)}}@keyframes flicker{0%,10%{opacity:0}12%{opacity:.8}16%{opacity:0}50%{opacity:.7}54%,to{opacity:0}}.a-cork .gun{left:6%;top:40%}.a-cork .flag{position:absolute;left:34%;top:40%;background:#fff;color:#c00;font-weight:900;font-size:1.6rem;padding:4px 10px;border-radius:4px;transform-origin:left center;animation:flagOut var(--d) forwards}.a-cork .fx-char,.a-cannon .fx-char{left:70%;animation:tipOver var(--d) forwards}@keyframes flagOut{0%,20%{transform:scaleX(0)}30%,to{transform:scaleX(1)}}@keyframes tipOver{0%,35%{transform:rotate(0)}60%,to{transform:rotate(90deg) translate(40%);opacity:.6}}.a-cannon .cannon{left:4%;top:42%;animation:recoil var(--d) forwards}.a-cannon .ball{position:absolute;left:28%;top:50%;width:9%;aspect-ratio:1;border-radius:50%;background:#222;box-shadow:0 0 0 3px #555;animation:ball var(--d) linear forwards}@keyframes recoil{0%,25%{transform:translate(0)}30%{transform:translate(-12%)}50%,to{transform:translate(0)}}@keyframes ball{0%,25%{transform:translate(0);opacity:0}27%{opacity:1}40%{transform:translate(420%);opacity:1}42%,to{opacity:0;transform:translate(420%)}}.a-bars .bars{position:absolute;top:10%;right:20%;bottom:10%;left:20%;background:repeating-linear-gradient(90deg,transparent 0 14%,#aaa 14% 18%);animation:barsDown var(--d) forwards;z-index:3}@keyframes barsDown{0%,15%{transform:translateY(-120%)}32%,to{transform:translateY(0)}}.a-bars .fx-char{animation:fadeGrey var(--d) forwards}@keyframes fadeGrey{0%,45%{filter:none}80%,to{filter:grayscale(1);opacity:.4}}.a-haunt .ghost{left:-20%;top:12%;animation:swoop var(--d) ease-in-out forwards}.a-haunt .fx-char{animation:floatUp var(--d) forwards}@keyframes swoop{0%{transform:translate(0)}40%{transform:translate(160%,80%) scale(1.3)}to{transform:translate(360%,-40%);opacity:0}}@keyframes floatUp{0%,40%{transform:translateY(0);opacity:1}to{transform:translateY(-160%);opacity:0}}.a-guilt .cloud{left:50%;top:6%;transform:translate(-50%);animation:cloudIn var(--d) forwards}.a-guilt .rain{position:absolute;left:36%;right:36%;top:30%;height:20%;background:repeating-linear-gradient(100deg,transparent 0 8px,#8cf8 8px 10px);animation:rain .4s linear infinite}.a-guilt .fx-char{animation:fadeGrey var(--d) forwards}@keyframes cloudIn{0%{transform:translate(-50%,-120%)}20%,to{transform:translate(-50%)}}@keyframes rain{to{background-position:0 20px}}.a-shield .shield{left:50%;top:50%;transform:translate(-50%,-50%);animation:shieldIn var(--d) forwards;z-index:3}.a-shield .spark{position:absolute;left:20%;top:30%;font-size:3rem;animation:spark var(--d) forwards}@keyframes shieldIn{0%{transform:translate(-260%,-50%) rotate(-40deg)}25%,80%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) scale(0)}}@keyframes spark{0%,24%{opacity:0;transform:scale(0)}30%{opacity:1;transform:scale(1.4)}45%,to{opacity:0}}.a-save .fx-char{animation:flatPop var(--d) forwards;transform-origin:bottom center}.a-save .bandage{left:50%;top:38%;transform:translate(-50%) scale(0);animation:bandage var(--d) forwards;z-index:3}@keyframes flatPop{0%,15%{transform:scale(1)}22%,45%{transform:scale(1.4,.2) translateY(120%)}55%{transform:scale(.9,1.2)}65%,to{transform:scale(1)}}@keyframes bandage{0%,40%{transform:translate(-50%) scale(0) rotate(0)}50%{transform:translate(-50%) scale(1.3) rotate(-20deg)}60%,90%{transform:translate(-50%) scale(1) rotate(-12deg)}to{transform:translate(-50%) scale(0)}}.a-kick .hook{right:110%;top:30%;animation:hookIn var(--d) forwards}.a-kick .fx-char{animation:yanked var(--d) ease-in forwards}.a-kick .sign{position:absolute;right:10%;top:20%;background:#fff;color:#111;padding:6px 14px;border-radius:6px;font-weight:900;font-size:1.5rem;transform-origin:top center;animation:signSwing var(--d) ease-in-out forwards;opacity:0}@keyframes hookIn{0%{transform:translate(0)}30%{transform:translate(190%)}to{transform:translate(-50%)}}@keyframes yanked{0%,30%{transform:translate(0)}38%{transform:translate(10%) rotate(-10deg)}to{transform:translate(-420%) rotate(-30deg)}}@keyframes signSwing{0%,55%{opacity:0;transform:rotate(40deg)}65%{opacity:1;transform:rotate(-20deg)}80%{transform:rotate(10deg)}to{opacity:1;transform:rotate(0)}}.a-night .fx-dim{animation:nightDim var(--d) forwards}.a-night .moon{left:50%;top:110%;transform:translate(-50%);animation:moonUp var(--d) ease-out forwards}@keyframes nightDim{0%{opacity:0}30%,80%{opacity:.7}to{opacity:0}}@keyframes moonUp{0%{top:110%}55%,to{top:22%}}.a-dawn .sun{left:50%;top:110%;transform:translate(-50%);animation:moonUp var(--d) ease-out forwards}.a-dawn .rooster{left:8%;bottom:14%;animation:crow .38s ease-in-out 4 alternate}@keyframes crow{to{transform:rotate(-14deg) translateY(-6%)}}.a-trial .spot{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 50%,transparent 0 22%,#000d 30%);animation:spot var(--d) forwards}@keyframes spot{0%{opacity:0}20%,85%{opacity:1}to{opacity:0}}.a-gavel .gavel{right:8%;top:12%;transform-origin:80% 80%;animation:bang .35s ease-in 3 alternate}@keyframes bang{0%{transform:rotate(-35deg)}to{transform:rotate(15deg)}}.a-relief .fx-char{animation:relief .5s ease-in-out 3 alternate}@keyframes relief{to{transform:translateY(-8%) scale(1.05)}}.a-mayor .hat{left:50%;top:4%;transform:translate(-50%);animation:hatDrop var(--d) forwards;z-index:3}.a-mayor .trumpet{left:6%;top:36%;animation:crow .26s ease-in-out 6 alternate}@keyframes hatDrop{0%{top:-40%}25%,to{top:14%}}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:4}.confetti i{position:absolute;top:-12%;width:10px;height:16px;border-radius:2px;animation:conf calc(var(--d) * .72) linear forwards}@keyframes conf{0%{transform:translateY(0) rotate(0)}to{transform:translateY(660px) rotate(720deg)}}.a-win .trophy,.a-jester .clown{left:50%;top:28%;transform:translate(-50%);animation:bounceIn .8s ease-out forwards}@keyframes bounceIn{0%{transform:translate(-50%) scale(0)}60%{transform:translate(-50%) scale(1.25)}to{transform:translate(-50%) scale(1)}}.a-zip .zip{position:absolute;left:20%;right:20%;top:49%;height:10px;background:repeating-linear-gradient(90deg,#ccc 0,#ccc 6px,#555 6px,#555 10px);transform-origin:left;animation:zipAcross var(--d) forwards;z-index:3}@keyframes zipAcross{0%,20%{transform:scaleX(0)}50%,to{transform:scaleX(1)}}.reaction-float{position:fixed;bottom:110px;z-index:75;pointer-events:none;display:flex;flex-direction:column;align-items:center;animation:floatReact 2.6s ease-out forwards}.reaction-float .e{font-size:2.6rem}.reaction-float .n{font-size:.7rem;font-weight:800;background:var(--panel);border:1px solid var(--border);padding:1px 6px;border-radius:99px}@keyframes floatReact{0%{transform:translateY(0) scale(.6);opacity:0}15%{opacity:1;transform:translateY(-20px) scale(1.1)}to{transform:translateY(-260px) scale(1);opacity:0}}.fx-lift{position:absolute;top:0;right:0;bottom:0;left:0;animation:liftOff var(--d) ease-in forwards}.fx-lift.fast{animation-timing-function:cubic-bezier(.7,0,1,.4)}.a-balloon .balloons{left:50%;top:14%;transform:translate(-50%);font-size:clamp(2.4rem,12vw,4.5rem)}.a-rocket .rocket{left:50%;top:58%;transform:translate(-50%) rotate(-45deg)}.a-rocket .smoke{position:absolute;left:44%;bottom:6%;font-size:3rem;animation:puff var(--d) forwards;opacity:0}@keyframes liftOff{0%,20%{transform:translateY(0)}to{transform:translateY(-150%)}}@keyframes puff{0%,20%{opacity:0;transform:scale(.5)}40%{opacity:1;transform:scale(1.4)}to{opacity:0;transform:scale(2)}}.a-ufo .ufo{left:50%;top:2%;transform:translate(-50%);animation:hover .6s ease-in-out infinite alternate}.a-ufo .beam{position:absolute;left:36%;right:36%;top:18%;bottom:20%;background:linear-gradient(180deg,#a3e63599,transparent);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);animation:beam var(--d) forwards}.a-ufo .fx-char{animation:abduct var(--d) ease-in forwards}@keyframes hover{to{transform:translate(-50%) translateY(6%)}}@keyframes beam{0%,10%{opacity:0}20%,80%{opacity:1}to{opacity:0}}@keyframes abduct{0%,25%{transform:translateY(0) scale(1)}85%,to{transform:translateY(-120%) scale(.2);opacity:0}}.a-confetti .cannon2{left:8%;bottom:10%;animation:crow .25s ease-in-out 4 alternate}.a-confetti .fx-char{animation:spinOut var(--d) ease-in forwards}@keyframes spinOut{0%,30%{transform:none}to{transform:translate(120%,-200%) rotate(900deg) scale(0)}}.fx-char.standing{width:26%;aspect-ratio:auto;margin:-26% 0 0 -13%;top:50%;display:flex;flex-direction:column;align-items:center;border-radius:0}.fx-char.standing .fx-head{animation:idleSway 2.4s ease-in-out infinite}.fx-char.standing .fx-head{width:82%;aspect-ratio:1;display:grid;place-items:center;font-size:clamp(2rem,9vw,3.2rem)}.fx-char.standing .fx-head .avatar,.fx-char.standing .fx-head img:not(.fx-hat){width:100%!important;height:100%!important;border:4px solid #fff;box-shadow:0 6px 20px #0008}.fx-char.standing .fx-head img.fx-hat{width:148%;height:auto;border:0}.fx-char.standing .fx-body{position:relative;width:78%;height:0;padding-bottom:70%;margin-top:-6%;background:linear-gradient(160deg,#494258,#241f31);border-radius:36% 36% 22% 22%/30% 30% 14% 14%;box-shadow:0 8px 22px #0007}.fx-arm{position:absolute;top:12%;width:17%;height:68%;background:inherit;border-radius:40% 40% 45% 45%}.fx-arm.l{left:-13%;transform:rotate(9deg);transform-origin:top center}.fx-arm.r{right:-13%;transform:rotate(-9deg);transform-origin:top center}.fx-legs{display:flex;gap:12%;width:56%;aspect-ratio:5 / 4;margin-top:-2%}.fx-legs span{flex:1;background:linear-gradient(#2c2739,#191527);border-radius:30% 30% 26% 26%;box-shadow:0 6px 14px #0007}@keyframes idleSway{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-2%) rotate(1deg)}}@keyframes slump{0%,40%{transform:translateY(0) rotate(0)}55%{transform:translateY(-3%) rotate(-6deg)}to{transform:translateY(16%) rotate(84deg);opacity:.75}}@keyframes shudder{0%,26%{transform:translate(0)}30%{transform:translate(-4%) rotate(-3deg)}34%{transform:translate(4%) rotate(3deg)}38%{transform:translate(-3%)}42%{transform:translate(3%)}46%,60%{transform:translate(0)}to{transform:translateY(16%) rotate(80deg);opacity:.75}}.a-stab .fx-stage{animation:jolt var(--d) forwards}@keyframes jolt{0%,29%{transform:translate(0)}31%{transform:translate(-1.5%,1%) rotate(-.6deg)}33%{transform:translate(1.5%,-.8%) rotate(.5deg)}35%{transform:translate(-1%,.6%)}37%{transform:translate(.8%,-.4%)}40%,to{transform:translate(0)}}.a-stab .fx-char{animation:shudder var(--d) forwards}.a-stab .knife{right:-24%;top:34%;font-size:clamp(2.6rem,12vw,4.4rem);animation:knifeIn var(--d) cubic-bezier(.3,.8,.4,1) forwards}@keyframes knifeIn{0%,14%{transform:translate(0) rotate(-20deg);opacity:0}18%{opacity:1}30%{transform:translate(-150%) rotate(-95deg);opacity:1}44%{transform:translate(-120%) rotate(-70deg)}70%,to{transform:translate(-40%) rotate(-30deg);opacity:0}}.a-stab .slash{position:absolute;left:36%;top:34%;width:30%;height:4px;background:linear-gradient(90deg,transparent,#ff4f6a,transparent);opacity:0;transform:rotate(28deg);animation:slashFlash var(--d) forwards}@keyframes slashFlash{0%,28%{opacity:0;transform:rotate(28deg) scaleX(.2)}33%{opacity:1;transform:rotate(28deg) scaleX(1.3)}55%,to{opacity:0}}.a-stab .splat{position:absolute;left:44%;top:30%;font-size:2.6rem;opacity:0;animation:splat var(--d) forwards}.a-stab .fx-char:after{content:"";position:absolute;left:52%;top:34%;width:6px;height:0;border-radius:0 0 4px 4px;background:linear-gradient(#c81e38,#7c0f21);animation:drip var(--d) ease-in forwards}@keyframes drip{0%,34%{height:0;opacity:0}40%{opacity:1}to{height:26%;opacity:.85}}@keyframes splat{0%,30%{opacity:0;transform:scale(.4)}36%{opacity:1;transform:scale(1.3)}60%,to{opacity:0;transform:scale(1)}}.a-strangle .fx-char{animation:shudder var(--d) forwards}.a-strangle .rope{position:absolute;left:50%;top:-30%;width:5px;height:62%;margin-left:-2px;background:repeating-linear-gradient(#c8a86a 0,#c8a86a 6px,#9c7f45 6px,#9c7f45 12px);transform-origin:top center;animation:ropeDrop var(--d) forwards}.a-strangle .rope:after{content:"";position:absolute;bottom:-10px;left:50%;width:46px;height:26px;margin-left:-23px;border:5px solid #c8a86a;border-radius:50%}@keyframes ropeDrop{0%,12%{transform:translateY(-40%) scaleY(.6);opacity:0}24%{opacity:1;transform:translateY(0) scaleY(1)}34%{transform:translateY(-3%) scaleY(.98)}to{transform:translateY(0) scaleY(1);opacity:.9}}.a-strangle .hands{left:4%;top:36%;font-size:clamp(2.4rem,10vw,3.6rem);opacity:0;animation:handsIn var(--d) forwards}@keyframes handsIn{0%,20%{opacity:0;transform:translate(-40%)}30%{opacity:1;transform:translate(120%)}62%{opacity:1;transform:translate(150%)}to{opacity:0;transform:translate(60%)}}.a-strangle .gasp{position:absolute;right:26%;top:24%;font-size:2.2rem;opacity:0;animation:gasp var(--d) forwards}@keyframes gasp{0%,30%{opacity:0;transform:scale(.4)}38%{opacity:1;transform:scale(1.2) rotate(-12deg)}64%,to{opacity:0}}.a-boulder .fx-stage,.a-anvil .fx-stage,.a-piano .fx-stage{animation:crushJolt var(--d) forwards}@keyframes crushJolt{0%,50%{transform:translate(0)}53%{transform:translateY(2.5%) scaleY(.99)}57%{transform:translateY(-1.2%)}61%{transform:translateY(.8%)}66%,to{transform:translate(0)}}.a-boulder .drop{left:50%;top:-46%;transform:translate(-50%);font-size:clamp(3.4rem,18vw,6.5rem);animation:dropIn var(--d) cubic-bezier(.5,0,1,.6) forwards;z-index:3}.a-boulder .fx-char{animation:squashStand var(--d) forwards;transform-origin:bottom center}@keyframes squashStand{0%,46%{transform:scaleY(1)}54%{transform:scaleY(.24) scaleX(1.25)}to{transform:scaleY(.2) scaleX(1.3);opacity:.8}}.a-boulder .dust{position:absolute;left:24%;right:24%;top:58%;height:22%;border-radius:50%;background:radial-gradient(circle,#ffffff55,transparent 70%);opacity:0;animation:dustPuff var(--d) forwards}@keyframes dustPuff{0%,50%{opacity:0;transform:scale(.4)}58%{opacity:.9;transform:scale(1.3)}to{opacity:0;transform:scale(1.8)}}.a-poison .fx-char{animation:poisoned var(--d) forwards}@keyframes poisoned{0%,20%{filter:none;transform:rotate(0)}35%{filter:hue-rotate(80deg) saturate(1.8);transform:rotate(-5deg)}45%{transform:rotate(5deg)}55%{transform:rotate(-4deg)}65%{filter:hue-rotate(90deg) saturate(2);transform:rotate(3deg)}to{filter:hue-rotate(90deg) saturate(1.4) brightness(.8);transform:translateY(16%) rotate(78deg);opacity:.8}}.a-poison .vial{left:8%;top:30%;font-size:clamp(2.4rem,10vw,3.6rem);animation:vialTip var(--d) forwards}@keyframes vialTip{0%{transform:rotate(0);opacity:0}15%{opacity:1}30%{transform:translate(60%,10%) rotate(-40deg)}60%{transform:translate(40%) rotate(0);opacity:.8}to{opacity:0}}.a-poison .fumes{position:absolute;left:50%;top:18%;font-size:2.2rem;opacity:0;animation:fumes var(--d) forwards}@keyframes fumes{0%,40%{opacity:0;transform:translate(-50%) scale(.6)}55%{opacity:.9;transform:translate(-50%,-40%) scale(1.1)}to{opacity:0;transform:translate(-50%,-90%) scale(1.3)}}.a-cork .fx-char.standing,.a-cannon .fx-char.standing,.a-wanted .fx-char.standing,.a-guilt .fx-char.standing{animation:slump var(--d) forwards}@media (prefers-reduced-motion: reduce){.fx-char.standing .fx-head{animation:none}}.fx-art{width:100%;height:auto;display:block;overflow:visible;filter:drop-shadow(0 6px 14px #0009)}.fx-prop:has(>.fx-art){line-height:0}.fx-char.standing .fx-head{position:relative}.fx-hat{position:absolute;left:-24%;top:-36%;width:148%;height:auto;pointer-events:none;filter:drop-shadow(0 4px 8px #0008)}.fx-char.standing .fx-torso{width:104%;height:auto;margin-top:-7%}.fx-char.standing .fx-lower{width:82%;height:auto;margin-top:-9%}.fx-char.standing:after{content:"";position:absolute;left:50%;bottom:-6%;width:76%;height:8%;margin-left:-38%;background:radial-gradient(ellipse,#00000099,transparent 70%);border-radius:50%}.fx-prop.rope{left:50%;top:-34%;width:26%;transform:translate(-50%);animation:ropeDrop var(--d) forwards}.fx-prop.jail{left:50%;top:14%;width:62%;transform:translate(-50%);opacity:0;animation:barsIn var(--d) forwards}@keyframes barsIn{0%,18%{opacity:0;transform:translate(-50%,-40%)}34%,to{opacity:.95;transform:translate(-50%)}}.fx-prop.knife{right:-20%;top:34%;width:30%}.fx-prop.drop{width:34%}.fx-prop.vial{width:16%}.fx-prop.gun{width:30%}.fx-prop.cannon{width:36%}.fx-prop.shield,.fx-prop.bandage{width:26%}.fx-prop.ghost{width:28%}.fx-prop.boot{width:34%}.fx-prop.gavel{width:32%}.splat{position:absolute;left:46%;top:30%;width:16%;aspect-ratio:1;opacity:0;background:radial-gradient(circle at 40% 40%,#ff4f6a,#9e1430 65%,transparent 70%);border-radius:46% 54% 40% 60%/52% 44% 56% 48%;animation:splat var(--d) forwards}.smokepuff{position:absolute;left:12%;top:44%;width:26%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#ffffff66,transparent 70%);opacity:0;animation:dustPuff var(--d) forwards}.pulse{position:absolute;left:50%;top:42%;width:36%;aspect-ratio:1;margin-left:-18%;border:4px solid #57d98a;border-radius:50%;opacity:0;animation:pulseRing var(--d) forwards}@keyframes pulseRing{0%,20%{opacity:0;transform:scale(.4)}40%{opacity:.9;transform:scale(1)}70%,to{opacity:0;transform:scale(1.5)}}.chill{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#7fe7ff22,transparent 60%);opacity:0;animation:fxDim var(--d) forwards}.a-duel .fx-char,.a-ambush .fx-char{animation:shotBack var(--d) forwards}@keyframes shotBack{0%,34%{transform:translate(0) rotate(0)}40%{transform:translate(6%) rotate(6deg)}to{transform:translate(14%,16%) rotate(76deg);opacity:.8}}.fx-prop.ambushgun{right:-6%;top:40%;width:30%;transform:scaleX(-1);animation:gunKick var(--d) forwards}.a-duel .gun{left:-4%;top:40%;animation:gunKick var(--d) forwards}@keyframes gunKick{0%,28%{transform:translateY(0) rotate(0)}34%{transform:translateY(-8%) rotate(-10deg)}46%,to{transform:translateY(0) rotate(0)}}.flash{position:absolute;left:28%;top:38%;width:22%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff3b0,#ffae00 40%,transparent 70%);opacity:0;animation:muzzle var(--d) forwards}@keyframes muzzle{0%,30%{opacity:0;transform:scale(.3)}34%{opacity:1;transform:scale(1.3)}42%,to{opacity:0;transform:scale(.6)}}.a-noose .fx-char{animation:shudder var(--d) forwards}.a-noose .jail{opacity:.5}.a-dragdown .fx-char{animation:dragged var(--d) cubic-bezier(.6,0,.9,.4) forwards}@keyframes dragged{0%,30%{transform:translateY(0)}44%{transform:translateY(-4%) rotate(-3deg)}to{transform:translateY(150%) rotate(8deg);opacity:0}}.a-dragdown .ghost{left:8%;top:24%;width:26%;opacity:0;animation:hauntIn var(--d) forwards}@keyframes hauntIn{0%,12%{opacity:0;transform:translate(-30%) scale(.8)}30%{opacity:.95;transform:translate(40%) scale(1)}70%{opacity:.9;transform:translate(70%) translateY(20%)}to{opacity:0;transform:translate(90%) translateY(60%)}}.pit{position:absolute;left:26%;right:26%;bottom:16%;height:10%;border-radius:50%;background:radial-gradient(ellipse,#000 55%,transparent 75%);opacity:0;animation:pitOpen var(--d) forwards}@keyframes pitOpen{0%,24%{opacity:0;transform:scaleX(.3)}40%{opacity:1;transform:scaleX(1)}88%{opacity:1}to{opacity:0}}.fx-art.cinematic{width:100%;height:auto;display:block;filter:drop-shadow(0 10px 22px #000a)}.fx-prop:has(>.cinematic){line-height:0}.cloud{position:absolute;left:50%;top:52%;width:44%;transform:translate(-50%,-50%) scale(.4);opacity:0;pointer-events:none}.cloud img{width:100%;height:auto;display:block}.cloud.dust{animation:cloudPuff var(--d) forwards}.cloud.smoke{top:44%;left:40%;width:38%;animation:cloudDrift var(--d) forwards}.cloud.smoke.green{filter:hue-rotate(75deg) saturate(1.4)}.cloud.smoke.trail{top:70%;left:50%;width:30%}@keyframes cloudPuff{0%,46%{opacity:0;transform:translate(-50%,-50%) scale(.35)}56%{opacity:.85;transform:translate(-50%,-54%) scale(1.05)}to{opacity:0;transform:translate(-50%,-62%) scale(1.5)}}@keyframes cloudDrift{0%,30%{opacity:0;transform:translate(-50%,-50%) scale(.4)}42%{opacity:.8;transform:translate(-46%,-56%) scale(1)}to{opacity:0;transform:translate(-40%,-70%) scale(1.4)}}.fx-overlay{position:absolute;pointer-events:none}.fx-overlay.burst{left:50%;top:42%;width:46%;transform:translate(-50%,-50%) scale(.3);opacity:0;animation:burstPop var(--d) forwards;mix-blend-mode:screen}@keyframes burstPop{0%,30%{opacity:0;transform:translate(-50%,-50%) scale(.3)}36%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}52%,to{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}.fx-overlay.splash-layer{left:50%;bottom:8%;width:70%;transform:translate(-50%) scale(.6);opacity:0;animation:splashUp var(--d) forwards}@keyframes splashUp{0%,52%{opacity:0;transform:translate(-50%) scale(.6)}62%{opacity:1;transform:translate(-50%) scale(1.05)}to{opacity:0;transform:translate(-50%) scale(1.1)}}.fx-overlay.cannon-art{position:static;width:100%;height:auto}.fx-prop.stage-prop{opacity:0}.fx-prop.trapdoor{left:50%;bottom:14%;width:46%;transform:translate(-50%);animation:fadeProp var(--d) forwards}.fx-prop.catapult{left:8%;bottom:16%;width:42%;animation:fadeProp var(--d) forwards}.fx-prop.plankart{left:6%;top:44%;width:44%;animation:fadeProp var(--d) forwards}.fx-prop.airlockart{left:50%;top:50%;width:62%;transform:translate(-50%,-50%);animation:fadeProp var(--d) forwards}.fx-prop.posterart{left:50%;top:46%;width:44%;transform:translate(-50%,-50%) rotate(-4deg);animation:fadeProp var(--d) forwards}@keyframes fadeProp{0%{opacity:0}14%,86%{opacity:.95}to{opacity:0}}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 45%,transparent 38%,#000b 100%);opacity:0;animation:fxDim var(--d) forwards}.rays{position:absolute;left:50%;top:45%;width:70%;aspect-ratio:1;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,#d4af3733 0 8deg,transparent 8deg 30deg);border-radius:50%;opacity:0;animation:raysIn var(--d) forwards}@keyframes raysIn{0%,20%{opacity:0;transform:translate(-50%,-50%) rotate(0)}45%{opacity:.8}to{opacity:0;transform:translate(-50%,-50%) rotate(40deg)}}@media (prefers-reduced-motion: reduce){.fx-layer{animation:none!important;opacity:1!important}.fx-stage,.fx-char,.fx-prop,.cloud,.fx-overlay,.rays,.vignette{animation:none!important;transform:none!important}.fx-prop.stage-prop,.cloud,.fx-overlay,.rays,.vignette{opacity:.9}.fx-layer .fx-dim{animation:none;opacity:.8}}:root,[data-theme=noir]{--bg: #0b0b0f;--bg-grad: radial-gradient(1200px 600px at 50% -10%, #2a2418 0%, #0b0b0f 60%);--panel: #15151c;--panel-2: #1d1d26;--border: #2d2b35;--text: #f1ece0;--muted: #9d97a8;--accent: #d4af37;--accent-2: #8a6d1e;--accent-text: #120e03;--danger: #e2513f;--good: #52c28a;--warn: #f0a93b;--team-mafia: #e2513f;--team-town: #58a6ff;--team-neutral: #b98af5;--font-display: "Playfair Display", Georgia, serif;--font-body: "Inter", system-ui, sans-serif;--radius: 14px;--radius-sm: 10px;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--sky-night: #0d0f1c;--sky-day: #5a4a3a;--building: #07070a;--window: #f3c96b;--display-transform: none;--display-spacing: .01em}[data-theme=speakeasy]{--bg: #0b1f1b;--bg-grad: linear-gradient(135deg, rgba(212, 175, 55, .06) 25%, transparent 25%) 0 0 / 26px 26px, radial-gradient(900px 500px at 50% 0%, #174036 0%, #0b1f1b 70%);--panel: #102a24;--panel-2: #15342d;--border: #b8963e55;--text: #f4ead2;--muted: #a9b8a7;--accent: #c9a24a;--accent-2: #7b6126;--accent-text: #0e1a15;--team-town: #7fc8b8;--font-display: "Poiret One", "Josefin Sans", sans-serif;--font-body: "Josefin Sans", system-ui, sans-serif;--radius: 4px;--radius-sm: 2px;--sky-night: #06201a;--sky-day: #1d4a3f;--building: #04120f;--window: #e9c56a;--display-transform: uppercase;--display-spacing: .12em}[data-theme=neon]{--bg: #0d0418;--bg-grad: linear-gradient(180deg, #1a0633 0%, #0d0418 55%), repeating-linear-gradient(90deg, #ff2fb322 0 1px, transparent 1px 40px);--panel: #170a2b;--panel-2: #21103b;--border: #ff2fb355;--text: #fbeaff;--muted: #b39cc9;--accent: #ff2fb3;--accent-2: #00e5ff;--accent-text: #19001a;--danger: #ff4d6d;--good: #3dffb0;--team-mafia: #ff4d6d;--team-town: #00e5ff;--team-neutral: #ffd23f;--font-display: "Monoton", "Rajdhani", sans-serif;--font-body: "Rajdhani", system-ui, sans-serif;--radius: 12px;--shadow: 0 0 24px #ff2fb344;--sky-night: #12002a;--sky-day: #3a0f5c;--building: #07000f;--window: #00e5ff;--display-spacing: .04em}[data-theme=cartoon]{--bg: #ffe066;--bg-grad: radial-gradient(circle at 20% 20%, #fff3b0 0 8%, transparent 9%) 0 0 / 60px 60px, linear-gradient(180deg, #ffd84d, #ffb347);--panel: #ffffff;--panel-2: #fff6d6;--border: #1b1b1b;--text: #1b1b1b;--muted: #5d5747;--accent: #ff4f9a;--accent-2: #3e8bff;--accent-text: #ffffff;--danger: #ff3b30;--good: #1fa85b;--warn: #ff8a00;--team-mafia: #ff3b30;--team-town: #1d6fff;--team-neutral: #9b3dff;--font-display: "Bangers", "Nunito", sans-serif;--font-body: "Nunito", system-ui, sans-serif;--radius: 18px;--radius-sm: 12px;--shadow: 4px 4px 0 #1b1b1b;--sky-night: #3b2b7a;--sky-day: #7fd3ff;--building: #1b1b1b;--window: #ffe066;--display-spacing: .06em}[data-theme=wildwest]{--bg: #2a1a0e;--bg-grad: radial-gradient(1000px 500px at 50% -10%, #8a4b22 0%, #2a1a0e 65%);--panel: #3a2615;--panel-2: #47301b;--border: #7a5431;--text: #f7e6c9;--muted: #cfb08a;--accent: #e39b3b;--accent-2: #9c5a1c;--accent-text: #2a1506;--team-town: #7ec4e0;--font-display: "Rye", Georgia, serif;--font-body: "Roboto Slab", Georgia, serif;--radius: 8px;--sky-night: #1d1330;--sky-day: #d9864a;--building: #1a0f06;--window: #ffcf6e}[data-theme=pirates]{--bg: #061a2b;--bg-grad: radial-gradient(900px 500px at 50% 0%, #0f4a6b 0%, #061a2b 70%);--panel: #0b2940;--panel-2: #10344f;--border: #c9a86a66;--text: #f3ead7;--muted: #a8bccb;--accent: #e0b04f;--accent-2: #2aa0a4;--accent-text: #1c1204;--team-town: #6fd3d7;--font-display: "Pirata One", Georgia, serif;--font-body: "Alegreya Sans", system-ui, sans-serif;--radius: 10px;--sky-night: #04121f;--sky-day: #2c7aa3;--building: #020a12;--window: #ffd27a;--display-spacing: .03em}[data-theme=scifi]{--bg: #04080f;--bg-grad: linear-gradient(0deg, #0ff1 1px, transparent 1px) 0 0 / 100% 32px, radial-gradient(900px 500px at 50% 0%, #0d2a44 0%, #04080f 70%);--panel: #0a1422;--panel-2: #0f1d31;--border: #22d3ee44;--text: #dff6ff;--muted: #7fa3b8;--accent: #22d3ee;--accent-2: #a3e635;--accent-text: #021018;--danger: #fb4570;--good: #a3e635;--team-mafia: #fb4570;--team-town: #22d3ee;--team-neutral: #c084fc;--font-display: "Orbitron", "Exo 2", sans-serif;--font-body: "Exo 2", system-ui, sans-serif;--radius: 6px;--radius-sm: 4px;--shadow: 0 0 0 1px #22d3ee33, 0 10px 30px #0008;--sky-night: #01040a;--sky-day: #0b2540;--building: #02060c;--window: #22d3ee;--display-transform: uppercase;--display-spacing: .08em}*{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg-grad),var(--bg);background-attachment:fixed;color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background .4s}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}h1,h2,h3,.display{font-family:var(--font-display);text-transform:var(--display-transform);letter-spacing:var(--display-spacing);line-height:1.1;margin:0}h1{font-size:clamp(2rem,8vw,3.4rem)}h2{font-size:1.35rem}h3{font-size:1.05rem}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.75rem}.center{text-align:center}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}.hidden{display:none!important}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.page{width:100%;max-width:560px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom))}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card.flat{box-shadow:none}.card+.card{margin-top:12px}.section-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0 0 8px;font-family:var(--font-body);font-weight:700}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:var(--radius-sm);padding:12px 16px;min-height:46px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .08s,filter .15s,background .15s;touch-action:manipulation;-webkit-user-select:none;user-select:none;text-decoration:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);color:var(--accent-text);border-color:transparent}.btn.danger{background:var(--danger);color:#fff;border-color:transparent}.btn.good{background:var(--good);color:#06150d;border-color:transparent}.btn.ghost{background:transparent}.btn.block{width:100%}.btn.sm{min-height:36px;padding:6px 12px;font-size:.85rem}.btn.icon{min-width:44px;padding:8px}.btn.on{outline:2px solid var(--accent);outline-offset:1px}[data-theme=cartoon] .btn{border-width:2px;box-shadow:2px 2px #1b1b1b}[data-theme=neon] .btn.primary{box-shadow:0 0 16px var(--accent)}.input,select.input,textarea.input{width:100%;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;min-height:46px;outline:none}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}textarea.input{resize:vertical;min-height:80px}.input.code{text-transform:uppercase;letter-spacing:.3em;font-weight:800;font-size:1.3rem;text-align:center}label.field{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted);font-weight:600}.error{color:var(--danger);font-size:.9rem;font-weight:600}.seg{display:flex;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px;gap:3px}.seg button{flex:1;border:0;background:transparent;padding:9px 6px;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;font-weight:700;font-size:.88rem;min-height:40px}.seg button.active{background:var(--accent);color:var(--accent-text)}.toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer}.toggle:last-child{border-bottom:0}.toggle input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:46px;height:28px;border-radius:99px;background:var(--border);position:relative;flex:none;cursor:pointer;transition:background .2s}.toggle input:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}.toggle input:checked{background:var(--accent)}.toggle input:checked:after{transform:translate(18px)}input[type=range]{width:100%;accent-color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:.75rem;font-weight:700;background:var(--panel-2);border:1px solid var(--border);white-space:nowrap}.chip.mafia{color:var(--team-mafia);border-color:color-mix(in srgb,var(--team-mafia) 50%,transparent)}.chip.town{color:var(--team-town);border-color:color-mix(in srgb,var(--team-town) 50%,transparent)}.chip.neutral{color:var(--team-neutral);border-color:color-mix(in srgb,var(--team-neutral) 50%,transparent)}.chip.host{color:var(--accent)}.divider{height:1px;background:var(--border);margin:12px 0}.brand{text-align:center;padding:18px 0 8px}.brand .hat{font-size:2.6rem;display:block;animation:bob 3s ease-in-out infinite}.brand h1{color:var(--accent);text-shadow:0 2px 0 #0006}[data-theme=neon] .brand h1{text-shadow:0 0 12px var(--accent),0 0 32px var(--accent)}[data-theme=cartoon] .brand h1{-webkit-text-stroke:2px #1b1b1b;text-shadow:4px 4px 0 #1b1b1b}.brand p{margin:6px 0 0;color:var(--muted)}@keyframes bob{50%{transform:translateY(-6px) rotate(-4deg)}}.avatar{border-radius:50%;object-fit:cover;flex:none;background:var(--panel-2);border:2px solid var(--border);display:inline-grid;place-items:center;font-weight:800;overflow:hidden;color:#fff}.avatar.dead{filter:grayscale(1) brightness(.6)}.avatar-pick{display:flex;align-items:center;gap:12px}.member-list{display:flex;flex-direction:column;gap:6px}.member{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid transparent;min-height:52px}.member .name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member.off{opacity:.55}.menu{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);min-width:190px;padding:4px;display:flex;flex-direction:column}.menu-pop button{text-align:left;background:transparent;border:0;padding:10px 12px;border-radius:6px;cursor:pointer;font-weight:600}.menu-pop button:hover{background:var(--panel-2)}.menu-pop button.danger{color:var(--danger)}.code-box{text-align:center}.code-box .code{font-family:var(--font-body);font-weight:800;font-size:2.4rem;letter-spacing:.25em;color:var(--accent)}.qr{background:#fff;padding:10px;border-radius:12px;display:inline-block;line-height:0}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.theme-swatch{border-radius:10px;padding:10px;border:2px solid transparent;cursor:pointer;text-align:left;min-height:78px;display:flex;flex-direction:column;justify-content:space-between}.theme-swatch.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.theme-swatch b{font-size:.95rem}.theme-swatch span{font-size:.72rem;opacity:.85}.sw-noir{background:linear-gradient(135deg,#0b0b0f,#2a2418);color:#d4af37;font-family:Playfair Display,serif}.sw-speakeasy{background:linear-gradient(135deg,#0b1f1b,#174036);color:#c9a24a;font-family:Poiret One,sans-serif}.sw-speakeasy b{letter-spacing:.08em}.sw-neon{background:linear-gradient(135deg,#1a0633,#3a0f5c);color:#ff2fb3;text-shadow:0 0 8px #ff2fb3;font-family:Rajdhani,sans-serif}.sw-neon b{font-family:Monoton,sans-serif;font-weight:400}.sw-cartoon{background:linear-gradient(135deg,#ffd84d,#ffb347);color:#1b1b1b;border-color:#1b1b1b;font-family:Nunito,sans-serif}.sw-cartoon b{font-family:Bangers,sans-serif;font-weight:400;font-size:1.15rem;letter-spacing:.04em}.sw-wildwest{background:linear-gradient(135deg,#2a1a0e,#8a4b22);color:#f7e6c9;font-family:Roboto Slab,serif}.sw-wildwest b{font-family:Rye,serif;font-weight:400}.sw-pirates{background:linear-gradient(135deg,#061a2b,#0f4a6b);color:#e0b04f;font-family:Alegreya Sans,sans-serif}.sw-pirates b{font-family:Pirata One,serif;font-weight:400;font-size:1.2rem}.sw-scifi{background:linear-gradient(135deg,#04080f,#0d2a44);color:#22d3ee;font-family:"Exo 2",sans-serif}.sw-scifi b{font-family:Orbitron,sans-serif;font-size:.85rem;letter-spacing:.06em}.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin-bottom:12px}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:none;border:1px solid var(--border);background:var(--panel-2);padding:8px 12px;border-radius:99px;font-weight:700;font-size:.85rem;cursor:pointer}.tabs button.active{background:var(--accent);color:var(--accent-text);border-color:transparent}.stepper{display:flex;align-items:center;gap:8px}.stepper button{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--panel-2);font-weight:800;cursor:pointer}.stepper b{min-width:28px;text-align:center}.role-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}.role-row:last-child{border:0}.timer-row{display:grid;grid-template-columns:90px 1fr 52px;gap:10px;align-items:center;padding:4px 0}.game{display:flex;flex-direction:column;min-height:100%}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.phase-name{font-family:var(--font-display);text-transform:var(--display-transform);letter-spacing:var(--display-spacing);font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.4rem;min-width:64px;text-align:right}.timer.urgent{color:var(--danger);animation:pulse 1s infinite}.timer.paused{color:var(--warn)}@keyframes pulse{50%{opacity:.5}}.game-body{flex:1;padding:12px 12px calc(84px + env(safe-area-inset-bottom));width:100%;max-width:1280px;margin:0 auto}.col{display:flex;flex-direction:column;gap:12px;min-width:0}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(4,1fr);background:color-mix(in srgb,var(--panel) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{border:0;background:transparent;padding:8px 4px 10px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.72rem;font-weight:700;color:var(--muted);cursor:pointer;position:relative;min-height:58px}.bottom-nav button .ico{font-size:1.35rem;line-height:1.2}.bottom-nav button.active{color:var(--accent)}.badge{position:absolute;top:4px;right:calc(50% - 22px);background:var(--danger);color:#fff;border-radius:99px;font-size:.65rem;min-width:18px;height:18px;display:grid;place-items:center;padding:0 5px}@media (min-width: 720px){.game-body{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,.9fr);gap:14px;padding-bottom:24px;align-items:start}.game-body>.col{display:flex!important}.bottom-nav{display:none}.col.sticky{position:sticky;top:70px}}@media (min-width: 720px) and (max-width: 1150px){.game-body{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.game-body>.col:nth-child(3){grid-column:1 / -1}}.players{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.ptile{position:relative;border:2px solid var(--border);background:var(--panel-2);border-radius:var(--radius);padding:10px 6px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:default;text-align:center;min-height:118px;transition:transform .1s,border-color .15s,box-shadow .15s}.ptile.clickable{cursor:pointer}.ptile.clickable:active{transform:scale(.96)}.ptile.selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 40%,transparent)}.ptile.targetable{border-style:dashed;border-color:color-mix(in srgb,var(--accent) 60%,var(--border))}.ptile.dead{opacity:.6}.ptile.accused{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 40%,transparent)}.ptile .pname{font-weight:700;font-size:.85rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ptile .prole{font-size:.7rem}.ptile .votes{position:absolute;top:6px;right:6px;background:var(--danger);color:#fff;border-radius:99px;min-width:24px;height:24px;display:grid;place-items:center;font-weight:800;font-size:.8rem;padding:0 6px}.ptile .flag{position:absolute;top:6px;left:6px;font-size:.9rem}.ptile .dc{position:absolute;bottom:38px;right:16px;font-size:.8rem}.ptile .you{font-size:.62rem;font-weight:800;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.speaking{box-shadow:0 0 0 3px var(--good)}.role-card{position:relative;overflow:hidden}.role-card .big{font-size:3rem;line-height:1}.role-card.mafia{border-color:var(--team-mafia)}.role-card.town{border-color:var(--team-town)}.role-card.neutral{border-color:var(--team-neutral)}.role-card.hidden-role .reveal{filter:blur(10px);-webkit-user-select:none;user-select:none}.results{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto}.result{padding:8px 10px;border-radius:8px;background:var(--panel-2);font-size:.88rem;border-left:3px solid var(--border)}.result.good{border-left-color:var(--good)}.result.warn{border-left-color:var(--warn)}.result.role{border-left-color:var(--accent)}.banner{padding:10px 12px;border-radius:var(--radius-sm);font-weight:700;text-align:center}.banner.warn{background:color-mix(in srgb,var(--warn) 22%,var(--panel));border:1px solid var(--warn)}.banner.danger{background:color-mix(in srgb,var(--danger) 22%,var(--panel));border:1px solid var(--danger)}.banner.good{background:color-mix(in srgb,var(--good) 20%,var(--panel));border:1px solid var(--good)}.banner.info{background:var(--panel-2);border:1px solid var(--border)}.death{display:flex;gap:12px;align-items:center;padding:10px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border)}.death .will{font-style:italic;font-size:.88rem;margin-top:4px;white-space:pre-wrap}.vote-list{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:.88rem}.vote-guilty{color:var(--danger);font-weight:700}.vote-innocent{color:var(--good);font-weight:700}.chat{display:flex;flex-direction:column;height:min(62vh,560px)}.chat .msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:4px 2px 8px;overscroll-behavior:contain}.msg{display:flex;gap:8px;align-items:flex-start}.msg .bubble{background:var(--panel-2);border-radius:12px;padding:6px 10px;max-width:100%;overflow-wrap:anywhere}.msg .who{font-size:.72rem;font-weight:800;color:var(--accent)}.msg.sys .bubble{background:transparent;color:var(--muted);font-size:.8rem;font-style:italic;padding:2px 4px}.msg.mine .bubble{background:color-mix(in srgb,var(--accent) 22%,var(--panel-2))}.msg .del{margin-left:auto;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:.8rem}.chat-input{display:flex;gap:6px;padding-top:8px;border-top:1px solid var(--border)}.chat-input .input{min-height:44px}.reactions{display:flex;gap:4px;overflow-x:auto;padding:6px 0 0;scrollbar-width:none}.reactions button{border:1px solid var(--border);background:var(--panel-2);border-radius:99px;font-size:1.15rem;min-width:42px;height:38px;cursor:pointer}.ch-tabs{display:flex;gap:4px;margin-bottom:8px}.ch-tabs button{flex:1;padding:8px;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);font-weight:700;cursor:pointer;font-size:.85rem;position:relative}.ch-tabs button.active{background:var(--accent);color:var(--accent-text)}.ch-tabs button.mafia.active{background:var(--team-mafia);color:#fff}.hostbar{display:flex;gap:6px;flex-wrap:wrap}.hostbar .btn{flex:1 1 auto}.skyline{width:100%;height:90px;display:block;border-radius:var(--radius) var(--radius) 0 0}.skyline .sky{transition:fill 1.2s}.skyline .win{transition:opacity .6s}.sky-wrap{margin:-16px -16px 12px;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0}.tv{min-height:100vh;display:flex;flex-direction:column;padding:2vw 3vw;gap:1.5vw}.tv-head{display:flex;align-items:center;justify-content:space-between;gap:2vw}.tv-title{font-size:clamp(1.6rem,3.2vw,3.2rem);color:var(--accent)}.tv-phase{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,2.6rem);text-transform:var(--display-transform)}.tv-timer{font-size:clamp(2.4rem,5vw,5rem);font-weight:800;font-variant-numeric:tabular-nums}.tv-main{flex:1;display:grid;grid-template-columns:1fr minmax(260px,30%);gap:2vw;align-items:start}.tv .players{grid-template-columns:repeat(auto-fill,minmax(clamp(110px,11vw,190px),1fr));gap:1vw}.tv .ptile{min-height:clamp(130px,13vw,220px)}.tv .ptile .pname{font-size:clamp(.9rem,1.3vw,1.4rem)}.tv-announce{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,2.8rem);text-align:center}.tv-join{display:flex;flex-direction:column;align-items:center;gap:1vw;text-align:center}.tv-join .code{font-size:clamp(2.4rem,5vw,5rem);letter-spacing:.2em;font-weight:800;color:var(--accent)}@media (max-width: 800px){.tv-main{grid-template-columns:1fr}}.toast-wrap{position:fixed;left:50%;transform:translate(-50%);bottom:calc(90px + env(safe-area-inset-bottom));z-index:90;display:flex;flex-direction:column;gap:6px;width:min(92vw,420px);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:10px;padding:10px 14px;box-shadow:var(--shadow);font-weight:600;animation:toastIn .25s ease-out}.toast.error{border-left-color:var(--danger)}@keyframes toastIn{0%{transform:translateY(10px);opacity:0}}.offline{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--danger);color:#fff;text-align:center;font-weight:700;padding:6px;font-size:.85rem}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#000a;z-index:80;display:grid;place-items:end center;padding:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;width:min(100%,640px);max-height:88vh;overflow-y:auto;padding:16px 16px calc(20px + env(safe-area-inset-bottom));animation:sheetUp .25s ease-out}@media (min-width: 700px){.modal-bg{place-items:center;padding:20px}.modal{border-radius:var(--radius)}}@keyframes sheetUp{0%{transform:translateY(40px);opacity:0}}.room-list{display:flex;flex-direction:column;gap:8px}.room-item{display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border)}.win-title{font-size:clamp(2rem,7vw,3.4rem);text-align:center;color:var(--accent)}table.roles{width:100%;border-collapse:collapse;font-size:.9rem}table.roles td{padding:6px 4px;border-bottom:1px solid var(--border)}.timeline{max-height:320px;overflow-y:auto;font-size:.85rem;display:flex;flex-direction:column;gap:4px}.guide-role{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.guide-role .e{font-size:1.6rem;width:36px;text-align:center;flex:none}.notebook-row{display:grid;grid-template-columns:34px 1fr;gap:8px;align-items:center;padding:4px 0}.tagbtns{display:flex;gap:4px;flex-wrap:wrap}.tagbtns button{border:1px solid var(--border);background:var(--panel-2);border-radius:99px;padding:7px 12px;min-height:34px;font-size:.75rem;font-weight:700;cursor:pointer}.tagbtns button.on{background:var(--accent);color:var(--accent-text)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}[data-theme=neon] h2,[data-theme=neon] h3,[data-theme=neon] .phase-name,[data-theme=neon] .tv-phase,[data-theme=neon] .fx-caption,[data-theme=neon] .win-title,[data-theme=neon] .display:not(.tv-title),[data-theme=neon] .tv-announce{font-family:Rajdhani,system-ui,sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.account-chip{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:99px;background:var(--panel-2);border:1px solid var(--border);font-weight:700;cursor:pointer}.page-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.stat{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;text-align:center}.stat b{display:block;font-size:1.5rem}.bar{height:8px;border-radius:99px;background:var(--panel-2);overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent)}.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.ach{display:flex;gap:8px;align-items:center;padding:8px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border)}.ach .e{font-size:1.6rem}.ach.locked{opacity:.4;filter:grayscale(1)}.cos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.cos{border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--panel-2);padding:10px;text-align:center;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8rem;font-weight:700}.cos.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.cos.locked{opacity:.45;cursor:not-allowed}.recovery{font-family:ui-monospace,Menlo,monospace;font-size:1.4rem;letter-spacing:.08em;text-align:center;padding:14px;background:var(--panel-2);border:1px dashed var(--accent);border-radius:var(--radius-sm);-webkit-user-select:all;user-select:all}.match-row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border);text-decoration:none;color:inherit}.won{color:var(--good);font-weight:800}.lost{color:var(--danger);font-weight:800}.online-dot{width:9px;height:9px;border-radius:50%;background:var(--good);display:inline-block}.offline-dot{width:9px;height:9px;border-radius:50%;background:var(--border);display:inline-block}.frame-gold{box-shadow:0 0 0 3px #d4af37,0 0 10px #d4af3788;border-color:#fff3!important}.frame-town{box-shadow:0 0 0 3px #3b82f6}.frame-blood{box-shadow:0 0 0 3px #b91c1c,0 0 12px #b91c1c99}.frame-jester{box-shadow:0 0 0 3px #a855f7,0 0 0 6px #22c55e}.frame-neon{box-shadow:0 0 0 2px #ff2fb3,0 0 14px #00e5ff}.frame-crown{box-shadow:0 0 0 3px #facc15,0 0 0 6px #7c3aed}.frame-skull{box-shadow:0 0 0 3px #f5f5f4,0 0 0 5px #1c1917}.cb-stripes{background-image:repeating-linear-gradient(90deg,transparent 0 18px,color-mix(in srgb,var(--accent) 12%,transparent) 18px 20px)}.cb-deco{background-image:repeating-linear-gradient(45deg,transparent 0 14px,color-mix(in srgb,var(--accent) 12%,transparent) 14px 16px),repeating-linear-gradient(-45deg,transparent 0 14px,color-mix(in srgb,var(--accent) 12%,transparent) 14px 16px)}.cb-royal{background-image:radial-gradient(circle at 30% 20%,#7c3aed55,transparent 60%),radial-gradient(circle at 80% 90%,#d4af3744,transparent 50%)}.cb-wanted{background-image:linear-gradient(0deg,#f1ddb022,#f1ddb022),repeating-linear-gradient(0deg,transparent 0 22px,#7b4a1e22 22px 23px)}.tut-icon{animation:tutPop .35s ease-out}@keyframes tutPop{0%{transform:scale(.4) rotate(-10deg);opacity:0}}.banner.flavour{background:color-mix(in srgb,var(--panel-2) 88%,transparent);border:1px dashed var(--border);color:var(--muted);font-style:italic;font-size:.88rem}.practice-banner{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--accent) 18%,var(--panel)) 0 12px,var(--panel) 12px 24px);border:1px solid var(--accent)}.voice-card{padding:10px 12px}.voice-card.voice-mafia{border-color:var(--team-mafia);box-shadow:0 0 0 1px var(--team-mafia) inset}.mic-btn{flex-direction:column;min-width:64px;min-height:64px;border-radius:50%;padding:6px;gap:0;touch-action:none}.mic-btn.live{background:var(--good);color:#06150d;box-shadow:0 0 0 4px color-mix(in srgb,var(--good) 35%,transparent);animation:micPulse 1.4s infinite}@keyframes micPulse{50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--good) 15%,transparent)}}.ptile.talking .avatar,.member.talking .avatar{box-shadow:0 0 0 3px var(--good),0 0 12px var(--good)}@media (min-width: 720px){.game.desk{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.game.desk .topbar{flex:none;gap:10px}.game.desk .desk-body{flex:1;min-height:0;display:grid;gap:14px;grid-template-columns:minmax(0,1fr) minmax(280px,24vw);padding:14px;max-width:1500px;width:100%;margin:0 auto}.game.desk .stage{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px;overflow:hidden}.game.desk .stage-stack{width:100%;max-width:860px;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:auto}.game.desk .stage-scroll{width:100%;max-width:860px;min-height:0;overflow:auto}.game.desk .stage-extras{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;align-items:center;flex:none;max-width:760px}.game.desk .banner.small{padding:6px 12px;font-size:.85rem}.game.desk .desk-chat{min-height:0;min-width:0;display:flex;overflow:hidden}.game.desk .desk-chat>*{flex:1;min-height:0;min-width:0;max-width:100%}.game.desk .desk-chat .reactions{overflow-x:auto;scrollbar-width:none}.game.desk .players{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}.game.desk .bottom-nav{display:none}.voice-bar{display:flex;align-items:center;gap:6px}.voice-bar-status{white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis}.mic-pill.live{background:var(--danger);color:#fff;border-color:transparent}.hostbar.inline{display:flex;gap:6px}}@media (max-width: 1100px){.game.desk .hostbar.inline .btn:nth-child(2){display:none}}.ring{position:relative;width:min(100%,62vh);aspect-ratio:1;margin:0 auto;flex:none}.ring-centre{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:46%;height:46%;border-radius:50%;background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--panel-2) 96%,transparent),var(--panel));border:1px solid var(--border);box-shadow:inset 0 0 40px #0006,var(--shadow);display:grid;place-items:center;text-align:center;padding:12px}.ring-centre-box{display:flex;flex-direction:column;align-items:center;gap:2px;max-width:100%}.ring:before{content:"";position:absolute;top:12%;right:12%;bottom:12%;left:12%;border-radius:50%;border:1px dashed color-mix(in srgb,var(--border) 80%,transparent)}.seat{position:absolute;transform:translate(-50%,-50%);width:108px;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;padding:6px 4px;border-radius:14px;border:2px solid transparent;transition:border-color .15s,transform .12s,opacity .2s}.seat.clickable{cursor:pointer}.seat.clickable .avatar{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 55%,transparent)}.seat.selected .avatar{box-shadow:0 0 0 4px var(--accent)}.seat.accused .avatar{box-shadow:0 0 0 4px var(--danger)}.seat.clickable:hover{transform:translate(-50%,-50%) scale(1.06);z-index:2}.seat.selected{background:color-mix(in srgb,var(--accent) 14%,transparent)}.seat.accused{background:color-mix(in srgb,var(--danger) 16%,transparent)}.seat.dead{opacity:.45}.seat.quiet{opacity:.8}.seat.talking{border-color:var(--good)}.seat-name{font-weight:700;font-size:.82rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-role{font-size:.68rem;color:var(--muted)}.seat-votes{position:absolute;top:-2px;right:8px;background:var(--danger);color:#fff;border-radius:99px;min-width:22px;height:22px;display:grid;place-items:center;font-weight:800;font-size:.78rem;padding:0 6px}@media (max-width: 900px){.seat{width:88px}.seat-name{font-size:.75rem}}.ptile .pick-icon,.seat .pick-icon{position:absolute;top:6px;left:50%;transform:translate(-50%);font-size:1rem;opacity:.55;pointer-events:none;filter:drop-shadow(0 2px 3px #0009)}.seat .pick-icon{top:-6px}.ptile.deadly,.seat.deadly{border-color:color-mix(in srgb,var(--danger) 55%,var(--border))}.ptile.deadly .avatar,.seat.deadly .avatar{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 45%,transparent)}.ptile.deadly:hover .pick-icon,.seat.deadly:hover .pick-icon{opacity:1;transform:translate(-50%) scale(1.15) rotate(-12deg)}.ptile.marked-kill,.seat.marked-kill{border-color:var(--danger)!important;border-style:solid;background:color-mix(in srgb,var(--danger) 18%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 70%,transparent),0 0 22px color-mix(in srgb,var(--danger) 45%,transparent);animation:markedPulse 1.7s ease-in-out infinite}.ptile.marked-kill .avatar,.seat.marked-kill .avatar{box-shadow:0 0 0 4px var(--danger)!important}.ptile.marked-kill .pick-icon,.seat.marked-kill .pick-icon{opacity:1;font-size:1.25rem}@keyframes markedPulse{0%,to{box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 70%,transparent),0 0 18px color-mix(in srgb,var(--danger) 35%,transparent)}50%{box-shadow:0 0 0 3px var(--danger),0 0 30px color-mix(in srgb,var(--danger) 60%,transparent)}}.slash-mark{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;border-radius:inherit}.slash-mark:after{content:"";position:absolute;left:-20%;top:50%;width:140%;height:5px;background:linear-gradient(90deg,transparent,#ff2e4d,#fff,#ff2e4d,transparent);transform:rotate(-24deg) scaleX(0);transform-origin:left center;border-radius:4px;animation:slashAcross .55s ease-out forwards}@keyframes slashAcross{0%{transform:rotate(-24deg) scaleX(0);opacity:0}25%{opacity:1}60%{transform:rotate(-24deg) scaleX(1);opacity:1}to{transform:rotate(-24deg) scaleX(1);opacity:0}}@media (prefers-reduced-motion: reduce){.ptile.marked-kill,.seat.marked-kill{animation:none}.slash-mark:after{animation:none;opacity:0}}.night-report{border-left:3px solid var(--good);padding:8px 12px;display:flex;flex-direction:column;gap:2px}.night-report .section-title{margin:0 0 2px}@media (min-width: 720px){.lobby.desk{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.lobby-bar{flex:none;gap:8px;align-items:center}.code-pill{font-family:var(--font-display);font-size:1.15rem;letter-spacing:.18em;color:var(--accent);background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:6px 12px;cursor:pointer}.lobby-body{flex:1;min-height:0;display:grid;gap:14px;padding:14px;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr) minmax(280px,22vw);max-width:1500px;width:100%;margin:0 auto}.lobby-body.two{grid-template-columns:minmax(0,1fr) minmax(300px,26vw)}.lobby-col{min-height:0;display:flex;flex-direction:column;gap:12px}.lobby-col.scrolls{overflow-y:auto;padding-right:4px}.lobby-scroll{min-height:0;overflow-y:auto}.lobby-col>.card:first-child{min-height:0;display:flex;flex-direction:column}.lobby-chat{min-height:0;min-width:0;display:flex;overflow:hidden}.lobby-chat>*{flex:1;min-height:0;min-width:0;max-width:100%}.lobby-chat .reactions{flex-wrap:wrap}}@media (min-width: 720px){.lobby-col .tabs{flex-wrap:wrap;overflow:visible}}.role-icon{display:inline-block;flex:none;width:var(--icon-size, 24px);height:var(--icon-size, 24px);background:currentColor;vertical-align:-.15em;-webkit-mask:var(--role-src) center / contain no-repeat;mask:var(--role-src) center / contain no-repeat}.role-icon.mafia{color:#e05260}.role-icon.town{color:#3e8bff}.role-icon.neutral{color:#b98af5}.role-emoji{display:inline-block;line-height:1}.role-portrait{flex:none;display:grid;place-items:center;border-radius:18px;overflow:hidden;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--panel-2) 90%,transparent),transparent 72%)}.role-portrait img{width:100%;height:100%;object-fit:contain;display:block}.role-portrait.fallback{line-height:1}.winner-line{display:flex;align-items:center;gap:12px;text-align:left}.reveal .role-portrait{border-radius:16px}.skyline-wrap{position:relative;width:100%;overflow:hidden}.skyline-wrap>.skyline{display:block;width:100%}.skyline-art{position:absolute;top:0;right:0;bottom:0;left:0;background-repeat:repeat-x;background-position:bottom center;background-size:auto 100%;pointer-events:none}.skyline-wrap.night .skyline-art{filter:brightness(.86) saturate(.9) drop-shadow(0 0 12px #ffd36b22)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.brand h1{display:flex;justify-content:center;align-items:center}.brand-logo{max-width:min(320px,78vw);height:auto;display:block}@media (min-width: 720px){.game.desk .stage-sky{width:100%;max-width:900px;flex:none;opacity:.85;border-radius:12px;overflow:hidden}.lobby-sky{flex:none;opacity:.85}}
