/* ============================================================================
   Printable schedule (/schedule/editor/print) — one festival day per page,
   laid out like the schedule editor's grid (vertical time axis, venues as
   columns, .genre-* colored bars from site-2026.css) but static and sized to
   fit a landscape printed page.

   Each day's track is a fixed height (trackHeight below) no matter how many
   hours that day spans — blocks and hour ticks position by percentage
   (Top%/Height%, same values the editor uses), so a short day and a long day
   both still fill exactly one page instead of scrolling.
   ========================================================================== */

@page {
  size: letter landscape;
  margin: 0.3in;
}

body { margin: 0; }

.print-toolbar {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 10px 14px;
  border-bottom: var(--rule);
  font-size: 13px;
}
.print-toolbar button {
  font-family: "Space Mono", monospace;
  font-weight: 700;
  font-size: 12px;
  border: 2px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  padding: 6px 14px;
  cursor: pointer;
}
.print-toolbar button:hover { background: var(--ink); color: var(--paper); }
.print-toolbar a { font-size: 12px; text-decoration: none; }
.print-toolbar a:hover { background: var(--ink); color: var(--paper); }

.print-day {
  padding: 0.15in 0.15in 0;
  page-break-after: always;
  break-after: page;
}
.print-day:last-child { page-break-after: auto; break-after: auto; }
@media screen {
  .print-day { border-bottom: 10px solid #eee; padding-bottom: 24px; margin-bottom: 24px; }
}

.print-day-head {
  display: flex;
  align-items: baseline;
  gap: 14px;
  border-bottom: var(--rule);
  padding-bottom: 4px;
  margin-bottom: 8px;
}
.print-day-head h1 { font-size: 26px; margin: 0; }
.print-day-date {
  font-size: 13px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.print-day-brand {
  margin-left: auto;
  font-family: "Archivo Black", sans-serif;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.print-grid-columns { display: flex; align-items: flex-start; }

/* Fixed physical height shared by the gutter and every track — the constant
   both scale against so hour ticks and bars line up across columns. */
.print-time-gutter,
.print-grid-track {
  height: 6.8in;
}

.print-time-gutter {
  position: relative;
  flex: 0 0 0.46in;
  margin-top: 0.32in; /* clears the venue header row beside the track */
}
.print-time-gutter .print-tick {
  position: absolute;
  right: 6px;
  transform: translateY(-50%);
  font-size: 8px;
  color: var(--muted);
  white-space: nowrap;
}
.print-time-gutter .print-tick:first-child { transform: none; }
.print-time-gutter .print-tick:last-child { transform: translateY(-100%); }

.print-grid-col {
  flex: 1 1 0;
  min-width: 0;
  border-left: 1px solid #ccc;
}
.print-grid-venue {
  height: 0.32in;
  border-bottom: 2px solid var(--ink);
  padding: 2px 4px;
  display: flex;
  flex-direction: column;
  gap: 1px;
  overflow: hidden;
}
.print-venue-name {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.print-staff-badge {
  font-size: 7px;
  font-weight: 700;
  text-transform: uppercase;
  padding: 0 3px;
  width: fit-content;
}

.print-grid-track { position: relative; }

.print-bar {
  position: absolute;
  left: 1px;
  right: 1px;
  overflow: hidden;
  border: 0.75px solid var(--ink);
  padding: 1px 3px;
  font-size: 7px;
  line-height: 1.15;
}
.print-bar-time {
  display: block;
  font-size: 6.5px;
  color: var(--muted);
  white-space: nowrap;
}
.print-bar-artist {
  display: block;
  font-size: 7.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.print-bar-cat {
  display: block;
  font-size: 6.5px;
  font-weight: 700;
  text-transform: uppercase;
}
.print-bar-note {
  display: block;
  font-size: 6px;
  font-style: italic;
  color: var(--muted);
}

@media print {
  .print-toolbar { display: none; }
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
}

/* venue line: name plus the Free tag for free venues */
.print-venue-line { display: flex; align-items: baseline; gap: 4px; min-width: 0; }
.print-free-tag {
  flex: none;
  font-size: 7px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 1px 4px;
  background: var(--ink);
  color: var(--paper);
}

/* The public printout carries no crew notes or categories, so it uses the
   larger type the old site's attendee printout had. */
.print-public .print-day-head h1 { font-size: 32px; }
.print-public .print-day-date,
.print-public .print-day-brand { font-size: 15px; }
.print-public .print-time-gutter,
.print-public .print-grid-track { height: 7in; }
.print-public .print-time-gutter { flex-basis: 0.52in; margin-top: 0.36in; }
.print-public .print-time-gutter .print-tick { font-size: 10px; }
.print-public .print-grid-venue { height: 0.36in; line-height: 1.1; }
.print-public .print-venue-name { font-size: 13px; }
.print-public .print-staff-badge { font-size: 8.5px; }
.print-public .print-bar { font-size: 9px; }
.print-public .print-bar-time { font-size: 8px; }
.print-public .print-bar-artist { font-size: 10px; }
