/* ===== Theme vars ===== */
:root {
  --spine-color: #222;
  --bg: #fff;
  --text: #222;
  --muted: #666;
  --error-bg: #fdecea;
  --error-text: #c0392b;

  --spine-width: 4px;
  --dot-size: 14px;

  --col-gap: 24px;
  --top-dot-offset: 20px;
}

* { box-sizing: border-box; }

body {
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  margin: 0;
  /* Global side padding to guarantee breathing room on all devices */
  padding-left: 14px;
  padding-right: 14px;
  background: var(--bg);
  color: var(--text);
}

/* ===== Route grid layout ===== */
.route {
  display: grid;
  grid-template-columns: 1fr auto 1fr;  /* left | spine | right */
  column-gap: var(--col-gap);
  align-items: stretch;
  min-height: 60vh;
  max-width: 960px;
  padding: 1.5rem 0.75rem;  /* modest internal padding */
  margin: 0 auto;
  position: relative;
}

.col.left   { grid-column: 1; }
.spine-cell { grid-column: 2; position: relative; }
.col.right  { grid-column: 3; }

/* Place the content: right column for INBOUND, left column for OUTBOUND */
.content { max-width: 520px; }
.route.inbound  .content { grid-column: 3; text-align: left; }
.route.outbound .content { grid-column: 1; text-align: left; }

/* ===== Spine & dots ===== */
.spine {
  position: absolute;
  left: 50%;
  top: calc(var(--top-dot-offset) + var(--dot-size) / 2);
  bottom: calc(var(--dot-size) / 2);
  transform: translateX(-50%);
  width: var(--spine-width);
  background: var(--spine-color);
  border-radius: 999px;
}

.stop-dot {
  position: absolute;
  left: 50%;
  width: var(--dot-size);
  height: var(--dot-size);
  background: #fff;
  border: 3px solid var(--spine-color);
  border-radius: 50%;
  transform: translateX(-50%);
}
.stop-dot.top    { top: var(--top-dot-offset); }
.stop-dot.bottom { bottom: 0; }

/* ===== Typography ===== */
.stop-name {
  font-size: 1rem;
  font-weight: 600;
  margin-bottom: 0.4rem;
  color: #333;
}

.lead { margin: .2rem 0 .15rem; }
.lead .time {
  font-size: 1.3rem;
  font-weight: 750;
}
.lead .eta {
  font-size: 1rem;      /* your preferred larger minutes */
  font-weight: 450;
  color: var(--muted);
  margin-left: 0.45rem;
}

.others {
  margin-top: .2rem;
  margin-left: 0;
  color: var(--text);
}
.others .t {
  display: inline-block;
  margin-right: 0.5rem;
  font-size: 0.95rem;
}

/* Messages */
.muted { color: var(--muted); }
.error {
  color: var(--error-text);
  background: var(--error-bg);
  padding: .65rem .9rem;
  border-radius: .5rem;
  max-width: 520px;
}

/* ===== Small screens ===== */
@media (max-width: 560px) {
  :root { --col-gap: 24px; }
  .route { padding: 1.25rem 0.5rem; }

  .stop-name   { font-size: 0.9rem; }
  .lead .time  { font-size: 1.1rem; }
  .lead .eta   { font-size: 0.9rem; }
  .others .t   { margin-right: 0.4rem; font-size: 0.85rem; }
}
