:root{--color-accent:#ef3b2d;--color-accent-strong:#ff5142;--color-accent-action:#b72e2a;--color-accent-soft:rgba(239,59,45,.14);--color-bg:#18181b;--color-bg-deep:#111114;--color-surface:#232326;--color-surface-raised:#29292d;--color-surface-soft:#303036;--color-text:#e8edf5;--color-text-strong:#f8fafc;--color-muted:#a1a1aa;--color-border:hsla(0,0%,100%,.1);--color-border-strong:hsla(0,0%,100%,.17);--color-input:#1f1f22;--radius-xs:10px;--radius-sm:14px;--radius-md:18px;--radius-lg:22px;--radius-pill:999px;--shadow-card:0 18px 48px rgba(0,0,0,.28);--shadow-raised:0 26px 72px rgba(0,0,0,.38);--shadow-accent:0 12px 30px rgba(239,59,45,.22);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--content-width:1120px;--board-width:820px;--ease:cubic-bezier(0.16,1,0.3,1);color-scheme:dark;font-family:Montserrat,Arial,sans-serif;font-synthesis:none}:root[data-theme=light]{--color-accent-strong:#b72e2a;--color-accent-soft:rgba(239,59,45,.09);--color-bg:#f4f4f5;--color-bg-deep:#faf7f2;--color-surface:#fff;--color-surface-raised:#fcfcfd;--color-surface-soft:#f4f4f5;--color-text:#3f3f46;--color-text-strong:#18181b;--color-muted:#71717a;--color-border:rgba(39,39,42,.11);--color-border-strong:rgba(39,39,42,.19);--color-input:#fcfcfd;--shadow-card:0 16px 42px rgba(39,39,42,.09);--shadow-raised:0 24px 64px rgba(39,39,42,.13);color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-height:100%}body,html{background:#18181b;background:var(--color-bg);min-width:320px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#e8edf5;color:var(--color-text);margin:0;min-height:100vh}button,input,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a,button{color:inherit}a{text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid rgba(239,59,45,.38);outline-offset:3px}.visually-hidden{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.app-shell{background:radial-gradient(circle at 86% -8%,rgba(239,59,45,.17),transparent 27rem),radial-gradient(circle at -8% 42%,hsla(0,0%,100%,.045),transparent 24rem),linear-gradient(180deg,#232326,#18181b 38rem);background:radial-gradient(circle at 86% -8%,rgba(239,59,45,.17),transparent 27rem),radial-gradient(circle at -8% 42%,hsla(0,0%,100%,.045),transparent 24rem),linear-gradient(180deg,var(--color-surface) 0,var(--color-bg) 38rem);color:#e8edf5;color:var(--color-text);min-height:100vh;transition:background .22s ease,color .22s ease}:root[data-theme=light] .app-shell{background:radial-gradient(circle at 86% -8%,rgba(239,59,45,.1),transparent 28rem),linear-gradient(180deg,#faf7f2,#18181b 38rem);background:radial-gradient(circle at 86% -8%,rgba(239,59,45,.1),transparent 28rem),linear-gradient(180deg,#faf7f2 0,var(--color-bg) 38rem)}.app-header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:rgba(24,24,27,.84);border-bottom:1px solid hsla(0,0%,100%,.1);border-bottom:1px solid var(--color-border);box-shadow:0 8px 28px rgba(0,0,0,.12);position:-webkit-sticky;position:sticky;top:0;z-index:20}:root[data-theme=light] .app-header{background:hsla(0,0%,100%,.84)}.app-header-inner{grid-gap:16px;grid-gap:var(--space-4);align-items:center;display:grid;gap:16px;gap:var(--space-4);grid-template-columns:1fr auto 1fr;margin:0 auto;min-height:68px;width:min(1120px,calc(100% - 32px));width:min(var(--content-width),calc(100% - 32px))}.app-brand{align-items:center;color:#f8fafc;color:var(--color-text-strong);display:inline-flex;gap:10px;width:-webkit-max-content;width:max-content}.app-brand-mark{display:block;flex:0 0 auto;height:38px;width:38px}.app-brand-mark img{display:block;height:100%;width:100%}.app-brand-name{align-items:baseline;display:flex;letter-spacing:-.045em}.app-brand-name b,.app-brand-name strong{font-size:1rem}.app-brand-name strong{font-weight:650}.app-brand-name b{color:#ff5142;color:var(--color-accent-strong);font-weight:850}.app-nav{background:hsla(0,0%,100%,.035);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);display:flex;gap:4px;gap:var(--space-1);padding:4px}.app-nav,.app-nav-link{align-items:center;border-radius:999px;border-radius:var(--radius-pill)}.app-nav-link{color:#a1a1aa;color:var(--color-muted);display:inline-flex;font-size:.7rem;font-weight:750;min-height:34px;padding:0 13px;transition:background .16s ease,color .16s ease}.app-nav-link.is-active,.app-nav-link:hover{background:#303036;background:var(--color-surface-soft);color:#f8fafc;color:var(--color-text-strong)}.app-nav-link.is-active{box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.1);box-shadow:inset 0 0 0 1px var(--color-border)}.theme-toggle{background:#303036;background:var(--color-surface-soft);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:50%;color:#e8edf5;color:var(--color-text);cursor:pointer;height:38px;justify-self:end;transition:border-color .18s ease,-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease;transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:border-color .18s ease,-webkit-transform .18s var(--ease);transition:transform .18s var(--ease),border-color .18s ease;transition:transform .18s var(--ease),border-color .18s ease,-webkit-transform .18s var(--ease);width:38px}.theme-toggle:hover{border-color:rgba(239,59,45,.42);-webkit-transform:translateY(-1px) rotate(8deg);transform:translateY(-1px) rotate(8deg)}.app-main{min-height:calc(100vh - 69px)}.page-shell{margin:0 auto;padding:clamp(32px,6vw,72px) 0 36px;width:min(1120px,calc(100% - 32px));width:min(var(--content-width),calc(100% - 32px))}.eyebrow{color:#ff5142;color:var(--color-accent-strong);display:inline-block;font-size:.65rem;font-weight:850;letter-spacing:.16em;line-height:1.4;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance;color:#f8fafc;color:var(--color-text-strong)}h1{font-size:clamp(2.25rem,7vw,4.8rem);letter-spacing:-.065em;line-height:.98;margin-bottom:16px}h2{font-size:clamp(1.65rem,4vw,2.7rem);letter-spacing:-.05em;line-height:1.04;margin-bottom:12px}h3{font-size:1rem;letter-spacing:-.025em;margin-bottom:8px}p{color:#a1a1aa;color:var(--color-muted);line-height:1.7}.button{align-items:center;-webkit-appearance:none;appearance:none;border:1px solid transparent;border-radius:999px;border-radius:var(--radius-pill);cursor:pointer;display:inline-flex;font-size:.72rem;font-weight:800;justify-content:center;min-height:43px;padding:10px 17px;text-align:center;transition:border-color .18s ease,background .18s ease,box-shadow .18s cubic-bezier(.16,1,.3,1),-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,background .18s ease,box-shadow .18s cubic-bezier(.16,1,.3,1);transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,background .18s ease,box-shadow .18s cubic-bezier(.16,1,.3,1),-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:border-color .18s ease,background .18s ease,box-shadow .18s var(--ease),-webkit-transform .18s var(--ease);transition:transform .18s var(--ease),border-color .18s ease,background .18s ease,box-shadow .18s var(--ease);transition:transform .18s var(--ease),border-color .18s ease,background .18s ease,box-shadow .18s var(--ease),-webkit-transform .18s var(--ease)}.button:hover{-webkit-transform:translateY(-1px);transform:translateY(-1px)}.button:disabled{cursor:wait;opacity:.62;-webkit-transform:none;transform:none}.button-primary{background:#f8fafc;background:var(--color-text-strong);box-shadow:0 9px 20px rgba(0,0,0,.18);color:#111114;color:var(--color-bg-deep)}.button-primary:hover{background:#b72e2a;background:var(--color-accent-action);box-shadow:0 12px 30px rgba(239,59,45,.22);box-shadow:var(--shadow-accent);color:#fff}:root[data-theme=light] .button-primary{background:#27272a;color:#fff}:root[data-theme=light] .button-primary:hover{background:#b72e2a;background:var(--color-accent-action)}.button-secondary{background:hsla(0,0%,100%,.045);border-color:hsla(0,0%,100%,.17);border-color:var(--color-border-strong);color:#f8fafc;color:var(--color-text-strong)}.button-secondary:hover{background:rgba(239,59,45,.14);background:var(--color-accent-soft);border-color:rgba(239,59,45,.45);color:#ff5142;color:var(--color-accent-strong)}.hero-panel{grid-gap:clamp(36px,7vw,84px);align-items:center;background:radial-gradient(circle at 94% 4%,rgba(239,59,45,.16),transparent 21rem),linear-gradient(145deg,#29292d,#232326);background:radial-gradient(circle at 94% 4%,rgba(239,59,45,.16),transparent 21rem),linear-gradient(145deg,var(--color-surface-raised),var(--color-surface));border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:30px;box-shadow:0 26px 72px rgba(0,0,0,.38);box-shadow:var(--shadow-raised);display:grid;gap:clamp(36px,7vw,84px);grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);min-height:480px;overflow:hidden;padding:clamp(28px,6vw,68px);position:relative}.hero-panel:before{border:1px solid rgba(239,59,45,.12);border-radius:50%;box-shadow:0 0 0 42px rgba(239,59,45,.035),0 0 0 84px rgba(239,59,45,.018);content:"";height:280px;position:absolute;right:-80px;top:-155px;width:280px}.hero-copy{position:relative;z-index:1}.hero-copy h1{margin-top:12px;max-width:680px}.hero-copy>p{font-size:clamp(.92rem,2vw,1.05rem);margin-bottom:28px;max-width:580px}.form-actions,.game-actions,.hero-actions{display:flex;flex-wrap:wrap;gap:10px}.hero-board-preview{grid-gap:8px;background:rgba(0,0,0,.16);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:24px;box-shadow:0 26px 60px rgba(0,0,0,.24);display:grid;gap:8px;grid-template-columns:repeat(3,1fr);padding:13px;position:relative;-webkit-transform:rotate(2deg);transform:rotate(2deg);z-index:1}:root[data-theme=light] .hero-board-preview{background:rgba(39,39,42,.04)}.hero-board-preview span{aspect-ratio:1;background:#303036;background:var(--color-surface-soft);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:13px;color:#a1a1aa;color:var(--color-muted);display:grid;font-size:clamp(.48rem,1vw,.64rem);font-weight:800;padding:5px;place-items:center;text-align:center}.hero-board-preview span.is-accent{background:#b72e2a;background:var(--color-accent-action);border-color:rgba(239,59,45,.5);box-shadow:0 12px 30px rgba(239,59,45,.22);box-shadow:var(--shadow-accent);color:#fff}.join-room-panel{grid-gap:clamp(24px,6vw,68px);align-items:center;background:linear-gradient(145deg,#29292d,#232326);background:linear-gradient(145deg,var(--color-surface-raised),var(--color-surface));border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:22px;border-radius:var(--radius-lg);box-shadow:0 18px 48px rgba(0,0,0,.28);box-shadow:var(--shadow-card);display:grid;gap:clamp(24px,6vw,68px);grid-template-columns:minmax(0,1fr) minmax(300px,.75fr);margin-top:20px;padding:clamp(24px,5vw,42px)}.join-room-copy h2{font-size:clamp(1.65rem,4vw,2.5rem);margin:9px 0}.join-room-copy p{font-size:.82rem;margin:0;max-width:620px}.room-code-form{grid-gap:8px;display:grid;gap:8px}.room-code-form label,.room-setup-panel label{color:#f8fafc;color:var(--color-text-strong);font-size:.7rem;font-weight:800}.room-code-control{grid-gap:8px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.room-code-control input,.room-setup-panel input{background:#1f1f22;background:var(--color-input);border:1px solid hsla(0,0%,100%,.17);border:1px solid var(--color-border-strong);border-radius:14px;border-radius:var(--radius-sm);color:#f8fafc;color:var(--color-text-strong);min-height:48px;min-width:0;padding:0 14px;transition:border-color .16s ease,box-shadow .16s ease;width:100%}.room-code-control input{font-size:1rem;font-weight:850;letter-spacing:.15em;text-transform:uppercase}.room-code-control input:focus,.room-setup-panel input:focus{border-color:rgba(239,59,45,.6);box-shadow:0 0 0 4px rgba(239,59,45,.1);outline:none}.room-code-error{color:#ff5142;color:var(--color-accent-strong);font-size:.65rem;font-weight:700}.content-section{padding:clamp(64px,9vw,104px) 0 42px}.page-intro,.section-heading{max-width:700px}.page-intro h1,.section-heading h2{margin-top:11px}.page-intro{margin-bottom:34px}.page-intro h1{font-size:clamp(2.15rem,6vw,4rem)}.step-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-top:30px}.create-panel,.game-panel,.info-card,.room-setup-panel,.share-panel{background:linear-gradient(180deg,#29292d,#232326);background:linear-gradient(180deg,var(--color-surface-raised),var(--color-surface));border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);box-shadow:0 18px 48px rgba(0,0,0,.28);box-shadow:var(--shadow-card)}.info-card{border-radius:22px;border-radius:var(--radius-lg);min-height:205px;padding:24px}.info-card p{font-size:.84rem;margin-bottom:0}.step-number{align-items:center;background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.28);border-radius:999px;border-radius:var(--radius-pill);color:#ff5142;color:var(--color-accent-strong);display:inline-flex;font-size:.62rem;font-weight:850;margin-bottom:34px;min-height:28px;padding:0 10px}.app-footer{align-items:center;border-top:1px solid hsla(0,0%,100%,.1);border-top:1px solid var(--color-border);color:#a1a1aa;color:var(--color-muted);display:flex;font-size:.68rem;gap:24px;justify-content:space-between;margin-top:42px;padding:22px 0 8px}.app-footer>span{color:#f8fafc;color:var(--color-text-strong);font-weight:800}.app-footer p{font-size:inherit;line-height:1.5;margin:0}.app-footer a:hover{color:#ff5142;color:var(--color-accent-strong)}.game-page{padding-top:clamp(20px,4vw,48px);width:min(940px,calc(100% - 24px))}.game-panel{border-radius:28px;padding:clamp(16px,4vw,34px)}.game-status{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:min(560px,68vh);padding:clamp(32px,8vw,72px) 20px;text-align:center}.game-status h1{font-size:clamp(2rem,7vw,4rem);margin:10px 0 12px;max-width:620px}.game-status p{margin-bottom:24px;max-width:560px}.game-status .game-actions{justify-content:center}.status-icon,.status-spinner{border-radius:50%;display:grid;height:48px;margin-bottom:22px;place-items:center;width:48px}.status-spinner{-webkit-animation:status-spin .8s linear infinite;animation:status-spin .8s linear infinite;border:3px solid hsla(0,0%,100%,.17);border-top-color:#ff5142;border:3px solid var(--color-border-strong);border-top-color:var(--color-accent-strong)}.status-icon{background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.4);color:#ff5142;color:var(--color-accent-strong);font-size:1.2rem;font-weight:900}@-webkit-keyframes status-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes status-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.game-heading{align-items:flex-end;display:flex;gap:24px;justify-content:space-between;margin-bottom:24px}.game-heading h1{font-size:clamp(1.85rem,5vw,3.2rem);margin:8px 0 9px}.game-heading p{font-size:.82rem;margin:0}.move-pill{align-items:center;background:#303036;background:var(--color-surface-soft);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:999px;border-radius:var(--radius-pill);display:flex;flex:0 0 auto;gap:8px;min-height:40px;padding:6px 12px 6px 8px}.move-pill strong{background:#f8fafc;background:var(--color-text-strong);border-radius:50%;color:#111114;color:var(--color-bg-deep);display:grid;font-size:.68rem;height:28px;place-items:center;width:28px}.move-pill span{color:#a1a1aa;color:var(--color-muted);font-size:.61rem;font-weight:750}.bingo-grid{grid-gap:clamp(5px,1vw,10px);background:rgba(0,0,0,.16);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:22px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.035);display:grid;gap:clamp(5px,1vw,10px);grid-template-columns:repeat(5,minmax(0,1fr));padding:clamp(7px,1.4vw,12px)}:root[data-theme=light] .bingo-grid{background:#ededee}.bingo-square{aspect-ratio:1;background:linear-gradient(155deg,#303036,#232326);background:linear-gradient(155deg,var(--color-surface-soft),var(--color-surface));border:1px solid hsla(0,0%,100%,.17);border:1px solid var(--color-border-strong);border-radius:clamp(9px,2vw,16px);box-shadow:0 6px 16px rgba(0,0,0,.13);color:#e8edf5;color:var(--color-text);cursor:pointer;display:grid;isolation:isolate;min-width:0;overflow:hidden;padding:clamp(4px,1.4vw,13px);place-items:center;position:relative;transition:border-color .18s ease,background .22s ease,box-shadow .22s cubic-bezier(.16,1,.3,1),color .18s ease,-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,background .22s ease,box-shadow .22s cubic-bezier(.16,1,.3,1),color .18s ease;transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,background .22s ease,box-shadow .22s cubic-bezier(.16,1,.3,1),color .18s ease,-webkit-transform .18s cubic-bezier(.16,1,.3,1);transition:border-color .18s ease,background .22s ease,box-shadow .22s var(--ease),color .18s ease,-webkit-transform .18s var(--ease);transition:transform .18s var(--ease),border-color .18s ease,background .22s ease,box-shadow .22s var(--ease),color .18s ease;transition:transform .18s var(--ease),border-color .18s ease,background .22s ease,box-shadow .22s var(--ease),color .18s ease,-webkit-transform .18s var(--ease)}@media (hover:hover) and (pointer:fine){.bingo-square:not(.is-selected):not(:disabled):hover{background:linear-gradient(155deg,#29292d,#303036);background:linear-gradient(155deg,var(--color-surface-raised),var(--color-surface-soft));border-color:rgba(239,59,45,.42);box-shadow:0 12px 24px rgba(0,0,0,.2);-webkit-transform:translateY(-2px);transform:translateY(-2px);z-index:2}}.bingo-square:not(:disabled):active{-webkit-transform:scale(.96);transform:scale(.96)}.square-label{text-wrap:balance;color:inherit;font-size:clamp(.52rem,1.7vw,.82rem);font-weight:720;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.02em;line-height:1.17;overflow-wrap:anywhere;position:relative;text-align:center;width:100%;z-index:1}.bingo-square.has-long-label .square-label{font-size:clamp(.48rem,1.45vw,.72rem);line-height:1.1}.bingo-square.has-extra-long-label .square-label{font-size:clamp(.44rem,1.25vw,.64rem);line-height:1.06}.square-check{background:hsla(0,0%,100%,.2);border-radius:50%;bottom:6px;color:#fff;display:grid;font-size:.68rem;height:20px;opacity:0;place-items:center;position:absolute;right:7px;-webkit-transform:scale(.55);transform:scale(.55);transition:opacity .18s ease,-webkit-transform .22s cubic-bezier(.16,1,.3,1);transition:opacity .18s ease,transform .22s cubic-bezier(.16,1,.3,1);transition:opacity .18s ease,transform .22s cubic-bezier(.16,1,.3,1),-webkit-transform .22s cubic-bezier(.16,1,.3,1);transition:opacity .18s ease,-webkit-transform .22s var(--ease);transition:opacity .18s ease,transform .22s var(--ease);transition:opacity .18s ease,transform .22s var(--ease),-webkit-transform .22s var(--ease);width:20px;z-index:1}.bingo-square.is-selected{-webkit-animation:squareSelected .26s cubic-bezier(.16,1,.3,1);animation:squareSelected .26s cubic-bezier(.16,1,.3,1);-webkit-animation:squareSelected .26s var(--ease);animation:squareSelected .26s var(--ease);background:radial-gradient(circle at top,hsla(0,0%,100%,.17),transparent 60%),linear-gradient(145deg,#cf2f25,#a52720);border-color:hsla(0,0%,100%,.2);box-shadow:0 12px 30px rgba(239,59,45,.22);box-shadow:var(--shadow-accent);color:#fff}.bingo-square.is-selected .square-check{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.bingo-square.is-free{background:radial-gradient(circle at center,rgba(239,59,45,.2),transparent 70%),#303036;background:radial-gradient(circle at center,rgba(239,59,45,.2),transparent 70%),var(--color-surface-soft);border-color:rgba(239,59,45,.55);box-shadow:inset 0 0 0 2px rgba(239,59,45,.11);color:#ff5142;color:var(--color-accent-strong);cursor:default}.bingo-square.is-free .square-label{font-weight:900;letter-spacing:.055em}.bingo-square.is-free .square-check{background:#b72e2a;background:var(--color-accent-action);opacity:1;-webkit-transform:scale(1);transform:scale(1)}.board-note{font-size:.66rem;margin:12px 0 0;text-align:center}.game-actions{justify-content:center;margin-top:22px}.room-page{width:min(940px,calc(100% - 24px))}.room-setup-panel{border-radius:28px;margin:0 auto;padding:clamp(26px,6vw,52px);width:min(700px,100%)}.room-setup-panel h1{font-size:clamp(2rem,7vw,3.8rem);margin:10px 0 14px}.room-setup-panel>p{margin-bottom:28px;max-width:580px}.room-setup-panel form{grid-gap:10px;display:grid;gap:10px}.room-setup-panel .field-hint{margin-top:-4px}.room-setup-panel .form-actions{margin-top:8px}.room-lobby{grid-gap:20px;display:grid;gap:20px}.room-lobby-heading{align-items:flex-start;display:flex;gap:24px;justify-content:space-between}.room-lobby-heading h1{font-size:clamp(2rem,6vw,3.6rem);margin:8px 0 10px}.room-lobby-heading p{font-size:.82rem;margin:0;max-width:590px}.room-code-badge{grid-gap:4px;background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.35);border-radius:18px;border-radius:var(--radius-md);display:grid;flex:0 0 auto;gap:4px;min-width:154px;padding:13px 17px;text-align:center}.room-code-badge small{color:#a1a1aa;color:var(--color-muted);font-size:.56rem;font-weight:750;letter-spacing:.12em;text-transform:uppercase}.room-code-badge strong{color:#f8fafc;color:var(--color-text-strong);font-size:1.35rem;letter-spacing:.16em}.player-panel,.room-share-card{background:hsla(0,0%,100%,.025);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:18px;border-radius:var(--radius-md)}.room-share-card{grid-gap:22px;align-items:center;display:grid;gap:22px;grid-template-columns:minmax(190px,.7fr) minmax(0,1.3fr);padding:18px}.room-share-card>div:first-child{grid-gap:5px;display:grid;gap:5px}.live-room-bar strong,.player-list strong,.room-share-card strong{color:#f8fafc;color:var(--color-text-strong)}.room-share-card small{color:#a1a1aa;color:var(--color-muted);font-size:.63rem;line-height:1.5}.room-share-card .copy-control{margin:0}.player-panel{padding:clamp(18px,4vw,26px)}.player-panel-heading{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.player-panel-heading h2{font-size:1.35rem;margin:6px 0 0}.connection-dot{align-items:center;color:#61d5bb;display:inline-flex;font-size:.61rem;font-weight:800;gap:7px}.connection-dot:before{background:currentColor;border-radius:50%;box-shadow:0 0 0 4px rgba(75,195,167,.1);content:"";height:7px;width:7px}:root[data-theme=light] .connection-dot{color:#26715f}.player-list{grid-gap:9px;display:grid;gap:9px;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;margin:0;padding:0}.player-list li{grid-gap:10px;align-items:center;background:#303036;background:var(--color-surface-soft);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:14px;border-radius:var(--radius-sm);display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr) auto;min-width:0;padding:10px 12px}.player-list strong{font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-list small{color:#ff5142;color:var(--color-accent-strong);font-size:.55rem;font-weight:800;text-transform:uppercase}.player-avatar{background:#232326;background:var(--color-surface);border:1px solid hsla(0,0%,100%,.17);border:1px solid var(--color-border-strong);border-radius:50%;color:#f8fafc;color:var(--color-text-strong);display:grid;font-size:.67rem;font-weight:850;height:31px;place-items:center;width:31px}.room-lobby-actions{display:flex;justify-content:center}.room-lobby-actions .button{min-width:180px}.waiting-message{align-items:center;color:#a1a1aa;color:var(--color-muted);display:inline-flex;font-size:.68rem;font-weight:750;gap:10px;min-height:43px;padding:0 15px}.waiting-message>span{-webkit-animation:waitingPulse 1.3s ease-in-out infinite;animation:waitingPulse 1.3s ease-in-out infinite;background:#ff5142;background:var(--color-accent-strong);border-radius:50%;height:8px;width:8px}.room-countdown{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:min(560px,70vh);text-align:center}.room-countdown>strong{background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.42);border-radius:50%;box-shadow:0 12px 30px rgba(239,59,45,.22);box-shadow:var(--shadow-accent);color:#f8fafc;color:var(--color-text-strong);display:grid;font-size:3.2rem;height:112px;margin:20px 0;place-items:center;width:112px}.room-countdown h1{font-size:clamp(2rem,7vw,3.6rem);margin-bottom:8px}.live-room-bar{align-items:center;background:hsla(0,0%,100%,.025);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:14px;border-radius:var(--radius-sm);display:flex;font-size:.65rem;gap:16px;justify-content:space-between;margin-bottom:16px;padding:10px 13px}.live-room-bar>div{align-items:center;display:flex;gap:12px}.live-room-bar>span{color:#a1a1aa;color:var(--color-muted)}.room-winner-notice{align-items:center;-webkit-animation:winnerIn .52s cubic-bezier(.16,1,.3,1);animation:winnerIn .52s cubic-bezier(.16,1,.3,1);-webkit-animation:winnerIn .52s var(--ease);animation:winnerIn .52s var(--ease);background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.42);border-radius:18px;border-radius:var(--radius-md);box-shadow:0 14px 34px rgba(239,59,45,.13);display:flex;gap:13px;margin-bottom:18px;padding:14px 16px}.room-winner-notice>span:last-child{grid-gap:3px;display:grid;gap:3px}.room-winner-notice strong{color:#f8fafc;color:var(--color-text-strong);font-size:.95rem}.room-winner-notice small{color:#a1a1aa;color:var(--color-muted);font-size:.63rem}.winner-celebration{display:grid;inset:0;isolation:isolate;padding:20px;place-items:center;position:fixed;z-index:1000}.winner-celebration-backdrop{-webkit-animation:winnerBackdropIn .24s ease both;animation:winnerBackdropIn .24s ease both;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(7,7,9,.82);border:0;border-radius:0;cursor:default;height:100%;inset:0;padding:0;position:absolute;width:100%;z-index:0}.winner-celebration-card{-webkit-animation:winnerModalIn .52s cubic-bezier(.16,1,.3,1) both;animation:winnerModalIn .52s cubic-bezier(.16,1,.3,1) both;-webkit-animation:winnerModalIn .52s var(--ease) both;animation:winnerModalIn .52s var(--ease) both;background:radial-gradient(circle at 50% 0,rgba(239,59,45,.2),transparent 48%),linear-gradient(155deg,#29292d,#232326);background:radial-gradient(circle at 50% 0,rgba(239,59,45,.2),transparent 48%),linear-gradient(155deg,var(--color-surface-raised),var(--color-surface));border:1px solid rgba(239,59,45,.48);border-radius:28px;box-shadow:0 32px 80px rgba(0,0,0,.52),0 0 48px rgba(239,59,45,.16),inset 0 1px 0 hsla(0,0%,100%,.08);overflow:hidden;padding:clamp(30px,7vw,48px);position:relative;text-align:center;width:min(100%,430px);z-index:1}:root[data-theme=light] .winner-celebration-card{background:radial-gradient(circle at 50% 0,rgba(239,59,45,.16),transparent 48%),#fff}.winner-celebration-icon{background:linear-gradient(145deg,#ef3b2d,#a52720);border:1px solid hsla(0,0%,100%,.24);border-radius:24px;box-shadow:0 14px 36px rgba(239,59,45,.34);color:#fff;display:grid;font-size:2rem;font-weight:900;height:72px;margin:0 auto 22px;place-items:center;-webkit-transform:rotate(-5deg);transform:rotate(-5deg);width:72px}.winner-celebration-card h2{color:#f8fafc;color:var(--color-text-strong);font-size:clamp(3rem,13vw,5.25rem);letter-spacing:-.075em;line-height:.92;margin:7px 0 10px}.winner-celebration-card p{color:#e8edf5;color:var(--color-text);font-size:clamp(1.05rem,4.5vw,1.35rem);margin:18px 0 5px}.winner-celebration-card p strong{color:#ff5142;color:var(--color-accent-strong);font-weight:850}.winner-celebration-note{color:#a1a1aa;color:var(--color-muted);display:block;font-size:.75rem}.winner-celebration-action{margin-top:26px;width:100%}.confetti-field{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:2}.confetti-piece{-webkit-animation:confettiBurst 1.65s cubic-bezier(.12,.6,.28,1) var(--confetti-delay) both;animation:confettiBurst 1.65s cubic-bezier(.12,.6,.28,1) var(--confetti-delay) both;border-radius:3px;height:16px;left:50%;opacity:0;position:absolute;top:46%;width:9px}.confetti-piece:nth-child(3n){border-radius:50%;height:8px;width:13px}.confetti-piece:nth-child(4n){height:20px;width:7px}.confetti-color-0{background:#ef3b2d}.confetti-color-1{background:#fff}.confetti-color-2{background:#f4bd50}.confetti-color-3{background:#6eb6ff}.confetti-color-4{background:#f18ca5}.winner-banner{align-items:center;-webkit-animation:winnerIn .52s cubic-bezier(.16,1,.3,1);animation:winnerIn .52s cubic-bezier(.16,1,.3,1);-webkit-animation:winnerIn .52s var(--ease);animation:winnerIn .52s var(--ease);background:radial-gradient(circle at 8% 0,rgba(239,59,45,.25),transparent 12rem),rgba(239,59,45,.14);background:radial-gradient(circle at 8% 0,rgba(239,59,45,.25),transparent 12rem),var(--color-accent-soft);border:1px solid rgba(239,59,45,.42);border-radius:18px;border-radius:var(--radius-md);box-shadow:0 14px 34px rgba(239,59,45,.13);display:flex;gap:13px;margin-bottom:18px;padding:14px 16px}.success-icon,.winner-icon{background:#b72e2a;background:var(--color-accent-action);border-radius:50%;box-shadow:0 12px 30px rgba(239,59,45,.22);box-shadow:var(--shadow-accent);color:#fff;display:grid;flex:0 0 auto;font-weight:900;height:40px;place-items:center;width:40px}.winner-banner>span:last-child{grid-gap:3px;display:grid;gap:3px}.winner-banner strong{color:#f8fafc;color:var(--color-text-strong);font-size:1.05rem;letter-spacing:.08em}.winner-banner small{color:#a1a1aa;color:var(--color-muted);font-size:.69rem;font-weight:650}.create-page{width:min(820px,calc(100% - 32px))}.create-panel{grid-gap:28px;border-radius:26px;display:grid;gap:28px;padding:clamp(22px,5vw,38px)}.field-group{grid-gap:8px;display:grid;gap:8px}.field-group label{color:#f8fafc;color:var(--color-text-strong);font-size:.78rem;font-weight:800}.field-label-row{align-items:center;display:flex;gap:16px;justify-content:space-between}.field-group small,.field-hint{color:#a1a1aa;color:var(--color-muted);font-size:.66rem;line-height:1.55}.copy-control input,.field-group input,.field-group textarea{background:#1f1f22;background:var(--color-input);border:1px solid hsla(0,0%,100%,.17);border:1px solid var(--color-border-strong);border-radius:14px;border-radius:var(--radius-sm);color:#f8fafc;color:var(--color-text-strong);transition:border-color .16s ease,box-shadow .16s ease;width:100%}.field-group input{min-height:48px;padding:0 14px}.field-group textarea{line-height:1.65;min-height:260px;padding:14px;resize:vertical}.field-group input::-webkit-input-placeholder,.field-group textarea::-webkit-input-placeholder{color:#a1a1aa;color:var(--color-muted);opacity:.7}.field-group input::placeholder,.field-group textarea::placeholder{color:#a1a1aa;color:var(--color-muted);opacity:.7}.copy-control input:focus,.field-group input:focus,.field-group textarea:focus{border-color:rgba(239,59,45,.6);box-shadow:0 0 0 4px rgba(239,59,45,.1);outline:none}.count-badge{background:#303036;background:var(--color-surface-soft);border:1px solid hsla(0,0%,100%,.1);border:1px solid var(--color-border);border-radius:999px;border-radius:var(--radius-pill);color:#a1a1aa;color:var(--color-muted);font-size:.6rem;font-weight:800;padding:5px 9px}.count-badge.is-complete{background:rgba(75,195,167,.1);border-color:rgba(75,195,167,.35);color:#61d5bb}:root[data-theme=light] .count-badge.is-complete{color:#236b5a}.form-message{border-radius:14px;border-radius:var(--radius-sm);font-size:.72rem;font-weight:650;line-height:1.5;padding:12px 14px}.form-message.is-error{background:rgba(239,59,45,.14);background:var(--color-accent-soft);border:1px solid rgba(239,59,45,.38);color:#ff5142;color:var(--color-accent-strong)}.share-panel{border-color:rgba(239,59,45,.28);border-radius:22px;display:flex;gap:18px;margin-top:20px;padding:clamp(20px,4vw,30px)}.share-copy{flex:1 1;min-width:0}.share-copy h2{font-size:1.4rem;margin:7px 0 8px}.share-copy p{font-size:.75rem;margin-bottom:16px}.copy-control{grid-gap:8px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto;margin-bottom:12px}.copy-control input{font-size:.68rem;min-height:43px;min-width:0;padding:0 12px}.share-actions{display:flex;flex-wrap:wrap;gap:8px}@-webkit-keyframes squareSelected{0%{-webkit-transform:scale(.93);transform:scale(.93)}65%{-webkit-transform:scale(1.025);transform:scale(1.025)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes squareSelected{0%{-webkit-transform:scale(.93);transform:scale(.93)}65%{-webkit-transform:scale(1.025);transform:scale(1.025)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes winnerIn{0%{opacity:0;-webkit-transform:translateY(8px) scale(.98);transform:translateY(8px) scale(.98)}to{opacity:1;-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}}@keyframes winnerIn{0%{opacity:0;-webkit-transform:translateY(8px) scale(.98);transform:translateY(8px) scale(.98)}to{opacity:1;-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}}@-webkit-keyframes winnerBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes winnerBackdropIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes winnerModalIn{0%{opacity:0;-webkit-transform:translateY(22px) scale(.82) rotate(-1deg);transform:translateY(22px) scale(.82) rotate(-1deg)}62%{opacity:1;-webkit-transform:translateY(-5px) scale(1.025) rotate(.4deg);transform:translateY(-5px) scale(1.025) rotate(.4deg)}to{opacity:1;-webkit-transform:translateY(0) scale(1) rotate(0);transform:translateY(0) scale(1) rotate(0)}}@keyframes winnerModalIn{0%{opacity:0;-webkit-transform:translateY(22px) scale(.82) rotate(-1deg);transform:translateY(22px) scale(.82) rotate(-1deg)}62%{opacity:1;-webkit-transform:translateY(-5px) scale(1.025) rotate(.4deg);transform:translateY(-5px) scale(1.025) rotate(.4deg)}to{opacity:1;-webkit-transform:translateY(0) scale(1) rotate(0);transform:translateY(0) scale(1) rotate(0)}}@-webkit-keyframes confettiBurst{0%{opacity:0;-webkit-transform:translate(-50%,-50%) scale(.3) rotate(0);transform:translate(-50%,-50%) scale(.3) rotate(0)}10%{opacity:1}45%{opacity:1;-webkit-transform:translate(calc(-50% + var(--confetti-mid-x)),calc(-50% + var(--confetti-burst-y))) scale(1) rotate(var(--confetti-mid-rotation));transform:translate(calc(-50% + var(--confetti-mid-x)),calc(-50% + var(--confetti-burst-y))) scale(1) rotate(var(--confetti-mid-rotation))}to{opacity:0;-webkit-transform:translate(calc(-50% + var(--confetti-x)),calc(-50% + var(--confetti-fall-y))) scale(.82) rotate(var(--confetti-rotation));transform:translate(calc(-50% + var(--confetti-x)),calc(-50% + var(--confetti-fall-y))) scale(.82) rotate(var(--confetti-rotation))}}@keyframes confettiBurst{0%{opacity:0;-webkit-transform:translate(-50%,-50%) scale(.3) rotate(0);transform:translate(-50%,-50%) scale(.3) rotate(0)}10%{opacity:1}45%{opacity:1;-webkit-transform:translate(calc(-50% + var(--confetti-mid-x)),calc(-50% + var(--confetti-burst-y))) scale(1) rotate(var(--confetti-mid-rotation));transform:translate(calc(-50% + var(--confetti-mid-x)),calc(-50% + var(--confetti-burst-y))) scale(1) rotate(var(--confetti-mid-rotation))}to{opacity:0;-webkit-transform:translate(calc(-50% + var(--confetti-x)),calc(-50% + var(--confetti-fall-y))) scale(.82) rotate(var(--confetti-rotation));transform:translate(calc(-50% + var(--confetti-x)),calc(-50% + var(--confetti-fall-y))) scale(.82) rotate(var(--confetti-rotation))}}@-webkit-keyframes waitingPulse{0%,to{opacity:.35;-webkit-transform:scale(.8);transform:scale(.8)}50%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes waitingPulse{0%,to{opacity:.35;-webkit-transform:scale(.8);transform:scale(.8)}50%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@media (max-width:760px){.app-header-inner{gap:8px;grid-template-columns:1fr auto;min-height:62px;width:min(100% - 24px,1120px);width:min(100% - 24px,var(--content-width))}.app-brand-name{display:none}.app-brand-mark,.theme-toggle{height:36px;width:36px}.app-nav{grid-column:1/-1;grid-row:1;justify-self:center}.app-brand{left:12px;position:absolute}.theme-toggle{position:absolute;right:12px}.app-nav-link{font-size:.63rem;min-height:32px;padding:0 10px}.hero-panel{border-radius:24px;gap:40px;grid-template-columns:1fr;min-height:0}.hero-board-preview{margin:0 auto;-webkit-transform:rotate(1deg);transform:rotate(1deg);width:min(340px,100%)}.join-room-panel{grid-template-columns:1fr}.room-lobby-heading{align-items:stretch;flex-direction:column}.room-code-badge{width:100%}.room-share-card,.step-grid{grid-template-columns:1fr}.info-card{min-height:0}.step-number{margin-bottom:24px}.game-heading{align-items:flex-start}.move-pill span{display:none}.move-pill{padding-right:6px}}@media (max-width:560px){.page-shell{padding-top:26px;width:min(100% - 24px,1120px);width:min(100% - 24px,var(--content-width))}.app-nav-link:nth-child(4){display:none}.hero-panel{border-radius:20px;padding:28px 20px}.hero-copy h1{font-size:clamp(2.4rem,13vw,3.45rem)}.form-actions .button,.hero-actions .button{width:100%}.join-room-panel{border-radius:20px;padding:22px 18px}.room-code-control,.room-share-card .copy-control{grid-template-columns:1fr}.room-code-control .button,.share-actions .button{width:100%}.room-page{width:calc(100% - 12px)}.room-setup-panel{border-radius:20px;padding:24px 18px}.winner-celebration{padding:14px}.winner-celebration-card{border-radius:22px;padding:30px 22px 24px}.winner-celebration-icon{border-radius:20px;font-size:1.7rem;height:62px;margin-bottom:18px;width:62px}.winner-celebration-card h2{font-size:clamp(3rem,18vw,4.4rem)}.player-list{grid-template-columns:1fr}.content-section{padding-top:62px}.game-page{padding-top:12px;width:calc(100% - 12px)}.game-panel{border-radius:20px;padding:14px}.game-heading{gap:12px;margin-bottom:17px}.game-heading h1{font-size:clamp(1.6rem,9vw,2.35rem)}.game-heading p{font-size:.68rem;line-height:1.5;max-width:230px}.bingo-grid{border-radius:15px}.bingo-square{border-radius:9px}.square-label{font-size:clamp(.47rem,2.4vw,.64rem);line-height:1.12}.bingo-square.has-long-label{padding:3px}.bingo-square.has-long-label .square-label{font-size:clamp(.42rem,2vw,.54rem);line-height:1.07}.bingo-square.has-extra-long-label .square-label{font-size:clamp(.4rem,1.95vw,.51rem);letter-spacing:-.03em;line-height:1.04}.square-check{bottom:3px;font-size:.5rem;height:15px;right:3px;width:15px}.winner-banner{padding:11px 12px}.winner-icon{height:34px;width:34px}.winner-banner strong{font-size:.9rem}.winner-banner small{font-size:.6rem}.board-note{font-size:.58rem}.game-actions .button{flex:1 1}.create-page{width:calc(100% - 24px)}.create-panel{border-radius:20px;padding:20px 16px}.share-panel{display:grid}.copy-control{grid-template-columns:1fr}.copy-control .button,.share-copy>.button{width:100%}.app-footer{align-items:flex-start;flex-direction:column;gap:8px}}@media (max-width:360px){.app-nav-link{padding:0 8px}.app-brand-mark,.theme-toggle{height:32px;width:32px}.bingo-grid{gap:4px;padding:5px}.game-panel{padding:10px}.square-label{font-size:.45rem}.bingo-square.has-long-label .square-label{font-size:.4rem}.bingo-square.has-extra-long-label .square-label{font-size:.39rem}}@media (prefers-reduced-motion:reduce){.confetti-field{display:none}*,:after,:before{-webkit-animation-duration:.01ms!important;animation-duration:.01ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
/*# sourceMappingURL=main.c0f4792d.css.map*/