/* Band hub + Calendar + date/time pickers (web M3). Theme variables only.
   Measurements follow mobile's band.tsx / calendar.tsx StyleSheets. */

/* ── Band hub ──────────────────────────────────────────────────────── */
.band-hub { display: flex; flex-direction: column; gap: 4px; padding-top: 4px; }
.band-hub__empty { text-align: center; margin-top: 48px; }
.band-hub__logo { position: relative; align-self: center; margin-bottom: 16px; }
.band-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 8px;
  margin: 0 -8px;
  border-radius: 12px;
}
.band-card__text { flex: 1; min-width: 0; }
.band-card__top { display: flex; justify-content: space-between; gap: 8px; }
.band-card__title { font-size: 17px; font-weight: 700; }
.band-card__subtitle { font-size: 14px; color: var(--text-secondary); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.band-card__archie { width: 56px; height: 56px; object-fit: contain; flex-shrink: 0; }
.band-links { display: flex; flex-direction: column; margin-top: 8px; }
.band-link {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 12px 8px;
  margin: 0 -8px;
  border-radius: 10px;
  font-size: 17px;
  font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.band-link--last { border-bottom: 0; }
.switch-row { display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 4px; border-bottom: 1px solid var(--border); text-align: left; }
.switch-row--active .list-row__label { color: var(--accent); }

/* ── Calendar ──────────────────────────────────────────────────────── */
.calendar { display: flex; flex-direction: column; flex: 1; min-height: 0; padding: 0 16px 16px; gap: 12px; }
@media (min-width: 900px) {
  .calendar { flex-direction: row; align-items: flex-start; max-width: 1100px; margin: 0 auto; width: 100%; gap: 32px; }
  .calendar__grid-col { flex: 0 0 420px; position: sticky; top: 0; }
  .cal-feed { flex: 1; }
}
.cal-grid { display: flex; flex-direction: column; gap: 2px; }
.cal-grid__nav { display: flex; align-items: center; justify-content: space-between; padding: 4px 0; }
.cal-grid__month { font-size: 16px; font-weight: 600; }
.cal-grid__row { display: grid; grid-template-columns: repeat(7, 1fr); }
.cal-grid__wd { text-align: center; font-size: 11px; font-weight: 600; color: var(--text-tertiary); padding: 4px 0; }
.cal-day { display: flex; flex-direction: column; align-items: center; padding: 3px 0; border-radius: 8px; }
.cal-day:hover .cal-day__circle:not(.cal-day__circle--today):not(.cal-day__circle--selected) { background: var(--surface); }
.cal-day__circle { width: 34px; height: 34px; border-radius: 17px; display: flex; align-items: center; justify-content: center; font-size: 14px; }
.cal-day__circle--dim { color: var(--text-tertiary); opacity: 0.45; }
.cal-day__circle--today { background: var(--accent); color: var(--on-accent); font-weight: 700; opacity: 1; }
.cal-day__circle--selected { background: var(--text-tertiary); color: var(--on-accent); font-weight: 700; opacity: 1; }
.cal-day__dots { display: flex; gap: 2px; height: 5px; margin-top: 2px; }
.cal-dot { width: 5px; height: 5px; border-radius: 3px; }
.cal-dot--mine { background: var(--accent); }
.cal-dot--other { background: var(--text-tertiary); }
.cal-feed { display: flex; flex-direction: column; overflow-y: auto; min-height: 0; }
.cal-feed__header { margin-top: 12px; }
.cal-event {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px 6px;
  border-radius: 10px;
  border-bottom: 1px solid var(--border);
  text-align: left;
}
.cal-event__badge {
  width: 46px;
  height: 46px;
  border-radius: 10px;
  border: 1px solid var(--accent-border);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.cal-event__badge--mine { border-color: var(--accent); }
.cal-event__day { font-size: 16px; font-weight: 700; line-height: 1.1; }
.cal-event__mon { font-size: 9px; font-weight: 600; color: var(--text-tertiary); }
.cal-event__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cal-event__title { font-size: 15px; font-weight: 600; display: inline-flex; align-items: center; gap: 6px; }
.cal-event__sub { font-size: 13px; color: var(--text-secondary); margin-top: 2px; }
.cal-event__band { display: flex; align-items: center; gap: 6px; margin-top: 3px; font-size: 12px; font-weight: 600; color: var(--text-tertiary); min-width: 0; }
.cal-event__band > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-event__band--mine { color: var(--accent); }
.cal-event--other .cal-event__title, .cal-event--other .cal-event__day { color: var(--text-tertiary); }
.cal-event--other .cal-tag { color: var(--text-tertiary); }
.cal-event__tags { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0; }
.cal-filter { align-self: center; margin: 0 auto 6px; }
.gig-detail__head { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.gig-detail__head .gig-detail__band { margin: 0 0 0 auto; }
.cal-tag { padding: 4px 8px; border-radius: 6px; border: 1px solid; font-size: 10px; font-weight: 700; flex-shrink: 0; }
.cal-tag--gig { background: var(--accent-muted); border-color: var(--accent); color: var(--accent); }
.cal-tag--practice { border-color: var(--accent-border); color: var(--text-secondary); }

/* Event detail */
.gig-detail__band { font-size: 13px; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 4px; }
.gig-detail__line { display: flex; align-items: center; gap: 10px; font-size: 15px; margin: 6px 0; }
.dialog-actions--wrap { flex-wrap: wrap; }
.dialog-actions--wrap > .btn { flex: 1 1 140px; }

/* Event form */
.dialog-card--form { max-width: 480px; }
.form--nested { gap: 10px; }
.form--nested[hidden] { display: none; }
.segmented--pills { margin-bottom: 0; flex-wrap: wrap; }
.datetime-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: 8px; }
.picker-field { text-align: left; cursor: pointer; }

/* ── Pickers ───────────────────────────────────────────────────────── */
.picker-popover,
#layers > .picker-popover {
  position: fixed;
  inset: auto; /* opt out of #layers' full-screen rule — left/top are set by JS */
  z-index: 300;
  border: 1px solid var(--accent-border);
  border-radius: 14px;
  padding: 10px;
  box-shadow: 0 12px 32px color-mix(in srgb, var(--overlay-backdrop) 45%, transparent);
}
.mini-month { width: 280px; display: flex; flex-direction: column; gap: 2px; }
.mini-month__nav { display: flex; align-items: center; justify-content: space-between; }
.mini-month__label { font-weight: 700; font-size: 14px; }
.mini-month__row { display: grid; grid-template-columns: repeat(7, 1fr); }
.mini-month__wd { text-align: center; font-size: 11px; color: var(--text-tertiary); padding: 2px 0; }
.mini-month__day { height: 34px; border-radius: 17px; font-size: 13px; }
.mini-month__day:hover:not(:disabled) { background: var(--surface-alt); }
.mini-month__day--dim { color: var(--text-tertiary); opacity: 0.5; }
.mini-month__day--today { outline: 1px solid var(--accent); outline-offset: -2px; }
.mini-month__day--selected { background: var(--accent); color: var(--on-accent); font-weight: 700; opacity: 1; }
.mini-month__day:disabled { opacity: 0.25; cursor: default; }
.time-popover { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
.time-picker { display: flex; gap: 6px; }
.time-col {
  width: 64px;
  height: 200px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
  scrollbar-width: none;
  border-radius: 10px;
  background: var(--surface);
  padding: 4px;
}
.time-col::-webkit-scrollbar { display: none; }
.time-col__item { padding: 7px 0; border-radius: 8px; font-size: 15px; font-variant-numeric: tabular-nums; }
.time-col__item:hover { background: var(--surface-alt); }
.time-col__item--active { background: var(--accent); color: var(--on-accent); font-weight: 700; }

/* ── Shared list / misc (M4) ───────────────────────────────────────── */
.text-warning { color: var(--warning); }
.page--wide { max-width: 1100px; }
.list-link { display: flex; align-items: center; gap: 12px; padding: 12px 8px; margin: 0 -8px; border-radius: 10px; border-bottom: 1px solid var(--border); }
.list-link__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.list-link__title { font-size: 15px; font-weight: 600; }
.list-link__sub { font-size: 13px; color: var(--text-secondary); margin-top: 2px; }
.dropdown-item { display: flex; align-items: center; gap: 4px; }
.dropdown-item__main { flex: 1; display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 8px; text-align: left; font-size: 15px; font-weight: 600; min-width: 0; }
.dropdown-item__main span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Gallery ───────────────────────────────────────────────────────── */
.gallery { position: relative; }
.gallery--drop { outline: 2px dashed var(--accent); outline-offset: -6px; border-radius: 12px; }
.gallery-toolbar { padding: 4px 0 10px; }
.gallery-dropdown { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 10px; background: var(--surface-alt); font-weight: 700; max-width: 100%; }
.gallery-dropdown span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 4px; }
@media (min-width: 900px) { .gallery-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); } }
.gallery-grid > .empty-text, .gallery-grid > .spinner { grid-column: 1 / -1; }
.gallery-tile { position: relative; aspect-ratio: 1; overflow: hidden; border-radius: 6px; background: var(--surface); }
.gallery-tile__img { width: 100%; height: 100%; object-fit: cover; }
.gallery-tile--selected { outline: 3px solid var(--accent); outline-offset: -3px; }
.gallery-tile__video { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
.gallery-tile__video .mdi { color: var(--white); }
.gallery-tile__processing { position: absolute; inset: 0; display: flex; flex-direction: column; gap: 6px; align-items: center; justify-content: center; font-size: 12px; color: var(--text-secondary); }
.gallery-tile__check { position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; border-radius: 12px; border: 2px solid var(--white); display: flex; align-items: center; justify-content: center; background: color-mix(in srgb, var(--overlay-backdrop) 30%, transparent); }
.gallery-tile__check .mdi { color: transparent; }
.gallery-tile__check--on { background: var(--accent); border-color: var(--accent); }
.gallery-tile__check--on .mdi { color: var(--on-accent); }
.gallery-selectbar { display: flex; justify-content: center; gap: 12px; padding: 8px; border-top: 1px solid var(--border); }
.gallery-selectbar[hidden] { display: none; }
.gallery-action { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 10px; font-weight: 600; }
.gallery-action:disabled { opacity: 0.4; }
.gallery-action--danger, .gallery-action--danger .mdi { color: var(--danger); }
.viewer__action--danger .mdi, .viewer__action--danger { color: var(--danger); }
.gallery-trash { display: flex; flex-direction: column; }
.trash-row { display: flex; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px solid var(--border); }
.trash-row__name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.trash-row__days { font-size: 12px; color: var(--text-tertiary); }

/* Progress dialog */
.progress { min-width: 260px; }
.progress__bar { width: 100%; height: 6px; border-radius: 3px; background: var(--surface-alt); overflow: hidden; }
.progress__fill { height: 100%; width: 0; background: var(--accent); transition: width 200ms; }
.progress__pct { font-size: 13px; color: var(--text-secondary); min-height: 16px; }

/* ── Recordings + trim ─────────────────────────────────────────────── */
.rec-row { display: flex; align-items: center; gap: 6px; padding: 6px 4px; border-bottom: 1px solid var(--border); border-radius: 8px; }
.rec-row__main { flex: 1; min-width: 0; display: flex; flex-direction: column; text-align: left; padding: 6px 4px; }
.rec-row__title { font-size: 15px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rec-row__sub { font-size: 13px; color: var(--text-secondary); }
.rec-trim__title { text-align: center; }
.rec-trim__title-input { text-align: center; font-size: 18px; font-weight: 700; margin-bottom: 16px; }
.wave { padding-top: 34px; user-select: none; }
.wave__track { position: relative; height: 110px; background: var(--surface-alt); border-radius: 10px; }
.wave__canvas { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 10px; color: var(--text-tertiary); opacity: 0.7; }
.wave__playhead { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--text); pointer-events: none; }
.rec-trim__preview-row { display: flex; justify-content: center; margin-top: 16px; }
.rec-trim__preview { display: flex; align-items: center; gap: 6px; padding: 8px 18px; border-radius: 18px; border: 1px solid var(--accent-border); color: var(--accent); font-weight: 600; font-size: 15px; }
.rec-trim__preview .mdi { color: var(--accent); }
.wave__selection { position: absolute; top: 0; bottom: 0; background: var(--accent-muted); opacity: 0.4; pointer-events: none; }
.wave__pin { position: absolute; top: -34px; bottom: 0; width: 24px; margin-left: -12px; display: flex; flex-direction: column; align-items: center; cursor: ew-resize; touch-action: none; z-index: 1; outline: none; }
.wave__pin--front { z-index: 2; }
.wave__pin:focus-visible .wave__bubble { outline: 2px solid var(--text); }
.wave__bubble { background: var(--accent); color: var(--on-accent); font-size: 12px; font-weight: 700; padding: 3px 7px; border-radius: 10px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.wave__line { flex: 1; width: 3px; background: var(--accent); border-radius: 2px; margin-top: 4px; opacity: 0.85; }
.wave__axis { display: flex; align-items: center; justify-content: space-between; margin-top: 6px; height: 14px; }
.wave__axis-label { font-size: 11px; color: var(--text-tertiary); }
.wave__tick { width: 2px; height: 8px; background: var(--text-tertiary); opacity: 0.6; }

/* ── Set lists / song library / duration + link pickers ────────────── */
.setlist-editor { display: flex; flex-direction: column; gap: 10px; }
.setlist-editor__name { font-size: 18px; font-weight: 700; }
.setlist-meta { display: grid; grid-template-columns: 1.3fr 1fr 0.8fr; gap: 8px; }
@media (max-width: 560px) { .setlist-meta { grid-template-columns: 1fr 1fr; } }
.meta-field { display: flex; align-items: center; gap: 4px; }
.meta-field .picker-field { flex: 1; min-width: 0; }
.picker-field--empty { color: var(--text-tertiary); }
.setlist-lines { display: flex; flex-direction: column; }
.setlist-line { display: flex; align-items: center; gap: 6px; padding: 4px 0; border-bottom: 1px solid var(--border); background: var(--background); }
.setlist-line--dragging { opacity: 0.5; }
.setlist-line__handle { cursor: grab; display: flex; padding: 6px 2px; }
.setlist-line__num { width: 20px; text-align: right; font-weight: 700; color: var(--text-secondary); flex-shrink: 0; }
.setlist-line__input { flex: 1; min-width: 0; background: transparent; border: 0; outline: none; padding: 8px 4px; font-size: 15px; border-radius: 6px; }
.setlist-line__input:focus { background: var(--surface-alt); }
.setlist-line__input--note { font-style: italic; color: var(--text-secondary); }
.setlist-line__length { min-width: 56px; padding: 6px 8px; border-radius: 8px; background: var(--surface-alt); font-variant-numeric: tabular-nums; font-size: 14px; }
.setlist-add { display: flex; gap: 8px; }
.setlist-total { text-align: center; font-size: 13px; font-weight: 600; color: var(--text-secondary); margin-top: 6px; }
.setlist-total__ok, .setlist-total__ok .mdi { color: var(--success); font-weight: 700; }
.setlist-total__warn, .setlist-total__warn .mdi { color: var(--warning); font-weight: 700; }
.time-picker--centered { justify-content: center; gap: 16px; }
.duration-col { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.link-picker { display: flex; flex-direction: column; }
.link-row { display: flex; align-items: center; gap: 10px; padding: 10px 6px; border-radius: 8px; text-align: left; width: 100%; }
.link-row__title { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.link-row__sub { font-size: 12px; color: var(--text-tertiary); }
.song-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.song-card { display: flex; align-items: center; gap: 10px; padding: 14px; border-radius: 12px; background: var(--surface); border: 1px solid var(--accent-border); text-align: left; }
.song-card__title { flex: 1; min-width: 0; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.song-card__len { font-size: 13px; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.song-view__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.song-view__len { font-size: 14px; color: var(--text-secondary); }
.song-view__link { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px; border-radius: 8px; margin-top: 8px; font-weight: 600; text-align: left; }
.song-view__text { white-space: pre-wrap; font-size: 15px; line-height: 1.6; }
.song-edit__link { display: flex; align-items: center; gap: 6px; overflow: hidden; }
.song-edit__link span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Printing (set lists, songs) — mobile's print layouts ──────────── */
.print-host { display: none; }
@media print {
  @page { size: A4; margin: 16mm; }
  html, body { background: var(--print-bg) !important; height: auto; overflow: visible; }
  body > *:not(.print-host) { display: none !important; }
  /* Crystal everywhere on printouts (2026-10-02). Set list sizes are set
     inline by print-fit.js — one page, longest line fits. */
  .print-host { display: block; color: var(--print-text); font-family: 'Crystal', -apple-system, Roboto, Arial, sans-serif; }
  .print-setlist { text-align: center; margin: 0 auto; }
  .print-setlist__header { position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
  .print-setlist__logo { position: absolute; left: 0; top: 0; border-radius: 12px; object-fit: cover; }
  .print-setlist h1 { font-family: inherit; font-weight: normal; line-height: 1.15; margin: 0; }
  .print-setlist__meta { font-size: 15px; color: var(--print-meta); margin: 12px 0 18px; line-height: 1.35; }
  .print-line { font-weight: normal; }
  .print-line--note { font-style: italic; color: var(--print-note); }
  .print-song h1 { font-size: 26px; margin: 0 0 4px; }
  .print-song__len { font-size: 14px; color: var(--print-meta); margin-bottom: 24px; }
  .print-song h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 1px; color: var(--print-subhead); margin: 20px 0 8px; }
  .print-song__text { font-size: 15px; line-height: 1.6; white-space: pre-wrap; }
}
.setlist-line__length--empty { color: var(--text-tertiary); }
