/* ==========================================================================
   Cherry Pickers — theme.css
   Design tokens, base typography, and shared chrome components.
   Consolidates: styles.css, theme-polish.css, dj-preview.css (chrome bits),
   nav-icons.css, modal-fix.css, event-status-legend.css, events-icon.css,
   vote-state.css, admin-errors.css (shared badge look), playback-status.css
   ========================================================================== */

:root{
  --ink:#16202B; --ink-2:#1E2C3A; --ink-3:#243346;
  --ivory:#F3EEE2; --ivory-dim:#C9C3B4;
  --brass:#C9A24E; --brass-dim:#8A7238;
  --rust:#A3402A; --denim:#5C7A93; --denim-dim:#3B4E5E;
  --sage:#7E9166; --saddle:#8B5A34; --saddle-line:rgba(139,90,52,0.55);
  --line:rgba(243,238,226,0.12);
  --radius-s:6px; --radius-m:10px; --radius-l:16px;
  --shadow:0 20px 46px rgba(5,8,12,0.45);

  /* legacy variable names kept so any un-migrated inline rule still resolves */
  --muted:var(--ivory-dim);
  --cream:var(--ink-2);
  --paper:var(--ink-2);
  --red:var(--rust);
  --red-dark:#82301e;
  --olive:var(--sage);
  --gold:var(--brass);
  --brown:var(--saddle);
}

*{ box-sizing:border-box; }

html, body{ background:#0d1319; }

body{
  margin:0;
  background:#0d1319;
  color:var(--ivory);
  font-family:'Inter',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;
}

.shell{
  min-height:100vh;
  max-width:720px;
  margin:auto;
  background:var(--ink);
  padding-bottom:92px;
}

main{ padding:26px 20px; }

.view{ display:none; }
.view.active{ display:block; }

::selection{ background:rgba(201,162,78,0.35); color:var(--ivory); }

/* ---------- typography ---------- */
h1, h2, h3, h4{ font-family:'Big Shoulders Display',sans-serif; font-weight:800; color:var(--ivory); }

.kicker{
  font-size:11px; letter-spacing:2px; font-weight:700; text-transform:uppercase;
  color:var(--brass); margin:0 0 8px;
}
.subtle{ color:var(--ivory-dim); font-size:13.5px; margin:0; line-height:1.55; }

.greeting h1, .page-heading h1, .profile-header h1{
  font-family:'Big Shoulders Display',sans-serif; font-weight:800;
  font-size:38px; line-height:1.0; margin:0 0 8px; letter-spacing:.2px;
}

.section-heading{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; margin:0 0 12px; }
.section-heading h2{ font-family:'Big Shoulders Display',sans-serif; font-size:22px; font-weight:800; margin:0; }
.count{ color:var(--ivory-dim); font-size:12px; white-space:nowrap; }

/* ---------- "branded card" dashed-frame motif ---------- */
.dashed-frame, .now-card, .prep-event-card, .prep-detail, .dj-panel,
.admin-users-panel, .admin-errors-panel, .profile-settings-panel,
.favourites-library-panel, .user-saved-sections, .saved-favourites-grid article,
.disp-join, .rule-card{
  position:relative;
}
.dashed-frame::before, .now-card::before, .prep-event-card::before, .prep-detail::before,
.dj-panel::before, .admin-users-panel::before, .admin-errors-panel::before,
.profile-settings-panel::before, .favourites-library-panel::before, .user-saved-sections::before,
.saved-favourites-grid article::before, .disp-join::before, .rule-card::before{
  content:''; position:absolute; inset:7px; border:1px dashed var(--saddle-line);
  border-radius:7px; pointer-events:none;
}

/* ---------- topbar ---------- */
.topbar{
  min-height:78px; padding:14px 18px; display:flex; align-items:center; gap:12px;
  background:var(--ink-2); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:3; flex-wrap:wrap;
}
.wordmark{ display:flex; align-items:center; gap:10px; background:none; border:0; padding:0; text-align:left; cursor:pointer; }
.wordmark img{ width:38px; height:38px; object-fit:cover; border-radius:9px; }
.wordmark span{ display:grid; line-height:1.05; }
.wordmark small{ font-size:9px; letter-spacing:2.5px; color:var(--ivory-dim); font-weight:700; }
.wordmark strong{ font-family:'Big Shoulders Display',sans-serif; font-size:17px; font-weight:800; color:var(--brass); letter-spacing:.4px; }

.event-switcher{
  display:flex; align-items:center; gap:9px; margin-left:auto;
  background:var(--ink-3); border:1px solid var(--line); border-radius:999px;
  padding:8px 12px 8px 10px; text-align:left; min-width:165px; cursor:pointer;
}
.event-switcher span:nth-child(2){ display:grid; min-width:0; }
.event-switcher small{ font-size:8px; color:var(--ivory-dim); font-weight:700; letter-spacing:1px; }
.event-switcher strong{ font-size:12.5px; font-weight:600; color:var(--ivory); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.event-switcher b{ font-size:17px; color:var(--brass); font-weight:400; }

.live-dot{
  width:8px; height:8px; border-radius:50%; background:var(--rust); display:inline-block;
  flex:none; box-shadow:0 0 0 4px rgba(163,64,42,0.16); animation:cp-pulse 1.7s infinite;
}
@keyframes cp-pulse{ 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:.55;transform:scale(.8);} }

.event-status-dot{ width:9px; height:9px; border-radius:50%; background:var(--rust); display:inline-block; flex:none; box-shadow:0 0 0 4px rgba(163,64,42,0.14); animation:none; }
.event-status-dot.open{ background:var(--brass); box-shadow:0 0 0 4px rgba(201,162,78,0.16); }
.event-status-dot.live{ background:var(--sage); box-shadow:0 0 0 4px rgba(126,145,102,0.16); animation:cp-pulse 1.7s infinite; }
.event-status-dot.closed{ background:var(--denim); box-shadow:0 0 0 4px rgba(92,122,147,0.16); }

.mode-chip{
  display:inline-flex; align-items:center; gap:7px; border:1px solid var(--brass);
  border-radius:999px; background:transparent; color:var(--brass);
  padding:9px 13px; font-size:11px; font-weight:700; letter-spacing:.02em; cursor:pointer; white-space:nowrap;
}
.mode-chip:before{ content:'DJ'; display:grid; place-items:center; width:17px; height:17px; border-radius:50%; background:var(--brass); color:#1a1305; font-size:8px; font-weight:900; }
.mode-chip:hover{ background:rgba(201,162,78,0.1); }
.admin-chip{ border-color:var(--rust); color:#e08469; }
.admin-chip:before{ content:'A'; background:var(--rust); color:#fbe3db; }
body:not(.dj-enabled) .mode-chip, body:not(.dj-enabled) #djView{ display:none!important; }
.admin-chip[hidden], body:not(.admin-enabled) .admin-chip{ display:none!important; }
body.admin-enabled .admin-chip{ display:inline-flex!important; }

.auth-button{
  display:flex; align-items:center; gap:7px; border:1px solid var(--line); background:var(--ink-3);
  color:var(--ivory); border-radius:999px; padding:7px 12px 7px 7px; font-size:12px; font-weight:600; cursor:pointer;
}
.auth-icon{ width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:var(--brass); color:#1a1305; font-size:10px; font-weight:800; }

/* ---------- menu button + drawer ---------- */
.menu-btn{ display:flex; align-items:center; justify-content:center; width:34px; height:34px; border:1px solid var(--line); border-radius:50%; background:var(--ink-3); color:var(--ivory-dim); padding:0; cursor:pointer; flex:none; }
.menu-btn svg{ width:18px; height:18px; }
.menu-btn:hover{ color:var(--ivory); border-color:var(--brass); }
.menu-btn{ position:relative; }
.menu-btn.has-alert::after{ content:''; position:absolute; top:-1px; right:-1px; width:10px; height:10px; border-radius:50%; background:var(--rust); border:2px solid var(--ink); }

/* Count badges: unread notifications on Me, song requests waiting on event lists. */
.nav-badge{ min-width:16px; height:16px; padding:0 4px; box-sizing:border-box; border-radius:999px; background:var(--rust); color:#fff; font-size:9.5px; font-weight:800; line-height:16px; text-align:center; font-variant-numeric:tabular-nums; }
.bottom-nav button > .nav-badge{ position:absolute; top:7px; left:calc(50% + 6px); }
.drawer-item > .nav-badge{ margin-left:auto; }
.count-badge{ display:inline-block; padding:3px 9px; border-radius:999px; background:var(--rust); color:#fff; font-size:10px; font-weight:800; white-space:nowrap; }
.heading-actions{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; justify-content:flex-end; }
.list-tools{ display:flex; justify-content:flex-end; margin:0 0 10px; }
.list-tools:has(> [hidden]){ display:none; }
.count-badge.quiet{ background:rgba(201,162,78,0.16); color:var(--brass); }
.private-tag{ display:inline-block; margin-left:7px; padding:2px 8px; border-radius:999px; font-size:9.5px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; vertical-align:middle; background:rgba(92,122,147,0.2); color:#9db4c8; font-family:'Inter',sans-serif; }
.verify-banner{ display:flex; align-items:center; justify-content:space-between; gap:14px; margin:0 0 18px; padding:14px 16px; border:1px solid var(--saddle-line); border-left:3px solid var(--brass); border-radius:var(--radius-s); background:rgba(201,162,78,0.08); }
.verify-banner[hidden]{ display:none; }
.verify-banner div{ display:grid; gap:3px; min-width:0; }
.verify-banner strong{ font-size:13px; }
.verify-banner small{ font-size:11.5px; color:var(--ivory-dim); line-height:1.4; }
.verify-banner button{ flex:none; }
.past-toggle{ display:inline-flex; align-items:center; gap:7px; color:var(--ivory-dim); font-size:11.5px; cursor:pointer; }
.past-toggle[hidden]{ display:none; }
.past-toggle input{ accent-color:var(--brass); }
tr.past-divider td{ padding-top:16px; color:var(--ivory-dim); font-size:10px; font-weight:800; letter-spacing:1px; text-transform:uppercase; border-bottom:0; }
tr.past-row td{ opacity:.62; }

.drawer-overlay{ position:fixed; inset:0; background:rgba(8,12,16,0.6); opacity:0; pointer-events:none; transition:opacity .2s ease; z-index:30; }
.drawer-overlay.open{ opacity:1; pointer-events:auto; }
.drawer{
  position:fixed; top:0; bottom:0; left:0; width:78%; max-width:300px; background:var(--ink-2);
  border-right:1px solid var(--line); box-shadow:var(--shadow); transform:translateX(-100%);
  transition:transform .22s ease; z-index:31; display:flex; flex-direction:column; overflow-y:auto;
}
.drawer.open{ transform:translateX(0); }
.drawer-head{ padding:22px 18px 16px; border-bottom:1px solid var(--line); }
.drawer-head .name{ font-family:'Big Shoulders Display',sans-serif; font-weight:700; font-size:19px; color:var(--ivory); }
.drawer-head .role{ font-size:11.5px; color:var(--brass); margin-top:2px; }
.drawer-section{ padding:14px 0 4px; }
.drawer-section-label{ font-size:10.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--denim); padding:0 18px 8px; }
.drawer-item{
  display:flex; align-items:center; gap:12px; width:100%; padding:11px 18px; font-size:14px; font-weight:600;
  color:var(--ivory-dim); background:none; border:0; border-left:2px solid transparent; text-align:left;
  cursor:pointer; font-family:'Inter',sans-serif;
}
.drawer-item:hover{ background:rgba(243,238,226,0.04); color:var(--ivory); }
.drawer-item svg{ width:17px; height:17px; flex-shrink:0; color:var(--denim); }
.drawer-footer{ margin-top:auto; padding:6px 0 16px; border-top:1px solid var(--line); }
.drawer-footer .drawer-item.signout{ color:#e08469; }
.drawer-footer .drawer-item.signout svg{ color:#e08469; }

/* relocated topbar pills render as plain drawer rows */
.drawer .mode-chip, .drawer .admin-chip{
  display:flex; width:100%; border:0; border-left:2px solid transparent; border-radius:0; background:none;
  color:var(--ivory-dim); padding:11px 18px; font-size:14px; font-weight:600; letter-spacing:normal;
}
.drawer .mode-chip:before, .drawer .admin-chip:before{ width:22px; height:22px; font-size:9px; }
.drawer .mode-chip:hover, .drawer .admin-chip:hover{ background:rgba(243,238,226,0.04); color:var(--ivory); }

/* ---------- bottom nav ---------- */
.bottom-nav{
  position:fixed; bottom:0; left:50%; transform:translateX(-50%); width:min(720px,100%);
  height:74px; background:rgba(22,32,43,0.97); backdrop-filter:blur(6px);
  border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(5,1fr);
  z-index:4; padding-bottom:env(safe-area-inset-bottom);
}
.operations-enabled .bottom-nav{ grid-template-columns:repeat(6,1fr); }
.bottom-nav button{ border:0; background:none; color:var(--ivory-dim); display:grid; place-content:center; gap:4px; cursor:pointer; position:relative; transition:color .15s ease; }
.bottom-nav button svg{ width:22px; height:22px; margin:0 auto; }
.bottom-nav button[data-view="requests"] svg{ width:20px; height:20px; }
.bottom-nav button[hidden]{ display:none!important; }
.bottom-nav button small{ font-size:9.5px; font-weight:700; letter-spacing:.02em; }
.bottom-nav button.active{ color:var(--brass); }
.bottom-nav button:hover{ color:var(--ivory); }

/* ---------- buttons ---------- */
.wide-button{
  width:100%; border:1px dashed var(--saddle-line); border-radius:var(--radius-m); background:transparent;
  color:var(--ivory-dim); padding:13px; font-weight:700; font-size:13px; cursor:pointer; margin-top:14px;
  font-family:'Inter',sans-serif;
}
.wide-button:not(.secondary){ background:var(--brass); color:#1a1305; border-style:solid; border-color:var(--brass); }
.wide-button:not(.secondary):hover{ background:#dab35c; }
.wide-button.secondary{ background:transparent; color:var(--ivory-dim); border:1px dashed var(--saddle-line); }
.wide-button.secondary:hover{ border-color:var(--brass); color:var(--ivory); }
.wide-button.primary{ background:var(--brass); color:#1a1305; border-color:var(--brass); }

.panel-action, .refresh-control{
  border:1px solid var(--line); background:var(--ink-3); color:var(--ivory-dim);
  border-radius:999px; padding:9px 13px; font-size:11.5px; font-weight:700; cursor:pointer; font-family:'Inter',sans-serif;
}
.panel-action:hover{ border-color:var(--brass); color:var(--ivory); }
.panel-action.muted{ border:0; background:none; color:var(--ivory-dim); padding:6px 4px; }
.prep-green-button, .primary-btn{ background:var(--brass); border-color:var(--brass); color:#1a1305; }
.prep-green-button:hover{ background:#dab35c; border-color:#dab35c; }
.prep-permission-note{ max-width:280px; color:var(--ivory-dim); font-size:11px; line-height:1.35; text-align:right; }

.quiet{ border:0; background:none; color:var(--brass); font-size:11px; font-weight:700; padding:0; cursor:pointer; }

/* ---------- badges / pills ---------- */
.badge{ font-size:11.5px; font-weight:600; padding:5px 10px; border-radius:999px; border:1px solid var(--saddle-line); color:var(--ivory-dim); display:inline-block; }
.status-pill{ background:var(--brass); color:#1a1305; padding:5px 9px; border-radius:999px; font-size:9.5px; font-weight:800; letter-spacing:.8px; }
.status-pill.live{ background:rgba(163,64,42,0.18); color:#e08469; }
.status-pill.upcoming{ background:rgba(126,145,102,0.15); color:#a7c290; }
.status-pill.ended{ background:rgba(92,122,147,0.15); color:var(--denim); }

.role-badge, .admin-user-status{ border-radius:999px; padding:4px 9px; font-size:9.5px; font-weight:700; white-space:nowrap; background:rgba(243,238,226,0.08); color:var(--ivory-dim); }
.role-administrator{ background:rgba(163,64,42,0.18); color:#e08469; }
.role-dj{ background:rgba(201,162,78,0.15); color:var(--brass); }
.role-venue{ background:rgba(92,122,147,0.18); color:var(--denim); }
.admin-user-status{ color:#a7c290; }
.admin-user-status.disabled{ color:#e08469; }

.dance-pairing{ display:inline-flex; align-items:center; gap:5px; margin-left:6px; vertical-align:middle; }
.dance-name-badge, .dance-level-badge{ display:inline-block; border-radius:999px; padding:2px 7px; font-size:10px; line-height:1.4; font-style:normal; white-space:nowrap; }
.dance-name-badge{ background:rgba(126,145,102,0.14); color:#a7c290; }
.dance-level-badge{ color:#1a1305; background:var(--ivory-dim); }
.dance-level-badge.level-absolute-beginner, .dance-level-badge.level-beginner{ background:var(--sage); color:#0f1a0d; }
.dance-level-badge.level-improver{ background:var(--brass); color:#1a1305; }
.dance-level-badge.level-intermediate, .dance-level-badge.level-advanced{ background:var(--rust); color:#fbe3db; }
.dance-lookup-trigger{ min-width:58px; min-height:30px; padding:4px 8px; border:1px dashed var(--saddle-line); border-radius:999px; background:transparent; color:var(--ivory-dim); font-size:11px; font-weight:700; }
.dance-lookup-trigger.linked{ background:rgba(126,145,102,0.15); border-style:solid; border-color:var(--sage); color:#a7c290; }
.song-dance-link{ color:var(--brass); font-size:.78em; font-weight:700; white-space:nowrap; }
.song-dance-link:hover{ text-decoration:underline; }

.playback-monitor{ display:flex; align-items:flex-start; gap:8px; border:1px solid var(--line); border-radius:var(--radius-s); padding:10px 11px; background:var(--ink-3); color:var(--ivory-dim); font-size:11px; line-height:1.4; }
.playback-monitor strong{ color:var(--ivory); }
.playback-monitor small{ display:block; color:var(--ivory-dim); font-size:10px; margin-top:3px; }
.playback-dot{ width:8px; height:8px; border-radius:50%; background:#5a6472; flex:none; margin-top:4px; }
.playback-monitor.ok{ border-color:rgba(126,145,102,0.4); background:rgba(126,145,102,0.08); color:#a7c290; }
.playback-monitor.ok .playback-dot{ background:var(--sage); box-shadow:0 0 0 4px rgba(126,145,102,0.16); }
.playback-monitor.paused{ border-color:rgba(201,162,78,0.4); background:rgba(201,162,78,0.08); color:var(--brass); }
.playback-monitor.paused .playback-dot{ background:var(--brass); }
.playback-monitor.warning{ border-color:rgba(201,162,78,0.4); background:rgba(201,162,78,0.08); color:var(--brass); }
.playback-monitor.warning .playback-dot{ background:var(--brass); box-shadow:0 0 0 4px rgba(201,162,78,0.16); }
.playback-monitor.error{ border-color:rgba(163,64,42,0.4); background:rgba(163,64,42,0.08); color:#e08469; }
.playback-monitor.error .playback-dot{ background:var(--rust); }

.event-status-legend{ display:flex; flex-wrap:wrap; gap:8px 14px; margin:-8px 0 16px; color:var(--ivory-dim); font-size:10px; }
.event-status-legend span{ display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.event-status-legend .event-status-dot{ width:7px; height:7px; box-shadow:none; animation:none; }

/* ---------- mini disc / avatar ---------- */
.mini-disc{ width:32px; height:32px; background:var(--ink-3); border:1px solid var(--line); border-radius:50%; display:grid; place-items:center; color:var(--brass); font-weight:700; font-size:12px; flex:none; }

/* ---------- toggle switch ---------- */
.toggle{ width:36px; height:20px; border-radius:999px; background:var(--denim-dim); position:relative; flex:none; cursor:pointer; }
.toggle:after{ content:''; position:absolute; width:16px; height:16px; top:2px; left:2px; border-radius:50%; background:var(--ivory); transition:left .15s ease; }
.toggle.on{ background:var(--sage); }
.toggle.on:after{ left:18px; }
.setting-control{ cursor:default; }
.setting-control input[type=checkbox]{ accent-color:var(--sage); width:18px; height:18px; }
.repeat-gap-input{ width:72px; border:1px solid var(--line); border-radius:var(--radius-s); background:var(--ink-3); padding:7px; color:var(--ivory); font:inherit; }

.star-toggle{ border:0; background:transparent; color:var(--saddle); font-size:22px; line-height:1; padding:0; cursor:pointer; }
.star-toggle.active{ color:var(--brass); }
.star-toggle:focus-visible{ outline:2px solid var(--sage); outline-offset:2px; border-radius:4px; }

/* ---------- forms ---------- */
.big-input{ width:100%; border:1px solid var(--line); border-radius:var(--radius-s); background:var(--ink-3); color:var(--ivory); padding:12px 13px; font:inherit; font-size:14px; margin-bottom:12px; }
.big-input:focus{ outline:none; border-color:var(--brass); }
.big-input[readonly]{ color:var(--ivory-dim); background:rgba(243,238,226,0.04); }
.field-hint{ color:var(--ivory-dim); font-size:11px; line-height:1.35; }
.form-error{ min-height:18px; margin:0; color:#e08469; font-size:12px; }
.checkbox-row{ display:flex!important; align-items:center; gap:8px!important; }
.checkbox-row input{ width:18px; height:18px; accent-color:var(--sage); }
.password-field{ display:grid; gap:0; }
.password-field .big-input{ margin-bottom:8px; }
.password-toggle{ display:flex; align-items:center; gap:7px; color:var(--ivory-dim); font-size:11px; cursor:pointer; }
.password-toggle input{ accent-color:var(--sage); }
.password-field .form-error{ margin:5px 0 0; }

/* ---------- modal ---------- */
.modal-backdrop{ position:fixed; inset:0; background:rgba(8,12,16,0.66); z-index:8; display:grid; place-items:center; padding:16px; align-items:center; overflow-y:auto; min-height:100dvh; }
.modal-backdrop[hidden]{ display:none!important; }
.modal{
  width:min(100%,520px); background:var(--ink-2); border:1px solid var(--line); border-radius:var(--radius-l);
  padding:26px; position:relative; box-shadow:var(--shadow); max-height:calc(100dvh - 32px); overflow-y:auto; overscroll-behavior:contain;
}
.modal h2{ font-family:'Big Shoulders Display',sans-serif; font-size:26px; font-weight:800; margin:0 0 20px; }
.close{ position:absolute; right:16px; top:16px; border:1px solid var(--line); background:var(--ink-3); border-radius:50%; width:28px; height:28px; font-size:14px; color:var(--ivory-dim); cursor:pointer; }
.modal-note{ font-size:11.5px; line-height:1.45; color:var(--ivory-dim); margin:18px 0 0; }
.modal-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:4px; align-items:stretch; }
.modal-actions > button{ min-height:46px; margin:0; }
.modal-actions > .wide-button{ width:auto; flex:1; }
.prep-event-modal, .folder-modal{ margin:auto; max-height:min(680px,calc(100vh - 32px)); overflow:auto; }

.search-results{ display:grid; gap:6px; margin-top:10px; margin-bottom:10px; }
.search-result{ width:100%; display:flex; align-items:center; gap:10px; border:1px solid var(--line); background:var(--ink-3); color:var(--ivory); border-radius:var(--radius-s); padding:10px; text-align:left; cursor:pointer; }
.search-result img{ width:34px; height:34px; object-fit:cover; border-radius:4px; }
.search-result>span:nth-child(2){ display:grid; gap:3px; flex:1; min-width:0; }
.search-result small{ font-size:10px; color:var(--ivory-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.search-result b{ font-size:10px; color:var(--brass); }
.search-result.selected{ border-color:var(--brass); background:rgba(201,162,78,0.1); }

/* ---------- folders ---------- */
.folder-options{ display:grid; gap:7px; max-height:310px; overflow:auto; }
.folder-option{ width:100%; display:flex; align-items:center; gap:11px; text-align:left; border:1px solid var(--line); border-radius:var(--radius-m); background:var(--ink-3); padding:12px; cursor:pointer; color:var(--ivory); }
.folder-option:hover{ border-color:var(--brass); background:rgba(201,162,78,0.06); }
.folder-option>span:nth-child(2){ display:grid; gap:3px; flex:1; min-width:0; }
.folder-option small{ font-size:10px; color:var(--ivory-dim); }
.folder-option>b{ color:var(--brass); font-size:18px; font-weight:400; }
.folder-option .folder-glyph{ color:var(--brass); }
.folder-glyph{ display:block; width:14px; height:10px; border:1.5px solid currentColor; border-radius:2px; position:relative; }
.folder-glyph:before{ content:''; position:absolute; left:1px; top:-4px; width:6px; height:4px; border:1.5px solid currentColor; border-bottom:0; border-radius:2px 2px 0 0; background:inherit; }
.folder-form{ display:grid; gap:8px; }
.folder-form label{ font-size:12px; font-weight:700; color:var(--ivory); }
.folder-song-label{ margin:-10px 0 15px; }

/* ---------- toast ---------- */
.toast{
  position:fixed; left:50%; bottom:92px; transform:translate(-50%,15px);
  background:var(--ink-2); border:1px solid var(--line); color:var(--ivory);
  padding:12px 16px; border-radius:var(--radius-s); font-size:12.5px; opacity:0; pointer-events:none;
  transition:.2s; z-index:10; white-space:nowrap; box-shadow:var(--shadow);
}
.toast.show{ opacity:1; transform:translate(-50%,0); }

/* ---------- auth gate ---------- */
.auth-gate{ position:fixed; inset:0; z-index:6; display:grid; place-items:center; padding:24px; background:rgba(8,12,16,0.6); backdrop-filter:blur(4px); }
.auth-gate[hidden]{ display:none; }
.auth-gate-card{ position:relative; width:min(100%,420px); padding:32px 28px; border-radius:var(--radius-l); background:var(--ink-2); box-shadow:var(--shadow); text-align:center; }
.auth-gate-card:before{ content:''; position:absolute; inset:9px; border:1px dashed var(--saddle-line); border-radius:calc(var(--radius-l) - 4px); pointer-events:none; }
.auth-gate-card h1{ font-family:'Big Shoulders Display',sans-serif; font-size:32px; font-weight:800; margin:0 0 10px; }
.auth-gate-card p:not(.kicker){ color:var(--ivory-dim); font-size:14px; line-height:1.55; margin:0 auto 20px; max-width:32ch; }
.auth-gate-card button{ width:100%; }
.auth-gate-card small{ display:block; color:var(--ivory-dim); font-size:10.5px; line-height:1.4; margin-top:13px; }
.gate-actions{ display:grid; gap:10px; margin-top:20px; }
.gate-actions button{ width:100%; margin-top:0; min-height:46px; border-radius:var(--radius-s); font-size:13px; }
.gate-actions button:first-child{ border:0; background:var(--brass); color:#1a1305; font-weight:800; box-shadow:0 10px 20px rgba(201,162,78,0.22); cursor:pointer; }
.gate-actions button:first-child:hover{ background:#dab35c; }
.gate-actions button:first-child:after{ content:'\2192'; display:inline-block; margin-left:9px; font-size:17px; line-height:0; vertical-align:-1px; }
.gate-actions .gate-learn-more{ background:transparent; color:var(--ivory-dim); border:1px dashed var(--saddle-line); box-shadow:none; cursor:pointer; }
.gate-actions .gate-learn-more:hover{ color:var(--ivory); border-color:var(--brass); }

.auth-form{ display:grid; gap:9px; }
.auth-form>button{ min-height:46px; border:0; border-radius:var(--radius-s); background:var(--brass); color:#1a1305; font-size:13px; font-weight:800; box-shadow:0 10px 18px rgba(201,162,78,0.2); cursor:pointer; transition:transform .15s ease,background .15s ease; }
.auth-form>button:after{ content:'\2192'; display:inline-block; margin-left:9px; font-size:17px; line-height:0; vertical-align:-1px; }
.auth-form>button:hover{ background:#dab35c; transform:translateY(-1px); }
.auth-secondary{ display:block; width:100%; margin-top:8px; border:0; background:transparent; color:var(--brass); font:inherit; font-size:11.5px; font-weight:700; cursor:pointer; }

/* ---------- generic empty / saved states ---------- */
.empty-library{ display:grid; gap:5px; border:1px dashed var(--saddle-line); border-radius:var(--radius-s); padding:18px; color:var(--ivory-dim); font-size:12px; }
.empty-library strong{ color:var(--ivory); font-size:13px; }

/* ---------- responsive base ---------- */
@media(min-width:721px){
  body{ padding:28px; }
  .shell{ box-shadow:0 0 0 1px var(--line), var(--shadow); border-radius:var(--radius-l); overflow:hidden; }
  .topbar{ position:relative; }
  .bottom-nav{ position:relative; transform:none; left:auto; width:100%; margin-top:24px; border-radius:0; }
  .shell{ padding-bottom:0; }
}
@media(max-width:430px){
  main{ padding:22px 16px; }
  .topbar{ padding:12px 14px; gap:8px; }
  .wordmark strong{ font-size:15px; }
  .event-switcher{ min-width:0; padding:7px; }
  .event-switcher strong{ max-width:92px; }
  .greeting h1{ font-size:32px; }
}

.app-footer{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; padding:22px 0 18px; margin-top:12px; color:var(--ivory-dim); font-size:10px; letter-spacing:.04em; text-align:center; }
.app-footer strong{ color:var(--brass); font-weight:800; }
