.TrainJourneySearch-module__yIOAgW__form{--board-toolbar-control-min-height:2.75rem;--board-toolbar-control-font-size:var(--type-body);width:100%;min-width:0;color:var(--text-primary);font-size:var(--type-body);gap:1rem;display:grid;position:relative}.TrainJourneySearch-module__yIOAgW__form button:focus-visible{outline:var(--focus-ring-width) solid var(--text-primary);outline-offset:3px;box-shadow:0 0 0 3px var(--surface-elevated)}.TrainJourneySearch-module__yIOAgW__actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.TrainJourneySearch-module__yIOAgW__planner{border:1px solid var(--border-subtle);background:var(--surface-elevated);border-radius:.75rem;grid-template-columns:minmax(0,1fr);gap:0}.TrainJourneySearch-module__yIOAgW__planner .TrainJourneySearch-module__yIOAgW__actions{border-top:1px solid var(--border-subtle);justify-content:space-between;gap:.5rem 1rem;min-width:0;padding:.625rem 1rem}.TrainJourneySearch-module__yIOAgW__planner .TrainJourneySearch-module__yIOAgW__actions>div>button{background:var(--color-mist);border-color:#0000;font-weight:500}.TrainJourneySearch-module__yIOAgW__planner .TrainJourneySearch-module__yIOAgW__actions>div>button:hover{color:var(--accent-train);background:var(--surface-card-hover)}.TrainJourneySearch-module__yIOAgW__dateLabel{color:var(--text-secondary);font-size:var(--type-meta);font-weight:500}@media (min-width:48rem){.TrainJourneySearch-module__yIOAgW__planner{grid-template-columns:minmax(0,1fr) auto;align-items:stretch}.TrainJourneySearch-module__yIOAgW__planner .TrainJourneySearch-module__yIOAgW__actions{border-top:0;border-left:1px solid var(--border-subtle);flex-direction:column;justify-content:center;align-items:flex-start;gap:.25rem;min-width:12rem;padding:.75rem 1.25rem}.TrainJourneySearch-module__yIOAgW__planner .TrainJourneySearch-module__yIOAgW__error{grid-column:1/-1}}.TrainJourneySearch-module__yIOAgW__submit{border:1px solid var(--accent-train);min-height:3.15rem;color:var(--surface-elevated);background:var(--accent-train);cursor:pointer;font-size:var(--type-body);border-radius:.8rem;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;font-weight:500;transition:background-color .16s;display:inline-flex}.TrainJourneySearch-module__yIOAgW__submit span{font-size:1.1rem}.TrainJourneySearch-module__yIOAgW__submit:hover,.TrainJourneySearch-module__yIOAgW__submit:focus-visible{background:var(--text-primary)}.TrainJourneySearch-module__yIOAgW__error{min-height:1.2rem;color:var(--status-danger);font-size:var(--type-meta);margin:0;font-weight:400;line-height:1.45}@media (prefers-reduced-motion:reduce){.TrainJourneySearch-module__yIOAgW__submit{transition:none}}
.TrainHubPage-module__XKzW-W__page{min-height:100%;color:var(--text-primary);background:var(--surface-page);overflow-wrap:anywhere}.TrainHubPage-module__XKzW-W__band{width:100%;padding:clamp(4rem,8vw,8rem) 1rem}.TrainHubPage-module__XKzW-W__inner{width:100%;max-width:120rem;margin:0 auto}.TrainHubPage-module__XKzW-W__heroBand{padding-top:max(var(--page-header-clearance), clamp(6.75rem, 10vw, 9rem))}.TrainHubPage-module__XKzW-W__heroGrid{align-items:center;gap:clamp(2.5rem,5vw,5rem);display:grid}.TrainHubPage-module__XKzW-W__heroCopy{gap:1.5rem;display:grid}.TrainHubPage-module__XKzW-W__heroTitle,.TrainHubPage-module__XKzW-W__sectionTitle,.TrainHubPage-module__XKzW-W__mapTitle,.TrainHubPage-module__XKzW-W__stationLookupIntro h2{font-family:var(--font-serif);font-optical-sizing:auto;font-variation-settings:"opsz" 144, "SOFT" 50;font-weight:var(--font-weight-editorial);letter-spacing:var(--fraunces-letter-spacing);line-height:var(--fraunces-line-height);text-wrap:balance;margin:0}.TrainHubPage-module__XKzW-W__heroTitle{max-width:16ch;font-size:var(--type-page-title);display:grid}.TrainHubPage-module__XKzW-W__heroTitle span{display:block}.TrainHubPage-module__XKzW-W__italicTitleLine{font-family:var(--font-serif-italic);font-variation-settings:"opsz" 144, "SOFT" 100;font-style:italic}.TrainHubPage-module__XKzW-W__mapDescription{max-width:38ch;font-size:var(--type-body-large);margin:0;font-weight:400;line-height:1.65}.TrainHubPage-module__XKzW-W__planner{z-index:20;border:1px solid var(--border-subtle);background:var(--surface-elevated);border-radius:1.25rem;gap:1.5rem;width:100%;max-width:48rem;padding:clamp(1rem,3vw,2.5rem);display:grid;position:relative}.TrainHubPage-module__XKzW-W__stationBand{background:var(--surface-muted)}.TrainHubPage-module__XKzW-W__searchModes{background:var(--surface-muted);border-radius:.9rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:.375rem;padding:.375rem;display:grid}.TrainHubPage-module__XKzW-W__searchModes button{min-width:0;min-height:3rem;color:var(--accent-train);font:inherit;font-size:var(--type-body);cursor:pointer;background:0 0;border:0;border-radius:.65rem;padding:.65rem .75rem;font-weight:600;line-height:1.4}.TrainHubPage-module__XKzW-W__searchModes button:hover{background:var(--surface-elevated)}.TrainHubPage-module__XKzW-W__searchModes button[aria-selected=true]{color:var(--surface-elevated);background:var(--accent-train)}.TrainHubPage-module__XKzW-W__searchPanels{display:grid}.TrainHubPage-module__XKzW-W__searchPanel{grid-area:1/1;min-width:0}.TrainHubPage-module__XKzW-W__searchPanel[hidden]{visibility:hidden;pointer-events:none;display:block}.TrainHubPage-module__XKzW-W__stationPanel{align-self:center}.TrainHubPage-module__XKzW-W__stationLookup{gap:1.5rem;display:grid}.TrainHubPage-module__XKzW-W__stationLookup button{overflow-wrap:normal}.TrainHubPage-module__XKzW-W__stationLookupIntro{gap:.75rem;display:grid}.TrainHubPage-module__XKzW-W__stationLookupIntro h2{font-size:var(--type-functional-title)}.TrainHubPage-module__XKzW-W__stationLookupIntro>p{color:var(--text-secondary);font-size:var(--type-body);margin:0;line-height:1.6}.TrainHubPage-module__XKzW-W__sectionTitle{max-width:18ch;font-size:var(--type-section-title)}.TrainHubPage-module__XKzW-W__recentStations{margin-bottom:clamp(2.5rem,5vw,4rem)}.TrainHubPage-module__XKzW-W__stationHeading{font-family:var(--font-serif);font-size:var(--type-functional-title);font-weight:var(--font-weight-editorial);line-height:var(--fraunces-line-height);margin:0 0 1.5rem}.TrainHubPage-module__XKzW-W__stationGrid,.TrainHubPage-module__XKzW-W__practicalGrid{column-gap:clamp(2rem,4vw,4rem);display:grid}.TrainHubPage-module__XKzW-W__stationCard{border-top:1px solid var(--border-subtle);align-content:space-between;gap:.5rem;min-width:0;padding:1rem 0;display:grid}.TrainHubPage-module__XKzW-W__stationIdentity{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.TrainHubPage-module__XKzW-W__stationIdentity h3{min-width:0;font-family:var(--font-inter);font-size:var(--type-body-large);margin:0;font-weight:600;line-height:1.4}.TrainHubPage-module__XKzW-W__stationIdentity .TrainHubPage-module__XKzW-W__stationCode{flex-shrink:0}.TrainHubPage-module__XKzW-W__practicalCopy h3{font-family:var(--font-serif);font-size:var(--type-card-title);font-weight:var(--font-weight-editorial);letter-spacing:var(--fraunces-letter-spacing);line-height:var(--fraunces-line-height);overflow-wrap:anywhere;margin:0}.TrainHubPage-module__XKzW-W__stationCode{color:var(--text-secondary);font-family:var(--font-jetbrains);font-size:var(--type-meta);letter-spacing:.06em;font-weight:500;line-height:1.5}.TrainHubPage-module__XKzW-W__stationActions{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.TrainHubPage-module__XKzW-W__stationActions a,.TrainHubPage-module__XKzW-W__mapAction,.TrainHubPage-module__XKzW-W__heroMapLink{min-height:2.75rem;color:var(--accent-train);font-size:var(--type-body);align-items:center;gap:.5rem;font-weight:500;text-decoration:none;display:inline-flex}.TrainHubPage-module__XKzW-W__heroMapLink{justify-self:start}.TrainHubPage-module__XKzW-W__stationGrid[data-collapsed=true]>:nth-child(n+5){display:none}.TrainHubPage-module__XKzW-W__showMoreStations{min-height:2.75rem;color:var(--accent-train);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;margin-top:.75rem;padding:.5rem 0;font-weight:600;display:inline-flex}.TrainHubPage-module__XKzW-W__stationActions a:focus-visible,.TrainHubPage-module__XKzW-W__heroMapLink:focus-visible,.TrainHubPage-module__XKzW-W__searchModes button:focus-visible,.TrainHubPage-module__XKzW-W__showMoreStations:focus-visible,.TrainHubPage-module__XKzW-W__directory summary:focus-visible,.TrainHubPage-module__XKzW-W__directoryLink:focus-visible,.TrainHubPage-module__XKzW-W__practicalLink:focus-visible,.TrainHubPage-module__XKzW-W__mapAction:focus-visible{outline:var(--focus-ring-width) solid currentColor;outline-offset:4px;border-radius:.2rem}.TrainHubPage-module__XKzW-W__directory{border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);margin-top:clamp(2rem,4vw,3rem)}.TrainHubPage-module__XKzW-W__directory summary{min-height:4rem;color:var(--accent-train);font-size:var(--type-body-large);cursor:pointer;justify-content:space-between;align-items:center;gap:1.5rem;padding:1rem 0;font-weight:500;line-height:1.5;list-style:none;display:flex}.TrainHubPage-module__XKzW-W__directory summary::-webkit-details-marker{display:none}.TrainHubPage-module__XKzW-W__disclosureIcon{flex:0 0 1rem;height:1rem;position:relative}.TrainHubPage-module__XKzW-W__disclosureIcon:before,.TrainHubPage-module__XKzW-W__disclosureIcon:after{content:"";background:currentColor;height:2px;position:absolute;inset:calc(50% - 1px) 0 auto}.TrainHubPage-module__XKzW-W__disclosureIcon:after{transform:rotate(90deg)}.TrainHubPage-module__XKzW-W__directory[open] .TrainHubPage-module__XKzW-W__disclosureIcon:after{display:none}.TrainHubPage-module__XKzW-W__directoryGrid{column-gap:clamp(1rem,3vw,3rem);padding-bottom:1.5rem;display:grid}.TrainHubPage-module__XKzW-W__directoryLink{min-height:3.75rem;color:var(--accent-train);font-size:var(--type-body);overflow-wrap:anywhere;grid-template-columns:3.5rem minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.75rem 0;line-height:1.5;text-decoration:none;display:grid}.TrainHubPage-module__XKzW-W__mapFeature{color:var(--surface-page);background:var(--accent-train);border-radius:1.25rem;display:grid;overflow:hidden}.TrainHubPage-module__XKzW-W__mapContent{align-content:center;justify-items:start;gap:1.5rem;padding:clamp(1.5rem,4vw,4rem);display:grid}.TrainHubPage-module__XKzW-W__mapTitle{max-width:15ch;font-size:var(--type-section-title)}.TrainHubPage-module__XKzW-W__mapAction{color:inherit;margin-top:.5rem}.TrainHubPage-module__XKzW-W__mapPicture{aspect-ratio:3/2;width:100%;min-width:0;display:block;position:relative}.TrainHubPage-module__XKzW-W__mapImage{object-fit:cover;object-position:center right;width:100%;height:100%;display:block}.TrainHubPage-module__XKzW-W__practicalBand{padding-top:0;padding-bottom:var(--page-end-space)}.TrainHubPage-module__XKzW-W__practicalTitle{margin-bottom:clamp(2rem,4vw,4rem)}.TrainHubPage-module__XKzW-W__practicalLink{border-top:1px solid var(--border-subtle);color:var(--accent-train);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.5rem;padding:2rem 0;text-decoration:none;display:grid}.TrainHubPage-module__XKzW-W__practicalCopy{gap:.75rem;display:grid}.TrainHubPage-module__XKzW-W__practicalCopy>span{max-width:38ch;color:var(--text-secondary);font-size:var(--type-body);line-height:1.65}@media (hover:hover) and (pointer:fine){.TrainHubPage-module__XKzW-W__stationActions a:hover>span,.TrainHubPage-module__XKzW-W__directory summary:hover>span:first-child,.TrainHubPage-module__XKzW-W__directoryLink:hover>span:nth-child(2),.TrainHubPage-module__XKzW-W__mapAction:hover>span,.TrainHubPage-module__XKzW-W__heroMapLink:hover>span,.TrainHubPage-module__XKzW-W__showMoreStations:hover>span:first-child,.TrainHubPage-module__XKzW-W__practicalLink:hover h3{text-underline-offset:.28em;text-decoration-skip-ink:auto;text-decoration-line:underline;text-decoration-thickness:1px}}@media (min-width:40rem){.TrainHubPage-module__XKzW-W__stationGrid[data-collapsed=true]>:nth-child(n+5){display:grid}.TrainHubPage-module__XKzW-W__showMoreStations{display:none}.TrainHubPage-module__XKzW-W__stationGrid,.TrainHubPage-module__XKzW-W__directoryGrid,.TrainHubPage-module__XKzW-W__practicalGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.TrainHubPage-module__XKzW-W__band{padding-left:2.5rem;padding-right:2.5rem}}@media (min-width:64rem){.TrainHubPage-module__XKzW-W__heroGrid{grid-template-columns:minmax(0,.85fr) minmax(0,1fr)}.TrainHubPage-module__XKzW-W__planner{justify-self:end}.TrainHubPage-module__XKzW-W__stationGrid{grid-template-columns:repeat(4,minmax(0,1fr))}.TrainHubPage-module__XKzW-W__directoryGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.TrainHubPage-module__XKzW-W__mapFeature{grid-template-columns:repeat(2,minmax(0,1fr))}.TrainHubPage-module__XKzW-W__mapPicture{min-height:100%}}@media (min-width:90rem){.TrainHubPage-module__XKzW-W__band{padding-left:4rem;padding-right:4rem}}@media (prefers-reduced-motion:reduce){.TrainHubPage-module__XKzW-W__page{scroll-behavior:auto}}
.JourneyFare-module__hmtO0W__fare{min-width:0;font-family:var(--font-inter);font-size:var(--type-meta);color:var(--text-secondary);text-align:right;grid-area:fare;grid-template-columns:minmax(0,1fr);align-self:center;align-items:center;gap:.5rem .75rem;display:grid}.JourneyFare-module__hmtO0W__price{overflow-wrap:anywhere;min-width:0;color:var(--text-primary);font-family:var(--font-jetbrains);font-variant-numeric:tabular-nums;grid-column:1;font-size:1.15rem;font-weight:500}.JourneyFare-module__hmtO0W__action{border:1px solid var(--border-control);background:var(--surface-elevated);width:100%;min-width:0;min-height:2.75rem;color:var(--accent-train);font:500 var(--type-meta) / 1.4 var(--font-inter);cursor:pointer;border-radius:.75rem;justify-content:center;justify-self:end;align-items:center;gap:.375rem;padding:.625rem;text-decoration:none;transition:color .12s,background-color .12s;display:inline-flex}.JourneyFare-module__hmtO0W__action svg{flex:none;width:1rem;height:1rem}.JourneyFare-module__hmtO0W__status{overflow-wrap:anywhere;grid-column:1/-1;line-height:1.5}.JourneyFare-module__hmtO0W__book{background:var(--accent-train);color:#fff;border-color:var(--accent-train)}.JourneyFare-module__hmtO0W__action:focus-visible{outline:var(--focus-ring-width) solid var(--text-primary);outline-offset:3px}@media (hover:hover) and (pointer:fine){.JourneyFare-module__hmtO0W__action:hover:not(:disabled){background:var(--color-mist)}.JourneyFare-module__hmtO0W__book:hover:not(:disabled){color:#fff;background:var(--text-primary);border-color:var(--text-primary)}}.JourneyFare-module__hmtO0W__action:disabled{cursor:wait}.JourneyFare-module__hmtO0W__note{color:var(--text-secondary);font-size:var(--type-meta);overflow-wrap:anywhere;grid-area:note;margin:0;line-height:1.6}.JourneyFare-module__hmtO0W__summary{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title refresh""note note""status status";align-items:center;gap:.375rem 1rem;display:grid}.JourneyFare-module__hmtO0W__summary>h2{grid-area:title;min-width:0}.JourneyFare-module__hmtO0W__summary .JourneyFare-module__hmtO0W__refresh{background:var(--color-mist);width:auto;max-width:100%;color:var(--accent-train);border-color:#0000;grid-area:refresh;gap:.5rem;padding-inline:.75rem}.JourneyFare-module__hmtO0W__summaryStatus{color:var(--text-secondary);font-size:var(--type-meta);overflow-wrap:anywhere;grid-area:status;margin:0;line-height:1.5}.JourneyFare-module__hmtO0W__summaryStatus:empty{display:none}@container (min-width:64rem){.JourneyFare-module__hmtO0W__fare{text-align:right;grid-template-columns:minmax(0,1fr) 6.5rem;gap:.5rem 1.25rem}.JourneyFare-module__hmtO0W__fare .JourneyFare-module__hmtO0W__action{grid-column:2}.JourneyFare-module__hmtO0W__summary{grid-template-areas:"title refresh""note refresh""status status"}}@container (max-width:16rem){.JourneyFare-module__hmtO0W__fare{text-align:left;grid-template-columns:minmax(0,1fr) 5.75rem}.JourneyFare-module__hmtO0W__fare .JourneyFare-module__hmtO0W__action{grid-column:2}.JourneyFare-module__hmtO0W__summary{grid-template-columns:minmax(0,1fr);grid-template-areas:"title""note""status""refresh"}.JourneyFare-module__hmtO0W__summary .JourneyFare-module__hmtO0W__refresh{justify-self:start}}@container (max-width:14rem){.JourneyFare-module__hmtO0W__fare{grid-template-columns:minmax(0,1fr)}.JourneyFare-module__hmtO0W__fare .JourneyFare-module__hmtO0W__action{grid-column:1}}@media (prefers-reduced-motion:reduce){.JourneyFare-module__hmtO0W__action{transition:none}}
