:root{--bg: #0b6b3a;--bg-2: #0a5530;--panel: #fff8e1;--ink: #1a1208;--accent: #ffd400;--accent-2: #e63027;--accent-3: #1565c0;--marked: #ffd400;--shadow: 8px 8px 0 #000;--radius: 14px;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);background:repeating-linear-gradient(135deg,transparent 0 38px,rgba(255,255,255,.04) 38px 40px),linear-gradient(var(--bg),var(--bg-2))}body:before{content:"";position:fixed;inset:0 0 auto 0;height:14px;background:repeating-linear-gradient(90deg,var(--accent-2) 0 28px,var(--accent) 28px 56px,var(--accent-3) 56px 84px);z-index:10}.screen{max-width:540px;margin:0 auto;padding:28px 18px 40px}.brand{text-align:center;color:var(--panel);margin:24px 0}.brand h1{font-size:2.1rem;margin:0;text-shadow:3px 3px 0 #000}.brand__sub{margin:6px 0 0;letter-spacing:.12em;text-transform:uppercase;font-size:.78rem;opacity:.9}.join{display:flex;flex-direction:column;gap:16px}.join label{display:flex;flex-direction:column;gap:6px;color:var(--panel);font-weight:700;letter-spacing:.02em}.join input{padding:14px;font-size:1.4rem;text-align:center;letter-spacing:.3em;font-weight:700;text-transform:uppercase;border:4px solid #000;border-radius:var(--radius);background:var(--panel);color:var(--ink)}.btn{font:inherit;font-weight:800;cursor:pointer;padding:14px 18px;border:4px solid #000;border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .05s,box-shadow .05s}.btn:active{transform:translate(4px,4px);box-shadow:2px 2px #000}.btn--primary{background:var(--accent);color:#000;width:100%;font-size:1.2rem}.btn--ghost{background:var(--panel);color:var(--ink);padding:8px 12px;box-shadow:4px 4px #000}.btn--bingo{background:var(--accent-2);color:#fff;width:100%;font-size:1.6rem;letter-spacing:.1em;padding:20px}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:4px 4px #000}.topbar{display:flex;justify-content:space-between;align-items:center;background:var(--panel);border:4px solid #000;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;margin:18px 0}.topbar__name{font-weight:800;font-size:1.2rem}.topbar__room{font-size:.9rem;opacity:.75}.round{display:flex;flex-direction:column;gap:2px;color:var(--panel);text-align:center;margin:6px 0 16px;min-height:2.4em}.round__index{font-weight:800;font-size:1.1rem}.round__patterns{font-size:.86rem;opacity:.9}.card-host{display:flex;justify-content:center}.card{background:var(--panel);border:6px solid #000;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;width:100%;max-width:460px}.card__header,.card__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.card__header{margin-bottom:8px}.card__letter{text-align:center;font-weight:900;font-size:1.7rem;color:var(--accent-2);text-shadow:2px 2px 0 #000}.cell{font:inherit;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:800;cursor:pointer;border:3px solid #000;border-radius:10px;background:#fff;color:var(--ink);transition:transform .05s}.cell:active{transform:scale(.94)}.cell--marked{background:var(--marked);color:#000;box-shadow:inset 0 0 0 3px #000}.cell--free{background:var(--accent-3);color:#fff;font-size:1.8rem;cursor:default}.actions{margin-top:22px;display:flex;flex-direction:column;gap:10px}.msg{text-align:center;color:var(--panel);font-weight:700;min-height:1.4em;margin:4px 0}.card-host .msg{color:var(--panel)}.screen--wide{max-width:1100px}.topbar>div{display:flex;align-items:center;gap:12px}.panel-card{background:var(--panel);border:4px solid #000;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin:14px 0;color:var(--ink)}.panel-card h3{margin:0 0 10px;color:var(--accent-2)}.inline-form{display:flex;gap:10px;flex-wrap:wrap}.inline-form input{flex:1;min-width:200px}.panel-card input,.panel-card textarea{font:inherit;padding:10px 12px;border:3px solid #000;border-radius:10px;background:#fff;color:var(--ink)}.stack{display:flex;flex-direction:column;gap:10px;margin-top:12px}.rows{display:flex;flex-direction:column;gap:8px}.row{display:flex;justify-content:space-between;align-items:center;gap:10px;font:inherit;text-align:left;cursor:pointer;color:var(--ink);background:#fff;border:3px solid #000;border-radius:10px;padding:12px 14px}.row:hover{background:var(--accent)}.row__meta{font-size:.82rem;opacity:.7;text-transform:uppercase}.code{font-family:Courier New,monospace;font-weight:800;letter-spacing:.15em;background:var(--accent);padding:2px 8px;border-radius:6px;border:2px solid #000}.code--big{font-size:1.3rem}.room-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}.roster{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.roster__row{display:flex;justify-content:space-between;align-items:center;padding:6px 4px;border-bottom:1px dashed #0003}.checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px}.check{display:flex;align-items:center;gap:6px;font-weight:600}.caller{display:grid;grid-template-columns:2fr 1fr;gap:14px;align-items:start}@media(max-width:820px){.caller{grid-template-columns:1fr}}.caller__main{text-align:center}.ball{border:6px solid var(--accent);box-shadow:var(--shadow);border-radius:20px;background:var(--bg);color:#fff;padding:18px;margin:12px auto;max-width:360px}.ball__letter{font-size:2.6rem;font-weight:900;color:var(--accent)}.ball__number{font-size:5rem;font-weight:900;line-height:1}.counter{font-weight:700;margin:6px 0}.history{font-weight:700;opacity:.85;min-height:1.3em}.controls{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:12px 0}.controls .btn--bingo{width:auto;font-size:1.1rem;padding:12px 18px;background:var(--accent-2)}.board{display:grid;grid-template-columns:repeat(15,1fr);gap:3px;margin-top:12px}.bcell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;background:#fff;color:var(--ink);border:2px solid #000;border-radius:5px}.bcell--drawn{background:var(--accent);color:#000}.caller__claims h3{margin-top:0}.claim{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:8px 10px;border:3px solid #000;border-radius:8px;margin-bottom:6px;font-weight:700}.claim--valid{background:#d8f5d8}.claim--invalid{background:#f5dada}.claim__verdict{font-size:.85rem}.caller__claims .btn--primary{width:100%;margin-top:6px}.winner{text-align:center;font-weight:900;font-size:1.1rem;color:var(--accent-2);margin-top:12px;border:3px solid #000;border-radius:10px;padding:12px;background:var(--accent)}
