:root{
  --bg:#0a0a0a; --panel:#141516; --panel2:#1c1d1f; --line:#2a2c2e;
  --text:#f0ece6; --sub:#96999c;
  --accent:#ff5d00; --accent-soft:rgba(255,93,0,0.14);
  --green:#39c26d; --red:#ff5252; --warn:#e6b93c;
  --mono:'JetBrains Mono',Consolas,monospace;
  --sans:'Montserrat',-apple-system,'Segoe UI',sans-serif;
  --display:'AntonFVG','Anton',Impact,sans-serif;
}
*{box-sizing:border-box;margin:0;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;}

header{display:flex;align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
header .logo{font-family:var(--display);font-size:20px;letter-spacing:0.04em;text-transform:uppercase;}
header .logo span{color:var(--accent);}
header .tag{font-size:10.5px;color:var(--sub);text-transform:uppercase;letter-spacing:0.12em;border:1px solid var(--line);border-radius:20px;padding:4px 12px;}
header .session{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--sub);display:flex;align-items:center;gap:12px;}
header .session b{color:var(--text);font-weight:500;}
button{cursor:pointer;font-family:var(--sans);}
.newsession{border:1px solid var(--line);background:none;color:var(--sub);border-radius:6px;padding:6px 12px;font-size:11px;font-weight:600;}
#capability-banner{display:none;background:rgba(230,185,60,0.08);border-bottom:1px solid rgba(230,185,60,0.4);color:var(--warn);padding:10px 22px;font-size:12px;}
#capability-banner.show{display:block;}

.layout{display:grid;grid-template-columns:300px 1fr;min-height:calc(100vh - 60px);}
aside{border-right:1px solid var(--line);padding:18px;display:flex;flex-direction:column;gap:10px;}
h2{font-size:10.5px;text-transform:uppercase;letter-spacing:0.14em;color:var(--sub);font-weight:600;margin-bottom:6px;}
#queue{display:flex;flex-direction:column;gap:10px;}
.qitem{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;align-items:center;gap:8px;cursor:pointer;}
.qitem.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent);}
.st{width:16px;height:16px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;}
.st.done{background:var(--green);color:#062;}
.st.queued{border:1.5px solid var(--sub);}
.st.rendering{border:1.5px solid var(--accent);color:var(--accent);}
.st.error{background:var(--red);color:#400;}
.qitem .info{flex:1;min-width:0;}
.qitem .name{font-family:var(--mono);font-size:11.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.qitem .meta{font-size:10px;color:var(--sub);margin-top:2px;}
.qitem .meta.err{color:var(--red);}
.qitem .rowbtns{display:flex;flex-direction:column;gap:2px;}
.qitem .rowbtns button{border:1px solid var(--line);background:none;color:var(--sub);border-radius:4px;font-size:8.5px;padding:2px 5px;font-weight:600;line-height:1;}
.qitem .dup,.qitem .del{border:1px solid var(--line);background:none;color:var(--sub);border-radius:5px;font-size:10px;padding:4px 7px;font-weight:600;}
.qitem .del:hover{color:var(--red);border-color:var(--red);}
.qbtns{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.qbtns button{border-radius:7px;padding:10px;font-size:12px;font-weight:600;}
.btn-new{background:var(--accent);border:none;color:#140800;}
.btn-ghost{background:none;border:1px dashed var(--line);color:var(--sub);}

main{display:flex;flex-direction:column;min-width:0;}
.editing-banner{display:flex;align-items:center;gap:12px;padding:12px 22px;background:var(--accent-soft);border-bottom:1px solid var(--accent);}
.editing-banner .lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.12em;color:var(--accent);font-weight:700;}
.editing-banner .oname{font-family:var(--mono);font-size:15px;font-weight:500;}
.editing-banner .warn{margin-left:auto;font-size:10.5px;color:var(--sub);}
.editing-banner.done-edit{background:rgba(57,194,109,0.10);border-bottom-color:var(--green);}
.editing-banner.done-edit .lbl{color:var(--green);}

.editor-wrap{padding:16px 22px;border-bottom:1px solid var(--line);}
.editor{display:grid;grid-template-columns:1fr 1fr;gap:16px 34px;}
.field label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--sub);margin-bottom:7px;font-weight:600;}
.seg{display:flex;gap:6px;flex-wrap:wrap;}
.seg button{background:var(--panel2);border:1px solid var(--line);color:var(--sub);border-radius:6px;padding:8px 13px;font-size:12px;font-weight:600;}
.seg button.on{background:var(--accent);border-color:var(--accent);color:#140800;}
.gainval{align-self:center;font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:500;margin-left:8px;}
.freqrow{display:flex;align-items:center;gap:12px;}
.freqrow input[type=text]{width:90px;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-family:var(--mono);font-size:13px;padding:8px 10px;border-radius:6px;}
.freqrow input[type=range]{flex:1;accent-color:var(--accent);}
.hzscale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--sub);margin-top:5px;}
.hint{font-size:10px;color:var(--sub);margin-top:5px;min-height:12px;}
.hint.warn{color:var(--warn);}
input[type=range].gain{width:140px;accent-color:var(--accent);vertical-align:middle;}
.timing{display:flex;gap:10px;}
.timing .tf{flex:1;}
.timing input{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-family:var(--mono);font-size:12px;padding:7px 9px;border-radius:6px;}
.timing small{display:block;font-size:9px;color:var(--sub);margin-top:4px;text-transform:uppercase;letter-spacing:0.08em;}
.rangechips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;border:1px dashed var(--line);border-radius:8px;padding:8px 10px;margin-top:8px;}
.rangechips .chip{font-family:var(--mono);font-size:10.5px;background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:4px 8px;color:var(--sub);cursor:pointer;display:flex;gap:6px;align-items:center;}
.rangechips .chip.on{border-color:var(--accent);color:var(--text);}
.rangechips .chip .x{color:var(--sub);font-weight:700;}
.rangechips .add{margin-left:auto;border:1px solid var(--line);background:none;color:var(--sub);border-radius:5px;padding:5px 10px;font-size:10.5px;font-weight:600;}
.textinput{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-family:var(--mono);font-size:12px;padding:8px 10px;border-radius:6px;}
.toggles{display:flex;gap:16px;margin-top:8px;}
.toggle{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--sub);cursor:pointer;}
.toggle input{accent-color:var(--accent);}
.label-auto{display:flex;align-items:center;gap:8px;}
.label-auto input{flex:1;}
.badge-auto{font-size:9px;color:var(--sub);border:1px solid var(--line);border-radius:4px;padding:3px 6px;text-transform:uppercase;letter-spacing:0.08em;}
.badge-auto.off{opacity:0.35;}
input[type=color]{width:44px;height:30px;border:1px solid var(--line);border-radius:5px;background:none;padding:0;}

.preview{padding:16px 22px;flex:1;}
.prevrow{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;}
.stage{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;
  background:repeating-conic-gradient(#1b1d1e 0% 25%, #131415 0% 50%) 50% / 18px 18px;line-height:0;flex-shrink:0;}
.stage canvas{display:block;width:640px;height:360px;}
.stage.vertical canvas{width:304px;height:540px;}
.prevside{flex:1;min-width:260px;display:flex;flex-direction:column;gap:10px;}
.prevside button{border-radius:8px;padding:12px;font-size:12.5px;font-weight:700;text-align:center;}
.btn-play{background:var(--panel2);border:1px solid var(--line);color:var(--text);}
.btn-export{background:var(--accent);border:none;color:#140800;}
.btn-export:disabled,.btn-queue:disabled{opacity:0.35;cursor:default;}
.btn-queue{background:none;border:1px solid var(--accent);color:var(--accent);}
.queue-note{font-size:10.5px;color:var(--sub);text-align:center;margin-top:-4px;}
.progress{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px;display:none;}
.progress.show{display:block;}
.progress .plabel{font-size:10.5px;color:var(--sub);display:flex;justify-content:space-between;margin-bottom:8px;font-family:var(--mono);}
.pbar{height:6px;background:var(--panel2);border-radius:3px;overflow:hidden;}
.pbar .pfill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),#ff8a40);border-radius:3px;transition:width 0.15s;}
.progress .cancel{margin-top:10px;font-size:11px;color:var(--sub);background:none;border:1px solid var(--line);border-radius:5px;padding:5px 10px;font-weight:600;}
.status-note{font-size:11px;min-height:14px;}
.status-note.ok{color:var(--green);}
.status-note.err{color:var(--red);}

.summary{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;}
.summary .shead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.summary .shead h3{font-size:10.5px;text-transform:uppercase;letter-spacing:0.14em;color:var(--sub);font-weight:600;}
.summary .copy{border:1px solid var(--line);background:var(--panel2);color:var(--text);font-size:10.5px;border-radius:5px;padding:5px 10px;font-weight:600;}
.summary ul{list-style:none;font-family:var(--mono);font-size:11px;color:var(--sub);display:flex;flex-direction:column;gap:5px;padding:0;}
.summary li b{color:var(--text);font-weight:500;}
.summary li .ok{color:var(--green);}
.summary li .errm{color:var(--red);}
.empty{color:var(--sub);font-size:12px;padding:30px 0;text-align:center;}
