:root,[data-theme=dark]{--color-bg: #0b0d10;--color-space: #05070c;--color-surface: #101317;--color-surface-2: #14181d;--color-surface-offset: #181d23;--color-surface-offset-2: #1c232b;--color-control: #1a2228;--color-divider: color-mix(in srgb, var(--color-hud-line) 18%, transparent);--color-border: color-mix(in srgb, var(--color-hud-line) 32%, transparent);--color-hud-line: #9ec9d4;--color-text: #dce8ec;--color-text-muted: #8aa4ad;--color-text-faint: #5a717a;--color-text-inverse: #0b0d10;--color-primary: #5dc1d3;--color-primary-hover: #7ad4e3;--color-primary-active: #4eafc0;--color-primary-highlight: color-mix(in srgb, #5dc1d3 14%, transparent);--color-accent: #eb8f34;--color-accent-hover: #f3a24e;--color-accent-text: #140e08;--color-success: #5dc1d3;--color-success-highlight: color-mix(in srgb, #5dc1d3 14%, transparent);--color-error: #e07050;--color-error-highlight: color-mix(in srgb, #e07050 16%, transparent);--color-warning: #eb8f34;--color-warning-highlight: color-mix(in srgb, #eb8f34 16%, transparent);--radius-sm: 0;--radius-md: 0;--radius-lg: 0;--radius-xl: 0;--radius-full: 0;--transition-interactive: .16s cubic-bezier(.16, 1, .3, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--shadow-sm: none;--shadow-md: 0 0 28px color-mix(in srgb, var(--color-primary) 10%, transparent);--shadow-lg: 0 0 48px color-mix(in srgb, var(--color-primary) 14%, transparent);--font-display: "Rajdhani", "Segoe UI", sans-serif;--font-body: "IBM Plex Mono", "ui-monospace", monospace;--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .35vw, 1rem);--text-base: clamp(1rem, .95rem + .25vw, 1.125rem);--text-lg: clamp(1.125rem, 1rem + .75vw, 1.5rem);--text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem}[data-theme=light]{--color-bg: #d8e4e8;--color-space: #c5d4dc;--color-surface: #eef4f6;--color-surface-2: #e4eef1;--color-surface-offset: #dce8ec;--color-surface-offset-2: #d0dfe4;--color-control: #e8f0f3;--color-divider: color-mix(in srgb, #1a4d58 16%, transparent);--color-border: color-mix(in srgb, #1a4d58 28%, transparent);--color-hud-line: #2a5c68;--color-text: #15262c;--color-text-muted: #3d5a63;--color-text-faint: #6a868e;--color-text-inverse: #eef4f6;--color-primary: #1f7a8c;--color-primary-hover: #176575;--color-primary-active: #125462;--color-primary-highlight: color-mix(in srgb, #1f7a8c 12%, transparent);--color-accent: #c46a16;--color-accent-hover: #a85710;--color-accent-text: #fff6eb;--color-success: #1f7a8c;--color-success-highlight: color-mix(in srgb, #1f7a8c 12%, transparent);--color-error: #b44532;--color-error-highlight: color-mix(in srgb, #b44532 14%, transparent);--color-warning: #c46a16;--color-warning-highlight: color-mix(in srgb, #c46a16 14%, transparent);--shadow-sm: none;--shadow-md: 0 0 24px color-mix(in srgb, var(--color-primary) 8%, transparent);--shadow-lg: 0 0 40px color-mix(in srgb, var(--color-primary) 12%, transparent)}[data-theme=light] body:after{opacity:.45}.hud-corners,.leaderboard-panel,.modal,.paused-card,.stat,.play-note,.idle-copy,.streak-card,.auth-field,.score-breakdown,.board{position:relative}.hud-corners:before,.leaderboard-panel:before,.modal:before,.paused-card:before,.stat:before,.play-note:before,.idle-copy:before,.streak-card:before,.auth-field:before,.score-breakdown:before,.board:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;background:linear-gradient(var(--color-hud-line),var(--color-hud-line)) top left / 11px 1px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) top left / 1px 11px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) top right / 11px 1px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) top right / 1px 11px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) bottom left / 11px 1px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) bottom left / 1px 11px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) bottom right / 11px 1px no-repeat,linear-gradient(var(--color-hud-line),var(--color-hud-line)) bottom right / 1px 11px no-repeat}.app-shell{position:relative;z-index:1;min-height:100dvh;display:flex;flex-direction:column;overflow-x:clip}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:max(var(--space-2),env(safe-area-inset-top)) max(var(--space-6),env(safe-area-inset-right)) var(--space-2) max(var(--space-6),env(safe-area-inset-left));border-bottom:1px solid var(--color-divider);background:color-mix(in srgb,var(--color-bg) 88%,transparent)}.brand{display:flex;align-items:center;gap:var(--space-3)}.brand-mark{width:32px;height:32px;color:var(--color-primary);flex-shrink:0}.brand-mark .logo-bolt{fill:var(--color-accent)}.brand-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;letter-spacing:.18em;text-transform:uppercase}.theme-toggle{width:40px;height:40px;display:grid;place-items:center;border-radius:0;color:var(--color-text-muted);border:1px solid var(--color-border);background:var(--color-control)}.theme-toggle:hover{color:var(--color-text);background:var(--color-surface-offset)}.theme-toggle svg{width:18px;height:18px}.main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:var(--space-3) var(--space-4) max(var(--space-6),env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--space-3)}.play-head{display:flex;flex-direction:column;gap:var(--space-2)}.play-note{display:flex;flex-direction:column;gap:var(--space-1);border:1px solid var(--color-divider);padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted)}.play-note p{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin:0}.play-note svg{width:14px;height:14px;flex-shrink:0;color:var(--color-primary)}.difficulty-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-1);width:100%}.difficulty-tabs .tab{display:inline-flex;align-items:center;gap:var(--space-2)}.difficulty-tabs>.tooltip-wrap{display:grid;min-width:0}.difficulty-tabs>.tooltip-wrap>.tab{width:100%;height:100%}.tab{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);min-height:40px;width:100%;justify-content:center;border-radius:0;border:1px solid var(--color-border);background:var(--color-control);font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);transition:color var(--transition-interactive),background var(--transition-interactive),border-color var(--transition-interactive),transform var(--transition-interactive)}.tab:hover{color:var(--color-text);border-color:var(--color-primary)}.tab:active{transform:scale(.97)}.tab[aria-selected=true]{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent);box-shadow:none}.tab:disabled{opacity:.5;cursor:not-allowed}.tab:disabled:hover{color:var(--color-text-muted)}.tab:disabled:active{transform:none}.progression-stepper{gap:var(--space-2)}.progression-stepper .tab{display:inline-flex;align-items:center;gap:var(--space-2)}.stage-index{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:0;border:1px solid currentColor;background:transparent;color:var(--color-text-muted);font-family:var(--font-body);font-size:10px;font-weight:600;flex-shrink:0}.stage-index svg{width:11px;height:11px}.tab[aria-selected=true] .stage-index{background:transparent;color:inherit;border-color:currentColor}.tab.stage-complete .stage-index{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.tab.stage-locked .stage-index{background:transparent;color:var(--color-text-faint);border-color:var(--color-divider)}.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.side-col,.game-panel{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.stat-bar{display:flex;align-items:stretch;gap:var(--space-3)}.stat{flex:1;background:color-mix(in srgb,var(--color-surface) 70%,transparent);border:1px solid var(--color-divider);border-radius:0;padding:var(--space-2) var(--space-4);display:flex;flex-direction:column;gap:2px}.stat-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.14em;font-family:var(--font-body)}.stat-value{font-family:var(--font-body);font-size:var(--text-lg);font-weight:600;font-variant-numeric:tabular-nums lining-nums}.stat-value.timer{color:var(--color-primary)}.stat-value.timer.idle{color:var(--color-text-muted)}.stat-value.mistakes.has-mistakes{color:var(--color-error)}.stat-value.mistakes.near-cap{background:var(--color-error-highlight);padding:0 var(--space-2);border-radius:var(--radius-sm);animation:pulse-warning 1.4s ease-in-out infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.55}}.stat-value.hints.has-hints{color:var(--color-warning)}.icon-btn{width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;border-radius:0;border:1px solid var(--color-divider);background:var(--color-control);color:var(--color-text-muted)}.icon-btn{transition:color var(--transition-interactive),border-color var(--transition-interactive),background var(--transition-interactive),transform var(--transition-interactive)}.icon-btn:hover{color:var(--color-text);border-color:var(--color-border);background:var(--color-surface-offset)}.icon-btn:active{transform:scale(.94)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn:disabled:hover{color:var(--color-text-muted);border-color:var(--color-divider);background:var(--color-control)}.icon-btn:disabled:active{transform:none}.icon-btn svg{width:18px;height:18px}.board-row{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);width:min(100%,30.15rem);margin-inline:auto}.board-wrap{position:relative;width:100%;container-type:inline-size}.board{--board-bg: #101010;--board-cell: #161616;--board-given-bg: #1e1e1e;--board-peer: #242424;--board-line: #3d3d3d;--board-line-box: #f0f0f0;--board-box-width: 4px;--board-given: #f3f3f3;--board-entry: #8c8c8c;--board-note: #6a6a6a;--board-note-on-accent: #140e08;width:100%;aspect-ratio:1;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));margin:0 auto;background:var(--board-bg);border:var(--board-box-width) solid var(--board-line-box);border-radius:0;overflow:visible;box-shadow:none}[data-theme=light] .board{--board-bg: #f2f2f2;--board-cell: #fafafa;--board-given-bg: #ececec;--board-peer: #e4e4e4;--board-line: #d0d0d0;--board-line-box: #111111;--board-box-width: 4px;--board-given: #111111;--board-entry: #5c5c5c;--board-note: #7a7a7a;--board-note-on-accent: #140e08}.board:focus,.board:focus-visible{outline:none}.cell{position:relative;background:var(--board-cell);border:1px solid var(--board-line);border-radius:0;display:grid;place-items:center;font-family:var(--font-body);font-size:clamp(.7rem,6.2cqi,1.9rem);font-weight:500;color:var(--board-entry);font-variant-numeric:tabular-nums lining-nums;cursor:pointer;user-select:none;outline:none;-webkit-tap-highlight-color:transparent;contain:layout style;transition:background-color 80ms linear,color 80ms linear}.cell-value{display:inline-block}.cell.box-right{border-right:var(--board-box-width) solid var(--board-line-box)}.cell.box-left{border-left:none}.cell.box-bottom{border-bottom:var(--board-box-width) solid var(--board-line-box)}.cell.box-top{border-top:none}.cell.given{color:var(--board-given);font-weight:700;background:var(--board-given-bg)}.cell.filled{color:var(--board-entry);font-weight:500}.cell.hint-filled{color:var(--board-entry);font-weight:500;animation:hint-glow .7s var(--ease-out)}.cell.filled .cell-value,.cell.hint-filled .cell-value{animation:cell-pop .22s var(--ease-out)}.cell.error{color:var(--color-error);background:color-mix(in srgb,var(--color-error) 22%,var(--board-cell));animation:cell-shake .4s ease-in-out}.cell.error:after{content:"";position:absolute;inset:0;background:var(--color-error);animation:error-flash .4s ease-out;pointer-events:none}@keyframes cell-pop{0%{transform:scale(.55);opacity:.4}65%{transform:scale(1.15);opacity:1}to{transform:scale(1)}}@keyframes cell-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-3px)}40%,60%{transform:translate(3px)}}@keyframes error-flash{0%{opacity:.6}to{opacity:0}}.cell.cell-flash:after{content:"";position:absolute;inset:0;background:var(--color-success);pointer-events:none;animation:unit-flash-fade .65s ease-out;animation-delay:var(--flash-delay, 0ms);animation-fill-mode:both}@keyframes unit-flash-fade{0%{opacity:0}15%{opacity:.5}to{opacity:0}}.board.celebrating{pointer-events:none}.cell.board-wave:before{content:"";position:absolute;inset:0;background:var(--color-primary);pointer-events:none;animation:board-wave-fade .52s ease-out;animation-delay:var(--wave-delay, 0ms);animation-fill-mode:both}@keyframes board-wave-fade{0%{opacity:0}35%{opacity:.4}to{opacity:0}}@keyframes hint-glow{0%{box-shadow:inset 0 0 color-mix(in srgb,var(--color-warning) 70%,transparent);background:var(--color-warning-highlight)}55%{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--color-warning) 55%,transparent)}to{box-shadow:inset 0 0 color-mix(in srgb,var(--color-warning) 0%,transparent)}}.cell.conflict{background:color-mix(in srgb,var(--color-error) 18%,var(--board-cell))}.cell.peer{background:var(--board-peer)}.cell.same-value:not(.selected){background:color-mix(in srgb,var(--color-accent) 22%,var(--board-cell));color:var(--color-accent)}.cell.selected{background:var(--color-accent);color:var(--color-accent-text);box-shadow:none;z-index:1}.cell.selected.error{background:var(--color-error);color:var(--color-accent-text)}.cell.given.peer{background:var(--board-peer)}.cell.given.same-value:not(.selected){color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 18%,var(--board-given-bg))}.cell-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:3px}.cell-notes span{display:grid;place-items:center;font-family:var(--font-body);font-size:clamp(.45rem,2.15cqi,.75rem);font-weight:500;color:var(--board-note);line-height:1}.cell.selected .cell-notes span,.cell.selected.error .cell-notes span{color:var(--board-note-on-accent);font-weight:700}.board.paused{filter:blur(5px)}.paused-overlay{position:absolute;inset:0;display:grid;place-items:center;border-radius:0;z-index:4}.paused-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-8);background:var(--color-control);border:1px solid var(--color-border);border-radius:0;box-shadow:var(--shadow-lg)}.paused-card>.icon{color:var(--color-text-muted)}.paused-card>.icon svg{width:28px;height:28px}.controls{display:flex;flex-direction:column;gap:var(--space-3)}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);width:100%;max-width:19rem;margin:0 auto}.num-btn{aspect-ratio:1;min-height:44px;border-radius:0;background:var(--color-control);border:1px solid var(--color-border);font-family:var(--font-body);font-size:var(--text-lg);font-weight:600;color:var(--color-text);font-variant-numeric:tabular-nums lining-nums;display:grid;place-items:center}.num-btn{transition:color var(--transition-interactive),background var(--transition-interactive),border-color var(--transition-interactive),transform var(--transition-interactive)}.num-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 16%,var(--color-control))}.num-btn:active{transform:scale(.94)}.num-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.num-btn:disabled:hover{border-color:var(--color-border);color:var(--color-text);background:var(--color-control)}.num-btn.complete{color:var(--color-text-faint);background:var(--color-surface-2);border-color:var(--color-divider)}.num-btn.complete:hover{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface-2))}.num-btn.erase svg,.num-btn.undo svg,.num-btn.pause svg{width:18px;height:18px}.tooltip-wrap{display:inline-grid;justify-items:stretch;align-items:stretch;min-width:0}.numpad>.tooltip-wrap,.action-row>.tooltip-wrap{display:grid}.numpad>.tooltip-wrap>.num-btn,.action-row>.tooltip-wrap>.btn{width:100%;height:100%}.tooltip-popover{inset:unset;margin:0;position:fixed;padding:.35rem .65rem;border:1px solid var(--color-border);background:var(--color-control);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:.03em;line-height:1.35;box-shadow:var(--shadow-md);max-width:min(16rem,calc(100vw - 1rem));pointer-events:none;z-index:80}.tooltip-popover:not(:popover-open):not(.is-open){display:none}.tooltip-popover.is-open{display:block}.action-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:0;font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--color-border);background:var(--color-control);color:var(--color-text);text-decoration:none;transition:color var(--transition-interactive),background var(--transition-interactive),border-color var(--transition-interactive),transform var(--transition-interactive),box-shadow var(--transition-interactive)}.btn svg{width:16px;height:16px;color:inherit}.btn.primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-accent-text)}.btn:hover{border-color:var(--color-border);background:var(--color-surface-offset)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text)}.btn.primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn.toggled{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text)}.btn.flex{flex:1;justify-content:center}.btn:disabled{opacity:.45;cursor:not-allowed}.hint-count-badge{font-size:var(--text-xs);font-family:var(--font-body);background:transparent;border:1px solid currentColor;border-radius:0;padding:1px var(--space-2);color:inherit;letter-spacing:.04em}.leaderboard-panel{background:color-mix(in srgb,var(--color-surface) 78%,transparent);border:1px solid var(--color-divider);border-radius:0;padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4);box-shadow:none}.leaderboard-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.leaderboard-title{font-family:var(--font-display);font-size:var(--text-base);font-weight:600;letter-spacing:.14em;text-transform:uppercase;display:inline-flex;align-items:center;gap:var(--space-2)}.leaderboard-scope{font-size:var(--text-xs);font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-faint)}.leaderboard-list{display:flex;flex-direction:column;gap:var(--space-2)}.leaderboard-row{display:grid;grid-template-columns:1.5rem 1fr auto;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:0;border:1px solid var(--color-divider);background:transparent;animation:row-in .28s var(--ease-out) both}.leaderboard-row.newest{background:var(--color-primary-highlight);border-color:var(--color-primary);animation:row-in .28s var(--ease-out) both,row-glow 1.6s ease-out}@keyframes row-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes row-glow{0%{box-shadow:0 0 0 2px var(--color-primary)}to{box-shadow:0 0 0 0 transparent}}.rank{font-family:var(--font-body);font-weight:600;color:var(--color-text-muted);font-size:var(--text-sm)}.leaderboard-row.rank-1 .rank{color:var(--color-warning)}.lb-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.lb-time{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums lining-nums}.lb-sub{font-size:var(--text-xs);color:var(--color-text-faint);white-space:nowrap}.lb-score{font-family:var(--font-body);font-weight:600;font-size:var(--text-base);color:var(--color-primary);font-variant-numeric:tabular-nums lining-nums}.leaderboard-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-faint);padding:var(--space-6) 0;text-align:center}.leaderboard-empty p{color:var(--color-text-muted);font-weight:600;margin:0}.leaderboard-empty-sub{font-size:var(--text-xs);color:var(--color-text-faint)}.modal-backdrop{position:fixed;inset:0;background:color-mix(in srgb,var(--color-bg) 72%,black);display:grid;place-items:center;padding:var(--space-4);z-index:20;opacity:1;transition:opacity .22s var(--ease-out)}@starting-style{.modal-backdrop{opacity:0}}.modal{width:min(420px,100%);max-height:min(92dvh,100%);overflow:auto;background:var(--color-control);border-radius:0;border:1px solid var(--color-border);box-shadow:var(--shadow-lg);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-5);opacity:1;transform:scale(1) translateY(0);transition:opacity .26s var(--ease-out),transform .26s var(--ease-out)}@starting-style{.modal{opacity:0;transform:scale(.95) translateY(12px)}}.modal-badge{align-self:flex-start;font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-primary);background:transparent;border:1px solid currentColor;padding:var(--space-1) var(--space-3);border-radius:0}.modal-badge.error{color:var(--color-error);background:var(--color-error-highlight)}.modal-score{font-family:var(--font-body);font-size:var(--text-xl);font-weight:600;color:var(--color-primary);line-height:1}.modal-score.error{color:var(--color-error)}.modal-score-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.modal-subtext{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}.score-breakdown{display:flex;flex-direction:column;gap:0;padding:0;background:var(--color-surface-offset);border:4px solid color-mix(in srgb,var(--color-hud-line) 55%,transparent);border-radius:0}.score-group{display:flex;flex-direction:column;padding:var(--space-3) var(--space-4)}.score-group+.score-group{border-top:4px solid color-mix(in srgb,var(--color-hud-line) 58%,transparent)}.score-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);font-size:var(--text-sm);padding:var(--space-2) 0}.score-row+.score-row{border-top:1px solid color-mix(in srgb,var(--color-hud-line) 16%,transparent)}.score-row .k{color:var(--color-text-muted);padding-right:0}.score-hint{display:block;margin-top:2px;font-size:var(--text-xs);font-weight:500;color:var(--color-text-faint);letter-spacing:0;text-transform:none}.score-row .v{font-weight:600;font-variant-numeric:tabular-nums lining-nums;text-align:right;flex-shrink:0}.score-row .v.gain{color:var(--color-accent)}.score-row .v.loss{color:var(--color-error)}.score-row .v.zero{color:var(--color-text-faint)}.score-group-total{background:var(--color-primary-highlight)}.score-row.total{border-top:none;padding:var(--space-2) 0;margin-top:0;font-size:var(--text-base)}.score-row.total .v{color:var(--color-primary);font-weight:700}.complete-modal{gap:0}.complete-modal>*+*{margin-top:var(--space-5);padding-top:var(--space-5);border-top:4px solid color-mix(in srgb,var(--color-hud-line) 62%,transparent)}.complete-hero .modal-badge{margin-bottom:var(--space-3)}.star-rating{display:flex;gap:6px;margin-top:var(--space-3)}.star-rating .star{fill:color-mix(in srgb,var(--color-text-faint) 50%,transparent)}.star-rating .star.filled{fill:var(--color-accent)}.complete-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.complete-tags .best-tag{margin-top:0}.complete-callouts{display:flex;flex-direction:column;gap:var(--space-3)}.complete-after{display:flex;flex-direction:column;gap:var(--space-4)}.modal-actions{display:flex;gap:var(--space-3)}.site-footer{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-divider);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2) var(--space-4);text-align:center}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-4);font-size:var(--text-xs);font-weight:600}.footer-links a{color:var(--color-text-muted);text-decoration:none}.footer-links a:hover{color:var(--color-primary);text-decoration:underline}.footer-copy{font-size:var(--text-xs);color:var(--color-text-muted)}.legal-shell{position:relative;z-index:1;min-height:100dvh;display:flex;flex-direction:column}.legal-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:max(var(--space-2),env(safe-area-inset-top)) max(var(--space-6),env(safe-area-inset-right)) var(--space-2) max(var(--space-6),env(safe-area-inset-left));border-bottom:1px solid var(--color-divider)}.legal-topbar .brand{text-decoration:none;color:inherit}.legal-topbar .brand-mark{display:block}.legal-doc{width:100%;max-width:42rem;margin:0 auto;padding:var(--space-8) var(--space-4) var(--space-10);display:flex;flex-direction:column;gap:var(--space-4)}.legal-kicker{font-size:var(--text-xs);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--color-primary)}.legal-doc h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1.15}.legal-updated{font-size:var(--text-xs);color:var(--color-text-faint)}.legal-doc h2{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;margin-top:var(--space-3)}.legal-doc p,.legal-doc li{font-size:var(--text-sm);color:var(--color-text-muted);max-width:none}.legal-doc ul{padding-left:1.15rem;display:flex;flex-direction:column;gap:var(--space-3)}.legal-doc a{color:var(--color-primary);font-weight:600}.legal-shell .site-footer{margin-top:auto;padding:var(--space-5) var(--space-4) var(--space-6)}.generating{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-16) 0;color:var(--color-text-muted);font-size:var(--text-sm);text-align:center}.idle-panel{gap:var(--space-5);min-height:min(36rem,70dvh)}.idle-copy{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);max-width:28rem;margin:0;padding:var(--space-5) var(--space-6);color:var(--color-text);background:color-mix(in srgb,var(--color-bg) 72%,transparent);border:1px solid var(--color-border)}.idle-copy p{margin:0;max-width:none}.idle-panel .btn,.idle-copy .btn{min-height:44px}.spinner{width:28px;height:28px;border-radius:0;border:1px solid var(--color-divider);border-top-color:var(--color-primary);border-right-color:var(--color-primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.topbar-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end}.topbar-actions .btn.small,.topbar-actions .theme-toggle,.topbar-actions .user-pill{position:relative;height:40px;box-sizing:border-box}.topbar-actions>.tooltip-wrap{height:40px}.btn.small{padding:0 var(--space-3);height:40px;font-size:var(--text-xs)}.user-pill{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-primary);background:var(--color-control);border:1px solid var(--color-primary);padding:0 var(--space-3);border-radius:0}.user-pill svg{width:14px;height:14px}.guest-pill{border-color:var(--color-border);color:var(--color-text-muted)}.guest-handle{font-family:var(--font-body);letter-spacing:.04em}.mode-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-1);width:100%}.mode-tab{display:inline-flex;align-items:center;gap:var(--space-1)}.mode-tab svg{width:14px;height:14px}.mode-label-short{display:none}.daily-calendar{width:100%;border:1px solid var(--color-divider);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.cal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.cal-nav{width:36px;height:36px}.cal-title-wrap{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.cal-title{font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text)}.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.cal-wd{text-align:center;font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);padding:2px 0}.cal-day{position:relative;min-height:36px;border:1px solid var(--color-border);background:var(--color-control);color:var(--color-text);font-size:var(--text-xs);font-weight:600;border-radius:0;padding:0 0 6px;line-height:1}.cal-day.empty{border-color:transparent;background:transparent;pointer-events:none}.cal-day.today{border-color:var(--color-primary)}.cal-day.selected{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.cal-day:hover:not(:disabled):not(.empty){border-color:var(--color-primary);color:var(--color-text)}.cal-day.selected:hover:not(:disabled){color:var(--color-accent-text);border-color:var(--color-accent)}.cal-day:disabled{opacity:.4;cursor:not-allowed}.cal-dot{position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:4px;height:4px;background:currentColor;border-radius:50%}.run-chip{display:inline-flex;align-items:center;margin-left:var(--space-2);padding:0 var(--space-2);border-radius:0;border:1px solid currentColor;background:transparent;color:var(--color-primary);font-weight:600;white-space:nowrap}.run-chip.solved{background:var(--color-success-highlight);color:var(--color-success)}.start-hint{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);margin:var(--space-2) 0 0}.start-hint svg{width:13px;height:13px;flex-shrink:0;color:var(--color-warning)}.progression-banner{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--color-primary);background:var(--color-primary-highlight);border:1px solid var(--color-primary);border-radius:0;padding:var(--space-3);line-height:1.4}.progression-banner svg{flex-shrink:0;margin-top:1px}.progression-banner.complete{color:var(--color-success);background:var(--color-success-highlight)}.lb-name{font-size:var(--text-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaderboard-error{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) 0;text-align:center;color:var(--color-text-faint);font-size:var(--text-sm)}.modal-badge.warn{color:var(--color-warning);background:var(--color-warning-highlight)}.confirm-modal{gap:var(--space-4)}.confirm-text{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}.modal-actions.two-up{display:grid;grid-template-columns:1fr 1fr}.auth-modal{position:relative}.modal-close{position:absolute;top:var(--space-4);right:var(--space-4);width:32px;height:32px;color:var(--color-text-muted);border:1px solid transparent;z-index:3}.modal-close:hover{color:var(--color-text);background:var(--color-surface-offset)}.auth-form{display:flex;flex-direction:column;gap:var(--space-4)}.auth-copy{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}.auth-devcode{font-size:var(--text-sm);font-family:var(--font-body);letter-spacing:.12em;color:var(--color-warning);background:var(--color-warning-highlight);border:1px solid var(--color-warning);border-radius:0;padding:var(--space-2) var(--space-3)}.auth-field{display:flex;align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:0;padding:var(--space-2) var(--space-3);color:var(--color-text-muted)}.auth-field input{flex:1;border:none;background:transparent;color:var(--color-text);font-size:var(--text-sm);font-family:var(--font-body);outline:none;min-width:0}.auth-error{font-size:var(--text-xs);color:var(--color-error)}.save-cta{justify-content:center;color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-highlight)}.save-status{text-align:center;font-size:var(--text-xs);color:var(--color-text-faint);display:flex;align-items:center;justify-content:center;gap:var(--space-1)}.save-status.saved{color:var(--color-success)}.save-status.error{color:var(--color-error)}.error-panel svg{color:var(--color-error)}.streak-pip{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 var(--space-1);margin-left:var(--space-1);border-radius:0;background:var(--color-accent);color:var(--color-accent-text);font-size:10px;font-weight:700;line-height:1;animation:best-tag-pop .42s cubic-bezier(.34,1.56,.64,1)}.save-status-block{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.best-tag{display:inline-flex;align-items:center;gap:var(--space-1);margin-top:var(--space-3);padding:var(--space-1) var(--space-3);border-radius:0;border:1px solid var(--color-accent);background:var(--color-warning-highlight);color:var(--color-accent);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;animation:best-tag-pop .42s cubic-bezier(.34,1.56,.64,1) both;animation-delay:.12s}@keyframes best-tag-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.achievement-toasts{display:flex;flex-direction:column;gap:var(--space-2)}.achievement-toast{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border-radius:0;border:1px solid var(--color-accent);background:var(--color-warning-highlight);color:var(--color-warning);animation:toast-in .32s var(--ease-out) both;animation-delay:.16s}.achievement-toast:nth-child(2){animation-delay:.23s}.achievement-toast:nth-child(3){animation-delay:.3s}.achievement-toast:nth-child(4){animation-delay:.37s}.achievement-toast:nth-child(n+5){animation-delay:.44s}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.achievement-toast svg{flex-shrink:0;margin-top:2px}.achievement-toast-label{font-size:var(--text-sm);font-weight:700;color:var(--color-text)}.achievement-toast-desc{font-size:var(--text-xs);color:var(--color-text-muted)}.stats-modal,.howto-modal{width:min(480px,100%);position:relative}.leaderboard-modal{width:min(36rem,100%);position:relative;gap:var(--space-4)}.leaderboard-modal .leaderboard-header{padding-right:var(--space-8);align-items:center}.leaderboard-modal .leaderboard-list{gap:var(--space-2);overflow:auto;max-height:min(60dvh,28rem);padding-right:2px}.leaderboard-modal .leaderboard-row{padding:var(--space-3) var(--space-4);gap:var(--space-4)}.howto-body{display:flex;flex-direction:column;gap:var(--space-3)}.howto-body h3{font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-primary);margin:0}.howto-body p{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.55;max-width:none;margin:0}.streak-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.streak-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-4) var(--space-2);background:transparent;border:1px solid var(--color-divider);border-radius:0;text-align:center}.streak-value{font-family:var(--font-body);font-size:var(--text-xl);font-weight:600;color:var(--color-primary);line-height:1}.streak-label{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.streak-sub{font-size:11px;color:var(--color-text-faint)}.guest-note{font-size:var(--text-xs);color:var(--color-text-muted);line-height:1.5;background:transparent;border:1px solid var(--color-divider);border-radius:0;padding:var(--space-3)}.link-btn{border:none;background:none;padding:0;color:var(--color-primary);font-weight:700;font-size:inherit;cursor:pointer;text-decoration:underline}.achievements-header{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--text-sm);font-weight:700}.achievements-count{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:600}.achievement-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);max-height:340px;overflow-y:auto}.achievement-badge{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-radius:0;border:1px solid var(--color-divider)}.achievement-badge.locked{color:var(--color-text-faint);opacity:.6}.achievement-badge.locked svg{color:var(--color-text-faint)}.achievement-badge.unlocked{background:var(--color-warning-highlight);border-color:var(--color-accent)}.achievement-badge.unlocked svg{color:var(--color-warning)}.achievement-badge-label{font-size:var(--text-sm);font-weight:700;color:var(--color-text)}.achievement-badge.locked .achievement-badge-label{color:var(--color-text-muted)}.achievement-badge-desc{font-size:11px;color:var(--color-text-muted);line-height:1.4}.confetti-layer{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}.confetti-piece{position:absolute;top:-12px;border-radius:1px;opacity:.95;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.35,.15,.55,1);animation-fill-mode:forwards}@keyframes confetti-fall{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--drift),108vh) rotate(var(--rotate));opacity:.35}}@media(max-width:719px){.topbar,.legal-topbar{gap:var(--space-2);padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.brand{min-width:0;gap:var(--space-2);flex-shrink:0}.brand-mark{width:28px;height:28px}.brand-name{font-size:.95rem;letter-spacing:.08em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{flex-wrap:nowrap;gap:var(--space-1);min-width:0}.topbar-actions .btn-text,.guest-handle{display:none}.topbar-actions .btn.small,.topbar-actions .user-pill,.topbar-actions .theme-toggle{width:40px;min-width:40px;height:40px;padding:0;justify-content:center;gap:0;flex-shrink:0}.topbar-actions .streak-pip{position:absolute;top:2px;right:2px;margin:0}.main{padding:var(--space-3) max(var(--space-3),env(safe-area-inset-left)) max(var(--space-5),env(safe-area-inset-bottom)) max(var(--space-3),env(safe-area-inset-right));gap:var(--space-2)}.tab{min-height:44px;padding:var(--space-2) .15rem;font-size:.68rem;letter-spacing:.02em;text-align:center;line-height:1.15;min-width:0}.mode-tab .icon{display:none!important}.mode-label-full{display:none}.mode-label-short{display:inline}.difficulty-tabs .tab{flex-direction:column;gap:.12rem}.difficulty-tabs .tab .icon{width:11px!important;height:11px!important}.stage-index{display:none}.stat-bar{gap:var(--space-1)}.stat{padding:var(--space-1) var(--space-2);min-width:0}.stat-label{letter-spacing:.06em;font-size:.65rem}.stat-value{font-size:var(--text-base)}.icon-btn{width:40px;height:40px}.start-hint{margin-top:var(--space-1)}.board-row{width:min(100%,calc(100dvh - 25.5rem))}.numpad{width:100%;max-width:none;gap:var(--space-1);grid-template-columns:repeat(6,1fr)}.num-btn{aspect-ratio:auto;height:48px;min-height:48px;font-size:var(--text-base)}.action-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.action-row .btn{flex-direction:column;justify-content:center;gap:.15rem;min-height:52px;width:100%;padding:.35rem .15rem;font-size:.62rem;letter-spacing:.04em;text-align:center;line-height:1.15}.action-row .btn .icon{width:16px!important;height:16px!important}.hint-count-badge{margin-left:0;font-size:.58rem}.paused-card{padding:var(--space-4) var(--space-5)}.modal-backdrop{padding:var(--space-3);padding-bottom:max(var(--space-3),env(safe-area-inset-bottom));align-items:end}.modal{width:100%;max-height:min(92dvh,100%);overflow:auto;padding:var(--space-5);-webkit-overflow-scrolling:touch}.howto-modal,.stats-modal,.leaderboard-modal,.auth-modal{width:100%}.modal-actions,.modal-actions.two-up{display:grid;grid-template-columns:1fr 1fr}.modal-actions .btn{justify-content:center;min-height:44px}.legal-doc{padding:var(--space-5) var(--space-3) var(--space-8)}}@media(max-width:479px){.brand-name{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand{position:relative}.difficulty-tabs .tab .icon{display:none!important}.difficulty-tabs .tab{font-size:.6rem;letter-spacing:0;flex-direction:row}.streak-row,.achievement-grid{grid-template-columns:1fr}}@media(min-width:720px){.board-row{width:min(100%,42rem);flex-direction:row;align-items:center;justify-content:center;gap:var(--space-3)}.board-wrap{flex:1 1 auto;min-width:0}.board-row .numpad{grid-template-columns:repeat(3,1fr);width:10.5rem;max-width:10.5rem;margin:0;flex-shrink:0}.action-row{width:100%;justify-content:stretch}.action-row>.tooltip-wrap{flex:1;min-width:0}.action-row .btn{justify-content:center;min-height:44px}}@media(min-width:1024px){.layout.has-side{grid-template-columns:minmax(0,1fr) 18rem;align-items:start}.board-row{width:100%;max-width:none;justify-content:flex-start;gap:var(--space-4)}.board-wrap{flex:0 0 auto;width:36rem;max-width:calc(100% - 14rem)}.board{width:100%}.board-row .numpad{width:12.5rem;max-width:12.5rem;align-self:center}}@media(max-height:560px){.topbar{padding-top:max(var(--space-1),env(safe-area-inset-top));padding-bottom:var(--space-1)}.topbar-actions .btn-text,.guest-handle,.start-hint,.play-note{display:none}.topbar-actions .btn.small,.topbar-actions .user-pill,.topbar-actions .theme-toggle{width:36px;min-width:36px;height:36px;padding:0;justify-content:center;gap:0}.main{gap:var(--space-1);padding-top:var(--space-2);padding-bottom:max(var(--space-2),env(safe-area-inset-bottom))}.mode-tab .icon{display:none!important}.mode-label-full{display:none}.mode-label-short{display:inline}.tab{min-height:32px;padding:.15rem .12rem;font-size:.65rem}.board-row{flex-direction:row;width:100%;max-width:none;align-items:center;justify-content:center;gap:var(--space-3)}.board-wrap{width:min(100%,calc(100dvh - 14.25rem));max-width:min(30.15rem,calc(100dvh - 14.25rem));flex:0 1 auto;min-width:0}.board{width:100%}.board-row .numpad{grid-template-columns:repeat(3,1fr);width:min(8.75rem,34dvh);max-width:min(8.75rem,34dvh);margin:0;flex-shrink:0}.board-row .numpad .num-btn{aspect-ratio:1;height:auto;min-height:0}.action-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.action-row .btn{min-height:36px;padding-inline:var(--space-2);justify-content:center;flex-direction:row;font-size:.68rem}.stat{padding:.15rem .45rem}.stat-label{font-size:.55rem;letter-spacing:.04em}.stat-value{font-size:.85rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.stat-value.mistakes.near-cap{animation:none!important;opacity:1!important}}
