:root{--accent: #ff7a00;--mark: #3ccf6e;--free: #ffd24a;--panel-op: .9;--fs: 1;--ov-font: Georgia, "Times New Roman", serif;--bg: #14110f;--panel: #1e1915;--panel2: #281f18;--line: #3b2c1f;--text: #fff;--muted: #b9a89a;--ok: #3ccf6e;--bad: #ff4b3e;--ov-text: #ffffff;--ov-muted: #f4e5d6;--cd-bg-rgb: 20,14,9;--cd-border: #3b2c1f;--cd-bingo: #ff7a00;--cd-name: #ffffff;--cd-cell: #281f18;--cd-cellborder: #3b2c1f;--cd-celltext: #ffffff;--cd-mark: #3ccf6e;--cd-free: #ffd24a;--cd-occ: #ffd24a;--tm-bg-rgb: 20,14,9;--tm-border: #3b2c1f;--tm-text: #ffffff;--tm-bar: #ff7a00;--tm-occ: #3ccf6e;--tm-count: #ff7a00;--lb-bg-rgb: 20,14,9;--lb-border: #3b2c1f;--lb-text: #ffffff;--lb-title: #ffffff;--lb-top: #ff7a00;--lb-pts: #ff7a00;--lb-rank: #b9a89a;--alert: #ff7a00;--al-bg-rgb: 30,15,5;--al-head: #ffd24a;--al-name: #ffffff;--al-sub: #ffe4bd;--al-dim-rgb: 0,0,0;--al-toast: #3ccf6e;--al-c2: #ffd24a;--al-c3: #ffffff;--al-c4: #3ccf6e;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(1200px 600px at 50% -10%,#2c1a0b,var(--bg));color:var(--text);line-height:1.45}body.overlay{background:transparent!important;overflow:hidden;font-family:var(--ov-font);font-size:calc(18px * var(--fs))}h1,h2{margin:0 0 .5rem}h2{font-size:1.1rem;color:var(--accent)}h2 small{color:var(--muted);font-weight:400;margin-left:.5rem}h3,h4{margin:.4rem 0}a{color:var(--accent)}code{background:#0e0b09;padding:2px 6px;border-radius:4px;word-break:break-all}.muted{color:var(--muted);font-size:.92rem}.small{font-size:.82rem}.err{color:var(--bad)}.nowrap{white-space:nowrap}.center{min-height:100vh;display:grid;place-items:center}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.row.between{justify-content:space-between}.page{max-width:1180px;margin:0 auto;padding:16px}.hero{display:flex;align-items:center;gap:16px;padding:8px 4px 20px}.logo{font-size:3rem;filter:drop-shadow(0 0 14px var(--accent))}.brand{font-family:Georgia,Times New Roman,serif;letter-spacing:.04em;font-size:2rem;margin:0}.brand span{color:var(--accent);font-size:1.1rem;font-weight:400}.sub{margin:0;color:var(--muted)}.hero .pill{margin-left:auto}.cols{display:grid;grid-template-columns:minmax(0,700px) minmax(0,1fr);gap:20px;align-items:start}@media (max-width: 960px){.cols{grid-template-columns:1fr}}.stack{display:grid;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 10px 30px #00000059}.stack .panel{margin-bottom:0}.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.78rem;background:var(--panel2);border:1px solid var(--line)}.pill.ok{color:var(--ok);border-color:var(--ok)}.pill.bad{color:var(--bad);border-color:var(--bad)}.recent{list-style:none;padding:0;margin:0;display:grid;gap:6px}.recent li{display:flex;justify-content:space-between;gap:8px;font-size:.92rem}.recent span{color:var(--muted)}.loginbox{display:grid;gap:10px;justify-items:start;padding:12px 0}.mystats{display:flex;gap:18px;flex-wrap:wrap;margin:8px 0 12px;color:var(--muted)}.mystats b{color:var(--accent);font-size:1.3rem}.cheer{margin:0 0 14px;padding:14px 18px;border-radius:12px;text-align:center;font:900 1.6rem Georgia,serif;color:#1a0f05;background:linear-gradient(90deg,var(--accent),#ffd24a,var(--accent));animation:pop .5s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:none;opacity:1}}.winners{margin-top:14px;padding:12px;border:1px solid var(--accent);border-radius:10px;background:#ff7a0014}.bgrid{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:4px;container-type:inline-size;width:100%}.bcell{aspect-ratio:1;display:grid;place-items:center;padding:3px;text-align:center;color:var(--cell-text, var(--text));font:inherit;font-size:max(9px,calc(100cqw / var(--n) * .15));line-height:1.12;overflow:hidden;border-radius:8px;border:1px solid var(--cell-line, var(--line));background:var(--cell-bg, var(--panel2));cursor:default;-webkit-user-select:none;user-select:none}.bcell span{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;max-height:100%}button.bcell{cursor:pointer;transition:transform .1s,background .2s,border-color .2s}button.bcell:hover{border-color:var(--accent);transform:scale(1.03)}.bcell.occ{border-color:var(--occ, #ffd24a);box-shadow:inset 0 0 12px color-mix(in srgb,var(--occ, #ffd24a) 45%,transparent)}.bcell.on{background:color-mix(in srgb,var(--mark) 55%,#0e0b09);border-color:var(--mark);font-weight:700;animation:tick .3s ease-out}.bcell.free{background:color-mix(in srgb,var(--free) 35%,#0e0b09);border-color:var(--free);font-size:max(14px,calc(100cqw / var(--n) * .3))}.bcell.win{box-shadow:0 0 14px var(--accent),inset 0 0 10px var(--accent);border-color:var(--accent)}@keyframes tick{0%{transform:scale(.85)}to{transform:none}}.lb-row{display:grid;grid-template-columns:44px 1fr auto;gap:8px;align-items:center;padding:6px 12px;border-radius:10px}.lb-row.pub{padding:4px 6px;border-bottom:1px solid var(--line);border-radius:0}.lb-row.me{background:#ff7a001f}.lb-rank{text-align:center;color:var(--muted)}.lb-pts{color:var(--accent);font-weight:800}.ov-root{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.ov-pad{padding:24px}.ov-head{display:flex;align-items:baseline;gap:16px;margin-bottom:10px;text-shadow:0 2px 4px #000}.ov-title{font-weight:900;font-size:1.15em;letter-spacing:.1em;color:var(--ov-text);text-shadow:0 0 14px var(--accent),0 2px 4px #000}.ov-meta{color:var(--ov-muted);font-size:.85em}.ov-cards{display:grid;gap:14px;align-items:start;width:max-content;max-width:100%}.ov-card{--cell-bg: var(--cd-cell);--cell-line: var(--cd-cellborder);--cell-text: var(--cd-celltext);--mark: var(--cd-mark);--free: var(--cd-free);--occ: var(--cd-occ);--accent: var(--cd-bingo);padding:10px;border-radius:14px;border:2px solid var(--cd-border);background:rgba(var(--cd-bg-rgb),var(--panel-op));box-shadow:0 8px 26px #00000073}.ov-card.has-bingo{border-color:var(--cd-bingo);box-shadow:0 0 22px color-mix(in srgb,var(--cd-bingo) 60%,transparent)}.ov-card-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px;font-weight:800;color:var(--cd-name);text-shadow:0 2px 4px #000}.ov-badge{color:var(--cd-bingo);white-space:nowrap}.ov-terms{display:grid;gap:6px;width:min(920px,100%)}.ov-term{position:relative;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:7px 12px;border-radius:10px;overflow:hidden;border:1px solid var(--tm-border);color:var(--tm-text);background:rgba(var(--tm-bg-rgb),var(--panel-op));text-shadow:0 2px 4px #000}.ov-term i{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--tm-bar) 45%,transparent);transition:width .6s ease}.ov-term>*{position:relative}.ov-term.occurred{border-color:var(--tm-occ);background:color-mix(in srgb,var(--tm-occ) 22%,rgba(var(--tm-bg-rgb),var(--panel-op)))}.ov-term b{color:var(--tm-count)}.ov-list{width:min(620px,100%);display:grid;gap:4px}.ov-list .ov-title{color:var(--lb-title)}.lb-row.ov{background:rgba(var(--lb-bg-rgb),var(--panel-op));border:1px solid var(--lb-border);color:var(--lb-text);font-size:1.1em;text-shadow:0 2px 4px #000}.lb-row.ov.top{border-color:var(--lb-top)}.lb-row.ov .lb-rank{color:var(--lb-rank)}.lb-row.ov .lb-pts{color:var(--lb-pts)}.alert-root{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;font-family:var(--ov-font);font-size:calc(18px * var(--fs))}.audio-btn{pointer-events:auto;position:fixed;z-index:99999;left:18px;bottom:18px;padding:12px 18px;border:1px solid #ff9a32;border-radius:10px;background:#21160f;color:#fff;font:700 15px sans-serif;cursor:pointer}.bingo-alert{position:absolute;top:0;right:0;bottom:0;left:0;display:grid}.bingo-alert.banner{place-items:start center;padding-top:6vh}.bingo-alert.fullscreen{place-items:center;background:rgba(var(--al-dim-rgb),.6);animation:fadein .4s both}.ba-card{position:relative;z-index:2;text-align:center;padding:.8em 2.2em 1em;border-radius:28px;border:4px solid var(--alert, var(--accent));color:var(--al-name);background:rgba(var(--al-bg-rgb),.96);box-shadow:0 0 60px var(--alert, var(--accent));animation:goalPop .7s cubic-bezier(.18,1.35,.4,1) both}.fullscreen .ba-card{padding:1em 3em 1.2em}.ba-head{font:900 clamp(2.4em,6vw,5.5em)/1.05 var(--ov-font);color:var(--al-head);text-shadow:0 0 26px var(--alert, var(--accent)),0 4px 6px #000;letter-spacing:.06em}.fullscreen .ba-head{font-size:clamp(3em,9vw,9em)}.ba-name{color:var(--al-name);font-weight:900;font-size:clamp(1.8em,4vw,3.4em);text-shadow:0 3px 8px #000;overflow-wrap:anywhere}.ba-sub{color:var(--al-sub);font-size:1.3em;font-weight:700;margin-top:.2em}.ba-win{display:flex;gap:3em;justify-content:center;margin-top:1em;text-align:left;font-size:1.3em}.ba-win h4{color:var(--alert, var(--accent));letter-spacing:.08em;text-transform:uppercase;font-size:.8em}.ba-win p{margin:.2em 0;font-weight:800}.confetti{position:absolute;top:-20px;width:10px;height:18px;border-radius:2px;opacity:.95;animation:fall linear infinite;z-index:1}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes goalPop{0%{opacity:0;transform:translateY(70px) scale(.7);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}.term-toast{position:absolute;left:24px;bottom:24px;padding:.6em 1.2em;border-radius:12px;border:2px solid var(--al-toast);background:rgba(var(--al-bg-rgb),.95);color:var(--al-name);font-weight:700;animation:goalPop .5s both}@media (prefers-reduced-motion: reduce){.confetti,.ba-card,.bcell.on{animation:none}}.admin{display:grid;grid-template-columns:240px 1fr;min-height:100vh}@media (max-width: 860px){.admin{grid-template-columns:1fr}.side{position:static!important;height:auto!important}.side nav{flex-direction:row!important;flex-wrap:wrap}}.side{background:#0f0c0a;border-right:1px solid var(--line);padding:16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:16px}.brand-s{font:900 1.2rem Georgia,serif;color:var(--accent)}.side nav{display:flex;flex-direction:column;gap:4px}.side nav button{text-align:left;background:none;border:0;color:var(--text);padding:8px 10px;border-radius:8px;cursor:pointer;font:inherit}.side nav button:hover{background:var(--panel2)}.side nav button.on{background:var(--accent);color:#1a0f05;font-weight:800}.side-foot{margin-top:auto;display:grid;gap:8px}.adm-main{padding:20px;min-width:0}.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px}.two>.panel{margin-bottom:0}input,select,textarea{background:#0e0b09;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit;max-width:100%}input:focus,select:focus,textarea:focus,button:focus-visible,a.btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}input[type=color]{padding:2px;height:34px;width:70px}textarea{width:100%;resize:vertical;margin-bottom:8px}.btn{display:inline-block;background:var(--panel2);color:var(--text);border:1px solid var(--line);padding:8px 14px;border-radius:8px;cursor:pointer;font:inherit;text-decoration:none}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);color:#1a0f05;border-color:var(--accent);font-weight:800}.btn.danger{color:var(--bad)}.btn.big{padding:14px 22px;font-size:1.1rem}.btn.sm{padding:4px 9px;font-size:.82rem;margin:2px}.scroll{overflow:auto;border-radius:10px}table.t{width:100%;border-collapse:collapse;font-size:.92rem}table.t th{text-align:left;color:var(--muted);font-weight:600;padding:6px;border-bottom:1px solid var(--line)}table.t td{padding:5px 6px;border-bottom:1px solid rgba(255,255,255,.05);vertical-align:middle}table.t td input:not([type=checkbox]){width:100%;min-width:160px}table.t tr.off{opacity:.5}tr.sel td{background:#3ccf6e1a}.num{text-align:right;font-weight:700}.form{display:grid;gap:10px;margin-bottom:12px}.frow{display:grid;grid-template-columns:minmax(220px,1fr) minmax(160px,300px);gap:10px;align-items:center}.frow input:not([type=checkbox]):not([type=color]),.frow select{width:100%}.testtag{margin-left:8px;font-size:.65rem;padding:1px 6px;border-radius:4px;background:#fff;color:#000}.savebar{position:sticky;bottom:0;padding:12px 0;background:linear-gradient(transparent,var(--bg) 40%);margin-bottom:16px}.login{width:min(380px,92vw);display:grid;gap:12px;text-align:center}.toast{position:fixed;right:20px;bottom:20px;background:var(--ok);color:#04210f;padding:10px 16px;border-radius:10px;font-weight:700;box-shadow:0 6px 24px #00000080;z-index:50;max-width:420px}.toast.bad{background:var(--bad);color:#fff}
