:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%;text-size-adjust:100%;--card-unit: 1rem;--bg: light-dark(#d9e4ef, #0b1118);--fg: light-dark(#1a232e, #e8edf2);--panel: light-dark(#f9fbff, #18212b);--border: light-dark(#9aa9ba, #465667);--accent: light-dark(#2563eb, #3b82f6);--ease-settle: cubic-bezier(.22, 1, .36, 1);--ease-out-cubic: cubic-bezier(.33, 1, .68, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);--ease-exit: cubic-bezier(.23, 1, .32, 1);--num: light-dark(#1457d9, #7dd3fc);--mod: light-dark(#d97706, #fbbf24);--act: light-dark(#d81b60, #fb7185);--ink: light-dark(#101a73, #07112b);--card-paper: #fff7bd;--card-shadow: light-dark(rgba(16, 26, 115, .42), rgba(0, 0, 0, .72))}.ruleset-select{display:grid;gap:.35rem;margin:.75rem auto;max-width:24rem;font-weight:700}.ruleset-select select{padding:.65rem .8rem;border-radius:.55rem;font:inherit}.onboarding-modal{--card-unit: 1.35rem;display:flex;flex-direction:column;align-items:center;max-width:26rem;text-align:center}.onboarding-modal>p{margin:.35rem 0}.onboarding-modal .card{flex:0 0 auto;margin:.4rem 0}.onboarding-step,.onboarding-countdown{color:var(--muted);font-weight:700}*{box-sizing:border-box}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}html,body{overscroll-behavior:none}body{margin:0;min-height:100vh;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:radial-gradient(circle at 18% 12%,light-dark(rgba(20,87,217,.18),rgba(125,211,252,.08)),transparent 22rem),linear-gradient(145deg,var(--bg),light-dark(#c7d5e4,#111923));color:var(--fg)}button{font:inherit;padding:.6rem 1rem;border-radius:.5rem;border:1px solid var(--border);background:var(--panel);color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;transition:transform .18s var(--ease-settle),background-color .18s ease,border-color .18s ease,box-shadow .18s ease}button:active:not(:disabled){transform:scale(.975);transition-duration:80ms}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 70%,transparent);outline-offset:3px}button:disabled{opacity:.5;cursor:not-allowed}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}input{font:inherit;padding:.6rem 1rem;border-radius:.5rem;border:1px solid var(--border);background:var(--panel);color:inherit}.crash-screen{max-width:26rem;margin:0 auto;padding:calc(3rem + var(--safe-top)) 1.5rem calc(3rem + var(--safe-bottom));text-align:center}.crash-detail{margin-top:2rem;padding:.75rem;text-align:left;font-size:.72rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;background:var(--panel);border:1px solid var(--border);border-radius:.6rem;opacity:.8}.home,.lobby{max-width:26rem;margin:0 auto;padding:calc(3rem + var(--safe-top)) 1.5rem calc(3rem + var(--safe-bottom));text-align:center}.lobby{padding:calc(1rem + var(--safe-top)) 1.25rem calc(1.25rem + var(--safe-bottom))}.home h1,.lobby h1{font-size:3rem;margin:0 0 .25rem}.lobby h1{font-size:2rem;margin-bottom:.6rem}.lobby>h2{font-size:1rem;margin:.9rem 0 .45rem}.home .tagline{opacity:.75;margin-bottom:2rem}.home form{display:grid;gap:.75rem}.home .join-row{display:grid;grid-template-columns:1fr auto;gap:.75rem}.home button,.lobby .start{font-weight:600;background:var(--accent);border-color:transparent;color:#fff}.home .resume-slot{display:grid;grid-template-rows:1fr;margin-bottom:1.25rem;opacity:0;transition:grid-template-rows .26s ease,margin-bottom .26s ease,opacity .26s ease}.home .resume-slot.shown{opacity:1}.home .resume-slot.gone{grid-template-rows:0fr;margin-bottom:0;opacity:0}.home .resume-slot>div{min-height:0;overflow:hidden}.home .resume{width:100%;background:light-dark(#059669,#10b981)}@media(prefers-reduced-motion:reduce){.home .resume-slot{transition-duration:1ms}}.lobby-code{font-size:3rem;font-weight:800;letter-spacing:.35em;padding:.5rem 0 .5rem .35em;margin:.5rem 0 1rem;background:var(--panel);border:2px dashed var(--border);border-radius:.75rem}.lobby-code.small{font-size:.9rem;font-weight:700;letter-spacing:.2em;padding:.2rem .4rem .2rem .6rem;margin:0;border-width:1px}.invite-card{display:flex;align-items:center;gap:.9rem;margin:0 0 .9rem;padding:.7rem .9rem;background:#fffbea;border:3px solid var(--ink);border-radius:.75rem;box-shadow:0 .24rem 0 light-dark(rgba(16,26,115,.4),rgba(0,0,0,.62)),0 .5rem 1rem light-dark(rgba(16,26,115,.2),rgba(0,0,0,.38));color:var(--ink)}.invite-qr{display:grid;justify-items:center;gap:.3rem;flex:none}.invite-meta{flex:1;min-width:0;display:grid;justify-items:center;gap:.4rem}.invite-code{font-size:1.8rem;font-weight:800;letter-spacing:.3em;line-height:1;padding:.45rem .3rem .45rem .6em;border:2px dashed rgba(16,26,115,.45);border-radius:.6rem;justify-self:stretch}.copy-link{margin:0;padding:.45rem .9rem;font-size:.85rem;font-weight:700;background:transparent;border:2px solid var(--ink);color:var(--ink)}.invite-qr img,.qr-loading{width:6.75rem;aspect-ratio:1;display:block;border-radius:.25rem}.qr-loading{background:linear-gradient(90deg,#101a731f,#101a733d,#101a731f);animation:pulse 1s infinite}.invite-qr span{font-size:.68rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.roster{list-style:none;padding:0;margin:0;display:grid;gap:.4rem;text-align:left}.roster li{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.5rem}.lobby .start{width:100%;margin:.7rem 0 .5rem}.lobby .leave{width:100%;margin:0;background:light-dark(#dc2626,#ef4444);border-color:transparent;color:#fff;font-weight:600}.waiting{opacity:.7}.dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block;flex:none}.dot.on{background:#22c55e}.dot.off{background:#9ca3af}.chip{font-size:.7rem;font-weight:700;text-transform:uppercase;padding:.1rem .45rem;border-radius:999px;background:var(--border)}.chip.you{background:var(--accent);color:#fff}.chip.bot{background:light-dark(#7c3aed,#8b5cf6);color:#fff}.roster .remove-bot{margin-left:auto;padding:0 .45rem;font-size:.8rem;line-height:1.4;border-radius:999px}.add-bots{display:flex;gap:.5rem;margin:.6rem 0 0}.add-bots button{flex:1;font-size:.85rem;padding:.55rem .25rem}.timer-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.75rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.timer-toggle.readonly{cursor:default;opacity:.75}.timer-toggle input{accent-color:var(--accent);width:1.1rem;height:1.1rem;padding:0}.lobby-settings{text-align:left;margin:0;padding:.7rem 1rem .8rem;background:var(--panel);border:1px solid var(--border);border-radius:.75rem}.lobby-settings h2{margin:0 0 .55rem;padding-bottom:.45rem;border-bottom:1px solid var(--border);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;opacity:.55}.settings-fields{display:grid;gap:.6rem}.lobby-settings .ruleset-select{margin:0;max-width:none;gap:.35rem;font-weight:600}.lobby-settings .timer-toggle{margin:0;justify-content:flex-start;align-items:flex-start;font-size:.92rem;line-height:1.35}.lobby-settings .timer-toggle input{margin-top:.12rem;flex:none}.lobby-settings .readonly{opacity:.75}.chip.chase7{background:linear-gradient(100deg,#f59e0b 30%,#fde68a,#f59e0b 70%);background-size:220% 100%;color:#1a1a1a;animation:chase-shimmer 2.4s linear infinite}@keyframes chase-shimmer{to{background-position:-220% 0}}.player.chase-glow{position:relative;border-color:#f59e0b;box-shadow:0 0 .85rem color-mix(in srgb,#f59e0b 40%,transparent);animation:chase-flare .85s ease-out}@keyframes chase-flare{0%{box-shadow:0 0 #f59e0bbf}60%{box-shadow:0 0 0 1.1rem #f59e0b00}to{box-shadow:0 0 .85rem #f59e0b66}}.player.chase-glow:after{content:"✦";position:absolute;top:-.55rem;right:.9rem;color:#fbbf24;font-size:1.15rem;line-height:1;text-shadow:-2.6rem .45rem 0 #fde68a,-1.2rem -.15rem 0 #f59e0b;animation:sparkle-pop .95s ease-out both;pointer-events:none}@keyframes sparkle-pop{0%{opacity:0;transform:scale(.3) rotate(-30deg)}35%{opacity:1;transform:scale(1.25) rotate(10deg)}to{opacity:0;transform:scale(.8) rotate(25deg)}}.row-fx{--fx: var(--accent);--fx-icon: "";position:absolute;inset:-2px;border-radius:.75rem;pointer-events:none;animation:row-flare .9s ease-out both}.row-fx:after{content:var(--fx-icon);position:absolute;top:-.6rem;right:.85rem;font-size:1.2rem;line-height:1;animation:sparkle-pop .95s ease-out both}@keyframes row-flare{0%{box-shadow:0 0 color-mix(in srgb,var(--fx) 80%,transparent),inset 0 0 1.4rem color-mix(in srgb,var(--fx) 28%,transparent)}60%{box-shadow:0 0 0 1.1rem transparent,inset 0 0 1.4rem color-mix(in srgb,var(--fx) 12%,transparent)}to{box-shadow:0 0 0 1.1rem transparent,inset 0 0 0 transparent}}.row-fx.frozen{--fx: #38bdf8;--fx-icon: "❄"}.row-fx.cursed{--fx: #dc2626;--fx-icon: "💀"}.row-fx.ruined{--fx: #7c3aed;--fx-icon: "💥"}.row-fx.targeted{--fx: var(--act);--fx-icon: "⚡"}.row-fx.busted{--fx: #ef4444;--fx-icon: ""}.player.is-ruined{border-color:light-dark(#7c3aed,#8b5cf6);animation:ruined-edge 2.4s ease-in-out infinite}@keyframes ruined-edge{50%{box-shadow:0 0 .9rem color-mix(in srgb,#8b5cf6 45%,transparent),inset 0 0 1.2rem color-mix(in srgb,#a78bfa 16%,transparent)}}.ruined-mark{position:absolute;top:-.6rem;right:2.3rem;font-size:1.15rem;line-height:1;pointer-events:none;filter:drop-shadow(0 0 .3rem rgba(139,92,246,.75));animation:ruined-sway 2.4s ease-in-out infinite;transform-origin:top center}@keyframes ruined-sway{25%{transform:rotate(7deg)}75%{transform:rotate(-7deg)}}.player.is-frozen{border-color:#38bdf8;box-shadow:0 0 .7rem color-mix(in srgb,#38bdf8 30%,transparent),inset 0 .35rem 1.1rem color-mix(in srgb,#7dd3fc 22%,transparent)}.player.is-frozen:before{content:"";position:absolute;inset:0;border-radius:.65rem;pointer-events:none;background:linear-gradient(to bottom,light-dark(rgba(165,220,248,.3),rgba(186,230,253,.15)),transparent 1.2rem) 0 0 / 100% 100%,conic-gradient(from 347deg at 50% 100%,light-dark(rgba(147,210,245,.42),rgba(186,230,253,.27)) 0 26deg,transparent 26deg) .6rem 0 / 5.3rem .85rem,conic-gradient(from 349deg at 50% 100%,light-dark(rgba(147,210,245,.34),rgba(186,230,253,.21)) 0 22deg,transparent 22deg) 2.9rem 0 / 8.9rem 1.35rem,conic-gradient(from 351deg at 50% 100%,light-dark(rgba(147,210,245,.27),rgba(186,230,253,.16)) 0 18deg,transparent 18deg) 6.1rem 0 / 13.7rem 1.9rem,radial-gradient(7rem at 0 0,light-dark(rgba(125,211,252,.28),rgba(125,211,252,.16)),transparent 65%),radial-gradient(7rem at 100% 0,light-dark(rgba(125,211,252,.28),rgba(125,211,252,.16)),transparent 65%),radial-gradient(6rem at 0 100%,light-dark(rgba(125,211,252,.2),rgba(125,211,252,.11)),transparent 65%),radial-gradient(6rem at 100% 100%,light-dark(rgba(125,211,252,.2),rgba(125,211,252,.11)),transparent 65%);background-repeat:no-repeat,repeat-x,repeat-x,repeat-x,no-repeat,no-repeat,no-repeat,no-repeat}.player.is-cursed{border-color:#b91c1c;animation:cursed-edge 1.6s ease-in-out infinite}@keyframes cursed-edge{50%{box-shadow:0 0 .9rem color-mix(in srgb,#dc2626 45%,transparent)}}@media(prefers-reduced-motion:reduce){.chip.chase7,.player.chase-glow,.player.is-cursed,.player.is-ruined,.ruined-mark,.row-fx{animation:none}.player.chase-glow:after,.row-fx:after{content:none}.player.is-cursed{box-shadow:0 0 .9rem color-mix(in srgb,#dc2626 45%,transparent)}.player.is-ruined{box-shadow:0 0 .9rem color-mix(in srgb,#8b5cf6 45%,transparent)}}.chip.dealer{background:transparent;border:1px solid light-dark(#94a3b8,#64748b);color:light-dark(#475569,#cbd5e1)}.chip.status-busted{background:var(--act);color:#fff}.chip.status-frozen{background:#38bdf8;color:#082f49}.chip.status-stayed{background:#22c55e;color:#052e16}.ambient{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}.game-board{position:relative;isolation:isolate;display:grid;grid-template-areas:"head head" "players log" "controls log";grid-template-columns:minmax(0,1fr) 20rem;grid-template-rows:auto minmax(0,1fr) auto;gap:.75rem;height:100vh;padding:calc(.75rem + var(--safe-top)) calc(.75rem + var(--safe-right)) calc(.75rem + var(--safe-bottom)) calc(.75rem + var(--safe-left))}.dom-flights,.three-layer{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none}.three-layer:before{content:"";position:absolute;inset:8% 12%;background:radial-gradient(circle at center,transparent 0 17.8%,rgb(125 211 252 / 12%) 18%,transparent 18.5%),radial-gradient(circle at center,transparent 0 28%,rgb(167 139 250 / 9%) 28.2%,transparent 28.7%),radial-gradient(circle at center,transparent 0 38%,rgb(56 189 248 / 7%) 38.2%,transparent 38.7%)}.three-scene{position:relative;display:block;width:100%;height:100%;pointer-events:none}@media(prefers-reduced-motion:reduce){.three-layer{display:none}}.game-head{grid-area:head;display:flex;align-items:center;justify-content:space-between;gap:.4rem 1rem;padding:.5rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.6rem;font-size:.9rem;flex-wrap:wrap}.head-stats{display:flex;align-items:baseline;gap:.9rem;min-width:0;flex-wrap:wrap}.head-actions{display:flex;align-items:center;gap:.35rem;margin-left:auto}.game-head .brand{font-weight:800;white-space:nowrap}.stat{display:inline-flex;align-items:baseline;gap:.3rem;white-space:nowrap;font-variant-numeric:tabular-nums}.stat b{font-weight:700}.deck-stack{display:inline-block;flex:0 0 13px;width:13px;height:18px;align-self:center;margin-right:.15rem;border:1px solid color-mix(in srgb,var(--accent) 65%,var(--border));border-radius:3px;background:linear-gradient(145deg,var(--accent),light-dark(#173b90,#164579));box-shadow:2px -2px 0 var(--panel),3px -3px 0 var(--border)}.stat-label{font-size:.72em;font-weight:600;letter-spacing:.07em;text-transform:uppercase;opacity:.55}.game-head .icon{position:relative;padding:.25rem .5rem;min-width:2rem;min-height:2rem;display:inline-flex;align-items:center;justify-content:center}.vote-badge{position:absolute;top:-.3rem;right:-.3rem;min-width:1.05rem;height:1.05rem;padding:0 .25rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.62rem;font-weight:800;line-height:1.05rem;text-align:center}.log-toggle,.log-close,.log-grip{display:none}.log-toggle{position:relative}.unread-badge{position:absolute;top:-.3rem;right:-.3rem;min-width:1.05rem;height:1.05rem;padding:0 .25rem;border-radius:999px;background:var(--act);color:#fff;font-size:.62rem;font-weight:800;line-height:1.05rem;text-align:center}.players{grid-area:players;min-width:0;min-height:0;padding:3px;scroll-padding-block:.5rem;overflow-y:auto;overscroll-behavior:contain;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,33rem),1fr));gap:.6rem;align-content:start}@media(max-height:950px){.players.crowded{gap:.5rem}.players.crowded .player{padding:.3rem .55rem}.players.crowded .player-head{margin-bottom:.15rem}.players.crowded .hand{gap:.25rem}.players.crowded .card-row{gap:.25rem;min-height:calc(var(--card-unit) * 5.45)}.players.crowded .card-row.modifiers{min-height:0}.players.crowded .row-smooth.closed{margin-bottom:-.25rem}}.player{position:relative;padding:.6rem .75rem;background:light-dark(#ffffff,#202c38);border:2px solid var(--border);border-radius:.75rem;box-shadow:0 .25rem .7rem light-dark(rgba(35,54,84,.12),rgba(0,0,0,.32));transition:border-color .24s ease,box-shadow .32s var(--ease-settle),opacity .24s ease}.player.active-turn{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.player.your-turn{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 25%,transparent),0 4px 16px color-mix(in srgb,var(--accent) 12%,transparent)}.turn-chip{padding:0 .4rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.68rem;font-weight:800;line-height:1.25rem;text-transform:uppercase}.player.is-busted{opacity:.75}.player-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap}.player-head .total{position:relative;margin-left:auto;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;min-inline-size:7ch;text-align:right}.player-badges{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}.player-badges:empty{display:none}.score-pop{position:absolute;right:0;top:-.15rem;color:light-dark(#059669,#34d399);font-weight:800;white-space:nowrap;pointer-events:none;animation:score-pop 1.5s ease-out forwards}.score-pop.neg{color:var(--act)}@keyframes score-pop{0%{opacity:0;transform:translateY(.25rem)}15%{opacity:1}to{opacity:0;transform:translateY(-1.7rem)}}@media(prefers-reduced-motion:reduce){.score-pop{animation-duration:.6s}}.hand{display:grid;gap:.45rem}.row-smooth{transition:height .55s var(--ease-out-cubic),margin-bottom .55s var(--ease-out-cubic)}.row-smooth.closed{margin-bottom:-.45rem;overflow:hidden}.card-row.modifiers{min-height:0}@media(prefers-reduced-motion:reduce){.row-smooth{transition:none}}.card-row{display:flex;gap:.5rem;flex-wrap:wrap;min-height:calc(var(--card-unit) * 5.65)}.card{--card-main: #1457d9;position:relative;font-size:var(--card-unit);width:4.05em;height:5.45em;display:grid;place-items:center;border-radius:.55em;background:#fcfdfe;border:1px solid light-dark(#b6c2cf,#0a0f14);box-shadow:0 1px 2px light-dark(rgba(23,37,60,.18),rgba(0,0,0,.5)),0 4px 10px light-dark(rgba(23,37,60,.12),rgba(0,0,0,.35));color:var(--card-main);line-height:1;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;animation:flip-in var(--card-flip-dur, .35s) cubic-bezier(.22,.7,.25,1) backwards;animation-delay:var(--enter-delay, 0s);overflow:hidden}.card:before{content:"";position:absolute;inset:.16em;border-radius:.42em;border:1.5px solid color-mix(in srgb,var(--card-main) 40%,transparent);pointer-events:none}@keyframes flip-in{0%{transform:translateY(.55em) scale(.94);opacity:0}to{transform:none;opacity:1}}.card.dealt{animation:deal-in var(--card-deal-dur, .5s) cubic-bezier(.2,.8,.3,1) backwards;animation-delay:var(--enter-delay, 0s)}.card.three-proxy-active{opacity:0!important}@keyframes deal-in{0%{transform:translateY(.7em) rotate(-3deg) scale(.94);opacity:0}35%{opacity:1}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.card.dealt{animation-name:flip-in}}.card:after{--glint-shift: 0;content:"";position:absolute;inset:0;background-image:linear-gradient(var(--glint-angle, 112deg),transparent 32%,rgba(103,232,249,.1) 43%,rgba(255,255,255,.22) 50%,rgba(196,181,253,.1) 57%,transparent 68%);background-size:300% 220%;background-repeat:no-repeat;background-position-x:calc((.5 - (.5 - var(--glint-x, .5)) * var(--glint-kx, .9) - var(--glint-shift) * 1.5) * 100%);background-position-y:calc((.5 - (.5 - var(--glint-y, .5)) * var(--glint-ky, 0)) * 100%);pointer-events:none}:root[data-motion=off] .card:after{content:none}.card:nth-child(2n):after{--glint-shift: .08}.card:nth-child(3n):after{--glint-shift: -.07}.card:nth-child(5n):after{--glint-shift: .14}.card.empty:after{content:none}@media(prefers-reduced-motion:reduce){.card:after{content:none}}.card.removing{animation:card-remove var(--card-remove-dur, 1.1s) var(--ease-out-cubic) forwards;pointer-events:none;z-index:1}@keyframes card-remove{to{opacity:0;transform:scale(.55) translateY(calc(-.6em + var(--slump, 0em))) rotate(calc(var(--tumble, 0deg) + 10deg));filter:saturate(.3) brightness(1.3)}}@media(prefers-reduced-motion:reduce){.card.removing{animation-duration:.15s}}.card.exploding{animation:card-explode .62s cubic-bezier(.3,0,.4,1) both;pointer-events:none;z-index:4}@keyframes card-explode{0%{transform:scale(1);filter:brightness(1);opacity:1}12%{transform:scale(1.18) rotate(calc(var(--explode-spin, 20deg) * .15));filter:brightness(2.7) saturate(1.5);opacity:1}55%{transform:scale(1.06) rotate(calc(var(--explode-spin, 20deg) * .6));filter:brightness(1.5) saturate(1.2);opacity:.55}to{transform:scale(.92) rotate(var(--explode-spin, 20deg));filter:brightness(1.3);opacity:0}}.card-shard{position:absolute;left:50%;top:50%;width:.9em;height:.9em;margin:-.45em 0 0 -.45em;background:linear-gradient(135deg,#fffffff2,#ff8a3c);clip-path:polygon(50% 0,100% 68%,26% 100%);pointer-events:none;z-index:5;opacity:0;animation:shard-fly .6s cubic-bezier(.2,.6,.3,1) both}@keyframes shard-fly{0%{transform:rotate(var(--ang, 0deg)) translate(0) scale(1.1) rotate(20deg);opacity:1}to{transform:rotate(var(--ang, 0deg)) translate(4.2em) scale(.3) rotate(160deg);opacity:0}}@media(prefers-reduced-motion:reduce){.card.exploding{animation-duration:.16s}.card-shard{display:none}}.card.clearing{animation:card-clear var(--card-clear-dur, .65s) cubic-bezier(.55,-.18,.8,.5) var(--enter-delay, 0s) both;pointer-events:none;z-index:1}@keyframes card-clear{25%{transform:translate(.25em,-.65em) translateY(var(--slump, 0em)) rotate(calc(var(--tumble, 0deg) + 5deg));opacity:1}to{transform:translate(-9em,-7em) rotate(calc(var(--tumble, 0deg) - 32deg)) scale(.4);opacity:0}}@media(prefers-reduced-motion:reduce){.card.clearing{animation-duration:.15s;animation-delay:0s}}.card.life-strike{animation:life-strike var(--life-knock-dur, .7s) cubic-bezier(.55,0,.65,1) forwards;pointer-events:none;z-index:3}.card.life-knocked{animation:life-knocked var(--life-knock-dur, .7s) cubic-bezier(.3,.5,.6,1) forwards;pointer-events:none;z-index:2}@keyframes life-strike{30%{transform:translateY(.5em) scale(.95) rotate(3deg);opacity:1}60%{transform:translateY(-3.2em) scale(1.06) rotate(-8deg);opacity:1}to{transform:translate(1.6em,-4.5em) rotate(16deg) scale(.8);opacity:0}}@keyframes life-knocked{0%,60%{transform:none;opacity:1}72%{transform:translate(.5em,-.4em) rotate(9deg)}to{transform:translate(7em,-3.5em) rotate(70deg) scale(.75);opacity:0}}@media(prefers-reduced-motion:reduce){.card.life-strike,.card.life-knocked{animation-duration:.15s}}.pending-action{display:contents}.pending-action .card{animation:deal-in var(--card-deal-dur, .5s) cubic-bezier(.2,.8,.3,1) var(--enter-delay, 0s) backwards,pending-throb 1.2s ease-in-out calc(var(--enter-delay, 0s) + var(--card-deal-dur, .5s)) infinite}@keyframes pending-throb{0%,to{transform:scale(1);box-shadow:0 1px 2px light-dark(rgba(23,37,60,.18),rgba(0,0,0,.5)),0 4px 10px light-dark(rgba(23,37,60,.12),rgba(0,0,0,.35))}50%{transform:scale(1.06);box-shadow:0 2px 6px light-dark(rgba(23,37,60,.25),rgba(0,0,0,.6)),0 6px 16px light-dark(rgba(23,37,60,.2),rgba(0,0,0,.45))}}.card.mod{--card-main: #d97706}.card.act{--card-main: #d81b60}.card[data-kind=Freeze]{--card-main: #0284c7}.card[data-kind=ExtraLife]{--card-main: #059669}.card-center{width:82%;max-width:82%;font-size:2.7em;font-weight:800;letter-spacing:-.02em;text-align:center;overflow-wrap:normal;word-break:normal}.card.num[data-value="10"] .card-center,.card.num[data-value="11"] .card-center,.card.num[data-value="12"] .card-center,.card.num[data-value="13"] .card-center{font-size:2.2em}.special-name{position:absolute;left:8%;right:8%;bottom:.72em;max-width:100%;font-size:.42em;font-weight:800;line-height:1;letter-spacing:.035em;text-align:center;text-transform:uppercase;white-space:nowrap}.card[data-kind=FortunateThirteen] .special-name{font-size:.36em}.card[data-kind=AnchorZero]{--card-main: #2563eb;background:#dbeafe}.card[data-kind=RuinSeven]{--card-main: #6d28d9;background:#ede9fe}.card[data-kind=FortunateThirteen]{--card-main: #b45309;background:#fef3c7}.card.mod .card-center{font-size:1.7em}.card.act .card-center{font-size:.64em;font-weight:800;line-height:1.2;text-transform:uppercase;letter-spacing:.06em}.card-corner{position:absolute;top:calc(var(--card-unit) * .34);left:calc(var(--card-unit) * .4);max-width:calc(var(--card-unit) * 1.4);font-size:.55em;font-weight:800;line-height:1;text-align:left}.card.act .card-corner{display:none}.card-corner.top{top:calc(var(--card-unit) * .34)}.card-corner.bottom{top:auto;left:auto;right:calc(var(--card-unit) * .4);bottom:calc(var(--card-unit) * .34);transform:rotate(180deg)}.card.empty{background:transparent;border:2px dashed var(--border);box-shadow:none;animation:none}.card.empty:before{content:none}.hand.busted .card-row{animation:bust-shake .6s;perspective:900px;perspective-origin:50% 60%}.card.busted{--tumble: -7deg;--slump: .14em;filter:grayscale(.85);opacity:.85;transform:rotate(var(--tumble)) translateY(var(--slump));transition:margin-left .5s cubic-bezier(.34,1.56,.64,1) .3s,filter .45s ease .3s,opacity .45s ease .3s}.player .hand.busted .card.busted:not(.clearing):not(.removing):not(.exploding){animation:bust-throw var(--bust-throw-dur, 1.25s) calc(var(--bust-i, 0) * var(--bust-stagger, 35ms)) both}@keyframes bust-throw{0%{transform:none;animation-timing-function:cubic-bezier(.15,.75,.3,1)}38%{transform:translate(var(--bust-x, 0em),var(--bust-rise, -3.4em)) translateZ(var(--bust-pop, 55px)) rotateX(var(--bust-rx, 34deg)) rotateY(var(--bust-ry, -18deg)) rotate(var(--bust-rot, 30deg)) scale(1.1);animation-timing-function:ease-in-out}56%{transform:translate(calc(var(--bust-x, 0em) * .92),calc(var(--bust-rise, -3.4em) * .72)) translateZ(calc(var(--bust-pop, 55px) * .6)) rotateX(calc(var(--bust-rx, 34deg) * .66)) rotateY(calc(var(--bust-ry, -18deg) * .66)) rotate(calc(var(--bust-rot, 30deg) * .82)) scale(1.06);animation-timing-function:cubic-bezier(.6,.02,.9,.45)}86%{transform:rotate(var(--tumble)) translateY(var(--slump)) scale(.96);animation-timing-function:ease-out}to{transform:rotate(var(--tumble)) translateY(var(--slump)) scale(1)}}@media(prefers-reduced-motion:reduce){.player .hand.busted .card.busted:not(.clearing):not(.removing):not(.exploding){animation:none}}.card.busted+.card.busted{margin-left:-1.4em}.card.busted:nth-child(2n){--tumble: 5.5deg;--slump: .02em}.card.busted:nth-child(3n){--tumble: -3deg;--slump: .22em}.card.busted:nth-child(5n){--tumble: 8deg;--slump: .08em}@media(prefers-reduced-motion:reduce){.card.busted{transition-duration:.01ms}}@keyframes bust-shake{0%,to{transform:translate(0)}12%{transform:translate(-9px,2px) rotate(-1.3deg)}28%{transform:translate(8px,-2px) rotate(1.1deg)}44%{transform:translate(-7px,1px) rotate(-.9deg)}60%{transform:translate(5px,1px) rotate(.6deg)}78%{transform:translate(-3px) rotate(-.3deg)}}.bust-stamp{position:absolute;top:50%;left:50%;z-index:2;padding:.05em .4em;border:.18rem solid #ef4444;border-radius:.5rem;background:color-mix(in srgb,#7f1d1d 30%,transparent);color:#f87171;font-size:2.4rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;text-shadow:0 0 1rem rgba(239,68,68,.55);pointer-events:none;animation:bust-stamp 1.7s cubic-bezier(.2,1.4,.4,1) both}@keyframes bust-stamp{0%{opacity:0;transform:translate(-50%,-50%) rotate(-3deg) scale(3)}16%{opacity:1;transform:translate(-50%,-50%) rotate(-11deg) scale(1)}72%{opacity:1;transform:translate(-50%,-50%) rotate(-11deg) scale(1)}to{opacity:0;transform:translate(-50%,-50%) rotate(-11deg) scale(1.05)}}@media(prefers-reduced-motion:reduce){.bust-stamp{display:none}.hand.busted .card-row{animation:none}}.controls{grid-area:controls;position:relative;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.6rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.75rem;min-height:4.4rem}.controls.timer-active{--timer-color: var(--accent);border:2px solid transparent;background:linear-gradient(var(--panel),var(--panel)) padding-box,linear-gradient(to right,var(--timer-color) 0 calc(var(--timer-fraction) * 100%),color-mix(in srgb,var(--border) 75%,transparent) calc(var(--timer-fraction) * 100%) 100%) border-box}@property --timer-fraction{syntax: "<number>"; inherits: false; initial-value: 0;}@property --timer-color{syntax: "<color>"; inherits: false; initial-value: transparent;}.controls.timer-active.urgent{--timer-color: var(--act);animation:drain-flash 1s infinite}@keyframes drain-flash{50%{--timer-color: color-mix(in srgb, var(--act) 30%, transparent)}}@media(prefers-reduced-motion:reduce){.controls.timer-active.urgent{animation:none}}.controls .hit,.controls .stay{flex:1 1 0;max-width:12rem;min-height:3.1rem;font-size:1.2rem;font-weight:800;letter-spacing:.02em;padding:.6rem 1rem;color:#fff;border:none;border-radius:.65rem;box-shadow:inset 0 1px #ffffff38,0 2px 10px #00000040;transition:transform .16s var(--ease-settle),filter .15s ease,box-shadow .15s ease}@media(hover:hover){.controls .hit:hover,.controls .stay:hover{filter:brightness(1.08)}}.controls .hit:active,.controls .stay:active{transform:translateY(1px) scale(.985);filter:brightness(.9);box-shadow:inset 0 1px #ffffff1a,0 1px 4px #00000040}.controls .hit{background:var(--act)}.controls .stay{background:light-dark(#059669,#10b981)}.controls.cursed{background:linear-gradient(180deg,#b91c1c,#7f1d1d);border-color:#ef4444}.ride-or-die-banner{margin:0 auto;font-size:1.25rem;font-weight:900;letter-spacing:.12em;color:#fff;text-shadow:0 0 12px rgba(0,0,0,.55);animation:ride-or-die-pulse 1.1s ease-in-out infinite}@keyframes ride-or-die-pulse{50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.ride-or-die-banner{animation-duration:.01ms}}@keyframes pulse{50%{opacity:.4}}@keyframes turn-glow{50%{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--accent) 25%,transparent)}}.log-panel{grid-area:log;display:grid;grid-template-rows:1fr auto;gap:.5rem;background:var(--panel);border:1px solid var(--border);border-radius:.75rem;padding:.6rem;min-height:0}.log{overflow-y:auto;overscroll-behavior:contain;font-size:.82rem;display:flex;flex-direction:column;gap:.15rem}.log-line.marker{font-weight:700;margin:.25rem 0}.log-line.chat-line{color:var(--accent)}.log-panel input{width:100%}.overlay{position:fixed;inset:0;background:#0000008c;display:grid;place-items:center;z-index:10;padding:calc(1rem + var(--safe-top)) calc(1rem + var(--safe-right)) calc(1rem + var(--safe-bottom)) calc(1rem + var(--safe-left))}.target-modal{background:var(--panel);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;max-width:22rem;width:100%;max-height:100%;overflow-y:auto;overscroll-behavior:contain;overflow-wrap:anywhere;text-align:center;box-shadow:0 1.5rem 4rem #00000047;animation:result-in .28s var(--ease-settle) both}.target-modal h2{margin:0 0 .75rem;line-height:1.25}.target-hint{font-size:.9rem;line-height:1.5;opacity:.8}.result-eyebrow{margin:0 0 .5rem;color:var(--accent);font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}@keyframes result-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.flash{--flash-accent: #bae6fd;--flash-rgb: 56 189 248;z-index:9;align-items:center;padding:max(1.5rem,var(--safe-top)) 1.5rem max(1.5rem,var(--safe-bottom));background:radial-gradient(ellipse at center,rgb(var(--flash-rgb) / 25%),#020814eb),#020814cc;box-shadow:inset 0 0 5rem rgb(var(--flash-rgb) / 40%);animation:frost-notice 4s ease both;pointer-events:none}.flash-card{display:flex;flex-direction:column;align-items:center;gap:1rem;width:min(100%,26rem);padding:2rem 1rem;color:#f8fafc;text-align:center}.flash-card h2{margin:0;color:var(--flash-accent);font-size:clamp(2rem,8vw,3rem)}.flash-card p{margin:0;font-size:1.05rem;line-height:1.5;max-width:28ch}.flash .flash-card .flash-icon{font-size:6rem;filter:drop-shadow(0 0 1rem rgb(var(--flash-rgb) / 70%))}@keyframes frost-notice{0%{opacity:0}8%,85%{opacity:1}to{opacity:0}}.flash-targeted{--flash-accent: #fde68a;--flash-rgb: 245 158 11}.flash-cursed{--flash-accent: #fca5a5;--flash-rgb: 239 68 68}.flash-ruined{--flash-accent: #e9d5ff;--flash-rgb: 168 85 247}.flash-icon{display:block;grid-row:1 / 3;font-size:1.8rem;line-height:1}.flash-frozen .flash-icon{animation:freeze-flake-spin 4s ease-out both}.flash-targeted .flash-icon{animation:target-bolt-pop 1.8s ease-out both}.flash-cursed .flash-icon{animation:cursed-skull-throb 1.2s ease-in-out infinite}.flash-ruined .flash-icon{animation:target-bolt-pop 1.8s ease-out both}@keyframes cursed-skull-throb{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes flash-in{0%{opacity:0}to{opacity:1}}@keyframes freeze-flake-spin{0%{transform:scale(.4) rotate(-30deg)}25%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(20deg)}}@keyframes target-bolt-pop{0%{transform:scale(.3) rotate(-12deg);opacity:.2}30%{transform:scale(1.15) rotate(6deg);opacity:1}45%{transform:scale(.95) rotate(-4deg)}to{transform:scale(1) rotate(0)}}@media(prefers-reduced-motion:reduce){.flash,.flash.flash-frozen,.flash .flash-icon{animation:none}}.confetti{position:fixed;inset:0;z-index:50;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;left:50%;top:34%;border-radius:1px;opacity:0;animation:confetti-burst var(--dur) cubic-bezier(.15,.6,.3,1) var(--delay) forwards}@keyframes confetti-burst{0%{transform:translate(-50%,-50%) rotate(0) scale(.3);opacity:1}12%{opacity:1}to{transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) rotate(var(--rot)) scale(1);opacity:0}}.toast{position:fixed;left:50%;transform:translate(-50%);z-index:45;padding:.5rem 1rem;font-size:.9rem;font-weight:700;color:var(--fg);background:var(--panel);border:1px solid var(--border);border-radius:999px;box-shadow:0 .3rem .9rem light-dark(rgba(23,37,60,.25),rgba(0,0,0,.5));pointer-events:none;animation:toast-in .25s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-.5rem)}to{opacity:1;transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){.confetti{display:none}}.target-modal .targets{display:grid;gap:.5rem}.target-modal .targets button{font-weight:700;min-height:48px;white-space:normal}.final-scores{width:100%;margin:.75rem 0 1rem;border-collapse:collapse}.final-scores td{padding:.4rem .5rem;border-bottom:1px solid var(--border)}.final-scores .fs-name{text-align:left;font-weight:600}.final-scores .fs-total{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.final-scores tr.winner{color:light-dark(#059669,#34d399)}.game-over>button{width:100%;min-height:48px}.game-over .replay{background:var(--accent);border-color:transparent;color:#fff;font-weight:700}.round-summary .rs-reason{margin:.25rem 0 0;font-weight:600;opacity:.85}.round-summary table{width:100%;margin:.75rem 0 1rem;border-collapse:collapse}.round-summary td{padding:.65rem .4rem;border-bottom:1px solid var(--border)}.round-summary th{padding:.4rem;text-align:right;font-size:.7rem;font-weight:600;opacity:.7;white-space:nowrap}.round-summary th:first-child{text-align:left}.round-summary .rs-you{background:color-mix(in srgb,var(--accent) 9%,transparent)}.rs-name small{color:var(--accent);white-space:nowrap}.rs-gain,.rs-total{white-space:nowrap}.rs-progress{height:3px;margin-top:.85rem;border-radius:99px;background:color-mix(in srgb,var(--accent) 15%,transparent);overflow:hidden}.rs-progress span{display:block;height:100%;background:var(--accent);transform-origin:left;animation:round-progress 4s linear forwards}@keyframes round-progress{to{transform:scaleX(0)}}.round-summary .rs-name{text-align:left;font-weight:600}.round-summary .rs-gain{text-align:right;font-weight:800;color:light-dark(#059669,#34d399)}.round-summary .rs-gain.zero{color:var(--act)}.round-summary .rs-attack{color:light-dark(#dc2626,#f87171);font-weight:800;white-space:nowrap}.round-summary .rs-total{text-align:right;opacity:.75;font-variant-numeric:tabular-nums}.round-summary .rs-next{margin:0;text-align:center;font-size:.85rem;opacity:.7;font-variant-numeric:tabular-nums}button.link{background:none;border:none;color:var(--accent);text-decoration:underline;padding:.25rem}.home-links{display:flex;justify-content:center;gap:.85rem;margin-top:1.25rem}.home .how-to-play,.home .settings-button{background:none;color:var(--accent);font-weight:500}.lobby>.settings-button{margin:.55rem 0 0}.rules-modal{background:var(--panel);border:1px solid var(--border);border-radius:1rem;width:min(34rem,calc(100vw - 2rem));max-height:min(80vh,44rem);display:grid;grid-template-rows:auto 1fr;text-align:left}.rules-modal header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.25rem 0}.rules-modal h2{margin:0}.rules-modal .icon{padding:.25rem .6rem}.rules-body{overflow-y:auto;overscroll-behavior:contain;padding:.25rem 1.25rem 1.25rem;font-size:.92rem;line-height:1.5}.rules-body h3{margin:1rem 0 .25rem}.rules-body p,.rules-body ul,.rules-body ol{margin:.35rem 0}.rules-body li{margin:.2rem 0}.settings-modal{background:var(--panel);border:1px solid var(--border);border-radius:1rem;width:min(28rem,calc(100vw - 2rem));text-align:left}.settings-modal header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.1rem;border-bottom:1px solid var(--border)}.settings-modal h2{margin:0}.settings-modal .icon{padding:.25rem .6rem}.settings-body{display:grid;gap:.75rem;padding:1rem 1.1rem 1.1rem}.preference-toggle{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;border:1px solid var(--border);border-radius:.7rem;cursor:pointer}.preference-toggle input{width:1.15rem;height:1.15rem;margin-top:.15rem;padding:0;accent-color:var(--accent);flex:none}.preference-toggle span{display:grid;gap:.2rem}.preference-toggle small,.settings-note{opacity:.68;line-height:1.35}.settings-note{margin:.1rem 0 0;text-align:center;font-size:.78rem}.toast.error,.toast.reconnect,.toast.paused{position:fixed;bottom:calc(1rem + var(--safe-bottom));left:50%;transform:translate(-50%);padding:.6rem 1.2rem;border-radius:.6rem;color:#fff;z-index:20;animation:toast-in .25s ease-out}.toast.error{background:var(--act)}.toast.reconnect{background:#b45309}.toast.paused{background:light-dark(#334155,#1e293b);border:1px solid var(--border)}.game-head .pause.voted{background:light-dark(#dbeafe,#1e3a8a);border-color:var(--accent)}.spectating,.controls .waiting{opacity:.7;margin:0}@media(max-width:720px){:root{--card-unit: clamp(.5rem, calc((100vw - 4.9rem) / 28.35), 1rem)}.game-board{grid-template-areas:"head" "players" "controls";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;height:100dvh;padding:calc(.5rem + var(--safe-top)) calc(.5rem + var(--safe-right)) calc(.5rem + var(--safe-bottom)) calc(.5rem + var(--safe-left))}.log-toggle{display:inline-flex;align-items:center}.game-board .log-panel{display:grid;position:fixed;left:var(--safe-left);right:var(--safe-right);bottom:0;z-index:15;height:min(60vh,24rem);border-radius:.9rem .9rem 0 0;padding:2.25rem .6rem calc(.6rem + var(--safe-bottom));box-shadow:0 -.5rem 1.5rem #00000073;background:var(--panel);transform:translateY(100%);visibility:hidden;transition:transform .3s var(--ease-drawer),visibility 0s linear .3s}.game-board.log-open .log-panel{transform:none;visibility:visible;transition:transform .3s var(--ease-drawer),visibility 0s}.log-panel .log-close{display:block;position:absolute;top:.35rem;right:.5rem;z-index:1;padding:.15rem .5rem}.log-grip{display:block;position:absolute;top:0;left:0;right:0;height:2.25rem;touch-action:none;cursor:grab}.log-grip:before{content:"";position:absolute;top:6px;left:50%;width:36px;height:5px;margin-left:-18px;border-radius:99px;background:color-mix(in srgb,var(--fg) 25%,transparent)}.players{gap:.5rem}.player{padding:.5rem .6rem}.player-head{display:grid;grid-template-columns:auto minmax(3ch,1fr) fit-content(55%) auto;gap:.3rem}.player-head .player-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650;font-size:.9rem}.player-head .total{grid-column:4;grid-row:1;font-size:.9rem}.player-badges{grid-column:3;grid-row:1;min-width:0;flex-wrap:nowrap;gap:.2rem;overflow-x:auto;scrollbar-width:none}.player-badges::-webkit-scrollbar{display:none}.player-badges>*{flex:0 0 auto;white-space:nowrap;font-size:.64rem}.player-badges:empty{display:none}.hand{gap:.35rem}.card-row{gap:.4rem}.game-head{gap:.3rem .5rem;padding:.45rem .6rem;font-size:.8rem}.head-stats{flex-wrap:wrap;width:100%;gap:.25rem .7rem}.head-stats::-webkit-scrollbar{display:none}.game-head .brand{display:none}.head-actions{flex:1}.game-head .icon{flex:1;min-width:44px;min-height:44px}.game-head .lobby-code.small{display:inline-flex;align-items:center;min-height:2.2rem}.controls{gap:.6rem}.head-actions{gap:.15rem;min-width:0}.game-head .lobby-code.small{flex:0 0 40px;justify-content:center;font-size:.6rem;letter-spacing:.1em;padding-inline:.2rem}.target-modal{padding:1.25rem}.home button,.lobby button{min-height:44px}.home .join-row{grid-template-columns:minmax(0,1fr) auto}.home input{min-width:0}}@media(prefers-reduced-motion:reduce){.target-modal,.rs-progress span{animation:none}.card,.card.dealt{animation-name:card-fade}@keyframes card-fade{0%{opacity:0}to{opacity:1}}}.turn-chip{animation:detail-in .2s ease-out backwards}.controls>button,.controls>.waiting{animation:detail-in .18s ease-out backwards}.overlay:not(.flash){animation:detail-in .18s ease-out backwards}@keyframes detail-in{0%{opacity:0}to{opacity:1}}.overlay.closing{pointer-events:none;animation:overlay-out var(--overlay-exit-dur, .15s) var(--ease-exit) forwards}.overlay.closing>:is(.target-modal,.rules-modal,.settings-modal){animation:dialog-out var(--overlay-exit-dur, .15s) var(--ease-exit) forwards}@keyframes overlay-out{0%{opacity:1}to{opacity:0}}@keyframes dialog-out{0%{transform:none}to{transform:translateY(8px) scale(.98)}}@media(max-width:720px)and (prefers-reduced-motion:reduce){.game-board .log-panel{transform:none;opacity:0;transition:opacity .2s ease,visibility 0s linear .2s}.game-board.log-open .log-panel{opacity:1;transition:opacity .2s ease,visibility 0s}}@media(prefers-reduced-motion:reduce){button,.player{transition:none}button:active:not(:disabled),.controls .hit:active,.controls .stay:active{transform:none}.turn-chip,.controls>button,.controls>.waiting,.overlay:not(.flash){animation:none}}@media(max-width:340px){.head-actions{flex-wrap:wrap}.game-head .lobby-code.small{flex:0 0 100%;min-height:1rem;justify-content:flex-start}}.cursed-mark{position:absolute;right:.75rem;bottom:.65rem;width:2.8rem;height:3rem;color:#ef4444;opacity:.7;pointer-events:none;filter:drop-shadow(0 0 .45rem rgb(239 68 68 / 35%))}.home,.lobby{--entry-line: color-mix(in srgb, var(--border) 40%, transparent);max-width:28rem;padding-inline:max(1.25rem,var(--safe-left)) max(1.25rem,var(--safe-right));animation:entry-arrive .42s var(--ease-settle) both}.home{padding-top:calc(clamp(1.25rem,5vh,3rem) + var(--safe-top))}.home-hero{margin-bottom:1.6rem}.entry-eyebrow{margin:0 0 .4rem;color:var(--accent);font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.17em}.home h1{font-size:clamp(2.5rem,11vw,3.25rem);letter-spacing:-.065em;font-weight:800}.home .tagline{font-size:.95rem;line-height:1.6;margin:.7rem 0 0;opacity:.7}.welcome-cards{position:relative;isolation:isolate;width:12rem;height:8.5rem;margin:0 auto 1.3rem}.welcome-card{position:absolute;left:50%;bottom:.25rem;width:4.9rem;height:6.8rem;display:grid;place-items:center;border:1px solid rgb(255 255 255 / 85%);border-radius:.7rem;background-color:#f3f7ff;background-image:linear-gradient(145deg,#fff,#eaf2ff);z-index:0;color:#2563eb;box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 5px #c7d9fa,0 .65rem 1.15rem #122d5c2b;transform:translate(var(--fan-x)) rotate(var(--fan-turn));animation:fan-open .7s var(--ease-settle) backwards}.welcome-card small{position:absolute;top:.55rem;left:.6rem;font-size:.65rem;font-weight:700}.welcome-card b{font-size:3.5rem;letter-spacing:-.08em;padding-right:.2rem}.welcome-card i{position:absolute;bottom:.4rem;right:.55rem;font-size:.7rem;font-style:normal}.welcome-four{--fan-x: -112%;--fan-turn: -18deg;animation-delay:60ms}.welcome-seven{--fan-x: -50%;--fan-turn: 0deg;z-index:1;bottom:.8rem;color:#b7770d;background-color:#fff4d5;background-image:linear-gradient(145deg,#fffef0,#fff0bf);animation-delay:.1s}.welcome-nine{--fan-x: 12%;--fan-turn: 18deg;animation-delay:.14s}.home form{gap:.65rem;padding:1.2rem;border:1px solid var(--entry-line);border-radius:1.25rem;background:color-mix(in srgb,var(--panel) 85%,transparent);box-shadow:0 .8rem 2rem #0a234b0f;text-align:left}.entry-label{font-size:.8rem;font-weight:650}.home input{width:100%;min-height:48px;border-color:var(--entry-line);border-radius:.7rem;background:var(--panel)}.home form button:not([hidden]),.lobby .start{min-height:48px;border-radius:.75rem;font-weight:700;box-shadow:inset 0 1px #fff3,0 .25rem .65rem #2563eb26}.home form>button:not([hidden]){background:linear-gradient(135deg,#3576ef,#245bda)}.entry-divider{display:flex;gap:.7rem;align-items:center;font-size:.7rem;color:color-mix(in srgb,var(--fg) 65%,transparent);margin:.35rem 0;white-space:nowrap}.entry-divider:before,.entry-divider:after{content:"";height:1px;background:var(--entry-line);flex:1}.home .join-row{gap:.6rem}.home .join-row button{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--panel));box-shadow:none;min-width:4.5rem}.home .home-links{margin-top:.75rem;gap:1.5rem}.home .home-links button{font-size:.8rem;text-decoration:none}.lobby{padding-top:calc(.85rem + var(--safe-top))}.lobby-heading{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:.75rem;text-align:left}.lobby-heading h1{margin:0;font-size:1.65rem;letter-spacing:-.055em}.entry-mark{display:grid;place-items:center;width:2.65rem;height:3.25rem;color:#2563eb;background:#f9fbff;border:1px solid #b7cbf0;border-radius:.5rem;font-size:2rem;font-weight:800;box-shadow:0 .25rem .5rem #122d5c1a;transform:rotate(-8deg)}.lobby .invite-card{border:1px solid var(--entry-line);border-radius:1rem;background:var(--panel);color:var(--fg);box-shadow:0 .5rem 1.5rem #0a234b12;padding:.65rem;gap:1rem}.lobby .invite-qr img,.lobby .qr-loading{width:5.5rem;border-radius:.55rem}.lobby .invite-qr span{font-size:.58rem;font-weight:650;opacity:.65}.lobby .invite-code{border:0;padding:.1rem 0 .1rem .25em;font-size:2rem;letter-spacing:.25em}.lobby .copy-link{border:1px solid var(--entry-line);border-radius:.65rem;color:var(--accent);padding:.4rem .8rem;width:100%;font-size:.78rem}.lobby-settings{border-color:var(--entry-line);border-radius:1rem;padding:.65rem 1rem}.lobby-settings .settings-fields{gap:.35rem}.lobby-settings h2{border:0;padding:0;margin-bottom:.65rem;font-size:.65rem}.lobby-settings .ruleset-select{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.6rem;font-size:.8rem}.lobby-settings select{width:100%;min-height:44px;min-width:0;font-size:.78rem;background:var(--panel);color:var(--fg);border:1px solid var(--entry-line);border-radius:.65rem;padding:.5rem}.lobby-settings .timer-toggle{min-height:44px;align-items:center;gap:.65rem}.lobby-settings .timer-toggle input{width:1.2rem;height:1.2rem;margin:0}.lobby-settings .timer-toggle span{display:grid;gap:.1rem}.lobby-settings strong{font-size:.8rem;font-weight:600}.lobby-settings small{font-size:.7rem;opacity:.65}.lobby .add-bots{gap:.4rem;margin-top:.8rem}.lobby .add-bots button{font-size:.75rem;border-color:var(--entry-line);border-radius:.7rem}.lobby .start{margin-top:.75rem;background:linear-gradient(135deg,#3576ef,#245bda)}.lobby .start:disabled{background:var(--panel);color:var(--fg);border:1px solid var(--entry-line);box-shadow:none}.lobby-footer{display:flex;align-items:center;justify-content:space-between}.lobby .lobby-footer button{width:auto;margin:0;padding:.5rem .75rem;min-height:44px;font-size:.8rem;font-weight:500;background:transparent;border:0;color:var(--accent);text-decoration:none}.lobby .lobby-footer .leave{color:color-mix(in srgb,var(--fg) 65%,transparent)}.lobby .roster-heading{display:flex;justify-content:space-between;align-items:center;margin:.4rem 0;font-size:.85rem}.roster-heading span{font-size:.7rem;font-weight:500;opacity:.6}.lobby .roster{gap:.35rem}.lobby .roster li{min-height:48px;border-color:var(--entry-line);border-radius:.75rem;padding:.3rem .7rem;animation:roster-arrive .26s var(--ease-settle) backwards}.lobby .roster .player-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600}.lobby .roster .chip{font-size:.58rem;flex:none}.lobby .roster .remove-bot{min-width:44px;min-height:44px;margin:-.25rem -.4rem -.25rem 0;border:0;background:transparent}@keyframes entry-arrive{0%{opacity:0}to{opacity:1}}@keyframes roster-arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes fan-open{0%{opacity:0;transform:translate(-50%) translateY(12px) rotate(0)}to{opacity:1;transform:translate(var(--fan-x)) rotate(var(--fan-turn))}}.game-board>.game-head{animation:table-arrive .26s ease-out}@keyframes table-arrive{0%{opacity:.25}to{opacity:1}}@media(max-height:740px){.home{padding-top:calc(1rem + var(--safe-top))}.welcome-cards{height:6.6rem;margin-bottom:.8rem;scale:.85;transform-origin:bottom}.home-hero{margin-bottom:1rem}}@media(prefers-reduced-motion:reduce){.home,.lobby,.welcome-card,.lobby .roster li,.game-board>.game-head{animation:none}}:root{--surface-line: color-mix(in srgb, var(--border) 40%, transparent);--surface-shadow: 0 .45rem 1.35rem rgb(10 35 75 / 7%)}.ui-icon{display:block;width:1.15rem;height:1.15rem;flex:none}.game-head,.log-panel,.controls:not(.timer-active):not(.cursed){border-color:var(--surface-line);background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:var(--surface-shadow)}.game-head{border-radius:1rem}.game-head .brand{letter-spacing:-.04em}.game-head .stat-label{font-weight:700;letter-spacing:.08em}.game-head .icon{border-color:transparent;border-radius:.7rem;background:color-mix(in srgb,var(--accent) 6%,var(--panel));color:color-mix(in srgb,var(--fg) 80%,var(--accent))}.game-head .icon.pause.voted{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.game-head .lobby-code.small{border:1px solid var(--surface-line);border-radius:.65rem;color:var(--accent);background:transparent}.game-head .icon[title="Leave game"]{background:transparent;color:color-mix(in srgb,var(--fg) 60%,transparent)}.player:not(.active-turn):not(.your-turn):not(.is-frozen):not(.is-cursed):not(.is-ruined):not(.chase-glow){border-color:var(--surface-line);box-shadow:0 .2rem .75rem #0a234b0f}.player{border-radius:1rem;background:var(--panel)}.player.active-turn:not(.is-frozen):not(.is-cursed):not(.is-ruined):not(.chase-glow){border-color:color-mix(in srgb,var(--accent) 65%,var(--panel));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent),0 .3rem .9rem #2563eb17}.player.your-turn:not(.is-frozen):not(.is-cursed):not(.is-ruined):not(.chase-glow){border-color:var(--accent)}.player-head .player-name{letter-spacing:-.015em}.player-head .total{font-variant-numeric:tabular-nums;letter-spacing:-.025em}.player-badges .dealer{color:color-mix(in srgb,var(--fg) 70%,transparent);border-color:var(--surface-line);background:transparent}.player-badges .turn-chip{background:var(--accent);font-weight:650}.controls{border-radius:1rem}.controls .hit,.controls .stay{display:inline-flex;justify-content:center;align-items:center;gap:.5rem;border-radius:.8rem;font-size:1.05rem;font-weight:700;letter-spacing:-.01em;box-shadow:inset 0 1px #fff3,0 .25rem .65rem #0a234b1f}.controls .hit{background:linear-gradient(135deg,#3576ef,#245bda)}.controls .stay{background:light-dark(#e2f3eb,#193e34);color:light-dark(#126340,#9ee3c4);box-shadow:inset 0 0 0 1px light-dark(#c2e6d4,#2f5b4c)}.controls .waiting,.controls .spectating{font-size:.85rem;font-weight:500}.log-panel{border-radius:1rem}.log-panel input{min-height:44px;border-color:var(--surface-line);border-radius:.7rem;font-size:1rem}.log{line-height:1.6}.log-line.marker{color:var(--accent);font-size:.75rem}.overlay:not(.flash){background:light-dark(rgb(19 35 61 / 42%),rgb(3 8 17 / 72%))}.target-modal,.rules-modal,.settings-modal{border:1px solid var(--surface-line);border-radius:1.35rem;background:var(--panel);box-shadow:0 1.25rem 4rem #030f283d}.target-modal h2,.rules-modal h2,.settings-modal h2{letter-spacing:-.04em}.target-modal h2{font-size:1.6rem}.target-hint{font-size:.85rem}.target-modal .targets button{text-align:left;padding:.8rem 1rem;border-radius:.8rem;background:color-mix(in srgb,var(--accent) 5%,var(--panel));border-color:var(--surface-line);font-weight:600}.target-modal .targets button:focus-visible{border-color:var(--accent)}.round-summary table{border-collapse:separate;border-spacing:0}.round-summary td,.final-scores td{border-color:var(--surface-line)}.round-summary th{text-transform:uppercase;letter-spacing:.08em;font-size:.6rem}.round-summary .rs-you{background:color-mix(in srgb,var(--accent) 7%,transparent)}.round-summary .rs-you td:first-child{border-radius:.65rem 0 0 .65rem}.round-summary .rs-you td:last-child{border-radius:0 .65rem .65rem 0}.round-summary .rs-reason{font-size:.9rem;font-weight:500}.rs-progress{height:4px}.game-over>button{border-radius:.8rem;border-color:var(--surface-line);font-weight:600}.game-over .replay{background:linear-gradient(135deg,#3576ef,#245bda);margin-bottom:.5rem}.final-scores tr.winner{background:color-mix(in srgb,#10b981 7%,transparent)}.settings-modal header{border-color:var(--surface-line)}.preference-toggle{border-color:var(--surface-line);border-radius:.9rem}.settings-modal .icon,.rules-modal .icon{min-width:44px;min-height:44px;border-color:transparent;border-radius:.7rem;background:color-mix(in srgb,var(--accent) 6%,var(--panel))}.toast.error,.toast.reconnect,.toast.paused{border-radius:.85rem;box-shadow:var(--surface-shadow);font-size:.85rem;max-width:calc(100vw - 2rem)}@media(hover:hover){.game-head .icon:hover,.target-modal .targets button:hover{background:color-mix(in srgb,var(--accent) 12%,var(--panel))}}@media(max-width:720px){.game-board .log-panel{border-radius:1.25rem 1.25rem 0 0;box-shadow:0 -1rem 3rem #030f282e}}.score-track{position:absolute;inset:auto .8rem 2px;height:2px;border-radius:99px;overflow:hidden;pointer-events:none}.score-track>span{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 30%,transparent),var(--accent));opacity:.65;transform-origin:left;transition:transform .9s var(--ease-settle)}.winner-medallion{position:relative;display:grid;place-items:center;width:4rem;height:4rem;margin:0 auto 1rem;border-radius:50%;overflow:hidden;color:light-dark(#9b650b,#f7d587);background:linear-gradient(145deg,light-dark(#fff5d5,#4a3920),light-dark(#f6dfa0,#30281c));border:1px solid light-dark(#ead095,#79613a);box-shadow:inset 0 1px #ffffff73,0 .4rem 1.5rem #c18b2521;animation:medal-arrive .65s var(--ease-settle) backwards}.winner-medallion>.ui-icon{width:2rem;height:2rem}.winner-medallion:after{content:"";position:absolute;inset:-30%;background:linear-gradient(110deg,transparent 35%,rgb(255 255 255 / 45%) 50%,transparent 65%);transform:translate(110%);animation:medal-glint .9s ease-in-out .35s backwards;pointer-events:none}.winner-icon{display:inline-block;vertical-align:-.15em;margin-right:.35rem;color:light-dark(#9b650b,#f7d587)}.winner-icon .ui-icon{width:1rem;height:1rem}@keyframes medal-arrive{0%{opacity:0;transform:translateY(6px) scale(.88)}to{opacity:1;transform:none}}@keyframes medal-glint{0%{transform:translate(-110%)}to{transform:translate(110%)}}@media(prefers-reduced-motion:reduce){.score-track>span{transition:none}.winner-medallion,.winner-medallion:after{animation:none}}
