:root{--ink:#202523;--muted:#87908b;--line:#dfe5e1;--mint:#bde8d4;--mint-deep:#4ca982;--paper:#f8faf8}*{box-sizing:border-box}body{margin:0;background:#eef3ef;color:var(--ink);font-family:'Plus Jakarta Sans',sans-serif}.app-shell{max-width:850px;margin:auto;padding:30px 28px 35px}.topbar{display:flex;justify-content:space-between;align-items:center}.brand{font-size:22px;font-weight:800;letter-spacing:-1px}.brand-mark{display:inline-flex;color:#fff;background:var(--ink);width:29px;height:29px;border-radius:9px;align-items:center;justify-content:center;font-size:15px;margin-right:8px}.tagline{font-size:11px;color:#89948e;letter-spacing:.04em}.hero{display:flex;justify-content:space-between;align-items:end;padding:75px 14px 32px}.eyebrow,.label{font-size:10px;letter-spacing:.18em;color:var(--mint-deep);font-weight:700}.hero h1{font-size:45px;line-height:1.08;letter-spacing:-2.6px;margin:12px 0 0}.hero h1 em{font-style:normal;color:#82af9b}.stats{display:flex;gap:35px;padding-bottom:4px}.stats span{display:block;font-size:9px;letter-spacing:.17em;color:#9aa49e;font-weight:700;margin-bottom:7px}.stats strong{font-family:'DM Mono';font-size:22px;font-weight:500}.stats small{font-size:13px;color:#a4ada8}.game-card{background:rgba(255,255,255,.83);border:1px solid #e0e8e3;border-radius:22px;padding:28px 32px;box-shadow:0 15px 45px rgba(67,88,75,.07)}.level-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.level-row h2{margin:6px 0 0;font-size:20px;letter-spacing:-.7px}.level-buttons{display:flex;background:#eff4f0;border-radius:10px;padding:4px;gap:2px}.level,.chooser button{border:0;background:transparent;color:#87918b;padding:9px 16px;border-radius:7px;font:600 11px 'Plus Jakarta Sans';cursor:pointer}.level.active{background:white;color:var(--ink);box-shadow:0 2px 6px #dfe8e2}.board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);aspect-ratio:1;min-height:0;border:2px solid var(--ink);border-radius:10px;overflow:hidden;max-width:570px;margin:auto}.cell{display:flex;align-items:center;justify-content:center;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-family:'DM Mono';font-size:clamp(16px,3vw,25px);cursor:pointer;transition:.15s}.cell:nth-child(3n){border-right:2px solid #bac4be}.cell:nth-child(9n){border-right:0}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid #bac4be}.cell.given{background:#f0f5f1;font-weight:500;cursor:default}.cell.selected{background:#d9f2e5;color:#277b5b}.cell.error{background:#ffe0db;color:#c25749}.number-pad{display:flex;justify-content:center;gap:10px;margin:26px 0}.num{width:42px;height:42px;border-radius:10px;border:1px solid #dce5df;background:#fff;color:var(--ink);font:500 16px 'DM Mono';cursor:pointer;transition:.2s}.num:hover,.num.active{background:var(--mint);border-color:var(--mint)}.num.used{visibility:hidden}.hint{text-align:center;border-top:1px solid #edf1ee;padding-top:18px}.hint span{font-size:9px;letter-spacing:.15em;color:#a0aaa4;font-weight:700}.hint p{font-size:11px;color:#9aa39e;margin:8px 0 0}footer{text-align:center;color:#a0aaa4;font-size:10px;margin-top:25px}footer span{color:#7ac29e;margin:0 5px}.modal{position:fixed;inset:0;background:rgba(28,38,32,.32);display:flex;align-items:center;justify-content:center;padding:20px}.hidden{display:none}.modal-card{background:#fff;border-radius:22px;padding:42px 45px;text-align:center;max-width:370px;width:100%;box-shadow:0 25px 80px #263a2d44}.modal-icon{margin:auto auto 20px;background:var(--mint);color:#287c5d;border-radius:50%;width:54px;height:54px;display:grid;place-items:center;font-size:24px}.modal-card h2{font-size:29px;letter-spacing:-1px;margin:10px 0}.modal-card p:not(.eyebrow){color:#87928c;font-size:13px}.primary{margin-top:20px;border:0;background:var(--ink);color:#fff;border-radius:10px;padding:13px 22px;font:600 12px 'Plus Jakarta Sans';cursor:pointer}.primary span{margin-left:10px}.chooser{margin-top:22px}.chooser span{font-size:10px;color:#9aa49e}.chooser div{margin-top:8px}.chooser button{border:1px solid var(--line);margin:0 2px;color:var(--ink)}
@media(max-width:600px){.app-shell{padding:22px 16px}.tagline{display:none}.hero{padding:52px 4px 25px;display:block}.hero h1{font-size:36px}.stats{margin-top:28px;gap:28px}.game-card{padding:20px 15px}.level-row{display:block}.level-buttons{margin-top:15px;width:max-content}.level{padding:8px 13px}.number-pad{gap:4px}.num{width:34px;height:38px}}
.content-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:22px;align-items:start}.rules-panel{background:#e5eee8;border:1px solid #d7e3db;border-radius:22px;padding:26px 22px;color:#4e5e55}.rules-panel h2{font-size:22px;line-height:1.15;letter-spacing:-1px;margin:10px 0 28px}.rules-panel h2 em{font-style:normal;color:#75a98e}.rule{border-top:1px solid #cfddd3;padding:16px 0}.rule strong{font-size:11px}.rule p{font-size:10px;line-height:1.5;color:#829189;margin:7px 0 11px}.mini-grid,.mini-line,.mini-column{font:500 10px 'DM Mono';color:#4c9a79}.mini-grid{line-height:18px;letter-spacing:7px;background:#fff;border-radius:6px;padding:4px 7px;width:max-content}.mini-line{font-size:9px;word-spacing:3px;white-space:nowrap}.mini-column{line-height:14px}@media(max-width:800px){.content-layout{grid-template-columns:1fr}.rules-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.rules-panel h2{grid-column:1/-1}.rule:last-child{grid-column:1/-1}}
.content-layout{grid-template-columns:570px 230px;justify-content:center}.game-card{width:570px}.mini-board{display:grid;grid-template-columns:repeat(9,1fr);width:100%;aspect-ratio:1;background:#fff;border:1px solid #b9cbc0;border-radius:5px;overflow:hidden}.mini-board i{font-style:normal;font:500 7px 'DM Mono';display:grid;place-items:center;border-right:1px solid #e1eae4;border-bottom:1px solid #e1eae4;color:#4c9a79}.mini-board i:nth-child(3n){border-right:1px solid #b9cbc0}.mini-board i:nth-child(9n){border-right:0}.mini-board i:nth-child(n+19):nth-child(-n+27),.mini-board i:nth-child(n+46):nth-child(-n+54){border-bottom:1px solid #b9cbc0}@media(max-width:850px){.content-layout{grid-template-columns:minmax(0,570px)}.game-card{width:100%}.rules-panel{width:100%}}
/* refined compact professional layout */
body{background:#f3f6f4;color:#17211d}.app-shell{padding-top:20px;padding-bottom:18px}.hero{padding:28px 14px 20px}.hero h1{font-size:40px}.game-card{background:#fff;border-color:#dce6e0;box-shadow:0 10px 30px rgba(35,55,44,.06);padding:22px 28px}.rules-panel{background:#edf4ef;border-color:#d6e3da;padding:22px 20px}.rules-panel h2{margin-bottom:18px}.rule{padding:11px 0}.rule p{margin:5px 0 8px}.number-pad{margin:18px 0}.hint{padding-top:12px}.stats{gap:28px}.board{max-width:520px}.mini-board{max-width:145px}.rules-panel .mini-board{margin-top:4px}footer{margin-top:14px}@media(max-width:850px){.hero{padding-top:24px}.game-card{padding:18px 20px}.rules-panel{padding:18px}.app-shell{padding-bottom:12px}}@media(max-height:800px) and (min-width:851px){.hero{padding-top:18px;padding-bottom:14px}.hero h1{font-size:34px}.game-card{padding:16px 24px}.number-pad{margin:12px 0}.hint{display:none}.rules-panel{padding:16px}.rules-panel h2{font-size:19px;margin-bottom:10px}.rule{padding:7px 0}footer{display:none}}
.game-card>.stats{justify-content:flex-end;padding:0 2px 10px;border-bottom:1px solid #edf1ee;margin-bottom:14px}.game-card>.stats strong{font-size:18px}.game-card>.stats span{margin-bottom:4px}
.hero{display:flex;justify-content:space-between;align-items:end}.hero h1{font-size:36px}.hero>.stats{display:flex;margin:0 0 4px}.game-card>.stats{display:none}@media(max-width:600px){.hero{display:block}.hero>.stats{margin-top:20px}}
.cell.selected{background:#b9efd4!important;color:#176b4d;box-shadow:inset 0 0 0 3px #4ca982;font-weight:600}.cell.selected.given{background:#b9efd4!important}
.rules-panel h2{font-size:24px}.rule strong{font-size:13px;color:#34473d}.rule p{font-size:12px;line-height:1.55}.rules-panel .eyebrow{font-size:11px}.mini-board{max-width:155px}@media(max-height:800px) and (min-width:851px){.rules-panel h2{font-size:21px}.rule strong{font-size:12px}.rule p{font-size:10px}}
.cell.block-a{background:#fff}.cell.block-b{background:#eef7f1}.cell.given.block-b{background:#e5f0e9}.cell.row-focus{box-shadow:inset 0 2px 0 #79b89a,inset 0 -2px 0 #79b89a}.cell.col-focus{box-shadow:inset 2px 0 0 #79b89a,inset -2px 0 0 #79b89a}.cell.selected{box-shadow:inset 0 0 0 3px #2f9a70!important}
.cell.row-focus{box-shadow:inset 0 2px 0 #4b9f79,inset 0 -2px 0 #4b9f79}.cell.col-focus{box-shadow:inset 2px 0 0 #4b9f79,inset -2px 0 0 #4b9f79}.cell.row-focus.col-focus{box-shadow:inset 0 2px 0 #4b9f79,inset 0 -2px 0 #4b9f79,inset 2px 0 0 #4b9f79,inset -2px 0 0 #4b9f79}
.cell.row-focus{background-color:#d9f0e3!important;border-top:2px solid #3e9870;border-bottom:2px solid #3e9870}.cell.col-focus{background-color:#d9f0e3!important;border-left:2px solid #3e9870;border-right:2px solid #3e9870}.cell.selected{background:#a9e6c7!important}
.cell.row-focus,.cell.col-focus{background-color:#dfeaf3!important;border-color:#8eafc5!important}.cell.selected{background:#a9e6c7!important;border-color:#2f9a70!important;color:#145b43}
.cell.selected.block-a{background:#fff!important}.cell.selected.block-b{background:#eef7f1!important}.cell.selected{box-shadow:inset 0 0 0 3px #2f9a70!important}
/* Keep the active cell visually distinct from its row and column guides. */
.cell.selected,
.cell.selected.block-a,
.cell.selected.block-b,
.cell.selected.row-focus,
.cell.selected.col-focus,
.cell.selected.row-focus.col-focus{
  background:#b9efd4!important;
  color:#176b4d!important;
  border-color:#2f9a70!important;
  box-shadow:inset 0 0 0 3px #2f9a70!important;
}
/* Emphasize the boundaries between 3×3 Sudoku regions. */
.cell:nth-child(3n){border-right:3px solid #718d7d}
.cell:nth-child(9n){border-right:0}
.cell:nth-child(n+19):nth-child(-n+27),
.cell:nth-child(n+46):nth-child(-n+54){border-bottom:3px solid #718d7d}
/* Three-pane desktop layout: the left pane owns the title and timer, while the game remains centered. */
@media(min-width:851px){
  .content-layout{grid-template-columns:220px 570px 230px;gap:22px;align-items:start}
  .left-pane{min-width:0}
  .left-pane .hero{display:block;padding:12px 4px 0}
  .left-pane .hero h1{font-size:32px;letter-spacing:-1.8px}
  .left-pane .hero>.stats{margin-top:28px;justify-content:flex-start;gap:24px}
}
@media(max-width:850px){.left-pane .hero{padding-top:24px}}
.scoreboard{margin:30px 4px 0;border-top:1px solid #dce6e0;padding-top:14px}.score-title{font-size:10px;letter-spacing:.16em;color:#87958d;font-weight:700;margin-bottom:8px}.scoreboard ol{list-style:none;padding:0;margin:0}.scoreboard li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid #e8efea;font:11px 'DM Mono';color:#52665a}.scoreboard li b{font-weight:500;color:#17211d}.scoreboard li span{font:600 9px 'Plus Jakarta Sans';color:#82a392;text-transform:uppercase}.score-tabs{display:flex;gap:3px;margin:10px 0 12px}.score-tab{border:1px solid #dce7df;background:transparent;color:#87958d;border-radius:6px;padding:5px 8px;font:600 9px 'Plus Jakarta Sans';cursor:pointer}.score-tab.active{background:#bde8d4;color:#285d46;border-color:#9ed7ba}.score-heading{font-size:8px;letter-spacing:.13em;color:#9aa9a0;font-weight:700;margin:5px 0}.local-heading{border-top:1px solid #dce6e0;padding-top:12px;margin-top:14px}.local-best{display:grid;gap:4px}.local-best div{display:flex;justify-content:space-between;font:10px 'DM Mono';color:#52665a}.local-best span{font:600 9px 'Plus Jakarta Sans';color:#82a392;text-transform:uppercase}@media(max-width:850px){.scoreboard{display:none}}
.board-tools{display:flex;align-items:center;justify-content:space-between;margin:10px 0 0;color:#91a098;font-size:10px}.notes-toggle{border:1px solid #d5e2da;background:#f5f9f6;color:#47735d;border-radius:7px;padding:6px 10px;font:600 10px 'Plus Jakarta Sans';cursor:pointer}.notes-toggle[aria-pressed=true]{background:#bde8d4;border-color:#8bcaaa}.cell{position:relative}.cell-notes{font:500 clamp(7px,1.2vw,10px) 'DM Mono';color:#579878;letter-spacing:1px;line-height:1.3;text-align:center}.cell.error{animation:cell-shake .3s ease;background:#ffb7ad!important}.counter-error{color:#c74e45!important;animation:counter-flash .5s ease}@keyframes cell-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}@keyframes counter-flash{50%{text-shadow:0 0 10px #ef7668}}.num{position:relative}.num.wrong-choice:after{content:"";position:absolute;left:8%;right:8%;top:50%;height:3px;background:#df655b;transform:rotate(-28deg);border-radius:3px;opacity:.9}.num.wrong-choice{background:#ffe4e0;border-color:#e88c82;color:#7d413c}
@media(max-width:600px){.board-tools{font-size:9px}.board-tools span{display:none}}
.cell.selected.error{background:#ff8f83!important;color:#7d2f2a!important;border-color:#d8564b!important;box-shadow:inset 0 0 0 3px #d8564b!important}
.notes-toggle{font-size:18px;line-height:1;width:34px;height:30px;padding:0;display:grid;place-items:center}.notes-toggle.active{background:#bde8d4;border-color:#8bcaaa}.cell-notes{position:absolute;inset:3px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);font:500 clamp(7px,1.2vw,10px) 'DM Mono';color:#579878;line-height:1}.cell-notes i{font-style:normal;display:grid;place-items:center}
.notes-toggle{display:block;margin:-8px auto 12px}
.number-pad{align-items:center;flex-wrap:wrap}.number-pad .notes-toggle{margin:0;width:42px;height:42px;border-radius:10px;font-size:20px}.board-tools{justify-content:center}
/* Improve pencil-note readability for all ages. */
.cell-notes{font-size:clamp(8px,1.35vw,11px);font-weight:600;color:#438564}
.theme-toggle{order:3;border:1px solid #dce5df;background:#fff;color:#52665a;border-radius:9px;width:36px;height:36px;font-size:19px;cursor:pointer}.level-row>div:first-of-type{order:1}.level-row>.level-buttons{order:2}.level-row{gap:12px}.dark{--ink:#e7eee9;--line:#3a4941;--mint:#2f7659;--mint-deep:#82d3ad;--paper:#18221d}.dark body{background:#111813}.dark .game-card{background:#1b2720;border-color:#33433a}.dark .rules-panel{background:#1b2a21;border-color:#34483b;color:#d5e1d9}.dark .level-buttons,.dark .theme-toggle,.dark .num{background:#243229;color:#dce8e0;border-color:#425549}.dark .level.active{background:#34473b;color:#fff}.dark .cell.block-a{background:#202c25}.dark .cell.block-b{background:#26382e}.dark .cell.given.block-b{background:#304237}.dark .cell.row-focus,.dark .cell.col-focus{background-color:#344d5c!important}.dark .hint p,.dark .scoreboard li{color:#aebdb3}.dark .theme-toggle{color:#f7d88a}
/* Full-page dark theme: soft charcoal surfaces and warm, low-glare text. */
body.dark{background:#151b18;color:#d8e1db}
body.dark .app-shell,body.dark .hero,body.dark .game-card,body.dark .rules-panel{color:#d8e1db}
body.dark .game-card{background:#202923;border-color:#35443b;box-shadow:0 12px 30px rgba(0,0,0,.28)}
body.dark .rules-panel{background:#1d2821;border-color:#34463b}
body.dark .level-buttons{background:#29362e}body.dark .level.active{background:#3a4b40;color:#e7eee9}
body.dark .theme-toggle,body.dark .num{background:#29362e;color:#d8e1db;border-color:#45584b}
body.dark .cell.block-a{background:#29352e}body.dark .cell.block-b{background:#314238}body.dark .cell.given.block-b{background:#3b4b40}
body.dark .cell.row-focus,body.dark .cell.col-focus{background-color:#3a5260!important}
body.dark .cell.selected,body.dark .cell.selected.block-a,body.dark .cell.selected.block-b{background:#4b9f79!important;color:#102219!important}
body.dark .num.wrong-choice{background:#58342f;color:#f0c3bc;border-color:#9d5c52}
body.dark .hint,body.dark .game-card>.stats{border-color:#35443b}body.dark .hint p,body.dark .scoreboard li,body.dark .tagline,body.dark .stats span{color:#a9b7ae}
body.dark .score-title{color:#9fb1a6}body.dark .rule{border-color:#384a3e}body.dark .rule p{color:#aebbb2}
body.dark footer{color:#9eaca3}body.dark .modal{background:rgba(5,10,7,.72)}body.dark .modal-card{background:#253129;color:#d8e1db}
body.dark .cell,body.dark .cell.given{color:#d8e1db}
body.dark .cell.selected,body.dark .cell.selected.given{color:#102219!important}
body.dark .cell-notes{color:#9bd1b2}
body.dark .scoreboard{border-color:#3a4a40}body.dark .score-title{color:#b7c7bd}body.dark .score-tab{background:#243229;color:#b7c7bd;border-color:#425549}body.dark .score-tab.active{background:#2f7659;color:#effaf3}body.dark .local-heading{border-color:#3a4a40}body.dark .local-best div{color:#c5d1c9}body.dark .scoreboard li{color:#c5d1c9;border-color:#35443b}body.dark .scoreboard li b{color:#e0e8e2}body.dark .scoreboard li span{color:#9fd0b2}
body.dark .mini-board{background:#29352e;border-color:#52665a}body.dark .mini-board i{color:#9fd0b2;border-color:#3d4d43}body.dark .mini-board i:nth-child(3n),body.dark .mini-board i:nth-child(n+19):nth-child(-n+27),body.dark .mini-board i:nth-child(n+46):nth-child(-n+54){border-color:#607568}
.seed-line{margin-top:6px;font-size:8px;letter-spacing:.12em;color:#9aa49e}.seed-line code{font:500 10px 'DM Mono';letter-spacing:.08em;color:#668f79}
body.dark .seed-line{color:#a9b7ae}body.dark .seed-line code{color:#9fd0b2}
.welcome-screen{min-height:100vh;display:grid;place-items:center;padding:32px 24px;background:#eef3ef}.welcome-inner{width:min(920px,100%);text-align:center}.welcome-inner h1{font-size:clamp(38px,6vw,66px);line-height:1.02;letter-spacing:-3px;margin:14px 0}.welcome-inner h1 em{font-style:normal;color:#82af9b}.welcome-copy{color:#87958d;font-size:14px;margin:0 0 32px}.difficulty-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;text-align:left}.difficulty-card{min-height:205px;padding:22px;border:1px solid #dce6e0;border-radius:18px;background:#fff;color:var(--ink);cursor:pointer;text-align:left;display:flex;flex-direction:column;transition:.2s;box-shadow:0 12px 28px #43584b0d}.difficulty-card:hover{transform:translateY(-4px);border-color:#8bcaaa;box-shadow:0 18px 35px #43584b18}.difficulty-card .card-kicker{font:600 10px 'DM Mono';color:#82af9b}.difficulty-card strong{font-size:25px;letter-spacing:-1px;margin-top:30px}.difficulty-card small{color:#87958d;font-size:11px;margin-top:7px}.difficulty-card b{margin-top:auto;font-size:11px;color:#397b5d}.difficulty-card b span{margin-left:8px}.dark .welcome-screen{background:#111813}.dark .difficulty-card{background:#1b2720;border-color:#34483b;color:#e7eee9}.dark .difficulty-card small{color:#aebdb3}@media(max-width:650px){.difficulty-cards{grid-template-columns:1fr}.difficulty-card{min-height:135px}.difficulty-card strong{margin-top:14px}} 
.welcome-brand{font:700 12px 'Plus Jakarta Sans';letter-spacing:.2em;color:#52665a;margin-bottom:34px}.welcome-brand span{color:#4ca982}@media(max-width:650px){.welcome-brand{margin-bottom:24px}}body.dark .welcome-brand{color:#d5e1d9}body.dark .welcome-brand span{color:#82d3ad}
.welcome-screen.hidden{display:none}
.app-shell.hidden{display:none}.welcome-screen{position:fixed;inset:0;z-index:20;overflow:auto}
.scoreboard{border-top:0;padding:0;margin-top:30px}.score-title{margin-bottom:10px}.score-tabs{gap:0;margin:0;align-items:flex-end}.score-tab{position:relative;border:1px solid #dce6e0;border-bottom:0;border-radius:8px 8px 0 0;background:#eef3ef;color:#87958d;padding:7px 9px;margin-right:4px}.score-tab.active{z-index:2;background:#fff;color:#285d46;border-color:#cbdad0;padding-top:8px;margin-bottom:-1px}.score-heading,.scoreboard ol,.local-heading,.local-best{border-left:1px solid #dce6e0;border-right:1px solid #dce6e0}.score-heading{margin:0;padding:10px 10px 5px}.scoreboard ol{padding:0 10px 8px;margin:0;border-bottom:1px solid #dce6e0}.local-heading{margin:0;padding:12px 10px 5px;border-top:0}.local-best{padding:0 10px 10px;border-bottom:1px solid #dce6e0;border-radius:0 0 8px 8px}.scoreboard li{padding:4px 0}.dark .score-tab{background:#18231d;border-color:#3a4a40}.dark .score-tab.active{background:#1b2720;color:#9fd0b2}.dark .score-heading,.dark .scoreboard ol,.dark .local-heading,.dark .local-best{border-color:#3a4a40}
.score-tabs + .score-heading{border-top:1px solid #dce6e0}.scoreboard ol li:nth-child(even){background:#f2f6f3;margin:0 -10px;padding-left:10px;padding-right:10px}.dark .score-tabs + .score-heading{border-top-color:#3a4a40}.dark .scoreboard ol li:nth-child(even){background:#243229}
