:root{
  --bg:#0a0a12;--panel:#0f0f1e;--p2:#13132a;--brd:#2a1a4e;
  --pk:#ff2d78;--cy:#00f5ff;--pu:#b537f2;--ye:#ffe600;
  --or:#ff6b35;--gr:#39ff14;--tx:#e0d0ff;--dm:#6a5a8a;
  --kw:#ece8ff;--kb:#1a1030;
}
*{margin:0;padding:0;box-sizing:border-box}
body{ background: linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6)), url("fond.jpg") center / cover no-repeat fixed;
  font-family:'Share Tech Mono', monospace;
  color:var(--tx);
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:20px 0 40px;
  overflow-x:hidden;
}}
body::before{content:'';
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:radial-gradient(...)!im;}
.scan{position:fixed;inset:0;pointer-events:none;z-index:100;
  background:repeating-linear-gradient(0deg,transparent 2px,rgba(0,0,0,.12) 3px,transparent 4px);
  animation:sc 8s linear infinite}
@keyframes sc{to{background-position:0 100px}}
.wrap{position:relative;z-index:1;width:min(96vw,970px)}
.ttl{font-family:'Orbitron',sans-serif;font-weight:900;font-size:clamp(1.1rem,3vw,1.9rem);
  letter-spacing:.4em;color:var(--pi);text-shadow:0 0 30px var(--pu),0 0 15px blueviolet;
  text-align:center;margin-bottom:6px;animation:tp 3s ease-in-out infinite}
@keyframes tp{0%,100%{opacity:1}50%{opacity:.75}}
.sub{font-family:'Rajdhani',sans-serif;font-size:.65rem;letter-spacing:.5em;
  color:var(--wh);text-shadow:0 0 8px var(--wh);margin-bottom:16px;text-align:center}
.panel{background:var(--panel);border:1px solid var(--brd);border-radius:12px;padding:20px;
  box-shadow:0 0 0 1px #ff2d7820,0 0 40px #b537f218,0 30px 60px #00000088,inset 0 1px 0 #ffffff10;
  position:relative;overflow:hidden}
.panel::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--pk),var(--cy),transparent);opacity:.5}
.hr{height:1px;background:linear-gradient(90deg,transparent,var(--brd),transparent);margin:11px 0}

/* ── MIDI ── */
.mbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:5px 11px;
  background:#0a0818;border:1px solid #1a0a3a;border-radius:6px;flex-wrap:wrap}
.mbtn{font-family:'Orbitron',sans-serif;font-size:.52rem;letter-spacing:.1em;padding:4px 9px;
  background:#1a0a3a;border:1px solid #3a1a60;color:var(--dm);border-radius:4px;cursor:pointer;transition:all .2s}
.mbtn:hover,.mbtn.ok{border-color:var(--cy);color:var(--cy);background:#00303a;box-shadow:0 0 8px var(--cy)}
.mdev{font-size:.5rem;color:var(--cy)}
.mhint{font-size:.43rem;color:var(--dm);margin-left:auto}
.led{width:7px;height:7px;border-radius:50%;background:#2a1050;flex-shrink:0}
.led.on{background:var(--cy);box-shadow:0 0 5px var(--cy)}

/* ── Oscilloscope ── */
.olbl{font-size:.52rem;letter-spacing:.22em;color:var(--dm);margin-bottom:3px}
#osc{width:100%;height:58px;background:#050510;border:1px solid #1a0a3a;border-radius:4px;display:block;margin-bottom:11px}

/* ── FX ROW 1 (Reverb/Delay/Gater/EQ) ── */
.fxgrid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;margin-bottom:10px}
.fxbox{background:var(--p2);border:1px solid #1e1040;border-radius:8px;padding:9px 8px;
  display:flex;flex-direction:column;align-items:center;gap:5px;position:relative;overflow:hidden}
.fxbox::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:8px 8px 0 0}
.fx-rv::before{background:linear-gradient(90deg,var(--cy),transparent)}
.fx-dl::before{background:linear-gradient(90deg,var(--pk),transparent)}
.fx-gt::before{background:linear-gradient(90deg,var(--ye),transparent)}
.fx-eq::before{background:linear-gradient(90deg,var(--pu),transparent)}
.fxtit{font-family:'Orbitron',sans-serif;font-size:.46rem;letter-spacing:.16em;color:var(--dm);align-self:flex-start}
.kr{display:flex;gap:7px;justify-content:center;flex-wrap:wrap}
.kw2{display:flex;flex-direction:column;align-items:center;gap:2px}
.knob{width:36px;height:36px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#2a1a5e,#100820);
  border:2px solid #2a1050;position:relative;cursor:ns-resize;user-select:none;
  box-shadow:0 4px 10px #00000088,inset 0 1px 0 #ffffff20}
.knob:hover{box-shadow:0 4px 14px #00000088,inset 0 1px 0 #ffffff20,0 0 7px var(--pu)}
.knob.dg{box-shadow:0 4px 14px #00000088,inset 0 1px 0 #ffffff20,0 0 12px var(--pk)}
.kdot{position:absolute;width:3px;height:3px;background:var(--cy);border-radius:50%;
  top:4px;left:50%;transform:translateX(-50%);transform-origin:center 14px;box-shadow:0 0 3px var(--cy)}
.kl{font-size:.4rem;color:var(--dm);text-align:center;max-width:40px;letter-spacing:.04em}
.kv{font-size:.4rem;color:var(--cy);font-family:'Orbitron',sans-serif;min-width:30px;text-align:center}
/* Gater internals */
.gin{display:flex;flex-direction:column;gap:4px;width:100%;align-items:center}
.trow{display:flex;align-items:center;gap:6px}
.tog{width:28px;height:14px;background:#1a0a3a;border:1px solid #2a1050;border-radius:7px;
  position:relative;cursor:pointer;flex-shrink:0;transition:background .2s}
.tog.on{background:#3a0060;border-color:var(--pk);box-shadow:0 0 5px var(--pk)}
.tog::after{content:'';position:absolute;top:2px;left:2px;width:8px;height:8px;border-radius:50%;
  background:#4a2a7a;transition:left .18s}
.tog.on::after{left:16px;background:var(--pk);box-shadow:0 0 4px var(--pk)}
.tl{font-size:.43rem;color:var(--dm)}.tl.on{color:var(--pk)}
.tbr{display:flex;gap:2px}
.tb{padding:2px 4px;font-size:.42rem;background:#1a0a3a;border:1px solid #2a1050;
  color:var(--dm);border-radius:3px;cursor:pointer}
.tb.s{background:#2a1a00;border-color:var(--ye);color:var(--ye)}
/* EQ sliders */
.eqr{display:flex;gap:5px;justify-content:center;width:100%}
.eqb{display:flex;flex-direction:column;align-items:center;gap:2px}
.eqsw{height:58px;display:flex;align-items:center}
input[type=range].vt{
  writing-mode:vertical-lr;direction:rtl;-webkit-appearance:slider-vertical;
  width:16px;height:54px;accent-color:var(--pu);cursor:pointer;background:transparent}
/* ── EQ drum fader custom ── */
.eq-fader{
  position:relative;
  width:16px;
  height:60px;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:ns-resize;
  user-select:none;
  flex-shrink:0;
}
.eq-fader-track{
  position:absolute;
  left:50%;transform:translateX(-50%);
  width:3px;
  height:100%;
  background:linear-gradient(180deg,#080810 0%,#16142a 30%,#16142a 70%,#080810 100%);
  border-radius:2px;
  border:1px solid #2a1a4a;
  box-shadow:inset 0 1px 4px #000000c0;
}
.eq-fader-center{
  position:absolute;
  left:50%;transform:translateX(-50%);
  width:9px;height:1px;
  background:#b537f240;
  box-shadow:0 0 3px #b537f230;
  top:50%;
  pointer-events:none;
}
.eq-fader-thumb{
  position:absolute;
  left:50%;transform:translateX(-50%);
  width:14px;height:10px;
  background:linear-gradient(180deg,#c8c0e0 0%,#8878b0 45%,#6050a0 55%,#9088c0 100%);
  border:1px solid #4030708a;
  border-radius:2px;
  box-shadow:
    0 1px 0 #ffffff55,
    0 -1px 0 #00000070,
    0 2px 6px #000000b0,
    inset 0 1px 0 #ffffff35;
  pointer-events:none;
  transition:background .08s;
}
.eq-fader-thumb::after{
  content:'';
  position:absolute;
  left:2px;right:2px;
  top:50%;height:1px;
  transform:translateY(-50%);
  background:#ffffff30;
}
.eq-fader.active .eq-fader-thumb{
  background:linear-gradient(180deg,#e8e0ff 0%,#b0a0e0 45%,#8878c8 55%,#c0b0e0 100%);
  box-shadow:0 0 8px #b537f270,0 2px 6px #000000b0,inset 0 1px 0 #ffffff50;
}
.cf-wrap{display:flex;flex-direction:column;align-items:center;gap:1px;position:relative}
.eqf{font-size:.4rem;color:var(--dm);text-align:center}
.eqv{font-size:.4rem;color:var(--pu);font-family:'Orbitron',sans-serif;min-width:24px;text-align:center}

/* ── FX ROW 2 (Sustain / LFO / Filter / Effects) — compact ── */
.fx2grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;margin-bottom:10px}
.fx2box{background:#0d0d20;border:1px solid #1a0a38;border-radius:7px;padding:7px 8px;
  display:flex;flex-direction:column;align-items:center;gap:5px;position:relative;overflow:hidden}
.fx2box::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:7px 7px 0 0}
.fx2-su::before{background:linear-gradient(90deg,var(--gr),transparent)}
.fx2-lf::before{background:linear-gradient(90deg,var(--cy),transparent)}
.fx2-fi::before{background:linear-gradient(90deg,var(--or),transparent)}
.fx2-ef::before{background:linear-gradient(90deg,var(--pu),transparent)}
.fx2tit{font-family:'Orbitron',sans-serif;font-size:.44rem;letter-spacing:.15em;align-self:flex-start}
.fx2-su .fx2tit{color:#39ff1480}
.fx2-lf .fx2tit{color:#00f5ff80}
.fx2-fi .fx2tit{color:#ff6b3580}
.fx2-ef .fx2tit{color:#b537f280}
/* Sustain toggle */
.su-btn{font-family:'Orbitron',sans-serif;font-size:.46rem;letter-spacing:.1em;padding:5px 12px;
  background:#0a1a0a;border:2px solid #1a3a1a;color:#336633;border-radius:6px;cursor:pointer;
  transition:all .18s;width:100%;margin-top:3px}
.su-btn.on{background:#0a2a0a;border-color:var(--gr);color:var(--gr);
  box-shadow:0 0 12px #39ff1450,inset 0 0 8px #39ff1415}
/* LFO */
.lfo-row{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.lfo-btn{font-size:.42rem;padding:3px 6px;background:#0a0818;border:1px solid #2a1050;
  color:var(--dm);border-radius:3px;cursor:pointer;transition:all .12s}
.lfo-btn.on{background:#001a2a;border-color:var(--cy);color:var(--cy);box-shadow:0 0 6px #00f5ff40}
.lfo-sel{font-size:.42rem;background:#0a0818;border:1px solid #2a1050;color:var(--cy);
  border-radius:3px;padding:2px 3px;cursor:pointer;outline:none;width:100%}
.lfo-rate-wrap{display:flex;align-items:center;gap:4px;width:100%}
.lfo-lbl{font-size:.4rem;color:var(--dm)}

/* ── COLLAPSIBLE ── */
.csec{width:100%;margin-bottom:10px}
.cbar{display:flex;align-items:center;gap:9px;padding:7px 13px;
  background:#070714;border:1px solid #16062e;border-radius:8px;
  cursor:pointer;user-select:none;transition:background .16s}
.cbar:hover{background:#0c0c1f}
.cbar.op{border-radius:8px 8px 0 0;border-bottom-color:transparent}
.ci{font-size:.54rem;display:inline-block;transition:transform .22s}
.cbar.op .ci{transform:rotate(90deg)}
.cbar-drum .ci{color:var(--or)}
.cbar-loop .ci{color:var(--gr)}
.ct{font-family:'Orbitron',sans-serif;font-size:.56rem;letter-spacing:.22em}
.cbar-drum .ct{color:var(--or);text-shadow:0 0 7px var(--or)}
.cbar-loop .ct{color:var(--gr);text-shadow:0 0 7px var(--gr)}
.cbadge{font-size:.42rem;border:1px solid;border-radius:3px;padding:1px 4px;display:none}
.cbadge.sh{display:inline-block;animation:bl .8s ease-in-out infinite alternate}
@keyframes bl{from{opacity:1}to{opacity:.22}}
.bd-drum{color:var(--or);border-color:var(--or)}
.bd-loop{color:var(--gr);border-color:var(--gr)}
.csp{flex:1}.ch{font-size:.41rem;color:var(--dm)}
.cbody{background:#06061a;border:1px solid #16062e;border-top:none;
  border-radius:0 0 8px 8px;overflow:hidden;max-height:0;transition:max-height .3s ease}
.cbody.op{max-height:1000px}
.cinn{padding:12px}

/* ── DRUM MACHINE ── */
.dh{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}
.dbtn{font-family:'Orbitron',sans-serif;font-size:.46rem;letter-spacing:.1em;padding:4px 9px;
  background:#1a0a00;border:1px solid #3a2200;color:#aa6622;border-radius:4px;cursor:pointer;transition:all .2s}
.dbtn.on{background:#2a1400;border-color:var(--or);color:var(--or);box-shadow:0 0 8px #ff6b3540}
.dht{font-size:.43rem;color:var(--dm)}
.dpads{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;opacity:.22;pointer-events:none;transition:opacity .2s}
.dpads.on{opacity:1;pointer-events:all}
.dp{display:flex;flex-direction:column;align-items:center;gap:4px}
.dp-t{font-family:'Orbitron',sans-serif;font-size:.43rem;color:var(--dm);letter-spacing:.12em}
.dp-k{font-size:.41rem;color:var(--ye)}
.dp-s{font-size:.43rem;background:#0d0d1e;border:1px solid #2a1050;color:var(--or);
  border-radius:3px;padding:2px 4px;cursor:pointer;outline:none}
.dpad{width:60px;height:40px;background:#0d0d1e;border:1px solid #2a1050;border-radius:6px;
  display:flex;align-items:center;justify-content:center;font-size:1.25rem;cursor:pointer;
  transition:transform .07s,box-shadow .07s;user-select:none}
.dpad.hit{transform:scale(.86)}
.dk.hit{box-shadow:0 0 12px var(--or);border-color:var(--or)}
.ds.hit{box-shadow:0 0 12px var(--ye);border-color:var(--ye)}
.dh2.hit{box-shadow:0 0 12px var(--cy);border-color:var(--cy)}

/* ── KEYBOARD + PITCH ── */
.kbsec{margin-top:3px}
/* pitch wheel */
.pw-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;flex-shrink:0}
.pw-lbl{font-family:'Orbitron',sans-serif;font-size:.38rem;letter-spacing:.1em;color:var(--dm);text-align:center}
.pw-body{width:24px;height:116px;background:linear-gradient(to bottom,#1a0a2a,#0a0814);
  border:1px solid #3a1a5a;border-radius:12px;position:relative;cursor:ns-resize;user-select:none;
  box-shadow:0 2px 8px #00000088,inset 0 1px 0 #ffffff18}
.pw-groove{position:absolute;left:0;right:0;top:50%;height:2px;background:#2a1050;transform:translateY(-50%)}
.pw-thumb{position:absolute;left:2px;right:2px;height:22px;top:calc(50% - 11px);
  background:linear-gradient(to bottom,#4a2a9a,#2a1060);border:1px solid #7a3adf;
  border-radius:8px;box-shadow:0 0 6px #b537f260,inset 0 1px 0 #ffffff30;transition:top .04s}
.pw-thumb::after{content:'';position:absolute;left:3px;right:3px;top:50%;height:1px;
  background:#b537f2;box-shadow:0 0 3px #b537f2;transform:translateY(-50%)}
.pw-val{font-family:'Orbitron',sans-serif;font-size:.38rem;color:var(--pu);text-align:center}
.pw-rst{font-size:.36rem;padding:2px 4px;background:#1a0a3a;border:1px solid #2a1050;
  color:var(--dm);border-radius:3px;cursor:pointer}
.pw-rst:hover{border-color:var(--pu);color:var(--pu)}
.pw-keys{font-size:.36rem;color:var(--ye)}
/* keyboard */
.kbwrap{display:flex;flex-direction:column}
.kbinner{position:relative;height:116px;user-select:none;display:flex}
.wkeys{display:flex;gap:2px}
.kyw{width:46px;height:116px;background:linear-gradient(to bottom,var(--kw) 82%,#c4bce0);
  border:1px solid #8870aa;border-radius:0 0 5px 5px;cursor:pointer;position:relative;
  display:flex;align-items:flex-end;justify-content:center;padding-bottom:6px;
  transition:background .05s;box-shadow:0 4px 5px #00000060,inset 0 -2px 3px #00000018}
.kyw:hover{background:linear-gradient(to bottom,#ffdae8 82%,#f4b8cc)}
.kyw.on{background:linear-gradient(to bottom,var(--pk),#c01848)!important;box-shadow:0 0 18px var(--pk);transform:translateY(2px)}
.kh{font-size:.45rem;color:#6a5880;text-transform:uppercase;pointer-events:none}
.kyw.on .kh{color:#fff}
.bkeys{position:absolute;top:0;left:0;pointer-events:none}
.kyb{width:29px;height:68px;background:linear-gradient(to bottom,var(--kb) 72%,#261650);
  border:1px solid #38286a;border-radius:0 0 4px 4px;position:absolute;top:0;
  cursor:pointer;pointer-events:all;display:flex;align-items:flex-end;justify-content:center;
  padding-bottom:4px;box-shadow:0 4px 7px #000000a0;z-index:2}
.kyb:hover{background:linear-gradient(to bottom,#2a0a4a 72%,#381a60)}
.kyb.on{background:linear-gradient(to bottom,var(--pu),#781aaa)!important;box-shadow:0 0 18px var(--pu);transform:translateY(2px)}
.kyb .kh{font-size:.38rem;color:#50406a}.kyb.on .kh{color:#fff}
/* keyboard footer */
.kbfoot{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:8px}
.kbhint{font-size:.4rem;color:var(--dm)}
.kbright{display:flex;align-items:center;gap:8px}
.octw{display:flex;align-items:center;gap:4px}
.ob{width:19px;height:19px;background:#1a0a3a;border:1px solid #2a1050;color:var(--dm);
  font-family:'Orbitron',sans-serif;font-size:.62rem;border-radius:3px;cursor:pointer;
  display:flex;align-items:center;justify-content:center}
.ob:hover{border-color:var(--pk);color:var(--pk)}
.od{font-family:'Orbitron',sans-serif;font-size:.52rem;color:var(--pk);min-width:36px;text-align:center}
/* KILL NOTES button */
.kill-btn{font-family:'Orbitron',sans-serif;font-size:.48rem;letter-spacing:.08em;
  padding:5px 10px;border-radius:6px;cursor:pointer;
  background:radial-gradient(circle at 40% 35%,#3a0010,#1a0008);
  border:2px solid #cc1133;color:#ff3355;
  box-shadow:0 0 8px #ff003350,inset 0 1px 0 #ff335530;
  transition:all .12s;position:relative;overflow:hidden}
.kill-btn::before{content:'';position:absolute;left:6px;top:50%;transform:translateY(-50%);font-size:.6rem;opacity:.6}
.kill-btn:hover{background:radial-gradient(circle at 40% 35%,#550018,#2a000a);
  border-color:#ff2244;color:#ff5566;box-shadow:0 0 18px #ff003380,inset 0 1px 0 #ff335540}
.kill-btn:active{transform:scale(.94);box-shadow:0 0 24px #ff0033aa}

/* ── LOOP STATION ── */
.ltop{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.lbw{display:flex;align-items:center;gap:5px;font-size:.48rem;color:var(--dm)}
.lbs{background:#1a0a3a;border:1px solid #2a1050;color:var(--or);font-size:.48rem;
  border-radius:3px;padding:2px 4px;cursor:pointer;outline:none}
/* BPM */
.bpm-wrap{display:flex;align-items:center;gap:6px;background:#0a0818;
  border:1px solid #1a0a3a;border-radius:5px;padding:4px 9px}
.bpm-lbl{font-family:'Orbitron',sans-serif;font-size:.44rem;letter-spacing:.12em;color:var(--dm)}
.bpm-in{width:42px;font-family:'Orbitron',sans-serif;font-size:.52rem;background:#0d0d1e;
  border:1px solid #2a1050;color:var(--cy);border-radius:3px;padding:2px 4px;text-align:center;outline:none}
.bpm-in:focus{border-color:var(--cy)}
.tap-btn{font-family:'Orbitron',sans-serif;font-size:.44rem;letter-spacing:.1em;padding:3px 8px;
  background:#150a2a;border:1px solid #3a1a6a;color:var(--pu);border-radius:4px;cursor:pointer;transition:all .15s}
.tap-btn:hover{border-color:var(--pu);box-shadow:0 0 7px #b537f250}
.tap-btn.fl{background:#2a0a4a;border-color:var(--pu);box-shadow:0 0 14px var(--pu)}
.bpm-dur{font-size:.42rem;color:var(--or);font-family:'Orbitron',sans-serif;white-space:nowrap}
/* beat dots */
.brow{display:flex;gap:2px;align-items:center;margin-left:auto}
.bdot{width:6px;height:6px;border-radius:50%;background:#1a0a3a}
.bdot.bf{width:8px;height:8px}
.bdot.on{background:var(--or);box-shadow:0 0 4px var(--or)}
.bdot.bf.on{background:var(--ye);box-shadow:0 0 6px var(--ye)}
/* track row */
.ltrk{display:flex;align-items:center;gap:7px;background:#0d0d1e;
  border:1px solid #1a0a3a;border-left:3px solid #39ff1430;border-radius:7px;
  padding:7px 9px;margin-bottom:7px;transition:border-color .15s,box-shadow .15s}
.ltrk.armed{border-color:#ffe60080!important}
.ltrk.rcing{border-color:var(--pk)!important;box-shadow:0 0 10px #ff2d7840;animation:rp .5s ease-in-out infinite alternate}
.ltrk.play{border-color:#39ff1470!important}
@keyframes rp{from{box-shadow:0 0 5px #ff2d7850}to{box-shadow:0 0 18px #ff2d78a0}}
.tnum{font-family:'Orbitron',sans-serif;font-size:.5rem;min-width:12px;text-align:center}
.tlayers{font-family:'Orbitron',sans-serif;font-size:.44rem;color:var(--dm);min-width:20px;text-align:center}
.ltrk.play .tlayers{color:var(--gr)}.ltrk.rcing .tlayers{color:var(--pk)}.ltrk.armed .tlayers{color:var(--ye)}
.twv{flex:1;height:32px;background:#050510;border:1px solid #18082e;border-radius:4px;position:relative;overflow:hidden}
.wvc{width:100%;height:100%;display:block}
.tph{position:absolute;top:0;bottom:0;width:2px;left:0;display:none;pointer-events:none}
.ltrk.play .tph,.ltrk.armed .tph,.ltrk.rcing .tph{display:block}
.ltrk.play .tph{background:var(--gr);box-shadow:0 0 4px var(--gr)}
.ltrk.rcing .tph{background:var(--pk);box-shadow:0 0 4px var(--pk);animation:bl .3s ease-in-out infinite alternate}
.ltrk.armed .tph{background:var(--ye);box-shadow:0 0 4px var(--ye)}
.tstat{font-family:'Orbitron',sans-serif;font-size:.42rem;color:var(--dm);min-width:60px;text-align:center}
.ltrk.play .tstat{color:var(--gr)}
.ltrk.rcing .tstat{color:var(--pk)}
.ltrk.armed .tstat{color:var(--ye);animation:bl .8s ease-in-out infinite alternate}
.tbtns{display:flex;gap:3px}
.lb{font-family:'Orbitron',sans-serif;font-size:.41rem;letter-spacing:.04em;padding:4px 6px;
  border-radius:4px;cursor:pointer;border:1px solid;transition:all .13s;white-space:nowrap}
.lb.rc{background:#2a0a1a;border-color:#4a1a30;color:#bb3355}
.lb.rc:hover{border-color:var(--pk);color:var(--pk);box-shadow:0 0 7px var(--pk)}
.lb.rc.arm{background:#2a2000;border-color:var(--ye);color:var(--ye)}
.lb.rc.rcon{border-color:var(--pk);color:var(--pk);animation:bl .4s ease-in-out infinite alternate}
.lb.pl{background:#0a180a;border-color:#183018;color:#449944}
.lb.pl:hover,.lb.pl.on{border-color:var(--gr);color:var(--gr);box-shadow:0 0 6px #39ff1450}
.lb.st{background:#181808;border-color:#282814;color:#887744;padding:4px 5px}
.lb.st:hover{border-color:var(--ye);color:var(--ye)}
.lb.cl{background:#180a0a;border-color:#281818;color:#664444;padding:4px 5px}
.lb.cl:hover{border-color:#ff4444;color:#ff5555}
.tvol{display:flex;flex-direction:column;align-items:center;gap:2px}
.vsl{-webkit-appearance:none;width:42px;height:3px;background:#1a0a3a;border-radius:2px;cursor:pointer;accent-color:var(--gr)}
.vsl::-webkit-slider-thumb{-webkit-appearance:none;width:9px;height:9px;background:var(--gr);border-radius:50%;box-shadow:0 0 4px var(--gr)}
.vll{font-size:.34rem;color:var(--dm)}
.tdel{font-size:.43rem;padding:4px 5px;background:#180a0a;border:1px solid #281818;color:#443333;border-radius:4px;cursor:pointer}
.tdel:hover{border-color:#ff3333;color:#ff4444}
.add-trk{display:flex;justify-content:center;margin:5px 0}
.atbtn{font-family:'Orbitron',sans-serif;font-size:.46rem;letter-spacing:.12em;padding:5px 13px;
  background:#0a0818;border:1px dashed #2a1050;color:var(--dm);border-radius:6px;cursor:pointer;transition:all .18s}
.atbtn:hover{border-color:var(--gr);color:var(--gr);box-shadow:0 0 8px #39ff1430}
.lbot{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-top:8px;border-top:1px solid #1a0a2a}
.lb.sa{background:#180a00;border-color:#381a00;color:#aa6620}
.lb.sa:hover{border-color:var(--or);color:var(--or)}
.lb.ca{background:#180a0a;border-color:#281a1a;color:#664444}
.lb.ca:hover{border-color:#ff4444;color:#ff4444}
.linfo{font-size:.41rem;color:var(--dm);font-style:italic}
.ltmr{font-family:'Orbitron',sans-serif;font-size:.6rem;color:var(--or);text-shadow:0 0 6px var(--or);margin-left:auto;letter-spacing:.1em}
.exrow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px solid #1a0a2a}
.extit{font-family:'Orbitron',sans-serif;font-size:.44rem;letter-spacing:.14em;color:var(--pu)}
.exsel{font-size:.44rem;background:#0a0818;border:1px solid #2a1050;color:var(--pu);border-radius:3px;padding:2px 4px;cursor:pointer;outline:none}
.exbtn{font-family:'Orbitron',sans-serif;font-size:.44rem;letter-spacing:.08em;padding:5px 10px;
  background:#120820;border:1px solid #381a6a;color:var(--pu);border-radius:4px;cursor:pointer;transition:all .2s;margin-left:auto}
.exbtn:hover{border-color:var(--pu);box-shadow:0 0 9px #b537f250}
.exbtn:disabled{opacity:.28;cursor:default}
.exhint{font-size:.4rem;color:var(--dm);font-style:italic}
.tc0{border-left-color:#ff2d7870!important}.tc1{border-left-color:#00f5ff70!important}
.tc2{border-left-color:#b537f270!important}.tc3{border-left-color:#ffe60070!important}
.tc4{border-left-color:#ff6b3570!important}.tc5{border-left-color:#39ff1470!important}

/* ── PRESETS SYNTHÉ ── */
.preset-panel{background:linear-gradient(160deg,#28103e,#1a0a2e,#140820);border:1px solid #ff2d7870;border-radius:10px;padding:12px 10px;min-width:160px;max-width:172px;flex-shrink:0;position:relative;overflow:hidden;box-shadow:0 0 20px #ff2d7818,inset 0 1px 0 #ffffff15}
.preset-panel::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--pk),#e055ff,#b537f2,transparent);opacity:.9}
.preset-title{font-family:'Orbitron',sans-serif;font-size:.5rem;letter-spacing:.22em;color:#ff70a8;text-shadow:0 0 10px #ff2d78,0 0 24px #ff2d7855;margin-bottom:9px;text-align:center}
.preset-item{background:linear-gradient(135deg,#180830,#0e0520);border:1px solid #3a1550;border-radius:7px;margin-bottom:6px;overflow:hidden;transition:all .15s}
.preset-item.active{border-color:#ff2d78;box-shadow:0 0 10px #ff2d7840,inset 0 0 6px #ff2d780a}
.preset-item-top{display:flex;align-items:center;gap:4px;padding:5px 7px}
.preset-name-inp{background:transparent;border:none;color:#ddc8f5;font-family:'Share Tech Mono',monospace;font-size:.48rem;flex:1;outline:none;min-width:0;cursor:pointer;letter-spacing:.03em}
.preset-name-inp:focus{color:#ff70a8;cursor:text}
.preset-name-inp::placeholder{color:#5a3a7a}
.preset-btns{display:flex;gap:3px}
.preset-btn{font-family:'Orbitron',sans-serif;font-size:.38rem;padding:2px 6px;border-radius:3px;cursor:pointer;border:1px solid;transition:all .12s;letter-spacing:.05em}
.preset-select-btn{border-color:#5a2a8a;color:#cc88ff;background:#1e0a38}
.preset-select-btn:hover,.preset-item.active .preset-select-btn{border-color:#ff70a8;color:#ff90c0;background:#38102a;box-shadow:0 0 6px #ff2d7860}
.preset-save-btn{border-color:#1e3a1e;color:#66cc66;background:#0a1a0a}
.preset-save-btn:hover{border-color:#39ff14;color:#39ff14;background:#0a220a;box-shadow:0 0 6px #39ff1450}
.preset-add-btn{width:100%;font-family:'Orbitron',sans-serif;font-size:.44rem;padding:6px;background:linear-gradient(135deg,#1a0830,#120520);border:1px dashed #6a2a9a;color:#cc88ff;border-radius:6px;cursor:pointer;transition:all .15s;letter-spacing:.1em;margin-top:2px}
.preset-add-btn:hover{border-color:#ff70a8;color:#ff90c0;box-shadow:0 0 10px #ff2d7840;background:linear-gradient(135deg,#280a40,#1a0830)}
.preset-add-btn:disabled{opacity:.28;cursor:default;pointer-events:none}
.preset-empty{font-size:.4rem;color:#7a5a9a;text-align:center;padding:4px 0;font-style:italic}

/* ── KBAREA with preset ── */
.kbarea{display:flex;align-items:flex-start;gap:10px;justify-content:center}

/* ── VU METER CLASSIQUE ── */
.vu-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0}
.vu-title{font-family:'Orbitron',sans-serif;font-size:.42rem;letter-spacing:.18em;color:var(--dm);text-align:center}
.vu-inner{display:flex;flex-direction:row;align-items:flex-end;gap:10px}

/* Boîtier extérieur avec relief */
.vu-body{
  width:28px;height:100px;
  background:linear-gradient(180deg,#0c0820 0%,#0a0618 100%);
  border-radius:5px;
  border:1px solid #2a1a4e;
  box-shadow:
    inset 0 2px 6px #00000090,
    inset 0 -1px 3px #ffffff08,
    0 0 12px #b537f218,
    2px 2px 8px #00000060,
    -1px -1px 4px #ffffff06;
  position:relative;
  overflow:hidden;
  padding:4px 4px 4px 4px;
  display:flex;flex-direction:column;justify-content:flex-end;gap:0
}

/* Rainures de relief (lignes horizontales gravées) — visibles même sans son */
.vu-body::before{
  content:'';
  position:absolute;inset:0;
  background:repeating-linear-gradient(
    180deg,
    transparent 0px,
    transparent 5px,
    rgba(0,0,0,.18) 5px,
    rgba(0,0,0,.18) 6px
  );
  pointer-events:none;z-index:3;border-radius:4px
}

/* Reflet haut */
.vu-body::after{
  content:'';
  position:absolute;top:0;left:0;right:0;height:30%;
  background:linear-gradient(180deg,rgba(255,255,255,.04),transparent);
  pointer-events:none;z-index:4;border-radius:4px 4px 0 0
}

/* Les segments LED individuels */
.vu-seg{
  width:100%;
  flex-shrink:0;
  border-radius:2px;
  margin-bottom:1px;
  position:relative;
  transition:background .04s, box-shadow .04s
}

/* Marque de 0dB */
.vu-mark0{
  position:absolute;left:-8px;right:-8px;top:0;height:1px;
  background:#ff2d7860;z-index:5;pointer-events:none
}

/* Scale dBFS */
.vu-scale{
  position:absolute;right:-22px;top:4px;bottom:4px;
  display:flex;flex-direction:column;justify-content:space-between;
  pointer-events:none;z-index:6
}
.vu-tick{font-family:'Orbitron',sans-serif;font-size:.3rem;color:#4a3a6a;line-height:1;white-space:nowrap}
.vu-tick.hot{color:#ff2d7860}

/* CLIP */
.vu-clip-led{
  width:10px;height:10px;border-radius:50%;
  background:#2a0a0a;border:1px solid #4a1010;
  box-shadow:inset 0 1px 2px #00000060;
  transition:all .08s;flex-shrink:0;align-self:center;margin-bottom:4px
}
.vu-clip-led.on{
  background:#ff1111;
  box-shadow:0 0 8px #ff0000,0 0 16px #ff000080,inset 0 1px 0 #ff8080;
  border-color:#ff4444
}
.vu-clip-lbl{font-family:'Orbitron',sans-serif;font-size:.3rem;color:#4a1a1a;letter-spacing:.1em}
.vu-clip-lbl.on{color:#ff3333;text-shadow:0 0 5px #ff0000}

/* ── MASTER VOLUME — style knob ── */
.mvol-section{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  background:linear-gradient(160deg,#12083a,#0c0520);
  border:1px solid #3a1a6a;border-radius:8px;
  padding:8px 10px;
  box-shadow:0 0 12px #b537f215,inset 0 1px 0 #ffffff10
}
.mvol-section::before{
  content:'';display:block;
  width:100%;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--pk),var(--cy),transparent);
  opacity:.6;margin-bottom:2px
}
.mvol-lbl{font-family:'Orbitron',sans-serif;font-size:.42rem;letter-spacing:.16em;
  color:#cc88ff;text-shadow:0 0 6px #b537f240}
/* Le knob master réutilise .knob existant, juste plus grand */
.mvol-knob{
  width:42px;height:42px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#3a1a7a,#1a0840);
  border:2px solid #5a2a9a;
  position:relative;cursor:ns-resize;user-select:none;
  box-shadow:
    0 4px 12px #00000099,
    inset 0 1px 0 #ffffff25,
    0 0 0 1px #2a1050,
    0 0 10px #b537f220
}
.mvol-knob:hover{box-shadow:0 4px 14px #00000099,inset 0 1px 0 #ffffff25,0 0 0 1px #2a1050,0 0 16px #b537f250}
.mvol-knob.dg{box-shadow:0 4px 14px #00000099,inset 0 1px 0 #ffffff25,0 0 0 1px #2a1050,0 0 20px #ff2d7880}
.mvol-dot{
  position:absolute;width:3px;height:3px;
  background:var(--pk);border-radius:50%;
  top:5px;left:50%;transform:translateX(-50%);
  transform-origin:center 16px;
  box-shadow:0 0 4px var(--pk)
}
.mvol-val{font-family:'Orbitron',sans-serif;font-size:.44rem;color:var(--pk);
  text-shadow:0 0 7px var(--pk);min-width:32px;text-align:center}

/* ── DRUM FX SECTION ── */
.drum-fx-wrap{margin-top:10px;padding-top:10px;border-top:1px solid #3a1a00;display:flex;flex-direction:column;gap:8px}
.drum-fx-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.drum-fx-title{font-family:'Orbitron',sans-serif;font-size:.44rem;color:#cc7733;letter-spacing:.14em}
.drum-fx-on-lbl{font-size:.42rem;color:var(--dm)}
.drum-fx-on-lbl.on{color:var(--or)}
.drum-fx-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;opacity:.3;pointer-events:none;transition:opacity .2s}
.drum-fx-grid.on{opacity:1;pointer-events:all}
.dfxbox{
  background:linear-gradient(160deg,#1e1a14 0%,#141008 50%,#1a1610 100%);
  border:1px solid #4a3a1a;
  border-radius:6px;
  padding:6px 5px 7px;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  position:relative;overflow:hidden;
  box-shadow:
    inset 0 1px 0 #ffffff14,
    inset 0 -1px 0 #00000060,
    inset 1px 0 0 #ffffff08,
    inset -1px 0 0 #00000040,
    0 2px 6px #00000060,
    0 0 0 1px #2a1e00;
}
.dfxbox::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:6px 6px 0 0}
.dfxbox::after{content:'';position:absolute;top:2px;left:0;right:0;height:28%;
  background:linear-gradient(180deg,rgba(255,255,255,.06),transparent);pointer-events:none}
.dfx-rv::before{background:linear-gradient(90deg,var(--cy),#004455,transparent)}
.dfx-eq::before{background:linear-gradient(90deg,var(--pu),#440066,transparent)}
.dfx-dl::before{background:linear-gradient(90deg,var(--or),#552200,transparent)}
.dfx-fi::before{background:linear-gradient(90deg,var(--gr),#003300,transparent)}
.dfx-dr::before{background:linear-gradient(90deg,var(--pk),#440022,transparent)}
.dfxtit{
  font-family:'Orbitron',sans-serif;font-size:.4rem;letter-spacing:.14em;
  align-self:flex-start;position:relative;z-index:1;
  text-shadow:0 1px 2px #00000080;
}
.dfx-rv .dfxtit{color:#44ccdd}
.dfx-eq .dfxtit{color:#aa66ee}
.dfx-dl .dfxtit{color:#dd8833}
.dfx-fi .dfxtit{color:#44dd44}
.dfx-dr .dfxtit{color:#ee4488}

/* ── DRUM PRESETS ── */
.drum-preset-item{
  background:linear-gradient(135deg,#221400,#160c00);
  border:1px solid #4a2800;
  border-radius:5px;overflow:hidden;transition:all .15s;flex-shrink:0;
  box-shadow:inset 0 1px 0 #ffffff10,0 1px 3px #00000050;
}
.drum-preset-item.active{border-color:var(--or);box-shadow:0 0 8px #ff6b3540,inset 0 1px 0 #ffffff14}
.drum-preset-item-top{display:flex;align-items:center;gap:3px;padding:3px 5px}
.drum-preset-name-inp{background:transparent;border:none;color:#e8c888;font-family:'Share Tech Mono',monospace;font-size:.4rem;width:56px;outline:none;cursor:pointer;text-shadow:0 0 4px #ff6b3530}
.drum-preset-name-inp:focus{color:var(--or);cursor:text}
.drum-preset-select-btn{border-color:#4a2a00;color:#cc8833;background:#1a0e00;font-size:.34rem;padding:2px 4px}
.drum-preset-select-btn:hover,.drum-preset-item.active .drum-preset-select-btn{border-color:var(--or);color:var(--or);background:#2a1400;box-shadow:0 0 5px #ff6b3540}
.drum-preset-save-btn{border-color:#1e3a1e;color:#55aa55;background:#080f08;font-size:.34rem;padding:2px 4px}
.drum-preset-save-btn:hover{border-color:var(--gr);color:var(--gr);background:#0a220a}
.drum-preset-del-btn{border-color:#3a0a0a;color:#884444;background:#100404;font-size:.34rem;padding:2px 4px}
.drum-preset-del-btn:hover{border-color:#ff4444;color:#ff5555;background:#1a0808;box-shadow:0 0 5px #ff000030}
.drum-preset-add-btn{font-family:'Orbitron',sans-serif;font-size:.42rem;padding:3px 8px;
  background:linear-gradient(135deg,#221400,#160c00);
  border:1px solid #5a3300;color:#dd8833;border-radius:5px;cursor:pointer;transition:all .15s;
  box-shadow:inset 0 1px 0 #ffffff12,0 1px 3px #00000050;flex-shrink:0}
.drum-preset-add-btn:hover{border-color:var(--or);color:var(--or);box-shadow:0 0 8px #ff6b3530,inset 0 1px 0 #ffffff14}
.drum-preset-add-btn:disabled{opacity:.25;cursor:default;pointer-events:none}
.drum-preset-empty{font-size:.4rem;color:#6a4a22;padding:3px 0;font-style:italic;white-space:nowrap}

.logo{
  max-width: 150px;
  height: auto;
}