.app{min-height:100vh;padding:2rem;box-sizing:border-box}.app-header{text-align:center;margin-bottom:2rem}.app-header h1{margin:0 0 .5rem;font-size:1.75rem;font-weight:600}.subtitle{margin:0;color:var(--text-muted, #666);font-size:.95rem}.app-main{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.sudoku-grid{display:flex;flex-direction:column;background:var(--grid-bg, #1a1a1a);padding:4px;border-radius:6px;box-shadow:0 2px 8px #00000026}.sudoku-row{display:flex}.sudoku-cell-wrap{padding:2px}.sudoku-cell-wrap.border-right{border-right:2px solid var(--grid-line, #444)}.sudoku-cell-wrap.border-bottom{border-bottom:2px solid var(--grid-line, #444)}.sudoku-cell{width:2.25rem;height:2.25rem;text-align:center;font-size:1.1rem;font-weight:500;border:1px solid var(--cell-border, #333);border-radius:2px;background:var(--cell-bg, #262626);color:var(--cell-text, #eee);box-sizing:border-box}.sudoku-cell:focus{outline:none;border-color:var(--focus-border, #0ea5e9);box-shadow:0 0 0 2px #0ea5e940}.sudoku-cell.read-only{background:var(--cell-readonly-bg, #1e293b);color:var(--cell-readonly-text, #94a3b8)}.sudoku-cell::placeholder{color:var(--placeholder, #64748b)}.actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.actions button{padding:.5rem 1.25rem;font-size:.95rem;border-radius:6px;border:1px solid var(--btn-border, #475569);background:var(--btn-bg, #334155);color:var(--btn-text, #f1f5f9);cursor:pointer;transition:background .15s,border-color .15s}.actions button:hover:not(:disabled){background:var(--btn-hover-bg, #475569);border-color:var(--btn-hover-border, #64748b)}.actions button:disabled{opacity:.6;cursor:not-allowed}.message{padding:.75rem 1rem;border-radius:6px;max-width:28rem;text-align:center;font-size:.95rem}.message-success{background:var(--msg-success-bg, #052e16);color:var(--msg-success-text, #86efac);border:1px solid var(--msg-success-border, #166534)}.message-error{background:var(--msg-error-bg, #450a0a);color:var(--msg-error-text, #fca5a5);border:1px solid var(--msg-error-border, #991b1b)}.modal-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;padding:1.5rem;border-radius:6px;width:90vw;max-width:28rem;box-shadow:0 2px 12px #00000040;color:#111}.modal h2{margin-top:0}.modal-row{display:flex;align-items:center;margin:.75rem 0}.modal-row label{flex:0 0 4rem}.modal-row input,.modal-row select{flex:1;padding:.4rem;border:1px solid #ccc;border-radius:4px}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem}.modal-actions button{padding:.5rem 1rem}*,*:before,*:after{box-sizing:border-box}:root{--text: #e2e8f0;--text-muted: #94a3b8;--bg: #0f172a;--grid-bg: #1e293b;--grid-line: #5a6a81;--cell-bg: #334155;--cell-border: #475569;--cell-text: #f1f5f9;--cell-readonly-bg: #1e293b;--cell-readonly-text: #94a3b8;--placeholder: #64748b;--focus-border: #38bdf8;--btn-bg: #334155;--btn-border: #475569;--btn-text: #f1f5f9;--btn-hover-bg: #475569;--btn-hover-border: #64748b;--msg-success-bg: #052e16;--msg-success-text: #86efac;--msg-success-border: #166534;--msg-error-bg: #450a0a;--msg-error-text: #fca5a5;--msg-error-border: #991b1b}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}#root{min-height:100vh}
