*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}:root{--background: 240 10% 3.9%;--foreground: 0 0% 98%;--card: 240 7% 10%;--card-foreground: 0 0% 98%;--primary: 262 83% 58%;--primary-soft: 262 80% 64%;--primary-2: 271 91% 65%;--accent: 262 83% 58%;--muted: 240 6% 19%;--muted-foreground: 240 4% 70%;--border: 240 6% 18%;--amber: 38 92% 50%}body{font-family:Inter,system-ui,sans-serif;background:hsl(var(--background));color:hsl(var(--foreground));overflow-x:hidden;overflow-y:auto}.screen{height:100dvh;padding:18px 12px;overflow-y:auto;-webkit-overflow-scrolling:touch;background:radial-gradient(1200px 500px at 10% -10%,hsla(var(--primary),.2),transparent 45%),radial-gradient(900px 450px at 100% 0%,hsla(var(--amber),.12),transparent 42%),linear-gradient(180deg,hsla(var(--primary),.08),hsl(var(--background)) 38%)}.panel{width:min(100%,560px);margin:0 auto 12px;background:linear-gradient(180deg,hsla(var(--card),.9),hsla(var(--card),.75));border:1px solid hsla(var(--border),.9);border-radius:16px;padding:16px;box-shadow:0 10px 24px #00000047,inset 0 1px #ffffff0a;backdrop-filter:blur(8px)}.panel.center{text-align:center}.lobby-screen{display:flex;flex-direction:column;align-items:center;padding-top:22px;padding-bottom:100px}.lobby-shell{width:min(100%,560px)}.lobby-header{margin:0 auto 14px;text-align:center}.lobby-logo{font-family:Oxanium,Outfit,Inter,sans-serif;font-size:clamp(38px,9vw,56px);font-weight:900;background:linear-gradient(130deg,hsl(var(--primary-soft)),hsl(var(--amber)));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:1px}.lobby-subtitle{color:#a1a1aa;font-size:14px}.label{display:block;color:#a1a1aa;font-size:13px;margin-bottom:8px}.input{width:100%;min-height:44px;padding:11px 12px;border-radius:11px;border:1px solid #27272a;background:#09090b;color:#fafafa;font-size:15px}.input:focus{outline:none;border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed33}.code-input{text-transform:uppercase;text-align:center;letter-spacing:5px;font-size:24px;font-weight:800}h1,h2,h3{margin:0 0 10px}.muted{color:#a1a1aa;font-size:13px}.error-box{margin:8px 0;border:1px solid rgba(239,68,68,.35);background:#ef44441f;color:#ef4444;border-radius:10px;padding:9px;font-size:13px}.row-gap{display:flex;gap:8px;align-items:center}.column-gap{display:flex;flex-direction:column;gap:8px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.mode-btn{border:1px solid #27272a;border-radius:11px;background:#09090b;color:#fafafa;padding:10px;text-align:left;cursor:pointer;display:flex;gap:8px;align-items:center;min-height:46px}.mode-btn.selected{border-color:hsla(var(--primary),.95);background:hsla(var(--primary),.18);box-shadow:0 0 0 2px hsla(var(--primary),.2) inset}.card-count-wrap{margin:10px 0 12px}.card-count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}.card-count-option{border:1px solid #2f2f36;border-radius:12px;background:#0e0e12;color:#e9e9ee;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer}.card-count-option .count-label{font-size:19px;line-height:1;font-weight:900;font-family:Outfit,sans-serif}.card-count-option .count-sub{font-size:11px;color:#a1a1aa;font-weight:600}.card-count-option.selected{border-color:hsla(var(--primary),.95);background:hsla(var(--primary),.16);box-shadow:0 0 0 2px hsla(var(--primary),.18) inset}.tiny-btn,.primary-btn,.secondary-btn,.amber-btn,.danger-btn{border:none;border-radius:11px;padding:12px 13px;font-weight:700;cursor:pointer;min-height:44px;transition:transform .15s ease,box-shadow .18s ease,filter .18s ease}.tiny-btn{background:#1c1c22;color:#fafafa;border:1px solid #27272a}.primary-btn{background:linear-gradient(90deg,hsl(var(--primary)),hsl(var(--primary-2)));color:#fff;box-shadow:0 8px 18px hsla(var(--primary),.32)}.secondary-btn{background:#1c1c22;color:#e4e4e7;border:1px solid #27272a}.amber-btn{background:linear-gradient(90deg,hsl(var(--amber)),#f97316);color:#fff;box-shadow:0 8px 18px #f59e0b4d}.danger-btn{background:linear-gradient(90deg,#ef4444,#e11d48);color:#fff;box-shadow:0 8px 18px #ef444447;border:none}.tiny-btn.selected{border-color:#7c3aed}.primary-btn:hover,.amber-btn:hover,.danger-btn:hover{transform:translateY(-1px);filter:brightness(1.03)}.primary-btn:active,.amber-btn:active,.danger-btn:active{transform:translateY(0)}.primary-btn:disabled,.secondary-btn:disabled,.amber-btn:disabled,.danger-btn:disabled,.tiny-btn:disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}.lobby-shell .primary-btn,.lobby-shell .secondary-btn,.lobby-shell .amber-btn,.lobby-shell .danger-btn{width:100%;display:block;text-align:center}.room-item{width:100%;display:flex;justify-content:space-between;align-items:center;border:1px solid #27272a;border-radius:11px;background:#09090b;color:#fafafa;padding:12px;cursor:pointer;margin-bottom:8px}.room-code{font-size:18px;font-weight:800;letter-spacing:2px;color:#f59e0b}.big{font-size:clamp(30px,8vw,38px);font-weight:900;letter-spacing:6px;color:#f59e0b}.player-row{display:flex;justify-content:space-between;align-items:center;background:#09090b;border:1px solid #27272a;border-radius:10px;padding:10px 12px}.host-tag{margin-left:8px;font-size:10px;border-radius:5px;padding:1px 5px;background:#f59e0b24;color:#f59e0b}.status-pill{font-size:12px;border-radius:8px;padding:4px 8px;background:#a1a1aa1f;color:#a1a1aa}.status-pill.good{background:#22c55e1f;color:#22c55e}.status-pill.bad{background:#ef44441f;color:#ef4444}.countdown-overlay{position:fixed;inset:0;background:#09090bcc;display:grid;place-items:center;z-index:50;backdrop-filter:blur(4px)}.countdown-loader-card{width:min(86vw,320px);border:1px solid hsla(var(--border),.95);border-radius:16px;padding:18px;background:linear-gradient(180deg,hsla(var(--card),.95),hsla(var(--card),.85));box-shadow:0 16px 38px #0006;display:grid;place-items:center;gap:10px}.countdown-spinner{width:44px;height:44px;border-radius:999px;border:4px solid hsla(var(--primary),.25);border-top-color:hsl(var(--primary));animation:spin-loader .9s linear infinite}.countdown-loader-title{font-family:Oxanium,Inter,sans-serif;font-size:20px;font-weight:800;color:#fff}.countdown-loader-sub{font-size:12px;color:#a1a1aa}.game-screen{padding:0;background:#09090b}.cute-overlay{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden;opacity:.7}.cute-sprite{position:absolute;will-change:transform,opacity;filter:drop-shadow(0 1px 3px rgba(0,0,0,.35));display:grid;place-items:center}.cute-pet{display:grid;place-items:center;width:100%;height:100%;font-size:1em;border-radius:999px;background:radial-gradient(circle at 30% 24%,#fffffff2,#fff3 48%,#ffffff14);box-shadow:inset 0 -3px 6px #00000029,0 2px 6px #0003;transform:translateZ(0);filter:hue-rotate(var(--pet-hue, 0deg))}.top-bar{display:flex;justify-content:space-between;align-items:center;background:#111114;border-bottom:1px solid #27272a;padding:10px 12px;position:sticky;top:0;z-index:20}.mode-text{margin-left:8px;color:#a1a1aa;font-size:12px}.ball-area{display:grid;place-items:center;gap:8px;padding:14px 12px 8px;position:relative;z-index:5}.ball{--ball-size: clamp(98px, 30vw, 126px);width:var(--ball-size);height:var(--ball-size);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:0 0 auto;position:relative;overflow:hidden;border:2px solid rgba(255,255,255,.1);box-shadow:0 10px 30px #0009,inset 0 -8px 18px #0000002e;animation:ball-pop .34s cubic-bezier(.175,.885,.32,1.275)}.ball:before{content:"";position:absolute;width:46%;height:30%;left:16%;top:14%;border-radius:50%;background:radial-gradient(ellipse at center,#ffffff73,#fff0 70%);pointer-events:none}.ball:after{content:"";position:absolute;inset:10%;border-radius:50%;border:1px solid rgba(255,255,255,.12);pointer-events:none}.ball-draw-pop{animation:ball-pop-strong .42s cubic-bezier(.175,.885,.32,1.275)}.ball-letter{font-family:Oxanium,Inter,sans-serif;font-size:clamp(14px,3.7vw,18px);font-weight:900;opacity:.95;letter-spacing:.5px}.ball-number{font-family:Oxanium,Outfit,Inter,sans-serif;margin-top:-2px;font-size:clamp(34px,8vw,50px);line-height:1;font-weight:900;text-shadow:0 2px 6px rgba(0,0,0,.34)}.ball-wait{background:#27272a}.ball-b{background:#3b82f6}.ball-i{background:#ef4444}.ball-n{background:#22c55e}.ball-g{background:radial-gradient(circle at 24% 20%,#ffffffc7,#fff0 36%),linear-gradient(160deg,#fde68a,#fcd34d,#f59e0b 72%,#f97316);border-color:#ffffff57}.ball-g.ball-draw-pop{box-shadow:0 0 0 4px #ffffff29,0 0 28px #fbbf248c,inset 0 -8px 18px #00000029}.ball-o{background:#8b5cf6}.ball-o{background:radial-gradient(circle at 24% 22%,#ffffffd1,#fff0 38%),linear-gradient(160deg,#ddd6fe,#c4b5fd,#a78bfa 68%,#8b5cf6);border-color:#ffffff5c}.ball-o.ball-draw-pop{box-shadow:0 0 0 4px #ffffff29,0 0 28px #c4b5fdb3,inset 0 -8px 18px #00000029}.drawn-count-text{font-size:12px}.drawn-strip{display:flex;gap:5px;overflow-x:auto;align-items:center;padding:8px 12px 14px;scrollbar-width:none;position:relative;z-index:5}.drawn-strip::-webkit-scrollbar{display:none}.draw-mini{width:34px;height:34px;flex:0 0 34px;border-radius:50%;overflow:visible;display:grid;place-items:center;color:#fff;font-size:11px;line-height:34px;font-weight:700;font-family:Oxanium,Inter,sans-serif;opacity:.72;transform:none;border:none;box-shadow:inset 0 -2px 6px #00000038}.draw-mini.latest{opacity:1;transform:scale(1.04);box-shadow:0 0 14px #ffffff52;animation:pulse-latest .42s ease-out}.tracker-wrap{width:min(100%,360px);margin:2px auto 12px;border:1px solid #2a2a33;border-radius:12px;background:#0f0f14;padding:8px;position:relative;z-index:5}.tracker-title{font-size:10px;letter-spacing:1.2px;color:#a1a1aa;font-weight:800;margin-bottom:8px;text-align:center}.tracker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.tracker-col{background:#13131a;border:1px solid #2b2b36;border-radius:8px;min-height:84px;display:flex;flex-direction:column}.tracker-col-head{font-family:Oxanium,Outfit,sans-serif;font-weight:900;font-size:12px;color:#fff;text-align:center;padding:3px 0;border-radius:6px 6px 0 0}.tracker-col-values{flex:1;display:flex;flex-wrap:wrap;align-content:flex-start;gap:3px;padding:4px}.tracker-chip{min-width:18px;height:18px;border-radius:999px;display:grid;place-items:center;font-size:9px;line-height:1;color:#fff;font-weight:800}.tracker-empty{color:#6b7280;font-size:12px;margin:auto}.tracker-col-0{background:#3b82f6}.tracker-col-1{background:#ef4444}.tracker-col-2{background:#22c55e}.tracker-col-3{background:#f59e0b}.tracker-col-4{background:#8b5cf6}.cards-list{padding:0 8px 98px;display:flex;flex-direction:column;gap:14px;align-items:center;position:relative;z-index:5}.card{width:100%;max-width:360px;border:1px solid rgba(124,58,237,.35);border-radius:14px;background:linear-gradient(180deg,#1e1834f7,#12101cfa);padding:10px;position:relative;z-index:6;box-shadow:0 0 18px #7c3aed2e,0 0 40px #8b5cf614,0 12px 28px #00000073,inset 0 1px #ffffff0f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden}.card:before{content:"";position:absolute;inset:-1px;border-radius:15px;padding:1px;background:linear-gradient(160deg,#8b5cf673,#f59e0b33 50%,#7c3aed4d);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:0}.card:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(ellipse at 30% 20%,rgba(139,92,246,.08),transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(245,158,11,.05),transparent 50%);pointer-events:none;z-index:0}.card-top-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.card-daubed-counter{font-size:11px;font-weight:700;color:#ddd6fe;border:1px solid rgba(167,139,250,.28);background:linear-gradient(135deg,#7c3aed33,#6366f129);border-radius:999px;padding:3px 8px}.bingo-header,.bingo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.bingo-header{margin-bottom:3px}.bingo-header-cell{aspect-ratio:1;border-radius:14px;display:grid;place-items:center;font-family:Oxanium,Outfit,sans-serif;font-size:clamp(16px,4vw,20px);font-weight:900;color:#fff;border:2px solid rgba(255,255,255,.68);box-shadow:inset 0 -6px 12px #00000029,0 3px 8px #00000038;text-shadow:0 1px 2px rgba(0,0,0,.24);animation:header-bounce 2.8s ease-in-out infinite}.bingo-cell{aspect-ratio:1;border:1px solid #27272a;border-radius:8px;display:grid;place-items:center;background:#09090b;color:#fafafa;font-weight:700;font-size:clamp(14px,3.5vw,17px);transition:transform .18s ease,box-shadow .2s ease,background .22s ease;position:relative;overflow:hidden}.bingo-cell.free{background:linear-gradient(135deg,#7c3aed,#f59e0b);color:#fff;font-size:10px;border-color:transparent}.bingo-cell.daubed.col-0{background:#3b82f6;border-color:transparent}.bingo-cell.daubed.col-1{background:#ef4444;border-color:transparent}.bingo-cell.daubed.col-2{background:#22c55e;border-color:transparent}.bingo-cell.daubed.col-3{background:#f59e0b;border-color:transparent}.bingo-cell.daubed.col-4{background:#8b5cf6;border-color:transparent}.bingo-cell.just-daubed{animation:daub-pop .42s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 0 0 2px #ffffff38 inset,0 0 16px #ffffff47}.bingo-cell.current-match{outline:2px solid rgba(255,255,255,.82);outline-offset:-2px;box-shadow:0 0 0 2px #ffffff3d inset,0 0 22px #ffffff57;animation:match-pulse .52s ease-out}.bingo-cell.current-match.daubed{filter:saturate(1.2) brightness(1.08)}.bingo-cell.current-match:not(.daubed){background:linear-gradient(135deg,#ffffff29,#ffffff0f),#09090b}.cell-marker{position:absolute;right:4px;top:4px;min-width:14px;height:14px;border-radius:999px;display:grid;place-items:center;padding:0 3px;font-size:9px;line-height:1;font-weight:900;color:#fffffffa;background:#00000047;border:1px solid rgba(255,255,255,.26);text-shadow:0 1px 2px rgba(0,0,0,.45)}.cell-ping{position:absolute;inset:0;border-radius:8px;border:2px solid rgba(255,255,255,.7);animation:marker-ring .52s ease-out;pointer-events:none}.draw-pulse-0.current-match,.draw-pulse-1.current-match{animation:match-pulse .52s ease-out}.bottom-actions{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:10px;background:linear-gradient(transparent,#09090b 30%);z-index:10}.bottom-actions button{flex:1}.in-game-announce{position:fixed;left:50%;bottom:84px;transform:translate(-50%);z-index:45;max-width:min(92vw,420px);text-align:center;font-size:13px;font-weight:700;color:#fff;border:1px solid hsla(var(--border),.95);border-radius:999px;padding:8px 14px;background:linear-gradient(90deg,hsla(var(--primary),.92),hsla(var(--primary-2),.92));box-shadow:0 10px 24px #00000059}.winner-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#0000008c,#000000bf);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:overlay-fade-in .3s ease-out;cursor:pointer;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:20px 0}.winner-overlay-content{display:flex;flex-direction:column;align-items:center;gap:12px;cursor:default;max-width:min(90vw,420px);width:100%}.winner-overlay-text{font-size:clamp(32px,10vw,72px);font-weight:900;color:#fff;text-shadow:0 0 20px rgba(255,215,0,.8),0 0 40px rgba(255,215,0,.5),0 4px 12px rgba(0,0,0,.6);animation:winner-pop .5s cubic-bezier(.34,1.56,.64,1) both;text-align:center;padding:0 16px}.winner-overlay-subtitle{color:#ffffffb3;font-size:14px;margin:0;animation:overlay-fade-in .6s ease-out .4s both}.winner-overlay-btn{margin-top:8px;padding:12px 32px;font-size:16px;font-weight:700;border:none;border-radius:12px;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;cursor:pointer;box-shadow:0 4px 16px #f59e0b66;transition:transform .15s,box-shadow .15s;animation:overlay-fade-in .4s ease-out .5s both}.winner-overlay-btn:hover{transform:scale(1.05);box-shadow:0 6px 24px #f59e0b80}.winner-overlay-dismiss{padding:8px 20px;font-size:13px;font-weight:500;border:1px solid rgba(255,255,255,.25);border-radius:8px;background:transparent;color:#ffffffb3;cursor:pointer;transition:background .15s,color .15s;animation:overlay-fade-in .4s ease-out .6s both}.winner-overlay-dismiss:hover{background:#ffffff1a;color:#fff}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes winner-pop{0%{transform:scale(.3) rotate(-5deg);opacity:0}60%{transform:scale(1.1) rotate(2deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.chat-box{position:fixed;right:8px;bottom:72px;width:300px;max-width:calc(100vw - 16px);max-height:320px;background:#16161a;border:1px solid #27272a;border-radius:12px;padding:10px}.chat-log{max-height:220px;overflow-y:auto;margin-bottom:8px;font-size:13px}.chat-system{color:#71717a;font-style:italic}.result-screen{display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at center,#7c3aed24,#09090b 70%);padding-top:26px}.result-card{max-width:460px}.result-emoji{font-size:clamp(62px,14vw,84px);margin-bottom:10px;animation:trophy-bounce 1.8s ease-in-out infinite}.result-title{font-family:Oxanium,Outfit,sans-serif;font-size:clamp(30px,9vw,44px);letter-spacing:.4px}.result-subtitle{color:#d1d1d6;margin:10px auto 16px;font-size:15px;max-width:90%}.result-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.result-stat-pill{border:1px solid #2e2e33;background:#0f0f13;border-radius:999px;padding:7px 12px;font-size:13px;color:#e4e4e7}.result-actions-card{max-width:460px}.round-badge{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.8px;color:#fbbf24;background:#fbbf241f;border:1px solid rgba(251,191,36,.25);border-radius:999px;padding:4px 12px;margin-top:6px}.score-badge{margin-left:8px;font-size:11px;font-weight:700;color:#fbbf24;background:#fbbf241f;border:1px solid rgba(251,191,36,.22);border-radius:999px;padding:2px 7px}.scoreboard-wrap{width:min(100%,360px);margin:2px auto 10px;border:1px solid #2a2a33;border-radius:12px;background:#0f0f14;padding:8px;position:relative;z-index:5}.scoreboard-title{font-size:10px;letter-spacing:1.2px;color:#a1a1aa;font-weight:800;margin-bottom:6px;text-align:center}.scoreboard-list{display:flex;flex-direction:column;gap:4px}.scoreboard-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;background:#13131a;border:1px solid #1e1e28;font-size:13px;transition:background .2s ease}.scoreboard-row.scoreboard-me{background:#7c3aed1f;border-color:#7c3aed4d}.scoreboard-row.scoreboard-winner{background:#fbbf241a;border-color:#fbbf2447}.scoreboard-rank{min-width:28px;text-align:center;font-weight:800;font-size:14px}.scoreboard-name{flex:1;font-weight:600;color:#e4e4e7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scoreboard-score{font-weight:800;font-size:13px;color:#fbbf24;white-space:nowrap}.result-scoreboard .scoreboard-row{padding:8px 10px;font-size:14px}.winner-scoreboard{width:100%;max-width:320px;display:flex;flex-direction:column;gap:4px;margin:8px 0 12px}.winner-score-row{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-radius:8px;background:#ffffff0f;font-size:14px;color:#fffc}.winner-score-row.winner-score-highlight{background:#fbbf2426;color:#fbbf24;font-weight:700}.winner-score-val{font-weight:800;font-size:15px;min-width:24px;text-align:right}.winner-waiting-host{color:#ffffff8c;font-size:13px;text-align:center;padding:8px 0;animation:pulse-text 1.5s ease-in-out infinite}@keyframes pulse-text{0%,to{opacity:.55}50%{opacity:1}}.app-loading-placeholder{display:none}.install-banner{position:fixed;bottom:14px;left:50%;transform:translate(-50%);background:#16161a;border:1px solid #27272a;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:10px;z-index:200}.install-banner button{border:none;border-radius:8px;padding:7px 10px;background:hsl(var(--primary));color:#fff;cursor:pointer}.install-banner .dismiss{background:transparent;color:#a1a1aa}@keyframes ball-pop{0%{transform:scale(.78);opacity:.35}65%{transform:scale(1.09);opacity:1}to{transform:scale(1)}}@keyframes ball-pop-strong{0%{transform:scale(.6) rotate(-10deg);opacity:.2}55%{transform:scale(1.12) rotate(4deg);opacity:1}to{transform:scale(1) rotate(0)}}@keyframes daub-pop{0%{transform:scale(.74)}65%{transform:scale(1.16)}to{transform:scale(1)}}@keyframes match-pulse{0%{transform:scale(.9)}55%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes marker-ring{0%{transform:scale(.84);opacity:.9}70%{transform:scale(1.04);opacity:.35}to{transform:scale(1.08);opacity:0}}@keyframes pulse-latest{0%{box-shadow:0 0 #fff0}50%{box-shadow:0 0 14px #ffffff59}to{box-shadow:0 0 10px #ffffff3d}}@keyframes trophy-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes spin-loader{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes cute-float{0%,to{transform:translateZ(0) rotate(var(--tilt, 0deg))}50%{transform:translate3d(var(--drift, 0px),calc(var(--hop, 10px) * -1),0) rotate(calc(var(--tilt, 0deg) + 6deg))}}@keyframes header-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@media(max-width:860px){.mode-grid{grid-template-columns:1fr}}@media(max-width:520px){.screen{padding-inline:10px}.panel{padding:13px;border-radius:14px}.top-bar{padding-inline:10px}.mode-text{display:inline-block;max-width:175px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.ball{--ball-size: min(35vw, 114px)}.chat-box{left:8px;right:8px;width:auto;max-width:none}.card-count-grid{grid-template-columns:repeat(2,1fr)}.tracker-wrap{width:calc(100% - 16px)}.scoreboard-wrap{width:calc(100% - 16px);margin:4px auto 8px;padding:6px;border-radius:10px}.scoreboard-title{font-size:9px;margin-bottom:4px}.scoreboard-row{padding:4px 6px;font-size:12px;gap:6px}.scoreboard-rank{min-width:22px;font-size:12px}.scoreboard-name{font-size:12px}.scoreboard-score{font-size:11px}.winner-scoreboard{max-width:100%}.winner-score-row{padding:5px 8px;font-size:13px}.winner-score-val{font-size:13px}.winner-overlay-content{padding:20px 16px;max-width:calc(100vw - 32px)}.result-scoreboard .scoreboard-row{padding:6px 8px;font-size:13px}}@media(max-width:380px){.scoreboard-wrap{padding:5px}.scoreboard-row{padding:3px 5px;font-size:11px;gap:4px}.scoreboard-rank{min-width:18px;font-size:11px}.scoreboard-name{font-size:11px}.scoreboard-score{font-size:10px}.winner-overlay-text{font-size:clamp(24px,9vw,48px)}.winner-overlay-btn{padding:10px 24px;font-size:14px}}
