.skin-fig{flex:none;position:relative}.skin-fig-canvas,.skin-head{image-rendering:pixelated;image-rendering:crisp-edges}.skin-fig-canvas{pointer-events:none;display:block;position:absolute}.skin-head{width:100%;height:100%;display:block}.skin-picker{flex-direction:column;gap:14px;min-width:0;display:flex}.skin-group{flex-direction:column;gap:8px;min-width:0;display:flex}.skin-group-label{letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-size:12px}.skin-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;display:grid}.skin-tile{border-radius:var(--radius);border:1px solid var(--line);min-width:0;color:inherit;cursor:pointer;transition:border-color .2s, background .2s, transform .2s var(--ease);background:radial-gradient(90% 70% at 50% 35%,#e8a34a12,#07080d99);flex-direction:column;align-items:center;gap:6px;padding:12px 4px 8px;display:flex}.skin-tile:hover{border-color:var(--line-strong);transform:translateY(-2px)}.skin-tile.on{border-color:var(--candle);background:radial-gradient(90% 70% at 50% 35%,#e8a34a3d,#07080d99);box-shadow:0 0 18px #e8a34a40}.skin-tile-name{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;line-height:1.2;overflow:hidden}.skin-mc{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.skin-mc .input{flex:160px;min-width:0}.skin-mc .skin-tile{flex:none;width:92px}.skin-editor{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:24px;display:grid}.skin-editor-stage{border-radius:var(--radius-lg);border:1px solid var(--line);background:radial-gradient(60% 55% at 50% 40%,#e8a34a33,#07080de6 75%);flex-direction:column;align-items:center;gap:12px;padding:40px 0 18px;display:flex;position:sticky;top:0}.skin-editor-stage .skin-fig{width:100px;height:200px}.skin-editor-name{font-family:var(--display);min-height:1.2em;font-size:20px;font-weight:600}.skin-editor-main{flex-direction:column;gap:16px;min-width:0;display:flex}@media (max-width:640px){.skin-editor{grid-template-columns:minmax(0,1fr)}.skin-editor-stage{padding:22px 0 12px;position:static}.skin-editor-stage .skin-fig{width:70px;height:140px}}.sound-panel{flex-direction:column;gap:14px;min-width:0;display:flex}.sound-row{grid-template-columns:64px 1fr 42px;align-items:center;gap:10px;font-size:14px;display:grid}.sound-label{color:var(--text)}.sound-value{color:var(--dim);font-variant-numeric:tabular-nums;text-align:right;font-size:13px}.sound-row input:disabled{opacity:.4}.sound-mute{margin-top:2px}.menu.sound-pop{width:min(300px, calc(100vw - 2 * var(--gutter)));padding:16px}@media (max-width:640px){.menu.sound-pop{top:calc(58px + env(safe-area-inset-top,0px));right:var(--gutter);position:fixed}}.home{width:min(100%,1180px);padding:12px var(--gutter) 48px;flex:1;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:32px;margin:0 auto;display:grid}.home-title{color:var(--text);text-shadow:0 0 30px #e8a34a40;margin:8px 0 22px;font-size:clamp(38px,6vw,60px)}.create-room{gap:10px;margin-bottom:22px;padding:12px;display:flex}.create-room .input{flex:1;min-width:0}.create-room .select{width:150px}.room-list{flex-direction:column;gap:12px;display:flex}.room-card{animation:rise .5s var(--ease) both;transition:border-color .3s, transform .3s var(--ease);align-items:center;gap:16px;padding:16px 18px;display:flex;position:relative;overflow:hidden}.room-card:hover{border-color:#e8a34a59;transform:translateY(-2px)}.room-lantern{background:var(--candle-glow);border-radius:50%;flex:none;width:10px;height:10px;animation:4s infinite flicker;box-shadow:0 0 12px 3px #e8a34a99}.room-card[data-status=playing] .room-lantern{background:var(--blood-bright);box-shadow:0 0 12px 3px #d23a4799}.room-card[data-status=over] .room-lantern{background:var(--faint);box-shadow:none;animation:none}.room-main{flex:1;min-width:0}.room-main h3{white-space:nowrap;text-overflow:ellipsis;font-size:24px;overflow:hidden}.room-meta{color:var(--dim);flex-wrap:wrap;gap:4px 14px;margin-top:2px;font-size:13px;display:flex}.room-status{color:var(--candle)}.room-counts{color:var(--dim);gap:12px;font-size:14px;display:flex}.room-counts span{align-items:center;gap:4px;display:inline-flex}.room-counts svg{width:15px;height:15px}.room-actions{gap:8px;display:flex}.home-history h2{color:var(--moon);margin:18px 0 14px;font-size:26px}.history-list{flex-direction:column;gap:10px;display:flex}.history-item{border-radius:0 var(--radius) var(--radius) 0;background:linear-gradient(90deg,#0e1018b3,#0000);border-left:2px solid #9fb3c840;padding:12px 14px}.history-head{justify-content:space-between;gap:8px;font-size:13px;display:flex}.history-title{font-family:var(--display);font-size:19px;font-weight:600}.history-room{font-size:13px}.history-seats{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.history-seat{opacity:.45;filter:grayscale(.7);width:26px}.history-seat.winner{opacity:1;filter:none}.history-seat.winner .portrait{box-shadow:0 0 0 1.5px var(--candle), 0 0 10px #e8a34a80}@media (max-width:900px){.home{grid-template-columns:minmax(0,1fr);gap:10px}}@media (max-width:560px){.create-room{flex-wrap:wrap}.create-room .input{flex-basis:100%}.create-room .btn{flex:1}.room-card{flex-wrap:wrap;gap:10px 12px;padding:14px}.room-main{flex-basis:calc(100% - 30px)}.room-counts{flex:1}}.scene{--wall:#2c3550;--wall2:#252d46;--roof:#141a2b;--timber:#0d111c;--ground:#161c2b;--cobble:#1f2738;--far:#121a2e;--towerwall:#1f2840;--door:#0c0f18;--win:#111725;--wood:#241e1c;--iron:#0a0c12;--win-lit:1;--lamp:1;--garland:0;--moon-o:1;--stars:1;--sun:0;--fire:1;--fig-filter:brightness(.74) saturate(.7);--rim:#f3b06a;--rim-o:1;--tint:#14286459;--fog:#8ca0be21;--lantern:#f3c27a;--t:.9s;isolation:isolate;border-radius:var(--radius-lg);-webkit-user-select:none;user-select:none;background:#05060a;position:relative;overflow:hidden;box-shadow:0 0 0 1px #e9e1d014,0 30px 80px #0009;container:scene/size}.scene[data-phase=lobby]{--wall:#4a3d52;--wall2:#3f3448;--roof:#241c2c;--timber:#1a1420;--ground:#2a2230;--cobble:#362c3c;--far:#2a2236;--towerwall:#3a3046;--door:#1a1218;--win:#20181c;--wood:#3a2a22;--iron:#120e14;--moon-o:.3;--stars:.5;--fig-filter:brightness(.88) saturate(.85);--rim-o:.85;--tint:#50326e40;--fog:#9678aa1a}.scene[data-phase=dawn]{--wall:#6a6170;--wall2:#5d5566;--roof:#3a3442;--timber:#2a2430;--ground:#3c383e;--cobble:#4a4550;--far:#5a5262;--towerwall:#554e5e;--door:#2a2228;--win:#3a3a44;--wood:#4a3a30;--iron:#24202a;--win-lit:.45;--lamp:.35;--moon-o:.2;--stars:.12;--sun:.25;--fire:.55;--fig-filter:brightness(.9) saturate(.8);--rim:#f0c0a0;--rim-o:.45;--tint:#dcaab42e;--fog:#e1d2d74d}.scene[data-phase=day]{--wall:#b08c66;--wall2:#9d7b5a;--roof:#5e3c2a;--timber:#3a2618;--ground:#6e5842;--cobble:#806650;--far:#8e7660;--towerwall:#9a7e62;--door:#3a2618;--win:#4a3a2e;--wood:#6a4a30;--iron:#2a2018;--win-lit:0;--lamp:0;--moon-o:0;--stars:0;--sun:.9;--fire:.35;--fig-filter:brightness(1.02) saturate(1);--rim:#ffd9a0;--rim-o:.25;--tint:#ffbe781f;--fog:#ffe1b41f}.scene.is-trial{--wall:#4c2c30;--wall2:#42262a;--roof:#22121a;--timber:#160a0e;--ground:#2a1a1c;--cobble:#3a2426;--far:#2a1418;--towerwall:#3a2024;--door:#12080a;--win:#1e1012;--wood:#3a2218;--iron:#10080a;--win-lit:.8;--moon-o:.3;--stars:.4;--fire:1.2;--fig-filter:brightness(.86) saturate(.95) sepia(.15);--rim:#ff7a4a;--tint:#961e1e4d;--fog:#a03c3c1f;--lantern:#ff8a5a}.scene.is-ended{--wall:#a07e66;--wall2:#8e6e58;--roof:#50342a;--timber:#2e1e16;--ground:#5a4838;--cobble:#6c5644;--far:#7a6458;--towerwall:#85695a;--door:#2e1e16;--win:#3a2e26;--wood:#5a3e2a;--iron:#22180f;--win-lit:.9;--lamp:.9;--garland:1;--moon-o:0;--stars:0;--sun:1;--fig-filter:brightness(1) saturate(1);--rim:#ffc070;--rim-o:.6;--tint:#ffaa5a26;--fog:#ffd2a024}.sc-figures,.sc-stand,.sc-fire{--unit:min(44cqh, 24cqw)}@container scene (width<=640px){.sc-figures,.sc-stand,.sc-fire{--unit:min(38cqh, 30cqw)}}.scene>*{pointer-events:none;position:absolute;inset:0}.sc-skies{z-index:0}.sc-sky{opacity:0;transition:opacity var(--t) ease;position:absolute;inset:0}.scene[data-sky=lobby] .sc-sky-lobby,.scene[data-sky=night] .sc-sky-night,.scene[data-sky=dawn] .sc-sky-dawn,.scene[data-sky=day] .sc-sky-day,.scene[data-sky=vote] .sc-sky-vote,.scene[data-sky=morning] .sc-sky-morning{opacity:1}.sc-sky-lobby{background:radial-gradient(120% 60% at 50% 70%,#e8804a66,#0000 60%),linear-gradient(#120f22 0%,#241a36 35%,#4a2a3a 60%,#7a4038 75%)}.sc-sky-night{background:radial-gradient(40% 40% at 80% 14%,#9fb3c838,#0000 70%),linear-gradient(#03040a 0%,#070c1c 30%,#0e1830 55%,#18243e 70%)}.sc-sky-dawn{background:radial-gradient(120% 50% at 50% 62%,#f0b4aa80,#0000 60%),linear-gradient(#262a3a 0%,#4e4a5c 30%,#9a7a84 55%,#d6a69a 70%)}.sc-sky-day{background:radial-gradient(60% 50% at 20% 20%,#ffdca08c,#0000 70%),linear-gradient(#6a8098 0%,#9aa0a0 28%,#d0ac80 52%,#e8b878 70%)}.sc-sky-vote{background:radial-gradient(100% 60% at 50% 70%,#c8323273,#0000 60%),linear-gradient(#0c0408 0%,#1e0a10 35%,#3e1418 58%,#5a1c1c 72%)}.sc-sky-morning{background:radial-gradient(70% 50% at 22% 30%,#ffd29699,#0000 70%),linear-gradient(#3e4c6c 0%,#8a7a86 28%,#d8986e 52%,#f3c27a 70%)}.sc-backdrop,.sc-lights{width:100%;height:100%}.sc-backdrop{z-index:1}.sc-backdrop *{transition:fill var(--t) ease, opacity var(--t) ease}.bd-stars{fill:#e9eef5;opacity:var(--stars)}.bd-stars circle{animation:5s ease-in-out infinite sc-twinkle}@keyframes sc-twinkle{50%{opacity:.35}}.bd-moon{opacity:var(--moon-o)}.bd-sun{opacity:var(--sun)}.bd-far{fill:var(--far)}.bd-wall{fill:var(--wall)}.bd-wall2{fill:var(--wall2)}.bd-towerwall{fill:var(--towerwall)}.bd-roof{fill:var(--roof)}.bd-timber{stroke:var(--timber)}.bd-timber-f{fill:var(--timber)}.bd-timber-s{stroke:var(--timber);fill:none}.bd-shadow{fill:#000;opacity:.35}.bd-door{fill:var(--door)}.bd-win{fill:var(--win)}.bd-clock{fill:#d8c9a2;opacity:.9}.bd-ground{fill:var(--ground)}.bd-cobbles{fill:var(--cobble);stroke:#00000059;stroke-width:1.2px}.bd-wood{fill:var(--wood)}.bd-iron{fill:var(--iron)}.bd-lamp-glass{fill:var(--win)}.sc-tint{z-index:2;background-color:var(--tint);mix-blend-mode:multiply;transition:background-color var(--t) ease;-webkit-mask-image:linear-gradient(#0000 18%,#000 45%);mask-image:linear-gradient(#0000 18%,#000 45%)}.sc-lights{z-index:3}.lt-windows{opacity:var(--win-lit);transition:opacity var(--t) ease}.lt-pane{fill:#f6c878}.lt-win{animation:9s ease-in-out infinite sc-window}@keyframes sc-window{0%,to{opacity:1}47%{opacity:.85}50%{opacity:.6}53%{opacity:.9}}.lt-lamps{opacity:var(--lamp);transition:opacity var(--t) ease}.lt-lamp{animation:3.2s ease-in-out infinite sc-lamp}.lt-flame{fill:#ffe2a6}@keyframes sc-lamp{0%,to{opacity:1}30%{opacity:.86}34%{opacity:.96}62%{opacity:.8}}.lt-garlands{opacity:calc(.35 + .65 * var(--garland));transition:opacity var(--t) ease}.lt-string{stroke:#0c0a0a;stroke-width:2px;opacity:.8}.lt-lantern-body{fill:hsl(var(--lh) 30% 18%);transition:fill var(--t) ease}.lt-lantern-glow{opacity:var(--garland);transition:opacity var(--t) ease}.scene.is-ended .lt-lantern-body{fill:hsl(var(--lh) 85% 66%)}.sc-fog{transition:opacity var(--t) ease;background-repeat:repeat-x}.sc-fog-back{z-index:4;background-image:radial-gradient(40% 50% at 30% 50%, var(--fog), transparent 70%), radial-gradient(35% 45% at 75% 60%, var(--fog), transparent 70%);background-size:120% 100%;animation:60s linear infinite sc-drift;top:38%;bottom:22%}.sc-fog-front{z-index:1600;background-image:radial-gradient(45% 60% at 25% 70%, var(--fog), transparent 70%), radial-gradient(40% 60% at 70% 80%, var(--fog), transparent 70%);opacity:.8;background-size:140% 100%;animation:45s linear infinite reverse sc-drift;top:72%}.scene[data-phase=dawn] .sc-fog-front{animation:sc-drift 45s linear infinite reverse, sc-lift 4s var(--ease) both;top:50%}@keyframes sc-drift{0%{background-position:0 0}to{background-position:1200px 0}}@keyframes sc-lift{0%{opacity:1;transform:translateY(-14%)}to{opacity:.8;transform:none}}.sc-vignette{z-index:2500;background:radial-gradient(120% 90% at 50% 55%,#0000 55%,#030408b3 100%)}.sc-stand{--sh:calc(var(--unit) * .98);z-index:5;height:var(--sh);width:calc(var(--sh) * 1.1538);inset:auto;left:calc(50% - var(--sh) * .5769);top:calc(55.5% - var(--sh) * .7538)}.sc-stand-svg{width:100%;height:100%;filter:var(--fig-filter);transition:filter var(--t) ease;display:block}.st-wood{fill:#4a3222}.st-chain{stroke:#1a1410;stroke-width:2px}.st-iron{fill:#1a1410}.st-glass{fill:var(--lantern);transition:fill var(--t) ease}.sc-stand-glow{width:0;height:0;position:absolute;top:24%;left:42%}.sc-stand-glow:before{content:"";left:calc(var(--sh) * -.5);top:calc(var(--sh) * -.5);width:var(--sh);height:var(--sh);background:radial-gradient(circle, color-mix(in srgb, var(--lantern) 55%, transparent), transparent 60%);mix-blend-mode:screen;border-radius:50%;animation:2.6s ease-in-out infinite sc-lamp;position:absolute}.sc-firelight{z-index:6;mix-blend-mode:screen;opacity:var(--fire);transition:opacity var(--t) ease;background:radial-gradient(34% 26% at 50% 85%,#f3a0506b,#0000 75%),radial-gradient(60% 40% at 50% 85%,#e8783c24,#0000 80%);animation:2.2s ease-in-out infinite sc-firelight}@keyframes sc-firelight{0%,to{filter:brightness()}40%{filter:brightness(.82)}70%{filter:brightness(1.12)}}.sc-fire{--fw:calc(var(--unit) * .62);z-index:840;width:var(--fw);height:calc(var(--fw) * .9167);inset:auto;left:calc(50% - var(--fw) / 2);top:calc(87% - var(--fw) * .84)}.sc-fire-svg{width:100%;height:100%;display:block}.fi-stones{fill:#2a2a30}.fi-flames path{transform-box:fill-box;transform-origin:50% 100%;opacity:calc(.4 + .6 * min(1, var(--fire)));transition:opacity var(--t) ease}.fi-f1{fill:#c4461c;animation:1.1s ease-in-out infinite sc-flame}.fi-f2{fill:#e8a34a;animation:.8s ease-in-out infinite reverse sc-flame}.fi-f3{fill:#fff0c4;animation:.6s ease-in-out infinite sc-flame}@keyframes sc-flame{0%,to{transform:scale(1)skew(0)}33%{transform:scale(.94,1.08)skew(3deg)}66%{transform:scale(1.04,.94)skew(-3deg)}}.fi-sparks circle{fill:#ffd28a;transform-box:fill-box;animation:2.4s ease-out infinite sc-spark}.fi-sparks circle:nth-child(2){animation-delay:.8s}.fi-sparks circle:nth-child(3){animation-delay:1.6s}@keyframes sc-spark{0%{opacity:0;transform:translateY(30px)}20%{opacity:1}to{opacity:0;transform:translate(6px,-14px)}}.sc-figures{pointer-events:none}.sc-seat{--h:calc(var(--unit) * var(--s));width:calc(var(--h) * .5556);height:var(--h);left:calc(var(--x) * 1% - var(--h) * .2778);top:calc(var(--y) * 1% - var(--h));transition:left var(--t) var(--ease), top var(--t) var(--ease), width var(--t) var(--ease), height var(--t) var(--ease);position:absolute}.sc-body{z-index:var(--z);color:inherit;pointer-events:none;background:0 0;border:0;margin:0;padding:0;display:block;position:absolute;inset:0}button.sc-body{pointer-events:auto;cursor:pointer;border-radius:40% 40% 12% 12%}button.sc-body:before{content:"";width:max(100% + 8px,48px);height:max(100%,48px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}button.sc-body:focus-visible{outline:2px solid var(--candle);outline-offset:4px}.sc-fig{transform-origin:50% 98%;transition:transform .45s var(--ease), filter var(--t) ease, opacity var(--t) ease;filter:var(--fig-filter);position:absolute;inset:0}.sc-fig svg{width:100%;height:100%;display:block;overflow:visible}.sc-skin{aspect-ratio:1/2;height:95%;position:absolute;bottom:1.6%;left:50%;transform:translate(-50%)}.sc-shadow{background:radial-gradient(closest-side,#0009,#0000);border-radius:50%;width:62%;height:4.5%;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.rim-stop{stop-color:var(--rim);transition:stop-color var(--t) ease}.rim{opacity:var(--rim-o);transition:opacity var(--t) ease}.fig-eyes{transform:translateX(var(--look));transition:transform .6s var(--ease)}.is-trial .fig-eyes{transform:translateX(calc(var(--look) * 1.7)) translateY(-.4px)}.accused .fig-eyes{transform:none}.sc-halo,.sc-ring{pointer-events:none;transition:opacity .4s,border-color .3s,box-shadow .3s;position:absolute}.sc-halo{opacity:0;mix-blend-mode:screen;background:radial-gradient(closest-side,#f3c27a73,#e8a34a1f 55%,#0000);border-radius:50%;inset:-10% -40% 10%}.sc-ring{border:2px solid #0000;border-radius:50%;height:9%;bottom:-3%;left:-8%;right:-8%}.speaking .sc-fig{filter:var(--fig-filter) brightness(1.18) drop-shadow(0 0 calc(var(--h) * .05) #f3c27a8c);transform:translateY(-3.5%)scale(1.04)}.speaking .sc-halo{opacity:1;animation:2.4s ease-in-out infinite sc-breathe}@keyframes sc-breathe{50%{opacity:.7}}.queued .sc-ring{border-color:#f3c27a80;box-shadow:0 0 14px #e8a34a59}.selectable .sc-ring{border-color:#9fb3c8b3;animation:1.8s ease-in-out infinite sc-pulse;box-shadow:0 0 18px #9fb3c880,inset 0 0 10px #9fb3c859}.is-trial .selectable .sc-ring{border-color:#f3c27ab3;box-shadow:0 0 18px #e8a34a80,inset 0 0 10px #e8a34a59}.selectable:hover .sc-fig{filter:var(--fig-filter) brightness(1.2)}.selected .sc-ring,.is-trial .selected .sc-ring{border-color:var(--blood-bright);animation:none;box-shadow:0 0 22px #d23a47cc,inset 0 0 12px #d23a4780}@keyframes sc-pulse{50%{opacity:.55}}.sc-mark{width:calc(var(--h) * .075);height:calc(var(--h) * .075);background:var(--blood-bright);box-shadow:0 0 12px var(--blood-bright);animation:1.6s ease-in-out infinite sc-bob;position:absolute;top:-7%;left:50%;transform:translate(-50%)rotate(45deg)}@keyframes sc-bob{50%{margin-top:-4px}}.sc-tally{width:calc(var(--h) * .17);height:calc(var(--h) * .17);min-width:22px;min-height:22px;font-family:var(--display);font-weight:700;font-size:max(14px, calc(var(--h) * .11));color:#fbe9e0;animation:sc-pop .35s var(--ease);z-index:1750;background:radial-gradient(circle at 35% 30%,#d84450,#8a1a24 70%);border-radius:50%;place-items:center;line-height:1;display:grid;position:absolute;top:4%;right:-10%;box-shadow:0 0 0 2px #3c080ecc,0 0 16px #d23a4799,0 3px 8px #0009}@keyframes sc-pop{0%{opacity:0;transform:scale(.4)}}.accused .sc-fig{filter:var(--fig-filter) brightness(1.12) drop-shadow(0 0 calc(var(--h) * .06) #ff785080)}.mate .sc-ring{border-color:#d23a4759}.winner .sc-halo{opacity:1;background:radial-gradient(closest-side,#ffd68c8c,#e8a34a29 55%,#0000)}.loser .sc-fig{filter:var(--fig-filter) brightness(.72) saturate(.7)}.dead .sc-fig{filter:grayscale()brightness(1.15)contrast(.7)drop-shadow(0 0 6px #9fb3c880);opacity:.42;transform:translateY(-5%)}.sc-stone{width:84%;height:26%;animation:sc-stone .6s var(--ease) both;background:linear-gradient(#7a7d86,#4a4d56 60%,#33353d);border-radius:46% 46% 5% 5%/48% 48% 5% 5%;justify-content:center;align-items:center;padding:18% 6% 4%;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:inset 0 2px #ffffff2e,inset -4px 0 8px #00000059,0 6px 10px #0000008c}.sc-stone:after{content:"";z-index:-1;background:#141612b3;border-radius:50%;height:14%;position:absolute;bottom:-6%;left:-10%;right:-10%}.sc-stone span{font-family:var(--display);font-weight:700;font-size:max(8px, calc(var(--h) * .043));letter-spacing:.03em;text-transform:uppercase;color:#1c1d22;text-shadow:0 1px #ffffff40;text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;line-height:1;overflow:hidden}.sc-stone.mafia span{color:#5a0e16}@keyframes sc-stone{0%{opacity:0;transform:translate(-50%)translateY(30%)scaleY(.4)}}.dying .sc-fig{animation:2.6s ease-in both sc-die}.dying .sc-stone{animation-delay:1.7s}@keyframes sc-die{0%{filter:var(--fig-filter);transform:none}10%{transform:translate(-3%)rotate(-6deg)}20%{filter:var(--fig-filter) brightness(1.3) drop-shadow(0 0 14px #d23a47);transform:translate(3%)rotate(7deg)}32%{filter:var(--fig-filter) brightness(1.3) drop-shadow(0 0 18px #d23a47);transform:translate(-1%)rotate(-4deg)}58%{filter:brightness(.25)drop-shadow(0 0 10px #a3202c);opacity:1;transform:translateY(6%)rotate(84deg)}72%{filter:brightness(.1);opacity:0;transform:translateY(8%)rotate(88deg)}73%{filter:grayscale()brightness(1.15)contrast(.7);opacity:0;transform:translateY(-5%)}to{filter:grayscale()brightness(1.15)contrast(.7)drop-shadow(0 0 6px #9fb3c880);opacity:.42;transform:translateY(-5%)}}.sc-flash{z-index:2900;mix-blend-mode:multiply;background:radial-gradient(80% 80%,#d2283240,#780a1499);animation:1.4s ease-out both sc-flash}@keyframes sc-flash{0%{opacity:0}10%{opacity:1}to{opacity:0}}.sc-plate{z-index:1700;max-width:calc(var(--h) * 1.1);pointer-events:none;white-space:nowrap;background:linear-gradient(#0e1018db,#07080de6);border:1px solid #e9e1d029;border-radius:4px;flex-direction:column;align-items:center;gap:1px;padding:2px 9px 3px;display:flex;position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);box-shadow:0 4px 10px #00000080}.sc-name{max-width:100%;font-family:var(--display);font-weight:600;font-size:clamp(11px, calc(var(--h) * .085), 17px);color:hsl(var(--hue) 50% 80%);align-items:center;gap:5px;line-height:1.15;display:flex}.sc-name-full,.sc-name-short{text-overflow:ellipsis;overflow:hidden}.sc-name-short{display:none}.sc-ai{font-family:var(--body);letter-spacing:.06em;color:var(--moon);border:1px solid #9fb3c866;border-radius:3px;padding:0 4px;font-size:9px;font-weight:600;line-height:13px}.sc-role{font-family:var(--display);font-style:italic;font-size:clamp(10px, calc(var(--h) * .07), 15px);color:var(--moon);line-height:1.1}.sc-role.mafia{color:#f08a90}.mine .sc-plate{border-color:#e8a34a99;box-shadow:0 0 12px #e8a34a40,0 4px 10px #00000080}.mine .sc-name{color:var(--candle-glow)}.mate .sc-plate{border-color:#d23a4799}.mate .sc-name:before{content:"";background:var(--blood-bright);width:6px;height:6px;box-shadow:0 0 6px var(--blood-bright);flex:none;transform:rotate(45deg)}.selected .sc-plate{border-color:var(--blood-bright)}.winner .sc-plate{background:linear-gradient(#3c2812eb,#1e140aeb);border-color:#f3c27acc}.dead .sc-plate,.dying .sc-plate{opacity:.75}.dead .sc-name-full,.dead .sc-name-short{-webkit-text-decoration:line-through #d23a4799;text-decoration:line-through #d23a4799}.ready .sc-name:after{content:"";background:radial-gradient(circle at 50% 70%,#fff3c8,#e8a34a 60%);border-radius:50% 50% 40% 40%;flex:none;width:6px;height:9px;box-shadow:0 0 8px #e8a34a}.away .sc-fig{filter:var(--fig-filter) brightness(.55) saturate(.4)}.away .sc-plate{opacity:.6}.sc-bubble{--tail:50%;z-index:calc(2100 - var(--rank) * 10);color:#2a1e14;width:max-content;min-width:54px;max-width:min(30cqw,280px);font-family:var(--display);opacity:calc(1 - var(--rank) * .16);pointer-events:none;animation:sc-bubble .32s var(--ease) both;transform-origin:var(--tail) 100%;background:linear-gradient(#f2ebdb,#e3d8c0);border-radius:14px;padding:7px 12px 8px;font-size:clamp(13px,1.65cqw,18px);font-weight:600;line-height:1.22;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #3c281459,0 8px 20px #0000008c}.sc-bubble:after{content:"";left:var(--tail);background:#e3d8c0;border-radius:0 0 3px;width:14px;height:14px;margin-left:-7px;position:absolute;bottom:-7px;transform:rotate(45deg)skew(8deg,8deg);box-shadow:1px 1px #3c281459}.sc-bubble.edge-left{--tail:26px;left:-6px;transform:none}.sc-bubble.edge-right{--tail:calc(100% - 26px);left:auto;right:-6px;transform:none}@keyframes sc-bubble{0%{opacity:0;margin-bottom:-8px}}.sc-bubble-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sc-bubble.now{box-shadow:0 0 0 1px #78461480,0 0 26px #f3c27a73,0 8px 20px #0000008c}.sc-bubble.kind-live{outline-offset:-5px;background:#f2ebdbe6;outline:2px dashed #5a3c1e8c;font-style:italic}.sc-bubble.kind-typing{min-width:0;padding:6px 12px}.sc-dots{align-items:center;gap:4px;height:14px;display:inline-flex}.sc-dots i{background:#5a4632;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite sc-dot}.sc-dots i:nth-child(2){animation-delay:.15s}.sc-dots i:nth-child(3){animation-delay:.3s}@keyframes sc-dot{0%,60%,to{opacity:.5;transform:none}30%{opacity:1;transform:translateY(-4px)}}.sc-caret{vertical-align:-2px;background:#6a4a2a;width:2px;height:1em;margin-left:2px;animation:1s steps(2,end) infinite sc-caret;display:inline-block}@keyframes sc-caret{50%{opacity:0}}.sc-votes{z-index:1500;width:100%;height:100%;overflow:visible}.sc-vote path{fill:none}.sc-vote-glow{stroke:hsl(var(--hue) 80% 60% / .25);stroke-width:7px;stroke-linecap:round}.sc-vote-line{stroke:hsl(var(--hue) 75% 68%);stroke-width:2.2px;stroke-dasharray:7 6;stroke-linecap:round;animation:1.2s linear infinite sc-march}.sc-vote.mine .sc-vote-line{stroke:var(--candle-glow);stroke-width:2.8px}.sc-vote-tip{fill:hsl(var(--hue) 75% 68%);filter:drop-shadow(0 0 4px hsl(var(--hue) 80% 60%))}@keyframes sc-march{to{stroke-dashoffset:-26px}}.sc-plaque{z-index:3000;text-align:center;min-width:min(380px,70cqw);animation:sc-plaque .7s var(--ease) .9s both;background:linear-gradient(#1c1012f0,#0c080af0);border:1px solid #d23a4780;border-radius:6px;padding:16px 36px 18px;inset:9% auto auto 50%;transform:translate(-50%);box-shadow:0 0 0 4px #0c080a99,0 0 0 5px #d23a4740,0 24px 60px #000000b3,0 0 60px #a3202c4d}.sc-plaque:before,.sc-plaque:after{content:"";background:var(--blood-bright);width:9px;height:9px;box-shadow:0 0 10px var(--blood-bright);margin-left:-4.5px;position:absolute;left:50%;transform:rotate(45deg)}.sc-plaque:before{top:-5px}.sc-plaque:after{bottom:-5px}.sc-plaque-name{font-family:var(--display);color:var(--text);text-shadow:0 0 20px #000c;font-size:clamp(26px,5cqw,52px);font-weight:700;line-height:1}.sc-plaque-role{font-family:var(--display);color:var(--moon);margin-top:6px;font-size:clamp(18px,2.8cqw,30px);font-style:italic;font-weight:600}.sc-plaque.mafia .sc-plaque-role{color:#f08a90}.sc-plaque-cause{letter-spacing:.22em;text-transform:uppercase;color:#c98a8f;margin-top:8px;font-size:clamp(10px,1.1cqw,13px)}@keyframes sc-plaque{0%{opacity:0;transform:translate(-50%)translateY(-14px)scale(.94)}}.sc-title{z-index:3100;background:radial-gradient(60% 40% at 50% 45%,#030408bf,#03040840 70%,#0000);place-items:center;animation:2.3s both sc-titlecard;display:grid}.sc-title span{font-family:var(--display);letter-spacing:.08em;color:var(--text);text-shadow:0 0 30px #000000e6,0 0 60px #e8a34a40;border-top:1px solid #e9e1d040;border-bottom:1px solid #e9e1d040;padding:0 .6em;font-size:clamp(30px,7cqw,76px);font-weight:600;line-height:1.3}@keyframes sc-titlecard{0%{opacity:0;letter-spacing:.02em}18%,72%{opacity:1}to{opacity:0}}@container scene (width<=640px){.sc-name-full{display:none}.sc-name-short{display:inline}.sc-ai{display:none}.sc-plate{max-width:none;padding:1px 5px 2px}.sc-name{font-size:11px}.sc-role{font-size:10px}.sc-bubble{border-radius:10px;max-width:42cqw;padding:4px 8px 5px;font-size:12px}.sc-bubble.edge-left{--tail:16px;left:-2px}.sc-bubble.edge-right{--tail:calc(100% - 16px);right:-2px}.sc-bubble-text{-webkit-line-clamp:2}.sc-bubble.old,.sc-stone span{display:none}.sc-bubble:after{width:10px;height:10px;margin-left:-5px;bottom:-5px}.sc-plaque{padding:10px 18px 12px}.sc-tally{min-width:18px;min-height:18px;font-size:12px}}@media (prefers-reduced-motion:reduce){.scene *,.scene :before,.scene :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.sc-title,.sc-plaque{animation:none!important}.sc-flash{display:none}}.sc-title~.sc-plaque{animation-delay:1.4s}.scene[data-phase=lobby] .selectable:not(.selected) .sc-ring{box-shadow:none;border-color:#0000;animation:none}.scene[data-phase=lobby] .selectable:not(.selected):hover .sc-ring{border-color:#e9e1d059}.room-page{height:var(--vvh,100dvh);min-height:0;overflow:hidden}.room-name{font-family:var(--display);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:22px;font-weight:600;overflow:hidden}.conn-pill{color:#f0a0a5;white-space:nowrap;border:1px solid #d23a4780;border-radius:999px;padding:3px 10px;font-size:12px;animation:2s infinite flicker}.room-loading{flex:1;place-items:center;display:grid}.lobby,.game{width:min(100%,1400px);min-height:0;padding:4px var(--gutter) var(--gutter);flex:1;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:20px;margin:0 auto;display:grid}.lobby-stage{flex-direction:column;align-items:center;gap:14px;min-height:0;padding-top:6px;display:flex;overflow:auto}.lobby-side,.game-side{flex-direction:column;gap:10px;min-height:0;display:flex}.lobby-center{text-align:center}.lobby-game{font-family:var(--display);color:var(--candle-glow);text-shadow:0 0 22px #e8a34a80;font-size:clamp(28px,4vw,44px);font-weight:600}.lobby-count{font-family:var(--display);font-size:22px}.lobby-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.start-btn{min-width:140px;font-family:var(--display);letter-spacing:.08em;font-size:19px}.start-btn:not(:disabled){box-shadow:0 0 26px #a3202c8c}.start-error{color:#e6a0a4;text-align:center;font-size:13px}.spectators{color:var(--dim);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 12px;font-size:13px;display:flex}.spectators svg{width:16px;height:16px}.seg{border:1px solid var(--line);background:#07080d99;border-radius:999px;align-self:flex-start;gap:4px;padding:4px;display:flex}.seg-btn{cursor:pointer;color:var(--dim);background:0 0;border:0;border-radius:999px;padding:6px 16px;font-size:14px}.seg-btn.active{background:var(--candle-soft);color:var(--candle-glow)}.settings{flex:1;min-height:0;padding:6px 16px 16px;overflow:auto}.config{display:contents}.config-group{border:0;border-bottom:1px solid var(--line);margin:0;padding:12px 0 4px}.config-group:last-child{border-bottom:0}.config-group legend{font-family:var(--display);color:var(--candle-glow);margin-bottom:4px;padding:0;font-size:20px;font-weight:600}.config-row{justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding:7px 0;display:flex}.config-row.toggle{width:100%}.config-label{color:var(--text);min-width:0;font-size:14px}.config-select{width:auto;max-width:55%;min-height:34px;padding-top:4px;padding-bottom:4px}.stepper{border:1px solid var(--line-strong);border-radius:999px;flex:none;align-items:center;display:inline-flex;overflow:hidden}.stepper button{cursor:pointer;background:#07080d99;border:0;width:32px;height:30px;font-size:16px}.stepper button:hover:not(:disabled){background:var(--candle-soft);color:var(--candle-glow)}.stepper button:disabled{opacity:.35;cursor:default}.stepper-value{text-align:center;font-variant-numeric:tabular-nums;min-width:52px;font-size:14px}.stepper-value small{color:var(--dim);font-size:11px}.char-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px;display:grid}.char-pick{border-radius:var(--radius-lg);border:1px solid var(--line);cursor:pointer;transition:border-color .2s, transform .2s var(--ease), box-shadow .2s;background:#07080d80;flex-direction:column;align-items:center;gap:8px;padding:14px 8px 10px;display:flex;position:relative}.char-pick .portrait{width:76px;box-shadow:0 0 0 2px hsl(var(--hue) 60% 45% / .6)}.char-pick:hover:not(:disabled){border-color:hsl(var(--hue) 60% 55% / .6);box-shadow:0 0 24px hsl(var(--hue) 60% 45% / .25);transform:translateY(-3px)}.char-pick.seated{opacity:.35;cursor:default}.char-pick-name{font-family:var(--display);text-align:center;font-size:18px;font-weight:600}.char-pick-games{color:var(--dim);font-size:11px;position:absolute;top:8px;right:10px}@media (max-width:900px){.room-page{height:auto;min-height:100dvh;overflow:visible}.lobby,.game{grid-template-columns:minmax(0,1fr);gap:12px}.lobby-stage{overflow:visible}.lobby-side .chat,.game-side .chat{flex:none;height:60dvh}.settings{overflow:visible}}.room-page .moon{display:none}@media (max-width:640px){.room-page .brand{display:none}.room-name{font-size:19px}}.table-wrap{--seat:76px;width:min(100%,640px);margin:0 auto}.table-wrap[data-size=lg]{--seat:88px}.table-wrap[data-size=sm]{--seat:60px}.table{aspect-ratio:1/.9;width:100%;position:relative}.table-top{background:radial-gradient(at 50% 45%,#6e421e8c,#301c10cc 55%,#140c08f2 100%);border-radius:50%;position:absolute;inset:17% 16%;box-shadow:0 0 0 1px #e8a34a1f,0 30px 60px #0009,inset 0 0 50px #000000b3}.table-top:before{content:"";pointer-events:none;background:radial-gradient(circle,#f3c27a38,#0000 55%);border-radius:50%;animation:5s infinite flicker;position:absolute;inset:-30%}.table-candle{background:var(--candle-glow);opacity:.6;border-radius:50%;width:8px;height:8px;margin:-4px;animation:3s infinite flicker;position:absolute;top:50%;left:50%;box-shadow:0 0 18px 8px #f3c27a73,0 0 60px 30px #e8a34a26}.table-center{text-align:center;z-index:2;place-items:center;display:grid;position:absolute;inset:22%}.seat-ring{z-index:3;pointer-events:none;position:absolute;inset:0}.seat{left:var(--x);top:var(--y);width:var(--seat);pointer-events:auto;transition:transform .6s var(--ease), opacity .8s, filter .8s;flex-direction:column;align-items:center;display:flex;position:absolute;transform:translate(-50%,-50%)}.seat-btn{width:var(--seat);height:var(--seat);cursor:default;background:0 0;border:0;border-radius:50%;padding:0;display:block;position:relative}.seat-portrait{width:100%;transition:box-shadow .4s,filter 1.2s,opacity 1.2s;box-shadow:0 0 0 2px #e9e1d02e,0 8px 22px #0009}.seat-name{font-family:var(--display);max-width:calc(var(--seat) + 30px);text-align:center;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 6px #000000e6;margin-top:6px;font-size:16px;font-weight:600;line-height:1.1;overflow:hidden}.seat-sub{letter-spacing:.06em;text-transform:uppercase;color:var(--dim);white-space:nowrap;font-size:11px}.seat.mine .seat-name{color:var(--candle-glow)}.seat.away .seat-portrait{opacity:.45}.seat-empty .empty-chair{box-shadow:none;background:#07080d59;border:1px dashed #e9e1d033}.seat-badges{z-index:4;gap:3px;display:flex;position:absolute;top:-6px;right:-8px}.badge{background:var(--ink-3);border:1px solid var(--line-strong);min-width:20px;height:20px;color:var(--text);border-radius:999px;place-items:center;padding:0 5px;font-size:11px;font-weight:600;display:inline-grid}.badge svg{width:12px;height:12px}.badge-host{color:var(--candle-glow);border-color:#e8a34a80}.badge-ai{color:var(--moon);letter-spacing:.06em;font-size:9px}.badge-remove{cursor:pointer;width:20px;padding:0}.badge-remove:hover{background:var(--blood);border-color:var(--blood-bright)}.badge-votes{background:var(--blood);border-color:var(--blood-bright);color:#fff;animation:pop .35s var(--ease);box-shadow:0 0 10px #d23a4799}.badge-ready{border-color:var(--candle);color:var(--candle-glow);background:#e8a34a33;width:20px;padding:0}.badge-typing{align-items:center;gap:2px;display:inline-flex}.badge-typing i,.dots i{background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.2s infinite dot;display:inline-block}.badge-typing i:nth-child(2),.dots i:nth-child(2){animation-delay:.15s}.badge-typing i:nth-child(3),.dots i:nth-child(3){animation-delay:.3s}.dots{color:var(--dim);gap:4px;padding:4px 0;display:inline-flex}@keyframes dot{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}@keyframes pop{0%{transform:scale(.4)}}.seat-rings{pointer-events:none;position:absolute;inset:0}.seat-rings i{border:2px solid var(--candle-glow);opacity:0;border-radius:50%;position:absolute;inset:0}.seat.speaking{z-index:5;transform:translate(-50%,-50%)translateY(-10px)scale(1.16)}.seat.speaking .seat-portrait{box-shadow:0 0 0 2px var(--candle), 0 0 26px 6px #f3c27a8c, 0 0 70px 18px #e8a34a38;animation:3.2s infinite flicker}.seat.speaking .seat-rings i{animation:2.1s ease-out infinite ring}.seat.speaking .seat-rings i:nth-child(2){animation-delay:.7s}.seat.speaking .seat-rings i:nth-child(3){animation-delay:1.4s}.seat.speaking .seat-name{color:var(--candle-glow)}@keyframes ring{0%{opacity:.65;transform:scale(1)}to{opacity:0;transform:scale(1.85)}}.seat.queued .seat-portrait{animation:2.4s ease-in-out infinite breathe;box-shadow:0 0 0 2px #f3c27a73,0 0 16px 2px #e8a34a4d}@keyframes breathe{50%{box-shadow:0 0 0 2px #f3c27acc,0 0 22px 5px #e8a34a73}}.seat.mate .seat-portrait{box-shadow:0 0 0 2px #d23a47b3,0 8px 22px #0009}.seat.choosable .seat-btn{cursor:pointer}.seat.choosable .seat-btn:after{content:"";pointer-events:none;border:1.5px dashed #9fb3c8b3;border-radius:50%;animation:18s linear infinite spin;position:absolute;inset:-6px}.seat.choosable .seat-portrait{box-shadow:0 0 0 2px #9fb3c880,0 0 22px #9fb3c840}.seat.picked .seat-btn:after{border:2px solid var(--blood-bright);animation:none}.seat.choosable:hover .seat-portrait{box-shadow:0 0 0 2px var(--candle-glow), 0 0 22px #f3c27a66}.seat.picked .seat-portrait{box-shadow:0 0 0 3px var(--blood-bright), 0 0 28px 6px #d23a478c}.seat.picked{transform:translate(-50%,-50%)scale(1.08)}.seat-ash{pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 120%,#3c3832d9,#1e1c1a80 60%,#0000 80%);border-radius:50%;transition:opacity 1.6s;position:absolute;inset:0}.seat.dead .seat-portrait{filter:grayscale()sepia(.25)brightness(.55)contrast(.9);opacity:.55}.seat.dead .seat-ash{opacity:1}.seat.dead .seat-name{color:var(--faint);-webkit-text-decoration:line-through #a3202c99;text-decoration:line-through #a3202c99}.seat.dead .seat-sub{color:#c98a8f}.seat.shake .seat-btn{animation:.7s ease-in-out both shake;animation-delay:var(--shake-delay,1s)}@keyframes shake{0%,to{transform:translate(0)}15%{transform:translate(-7px)rotate(-3deg)}30%{transform:translate(7px)rotate(3deg)}45%{transform:translate(-5px)rotate(-2deg)}60%{transform:translate(5px)rotate(2deg)}75%{transform:translate(-2px)}}.vote-lines{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.vote-line line{stroke:#d23a47bf;stroke-width:1.6px;stroke-dasharray:5 4;filter:drop-shadow(0 0 3px #d23a47cc);animation:1.2s linear infinite march}.vote-line circle{fill:var(--blood-bright)}.vote-line.own line{stroke:#f3c27ad9;filter:drop-shadow(0 0 3px #f3c27acc)}.vote-line.own circle{fill:var(--candle-glow)}@keyframes march{to{stroke-dashoffset:-18px}}.stage{flex-direction:column;gap:10px;min-height:0;display:flex;position:relative;overflow:auto}.stage-table{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.phase-bar{align-items:center;gap:16px;padding:4px 4px 0;display:flex}.phase-main{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.phase-label{text-shadow:0 0 20px #000c;white-space:nowrap;text-overflow:ellipsis;font-size:clamp(26px,3.4vw,38px);overflow:hidden}.phase-round{font-family:var(--display);color:var(--dim);border:1px solid var(--line-strong);border-radius:999px;padding:0 10px;font-size:18px}.phase-tools{gap:8px;display:flex}.phase-tools .btn[style] svg{color:var(--team)}.countdown{font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--candle);text-shadow:0 0 14px #e8a34a8c;text-align:right;min-width:70px;font-size:30px;font-weight:600}.countdown.urgent{color:var(--blood-bright);text-shadow:0 0 16px #d23a47cc;animation:1s ease-in-out infinite urgent}@keyframes urgent{50%{opacity:.75;transform:scale(1.12)}}.stage-center{width:100%}.stage-phase{font-family:var(--display);color:#e9e1d0bf;font-size:clamp(20px,2.6vw,28px);font-style:italic}.stage-notice{color:var(--candle-glow);margin-top:6px;font-size:14px}.stage-speaking{animation:rise .4s var(--ease);transition:opacity 3s}.stage-speaking.fading{opacity:.35}.stage-speaker-name{font-family:var(--display);color:hsl(var(--hue) 70% 72%);text-shadow:0 0 14px hsl(var(--hue) 70% 50% / .5);font-size:22px;font-weight:600}.ribbon{font-family:var(--display);-webkit-line-clamp:6;-webkit-box-orient:vertical;max-height:7.8em;margin-top:6px;font-size:clamp(17px,2vw,21px);line-height:1.3;display:-webkit-box;overflow:hidden}.ribbon-live{color:var(--candle-glow);font-style:italic}.caret{vertical-align:-.12em;background:var(--candle-glow);width:2px;height:1em;margin-left:3px;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.cut-mark{color:var(--blood-bright);margin-left:3px;font-weight:700}.vote-reveal{z-index:6;background:radial-gradient(#0a0406eb 30%,#0a040699 60%,#0000 75%);border-radius:50%;place-items:center;animation:.3s fade,.6s 6.3s reverse forwards fade;display:grid;position:absolute;inset:-20% -14%}.vote-rows{flex-direction:column;gap:6px;width:min(320px,96%);display:flex}.vote-row{opacity:0;animation:rowin .4s var(--ease) forwards;grid-template-columns:minmax(0,1.4fr) 1.4fr auto;align-items:center;gap:8px;font-size:14px;display:grid}@keyframes rowin{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.vote-row-name{text-align:right;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vote-row-bar{background:linear-gradient(90deg, var(--blood), var(--blood-bright));height:6px;width:var(--w);border-radius:3px;box-shadow:0 0 8px #d23a4799}.vote-row.top b{color:var(--blood-bright)}.vote-stamp{font-family:var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--blood-bright);border:4px double var(--blood-bright);text-shadow:0 0 18px #d23a4799;opacity:0;mix-blend-mode:screen;border-radius:8px;padding:4px 22px;font-size:clamp(34px,5vw,52px);font-weight:700;animation:.45s cubic-bezier(.3,1.6,.5,1) forwards stamp;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-12deg)scale(2.2)}.vote-stamp.spared{color:var(--moon);border-color:var(--moon);text-shadow:0 0 18px #9fb3c880}@keyframes stamp{to{opacity:.95;transform:translate(-50%,-50%)rotate(-12deg)scale(1)}}.decision-bar{animation:rise .4s var(--ease);border-color:#d23a4740;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.decision-tabs{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line-strong);cursor:pointer;color:var(--dim);background:0 0;border-radius:999px;padding:4px 12px;font-size:13px}.chip.active{color:var(--candle-glow);border-color:var(--candle)}.decision{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.decision-label{font-family:var(--display);font-size:22px;font-weight:600}.decision-pick{font-family:var(--display);color:var(--blood-bright);flex:1;min-width:0;font-size:20px}.decision-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.card-back-drop{z-index:70;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);perspective:1200px;cursor:pointer;padding:var(--gutter);background:#030408c7;place-items:center;animation:.4s fade;display:grid;position:fixed;inset:0}.role-card{aspect-ratio:5/7.4;width:min(300px,80vw);transform-style:preserve-3d;animation:rise .6s var(--ease);transition:transform 1s cubic-bezier(.4,.2,.2,1);position:relative}.role-card.flipped{transform:rotateY(180deg)}.role-face{backface-visibility:hidden;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;padding:28px 24px;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 30px 80px #000c}.role-face-back{background:repeating-linear-gradient(45deg,#e8a34a0d 0 6px,#0000 6px 12px),radial-gradient(circle at 50% 40%,#1d2133,#0a0b12);border:1px solid #e8a34a59}.role-back-moon{width:90px;height:90px;box-shadow:inset -22px 8px 0 0 var(--candle-glow);filter:drop-shadow(0 0 18px #f3c27a99);border-radius:50%;transform:rotate(-20deg)}.role-back-word{font-family:var(--display);letter-spacing:.1em;color:var(--candle-glow);margin-top:22px;font-size:30px}.role-face-front{background:radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--team) 26%, transparent), transparent 60%), linear-gradient(180deg, #171a28, #0b0c13);border:1px solid color-mix(in srgb, var(--team) 60%, transparent);text-align:center;transform:rotateY(180deg);justify-content:center!important}.role-team{letter-spacing:.22em;text-transform:uppercase;color:var(--team);font-size:12px}.role-title{color:var(--text);text-shadow:0 0 24px color-mix(in srgb, var(--team) 60%, transparent);margin-top:10px;font-size:46px}.role-rule{background:linear-gradient(90deg, transparent, var(--team), transparent);width:60%;height:1px;margin:16px 0}.role-text{color:#e9e1d0e0;margin:0;font-size:15px;line-height:1.55;overflow:auto}.results{z-index:15;border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(6px);background:radial-gradient(at 50% 20%,#e8a34a24,#0000 50%),#030408e6;animation:.6s fade;position:absolute;inset:0;overflow:auto}.results-bar{animation:rise .4s var(--ease);align-items:center;gap:12px;padding:8px 10px 8px 16px;display:flex}.results-bar-title{text-align:left;cursor:pointer;min-width:0;font-family:var(--display);color:var(--candle-glow);text-shadow:0 0 16px #e8a34a80;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;flex:1;font-size:22px;font-weight:600;overflow:hidden}.seat.mafia-seat .seat-portrait{box-shadow:0 0 0 2px var(--blood-bright), 0 0 18px #d23a4773}.seat.mafia-seat .seat-sub{color:#f08a90}.results-inner{width:min(100%,980px);padding:40px var(--gutter) 28px;text-align:center;flex-direction:column;align-items:center;gap:14px;margin:0 auto;display:flex;position:relative}.results-close{top:12px;right:var(--gutter);position:absolute}.results-you{letter-spacing:.3em;text-transform:uppercase;font-size:13px}.results-you.won{color:var(--candle-glow)}.results-you.lost{color:#c98a8f}.results-title{color:var(--candle-glow);text-shadow:0 0 30px #e8a34ab3,0 0 80px #e8a34a4d;animation:rise .9s var(--ease), flicker 6s 1s infinite;font-size:clamp(40px,7vw,76px)}.results-cards{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px;width:100%;margin-top:18px;display:grid}.reveal-card{border:1px solid color-mix(in srgb, var(--team) 40%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--team) 14%, #10121b), #0a0b12);opacity:0;animation:slideup .6s var(--ease) forwards;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:16px 10px 14px;display:flex}.reveal-card.winner{box-shadow:0 0 26px color-mix(in srgb, var(--candle) 35%, transparent);border-color:var(--candle)}.reveal-portrait{width:72px;box-shadow:0 0 0 2px var(--team);margin-bottom:6px}.reveal-card.fallen .reveal-portrait{filter:grayscale()brightness(.7)}.reveal-name{font-family:var(--display);font-size:19px;font-weight:600}.reveal-role{color:var(--team);font-size:14px}.reveal-team{letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-size:11px}.results-actions{gap:10px;margin-top:20px;display:flex}@keyframes slideup{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}@media (max-width:720px){.results{position:relative;inset:auto;overflow:visible}.results-cards{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.table-wrap,.table-wrap[data-size]{--seat:58px;width:100%}.table{aspect-ratio:auto;flex-direction:column;display:flex}.table-top,.vote-lines{display:none}.seat-ring{scroll-snap-type:x proximity;order:1;gap:6px;padding:18px 6px 8px;display:flex;position:relative;inset:auto;overflow-x:auto}.seat{width:calc(var(--seat) + 10px);scroll-snap-align:center;flex:none;position:relative;top:auto;left:auto;transform:none}.seat-name{max-width:calc(var(--seat) + 10px);font-size:14px}.seat-badges{right:-2px}.seat.speaking{transform:translateY(-6px)scale(1.1)}.seat.picked{transform:scale(1.06)}.table-center{order:2;min-height:84px;padding:6px 4px;position:relative;inset:auto}.vote-reveal{background:#0a0406f0;border-radius:16px;padding:12px;inset:-10px 0}.vote-stamp{font-size:30px}.phase-bar{gap:10px}.countdown{min-width:0;font-size:24px}.decision-label{font-size:19px}.decision-actions{width:100%;margin-left:0}.decision-actions .btn{flex:1}.lobby-stage .table-center{min-height:0}}.chat{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.chat-tabs{border-bottom:1px solid var(--line);gap:2px;padding:8px 10px 0;display:flex}.chat-tab{cursor:pointer;color:var(--dim);font-family:var(--display);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px 10px;font-size:18px;font-weight:600;position:relative}.chat-tab.active{color:var(--text);border-bottom-color:var(--candle)}.chat-tab-mafia.active{border-bottom-color:var(--blood-bright);color:#f0b6ba}.chat-tab-dead.active{border-bottom-color:var(--moon);color:var(--moon)}.chat-tab.fresh:after{content:"";background:var(--candle-glow);width:6px;height:6px;box-shadow:0 0 8px var(--candle);border-radius:50%;position:absolute;top:8px;right:6px}.chat-lines{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 12px 6px;display:flex;overflow:hidden auto}.chan-mafia{background:radial-gradient(at 50% 0,#a3202c1f,#0000 60%)}.chan-dead{filter:saturate(.6);background:radial-gradient(at 50% 0,#9fb3c81a,#0000 60%)}.msg{align-items:flex-start;gap:10px;display:flex}.msg.fresh{animation:rise .35s var(--ease)}.msg-portrait{width:34px;margin-top:2px;box-shadow:0 0 0 1px #e9e1d026}.msg-body{flex:1;min-width:0}.msg-name{font-family:var(--display);color:hsl(var(--hue) 55% 72%);align-items:center;gap:6px;font-size:16px;font-weight:600;display:flex}.msg-via svg{width:12px;height:12px;color:var(--dim)}.msg-text{overflow-wrap:anywhere;color:var(--text);font-size:14.5px}.msg.mine .msg-name{color:var(--candle-glow)}.msg.cut .msg-text{color:#e9e1d0bf}.msg-narration{font-family:var(--display);color:#e9e1d0d9;text-align:center;padding:6px 12px;font-size:18px;font-style:italic;line-height:1.4;animation:1.2s fade;display:block}.msg-log{color:var(--dim);text-align:center;padding:2px 8px;font-size:13px}.log-death{color:#f08a90;font-family:var(--display);background:linear-gradient(90deg,#0000,#a3202c1f,#0000);border-top:1px solid #a3202c59;border-bottom:1px solid #a3202c59;justify-content:center;align-items:center;gap:8px;padding:8px;font-size:17px;font-weight:600;display:flex}.log-death-mark{background:var(--blood-bright);width:8px;height:8px;box-shadow:0 0 8px var(--blood-bright);flex:none;transform:rotate(45deg)}.log-private{border-radius:var(--radius);color:var(--moon);text-align:left;border:1px dashed #9fb3c866;padding:8px 10px}.log-reveal{color:var(--candle-glow);font-family:var(--display);font-size:16px}.log-result{font-family:var(--display);color:var(--candle-glow);text-shadow:0 0 14px #e8a34a80;padding:10px;font-size:22px}.log-vote{flex-direction:column;align-items:center;gap:6px;display:flex}.vote-chips{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.vote-chip{border:1px solid var(--line-strong);border-radius:999px;padding:2px 8px;font-size:12px}.vote-chip.hanged{border-color:var(--blood-bright);color:#f08a90}.composer{border-top:1px solid var(--line);background:#07080d66;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex}.composer-input{background:0 0;border:0;outline:none;flex:1;min-width:120px;height:40px;padding:0 12px;font-size:15px}.composer-input::placeholder{color:var(--faint)}.composer-mafia{background:#a3202c1f}.composer-dead{background:#9fb3c80f}.composer-switch{border:0;border-top:1px solid var(--line);cursor:pointer;color:var(--candle-glow);font-family:var(--display);background:#07080d66;padding:12px;font-size:17px}.mic{width:44px;height:44px;color:var(--candle-glow);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle,#e8a34a2e,#07080d99);border:1px solid #e8a34a73;border-radius:50%;flex:none;place-items:center;transition:transform .15s,box-shadow .2s;display:grid}.mic svg{width:20px;height:20px}.mic.live{border-color:var(--blood-bright);color:#fff;background:radial-gradient(circle,#d23a4799,#78141c99);animation:1.2s ease-in-out infinite micpulse;transform:scale(1.08);box-shadow:0 0 0 6px #d23a4726,0 0 24px #d23a4799}@keyframes micpulse{50%{box-shadow:0 0 0 12px #d23a470d,0 0 30px #d23a47b3}}.ready-btn.on{border-color:var(--candle);color:var(--candle-glow);background:#e8a34a33}.queued-ribbon{color:var(--candle-glow);font-family:var(--display);white-space:nowrap;text-overflow:ellipsis;background:#0e1018d9;border:1px solid #e8a34a59;border-radius:999px;padding:8px 14px;font-size:17px;font-style:italic;animation:2.4s ease-in-out infinite breathe-border;overflow:hidden}@keyframes breathe-border{50%{border-color:#f3c27acc;box-shadow:0 0 18px #e8a34a40}}.composer-input:focus-visible{outline:none}.composer:focus-within{box-shadow:inset 0 1px #e8a34a73}.chat-sheet{z-index:40;min-height:150px;margin:0 calc(-1 * var(--gutter));padding-bottom:env(safe-area-inset-bottom);transform:translateY(min(0px, var(--drag,0px) * .3));background:linear-gradient(#161a29,#0e1018);border-bottom:0;border-radius:18px 18px 0 0;flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.chat-sheet.open{height:calc(var(--vvh,100dvh) * .84);transform:translateY(max(0px, var(--drag,0px)));animation:sheet-up .32s var(--ease);margin:0;position:fixed;bottom:0;left:0;right:0}@keyframes sheet-up{0%{transform:translateY(35%)}}.sheet-scrim{z-index:39;background:#03040899;animation:.3s fade;position:fixed;inset:0}.sheet-handle{cursor:grab;touch-action:none;flex:none;justify-content:flex-end;align-items:center;height:30px;padding:0 14px;display:flex;position:relative}.sheet-handle:before{content:"";position:absolute;inset:-8px 0 -6px}.sheet-grip{background:#e9e1d052;border-radius:2px;width:44px;height:4px;margin-left:-22px;position:absolute;top:10px;left:50%}.sheet-unread{background:var(--candle);color:#1a1208;border-radius:11px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:600;display:grid;box-shadow:0 0 10px #e8a34a99}.chat-sheet .chat{box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:0;border-radius:0}.chat-sheet:not(.open) .chat-tabs{display:none}.chat-sheet:not(.open) .chat-lines{padding-top:0;-webkit-mask-image:linear-gradient(#0000,#000 36px);mask-image:linear-gradient(#0000,#000 36px)}.chat-sheet .queued-ribbon{margin:0 10px 6px}.composer-big{flex-wrap:nowrap;gap:8px;padding:8px 10px 10px}.composer-big .composer-input{border:1px solid var(--line);background:#07080d8c;border-radius:24px;min-width:0;height:48px;padding:0 16px;font-size:16px}.composer-big .ready-btn{min-height:48px}.ptt-big{width:64px;height:64px;box-shadow:0 0 22px #e8a34a59}.ptt-big svg{width:28px;height:28px}.chat-sheet .chat-lines>:first-child{margin-top:auto}.scene-wrap{flex:1;min-height:380px;display:flex;position:relative}.game-scene{flex:1;min-width:0;min-height:0}.scene-wrap .vote-reveal{z-index:20}.scene-notice{z-index:12;max-width:calc(100% - 32px);color:var(--moon);font-family:var(--display);text-align:center;animation:rise .4s var(--ease);pointer-events:none;background:#07080dd1;border:1px dashed #9fb3c873;border-radius:999px;padding:8px 16px;font-size:18px;font-style:italic;position:absolute;top:14px;left:50%;transform:translate(-50%)}.scene-wrap .results{position:absolute;inset:0;overflow:auto}.scene-wrap .results-bar{z-index:14;position:absolute;bottom:12px;left:12px;right:12px}.role-btn svg{color:var(--team)}.lobby-stage .scene-wrap{width:100%}.lobby-badge{z-index:12;border:1px solid var(--line);pointer-events:none;background:#07080db3;border-radius:999px;align-items:baseline;gap:12px;padding:6px 14px;display:flex;position:absolute;top:14px;left:16px}.lobby-badge .lobby-game{font-size:24px}.lobby-badge .lobby-count{font-size:18px}@media (max-width:900px){.scene-wrap{aspect-ratio:16/10;flex:none;min-height:0}}@media (max-width:760px){.room-page{height:var(--vvh,100dvh);min-height:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);overflow:hidden}.room-page .topbar{min-height:48px;padding-top:4px;padding-bottom:4px}.game.narrow,.lobby.narrow{padding:0 var(--gutter);flex-direction:column;gap:8px;display:flex;overflow:hidden}.narrow .stage,.narrow.lobby .lobby-stage{flex:none;gap:8px;min-height:0;padding-top:0;overflow:visible}.narrow .phase-bar{gap:10px;padding:0 2px}.narrow .phase-label{font-size:24px}.narrow .role-btn{width:44px;height:44px;padding:0}.narrow .scene-wrap{aspect-ratio:390/400;min-height:0;max-height:46dvh;margin:0 calc(-1 * var(--gutter) + 8px);flex:none}.narrow .game-scene{border-radius:12px}.narrow .scene-notice{padding:5px 12px;font-size:15px;top:8px}.narrow .decision-bar{padding:8px 10px 8px 14px}.narrow .decision{flex-wrap:wrap;gap:8px}.narrow .decision-label{font-size:19px}.narrow .decision-pick{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:18px;overflow:hidden}.narrow .decision-actions{flex-wrap:nowrap;flex:none;width:auto;margin-left:auto}.narrow .decision-actions .btn{flex:none;min-height:44px;padding:0 14px}.narrow .decision-tabs .chip{min-height:36px}.narrow.lobby .lobby-actions{gap:8px}.narrow.lobby .lobby-actions .btn{min-height:44px}.narrow .lobby-badge{padding:3px 10px;top:8px;left:8px}.narrow .lobby-badge .lobby-game{font-size:18px}.narrow .lobby-badge .lobby-count{font-size:15px}.narrow .start-error{font-size:12px}.scene-wrap .results-bar{padding:4px 6px 4px 12px;inset:8px 8px auto}.scene-wrap .results-bar-title{font-size:18px}.scene-wrap .results-inner{gap:8px;padding:18px 10px 14px}.scene-wrap .results-title{font-size:28px}}.signin{min-height:100dvh;padding:var(--gutter);place-items:center;padding-bottom:18vh;display:grid}.signin-lamp{pointer-events:none;z-index:-1;background:radial-gradient(circle,#e8a34a29,#0000 62%);width:520px;height:520px;animation:5s infinite flicker;position:fixed;top:50%;left:50%;transform:translate(-50%,-58%)}.signin-card{-webkit-backdrop-filter:blur(8px);width:min(100%,360px);animation:rise .8s var(--ease);background:linear-gradient(#0e1018c7,#07080dd9);border:1px solid #e8a34a2e;border-radius:20px;flex-direction:column;gap:16px;padding:34px 28px 28px;display:flex;box-shadow:0 30px 80px #000000b3,0 0 60px #e8a34a0f,inset 0 1px #f3c27a14}.signin-title{text-align:center;letter-spacing:.06em;color:var(--candle-glow);text-shadow:0 0 28px #e8a34a8c,0 0 2px #f3c27acc;font-size:54px;font-weight:600;animation:7s infinite flicker}.signin-rule{background:linear-gradient(90deg,#0000,#e8a34a80,#0000);height:1px;margin:-4px 30px 6px}.signin-go{min-height:44px;font-family:var(--display);letter-spacing:.08em;margin-top:6px;font-size:20px}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#07080d;--ink-2:#0e1018;--ink-3:#151826;--ink-4:#1d2133;--line:#e9e1d01a;--line-strong:#e9e1d033;--candle:#e8a34a;--candle-glow:#f3c27a;--candle-soft:#e8a34a29;--blood:#a3202c;--blood-bright:#d23a47;--moon:#9fb3c8;--moon-soft:#9fb3c824;--text:#e9e1d0;--dim:#9a927f;--faint:#6b6557;--display:"Cormorant Garamond", "Iowan Old Style", Georgia, serif;--body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:10px;--radius-lg:16px;--gutter:16px;--shadow:0 18px 50px #0000008c;--ease:cubic-bezier(.22, .8, .24, 1)}*,:before,:after{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--text);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.45;overflow-x:hidden}#app{isolation:isolate;min-height:100%;position:relative}h1,h2,h3,h4{font-family:var(--display);letter-spacing:.01em;margin:0;font-weight:600;line-height:1.1}a{color:var(--candle-glow)}button,input,select,textarea{font:inherit;color:inherit}::selection{background:#e8a34a59}:focus-visible{outline:2px solid var(--candle);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:#e9e1d02e transparent}.btn{border:1px solid var(--line-strong);min-height:38px;color:var(--text);cursor:pointer;letter-spacing:.02em;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#151826b3;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:500;transition:background .2s,border-color .2s,box-shadow .2s,transform .15s,opacity .2s;display:inline-flex}.btn:hover:not(:disabled){background:#1d2133e6;border-color:#f3c27a80}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-candle{color:#1a1006;background:linear-gradient(#f0b05a,#c9832f);border-color:#f3c27a;font-weight:600;box-shadow:0 0 22px #e8a34a59}.btn-candle:hover:not(:disabled){background:linear-gradient(#f6be6d,#d48d36);box-shadow:0 0 30px #f3c27a80}.btn-blood{color:#fbeee6;background:linear-gradient(#b7303c,#7d1620);border-color:#d23a47}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){border-color:var(--line);background:#e9e1d00f}.btn-sm{min-height:30px;padding:0 12px;font-size:13px}.btn-icon{width:38px;padding:0}.btn-icon.btn-sm{width:30px}.btn svg{flex:none;width:18px;height:18px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>span,.label{letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-size:12px}.input,.select,.textarea{border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;min-height:40px;color:var(--text);background:#07080da6;padding:8px 12px;transition:border-color .2s,box-shadow .2s}.input:focus,.select:focus,.textarea:focus{border-color:#e8a34ab3;outline:none;box-shadow:0 0 0 3px #e8a34a26}.textarea{resize:vertical;min-height:120px;line-height:1.5}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--dim) 50%), linear-gradient(135deg, var(--dim) 50%, transparent 50%);background-position:calc(100% - 17px),calc(100% - 12px);background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.select option{background:var(--ink-2)}.toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;font-size:14px;display:inline-flex}.toggle input{appearance:none;background:var(--ink-4);border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;flex:none;width:38px;height:22px;margin:0;transition:background .2s,border-color .2s;position:relative}.toggle input:after{content:"";background:var(--dim);width:16px;height:16px;transition:transform .2s var(--ease), background .2s;border-radius:50%;position:absolute;top:2px;left:2px}.toggle input:checked{border-color:var(--candle);background:#e8a34a4d}.toggle input:checked:after{background:var(--candle-glow);transform:translate(16px)}.toggle input:disabled{opacity:.5;cursor:default}.range{width:100%;accent-color:var(--candle)}.panel{border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);background:linear-gradient(#151826d1,#0e1018db)}.muted{color:var(--dim)}.error-line{color:#f08a90;font-size:13px}.spinner{border:2px solid #e9e1d026;border-top-color:var(--candle);border-radius:50%;width:18px;height:18px;animation:.9s linear infinite spin}.portrait{aspect-ratio:1;background:#05060a;border-radius:50%;flex:none;position:relative;overflow:hidden}.portrait img,.portrait .sigil{object-fit:cover;width:100%;height:100%;display:block}.toasts{z-index:100;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(92vw,420px);display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{animation:rise .35s var(--ease);background:#0e1018f2;border:1px solid #d23a4799;border-radius:999px;padding:10px 16px;font-size:14px;box-shadow:0 0 24px #a3202c4d}.toast-info{border-color:#e8a34a80;box-shadow:0 0 24px #e8a34a33}.modal-back{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--gutter);background:#030408b8;place-items:center;animation:.25s fade;display:grid;position:fixed;inset:0}.modal{width:min(100%,560px);max-height:calc(100dvh - 32px);animation:rise .35s var(--ease);padding:24px;overflow:auto}.modal-wide{width:min(100%,860px)}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.modal-head h2{font-size:28px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@keyframes flicker{0%,to{opacity:1}12%{opacity:.86}24%{opacity:.97}41%{opacity:.8}58%{opacity:1}73%{opacity:.9}86%{opacity:.96}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.portrait.has-skin{background:radial-gradient(75% 75% at 50% 32%, hsl(var(--hue) 32% 24%), hsl(var(--hue) 26% 10%) 70%, #05060a)}.atmos{z-index:-1;pointer-events:none;background:var(--ink);position:fixed;inset:0;overflow:hidden}.sky{transition:opacity 3.5s;position:absolute;inset:0}.sky-dusk{background:radial-gradient(120% 70% at 50% 108%,#e8804a47,#0000 60%),radial-gradient(90% 60% at 80% 0,#60488c52,#0000 70%),linear-gradient(#120f22 0%,#1b1428 45%,#2a1a24 80%,#3a2220 100%)}.sky-night{background:radial-gradient(70% 50% at 75% 12%,#9fb3c829,#0000 70%),linear-gradient(#04050b 0%,#070b18 40%,#0b1226 75%,#101a30 100%)}.sky-dawn{background:radial-gradient(120% 60% at 50% 110%,#d2beaa38,#0000 60%),linear-gradient(#1a1d26 0%,#2a2e38 50%,#3c3d42 85%,#4a4640 100%)}.sky-day{background:radial-gradient(100% 70% at 30% 0,#f3c27a38,#0000 65%),linear-gradient(#2a2420 0%,#3a2e24 45%,#4a3826 80%,#523d26 100%)}.sky-vote{background:radial-gradient(100% 70% at 50% 105%,#a3202c6b,#0000 60%),linear-gradient(#120709 0%,#1e0b10 45%,#2c0f14 80%,#3a1216 100%)}.moon{opacity:0;background:radial-gradient(circle at 38% 36%,#f4f0e4 0%,#d6d8d6 45%,#9fb3c8 100%);border-radius:50%;width:90px;height:90px;transition:opacity 3s;position:absolute;top:8vh;right:12vw;box-shadow:0 0 60px 18px #9fb3c838,0 0 160px 60px #9fb3c814}.moon:after{content:"";background:radial-gradient(circle at 70% 65%,#78828c59 0 8%,#0000 9%),radial-gradient(circle at 45% 70%,#78828c40 0 6%,#0000 7%),radial-gradient(circle at 60% 35%,#78828c33 0 5%,#0000 6%);border-radius:50%;position:absolute;inset:0}.atmos[data-sky=night] .moon{opacity:.9}.stars{opacity:0;background-image:radial-gradient(1px 1px at 12% 18%,#fff,#0000),radial-gradient(1px 1px at 28% 8%,#dfe7ff,#0000),radial-gradient(1.5px 1.5px at 44% 22%,#fff,#0000),radial-gradient(1px 1px at 63% 12%,#e9e1d0,#0000),radial-gradient(1px 1px at 72% 30%,#fff,#0000),radial-gradient(1px 1px at 86% 6%,#dfe7ff,#0000),radial-gradient(1.5px 1.5px at 92% 26%,#fff,#0000),radial-gradient(1px 1px at 6% 36%,#fff,#0000),radial-gradient(1px 1px at 36% 40%,#e9e1d0,#0000),radial-gradient(1px 1px at 54% 4%,#fff,#0000);transition:opacity 3s;animation:7s ease-in-out infinite twinkle;position:absolute;inset:0 0 40%}.atmos[data-sky=night] .stars{opacity:.55}.atmos[data-sky=dusk] .stars{opacity:.2}@keyframes twinkle{50%{filter:brightness(.6)}}.skyline{width:100%;height:46vh;position:absolute;bottom:0;left:0;right:0}.skyline-far{fill:#0b0e1a;opacity:.9}.skyline-near{fill:#05060b}.window{fill:var(--candle-glow);filter:drop-shadow(0 0 6px #f3c27ae6);animation:6s infinite flicker}.fog{opacity:.5;mix-blend-mode:screen;will-change:transform;width:200%;height:50%;position:absolute;left:-50%}.fog-a{background:radial-gradient(40% 50% at 20% 60%,#9fb3c829,#0000 70%),radial-gradient(35% 40% at 60% 70%,#9fb3c81f,#0000 70%),radial-gradient(30% 45% at 85%,#9fb3c824,#0000 70%);animation:70s linear infinite alternate drift;bottom:-8%}.fog-b{opacity:.35;background:radial-gradient(30% 40% at 30%,#e9e1d01a,#0000 70%),radial-gradient(40% 35% at 75% 55%,#e9e1d014,#0000 70%);animation:110s linear infinite alternate-reverse drift;bottom:10%}.fog-c{opacity:.22;background:radial-gradient(25% 30% at 40%,#9fb3c81f,#0000 70%),radial-gradient(30% 25% at 80% 40%,#9fb3c81a,#0000 70%);animation:150s linear infinite alternate drift;top:20%}@keyframes drift{0%{transform:translate(-12%)}to{transform:translate(12%)}}.vignette{background:radial-gradient(120% 90% at 50% 45%,#0000 45%,#000000b8 100%);position:absolute;inset:0}.grain{opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:1.2s steps(6,end) infinite grain;position:absolute;inset:-50%}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}}@media (prefers-reduced-motion:reduce){.grain,.fog,.stars,.window{animation:none!important}}.page{flex-direction:column;min-height:100dvh;display:flex}.stack{flex-direction:column;gap:14px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row-end{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.grow{flex:1;min-width:0}.empty{color:var(--dim);font-family:var(--display);justify-content:center;padding:18px 4px;font-size:18px;font-style:italic;display:flex}.topbar{z-index:20;padding:10px var(--gutter);background:linear-gradient(#07080deb,#07080d99 70%,#0000);align-items:center;gap:12px;min-height:58px;display:flex;position:sticky;top:0}.brand{cursor:pointer;font-family:var(--display);letter-spacing:.06em;color:var(--candle-glow);text-shadow:0 0 16px #e8a34a73;background:0 0;border:0;flex:none;padding:0;font-size:26px;font-weight:600}.topbar-mid{flex:1;justify-content:center;align-items:center;gap:14px;min-width:0;display:flex}.topbar-right{flex:none;align-items:center;gap:8px;display:flex}.menu-wrap{position:relative}.menu-name{text-overflow:ellipsis;max-width:120px;overflow:hidden}.menu{z-index:30;min-width:180px;animation:rise .2s var(--ease);flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:10px 12px}.menu button:hover{background:#e9e1d012}@media (max-width:640px){.hide-phone{display:none}.brand{font-size:22px}.menu-name{max-width:80px}}.menu-skin{filter:drop-shadow(0 1px 2px #0009);flex:none;width:20px;height:20px}
