@import "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@300;400;700&family=Share+Tech+Mono&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--paper:#f5f0e8;--paper-dark:#ede5d0;--ink:#1a1209;--ink-light:#4a3d2a;--red:#c0392b;--blue:#2c5f8a;--green:#2a6b3c;--purple:#6b3a8a;--gold:#b8860b;--border:#8b7355;--border-light:#c4a882}body{background:var(--paper);color:var(--ink);min-height:100vh;font-family:Noto Serif JP,serif;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background-image:repeating-linear-gradient(0deg,#0000,#0000 24px,#8b73550f 24px 25px),repeating-linear-gradient(90deg,#0000,#0000 24px,#8b73550f 24px 25px);position:fixed;inset:0}.app-wrapper{z-index:1;grid-template-rows:auto 1fr;grid-template-columns:260px 1fr 220px;align-items:start;gap:12px;max-width:1200px;min-height:100vh;margin:0 auto;padding:12px;display:grid;position:relative}.header{border-bottom:2px solid var(--border);flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;padding-bottom:8px;display:flex}.header-title{flex-direction:column;display:flex}.title-main{letter-spacing:.1em;font-size:28px;font-weight:700;line-height:1}.title-sub{color:var(--ink-light);letter-spacing:.3em;margin-top:.5rem;font-family:Share Tech Mono,monospace;font-size:11px}.header-stats{align-items:center;gap:16px;display:flex}.stat-item{text-align:center}.stat-value{font-family:Share Tech Mono,monospace;font-size:22px;font-weight:700;line-height:1;display:block}.stat-label{color:var(--ink-light);letter-spacing:.15em;text-transform:uppercase;font-size:9px;display:block}.left-panel,.right-panel{flex-direction:column;gap:10px;display:flex}.panel-box{border:1px solid var(--border-light);background:#fff6;padding:10px;position:relative}.panel-box:before{content:"";pointer-events:none;border:1px solid #8b735533;position:absolute;inset:3px}.panel-title{letter-spacing:.3em;color:var(--border);text-transform:uppercase;border-bottom:1px solid var(--border-light);margin-bottom:8px;padding-bottom:5px;font-family:Share Tech Mono,monospace;font-size:10px}.btn{border:1px solid var(--border);background:var(--paper-dark);color:var(--ink);cursor:pointer;letter-spacing:.05em;white-space:nowrap;justify-content:center;align-items:center;gap:4px;width:100%;padding:6px 12px;font-family:Noto Serif JP,serif;font-size:12px;transition:all .15s;display:inline-flex}.btn:hover{background:var(--border);color:var(--paper)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:hover{background:var(--paper-dark);color:var(--ink);transform:none}.btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink);padding:8px 16px;font-size:13px}.btn-primary:hover{background:var(--ink-light)}.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.btn-danger:hover{background:#a93226}.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-success:hover{background:#1e5a30}.btn-sm{padding:4px 10px;font-size:11px}.btn-group{flex-direction:column;gap:6px;display:flex}.mode-selector{display:flex}.mode-btn{border:1px solid var(--border);background:var(--paper-dark);color:var(--ink-light);cursor:pointer;text-align:center;letter-spacing:.05em;flex:1;padding:8px;font-family:Noto Serif JP,serif;font-size:11px;line-height:1.4;transition:all .15s}.mode-btn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.mode-btn:first-child{border-right:none}.mode-btn:disabled{opacity:.4;cursor:not-allowed}.mode-description{color:var(--ink-light);letter-spacing:.03em;padding-top:6px;font-family:Share Tech Mono,monospace;font-size:10px;line-height:1.5}.status-bar{color:var(--ink-light);border:1px solid var(--border-light);letter-spacing:.05em;background:#00000008;align-items:center;gap:6px;width:100%;max-width:520px;min-height:32px;padding:6px 8px;font-family:Share Tech Mono,monospace;font-size:11px;display:flex}.status-bar.solved{color:var(--green);border-color:var(--green);background:#2a6b3c14;font-weight:700}.status-bar.stopped{color:var(--red);border-color:var(--red);background:#c0392b0f}.slider-wrap{align-items:center;gap:8px;display:flex}.slider-label{color:var(--ink-light);white-space:nowrap;min-width:14px;font-family:Share Tech Mono,monospace;font-size:10px}input[type=range]{appearance:none;background:var(--border-light);outline:none;flex:1;height:3px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--ink);cursor:pointer;border-radius:0;width:12px;height:12px}.board-area{flex-direction:column;align-items:center;gap:10px;display:flex}.sudoku-grid{border:3px solid var(--ink);background:var(--ink);aspect-ratio:1;grid-template-columns:repeat(9,1fr);width:100%;max-width:520px;display:grid;box-shadow:4px 4px #0003}.sudoku-cell{background:var(--paper);cursor:pointer;border:1px solid #8b735533;outline:none;justify-content:center;align-items:center;font-family:Share Tech Mono,monospace;font-size:clamp(14px,2.4vw,22px);font-weight:700;transition:background 80ms;display:flex;position:relative;overflow:hidden}.sudoku-cell.dark-box{background:#f0e8d5}.sudoku-cell.selected{outline-offset:-2px;z-index:2;outline:2px solid var(--gold)!important;background:#e8e0cc!important}.sudoku-cell.s-locked{color:var(--paper)!important;background:#2a2015!important}.sudoku-cell.s-algo{color:var(--blue)!important;background:#eef3f8!important}.sudoku-cell.s-algo.dark-box{background:#e0eaf3!important}.sudoku-cell.s-current{animation:.25s cellPulse;color:var(--green)!important;background:#c8e6c9!important}.sudoku-cell.s-backtrack{animation:.25s cellShake;color:var(--red)!important;background:#ffcdd2!important}.sudoku-cell.s-solved{color:var(--green)!important;background:#e8f5e9!important}.sudoku-cell.s-solved.dark-box{background:#d5eeda!important}.sudoku-cell.s-smart-locked{color:var(--blue)!important;background:#e3f0f8!important}.sudoku-cell.s-smart-locked.dark-box{background:#d5e8f5!important}.sudoku-cell.s-smart-guess{font-style:italic;color:var(--purple)!important;background:#f3eef8!important}.sudoku-cell.s-smart-guess.dark-box{background:#ece0f0!important}.sudoku-cell.s-smart-solved{color:var(--blue)!important;background:#e3f0f8!important}@keyframes cellPulse{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes cellShake{0%,to{transform:translate(0)}30%{transform:translate(-3px)}70%{transform:translate(3px)}}.cell-input{text-align:center;width:100%;height:100%;font-size:inherit;font-family:inherit;font-weight:inherit;color:inherit;cursor:pointer;caret-color:var(--gold);background:0 0;border:none;outline:none;padding:0}.cand-grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);width:100%;height:100%;padding:1px;display:grid}.cand-num{color:#0000;justify-content:center;align-items:center;font-family:Share Tech Mono,monospace;font-size:clamp(5px,.85vw,8px);line-height:1;display:flex}.cand-num.vis{color:var(--purple);font-weight:700}.log-area{flex-direction:column;gap:2px;max-height:420px;display:flex;overflow-y:auto}.log-area::-webkit-scrollbar{width:4px}.log-area::-webkit-scrollbar-thumb{background:var(--border-light)}.log-entry{letter-spacing:.03em;word-break:break-all;border-left:2px solid;padding:2px 4px;font-family:Share Tech Mono,monospace;font-size:10px;line-height:1.4}.legend{flex-direction:column;gap:4px;display:flex}.legend-item{color:var(--ink-light);align-items:center;gap:6px;font-size:10px;display:flex}.legend-swatch{border:1px solid var(--border-light);flex-shrink:0;width:14px;height:14px}.divider{border:none;border-top:1px solid var(--border-light);margin:3px 0}.deco-kanji{color:var(--border-light);letter-spacing:.2em;font-family:Noto Serif JP,serif;font-size:9px}.spin-ring{border:2px solid var(--green);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:.5s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.badge{letter-spacing:.05em;border:1px solid;padding:1px 5px;font-family:Share Tech Mono,monospace;font-size:9px;display:inline-block}.badge-blue{color:var(--blue);border-color:var(--blue);background:#2c5f8a14}.badge-purple{color:var(--purple);border-color:var(--purple);background:#6b3a8a14}.badge-red{color:var(--red);border-color:var(--red);background:#c0392b14}.input-hint{color:var(--ink-light);text-align:center;border:1px dashed var(--gold);letter-spacing:.05em;background:#b8860b14;width:100%;max-width:520px;padding:4px 8px;font-family:Share Tech Mono,monospace;font-size:10px}.info-row{justify-content:space-between;font-family:Share Tech Mono,monospace;font-size:11px;display:flex}.info-label{color:var(--ink-light)}.watermark{color:var(--border-light);letter-spacing:.3em;writing-mode:vertical-rl;z-index:0;pointer-events:none;font-family:Share Tech Mono,monospace;font-size:9px;position:fixed;bottom:20px;right:20px}@media (width<=900px){.app-wrapper{grid-template-columns:1fr}.right-panel{order:3}.sudoku-grid{max-width:400px}}@media (width<=480px){.sudoku-grid{max-width:92vw}.title-main{font-size:22px}.header-stats{gap:10px}.stat-value{font-size:18px}}
