:root{--bg:#0b1020;--card:rgba(20,28,56,.72);--cyan:#3ef2e0;--mag:#ff3ea5;--ink:#dfe6ff;--dim:#7d89b3;--line:rgba(62,242,224,.18)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'IBM Plex Mono',monospace;
background-image:radial-gradient(circle at 15% 10%,rgba(255,62,165,.13),transparent 40%),radial-gradient(circle at 85% 30%,rgba(62,242,224,.12),transparent 45%),linear-gradient(rgba(62,242,224,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(62,242,224,.04) 1px,transparent 1px);
background-size:auto,auto,32px 32px,32px 32px;min-height:100vh}
.display{font-family:'Fraunces',serif}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;backdrop-filter:blur(8px);padding:20px;box-shadow:0 0 30px rgba(62,242,224,.05);animation:rise .6s both}
.card.locked{opacity:.45;pointer-events:none;filter:grayscale(.6)}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.step{font-family:'Fraunces',serif;font-weight:900;font-size:44px;line-height:1;color:transparent;-webkit-text-stroke:1px var(--cyan)}
.btn{border:1px solid var(--cyan);color:var(--cyan);padding:8px 14px;border-radius:10px;font-weight:500;font-size:13px;transition:.15s;background:transparent;cursor:pointer}
.btn:hover{background:var(--cyan);color:var(--bg)}
.btn.mag{border-color:var(--mag);color:var(--mag)}.btn.mag:hover{background:var(--mag);color:#fff}
.btn:disabled{opacity:.35;pointer-events:none}
.drop{border:2px dashed var(--line);border-radius:16px;padding:28px;text-align:center;transition:.2s;cursor:pointer}
.drop.over{border-color:var(--mag);background:rgba(255,62,165,.08)}
input[type=range]{accent-color:var(--mag);width:100%}
select{background:#111833;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:4px 6px}
canvas{image-rendering:pixelated;border-radius:10px;background:#050814;max-width:100%}
.pulse{animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.4;text-shadow:0 0 18px var(--mag)}}
.lbl{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.12em}
a{color:var(--cyan)}