:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f3efe6;--paper-deep:#e9e2d4;--card:#fffdf8e6;--ink:#202522;--muted:#6e756f;--line:#cfc9bd;--line-strong:#535d58;--blue:#315f72;--blue-soft:#dce9eb;--amber:#c8843d;--amber-soft:#f6e6cf;--note:#a86428;--note-selected:#ffe1a8;--red:#ae4b46;--shadow:0 24px 70px #36332b1a}*{box-sizing:border-box}html{background:var(--paper);min-width:320px}body{min-height:100vh;color:var(--ink);background:radial-gradient(circle at 12% 7%, #fffc, transparent 32rem), radial-gradient(circle at 90% 40%, #c6dad84d, transparent 34rem), var(--paper);margin:0;font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit}button:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #315f7259}.app-loading{min-height:100vh;color:var(--muted);place-content:center;justify-items:center;display:grid}.localized-loading{text-align:center;width:min(560px,100% - 32px);margin:0 auto;padding:36px}.localized-loading .loading-mark{object-fit:cover}.localized-loading h1{color:var(--ink);margin:22px 0 8px;font:500 clamp(28px,7vw,42px)/1.15 Georgia,serif}.localized-loading p{max-width:460px;margin:0;font-size:14px;line-height:1.8}.language-entry-fallback{margin-top:18px}.language-entry-fallback p+p{margin-top:8px}.language-entry-fallback a{color:var(--blue)}.challenge-home{place-items:center;min-height:100dvh;padding:24px;display:grid;overflow-y:auto}.challenge-card{text-align:center;background:var(--card);width:min(440px,100%);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid #535d5821;border-radius:28px;justify-items:center;padding:clamp(30px,7vw,50px);display:grid}.challenge-mark{aspect-ratio:1;width:68px;color:var(--paper);background:var(--ink);border-radius:19px;place-items:center;margin-bottom:24px;font:28px Noto Serif SC,Songti SC,serif;display:grid;box-shadow:0 16px 40px #2025222e}.challenge-card .eyebrow{color:var(--amber);align-items:center;gap:7px;font-weight:700;display:flex}.challenge-card h1{letter-spacing:.08em;margin:10px 0 8px;font:500 clamp(40px,9vw,55px)/1.1 Noto Serif SC,Songti SC,serif}.challenge-card>p{color:var(--muted);margin:0;font-size:13px;line-height:1.8}.challenge-actions{gap:13px;width:100%;margin-top:30px;display:grid}.challenge-primary,.challenge-secondary{cursor:pointer;border-radius:14px;width:100%}.challenge-primary{color:#fff;background:var(--ink);letter-spacing:.05em;border:0;justify-content:center;align-items:center;gap:9px;min-height:56px;font-weight:700;display:flex;box-shadow:0 12px 28px #20252229}.challenge-secondary{min-height:47px;color:var(--blue);background:#ffffff8c;border:1px solid #535d582e}.challenge-primary:hover,.challenge-secondary:hover{transform:translateY(-1px)}.difficulty-selector{border:0;grid-template-columns:repeat(3,1fr);gap:7px;min-width:0;margin:0;padding:0;display:grid}.difficulty-selector legend{width:100%;color:var(--muted);letter-spacing:.12em;margin-bottom:8px;font-size:10px}.difficulty-selector label{cursor:pointer;min-width:0;position:relative}.difficulty-selector input{opacity:0;pointer-events:none;position:absolute}.difficulty-selector span{min-height:43px;color:var(--muted);background:#f7f4ed;border:1px solid #535d5824;border-radius:11px;place-items:center;font-size:12px;display:grid}.difficulty-selector input:checked+span{color:var(--blue);background:var(--blue-soft);border-color:#315f7275;font-weight:700}.difficulty-selector input:focus-visible+span{outline-offset:2px;outline:3px solid #315f7259}.challenge-local-note{color:var(--muted);align-items:center;gap:9px;margin-top:25px;font-size:10px;display:flex}.challenge-local-note .local-dot{flex:none;display:inline-block}.loading-mark,.brand-mark{object-fit:cover;display:block}.loading-mark{aspect-ratio:1;width:56px;box-shadow:var(--shadow);border-radius:16px}.app-shell{grid-template-rows:64px minmax(0,1fr);width:min(1120px,100% - 32px);height:100dvh;min-height:0;margin:0 auto;display:grid;overflow:hidden}.site-header{border-bottom:1px solid #535d5826;justify-content:space-between;align-items:center;height:64px;display:flex}.brand{color:inherit;align-items:center;gap:12px;text-decoration:none;display:inline-flex}.brand-mark{aspect-ratio:1;border-radius:11px;width:40px}.brand>span:last-child{gap:1px;display:grid}.brand strong{letter-spacing:.06em}.brand small,.eyebrow{color:var(--muted);letter-spacing:.2em;font-size:9px}.site-header nav{gap:9px;display:flex}.language-switcher{min-width:42px;min-height:42px;color:var(--blue);cursor:pointer;letter-spacing:.04em;background:#fffdf88c;border:1px solid #535d5829;border-radius:12px;padding:0 10px;font-size:12px;font-weight:700}.language-switcher:hover{background:#fffdf8f5}.header-button,.icon-button{cursor:pointer;background:0 0;border:0}.header-button{background:#fffdf88c;border:1px solid #535d5829;border-radius:12px;align-items:center;gap:8px;min-height:42px;padding:0 15px;font-size:13px;transition:transform .16s,background .16s;display:inline-flex}.header-button:hover{background:#fffdf8f5;transform:translateY(-1px)}.header-button.is-primary{border-color:var(--ink);color:#fff;background:var(--ink)}.hero{justify-content:space-between;align-items:end;gap:32px;padding:48px 0 32px;display:flex}.hero .eyebrow,.side-heading .eyebrow,.modal-heading .eyebrow{color:var(--amber);align-items:center;gap:7px;font-weight:700;display:flex}.hero h1{letter-spacing:.08em;margin:9px 0 6px;font-family:Noto Serif SC,Songti SC,serif;font-size:clamp(36px,5vw,59px);font-weight:500;line-height:1.1}.hero p,.side-heading p,.modal-intro{color:var(--muted);margin:0;line-height:1.8}.local-note{background:#fffdf86b;border:1px solid #535d581f;border-radius:14px;align-items:center;gap:10px;padding:12px 16px;display:flex}.local-dot{background:#6b8e6d;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 5px #6b8e6d1f}.local-note span:last-child{display:grid}.local-note strong{font-size:12px}.local-note small{color:var(--muted);margin-top:2px;font-size:10px}.game-layout{grid-template-columns:minmax(0,min(620px,100dvh - 190px)) minmax(260px,1fr);justify-content:center;align-items:center;gap:20px;height:100%;min-height:0;padding:14px 0;display:grid}.game-panel,.side-panel{background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid #535d5821;border-radius:24px}.game-panel{padding:16px}.game-meta{justify-content:space-between;align-items:center;min-height:36px;margin-bottom:8px;display:flex}.game-meta>div{align-items:center;gap:10px;display:flex}.difficulty-pill{color:var(--blue);background:var(--blue-soft);border-radius:999px;align-items:center;gap:7px;padding:7px 11px;font-size:12px;font-weight:700;display:inline-flex}.difficulty-pill i{background:currentColor;border-radius:50%;width:6px;height:6px}.difficulty-pill.easy{color:#53775a;background:#e2ecdf}.difficulty-pill.hard{color:#9a5c2f;background:var(--amber-soft)}.puzzle-number{color:#9b9d97;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.timer{color:var(--muted)}.timer strong{color:var(--ink);letter-spacing:.04em;font:600 18px ui-monospace,SFMono-Regular,Menlo,monospace}.board-shell{background:#e5ded1;border-radius:15px;padding:7px}.sudoku-board{aspect-ratio:1;border:2px solid var(--line-strong);background:var(--line);border-radius:10px;grid-template-columns:repeat(9,1fr);width:100%;display:grid;overflow:hidden}.sudoku-cell{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;background:#fffdf8;place-items:center;min-width:0;padding:0;transition:background .1s,color .1s;display:grid;position:relative}.sudoku-cell.box-right{border-right:2px solid var(--line-strong)}.sudoku-cell.box-bottom{border-bottom:2px solid var(--line-strong)}.sudoku-cell.is-related{background:#eef3f1}.sudoku-cell.is-matching{background:#dfeceb}.sudoku-cell.is-selected{z-index:1;color:#fff;background:var(--blue);box-shadow:inset 0 0 0 2px #254d5d}.sudoku-cell.is-error{color:var(--red);background:#f9e5e2}.sudoku-cell.is-selected.is-error{color:#fff;background:var(--red)}.sudoku-cell.is-auto-filled{z-index:2;animation:auto-fill-pop .62s cubic-bezier(.2, .8, .2, 1) var(--auto-fill-delay,0s)}.sudoku-cell.is-auto-filled:after{content:"";z-index:-1;pointer-events:none;animation:auto-fill-ring .62s ease-out var(--auto-fill-delay,0s) both;border:2px solid #2a7a68b8;border-radius:50%;position:absolute;inset:12%}@keyframes auto-fill-pop{0%{transform:scale(.82);box-shadow:inset 0 0 #2a7a6800}42%{transform:scale(1.08);box-shadow:inset 0 0 0 4px #2a7a683d}to{transform:scale(1);box-shadow:inset 0 0 #2a7a6800}}@keyframes auto-fill-ring{0%{opacity:0;transform:scale(.35)}35%{opacity:1}to{opacity:0;transform:scale(1.65)}}.cell-value{font-family:Noto Serif SC,Georgia,serif;font-size:clamp(20px,4.6vw,34px);line-height:1}.is-given .cell-value{color:var(--ink);font-weight:700}.is-entry .cell-value{color:var(--blue);font-weight:500}.is-selected .cell-value{color:#fff}.notes-grid{color:var(--note);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font:600 clamp(7px,1.3vw,11px) ui-monospace,monospace;display:grid;position:absolute;inset:3px}.sudoku-cell.is-selected .notes-grid{color:var(--note-selected)}.notes-grid span{place-items:center;display:grid}.board-footer{min-height:25px;color:var(--muted);gap:17px;padding:8px 4px 0;font-size:11px;display:flex}.board-footer span:last-child{color:var(--blue);margin-left:auto}.side-panel{padding:22px}.side-heading h2{margin:6px 0;font-family:Noto Serif SC,Songti SC,serif;font-size:25px;font-weight:500}.side-heading p{font-size:13px}.controls{margin-top:18px}.number-pad{grid-template-columns:repeat(5,1fr);gap:7px;display:grid}.number-key{cursor:pointer;background:#f7f4ed;border:1px solid #535d5826;border-radius:11px;place-content:center;gap:2px;min-height:52px;padding:6px 2px;transition:transform .12s,background .12s;display:grid}.number-key:hover:not(:disabled){background:#fff;transform:translateY(-2px)}.number-key strong{color:var(--blue);font:500 24px Noto Serif SC,Georgia,serif}.number-key span{color:#a0a29e;font-size:8px}.number-key:disabled,.tool-button:disabled{cursor:not-allowed;opacity:.4}.tool-grid{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;display:grid}.tool-button{min-height:40px;color:var(--muted);cursor:pointer;background:#ffffff85;border:1px solid #535d5824;border-radius:11px;align-items:center;gap:8px;padding:0 10px;display:flex}.tool-button span{color:var(--ink);font-size:12px}.tool-button kbd{color:#a1a49f;margin-left:auto;font-size:8px}.tool-button.is-active{color:var(--blue);background:var(--blue-soft);border-color:#315f7266}.tool-button.tool-accent{color:var(--amber)}.keyboard-tip{color:var(--muted);border-top:1px solid #535d581f;margin-top:14px;padding-top:12px;font-size:10px}.keyboard-tip>span{letter-spacing:.14em;font-weight:700}.keyboard-tip p{margin:6px 0 0}kbd{background:#fff9;border:1px solid #535d5829;border-radius:4px;padding:2px 4px;font-family:inherit}.site-footer{color:#92958f;justify-content:space-between;padding:25px 2px 34px;font-size:10px;display:flex}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#191d1a75;place-items:center;padding:22px;animation:.15s fade-in;display:grid;position:fixed;inset:0}.modal-card{background:#fbf8f1;border:1px solid #ffffff59;border-radius:23px;width:min(470px,100%);max-height:calc(100vh - 44px);padding:27px;animation:.18s rise-in;overflow:auto;box-shadow:0 30px 90px #1113114d}.modal-heading{justify-content:space-between;gap:20px;display:flex}.modal-heading h2{margin:7px 0 0;font-family:Noto Serif SC,Songti SC,serif;font-size:28px;font-weight:500}.icon-button{width:38px;height:38px;color:var(--muted);background:#2025220f;border-radius:50%;place-items:center;display:grid}.modal-intro{margin-top:11px;font-size:13px}.difficulty-list{gap:9px;margin-top:22px;display:grid}.difficulty-option{text-align:left;cursor:pointer;background:#ffffff8a;border:1px solid #535d5824;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;min-height:70px;padding:12px 15px;display:grid}.difficulty-option:hover{background:#fff;border-color:#315f725c}.difficulty-option>span:nth-child(2){gap:4px;display:grid}.difficulty-option strong{font-size:13px}.difficulty-option small{color:var(--muted);font-size:10px}.difficulty-mark{border:3px solid #91aa92;border-radius:50%;width:12px;height:12px}.difficulty-mark.medium{border-color:#7894a0}.difficulty-mark.hard{border-color:#c68a55}.stats-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:22px;display:grid}.stat-card{min-height:108px;color:var(--blue);background:var(--blue-soft);border-radius:14px;align-content:space-between;padding:14px;display:grid}.stat-card span{color:var(--muted);font-size:10px}.stat-card strong{color:var(--ink);font:500 24px Noto Serif SC,Georgia,serif}.difficulty-stats{background:#535d581f;border:1px solid #535d581f;border-radius:14px;gap:1px;margin-top:16px;display:grid;overflow:hidden}.difficulty-stats>div{background:#fbf8f1;grid-template-columns:1fr auto auto;gap:14px;padding:12px 14px;font-size:12px;display:grid}.difficulty-stats small{color:var(--muted)}.completion-mark{width:64px;height:64px;color:var(--amber);background:var(--amber-soft);border-radius:50%;place-items:center;margin:22px auto 0;display:grid}.completion-copy{color:var(--muted);text-align:center;margin:15px auto}.completion-stats{background:#535d580f;border-radius:12px;justify-content:center;gap:28px;padding:14px;font-size:12px;display:flex}.primary-button{color:#fff;background:var(--ink);cursor:pointer;border:0;border-radius:12px;width:100%;min-height:47px;margin-top:17px}.secondary-button{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;margin-top:12px;font-size:12px}.victory-fireworks{z-index:30;pointer-events:none;position:fixed;inset:0;overflow:hidden}.victory-firework{--firework-duration:1.7s;top:var(--firework-top);width:1px;height:1px;color:var(--firework-color);animation:victory-firework-flight var(--firework-duration) cubic-bezier(.22, .68, .3, 1) var(--firework-delay) both;position:absolute}.victory-firework.is-left{left:-3vw}.victory-firework.is-right{right:-3vw}.victory-firework__core,.victory-firework__trail,.victory-firework__flash,.victory-firework__spark,.victory-firework__ring{animation-delay:calc(var(--firework-delay) + var(--spark-delay,0s));pointer-events:none;animation-fill-mode:both;display:block;position:absolute}.victory-firework__core{width:8px;height:8px;animation-name:victory-firework-core;animation-duration:var(--firework-duration);background:#fff;border-radius:50%;margin:-4px;box-shadow:0 0 8px 3px #fff,0 0 18px 7px}.victory-firework__trail{opacity:0;width:82px;height:3px;animation-name:victory-firework-trail;animation-duration:var(--firework-duration);border-radius:999px;top:-1px}.victory-firework.is-left .victory-firework__trail{background:linear-gradient(90deg,#0000,currentColor 72%,#fff);right:8px}.victory-firework.is-right .victory-firework__trail{background:linear-gradient(90deg,#fff,currentColor 28%,#0000);left:8px}.victory-firework__flash{width:16px;height:16px;animation-name:victory-firework-flash;animation-duration:var(--firework-duration);background:#fff;border-radius:50%;margin:-8px;box-shadow:0 0 32px 18px}.victory-firework__spark{width:var(--spark-width);transform-origin:0;height:3px;animation-name:victory-firework-spark;animation-duration:var(--firework-duration);background:currentColor;border-radius:999px;margin:-1.5px 0 0 -1.5px;box-shadow:0 0 7px 1px}.victory-firework__ring{width:10px;height:10px;animation-name:victory-firework-ring;animation-duration:var(--firework-duration);border:2px solid;border-radius:50%;margin:-5px}@keyframes victory-firework-flight{0%{transform:translateY(8vh)scale(.6)}34%{transform:translate3d(var(--firework-midway), var(--firework-arc), 0) scale(.82)}59%,to{transform:translate3d(var(--firework-travel), 0, 0) scale(1)}}@keyframes victory-firework-core{0%{opacity:0}8%,55%{opacity:1}61%,to{opacity:0}}@keyframes victory-firework-trail{8%{opacity:0;transform:scaleX(.25)}18%,52%{opacity:.78;transform:scaleX(1)}60%,to{opacity:0;transform:scaleX(.35)}}@keyframes victory-firework-flash{0%,57%{opacity:0;transform:scale(.15)}60%{opacity:.95;transform:scale(1)}68%,to{opacity:0;transform:scale(2.2)}}@keyframes victory-firework-spark{0%,57%{opacity:0;transform:rotate(var(--spark-angle)) translateX(0) scaleX(.4)}61%{opacity:1}to{opacity:0;transform:rotate(var(--spark-angle)) translateX(var(--spark-distance)) scaleX(.1)}}@keyframes victory-firework-ring{0%,60%{opacity:0;transform:scale(.2)}64%{opacity:.65}to{opacity:0;transform:scale(11)}}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)scale(.98)}}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#151917;--paper-deep:#1c211e;--card:#1d231feb;--ink:#eef1ec;--muted:#a7afa8;--line:#3b453f;--line-strong:#8c9991;--blue:#82b7c7;--blue-soft:#243b42;--amber:#dda15f;--amber-soft:#493522;--note:#d99a5a;--note-selected:#ffdda0;--red:#ef8a82;--shadow:0 24px 70px #00000052}body{background:radial-gradient(circle at 12% 7%, #69827321, transparent 32rem), radial-gradient(circle at 90% 40%, #3f6d7429, transparent 34rem), var(--paper)}button:focus-visible,a:focus-visible,.difficulty-selector input:focus-visible+span{outline-color:#82b7c780}.challenge-card,.game-panel,.side-panel{border-color:#dfe8e11a}.challenge-primary,.header-button.is-primary,.primary-button{color:#151917;background:#dce4de;border-color:#dce4de}.challenge-secondary,.language-switcher,.header-button,.tool-button,.difficulty-option{background:#2b322db8;border-color:#dfe8e121}.challenge-secondary:hover,.language-switcher:hover,.header-button:hover,.number-key:hover:not(:disabled),.difficulty-option:hover{background:#343c37}.header-button.is-primary:hover{background:#f0f4f1}.difficulty-selector span,.number-key{background:#252b27;border-color:#dfe8e11f}.site-header,.keyboard-tip{border-color:#dfe8e11f}.local-note,.difficulty-stats{background:#2b322d80;border-color:#dfe8e11a}.difficulty-pill.easy{color:#a5c9aa;background:#293a2c}.difficulty-pill.hard{color:#e1aa77}.puzzle-number,.number-key span,.tool-button kbd,.site-footer{color:#8f9891}.board-shell{background:#272e2a}.sudoku-cell{background:#202521}.sudoku-cell.is-related{background:#29322e}.sudoku-cell.is-matching{background:#294047}.sudoku-cell.is-selected{color:#f7faf7;background:#376d80;box-shadow:inset 0 0 0 2px #76a9b9}.sudoku-cell.is-error{color:var(--red);background:#452b2a}.sudoku-cell.is-selected.is-error{color:#fff;background:#a84f49}.is-selected .cell-value{color:#f7faf7}kbd{background:#ffffff12;border-color:#dfe8e121}.modal-backdrop{background:#050706ad}.modal-card{background:#202521;border-color:#dfe8e11f;box-shadow:0 30px 90px #00000085}.icon-button,.completion-stats{background:#ffffff12}.difficulty-stats>div{background:#202521}}@media (min-width:761px) and (max-height:720px){.side-heading p,.keyboard-tip{display:none}.side-heading h2{margin-bottom:0;font-size:21px}.controls{margin-top:11px}}@media (max-width:760px){body{overflow:hidden}.app-shell{grid-template-rows:58px minmax(0,1fr);width:min(100% - 16px,560px)}.site-header{height:58px}.game-layout{grid-template-columns:minmax(0,1fr);place-content:start center;gap:8px;height:100%;padding:8px 0;overflow:hidden}.game-panel{border-radius:16px;padding:6px}.game-meta{min-height:34px;margin:0 5px 6px}.board-shell{border-radius:10px;padding:3px}.sudoku-board{border-radius:7px}.board-footer{min-height:23px;padding:7px 5px 0}.side-panel{border-radius:16px;padding:10px}.side-heading{display:none}.controls{margin-top:0}.number-pad{grid-template-columns:repeat(9,1fr);gap:3px}.number-key{border-radius:8px;min-height:42px}.number-key strong{font-size:19px}.number-key span,.keyboard-tip{display:none}.tool-grid{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.tool-button{justify-content:center;gap:4px;min-height:42px;padding:4px 6px}.tool-button kbd{display:none}}@media (max-width:640px){.app-shell{width:calc(100% - 12px)}.brand small,.header-button span,.local-note{display:none}.header-button{justify-content:center;width:40px;min-height:40px;padding:0}.language-switcher{width:40px;min-width:40px;min-height:40px;padding:0}.board-footer span:last-child{display:none}.modal-card{padding:22px}}@media (max-width:400px){.site-header nav{gap:4px}.brand{gap:8px}.brand strong{font-size:12px}}@media (max-width:760px) and (max-height:720px){body{overflow-y:auto}.app-shell{height:auto;min-height:100dvh;overflow:visible}.game-layout{overflow:visible}}@media (prefers-reduced-motion:reduce){.victory-fireworks{display:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
