.journey{padding-top:1.75rem;min-height:70vh}.journey-topline{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.85rem}.journey-topline>a{font-weight:700;text-decoration:none}.text-button{background:transparent;border:0;padding:.5rem 0;color:var(--muted);font-size:.85rem}.text-button:hover{color:var(--accent)}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}.journey-intro{margin:2.5rem 0 1.75rem}.eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.05em;color:var(--accent);margin:0 0 .6rem}.journey-intro h1{font-size:clamp(1.8rem,3.2vw,2.6rem);line-height:1.3;letter-spacing:-.045em;margin:0 0 .75rem}.journey-intro .subtext{margin:0}.journey-form{display:grid;grid-template-columns:minmax(0,1fr) 2.5rem minmax(0,1fr) auto;align-items:end;gap:1rem}.journey-form>label>span{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.5rem}.journey-field{display:flex;align-items:center;min-width:0;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .65rem;gap:.6rem;background:var(--bg)}.journey-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}.journey-field img{object-fit:contain;flex-shrink:0}.journey-field input{width:100%;min-width:0;border:0;padding:.4rem 0;outline:none;font-weight:600}.journey-field input:focus-visible{outline:none}.journey-field button{border:0;background:var(--surface);padding:.35rem .5rem;font-size:.75rem;white-space:nowrap}.journey-form .swap{align-self:end;height:3.6rem;padding:0;border:0;background:transparent;font-size:1.3rem;color:var(--muted)}.journey-submit{height:3.6rem;padding:0 1.35rem;justify-content:center;gap:1rem;white-space:nowrap}.journey-hint{font-size:.75rem;color:var(--muted);margin:.75rem 0 2.5rem}.journey-hint a{color:var(--muted);text-underline-offset:3px}.picker-heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 1.25rem}.picker-heading h2{margin:0;font-size:1.35rem;letter-spacing:-.025em}.place-search{display:block;max-width:27rem;margin-bottom:1rem}.place-search input{width:100%;font-size:.85rem;padding:.75rem .85rem}.place-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin:1rem 0}.place-tabs button{font-size:.8rem;padding:.45rem .7rem;background:transparent}.place-tabs button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-fg)}.place-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.65rem;margin:1rem 0 2rem}.place-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;min-height:132px;padding:1rem .5rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:var(--fg);background:var(--bg)}.place-card:hover,.place-card:focus-visible{border-color:var(--accent);background:var(--surface)}.place-card img{width:72px;height:48px;object-fit:contain}.place-card strong{font-size:.9rem;font-weight:600}.place-card small{color:var(--muted);font-size:.7rem;text-align:center}.place-card .place-arrow{color:var(--accent);font-size:.75rem}.journey #schedule{margin-top:2.5rem}.journey .title-row h2{font-size:1.6rem;letter-spacing:-.035em}.terminal-choices{display:flex;gap:1rem;flex-wrap:wrap;margin:.75rem 0}.terminal-choices label{font-size:.75rem;color:var(--muted)}.terminal-choices select{display:block;margin-top:.35rem;max-width:100%}.schedule-actions{display:flex;justify-content:space-between;align-items:center;margin:1.25rem 0}.schedule-actions label{display:flex;gap:.75rem;align-items:center;font-size:.8rem;color:var(--muted)}.schedule-actions input{padding:.5rem;font-size:.8rem}.next-bus{display:flex;align-items:center;gap:2rem;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));background:color-mix(in srgb,var(--accent) 5%,var(--bg));padding:1.1rem 1.25rem;border-radius:var(--radius);margin:1rem 0 1.5rem}.next-bus>div:first-child>span{display:block;color:var(--accent);font-size:.75rem}.next-bus strong{display:block;font-size:2rem;letter-spacing:-.04em;color:var(--accent);font-variant-numeric:tabular-nums}.next-bus p{font-size:.8rem;color:var(--muted);margin:.25rem 0 0}#next-countdown{font-size:.9rem;font-weight:600}.past-toggle{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--muted);margin-left:auto}.past-toggle input{accent-color:var(--accent)}.schedule-meta{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:var(--muted);gap:1rem}.schedule-meta p{margin:.5rem 0}.journey td:first-child{font-size:1rem}.trip-past{opacity:.5}.trip-next{background:color-mix(in srgb,var(--accent) 5%,var(--bg))}.trip-next td:first-child{color:var(--accent)}.departure-tag{display:block;font-size:.65rem;font-weight:400;color:var(--accent);margin-top:.15rem}.map-links{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0}.map-app{gap:.4rem;font-size:.75rem!important;min-height:40px}.map-app img{object-fit:contain}.terminal-card-heading{display:flex;align-items:center;gap:.75rem}.terminal-card-heading>img{width:44px;height:36px;object-fit:contain}.terminal-card-heading h4{margin:.25rem 0}.terminal-card-heading p{margin:.25rem 0}.journey-bottom{display:flex;flex-wrap:wrap;gap:1.25rem;font-size:.8rem;border-top:1px solid var(--border);margin-top:3rem;padding:1.25rem 0}.journey [hidden]{display:none!important}.journey #data-note{font-size:.75rem;line-height:1.7}.journey #empty p{margin:.5rem 0}.journey #empty button{margin:.4rem .4rem .4rem 0;font-size:.8rem}#saved-content a{display:block;padding:.75rem 0;text-decoration:none;border-top:1px solid var(--border)}
.terminal-options-panel{width:100%;border:0;padding:.25rem 0}.terminal-options-panel summary{font-size:.75rem;color:var(--muted);cursor:pointer}.terminal-options-fields{display:flex;gap:1rem;padding-top:.75rem}.journey-has-route .journey-intro{margin:1.75rem 0 1.25rem}.journey-has-route .journey-hint{margin-bottom:1.5rem}.journey-has-route #schedule{margin-top:1.5rem}
@media(min-width:1400px){.journey{max-width:1600px}.place-grid{grid-template-columns:repeat(8,minmax(0,1fr))}}
@media(max-width:750px){.journey{padding-top:1rem}.journey-intro{margin:1.75rem 0 1.5rem}.journey-form{grid-template-columns:minmax(0,1fr) 2rem;gap:.75rem}.journey-form>label{grid-column:1}.journey-form>label:nth-of-type(2){grid-row:2}.journey-form .swap{grid-column:2;grid-row:1/3;align-self:center;transform:rotate(90deg)}.journey-submit{grid-column:1/3;height:3rem}.journey-field{min-height:56px}.journey-field input{font-size:.95rem}.journey-hint{line-height:1.8;margin-bottom:2rem}.place-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.place-card{min-height:120px}.place-card img{width:62px;height:42px}.place-card strong{font-size:.85rem}.place-tabs{gap:.35rem}.place-tabs button{padding:.4rem .55rem;font-size:.75rem}.journey .toolbar{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.75rem}.past-toggle{margin-left:0}.schedule-meta{align-items:flex-start;flex-direction:column;gap:0;margin-bottom:.5rem}.schedule-meta p{margin:.25rem 0}.journey .title-row h2{font-size:1.4rem}.journey .table-wrap td,.journey .table-wrap th{padding:.75rem .55rem}.journey td:first-child{font-size:.95rem}.journey .terminal-grid{grid-template-columns:1fr}.next-bus{gap:1.5rem}.next-bus strong{font-size:1.8rem}.terminal-choices{flex-direction:column}.terminal-choices select{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* 진주 로고의 넓은 투명 여백을 고려해 실제 심볼을 더 크게 표시한다. */
.journey-field img[src*="gyeongsangnam-do-jinju-si.png"] {
  width: 56px;
  height: 44px;
  object-fit: cover;
  transform: scale(1.45);
  clip-path: inset(6% 12%);
}
.place-card img[src*="gyeongsangnam-do-jinju-si.png"] {
  width: 96px;
  height: 72px;
  max-width: 100%;
  object-fit: cover;
}
.terminal-card-heading > img[src*="gyeongsangnam-do-jinju-si.png"] {
  width: 64px;
  height: 48px;
  flex-shrink: 0;
  object-fit: cover;
  transform: scale(1.3);
  clip-path: inset(6% 12%);
}
.day-schedule { margin-top: 2rem; scroll-margin-top: 5rem; }
.day-schedule > summary { cursor: pointer; padding: .85rem 0; }
.day-schedule > summary strong { font-size: 1.05rem; }
.schedule-overview{display:grid;grid-template-columns:repeat(3,1fr);margin:1.1rem 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.schedule-overview>div{padding:.8rem 1rem}.schedule-overview>div+div{border-left:1px solid var(--border)}.schedule-overview span{display:block;color:var(--muted);font-size:.72rem}.schedule-overview strong{display:block;margin-top:.15rem;font-size:1.15rem;font-variant-numeric:tabular-nums}
.day-schedule > .subtext { margin-top: 0; font-size: .8rem; }
.day-schedule .trip-past { opacity: .7; }
.route-info-section { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--border); scroll-margin-top: 5rem; }
.route-info-section .subtext { font-size: .85rem; line-height: 1.8; }
.route-info-section .section-heading { flex-wrap: wrap; gap: .5rem; }
.route-info-section .section-heading span { font-size: .8rem; color: var(--muted); }
.timetable-feedback { margin-top: 1.5rem; padding: 1rem 1.1rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.timetable-feedback .section-heading { margin-bottom: .25rem; }
.feedback-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.feedback-actions .btn { min-width: 8.5rem; }
.feedback-actions .btn.selected { color: var(--fg); border-color: var(--fg); background: var(--bg); }
.feedback-actions .btn:disabled { opacity: .72; cursor: default; }
.booking-links { list-style: none; padding: 0; display: grid; gap: .75rem; font-size: .85rem; }
.booking-links a { text-decoration: none; }
.data-disclaimer { color: var(--muted); font-size: .75rem; line-height: 1.8; }
.route-share { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 1.5rem 0; }
.route-share .btn { font-size: .75rem; }
.route-share [role="status"] { font-size: .75rem; color: var(--muted); }
.return-details > summary { cursor: pointer; padding: .75rem 0; color: var(--accent); font-size: .85rem; }
@media(max-width:750px) {
  .route-info-section .section-heading { align-items: flex-start; }
}

/* The shared terminal selector opens beside the field being edited. */
.journey-form {
  position: relative;
  grid-template-columns: minmax(0,1fr) 40px minmax(0,1fr) minmax(155px,.55fr) auto;
  gap: 14px;
  padding: 22px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg);
}
.journey-picker-field { min-width: 0; }
.journey-picker-field > label, .journey-date > span {
  display: block;
  margin-bottom: 8px;
  font-size: .8rem;
  font-weight: 600;
  color: var(--muted);
}
.journey-field { min-height: 58px; gap: 10px; padding: 7px 12px; }
.journey-field input { font-size: 1rem; font-weight: 500; }
.journey-field button { display: grid; place-items: center; width: 30px; height: 36px; padding: 0; background: transparent; color: var(--muted); }
.journey-field button svg { transition: transform .15s; }
.picker-open .journey-field { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent); }
.picker-open .journey-field button svg { transform: rotate(180deg); }
.journey-form .swap { height: 40px; align-self: center; margin-top: 25px; border: 1px solid var(--border); border-radius: 50%; }
.journey-date input { width: 100%; height: 58px; padding: 10px; min-width: 0; }
.journey-form .journey-submit { height: 58px; padding: 0 20px; font-size: .9rem; }
.journey-quick { display: flex; align-items: center; flex-wrap: wrap; grid-column: 1 / -1; gap: 8px; margin-top: 5px; font-size: .8rem; }
.journey-quick > span { color: var(--muted); margin-right: 3px; }
.journey-quick > a { padding: 7px 12px; border: 1px solid var(--border); border-radius: 999px; text-decoration: none; color: var(--muted); }
.journey-quick > a:hover { color: var(--accent); border-color: var(--accent); }
.journey .terminal-picker-panel {
  position: absolute;
  top: 110px;
  left: 22px;
  z-index: 30;
  width: min(680px,calc(100% - 44px));
  max-height: min(650px,75dvh);
  display: flex;
  margin: 0;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg);
  box-shadow: 0 16px 48px #17203326;
  overflow: hidden;
}
.journey .terminal-picker-panel[data-side="to"] { left: auto; right: 22px; }
.terminal-picker-panel .picker-heading { flex: none; gap: 12px; padding: 18px 20px 10px; margin: 0; }
.terminal-picker-panel .picker-heading h2 { font-size: 1.1rem; white-space: nowrap; }
.terminal-picker-panel .picker-heading > span { margin-left: auto; color: var(--muted); font-size: .7rem; }
.terminal-picker-panel .picker-heading button { font-size: .9rem; padding: 4px; }
.terminal-picker-panel .place-search { flex: none; margin: 0 20px 10px; max-width: none; }
.terminal-picker-panel .place-search input { padding: 8px 12px; background: var(--surface); font-size: .8rem; }
.terminal-picker-panel .place-tabs { display: grid; grid-template-columns: repeat(9,minmax(0,1fr)); flex: none; gap: 4px; padding: 0 12px 12px; margin: 0; }
.terminal-picker-panel .place-tabs button { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 72px; gap: 6px; padding: 6px 2px; border: 1px solid transparent; border-radius: 8px; background: transparent; }
.terminal-picker-panel .place-tabs button[aria-pressed="true"] { background: color-mix(in srgb,var(--accent) 7%,var(--bg)); color: var(--accent); border-color: color-mix(in srgb,var(--accent) 45%,var(--border)); }
.terminal-picker-panel .place-tabs button:hover { background: var(--surface); }
.terminal-picker-panel .place-tabs img { width: 40px; height: 32px; object-fit: contain; }
.terminal-picker-panel .place-tabs small { font-size: .72rem; color: var(--muted); }
.region-all { display: grid; place-items: center; height: 32px; font-size: .8rem; font-weight: 700; color: var(--accent); }
.picker-results-heading { flex: none; background: var(--surface); border-top: 1px solid var(--border); padding: 10px 20px; }
.picker-results-heading p { margin: 0; color: var(--muted); font-size: .75rem; }
.terminal-picker-panel .place-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 4px; min-height: 80px; max-height: 290px; overflow-y: auto; overscroll-behavior: contain; padding: 8px; margin: 0; scroll-padding: 8px; }
.terminal-picker-panel .place-card { flex-direction: row; justify-content: flex-start; gap: 12px; min-height: 74px; padding: 10px 12px; border: 1px solid transparent; border-radius: 8px; }
.terminal-picker-panel .place-card > img { width: 52px; height: 42px; object-fit: contain; flex-shrink: 0; }
.terminal-picker-panel .place-card > img[src*="gyeongsangnam-do-jinju-si.png"] { width: 60px; height: 46px; object-fit: cover; transform: scale(1.4); clip-path: inset(6% 12%); }
.place-option-copy { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.terminal-picker-panel .place-card strong { font-size: .88rem; overflow-wrap: anywhere; line-height: 1.35; }
.terminal-picker-panel .place-card small { text-align: left; font-size: .7rem; }
.terminal-picker-panel .place-card:hover, .terminal-picker-panel .place-card.is-active { border-color: color-mix(in srgb,var(--accent) 30%,var(--border)); background: color-mix(in srgb,var(--accent) 5%,var(--bg)); }
.terminal-picker-panel .place-card[aria-selected="true"] { background: color-mix(in srgb,var(--accent) 8%,var(--bg)); }
.picker-check { margin-left: auto; color: var(--accent); visibility: hidden; }
.place-card[aria-selected="true"] .picker-check { visibility: visible; }
.terminal-picker-panel #picker-empty { margin: 0; }
.schedule-actions > span { font-size: .8rem; color: var(--muted); }
.transfer-results { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,340px),1fr)); gap: 10px; margin-top: 12px; }
.transfer-card { min-width: 0; padding: 15px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.transfer-card-title,.transfer-card-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.transfer-card-title strong { font-size: .95rem; }
.transfer-card-title span { padding: 4px 8px; border-radius: 999px; background: color-mix(in srgb,var(--accent) 10%,var(--bg)); color: var(--accent); font-size: .75rem; font-weight: 700; }
.transfer-card p { margin: 9px 0; color: var(--fg); font-size: .8rem; line-height: 1.55; }
.transfer-card-actions { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); font-size: .77rem; }
.transfer-card-actions a { color: var(--accent); font-weight: 700; }
@media (max-width: 1100px) and (min-width: 751px) {
  .journey-form { grid-template-columns: minmax(0,1fr) 36px minmax(0,1fr); }
  .journey-form .journey-date { grid-column: 1; }
  .journey-form .journey-submit { grid-column: 3; }
  .journey-quick { margin-top: 0; }
}
@media (max-width: 750px) {
  .journey-form { grid-template-columns: minmax(0,1fr) 34px; gap: 12px; padding: 14px; }
  .journey-picker-field { grid-column: 1; }
  .journey-picker-field[data-field="to"] { grid-row: 2; }
  .journey-form .swap { grid-column: 2; grid-row: 1 / 3; margin-top: 20px; height: 34px; align-self: center; }
  .journey-form .journey-date { grid-column: 1 / -1; grid-row: 3; }
  .journey-form .journey-submit { grid-column: 1 / -1; grid-row: 4; height: 48px; }
  .journey-quick { gap: 6px; font-size: .72rem; }
  .journey-quick > a { padding: 6px 9px; }
  .journey-field { min-height: 56px; padding: 6px 8px; gap: 6px; }
  .journey-field input { font-size: .9rem; }
  .journey-field img { width: 32px; height: 30px; }
  .journey-field img[src*="gyeongsangnam-do-jinju-si.png"] { width: 48px; height: 40px; }
  .journey .terminal-picker-panel, .journey .terminal-picker-panel[data-side="to"] { position: fixed; left: 12px; right: 12px; bottom: 12px; width: calc(100% - 24px); top: auto; max-height: calc(100dvh - 96px); box-shadow: 0 0 0 100vmax #17203340, 0 16px 48px #17203326; }
  .terminal-picker-panel .picker-heading { padding: 12px 12px 8px; gap: 8px; flex-direction: row; align-items: center; }
  .terminal-picker-panel .picker-heading h2 { font-size: .95rem; }
  .terminal-picker-panel .picker-heading > span { display: none; }
  .terminal-picker-panel .picker-heading button { margin-left: auto; }
  .terminal-picker-panel .place-search { margin: 0 10px 8px; }
  .terminal-picker-panel .place-tabs { grid-template-columns: repeat(6,minmax(0,1fr)); gap: 2px; padding: 0 6px 8px; }
  .terminal-picker-panel .place-tabs button { min-height: 56px; gap: 3px; padding: 4px 1px; }
  .terminal-picker-panel .place-tabs img { width: 30px; height: 25px; }
  .terminal-picker-panel .place-tabs small { font-size: .65rem; }
  .terminal-picker-panel .region-all { height: 25px; }
  .picker-results-heading { padding: 8px 12px; }
  .picker-results-heading p { font-size: .65rem; line-height: 1.5; }
  .terminal-picker-panel .place-grid { padding: 5px; gap: 2px; max-height: 230px; }
  .terminal-picker-panel .place-card { padding: 9px 6px; gap: 7px; min-height: 66px; }
  .terminal-picker-panel .place-card > img { width: 30px; height: 28px; }
  .terminal-picker-panel .place-card > img[src*="gyeongsangnam-do-jinju-si.png"] { width: 40px; height: 34px; }
  .terminal-picker-panel .place-card strong { font-size: .74rem; }
  .terminal-picker-panel .place-card small { font-size: .62rem; line-height: 1.4; }
  .picker-check { font-size: .75rem; }
}

/* Journey pages share the wide, calm card language used by KTX. */
.bus-journey { background: linear-gradient(180deg,#f8fbff 0,#fff 31rem); color: #172033; }
.bus-journey .site-header { height: 76px; background: rgba(255,255,255,.92); border-bottom: 1px solid #e7edf5; }
.bus-journey .site-header-inner { max-width: none; padding-inline: var(--page-gutter); }
.bus-journey .site-logo { color: #172033; gap: .65rem; }
.bus-journey .site-logo-name { font-size: 1.08rem; letter-spacing: -.04em; }
.bus-journey .site-logo-name span { color: #2563eb; }
.bus-journey .journey-nav { display:flex; gap:1.25rem; align-items:center; font-size:.82rem; }
.bus-journey .journey-nav a { color:#64748b; text-decoration:none; }
.bus-journey .journey-nav a:hover { color:#2563eb; }
.bus-journey .journey { max-width: none; padding-top: 2.5rem; }
.bus-journey .journey-topline { display:none; }
.bus-journey .journey-intro { text-align:center; margin: 2.75rem 0 2rem; }
.bus-journey .journey-intro h1 { color:#172033; font-weight:800; }
.bus-journey .journey-intro .subtext { color:#64748b; }
.bus-journey .journey-form { max-width:none; background:#fff; border:1px solid #dfe7f1; border-radius:18px; box-shadow:0 16px 42px rgba(37,99,235,.10); }
.bus-journey .journey-field, .bus-journey .journey-date input { background:#fff; border-color:#dfe7f1; }
.bus-journey .journey-submit { border-radius:10px; }
.bus-journey .journey-hint { text-align:center; }
.bus-journey .title-row h2, .bus-journey .section-heading h3 { color:#172033; }
.bus-journey .next-bus, .bus-journey .stats, .bus-journey .terminal-grid article, .bus-journey .booking-card, .bus-journey .aside-card, .bus-journey .transfer-card { background:#fff; border-color:#dfe7f1; box-shadow:0 8px 24px rgba(30,64,175,.06); }
.bus-journey .table-wrap { background:#fff; border-color:#dfe7f1; }
.bus-journey .terminal-phone { margin:.45rem 0 .65rem; font-size:.8rem; color:var(--muted); }
.bus-journey .terminal-phone a { color:var(--accent); }
.bus-journey .terminal-phone-missing { color:var(--muted); }
.bus-journey .timetable-report form { display:flex;align-items:end;gap:12px;flex-wrap:wrap; }
.bus-journey .timetable-report label { display:grid;gap:6px;color:var(--muted);font-size:.8rem;font-weight:700; }
.bus-journey .timetable-report input[type=file] { max-width:100%;padding:.65rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font:inherit; }
@media(max-width:560px) { .bus-journey .timetable-report form,.bus-journey .timetable-report form .btn { width:100%; } }
.bus-journey th { background:#f7faff; }
.bus-journey .route-info-section { border-color:#e7edf5; }
.bus-journey .transfer-controls { display:flex; flex-wrap:wrap; gap:1rem; align-items:end; margin-top:1rem; }
.bus-journey .transfer-controls label { display:grid; gap:.35rem; color:#64748b; font-size:.78rem; }
.bus-journey .transfer-controls select { min-width:12rem; background:#fff; }
.bus-journey .transfer-route { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:.65rem; margin-top:.8rem; padding:.65rem .75rem; border-radius:10px; background:#f7faff; }
.bus-journey .transfer-route div { display:grid; gap:.15rem; min-width:0; }
.bus-journey .transfer-route small { color:#2563eb; font-size:.68rem; font-weight:700; }
.bus-journey .transfer-route strong { font-size:1.2rem; font-variant-numeric:tabular-nums; }
.bus-journey .transfer-route span { color:#64748b; font-size:.72rem; overflow-wrap:anywhere; }
.bus-journey .transfer-route b { color:#94a3b8; }
.bus-journey #more-transfers { display:block; margin:1rem auto 0; }
@media(max-width:750px){
 .bus-journey .site-header { height:auto; min-height:64px; }
 .bus-journey .site-header-inner { padding-block:.7rem; align-items:flex-start; }
 .bus-journey .journey-nav { gap:.65rem; flex-wrap:wrap; justify-content:flex-end; font-size:.72rem; }
 .bus-journey .journey { padding-top:1rem; }
 .bus-journey .journey-intro { margin:1.75rem 0 1.5rem; }
 .bus-journey .journey-form { border-radius:14px; }
 .bus-journey .transfer-route { gap:.4rem; padding:.55rem; }
 .bus-journey .transfer-route strong { font-size:1rem; }
 .bus-journey .transfer-route span { font-size:.66rem; }
}

.bus-journey .theme-toggle { border:1px solid var(--border); border-radius:999px; background:var(--surface); color:var(--fg); padding:.35rem .55rem; cursor:pointer; font-size:.9rem; }
.bus-journey .naver-add-copy strong { color:var(--accent); }
@media (prefers-color-scheme: dark) {
  .bus-journey { background:linear-gradient(180deg,#0f141d 0,#111827 31rem); }
  .bus-journey .site-header { background:rgba(15,20,29,.94); border-color:var(--border); }
  .bus-journey .site-logo,.bus-journey .journey-intro h1,.bus-journey .title-row h2,.bus-journey .section-heading h3 { color:var(--fg); }
  .bus-journey .journey-form,.bus-journey .journey-field,.bus-journey .journey-date input,.bus-journey .transfer-card,.bus-journey .next-bus,.bus-journey .stats,.bus-journey .terminal-grid article,.bus-journey .booking-card,.bus-journey .aside-card,.bus-journey .table-wrap { background:var(--bg); border-color:var(--border); }
  .bus-journey th,.bus-journey .transfer-route { background:var(--surface); }
}
:root[data-theme='dark'] .bus-journey { background:linear-gradient(180deg,#0f141d 0,#111827 31rem); }
:root[data-theme='dark'] .bus-journey .site-header { background:rgba(15,20,29,.94); border-color:var(--border); }
:root[data-theme='dark'] .bus-journey .site-logo,:root[data-theme='dark'] .bus-journey .journey-intro h1,:root[data-theme='dark'] .bus-journey .title-row h2,:root[data-theme='dark'] .bus-journey .section-heading h3 { color:var(--fg); }
:root[data-theme='dark'] .bus-journey .journey-form,:root[data-theme='dark'] .bus-journey .journey-field,:root[data-theme='dark'] .bus-journey .journey-date input,:root[data-theme='dark'] .bus-journey .transfer-card,:root[data-theme='dark'] .bus-journey .next-bus,:root[data-theme='dark'] .bus-journey .stats,:root[data-theme='dark'] .bus-journey .terminal-grid article,:root[data-theme='dark'] .bus-journey .booking-card,:root[data-theme='dark'] .bus-journey .aside-card,:root[data-theme='dark'] .bus-journey .table-wrap { background:var(--bg); border-color:var(--border); }
:root[data-theme='dark'] .bus-journey th,:root[data-theme='dark'] .bus-journey .transfer-route { background:var(--surface); }
:root[data-theme='light'] .bus-journey { background:linear-gradient(180deg,#f8fbff 0,#fff 31rem); }
:root[data-theme='light'] .bus-journey .site-header { background:rgba(255,255,255,.92); border-color:#e7edf5; }
:root[data-theme='light'] .bus-journey .site-logo,:root[data-theme='light'] .bus-journey .journey-intro h1,:root[data-theme='light'] .bus-journey .title-row h2,:root[data-theme='light'] .bus-journey .section-heading h3 { color:#172033; }
:root[data-theme='light'] .bus-journey .journey-form,:root[data-theme='light'] .bus-journey .journey-field,:root[data-theme='light'] .bus-journey .journey-date input,:root[data-theme='light'] .bus-journey .transfer-card,:root[data-theme='light'] .bus-journey .next-bus,:root[data-theme='light'] .bus-journey .stats,:root[data-theme='light'] .bus-journey .terminal-grid article,:root[data-theme='light'] .bus-journey .booking-card,:root[data-theme='light'] .bus-journey .aside-card,:root[data-theme='light'] .bus-journey .table-wrap { background:#fff; border-color:#dfe7f1; }
:root[data-theme='light'] .bus-journey th,:root[data-theme='light'] .bus-journey .transfer-route { background:#f7faff; }

/* Match the KTX search header and keep the terminal picker attached to its form. */
.bus-journey .site-logo-mark { display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#eaf1ff; }
.bus-journey .site-logo-mark img { width:30px;height:30px; }
.bus-journey .site-header-inner { height:100%;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:24px;padding-block:0; }
.bus-journey .site-logo { order:0;flex:none; }
.bus-journey .journey-nav { order:1;margin-left:auto;height:100%;gap:28px;font-weight:600;white-space:nowrap; }
.bus-journey .journey-nav a { display:flex;align-items:center;position:relative;height:100%; }
.bus-journey .journey-nav a.active { color:var(--accent); }
.bus-journey .journey-nav a.active::after { content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--accent); }
.bus-journey .journey-intro { margin:1.4rem 0 1.4rem;text-align:left; }
.bus-journey .journey-intro .eyebrow { display:inline-flex;align-items:center;gap:9px; }
.bus-journey .journey-intro .eyebrow::before { content:"";width:6px;height:6px;border-radius:50%;background:#5b8def;box-shadow:0 0 0 4px #e7efff; }
.bus-journey .journey-intro h1 { margin:.55rem 0;font-size:clamp(1.8rem,3vw,2.5rem); }
.bus-journey .journey-form { border-radius:15px;padding:23px 24px 16px;box-shadow:0 10px 28px rgba(38,78,135,.07); }
.bus-journey .journey-field,.bus-journey .journey-date input,.bus-journey .journey-submit { min-height:54px;height:54px; }
.bus-journey .journey-picker-field>label,.bus-journey .journey-date>span { margin-bottom:8px;color:#637087;font-size:.75rem;font-weight:700; }
.bus-journey .route-dot { flex:none;width:9px;height:9px;border-radius:50%; }
.bus-journey .origin-dot { background:#2563eb;box-shadow:0 0 0 3px #e8f0ff; }
.bus-journey .destination-dot { background:#ef6b77;box-shadow:0 0 0 3px #ffeaed; }
.bus-journey .journey-quick { margin-top:2px;color:#8b95a6;font-size:.75rem; }
.bus-journey .journey-quick>a { border-color:#e1e7f0;color:#526078; }
.bus-journey .journey-hint { color:#909aaa;font-size:.72rem; }
@media(max-width:750px) {
  .bus-journey .site-header-inner { align-items:center; }
  .bus-journey .site-logo-name { display:inline; }
  .bus-journey .journey-nav { gap:12px;font-size:.7rem; }
  .bus-journey .journey-nav a:not(.active) { display:none; }
  .bus-journey .journey-intro { margin:1.4rem 0 1.2rem; }
  .bus-journey .journey-form { padding:18px 15px 14px; }
  .bus-journey .journey-field,.bus-journey .journey-date input { height:54px; }
  .bus-journey .journey-submit { height:49px;min-height:49px; }
}
@media(prefers-color-scheme:dark) {
  :root:not([data-theme='light']) .bus-journey .site-logo-mark { background:#1a2941; }
  :root:not([data-theme='light']) .bus-journey .journey-picker-field>label,
  :root:not([data-theme='light']) .bus-journey .journey-date>span,
  :root:not([data-theme='light']) .bus-journey .journey-quick>a { color:var(--muted); }
}
:root[data-theme='dark'] .bus-journey .site-logo-mark { background:#1a2941; }
:root[data-theme='dark'] .bus-journey .journey-picker-field>label,
:root[data-theme='dark'] .bus-journey .journey-date>span,
:root[data-theme='dark'] .bus-journey .journey-quick>a { color:var(--muted); }

/* Keep the search editable while giving the timetable more space after a result. */
.bus-journey .journey-search-complete .journey-intro { margin:.75rem 0; }
.bus-journey .journey-search-complete .journey-intro h1 { margin:0; font-size:clamp(1.1rem,2vw,1.45rem); }
.bus-journey .journey-search-complete .journey-intro .eyebrow,
.bus-journey .journey-search-complete #page-description,
.bus-journey .journey-search-complete .journey-quick,
.bus-journey .journey-search-complete .journey-hint { display:none; }
.bus-journey .journey-search-complete .journey-form { padding:12px 16px; gap:10px; box-shadow:none; }
.bus-journey .journey-search-complete .journey-field,
.bus-journey .journey-search-complete .journey-date input,
.bus-journey .journey-search-complete .journey-submit { height:44px; min-height:44px; }
.bus-journey .journey-search-complete .journey-field { padding:4px 8px; }
.bus-journey .journey-search-complete .journey-field input { font-size:.85rem; }
.bus-journey .journey-search-complete .journey-field img { width:28px; height:26px; }
.bus-journey .journey-search-complete .journey-picker-field>label,
.bus-journey .journey-search-complete .journey-date>span { margin-bottom:4px; font-size:.7rem; }
.bus-journey .journey-search-complete #schedule { margin-top:1.25rem; }
.bus-journey .past-legend { margin-left:auto; font-size:.75rem; color:var(--muted); }
.bus-journey .trip-past { opacity:1; background:var(--surface); }
.bus-journey .trip-past td,
.bus-journey .trip-past td a,
.bus-journey .trip-past .next-day { color:var(--muted); }
.bus-journey .trip-past .badge { color:var(--muted); background:color-mix(in srgb,var(--muted) 10%,var(--bg)); }
.bus-journey .trip-past td:first-child { font-weight:400; }
.bus-journey .table-wrap tbody td { height:4.5rem; box-sizing:border-box; vertical-align:middle; }
.bus-journey .timetable-panel { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.bus-journey .timetable-panel .timetable-toolbar { margin:0; padding:14px 16px; border-bottom:1px solid var(--border); flex-direction:row; align-items:center; flex-wrap:wrap; }
.bus-journey .timetable-options { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-left:auto; }
.bus-journey .timetable-layout-label { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:.8rem; }
.bus-journey .timetable-panel .filters .selected { background:var(--fg); border-color:var(--fg); color:var(--bg); }
.bus-journey .timetable-panel .schedule-meta { padding:8px 16px; margin:0; }
.bus-journey .timetable-panel>.table-wrap { border:0; border-radius:0; }
.bus-journey .timetable-panel .past-trips { margin:0 16px 12px; padding:0; }
.bus-journey .timetable-panel>#data-note { padding:0 16px; }
.bus-journey .trip-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:16px; margin:0; list-style:none; }
.bus-journey [data-columns="3"] .trip-cards { grid-template-columns:repeat(3,minmax(0,1fr)); }
.bus-journey .trip-card { display:flex; flex-direction:column; min-width:0; border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.bus-journey .trip-card-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:48px; }
.bus-journey .trip-card-label { display:block; font-size:.7rem; color:var(--muted); }
.bus-journey .trip-card strong { font-size:1.5rem; line-height:1.3; font-variant-numeric:tabular-nums; }
.bus-journey .trip-card-state { font-size:.75rem; color:var(--muted); }
.bus-journey .trip-card dl { display:grid; gap:8px; margin:16px 0; font-size:.85rem; }
.bus-journey .trip-card dl>div { display:flex; justify-content:space-between; gap:8px; }
.bus-journey .trip-card dt { color:var(--muted); }
.bus-journey .trip-card dd { margin:0; }
.bus-journey .trip-card>a { margin-top:auto; padding-top:10px; border-top:1px solid var(--border); color:var(--fg); font-size:.8rem; text-align:right; }
.bus-journey .trip-card.trip-next strong,.bus-journey .trip-card.trip-next .trip-card-state { color:var(--accent); }
.bus-journey .trip-card.trip-past,.bus-journey .trip-card.trip-past>a { color:var(--muted); }
@media(max-width:900px) { .bus-journey [data-columns="3"] .trip-cards { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:480px) {
  .bus-journey .timetable-options { width:100%; margin-left:0; justify-content:space-between; gap:8px; }
  .bus-journey .trip-cards,.bus-journey [data-columns="3"] .trip-cards { grid-template-columns:minmax(0,1fr); padding:12px; }
}
.bus-journey .trip-column { min-width:0; }
.bus-journey .trip-column-list { display:grid; gap:6px; margin:0; padding:0; list-style:none; }
  .bus-journey .trip-card { display:grid; grid-template-columns:68px minmax(0,1fr) auto; align-items:center; gap:10px; padding:10px 12px; min-height:72px; box-sizing:border-box; }
  .bus-journey .trip-card-heading { display:block; min-height:0; }
  .bus-journey .trip-card-label { display:none; }
  .bus-journey .trip-card strong { font-size:1.3rem; }
  .bus-journey .trip-card-state { display:block; font-size:.6rem; white-space:nowrap; }
  .bus-journey .trip-card dl { grid-template-columns:auto auto; gap:3px 8px; margin:0; font-size:.75rem; }
  .bus-journey .trip-card dl>div { display:block; }
  .bus-journey .trip-card dl>div:first-child { display:flex; justify-content:flex-start; grid-column:1/-1; gap:6px; }
  .bus-journey .trip-card dl>div:not(:first-child)>dt { display:none; }
  .bus-journey .trip-card dl>div:last-child { text-align:right; white-space:nowrap; }
  .bus-journey .trip-card>a { margin:0; padding:8px 0 8px 8px; border-top:0; font-size:.7rem; white-space:nowrap; }
@media(max-width:600px) {
  .bus-journey .trip-cards,.bus-journey [data-columns="3"] .trip-cards { grid-template-columns:minmax(0,1fr); gap:6px; padding:8px; }
}
.bus-journey .trip-column { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; align-self:start; }
.bus-journey .trip-column-list { gap:0; }
.bus-journey .trip-column-labels,.bus-journey .trip-card { display:grid; grid-template-columns:60px minmax(0,1fr) 80px 44px; gap:10px; align-items:center; padding:12px; }
.bus-journey .trip-column-labels { font-size:.65rem; color:var(--muted); background:var(--surface); border-bottom:1px solid var(--border); }
.bus-journey .trip-column-labels>span:nth-child(3) { text-align:right; }
.bus-journey .trip-column-labels>span:last-child { text-align:center; }
.bus-journey .trip-card { border:0; border-bottom:1px solid var(--border); border-radius:0; min-height:72px; }
.bus-journey .trip-card:last-child { border-bottom:0; }
.bus-journey .trip-card strong { font-size:1.2rem; letter-spacing:-.025em; }
.bus-journey .trip-card dl { display:grid; grid-template-columns:minmax(0,1fr); gap:4px; min-width:0; }
.bus-journey .trip-card dl>div:first-child { display:block; grid-column:auto; }
.bus-journey .trip-card dt { display:none; }
.bus-journey .trip-card dl>div:last-child { text-align:left; white-space:normal; }
.bus-journey .trip-card-grade { font-size:.7rem; color:var(--muted); }
.bus-journey .trip-arrival-day { margin-left:4px; font-size:.6rem; color:var(--muted); white-space:nowrap; }
.bus-journey .trip-card-fare { font-size:.75rem; text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.bus-journey .trip-card>a { display:flex; align-items:center; justify-content:center; padding:8px 4px; border:1px solid var(--border); border-radius:6px; text-decoration:none; font-size:.65rem; }
.bus-journey .trip-card>a:hover { background:var(--surface); border-color:var(--muted); }
.bus-journey .trip-card.trip-next { box-shadow:inset 3px 0 var(--accent); }
@media(max-width:600px) {
  .bus-journey .trip-column-labels,.bus-journey .trip-card { grid-template-columns:54px minmax(0,1fr) 68px 38px; gap:6px; padding:10px 8px; }
  .bus-journey .trip-card-fare { font-size:.7rem; }
}
@media(max-width:750px) {
  .bus-journey .journey-search-complete .journey-form { grid-template-columns:minmax(0,1fr) 34px; padding:10px; gap:8px; }
  .bus-journey .journey-search-complete .journey-date { grid-column:1; }
  .bus-journey .journey-search-complete .journey-submit { grid-column:1/-1; }
  .bus-journey .journey-search-complete .journey-field img { display:none; }
  .bus-journey .past-legend { margin-left:0; }
}

.bus-journey .journey-heading { display:flex; align-items:center; gap:12px; }
.bus-journey .past-trips { margin:0 0 12px; border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.bus-journey .past-trips>summary { padding:12px 16px; color:var(--muted); background:transparent; cursor:pointer; font-size:.85rem; }
.bus-journey .past-trips .table-wrap { margin:0; border:0; border-radius:0; }
.bus-journey .journey-heading h1 { min-width:0; }
.bus-journey .journey-heading .icon-button { flex:none; width:36px; height:36px; font-size:1.25rem; }
.bus-journey .journey:not(.journey-has-route) .journey-heading .icon-button { display:none; }
@media(max-width:560px) {
  .bus-journey .timetable-report label { min-width:0; width:100%; }
  .bus-journey .timetable-report input[type=file] { width:100%; box-sizing:border-box; }
}

/* Route overview stays in the page, with cameras ordered along each motorway. */
.highway-panel { margin:1.5rem 0; padding:24px; border:1px solid var(--border); border-radius:16px; background:var(--bg); }
.highway-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.highway-heading h2 { margin:0; font-size:1.3rem; letter-spacing:-.035em; }
.highway-heading .eyebrow { margin:0 0 6px; }
.highway-heading .btn { flex:none; font-size:.78rem; }
.highway-panel>.subtext { font-size:.78rem; line-height:1.7; }
.highway-route { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:18px; margin:18px 0; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
.highway-endpoint { font-size:.85rem; font-weight:700; overflow-wrap:anywhere; }
.highway-arrow { color:var(--muted); }
.highway-shield { display:inline-grid; place-items:center; flex:none; min-width:30px; height:32px; padding:0 4px; border:2px solid color-mix(in srgb,var(--accent) 65%,var(--border)); border-radius:7px 7px 12px 12px; color:var(--accent); font-size:.76rem; font-weight:800; box-sizing:border-box; }
.highway-route-stop { display:flex; align-items:center; flex-wrap:wrap; gap:8px; color:var(--fg); font-size:.83rem; font-weight:650; text-decoration:none; }
.highway-route-stop:hover { text-decoration:underline; text-underline-offset:4px; }
.highway-route-stop small { font-size:.66rem; font-weight:500; color:var(--muted); }
.highway-route-pending { color:var(--muted); font-size:.75rem; font-weight:650; }
.highway-local-roads { font-size:.72rem; color:var(--muted); line-height:1.6; overflow-wrap:anywhere; }
.highway-local-roads span { color:var(--fg); font-weight:600; }
.highway-route-stop>span:not(.highway-shield) { display:inline-flex; flex-direction:column; align-items:flex-start; gap:1px; }
.highway-route-names { color:var(--muted); font-size:.62rem; font-weight:400; line-height:1.25; }
.highway-road-pending { color:var(--muted); }
.highway-road-pending h3 { color:var(--fg); font-size:.82rem; margin:0 0 4px; }
.highway-road-pending p { margin:0; line-height:1.6; }
.highway-route-stop.jam small { color:#dc3545; }
.highway-route-stop.slow small { color:#a46a08; }
.highway-alert { padding:13px 16px; border:1px solid color-mix(in srgb,#dc3545 35%,var(--border)); border-radius:10px; background:color-mix(in srgb,#dc3545 8%,var(--bg)); color:var(--fg); font-size:.82rem; line-height:1.7; }
.highway-road { position:relative; padding:20px 0 24px 34px; margin-left:10px; border-left:2px solid var(--border); scroll-margin-top:24px; }
.highway-road:last-child { padding-bottom:0; }
.highway-road-heading { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:14px; }
.highway-step { position:absolute; top:22px; left:-13px; display:grid; place-items:center; width:24px; height:24px; border:2px solid var(--bg); border-radius:50%; background:var(--accent); color:white; font-size:.7rem; font-weight:700; box-sizing:border-box; }
.highway-road h3 { font-size:1rem; margin:0; }
.highway-road-meta { margin-left:auto; font-size:.73rem; color:var(--muted); }
.highway-condition { border-radius:99px; padding:5px 9px; background:var(--surface); color:var(--muted); font-size:.68rem; }
.highway-condition.jam { background:color-mix(in srgb,#dc3545 12%,var(--bg)); color:#df3e4d; }
.highway-condition.slow { background:color-mix(in srgb,#b87808 12%,var(--bg)); color:#b87808; }
.highway-condition.clear { background:color-mix(in srgb,#168355 12%,var(--bg)); color:#168355; }
.highway-cameras { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; max-height:460px; overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; padding:2px 6px 4px 2px; }
.highway-cameras:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
.highway-camera { min-width:0; align-self:start; overflow:hidden; border:1px solid var(--border); border-radius:10px; background:var(--surface); }
.camera-screen { aspect-ratio:16/9; background:#101b2c; }
.camera-play { display:flex; flex-direction:column; align-items:center; justify-content:center; width:100%; height:100%; gap:9px; border:0; border-radius:0; background:linear-gradient(140deg,#14263c,#213d56); color:#e9f1fb; font-size:.7rem; }
.camera-play:hover { background:#294765; }
.camera-play:focus-visible { outline:3px solid var(--accent); outline-offset:-4px; }
.camera-play-icon { display:grid; place-items:center; width:36px; height:36px; padding-left:2px; border:1px solid #7793ac; border-radius:50%; font-size:.8rem; }
.camera-screen video { display:block; width:100%; height:100%; aspect-ratio:16/9; object-fit:contain; }
.camera-name { font-size:.78rem; font-weight:650; margin:10px 12px 3px; overflow-wrap:anywhere; }
.camera-link { display:inline-block; margin:0 12px 10px; font-size:.65rem; color:var(--muted); }
.camera-message { margin:0 12px; color:var(--muted); font-size:.67rem; line-height:1.6; }
.camera-message:not(:empty) { margin-bottom:8px; }
.highway-road-warning,.highway-no-cameras { font-size:.76rem; color:var(--muted); line-height:1.7; }
.highway-footer { display:flex; flex-wrap:wrap; gap:8px 16px; margin-top:22px; padding-top:14px; border-top:1px solid var(--border); color:var(--muted); font-size:.68rem; }
.highway-footer a { margin-left:auto; color:var(--muted); }
@media(min-width:1600px) { .highway-cameras { grid-template-columns:repeat(6,minmax(0,1fr)); } }
@media(max-width:1000px) { .highway-cameras { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:650px) {
  .highway-panel { padding:16px 12px; border-radius:12px; }
  .highway-heading h2 { font-size:1.15rem; }
  .highway-route { gap:8px; padding:12px; }
  .highway-route { flex-direction:column; align-items:flex-start; }
  .highway-route .highway-arrow { display:none; }
  .highway-route-stop { gap:6px; padding-left:12px; margin-left:3px; border-left:2px solid var(--border); }
  .highway-route-stop small { width:100%; margin-left:38px; margin-top:-4px; }
  .highway-road { margin-left:7px; padding-left:18px; }
  .highway-road h3 { font-size:.9rem; }
  .highway-road-heading { gap:7px; }
  .highway-road-meta { width:100%; margin-left:0; }
  .highway-cameras { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; max-height:390px; }
  .camera-name { margin:8px 8px 3px; font-size:.72rem; }
  .camera-link { margin:0 8px 8px; font-size:.6rem; }
  .highway-footer a { margin-left:0; }
}

.bus-journey .timetable-panel .timetable-feedback { display:flex; flex-wrap:wrap; align-items:center; gap:6px 16px; margin:0; padding:12px 16px; border:0; border-bottom:1px solid var(--border); border-radius:0; background:var(--surface); }
.timetable-panel .timetable-feedback .section-heading { display:block; margin:0; }
.timetable-panel .timetable-feedback h3 { margin:0; font-size:.85rem; }
.timetable-panel .timetable-feedback .section-heading>span { display:block; margin-top:4px; color:var(--muted); font-size:.64rem; }
.timetable-panel .feedback-actions { margin:0 0 0 auto; }
.timetable-panel .feedback-actions .btn { min-width:0; padding:7px 12px; font-size:.75rem; }
.timetable-panel #feedback-summary { order:3; width:100%; margin:0; color:var(--muted); font-size:.7rem; }
.timetable-panel #feedback-status { order:4; width:100%; margin:0; font-size:.7rem; }
.timetable-panel #feedback-status:empty { display:none; }
.timetable-panel #feedback-retry { font-size:.7rem; }
@media(max-width:420px) {
  .bus-journey .timetable-panel .timetable-feedback { gap:8px; padding:12px; }
  .timetable-panel .feedback-actions .btn { padding:7px 8px; font-size:.7rem; }
}

/* The result workspace pairs a narrow timetable with a persistent route map. */
.journey-workspace,.journey-sidebar { min-width:0; }
.bus-journey .journey-has-route .journey-workspace { display:grid; grid-template-columns:minmax(390px, .85fr) minmax(0,1.35fr); align-items:start; gap:24px; }
.bus-journey .journey-has-route { padding-top:20px; }
.bus-journey .journey-has-route .journey-intro { margin:0 0 12px; }
.bus-journey .journey-has-route .journey-intro h1 { margin:0; font-size:1.35rem; }
.bus-journey .journey-has-route .journey-intro .eyebrow,
.bus-journey .journey-has-route #page-description,
.bus-journey .journey-has-route .journey-quick,
.bus-journey .journey-has-route .journey-hint { display:none; }
.bus-journey .journey-has-route .journey-form { grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr); padding:12px; gap:8px; box-shadow:none; }
.bus-journey .journey-has-route .journey-picker-field[data-field=from] { grid-column:1; grid-row:1; }
.bus-journey .journey-has-route .journey-picker-field[data-field=to] { grid-column:3; grid-row:1; }
.bus-journey .journey-has-route .journey-form .swap { grid-column:2; grid-row:1; margin-top:18px; height:28px; transform:none; }
.bus-journey .journey-has-route .journey-date { grid-column:1 / 3; grid-row:2; }
.bus-journey .journey-has-route .journey-submit { grid-column:3; grid-row:2; height:40px; min-height:40px; align-self:end; padding:0 10px; font-size:.76rem; }
.bus-journey .journey-has-route .journey-date input,.bus-journey .journey-has-route .journey-field { height:40px; min-height:40px; }
.bus-journey .journey-has-route .journey-field { padding:4px 7px; gap:7px; }
.bus-journey .journey-has-route .journey-field img { display:none; }
.bus-journey .journey-has-route .journey-field input { font-size:.79rem; }
.bus-journey .journey-has-route .journey-picker-field>label,.bus-journey .journey-has-route .journey-date>span { font-size:.65rem; margin-bottom:4px; }
.bus-journey .journey-has-route #schedule { margin-top:12px; min-width:0; }
.journey-has-route .schedule-overview { margin:0 0 12px; }
.journey-has-route .schedule-overview>div { padding:8px 12px; }
.journey-has-route .schedule-overview strong { font-size:1rem; }
.bus-journey .journey-has-route .timetable-toolbar { gap:8px; padding:10px 12px; }
.journey-has-route .timetable-options { width:100%; justify-content:space-between; margin:0; font-size:.7rem; }
.journey-has-route .timetable-panel .filters { flex-wrap:wrap; }
.journey-has-route .timetable-panel .filters button { padding:6px 10px; font-size:.72rem; }
.journey-has-route .timetable-layout-label { display:none; }
.journey-has-route .timetable-panel .table-wrap { overflow:auto; max-height:58dvh; overscroll-behavior:contain; }
.journey-has-route .timetable-panel thead { position:sticky; top:0; z-index:1; }
.bus-journey .journey-has-route .table-wrap th,.bus-journey .journey-has-route .table-wrap td { padding:10px 8px; font-size:.74rem; }
.bus-journey .journey-has-route .table-wrap tbody td { height:3.6rem; }
.journey-has-route .timetable-panel .schedule-meta { font-size:.67rem; }
.journey-has-route .timetable-panel .trip-cards { grid-template-columns:minmax(0,1fr); }
.journey-has-route .terminal-grid { grid-template-columns:minmax(0,1fr); }
.bus-journey .journey-has-route .terminal-picker-panel { width:min(620px,calc(100vw - 32px)); }
.bus-journey .journey-has-route .highway-panel { position:sticky; top:96px; margin:0; height:calc(100dvh - 138px); min-height:440px; padding:16px; display:flex; flex-direction:column; gap:8px; box-sizing:border-box; overflow:hidden; }
.journey-has-route .highway-heading h2 { font-size:1.05rem; }
.journey-has-route .highway-heading .eyebrow { font-size:.65rem; }
.journey-has-route .highway-heading .btn { padding:6px 10px; font-size:.7rem; }
.journey-has-route .highway-panel>.subtext { margin:0; font-size:.67rem; line-height:1.5; }
.journey-has-route .highway-route { margin:0; padding:9px 10px; gap:6px; flex:none; }
.journey-has-route .highway-route { max-height:84px; overflow:auto; }
.journey-has-route .highway-route-stop { font-size:.72rem; gap:6px; }
.journey-has-route .highway-route-stop small { display:none; }
.journey-has-route .highway-endpoint { font-size:.74rem; }
.journey-has-route .highway-shield { min-width:24px; height:25px; font-size:.65rem; }
.journey-has-route .highway-alert { margin:0; padding:8px 10px; font-size:.7rem; line-height:1.5; }
.traffic-map-shell { position:relative; flex:1; min-height:200px; border:1px solid var(--border); border-radius:10px; overflow:hidden; isolation:isolate; }
.traffic-map { height:100%; min-height:200px; width:100%; background:#edf2f2; }
.traffic-map .leaflet-control-attribution { font-size:9px; }
.traffic-map .leaflet-control a { color:#172033; }
.map-fit { position:absolute; z-index:500; top:12px; right:12px; padding:8px 12px; border:1px solid #d7dfe8; border-radius:7px; background:white; color:#172033; box-shadow:0 2px 8px #0002; font-size:.72rem; }
.map-endpoint { display:grid; place-items:center; background:#2563eb; color:white; border:2px solid white; border-radius:7px; box-shadow:0 1px 8px #0004; font:11px system-ui; }
.map-endpoint.to { background:#e05269; }
.map-message { position:absolute; top:50px; left:50px; right:12px; z-index:500; padding:8px; border-radius:6px; background:#fff; color:#172033; font-size:.7rem; }
.map-placeholder { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:500; width:max-content; max-width:80%; padding:12px 16px; border-radius:8px; background:var(--bg); color:var(--fg); box-shadow:0 2px 12px #0002; font-size:.8rem; text-align:center; pointer-events:none; }
.traffic-map-legend { display:flex; flex-wrap:wrap; gap:5px 12px; font-size:.64rem; color:var(--muted); }
.traffic-status-row { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.traffic-status-row .subtext { flex:1; }
.btn-small { padding:5px 8px; font-size:.68rem; white-space:nowrap; }
.traffic-map-legend span { display:flex; align-items:center; gap:5px; }
.legend-route { width:18px; height:3px; border-radius:3px; background:#2563eb; }
.legend-camera { width:8px; height:8px; border-radius:50%; background:#1679a8; }
.journey-has-route .highway-footer { margin:0; padding:6px 0 0; gap:4px 10px; font-size:.6rem; }
.traffic-camera-list { flex:none; border-top:1px solid var(--border); font-size:.72rem; }
.traffic-camera-list>summary { padding:6px 0; cursor:pointer; color:var(--accent); }
.traffic-camera-list[open] { max-height:250px; overflow:auto; }
.traffic-camera-list .highway-road { padding-top:12px; padding-bottom:12px; }
.traffic-camera-list .highway-cameras { grid-template-columns:repeat(3,minmax(0,1fr)); max-height:170px; }
.map-camera-panel { position:absolute; z-index:600; bottom:28px; right:12px; width:min(290px,calc(100% - 24px)); background:var(--bg); box-shadow:0 6px 24px #0004; }
.map-camera-panel { max-height:calc(100% - 12px); overflow:auto; bottom:6px; margin:0; box-sizing:border-box; }
.map-camera-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; font-size:.75rem; }
.map-camera-close { border:0; padding:4px 6px; background:transparent; color:var(--fg); }
@media(max-width:1050px) and (min-width:851px) {
  .bus-journey .journey-has-route .journey-workspace { grid-template-columns:minmax(360px,.95fr) minmax(0,1fr); gap:16px; }
  .journey-has-route .highway-route { gap:4px; }
}
@media(max-width:850px) {
  .bus-journey .journey-has-route .journey-workspace { display:grid; grid-template-columns:minmax(0,1fr); gap:10px; }
  .journey-has-route .journey-sidebar { display:contents; }
  .journey-has-route .journey-intro { order:0; }
  .journey-has-route .journey-form { order:1; }
  .bus-journey .journey-has-route .highway-panel { order:2; top:64px; height:36dvh; min-height:260px; padding:10px; z-index:10; gap:5px; }
  .journey-has-route #schedule { order:3; }
  .journey-has-route .highway-panel .eyebrow,
  .journey-has-route #traffic-route-note,
  .journey-has-route .highway-route,
  .journey-has-route .traffic-map-legend,
  .journey-has-route .highway-footer,
  .journey-has-route .traffic-camera-list { display:none; }
  .journey-has-route .highway-panel>.subtext { font-size:.6rem; }
  .traffic-map-shell,.traffic-map { min-height:130px; }
  .journey-has-route .highway-heading h2 { font-size:.9rem; }
  .journey-has-route .timetable-panel .table-wrap { max-height:42dvh; }
  .journey-has-route .highway-alert { font-size:.61rem; padding:5px 7px; }
  .map-camera-panel { bottom:6px; right:6px; width:200px; }
}
@media(max-width:850px) {
  .bus-journey .journey-has-route { padding-top:12px; }
  .bus-journey .journey-has-route .journey-intro { margin-bottom:0; }
  .bus-journey .journey-has-route .journey-form { padding:8px; gap:6px; }
  .bus-journey .journey-has-route .journey-field,.bus-journey .journey-has-route .journey-date input,.bus-journey .journey-has-route .journey-submit { min-height:34px; height:34px; }
  .bus-journey .journey-has-route .highway-panel { height:29dvh; min-height:220px; }
  .bus-journey .journey-has-route .timetable-toolbar { padding:8px; }
  .journey-has-route .schedule-overview>div { padding:5px 10px; }
  .journey-has-route .schedule-overview { margin-bottom:8px; }
  .journey-has-route .timetable-panel .timetable-feedback .section-heading>span { display:none; }
}
.map-camera-select { position:absolute; top:12px; right:100px; z-index:500; width:min(190px,calc(100% - 160px)); min-width:0; padding:8px; border:1px solid #d7dfe8; border-radius:7px; background:white; color:#172033; font-size:.68rem; box-shadow:0 2px 8px #0002; }
