:root{--bg:#eef2f7;--surface:#fff;--border:#d7dee8;--text:#1e293b;--muted:#64748b;--primary:#4f46e5;--primary-2:#7c3aed;--primary-dark:#4338ca;--primary-soft:#e0e7ff;--danger:#dc2626;--danger-soft:#fee2e2;--success:#16a34a;--success-soft:#dcfce7;--easy:#16a34a;--easy-soft:#dcfce7;--medium:#d97706;--medium-soft:#fef3c7;--hard:#dc2626;--hard-soft:#fee2e2;--expert:#7c3aed;--expert-soft:#ede9fe;--board-line:#334155;--peer-bg:#eef1fb;--same-digit-bg:#dbe4ff;--chip-neutral-bg:#f1f5f9;--shadow:#0f172a14;--shadow-strong:#0f172a29;--overlay:#0f172a73;--radius-s:.65rem;--radius-m:1rem;--radius-l:1.4rem;--board-size:min(92vw, 500px)}:root[data-theme=dark]{--bg:#0f172a;--surface:#1e293b;--border:#38455a;--text:#e2e8f0;--muted:#94a3b8;--primary:#818cf8;--primary-2:#a78bfa;--primary-dark:#a5b4fc;--primary-soft:#33346b;--danger:#f87171;--danger-soft:#532a2f;--success:#4ade80;--success-soft:#1c3f2b;--easy:#4ade80;--easy-soft:#1c3f2b;--medium:#fbbf24;--medium-soft:#46340f;--hard:#f87171;--hard-soft:#532a2f;--expert:#a78bfa;--expert-soft:#3b2a63;--board-line:#94a3b8;--peer-bg:#263450;--same-digit-bg:#32436b;--chip-neutral-bg:#334155;--shadow:#00000059;--shadow-strong:#0000008c;--overlay:#020617a6}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);background-image:linear-gradient(180deg, color-mix(in srgb, var(--primary) 7%, var(--bg)), var(--bg) 22rem);color:var(--text);overscroll-behavior-y:contain;background-repeat:no-repeat;min-height:100dvh;margin:0;font-family:Segoe UI,system-ui,-apple-system,Arial,sans-serif;transition:background .2s,color .2s;overflow-x:hidden}button{font-family:inherit}button,a,.cell{touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where(button,a,input):focus-visible{outline:2px solid var(--primary);outline-offset:2px}::selection{background:var(--primary-soft)}.app-header{padding:max(.6rem, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) .6rem max(1.5rem, env(safe-area-inset-left));background:var(--surface);background:color-mix(in srgb, var(--surface) 82%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(14px);backdrop-filter:saturate(1.6)blur(14px);box-shadow:0 1px 0 var(--border), 0 1px 8px var(--shadow);z-index:10;justify-content:space-between;align-items:center;gap:.75rem;display:flex;position:sticky;top:0}.header-start{align-items:center;gap:1.25rem;display:flex}.app-title{letter-spacing:-.01em;color:var(--primary);white-space:nowrap;align-items:center;gap:.5rem;font-size:1.3rem;font-weight:800;text-decoration:none;display:flex}.app-logo{border-radius:8px;width:28px;height:28px;display:block}.nav-tabs{gap:.25rem;min-width:0;display:flex;overflow:hidden}.nav-tabs a{color:var(--muted);border-radius:999px;padding:.45rem .9rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.nav-tabs a:hover{background:var(--peer-bg);color:var(--text)}.nav-tabs a.active{background:var(--primary-soft);color:var(--primary)}.header-user{color:var(--muted);align-items:center;gap:.5rem;display:flex}.header-username{white-space:nowrap}.conn-pill{white-space:nowrap;border-radius:999px;align-items:center;gap:.3rem;padding:.32rem .6rem;font-size:.78rem;font-weight:700;line-height:1;display:inline-flex}.conn-pill-offline{background:var(--danger-soft);color:var(--danger)}.conn-pill-slow{background:var(--medium-soft);color:var(--medium)}.header-start{flex:auto;min-width:0}.app-title,.header-user{flex:none}.sync-badge{background:var(--primary-soft);color:var(--primary);white-space:nowrap;border-radius:999px;align-items:center;padding:.32rem .6rem;font-size:.78rem;font-weight:700;line-height:1;display:inline-flex}.sync-badge-count{display:none}.install-btn{align-items:center;gap:.35rem;padding:.45rem .55rem;font-size:.85rem;font-weight:700;display:inline-flex}@media (width<=1024px){.conn-pill-text,.install-text,.sync-badge-full{display:none}.sync-badge-count{display:inline}.conn-pill,.sync-badge{padding:.32rem .45rem}.nav-tabs,.header-username,.logout-text{display:none}.app-toast{bottom:calc(4.5rem + env(safe-area-inset-bottom))}.app-main:not(.app-main-game){padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}}.app-toast{inset-inline:0;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:60;border-radius:var(--radius-m);background:var(--surface);border:1px solid var(--border);width:fit-content;max-width:min(92vw,30rem);box-shadow:0 8px 28px var(--shadow-strong);align-items:center;gap:.75rem;margin-inline:auto;padding:.7rem 1rem;font-size:.9rem;animation:.3s banner-in;display:flex;position:fixed}.theme-toggle{align-items:center;padding:.45rem .55rem;font-size:1.15rem;display:inline-flex}.lang-toggle{align-items:center;gap:.35rem;min-width:2.4rem;padding:.45rem .55rem;font-size:.85rem;font-weight:700;display:inline-flex}.lang-flag{border:1px solid var(--border);border-radius:2px;display:block}.btn-logout{align-items:center;gap:.4rem;font-size:.95rem;display:inline-flex}.btn-logout svg{font-size:1.05rem}[dir=rtl] .btn-logout svg{transform:scaleX(-1)}.bottom-nav{bottom:0;z-index:20;background:var(--surface);background:color-mix(in srgb, var(--surface) 86%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(16px);backdrop-filter:saturate(1.6)blur(16px);border-top:1px solid var(--border);padding:.35rem max(.5rem, env(safe-area-inset-right)) calc(.35rem + env(safe-area-inset-bottom)) max(.5rem, env(safe-area-inset-left));display:none;position:fixed;inset-inline:0}@media (width<=1024px){.bottom-nav{display:flex}}.bottom-nav a{color:var(--muted);border-radius:var(--radius-s);flex-direction:column;flex:1;align-items:center;gap:.15rem;padding:.2rem 0;font-size:.7rem;font-weight:600;text-decoration:none;display:flex}.bottom-nav-icon{border-radius:999px;justify-content:center;align-items:center;width:3.4rem;height:1.9rem;font-size:1.3rem;transition:background .2s;display:flex}.bottom-nav a.active{color:var(--primary)}.bottom-nav a.active .bottom-nav-icon{background:var(--primary-soft)}.app-main{max-width:900px;margin:0 auto;padding:1.5rem 1rem 3rem}.page-loading{text-align:center;color:var(--muted);padding:4rem 0;font-size:1.1rem}.muted{color:var(--muted)}.btn{border-radius:var(--radius-s);cursor:pointer;border:none;padding:.55rem 1.1rem;font-size:.95rem;font-weight:600;transition:background .15s,transform 60ms,box-shadow .15s}.btn:disabled{opacity:.55;cursor:default}.btn:active:not(:disabled){transform:scale(.96)}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-2));color:var(--surface);box-shadow:0 2px 8px color-mix(in srgb, var(--primary) 35%, transparent)}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-ghost{color:var(--primary);background:0 0}.btn-ghost:hover{background:var(--primary-soft)}.btn-danger{color:var(--danger);border:1px solid var(--danger-soft);background:0 0}.btn-danger:hover{background:var(--danger-soft)}.chip{border-radius:999px;padding:.2rem .7rem;font-size:.85rem;font-weight:600;display:inline-block}.kind-chip{background:var(--chip-neutral-bg);color:var(--text);text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:14rem;overflow:hidden}.difficulty-easy{background:var(--easy-soft);color:var(--easy)}.difficulty-medium{background:var(--medium-soft);color:var(--medium)}.difficulty-hard{background:var(--hard-soft);color:var(--hard)}.difficulty-expert{background:var(--expert-soft);color:var(--expert)}.status-in_progress{background:var(--primary-soft);color:var(--primary)}.status-completed{background:var(--success-soft);color:var(--success)}.status-revealed{background:var(--chip-neutral-bg);color:var(--muted)}.status-failed{background:var(--danger-soft);color:var(--danger)}.solve-time-chip{background:var(--chip-neutral-bg);color:var(--muted)}.form-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-s);margin:.75rem 0;padding:.6rem .9rem}.auth-page{justify-content:center;padding-top:3rem;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-l);box-shadow:0 10px 32px var(--shadow);width:min(100%,380px);padding:2rem}.auth-offline{text-align:center;flex-direction:column;align-items:center;gap:.75rem;font-size:2rem;display:flex}.auth-offline h2,.auth-offline p{margin:0;font-size:1rem}.auth-offline h2{font-size:1.15rem}.auth-tabs{background:var(--chip-neutral-bg);border-radius:999px;gap:.35rem;margin-bottom:1.5rem;padding:.25rem;display:flex}.auth-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;padding:.55rem;font-size:1rem;font-weight:600;transition:background .15s,color .15s}.auth-tab.active{background:var(--surface);color:var(--primary);box-shadow:0 1px 4px var(--shadow)}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-form label{flex-direction:column;gap:.35rem;font-size:.95rem;font-weight:600;display:flex}.auth-form input,.share-form input{border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);color:var(--text);padding:.65rem .85rem;font-size:1rem}.auth-form input:focus,.share-form input:focus{outline:2px solid var(--primary);border-color:#0000}.auth-hint{color:var(--muted);margin:0;font-size:.85rem}.dashboard h2{margin:0}.section-head{justify-content:space-between;align-items:center;gap:.75rem;margin:1.5rem 0 .75rem;display:flex}.options-toggle{border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:.4rem .7rem;font-size:.85rem}.options-toggle.has-filters{background:var(--primary-soft);border-color:var(--primary)}.continue-card{border:1px solid var(--primary);border-radius:var(--radius-l);background:linear-gradient(135deg, var(--primary-soft), var(--surface) 70%);box-shadow:0 6px 20px var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:.5rem;padding:1.1rem 1.25rem;display:flex}.continue-main{align-items:center;gap:1rem;min-width:0;display:flex}.continue-text{flex-direction:column;gap:.45rem;min-width:0;display:flex}.continue-eyebrow{color:var(--text);font-size:1.05rem;font-weight:800}.continue-chips{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.btn-continue{border-radius:999px;padding:.75rem 1.75rem;font-size:1rem}.progress-ring{flex:none;transform:rotate(-90deg)}.progress-ring-track,.progress-ring-fill{fill:none;stroke-width:6px}.progress-ring-track{stroke:var(--border)}.progress-ring-fill{stroke:var(--primary);stroke-linecap:round;transition:stroke-dashoffset .4s}.progress-ring-text{transform-origin:32px 32px;fill:var(--text);font-size:.95rem;font-weight:800;transform:rotate(90deg)}.new-game-options{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;max-width:480px;margin-bottom:.9rem;display:flex}.game-option{flex-direction:column;gap:.3rem;display:flex}.game-option-label{color:var(--muted);font-size:.8rem;font-weight:600}.game-option input{border-radius:var(--radius-s);border:1px solid var(--border);background:var(--surface);width:4.5rem;color:var(--text);padding:.5rem .6rem;font-size:1rem}.new-game-buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;max-width:620px;display:grid}.btn-new-game{border-radius:var(--radius-m);border:2px solid #0000;padding:.9rem .5rem;font-size:1.02rem;font-weight:700}.btn-new-game.difficulty-easy:hover:not(:disabled){border-color:var(--easy)}.btn-new-game.difficulty-medium:hover:not(:disabled){border-color:var(--medium)}.btn-new-game.difficulty-hard:hover:not(:disabled){border-color:var(--hard)}.btn-new-game.difficulty-expert:hover:not(:disabled){border-color:var(--expert)}.game-tabs{background:var(--chip-neutral-bg);border-radius:999px;gap:.25rem;margin-bottom:1rem;padding:.25rem;display:flex}.game-tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.55rem .5rem;font-size:.95rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.game-tab.active{background:var(--surface);color:var(--primary);box-shadow:0 1px 4px var(--shadow)}.game-tab-count{background:var(--surface);font-variant-numeric:tabular-nums;border-radius:999px;padding:.05rem .45rem;font-size:.78rem;font-weight:700}.game-tab.active .game-tab-count{background:var(--primary-soft)}.game-filters{border:1px solid var(--border);border-radius:var(--radius-m);background:var(--surface);flex-wrap:wrap;align-items:flex-end;gap:.6rem .9rem;margin-bottom:1rem;padding:.85rem;animation:.2s banner-in;display:flex}.show-all{border:1px solid var(--border);border-radius:999px;margin:1rem auto 0;display:block}.game-filters select{border-radius:var(--radius-s);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.5rem .6rem;font-size:1rem}.filter-clear{padding-block:.5rem}.games-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:1rem;display:grid}.game-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m);box-shadow:0 2px 10px var(--shadow);flex-direction:column;gap:.6rem;padding:1rem;transition:box-shadow .15s,transform .15s;display:flex}@media (hover:hover){.game-card:hover{box-shadow:0 8px 24px var(--shadow-strong);transform:translateY(-2px)}}.game-card-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;display:flex}.game-card-date{color:var(--muted);font-size:.85rem}.progress-bar{background:var(--bg);border-radius:999px;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary), var(--primary-2));border-radius:999px;height:100%;transition:width .3s}.game-card-actions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.5rem;margin-top:.25rem;display:flex}.game-card-actions .btn-danger{margin-inline-start:auto}.daily-page{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.daily-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-l);box-shadow:0 10px 32px var(--shadow);text-align:center;flex-direction:column;align-items:center;gap:.75rem;width:min(100%,480px);padding:2rem;display:flex}.daily-card h2{margin:0}.daily-icon{font-size:2.5rem}.daily-date{color:var(--muted);font-size:1.15rem;font-weight:600}.daily-chips{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.btn-daily-play{border-radius:999px;padding:.85rem 2.5rem;font-size:1.1rem;font-weight:700}.daily-note{margin:0;font-size:.85rem}.daily-countdown{color:var(--primary);font-variant-numeric:tabular-nums;margin:0;font-weight:700}.solvers-section{width:min(100%,480px)}.solvers-section h3{margin:0 0 .75rem}.solvers-list{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.solver-chip{background:var(--success-soft);color:var(--success);border-radius:999px;padding:.25rem .8rem;font-size:.9rem;font-weight:600}.community-page h2{margin:.5rem 0 .25rem}.community-page>.muted{margin:0 0 1.25rem}.shared-name{text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem;font-weight:700;overflow:hidden}.solvers-inline{flex-wrap:wrap;gap:.35rem;font-size:.9rem;display:flex}.solvers-count{color:var(--success);font-weight:600}.solvers-names{color:var(--muted);overflow-wrap:anywhere}.modal-overlay{background:var(--overlay);z-index:50;justify-content:center;align-items:center;padding:1rem;animation:.2s fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-l);box-shadow:0 10px 40px var(--shadow-strong);width:min(100%,420px);padding:1.5rem}.modal h3{margin:0 0 .5rem}.modal .muted{margin:0 0 1rem}.share-form{flex-direction:column;gap:.75rem;display:flex}.modal-actions{justify-content:flex-start;gap:.5rem;display:flex}@keyframes fade-in{0%{opacity:0}}.game-page{flex-direction:column;align-items:center;gap:.9rem;display:flex}.game-topbar{width:var(--board-size);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.game-topbar .btn-ghost{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.4rem .9rem}.game-topbar-chips{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.banner{width:var(--board-size);text-align:center;border-radius:var(--radius-s);padding:.75rem;font-weight:700;animation:.3s banner-in}@keyframes banner-in{0%{opacity:0;transform:translateY(-6px)}}.banner-success{background:var(--success-soft);color:var(--success)}.banner-info{background:var(--primary-soft);color:var(--primary)}.banner-danger{background:var(--danger-soft);color:var(--danger)}.load-error{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 1rem;display:flex}.offline-banner{border-radius:var(--radius-s);background:var(--medium-soft);color:var(--medium);text-align:center;justify-content:center;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.7rem .9rem;font-size:.9rem;font-weight:600;display:flex}.game-stats{width:var(--board-size);gap:.5rem;display:flex}.stat{border-radius:var(--radius-s);font-variant-numeric:tabular-nums;background:var(--surface);border:1px solid var(--border);color:var(--text);flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .5rem;font-weight:700;display:flex}button.stat-pause{font:inherit;cursor:pointer}button.stat-pause:disabled{opacity:.5;cursor:default}button.stat-pause .stat-icon{color:var(--primary)}.stat-icon{color:var(--muted);font-size:1rem;display:flex}.stat-timer .stat-icon{color:var(--primary)}.stat-hints .stat-icon{color:var(--medium)}.stat-mistakes.has-mistakes{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.stat-mistakes.has-mistakes .stat-icon{color:var(--danger)}.board-area{width:var(--board-size);position:relative}.board-area.paused .board{filter:blur(9px);pointer-events:none}.board-pause-overlay{color:var(--text);background:color-mix(in srgb, var(--surface) 55%, transparent);border-radius:var(--radius-s);cursor:pointer;border:none;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:1.1rem;font-weight:700;display:flex;position:absolute;inset:0}.board-pause-icon{color:var(--primary);font-size:2.4rem;display:flex}.board{width:var(--board-size);aspect-ratio:1;border:2px solid var(--board-line);background:var(--surface);box-shadow:0 12px 32px var(--shadow);-webkit-user-select:none;user-select:none;border-radius:.75rem;grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);display:grid;overflow:hidden}.cell{border:none;border-inline-end:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);color:var(--primary);cursor:pointer;justify-content:center;align-items:center;padding:0;font-size:clamp(1.2rem,5.4vw,1.9rem);font-weight:600;transition:background .1s;display:flex;position:relative}.cell:nth-child(9n){border-inline-end:none}.cell:nth-child(n+73){border-bottom:none}.cell.thick-right{border-inline-end:2px solid var(--board-line)}.cell.thick-bottom{border-bottom:2px solid var(--board-line)}.cell.given{color:var(--text);font-weight:700}.cell.solved{color:var(--primary);font-weight:700}.cell.peer{background:var(--peer-bg)}.cell.same-digit{background:var(--same-digit-bg)}.cell.selected{background:var(--primary-soft);outline:2px solid var(--primary);outline-offset:-2px;z-index:1}.cell.error{color:var(--danger);background:var(--danger-soft)}.cell.hinted{z-index:2;animation:1.6s ease-out 2 hint-pulse}@keyframes hint-pulse{0%,to{box-shadow:inset 0 0 0 0 var(--medium)}35%{box-shadow:inset 0 0 0 3px var(--medium);background:var(--medium-soft)}}.hint-note{inset-inline:.5rem;z-index:3;text-align:start;border:1px solid var(--medium);border-radius:var(--radius-s);background:var(--medium-soft);color:var(--medium);font:inherit;cursor:pointer;box-shadow:0 6px 20px var(--shadow-strong);align-items:center;gap:.5rem;padding:.6rem .8rem;font-size:.85rem;font-weight:600;line-height:1.3;animation:.25s banner-in;display:flex;position:absolute;bottom:.5rem}.hint-note-icon{flex:none;font-size:1.1rem;display:flex}.cell.error.selected{outline-color:var(--danger)}.cell-notes{width:100%;height:100%;color:var(--muted);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-size:clamp(.42rem,1.6vw,.62rem);font-weight:500;line-height:1;display:grid}.cell-notes span{justify-content:center;align-items:center;display:flex}.controls{width:var(--board-size);flex-wrap:wrap;justify-content:center;gap:.4rem .25rem;display:flex}.ctrl{border-radius:var(--radius-s);min-width:3.1rem;color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:auto;align-items:center;gap:.3rem;padding:.25rem 0;display:flex}.ctrl:disabled{opacity:.4;cursor:default}.ctrl-icon{background:var(--surface);border:1px solid var(--border);width:2.6rem;height:2.6rem;box-shadow:0 1px 3px var(--shadow);border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;transition:background .15s,color .15s,border-color .15s,transform 60ms;display:flex;position:relative}@media (hover:hover){.ctrl:hover:not(:disabled){color:var(--primary)}.ctrl:hover:not(:disabled) .ctrl-icon{border-color:var(--primary);color:var(--primary)}}.ctrl:active:not(:disabled) .ctrl-icon{transform:scale(.92)}.ctrl.active{color:var(--primary)}.ctrl.active .ctrl-icon{background:var(--primary);border-color:var(--primary);color:var(--surface)}.ctrl-badge{top:-.25rem;background:var(--primary);min-width:1.05rem;height:1.05rem;color:var(--surface);border-radius:999px;justify-content:center;align-items:center;padding:0 .2rem;font-size:.62rem;font-weight:700;display:flex;position:absolute;inset-inline-end:-.25rem}.ctrl-label{white-space:nowrap;align-items:center;gap:.25rem;font-size:.7rem;font-weight:600;display:inline-flex}.ctrl-sheet{flex-direction:column;gap:.25rem;display:flex}.ctrl-sheet h3{margin:0 0 .5rem}.ctrl-sheet-item{border-radius:var(--radius-s);width:100%;color:var(--text);font:inherit;text-align:start;cursor:pointer;background:0 0;border:none;align-items:center;gap:.9rem;padding:.9rem .75rem;font-size:1rem;font-weight:600;display:flex}.ctrl-sheet-item:active:not(:disabled){background:var(--peer-bg)}.ctrl-sheet-item:disabled{opacity:.4;cursor:default}.ctrl-sheet-icon{color:var(--primary);flex:none;font-size:1.3rem;display:flex}.ctrl-key{color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.12rem .28rem;font-family:inherit;font-size:.6rem;font-weight:700;line-height:1;display:none}@media (hover:hover) and (pointer:fine){.ctrl-key{display:inline-block}}.spinner{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:1.1rem;height:1.1rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.photo-message{width:var(--board-size);border-radius:var(--radius-s);background:var(--medium-soft);color:var(--medium);flex-direction:column;gap:.5rem;margin:0;padding:.6rem .9rem;font-size:.9rem;display:flex}.photo-message p{margin:0}.btn-apply-recognized{align-self:flex-start}.number-pad{width:var(--board-size);grid-template-columns:repeat(9,1fr);display:grid}.pad-btn{cursor:pointer;background:0 0;border:none;padding:0 clamp(.13rem,.8vw,.3rem);display:flex}.pad-face{border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);min-height:3.8rem;color:var(--primary);box-shadow:0 1px 3px var(--shadow);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.1rem;padding:.35rem 0;transition:background .12s,transform 60ms;display:flex}@media (hover:hover){.pad-btn:hover:not(:disabled) .pad-face{background:var(--primary-soft)}}.pad-btn:active:not(:disabled) .pad-face{background:var(--primary-soft);transform:scale(.93)}.pad-btn:disabled{cursor:default}.pad-btn:disabled .pad-face{opacity:.5}.pad-btn.done{cursor:not-allowed}.pad-btn.done .pad-face{opacity:.3}.pad-digit{font-size:1.7rem;font-weight:700;line-height:1}.pad-count{min-height:.68rem;color:var(--muted);font-size:.68rem;font-weight:600;line-height:1}@media (width<=640px){:root{--board-size:min(100vw - 1.1rem, 500px)}.app-main-game{--game-chrome:calc(21.5rem + env(safe-area-inset-top) + env(safe-area-inset-bottom));--board-size:min(100vw - 1.1rem, max(15rem, min(100dvh - var(--game-chrome), 500px)))}.app-header{padding-inline:max(.9rem, env(safe-area-inset-left)) max(.9rem, env(safe-area-inset-right));gap:.5rem}.app-title-text{display:none}.new-game-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.continue-card{flex-direction:column;align-items:stretch;gap:.9rem}.btn-continue{width:100%}.game-tab{padding:.8rem .35rem;font-size:.88rem}.game-filters{gap:.5rem}.game-filters .game-option{flex:6.5rem}.game-filters select{width:100%}.app-main{padding:1rem .75rem calc(4.9rem + env(safe-area-inset-bottom))}.app-main-game{padding:.75rem .5rem calc(1.25rem + env(safe-area-inset-bottom))}.game-page{gap:.7rem}.game-topbar{flex-wrap:nowrap}.game-topbar .chip{flex:none;padding-inline:.55rem;font-size:.78rem}.game-topbar>.btn-ghost{flex:none}.game-topbar-chips{flex-wrap:nowrap;flex:0 auto;min-width:0}.game-topbar .kind-chip{flex:0 auto;min-width:2.5rem}.controls{flex-wrap:nowrap;gap:0}.ctrl{flex:1 1 0;min-width:0;padding-inline:.1rem}.ctrl-icon{aspect-ratio:1;width:min(3rem,100%);height:auto;font-size:1.4rem}.ctrl-label{font-size:clamp(.55rem,2.6vw,.75rem)}.pad-face{border-radius:.75rem;min-height:4.1rem}.pad-digit{font-size:1.85rem}.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:var(--radius-l) var(--radius-l) 0 0;width:100%;padding:1.5rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));animation:.25s sheet-up}.modal-actions .btn{flex:1;padding-block:.7rem}.auth-page{padding-top:1.5rem}.auth-card{padding:1.5rem}}@keyframes sheet-up{0%{opacity:.5;transform:translateY(35%)}}@media (width<=640px) and (height<=720px){.app-main-game{--game-chrome:calc(19.5rem + env(safe-area-inset-top) + env(safe-area-inset-bottom))}.game-page{gap:.45rem}.stat{padding-block:.3rem}.ctrl-icon{width:min(2.7rem,100%);font-size:1.25rem}.pad-face{min-height:3.6rem}}.clans-page h3,.clan-detail-page h3{margin:1.4rem 0 .6rem}.clan-create-form,.clan-invite-form{flex-wrap:wrap;gap:.6rem;max-width:480px;display:flex}.clan-create-form input,.clan-invite-form input{border-radius:var(--radius-s);border:1px solid var(--border);background:var(--surface);min-width:12rem;color:var(--text);flex:1;padding:.6rem .75rem;font-size:1rem}.invites-list{flex-direction:column;gap:.6rem;display:flex}.invite-card{border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;padding:.8rem 1rem;display:flex}.invite-actions{gap:.5rem;display:flex}.members-list,.pending-invites{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.pending-invites{margin-top:.7rem}.clan-detail-top{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.5rem;display:flex}.clan-detail-top h2{flex:1;margin:0}.clan-name{font-weight:700}.chip.clan-role-owner{background:var(--primary-soft);color:var(--primary)}.share-scope{flex-direction:column;gap:.3rem;display:flex}.share-scope select{border-radius:var(--radius-s);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.55rem .7rem;font-size:1rem}.stats-cards,.stats-best-times{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.75rem;display:grid}.stats-best-times{max-width:520px}.stats-card{border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);flex-direction:column;justify-content:center;align-items:center;gap:.35rem;padding:1.1rem .75rem;display:flex}.stats-card-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:800}.stats-card-label{color:var(--muted);text-align:center;font-size:.82rem;font-weight:600}
