main { max-width: 1680px; }
.workspace { display: grid; grid-template-columns: minmax(0, 660px) minmax(440px, 1fr); gap: 28px; align-items: start; }
.route-panel { min-width: 0; }
.hero { padding-top: 54px; }
.search-card { grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr); }
.search-card label:nth-of-type(1) { grid-column: 1; }
.search-card label:nth-of-type(2) { grid-column: 3; }
.search-card #swap-route { grid-column: 2; grid-row: 1; align-self: center; justify-self: center; width: 38px; height: 38px; min-height: 0; padding: 0; border: 1px solid #dcd8d0; border-radius: 50%; background: #fffdfa; color: var(--ink); font-size: 25px; line-height: 1; }
.search-card #swap-route:hover, .search-card #swap-route:focus-visible { background: var(--ink); color: #fff; }
.search-card button[type="submit"] { grid-column: 1 / -1; min-height: 54px; }
.map-panel { position: sticky; top: 20px; margin-top: 54px; background: var(--card); border: 1px solid #dcd8d0; border-radius: 16px; overflow: hidden; box-shadow: 0 13px 28px #31261112; }
.map-heading { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 18px 20px; }
.map-heading h2 { margin: 0; font-size: 20px; letter-spacing: -.04em; }
.map-heading a { color: var(--ink); font-size: 12px; font-weight: 800; text-decoration: none; border-bottom: 1px solid var(--ink); text-align: right; }
#route-map { height: min(72vh, 760px); min-height: 480px; background: #e8e8e2; }
.map-legend { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 20px 3px; color: var(--muted); font-size: 12px; }
.map-stops { display: grid; gap: 8px; padding: 14px 20px 0; }
.map-stops:empty { display: none; }
.map-stop { display: flex; align-items: center; gap: 10px; font-size: 12px; line-height: 1.4; }
.map-stop-number, .route-point-marker { display: grid; place-items: center; flex: 0 0 auto; width: 27px; height: 27px; border-radius: 50%; background: var(--ink); color: #fff; font: 800 12px Manrope, Arial, sans-serif; box-shadow: 0 2px 8px #0004; }
.map-stop.transfer .map-stop-number, .route-point-marker.transfer { background: var(--coral); }
.map-stop strong { font-weight: 800; }
.map-stop small { color: var(--muted); font-size: 11px; }
.route-point-tooltip { background: #fffdfa; border: 1px solid #16191d; border-radius: 5px; color: #16191d; box-shadow: 0 2px 8px #0003; font: 800 11px Manrope, Arial, sans-serif; padding: 5px 7px; }
.route-point-tooltip::before { border-top-color: #16191d !important; }
.map-line { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid #e5e0d7; border-radius: 6px; font-weight: 800; color: var(--ink); }
.map-line i { display: inline-block; width: 17px; height: 4px; background: var(--line); border-radius: 5px; }
.map-note { margin: 0; padding: 8px 20px 18px; font-size: 11px; line-height: 1.5; color: var(--muted); }
.map-stop-label { font: 700 12px Manrope, Arial, sans-serif; }
@media (max-width: 1080px) { .workspace { grid-template-columns: minmax(0, 1fr); } .map-panel { position: static; margin-top: 0; } #route-map { height: 480px; min-height: 360px; } }
@media (max-width: 690px) { .hero { padding-top: 38px; } .search-card #swap-route { display: block; margin: 4px auto; transform: rotate(90deg); } .map-heading { align-items: flex-start; } .map-heading h2 { font-size: 17px; } #route-map { height: 390px; min-height: 0; } }
