/* =====================================================================
   POLYNEXA — Shared Console Design System
   ---------------------------------------------------------------------
   One stylesheet drives every artist page. An artist page themes itself
   by overriding the custom properties in the :root block below — it never
   needs to touch this file.
   ===================================================================== */

:root{
  /* --- page ground --- */
  --bg-0:#0A0A0B;          /* deepest / page bottom */
  --bg-1:#111112;          /* mid */
  --bg-2:#1A1A1C;          /* top */
  --stage:none;            /* optional url(...) hero photograph */
  --stage-pos:center 22%;
  --grad:linear-gradient(180deg,var(--bg-2) 0%,var(--bg-1) 46%,var(--bg-0) 78%,var(--bg-0) 100%);

  /* --- rack hardware --- */
  --panel-a:#2E2E33;       /* faceplate top */
  --panel-b:#141417;       /* faceplate bottom */
  --panel-m:#222227;       /* faceplate middle */
  --rail-a:#0E0E11;
  --rail-b:#26262C;
  --screw-a:#83838C;
  --recess:#09090B;        /* recessed wells / screens */

  /* --- ink --- */
  --ink:#EDEDED;
  --ink-2:#A6A6AD;
  --ink-3:#75757D;

  /* --- signal --- */
  --accent:#CD5536;        /* Polynexa flame */
  --accent-hi:#F08A5F;
  --accent-dim:#7A3220;
  --hot:#FFCC33;

  --line:rgba(237,237,237,0.12);
  --hair:rgba(0,0,0,0.55);

  /* --- type --- */
  --disp:'Archivo',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
  --body:'Archivo',system-ui,sans-serif;
  --disp-weight:800;
  --disp-track:0.005em;

  /* --- metrics --- */
  --gutter:40px;
  --maxw:1180px;
  --radius:6px;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--bg-0);}
img{display:block;max-width:100%;}
::selection{background:var(--accent);color:var(--bg-0);}

a:focus-visible,button:focus-visible,input:focus-visible,
[role="slider"]:focus-visible,[role="switch"]:focus-visible,[role="tab"]:focus-visible{
  outline:2px solid var(--accent); outline-offset:3px; border-radius:4px;
}

.visually-hidden{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ===================================================================
   PAGE SHELL
   =================================================================== */
.page{
  position:relative; min-height:100vh; color:var(--ink);
  font-family:var(--body); padding:0 0 90px; background-color:transparent;
}
/* Ground layer. Pages that set a --stage photograph should also override
   --grad with a translucent version so the photo reads through. */
.page::before{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background-image:var(--grad), var(--stage);
  background-size:cover, cover;
  background-position:center top, var(--stage-pos);
  background-repeat:no-repeat, no-repeat;
}
/* fine console-glass texture so large fields never read as flat fill */
.page::after{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none; opacity:.5;
  background-image:repeating-linear-gradient(0deg,rgba(255,255,255,0.014) 0 1px,transparent 1px 3px);
}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter);}

/* ===================================================================
   TOP BAR
   =================================================================== */
.topbar{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:20px var(--gutter); border-bottom:1px solid var(--line);
  max-width:var(--maxw); margin:0 auto;
}
.topbar .home{
  display:inline-flex; align-items:center; gap:10px; text-decoration:none;
  font-family:var(--mono); font-size:10.5px; letter-spacing:0.28em;
  color:var(--ink-3); text-transform:uppercase; transition:color .2s;
}
.topbar .home:hover{color:var(--accent);}
.topbar .home svg{width:14px; height:14px;}
.topbar .wordmark{
  font-family:var(--disp); font-weight:var(--disp-weight); font-size:15px;
  letter-spacing:0.3em; color:var(--ink); text-transform:uppercase;
}
.topbar .tag{
  font-family:var(--mono); font-size:10px; letter-spacing:0.24em;
  color:var(--ink-3); text-transform:uppercase;
}

/* ===================================================================
   HERO
   =================================================================== */
.hero{
  max-width:var(--maxw); margin:0 auto; display:flex; gap:44px;
  align-items:center; flex-wrap:wrap; padding:58px var(--gutter) 26px;
}
.hero .col-text{flex:1 1 380px; min-width:280px;}
.hero .col-art{flex:1 1 320px; min-width:250px; max-width:440px;}
.eyebrow{
  font-family:var(--mono); font-size:11px; letter-spacing:0.4em;
  color:var(--accent); text-transform:uppercase; margin-bottom:22px;
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
.eyebrow .dot{width:5px; height:5px; border-radius:50%; background:var(--accent); box-shadow:0 0 8px var(--accent);}
.hero h1{
  font-family:var(--disp); font-weight:var(--disp-weight);
  font-size:clamp(50px,8.6vw,118px); line-height:0.9;
  letter-spacing:var(--disp-track); margin:0; color:var(--ink); text-transform:uppercase;
}
.hero h1 .accented{color:var(--accent-hi);}
/* an artist with real wordmark artwork drops it in place of the type */
.hero h1.mark-logo{line-height:0;}
.hero h1.mark-logo img{width:100%; max-width:min(100%,560px); height:auto;}
.hero .tagline{
  font-size:clamp(17px,2.05vw,24px); line-height:1.5; max-width:560px;
  color:var(--ink-2); margin:28px 0 0; text-wrap:pretty;
}
.hero .tagline em{color:var(--accent-hi); font-style:italic;}

.cover-frame{
  position:relative; border:1px solid var(--line); border-radius:4px; overflow:hidden;
  box-shadow:0 40px 110px -50px #000, 0 0 0 1px rgba(0,0,0,0.45);
  aspect-ratio:1/1; background:var(--recess);
}
.cover-frame img{width:100%; height:100%; object-fit:cover;}
.cover-frame .glow{position:absolute; inset:0; pointer-events:none;
  box-shadow:0 0 60px -10px rgba(0,0,0,0) inset;}
.cover-cap{
  display:flex; justify-content:space-between; gap:12px; margin-top:11px;
  font-family:var(--mono); font-size:9.5px; letter-spacing:0.2em;
  color:var(--ink-3); text-transform:uppercase;
}

/* ===================================================================
   SECTION HEADERS
   =================================================================== */
.sec{max-width:var(--maxw); margin:58px auto 0; padding:0 var(--gutter);}
.sec-head{
  font-family:var(--mono); font-size:11px; font-weight:400; letter-spacing:0.3em;
  color:var(--accent); text-transform:uppercase; margin:0 0 20px;
  display:flex; align-items:center; gap:14px;
}
.sec-head .rule{flex:1; height:1px; background:var(--line);}
.sec-head .meta{color:var(--ink-3);}

/* ===================================================================
   RELEASE SHELF  — the multi-release switcher
   =================================================================== */
.shelf{
  display:flex; gap:14px; overflow-x:auto; padding:2px 2px 14px;
  scroll-snap-type:x proximity; scrollbar-width:thin;
}
.shelf::-webkit-scrollbar{height:6px;}
.shelf::-webkit-scrollbar-thumb{background:var(--accent-dim); border-radius:3px;}
.rel-card{
  flex:0 0 168px; scroll-snap-align:start; cursor:pointer; text-align:left;
  background:transparent; border:0; padding:0; color:inherit; font:inherit;
  display:flex; flex-direction:column; gap:9px;
}
.rel-card .art{
  position:relative; aspect-ratio:1/1; border-radius:4px; overflow:hidden;
  border:1px solid var(--line); background:var(--recess);
  box-shadow:0 16px 38px -26px #000; transition:border-color .22s, box-shadow .22s, transform .22s;
}
.rel-card .art img{width:100%; height:100%; object-fit:cover;}
.rel-card:hover .art{transform:translateY(-3px); border-color:var(--accent-dim);}
.rel-card[aria-selected="true"] .art{
  border-color:var(--accent);
  box-shadow:0 0 0 1px var(--accent), 0 20px 44px -24px rgba(0,0,0,0.9);
}
.rel-card .art .badge{
  position:absolute; top:7px; left:7px; font-family:var(--mono); font-size:8px;
  letter-spacing:0.18em; text-transform:uppercase; color:var(--bg-0);
  background:var(--accent); padding:3px 7px; border-radius:2px; font-weight:600;
}
.rel-card .art .badge.soon{background:var(--ink-3); color:var(--bg-0);}
.rel-card .art .nowplay{
  position:absolute; inset:auto 7px 7px auto; display:none; align-items:flex-end; gap:2px; height:14px;
}
.rel-card[data-active="true"] .art .nowplay{display:flex;}
.rel-card .art .nowplay i{width:3px; background:var(--accent-hi); border-radius:1px; animation:bars .9s ease-in-out infinite;}
.rel-card .art .nowplay i:nth-child(2){animation-delay:.15s;}
.rel-card .art .nowplay i:nth-child(3){animation-delay:.3s;}
.rel-card .rt{
  font-family:var(--disp); font-weight:600; font-size:14px; line-height:1.25;
  text-transform:uppercase; letter-spacing:0.02em; color:var(--ink);
}
.rel-card[aria-selected="true"] .rt{color:var(--accent-hi);}
.rel-card .rm{font-family:var(--mono); font-size:9px; letter-spacing:0.16em; color:var(--ink-3); text-transform:uppercase;}

@keyframes bars{0%,100%{height:4px;}50%{height:14px;}}

/* ===================================================================
   RACK / CONSOLE
   =================================================================== */
.console{max-width:var(--maxw); margin:30px auto 0; padding:0 var(--gutter);
  display:flex; flex-direction:column; gap:14px;}
.rack{
  display:flex; border:1px solid var(--hair); border-radius:var(--radius); overflow:hidden;
  box-shadow:0 26px 70px -38px #000, 0 1px 0 rgba(255,255,255,0.06) inset;
  transition:opacity .3s;
}
.rack.dim{opacity:0.5;}
.rail{
  flex:0 0 24px; background:linear-gradient(90deg,var(--rail-a),var(--rail-b) 52%,var(--rail-a));
  display:flex; flex-direction:column; justify-content:space-between; align-items:center;
  padding:12px 0; box-shadow:inset -1px 0 0 rgba(0,0,0,0.45), inset 1px 0 0 rgba(255,255,255,0.06);
}
.rail.right{box-shadow:inset 1px 0 0 rgba(0,0,0,0.45), inset -1px 0 0 rgba(255,255,255,0.06);}
.screw{
  width:12px; height:12px; border-radius:50%;
  background:radial-gradient(circle at 38% 32%,var(--screw-a),var(--rail-a) 72%);
  box-shadow:inset 0 1px 1px rgba(255,255,255,0.26), 0 1px 2px #000;
  display:flex; align-items:center; justify-content:center;
}
.screw i{width:8px; height:1.6px; background:rgba(0,0,0,0.75); border-radius:1px; display:block;}
.faceplate{
  flex:1; min-width:0; position:relative; padding:20px 24px;
  background-image:
    repeating-linear-gradient(90deg,rgba(255,255,255,0.035) 0 1px,rgba(0,0,0,0.085) 1px 3px),
    linear-gradient(180deg,var(--panel-a),var(--panel-m) 55%,var(--panel-b));
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.09), inset 0 -3px 7px rgba(0,0,0,0.5);
}
.label{
  font-family:var(--disp); font-weight:600; font-size:10px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--ink-3); text-shadow:0 1px 0 rgba(0,0,0,0.5);
}
.watermark{position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0;
  display:flex; align-items:center; justify-content:flex-end;}
.watermark img{
  width:auto; height:120%; opacity:0.14; filter:saturate(0.25);
  transform:translateX(18%);
  -webkit-mask-image:radial-gradient(circle at 50% 50%, #000 42%, transparent 72%);
  mask-image:radial-gradient(circle at 50% 50%, #000 42%, transparent 72%);
}
.rowA,.rowB{position:relative; z-index:1; width:100%; display:flex; flex-wrap:wrap; gap:24px;}
.rowA{align-items:stretch;}
.rowB{gap:28px; align-items:flex-end;}

/* ---- now playing ---- */
.np-col{flex:1 1 300px; min-width:250px; display:flex; flex-direction:column; gap:11px;}
.np-card{
  display:flex; gap:13px; background:var(--recess); border:1px solid var(--hair);
  border-radius:4px; box-shadow:inset 0 2px 9px #000, 0 1px 0 rgba(255,255,255,0.07); padding:12px;
}
.np-cover{
  flex:0 0 76px; width:76px; height:76px; border-radius:2px; overflow:hidden; position:relative;
  box-shadow:0 0 0 1px var(--line), inset 0 0 18px rgba(0,0,0,0.4);
}
.np-cover img{width:100%; height:100%; object-fit:cover;}
.np-meta{flex:1; min-width:0; display:flex; flex-direction:column;}
.np-status{
  font-family:var(--mono); font-size:9px; letter-spacing:0.2em; color:var(--accent);
  display:flex; align-items:center; gap:7px; text-transform:uppercase;
}
.np-dot{width:6px; height:6px; border-radius:50%; background:var(--ink-3); flex:0 0 auto;}
.np-dot.live{background:var(--accent-hi); box-shadow:0 0 7px var(--accent-hi); animation:pulseDot 1.8s ease-in-out infinite;}
.np-title{
  font-family:var(--disp); font-weight:600; font-size:21px; letter-spacing:0.01em;
  color:var(--ink); margin-top:5px; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; text-transform:uppercase;
}
.np-sub{font-family:var(--mono); font-size:9px; letter-spacing:0.14em; color:var(--ink-3);
  text-transform:uppercase; margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.np-time{font-family:var(--mono); font-size:15px; letter-spacing:0.04em; color:var(--accent);
  text-shadow:0 0 8px rgba(0,0,0,0.4);}
.np-time .sep{opacity:0.55;}

.seek{
  position:relative; height:9px; border:1px solid var(--hair); border-radius:5px;
  background:linear-gradient(var(--recess),var(--panel-b));
  box-shadow:inset 0 1px 4px #000; cursor:pointer; margin-top:1px; touch-action:none;
}
.seek .buf{position:absolute; inset:0 auto 0 0; width:0%; background:rgba(255,255,255,0.08); border-radius:5px;}
.seek .fill{position:absolute; inset:0 auto 0 0; width:0%; border-radius:5px;
  background:linear-gradient(90deg,var(--accent-dim),var(--accent));
  box-shadow:0 0 7px rgba(0,0,0,0.35);}
.seek .head{
  position:absolute; top:50%; left:0%; width:13px; height:13px; transform:translate(-50%,-50%);
  border-radius:50%; background:linear-gradient(var(--accent-hi),var(--accent));
  box-shadow:0 0 7px var(--accent), 0 1px 2px #000;
}

.transport{display:flex; align-items:center; gap:11px; margin-top:3px; flex-wrap:wrap;}
.tbtn{
  border:1px solid var(--hair); color:var(--ink-2); cursor:pointer; display:flex;
  align-items:center; justify-content:center; border-radius:50%;
  background:radial-gradient(circle at 50% 32%,var(--panel-a),var(--panel-b) 80%);
  box-shadow:0 2px 4px rgba(0,0,0,0.6), 0 1px 0 rgba(255,255,255,0.1) inset;
  transition:color .18s, box-shadow .18s;
}
.tbtn.side{width:40px; height:40px;}
.tbtn.side:hover{color:var(--accent-hi);}
.tbtn.play{
  width:56px; height:56px; color:var(--accent-hi); border-color:var(--accent-dim);
  box-shadow:0 0 18px -4px var(--accent-dim), 0 2px 5px rgba(0,0,0,0.6), 0 1px 0 rgba(255,255,255,0.12) inset;
}
.tbtn.play:hover{box-shadow:0 0 26px -3px var(--accent), 0 2px 5px rgba(0,0,0,0.6), 0 1px 0 rgba(255,255,255,0.15) inset;}
.tbtn.mini{width:32px; height:32px; border-radius:4px;}
.tbtn.mini.on{color:var(--accent-hi); border-color:var(--accent-dim); box-shadow:0 0 12px -4px var(--accent), 0 1px 0 rgba(255,255,255,0.1) inset;}
.tbtn.mini .rep1{font-family:var(--mono); font-size:7px; position:absolute; transform:translate(9px,7px);}

/* ---- knob + power ---- */
.ctl-col{
  flex:0 0 auto; display:flex; gap:18px; align-items:center; padding-left:22px;
  border-left:1px solid var(--hair); box-shadow:inset 1px 0 0 rgba(255,255,255,0.05);
}
.ctl{display:flex; flex-direction:column; align-items:center; gap:8px;}
.knob{position:relative; width:66px; height:66px; cursor:ns-resize; touch-action:none;}
.knob .ring{position:absolute; inset:0;}
.knob .dial{
  position:absolute; inset:9px; border-radius:50%;
  background:radial-gradient(circle at 50% 34%,var(--panel-a),var(--panel-b) 82%);
  box-shadow:0 3px 7px rgba(0,0,0,0.7), 0 1px 0 rgba(255,255,255,0.13) inset, inset 0 0 0 1px rgba(0,0,0,0.45);
}
.knob .ind{position:absolute; top:5px; left:50%; transform:translateX(-50%);
  width:3px; height:13px; border-radius:2px; background:var(--accent); box-shadow:0 0 6px var(--accent);}
.ctl-lbl{font-family:var(--disp); font-weight:600; font-size:9px; letter-spacing:0.16em;
  color:var(--ink-3); text-transform:uppercase;}
.power{
  width:28px; height:48px; border-radius:5px; padding:4px; display:flex; align-items:flex-start;
  cursor:pointer; background:linear-gradient(var(--recess),var(--panel-b));
  box-shadow:inset 0 0 6px #000, 0 1px 0 rgba(255,255,255,0.07);
}
.power.off{align-items:flex-end;}
.power .cap{width:20px; height:20px; border-radius:3px;
  background:linear-gradient(var(--screw-a),var(--panel-b));
  box-shadow:0 2px 3px rgba(0,0,0,0.7), 0 1px 0 rgba(255,255,255,0.19) inset;}
.power-led{width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,0.12);}
.power-led.on{background:var(--accent); box-shadow:0 0 8px var(--accent);}

/* ---- VU ---- */
.vu-group{
  flex:0 0 auto; display:flex; gap:16px; align-items:center; padding-left:22px;
  border-left:1px solid var(--hair); box-shadow:inset 1px 0 0 rgba(255,255,255,0.05);
}
.vu-cell{display:flex; flex-direction:column; align-items:center; gap:7px;}
.vu-box{
  position:relative; padding:13px; border-radius:var(--radius);
  background:linear-gradient(150deg,var(--panel-a),var(--recess));
  box-shadow:0 6px 14px rgba(0,0,0,0.7), 0 1px 0 rgba(255,255,255,0.08) inset, inset 0 0 0 1px rgba(0,0,0,0.5);
}
.vu-box .sc{position:absolute; width:9px; height:9px; border-radius:50%;
  background:radial-gradient(circle at 38% 32%,var(--screw-a),var(--rail-a) 72%);
  box-shadow:inset 0 1px 1px rgba(255,255,255,0.26),0 1px 1px #000;}
.vu-box .sc.tl{top:5px;left:5px;} .vu-box .sc.tr{top:5px;right:5px;}
.vu-box .sc.bl{bottom:5px;left:5px;} .vu-box .sc.br{bottom:5px;right:5px;}
.vu-screen{
  position:relative; width:150px; height:100px; border-radius:3px; overflow:hidden; background:var(--recess);
  box-shadow:inset 0 0 0 2px rgba(0,0,0,0.85), inset 0 0 0 3px rgba(0,0,0,0.55), inset 0 3px 9px rgba(0,0,0,0.6);
}
.vu-screen canvas{width:100%; height:100%; display:block;}
.vu-screen .vig{position:absolute; inset:0; box-shadow:inset 0 0 18px rgba(0,0,0,0.33);
  pointer-events:none; border-radius:3px;}

/* ---- EQ ---- */
.eq-block{flex:1 1 430px; min-width:300px;}
.eq-head{display:flex; justify-content:space-between; align-items:center; gap:12px;
  margin-bottom:12px; flex-wrap:wrap;}
.preset-row{display:flex; gap:6px; flex-wrap:wrap;}
.flat-btn{
  font-family:var(--disp); font-weight:600; font-size:9px; letter-spacing:0.16em;
  color:var(--ink-2); background:linear-gradient(var(--panel-a),var(--panel-b));
  border:1px solid var(--hair); border-radius:3px; padding:5px 11px; cursor:pointer;
  box-shadow:0 1px 0 rgba(255,255,255,0.08) inset; text-transform:uppercase;
  transition:color .18s, border-color .18s;
}
.flat-btn:hover{color:var(--accent-hi); border-color:var(--accent-dim);}
.flat-btn[aria-pressed="true"]{color:var(--bg-0); background:linear-gradient(var(--accent-hi),var(--accent)); border-color:var(--accent);}
.eq-body{display:flex; gap:10px; align-items:stretch;}
.eq-scale{
  display:flex; flex-direction:column; justify-content:space-between; text-align:right;
  font-family:var(--mono); font-size:8px; color:var(--ink-3); height:128px; padding:1px 0;
}
.eq-canvas-wrap{position:relative; flex:1; min-width:0;}
.eq-canvas-wrap canvas{position:absolute; inset:0 0 auto 0; height:128px; width:100%;}
.eq-mid{position:absolute; left:0; right:0; top:64px; height:1px; background:rgba(255,255,255,0.14);}
.eq-bands{position:relative; display:flex; justify-content:space-between; align-items:flex-end; gap:4px;}
.eq-band{display:flex; flex-direction:column; align-items:center; gap:8px; flex:1; min-width:0;}
.eq-band span{font-family:var(--mono); font-size:8px; color:var(--ink-3);}
.eq-band .gain{font-family:var(--mono); font-size:7.5px; color:var(--accent); min-height:10px;}

input[type=range].eqv{
  -webkit-appearance:none; appearance:none; writing-mode:vertical-lr; direction:rtl;
  width:7px; height:128px; background:transparent; cursor:ns-resize;
}
input[type=range].eqv::-webkit-slider-runnable-track{
  width:5px; border:1px solid var(--hair); border-radius:3px; box-shadow:inset 0 0 4px #000;
  background:linear-gradient(90deg,var(--recess),var(--panel-b) 50%,var(--recess));
}
input[type=range].eqv::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none; width:28px; height:15px; margin-left:-12px; border-radius:2.5px;
  background:linear-gradient(180deg,var(--panel-a) 0%,var(--panel-b) 46%,var(--accent) 48%,var(--accent) 52%,var(--panel-b) 54%,var(--panel-a) 100%);
  box-shadow:0 2px 3px rgba(0,0,0,0.67), 0 1px 0 rgba(255,255,255,0.13) inset, 0 0 7px rgba(0,0,0,0.4);
}
input[type=range].eqv::-moz-range-track{
  width:5px; border:1px solid var(--hair); border-radius:3px;
  background:linear-gradient(90deg,var(--recess),var(--panel-b) 50%,var(--recess));
}
input[type=range].eqv::-moz-range-thumb{
  width:28px; height:15px; border:none; border-radius:2.5px;
  background:linear-gradient(180deg,var(--panel-a) 0%,var(--panel-b) 46%,var(--accent) 48%,var(--accent) 52%,var(--panel-b) 54%,var(--panel-a) 100%);
  box-shadow:0 2px 3px rgba(0,0,0,0.67), 0 0 7px rgba(0,0,0,0.4);
}

/* ---- nameplate + specs + peak ---- */
.plate-col{flex:1 1 268px; min-width:240px; display:flex; flex-direction:column; gap:13px;}
.nameplate{display:flex; align-items:center; gap:11px; padding-bottom:11px;
  border-bottom:1px solid var(--hair); box-shadow:0 1px 0 rgba(255,255,255,0.05);}
.nameplate .badge{
  width:32px; height:32px; flex:0 0 auto; border-radius:50%; color:var(--accent);
  background:linear-gradient(150deg,var(--panel-a),var(--panel-b));
  box-shadow:inset 0 0 0 1px var(--accent-dim), 0 1px 2px #000;
  display:flex; align-items:center; justify-content:center;
}
.nameplate .badge svg{width:18px; height:18px;}
.np-brand{font-family:var(--disp); font-weight:700; font-size:16px; letter-spacing:0.02em;
  color:var(--ink); text-transform:uppercase; line-height:1.1;}
.np-brand b{color:var(--accent); font-weight:700;}
.np-brand .sub{display:block; font-family:var(--mono); font-weight:400; font-size:8px;
  letter-spacing:0.18em; color:var(--ink-3); text-transform:uppercase; margin-top:3px;}
.specs{display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; font-family:var(--mono); font-size:8.5px;}
.specs .row{display:flex; justify-content:space-between; gap:6px;
  border-bottom:1px dotted var(--line); padding-bottom:3px;}
.specs .k{color:var(--ink-3); letter-spacing:0.05em;} .specs .v{color:var(--ink-2);}
.peak-row{display:flex; align-items:center; gap:9px;}
.peak-ch{display:flex; flex-direction:column; gap:8px; font-family:var(--mono); font-size:8px; color:var(--ink-3);}
.peak-screen{flex:1; min-width:0; background:var(--recess); border:1px solid var(--hair);
  border-radius:3px; box-shadow:inset 0 2px 7px #000; padding:6px;}
.peak-screen canvas{width:100%; height:34px; display:block;}
.peak-scale{display:flex; justify-content:space-between; font-family:var(--mono);
  font-size:7.5px; color:var(--ink-3); margin-top:5px; padding-left:20px;}

/* ---- signal-source notice (synth bed / no master) ---- */
.src-note{
  display:flex; align-items:center; gap:9px; margin-top:12px; padding:9px 12px;
  border:1px dashed var(--accent-dim); border-radius:4px; background:rgba(0,0,0,0.25);
  font-family:var(--mono); font-size:9px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--ink-2);
}
.src-note .led{width:6px; height:6px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 7px var(--accent); flex:0 0 auto; animation:pulseDot 2.4s ease-in-out infinite;}
.src-note[hidden]{display:none;}

/* ===================================================================
   TRACKLIST
   =================================================================== */
.tracks{display:flex; flex-direction:column;}
.track{
  display:flex; align-items:center; gap:18px; padding:14px; cursor:pointer;
  border:0; border-top:1px solid var(--line); background:transparent; color:inherit;
  font:inherit; text-align:left; width:100%; transition:background .18s, box-shadow .18s;
}
.track:last-of-type{border-bottom:1px solid var(--line);}
.track:hover{background:rgba(255,255,255,0.04); box-shadow:inset 3px 0 0 var(--accent-dim);}
.track[aria-current="true"]{background:rgba(255,255,255,0.06); box-shadow:inset 3px 0 0 var(--accent);}
.track .thumb{width:52px; height:52px; flex:0 0 auto; border:1px solid var(--line);
  border-radius:2px; overflow:hidden; position:relative; background:var(--recess);}
.track .thumb img{width:100%; height:100%; object-fit:cover;}
.track .thumb .eqmini{position:absolute; inset:0; display:none; align-items:flex-end;
  justify-content:center; gap:3px; padding-bottom:9px; background:rgba(0,0,0,0.55);}
.track[aria-current="true"][data-playing="true"] .thumb .eqmini{display:flex;}
.track .thumb .eqmini i{width:3px; background:var(--accent-hi); border-radius:1px; animation:bars .9s ease-in-out infinite;}
.track .thumb .eqmini i:nth-child(2){animation-delay:.15s;}
.track .thumb .eqmini i:nth-child(3){animation-delay:.3s;}
.track .num{font-family:var(--mono); font-size:12px; color:var(--accent); min-width:26px;}
.track .tmid{flex:1; min-width:0; display:block;}
.track .ttitle{display:block; font-family:var(--disp); font-size:20px; font-weight:600; letter-spacing:0.01em;
  color:var(--ink); line-height:1.2; text-transform:uppercase;}
.track[aria-current="true"] .ttitle{color:var(--accent-hi);}
.track .tgenre{display:block; font-family:var(--mono); font-size:10px; letter-spacing:0.14em;
  color:var(--ink-3); margin-top:3px; text-transform:uppercase;}
.track .ttag{font-family:var(--mono); font-size:10px; color:var(--ink-3); letter-spacing:0.1em;}
.track .tdur{font-family:var(--mono); font-size:11px; color:var(--ink-2); min-width:46px; text-align:right;}

/* ===================================================================
   LYRICS
   =================================================================== */
.lyric-card{
  border:1px solid var(--line); border-radius:var(--radius); padding:32px 38px;
  background:linear-gradient(180deg,rgba(255,255,255,0.035),rgba(0,0,0,0.22));
  box-shadow:0 24px 60px -40px #000, inset 0 1px 0 rgba(255,255,255,0.04);
}
.lyric-cols{columns:2; column-gap:52px;}

/* A song is sections, not one block of text. Each gets its own label and the
   whole block stays together when the columns break. */
.lyric-block{break-inside:avoid; margin:0 0 26px;}
.lyric-label{
  display:block; margin-bottom:7px; font-family:var(--mono); font-size:8.5px;
  letter-spacing:0.26em; text-transform:uppercase; color:var(--ink-3);
}
.lyric-block.lb-chorus .lyric-label{color:var(--accent);}
p.verse{margin:0; font-size:16px; line-height:1.62; color:var(--ink); text-wrap:pretty;}
p.verse.chorus{color:var(--accent-hi); font-style:italic; font-weight:500;}

/* pre-chorus sits back a step; bridge and breakdown are marked off with a rule */
.lyric-block.lb-pre .verse{color:var(--ink-2);}
.lyric-block.lb-bridge, .lyric-block.lb-breakdown{
  padding-left:16px; border-left:1px solid var(--accent-dim);
}
.lyric-block.lb-breakdown .verse{font-style:italic;}
.lyric-block.lb-outro .verse{
  font-size:14.5px; letter-spacing:0.02em; color:var(--ink-2);
}
.lyric-foot{margin-top:8px; font-family:var(--mono); font-size:9px; letter-spacing:0.2em;
  color:var(--ink-3); text-transform:uppercase;}
.lyric-empty{font-family:var(--mono); font-size:10.5px; letter-spacing:0.18em;
  color:var(--ink-3); text-transform:uppercase;}

/* ===================================================================
   STREAMING
   =================================================================== */
.stream-row{display:flex; flex-wrap:wrap; gap:13px;}
.stream{
  display:inline-flex; align-items:center; gap:11px; text-decoration:none;
  font-family:var(--mono); font-size:12px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--ink); background:linear-gradient(var(--panel-a),var(--panel-b));
  border:1px solid var(--line); border-radius:7px; padding:14px 21px;
  box-shadow:0 14px 34px -20px #000, 0 1px 0 rgba(255,255,255,0.06) inset;
  transition:color .2s, border-color .2s, box-shadow .2s;
}
.stream:hover{color:var(--accent-hi); border-color:var(--accent-dim);
  box-shadow:0 0 24px -6px var(--accent-dim), 0 1px 0 rgba(255,255,255,0.1) inset;}
.stream .led{width:7px; height:7px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 7px var(--accent); flex:0 0 auto;}
.stream.pending{color:var(--ink-3); cursor:default; border-style:dashed; box-shadow:none;}
.stream.pending .led{background:var(--ink-3); box-shadow:none;}

/* ===================================================================
   FOOTER
   =================================================================== */
.foot-lede{font-size:clamp(18px,2.2vw,25px); line-height:1.5; color:var(--ink-2);
  max-width:780px; margin:0; text-wrap:pretty;}
.credits{display:flex; flex-wrap:wrap; gap:32px 46px; margin-top:36px;}
.cred-group{min-width:180px;}
.cred-h{font-family:var(--mono); font-size:9px; font-weight:400; letter-spacing:0.24em;
  color:var(--accent); text-transform:uppercase; margin:0 0 12px;}
.cred-line{font-size:15px; color:var(--ink); margin-bottom:5px;}
.cred-line span{color:var(--ink-3); font-size:12.5px; font-family:var(--mono);}
.foot-meta{
  display:flex; gap:26px; flex-wrap:wrap; margin-top:40px; padding-top:24px;
  border-top:1px solid var(--line); font-family:var(--mono); font-size:10px;
  letter-spacing:0.2em; color:var(--ink-3); text-transform:uppercase; align-items:center;
}
.foot-meta a{color:var(--ink-3); text-decoration:none;}
.foot-meta a:hover{color:var(--accent);}
.foot-meta .wm{color:var(--accent); display:inline-flex; align-items:center; gap:8px;}
.foot-meta .wm svg{width:15px; height:15px;}

/* ---- keyboard legend ---- */
.keys{display:flex; flex-wrap:wrap; gap:8px 16px; margin-top:14px;
  font-family:var(--mono); font-size:9px; letter-spacing:0.14em; color:var(--ink-3); text-transform:uppercase;}
.keys kbd{
  font-family:var(--mono); font-size:9px; padding:2px 6px; border-radius:3px; color:var(--ink-2);
  background:var(--panel-b); border:1px solid var(--hair); box-shadow:0 1px 0 rgba(255,255,255,0.07) inset;
}

@keyframes pulseDot{0%,100%{opacity:.35;}50%{opacity:1;}}

@media (prefers-reduced-motion: reduce){
  .np-dot.live, .src-note .led, .rel-card .art .nowplay i, .track .thumb .eqmini i{animation:none;}
  .rel-card:hover .art{transform:none;}
}

/* ===================================================================
   MOBILE
   =================================================================== */
@media (max-width:860px){
  .vu-group{flex:1 1 100%; padding-left:0; border-left:none; box-shadow:none; gap:12px;}
  .vu-cell{flex:1 1 0; min-width:0;}
  .vu-box{width:100%;} .vu-screen{width:100%;}
  .ctl-col{padding-left:0; border-left:none; box-shadow:none;}
}
@media (max-width:640px){
  :root{--gutter:16px;}
  .topbar{padding-top:16px; padding-bottom:16px;}
  .topbar .tag{display:none;}
  .faceplate{padding:16px 14px;}
  .hero{padding-top:40px; gap:30px;}
  .eq-block{min-width:0; flex-basis:100%;}
  .eq-bands{gap:2px;}
  .eq-band .gain{display:none;}
  input[type=range].eqv::-webkit-slider-thumb{width:22px; margin-left:-9px;}
  input[type=range].eqv::-moz-range-thumb{width:22px;}
  .lyric-cols{columns:1;}
  .lyric-card{padding:22px 18px;}
  .track{gap:12px; padding:12px 8px;}
  .track .ttitle{font-size:17px;}
  .track .ttag{display:none;}
  .rel-card{flex-basis:132px;}
}
