:root{--bg:#f8f9fa;--text:#212529;--grid-border:#343a40;--cell-bg:#fff;--cell-selected:#e7f5ff;--cell-highlight:#f1f3f5;--text-blue:#1c7ed6;--text-math:#3b5bdb;--btn-bg:#e9ecef;--btn-hover:#dee2e6}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--text);justify-content:center;align-items:center;min-height:100vh;font-family:Inter,sans-serif;display:flex}.app-container{background:#fff;border-radius:20px;gap:40px;width:100%;max-width:900px;padding:30px;display:flex;box-shadow:0 10px 40px #00000014}@media (width<=768px){.app-container{flex-direction:column;align-items:center;gap:20px;padding:20px}}.left-panel{flex-direction:column;flex:1.2;align-items:center;display:flex;position:relative}.right-panel{flex-direction:column;flex:1;justify-content:space-between;display:flex}.header{justify-content:space-between;align-items:flex-start;width:100%;margin-bottom:30px;display:flex}h1{letter-spacing:-.5px;font-size:28px;font-weight:800}.difficulty-select{cursor:pointer;background:#f8f9fa;border:1px solid #ced4da;border-radius:10px;outline:none;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:600}.sudoku-grid{aspect-ratio:1;border:2px solid var(--grid-border);background:var(--grid-border);grid-template-columns:repeat(9,1fr);gap:1px;width:100%;max-width:450px;display:grid}.cell{background:var(--cell-bg);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:16px;font-weight:600;transition:background .1s;display:flex;position:relative;overflow:hidden}.cell:nth-child(3n){border-right:2px solid var(--grid-border)}.cell:nth-child(9n){border-right:none}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--grid-border)}.cell.selected{background:var(--cell-selected)!important}.cell.highlight{background:var(--cell-highlight)}.cell.readonly{color:var(--text-math)}.cell.user-input{color:var(--text-blue);font-size:24px}.cell.error{color:#fa5252!important;background:#ffe3e3!important}.math-span{white-space:nowrap}.notes-grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);width:100%;height:100%;padding:2px;display:grid}.note-item{color:#868e96;justify-content:center;align-items:center;font-size:11px;line-height:1;display:flex}.tools-row{justify-content:space-around;width:100%;margin:30px 0;display:flex}.tool-btn{color:#868e96;cursor:pointer;background:0 0;border:none;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:6px;font-size:13px;font-weight:600;transition:all .2s;display:flex}.tool-btn:hover{color:var(--text)}.tool-btn.active{color:var(--text-blue);background:var(--cell-selected)}.tool-btn svg{width:26px;height:26px}.numpad{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.numpad button{aspect-ratio:2;background:var(--cell-selected);color:var(--text-blue);cursor:pointer;border:none;border-radius:12px;font-size:26px;font-weight:700;transition:all .2s}.numpad button:hover{background:var(--text-blue);color:#fff;transform:translateY(-2px)}@media (width<=768px){.numpad button{aspect-ratio:1.5}.sudoku-grid{max-width:100%}}.modal-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.modal-content{text-align:center;background:#fff;border-radius:24px;width:90%;max-width:400px;padding:40px;animation:.3s ease-out slideUp;box-shadow:0 20px 60px #00000026}.modal-content h2{color:var(--text);margin-bottom:12px;font-size:32px;font-weight:800}.modal-content p{color:#868e96;margin-bottom:30px;font-size:16px;line-height:1.5}.modal-content .score{color:var(--text-blue);margin-top:10px;font-size:24px;font-weight:700}.modal-btn{background:var(--text-blue);color:#fff;cursor:pointer;border:none;border-radius:14px;width:100%;padding:16px 24px;font-size:18px;font-weight:700;transition:background .2s}.modal-btn:hover{background:#1864ab}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
