*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;background:#1a1a2e;color:#eee;min-height:100vh}.app{display:flex;flex-direction:column;align-items:center;padding:1rem;min-height:100vh;max-width:500px;margin:0 auto;width:100%}h1{font-size:1.5rem;margin-bottom:1rem}.grid{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;width:100%}.cell{aspect-ratio:1;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:600;background:#16213e;color:#eee;border:1px solid #0f3460;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s,opacity .15s}.cell:active:not(.crossed-out){background:#0f3460}.cell.selected{background:#e94560;border-color:#e94560}.cell.invalid{animation:shake .3s ease;background:#f24;border-color:#f24}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.cell.crossed-out{opacity:.3;text-decoration:line-through;cursor:default;background:#0d1b2a}.status{margin-top:.75rem;font-size:.9rem;color:#aaa;display:flex;gap:1rem;align-items:center}.score{color:#ffd93d;font-weight:700}.prompt{color:#e94560;font-weight:600;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.controls{margin-top:.75rem;display:flex;gap:.5rem}.difficulty{margin-top:.75rem;display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#aaa}.difficulty input[type=range]{width:120px;accent-color:#e94560}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10}.overlay-content{background:#16213e;padding:2rem 3rem;border-radius:12px;text-align:center;display:flex;flex-direction:column;gap:1rem}.overlay-content h2{font-size:1.5rem}.overlay-content p{color:#aaa}.final-score{color:#ffd93d;font-size:1.25rem;font-weight:700}.btn{padding:.6rem 1.2rem;font-size:1rem;font-weight:600;background:#e94560;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .15s}.btn:hover{background:#c81e45}.btn:disabled{opacity:.5;cursor:default}.particle{position:fixed;border-radius:50%;pointer-events:none;z-index:100;transform:translate(-50%,-50%);animation:explode .45s ease-out forwards}@keyframes explode{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.2)}}
