.switcher{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.switcher .chip{white-space:nowrap;border-radius:999px;padding:8px 16px;flex:0 0 auto}.switcher .chip.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.board{display:grid;gap:6px;width:100%;aspect-ratio:1}.cell{padding:4px;border-radius:8px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;min-width:0;min-height:0;transition:background .12s,transform .08s}.cell:active{transform:scale(.96)}.cell .cell-text{line-height:1.1;max-width:100%;max-height:100%;overflow:hidden;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.cell.checked{background:var(--primary-dim);border-color:var(--primary);color:#fff}.cell.win{background:linear-gradient(135deg,var(--primary),var(--accent));border-color:var(--accent);color:#1a1830;font-weight:700}.cell.free{background:var(--surface-2);color:var(--text-dim);font-weight:700;letter-spacing:1px}.toast-stack{position:fixed;left:50%;bottom:24px;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:100;width:max-content;max-width:90vw}.toast{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 18px;box-shadow:0 6px 20px var(--shadow-color);animation:toast-in .2s ease;text-align:center}.toast.win{background:linear-gradient(135deg,var(--primary),var(--accent));color:#1a1830;font-weight:700;border:none}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}.theme-toggle{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;background:var(--surface)}.theme-toggle .seg{border:none;border-radius:0;background:transparent;padding:8px 14px;color:var(--text-dim)}.theme-toggle .seg:hover{color:var(--text)}.theme-toggle .seg.active{background:var(--primary);color:#fff;font-weight:600}.modal.settings{align-items:stretch}.modal.settings .setting{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.modal.settings .about{display:flex;flex-direction:column;gap:4px;font-size:13px;border-top:1px solid var(--border);padding-top:12px}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px;align-items:center;box-shadow:0 6px 20px var(--shadow-color)}.modal h2{margin:0;font-size:18px;align-self:flex-start}.modal button{width:100%}.modal .dim{align-self:flex-start}.qr-canvas{border-radius:8px;background:#fff;padding:8px}.qr-scan-region{width:100%;border-radius:8px;overflow:hidden}.qr-scan-region video{width:100%!important;display:block}:root{--bg: #0f0e1a;--surface: #1a1830;--surface-2: #242142;--border: #35315c;--text: #ece9ff;--text-dim: #a39fc9;--primary: #7c6cff;--primary-dim: #5b4fd6;--accent: #ffd166;--success: #3ddc97;--danger: #ff6b6b;--shadow-color: rgba(0, 0, 0, .35)}:root[data-theme=dark]{--bg: #0f0e1a;--surface: #1a1830;--surface-2: #242142;--border: #35315c;--text: #ece9ff;--text-dim: #a39fc9;--primary: #7c6cff;--primary-dim: #5b4fd6;--accent: #ffd166;--success: #3ddc97;--danger: #ff6b6b;--shadow-color: rgba(0, 0, 0, .35)}:root[data-theme=light]{--bg: #f4f2fb;--surface: #ffffff;--surface-2: #ece9f8;--border: #d5cff0;--text: #1c1830;--text-dim: #6b6590;--primary: #6a4bff;--primary-dim: #5b3fe0;--accent: #e0a800;--success: #1f9e6a;--danger: #d6483f;--shadow-color: rgba(60, 50, 110, .18)}:root[data-theme=system]{--bg: #0f0e1a;--surface: #1a1830;--surface-2: #242142;--border: #35315c;--text: #ece9ff;--text-dim: #a39fc9;--primary: #7c6cff;--primary-dim: #5b4fd6;--accent: #ffd166;--success: #3ddc97;--danger: #ff6b6b;--shadow-color: rgba(0, 0, 0, .35)}@media(prefers-color-scheme:light){:root[data-theme=system]{--bg: #f4f2fb;--surface: #ffffff;--surface-2: #ece9f8;--border: #d5cff0;--text: #1c1830;--text-dim: #6b6590;--primary: #6a4bff;--primary-dim: #5b3fe0;--accent: #e0a800;--success: #1f9e6a;--danger: #d6483f;--shadow-color: rgba(60, 50, 110, .18)}}*{box-sizing:border-box}html{color-scheme:dark light}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}#root{max-width:720px;margin:0 auto;display:flex;flex-direction:column}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);border-radius:8px;padding:10px 14px;transition:background .15s,border-color .15s}button:hover{border-color:var(--primary)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}button.primary:hover{background:var(--primary-dim)}button.ghost{background:transparent}button.danger{border-color:var(--danger);color:var(--danger)}input,textarea,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;width:100%}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary)}select{width:auto;cursor:pointer}textarea{resize:vertical;min-height:96px}a{color:var(--primary)}.app{flex:1;display:flex;flex-direction:column;min-height:100dvh}.topbar{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:10}.topbar h1{font-size:18px;margin:0;flex:1}.topbar .icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px;width:40px;height:40px;border-radius:999px;background:transparent;color:var(--text)}.topbar .icon-btn:hover{background:var(--surface-2);border-color:var(--border)}.content{flex:1;padding:16px;display:flex;flex-direction:column;gap:12px}.card-tile{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;box-shadow:0 6px 20px var(--shadow-color)}.row{display:flex;gap:12px;align-items:center}.spacer{flex:1}.dim{color:var(--text-dim);font-size:14px}.badge{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.badge.ok{color:var(--success);border-color:var(--success)}.badge.warn{color:var(--accent);border-color:var(--accent)}
