/* Must Play — event planner for DJs and their clients.
   Design: flat tonal surfaces (no outlined boxes), squared-off controls, one loud accent,
   expanded display type. Theme tokens first; everything below reads only from tokens. */

/* ---------- theme: On Air (default) ---------- */
:root{
  color-scheme: dark;
  /* Music app edition: black frame, #121212 panels, one warm accent, pill controls */
  --bg:#000000; --surface:#121212; --surface-2:#1F1F1F; --surface-3:#2A2A2A; --line:#282828;
  --fg:#F2F2F2; --muted:#B3B3B3; --faint:#A0A0A0;
  --on-fg:#000; --frame:#000; --hero-base:#121212; --track:#4D4D4D;
  --pick-bg:#1F2E24; --pick-fg:#8EE0A8; --skip-fg:#D0D0D0;
  --accent-text:var(--accent);
  --field-line:#7A7A7A; /* input borders: 3:1+ against #000, #121212 and #1F1F1F (WCAG 1.4.11) */
  --accent:#FF6B4A; --accent-ink:#1A0B06;
  --rose:#FF7A85; --mint:#5FD49B; --sky:#7DB7FF;
  --shadow:0 18px 50px -18px rgba(0,0,0,.8); --scrim:rgba(0,0,0,.7);
  --f-display:"Figtree","Avenir Next",system-ui,sans-serif;
  --f-body:"Figtree","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --r-lg:10px; --r-md:8px; --r-sm:6px;
}

/* ---------- base ---------- */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{background:var(--bg);color:var(--fg)}
body{font-family:var(--f-body);font-size:15px;line-height:1.5;margin:0;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:var(--f-display);margin:0;line-height:1.05;text-wrap:balance;letter-spacing:-.01em}
h1,h2{font-stretch:112%;font-weight:800}
h3{font-weight:700}
p{margin:0} a{color:var(--accent-text)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
::selection{background:color-mix(in srgb,var(--accent) 45%,transparent)}
.wrap{max-width:1200px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
:root{padding-top:env(safe-area-inset-top,0px)}

/* ---------- accessibility helpers ---------- */
.skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--accent);color:var(--accent-ink);padding:10px 16px;border-radius:var(--r-sm);font-weight:700;text-decoration:none}
.skip:focus{top:calc(12px + env(safe-area-inset-top,0px))}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* fieldset questions: float the legend so it sits inside the box like a normal label, not on the divider line */
fieldset.q{display:block;border:0;border-radius:0;margin:0;min-width:0;padding-inline:0}
fieldset.q legend{float:left;width:100%;padding:0;margin:0 0 8px}
fieldset.q legend + *{clear:both}
fieldset.q > * + *:not(legend + *){margin-top:8px}
fieldset.q + .q, .q + fieldset.q{border-top:1px solid var(--line)}
main:focus{outline:none}

/* ---------- top bar ---------- */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:9;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:16px;padding-block:12px;flex-wrap:wrap}
.brand{font-family:var(--f-display);font-stretch:112%;font-weight:800;font-size:18px;display:flex;gap:10px;align-items:center;color:var(--fg);text-decoration:none;letter-spacing:-.01em}
.mark{width:26px;height:26px;border-radius:8px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;flex:none}
.mark svg{width:12px;height:12px;margin-left:2px}
.bars{display:flex;gap:2px;align-items:flex-end;height:16px}.bars i{width:4px;background:var(--accent);border-radius:1px}
#brand-logo{height:28px;width:auto;max-width:140px;object-fit:contain;border-radius:6px}
.nav{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap;align-items:center}
.nav a,.nav button{position:relative;border:0;background:none;padding:8px 12px;border-radius:var(--r-sm);color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-weight:500}
.nav a:hover,.nav button:hover{color:var(--fg);background:var(--surface)}
.nav a[aria-current="true"],.nav button[aria-current="true"]{color:var(--fg);font-weight:600}
.nav a[aria-current="true"]::after{content:"";position:absolute;left:12px;right:12px;bottom:2px;height:2px;border-radius:2px;background:var(--accent)}
.nav [data-act="logout"]{margin-left:8px}
@media (max-width:760px){
  .top .wrap{gap:4px;padding-block:10px 0}
  .nav{margin-left:-12px;margin-right:-16px;width:calc(100% + 28px);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:2px 16px 4px 0}
  .nav::-webkit-scrollbar{display:none}
  .nav a,.nav button{flex:none}
  .nav [data-act="logout"]{margin-left:auto}
}
main .wrap{padding-block:28px 72px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:var(--r-sm);min-height:40px;padding:0 16px;font-weight:600;font-size:14.5px;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background-color .15s,color .15s,transform .08s,filter .15s}
.btn:active:not([disabled]){transform:translateY(1px) scale(.985)}
.btn-p{background:var(--accent);color:var(--accent-ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 6px 18px -8px color-mix(in srgb,var(--accent) 70%,transparent)}
.btn-p:hover{filter:brightness(1.08)}
.btn-g{background:var(--surface-2);color:var(--fg)}
.btn-g:hover{background:var(--surface-3)}
.btn-s{min-height:32px;padding:0 12px;font-size:13px;border-radius:8px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn-danger{background:var(--rose);color:#1a0a0e}
.btn-danger-ghost{color:var(--rose)}
.link{border:0;background:none;color:var(--muted);cursor:pointer;padding:4px 7px;border-radius:7px;font-size:13px;text-decoration:none;font-weight:500}
.link:hover{color:var(--fg);background:var(--surface-3)}
.link[disabled]{opacity:.35;cursor:not-allowed}

/* ---------- form fields ---------- */
.in{width:100%;background:var(--surface-2);border:1px solid var(--field-line);border-radius:var(--r-sm);padding:9px 12px;min-height:40px;transition:border-color .15s,background-color .15s}
.in:hover{border-color:var(--muted)}
.in:focus{border-color:var(--accent);background:var(--surface-2);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.in::placeholder{color:var(--faint)}
.in[disabled]{opacity:.6}
textarea.in{resize:vertical;min-height:80px}
select.in{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}
input[type="checkbox"],input[type="radio"]{accent-color:var(--accent);width:16px;height:16px}
label.f{display:grid;gap:6px;font-size:13px;color:var(--muted);font-weight:500}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}

/* ---------- surfaces & text ---------- */
.panel{background:var(--surface);border-radius:var(--r-lg);padding:22px}
.muted{color:var(--muted)} .small{font-size:13px}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.eyebrow{font-family:var(--f-body);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.notice{background:var(--surface);border-radius:var(--r-md);padding:14px 16px;font-size:14px;color:var(--muted);border-left:3px solid var(--accent)}
.notice b{color:var(--fg)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(22px + env(safe-area-inset-bottom,0px));background:var(--fg);color:var(--bg);padding:11px 18px;border-radius:var(--r-md);font-weight:600;font-size:14px;z-index:40;box-shadow:var(--shadow);animation:toastin .18s ease-out}
@keyframes toastin{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

/* pills: tinted, no outlines */
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:7px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.pill.dj{color:var(--sky);background:color-mix(in srgb,var(--sky) 14%,transparent)}
.pill.guests{color:var(--mint);background:color-mix(in srgb,var(--mint) 14%,transparent)}
.pill.done{color:var(--mint)}
.pill.st-active{color:var(--mint);background:color-mix(in srgb,var(--mint) 14%,transparent)}
.pill.st-pending{color:var(--accent-text);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.pill.st-locked{color:var(--rose);background:color-mix(in srgb,var(--rose) 15%,transparent)}

/* progress */
.prog{display:grid;gap:6px}
.prog .lbl{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--muted)}
.prog .lbl .mono{color:var(--fg)}
.prog .track{height:5px;background:var(--surface-3);border-radius:99px;overflow:hidden}
.prog .fill{height:100%;background:var(--accent);border-radius:99px;transition:width .4s ease}
.prog.q .fill{background:var(--fg)}

/* ---------- dashboard ---------- */
.dash-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.dash-head h1{font-size:clamp(30px,4.2vw,46px);margin-top:6px}
.filters{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center}
/* the four filter buttons read as one segmented control */
.filters .btn{min-height:34px;border-radius:0;background:var(--surface);color:var(--muted);box-shadow:none;font-size:13.5px;padding:0 14px;filter:none}
.filters .btn:hover{color:var(--fg)}
.filters .btn:first-of-type{border-radius:var(--r-sm) 0 0 var(--r-sm)}
.filters .btn:nth-of-type(4){border-radius:0 var(--r-sm) var(--r-sm) 0}
.filters .btn + .btn{margin-left:-10px}
.filters .btn.btn-p{background:var(--surface-3);color:var(--fg)}
.dash-search{max-width:320px;margin-left:auto;min-height:34px;padding:6px 12px 6px 34px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23887d72' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='m11 11 3.5 3.5'/%3E%3C/svg%3E") no-repeat 12px 50%}
.ev-table{display:grid;gap:6px}
.ev-row{display:grid;grid-template-columns:64px 1.7fr .9fr 1.1fr;gap:18px;align-items:center;background:var(--surface);border-radius:var(--r-md);padding:12px 18px 12px 12px;cursor:pointer;text-align:left;border:0;width:100%;color:var(--fg);text-decoration:none;transition:background-color .15s,transform .15s}
.ev-row:hover{background:var(--surface-2)}
.ev-row:hover .ev-go{color:var(--accent-text);transform:translateX(2px)}
.ev-row b{display:block;font-size:16.5px;font-weight:650;letter-spacing:-.005em}
.ev-row > div,.ev-row > span{min-width:0}
.ev-row .sub{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-thumb{width:64px;height:64px;border-radius:var(--r-sm);overflow:hidden;background:var(--surface-3);display:grid;place-items:center;position:relative}
.ev-thumb img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.ev-thumb.has-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.6))}
.date-tile{position:relative;z-index:1;display:grid;justify-items:center;line-height:1;gap:3px;color:var(--fg)}
.date-tile .mo{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text)}
.has-cover .date-tile .mo{color:#fff}
.date-tile .dy{font-family:var(--f-display);font-stretch:112%;font-size:26px;font-weight:800}
.has-cover .date-tile{color:#fff}
.ev-when{font-size:14px}
.soon{color:var(--accent-text);font-weight:600}
.ev-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.c-prog{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}
.c-prog .prog .lbl{font-size:12px}
.ev-go{font-size:18px;color:var(--faint);transition:color .15s,transform .15s}
.ev-empty{padding:36px 28px;display:grid;gap:10px;justify-items:start}
@media (max-width:760px){
  .ev-row{grid-template-columns:56px 1fr;gap:4px 14px;padding:12px}
  .ev-thumb{width:56px;height:56px;grid-row:span 2}
  .ev-row > div:nth-child(3){grid-column:2}
  .ev-row .c-prog{grid-column:1/-1;margin-top:8px}
  .grid2,.grid3{grid-template-columns:1fr}
  .dash-search{max-width:none;margin-left:0;flex:1 1 100%}
}

/* ---------- event header ---------- */
.crumbs{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:-8px 0 10px}
.ev-card{display:grid;grid-template-columns:200px 1fr 300px;gap:28px;align-items:start}
.ev-card h1{font-size:clamp(30px,4vw,48px);margin-top:8px}
.ev-main{min-width:0;padding-top:4px}
.facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;font-size:14px;color:var(--muted)}
.facts > span{background:var(--surface);padding:6px 11px;border-radius:8px}
.facts b{color:var(--fg);font-weight:600}
.cover{position:relative;aspect-ratio:1;border-radius:var(--r-lg);overflow:hidden;background:var(--surface);display:grid;place-items:center;max-width:100%}
.cover:not(.has){background:repeating-linear-gradient(135deg,var(--surface) 0 10px,var(--surface-2) 10px 20px)}
.cover img{width:100%;height:100%;object-fit:cover}
.cover-empty{color:var(--muted);font-size:13px;text-align:center;padding:16px}
.cover-btn{position:absolute;left:10px;bottom:10px;border:0;border-radius:8px;padding:7px 12px;background:rgba(12,10,8,.78);color:#fff;font-size:12.5px;font-weight:600;cursor:pointer;backdrop-filter:blur(6px)}
.cover-btn:hover{background:rgba(12,10,8,.92)}
.ev-prog{display:grid;gap:14px;align-content:start}
.save-state{margin-left:auto;align-self:center;color:var(--muted);padding:0 6px;white-space:nowrap;font-family:var(--f-body);font-size:12.5px}
.save-state.saved{color:var(--faint)}
.save-state:not(.saved)::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:7px;vertical-align:1px;animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.3}}
@media (max-width:1000px){.ev-card{grid-template-columns:140px 1fr}.ev-prog{grid-column:1/-1}}
@media (max-width:560px){.ev-card{grid-template-columns:1fr;gap:18px}.cover{max-width:none;aspect-ratio:16/9}.save-state.saved{display:none}}

/* tabs: one rounded track, active tab lifts */
.tabs{display:flex;gap:2px;margin-block:26px 20px;overflow-x:auto;background:var(--surface);border-radius:var(--r-md);padding:4px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{border:0;background:none;padding:9px 14px;color:var(--muted);border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;font-weight:500;transition:background-color .15s,color .15s}
.tabs button:hover{color:var(--fg)}
.tabs button[aria-selected="true"]{color:var(--fg);background:var(--surface-3);font-weight:600}
.p-tabs{margin:10px 0 0;padding:4px;margin-inline:20px}

/* ---------- planner: rail + detail ---------- */
.planner{display:grid;grid-template-columns:320px 1fr;gap:28px;align-items:start}
.rail{display:grid;gap:2px;position:sticky;top:calc(76px + env(safe-area-inset-top,0px));max-height:calc(100vh - 96px);overflow:auto;padding-right:6px;scrollbar-width:thin}
.rail .hl,.hl{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);padding:18px 12px 6px}
#rail-list > .hl:first-child{padding-top:6px}
.rail-search{margin-bottom:8px}
.sec-btn{position:relative;display:grid;gap:5px;text-align:left;border:0;background:none;border-radius:var(--r-sm);padding:10px 12px 10px 14px;cursor:pointer;width:100%;transition:background-color .12s}
.sec-btn:hover{background:var(--surface)}
.sec-btn[aria-current="true"]{background:var(--surface-2)}
.sec-btn[aria-current="true"]::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--accent)}
.sec-btn .t{display:flex;justify-content:space-between;gap:8px;font-weight:600}
.sec-btn .t time{font-family:var(--f-mono);font-size:12px;color:var(--accent-text);font-weight:500}
.sec-btn .m{display:flex;gap:5px;flex-wrap:wrap}
.sec-btn .m .pill{font-size:12px;padding:2px 7px}
.sec-btn .m:empty{display:none}
.rail-tools{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;padding-left:4px}
.fav-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.done{color:var(--mint)}
.detail{min-width:0;display:grid;gap:16px}
.detail h2{font-size:clamp(26px,3vw,34px)}
.box{background:var(--surface);border-radius:var(--r-lg);padding:18px;display:grid;gap:12px}
.box-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.box-h h3{font-family:var(--f-body);font-size:15px;font-weight:700;font-stretch:100%}
.box-h h3 .mono{font-weight:500;margin-left:4px}
.grip{color:var(--faint);cursor:grab}
[draggable="true"]{cursor:grab}
.dragging{opacity:.4}
.drop-before{box-shadow:0 -3px 0 0 var(--accent) !important}
.drop-after{box-shadow:0 3px 0 0 var(--accent) !important}
.sec-cover{width:100%;max-height:260px;object-fit:cover;border-radius:var(--r-lg)}
.time-inline{display:inline-flex;gap:8px;align-items:center;margin-top:10px;color:var(--accent-text)}
.time-inline .in{width:auto;padding:4px 8px;min-height:32px}
.next-sec{justify-self:start;margin-top:4px;font-size:14px;color:var(--fg);background:var(--surface);padding:10px 14px;border-radius:var(--r-sm)}
.next-sec:hover{background:var(--surface-2)}
@media (max-width:900px){
  .planner{grid-template-columns:1fr;gap:18px}
  .rail{position:static;max-height:none;padding-right:0;min-width:0}
  /* sections become a swipeable row so the content sits right under them */
  #rail-list{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;margin-inline:-16px;padding:2px 16px 6px;scroll-padding-inline:16px}
  #rail-list::-webkit-scrollbar{display:none}
  #rail-list .hl{display:none}
  #rail-list > p{padding:8px 0!important}
  .sec-btn{flex:none;width:auto;max-width:72vw;scroll-snap-align:start;background:var(--surface);padding:9px 14px;border-radius:99px;gap:0}
  .sec-btn[aria-current="true"]{background:var(--fg);color:var(--bg)}
  .sec-btn[aria-current="true"]::before{display:none}
  .sec-btn[aria-current="true"] .t time{color:var(--bg);opacity:.7}
  .sec-btn .t{white-space:nowrap;gap:8px;align-items:center}
  .sec-btn .t > span:first-child{overflow:hidden;text-overflow:ellipsis}
  .sec-btn .m{display:none}
  .sec-btn:has(.pill.done) .t::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--mint);flex:none;order:-1}
  .rail-tools{padding-left:0}
  .add-row{grid-template-columns:1fr 1fr}
  .bq{grid-template-columns:1fr}
  .person{grid-template-columns:1fr 1fr}
}

/* ---------- songs ---------- */
.song-list{display:grid;gap:4px}
.song{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:8px 10px 8px 8px;border-radius:var(--r-sm);background:var(--surface-2);transition:background-color .12s}
.song:hover{background:var(--surface-3)}
.song > div{min-width:0}
.song b{font-weight:600;overflow-wrap:anywhere}
.song .small a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--faint);text-underline-offset:2px}
.song .acts{display:flex;gap:0;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.song.has-art,.song:has(> .art-ph){grid-template-columns:40px 1fr auto}
.song.played b{text-decoration:line-through;text-decoration-color:var(--muted)}
.art,.sugg-item img{width:40px;height:40px;border-radius:7px;object-fit:cover;background:var(--surface-3)}
.art-ph{width:40px;height:40px;border-radius:7px;background:var(--surface-3);color:var(--faint);display:grid;place-items:center;font-size:16px}
.star{color:var(--accent-text)}
.song [data-act="must"][aria-pressed="true"]{color:var(--accent-text)}
@media (hover:hover){
}
@media (max-width:600px){
  .song .acts a.link{display:none}
  .song{grid-template-columns:1fr auto}
  .song.has-art,.song:has(> .art-ph){grid-template-columns:36px 1fr auto;gap:10px}
  .art,.art-ph{width:36px;height:36px}
}
.e-tag{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:3px;background:var(--muted);color:var(--bg);font:700 9.5px/1 var(--f-body);margin-right:6px;vertical-align:1.5px}
.add-row{display:grid;grid-template-columns:1.2fr 1fr 1.2fr auto;gap:8px}
.ideas{display:flex;flex-wrap:wrap;gap:6px}
.idea{border:0;background:var(--surface-2);border-radius:8px;padding:6px 11px;font-size:13px;cursor:pointer;text-align:left;transition:background-color .12s}
.idea:hover{background:var(--surface-3)}
.empty-add{display:flex;gap:14px;align-items:center;width:100%;text-align:left;border:1.5px dashed var(--surface-3);background:transparent;border-radius:var(--r-md);padding:16px;cursor:pointer;transition:border-color .15s,background-color .15s}
.empty-add:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.note-ico{width:42px;height:42px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-size:20px;flex:none}

/* ---------- questions ---------- */
.q{display:grid;gap:8px;padding-block:6px}
.q + .q{border-top:1px solid var(--line);padding-top:16px}
.q .lbl{font-weight:600}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opts label{display:flex;gap:8px;align-items:center;cursor:pointer;background:var(--surface-2);padding:8px 12px;border-radius:var(--r-sm);transition:background-color .12s}
.opts label:hover{background:var(--surface-3)}
.opts label:has(input:checked){background:color-mix(in srgb,var(--accent) 16%,var(--surface-2));color:var(--fg)}
.other-in{margin-top:4px}
.builder{background:color-mix(in srgb,var(--sky) 7%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sky) 30%,transparent)}
.bq{display:grid;grid-template-columns:130px 1fr auto;gap:8px;align-items:start}
.toggles{display:flex;flex-wrap:wrap;gap:8px 18px}
.toggles label{display:flex;gap:7px;align-items:center}
.links{display:grid;gap:6px}
.link-row{display:flex;justify-content:space-between;gap:8px;align-items:center;background:var(--surface-2);border-radius:var(--r-sm);padding:8px 10px;min-width:0}
.link-row a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.link-add{display:grid;grid-template-columns:1fr auto;gap:8px}

/* ---------- files ---------- */
.file-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;background:var(--surface-2);border-radius:var(--r-sm);padding:9px 10px}
.file-row a{color:var(--fg);text-decoration:none;overflow-wrap:anywhere}
.file-row audio{width:100%;margin-top:6px;height:34px}
.file-ico{font-size:18px;text-align:center}
.thumb{width:44px;height:44px;object-fit:cover;border-radius:8px}

/* ---------- people, links, QR ---------- */
.people{display:grid;gap:8px}
.person{display:grid;grid-template-columns:1fr 1fr 110px auto;gap:8px;align-items:center}
.linkbox{display:grid;grid-template-columns:1fr auto;gap:8px}
.link-card{display:grid;grid-template-columns:1fr 104px;gap:14px;align-items:start;padding:14px;border-radius:var(--r-md);background:var(--surface-2)}
.link-card > div{min-width:0}
.qr{width:104px;height:104px;background:#fff;border-radius:10px;padding:5px}
.qr-big{width:220px;height:220px;justify-self:center;max-width:100%}
.email-log{display:grid;gap:4px;margin-top:8px}
.toggle-row{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.toggle-row input{margin-top:3px}
@media (max-width:560px){.link-card{grid-template-columns:1fr}.qr{justify-self:start}}

/* ---------- templates, library, settings ---------- */
.tpl-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;background:var(--surface-2);border-radius:var(--r-md);padding:14px 16px}
.dash-head + div > div:not(.panel) > .tpl-row{background:var(--surface)}
.dash-head + div > div:not(.panel) > h3{margin:6px 0 4px}
.title-in{font-family:var(--f-display);font-stretch:112%;font-size:30px;font-weight:800;background:transparent;border-color:transparent;padding:4px 6px;margin-top:4px}
.title-in:hover{background:var(--surface)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.swatches button{width:32px;height:32px;border-radius:9px;border:0;cursor:pointer;transition:transform .12s}
.swatches button:hover{transform:scale(1.08)}
.swatches button[aria-pressed="true"]{outline:2px solid var(--fg);outline-offset:3px}
.settings-grid{display:grid;gap:16px;max-width:900px}
.status-row{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--line)}
.st-badge{font-size:12px;font-weight:600;padding:3px 10px;border-radius:7px;white-space:nowrap;background:var(--surface-3)}
.st-badge.ok{color:var(--mint);background:color-mix(in srgb,var(--mint) 14%,transparent)}
.st-badge.warn{color:var(--accent-text);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.st-badge.fail{color:var(--rose);background:color-mix(in srgb,var(--rose) 15%,transparent)}
.ok{color:var(--mint)} .warn{color:var(--accent-text)}
.fix{margin-top:4px;color:var(--fg);opacity:.85}
.dot-warn{width:8px;height:8px;border-radius:50%;background:var(--rose);display:inline-block}
.warn-box{border-left-color:var(--rose);margin-bottom:16px}
.warn-box a{color:var(--accent-text)}
code.k{font-family:var(--f-mono);font-size:12.5px;background:var(--surface-3);padding:2px 6px;border-radius:5px}
pre.sheet{white-space:pre-wrap;background:var(--surface-2);border-radius:var(--r-md);padding:16px;font-family:var(--f-mono);font-size:12.5px;max-height:440px;overflow:auto;margin:0}

/* ---------- prep & live ---------- */
.prep-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--r-sm);background:var(--surface-2)}
.seg-sm button{padding:5px 10px;font-size:13px}
@media (max-width:640px){.prep-row{grid-template-columns:1fr auto}.prep-row .acts{grid-column:1/-1;justify-content:flex-start}}
.live-grid{display:grid;grid-template-columns:320px 1fr;gap:16px;align-items:start}
@media (max-width:860px){.live-grid{grid-template-columns:1fr}}

/* ---------- sign in ---------- */
.login{max-width:420px;margin:64px auto;display:grid;gap:16px;padding:30px}
.login .mp-logo{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-stretch:118%;font-weight:800;font-size:15px;letter-spacing:.02em;text-transform:uppercase;margin-bottom:6px}
.login .mp-logo .mark{width:30px;height:30px}
.login .btn{min-height:46px;font-size:15px}

/* ---------- song suggestions dropdown ---------- */
.sugg{position:relative}
.sugg-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:5;background:var(--surface-2);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden;max-height:340px;overflow-y:auto}
.sugg-item{display:grid;grid-template-columns:40px 1fr;gap:10px;align-items:center;width:100%;border:0;background:none;text-align:left;padding:8px 10px;cursor:pointer}
.sugg-item:hover,.sugg-item:focus{background:var(--surface-3)}
.sugg-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- add songs drawer ---------- */
body.panel-open{overflow:hidden}
.scrim{position:fixed;inset:0;background:var(--scrim);z-index:30;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fadein .18s ease-out}
@keyframes fadein{from{opacity:0}}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);z-index:31;background:var(--surface);box-shadow:-30px 0 80px -30px rgba(0,0,0,.8);display:flex;flex-direction:column;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-right:env(safe-area-inset-right,0px);animation:slidein .22s cubic-bezier(.2,.8,.2,1)}
@keyframes slidein{from{transform:translateX(40px);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.drawer,.scrim,.toast{animation:none}.btn,.ev-row,.prog .fill{transition:none}}
.drawer-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 20px 6px}
.drawer-h h2{font-size:26px;margin-top:4px}
.drawer-b{flex:1;overflow-y:auto;padding:16px 20px 24px;display:grid;gap:14px;align-content:start}
.drawer .tabs{background:var(--surface-2)}
.drawer .tabs button[aria-selected="true"]{background:var(--surface)}
.p-search{display:grid;gap:10px}
.seg{display:inline-flex;background:var(--surface-2);border-radius:var(--r-sm);padding:3px;justify-self:start}
.seg button{border:0;background:none;border-radius:7px;padding:7px 14px;cursor:pointer;color:var(--muted);display:flex;gap:7px;align-items:center;font-weight:500}
.seg button[aria-pressed="true"]{background:var(--surface-3);color:var(--fg);font-weight:600}
.seg button[disabled]{opacity:.4;cursor:not-allowed}
.dot{width:9px;height:9px;border-radius:50%}.dot.am{background:#FA2D48}
.p-qrow{display:grid;grid-template-columns:1fr auto;gap:8px}
.p-results{display:grid;gap:4px}
.p-row{display:grid;grid-template-columns:44px 22px 1fr auto auto;gap:10px;align-items:center;padding:8px;border-radius:var(--r-sm);background:var(--surface-2)}
.p-row img,.p-row .art{width:44px;height:44px;border-radius:7px;object-fit:cover;background:var(--surface-3)}
.p-meta{min-width:0;display:grid}
.p-meta b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p-msg{padding:18px 4px}
.p-manual summary{cursor:pointer}
.p-pl{width:100%;border:0;text-align:left;cursor:pointer;color:var(--fg)}
@media (max-width:480px){.p-row{grid-template-columns:40px 1fr auto auto}.p-row > .mono{display:none}.drawer-h,.drawer-b{padding-left:16px;padding-right:16px}.p-tabs{margin-inline:16px}}

/* ---------- print ---------- */
@media print{
  .top,.tabs,.no-print,.toast,#nav{display:none!important}
  html,body{background:#fff!important;color:#000!important}
  .print-only{display:block!important}
  pre.sheet{background:#fff!important;color:#000!important;max-height:none!important;overflow:visible!important;font-size:11pt}
  .panel{box-shadow:none!important;background:#fff!important;padding:0!important}
}
.print-only{display:none}

/* ---------- accounts ---------- */
.top .wrap{flex-wrap:wrap}
#acct-banner:empty{display:none}
#acct-banner{flex-basis:100%;order:3}
.acct-banner{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--surface-2);border-radius:10px;padding:8px 12px;margin:8px 0 2px;font-size:14px;box-shadow:inset 3px 0 0 var(--accent)}
.admin-row{cursor:default;grid-template-columns:1.4fr .9fr .8fr 1.6fr}
.admin-row b{display:inline}
.admin-row .small.muted{display:block}
.admin-acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.in-s{padding:6px 10px;font-size:13px;width:auto}
.bad{color:var(--rose)}
@media (max-width:760px){.admin-row{grid-template-columns:1fr}.admin-acts{justify-content:flex-start}}

/* ---------- invite codes ---------- */
.seg{display:flex;gap:4px;flex-wrap:wrap}
.invite-new{display:grid;grid-template-columns:1.3fr 1fr .7fr auto;gap:10px;align-items:end}
.invite-list{display:grid;gap:6px}
.invite-row{display:grid;grid-template-columns:1.4fr .6fr auto;gap:12px;align-items:center;background:var(--surface-2);border-radius:var(--r-md);padding:10px 12px}
.invite-row .code{font-weight:600;letter-spacing:.04em}
.invite-row .small.muted{display:block}
.invite-row.off .code{text-decoration:line-through}
@media (max-width:760px){.invite-new{grid-template-columns:1fr 1fr}.invite-new button{grid-column:1/-1}.invite-row{grid-template-columns:1fr}}

/* ---------- Serato crate export ---------- */
.sr-steps{margin:0;padding-left:18px;display:grid;gap:4px}
.sr-list{display:grid;gap:4px;max-height:420px;overflow:auto;padding-right:4px}
.sr-row{display:grid;grid-template-columns:auto minmax(0,1.2fr) minmax(0,1.3fr) auto;gap:10px;align-items:center;background:var(--surface-2);border-radius:var(--r-sm);padding:8px 10px}
.sr-row .sr-song b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-row .sr-song span{display:block}
.sr-row .sr-file{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-row .sr-file select{width:100%}
.sr-row.missing{background:transparent;box-shadow:inset 0 0 0 1px var(--line)}
@media (max-width:760px){.sr-row{grid-template-columns:auto 1fr auto}.sr-row .sr-file{grid-column:2/-1}}

.pill.todo{color:var(--muted)}

/* ---------- accessibility ---------- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--accent);color:var(--accent-ink);padding:10px 16px;border-radius:var(--r-sm);font-weight:700;text-decoration:none}
.skip-link:focus{top:12px}
.song .acts .link{color:var(--muted)}
.song .acts .link:hover{color:var(--fg)}
#sheet:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media (forced-colors:active){.pill,.btn,.st-badge{border:1px solid CanvasText}.prog .fill,.mc-bar i{background:Highlight}}

/* ---------- cleanup ---------- */
.link-card{grid-template-columns:1fr}
@media (max-width:640px){
  .nav .nav-out{display:none}
  .cover{aspect-ratio:auto;height:150px;width:100%}
}
.tabs .tablist{display:flex;gap:2px;flex:1;min-width:0}

/* ---------- floating save bar (Settings) ---------- */
.savebar{position:fixed;z-index:40;right:max(20px,env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:12px;
  background:var(--surface-3);color:var(--fg);border-radius:var(--r-md);padding:10px 12px 10px 16px;box-shadow:var(--shadow);font-size:14px;font-weight:600;min-height:48px}
.savebar[data-state="saved"]{color:var(--mint);background:var(--surface-2);font-weight:500}
.savebar[data-state="error"]{box-shadow:inset 0 0 0 1px var(--rose),var(--shadow)}
.savebar[data-state="error"] > span{color:var(--rose)}
.savebar:empty{display:none}
main .wrap{padding-bottom:96px}
@media (max-width:640px){.savebar{left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));justify-content:space-between}}
@media print{.savebar{display:none}}

/* Spotify attribution */
.sp-ico{width:1.05em;height:1.05em;fill:currentColor;vertical-align:-.17em;margin-right:.3em;flex:none}
.sp-link{white-space:nowrap}
.p-attrib{display:flex;align-items:center;gap:2px;margin:2px 0 6px}
.p-attrib .sp-ico{margin:0 .25em 0 .35em}
.seg .sp-ico{margin-right:.4em}

/* Back office (/admin) */
.bo-h{font-size:22px;margin:0}
.bo-sub{font-size:16px;margin:8px 0 0}
.bo-sec{display:grid;gap:14px;margin-bottom:18px;align-content:start}
.bo-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.bo-top{margin-bottom:18px}
.bo-tile{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;display:grid;gap:4px;align-content:start}
.bo-label{font-size:13px;color:var(--muted)}
.bo-value{font-family:var(--f-display);font-size:30px;font-weight:800;line-height:1.05;letter-spacing:-.01em}
.bo-price{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.bo-price .f{flex:0 1 280px}
.bo-money{display:flex;align-items:center;gap:8px;margin-top:6px}.bo-money>span{font-size:20px;color:var(--muted)}
.bo-list{display:grid;border-top:1px solid var(--line)}
.bo-li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;padding:10px 0;border-bottom:1px solid var(--line)}
.bo-li>span:first-child{flex:1 1 220px;min-width:0}
.bo-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px}
.bo-bars{display:flex;align-items:flex-end;gap:6px;height:140px;padding-top:18px}
.bo-bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}
.bo-bar span{display:block;width:100%;max-height:calc(100% - 16px);min-height:3px;background:var(--accent);border-radius:6px 6px 2px 2px}
.bo-bar em{font-style:normal;font-size:12px;color:var(--muted);line-height:1;margin-bottom:4px;min-height:12px}
.bo-axis{display:flex;justify-content:space-between}
#bo-djs{margin:26px 0 12px}

/* =====================================================================
   Music app edition: library on the left, playlist-style event pages,
   a now-planning bar along the bottom, and a docked tab bar for clients on phones.
   ===================================================================== */
h1,h2{font-weight:800;letter-spacing:-.02em;font-stretch:normal}
.date-tile .dy{font-stretch:normal}
.btn,.btn-s{border-radius:999px;font-weight:700}
.btn-p{box-shadow:none}
.btn-p:hover:not([disabled]){filter:none;transform:scale(1.03)}
.btn-g{background:transparent;box-shadow:inset 0 0 0 1px #727272}
.btn-g:hover{background:transparent;box-shadow:inset 0 0 0 1px var(--fg)}
.pill{border-radius:999px}
.dash-search{border-radius:999px}
.notice{border-left:0;background:var(--surface-2)}
.panel .notice,.panel .panel{background:var(--surface-2)}
.cap,.sec-btn .t{text-transform:capitalize}

/* top bar */
.top{background:var(--frame);border-bottom:0;backdrop-filter:none;-webkit-backdrop-filter:none}
.top .wrap{max-width:none;padding-inline:max(16px,env(safe-area-inset-left,0px))}
.nav a,.nav button{border-radius:999px;padding:8px 14px;font-weight:600}
.nav a[aria-current="true"]{background:var(--surface-2);color:var(--fg)}
.nav a[aria-current="true"]::after{display:none}
.mark{border-radius:999px}

/* shell: library + main panel */
@media (min-width:1000px){
  body.has-lib .shell{display:grid;grid-template-columns:300px minmax(0,1fr);gap:8px;padding:0 8px 8px;align-items:start}
  body.has-lib .library{position:sticky;top:calc(68px + env(safe-area-inset-top,0px));height:calc(100vh - 76px);overflow:auto;background:var(--surface);border-radius:var(--r-lg);padding:14px 8px;scrollbar-width:thin}
  body.has-lib main .wrap#app{max-width:none;margin:0;background:var(--surface);border-radius:var(--r-lg);padding:24px 28px 48px;min-height:calc(100vh - 76px)}
  body.has-lib .rail{top:calc(80px + env(safe-area-inset-top,0px))}
}
@media (max-width:999.98px){.library{display:none!important}}
.lib-h{display:flex;justify-content:space-between;align-items:center;padding:0 4px 0 12px}
.lib-h h2{font-size:16px;font-weight:700;letter-spacing:0}
.lib-add{width:40px;height:40px;border-radius:999px;border:0;background:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer}
.lib-add:hover{background:var(--surface-2);color:var(--fg)}
.lib-f{display:flex;gap:8px;padding:12px 8px 10px;flex-wrap:wrap}
.lib-f button{border:0;border-radius:999px;background:var(--surface-3);color:var(--fg);padding:0 14px;min-height:32px;font-size:13px;font-weight:600;cursor:pointer}
.lib-f button:hover{filter:brightness(1.15)}
.lib-f button[aria-pressed="true"]{background:var(--fg);color:var(--on-fg)}
.lib-list{display:grid;gap:2px}
.lib-item{display:flex;gap:12px;align-items:center;padding:8px;border-radius:var(--r-sm);text-decoration:none;color:var(--fg)}
.lib-item:hover{background:var(--surface-2)}
.lib-item[aria-current="page"]{background:var(--surface-3)}
.lib-item[aria-current="page"] b{color:var(--accent-text)}
.lib-art{width:48px;height:48px;border-radius:4px;flex:none;display:grid;place-items:center;font-weight:800;font-size:20px;background:hsl(var(--h,20) 40% 28%);color:#fff;overflow:hidden}
.lib-art img{width:100%;height:100%;object-fit:cover}
.lib-art.tpl{background:var(--surface-3);color:var(--muted)}
.lib-t{display:grid;min-width:0;line-height:1.35}
.lib-t b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-t span{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-empty{padding:8px 12px}
.lib-tpl{margin-top:10px;border-top:1px solid var(--line);border-radius:0 0 var(--r-sm) var(--r-sm);padding-top:14px}

/* dashboard rows read like tracks */
.ev-table{gap:2px}
.ev-row{background:transparent;border-radius:var(--r-sm)}
.ev-row:hover{background:var(--surface-2)}
.ev-thumb{border-radius:4px}

/* event page: playlist header */
.ev-card{grid-template-columns:232px minmax(0,1fr) 280px;align-items:end;background:color-mix(in srgb,var(--accent) 26%,var(--hero-base));border-radius:var(--r-lg);padding:28px;margin-top:0!important}
.ev-card .cover{box-shadow:0 8px 40px rgba(0,0,0,.5);border-radius:6px}
.ev-card .cover:not(.has){background:color-mix(in srgb,var(--accent) 40%,var(--hero-base))}
.ev-card .cover-empty{color:var(--fg)}
.ev-card h1{font-size:clamp(36px,5.6vw,88px);font-weight:900;letter-spacing:-.04em;line-height:.95}
.ev-card .eyebrow{color:var(--fg);letter-spacing:0;text-transform:none;font-size:14px}
.ev-card .facts > span{background:rgba(0,0,0,.28)}
.ev-card .ev-prog{background:rgba(0,0,0,.28)}
.ev-card .ev-prog .prog .track{background:rgba(255,255,255,.18)}
@media (min-width:1000px){body.has-lib .ev-card{margin:-24px -28px 0!important;border-radius:var(--r-lg) var(--r-lg) 0 0;padding:72px 28px 28px}}
@media (max-width:1000px){.ev-card{grid-template-columns:140px minmax(0,1fr)}}
@media (max-width:560px){.ev-card{grid-template-columns:1fr;padding:18px}}
.crumbs{margin:0 0 12px}
@media (min-width:1000px){body.has-lib .crumbs{position:relative;z-index:1;margin:-8px 0 -40px}}

/* tabs become chips */
.tabs{background:none;padding:0;gap:8px;border-radius:0}
.tabs .tablist{display:flex;gap:8px}
.tabs button{border-radius:999px;background:var(--surface-2);color:var(--fg);padding:0 16px;min-height:36px;font-weight:600}
.tabs button:hover{background:var(--surface-3)}
.tabs button[aria-selected="true"]{background:var(--fg);color:var(--on-fg)}

/* songs: track rows */
.song{background:transparent}
.song:hover{background:var(--surface-2)}
.art,.art-ph,.sugg-item img{border-radius:4px}
.sec-btn{border-radius:var(--r-sm)}

/* now-planning bar */
.nowbar{position:fixed;left:0;right:0;bottom:0;z-index:8;background:var(--frame);display:grid;grid-template-columns:52px minmax(160px,1fr) minmax(220px,1.4fr) minmax(0,auto);gap:10px 18px;align-items:center;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}
.nb-art{width:52px;height:52px;border-radius:4px;background:color-mix(in srgb,var(--accent) 40%,var(--hero-base));overflow:hidden}
.nb-art img{width:100%;height:100%;object-fit:cover}
.nb-t{display:grid;min-width:0;line-height:1.35}
.nb-t b,.nb-t > span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nb-prog{display:flex;align-items:center;gap:10px}
.nb-prog .track{flex:1;height:4px;background:var(--track);border-radius:99px;overflow:hidden}
.nb-prog .fill{height:100%;background:var(--accent);border-radius:99px}
.nb-acts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
body.has-nowbar main{padding-bottom:84px}
body.has-nowbar .toast{bottom:calc(96px + env(safe-area-inset-bottom,0px))}
body.panel-open .nowbar{display:none}
@media (max-width:760px){
  .nowbar{grid-template-columns:40px minmax(0,1fr) auto;padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px));gap:6px 12px}
  .nb-art{width:40px;height:40px}
  .nb-prog{grid-column:1/-1;grid-row:2}
  .nb-prog > .small{display:none}
  .nb-acts .btn:not(:first-child){display:none}
  body.has-nowbar main{padding-bottom:110px}
  /* client on a phone: section tabs dock at the bottom like an app's tab bar */
  body.dock-tabs .tabs{position:fixed;left:0;right:0;bottom:0;z-index:9;margin:0;background:var(--frame);padding:4px 8px calc(6px + env(safe-area-inset-bottom,0px));overflow:visible}
  body.dock-tabs .tabs .tablist{width:100%}
  body.dock-tabs .tabs button{flex:1 1 0;background:none;color:var(--muted);border-radius:var(--r-sm);min-height:48px;padding:0 6px;font-size:13px;white-space:normal;line-height:1.15}
  body.dock-tabs .tabs button[aria-selected="true"]{background:var(--surface-2);color:var(--fg)}
  body.dock-tabs .tabs .save-state{display:none}
  body.dock-tabs .nowbar{bottom:calc(58px + env(safe-area-inset-bottom,0px))}
  body.dock-tabs.has-nowbar main{padding-bottom:180px}
  body.dock-tabs .toast{bottom:calc(170px + env(safe-area-inset-bottom,0px))}
}
@media print{.nowbar,.library{display:none!important}}
.drawer .tabs{background:none}
.drawer .tabs button{background:var(--surface-3)}
.drawer .tabs button[aria-selected="true"]{background:var(--fg);color:var(--on-fg)}
.filters .btn,.filters .btn:first-of-type,.filters .btn:nth-of-type(4){border-radius:999px;background:var(--surface-2);color:var(--fg);min-height:34px}
.filters .btn + .btn{margin-left:0}
.filters .btn:hover{background:var(--surface-3)}
.filters .btn.btn-p{background:var(--fg);color:var(--on-fg)}
.dash-search{background-color:var(--surface-2)}
.next-sec{text-transform:capitalize}

/* ===== Music app edition, round 2: top bar, menu in the library, actions row, track table ===== */
.top .wrap{flex-wrap:nowrap;gap:12px;padding-block:8px}
.nav{flex:1;display:flex;align-items:center;gap:8px;margin-left:12px;min-width:0}
.nav-tools{display:flex;align-items:center;gap:8px;flex:0 1 520px;min-width:0}
.nav .tb-home{width:48px;height:48px;padding:0;border-radius:999px;background:var(--surface-2);color:var(--fg);display:grid;place-items:center;flex:none}
.nav .tb-home:hover{background:var(--surface-3)}
.tb-home svg,.tb-search svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.tb-search{flex:1;display:flex;align-items:center;gap:10px;background:var(--surface-2);border-radius:999px;padding:0 18px;min-height:48px;color:var(--muted);min-width:0}
.tb-search:hover{background:var(--surface-3)}
.tb-search:focus-within{box-shadow:inset 0 0 0 2px var(--fg)}
.tb-search input{flex:1;min-width:0;background:transparent;border:0;color:var(--fg);font-size:15px;outline:none}
.tb-search input::placeholder{color:var(--muted)}
.nav-links{display:flex;gap:2px;align-items:center;margin-left:auto}
.nav-acct{display:flex;gap:10px;align-items:center;margin-left:auto}
.nav .tb-new{background:var(--fg);color:var(--on-fg);min-height:44px;padding:0 22px;border-radius:999px;font-weight:700}
.nav .tb-new:hover{filter:brightness(1.08)}
.tb-new:hover{transform:scale(1.03)}
.nav .tb-avatar{width:44px;height:44px;padding:0;border-radius:999px;background:var(--surface-3);color:var(--fg);display:grid;place-items:center;font-weight:800;font-size:14px;box-shadow:0 0 0 4px var(--surface-2)}
@media (min-width:1000px){body.has-lib .nav-links{display:none}}
@media (max-width:999.98px){
  .nav-tools,.nav-acct{display:none}
  .top .wrap{flex-wrap:wrap}
  .nav-links{margin-left:0;width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .nav-links::-webkit-scrollbar{display:none}
  .nav-links a,.nav-links button{flex:none}
  .nav-links .nav-out{margin-left:auto}
}
@media (min-width:1000px){body.has-lib .dash-search{display:none}}

.lib-nav{display:grid;gap:2px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.lib-nav a,.lib-out{display:flex;align-items:center;gap:14px;padding:0 12px;min-height:42px;border-radius:var(--r-sm);color:var(--muted);text-decoration:none;font-weight:700;font-size:15px;background:none;border:0;cursor:pointer;text-align:left;width:100%}
.lib-nav a:hover,.lib-out:hover{color:var(--fg)}
.lib-nav a[aria-current="page"]{color:var(--fg);background:var(--surface-2)}
.lib-nav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;flex:none}
.lib-out{font-size:14px;font-weight:600;padding-left:48px}

/* event: shorter header, progress lives in the bottom bar */
.ev-card .facts{gap:0;font-size:15px}
.ev-card .facts > span{background:none!important;padding:0}
.ev-card .facts > span + span::before{content:"·";margin:0 8px;color:var(--muted)}
body.has-nowbar .ev-card .ev-prog{display:none}
body.has-nowbar .ev-card{grid-template-columns:232px minmax(0,1fr)}
@media (max-width:1000px){body.has-nowbar .ev-card{grid-template-columns:150px minmax(0,1fr)}}
@media (max-width:560px){
  body.has-nowbar .ev-card{grid-template-columns:112px minmax(0,1fr);gap:16px;align-items:end;padding:16px}
  body.has-nowbar .ev-card .cover{aspect-ratio:1}
  body.has-nowbar .ev-card h1{font-size:28px;letter-spacing:-.02em}
  body.has-nowbar .ev-card .eyebrow{font-size:12px}
  body.has-nowbar .ev-card .facts{font-size:13px;margin-top:8px}
  body.has-nowbar .ev-card .cover-btn{font-size:11px;padding:5px 8px;left:6px;bottom:6px}
  body.has-nowbar .ev-card .cover-empty{font-size:11px;padding:6px}
  body.has-nowbar .ev-card .ev-main > div[style]{grid-column:1/-1}
}

/* actions row: big round button, then the sections as outline pills */
.ev-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-block:24px 22px}
.ev-bar .tabs{margin:0;flex:1 1 auto;min-width:0}
.ev-go-btn{min-height:56px;padding:0 30px;font-size:16px;font-weight:800}
.ev-skip{min-height:44px}
.tabs button{background:transparent;box-shadow:inset 0 0 0 1px #727272;min-height:40px}
.tabs button:hover{background:transparent;box-shadow:inset 0 0 0 1px var(--fg)}
.tabs button[aria-selected="true"]{background:var(--fg);color:var(--on-fg);box-shadow:none}
.drawer .tabs button{box-shadow:none}

/* All songs: one track list */
.pv{display:flex;gap:8px;margin-bottom:14px}
.pv button{border:0;border-radius:999px;background:var(--surface-3);color:var(--fg);padding:0 14px;min-height:34px;font-size:13.5px;font-weight:600;cursor:pointer}
.pv button[aria-pressed="true"]{background:var(--fg);color:var(--on-fg)}
.trk-wrap{overflow-x:auto}
.trk{width:100%;min-width:640px;border-collapse:collapse;font-size:15px}
.trk th{font-size:13px;font-weight:500;color:var(--muted);text-align:left;padding:8px 12px;border-bottom:1px solid var(--line)}
.trk td{padding:8px 12px;vertical-align:middle}
.trk tbody tr:hover{background:var(--surface-2)}
.trk .n{color:var(--muted);width:40px}
.trk .r{text-align:right}
.trk-song{display:flex;gap:12px;align-items:center}
.trk-t{display:grid;min-width:0}
.trk-t b{font-weight:600}
.trk .link{color:var(--muted);font-size:15px;padding:6px 0;background:none}
.trk .link:hover{color:var(--fg);text-decoration:underline;background:none}
.trk .is-skip b{color:var(--muted)}
.tag{display:inline-block;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.tag-must{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent-text)}
.tag-picked{background:var(--pick-bg);color:var(--pick-fg)}
.tag-skip{background:var(--surface-3);color:var(--skip-fg)}

/* clients on phones: icons on the docked tabs */
@media (max-width:760px){
  body.dock-tabs .ev-bar{margin-block:16px}
  body.dock-tabs .tabs button{box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
  body.dock-tabs .tabs button::before{content:"";width:22px;height:22px;background:currentColor;-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat}
  body.dock-tabs .tabs button[aria-selected="true"]{background:none;color:var(--fg)}
  #tab-plan{--ico:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M9%2018V5l12-2v13'/%3E%3Ccircle%20cx='6'%20cy='18'%20r='3'/%3E%3Ccircle%20cx='18'%20cy='16'%20r='3'/%3E%3C/svg%3E")}
  #tab-export{--ico:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='18'%20cy='5'%20r='3'/%3E%3Ccircle%20cx='6'%20cy='12'%20r='3'/%3E%3Ccircle%20cx='18'%20cy='19'%20r='3'/%3E%3Cpath%20d='m8.6%2013.5%206.8%204M15.4%206.5l-6.8%204'/%3E%3C/svg%3E")}
  #tab-live{--ico:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M21%2015a2%202%200%200%201-2%202H7l-4%204V5a2%202%200%200%201%202-2h14a2%202%200%200%201%202%202z'/%3E%3C/svg%3E")}
  body.dock-tabs .tabs{padding-top:6px}
  body.dock-tabs .nowbar{bottom:calc(64px + env(safe-area-inset-bottom,0px))}
}

/* Back / Next between moments */
.step-nav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}
.step-nav .link{margin-top:0;font-size:14px;font-weight:600;color:var(--fg);padding:0 18px;min-height:44px;border-radius:999px;display:inline-flex;align-items:center;text-transform:capitalize}
.step-nav .prev-sec{background:transparent;box-shadow:inset 0 0 0 1px #727272}
.step-nav .prev-sec:hover{background:transparent;box-shadow:inset 0 0 0 1px var(--fg)}
.step-nav .next-sec{background:var(--fg);color:var(--on-fg)}
.step-nav .next-sec:hover{filter:brightness(1.08)}
@media (max-width:560px){.step-nav .step-to{display:none}.step-nav .next-sec{flex:1;justify-content:center}}

/* template delete + confirm */
.tpl-del{background:transparent;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rose) 55%,transparent)}
.tpl-del:hover{box-shadow:inset 0 0 0 1px var(--rose)}
.tpl-confirm{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--rose) 12%,var(--surface-2));border-radius:var(--r-md);padding:12px 14px;font-size:14px;color:var(--fg)}
.tpl-confirm-acts{display:flex;gap:8px}
.tpl-row.my-tpl{grid-template-columns:1fr auto auto auto}
@media (max-width:560px){.tpl-row.my-tpl{grid-template-columns:1fr 1fr 1fr}.tpl-row.my-tpl > div:first-child{grid-column:1/-1}}

/* ---------- Light mode (clients can switch to it from the planner's top bar) ---------- */
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#F3F3F3; --surface:#FFFFFF; --surface-2:#F0F0F0; --surface-3:#E2E2E2; --line:#DADADA;
  --fg:#121212; --muted:#555555; --faint:#636363; --field-line:#8A8A8A;
  --on-fg:#FFFFFF; --frame:#FFFFFF; --hero-base:#FFFFFF; --track:#CFCFCF;
  --pick-bg:#E2F4E8; --pick-fg:#1B6838; --skip-fg:#3F3F3F;
  --mint:#1B7A42; --rose:#B42335; --sky:#1F5FAE;
  --accent-text:color-mix(in srgb,var(--accent) 58%,#000);
  --shadow:0 18px 50px -24px rgba(0,0,0,.25); --scrim:rgba(0,0,0,.45);
}
:root[data-theme="light"] .top{border-bottom:1px solid var(--line)}
:root[data-theme="light"] .nowbar{border-top:1px solid var(--line)}
:root[data-theme="light"] body.dock-tabs .tabs{border-top:1px solid var(--line)}
:root[data-theme="light"] .btn-g{box-shadow:inset 0 0 0 1px #8A8A8A}
:root[data-theme="light"] .tabs button{box-shadow:inset 0 0 0 1px #8A8A8A}
:root[data-theme="light"] .tabs button[aria-selected="true"],:root[data-theme="light"] .drawer .tabs button{box-shadow:none}
:root[data-theme="light"] .ev-card .cover{box-shadow:0 8px 30px rgba(0,0,0,.18)}
:root[data-theme="light"] .ev-card .facts > span + span::before{color:var(--muted)}
/* the theme switch */
.theme-tg{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:var(--surface-2);color:var(--fg);padding:0 14px;min-height:40px;font-weight:600;font-size:14px;cursor:pointer}
.theme-tg:hover{background:var(--surface-3)}
.theme-tg svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.nav-client{margin-left:auto;display:flex;align-items:center}
:root[data-theme="light"] #brand-logo{background:#121212;padding:4px 8px;border-radius:6px;box-sizing:content-box}
