:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.container{--text-muted: rgba(255, 255, 255, .72);--text-muted2: rgba(255, 255, 255, .6);--card-bg: rgba(255, 255, 255, .06);--card-border: rgba(255, 255, 255, .12);--card-shadow: 0 10px 30px rgba(0, 0, 0, .28);--input-bg: rgba(0, 0, 0, .25);--input-border: rgba(255, 255, 255, .16);--btn-bg: rgba(255, 255, 255, .12);--btn-border: rgba(255, 255, 255, .18);--btn-secondary-bg: rgba(255, 255, 255, .06);--btn-shadow: 0 8px 18px rgba(0, 0, 0, .25);--bg0: #070a13;--bg1: rgba(35, 120, 255, .18);--bg2: rgba(140, 60, 255, .14);--danger: rgba(255, 105, 105, .95);--danger-soft: rgba(255, 105, 105, .12);--danger-border: rgba(255, 105, 105, .35);--focus-ring: rgba(127, 211, 255, .75)}@media(prefers-color-scheme:light){.container{--text-muted: rgba(0, 0, 0, .65);--text-muted2: rgba(0, 0, 0, .55);--card-bg: rgba(0, 0, 0, .04);--card-border: rgba(0, 0, 0, .12);--card-shadow: 0 14px 40px rgba(0, 0, 0, .12);--input-bg: rgba(0, 0, 0, .04);--input-border: rgba(0, 0, 0, .18);--btn-bg: rgba(0, 0, 0, .06);--btn-border: rgba(0, 0, 0, .22);--btn-secondary-bg: rgba(0, 0, 0, .03);--btn-shadow: 0 10px 20px rgba(0, 0, 0, .12);--bg0: #f7f8ff;--bg1: rgba(35, 120, 255, .14);--bg2: rgba(255, 98, 0, .12);--focus-ring: rgba(0, 106, 255, .6)}}.container{max-width:1100px;margin:0 auto;padding:24px;min-height:100vh;background:radial-gradient(900px 420px at 12% -10%,var(--bg1),transparent 60%),radial-gradient(760px 380px at 88% 0%,var(--bg2),transparent 55%),linear-gradient(180deg,var(--bg0),rgba(0,0,0,0) 55%)}.header{margin-bottom:16px}.subtitle{margin-top:6px;color:var(--text-muted)}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:16px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--card-shadow)}.row{display:grid;gap:6px;margin-bottom:12px}label{display:grid;gap:6px;font-size:14px}input{height:40px;border-radius:10px;border:1px solid var(--input-border);background:var(--input-bg);padding:0 12px;color:inherit;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}input:hover{border-color:color-mix(in oklab,var(--input-border) 65%,white 35%)}input:focus,input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.actions{display:flex;gap:10px;align-items:center;margin:10px 0}button{border-radius:10px;border:1px solid var(--btn-border);padding:10px 14px;background:var(--btn-bg);color:inherit;cursor:pointer;transition:transform .11s ease,box-shadow .11s ease,background .11s ease,border-color .11s ease;box-shadow:none}button:hover{transform:translateY(-1px);box-shadow:var(--btn-shadow);border-color:color-mix(in oklab,var(--btn-border) 55%,white 45%)}button:active{transform:translateY(0) scale(.99);box-shadow:none}button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}button:focus,button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}button.secondary{background:var(--btn-secondary-bg)}button.secondary.danger{border-color:var(--danger-border);background:color-mix(in oklab,var(--danger-soft) 80%,var(--btn-secondary-bg) 20%);color:var(--danger)}button.secondary.danger:hover{border-color:color-mix(in oklab,var(--danger-border) 65%,var(--danger) 35%);background:color-mix(in oklab,var(--danger-soft) 90%,white 10%)}.hint{color:var(--text-muted);margin-top:12px}.error{margin:12px 0;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,120,120,.35);background:#ff78781f}.toast{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:10000;padding:10px 14px;border-radius:999px;border:1px solid rgba(127,211,255,.35);background:radial-gradient(420px 120px at 20% 0%,rgba(127,211,255,.25),transparent 60%),#0000008c;color:#ffffffeb;box-shadow:0 16px 34px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);max-width:min(720px,calc(100vw - 32px));text-align:center;font-weight:650;letter-spacing:.01em;animation:toastIn .16s ease-out}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(6px) scale(.99)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@media(prefers-color-scheme:light){.toast{background:radial-gradient(420px 120px at 20% 0%,rgba(35,120,255,.18),transparent 60%),#ffffffdb;color:#000000e0;border-color:#2378ff40}}.grid{margin-top:12px}.gameHeader{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.right{display:flex;justify-content:flex-end}.label{font-size:12px;color:var(--text-muted2)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:inherit}h2{margin:16px 0 10px;font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.codeForm{display:flex;gap:10px;margin:12px 0 18px}.codeForm input{width:130px}.ocrRow{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:start;margin-bottom:12px}.ocrLeft{display:grid;gap:6px}.ocrUpload input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ocrButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;border:1px dashed var(--btn-border);padding:10px 14px;background:color-mix(in oklab,var(--btn-bg) 75%,transparent);cursor:pointer;-webkit-user-select:none;user-select:none}.ocrUpload input:focus-visible+.ocrButton{outline:3px solid var(--focus-ring);outline-offset:2px}.ocrHint{color:var(--text-muted2);font-size:13px}.ocrProgress{color:var(--text-muted);font-size:13px}.ocrPreview{border-radius:12px;border:1px solid var(--card-border);background:#ffffff0a;padding:6px;width:140px}.ocrPreview img{display:block;width:100%;height:auto;border-radius:10px}.twoCols{display:grid;grid-template-columns:1fr 1fr;gap:18px}.statsRow{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;margin:8px 0 14px}.progressBar{height:10px;border-radius:999px;margin-top:8px;border:1px solid var(--card-border);background:#ffffff0f;overflow:hidden}.progressBarFill{height:100%;border-radius:999px;background:linear-gradient(90deg,#7fd3ffd9,#78ffaad9);box-shadow:0 0 14px #7fd3ff40;transition:width .35s ease}@media(prefers-color-scheme:light){.progressBar{background:#00000008}}.statRight{display:flex;justify-content:flex-end}.toggle{display:flex;align-items:center;gap:8px;font-size:14px}.toggle input{width:16px;height:16px}@media(max-width:900px){.twoCols,.gameHeader,.statsRow{grid-template-columns:1fr}.statRight{justify-content:flex-start}.bingoGrid{gap:6px}.bingoCell{letter-spacing:.04em}.ocrRow{grid-template-columns:1fr}.ocrPreview{width:min(220px,100%)}}@media(max-width:520px){.container{padding:14px}.card{padding:12px}.bingoGrid{gap:4px}.bingoCell{border-radius:9px}}.pillList{display:flex;flex-wrap:wrap;gap:8px}.pill{padding:6px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:#ffffff14;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px}@media(prefers-color-scheme:light){.pill{border-color:#0000001f;background:#00000008}}.muted{color:var(--text-muted2)}.bingoGrid{display:grid;gap:8px;width:100%;max-width:100%}.bingoCell{display:grid;place-items:center;aspect-ratio:1 / 1;height:auto;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:#ffffff0f;font-weight:600;letter-spacing:.06em;font-size:clamp(10px,1.2vw,13px);line-height:1}@media(max-width:900px){.bingoCell{border-radius:10px;font-size:clamp(10px,2.6vw,12px)}}.bingoCell.marked{background:#78ffaa29;border-color:#78ffaa59}.bingoCell.recent{box-shadow:0 0 0 2px #7fd3ff59 inset;border-color:#7fd3ff73;animation:recentPulse .9s ease-out 1}@keyframes recentPulse{0%{transform:translateY(0) scale(1);box-shadow:0 0 0 3px #7fd3ffe6 inset,0 0 #7fd3ff00}60%{transform:translateY(-1px) scale(1.02);box-shadow:0 0 0 3px #7fd3ff8c inset,0 16px 28px #0000002e}to{transform:translateY(0) scale(1);box-shadow:0 0 0 2px #7fd3ff59 inset}}.bingoCell.hidden{opacity:0}.footer{margin-top:18px}.teamBingo{margin:12px 0 4px;border-radius:14px;padding:14px;border:1px solid rgba(120,255,170,.35);background:radial-gradient(420px 200px at 15% 0%,rgba(120,255,170,.22),transparent 60%),radial-gradient(420px 200px at 85% 0%,rgba(127,211,255,.18),transparent 60%),#78ffaa1a;box-shadow:0 12px 26px #0000002e}.teamBingo.sticky{position:sticky;top:12px;z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.teamBingoTopRow{display:flex;align-items:center;justify-content:space-between;gap:12px}.teamBingoTitle{font-weight:800;letter-spacing:.08em}.teamBingoBody{margin-top:6px;color:inherit}.teamBingoMeta{margin-top:6px;color:var(--text-muted);font-size:14px}a:focus,a:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:6px}
