:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f8fafc;min-height:100vh;padding:20px 10px;color:#1e293b;display:flex;align-items:center;justify-content:center}.app{width:100%;max-width:900px;display:flex;gap:24px;background:#fff;border-radius:12px;padding:20px 24px;box-shadow:0 4px 6px -1px #0000001a}.main-content{flex:1;display:flex;flex-direction:column;align-items:center;gap:16px}.controls{display:flex;flex-direction:column;align-items:stretch;gap:12px;width:100%;margin:16px 0}.info-panel{width:280px;padding-left:24px;border-left:1px solid #e2e8f0;overflow-y:auto}.info-panel header{text-align:left;margin-bottom:8px}.info-panel h1{font-size:1.5rem;font-weight:700;color:#1e293b;margin:0 0 8px}.info-panel .subtitle{font-size:.875rem;color:#64748b;margin:0 0 12px;font-weight:400;line-height:1.4}.info-panel .keyboard-info{font-size:.75rem;color:#94a3b8;margin:0;font-weight:400;line-height:1.4}.info-panel .keyboard-info p{margin:0 0 4px}.info-panel .keyboard-info p:last-child{margin-bottom:0}.sudoku-grid{display:grid;grid-template-rows:repeat(9,1fr);gap:1px;background:#e2e8f0;width:min(85vw,400px);aspect-ratio:1;padding:1px;border:1px solid #cbd5e1}.sudoku-row{display:grid;grid-template-columns:repeat(9,1fr);gap:1px}.sudoku-cell{background:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .15s ease;position:relative;aspect-ratio:1;min-height:40px}.sudoku-cell:hover{background:#f8fafc}.sudoku-cell:nth-child(3n):not(:nth-child(9n)){border-right:2px solid #475569}.sudoku-row:nth-child(3n):not(:nth-child(9n)) .sudoku-cell{border-bottom:2px solid #475569}.certain-number{font-size:clamp(18px,4vw,24px);font-weight:600}.given-number{color:#1e293b}.user-number{color:#2563eb}.possibilities{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;gap:1px;padding:1px}.possibility{display:flex;align-items:center;justify-content:center;font-size:clamp(8px,2vw,9px);color:#94a3b8;font-weight:500;line-height:1}.possibility.active{color:#475569;font-weight:600}.number-input{display:flex;gap:6px;width:100%;max-width:400px;justify-content:center}.number-btn{background:#334155;color:#fff;border:none;border-radius:8px;padding:14px 12px;width:40px;height:40px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.number-btn:hover{background:#475569}.number-btn:active{background:#1e293b}.control-buttons{display:flex;gap:12px;width:100%;max-width:400px}.generator-controls{display:flex;gap:12px;width:100%;max-width:400px;align-items:center}.difficulty-select{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;min-width:100px}.difficulty-select:hover{background:#e2e8f0}.difficulty-select:focus{outline:2px solid #334155;outline-offset:2px}.generate-btn{background:#059669;color:#fff;border:1px solid #059669}.generate-btn:hover:not(:disabled){background:#047857;border-color:#047857}.generate-btn.generating{background:#fbbf24;color:#92400e;border-color:#f59e0b;cursor:not-allowed}.control-btn{flex:1;background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.control-btn:hover{background:#e2e8f0}.control-btn.active{background:#334155;color:#fff;border-color:#334155}.control-btn.solving{background:#fbbf24;color:#92400e;border-color:#f59e0b;cursor:not-allowed}.control-btn:disabled{cursor:not-allowed;opacity:.6}.solve-message{margin-top:8px;padding:8px 12px;border-radius:6px;font-size:14px;font-weight:500;text-align:center;width:100%;max-width:400px}.solve-message.success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.solve-message.error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.solve-message.info{background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe}.completion-message{margin-top:8px;padding:12px 16px;border-radius:8px;font-size:16px;font-weight:600;text-align:center;width:100%;max-width:400px;animation:slideIn .3s ease-out}.completion-message.success{background:#dcfce7;color:#166534;border:2px solid #22c55e;box-shadow:0 4px 6px -1px #22c55e1a}.completion-message.error{background:#fef2f2;color:#dc2626;border:2px solid #ef4444;box-shadow:0 4px 6px -1px #ef44441a}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.selected-cell{background:#e0f2fe!important}.highlighted-cell{background:#f0f9ff!important}.conflict-cell{background:#fef2f2!important;border:2px solid #ef4444!important}.conflict-cell .certain-number{color:#dc2626!important}.valid-hint{color:#059669!important;font-weight:700!important}.timer-display{display:flex;align-items:center;gap:12px;margin-bottom:16px}.timer{font-size:24px;font-weight:700;font-family:Courier New,monospace;padding:8px 16px;border-radius:8px;background:#f1f5f9;border:2px solid #e2e8f0;min-width:80px;text-align:center}.timer.running{color:#059669;border-color:#10b981;background:#ecfdf5}.timer.paused{color:#dc2626;border-color:#ef4444;background:#fef2f2}.timer-control{background:none;border:none;font-size:20px;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s}.timer-control:hover{background:#f1f5f9}.header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.theme-toggle{background:none;border:none;font-size:20px;cursor:pointer;padding:8px;border-radius:8px;transition:background-color .2s}.theme-toggle:hover{background:#f1f5f9}.dark-mode{background:#1a1a1a;color:#e5e5e5}.dark-mode .app{background:#2d2d2d;color:#e5e5e5}.dark-mode .sudoku-grid{background:#404040}.dark-mode .sudoku-cell{background:#2d2d2d;color:#e5e5e5}.dark-mode .sudoku-cell:hover{background:#404040}.dark-mode .selected-cell{background:#1e3a8a!important}.dark-mode .highlighted-cell{background:#1e40af!important;opacity:.3}.dark-mode .given-number{color:#e5e5e5}.dark-mode .user-number{color:#60a5fa}.dark-mode .possibility.active{color:#9ca3af}.dark-mode .valid-hint{color:#34d399!important}.dark-mode .conflict-cell{background:#7f1d1d!important;border-color:#ef4444!important}.dark-mode .conflict-cell .certain-number{color:#fca5a5!important}.dark-mode .control-btn{background:#404040;color:#e5e5e5;border-color:#525252}.dark-mode .control-btn:hover{background:#525252}.dark-mode .control-btn.active{background:#1e40af;border-color:#1e40af}.dark-mode .number-btn{background:#1e40af;color:#e5e5e5}.dark-mode .number-btn:hover{background:#1e3a8a}.dark-mode .difficulty-select{background:#404040;color:#e5e5e5;border-color:#525252}.dark-mode .difficulty-select:hover{background:#525252}.dark-mode .generate-btn{background:#059669;border-color:#059669}.dark-mode .generate-btn:hover:not(:disabled){background:#047857;border-color:#047857}.dark-mode .timer{background:#404040;border-color:#525252;color:#e5e5e5}.dark-mode .timer.running{background:#064e3b;border-color:#10b981;color:#34d399}.dark-mode .timer.paused{background:#7f1d1d;border-color:#ef4444;color:#fca5a5}.dark-mode .theme-toggle:hover{background:#404040}.dark-mode .info-panel{border-color:#525252}.dark-mode .solve-message.success{background:#064e3b;color:#34d399;border-color:#10b981}.dark-mode .solve-message.error{background:#7f1d1d;color:#fca5a5;border-color:#ef4444}.dark-mode .solve-message.info{background:#1e3a8a;color:#93c5fd;border-color:#3b82f6}.dark-mode .completion-message.success{background:#064e3b;color:#34d399;border-color:#10b981}.dark-mode .completion-message.error{background:#7f1d1d;color:#fca5a5;border-color:#ef4444}.accessibility-controls{display:flex;gap:12px;width:100%;max-width:400px;align-items:center}.font-size-select{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;min-width:120px}.font-size-select:hover{background:#e2e8f0}.font-size-select:focus{outline:2px solid #334155;outline-offset:2px}.font-size-small{font-size:14px}.font-size-small .certain-number{font-size:clamp(16px,3.5vw,20px)!important}.font-size-small .possibility{font-size:clamp(7px,1.8vw,8px)!important}.font-size-medium{font-size:16px}.font-size-medium .certain-number{font-size:clamp(18px,4vw,24px)!important}.font-size-medium .possibility{font-size:clamp(8px,2vw,9px)!important}.font-size-large{font-size:18px}.font-size-large .certain-number{font-size:clamp(22px,5vw,30px)!important}.font-size-large .possibility{font-size:clamp(10px,2.5vw,12px)!important}.font-size-extra-large{font-size:20px}.font-size-extra-large .certain-number{font-size:clamp(26px,6vw,36px)!important}.font-size-extra-large .possibility{font-size:clamp(12px,3vw,14px)!important}.high-contrast{background:#000!important;color:#fff!important}.high-contrast .app{background:#000!important;color:#fff!important;border:2px solid #ffffff!important}.high-contrast .sudoku-grid{background:#fff!important;border:3px solid #ffffff!important}.high-contrast .sudoku-cell{background:#000!important;color:#fff!important;border:2px solid #ffffff!important}.high-contrast .sudoku-cell:hover{background:#333!important}.high-contrast .selected-cell{background:#ff0!important;color:#000!important}.high-contrast .highlighted-cell{background:#fa0!important;color:#000!important}.high-contrast .conflict-cell{background:red!important;color:#fff!important;border:3px solid #ffffff!important}.high-contrast .given-number{color:#fff!important;font-weight:900!important}.high-contrast .user-number{color:#0ff!important;font-weight:700!important}.high-contrast .possibility.active{color:#fff!important;font-weight:700!important}.high-contrast .valid-hint{color:#0f0!important;font-weight:900!important}.high-contrast .control-btn{background:#fff!important;color:#000!important;border:2px solid #000000!important;font-weight:700!important}.high-contrast .control-btn:hover{background:#ccc!important}.high-contrast .control-btn.active{background:#000!important;color:#fff!important;border:2px solid #ffffff!important}.high-contrast .number-btn{background:#fff!important;color:#000!important;border:2px solid #000000!important;font-weight:900!important}.high-contrast .number-btn:hover{background:#ccc!important}.high-contrast .difficulty-select,.high-contrast .font-size-select{background:#fff!important;color:#000!important;border:2px solid #000000!important;font-weight:700!important}.high-contrast .timer{background:#fff!important;color:#000!important;border:3px solid #000000!important;font-weight:900!important}.high-contrast .info-panel{border-color:#fff!important}.high-contrast .theme-toggle{background:#fff!important;color:#000!important;border:2px solid #000000!important}.dark-mode .font-size-select{background:#404040;color:#e5e5e5;border-color:#525252}.dark-mode .font-size-select:hover{background:#525252}.step-solver{margin-top:16px;padding:16px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;width:100%;max-width:400px}.step-controls{display:flex;gap:12px;margin-bottom:12px}.apply-step{background:#0ea5e9;color:#fff;border-color:#0ea5e9}.apply-step:hover:not(:disabled){background:#0284c7;border-color:#0284c7}.step-explanation{font-size:14px;line-height:1.5}.step-header{color:#1e40af;margin-bottom:8px;font-size:16px}.step-description{color:#374151;margin-bottom:8px;font-weight:500}.step-detail{color:#6b7280;font-size:13px;line-height:1.4}.dark-mode .step-solver{background:#374151;border-color:#4b5563}.dark-mode .step-header{color:#60a5fa}.dark-mode .step-description{color:#d1d5db}.dark-mode .step-detail{color:#9ca3af}.dark-mode .apply-step{background:#0ea5e9;border-color:#0ea5e9}.dark-mode .apply-step:hover:not(:disabled){background:#0284c7;border-color:#0284c7}.high-contrast .step-solver{background:#000!important;border:2px solid #ffffff!important}.high-contrast .step-header{color:#fff!important;font-weight:900!important}.high-contrast .step-description{color:#fff!important;font-weight:700!important}.high-contrast .step-detail{color:#fff!important;font-weight:600!important}.high-contrast .apply-step{background:#fff!important;color:#000!important;border:2px solid #000000!important;font-weight:900!important}.high-contrast .apply-step:hover:not(:disabled){background:#ccc!important}.settings-section{margin:8px 0;padding:8px 0;border-bottom:1px solid #e2e8f0}.settings-section:last-child{border-bottom:none}.settings-section h3{font-size:14px;font-weight:600;color:#374151;margin:0 0 12px;text-transform:uppercase;letter-spacing:.05em}.switch-group{display:flex;flex-direction:column;gap:12px}.switch-label{display:flex;justify-content:space-between;align-items:center;cursor:pointer}.switch-text{font-size:14px;color:#374151;font-weight:500}.switch{position:relative;display:inline-block;width:44px;height:24px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#cbd5e1;transition:.3s;border-radius:24px}.slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%;box-shadow:0 1px 3px #0000004d}input:checked+.slider{background-color:#3b82f6}input:checked+.slider:before{transform:translate(20px)}input:focus+.slider{box-shadow:0 0 0 2px #93c5fd}.setting-row{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.setting-label{font-size:14px;color:#374151;font-weight:500}.font-size-select{min-width:100px}.dark-mode .settings-section{border-color:#4b5563}.dark-mode .settings-section h3,.dark-mode .switch-text,.dark-mode .setting-label{color:#d1d5db}.dark-mode .slider{background-color:#4b5563}.dark-mode input:checked+.slider{background-color:#3b82f6}.high-contrast .settings-section{border-color:#fff!important}.high-contrast .settings-section h3{color:#fff!important;font-weight:900!important}.high-contrast .switch-text,.high-contrast .setting-label{color:#fff!important;font-weight:700!important}.high-contrast .slider{background-color:#fff!important;border:2px solid #000000!important}.high-contrast .slider:before{background-color:#000!important}.high-contrast input:checked+.slider{background-color:#fff!important}.high-contrast input:checked+.slider:before{background-color:#000!important}.small-btn{padding:6px 10px!important;font-size:12px!important;min-height:auto!important;height:auto!important}.timer-icon{font-size:14px;margin-right:4px}.timer-display .timer{font-size:14px!important;font-weight:400!important;padding:0!important;min-width:auto!important;border:none!important;background:none!important;color:inherit!important;font-family:inherit!important}.info-panel .switch{width:36px!important;height:20px!important}.info-panel .slider:before{height:14px!important;width:14px!important;left:3px!important;bottom:3px!important}.info-panel input:checked+.slider:before{transform:translate(16px)!important}.info-panel .difficulty-select,.info-panel .font-size-select{padding:8px 12px!important;font-size:12px!important;min-width:80px!important}.info-panel .settings-section h3{font-size:12px!important;margin-bottom:8px!important}.info-panel .switch-text,.info-panel .setting-label{font-size:12px!important}.info-panel .control-btn:not(.generate-btn){padding:6px 10px!important;font-size:12px!important}.info-panel .generate-btn{padding:8px 12px!important;font-size:12px!important}.icon-btn{background:none!important;border:none!important;font-size:20px!important;padding:6px!important;cursor:pointer;border-radius:4px;transition:background-color .2s;min-width:auto!important;width:auto!important;height:auto!important}.icon-btn:hover:not(:disabled){background:#f1f5f9!important}.icon-btn:disabled{opacity:.8;cursor:not-allowed}.dark-mode .icon-btn:hover:not(:disabled){background:#404040!important}.high-contrast .icon-btn{color:#fff!important}.high-contrast .icon-btn:hover:not(:disabled){background:#333!important}.icon-buttons{display:flex;gap:8px;justify-content:flex-start;align-items:center}@media (max-width: 768px){.app{flex-direction:column;max-width:520px}.info-panel{width:100%;padding-left:0;border-left:none;border-top:1px solid #e2e8f0;padding-top:24px}.info-panel header{text-align:center}}@media (max-width: 480px){.app{margin:10px;padding:16px;border-radius:8px}.info-panel h1{font-size:1.25rem}}
