:root{color:#17201b;background:#f4f6f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:linear-gradient(180deg,#ffffffb8,#f4f6f1eb),#f4f6f1}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}button:focus-visible,input:focus-visible,[role=dialog]:focus-visible{outline:3px solid rgba(36,92,68,.28);outline-offset:2px}.app-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 40px}.game-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}.eyebrow{margin:0 0 6px;color:#66746c;font-size:.78rem;font-weight:700;letter-spacing:0}h1,h2{margin:0;color:#101914;letter-spacing:0}h1{font-size:clamp(2rem,5vw,3.75rem);line-height:.95}h2{font-size:1.45rem}.header-metrics,.metric{display:flex;align-items:center;gap:10px}.header-metrics{flex-wrap:wrap;justify-content:flex-end}.metric{min-height:42px;padding:0 14px;border:1px solid #d8dfd6;border-radius:8px;background:#ffffffc7;color:#536158;font-weight:700}.metric.timer{min-width:108px;color:#152219;font-variant-numeric:tabular-nums}.metric span{white-space:nowrap}.difficulty-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px}.mode-switch{display:inline-flex;gap:4px;margin:-6px 0 18px;border:1px solid #d6ded3;border-radius:8px;padding:4px;background:#eef3ed}.mode-option{display:inline-flex;min-height:36px;align-items:center;gap:7px;border:0;border-radius:6px;padding:0 14px;background:transparent;color:#5d6d62;font-size:.9rem;font-weight:800}.mode-option.active{background:#fff;color:#245c44;box-shadow:0 2px 8px #232e271a}.difficulty-tab{min-height:64px;border:1px solid #d6ded3;border-radius:8px;background:#fff;color:#1b281f;text-align:left;padding:10px 12px;transition:border-color .16s ease,background .16s ease,transform .16s ease}.difficulty-tab:hover{transform:translateY(-1px);border-color:#99ad9f}.difficulty-tab.active{border-color:#245c44;background:#e5efe8}.difficulty-tab span{display:block;font-weight:800}.difficulty-tab small{display:block;margin-top:4px;color:#66746c;font-size:.78rem}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}.play-area,.leaderboard-panel{border:1px solid #d9e1d7;border-radius:8px;background:#ffffffdb;box-shadow:0 18px 60px #232e2717}.play-area{padding:18px}.board-toolbar,.panel-title,.action-row,.modal-actions{display:flex;align-items:center;justify-content:space-between;gap:14px}.toolbar-actions{display:flex;align-items:center;gap:8px}.difficulty-name{margin:0;color:#17201b;font-size:1.05rem;font-weight:800}.puzzle-key{margin:4px 0 0;color:#66746c;font-size:.82rem;font-variant-numeric:tabular-nums}.icon-button{display:inline-grid;width:42px;height:42px;place-items:center;border:1px solid #d4ded1;border-radius:8px;background:#f9fbf7;color:#24382c}.icon-button.compact{width:36px;height:36px}.board-wrap{position:relative;display:grid;place-items:center;padding:clamp(12px,2.1vw,18px) 0}.sudoku-stage{position:relative;width:min(620px,100%);aspect-ratio:1}.sudoku-board{display:grid;width:100%;height:100%;grid-template-columns:repeat(9,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));border:3px solid #16241b;background:#16241b}.cell{display:grid;position:relative;width:100%;height:100%;aspect-ratio:1;min-width:0;min-height:0;place-items:center;border:0;border-right:1px solid #c9d4cb;border-bottom:1px solid #c9d4cb;overflow:hidden;padding:0;background:#fdfdfb;color:#193023;font-size:clamp(1.18rem,5.2vw,2.4rem);font-weight:760;font-variant-numeric:tabular-nums;line-height:1;contain:layout paint;appearance:none;transition:background .12s ease,color .12s ease}.cell.fixed{background:#eef1f4;color:#111b15;font-weight:900}.cell.editable{color:#1f6d53}.cell.related{background:#e9f3ee}.cell.same-digit{background:#ffe1a8;color:#6f4300}.cell.selected{z-index:1;background:#b3d8c1;color:#102018;box-shadow:inset 0 0 0 3px #1f5c44,inset 0 0 0 5px #ffffff94}.cell-digit{display:grid;position:absolute;inset:0;width:100%;height:100%;place-items:center;min-width:0;min-height:0}.cell.fixed .cell-digit{font-weight:920}.cell.editable .cell-digit{font-weight:820}.cell.same-digit .cell-digit{font-weight:920}.cell.selected .cell-digit{color:#102018}.cell.conflict{background:#fff0ed;color:#a13f35;box-shadow:inset 0 0 0 2px #d77368}.cell.selected.conflict{background:#ffd9d3;color:#7f2d25;box-shadow:inset 0 0 0 3px #b54d43,inset 0 0 0 5px #ffffffa8}.cell.conflict .cell-digit{color:inherit}.notes-grid{display:grid;position:absolute;inset:0;width:100%;height:100%;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:clamp(2px,8%,7px);color:#697a70;font-size:clamp(.46rem,1.55vw,.82rem);font-weight:850;line-height:1;pointer-events:none}.notes-grid span{display:grid;min-width:0;min-height:0;place-items:center}.notes-grid span.matching-note{border-radius:3px;background:#ffe1a8;color:#6f4300;font-weight:950}.cell.selected .notes-grid{color:#173927}.cell.box-right{border-right:3px solid #16241b}.cell.box-bottom{border-bottom:3px solid #16241b}.sudoku-board.pending .cell{background:#f7faf5;color:transparent}.sudoku-board.pending .notes-grid{display:none}.start-overlay{position:absolute;inset:3px;z-index:3;display:grid;place-items:center;border-radius:4px;background:#f8faf6eb;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.pause-overlay{position:absolute;inset:3px;z-index:4;display:grid;place-items:center;border-radius:4px;background:linear-gradient(rgba(234,240,236,.92) 1px,transparent 1px),linear-gradient(90deg,rgba(234,240,236,.92) 1px,transparent 1px),#f8faf6;background-size:28px 28px;color:#16241b}.start-panel{display:grid;justify-items:center;gap:14px;padding:22px;text-align:center}.pause-panel{display:grid;justify-items:center;gap:10px;min-width:min(290px,calc(100% - 44px));border:1px solid #d3ded5;border-radius:8px;padding:24px 20px;background:#fff;box-shadow:0 18px 48px #141f1824;text-align:center}.pause-panel svg{color:#245c44}.ready-title{margin:0;color:#24382c;font-size:1.08rem;font-weight:900}.pause-title{margin:0;color:#16241b;font-size:1.35rem;font-weight:950}.pause-time{margin:0 0 4px;color:#516058;font-size:1rem;font-weight:850;font-variant-numeric:tabular-nums}.start-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;gap:8px;border:1px solid #245c44;border-radius:8px;padding:0 18px;background:#245c44;color:#fff;font-weight:900}.start-button:hover{background:#1d4d39}.loading-board{display:grid;width:min(620px,100%);aspect-ratio:1;place-items:center;gap:10px;border:1px solid #d8e1d5;border-radius:8px;background:#f9fbf7;color:#536158;font-weight:800}.loading-board svg,.loading-list svg{animation:spin .9s linear infinite}.control-area{display:grid;grid-template-columns:minmax(0,3fr) minmax(220px,1fr);gap:8px}.number-pad,.tool-pad{display:grid;gap:8px}.number-pad{grid-template-columns:repeat(9,minmax(38px,1fr))}.tool-pad{grid-template-columns:repeat(3,minmax(64px,1fr))}.number-button,.tool-button{display:grid;min-height:48px;place-items:center;border:1px solid #cad8ce;border-radius:8px;background:#fff;color:#17201b;font-size:1.18rem;font-weight:850}.number-button:hover:not(:disabled),.tool-button:hover:not(:disabled){border-color:#245c44;background:#eef7f1}.tool-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;color:#264737;font-size:.88rem;white-space:nowrap}.tool-button svg{flex:0 0 auto}.tool-button.clear{color:#6d413d}.tool-button.undo-button{color:#304e79}.tool-button.note-toggle.active{border-color:#245c44;background:#245c44;color:#fff}.action-row{margin-top:16px}.result-actions,.panel-actions{display:flex;align-items:center;gap:8px}.primary-button,.secondary-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;gap:8px;border-radius:8px;padding:0 16px;font-weight:850}.primary-button{border:1px solid #245c44;background:#245c44;color:#fff}.secondary-button{border:1px solid #ccd7ce;background:#fff;color:#28352d}.danger-button{border:1px solid #a6443b;background:#a6443b;color:#fff}.danger-button:hover{background:#8f372f}.status-line{min-height:22px;color:#66746c;font-size:.92rem;text-align:right}.leaderboard-panel{padding:18px;position:sticky;top:18px}.panel-title{margin-bottom:16px}.panel-title svg{color:#b78929}.panel-actions .icon-button svg{color:#385247}.leaderboard-section+.leaderboard-section{margin-top:22px;border-top:1px solid #e1e7df;padding-top:18px}.history-panel-title{align-items:flex-start}.history-date-input{min-height:38px;width:140px;border:1px solid #cbd7ce;border-radius:8px;padding:0 8px;background:#fff;color:#24382c;font-size:.9rem;font-weight:750;outline:none}.history-date-input:focus{border-color:#245c44;box-shadow:0 0 0 3px #245c4424}.notice,.loading-list,.empty-list{display:flex;align-items:center;gap:10px;min-height:58px;border:1px solid #d8e1d5;border-radius:8px;padding:12px;background:#f8faf6;color:#5f6b63;font-size:.92rem}.notice.danger{border-color:#e3c5c1;background:#fff6f4;color:#833c34}.leaderboard-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.leaderboard-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:46px;border:1px solid #dbe3d9;border-radius:8px;padding:0 10px;background:#fff}.endless-leaderboard-row{grid-template-columns:34px minmax(0,1fr) auto auto}.level-count{color:#245c44;font-size:.86rem;font-weight:850;white-space:nowrap}.rank{display:grid;width:28px;height:28px;place-items:center;border-radius:999px;background:#eef2ec;color:#56645c;font-size:.85rem;font-weight:900}.rank.podium{background:#f4e9c7;color:#8a671e}.player-id{overflow:hidden;color:#1a261f;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.score-time{color:#245c44;font-weight:900;font-variant-numeric:tabular-nums}.rules{display:grid;gap:6px;margin-top:16px;color:#738078;font-size:.82rem}.personal-score{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) auto;align-items:center;gap:10px;margin-top:14px;border:1px solid #c9dccd;border-radius:8px;padding:12px;background:#edf6ef}.personal-score>div{display:grid;gap:3px}.personal-score .eyebrow{margin:0;font-size:.7rem}.personal-score strong{color:#183c29;font-size:1rem}.personal-time{color:#245c44;font-size:.85rem;font-weight:850;font-variant-numeric:tabular-nums;white-space:nowrap}.modal-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:#1019147a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.score-modal,.confirm-modal{width:min(420px,100%);border:1px solid #d8e1d5;border-radius:8px;padding:20px;background:#fff;box-shadow:0 24px 80px #10191438}.endless-result-modal{width:min(480px,100%)}.result-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.result-summary>div{display:grid;gap:4px;border:1px solid #dbe5da;border-radius:8px;padding:10px;background:#f8fbf7}.result-summary span{color:#6a786f;font-size:.76rem}.result-summary strong{color:#183c29;font-size:1rem;font-variant-numeric:tabular-nums}.score-modal form,.confirm-modal{display:grid;gap:14px}.confirm-modal>svg{color:#a05a35}.confirm-copy{margin:0;color:#5d6961;line-height:1.65}.score-modal label{color:#334139;font-weight:850}.score-modal input{min-height:46px;border:1px solid #c9d4cb;border-radius:8px;padding:0 12px;color:#17201b;outline:none}.score-modal input:focus{border-color:#245c44;box-shadow:0 0 0 3px #245c4424}.form-error{margin:0;color:#8b3f36;font-size:.9rem}.spin-icon{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.workspace{grid-template-columns:1fr}.leaderboard-panel{position:static}}@media(max-width:760px){.control-area{grid-template-columns:1fr}}@media(max-width:680px){.app-shell{width:min(100% - 20px,1180px);padding-top:18px}.game-header{align-items:flex-start;flex-direction:column}.header-metrics{width:100%;justify-content:stretch}.metric{flex:1}.difficulty-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-switch{display:flex;width:100%}.mode-option{flex:1;justify-content:center}.play-area,.leaderboard-panel{padding:12px}.board-wrap{padding:12px 0}.sudoku-stage,.loading-board{width:min(100%,calc(100svw - 46px))}.cell{font-size:clamp(1.05rem,7.2vw,1.85rem)}.notes-grid{padding:clamp(2px,6%,5px);font-size:clamp(.46rem,2.25vw,.72rem)}.number-pad{grid-template-columns:repeat(3,minmax(64px,1fr))}.tool-pad{grid-template-columns:repeat(3,minmax(0,1fr))}.action-row{align-items:stretch;flex-direction:column}.status-line{text-align:left}.result-actions{width:100%}.result-actions>button{flex:1}.history-panel-title{flex-direction:column}.history-date-input{width:100%}.endless-leaderboard-row{grid-template-columns:34px minmax(0,1fr) auto}.endless-leaderboard-row .score-time{grid-column:2 / -1;justify-self:end;margin-top:-8px;padding-bottom:8px}.personal-score{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-time{grid-column:1 / -1}.result-summary{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
