:root{--bg:#f6f7fb;--surface:#fff;--ink:#172033;--muted:#7b8496;--line:#e9ecf3;--accent:#6d5dfc;--accent-soft:#eeecff;--shadow:0 18px 55px rgba(30,39,73,.09);--board:#fff;--peer:#f3f2ff;--same:#e5e2ff;--selected:#6d5dfc;--danger:#ee5865}*{box-sizing:border-box}html{font-size:16px}html[data-text=small]{font-size:14px}html[data-text=large]{font-size:18px}body{margin:0;background:var(--bg);color:var(--ink);font-family:Outfit,system-ui,sans-serif;min-height:100vh}button,select{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none}.app-shell{min-height:100vh;background:radial-gradient(circle at 83% 1%,rgba(109,93,252,.1),transparent 24rem)}.topbar{height:78px;max-width:1240px;padding:0 28px;margin:auto;display:flex;align-items:center;justify-content:space-between}.brand{font-size:24px;font-weight:800;letter-spacing:-1.4px}.brand span:not(.brand-mark){color:var(--accent)}.brand-mark{color:var(--accent);margin-right:7px;font-size:23px}.nav{display:flex;gap:5px;background:color-mix(in srgb,var(--surface) 72%,transparent);border:1px solid var(--line);border-radius:99px;padding:4px}.nav button{color:var(--muted);font-weight:600;font-size:14px;padding:8px 13px;border-radius:99px;transition:.2s}.nav button:hover,.nav button.active{color:var(--ink);background:var(--surface);box-shadow:0 2px 7px rgba(0,0,0,.06)}.level-pill{font:500 12px 'DM Mono',monospace;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--muted)}.level-pill i{display:inline-block;width:5px;height:5px;background:#50d890;border-radius:50%;margin:0 7px;vertical-align:middle}main{max-width:1184px;margin:auto;padding:22px 28px 64px}.page{display:none;animation:fade .25s ease}.page.active{display:block}@keyframes fade{from{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:none}}.eyebrow{font:600 11px 'DM Mono',monospace;color:var(--accent);letter-spacing:1.5px;margin:0 0 11px}.hero{padding:60px 8px 67px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;min-height:436px}.hero h1,.page-title h1,.daily-header h1{font-size:clamp(40px,5vw,69px);line-height:.98;letter-spacing:-3.5px;margin:0 0 20px}.hero h1 em,.page-title em,.daily-header em{font-weight:400;color:var(--accent);font-family:Georgia,serif}.hero-copy{max-width:420px;line-height:1.6;color:var(--muted);font-size:17px}.hero-actions{display:flex;gap:12px;margin-top:29px}.primary,.ghost{border-radius:11px;padding:13px 18px;font-weight:700;transition:transform .2s,box-shadow .2s}.primary{background:var(--accent);color:#fff;box-shadow:0 8px 20px rgba(109,93,252,.28)}.primary:hover{transform:translateY(-2px);box-shadow:0 12px 23px rgba(109,93,252,.34)}.primary span{margin-left:13px}.ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink)}.ghost:hover{border-color:#cfc9ff}.hero-board{width:315px;aspect-ratio:1;margin:auto;position:relative;transform:rotate(4deg);filter:drop-shadow(0 24px 22px rgba(75,66,172,.16))}.mini-grid{background:var(--board);border:7px solid var(--ink);border-radius:14px;width:100%;height:100%;display:grid;grid-template-columns:repeat(9,1fr);overflow:hidden;position:relative;z-index:1}.mini-grid i{font-style:normal;border:1px solid var(--line);font-size:14px;font-weight:700;display:grid;place-items:center}.mini-grid i:nth-child(3n){border-right-color:var(--ink);border-right-width:2px}.mini-grid i:nth-child(n+19):nth-child(-n+27),.mini-grid i:nth-child(n+46):nth-child(-n+54){border-bottom-color:var(--ink);border-bottom-width:2px}.mini-grid i:nth-child(4n+1){color:var(--accent)}.orb{position:absolute;border-radius:50%;filter:blur(1px)}.orb-one{background:#a79fff;width:102px;height:102px;right:-30px;top:-30px}.orb-two{background:#ffbe80;width:68px;height:68px;bottom:-23px;left:-26px}.quick-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.quick-row article,.summary-cards article{background:var(--surface);border:1px solid var(--line);padding:17px 20px;border-radius:13px;display:grid;grid-template-columns:27px 1fr;box-shadow:0 5px 18px rgba(32,42,79,.025)}.quick-row span,.summary-cards span{font-size:20px;grid-row:span 2}.quick-row small,.summary-cards small{color:var(--muted);font:500 9px 'DM Mono',monospace;letter-spacing:.8px}.quick-row strong,.summary-cards strong{font-size:16px;margin-top:2px}.difficulty-section{padding-top:90px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:25px}.section-heading h2,.badge-section h2{margin:0;font-size:26px;letter-spacing:-1px}.section-heading>p{max-width:300px;color:var(--muted);line-height:1.45;margin:0;font-size:14px}.difficulty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.difficulty-card{position:relative;display:grid;grid-template-columns:43px 1fr 15px;text-align:left;align-items:center;gap:9px;background:var(--surface);padding:18px 16px;border:1px solid var(--line);border-radius:14px;transition:.22s}.difficulty-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--shadow)}.difficulty-card:before{content:"";position:absolute;top:0;left:17px;right:17px;height:2px;background:var(--accent);opacity:0}.difficulty-card:hover:before{opacity:1}.diff-icon{color:var(--accent);font-size:27px}.difficulty-card b{display:block;font-size:16px}.difficulty-card small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.difficulty-card em{grid-column:2;font:10px 'DM Mono',monospace;color:var(--muted);font-style:normal;margin-top:4px}.difficulty-card>i{grid-row:span 2;grid-column:3;font-style:normal;color:var(--accent);font-size:18px}.game-layout{display:grid;grid-template-columns:167px minmax(360px,520px) 167px;justify-content:center;gap:45px;padding-top:19px}.game-side{padding-top:12px}.back-link{font-size:13px;color:var(--muted);padding:0 0 25px}.current-difficulty{display:flex;align-items:center;gap:10px;margin-bottom:32px}.current-difficulty>span{font-size:26px}.current-difficulty small,.game-stat small,.tool-title{display:block;font:500 9px 'DM Mono',monospace;color:var(--muted);letter-spacing:1.1px}.current-difficulty strong{font-size:17px}.game-stat{margin:22px 0}.game-stat strong{font:500 25px 'DM Mono',monospace;display:block;margin-top:5px}.game-stat.errors strong{color:var(--danger)}.game-stat i{font-size:13px;font-style:normal;color:var(--muted)}.side-action{font-weight:600;color:var(--muted);font-size:13px;display:block;padding:9px 0}.side-action:hover{color:var(--accent)}.play-area{position:relative}.board-wrap{position:relative}.sudoku-board{display:grid;grid-template-columns:repeat(9,1fr);background:var(--ink);border:3px solid var(--ink);border-radius:9px;overflow:hidden;box-shadow:0 18px 40px rgba(35,38,60,.14);aspect-ratio:1}.cell{position:relative;min-width:0;background:var(--board);border-right:1px solid #d9dce5;border-bottom:1px solid #d9dce5;font-size:clamp(18px,3.5vw,26px);font-weight:600;transition:background .12s,color .12s}.cell:nth-child(3n){border-right:2px solid var(--ink)}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--ink)}.cell.given{color:var(--ink);font-weight:800}.cell.entered{color:var(--accent)}.cell.peer{background:var(--peer)}.cell.same{background:var(--same)}.cell.selected{background:var(--selected)!important;color:#fff!important}.cell.hinted{box-shadow:inset 0 0 0 3px #f5b443;z-index:2}.cell.has-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;color:var(--accent);font-size:10px}.cell.has-notes i{font-style:normal;display:grid;place-items:center}.pause-overlay{position:absolute;z-index:5;inset:0;background:rgba(20,25,42,.92);color:#fff;display:grid;place-items:center;align-content:center;gap:8px;border-radius:9px}.pause-overlay span{font-size:42px}.pause-overlay h2{margin:0 0 13px}.hidden{display:none!important}.generation{position:absolute;z-index:4;inset:0;background:var(--bg);display:grid;place-content:center;text-align:center;gap:8px;min-height:400px}.generation small{color:var(--muted)}.spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;margin:auto;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.right-side{padding-top:84px}.tool-title{margin-bottom:10px}.tool{display:flex;width:100%;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px;font-weight:600}.tool span{color:var(--accent);font-size:18px;width:20px}.tool kbd{margin-left:auto;font:10px 'DM Mono',monospace;color:var(--muted);border:1px solid var(--line);padding:2px 4px;border-radius:3px}.tool:hover,.tool.active{color:var(--accent)}.tool.danger span{color:var(--danger)}.notes-active{font:600 8px 'DM Mono',monospace;letter-spacing:.8px;color:var(--accent);padding-top:17px;opacity:0}.notes-active.visible{opacity:1}.number-pad,.mobile-game-stats{display:none}.hint-message{min-height:0;opacity:0;transform:translateY(-5px);transition:.2s;display:flex;gap:8px;align-items:flex-start;color:var(--muted);font-size:13px;line-height:1.35;padding:0 4px}.hint-message.visible{margin-top:13px;opacity:1;transform:none}.hint-message span{color:#f5b443;font-size:19px}.hint-message p{margin:1px 0}.hint-message button{color:var(--muted);margin-left:auto}.daily-header{display:flex;justify-content:space-between;align-items:center;padding:47px 0 45px}.daily-header h1{margin-bottom:10px}.daily-header>div>p:last-child{color:var(--muted);margin:0}.daily-chip{padding:9px 14px;border-radius:99px;background:#fff3d9;color:#bb7915;font-size:13px;font-weight:600}.daily-card{background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:32px;display:grid;grid-template-columns:80px 1fr auto;gap:25px;align-items:center;box-shadow:var(--shadow)}.daily-symbol{background:linear-gradient(140deg,#ffdd9d,#f1a73d);width:75px;aspect-ratio:1;border-radius:18px;display:grid;place-items:center;font-size:37px;color:white;box-shadow:inset 0 0 18px #f1ab50}.daily-card h2{margin:0 0 7px;letter-spacing:-.8px}.daily-card p{margin:0;color:var(--muted);line-height:1.5;font-size:14px}.daily-meta{display:flex;gap:15px;margin-top:13px;font:10px 'DM Mono',monospace;color:var(--muted)}.daily-meta span:first-child{color:#bb7915}.daily-note{text-align:center;color:var(--muted);font-size:13px;padding:24px}.page-title{padding:45px 0 31px}.page-title h1{font-size:47px}.summary-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.stats-panel{background:var(--surface);border:1px solid var(--line);border-radius:17px;margin-top:29px;overflow:hidden}.stats-tabs{display:flex;gap:3px;padding:10px;border-bottom:1px solid var(--line);overflow:auto}.stats-tabs button{white-space:nowrap;padding:8px 11px;color:var(--muted);font-size:13px;border-radius:7px}.stats-tabs button.active{background:var(--accent-soft);color:var(--accent);font-weight:700}.difficulty-stats{display:grid;grid-template-columns:repeat(3,1fr);padding:16px}.difficulty-stats>div{padding:18px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.difficulty-stats>div:nth-child(3n){border-right:0}.difficulty-stats>div:nth-last-child(-n+3){border-bottom:0}.difficulty-stats small{display:block;font:9px 'DM Mono',monospace;color:var(--muted);letter-spacing:.7px}.difficulty-stats strong{font-size:23px;margin-top:6px;display:block}.badge-section{margin-top:37px}.badges{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:16px}.badge{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:15px;display:flex;align-items:center;gap:11px;opacity:.52}.badge.earned{opacity:1;border-color:#dedaff}.badge>span{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);font-size:19px;color:var(--accent)}.badge div{flex:1}.badge b,.badge small{display:block}.badge small{color:var(--muted);font-size:11px;margin-top:2px}.badge> :last-child{color:#4ade80}.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.settings-card{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:20px}.settings-card h2{font-size:18px;margin:0 0 8px}.setting{min-height:46px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);font-size:14px}.setting select{border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:7px;padding:5px 8px;font-size:12px}.toggle{width:38px;height:21px;border-radius:20px;background:#d9dce5;padding:3px;transition:.2s}.toggle i{display:block;width:15px;height:15px;background:#fff;border-radius:50%;transition:.2s}.toggle.on{background:var(--accent)}.toggle.on i{transform:translateX(17px)}.modal-backdrop{position:fixed;z-index:10;inset:0;background:rgba(16,21,35,.47);display:grid;place-items:center;padding:20px;backdrop-filter:blur(3px)}.modal{background:var(--surface);width:min(390px,100%);border-radius:19px;padding:30px;text-align:center;box-shadow:0 25px 70px rgba(0,0,0,.22);animation:modal .2s}@keyframes modal{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}.modal h2{font-size:28px;letter-spacing:-1.2px;margin:0 0 9px}.modal>p:not(.eyebrow){color:var(--muted);line-height:1.5;font-size:14px}.modal-action{display:block;width:100%;margin-top:10px}.win-mark{width:55px;height:55px;display:grid;place-items:center;margin:0 auto 14px;border-radius:17px;background:var(--accent-soft);color:var(--accent);font-size:29px}.win-mark.fail{background:#ffe6e9;color:var(--danger)}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);margin:24px 0 18px}.result-grid span{display:grid;gap:3px;color:var(--accent);font-size:17px}.result-grid b{color:var(--ink);font-size:16px}.result-grid small{font-size:10px;color:var(--muted)}.toast{position:fixed;z-index:20;left:50%;bottom:22px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:11px 16px;border-radius:9px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 8px 20px rgba(0,0,0,.2)}.toast.show{opacity:1;transform:translate(-50%,0)}[data-theme=dark]{--bg:#10131e;--surface:#191e2c;--ink:#f3f5fa;--muted:#a4adbf;--line:#2b3345;--accent:#9c90ff;--accent-soft:#292448;--board:#1d2331;--peer:#282f42;--same:#37345b;--selected:#8174f4}.high-contrast{--bg:#000;--surface:#070707;--ink:#fff;--muted:#e6e6e6;--line:#fff;--accent:#ffe600;--accent-soft:#3c3800;--peer:#262626;--same:#494400}.high-contrast .cell{border-color:#fff}.reduce-motion *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media (max-width: 820px){.topbar{height:64px;padding:0 16px}.brand{font-size:20px}.nav{order:3;position:fixed;z-index:8;bottom:11px;left:12px;right:12px;justify-content:space-around;padding:7px;background:color-mix(in srgb,var(--surface) 93%,transparent);box-shadow:0 8px 26px rgba(0,0,0,.18);backdrop-filter:blur(12px)}.nav button{font-size:11px;padding:8px}.level-pill{font-size:10px;padding:7px}.level-pill i{margin:0 4px}main{padding:12px 16px 89px}.hero{grid-template-columns:1fr;padding:35px 4px 34px;min-height:unset;text-align:center}.hero h1{font-size:46px;letter-spacing:-2.5px}.hero-copy{font-size:14px;margin:0 auto}.hero-actions{justify-content:center}.hero-board{display:none}.quick-row{grid-template-columns:1fr 1fr}.quick-row article:last-child{grid-column:span 2}.difficulty-section{padding-top:54px}.section-heading{display:block}.section-heading>p{margin-top:8px}.difficulty-grid{grid-template-columns:1fr 1fr;gap:10px}.difficulty-card{padding:14px 11px;grid-template-columns:31px 1fr}.difficulty-card em,.difficulty-card>i{display:none}.diff-icon{font-size:22px}.difficulty-card b{font-size:14px}.difficulty-card small{font-size:10px}.game-layout{display:block;padding-top:0}.game-side{display:none}.play-area{max-width:570px;margin:auto}.sudoku-board{border-width:2px;border-radius:7px}.cell{font-size:clamp(17px,7vw,27px)}.cell.has-notes{font-size:clamp(7px,2.7vw,10px);padding:2px}.mobile-game-stats{display:flex;justify-content:space-between;padding:13px 2px 9px;color:var(--muted);font-size:12px}.mobile-game-stats b{color:var(--ink);font:500 15px 'DM Mono',monospace}.number-pad{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}.number-pad button{background:var(--surface);border:1px solid var(--line);height:43px;border-radius:8px;font-size:19px;font-weight:600;box-shadow:0 3px 8px rgba(0,0,0,.04)}.number-pad .pad-note{font-size:16px;color:var(--accent)}.number-pad .pad-clear{color:var(--danger)}.generation{min-height:70vw}.hint-message{font-size:12px}.daily-header{padding:31px 0;display:block}.daily-header h1{font-size:43px}.daily-chip{display:inline-block;margin-top:15px}.daily-card{padding:23px;grid-template-columns:1fr;gap:16px}.daily-symbol{width:56px}.daily-card .primary{width:100%}.page-title{padding:26px 0}.page-title h1{font-size:40px}.summary-cards{grid-template-columns:1fr 1fr}.difficulty-stats{grid-template-columns:1fr 1fr}.difficulty-stats>div:nth-child(3n){border-right:1px solid var(--line)}.difficulty-stats>div:nth-child(2n){border-right:0}.difficulty-stats>div:nth-last-child(-n+3){border-bottom:1px solid var(--line)}.difficulty-stats>div:nth-last-child(-n+2){border-bottom:0}.badges{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}.settings-card{padding:17px}}
@media (max-width: 380px){.difficulty-grid{grid-template-columns:1fr}.quick-row{gap:8px}.quick-row article{padding:13px}.hero-actions{flex-direction:column}.hero-actions button{width:100%}.number-pad{gap:5px}.number-pad button{height:39px}}

.remaining-panel{margin-top:15px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.remaining-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.remaining-heading span{font:600 9px 'DM Mono',monospace;color:var(--muted);letter-spacing:1px}.remaining-heading small{font-size:10px;color:var(--muted)}.remaining-numbers{display:grid;grid-template-columns:repeat(9,1fr);gap:5px}.remaining-number{display:grid;place-items:center;gap:0;padding:4px 0;border-radius:7px;background:var(--bg);line-height:1}.remaining-number b{font-size:17px}.remaining-number small{font:500 10px 'DM Mono',monospace;color:var(--accent);margin-top:3px}.remaining-number.complete{opacity:.58}.remaining-number.complete small{color:#45b978}.cell.error{background:#ffe5e8!important;color:#dd3f50!important;box-shadow:inset 0 0 0 2px #f27b87}.cell.error.selected{background:var(--danger)!important;color:#fff!important}.badge-toast{position:fixed;z-index:30;right:22px;top:22px;display:flex;align-items:center;gap:10px;min-width:245px;padding:12px 15px;border:1px solid #d9d4ff;border-radius:12px;background:var(--surface);box-shadow:0 16px 35px rgba(27,30,57,.18);transform:translateY(-18px);opacity:0;pointer-events:none;transition:.28s}.badge-toast.show{transform:none;opacity:1;animation:badge-pop .55s}.badge-toast>span{font-size:26px}.badge-toast small,.badge-toast strong{display:block}.badge-toast small{font:600 8px 'DM Mono',monospace;color:var(--accent);letter-spacing:.8px}.badge-toast strong{font-size:14px;margin-top:2px}@keyframes badge-pop{50%{transform:translateY(3px) scale(1.035)}}
@media (max-width:820px){.remaining-panel{margin-top:11px;padding:10px}.remaining-heading small{font-size:9px}.remaining-number b{font-size:15px}.remaining-number small{font-size:9px}.badge-toast{left:16px;right:16px;top:15px;min-width:0}}
