:root{
  --bg:#ffffff;--bg2:#f7f8f9;--bg3:#eef0f2;--bg4:#e3e6e9;
  --bd:rgba(20,30,40,.09);--bd2:rgba(20,30,40,.16);
  --t1:#1c2630;--t2:#5A6472;--t3:#8a9099;
  --acc:#2B7FA3;--acc2:#1f5f7d;--acc3:rgba(43,127,163,.10);
  --green:#1a8f5e;--green2:rgba(26,143,94,.10);
  --red:#c8102e;--red2:rgba(200,16,46,.08);
  --overlay:rgba(20,30,40,.55);
  --toast-bg:#1c2630;--toast-fg:#ffffff;
  /* Atmosphere (AI-DJ tier) — sage skin from the Novex brand system */
  --sage:#4F6B61;--sage-l:#7C9E92;--sage-d:#15211C;--sage2:rgba(124,158,146,.12);--sage-bd:rgba(79,107,97,.28);
  --shadow-sm:0 1px 3px rgba(20,30,40,.06),0 1px 2px rgba(20,30,40,.04);
  --shadow:0 4px 12px rgba(20,30,40,.08),0 2px 4px rgba(20,30,40,.04);
  --shadow-lg:0 8px 32px rgba(20,30,40,.12),0 2px 8px rgba(20,30,40,.06);
  --radius:14px;--radius-sm:8px;--radius-lg:18px;
  /* Brand fonts from identity system */
  --font-display:'Archivo',system-ui,sans-serif;
  --font-body:'Manrope',-apple-system,'Segoe UI',sans-serif;
  --font-mono:'Space Mono','Courier New',monospace;
  --sans:'Manrope',-apple-system,'Segoe UI',sans-serif;
  /* Global glass */
  --glass:color-mix(in srgb, var(--bg2) 68%, transparent);
  --glass-strong:color-mix(in srgb, var(--bg) 78%, transparent);
  --glass-edge:color-mix(in srgb, var(--bd2) 75%, transparent);
  --glass-blur:blur(16px) saturate(1.2);
  --glass-shadow:0 10px 36px rgba(20,30,40,.10);
  --app-atmosphere:
    radial-gradient(1200px 600px at 8% -10%, rgba(43,127,163,.16), transparent 55%),
    radial-gradient(900px 500px at 92% 8%, rgba(79,107,97,.12), transparent 50%),
    radial-gradient(800px 480px at 50% 110%, rgba(43,127,163,.08), transparent 45%),
    linear-gradient(180deg, #f3f6f8 0%, #eef2f5 45%, #e8eef2 100%);
  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);
  --dur-fast:.18s;
  --dur-med:.28s;
  --dur-slow:.38s;
}
html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#111820;--bg2:#171e28;--bg3:#1f2833;--bg4:#283341;
  --bd:rgba(255,255,255,.08);--bd2:rgba(255,255,255,.14);
  --t1:#eef1f5;--t2:#9aa3b0;--t3:#6b7585;
  --acc:#4a9fc4;--acc2:#3a8aad;--acc3:rgba(74,159,196,.14);
  --green:#2dba7a;--green2:rgba(45,186,122,.12);
  --red:#e8384f;--red2:rgba(232,56,79,.12);
  --overlay:rgba(0,0,0,.72);
  --toast-bg:#eef1f5;--toast-fg:#111820;
  --sage:#7C9E92;--sage-l:#9bb5ab;--sage-d:#0f1814;--sage2:rgba(124,158,146,.14);--sage-bd:rgba(124,158,146,.32);
  --shadow-sm:0 1px 3px rgba(0,0,0,.28),0 1px 2px rgba(0,0,0,.18);
  --shadow:0 4px 12px rgba(0,0,0,.32),0 2px 4px rgba(0,0,0,.2);
  --shadow-lg:0 8px 32px rgba(0,0,0,.45),0 2px 8px rgba(0,0,0,.25);
  --glass:color-mix(in srgb, var(--bg2) 58%, transparent);
  --glass-strong:color-mix(in srgb, var(--bg3) 72%, transparent);
  --glass-edge:color-mix(in srgb, var(--bd2) 80%, transparent);
  --glass-shadow:0 12px 40px rgba(0,0,0,.35);
  --app-atmosphere:
    radial-gradient(1100px 580px at 6% -12%, rgba(74,159,196,.22), transparent 55%),
    radial-gradient(900px 520px at 96% 0%, rgba(124,158,146,.14), transparent 50%),
    radial-gradient(700px 420px at 50% 115%, rgba(74,159,196,.10), transparent 45%),
    linear-gradient(180deg, #0e141b 0%, #111820 40%, #151d27 100%);
}
html{color-scheme:light}
/* Brand animations */
@keyframes np-breathe{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.9}}
@keyframes nq-sweep{0%{transform:translateX(-120%) skewX(-14deg);opacity:0}20%{opacity:.4}60%{opacity:0}100%{transform:translateX(250%) skewX(-14deg);opacity:0}}
@keyframes nq-glow{0%,100%{box-shadow:0 0 0 0 rgba(200,16,46,0)}50%{box-shadow:0 0 24px 2px rgba(200,16,46,.4)}}
@keyframes view-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes panel-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes menu-in{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
@keyframes nq-spin{to{transform:rotate(360deg)}}
/* NovexQ record-Q vinyl mark — ring + centre hole + cue stroke (em-scaled) */
.nq-mark{position:relative;display:inline-block;width:.86em;height:.86em;margin-left:.04em;vertical-align:-.04em}
.nq-mark .ring{position:absolute;inset:0;border:.12em solid var(--red);border-radius:50%}
.nq-mark .hole{position:absolute;left:50%;top:50%;width:.15em;height:.15em;background:var(--red);border-radius:50%;transform:translate(-50%,-50%)}
.nq-mark .cue{position:absolute;right:.02em;bottom:.04em;width:.32em;height:.12em;background:var(--red);border-radius:.06em;transform:rotate(45deg);transform-origin:right center}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{
  height:100%;color:var(--t1);font-family:var(--font-body);
  overscroll-behavior:none;-webkit-font-smoothing:antialiased
}
html{background:var(--app-atmosphere);background-attachment:fixed;min-height:100%}
body{
  background:transparent;
  min-height:100%;
}
h1,h2,h3,h4,.wordmark,.stat-v{font-family:var(--font-display)}
code,kbd,.price,.mono{font-family:var(--font-mono)}
#nav{
  display:flex;align-items:center;gap:2px;padding:0 12px;height:52px;
  background:var(--glass-strong);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-edge);
  position:sticky;top:0;z-index:100;
  box-shadow:var(--glass-shadow);
}
/* NovexPlay logotype — Archivo 800/600, play tile icon */
#nav-logo{
  display:flex;align-items:center;gap:10px;
  margin-right:8px;flex-shrink:0;text-decoration:none;cursor:pointer;
  color:inherit;border:none;background:transparent;padding:0;font:inherit;
}
#nav-logo:hover .logo-tile{filter:brightness(1.08)}
#nav-logo:hover .logo-text .p{opacity:.9}
#nav-logo .logo-tile{
  width:32px;height:32px;border-radius:8px;
  background:var(--acc);display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  animation:np-breathe 3.5s ease-in-out infinite;
}
#nav-logo .logo-play{
  width:0;height:0;
  border-top:7px solid transparent;
  border-bottom:7px solid transparent;
  border-left:11px solid #fff;
  margin-left:2px;
}
#nav-logo .logo-text{
  font-family:var(--font-display);font-size:17px;line-height:1;letter-spacing:-.03em;
}
#nav-logo .logo-text .n{font-weight:800;color:var(--t1)}
#nav-logo .logo-text .p{font-weight:600;color:var(--acc)}
.nb{padding:5px 12px;border-radius:20px;border:none;background:transparent;cursor:pointer;font-size:13px;font-weight:500;color:var(--t3);transition:background var(--dur-fast) var(--ease-soft),color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) ease;white-space:nowrap;font-family:var(--sans)}
.nb.active{background:var(--acc3);color:var(--acc);font-weight:700}
.nb:hover:not(.active){background:var(--bg3);color:var(--t2)}
.nb:active{transform:scale(.96)}
#nav-user{display:none;align-items:center;gap:6px;margin-left:4px}
#nav-user-name{font-size:12px;color:var(--t2);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#nav-signin{display:none;margin-left:4px}
.theme-toggle{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--bd2);background:var(--bg3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--t1);transition:background var(--dur-med) var(--ease-soft),color var(--dur-med) var(--ease-soft),border-color var(--dur-med) var(--ease-soft),transform var(--dur-fast) var(--ease-out);flex-shrink:0;font-size:17px;line-height:1;margin-right:8px}
.theme-toggle:hover{background:var(--bg4);color:var(--acc);border-color:var(--acc)}
.theme-toggle:active{transform:scale(.92) rotate(-8deg)}
.theme-toggle .theme-icon-dark,.theme-toggle .theme-icon-light{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em}
html:not([data-theme="dark"]) .theme-icon-light,html[data-theme="dark"] .theme-icon-dark{display:none}
.view{display:none;padding:16px;min-height:calc(100dvh - 52px);max-width:900px;margin:0 auto}
.view.active{display:block;animation:view-in var(--dur-slow) var(--ease-out) both}
/* When the dock is up, shrink the view floor so the footer can sit above it */
body.np-dock-on .view.active{
  min-height:calc(100dvh - 52px - var(--np-dock-clear, 160px));
}

.site-footer{
  max-width:1120px;margin:0 auto;
  padding:36px 20px 28px;
  border-top:1px solid var(--glass-edge);
  color:var(--t3);
}
.site-footer-inner{max-width:52rem}
.site-footer-tag{
  margin:0 0 10px;font-size:13px;line-height:1.5;color:var(--t2);
  max-width:48ch;
}
.site-footer-meta{
  margin:0;font-size:12px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 0;
  font-variant-numeric:tabular-nums;
}
.site-footer-meta a{color:var(--acc);text-decoration:none;font-weight:600}
.site-footer-meta a:hover{text-decoration:underline}
.site-footer-dot{margin:0 8px;opacity:.55}

/* In-flow spacer: real scroll room under the footer (not body padding guesses) */
#np-dock-spacer{
  height:0;
  pointer-events:none;
  flex-shrink:0;
}
body.np-dock-on #np-dock-spacer{
  height:var(--np-dock-clear, 160px);
}
.gps-bar{display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:10px;font-size:13px;font-weight:500;margin-bottom:16px;border:1px solid}
.gps-ok{background:var(--green2);border-color:rgba(26,143,94,.25);color:var(--green)}
.gps-warn{background:var(--acc3);border-color:rgba(43,127,163,.25);color:var(--acc)}
.gps-info{background:var(--glass);border-color:var(--glass-edge);color:var(--t3);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.gps-detail{font-size:11px;opacity:.7;margin-left:auto}
.card{
  background:var(--glass);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-edge);
  border-radius:var(--radius);
  padding:16px;margin-bottom:14px;
  box-shadow:var(--glass-shadow);
}
.card h3{font-size:14px;font-weight:700;color:var(--t1);margin-bottom:14px;letter-spacing:-.1px;font-family:var(--font-display)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:560px){.two{grid-template-columns:1fr}}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
@media(max-width:480px){.stat-row{grid-template-columns:repeat(2,1fr)}}
.stat{
  background:var(--glass-strong);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--glass-edge);
  border-radius:var(--radius-sm);
  padding:12px 14px;
  box-shadow:var(--shadow-sm)
}
.stat-l{font-size:11px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}
.stat-v{font-size:22px;font-weight:800;color:var(--t1);letter-spacing:-.5px;line-height:1}
.stat-v.acc{color:var(--acc)}
.sec{font-size:10px;font-weight:700;color:var(--t3);letter-spacing:.8px;text-transform:uppercase;margin:0 0 10px}
#search-wrap{position:relative;margin-bottom:12px}
#song-search{width:100%;padding:11px 14px 11px 40px;border:1.5px solid var(--glass-edge);border-radius:10px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--t1);font-size:14px;font-family:var(--sans);transition:border-color .15s,box-shadow .15s}
#song-search:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc3)}
#search-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:15px;pointer-events:none}
#search-clear{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--t3);cursor:pointer;font-size:18px;line-height:1;padding:2px 4px;display:none}
#search-clear.show{display:block}
.genre-row{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;margin-bottom:14px;padding-bottom:2px;scrollbar-width:none}
.genre-row::-webkit-scrollbar{display:none}
.gp{padding:6px 14px;border-radius:20px;border:1.5px solid var(--glass-edge);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;font-size:13px;font-weight:500;color:var(--t2);transition:background var(--dur-fast) var(--ease-soft),border-color var(--dur-fast) var(--ease-soft),color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) ease;white-space:nowrap;flex-shrink:0;font-family:var(--sans)}
.gp.active{background:var(--acc);color:#fff;border-color:var(--acc);font-weight:700;box-shadow:0 2px 8px rgba(43,127,163,.3)}
.gp:hover:not(.active){border-color:var(--bd2);color:var(--t1);background:var(--bg3)}
.gp:active{transform:scale(.96)}
.sgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
@media(max-width:500px){.sgrid{grid-template-columns:repeat(2,1fr)}}

/* Player: library primary, playlists/announcements as a narrow rail */
#view-player.view{max-width:1120px}
.player-split{
  display:grid;
  grid-template-columns:minmax(0,1fr) 210px;
  gap:14px;
  margin-bottom:14px;
  align-items:start;
}
.player-lib{min-width:0}
.player-side{
  min-width:0;
  position:sticky;
  top:64px;
}
.player-side .sec{font-size:9px;letter-spacing:.7px}
.player-side .btn.full{justify-content:flex-start;padding-left:10px;padding-right:10px;font-size:12px}
.player-side .card{padding:12px}
.player-side .on{font-size:13px}
.player-side .os{font-size:11px}
.pl-albums-sec,.pl-tracks-sec{margin-top:4px;margin-bottom:8px}
#pl-album-filter-label{font-weight:500;color:var(--acc);text-transform:none;letter-spacing:0;font-size:12px}
.pl-album-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(112px,1fr));
  gap:10px;
  margin-bottom:16px;
}
.pl-album-tile{
  position:relative;display:flex;flex-direction:column;gap:6px;min-width:0;
  margin:0;padding:0;border:1.5px solid transparent;border-radius:10px;
  background:transparent;color:inherit;font:inherit;text-align:left;
  transition:border-color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),background var(--dur-fast) ease;
}
.pl-album-tile-main{
  display:flex;flex-direction:column;gap:6px;min-width:0;width:100%;
  margin:0;padding:0;border:none;border-radius:8px;
  background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;
}
.pl-album-tile:hover{transform:translateY(-2px)}
.pl-album-tile.is-selected{
  border-color:var(--acc);
  background:color-mix(in srgb, var(--acc) 10%, transparent);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--acc) 35%, transparent);
}
.pl-album-tile.is-all{
  justify-content:center;align-items:center;min-height:112px;
  border:1.5px dashed var(--glass-edge);background:var(--bg2);
  color:var(--t2);font-size:12px;font-weight:600;cursor:pointer;
}
.pl-album-tile.is-all.is-selected{border-style:solid;color:var(--acc)}
.pl-album-art{
  width:100%;aspect-ratio:1;border-radius:8px;object-fit:cover;display:block;
  background:var(--bg3);border:1px solid var(--glass-edge);
}
.pl-album-art.fallback{
  display:flex;align-items:center;justify-content:center;color:var(--t3);
}
.pl-album-art.fallback i{width:22px;height:22px}
.pl-album-play{
  position:absolute;right:8px;top:8px;z-index:2;
  width:34px;height:34px;border-radius:50%;border:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  color:var(--t1);cursor:pointer;
  box-shadow:var(--shadow-sm);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;transform:scale(.9);
  transition:opacity var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),background var(--dur-fast) ease;
}
.pl-album-tile:hover .pl-album-play,
.pl-album-tile:focus-within .pl-album-play,
.pl-album-tile.is-selected .pl-album-play{opacity:1;transform:none}
.pl-album-play:hover{background:var(--acc);color:#fff}
.pl-album-play i{width:16px;height:16px}
.pl-album-meta{min-width:0;padding:0 2px 4px}
.pl-album-name{
  font-size:12px;font-weight:700;color:var(--t1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pl-album-sub{
  font-size:11px;color:var(--t3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pl-song-list{
  border:1px solid var(--glass-edge);border-radius:10px;background:var(--bg2);
  margin-bottom:10px;overflow:hidden;
}
.pl-album-group + .pl-album-group{
  border-top:1px solid color-mix(in srgb, var(--bd) 85%, transparent);
}
.pl-album-group-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 12px 8px;
  background:color-mix(in srgb, var(--bg3) 72%, transparent);
}
.pl-album-group-text{min-width:0;display:flex;flex-direction:column;gap:1px}
.pl-album-group-name{
  font-size:13px;font-weight:800;color:var(--t1);
  font-family:var(--font-display);letter-spacing:-.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pl-album-group-meta{font-size:11px;color:var(--t3)}
.pl-album-group-play{flex-shrink:0;border-radius:50%;width:32px;height:32px;padding:0;justify-content:center}
.pl-album-group-play i{width:14px;height:14px}
.pl-album-group-tracks{display:flex;flex-direction:column}
.pl-track{
  display:flex;align-items:center;gap:10px;
  margin:0;padding:8px 10px;
  border-bottom:1px solid color-mix(in srgb, var(--bd) 85%, transparent);
  transition:background var(--dur-fast) ease;
  cursor:pointer;
}
.pl-album-group:last-child .pl-track:last-child,
.pl-song-list > .pl-track:last-child{border-bottom:none}
.pl-album-group-tracks .pl-track:nth-child(even),
.pl-song-list > .pl-track:nth-child(even){background:color-mix(in srgb, var(--t1) 3.5%, transparent)}
.pl-track:hover{background:color-mix(in srgb, var(--acc) 12%, transparent)}
.pl-track.is-playing{
  background:color-mix(in srgb, var(--acc) 10%, var(--bg2));
  box-shadow:inset 3px 0 0 var(--acc);
}
.pl-track.is-live{background:color-mix(in srgb, var(--acc) 14%, var(--bg2))}
.pl-track-art{
  width:40px;height:40px;border-radius:6px;object-fit:cover;flex-shrink:0;
  background:var(--bg3);border:1px solid var(--glass-edge);
}
.pl-track-art.fallback{display:flex;align-items:center;justify-content:center;color:var(--t3)}
.pl-track-art.fallback i{width:16px;height:16px}
.pl-track-body{min-width:0;flex:1}
.pl-track-t{font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-track-a{font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-track-dur{font-size:11px;font-family:var(--font-mono);color:var(--t3);flex-shrink:0;min-width:2.5em;text-align:right}
.pl-track-actions{display:flex;gap:4px;flex-shrink:0}
#pl-add-box{padding:22px 22px 18px;width:min(400px,100%)}
#pl-add-box h3{font-size:16px;font-weight:800;margin-bottom:4px;letter-spacing:-.2px}
.pl-add-list{max-height:min(50vh,320px);overflow-y:auto;border:1px solid var(--glass-edge);border-radius:10px;background:var(--bg2);margin:10px 0 4px}
.pl-add-list .row{margin:0;padding:10px 12px;cursor:pointer;border-bottom:1px solid color-mix(in srgb, var(--bd) 85%, transparent)}
.pl-add-list .row:last-child{border-bottom:none}
.pl-add-list .row:nth-child(even){background:color-mix(in srgb, var(--t1) 3.5%, transparent)}
.pl-add-list .row:hover{background:color-mix(in srgb, var(--acc) 12%, transparent)}
.pl-add-list .row.is-active{box-shadow:inset 3px 0 0 var(--acc);background:color-mix(in srgb, var(--acc) 10%, var(--bg2))}
@media(max-width:760px){
  .player-split{grid-template-columns:1fr}
  .player-side{position:static}
  .pl-album-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}
}
.sc{
  background:var(--glass);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-edge);
  border-radius:var(--radius-sm);
  padding:12px;cursor:pointer;transition:border-color var(--dur-med) var(--ease-soft),transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-soft),background var(--dur-med) ease;user-select:none;position:relative;
  box-shadow:var(--glass-shadow)
}
.sc-main{display:flex;gap:10px;align-items:flex-start;min-width:0}
.sc-body{min-width:0;flex:1}
.sc-art{
  width:48px;height:48px;border-radius:8px;object-fit:cover;flex-shrink:0;
  background:var(--bg3);border:1px solid var(--glass-edge);
}
.sc-art-fallback{display:flex;align-items:center;justify-content:center;color:var(--t3)}
.sc-art-fallback i{width:18px;height:18px}
.sc:hover{border-color:color-mix(in srgb, var(--acc) 55%, var(--glass-edge));transform:translateY(-3px);box-shadow:0 14px 36px rgba(0,0,0,.18)}
.sc:active{transform:translateY(-1px) scale(.985);transition-duration:.1s}
.sc.q{border-color:rgba(26,143,94,.4);background:var(--green2)}
.sc-price{position:absolute;top:8px;right:8px;font-size:10px;font-weight:700;color:var(--acc);background:var(--acc3);border-radius:4px;padding:2px 6px;font-family:var(--font-mono);z-index:1}
.sc-dur{position:absolute;top:8px;right:8px;font-size:11px;font-weight:700;color:var(--t2);font-family:var(--font-mono);letter-spacing:.02em}
.sc-t{font-size:13px;font-weight:700;color:var(--t1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:2px;padding-right:40px;line-height:1.3;min-height:1.3em}
.sc-a{font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.sc-al{font-size:11px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.sc-g{font-size:10px;color:var(--t3);margin-top:4px;font-weight:500}
.sc-meta{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;align-items:center}
.sc-tag{display:inline-flex;align-items:center;font-size:10px;font-weight:600;color:var(--t2);background:color-mix(in srgb, var(--bg3) 70%, transparent);border:1px solid var(--glass-edge);border-radius:999px;padding:2px 7px;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-tag-prem{color:var(--acc);background:var(--acc3);border-color:color-mix(in srgb, var(--acc) 35%, transparent)}
.sc-tag-dur{font-family:var(--font-mono);color:var(--t1)}
.sc-tag-plays{color:var(--t3);font-weight:500}
.sc-q{font-size:10px;color:var(--green);font-weight:700;margin-top:6px}
.sc.has-price .sc-t,.sc:has(.sc-price) .sc-t{padding-right:48px}

/* Now-playing highlight on library cards */
.sc.is-playing{
  border-color:var(--acc);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--acc) 45%, transparent),0 14px 36px color-mix(in srgb, var(--acc) 22%, transparent);
  transform:none;
}
.sc.is-playing:hover{
  transform:none;
  border-color:var(--acc);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--acc) 55%, transparent),0 16px 40px color-mix(in srgb, var(--acc) 28%, transparent);
}
.sc.is-live{
  background:color-mix(in srgb, var(--acc) 10%, var(--glass));
}
.sc-play-btn.is-live{
  background:var(--acc);
  border-color:var(--acc);
  color:#fff;
  min-width:34px;
  justify-content:center;
}
.sc-play-btn.is-live:hover,
.sc-play-btn.is-live:active{
  transform:none;
}
.eq-bars{
  display:inline-flex;align-items:flex-end;justify-content:center;gap:2.5px;height:14px;width:16px;
}
.eq-bars i{
  display:block;width:3px;min-height:3px;border-radius:1px;background:currentColor;
  transform-origin:center bottom;
  height:35%;
  animation:eq-bounce .82s ease-in-out infinite;
  will-change:height;
}
.eq-bars i:nth-child(1){animation-duration:.72s;animation-delay:0s}
.eq-bars i:nth-child(2){animation-duration:.96s;animation-delay:.08s}
.eq-bars i:nth-child(3){animation-duration:.84s;animation-delay:.16s}
@keyframes eq-bounce{
  0%,100%{height:22%}
  40%{height:100%}
  60%{height:55%}
}
@media (prefers-reduced-motion:reduce){
  .eq-bars i{animation:none!important;height:55%!important}
  #np-card.is-live #np-art{animation:none}
}
body.np-dock-on #toast{bottom:calc(var(--np-dock-clear, 160px) + 8px)}
#load-more-wrap{text-align:center;padding:10px 0 4px}
#songs-count{font-size:12px;color:var(--t3);text-align:center;margin-bottom:8px}
.qwrap{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-edge);border-radius:var(--radius-sm);padding:12px;margin-bottom:12px;min-height:60px}
.qi{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--bd)}
.qi:last-child{border-bottom:none}
.qi-num{font-size:11px;font-weight:700;color:var(--t3);min-width:18px;text-align:center}
.qi-t{font-size:13px;font-weight:700;color:var(--t1);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qi-a{font-size:12px;color:var(--t2)}
.qi-del{background:transparent;border:none;cursor:pointer;color:var(--t3);padding:4px 6px;border-radius:6px;font-size:14px;line-height:1;transition:all .15s}
.qi-del:hover{color:var(--red);background:var(--red2)}
.ap-songs .pl-song{gap:6px;user-select:none}
.ap-songs .pl-handle{color:var(--t3);font-size:11px;letter-spacing:-1px;cursor:grab;padding:0 2px;flex-shrink:0;line-height:1}
.ap-songs .pl-song.pl-dragging{opacity:.45}
.ap-songs .pl-song.pl-drop-target{background:var(--acc3);border-radius:8px}
.ap-songs .pl-move{padding:4px 6px;min-width:28px;justify-content:center}
.ap-songs .pl-move:disabled{opacity:.3;cursor:not-allowed}
.pl-edit-actions{display:flex;gap:8px;justify-content:flex-end;margin:10px 0 12px}
.pay-box{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-edge);border-radius:var(--radius-sm);padding:14px;margin-bottom:12px}
.pay-row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;color:var(--t2)}
.pay-row.total{font-size:16px;font-weight:800;color:var(--t1);border-top:1px solid var(--bd);margin-top:8px;padding-top:10px}
.pay-row.total span:last-child{color:var(--acc)}
.btn{padding:10px 18px;border-radius:var(--radius-sm);border:1.5px solid var(--glass-edge);background:var(--glass-strong);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;font-size:14px;font-weight:500;color:var(--t1);font-family:var(--sans);transition:background var(--dur-fast) var(--ease-soft),border-color var(--dur-fast) var(--ease-soft),color var(--dur-fast) var(--ease-soft),box-shadow var(--dur-med) var(--ease-soft),transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) ease;display:inline-flex;align-items:center;gap:6px}
.btn:hover{background:var(--bg3);border-color:var(--bd2)}
.btn:active{transform:scale(.965)}
.btn.pri{background:var(--acc);color:#fff;border-color:var(--acc);font-weight:700;box-shadow:0 2px 8px rgba(43,127,163,.25)}
.btn.pri:hover{background:var(--acc2);box-shadow:0 6px 16px rgba(43,127,163,.32);transform:translateY(-1px)}
.btn.pri:active{transform:translateY(0) scale(.97);box-shadow:0 2px 6px rgba(43,127,163,.22)}
.btn.pri:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}
.btn.full{width:100%;justify-content:center}
.btn.sml{padding:5px 10px;font-size:12px;border-radius:6px;gap:4px}
.btn.dan{color:var(--red);border-color:rgba(200,16,46,.25)}
.btn.dan:hover{background:var(--red2);border-color:var(--red)}
.btn.grn{background:var(--green);color:#fff;border-color:var(--green);font-weight:700;box-shadow:0 2px 8px rgba(26,143,94,.25)}
.btn.grn:hover{opacity:.92;box-shadow:0 6px 16px rgba(26,143,94,.3);transform:translateY(-1px)}
.btn.grn:active{transform:translateY(0) scale(.97)}
.btn.grn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--bd)}
.row:last-child{border-bottom:none}
.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dg{background:var(--green)}.da{background:var(--acc)}.dr{background:var(--red)}
.fl{flex:1;min-width:0}
.on{font-size:14px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.os{font-size:12px;color:var(--t2);margin-top:1px;line-height:1.4}
.badge{display:inline-flex;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.1px}
.bs{background:var(--green2);color:var(--green)}
.bw{background:var(--acc3);color:var(--acc)}
.bi{background:rgba(90,100,114,.12);color:var(--t2)}
.prow{display:flex;justify-content:space-between;font-size:13px;padding:5px 0;border-bottom:1px solid var(--bd);color:var(--t2)}
.prow:last-child{border-bottom:none;font-weight:700;font-size:14px;color:var(--t1)}
.prow .acc{color:var(--acc)}
.split-bar{height:6px;border-radius:3px;overflow:hidden;display:flex;margin:6px 0 10px}
.split-novex{background:var(--acc);transition:width .3s}
.split-outlet{background:var(--green);transition:width .3s}
.fr{margin-bottom:10px}
.fr label{display:block;font-size:12px;font-weight:600;color:var(--t2);margin-bottom:5px}
.fr input,.fr select,.fr textarea{width:100%;padding:9px 12px;border:1.5px solid var(--glass-edge);border-radius:var(--radius-sm);background:var(--glass-strong);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--t1);font-size:14px;font-family:var(--sans);transition:border-color .15s,box-shadow .15s}
.fr input:focus,.fr select:focus,.fr textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc3)}
.price-hint{font-size:11px;color:var(--t3);margin-top:4px;line-height:1.4}
.receipt{background:var(--green2);border:1px solid rgba(26,143,94,.25);border-radius:var(--radius);padding:20px;margin-bottom:14px;text-align:center}
.receipt h3{font-size:20px;font-weight:800;color:var(--green);margin-bottom:4px}
.receipt-num{font-size:12px;color:var(--t2);letter-spacing:.5px;margin-bottom:12px}
.auth-wall{text-align:center;padding:48px 20px}
.auth-wall p{color:var(--t2);margin-bottom:16px;font-size:14px;line-height:1.6}
.nolic{text-align:center;padding:56px 20px}
.nolic h2{font-size:22px;font-weight:800;margin:14px 0 8px;letter-spacing:-.3px}
.nolic p{font-size:14px;color:var(--t2);line-height:1.6;max-width:280px;margin:0 auto}
#login-screen,#rzp-modal,#access-modal,#staff-modal,#assign-modal,#qr-modal,#song-edit-modal,#album-edit-modal,#pl-add-modal,#announcements-modal{
  position:fixed;inset:0;z-index:300;
  display:flex;align-items:center;justify-content:center;
  padding:16px;
  background:transparent;
  backdrop-filter:blur(0);
  -webkit-backdrop-filter:blur(0);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:
    opacity var(--dur-med) var(--ease-soft),
    visibility 0s linear var(--dur-med),
    background var(--dur-slow) var(--ease-soft),
    backdrop-filter var(--dur-slow) var(--ease-soft),
    -webkit-backdrop-filter var(--dur-slow) var(--ease-soft);
}
#song-edit-modal{z-index:320} /* above album-edit when both open */
#login-screen{z-index:200;padding:20px}
#login-screen.show,#rzp-modal.show,#access-modal.show,#staff-modal.show,#assign-modal.show,#qr-modal.show,#song-edit-modal.show,#album-edit-modal.show,#pl-add-modal.show,#announcements-modal.show{
  opacity:1;visibility:visible;pointer-events:auto;
  background:var(--overlay);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  transition:
    opacity var(--dur-med) var(--ease-out),
    visibility 0s linear 0s,
    background var(--dur-med) var(--ease-out),
    backdrop-filter var(--dur-med) var(--ease-out),
    -webkit-backdrop-filter var(--dur-med) var(--ease-out);
}
.login-box,#rzp-box,#access-box,#staff-box,#assign-box,.modal-panel,#song-edit-box,#album-edit-box,#announcements-box{
  background:var(--glass-strong);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-edge);
  border-radius:var(--radius-lg);
  box-shadow:var(--glass-shadow);
  opacity:0;
  transform:translateY(16px) scale(.965);
  transition:
    opacity var(--dur-med) var(--ease-soft),
    transform var(--dur-slow) var(--ease-out);
}
#login-screen.show .login-box,
#rzp-modal.show #rzp-box,
#access-modal.show #access-box,
#staff-modal.show #staff-box,
#assign-modal.show #assign-box,
#qr-modal.show .modal-panel,
#song-edit-modal.show #song-edit-box,
#album-edit-modal.show #album-edit-box,
#pl-add-modal.show #pl-add-box,
#announcements-modal.show #announcements-box{
  opacity:1;
  transform:translateY(0) scale(1);
  transition:
    opacity var(--dur-med) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
}
.login-box{padding:32px;width:100%;max-width:360px}
.login-box h2{font-size:22px;font-weight:800;margin-bottom:4px;letter-spacing:-.3px}
.login-box p{font-size:13px;color:var(--t2);margin-bottom:22px;line-height:1.5}
#rzp-box{padding:26px;width:100%;max-width:380px}
#rzp-box h3{font-size:18px;font-weight:800;margin-bottom:16px;letter-spacing:-.2px}
.rzp-song-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;border-bottom:1px solid var(--bd)}
.rzp-song-row:last-child{border-bottom:none}
#access-box{padding:26px;width:100%;max-width:500px;max-height:88vh;overflow-y:auto}
#access-box h3{font-size:18px;font-weight:800;margin-bottom:4px;letter-spacing:-.2px}
#staff-box{padding:26px;width:100%;max-width:500px;max-height:88vh;overflow-y:auto}
#staff-box h3{font-size:18px;font-weight:800;margin-bottom:4px;letter-spacing:-.2px}
.staff-item{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px solid var(--bd)}
.staff-item:first-child{border-top:none}
#assign-box{padding:26px;width:100%;max-width:560px;max-height:88vh;overflow-y:auto}
#assign-box h3{font-size:18px;font-weight:800;margin-bottom:4px;letter-spacing:-.2px}
.modal-panel{padding:26px;width:100%;max-width:560px;max-height:88vh;overflow-y:auto}
.assign-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-top:1px solid var(--bd);cursor:pointer;transition:background var(--dur-fast) var(--ease-soft)}
.assign-item:first-child{border-top:none}
.assign-item:hover{background:var(--bg2)}
.assign-item input{width:auto;margin:0;flex-shrink:0}
.assign-item .ai-info{flex:1;min-width:0}
.assign-item .ai-name{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.assign-item .ai-loc{color:var(--t2);font-size:11px}
.assign-item .ai-tag{font-size:10px;color:var(--t3)}
.co-tag{display:inline-block;font-size:10px;font-weight:700;color:var(--acc);background:var(--acc3);border-radius:10px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.row-more{position:relative;display:inline-block;margin-left:4px}
.row-more>summary{list-style:none;cursor:pointer}
.row-more>summary::-webkit-details-marker{display:none}
.row-more>summary::marker{content:''}
.row-more-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:60;background:var(--glass-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge);border-radius:12px;box-shadow:var(--glass-shadow);padding:6px;display:flex;flex-direction:column;gap:2px;min-width:188px;animation:menu-in var(--dur-med) var(--ease-out) both;transform-origin:top right}
.row-more-menu .btn{justify-content:flex-start;text-align:left;width:100%;border:none;margin:0}
.row-more-menu .btn.dan{color:var(--red)}
details.adm-collapse{margin-bottom:12px}
details.adm-collapse>summary{cursor:pointer;list-style:none;padding:13px 16px;font-family:var(--font-display);font-weight:800;font-size:15px;color:var(--t1);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-edge);border-radius:var(--radius);display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-sm);transition:background var(--dur-fast) var(--ease-soft),border-color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out)}
details.adm-collapse>summary:hover{background:var(--bg3)}
details.adm-collapse>summary:active{transform:scale(.99)}
details.adm-collapse>summary::-webkit-details-marker{display:none}
details.adm-collapse>summary::after{content:'▾';margin-left:auto;color:var(--t3);font-size:12px;transition:transform var(--dur-med) var(--ease-out)}
details.adm-collapse:not([open])>summary::after{content:'▸'}
details.adm-collapse[open]>summary{margin-bottom:10px}
details.adm-collapse[open]>summary::after{transform:rotate(0deg)}
details.adm-collapse .sub-note{font-size:12px;color:var(--t3);font-weight:400;font-family:var(--font-body)}
/* Phase 4 — hierarchy explorer */
.exp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}
.exp-crumbs{display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:12px;color:var(--t3)}
.exp-crumbs a{color:var(--acc);cursor:pointer;font-weight:600;text-decoration:none}
.exp-crumbs a:hover{text-decoration:underline}
.exp-crumbs .sep{color:var(--t3);opacity:.7;margin:0 1px}
.exp-crumbs .cur{color:var(--t1);font-weight:700}
.exp-title{font-family:var(--font-display);font-size:20px;font-weight:800;letter-spacing:-.35px;margin:2px 0 12px;line-height:1.2}
.exp-stats{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(118px,1fr));
  gap:8px;
  margin-bottom:16px;
  max-width:640px;
}
.exp-stat{
  background:var(--glass);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--glass-edge);
  border-radius:var(--radius-sm);
  padding:9px 11px;
  min-width:0;
}
.exp-stat .l{font-size:10px;color:var(--t3);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.exp-stat .v{font-size:16px;font-weight:800;font-family:var(--font-display);margin-top:3px;letter-spacing:-.3px;line-height:1.15}
.exp-stat .v.acc{color:var(--acc)}
.exp-stat .v.red{color:var(--red)}
.exp-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.exp-lead h4,.exp-section h4{
  font-family:var(--font-display);
  font-size:13px;
  font-weight:800;
  margin:0 0 10px;
  display:flex;
  align-items:center;
  gap:8px;
  color:var(--t2);
  text-transform:uppercase;
  letter-spacing:.03em;
}
.exp-section h4 .exp-count{
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:700;
  color:var(--t3);
  text-transform:none;
  letter-spacing:0;
  background:var(--bg3);
  border-radius:999px;
  padding:1px 7px;
}
.lead-row{
  display:flex;align-items:center;gap:10px;padding:8px 4px;
  border-top:1px solid var(--bd);cursor:pointer;border-radius:6px;
}
.lead-row:first-child{border-top:none}
.lead-row:hover{background:var(--bg2)}
.lead-rank{font-family:var(--font-mono);font-size:12px;color:var(--t3);min-width:20px;text-align:center}
.lead-name{flex:1;font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lead-val{font-family:var(--font-mono);font-weight:700;font-size:13px;color:var(--acc)}
.region-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-top:4px;max-width:720px}
.region-tile{background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--glass-edge);border-radius:var(--radius-sm);padding:11px 12px;cursor:pointer;transition:border-color .15s}
.region-tile:hover{border-color:var(--acc)}
.region-tile .rt-name{font-family:var(--font-display);font-weight:800;font-size:14px}
.region-tile .rt-sub{font-size:11px;color:var(--t2);margin-top:3px}

/* Expand-in-place tree */
.exp-tree{display:flex;flex-direction:column;gap:8px;max-width:560px}
.exp-node{
  border:1px solid var(--glass-edge);
  border-radius:var(--radius-sm);
  background:var(--glass);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  overflow:hidden;
}
.exp-node-head{
  display:flex;
  align-items:flex-start;
  gap:10px;
  width:100%;
  padding:12px 14px;
  border:none;
  background:transparent;
  color:inherit;
  text-align:left;
  cursor:pointer;
  font:inherit;
}
.exp-node-head:hover{background:var(--bg3)}
.exp-node.is-leaf .exp-node-head{cursor:default}
.exp-node.is-leaf .exp-node-head:hover{background:transparent}
.exp-node-toggle{
  flex:0 0 auto;
  width:18px;
  height:18px;
  margin-top:2px;
  display:grid;
  place-items:center;
  color:var(--t3);
  font-size:12px;
  line-height:1;
  transition:transform .15s ease;
}
.exp-node.is-open > .exp-node-head .exp-node-toggle{transform:rotate(90deg);color:var(--acc)}
.exp-node.is-leaf > .exp-node-head .exp-node-toggle{visibility:hidden}
.exp-node-body{flex:1;min-width:0}
.exp-node-name{
  font-family:var(--font-display);
  font-weight:800;
  font-size:15px;
  letter-spacing:-.2px;
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.exp-node-place{font-size:11px;color:var(--t2);margin-top:2px}
.exp-node-metrics{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px 12px;
  margin-top:10px;
}
.exp-node-metric .enm-l{
  font-size:9px;
  color:var(--t3);
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.exp-node-metric .enm-v{
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
  color:var(--t1);
  margin-top:1px;
}
.exp-node-metric .enm-v.acc{color:var(--acc)}
.exp-node-metric .enm-v.red{color:var(--red)}
.exp-node-children{
  display:none;
  flex-direction:column;
  gap:8px;
  padding:0 12px 12px 28px;
  border-top:1px solid var(--bd);
  background:var(--bg);
}
.exp-node.is-open > .exp-node-children{display:flex;padding-top:10px}
.exp-node-children .exp-node{background:var(--glass)}
.exp-node-empty{font-size:12px;color:var(--t3);padding:4px 0 2px}
.exp-node-loading{font-size:12px;color:var(--t3);padding:4px 0 2px}

.period-toggle{display:inline-flex;gap:2px;background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--glass-edge);border-radius:8px;padding:2px;margin-left:auto}
.period-toggle button{border:none;background:none;font-size:11px;padding:3px 9px;border-radius:6px;cursor:pointer;color:var(--t2);font-weight:700;font-family:var(--font-mono)}
.period-toggle button.active{background:var(--glass-strong);color:var(--acc);box-shadow:var(--shadow-sm)}
@media(max-width:720px){
  .exp-cols{grid-template-columns:1fr}
  .exp-node-children{padding-left:14px}
}
/* Demand insights */
.ins-h{font-family:var(--font-display);font-size:13px;font-weight:800;margin:0 0 8px}
.ins-row{display:flex;align-items:center;gap:10px;padding:4px 0}
.ins-label{width:38%;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ins-track{flex:1;height:8px;background:var(--bg3);border-radius:5px;overflow:hidden}
.ins-fill{height:100%;background:var(--acc);border-radius:5px}
.ins-val{font-family:var(--font-mono);font-size:11px;color:var(--t2);min-width:42px;text-align:right}
.hr-chart{display:flex;align-items:flex-end;gap:2px;height:90px;padding-top:6px}
.hr-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.hr-fill{width:100%;background:var(--acc);border-radius:2px 2px 0 0;min-height:1px}
.hr-lab{font-size:9px;color:var(--t3);margin-top:3px;height:10px}
.staff-item .si-info{flex:1;min-width:0}
.staff-item .si-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.staff-item .si-email{color:var(--t2);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{display:inline-flex;align-items:center;gap:5px;padding:5px 13px;border-radius:20px;border:1.5px solid var(--glass-edge);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;font-size:12px;font-weight:500;color:var(--t2);transition:background var(--dur-fast) var(--ease-soft),border-color var(--dur-fast) var(--ease-soft),color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) ease;user-select:none;font-family:var(--sans)}
.chip.active{background:var(--acc);color:#fff;border-color:var(--acc);font-weight:700;box-shadow:0 2px 6px rgba(43,127,163,.25)}
.chip:hover:not(.active){border-color:var(--bd2);background:var(--bg3);color:var(--t1)}
.chip:active{transform:scale(.95)}
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(12px) scale(.96);background:var(--toast-bg);color:var(--toast-fg);padding:10px 20px;border-radius:24px;font-size:13px;font-weight:600;z-index:999;opacity:0;transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out);pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-lg)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
.spin{display:inline-block;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.skeleton{background:linear-gradient(90deg,var(--bg3) 25%,var(--bg4) 50%,var(--bg3) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:2px}
/* ── Atmosphere (AI-DJ tier) — sage skin ─────────────────────────────────── */
.atmos-card{border:1px solid var(--sage-bd);background:linear-gradient(180deg,var(--sage2),transparent 60%)}
.atmos-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.atmos-mark{font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:-.02em;color:var(--t1)}
.atmos-mark .atmos-q{color:var(--sage);font-weight:800}
.atmos-tier{font-weight:700;color:var(--sage);font-size:13px;letter-spacing:.02em;padding:2px 9px;border:1px solid var(--sage-bd);border-radius:20px;margin-left:2px}
.atmos-status{margin-left:auto;font-size:12px;font-weight:700;padding:3px 11px;border-radius:20px;background:var(--bg3);color:var(--t2)}
.atmos-status.on{background:var(--sage2);color:var(--sage)}
.atmos-sub{font-size:13px;color:var(--t2);margin-bottom:14px;line-height:1.5}
.atmos-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.atmos-plan{border:1.5px solid var(--bd);border-radius:var(--radius-sm);padding:12px 10px;cursor:pointer;text-align:center;transition:border-color var(--dur-fast) var(--ease-soft),background var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) ease}
.atmos-plan:hover{border-color:var(--sage-bd);transform:translateY(-2px)}
.atmos-plan:active{transform:translateY(0) scale(.98)}
.atmos-plan.sel{border-color:var(--sage);background:var(--sage2)}
.atmos-plan .ap-term{font-size:12px;font-weight:700;color:var(--t2);text-transform:capitalize}
.atmos-plan .ap-price{font-family:var(--font-display);font-weight:800;font-size:19px;color:var(--t1);margin:4px 0 1px}
.atmos-plan .ap-permo{font-size:11px;color:var(--t3)}
.atmos-plan .ap-save{display:inline-block;margin-top:5px;font-size:10px;font-weight:700;color:var(--sage);background:var(--sage2);padding:1px 7px;border-radius:10px}
.atmos-btn{background:var(--sage);color:#fff;border:none}
.atmos-btn:hover{background:var(--sage-d)}
.atmos-foot{font-size:11px;color:var(--t3);margin-top:10px;text-align:center}
.atmos-active-row{display:flex;align-items:center;gap:8px;background:var(--sage2);border:1px solid var(--sage-bd);border-radius:var(--radius-sm);padding:11px 13px;font-size:13px;color:var(--t1);margin-bottom:12px}
.atmos-active-row b{color:var(--sage)}

/* ── Admin dashboard layout ─────────────────────────────────────────────── */
#view-admin.view{max-width:1280px}
.admin-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:18px;align-items:start}
.admin-sidebar{position:sticky;top:60px;display:flex;flex-direction:column;gap:4px;padding:12px;background:var(--glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge);border-radius:var(--radius);box-shadow:var(--glass-shadow)}
.admin-sidebar-title{font-family:var(--font-display);font-size:11px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--t3);padding:4px 10px 8px}
.admin-nav-item{display:flex;align-items:center;width:100%;padding:9px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--t2);font-size:13px;font-weight:600;font-family:var(--sans);text-align:left;cursor:pointer;transition:background var(--dur-fast) var(--ease-soft),color var(--dur-fast) var(--ease-soft),transform var(--dur-fast) var(--ease-out)}
.admin-nav-item:hover{background:var(--bg3);color:var(--t1)}
.admin-nav-item:active{transform:scale(.98)}
.admin-nav-item.active{background:var(--acc3);color:var(--acc);font-weight:700}
.admin-main{min-width:0}
.admin-panel{display:none}
.admin-panel.active{display:block;animation:panel-in var(--dur-med) var(--ease-out) both}
@media(max-width:900px){
  .admin-layout{grid-template-columns:1fr;gap:12px}
  .admin-sidebar{position:static;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:8px;gap:6px;-webkit-overflow-scrolling:touch}
  .admin-sidebar-title{display:none}
  .admin-nav-item{flex:0 0 auto;white-space:nowrap;padding:8px 14px}
}

.modal-lead{font-size:13px;color:var(--t2);margin-bottom:16px}
.modal-actions-row{display:flex;gap:8px;margin-bottom:16px}

#access-status {font-size:12px;color:var(--acc);font-weight:700;margin:8px 0}
#staff-list {margin-top:6px}
#assign-search {width:100%;padding:9px 12px;border:1.5px solid var(--glass-edge);border-radius:10px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);margin-bottom:6px}
#assign-summary {font-size:12px;color:var(--acc);font-weight:700;margin:4px 0}
#assign-list {max-height:46vh;overflow-y:auto;border:1px solid var(--bd);border-radius:10px}
#qr-modal-title {font-size:18px;font-weight:700;margin-bottom:4px}
#qr-table-count {width:120px}
#qr-preview {display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
#nb-jukebox {display:none}
#nav-user {display:none;align-items:center;gap:6px}
#nav-user-name {font-size:12px;color:var(--t2);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#nav-signin {display:none}
#player-nolic {display:none}
#player-main {display:none}
#pl-venue-name {font-size:24px;font-weight:700}
#pl-venue-addr {font-size:13px;color:var(--t2);margin-top:3px}

/* ── Sticky glassy now-playing dock ───────────────────────────────────────── */
.np-dock{
  position:fixed;left:12px;right:12px;bottom:12px;z-index:80;
  display:flex;flex-direction:column;gap:0;
  padding:0;
  border-radius:18px;
  border:1px solid var(--glass-edge);
  background:color-mix(in srgb, var(--bg) 55%, transparent);
  backdrop-filter:blur(22px) saturate(1.35);
  -webkit-backdrop-filter:blur(22px) saturate(1.35);
  box-shadow:
    0 12px 40px rgba(20,30,40,.16),
    0 1px 0 color-mix(in srgb, #fff 35%, transparent) inset;
  overflow:hidden;
  animation:np-dock-in var(--dur-slow) var(--ease-out) both;
}
.np-dock[hidden]{display:none!important;animation:none}
@keyframes np-dock-in{
  from{opacity:0}
  to{opacity:1}
}
:root{
  /* Fallback until JS measures the live dock into --np-dock-clear */
  --np-dock-clear:160px;
}
html[data-theme="dark"] .np-dock{
  background:color-mix(in srgb, var(--bg2) 62%, transparent);
  box-shadow:
    0 16px 48px rgba(0,0,0,.45),
    0 1px 0 color-mix(in srgb, #fff 8%, transparent) inset;
}
.np-dock.is-playing{
  border-color:color-mix(in srgb, var(--acc) 42%, var(--glass-edge));
  box-shadow:
    0 14px 44px color-mix(in srgb, var(--acc) 18%, transparent),
    0 12px 40px rgba(20,30,40,.14),
    0 1px 0 color-mix(in srgb, #fff 30%, transparent) inset;
}
.np-dock.is-live{
  background:
    linear-gradient(105deg, color-mix(in srgb, var(--acc) 16%, transparent), transparent 42%),
    color-mix(in srgb, var(--bg) 52%, transparent);
}
html[data-theme="dark"] .np-dock.is-live{
  background:
    linear-gradient(105deg, color-mix(in srgb, var(--acc) 20%, transparent), transparent 45%),
    color-mix(in srgb, var(--bg2) 58%, transparent);
}
.np-dock-scrub{
  height:14px;display:flex;align-items:center;padding:0 14px;margin-top:4px;
}
.np-dock-scrub #np-progress{width:100%;margin:0}
.np-dock-inner{
  display:grid;
  grid-template-columns:minmax(0,1.2fr) auto minmax(0,1fr);
  align-items:center;gap:12px;
  padding:4px 14px 12px;
}
.np-dock-meta{display:flex;align-items:center;gap:12px;min-width:0}
.np-dock-text{min-width:0;flex:1}
.np-dock-transport{display:flex;align-items:center;justify-content:center;gap:6px}
.np-dock-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
.np-dock-time{
  font-size:11px;color:var(--t3);font-variant-numeric:tabular-nums;
  white-space:nowrap;display:inline-flex;align-items:center;gap:4px;
}
.np-dock-time-sep{opacity:.5}
.np-dock-vol{display:flex;align-items:center;gap:6px;color:var(--t3)}
.np-dock-vol i{width:16px;height:16px;flex-shrink:0}
.np-dock-play{
  width:42px;height:42px;border-radius:50%;padding:0;justify-content:center;
  box-shadow:0 4px 14px color-mix(in srgb, var(--acc) 35%, transparent);
}
.np-dock-btn{border-radius:50%;width:34px;height:34px;padding:0;justify-content:center}
#np-art {
  width:48px;height:48px;border-radius:10px;background:var(--bg3);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  border:1px solid var(--bd);position:relative;overflow:hidden;
  transition:background var(--dur-med) var(--ease-soft),border-color var(--dur-med) var(--ease-soft),transform var(--dur-med) var(--ease-out);
}
#np-art .np-art-img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;
}
#np-art.has-cover .np-art-idle,#np-art.has-cover .np-art-eq{display:none!important}
.np-dock.is-live #np-art.has-cover{animation:none;background:transparent}
.np-dock.is-live #np-art{
  background:var(--acc);border-color:var(--acc);color:#fff;
  animation:np-art-pulse 2.4s ease-in-out infinite;
}
#np-art .np-art-eq{display:none;color:inherit;height:18px;width:20px}
#np-art .np-art-eq i{width:3.5px}
.np-dock.is-live #np-art .np-art-idle{display:none}
.np-dock.is-live #np-art .np-art-eq{display:inline-flex}
@keyframes np-art-pulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.04)}
}
#np-title {font-size:14px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#np-artist {font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#np-title.np-meta-in,#np-artist.np-meta-in{animation:np-meta-in var(--dur-med) var(--ease-out) both}
@keyframes np-meta-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
#np-playlist {font-size:11px;color:var(--t3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#np-dj-meter {display:none;align-items:center;gap:6px;margin-top:4px}
.np-dj-energy-lbl{font-size:9px;letter-spacing:.08em;color:var(--t3);font-weight:700}
.np-dj-energy-track{flex:1;height:4px;background:var(--bg3);border-radius:3px;overflow:hidden;min-width:48px;max-width:90px}
#np-dj-energy-fill {height:100%;width:0;background:linear-gradient(90deg,var(--acc),var(--red));border-radius:3px;transition:width .4s ease}
#np-time-cur,#np-time-dur {font-size:11px;color:var(--t3);min-width:0}
#np-progress {
  flex:1;height:4px;border-radius:999px;outline:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;
  background:color-mix(in srgb, var(--t1) 12%, transparent);
  background-image:linear-gradient(var(--acc),var(--acc));
  background-size:var(--fill,0%) 100%;
  background-repeat:no-repeat;
}
#np-progress::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:transparent}
#np-progress::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:12px;height:12px;border-radius:50%;
  background:var(--acc);border:2px solid var(--bg);
  box-shadow:0 1px 4px rgba(0,0,0,.2);
  margin-top:-4px;
  opacity:0;transition:opacity var(--dur-fast) ease;
}
.np-dock-scrub:hover #np-progress::-webkit-slider-thumb,
#np-progress:active::-webkit-slider-thumb{opacity:1}
#np-progress:active::-webkit-slider-thumb{transform:scale(1.12)}
#np-progress::-moz-range-track{height:4px;border-radius:999px;background:color-mix(in srgb, var(--t1) 12%, transparent)}
#np-progress::-moz-range-progress{height:4px;border-radius:999px;background:var(--acc)}
#np-progress::-moz-range-thumb{
  width:12px;height:12px;border-radius:50%;
  background:var(--acc);border:2px solid var(--bg);
  box-shadow:0 1px 4px rgba(0,0,0,.2);
}
#np-aidj {font-family:var(--font-mono);font-weight:700;font-size:11px;letter-spacing:.06em;flex-shrink:0}
#np-volume {width:84px;height:4px;-webkit-appearance:none;appearance:none;border-radius:999px;background:var(--bg3);outline:none;cursor:pointer}
#np-volume::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--t2);border:none}
#np-vibe-row {display:none;margin:0;padding:0 14px 12px;gap:8px;align-items:center}
#np-vibe {flex:1;padding:8px 12px;border:1.5px solid var(--glass-edge);border-radius:10px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:13px}
#np-vibe-clear {display:none}
#np-vibe-active {display:none;margin:0;padding:0 14px 10px;font-size:11px;color:var(--acc)}
#np-prev,#np-next,#np-playpause{transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) ease,background var(--dur-fast) var(--ease-soft)}
#np-playpause:not(:disabled):active{transform:scale(.92)}
@media(max-width:820px){
  .np-dock-inner{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:8px}
  .np-dock-meta{grid-column:1 / -1}
  .np-dock-transport{justify-content:flex-start}
  .np-dock-tools{justify-content:flex-end}
  .np-dock-vol{display:none}
}
@media(max-width:520px){
  .np-dock{left:8px;right:8px;bottom:8px;border-radius:14px}
  #np-aidj{display:none}
  .np-dock-time{display:none}
}
@media (prefers-reduced-motion: reduce){
  .np-dock{transition:none!important}
  .np-dock.is-live #np-art{animation:none!important}
}

#pl-browse-count {color:var(--t3);font-weight:400;text-transform:none;letter-spacing:0}
#pl-search-wrap {position:relative;margin-bottom:12px}
#pl-song-search {width:100%;padding:10px 14px 10px 38px;border:1px solid var(--glass-edge);border-radius:10px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--t1);font-size:14px;font-family:var(--sans)}
#pl-load-more-wrap {display:none;text-align:center;padding:10px 0 4px}
#pl-songs-count {font-size:12px;color:var(--t3);text-align:center;margin-top:6px}
#playlist-list {margin-bottom:10px}
#playlist-list .row-click,
#player-pl-rail .row-click{
  border-radius:10px;padding:8px 8px;
  transition:background var(--dur-med) var(--ease-soft),box-shadow var(--dur-med) var(--ease-soft),transform var(--dur-fast) var(--ease-out);
}
#playlist-list .row-click:hover,
#player-pl-rail .row-click:hover{background:color-mix(in srgb, var(--acc) 10%, transparent)}
#playlist-list .row-click.is-selected{
  background:color-mix(in srgb, var(--acc) 12%, transparent);
  box-shadow:inset 3px 0 0 var(--acc);
}
#playlist-list .row-click.is-selected .on{color:var(--acc)}
#playlist-form {display:none}
#view-playlists{max-width:1120px}
.pl-view-head{margin-bottom:16px}
.pl-view-title{font-size:22px;font-weight:800;letter-spacing:-.3px;margin:0 0 4px;font-family:var(--font-display)}
.pl-view-lead{margin:0;font-size:13px;color:var(--t2);line-height:1.5;max-width:52ch}
.pl-view-split{
  display:grid;
  grid-template-columns:minmax(220px,280px) minmax(0,1fr);
  gap:16px;
  align-items:start;
}
.pl-view-rail{min-width:0}
.pl-view-main{min-width:0}
.pl-view-empty{
  display:block;padding:28px 18px;border:1px dashed var(--glass-edge);border-radius:12px;
  background:var(--bg2);text-align:center;
}
#admin-pl-songs .pl-song{gap:6px;user-select:none}
#admin-pl-songs .pl-handle{color:var(--t3);font-size:11px;letter-spacing:-1px;cursor:grab;padding:0 2px;flex-shrink:0;line-height:1}
#admin-pl-songs .pl-song.pl-dragging{opacity:.45}
#admin-pl-songs .pl-song.pl-drop-target{background:var(--acc3);border-radius:8px}
#admin-pl-songs .pl-move{padding:4px 6px;min-width:28px;justify-content:center}
#admin-pl-songs .pl-move:disabled{opacity:.3;cursor:not-allowed}
@media(max-width:760px){
  .pl-view-split{grid-template-columns:1fr}
}
#active-playlist-card{
  display:none;
  opacity:0;
  transform:translateY(8px);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out),
    border-color var(--dur-med) var(--ease-soft),
    box-shadow var(--dur-med) var(--ease-soft);
}
#active-playlist-card.is-open{
  display:block;
  opacity:1;
  transform:none;
}
#active-playlist-card.is-switching{
  animation:pl-panel-swap var(--dur-slow) var(--ease-out) both;
}
@keyframes pl-panel-swap{
  0%{opacity:.35;transform:translateY(6px)}
  100%{opacity:1;transform:none}
}
#ap-songs .pl-song-enter,
#ap-songs .row.pl-song-enter{
  animation:pl-song-in var(--dur-med) var(--ease-out) both;
}
@keyframes pl-song-in{
  from{opacity:0;transform:translateX(6px)}
  to{opacity:1;transform:none}
}
@media (prefers-reduced-motion: reduce){
  #active-playlist-card,
  #active-playlist-card.is-switching,
  #ap-songs .pl-song-enter,
  #ap-songs .row.pl-song-enter{
    animation:none!important;
    transition:none!important;
    opacity:1!important;
    transform:none!important;
  }
}
#ap-name {margin:0}
#ap-meta {font-size:12px;color:var(--t3);margin-bottom:10px}
#ap-play-btn {margin-top:10px}

/* Announcements modal + rail */
.ann-rail-summary{margin-bottom:8px}
.ann-rail-summary .ann-rail-count{font-size:12px;color:var(--t2);margin:0 0 4px;line-height:1.4}
.ann-rail-summary .t-note{margin:0}

.ann-modal-panel{
  padding:0;width:100%;max-width:520px;max-height:88vh;overflow:hidden;
  display:flex;flex-direction:column;
}
.ann-modal-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:22px 22px 16px;
  border-bottom:1px solid var(--glass-edge);
}
.ann-modal-brand{display:flex;align-items:flex-start;gap:12px;min-width:0}
.ann-modal-icon{
  width:42px;height:42px;border-radius:12px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:color-mix(in srgb, var(--acc) 18%, transparent);
  color:var(--acc);border:1px solid color-mix(in srgb, var(--acc) 28%, transparent);
}
.ann-modal-icon i{width:20px;height:20px}
.ann-modal-head h3{
  margin:0;font-family:var(--font-display);font-size:20px;font-weight:800;
  letter-spacing:-.35px;line-height:1.15;color:var(--t1);
}
.ann-modal-sub{margin:4px 0 0;font-size:12px;color:var(--t3);line-height:1.4}
.ann-modal-close{flex-shrink:0;border-radius:50%;width:34px;height:34px;padding:0;justify-content:center}
.ann-modal-section{
  padding:16px 22px;
}
.ann-modal-past{
  flex:1;
  min-height:120px;
  overflow-y:auto;
}
.ann-modal-section.ann-modal-create{
  border-top:1px solid var(--glass-edge);
  background:color-mix(in srgb, var(--bg3) 45%, transparent);
  flex-shrink:0;
  max-height:46vh;
  overflow-y:auto;
}
.ann-modal-section-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-bottom:10px;
}
.ann-modal-section-head h4{
  margin:0;font-size:11px;font-weight:700;letter-spacing:.7px;
  text-transform:uppercase;color:var(--t3);
}
.ann-modal-count{
  font-size:11px;font-weight:600;color:var(--t3);
  font-variant-numeric:tabular-nums;
}
.ann-modal-list{display:flex;flex-direction:column;gap:8px;min-height:48px}
.ann-modal-empty{
  text-align:center;padding:22px 12px;border-radius:12px;
  border:1px dashed var(--glass-edge);color:var(--t3);font-size:13px;line-height:1.45;
}
.ann-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;border-radius:12px;
  background:var(--glass);border:1px solid var(--glass-edge);
}
.ann-item-icon{
  width:34px;height:34px;border-radius:10px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg3);color:var(--t2);
}
.ann-item-icon i{width:16px;height:16px}
.ann-item-body{flex:1;min-width:0}
.ann-item-title{
  font-size:13px;font-weight:700;color:var(--t1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ann-item-meta{font-size:11px;color:var(--t3);margin-top:2px}
.ann-item-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}
.ann-src-row{display:flex;flex-wrap:wrap;gap:6px}
.ann-modal-form textarea{
  width:100%;min-height:72px;resize:vertical;padding:10px 12px;
  border:1.5px solid var(--glass-edge);border-radius:10px;
  background:var(--glass);color:var(--t1);font-size:14px;font-family:var(--sans);
  line-height:1.4;
}
.ann-modal-form textarea:focus{
  outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc3);
}
.ann-modal-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.ann-progress{font-size:12px;color:var(--t2);margin:0 0 8px}
#ann-voice{width:100%;padding:8px 10px;border:1px solid var(--bd2);border-radius:8px;background:var(--bg3);color:var(--t1);font-size:14px;font-family:var(--sans)}
#ann-upload-fields{display:none}
#ann-file{width:100%;padding:7px 10px;border:1px solid var(--bd2);border-radius:8px;background:var(--bg3);color:var(--t1);font-size:13px;font-family:var(--sans)}
#jb-nolic {display:none}
#jb-receipt {display:none}
#receipt-songs {text-align:left;margin-top:10px}
#jb-main {display:none}
#jb-name {font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:-.4px;position:relative}
#jb-addr {font-size:13px;color:var(--t2);margin-top:3px;position:relative}
#browse-count {color:var(--t3);font-weight:400;text-transform:none;letter-spacing:0}
#skeletons {display:none}
#load-more-wrap {display:none}
#price-preview {display:none}
#pay-btn {margin-bottom:14px}
#pricing-card {padding:10px 12px}
#outlet-auth-wall {display:none}
#outlet-dash {display:none}
#outlet-banner-name {font-weight:700}
#atmos-active {display:none}
#atmos-buy {display:none}
#admin-auth-wall {display:none}
#admin-dash {display:none}
#explorer-card {margin-bottom:12px}
#insights-body {margin-top:12px}
#ops-live {margin-left:4px}
#ops-live-list {font-size:13px;color:var(--t3)}
#license-alerts-card {display:none}
#clients-count {font-size:12px;color:var(--t3);font-weight:400}
#company-form {display:none;margin-top:10px;border:1px solid var(--bd);border-radius:12px;padding:14px}
#company-list {margin-top:10px}
#launch-form {display:none;margin-top:10px}
#lf-target {width:100%;padding:8px 10px;border:1px solid var(--bd2);border-radius:8px;background:var(--bg3);color:var(--t1);font-size:14px;font-family:var(--sans)}
#ad-form {display:none;margin-top:10px}
#af-target {width:100%;padding:8px 10px;border:1px solid var(--bd2);border-radius:8px;background:var(--bg3);color:var(--t1);font-size:14px;font-family:var(--sans)}
#demo-section {display:none}
#demo-speaker-list {margin-bottom:12px}
#add-speaker-form {display:none;margin-top:10px}
#sp-cat {width:100%;padding:9px 12px;border:1.5px solid var(--bd2);border-radius:var(--radius-sm);background:var(--bg);color:var(--t1);font-size:14px;font-family:var(--sans)}
#bulk-import-form {display:none}
#bulk-csv {width:100%;padding:7px 10px;border:1px solid var(--bd2);border-radius:8px;background:var(--bg3);color:var(--t1);font-size:13px;font-family:var(--sans)}
#bulk-import-progress {font-size:13px;color:var(--t2);margin-top:10px;display:none}
#bulk-import-results {margin-top:10px}
#add-form {display:none}
#jukebox-toggle-row {margin-top:4px}
#fjukebox {width:auto}
#jukebox-ineligible-note {margin-top:4px;display:none}
#jukebox-fields {display:none}
#split-preview-label {color:var(--acc)}
#split-novex-bar {width:60%}
#split-outlet-bar {width:40%}
#gps-required-hint {color:var(--t3);font-weight:400}
#fg {flex:1}
#lib-total,#albums-total {font-size:12px;color:var(--t3);font-weight:400}
#ssearch,#album-search,.admin-filter-input {
  flex:1 1 auto;min-width:0;width:100%;box-sizing:border-box;
  padding:7px 10px;margin:0;
  border:1px solid var(--glass-edge);border-radius:8px;
  background:var(--glass-strong);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  color:var(--t1);font-size:13px;font-family:var(--sans);
  appearance:none;-webkit-appearance:none;
}
#ssearch::placeholder,#album-search::placeholder,.admin-filter-input::placeholder {color:var(--t3);opacity:1}
#admin-panel-albums .u-94733eb6 {width:100%;align-items:stretch}
#sgenre,.admin-filter-select {
  padding:7px 10px;border:1px solid var(--glass-edge);border-radius:8px;
  background:var(--glass-strong);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  color:var(--t1);font-size:13px;font-family:var(--sans);
}
#song-lib {max-height:240px;overflow-y:auto;border:1px solid var(--glass-edge);border-radius:10px;background:var(--bg2)}
#song-lib .row{
  cursor:pointer;margin:0;padding:8px 10px;
  border-bottom:1px solid color-mix(in srgb, var(--bd) 85%, transparent);
}
#song-lib .row:last-child{border-bottom:none}
#song-lib .row:nth-child(even){background:color-mix(in srgb, var(--t1) 3.5%, transparent)}
#song-lib .row:hover{background:color-mix(in srgb, var(--acc) 12%, transparent)}
.song-lib-thumb{width:36px;height:36px;border-radius:6px;object-fit:cover;flex-shrink:0;border:1px solid var(--glass-edge)}
#song-edit-box{
  width:min(560px,100%);max-height:min(90vh,720px);overflow-y:auto;padding:22px 22px 18px;
}
#album-edit-box{
  width:min(640px,100%);max-height:min(92vh,800px);overflow-y:auto;padding:22px 22px 18px;
}
#albums-lib{max-height:min(70vh,560px);overflow-y:auto;border:1px solid var(--glass-edge);border-radius:10px;background:var(--bg2)}
#albums-lib .row{
  cursor:pointer;margin:0;padding:8px 10px;
  border-bottom:1px solid color-mix(in srgb, var(--bd) 85%, transparent);
}
#albums-lib .row:last-child{border-bottom:none}
#albums-lib .row:nth-child(even){background:color-mix(in srgb, var(--t1) 3.5%, transparent)}
#albums-lib .row:hover{background:color-mix(in srgb, var(--acc) 12%, transparent)}
.album-edit-tracks{
  max-height:220px;overflow-y:auto;margin-top:6px;padding:0;
  border:1px solid var(--glass-edge);border-radius:10px;background:var(--bg2);
}
.album-edit-tracks .row{
  gap:8px;margin:0;padding:8px 10px;
  border-bottom:1px solid color-mix(in srgb, var(--bd) 85%, transparent);
  align-items:center;
}
.album-edit-tracks .row:last-child{border-bottom:none}
.album-edit-tracks .row:nth-child(even){background:color-mix(in srgb, var(--t1) 3.5%, transparent)}
.album-edit-tracks .row:hover{background:color-mix(in srgb, var(--acc) 12%, transparent)}
.album-edit-tracks .ae-track-check{flex-shrink:0;margin:0;cursor:pointer}
.album-edit-tracks .ae-track-open{
  display:flex;align-items:center;gap:8px;flex:1;min-width:0;
  margin:0;padding:0;border:0;background:transparent;color:inherit;
  font:inherit;text-align:left;cursor:pointer;
}
.album-edit-tracks .ae-track-open:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
.album-lib-thumb{width:36px;height:36px;border-radius:6px;object-fit:cover;flex-shrink:0;border:1px solid var(--glass-edge)}
.album-lib-thumb.fallback{display:flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--t3);font-size:11px}
.song-edit-preview,.cover-preview{margin:0 0 12px}
.song-edit-preview img,.cover-preview img{width:72px;height:72px;border-radius:10px;object-fit:cover;border:1px solid var(--glass-edge);display:block}
.song-edit-preview.is-error img,.cover-preview.is-error img{opacity:.45;border-color:var(--red)}
.song-edit-preview #song-edit-cover-hint,.cover-preview .sub-10{margin-top:6px;max-width:28rem;line-height:1.35}
.song-edit-preview.is-error #song-edit-cover-hint,.cover-preview.is-error .sub-10{color:var(--red)}
.cover-preview{margin-top:10px}
.song-edit-flags{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;font-size:13px;color:var(--t2)}
.song-edit-flags label{display:flex;align-items:center;gap:8px;cursor:pointer;margin:0}
#lib-load-more {text-align:center;padding:8px 0;display:none}
#ug {width:100%;padding:7px 10px;border:1px solid var(--glass-edge);border-radius:8px;background:var(--glass-strong);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--t1);font-size:13px;font-family:var(--sans)}
#uf {width:100%;padding:7px 10px;border:1px solid var(--glass-edge);border-radius:8px;background:var(--glass-strong);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--t1);font-size:13px;font-family:var(--sans)}
#upload-progress {font-size:12px;color:var(--t2);margin-top:8px;display:none}

/* ID3 prefill stage (single-track upload) */
.id3-stage{
  position:relative;overflow:hidden;
  margin:12px 0 14px;padding:14px 16px 12px;
  border-radius:var(--radius);
  border:1px solid color-mix(in srgb, var(--acc) 28%, var(--glass-edge));
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--acc) 10%, var(--bg)) 0%, color-mix(in srgb, var(--sage) 8%, var(--bg2)) 100%);
  box-shadow:var(--shadow-sm);
  opacity:0;transform:translateY(8px) scale(.985);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out),
    border-color var(--dur-med) var(--ease-soft),
    background var(--dur-med) var(--ease-soft);
}
.id3-stage.is-visible{
  opacity:1;transform:none;
}
.id3-stage-glow{
  pointer-events:none;position:absolute;inset:-40% -20% auto;
  height:120%;
  background:radial-gradient(ellipse at 30% 40%, color-mix(in srgb, var(--acc) 22%, transparent), transparent 60%);
  opacity:.55;animation:id3-glow-drift 3.2s ease-in-out infinite;
}
.id3-stage-row{position:relative;display:flex;align-items:center;gap:14px}
.id3-stage-visual{display:flex;align-items:center;gap:10px;flex-shrink:0}
.id3-disc{
  width:40px;height:40px;border-radius:50%;
  background:
    radial-gradient(circle at 50% 50%, var(--bg) 0 18%, transparent 19%),
    conic-gradient(from 210deg, var(--acc), var(--sage-l), var(--acc2), var(--acc));
  box-shadow:0 0 0 1px color-mix(in srgb, var(--acc) 35%, transparent), var(--shadow-sm);
  display:grid;place-items:center;
  animation:id3-disc-spin 1.15s linear infinite;
}
.id3-stage:not(.is-processing) .id3-disc{animation-play-state:paused}
.id3-disc i{
  width:10px;height:10px;border-radius:50%;
  background:var(--bg);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--t1) 18%, transparent);
}
.id3-wave{display:flex;align-items:flex-end;gap:3px;height:28px}
.id3-wave span{
  width:3px;border-radius:2px;background:var(--acc);
  opacity:.75;transform-origin:bottom center;
  animation:id3-wave-bar 1s ease-in-out infinite;
}
.id3-wave span:nth-child(1){height:8px;animation-delay:0s}
.id3-wave span:nth-child(2){height:16px;animation-delay:.08s}
.id3-wave span:nth-child(3){height:22px;animation-delay:.16s}
.id3-wave span:nth-child(4){height:12px;animation-delay:.24s}
.id3-wave span:nth-child(5){height:26px;animation-delay:.32s}
.id3-wave span:nth-child(6){height:14px;animation-delay:.4s}
.id3-wave span:nth-child(7){height:18px;animation-delay:.48s}
.id3-stage:not(.is-processing) .id3-wave span{animation:none;opacity:.35;height:10px}
.id3-stage-copy{min-width:0;flex:1}
.id3-stage-title{
  margin:0 0 3px;font-family:var(--font-display);font-weight:800;font-size:14px;
  letter-spacing:-.2px;color:var(--t1);
}
.id3-stage-sub{
  margin:0;font-size:12px;line-height:1.45;color:var(--t2);max-width:52ch;
}
.id3-stage-track{
  position:relative;margin-top:12px;height:3px;border-radius:99px;
  background:color-mix(in srgb, var(--t1) 8%, transparent);overflow:hidden;
}
.id3-stage-fill{
  height:100%;width:0;border-radius:inherit;
  background:linear-gradient(90deg, var(--acc), var(--sage-l));
  transition:width 3s var(--ease-out);
}
.id3-stage.is-processing .id3-stage-fill{
  width:100%;
  transition:width 3s var(--ease-out);
}
.id3-stage.is-done{
  border-color:color-mix(in srgb, var(--green) 35%, var(--glass-edge));
  background:linear-gradient(135deg, color-mix(in srgb, var(--green) 10%, var(--bg)) 0%, var(--bg2) 100%);
}
.id3-stage.is-done .id3-stage-fill{
  width:100%;background:var(--green);transition:none;
}
.id3-stage.is-empty,.id3-stage.is-error{
  border-color:var(--glass-edge);
  background:var(--bg2);
}
.id3-stage.is-empty .id3-stage-fill,
.id3-stage.is-error .id3-stage-fill{width:100%;background:var(--t3);opacity:.45;transition:none}
.id3-stage.is-error .id3-stage-title{color:var(--red)}
#upload-card-song .fr.is-id3-flash input,
#upload-card-song .fr.is-id3-flash select{
  animation:id3-field-flash .9s var(--ease-out) both;
  border-color:color-mix(in srgb, var(--acc) 55%, var(--glass-edge));
}
@keyframes id3-disc-spin{to{transform:rotate(360deg)}}
@keyframes id3-wave-bar{
  0%,100%{transform:scaleY(.45);opacity:.45}
  50%{transform:scaleY(1);opacity:1}
}
@keyframes id3-glow-drift{
  0%,100%{transform:translateX(0);opacity:.45}
  50%{transform:translateX(12%);opacity:.7}
}
@keyframes id3-field-flash{
  0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--acc) 0%, transparent)}
  35%{box-shadow:0 0 0 3px color-mix(in srgb, var(--acc) 22%, transparent)}
  100%{box-shadow:0 0 0 0 color-mix(in srgb, var(--acc) 0%, transparent)}
}
@media (prefers-reduced-motion: reduce){
  .id3-disc,.id3-wave span,.id3-stage-glow{animation:none!important}
  .id3-stage,.id3-stage-fill,#upload-card-song .fr.is-id3-flash input,
  #upload-card-song .fr.is-id3-flash select{transition:none!important;animation:none!important}
}

/* Glass on remaining admin/outlet form controls */
#ann-voice,#ann-file,#lf-target,#af-target,#bulk-csv,#sp-cat{
  background:var(--glass-strong);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border-color:var(--glass-edge);
}
#company-form{
  background:var(--glass);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-color:var(--glass-edge);
}
.theme-toggle{
  background:var(--glass);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-color:var(--glass-edge);
}
.nb.active{
  background:color-mix(in srgb, var(--acc) 18%, var(--glass));
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.atmos-plan{
  background:var(--glass);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-color:var(--glass-edge);
}
