.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;background:color-mix(in srgb,var(--chip) 14%,var(--surface-2));border-color:color-mix(in srgb,var(--chip) 38%,var(--border))}.switcher .chip:hover{border-color:var(--chip)}.switcher .chip.active{background:var(--chip);border-color:var(--chip);color:#fff;font-weight:600}.cell-magnifier{position:fixed;z-index:9000;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;max-width:min(78vw,22rem);padding:12px 16px;border-radius:12px;background:var(--surface-2);border:1px solid var(--primary);box-shadow:0 6px 20px var(--shadow-color);display:flex;align-items:center;gap:10px;font-size:1.25rem;font-weight:600;line-height:1.35;text-align:center;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;animation:cell-magnifier-in .12s ease-out}.cell-magnifier-text{min-width:0}.cell-magnifier-check{flex:0 0 auto;width:18px;height:18px;border-radius:50%;background:var(--primary);position:relative}.cell-magnifier-check:after{content:"";position:absolute;left:6px;top:2px;width:4px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}@keyframes cell-magnifier-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.cell-magnifier{animation:none}}.board-swipe{overflow:hidden;touch-action:pan-y}.board.magnifying{touch-action:none}.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;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;min-width:0;min-height:0;transition:background .12s,transform .08s}.cell:active{transform:scale(.96)}.cell .cell-text{line-height:1.25;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}.cell.free .cell-text{word-break:normal;overflow-wrap:normal;-webkit-hyphens:none;hyphens:none}.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:calc(24px + max(env(safe-area-inset-bottom),var(--native-inset-bottom, 0px)));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)}}.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:10px;align-items:center;box-shadow:0 6px 20px var(--shadow-color);max-height:calc(100dvh - 32px - max(env(safe-area-inset-top),var(--native-inset-top, 0px)) - max(env(safe-area-inset-bottom),var(--native-inset-bottom, 0px)));overflow-y:auto;overscroll-behavior:contain}.modal h2{margin:0;font-size:18px;align-self:flex-start}.modal button{width:100%}.modal .dim{align-self:flex-start}.modal.confirm{gap:16px;max-width:320px}.modal.confirm .confirm-message{margin:0;align-self:flex-start;line-height:1.4}.modal.confirm .confirm-actions{display:flex;gap:10px;width:100%}.modal.confirm .confirm-actions button{flex:1 1 0;width:auto}.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}.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:6px;flex-wrap:wrap}.modal.settings .setting .row{align-items:stretch;flex:1 1 100%;flex-wrap:wrap}.modal.settings .setting .row>button{flex:1 1 0;min-width:0}.modal.settings .setting .row>.dim{flex:1 1 100%;min-width:0}.modal.settings .about{display:flex;flex-direction:column;gap:2px;font-size:13px;border-top:1px solid var(--border);padding-top:8px}.modal.settings .about a{color:var(--primary);text-decoration:underline;padding:2px 0}: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,a.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;font-weight:600;line-height:1.2;display:inline-flex;align-items:center;justify-content:center;text-align:center}button:hover,a.button:hover{border-color:var(--primary)}button:disabled,a.button:disabled{opacity:.45;cursor:not-allowed}a.button{text-decoration:none}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}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:calc(14px + max(env(safe-area-inset-top),var(--native-inset-top, 0px))) calc(16px + max(env(safe-area-inset-right),var(--native-inset-right, 0px))) 14px calc(16px + max(env(safe-area-inset-left),var(--native-inset-left, 0px)));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 calc(16px + max(env(safe-area-inset-right),var(--native-inset-right, 0px))) calc(16px + max(env(safe-area-inset-bottom),var(--native-inset-bottom, 0px))) calc(16px + max(env(safe-area-inset-left),var(--native-inset-left, 0px)));display:flex;flex-direction:column;gap:12px}.board-accent{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}.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)}.board-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 35%,var(--border));color:var(--text);font-size:1rem;line-height:1.35;text-align:center}.board-hint-icon{flex:0 0 auto;font-size:1.25rem;line-height:1}.manage-hint{text-align:center;margin:-4px 0 0;font-size:.85rem}.scan-row{display:flex;justify-content:center}.scan-btn{gap:8px}.share-url{font-size:.8rem;word-break:break-all;text-align:center}.policy h3{margin:1.2rem 0 .2rem;font-size:1rem}.policy p{margin:.2rem 0}.toggle{flex:1;border-color:var(--border)}.toggle.active{background:var(--primary);border-color:var(--primary);color:#fff}.share-targets{width:100%}.share-url a{color:var(--primary)}.qr-split-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
