:root{--bg: #1a1130;--panel: #271a45;--text: #f4f0ff;--gap: clamp(3px, 1.2vmin, 8px)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#root{min-height:100%;display:flex;justify-content:center}.app{width:100%;max-width:min(92vmin,560px);padding:clamp(12px,3vmin,28px);display:flex;flex-direction:column;gap:clamp(12px,3vmin,24px);align-items:center}.header{width:100%;display:flex;align-items:baseline;justify-content:space-between}.title{margin:0;font-size:clamp(1.4rem,5vmin,2.2rem);letter-spacing:.04em}.score{margin:0;font-size:clamp(1rem,3.5vmin,1.4rem);font-variant-numeric:tabular-nums;opacity:.9}.board{width:100%;display:grid;gap:var(--gap);padding:var(--gap);background:var(--panel);border-radius:clamp(8px,2vmin,16px);aspect-ratio:1 / 1;box-shadow:0 8px 30px #00000059}.playfield{width:100%;aspect-ratio:1 / 1;border-radius:clamp(8px,2vmin,16px);box-shadow:0 8px 30px #00000059;overflow:hidden;line-height:0}.playfield canvas{display:block}.cell{aspect-ratio:1 / 1;padding:0;border:none;border-radius:22%;background:transparent;cursor:pointer;transition:transform .08s ease,box-shadow .08s ease}.cell.filled{box-shadow:inset 0 -3px 6px #00000040,inset 0 3px 6px #ffffff40}.cell.empty{background:#00000038;box-shadow:inset 0 2px 5px #00000059;cursor:default}.cell.selected{transform:scale(.9);box-shadow:0 0 0 3px var(--text),inset 0 -3px 6px #00000040,inset 0 3px 6px #ffffff40}.error-screen{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:clamp(16px,5vmin,40px)}.error-card{width:100%;max-width:min(90vmin,420px);padding:clamp(20px,5vmin,36px);display:flex;flex-direction:column;gap:clamp(12px,3vmin,20px);align-items:center;text-align:center;background:var(--panel);border-radius:clamp(8px,2vmin,16px);box-shadow:0 8px 30px #00000059}.error-title{margin:0;font-size:clamp(1.3rem,4.5vmin,1.9rem);letter-spacing:.02em}.error-message{margin:0;font-size:clamp(.95rem,3vmin,1.15rem);line-height:1.5;opacity:.85}.error-reload{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;font:inherit;font-size:clamp(1rem,3vmin,1.2rem);font-weight:600;color:var(--bg);background:var(--text);padding:.6em 1.6em;border-radius:999px}
