:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f5f3ed;background:#0c192b;font-synthesis:none;font-weight:400;--gold:#e9c878;--ivory:#f5f0e4;--muted:#a9b7cb;--line:#2b3b51;--panel:#122239}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid var(--line);border-radius:10px;background:#1b304c;color:#fff;padding:12px 18px;font-weight:650;min-height:44px}button:hover:not(:disabled){filter:brightness(1.12)}button:disabled{cursor:default;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-weight:400;line-height:1.12;font-size:clamp(30px,4vw,44px);margin-bottom:18px}h2{font-size:20px;letter-spacing:-.5px;margin-bottom:18px}h3{font-size:14px}p{line-height:1.65}small{display:block;font-size:12px;line-height:1.6}strong{font-weight:700}.app-shell{max-width:1440px;margin:auto;padding:0 40px}.topbar{display:flex;align-items:center;justify-content:space-between;height:100px;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;font-family:Georgia,serif;font-size:23px;letter-spacing:3px}.brand small{font-family:system-ui;font-size:9px;letter-spacing:3px;color:var(--gold);margin-top:3px}.brand-icon{display:grid;place-items:center;border:1px solid var(--gold);color:var(--gold);width:43px;height:43px;border-radius:50%;font-size:24px;letter-spacing:0}.quiet{background:none;border:0;color:var(--muted)}main{padding:40px 0 64px;min-height:75vh}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2.5px;color:var(--gold);margin-bottom:15px}.muted{color:var(--muted);font-size:14px}.fine{font-size:12px;color:var(--muted);line-height:1.7}.panel{border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:28px}.primary{background:var(--gold);color:#172132;border-color:var(--gold)}.wide{width:100%}.field{display:flex;flex-direction:column;gap:9px;margin:20px 0;font-size:13px;font-weight:650}.field input,.field select{width:100%;min-height:50px;border:1px solid #40536d;border-radius:8px;background:#0f1c30;color:#fff;padding:12px 14px;font-weight:400}.field input::placeholder{color:#8192a8}.code-input{text-transform:uppercase;letter-spacing:4px;font-size:20px}.tabs{display:flex;border-bottom:1px solid var(--line);margin:-4px 0 28px}.tabs button{border:0;background:none;color:var(--muted);border-radius:0;flex:1;padding:12px 4px}.tabs button.active{color:var(--gold);border-bottom:2px solid var(--gold)}.landing{display:grid;grid-template-columns:1fr 420px;gap:80px;max-width:1000px;margin:30px auto 40px;align-items:center}.welcome h1{font-size:clamp(44px,6vw,72px);margin-bottom:24px}.welcome h1 em{font-style:normal;color:var(--gold)}.welcome>p{max-width:350px;color:var(--muted)}.entry form>h2{font-size:24px}.entry form>.fine{margin:20px 0 0}.mini-card{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;background:var(--ivory);padding:20px;border-radius:16px;width:290px;transform:rotate(-5deg);margin:40px 0;color:#1b304c}.mini-card span{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;border:1px solid #d9d0bc;font-weight:800;font-size:21px}.mini-card .tapped{background:#294e68;color:#fff;box-shadow:inset 0 0 0 4px #f5f0e4,inset 0 0 0 5px #294e68}.admin-columns{display:grid;grid-template-columns:1fr 1fr;gap:28px;max-width:1000px}.page-heading{margin-bottom:30px}.room-row{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 0}.room-row small{color:var(--gold);letter-spacing:2px}.rules{border:0;padding:0;margin:24px 0}.rules legend{font-size:13px;margin-bottom:12px;font-weight:700}.pattern-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pattern-options label{display:flex;gap:8px;align-items:center;font-size:13px;padding:10px;background:#0f1c30;border:1px solid var(--line);border-radius:8px;cursor:pointer;min-height:44px}.pattern-options input{accent-color:var(--gold);width:18px;height:18px}.room-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.room-heading h1{margin-bottom:14px}.room-meta{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.room-code{font-size:10px;color:var(--muted);letter-spacing:1px}.room-code strong{margin-left:8px;color:var(--gold);font-size:14px;letter-spacing:2px}.live{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.live i{width:6px;height:6px;border-radius:50%;background:#b69656}.live .online{background:#93d4ac}.state-pill{padding:9px 14px;border:1px solid var(--line);border-radius:99px;font-size:11px;color:var(--muted);white-space:nowrap}.state-pill.playing{color:#93d4ac;border-color:#34554e}.state-pill.review{color:var(--gold);border-color:#6f6244}.game-layout{display:grid;grid-template-columns:235px minmax(320px,1fr) 290px;gap:28px;align-items:start}.ball-panel{text-align:center;padding:28px 20px}.ball{width:154px;height:154px;border-radius:50%;border:1px solid #63717f;background:radial-gradient(circle at 35% 30%,#fffdf5 0,#eee5cd 80%);color:#1a2940;margin:24px auto;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;box-shadow:0 10px 24px #0003}.ball span{font-family:Georgia,serif;font-size:22px;color:#91732e}.ball strong{font-size:62px;line-height:1.15;letter-spacing:-4px;font-weight:650}.draw-count{font-size:12px;color:var(--muted)}.draw-count strong{color:#fff}.ball-panel>.muted{margin:15px 0 26px;font-size:12px}.pattern-summary{border-top:1px solid var(--line);padding-top:24px;text-align:left}.pattern-summary span{display:block;font-size:9px;letter-spacing:2px;color:var(--muted);margin-bottom:10px}.pattern-summary strong{display:block;color:var(--gold);font-size:14px;line-height:1.5}.pattern-summary small{margin-top:8px;color:var(--muted);font-size:11px}.player-zone{max-width:490px;width:100%;margin:auto}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-heading h2{margin:0}.card-heading>span{color:var(--muted);font-size:12px}.card-tabs{display:flex;gap:8px;margin:20px 0 16px}.card-tabs button{flex:1;font-size:12px;padding:9px 2px;background:transparent;min-width:0}.card-tabs small{font-size:10px;font-weight:400;color:var(--muted)}.card-tabs button.active{background:#28364a;border-color:var(--gold);color:var(--gold)}.bingo-card{background:var(--ivory);border-radius:18px;padding:20px;color:#1b2c43;box-shadow:0 14px 35px #0003}.bingo-letters{display:grid;grid-template-columns:repeat(5,1fr);font-family:Georgia,serif;font-size:30px;text-align:center;padding-bottom:16px;color:#82631f}.number-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.cell{padding:0;aspect-ratio:1;min-height:0;border-radius:50%;border:1px solid #d0c6b1;color:#1d304b;background:#fffaf0;font-size:clamp(20px,2.5vw,32px);font-weight:750;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;box-shadow:0 2px 2px #47371c09}.cell:disabled{opacity:1}.cell:not(.marked):disabled{color:#314059}.cell.called{border:2px solid #9c7a33;background:#fffdf8}.cell.marked{background:#28516b;color:#fff;border-color:#28516b;box-shadow:inset 0 0 0 4px #f5f0e4,inset 0 0 0 5px #28516b}.cell.free{color:#816020;background:#e4d2a6;border-color:#c5a665;box-shadow:inset 0 0 0 4px #f5f0e4,inset 0 0 0 5px #c5a665}.cell.free span{line-height:1;font-size:24px}.cell.free small{font-size:7px;letter-spacing:1px;margin-top:4px}.cell:focus-visible{outline-color:#28516b;outline-offset:2px}.card-footer{display:flex;justify-content:space-between;margin-top:20px;padding-top:14px;border-top:1px solid #dcd2be;font-size:9px;letter-spacing:1.5px;color:#6e6d63}.card-footer span{letter-spacing:0}.mark-help{font-size:11px;text-align:center;line-height:1.5;color:var(--muted);margin:16px 0}.bingo-button{width:100%;background:var(--gold);border-color:var(--gold);color:#18283f;font-family:Georgia,serif;font-size:32px;letter-spacing:2px;border-radius:12px;padding:16px}.bingo-button small{font-family:system-ui;font-size:11px;font-weight:500;letter-spacing:.2px;margin-top:4px}.history{padding:22px}.section-heading{display:flex;justify-content:space-between;gap:8px;align-items:center}.section-heading h2{font-size:15px;margin:0}.section-heading>span{color:var(--muted);font-size:10px}.recent{display:flex;gap:5px;margin:16px 0;min-height:27px;flex-wrap:wrap}.recent>span{border:1px solid var(--line);padding:5px 6px;font-size:9px;border-radius:5px;color:var(--muted)}.recent>span.latest{background:var(--gold);border-color:var(--gold);color:#1b2c43}.history-grid{display:flex;gap:8px;justify-content:space-between}.history-column{display:flex;flex-direction:column;gap:5px;flex:1;align-items:center;min-width:0}.history-column>strong{font-family:Georgia,serif;font-size:20px;font-weight:400;color:var(--gold);margin:4px 0 7px}.history-column>span{display:grid;place-items:center;border-radius:50%;width:29px;height:29px;font-size:10px;color:#8294ad;border:1px solid #2b3c55}.history-column>.drawn{background:#3a536a;color:#fff;border-color:#52728a;font-weight:750}.history-column>.latest{background:var(--gold);color:#172132;border-color:var(--gold)}.table-info{padding:22px 4px}.table-info h3{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.table-info h3 span{color:var(--gold)}.table-info p{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.back{padding:0;background:none;border:0;font-size:12px;min-height:32px;margin-bottom:12px;color:var(--muted)}.host-controls{padding:26px}.draw-button{width:100%;text-align:left;padding:19px 16px;display:flex;justify-content:space-between}.host-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.host-actions button{flex:1;font-size:12px}.danger{color:#ffb9b9}.claim-list{margin-top:32px;padding-top:24px;border-top:1px solid var(--line)}.claim-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px}.claim-row small{color:var(--muted);font-size:10px}.claim-row button{font-size:11px;padding:8px 10px}.winner-badge{font-size:11px;color:#a4deb8}.review-banner{border:1px solid #6b5935;border-radius:12px;background:#302b24;padding:18px 24px;margin-bottom:28px;color:#f2dca8}.review-banner p{font-size:13px;margin:6px 0 0}.review-banner small{margin-top:8px}.alert{position:relative;padding:15px 40px 15px 18px;margin-bottom:22px;border:1px solid #5d526a;background:#222239;border-radius:10px;font-size:13px;line-height:1.6}.alert.error{border-color:#925554;background:#3b252c;color:#ffd6cf}.alert.success{border-color:#3d6d5e;background:#1d3934;color:#b7e9cd}.dismiss{position:absolute;right:3px;top:2px;background:none;border:0;padding:5px 10px;font-size:24px;min-height:40px}.alert button:not(.dismiss){font-size:11px;margin-left:8px}.empty{padding:60px 20px;text-align:center}.empty p{color:var(--muted)}footer{border-top:1px solid var(--line);padding:24px 0;color:#8193ac;font-size:10px;display:flex;justify-content:space-between;gap:12px}footer span{letter-spacing:2px;font-size:9px;color:var(--gold)}.modal-backdrop{position:fixed;inset:0;background:#040a14bf;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20}.modal{width:100%;max-width:460px}.modal p{color:var(--muted);font-size:14px}@media(min-width:1200px){.game-layout{gap:36px;grid-template-columns:240px minmax(350px,1fr) 305px}}@media(max-width:1050px){.app-shell{padding:0 24px}.game-layout{grid-template-columns:210px minmax(300px,1fr);gap:24px}.history-zone{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:24px}.history-column>span{width:33px;height:33px}.landing{gap:40px;grid-template-columns:1fr 380px}.history-grid{max-width:300px;margin:auto}.history-column{gap:6px}.table-info{padding:24px}}@media(max-width:720px){.app-shell{padding:0 16px}.topbar{height:78px}.brand{font-size:20px}.brand-icon{width:36px;height:36px;font-size:21px}.brand small{font-size:8px}main{padding:24px 0 40px}.landing{display:flex;flex-direction:column;gap:24px;margin:6px auto 10px}.welcome{width:100%}.welcome h1{font-size:42px;margin-bottom:16px}.welcome>p{max-width:none;font-size:13px}.welcome .eyebrow{font-size:8px}.mini-card,.welcome .fine{display:none}.entry{width:100%;max-width:460px}.panel{padding:22px}.room-heading{display:block;margin-bottom:22px}.room-heading h1{font-size:30px;margin-bottom:12px}.room-heading .eyebrow{font-size:8px;margin-bottom:8px}.room-meta{gap:12px}.state-pill{display:inline-block;margin-top:16px;font-size:10px}.game-layout{display:flex;flex-direction:column;gap:22px}.ball-panel{width:100%;display:grid;grid-template-columns:90px 1fr;gap:0 16px;text-align:left;padding:18px;position:relative}.ball-panel>.eyebrow{grid-column:2;grid-row:1;margin:0 0 5px;font-size:8px;padding-top:9px}.ball{grid-column:1;grid-row:1/5;width:82px;height:82px;margin:0;box-shadow:none}.ball span{font-size:14px}.ball strong{font-size:35px;letter-spacing:-1px}.draw-count{grid-column:2;grid-row:2;font-size:11px}.ball-panel>.muted{grid-column:2;grid-row:3;margin:7px 0 0;font-size:11px;line-height:1.4}.pattern-summary{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:5px 12px;align-items:center;margin-top:16px;padding-top:14px}.pattern-summary span{margin:0;font-size:8px}.pattern-summary strong{font-size:11px}.pattern-summary small{margin:0;font-size:10px;width:100%}.player-zone{max-width:460px}.card-tabs{margin-top:14px}.bingo-card{padding:16px;border-radius:16px}.bingo-letters{font-size:26px;padding-bottom:13px}.number-grid{gap:9px}.cell{font-size:clamp(21px,6vw,30px)}.cell.free span{font-size:22px}.cell.free small{font-size:7px}.card-footer{font-size:8px;margin-top:16px;padding-top:12px}.bingo-button{font-size:30px}.history-zone{display:block;width:100%}.history{width:100%}.history-grid{max-width:340px}.history-column>span{width:34px;height:34px;font-size:11px}.recent>span{font-size:10px}.table-info{padding:20px 4px 0}.host-zone{width:100%}.host-controls{padding:20px}.admin-columns{display:block}.admin-columns>.panel{margin-bottom:20px}.page-heading h1{font-size:32px}.review-banner{padding:16px;margin-bottom:22px}.review-banner p{font-size:12px}.pattern-options label{font-size:12px;padding:8px}.claim-row{gap:8px}.claim-row button{font-size:10px}footer{font-size:9px}footer span{font-size:8px}.host-actions{gap:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}.saved-room{border-bottom:1px solid var(--line)}.saved-room .room-row{width:100%;border-bottom:0}.delete-room{margin:0 0 1rem;font-size:.85rem}
