@font-face{font-family:Editorial;src:url('/assets/editorial.woff') format('woff');font-display:swap}@font-face{font-family:Interface;src:url('/assets/interface.woff') format('woff');font-display:swap}
:root{color-scheme:dark;--bg:#101b28;--ink:#f6f1e7;--muted:#a6b4c3;--line:#344758;--coral:#f78e78;--card:#f7f0e4;--gap:clamp(6px,1.6vw,24px);--overlap:clamp(18px,2vw,28px)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 Interface,system-ui,sans-serif}body::before{display:none;content:'';position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 20%,#1c304333,transparent 70%);z-index:-1}button,a,input{touch-action:manipulation}button,a{ -webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid var(--coral);outline-offset:4px}a{color:inherit}button{border:1px solid var(--button-line);background:transparent;border-radius:10px;padding:9px 15px;display:inline-flex;gap:8px;align-items:center;justify-content:center;line-height:1.3}button:hover:not(:disabled){background:var(--hover-bg);border-color:var(--coral)}button.primary,button.active{background:var(--coral);border-color:var(--coral);color:var(--on-accent)}button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.wrap{max-width:1160px;padding:0 24px;margin:auto}.header{height:78px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{text-decoration:none;display:inline-flex;gap:12px;align-items:center;font:italic bold 40px/1 Editorial,Georgia,serif;letter-spacing:-2px}.sun{color:var(--coral);width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.5}.header-actions{display:flex;gap:8px}.text-button{border:0;padding:9px 10px;font-size:13px;color:var(--ink)}.intro{text-align:center;padding:22px 0 10px}.intro h1{font:bold clamp(30px,4vw,48px)/1.2 Editorial,Georgia,serif;margin:0 0 12px;letter-spacing:-1.2px}.game-nav{display:flex;justify-content:center;gap:24px;border-bottom:1px solid var(--line);margin-top:18px}.game-nav a{text-decoration:none;padding:14px 18px;font:17px/1.2 Editorial,Georgia,serif;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--muted);white-space:nowrap}.game-nav a.current{color:var(--coral);border-color:var(--coral)}.game-nav a:hover{color:var(--coral)}.modebar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:17px 0}.modes{display:flex;gap:8px}.modes button{border-radius:22px;font-size:12px;padding:8px 15px}.streak{font-size:12px}.streak strong{color:var(--coral);font:25px Editorial,serif;margin:0 4px}.game-shell{padding-top:0}.sol-board{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap);padding:0 20px 12px;min-height:420px}.sol-top{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap);margin-bottom:0}.slot{width:100%;aspect-ratio:.76;border:1px dashed var(--slot-line);border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:clamp(22px,3vw,44px);color:var(--empty-ink);padding:0;position:relative}.slot.stock{border-style:solid}.slot:hover{border-color:var(--coral)}.slot-spacer{aspect-ratio:.76}.sol-column{position:relative;min-height:calc(var(--card-height,175px) + var(--overlap)*6);border-radius:10px}.sol-column.empty{border:1px dashed var(--empty-line);min-height:0;height:var(--card-height,175px)}.playing-card{display:block;position:absolute;left:0;top:calc(var(--i)*var(--overlap));width:100%;aspect-ratio:.76;padding:0;border:0;border-radius:9px;background:var(--card);color:#182330;box-shadow:0 3px 9px #0003;transition:transform .13s,box-shadow .13s;overflow:hidden;user-select:none}.slot .playing-card{top:0;height:100%;aspect-ratio:auto}.playing-card:hover:not(:disabled){background:var(--card);box-shadow:0 0 0 2px #f78e7899}.playing-card.red{color:var(--red)}.playing-card.selected{box-shadow:0 0 0 3px var(--coral);transform:translateY(-4px);z-index:90!important}.playing-card.hinted{box-shadow:0 0 0 3px #f2c86a;z-index:85!important}.playing-card.back{background:#1b2d42 url('/assets/card-back.webp') center/100% 100%;box-shadow:0 0 0 1px #617286,0 3px 7px #0003;pointer-events:none}.corner{position:absolute;top:5px;left:8px;text-align:center;display:flex;flex-direction:column;line-height:.95;font:bold clamp(12px,2vw,23px) Editorial,Georgia,serif}.corner small{font-size:.95em}.corner.bottom{top:auto;left:auto;right:8px;bottom:5px;transform:rotate(180deg)}.pips{position:absolute;inset:21% 25%;display:grid;grid-template-columns:1fr 1fr;align-content:space-around;justify-items:center;font-size:clamp(16px,2.4vw,32px);line-height:1}.pips.single{display:flex;align-items:center;justify-content:center;font-size:clamp(27px,5vw,70px)}.court{font:italic bold clamp(27px,5vw,65px) Editorial,serif;text-align:center}.court small{display:block;font-size:.5em}.game-toolbar{border-top:1px solid var(--line);padding:15px 0 5px;display:flex;align-items:center;justify-content:space-between;gap:15px}.counters{display:flex;gap:24px;font-size:12px;white-space:nowrap}.counters strong{font:20px Editorial,serif;color:var(--coral);margin-left:8px;font-variant-numeric:tabular-nums}.toolbar-buttons{display:flex;gap:8px;flex-wrap:wrap}.toolbar-buttons button{font-size:12px;padding:9px 12px}.instruction{text-align:center;color:var(--muted);font:13px/1.5 Editorial,serif;margin:7px 0 18px}.message{min-height:24px;text-align:center;color:var(--coral);font-size:12px;margin:0 0 4px}.seo{max-width:820px;margin:35px auto;color:var(--muted);font-size:14px}.seo h2{color:var(--ink);font:26px Editorial,serif;line-height:1.4}.seo h3{color:var(--ink);font-size:16px;margin-top:24px}.seo p{margin:10px 0}.seo a{color:var(--coral)}.site-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 0;font-size:11px;color:var(--muted)}.footer-links{display:flex;gap:18px;flex-wrap:wrap}.footer-links button{font-size:11px;padding:0;border:0;border-radius:0}.footer-links a{text-decoration:none}.grid-game{max-width:480px;margin:8px auto 25px}.grid-top{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:15px;font-size:12px;color:var(--muted)}.grid-top strong{color:var(--coral);font-size:22px;margin-left:6px}.grid-board{display:grid;gap:7px;border-radius:12px;padding:10px;background:var(--board)}.mine-board{grid-template-columns:repeat(var(--mine-size,9),minmax(0,1fr));gap:4px}.mine-cell{aspect-ratio:1;padding:0;border-radius:5px;border:1px solid var(--cell-border);background:var(--cell);font:bold 19px/1 Interface,sans-serif}.mine-cell.open{background:var(--panel);border-color:var(--cell-border)}.mine-cell[data-number='1']{color:var(--mine-one)}.mine-cell[data-number='2']{color:var(--mine-two)}.mine-cell[data-number='3']{color:var(--coral)}.mine-cell[data-number='4']{color:var(--mine-four)}.mine-cell.mine{background:var(--mine-bg)}.mine-controls{display:flex;gap:8px;justify-content:center;margin:14px 0}.mine-controls button{font-size:12px}.sudoku-board{grid-template-columns:repeat(9,1fr);gap:0;background:var(--board-border);padding:2px;border-radius:5px;overflow:hidden}.sudoku-cell{aspect-ratio:1;padding:0;background:var(--panel);border:1px solid var(--cell-border);border-radius:0;font:22px Interface,sans-serif;color:var(--coral)}.sudoku-cell.fixed{color:var(--ink);font-weight:bold;background:var(--cell-fixed)}.sudoku-cell.sel{background:var(--cell-selected);outline:2px solid var(--coral);outline-offset:-2px;z-index:1}.sudoku-cell.related{background:var(--cell-related)}.sudoku-cell.error{color:var(--error-ink);background:var(--error-bg)}.sudoku-cell[data-col='2'],.sudoku-cell[data-col='5']{border-right:2px solid var(--board-border)}.sudoku-cell[data-row='2'],.sudoku-cell[data-row='5']{border-bottom:2px solid var(--board-border)}.numberpad{display:grid;grid-template-columns:repeat(var(--mine-size,9),minmax(0,1fr));gap:4px;margin:15px 0}.numberpad button{padding:10px 0;font-size:19px}.numberpad button.used{opacity:.4}.board2048{grid-template-columns:repeat(4,1fr);gap:10px;padding:12px;touch-action:none}.tile2048{aspect-ratio:1;display:flex;justify-content:center;align-items:center;border-radius:8px;background:var(--empty-tile);font:bold clamp(24px,5vw,44px) Interface,sans-serif;color:#1b2936}.tile2048[data-value='2']{background:#e7e1d5}.tile2048[data-value='4']{background:#e8d9ba}.tile2048[data-value='8']{background:#f1b287}.tile2048[data-value='16']{background:#f78e78}.tile2048[data-value='32']{background:#f77e6b}.tile2048[data-value='64']{background:#ef675f;color:white}.tile2048.high{background:#dfb35a;color:#172435;font-size:30px}.direction-pad{display:flex;justify-content:center;gap:8px;margin:14px 0}.direction-pad button{min-width:48px;height:44px;padding:0}.dialog{width:min(520px,calc(100vw - 32px));border:1px solid var(--button-line);border-radius:18px;background:var(--panel);color:var(--ink);padding:28px;box-shadow:0 25px 100px #0008}.dialog::backdrop{background:#08111cc9;backdrop-filter:blur(5px)}.dialog h2{font:30px/1.3 Editorial,serif;margin:0 0 17px}.dialog p,.dialog li{font-size:14px;color:var(--muted)}.dialog ol{padding-left:22px}.dialog .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.dialog-close{float:right;border:0;margin:-12px -12px 0 8px;padding:8px}.stat-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0;font-size:14px}.stat-row strong{color:var(--coral)}.win-sun{width:60px;height:60px;display:block;margin:10px auto 20px;color:var(--coral)}.hidden{display:none!important}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--coral);color:var(--on-accent);border-radius:10px;padding:10px 20px;font-size:13px;box-shadow:0 4px 30px #0005;z-index:500;text-align:center;max-width:90vw}.copyfield{width:100%;min-height:130px;resize:vertical;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:12px;font:13px/1.5 Interface,system-ui}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(min-width:900px){.sol-board{--card-height:calc((min(1160px,100vw) - 88px - 144px)/7/.76)}}@media(max-width:899px){.sol-board{--card-height:calc((100vw - 88px - 6*var(--gap))/7/.76);min-height:350px}.playing-card{border-radius:6px}.slot{border-radius:6px}.game-toolbar{flex-direction:column;align-items:center}.counters{justify-content:center}.toolbar-buttons{justify-content:center}.header{height:72px}.brand{font-size:34px}}@media(max-width:540px){.wrap{padding:0 14px}.header-actions{gap:0}.text-button{font-size:10px;padding:8px 6px}.brand{font-size:30px;gap:7px}.sun{width:23px;height:23px}.intro{padding:15px 0 5px}.intro h1{font-size:29px;letter-spacing:-.7px}.game-nav{gap:1px;margin-top:14px;justify-content:space-between}.game-nav a{padding:12px 8px;font-size:14px}.modebar{padding:14px 0}.modes button{font-size:10px;padding:8px 11px}.streak{font-size:10px}.streak strong{font-size:19px}.sol-board{padding:0 1px 10px;--card-height:calc((100vw - 30px - 6*var(--gap))/7/.76);--overlap:19px;min-height:260px}.corner{top:3px;left:4px;font-size:12px}.corner.bottom{right:4px;bottom:3px}.pips{inset:29% 20%;font-size:13px}.pips.single{font-size:25px}.court{font-size:25px}.playing-card{border-radius:4px;box-shadow:0 1px 4px #0004}.slot{border-radius:4px}.toolbar-buttons{gap:5px}.toolbar-buttons button{font-size:10px;padding:10px 8px}.toolbar-buttons button svg{width:14px;height:14px}.instruction{font-size:11px;margin:10px 4px 17px}.site-footer{align-items:flex-start;flex-direction:column;gap:15px}.seo{margin:28px 0;font-size:12px}.seo h2{font-size:22px}.sudoku-cell{font-size:20px}.mine-cell{font-size:17px}.dialog{padding:22px}.dialog h2{font-size:25px}.game-toolbar{gap:10px}.tile2048.high{font-size:27px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
/* Keep game controls reachable without reducing the board to tiny targets. */
.modes{flex-wrap:wrap}.modebar{flex-wrap:wrap}.streak{white-space:nowrap}.grid-top{flex-wrap:wrap}.grid-top>span{min-width:0}.sol-column{min-height:0}.playing-card.selected,.playing-card.hinted{z-index:var(--i)!important;transform:none}.pips{grid-template-rows:repeat(var(--pip-rows,1),minmax(0,1fr));align-items:center;font-size:calc(var(--card-height,175px)*.085)}.pips.single{font-size:clamp(27px,5vw,70px)}.dialog{max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain}.dialog .actions{flex-wrap:wrap}.dialog .actions button{min-height:44px}.dialog-close{min-width:44px;min-height:44px}.toast{bottom:max(18px,env(safe-area-inset-bottom));overflow-wrap:anywhere}
@media(max-width:700px){
 body{font-size:14px}.wrap{padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))}.header{height:auto;min-height:64px;padding:10px 0;gap:8px;flex-wrap:wrap}.header .brand{font-size:29px;gap:7px}.header-actions{gap:2px;margin-left:auto}.header-actions button{font-size:11px;min-height:44px;padding:8px}.intro{padding:8px 0 4px}.intro h1{font-size:clamp(23px,5.8vw,32px);line-height:1.2;margin-bottom:7px}.game-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:10px}.game-nav a{font:13px/1.2 Interface,system-ui,sans-serif;padding:15px 2px;min-height:46px;text-align:center}.modebar{padding:12px 0;gap:8px}.modes{gap:6px}.modes button{font-size:11px;min-height:40px;padding:8px 12px}.modebar>.modes{flex:1 1 245px}.streak{font-size:11px}.streak strong{font-size:20px}.sol-board{padding:0 1px 10px;--gap:clamp(4px,1vw,7px);--card-height:calc((100vw - 26px - 6*var(--gap))/7/.76);--overlap:26px;gap:var(--gap);min-height:0}.sol-column{min-height:0}.sol-top{gap:var(--gap)}.slot{border-radius:5px;font-size:22px}.playing-card{border-radius:5px}.corner{top:4px;left:4px;display:flex;flex-direction:row;gap:2px;align-items:center;font:bold clamp(13px,3.2vw,19px)/1 Editorial,serif}.corner small{font-size:.9em}.corner.bottom{display:none}.pips:not(.single){inset:32% 12% 12%;display:flex;align-items:center;justify-content:center;font-size:clamp(22px,5vw,34px)}.pips:not(.single)>span{display:none}.pips:not(.single)::after{content:attr(data-suit)}.pips.single{inset:30% 10% 12%;font-size:clamp(22px,5vw,40px)}.court{font-size:clamp(22px,5vw,40px);line-height:1}.court small{font-size:.48em}.game-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding-top:12px}.counters{justify-content:center;gap:24px;font-size:12px}.counters strong{font-size:19px}.toolbar-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;width:100%}.toolbar-buttons button{min-height:44px;font-size:11px;padding:9px 5px;gap:5px}.toolbar-buttons button svg{width:16px;height:16px;flex-shrink:0}.instruction{font:12px/1.5 Interface,system-ui,sans-serif;margin:10px 0 12px}.message{font-size:12px;line-height:1.5;padding:0 4px;margin-bottom:12px}.grid-game{margin:6px auto 18px;max-width:440px}.grid-top{font-size:12px;gap:5px;margin-bottom:10px}.grid-top strong{font-size:19px}.grid-top .text-button{min-height:44px;font-size:13px}.grid-board{padding:8px}.mine-board{gap:3px}.mine-cell{font-size:17px;min-height:0;min-width:0}.mine-controls{margin:12px 0}.mine-controls button{min-height:44px;font-size:12px}.sudoku-board{padding:2px}.sudoku-cell{font-size:clamp(17px,4.5vw,23px);min-height:0;min-width:0}.numberpad{gap:3px;margin:12px 0}.numberpad button{min-height:46px;padding:8px 0;font-size:19px}.board2048{gap:8px;padding:10px}.tile2048{font-size:clamp(25px,7vw,42px)}.tile2048.high{font-size:clamp(21px,5.5vw,30px)}.direction-pad button{min-height:46px;min-width:52px}.seo{font-size:14px;line-height:1.75;margin:28px 0}.seo h2{font-size:23px}.site-footer{padding-bottom:max(22px,env(safe-area-inset-bottom));gap:12px}.footer-links{gap:6px 15px}.footer-links a,.footer-links button{font-size:12px;min-height:44px;display:inline-flex;align-items:center}.dialog{padding:20px;max-width:calc(100vw - 24px);width:480px}.dialog h2{font-size:25px}.dialog p,.dialog li{font-size:14px}.dialog .actions button{font-size:13px}
}
@media(max-width:360px){.header .brand{font-size:27px}.header-actions button{font-size:10px;padding:8px 6px}.game-nav a{font-size:12px}.toolbar-buttons button{font-size:10px}.modes button{font-size:10px;padding-inline:10px}.sol-board{--overlap:26px}}
@media(max-height:520px) and (orientation:landscape){.intro{padding-top:0}.intro h1{font-size:24px}.header{min-height:50px}.game-nav{margin-top:5px}}
@supports(width:1cqw){.game-shell{container-type:inline-size}@media(max-width:700px){.sol-board{--card-height:calc((100cqw - 2px - 6*var(--gap))/7/.76)}}}
.skip-link{position:absolute;left:12px;top:8px;z-index:1000;transform:translateY(-150%);padding:12px;background:var(--coral);color:var(--on-accent);border-radius:8px}.skip-link:focus{transform:none}

.analytics-consent{max-width:1120px;margin:16px auto;padding:18px 22px;background:var(--panel);color:var(--ink);border:1px solid var(--button-line);border-radius:12px;font:14px/1.6 Interface,system-ui,sans-serif}
.analytics-consent[hidden],[data-action="analytics-preferences"][hidden]{display:none!important}
.locale-nav{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px 20px;font-size:12px;padding:4px 0 10px}.locale-nav a{display:inline-flex;align-items:center;min-height:44px;text-underline-offset:4px}.locale-nav [aria-current="page"]{color:var(--coral);text-decoration-thickness:2px}
@media(max-width:700px){.locale-nav{justify-content:center;gap:6px 15px;padding-bottom:4px;font-size:11px}.header .brand{font-size:27px;letter-spacing:-1px}}
.analytics-consent h2{font:24px/1.2 Editorial,serif;margin:0 0 8px}.analytics-consent p{margin:8px 0}.analytics-choice{font-size:12px}.analytics-options{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.analytics-options button{min-height:44px;padding:10px 16px;background:transparent;color:inherit;border:1px solid var(--button-line);border-radius:8px;font:inherit;cursor:pointer}.analytics-options button:focus-visible{outline:3px solid var(--coral);outline-offset:3px}
@media(max-width:700px){.analytics-consent{margin:12px;padding:14px;font-size:13px}.analytics-consent h2{font-size:21px}.analytics-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-options button{font-size:12px;padding:9px 6px}}

.modebar{flex-wrap:wrap}.modebar .modes{flex-wrap:wrap}.mine-board[style*="6"] .mine-cell{font-size:22px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.toolbar-buttons button,.modes button,.mine-controls button{min-height:44px}
@media(max-height:520px) and (orientation:landscape){.header{height:auto;min-height:52px}.locale-nav{padding:0}.intro{padding:0}.intro h1{font-size:24px;margin-bottom:4px}.game-nav{margin-top:6px}.game-nav a{padding-block:10px}.game-toolbar{flex-wrap:wrap}.sol-board{--overlap:26px}.dialog{max-height:calc(100dvh - 20px)}}

/* A person plays at a bright desk, between notes, or in a quiet evening room.
   Each appearance gives the whole game a coherent surface and readable states. */
:root{--panel:oklch(0.27303 0.03243 243.87);--board:oklch(0.31504 0.03732 241.81);--cell:oklch(0.36280 0.04588 248.06);--cell-border:oklch(0.44309 0.04468 246.55);--cell-fixed:oklch(0.32591 0.03992 241.11);--cell-selected:oklch(0.36243 0.04243 246.58);--cell-related:oklch(0.34061 0.04790 249.39);--board-border:oklch(0.68830 0.03167 248.29);--error-ink:oklch(0.85791 0.07672 21.74);--error-bg:oklch(0.38100 0.07851 2.36);--mine-one:oklch(0.82451 0.08411 247.83);--mine-two:oklch(0.85726 0.08590 160.09);--mine-four:oklch(0.79608 0.08251 296.34);--mine-bg:oklch(0.53684 0.12668 22.28);--empty-tile:oklch(0.36243 0.04243 246.58);--button-line:oklch(0.58709 0.03816 239.15);--slot-line:oklch(0.58387 0.03131 243.43);--empty-line:oklch(0.49439 0.03376 245.39);--empty-ink:oklch(0.62388 0.02795 250.10);--red:oklch(0.51778 0.17651 21.39);--on-accent:oklch(0.21853 0.03023 253.21);--hover-bg:oklch(0.31504 0.03732 241.81);--radius:12px}
:root[data-theme="desk"]{color-scheme:light;--bg:oklch(0.95171 0.01366 92.98);--ink:oklch(0.30376 0.02578 235.08);--muted:oklch(0.48528 0.02529 231.04);--line:oklch(0.83094 0.02052 109.93);--coral:oklch(0.49428 0.12048 39.16);--card:oklch(0.97948 0.01387 88.68);--panel:oklch(0.97625 0.01105 89.72);--board:oklch(0.88320 0.02155 109.74);--cell:oklch(0.93583 0.01759 96.11);--cell-border:oklch(0.78780 0.02610 124.37);--cell-fixed:oklch(0.92260 0.01878 113.36);--cell-selected:oklch(0.89189 0.05162 59.46);--cell-related:oklch(0.91497 0.02290 114.98);--board-border:oklch(0.59834 0.03273 142.08);--error-ink:oklch(0.47382 0.16118 20.33);--error-bg:oklch(0.90524 0.02796 23.17);--mine-one:oklch(0.46415 0.11134 251.84);--mine-two:oklch(0.46794 0.08844 158.21);--mine-four:oklch(0.45845 0.13280 304.80);--mine-bg:oklch(0.55378 0.14196 26.92);--empty-tile:oklch(0.83322 0.02516 119.58);--button-line:oklch(0.64056 0.03158 135.68);--slot-line:oklch(0.65726 0.04006 132.83);--empty-line:oklch(0.76327 0.03095 126.10);--empty-ink:oklch(0.59834 0.03273 142.08);--red:oklch(0.47664 0.16013 15.80);--on-accent:oklch(0.97948 0.01387 88.68);--hover-bg:oklch(0.92111 0.01867 106.76);--radius:5px}
:root[data-theme="garden"]{color-scheme:dark;--bg:oklch(0.30204 0.04075 172.22);--ink:oklch(0.95163 0.02915 100.58);--muted:oklch(0.82412 0.03249 154.04);--line:oklch(0.52363 0.05439 161.41);--coral:oklch(0.83664 0.09606 89.66);--card:oklch(0.95464 0.02913 100.58);--panel:oklch(0.35617 0.04628 169.25);--board:oklch(0.40862 0.05171 165.07);--cell:oklch(0.45389 0.05463 162.02);--cell-border:oklch(0.58879 0.04300 157.55);--cell-fixed:oklch(0.39091 0.05111 164.29);--cell-selected:oklch(0.43955 0.04881 147.69);--cell-related:oklch(0.43691 0.05314 162.62);--board-border:oklch(0.75995 0.04906 138.40);--error-ink:oklch(0.89428 0.05719 38.45);--error-bg:oklch(0.44408 0.07818 30.30);--mine-one:oklch(0.86582 0.05847 234.28);--mine-two:oklch(0.87897 0.09294 133.33);--mine-four:oklch(0.83942 0.06441 306.63);--mine-bg:oklch(0.55942 0.11237 32.80);--empty-tile:oklch(0.47036 0.05463 152.45);--button-line:oklch(0.65870 0.05049 150.58);--slot-line:oklch(0.68537 0.04532 147.16);--empty-line:oklch(0.57849 0.05683 153.03);--empty-ink:oklch(0.71027 0.04939 143.13);--red:oklch(0.50344 0.15321 18.93);--on-accent:oklch(0.30565 0.04270 163.08);--hover-bg:oklch(0.38834 0.04951 163.19);--radius:16px}
.header{border-bottom:1px solid var(--line);height:auto;min-height:80px;padding-block:16px}
.header-actions{align-items:center;gap:4px}.header-control{min-height:44px;border-radius:8px;gap:7px;font-size:12px;padding:9px 10px}
.header-control svg,.appearance-menu svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.header-control:hover{background:var(--hover-bg)}
.appearance-menu{position:relative;z-index:100}.appearance-menu summary{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--button-line);border-radius:var(--radius);cursor:pointer;list-style:none;color:var(--ink)}
.appearance-menu summary::-webkit-details-marker{display:none}.appearance-menu summary:hover,.appearance-menu[open] summary{background:var(--hover-bg);border-color:var(--coral)}.appearance-menu summary:focus-visible{outline:3px solid var(--coral);outline-offset:3px}
.appearance-panel{position:absolute;top:50px;right:0;width:270px;max-width:calc(100vw - 24px);background:var(--panel);color:var(--ink);border:1px solid var(--button-line);border-radius:var(--radius);padding:16px;max-height:calc(100dvh - 100px);overflow:auto;box-shadow:0 12px 30px #091b2426;margin:0}
.appearance-panel legend{float:left;width:100%;font:600 14px/1.4 Interface,system-ui,sans-serif;margin-bottom:12px;padding:0}.appearance-panel p{clear:both;font:11px/1.5 Interface,system-ui,sans-serif;color:var(--muted);margin:12px 0 0}
.appearance-option{clear:both;display:flex;align-items:center;gap:10px;min-height:58px;cursor:pointer;border-top:1px solid var(--line);padding:9px 0}.appearance-option input{accent-color:var(--coral);width:16px;height:16px;flex-shrink:0}.appearance-option strong{display:block;font-size:13px;font-weight:600}.appearance-option small{display:block;font-size:11px;color:var(--muted)}.appearance-option:has(input:focus-visible){outline:2px solid var(--coral);outline-offset:3px}.appearance-swatch{width:28px;height:34px;border-radius:4px;border:1px solid var(--button-line);position:relative;overflow:hidden;flex-shrink:0}.appearance-swatch::after{content:'';position:absolute;inset:8px;border:2px solid currentColor;border-radius:2px}.swatch-club{background:oklch(0.21853 0.03023 253.21);color:oklch(0.75395 0.13209 32.80)}.swatch-desk{background:oklch(0.95171 0.01366 92.98);color:oklch(0.49428 0.12048 39.16)}.swatch-garden{background:oklch(0.30204 0.04075 172.22);color:oklch(0.83664 0.09606 89.66)}
.intro{padding:28px 0 12px}.intro h1{font-size:clamp(28px,3.5vw,42px);letter-spacing:-1px}
.game-nav a{font:14px/1.3 Interface,system-ui,sans-serif;min-height:48px}.game-nav a.current{font-weight:600}.modes button{border-radius:var(--radius);font-size:12px}
.grid-board{border-radius:var(--radius);border:1px solid var(--line)}.sudoku-board{border-radius:5px;border:0}.game-toolbar .toolbar-buttons button{border-radius:var(--radius)}
.playing-card.hinted{box-shadow:0 0 0 3px var(--coral);outline:2px dashed var(--ink);outline-offset:2px}.playing-card.selected{box-shadow:0 0 0 3px var(--coral)}
:root[data-theme="desk"] .playing-card.back{background:oklch(0.40793 0.03374 181.73) url('/assets/card-back.webp') center/100% 100%}
:root[data-theme="garden"] .playing-card.back{background:oklch(0.40979 0.05373 154.19);box-shadow:inset 0 0 0 4px oklch(0.95464 0.02913 100.58),inset 0 0 0 5px oklch(0.58879 0.04300 157.55),0 2px 6px #091b2433}
:root[data-theme="garden"] .playing-card.back::after{content:'✦';position:absolute;inset:0;display:grid;place-items:center;color:oklch(0.83664 0.09606 89.66);font-size:clamp(18px,3vw,36px)}
.footer-utilities{display:flex;justify-content:flex-end;border-top:1px solid var(--line);padding-top:12px}.locale-nav{gap:8px;padding:0}.locale-nav a{width:44px;height:44px;justify-content:center;text-decoration:none;border:1px solid transparent;border-radius:8px;font-family:system-ui,sans-serif;font-size:24px;line-height:1}.locale-nav a:hover{background:var(--hover-bg)}.locale-nav [aria-current="page"]{border-color:var(--coral);background:var(--hover-bg)}.site-footer{padding-top:12px}.seo{max-width:72ch}.sudoku-cell:disabled{opacity:1}
@media(max-width:700px){.header{min-height:66px;padding-block:10px;flex-wrap:nowrap}.header .brand{font-size:26px;gap:6px}.header .sun{width:21px;height:21px}.header-actions{gap:2px}.header-actions .header-control{width:44px;padding:0;font-size:12px}.header-control span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.intro{padding:20px 0 8px}.intro h1{font-size:clamp(25px,5.8vw,32px)}.game-nav a{font-size:12px}.modebar{padding-block:14px}.footer-utilities{justify-content:center}}
@media(max-width:360px){.header .brand{font-size:23px}.header .sun{width:18px;height:18px}.header{gap:4px}}

.mine-cell:disabled{opacity:1}.mine-cell.mine{color:oklch(0.96572 0.01922 72.58)}

/* Play first: one navigation, the board, and the controls that affect the game. */
.header{min-height:64px;padding-block:10px}.header .brand{font-size:32px}.intro{padding:14px 0 0}.intro h1{font-size:30px;margin-bottom:0}.game-nav{margin-top:10px}.modebar{padding-block:12px;gap:8px}.modebar>.modes{flex:1 1 auto}.game-toolbar{padding-top:12px}.instruction{margin-bottom:10px}.message:empty{display:none}.message{min-height:0;margin-bottom:12px}.grid-game{margin-top:0;margin-bottom:16px}.grid-top{margin-bottom:10px}.footer-utilities{padding-top:10px;justify-content:space-between;gap:12px}.site-footer{padding-top:4px;padding-bottom:12px}.footer-links{gap:6px 16px}
.rules{border-top:1px solid var(--line);margin-top:16px;padding:0}.rules>summary{cursor:pointer;min-height:48px;display:list-item;padding:13px 0;font-size:13px;color:var(--muted);list-style-position:inside}.rules>summary:focus-visible{outline:3px solid var(--coral);outline-offset:3px}.rules .seo{margin:8px auto 24px;font-size:14px;line-height:1.7}.rules .seo h2{font:600 20px/1.4 Interface,system-ui,sans-serif}.rules .seo h3{font-size:15px}.rules p{max-width:70ch}
.analytics-consent{max-width:none;margin:8px 0;padding:12px 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;font-size:12px;line-height:1.6}.analytics-consent h2{font:600 14px/1.4 Interface,system-ui,sans-serif;margin-bottom:6px}.analytics-consent p{margin:4px 0;max-width:72ch}.analytics-choice:empty{display:none}.analytics-options{margin-top:8px;gap:8px}.analytics-options button{font-size:12px;padding:9px 12px;border-color:var(--button-line)}
.score{position:relative}.score-gain{position:absolute;left:100%;top:0;margin-left:8px;white-space:nowrap;color:var(--coral);font-weight:600;animation:score-rise .5s cubic-bezier(.16,1,.3,1) both;pointer-events:none}
.tile-new{animation:tile-appear .12s cubic-bezier(.16,1,.3,1) both}.tile-merged{animation:tile-join .18s cubic-bezier(.16,1,.3,1) both}
@keyframes tile-appear{from{opacity:.3;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
@keyframes tile-join{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes score-rise{from{opacity:1;transform:translateY(3px)}to{opacity:0;transform:translateY(-16px)}}
.challenge-finish{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:12px}.challenge-finish p{margin:0}.challenge-finish strong{color:var(--coral)}.challenge-finish button{min-height:44px;font-size:12px}.result-card{text-align:center}.result-brand{font-weight:600}.result-card .result-score{font-size:44px;line-height:1.2;color:var(--coral);font-variant-numeric:tabular-nums}.result-card p{color:var(--muted);margin:8px 0}.result-board{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:7px;max-width:220px;margin:16px auto;border-radius:var(--radius);background:var(--board)}.result-board .tile2048{font-size:20px;border-radius:4px}.result-board .tile2048.high{font-size:18px}
@media(max-width:700px){.header{min-height:58px;padding-block:7px}.header .brand{font-size:26px}.intro{padding:10px 0 0}.intro h1{font-size:25px}.game-nav{margin-top:8px}.game-nav a{min-height:44px;padding-block:13px}.modebar{padding-block:10px}.modes button{font-size:11px;padding-inline:10px}.grid-top{font-size:12px}.grid-board.board2048{padding:9px;gap:7px}.game-toolbar{gap:8px}.instruction{font-size:11px}.analytics-consent{margin:8px 0;padding:12px 0}.analytics-consent h2{font-size:14px}.analytics-options{display:flex}.analytics-options button{padding:9px 12px}.rules .seo{font-size:13px}.site-footer{gap:8px}.footer-links a,.footer-links button{font-size:11px;min-height:40px}.footer-utilities{justify-content:center}}
@media(prefers-reduced-motion:reduce){.tile-new,.tile-merged,.score-gain{animation:none!important}.score-gain{display:none}}

.challenge-toolbar{justify-content:center}.rules:not([open])+.analytics-consent{margin-top:0}

/* Brief milestone feedback stays out of the way of the board and controls. */
.level-progress{margin:0 0 12px}.level-progress>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:7px;font-size:12px}.level-progress strong{font-size:14px;color:var(--coral)}.level-progress>div>span{color:var(--muted)}
.level-track{height:5px;border-radius:9px;background:var(--board);overflow:hidden}.level-track>span{display:block;height:100%;background:var(--coral);transform-origin:left;transform:scaleX(var(--to));animation:level-fill .22s cubic-bezier(.16,1,.3,1) both}
.level-up strong{display:inline-block;animation:level-reveal .22s cubic-bezier(.16,1,.3,1) both}
@keyframes level-fill{from{transform:scaleX(var(--from))}to{transform:scaleX(var(--to))}}
@keyframes level-reveal{from{transform:translateY(4px);opacity:.5}to{transform:translateY(0);opacity:1}}
.level-confetti{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:100;contain:strict}.level-confetti i{position:absolute;left:50%;top:42%;width:7px;height:11px;background:var(--coral);border-radius:2px;opacity:0;animation:confetti-flight .7s cubic-bezier(.16,1,.3,1) var(--delay) both}.level-confetti i:nth-child(4n+2){background:#f6c767}.level-confetti i:nth-child(4n+3){background:#70cbb2}.level-confetti i:nth-child(4n){background:#92b8f1}
@keyframes confetti-flight{0%{opacity:0;transform:translate(0,0) rotate(0)}10%{opacity:1}70%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 70px)) rotate(var(--spin))}}
.result-level{font-weight:600}.direction-pad button:active{transform:scale(.96)}
@media(prefers-reduced-motion:reduce){.level-track>span,.level-up strong{animation:none!important}.level-confetti{display:none}.direction-pad button:active{transform:none}}

/* One compact progress indicator per game, with feedback only for real changes. */
.game-progress{margin:0 0 12px;min-width:0}.progress-caption{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;font-size:12px;margin-bottom:7px}.progress-caption strong{font-weight:600;color:var(--coral)}.progress-caption>span{color:var(--muted);font-size:11px}.sol-progress{margin:0 20px 16px}.grid-top>.game-progress{flex:1;margin:0}.grid-top:has(>.game-progress){align-items:flex-start;gap:12px}
.card-reveal{animation:card-reveal .18s cubic-bezier(.16,1,.3,1) both}.cell-reveal{animation:cell-reveal .18s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms) both}.mine-cell.open:disabled{opacity:1}.number-enter{animation:number-enter .16s cubic-bezier(.16,1,.3,1) both}.group-complete{animation:group-complete .28s cubic-bezier(.16,1,.3,1) both}
@keyframes card-reveal{from{opacity:.35}to{opacity:1}}
@keyframes cell-reveal{from{opacity:.4;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes number-enter{from{opacity:.4;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes group-complete{from{box-shadow:inset 0 0 0 2px var(--coral)}to{box-shadow:inset 0 0 0 0 transparent}}
@media(max-width:700px){.sol-progress{margin-inline:1px}.progress-caption{font-size:12px;gap:4px 8px}.grid-top>.game-progress .progress-caption{flex-direction:column;gap:1px}}
@media(prefers-reduced-motion:reduce){.card-reveal,.cell-reveal,.number-enter,.group-complete{animation:none!important}}

.game-progress .progress-caption strong{font-size:12px;margin-left:0}.playing-card.card-in-motion{z-index:91!important}

.win-sun{fill:currentColor}

/* One concise, always-visible explanation; detailed rules stay below the board. */
.game-introduction{max-width:62ch;margin:8px auto 0;color:var(--muted);font-size:13px;line-height:1.45;text-wrap:pretty}
@media(max-width:700px){.game-introduction{font-size:12px;margin-top:6px}}
