:root{--bg:#0b0d17;--panel:rgba(255,255,255,.045);--line:rgba(255,255,255,.1);--lime:#c6ff3d;--pink:#ff3d8b;--violet:#8b5cff;--ink:#eef0ff}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Bricolage Grotesque',sans-serif;min-height:100vh;
background-image:radial-gradient(circle at 15% 10%,rgba(139,92,255,.22),transparent 40%),radial-gradient(circle at 90% 80%,rgba(255,61,139,.15),transparent 45%),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
background-size:auto,auto,32px 32px,32px 32px;background-attachment:fixed}
.mono{font-family:'JetBrains Mono',monospace}
.glass{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(14px);border-radius:22px}
.rise{animation:rise .6s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.gobtn{background:linear-gradient(100deg,var(--lime),#7dffb0);color:#0b0d17;box-shadow:0 0 30px rgba(198,255,61,.35);transition:transform .2s}
.gobtn:hover:not(:disabled){animation:wobble .5s}
.gobtn:disabled{opacity:.45;box-shadow:none}
@keyframes wobble{25%{transform:rotate(-2deg) scale(1.03)}75%{transform:rotate(2deg) scale(1.03)}}
.chip{border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;white-space:nowrap;transition:.15s}
.chip:hover{border-color:var(--lime);color:var(--lime)}
.drop{border:2px dashed rgba(255,255,255,.2);border-radius:18px;transition:.2s}
.drop.over{border-color:var(--lime);background:rgba(198,255,61,.06)}
.bubble{position:absolute;bottom:10px;width:10px;height:10px;border-radius:50%;background:var(--lime);animation:bub 1.6s infinite ease-in}
@keyframes bub{from{transform:translateY(0);opacity:1}to{transform:translateY(-90px);opacity:0}}
.flask{animation:shake 1.2s infinite}
@keyframes shake{50%{transform:rotate(4deg)}}
.noscroll::-webkit-scrollbar{display:none}
.confetti{position:fixed;top:-10px;width:8px;height:14px;z-index:99;animation:fall 1.8s linear forwards}
@keyframes fall{to{transform:translateY(105vh) rotate(720deg)}}
textarea,input{outline:none}