:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#152d4c;background:#f5f8fe;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #6ca1ff;outline-offset:2px}
.shell{max-width:1160px;margin:auto;padding:24px 32px 40px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:27px}.brand{display:flex;align-items:center;gap:11px;font-size:24px;font-weight:800;letter-spacing:.03em}.brand-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#2663df;color:white;font-size:30px;line-height:1}.brand-caption{font-size:14px;font-weight:600;color:#7b8ba4;border-left:1px solid #ccd6e6;padding-left:12px;margin-left:3px;letter-spacing:0}
.text-button{border:0;background:none;color:#3265c5;font-weight:700;padding:10px 8px}.text-button:hover{text-decoration:underline}.game-layout{display:grid;grid-template-columns:minmax(0,608px) minmax(290px,360px);gap:clamp(26px,5vw,70px);align-items:start;justify-content:center}.game-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:16px}.eyebrow{display:block;font-size:13px;font-weight:700;letter-spacing:.12em;color:#7588a5}.game-heading h1{margin:2px 0 0;font-size:29px;line-height:1.2}.stats{display:flex;gap:22px}.stats div{display:flex;flex-direction:column;gap:1px;align-items:flex-end}.stats span{font-size:13px;color:#7c8ca4}.stats strong{font-size:18px;font-variant-numeric:tabular-nums}
.board-wrap{position:relative;width:100%;max-width:608px;aspect-ratio:1;background:white;border:3px solid #203b66;border-radius:5px;box-shadow:0 18px 44px #173e8014;overflow:hidden}.board{width:100%;height:100%;display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr)}.cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:0;border-right:1px solid #c9d7ea;border-bottom:1px solid #c9d7ea;border-radius:0;background:#fff;color:#2466cf;font-size:clamp(20px,3vw,33px);font-weight:600;line-height:1;touch-action:manipulation}.cell:nth-child(9n){border-right:0}.cell:nth-child(n+73){border-bottom:0}.cell.box-right{border-right:2px solid #203b66}.cell.box-bottom{border-bottom:2px solid #203b66}.cell.fixed{color:#172d49;font-weight:700}.cell.peer{background:#edf4ff}.cell.same{background:#dceaff}.cell.selected{background:#bcd5ff!important;box-shadow:inset 0 0 0 2px #407be8;z-index:1}.cell.wrong{color:#d34355}.cell.conflict{background:#ffe4e6}.cell.selected.conflict{background:#ffcbd2!important}.cell .notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;align-items:center;justify-items:center;color:#5374a6;font-size:clamp(8px,1.2vw,12px);font-weight:600;line-height:1}.cell .notes i{font-style:normal}.board-cover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:#eff5ffed;z-index:4;font-size:28px;font-weight:800}.board-cover[hidden]{display:none}.status{min-height:27px;margin-top:13px;color:#637893;font-size:14px}
.control-column{padding-top:1px;display:flex;flex-direction:column;gap:16px}.control-card{background:#fff;border:1px solid #e2e9f3;border-radius:16px;padding:19px 21px;box-shadow:0 10px 26px #193b7610}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:15px}.section-head h2{margin:0;font-size:17px}.section-note{font-size:13px;color:#6f829e;text-align:right}.new-game-row{display:flex;gap:9px}select{width:100%;min-width:0;border:1px solid #c9d6e9;border-radius:9px;padding:10px 12px;background:#f7faff;color:#183251;font-weight:650}.primary-button{border:1px solid #255cd0;border-radius:9px;padding:10px 17px;background:#2663df;color:white;font-weight:750;white-space:nowrap;box-shadow:0 4px 10px #265fd533}.primary-button:hover{background:#1c51bd}.quiet-note{font-size:12px;color:#8695aa;margin:11px 1px 0}.number-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.digit-button{height:58px;border:1px solid #d9e4f4;border-radius:10px;background:#f5f9ff;color:#2463d2;font-size:26px;font-weight:750;touch-action:manipulation}.digit-button:hover:not(:disabled){background:#e3efff}.digit-button.excluded{color:#a9b6c9;background:#f7f8fa;opacity:.68}.candidate-summary{min-height:19px;margin:11px 0 0;color:#6d809b;font-size:13px}.tool-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.tool-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:62px;border:1px solid transparent;border-radius:10px;background:#f4f7fc;color:#536a88;font-size:13px;font-weight:700}.tool-button span{font-size:23px;line-height:1;color:#2d64c8}.tool-button:hover{background:#e9f1ff}.tool-button.active{border-color:#7eaaff;background:#e4efff;color:#2459be}.assist-toggle{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:17px;padding-top:16px;border-top:1px solid #e7edf5;cursor:pointer}.assist-toggle strong{display:block;font-size:14px}.assist-toggle small{display:block;margin-top:4px;color:#75869e;font-size:12px;line-height:1.5}.assist-toggle input{position:absolute;opacity:0;width:1px;height:1px}.switch-track{flex:none;width:43px;height:25px;border-radius:20px;background:#b9c6d8;position:relative;transition:background .2s}.switch-track:after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:white;box-shadow:0 1px 3px #0003;transition:transform .2s}.assist-toggle input:checked+.switch-track{background:#2663df}.assist-toggle input:checked+.switch-track:after{transform:translateX(18px)}.assist-toggle input:focus-visible+.switch-track{outline:3px solid #6ca1ff;outline-offset:2px}.secondary-actions{display:flex;justify-content:space-between;padding:0 8px}
.dialog{max-width:470px;width:calc(100% - 32px);border:0;border-radius:16px;padding:24px 28px;box-shadow:0 24px 70px #102e5770;color:#213957;line-height:1.7}.dialog::backdrop{background:#0a1d3a80}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog h2{margin:0;font-size:22px}.dialog p{font-size:15px}.close-button{border:0;background:none;font-size:27px;color:#667c99}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:750px){.shell{padding:15px 14px 25px}.topbar{margin-bottom:18px}.game-layout{grid-template-columns:minmax(0,1fr);gap:14px}.game-column{width:100%;max-width:580px;margin:0 auto}.control-column{width:100%;max-width:580px;margin:0 auto;gap:12px}.game-heading{margin-bottom:11px}.game-heading h1{font-size:24px}.board-wrap{margin:auto}.control-card{padding:15px}.number-pad{grid-template-columns:repeat(9,minmax(0,1fr));gap:4px}.digit-button{height:clamp(36px,10vw,54px);font-size:clamp(19px,5vw,25px);border-radius:7px}.number-card .section-head{margin-bottom:10px}.tool-grid{gap:4px}.tool-button{min-height:57px}.status{margin-top:9px}}
@media(min-width:620px) and (max-width:750px){.game-layout{grid-template-columns:minmax(0,1fr) minmax(230px,.7fr);gap:17px}.control-column{padding-top:7px}.number-pad{grid-template-columns:repeat(3,1fr)}.digit-button{height:47px}.tool-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:390px){.shell{padding:12px 9px 22px}.brand{font-size:21px}.brand-caption{font-size:12px}.stats{gap:13px}.cell{font-size:20px}.cell .notes{font-size:8px}.tool-button{font-size:12px}.assist-toggle small{font-size:12px}}
.cell.hint-region{background:#fff3cf!important}.cell.hint-target{background:#ffdf8a!important;box-shadow:inset 0 0 0 3px #d68d13;z-index:2}
.dialog{max-width:640px;max-height:85vh;overflow:auto}.guide-title{margin:23px 0 4px;font-size:18px}.guide-intro{color:#61758f}.technique-guide{border:1px solid #dce5f2;border-radius:12px;overflow:hidden}.technique-guide details+details{border-top:1px solid #e4ebf4}.technique-guide summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;cursor:pointer;background:#f7faff;font-size:14px;font-weight:750;list-style:none}.technique-guide summary::-webkit-details-marker{display:none}.technique-guide summary:after{content:'⌄';color:#5b77a2;font-size:20px;line-height:1}.technique-guide details[open] summary:after{transform:rotate(180deg)}.technique-guide summary small{margin-left:auto;color:#5274a9;font-size:12px;white-space:nowrap}.technique-guide details p{margin:0;padding:12px 15px 15px;font-size:14px;line-height:1.7;background:white}
.topbar-actions{display:flex;align-items:center;gap:10px}.mode-badge{display:inline-block;margin-top:2px;color:#58759c;font-size:12px;font-weight:700}.stats #mistake-stat[hidden]{display:none}.mode-row{display:grid;gap:5px;margin-top:12px;color:#526a89;font-size:13px;font-weight:700}.mode-row select{font-size:13px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.secondary-button{border:1px solid #ccd8e8;border-radius:9px;padding:10px 17px;background:#f5f8fe;color:#315174;font-weight:700}.record-name{display:grid;gap:6px;font-weight:700}.record-name input{width:100%;border:1px solid #c9d6e9;border-radius:9px;padding:10px 12px;font:inherit}.record-explain{color:#68809d}.record-filters{display:grid;grid-template-columns:1fr 1fr;gap:12px}.record-filters label{display:grid;gap:5px;font-size:13px;font-weight:700}.record-list{padding-left:28px}.record-list li{padding:8px 0;border-bottom:1px solid #e7edf5}.record-list li strong{margin-right:14px}.record-list li span{color:#667d99}.win-dialog{position:relative;overflow:hidden;text-align:center}.win-dialog form{text-align:left}.fireworks{position:absolute;inset:0;pointer-events:none;overflow:hidden}.fireworks span{position:absolute;top:27%;left:var(--left);width:7px;height:7px;border-radius:50%;background:var(--color);animation:spark 1.25s ease-out var(--delay) 2 both}@keyframes spark{from{transform:translate(0,0) scale(.3);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}
@media(max-width:750px){.topbar{gap:6px;margin-bottom:12px}.topbar-actions{gap:0}.topbar-actions .text-button{padding:8px 4px;font-size:13px}.brand{gap:7px}.brand-caption{padding-left:7px;margin-left:0}.game-layout{display:block}.game-heading{margin-bottom:8px}.status{min-height:22px;margin:5px 0 3px;font-size:12px}.control-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:'numbers tools' 'setup setup' 'actions actions';gap:8px;padding:0;margin-top:0}.number-card{grid-area:numbers}.tools-card{grid-area:tools}.setup-card{grid-area:setup}.secondary-actions{grid-area:actions}.control-card{padding:9px;border-radius:12px}.section-head{margin-bottom:6px}.section-head h2{font-size:15px}.section-note{font-size:10px}.number-pad{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.digit-button{height:clamp(35px,9vw,47px);font-size:21px}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.tool-button{min-height:43px;gap:1px;font-size:11px}.tool-button span{font-size:17px}.assist-toggle{margin-top:8px;padding-top:7px;gap:5px}.assist-toggle strong{font-size:11px}.assist-toggle small{display:none}.switch-track{width:36px;height:21px}.switch-track:after{width:15px;height:15px}.assist-toggle input:checked+.switch-track:after{transform:translateX(15px)}.candidate-summary{display:none}.board-wrap{max-width:min(100%,calc(100svh - 295px))}.cell{font-size:clamp(19px,5.7vw,28px)}.cell .notes{font-size:clamp(7px,1.6vw,10px)}}
@media(max-width:390px){.brand-caption{display:none}.shell{padding:9px 8px 20px}.digit-button{height:35px}.tool-button{min-height:39px}.board-wrap{max-width:min(100%,calc(100svh - 275px))}}
@media(prefers-reduced-motion:reduce){.fireworks span{animation:none;opacity:0}}
