.transport-page { background: linear-gradient(160deg, #f2efe8, #e9e6db); min-height: 100vh; }
.transport-shell { max-width: 1120px; margin: 0 auto; padding: 32px 28px 24px; }
.transport-header { display: flex; align-items: center; gap: 16px; margin-bottom: 28px; }
.transport-back { display: grid; place-items: center; width: 48px; height: 48px; flex: none; border: 1px solid var(--line); border-radius: 14px; background: #ffffff8c; color: var(--ink); text-decoration: none; font-size: 26px; }
.transport-header h1 { font-size: 34px; letter-spacing: -.04em; margin: 0; line-height: 1; }
.transport-header p { margin: 6px 0 0; color: var(--muted); font-size: 15px; }
.city-badge { margin-left: auto; font-size: 13px; color: var(--muted); }
.snapshot-notice { margin: 0 0 18px; font-size: 14px; line-height: 1.4; color: #55594e; }
.snapshot-notice.expired { padding: 12px 16px; background: #fff2ce; color: #6c4c16; border-radius: 12px; }
.transport-layout { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 20px; align-items: start; }
.journey-panel, .arrival-panel { min-width: 0; background: #ffffff9e; border: 1px solid var(--line); border-radius: 24px; padding: 26px; }
.journey-panel h2, .arrival-top h2 { margin: 0; font-size: 18px; font-weight: 600; }
.transport-types { display: flex; padding: 4px; gap: 4px; border-radius: 13px; background: #e6e4db; margin: 20px 0; }
.transport-types button { min-width: 0; flex: 1; border: none; border-radius: 10px; background: transparent; min-height: 44px; cursor: pointer; color: #4c4c46; font-weight: 600; }
.transport-types button[aria-pressed="true"] { background: #243b31; color: #fff; box-shadow: 0 2px 5px #0001; }
.selection-fields { display: grid; gap: 18px; }
.selection-fields label { min-width: 0; color: #68675e; font-size: 13px; font-weight: 600; }
.selection-fields select { display: block; width: 100%; min-width: 0; max-width: 100%; margin-top: 7px; height: 50px; border-radius: 12px; border: 1px solid #d5d5c9; background: #fff9; padding: 0 32px 0 12px; font: inherit; font-size: 16px; color: #20291f; text-overflow: ellipsis; }
.selection-fields select:disabled { opacity: .6; cursor: not-allowed; }
.transport-page :focus-visible { outline: 3px solid #62765a; outline-offset: 3px; }
.selection-status { color: #6e6a62; font-size: 14px; line-height: 1.4; margin: 14px 0 0; }
.selection-status:empty { display: none; }
.retry-button { background: #243b31; color: white; border: 0; padding: 12px 18px; margin-top: 12px; border-radius: 10px; min-height: 44px; cursor: pointer; }
.arrival-panel { background: #e1e8d8; border-color: #d2dbc7; scroll-margin-top: 12px; }
.arrival-top { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; justify-content: space-between; }
.schedule-badge { font-size: 12px; border: 1px solid #a1b297; border-radius: 99px; padding: 5px 9px; color: #39513b; white-space: nowrap; }
.arrival-body { padding-top: 28px; }
.route-summary { font-size: 14px; line-height: 1.4; color: #4b624d; margin: 0 0 6px; overflow-wrap: anywhere; }
.stop-name { font-size: 24px; font-weight: 700; letter-spacing: -.02em; margin: 0; line-height: 1.1; overflow-wrap: anywhere; }
.stop-name:empty { display: none; }
.arrival-time { display: block; font-size: clamp(76px, 8vw, 104px); line-height: 1.2; font-weight: 700; letter-spacing: -.06em; font-variant-numeric: tabular-nums; margin-top: 16px; }
.arrival-wait { font-size: 26px; font-weight: 600; margin: 0; line-height: 1.2; }
.arrival-day { margin: 8px 0 0; min-height: 20px; color: #4b624d; font-size: 15px; }
.arrival-caveat { color: #58664f; font-size: 13px; margin: 24px 0 0; line-height: 1.4; }
.following { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 22px; padding-top: 20px; border-top: 1px solid #bdc9b3; }
.following div { min-width: 0; }
.following time { display: block; font-size: 24px; font-weight: 600; font-variant-numeric: tabular-nums; }
.following span { display: block; font-size: 12px; margin-top: 5px; color: #58664f; }
.daily { border-top: 1px solid #bdc9b3; margin-top: 22px; padding-top: 5px; }
.daily summary { min-height: 44px; padding: 12px 0; cursor: pointer; font-weight: 600; font-size: 15px; }
.daily-times { display: flex; flex-wrap: wrap; gap: 7px; padding: 8px 0; }
.daily-times time { font-size: 15px; background: #ffffff75; border-radius: 7px; padding: 7px 8px; font-variant-numeric: tabular-nums; }
.daily-times time.next { color: white; background: #243b31; }
.daily-times p { font-size: 14px; margin: 4px 0; color: #58664f; }
.transport-footer { color: var(--muted); font-size: 13px; margin-top: 24px; line-height: 1.5; }
.transport-footer p { margin: 5px 0; }
.transport-footer a { color: #39513b; text-underline-offset: 3px; }
.transport-page [hidden] { display: none !important; }
@media (max-width: 699px) {
  .transport-shell { padding: max(18px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); }
  .transport-header { gap: 12px; margin-bottom: 20px; }
  .transport-header h1 { font-size: 30px; }
  .transport-header p { font-size: 14px; }
  .city-badge { display: none; }
  .snapshot-notice { font-size: 13px; margin-bottom: 12px; }
  .transport-layout { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .journey-panel, .arrival-panel { padding: 18px; border-radius: 20px; }
  .journey-panel h2 { font-size: 16px; }
  .transport-types { margin: 12px 0 16px; }
  .selection-fields { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .selection-fields label { font-size: 12px; }
  .selection-fields select { height: 46px; margin-top: 5px; }
  .selection-fields .date-field { margin-top: 2px; }
  .arrival-top h2 { font-size: 17px; }
  .arrival-body { padding-top: 20px; }
  .arrival-time { font-size: clamp(76px, 23vw, 100px); margin-top: 12px; }
  .arrival-wait { font-size: 26px; }
  .stop-name { font-size: 22px; }
  .arrival-caveat { margin-top: 18px; }
}
@media (prefers-reduced-motion: no-preference) { .arrival-panel { transition: background .15s ease; } }
