/* Frontend timeline styles */
.festival-timeline{font-family:"IBM Plex Sans", Arial, Helvetica, sans-serif;margin:20px 0; --label-width:200px; font-size:16px;}
/* Header: make a two-column header so hours align with stage rows */
.festival-timeline .label-spacer{width:var(--label-width);flex:0 0 var(--label-width)}

.festival-timeline .timeline-header{display:flex;align-items:center;padding-left:10px}
.festival-timeline .timeline-header .label-spacer{width:var(--label-width);flex:0 0 var(--label-width)}
.festival-timeline .timeline-hours{display:flex;position:relative;border-bottom:1px solid rgba(255,255,255,0.06);padding-bottom:6px;flex:1}
/* Make hour lines a bit bolder for clarity; header transparent and white text */
.festival-timeline .timeline-hours .hour{flex:0 0 calc(100% / var(--hours-count));text-align:center;border-left:1px solid rgba(255,255,255,0.10);padding:8px 6px;font-size:15px;background:transparent;color:#fff;font-weight:700;min-height:40px;box-sizing:border-box}
.festival-timeline .timeline-body{position:relative;background-color:#cd267fb5;padding:10px 0 10px 10px}
/* Reduce spacing and tighten rows: remove outer padding as requested */
.festival-timeline .timeline-stage{display:flex;align-items:center;padding:0;border-bottom:1px solid rgba(255,255,255,0.06)}
.festival-timeline .timeline-stage .stage-label{width:var(--label-width);font-weight:600;padding-right:12px;font-size:15px;line-height:1.1;color:#fff}
/* Stage rows: semi-transparent white background with 15-minute grid using white lines */
.festival-timeline .timeline-footer{padding-left:10px;display:flex;align-items:center;}
.festival-timeline .timeline-stage .stage-rows{position:relative;flex:1;height:64px;background-color:rgba(255,255,255,0.02);box-sizing:border-box;
    background-image: linear-gradient(to right, rgba(255,255,255,0.06) 1px, transparent 1px), linear-gradient(to right, rgba(255,255,255,0.14) 1px, transparent 1px);
    background-size: calc(100% / var(--hours-count) / 4) 100%, calc(100% / var(--hours-count)) 100%;
    background-repeat: repeat-x;
}
/* Timeslot visuals */
.festival-timeline .timeslot-box{position:absolute;top:4px;height:56px;border-radius:6px;overflow:hidden;box-shadow:0 1px 0 rgba(0,0,0,0.06);border:1px solid rgba(0,0,0,0.08);display:flex;}
.festival-timeline .timeslot-box .timeslot-inner{padding:6px 10px;display:flex;align-items:center;gap:12px;font-size:15px}
.festival-timeline .timeslot-box img{height:48px;width:48px;object-fit:cover;border-radius:4px;flex:0 0 48px}
.festival-timeline .timeslot-info{display:flex;flex-direction:column;justify-content:center}
.festival-timeline .artist-name{font-size:16px;line-height:1;font-weight:700}
.festival-timeline .timeslot-time{font-size:13px;opacity:0.95;margin-top:6px;line-height:1}
/* Screen-reader only helper */
.festival-timeline .sr-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}

/* Responsive: stack timeslots below the stage label on small screens for accessibility */
@media (max-width:800px){
  /* Make the whole timeline horizontally scrollable on mobile so users can pan to see hours and full card details */
  .festival-timeline{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}
  .festival-timeline .timeline-header{margin-bottom:8px}
  .festival-timeline .timeline-hours .hour{font-size:13px}
  .festival-timeline .timeline-header .label-spacer{flex:0 0 120px;width:120px}
  .festival-timeline .stage-label{width:120px;font-size:15px}
  .festival-timeline .timeline-stage{flex-direction:column;align-items:stretch}
  .festival-timeline .timeline-stage .stage-label{width:auto;padding-bottom:6px}
  /* Ensure the hours strip and stage rows get a wide minimum width tied to the hours count so horizontal scroll appears */
  .festival-timeline .timeline-hours,
  .festival-timeline .stage-rows{
    min-width: calc(var(--hours-count) * 120px);
    box-sizing:border-box;
  }
  /* Allow the stage rows to flow and the timeslot cards become stacked list items for readability */
  .festival-timeline .timeline-stage .stage-rows{position:relative;flex:unset;height:auto;background:none}
  .festival-timeline .timeslot-box{position:relative;display:flex;width:auto;margin:6px 0;padding:8px}
  .festival-timeline .timeslot-box img{height:48px;width:48px}
  /* Ensure the info text can wrap and not overflow the card */
  .festival-timeline .timeslot-info{min-width:0}
}


/* Print-friendly: simple list per stage */
@media print{
  .festival-timeline .timeline-header, .festival-timeline .timeline-hours{display:none}
  .festival-timeline .timeline-stage{display:block;border:0;padding:4px 0}
  .festival-timeline .stage-label{font-weight:700}
  .festival-timeline .stage-rows{display:block}
  .festival-timeline .timeslot-box{position:relative;display:block;border:1px solid #ddd;margin:4px 0;padding:6px;background:transparent;color:#000;height:auto}
  .festival-timeline .timeslot-box img{display:none}
}
