.sudoku-grid-wrapper{width:100%;max-width:540px;margin:0 auto;position:relative}.sudoku-grid{border:3px solid var(--color-text);border-radius:var(--radius-sm);aspect-ratio:1;-webkit-user-select:none;user-select:none;outline:none;grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);width:100%;display:grid}.sudoku-cell{border:1px solid var(--color-border);cursor:pointer;transition:background-color var(--transition-fast);background-color:var(--color-cell-bg);color:var(--color-text);justify-content:center;align-items:center;font-size:clamp(1rem,4vw,1.75rem);display:flex;position:relative;overflow:hidden}.sudoku-cell[data-col="2"],.sudoku-cell[data-col="5"]{border-right:2px solid var(--color-text)}.sudoku-cell[data-row="2"],.sudoku-cell[data-row="5"]{border-bottom:2px solid var(--color-text)}.sudoku-cell--given{background-color:var(--color-cell-given-bg);cursor:default;color:var(--color-text);font-weight:700}.sudoku-cell--selected{box-shadow:inset 0 0 0 2px var(--color-primary);z-index:1;background-color:var(--color-cell-selected)!important}.sudoku-cell--highlighted{background-color:var(--color-cell-highlight)}.sudoku-cell--matching{background-color:var(--color-cell-match)}.sudoku-cell--conflict{color:var(--color-error)}.sudoku-cell--conflict:not(.sudoku-cell--given){background-color:var(--color-cell-conflict)}@keyframes cell-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.sudoku-cell--incorrect{color:var(--color-error);animation:.3s ease-out cell-shake}@keyframes hint-glow{0%{box-shadow:inset 0 0 0 2px var(--color-warning,#f59e0b)}50%{box-shadow:inset 0 0 8px 2px var(--color-warning,#f59e0b)}to{box-shadow:inset 0 0 0 2px var(--color-warning,#f59e0b)}}.sudoku-cell--hint{font-weight:700;animation:1s ease-in-out hint-glow;background-color:var(--color-warning,#f59e0b)!important;color:var(--color-bg,#fff)!important}@keyframes cell-pop{0%{opacity:0;transform:scale(.5)}50%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.sudoku-cell__value{line-height:1;animation:.15s ease-out cell-pop}.sudoku-cell__pencil{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);width:100%;height:100%;padding:1px;display:grid}.sudoku-cell__pencil-mark{color:var(--color-primary,#2563eb);justify-content:center;align-items:center;font-size:clamp(.5rem,1.5vw,.75rem);font-weight:500;line-height:1;display:flex}.sudoku-cell--paused .sudoku-cell__value,.sudoku-cell--paused .sudoku-cell__pencil{visibility:hidden}.sudoku-cell--player-0{color:var(--color-player-0,#9333ea);background-color:var(--color-player-bg-0,#9333ea14)}.sudoku-cell--player-1{color:var(--color-player-1,#0891b2);background-color:var(--color-player-bg-1,#0891b214)}.sudoku-cell--player-2{color:var(--color-player-2,#c2410c);background-color:var(--color-player-bg-2,#c2410c14)}.sudoku-cell--player-3{color:var(--color-player-3,#0d9488);background-color:var(--color-player-bg-3,#0d948814)}.sudoku-cell--pencil-match{background-color:var(--color-cell-match)}.sudoku-cell--pencil-match .sudoku-cell__pencil-mark{font-weight:700}@media (width<=1024px) and (width>=769px){.sudoku-grid-wrapper{max-width:480px}}@media (width<=768px){.sudoku-grid-wrapper{max-width:min(100%,420px)}}@media (width<=480px){.sudoku-grid-wrapper{max-width:100%}.sudoku-cell{font-size:clamp(.875rem,3.5vw,1.5rem)}.sudoku-cell__pencil-mark{font-size:clamp(.35rem,1.1vw,.55rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.number-pad{gap:var(--space-sm);flex-direction:column;width:100%;max-width:540px;margin:0 auto;display:flex}.number-pad__numbers{gap:var(--space-xs);grid-template-columns:repeat(9,1fr);display:grid}.number-pad__num-btn{aspect-ratio:1;font-size:var(--text-xl);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;font-weight:600;display:flex}.number-pad__num-btn:hover:not(:disabled){background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.number-pad__num-btn--selected{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb4d}.number-pad__num-btn--selected:hover:not(:disabled){background-color:var(--color-primary-hover)}.number-pad__num-btn:disabled{opacity:.35;cursor:not-allowed}.number-pad__actions{gap:var(--space-xs);flex-wrap:wrap;justify-content:center;display:flex}.number-pad__action-btn{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);min-width:60px;font-weight:500;display:inline-flex}.number-pad__action-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-text-secondary)}.number-pad__action-btn:disabled{opacity:.35;cursor:not-allowed}.number-pad__action-btn--active{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.number-pad__action-btn--active:hover:not(:disabled){background-color:var(--color-primary-hover)}@media (width<=768px){.number-pad{max-width:min(100%,400px)}}@media (width<=480px){.number-pad{max-width:100%}.number-pad__numbers{grid-template-columns:repeat(9,1fr);gap:2px}.number-pad__num-btn{font-size:var(--text-base)}.number-pad__action-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);min-width:48px}}.timer{align-items:center;gap:var(--space-sm);display:flex}.timer__display{font-size:var(--text-2xl);font-variant-numeric:tabular-nums;color:var(--color-text);letter-spacing:.02em;min-width:5ch;font-weight:600}.timer__btn{border:1px solid var(--color-border);border-radius:var(--radius-full);background-color:var(--color-bg);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);font-size:var(--text-base);justify-content:center;align-items:center;display:inline-flex}.timer__btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text);border-color:var(--color-text-secondary)}.pause-overlay{z-index:1000;justify-content:center;align-items:center;gap:var(--space-xl);background-color:#000000d9;flex-direction:column;display:flex;position:fixed;inset:0}.pause-overlay__title{font-size:var(--text-4xl);color:#fff;font-weight:700}.pause-overlay__seed{align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.pause-overlay__seed-label{font-size:var(--text-sm);color:#fff9;text-transform:uppercase;letter-spacing:.05em}.pause-overlay__seed-value{font-size:var(--text-base);color:#ffffffe6;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);-webkit-user-select:all;user-select:all;cursor:pointer;background:#ffffff1a}.pause-overlay__actions{align-items:center;gap:var(--space-md);flex-direction:column;display:flex}.pause-overlay__btn{padding:var(--space-md) var(--space-2xl);font-size:var(--text-lg);border-radius:var(--radius-md);background-color:var(--color-primary);color:#fff;cursor:pointer;transition:background-color var(--transition-fast);border:none;min-width:200px;font-weight:600}.pause-overlay__btn:hover{background-color:var(--color-primary-hover)}.pause-overlay__btn--danger{font-size:var(--text-base);background-color:#0000;border:1px solid #fff6}.pause-overlay__btn--danger:hover{background-color:#ef4444cc;border-color:#0000}.pause-overlay__copy-btn{border-radius:var(--radius-sm);color:#fff;padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--transition-fast);background:#ffffff26;border:1px solid #ffffff4d}.pause-overlay__copy-btn:hover{background:#ffffff40}.game-header{align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.game-header__badge{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);text-transform:capitalize;border-radius:var(--radius-full);color:#fff;align-items:center;font-weight:600;display:inline-flex}.game-header__badge--easy{background-color:var(--color-success)}.game-header__badge--medium{background-color:var(--color-warning)}.game-header__badge--hard{background-color:#f97316}.game-header__badge--expert{background-color:var(--color-error)}.game-header__mode{font-size:var(--text-sm);color:var(--color-text-secondary);text-transform:capitalize;font-weight:500}.game-header__id{font-size:var(--text-xs);color:var(--color-text-secondary);margin-left:auto}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes bounce-emoji{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.completion-card{animation:.4s ease-out fade-in-up}.completion-emoji{animation:.6s ease-in-out .3s bounce-emoji;display:inline-block}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.player-list{padding:var(--space-md);border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius-md,8px);background:var(--color-surface,#fff)}.player-list h3{margin-bottom:var(--space-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary,#64748b);font-size:.875rem;font-weight:600}.player-list-items{gap:var(--space-sm);flex-direction:column;display:flex}.player-item{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm,4px);background:var(--color-bg,#f8fafc);display:flex}.player-indicator{border-radius:50%;flex-shrink:0;width:10px;height:10px}.player-indicator.player-0{background-color:#3b82f6}.player-indicator.player-1{background-color:#10b981}.player-indicator.player-2{background-color:#f59e0b}.player-indicator.player-3{background-color:#ef4444}.player-indicator.player-4{background-color:#0d9488}.player-name{flex:1;font-size:.875rem;font-weight:500}.player-stats{color:var(--color-text-secondary,#64748b);font-size:.75rem}.player-list-waiting{color:var(--color-text-secondary,#64748b);padding:var(--space-sm) 0;font-size:.875rem;font-style:italic}.connection-status{align-items:center;gap:var(--space-xs);margin-top:var(--space-sm);color:var(--color-text-secondary,#64748b);font-size:.75rem;display:flex}.connection-dot{border-radius:50%;width:8px;height:8px}.connection-dot.connected{background-color:#10b981}.connection-dot.disconnected{background-color:#ef4444}.opponent-progress{padding:var(--space-md);border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius-md,8px);background:var(--color-surface,#fff)}.opponent-progress h3{margin-bottom:var(--space-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary,#64748b);font-size:.875rem;font-weight:600}.opponent-progress-items{gap:var(--space-md);flex-direction:column;display:flex}.opponent-item{gap:var(--space-xs);flex-direction:column;display:flex}.opponent-info{justify-content:space-between;align-items:center;font-size:.875rem;display:flex}.opponent-name{font-weight:500}.opponent-percent{color:var(--color-text-secondary,#64748b);font-size:.75rem}.opponent-bar-track{background:var(--color-bg,#f1f5f9);border-radius:4px;width:100%;height:8px;overflow:hidden}.opponent-bar-fill{background:var(--color-primary,#3b82f6);border-radius:4px;height:100%;transition:width .5s}.opponent-bar-fill.finished{background:#10b981}.opponent-finished-label{color:#10b981;font-size:.75rem;font-weight:600}.achievement-notification-stack{top:var(--space-lg);right:var(--space-lg);z-index:2000;gap:var(--space-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed}.achievement-notification{pointer-events:auto;align-items:center;gap:var(--space-md);background:var(--color-bg);border:2px solid var(--color-primary);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);cursor:pointer;min-width:280px;max-width:360px;animation:.4s ease-out achievement-slide-in;display:flex;box-shadow:0 8px 24px #0000002e}.achievement-notification--exit{animation:.3s ease-in forwards achievement-slide-out}@keyframes achievement-slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes achievement-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.achievement-notification__icon{flex-shrink:0;font-size:2rem;line-height:1}.achievement-notification__content{flex:1;min-width:0}.achievement-notification__label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);margin-bottom:2px;font-size:.7rem;font-weight:700}.achievement-notification__title{color:var(--color-text);font-size:1rem;font-weight:600}.leaderboard-table{border-collapse:collapse;width:100%}.leaderboard-table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);color:var(--color-text-secondary);border-bottom:2px solid var(--color-border);font-weight:600}.leaderboard-table td{padding:var(--space-sm) var(--space-md);font-size:var(--text-base);border-bottom:1px solid var(--color-border)}.leaderboard-table tr:last-child td{border-bottom:none}.leaderboard-table__row--current{background-color:var(--color-primary-light,#3b82f614);font-weight:600}.leaderboard-table__rank{color:var(--color-text-secondary);width:50px;font-weight:700}.leaderboard-table__rank--1{color:#f59e0b}.leaderboard-table__rank--2{color:#9ca3af}.leaderboard-table__rank--3{color:#d97706}.leaderboard-table__empty{text-align:center;color:var(--color-text-secondary);padding:var(--space-3xl)!important}.leaderboard-table__pagination{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-md);display:flex}.leaderboard-table__pagination button{padding:var(--space-xs) var(--space-md)}@media (width<=768px){.leaderboard-table{min-width:480px}.leaderboard-table th,.leaderboard-table td{padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm)}}.stats-card{padding:var(--space-lg);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;justify-content:center;align-items:center;min-width:120px;display:flex}.stats-card__icon{font-size:var(--text-2xl);margin-bottom:var(--space-xs)}.stats-card__value{font-size:var(--text-2xl);color:var(--color-text);font-variant-numeric:tabular-nums;font-weight:700}.stats-card__label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-xs)}.achievement-badge{padding:var(--space-md);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;cursor:default;flex-direction:column;justify-content:center;align-items:center;min-width:100px;transition:transform .15s,box-shadow .15s;display:flex;position:relative;overflow:visible}.achievement-badge:hover{z-index:100;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.achievement-badge--earned{border-color:var(--color-primary);background:linear-gradient(135deg, var(--color-bg), var(--color-bg-secondary))}.achievement-badge--locked .achievement-badge__icon,.achievement-badge--locked .achievement-badge__title,.achievement-badge--locked .achievement-badge__lock{opacity:.5;filter:grayscale()}.achievement-badge__icon{margin-bottom:var(--space-xs);font-size:2rem;line-height:1}.achievement-badge--locked .achievement-badge__icon{filter:grayscale()}.achievement-badge__lock{top:var(--space-xs);right:var(--space-xs);opacity:.6;font-size:.75rem;position:absolute}.achievement-badge__title{font-size:var(--text-sm);color:var(--color-text);margin-bottom:2px;font-weight:600}.achievement-badge__date{color:var(--color-text-secondary);font-size:.7rem}.achievement-badge__tooltip{background:var(--color-text);color:var(--color-bg);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--text-sm);white-space:normal;z-index:1000;pointer-events:none;text-align:center;min-width:150px;max-width:250px;line-height:1.4;display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000004d}.achievement-badge__tooltip:after{content:"";border:6px solid #0000;border-bottom-color:var(--color-text);position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.achievement-badge:hover .achievement-badge__tooltip{display:block}.error-boundary{padding:var(--space-xl);text-align:center;justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;min-height:50vh;display:flex}.error-boundary__emoji{font-size:4rem;line-height:1}.error-boundary__heading{font-size:var(--text-xl);color:var(--color-text);margin:0}.error-boundary__message{font-size:var(--text-sm);color:var(--color-text-secondary);word-break:break-word;max-width:480px;margin:0}.error-boundary__actions{gap:var(--space-md);margin-top:var(--space-md);display:flex}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4}img,svg,video,canvas{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-bg:#fff;--color-bg-secondary:#f3f4f6;--color-text:#111827;--color-text-secondary:#6b7280;--color-border:#e5e7eb;--color-error:#ef4444;--color-success:#22c55e;--color-warning:#f59e0b;--color-surface:#fff;--color-cell-bg:#fff;--color-cell-given-bg:#f3f4f6;--color-cell-selected:#2563eb33;--color-cell-highlight:#2563eb12;--color-cell-match:#2563eb24;--color-cell-conflict:#ef444414;--color-player-0:#9333ea;--color-player-1:#0891b2;--color-player-2:#c2410c;--color-player-3:#0d9488;--color-player-bg-0:#9333ea14;--color-player-bg-1:#0891b214;--color-player-bg-2:#c2410c14;--color-player-bg-3:#0d948814;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-full:9999px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--transition-fast:.15s ease;--transition-base:.2s ease}[data-theme=dark]{--color-primary:#3b82f6;--color-primary-hover:#60a5fa;--color-bg:#111827;--color-bg-secondary:#1f2937;--color-text:#f9fafb;--color-text-secondary:#9ca3af;--color-border:#374151;--color-error:#f87171;--color-success:#4ade80;--color-warning:#fbbf24;--color-surface:#1f2937;--color-cell-bg:#111827;--color-cell-given-bg:#1f2937;--color-cell-selected:#1e3a5f;--color-cell-highlight:#172554;--color-cell-match:#1e3a5f;--color-cell-conflict:#7f1d1d;--color-player-0:#a855f7;--color-player-1:#22d3ee;--color-player-2:#fb923c;--color-player-3:#2dd4bf;--color-player-bg-0:#a855f726;--color-player-bg-1:#22d3ee26;--color-player-bg-2:#fb923c26;--color-player-bg-3:#2dd4bf26;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006, 0 2px 4px -2px #0000004d;--shadow-lg:0 10px 15px -3px #0006, 0 4px 6px -4px #0000004d}[data-theme=high-contrast]{--color-primary:#ff0;--color-primary-hover:#ff6;--color-bg:#000;--color-bg-secondary:#1a1a1a;--color-text:#fff;--color-text-secondary:#ccc;--color-border:#fff;--color-error:red;--color-success:#0f0;--color-warning:#ff0;--color-surface:#1a1a1a;--color-cell-bg:#000;--color-cell-given-bg:#333;--color-cell-selected:#040;--color-cell-highlight:#1a1a1a;--color-cell-match:#030;--color-cell-conflict:#600;--color-player-0:#d946ef;--color-player-1:#0ff;--color-player-2:#f80;--color-player-3:#0fa;--color-player-bg-0:#d946ef33;--color-player-bg-1:#0ff3;--color-player-bg-2:#f803;--color-player-bg-3:#0fa3;--shadow-sm:0 1px 2px #ffffff1a;--shadow-md:0 4px 6px -1px #ffffff1a;--shadow-lg:0 10px 15px -3px #ffffff1a}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:var(--text-base);color:var(--color-text);background-color:var(--color-bg);min-height:100vh;line-height:1.6}.nav{background-color:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:100;position:sticky;top:0}.nav-inner{max-width:1200px;padding:0 var(--space-lg);justify-content:space-between;align-items:center;height:60px;margin:0 auto;display:flex}.nav-brand{font-size:var(--text-xl);color:var(--color-primary);font-weight:700}.nav-links{gap:var(--space-lg);display:flex}.nav-link{font-size:var(--text-sm);color:var(--color-text-secondary);transition:color var(--transition-fast);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-weight:500}.nav-link:hover{color:var(--color-primary)}.main{max-width:1200px;padding:var(--space-xl) var(--space-lg);margin:0 auto}.btn{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background-color:var(--color-border)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--text-base)}.form-group{margin-bottom:var(--space-lg)}.form-label{font-size:var(--text-sm);margin-bottom:var(--space-xs);color:var(--color-text);font-weight:500;display:block}.form-input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg);transition:border-color var(--transition-fast)}.form-input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #2563eb1a}.form-error{font-size:var(--text-sm);color:var(--color-error);margin-top:var(--space-xs)}.card{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.grid{display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-secondary{color:var(--color-text-secondary)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.p-md{padding:var(--space-md)}.p-lg{padding:var(--space-lg)}.p-xl{padding:var(--space-xl)}.w-full{width:100%}.page{max-width:800px;margin:0 auto}.game-layout{gap:var(--space-lg);display:flex}.game-layout__main{flex:1;min-width:0}.game-layout__sidebar{flex-shrink:0;width:220px}@media (width<=768px){.game-layout{flex-direction:column}.game-layout__sidebar{width:100%}}.page-wide{max-width:1000px;margin:0 auto}.page-narrow{max-width:480px;margin:0 auto}.toggle{padding:var(--space-md) 0;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.toggle-label{font-size:var(--text-base);font-weight:500}.toggle-switch{flex-shrink:0;width:48px;height:26px;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;background-color:var(--color-border);border-radius:var(--radius-full);transition:background-color var(--transition-fast);position:absolute;inset:0}.toggle-slider:before{content:"";width:20px;height:20px;transition:transform var(--transition-fast);background-color:#fff;border-radius:50%;position:absolute;bottom:3px;left:3px}.toggle-switch input:checked+.toggle-slider{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.tabs{border-bottom:2px solid var(--color-border);margin-bottom:var(--space-lg);display:flex}.tab{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;font-weight:500}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.table{border-collapse:collapse;width:100%}.table th,.table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border)}.table th{font-size:var(--text-sm);color:var(--color-text-secondary);background-color:var(--color-bg-secondary);font-weight:600}.table td{font-size:var(--text-sm)}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}[data-theme=high-contrast] .btn-primary,[data-theme=high-contrast] .game-header__badge{color:#000}.nav-hamburger{cursor:pointer;padding:var(--space-xs);color:var(--color-text);background:0 0;border:none;font-size:1.5rem;line-height:1;display:none}@media (width<=768px){:root{--text-base:.9375rem;--text-lg:1.0625rem;--text-xl:1.1875rem;--text-2xl:1.375rem;--text-3xl:1.625rem;--text-4xl:2rem}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.nav-hamburger{display:block}.nav-links{background-color:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--space-md) var(--space-lg);gap:var(--space-sm);z-index:99;box-shadow:var(--shadow-md);flex-direction:column;display:none;position:absolute;top:60px;left:0;right:0}.nav-links--open{display:flex}.nav-link{font-size:var(--text-base);padding:var(--space-sm) 0}.nav-inner{position:relative}.main{padding:var(--space-md) var(--space-sm)}.page{max-width:100%}.card{overflow-x:auto}.leaderboard-table{min-width:500px}.tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.tab{white-space:nowrap;flex-shrink:0}}@media (width<=480px){:root{--text-base:.875rem;--text-2xl:1.25rem;--text-3xl:1.5rem;--text-4xl:1.75rem}}.readme-content h1{font-size:var(--text-3xl);margin:var(--space-lg) 0 var(--space-md);font-weight:700}.readme-content h2{font-size:var(--text-2xl);margin:var(--space-lg) 0 var(--space-sm);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-xs);font-weight:600}.readme-content h3{font-size:var(--text-lg);margin:var(--space-md) 0 var(--space-xs);font-weight:600}.readme-content p{margin:var(--space-sm) 0;line-height:1.6}.readme-content ul,.readme-content ol{margin:var(--space-sm) 0;padding-left:var(--space-xl)}.readme-content li{margin:var(--space-xs) 0;line-height:1.5}.readme-content code{background:var(--color-surface,#f3f4f6);border-radius:3px;padding:1px 4px;font-size:.9em}.readme-content pre{background:var(--color-surface,#f3f4f6);padding:var(--space-md);border-radius:var(--radius-md);margin:var(--space-sm) 0;overflow-x:auto}.readme-content pre code{background:0 0;padding:0}.readme-content table{border-collapse:collapse;width:100%;margin:var(--space-sm) 0;font-size:var(--text-sm)}.readme-content th,.readme-content td{border:1px solid var(--color-border);padding:var(--space-xs) var(--space-sm);text-align:left}.readme-content th{background:var(--color-surface,#f3f4f6);font-weight:600}.readme-content a{color:var(--color-primary)}.readme-content hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-lg) 0}
