.timeline{
  position:relative;
  min-width:100%;
  margin-top:36px;
  background:linear-gradient(180deg,var(--timeline-grad-a),var(--timeline-grad-b) 30%);
  border:1px solid var(--line); border-radius:16px;
}
.ticks{ position:absolute; inset:0; }
.tick{ position:absolute; left:0; right:0; }
.tick .tick-label{
  position:sticky; left:10px; z-index:10; display:inline-block;
  transform:translateY(-55%);
  background:var(--tick-label-bg); backdrop-filter:blur(4px); padding:1px 4px; border-radius:4px;
  font-size:10px; color:var(--text-faint); letter-spacing:.04em; font-variant-numeric:tabular-nums;
}
.tick .tick-line{ position:absolute; top:0; height:1px; left:calc(var(--gutter) - 12px); width:12px; background:var(--line-tick); }
.tick.hour .tick-label{ font-size:12px; font-weight:600; color:var(--text-hour); }
.tick.hour .tick-line{ left:var(--gutter); right:2px; width:auto; background:var(--line); }
.tick.next-day .tick-label{ color:var(--accent-light); opacity:.7; }
.timeline.z-small .tick:not(.hour) .tick-label{ display:none; }

.trips-layer{ position:absolute; top:0; bottom:0; left:var(--gutter); right:2px; z-index:2; }

#nowLine{
  position:absolute; left:0; right:0; height:2px; z-index:4; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--accent) 12%, var(--accent));
  box-shadow:0 0 12px var(--now-glow);
}
#nowLine .now-dot{ position:absolute; left:calc(var(--gutter) - 5px); top:-4px; width:10px; height:10px; border-radius:50%; background:var(--accent); animation:pulse-now 2s infinite; }
@keyframes pulse-now{ 0%,100%{ box-shadow:0 0 0 0 var(--accent-line);} 50%{ box-shadow:0 0 0 7px var(--now-glow-fade);} }
#nowLine .now-time{
  position:sticky; left:6px; z-index:15; display:inline-block; margin-top:-9px;
  font-size:10px; font-weight:700; background:var(--accent); color:var(--on-accent-strong); padding:2px 6px; border-radius:6px;
}

.empty{
  margin-top:18px; padding:26px 18px; text-align:center;
  border:1px dashed var(--line-dashed); border-radius:14px; color:var(--text-muted); font-size:13.5px;
}
.empty b{ color:var(--accent-light); }