@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;800;900&family=Share+Tech+Mono&display=swap');

:root{
  --bg:#07030f;
  --bg2:#0d0620;
  --pink:#ff2bd6;
  --cyan:#00f0ff;
  --lime:#c6ff00;
  --violet:#7b2bff;
  --amber:#ffb300;
  --ink:#f2ecff;
  --dim:#9b8fc4;
  --line:rgba(0,240,255,.16);
  --card:rgba(16,8,38,.82);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:'Share Tech Mono',ui-monospace,monospace;
  min-height:100vh;
  overflow-x:hidden;
  position:relative;
}
::selection{background:var(--pink);color:#000}

/* backdrop */
.grid-bg{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:radial-gradient(ellipse 90% 80% at 50% 20%,#000 30%,transparent 100%);
  opacity:.5;
}
.scanlines{
  position:fixed;inset:0;z-index:50;pointer-events:none;opacity:.14;
  background:repeating-linear-gradient(0deg,transparent 0 2px,#000 2px 4px);
}
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(600px 300px at 15% 0%,rgba(255,43,214,.16),transparent 70%),
    radial-gradient(700px 340px at 85% 10%,rgba(0,240,255,.14),transparent 70%),
    radial-gradient(800px 500px at 50% 110%,rgba(123,43,255,.16),transparent 70%);
}

/* topbar */
.topbar{
  position:relative;z-index:2;
  display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  padding:18px clamp(14px,4vw,44px) 10px;
}
.brand{display:flex;gap:14px;align-items:center}
.brand-dot{
  width:16px;height:16px;border-radius:50%;
  background:var(--pink);
  box-shadow:0 0 12px var(--pink),0 0 34px var(--pink),0 0 70px var(--violet);
  animation:pulse 1.6s ease-in-out infinite;
}
@keyframes pulse{50%{transform:scale(.72);opacity:.7}}
h1{
  font-family:Orbitron,sans-serif;font-weight:900;
  font-size:clamp(19px,3.4vw,32px);letter-spacing:.06em;line-height:1;
  text-shadow:0 0 18px rgba(0,240,255,.65),0 0 60px rgba(255,43,214,.35);
}
.neon-pink{color:var(--pink);text-shadow:0 0 14px var(--pink),0 0 46px var(--pink)}
.tagline{color:var(--dim);font-size:12px;margin-top:6px;letter-spacing:.04em}
.top-actions{display:flex;gap:10px;flex-wrap:wrap}

/* buttons */
.btn{
  font-family:Orbitron,sans-serif;font-size:12px;font-weight:700;letter-spacing:.08em;
  color:var(--ink);background:rgba(0,240,255,.08);
  border:1px solid var(--cyan);border-radius:6px;
  padding:10px 16px;cursor:pointer;
  box-shadow:0 0 12px rgba(0,240,255,.25),inset 0 0 12px rgba(0,240,255,.08);
  transition:transform .12s,box-shadow .12s,background .12s;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 0 22px rgba(0,240,255,.55);background:rgba(0,240,255,.16)}
.btn:active{transform:translateY(1px) scale(.98)}
.btn.primary{background:var(--pink);border-color:var(--pink);color:#0b0010;
  box-shadow:0 0 18px var(--pink),0 0 60px rgba(255,43,214,.5)}
.btn.primary:hover{background:#ff5ce0;box-shadow:0 0 30px var(--pink)}
.btn.ghost{background:transparent;border-color:rgba(155,143,196,.5);color:var(--dim);box-shadow:none}
.btn.ghost:hover{color:var(--ink);border-color:var(--cyan)}
.btn:disabled{opacity:.5;cursor:wait;transform:none}

/* layout */
.layout{
  position:relative;z-index:2;
  display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;
  padding:10px clamp(14px,4vw,44px) 8px;
  max-width:1280px;margin:0 auto;align-items:start;
}
.stage-wrap{
  background:var(--card);
  border:1px solid rgba(255,43,214,.35);border-radius:12px;
  padding:12px;
  box-shadow:0 0 0 1px rgba(0,240,255,.12),0 0 40px rgba(123,43,255,.25);
  backdrop-filter:blur(6px);
}
.stage-head{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 10px;font-size:12px;letter-spacing:.1em}
.live{color:var(--lime);display:flex;align-items:center;gap:8px}
.blink{width:9px;height:9px;border-radius:50%;background:#ff3355;box-shadow:0 0 10px #ff3355;animation:pulse 1s infinite}
.fps{color:var(--dim)}
#stage{
  width:100%;height:auto;aspect-ratio:16/9;display:block;border-radius:8px;
  background:#05010d;border:1px solid rgba(0,240,255,.25);
  cursor:grab;touch-action:none;
  box-shadow:inset 0 0 80px rgba(123,43,255,.25);
}
#stage:active{cursor:grabbing}
.stage-foot{display:flex;gap:8px;margin-top:10px}
#text{
  flex:1;min-width:0;
  background:#05010d;border:1px solid var(--cyan);border-radius:6px;
  color:var(--ink);font-family:Orbitron,sans-serif;font-size:15px;font-weight:700;letter-spacing:.06em;
  padding:11px 14px;outline:none;
  box-shadow:inset 0 0 18px rgba(0,240,255,.12);
}
#text:focus{border-color:var(--pink);box-shadow:0 0 16px rgba(255,43,214,.5)}
.presets{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.presets button{
  font-family:inherit;font-size:11px;letter-spacing:.05em;
  background:rgba(123,43,255,.14);border:1px dashed rgba(123,43,255,.7);color:#d9c8ff;
  border-radius:20px;padding:6px 12px;cursor:pointer;transition:all .12s;
}
.presets button:hover{background:rgba(255,43,214,.25);border-color:var(--pink);color:#fff;transform:translateY(-1px)}
.status{min-height:20px;font-size:12px;color:var(--lime);margin-top:8px;letter-spacing:.03em}

/* control deck */
.panel{
  background:var(--card);border:1px solid rgba(0,240,255,.3);border-radius:12px;
  padding:16px 16px 14px;
  box-shadow:0 0 40px rgba(0,240,255,.12);
  position:sticky;top:12px;
}
.panel-title{font-family:Orbitron,sans-serif;font-size:13px;letter-spacing:.14em;color:var(--cyan);margin-bottom:12px;
  text-shadow:0 0 12px rgba(0,240,255,.7)}
.group{margin-bottom:12px}
.group-label{font-size:10px;letter-spacing:.2em;color:var(--dim);margin-bottom:7px}
.modes{display:flex;flex-wrap:wrap;gap:7px}
.chip{
  font-family:inherit;font-size:11px;
  background:transparent;border:1px solid rgba(155,143,196,.45);color:var(--dim);
  border-radius:4px;padding:7px 10px;cursor:pointer;transition:all .12s;
}
.chip:hover{color:var(--ink);border-color:var(--cyan)}
.chip.on{background:rgba(0,240,255,.15);border-color:var(--cyan);color:var(--cyan);
  box-shadow:0 0 12px rgba(0,240,255,.4)}
#palettes .chip.on{background:rgba(255,43,214,.15);border-color:var(--pink);color:var(--pink);
  box-shadow:0 0 12px rgba(255,43,214,.4)}
.ctl{display:block;font-size:10px;letter-spacing:.16em;color:var(--dim);margin:11px 0}
.ctl b{float:right;color:var(--lime);font-size:11px}
input[type=range]{
  width:100%;margin-top:6px;appearance:none;-webkit-appearance:none;height:4px;border-radius:2px;
  background:linear-gradient(90deg,var(--pink),var(--violet),var(--cyan));
  outline:none;cursor:pointer;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:#fff;border:2px solid var(--cyan);
  box-shadow:0 0 12px var(--cyan);cursor:grab;
}
input[type=range]::-moz-range-thumb{
  width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--cyan);
  box-shadow:0 0 12px var(--cyan);cursor:grab;
}
.toggles{display:flex;gap:14px;margin:14px 0 6px;flex-wrap:wrap}
.toggle{display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.1em;color:var(--dim);cursor:pointer}
.toggle input{display:none}
.toggle span{width:34px;height:18px;border-radius:10px;background:#241845;border:1px solid rgba(155,143,196,.5);position:relative;transition:all .15s}
.toggle span::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--dim);transition:all .15s}
.toggle input:checked+span{background:rgba(198,255,0,.2);border-color:var(--lime);box-shadow:0 0 10px rgba(198,255,0,.4)}
.toggle input:checked+span::after{left:18px;background:var(--lime);box-shadow:0 0 8px var(--lime)}
.hint{font-size:11px;line-height:1.7;color:var(--dim);border-top:1px dashed rgba(155,143,196,.4);padding-top:10px;margin-top:8px}
kbd{background:#1c1140;border:1px solid rgba(155,143,196,.5);border-radius:4px;padding:1px 6px;font-family:inherit}
.foot{position:relative;z-index:2;text-align:center;color:var(--dim);font-size:11px;letter-spacing:.06em;padding:14px;opacity:.8}

@media (max-width:900px){
  .layout{grid-template-columns:1fr}
  .panel{position:static}
}
@media (max-width:420px){
  .topbar{padding-top:14px}
  .btn{padding:9px 12px;font-size:11px}
  #text{font-size:13px}
}
