.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-swipe{overflow:hidden;touch-action:pan-y}.board{display:grid;gap:6px;width:100%;aspect-ratio:1;min-height:0}.board.shake{animation:board-shake .5s cubic-bezier(.36,.07,.19,.97) both}.board.slide-next{animation:board-slide-next .22s ease-out both}.board.slide-prev{animation:board-slide-prev .22s ease-out both}@keyframes board-slide-next{0%{transform:translate(100%);opacity:.4}to{transform:translate(0);opacity:1}}@keyframes board-slide-prev{0%{transform:translate(-100%);opacity:.4}to{transform:translate(0);opacity:1}}@keyframes board-shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}@keyframes cell-win-pulse{0%,to{transform:scale(1);box-shadow:0 0 #a855f700}50%{transform:scale(1.06);box-shadow:0 0 16px #a855f7b3}}.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;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(150deg,#fff4b8 0%,#ffd76a 42%,var(--accent) 100%);border-color:#ffcf4d;color:#1a1830;font-weight:800;box-shadow:0 0 14px #ffc83c8c,inset 0 1px 2px #fff9,inset 0 -2px 6px #965a0040}.cell.free{background:var(--surface-2);color:var(--text-dim);font-weight:700;letter-spacing:1px}.board.celebrate .cell.pulse{animation:cell-win-pulse .6s ease-in-out 3}@media(prefers-reduced-motion:reduce){.board.shake,.board.slide-next,.board.slide-prev,.board.celebrate .cell.pulse{animation:none}}.win-banner{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;pointer-events:auto;background:radial-gradient(circle at center,#00000059,#0000 70%);animation:win-backdrop .4s ease-out both}.win-banner__text{font-size:clamp(2.5rem,14vw,7rem);font-weight:900;letter-spacing:.02em;text-align:center;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.5),0 0 30px rgba(168,85,247,.5);animation:win-pop .5s cubic-bezier(.2,1.4,.4,1) both,win-wobble .5s ease-in-out .5s 2}.win-banner__text.big{color:gold;text-shadow:0 2px 12px rgba(0,0,0,.5),0 0 40px rgba(255,215,0,.6);animation:win-pop .5s cubic-bezier(.2,1.4,.4,1) both,win-wobble .5s ease-in-out .5s 2,win-shimmer 1.6s ease-in-out .5s infinite}@keyframes win-backdrop{0%{opacity:0}to{opacity:1}}@keyframes win-pop{0%{transform:scale(.3) rotate(-6deg);opacity:0}60%{transform:scale(1.12) rotate(2deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes win-wobble{0%,to{transform:translate(0) rotate(0)}20%{transform:translate(-10px) rotate(-2deg)}40%{transform:translate(9px) rotate(2deg)}60%{transform:translate(-6px) rotate(-1deg)}80%{transform:translate(4px) rotate(1deg)}}@keyframes win-shimmer{0%,to{filter:brightness(1)}50%{filter:brightness(1.35)}}@media(prefers-reduced-motion:reduce){.win-banner,.win-banner__text{animation-duration:.01ms;animation-iteration-count:1}}.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-pager{display:flex;align-items:center;justify-content:center;gap:12px}.qr-pager button{width:44px;height:44px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:0}.qr-pager button svg{width:20px;height:20px}.qr-pager button.hidden{visibility:hidden}.qr-pager .qr-page{min-width:6ch;text-align:center;font-variant-numeric:tabular-nums}.qr-dots{display:flex;justify-content:center;gap:6px}.qr-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--primary-dim);opacity:.4}.qr-dots .dot.active{opacity:1;background:var(--primary)}.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,PingFang SC,Hiragino Sans,Hiragino Kaku Gothic ProN,Microsoft YaHei,Noto Sans CJK SC,Noto Sans SC,Noto Sans JP,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}.joker-toggle{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}.joker-toggle input:disabled{cursor:not-allowed}.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)}.accent-row{flex-wrap:wrap}.accent-swatch{width:26px;height:26px;padding:0;border-radius:50%;border:2px solid var(--border);cursor:pointer}.accent-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--primary)}
