/* The site shell is a browser-local presentation layer. The original map remains full-screen by default. */
.site-only{display:none!important}
#mapStage{position:relative;width:100%;height:100dvh;min-height:620px;isolation:isolate}
html.shell-active{scroll-behavior:smooth}
html.shell-active body{background:#f7f4ec;overflow-x:hidden;color:#244d76}
html.shell-active .site-only{display:block!important}
html.shell-active .map-mobile-note{display:none!important}
html.shell-active #mapStage{height:min(84dvh,900px);min-height:650px;scroll-margin-top:76px;box-shadow:0 20px 70px #183d6120}
html.shell-active #mapStage>header,html.shell-active #mapStage>footer{display:none}
html.shell-active #mapStage .map-controls{top:96px}
html.shell-active #mapStage .sim-toggle{bottom:30px}
html.shell-active #mapStage .simulation{bottom:86px}
html.shell-active #mapStage .playback-dock{bottom:28px}
html.shell-active .screen-too-small #mobileUnsupported{display:none}
html.shell-active.screen-too-small #mobileUnsupported{display:none}
html.shell-active.screen-too-small #siteShellTop,html.shell-active.screen-too-small #siteContent{visibility:visible}
html.shell-active.screen-too-small #mapStage{min-height:380px;height:56dvh;background:#dce8ec}
html.shell-active.screen-too-small #mapStage .map-mobile-note{display:grid!important}

html.shell-active .shell-setting{display:block!important;margin:0 0 10px;font-weight:800}
html.shell-active .site-topbar{height:76px;background:#fbf8ef;display:flex;align-items:center;justify-content:space-between;gap:32px;padding:0 clamp(24px,5vw,90px);border-bottom:1px solid #d9e4e8;position:relative;z-index:12}
.site-wordmark{display:flex;align-items:center;gap:13px;color:#244d76;text-decoration:none;white-space:nowrap;font:26px Lobster,Georgia,serif}
.site-star{font:42px Georgia,serif;color:#bd4646;line-height:1}
.site-topbar nav{display:flex;align-items:center;gap:clamp(18px,2.3vw,42px)}
.site-topbar nav a,.site-footer a{color:#244d76;text-decoration:none;font-size:12px;font-weight:800}
.site-topbar nav a:hover,.site-footer a:hover{color:#bd4646}
.site-top-cta{background:#244d76;color:#fff9ec;text-decoration:none;padding:12px 17px;border-radius:3px;font-size:11px;font-weight:800;white-space:nowrap}
.site-top-cta span,.hero-button span{margin-left:12px;font-size:17px;vertical-align:middle}
.site-hero{height:calc(100dvh - 76px);min-height:670px;position:relative;overflow:hidden;background:radial-gradient(circle at 76% 21%,#567ca0 0,#244c77 30%,#15375e 63%,#0c294b 100%);color:#fff8ed}
.hero-stars{position:absolute;inset:0;opacity:.68;background-image:radial-gradient(#fff8e8 1px,transparent 1.6px),radial-gradient(#fff8e8 1px,transparent 1.6px);background-size:83px 97px,131px 151px;background-position:12px 25px,38px 70px;mask-image:linear-gradient(180deg,#000,transparent 87%)}
.hero-inner{position:relative;z-index:2;max-width:1480px;margin:auto;padding:clamp(85px,13vh,165px) clamp(34px,8vw,160px) 0}
.hero-overline{font-size:11px;font-weight:800;letter-spacing:.3em;color:#e6d5b0;display:flex;align-items:center;gap:12px}
.hero-overline span{font-size:18px;letter-spacing:0}
.site-hero h1{font:400 clamp(78px,10.4vw,170px)/.95 Lobster,Georgia,serif;letter-spacing:-.02em;margin:22px 0 27px;text-shadow:0 12px 36px #0b213b44}
.site-hero h1 em,.site-section h2 em{font-style:normal;color:#e9c685}
.hero-copy{max-width:540px;font-size:16px;line-height:1.75;color:#e1edf3}
.hero-actions{display:flex;align-items:center;gap:28px;margin-top:34px}
.hero-button{background:#bd4746;color:#fffdf4;padding:17px 24px;text-decoration:none;font-size:13px;font-weight:800;border-radius:3px;box-shadow:0 13px 36px #09203d3d}
.hero-button:hover{background:#d35452}
.hero-secondary{color:#f4ead9;text-decoration:none;font-size:12px;font-weight:800;border-bottom:1px solid #ffffff75;padding:12px 0}
.hero-secondary span{margin-left:13px}
.hero-facts{display:flex;gap:25px;align-items:center;margin-top:60px;color:#cbdce7;font-size:11px;letter-spacing:.03em}
.hero-facts b{font-size:20px;color:#fff9ed;margin-right:4px}
.hero-facts i{height:20px;border-left:1px solid #ffffff4d}
.hero-visual{position:absolute;inset:0;pointer-events:none;z-index:1}
.hero-moon{position:absolute;right:12%;top:12%;width:min(33vw,490px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 41% 36%,#fffef7,#e4e8e4 55%,#c3d5db);box-shadow:0 0 130px #e6f1ed5c,0 0 22px #fff9ed;opacity:.94}
.hero-hills{position:absolute;bottom:0;left:0;right:0;height:24%;background:radial-gradient(ellipse at 20% 96%,#f7f7f2 0 28%,transparent 28.3%),radial-gradient(ellipse at 70% 115%,#d9e6e8 0 38%,transparent 38.3%),linear-gradient(transparent 30%,#ebf1ee 100%)}
.hero-train{position:absolute;bottom:11%;left:38%;right:-7%;height:min(17vw,230px);display:flex;align-items:end;justify-content:flex-end;filter:drop-shadow(0 16px 9px #11233d99);transform:rotate(-2deg)}
.hero-train img{width:34%;max-height:100%;object-fit:contain;margin-left:-3%}
.hero-train img:last-child{width:37%}
.hero-track{position:absolute;bottom:8%;left:34%;right:-2%;height:18px;border-top:3px solid #dce8e5;border-bottom:3px solid #c6d7df;transform:rotate(-2deg);opacity:.8}
.hero-scroll{position:absolute;bottom:32px;left:clamp(34px,8vw,160px);z-index:3;color:#d9e7ed;text-decoration:none;font-size:10px;font-weight:800;letter-spacing:.15em}
.hero-scroll span{margin-left:12px}
.map-anchor{position:absolute;top:0;left:0}
.site-map-label{position:absolute;z-index:710;top:25px;left:34px;background:#fffaf0f0;padding:12px 17px;border-radius:6px;box-shadow:0 8px 25px #1a436025;pointer-events:none}
.site-map-label span{display:block;color:#bb4748;font-size:9px;font-weight:800;letter-spacing:.16em;margin-bottom:4px}
.site-map-label strong{font:23px Lobster,serif;color:#244d76}
.map-mobile-note{display:none!important;position:absolute;z-index:801;inset:0;place-content:center;text-align:center;background:#dce8ec;padding:25px;color:#244d76}
.map-mobile-note strong{font:26px Lobster,serif}.map-mobile-note p{font-size:13px;margin-top:8px}
#siteContent{position:relative;z-index:2;background:#f7f4ec}
.site-section{padding:105px clamp(28px,6vw,110px);max-width:1600px;margin:0 auto}
.section-index{font-size:10px;font-weight:800;letter-spacing:.18em;color:#bf4d4b}
.site-section h2{font:400 clamp(44px,5vw,72px)/1.08 Lobster,Georgia,serif;color:#244d76;margin:20px 0 0}
.site-section h2 em{color:#bd4746}
.site-intro{display:grid;grid-template-columns:1.05fr .95fr;gap:9vw;align-items:center;padding-top:130px;padding-bottom:130px}
.intro-text{max-width:570px}.intro-text p{font-size:16px;line-height:1.9;color:#526d84;margin-bottom:20px}.intro-text a{color:#bd4746;font-weight:800;text-decoration:none;font-size:13px}
.programmes-section{max-width:none;background:#e8eef2;padding-left:max(clamp(28px,6vw,110px),calc((100vw - 1480px)/2));padding-right:max(clamp(28px,6vw,110px),calc((100vw - 1480px)/2))}
.section-heading{display:flex;flex-direction:column;align-items:flex-start}.section-heading>p{max-width:610px;margin:20px 0 0;font-size:14px;line-height:1.8;color:#58718a}
.programme-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:43px}
.programme-card{background:#fffdf6;border-radius:12px;min-height:460px;padding:35px;position:relative;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 18px 40px #1c466211}
.programme-card.short{background:#21486f;color:#fff9ee}
.programme-badge{font-size:10px;letter-spacing:.14em;font-weight:800;color:#bb4a49}.short .programme-badge{color:#d8c793}
.programme-art{height:155px;display:grid;align-items:center;margin:12px 0 18px;overflow:hidden}.programme-art img{width:100%;height:155px;object-fit:contain;filter:drop-shadow(0 8px 4px #142c4b2b)}
.programme-card h3{font:32px Lobster,serif;margin:0 0 13px}.programme-card p{font-size:13px;line-height:1.75;color:#5c7387;max-width:560px}.programme-card.short p{color:#d3e1e9}
.programme-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #dae3e7;margin-top:auto;padding-top:28px;font-size:10px;color:#687f91}.programme-bottom a{color:#bd4746;font-size:11px;font-weight:800;text-decoration:none}.short .programme-bottom{border-color:#ffffff39;color:#c8dae4}.short .programme-bottom a{color:#fff4d8}
.programme-note{font-size:11px;color:#657e91;margin-top:21px}
.carriage-section{padding-top:130px;padding-bottom:130px}.carriage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:46px}.carriage-grid article{background:#fffdf8;border-top:3px solid #bb4847;padding:26px 22px 30px;min-height:220px;box-shadow:0 10px 32px #21486f0d}.carriage-grid span{color:#bd4746;font-size:11px;font-weight:800}.carriage-grid h3{font:23px Lobster,serif;margin:24px 0 11px}.carriage-grid p{font-size:12px;line-height:1.7;color:#617990}
.visit-section{max-width:none;background:#21486f;color:#fff9ec;padding-left:max(clamp(28px,6vw,110px),calc((100vw - 1480px)/2));padding-right:max(clamp(28px,6vw,110px),calc((100vw - 1480px)/2))}.visit-section h2{color:#fff9ec}.visit-section h2 em{color:#e7c38b}.visit-section .section-index{color:#e5bb86}.visit-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:62px}.visit-steps>div{border-top:1px solid #ffffff50;padding-top:20px}.visit-steps b{font:42px Lobster,serif;color:#e5c18b}.visit-steps h3{font:24px Lobster,serif;margin:22px 0 10px}.visit-steps p{font-size:12px;line-height:1.8;color:#d1e0e9}.visit-callout{margin-top:70px;background:#fff9ec;color:#244d76;border-radius:10px;padding:32px;display:grid;grid-template-columns:.5fr 1.4fr auto;align-items:center;gap:25px}.visit-callout span{color:#b74949;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.visit-callout strong{font-size:15px;line-height:1.5}.visit-callout a{background:#bd4746;color:white;text-decoration:none;padding:14px 16px;white-space:nowrap;font-size:11px;font-weight:800}
.faq-section{padding-top:130px;padding-bottom:130px}.faq-list{margin-top:48px;max-width:1000px}.faq-list details{border-bottom:1px solid #c8d7df}.faq-list summary{list-style:none;cursor:pointer;padding:22px 45px 22px 0;font-size:16px;font-weight:800;position:relative}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary::after{content:'+';position:absolute;right:12px;top:17px;font:28px Manrope,sans-serif;color:#b74949}.faq-list details[open] summary::after{content:'−'}.faq-list details p{color:#59738a;font-size:13px;line-height:1.8;max-width:750px;margin:0 0 23px}.faq-more{display:inline-block;color:#bd4746;text-decoration:none;font-size:12px;font-weight:800;margin-top:30px}
.site-footer{background:#16385e;padding:48px clamp(28px,6vw,110px);display:grid;grid-template-columns:2fr 1fr 1fr;gap:30px;color:#fff9ec}.site-footer>div{display:flex;flex-direction:column;gap:13px}.site-footer .site-star{font-size:32px}.site-footer strong{font:26px Lobster,serif}.site-footer p,.site-footer small{color:#acc6d7;font-size:11px}.site-footer a{color:#fff9ec}
@media(max-width:1050px){.site-topbar nav{display:none}.hero-inner{padding-top:13vh}.hero-train{left:25%;right:-17%;bottom:11%;height:20vw}.hero-moon{right:-3%}.hero-copy{max-width:480px}.site-intro{gap:5vw}.carriage-grid{grid-template-columns:repeat(2,1fr)}.visit-callout{grid-template-columns:1fr}.visit-callout a{justify-self:start}}
@media(max-width:700px){.site-topbar{height:66px;padding:0 20px}.site-wordmark{font-size:21px}.site-star{font-size:31px}.site-top-cta{display:none}.site-hero{height:calc(100svh - 66px);min-height:620px}.hero-inner{padding:70px 28px 0}.hero-overline{font-size:8px;letter-spacing:.19em}.site-hero h1{font-size:clamp(65px,13vw,105px);margin:20px 0}.hero-copy{font-size:13px;max-width:360px}.hero-actions{align-items:flex-start;flex-direction:column;gap:10px;margin-top:22px}.hero-button{padding:14px 18px;font-size:11px}.hero-facts{gap:12px;margin-top:28px;font-size:9px}.hero-facts b{font-size:15px}.hero-moon{width:66vw;top:34%;right:-17%;opacity:.6}.hero-train{left:0;right:-39%;bottom:9%;height:24vw;min-height:95px}.hero-track{bottom:7%;left:-10%}.hero-scroll{left:28px;bottom:18px}.site-map-label{left:15px;top:15px;padding:8px 11px}.site-map-label strong{font-size:18px}.site-section{padding:70px 24px}.site-intro{display:block}.intro-text{margin-top:28px}.intro-text p{font-size:13px}.programme-grid{grid-template-columns:1fr}.programme-card{min-height:400px;padding:25px}.programme-art{height:120px}.programme-art img{height:120px}.carriage-grid{grid-template-columns:1fr 1fr}.visit-steps{grid-template-columns:1fr;gap:24px}.site-footer{grid-template-columns:1fr 1fr}.site-footer>div:first-child{grid-column:1/-1}.faq-list summary{font-size:14px}}
@media(max-width:480px){.hero-facts{display:none}.carriage-grid{grid-template-columns:1fr}.site-footer{grid-template-columns:1fr}.site-footer>div:first-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){html.shell-active{scroll-behavior:auto}}
html.shell-active .site-footer{position:relative;left:auto;right:auto;bottom:auto;z-index:auto;pointer-events:auto;font-size:inherit;justify-content:initial}
.city-search-section{display:flex;align-items:center;justify-content:space-between;gap:45px;max-width:1600px;margin:0 auto;padding:36px clamp(28px,6vw,110px);background:#fffaf0;border-bottom:1px solid #dce5e8}
.city-search-section h2{font:32px Lobster,Georgia,serif;margin:8px 0 0}.city-search-section form{width:min(590px,53%)}.city-search-section label{display:block;font-size:10px;font-weight:800;margin-bottom:8px;color:#6a8093}.city-search-control{display:flex}.city-search-control input{min-width:0;flex:1;background:white;border:1px solid #cbd9e1;border-right:0;padding:14px;font:13px Manrope,Arial,sans-serif;color:#244d76}.city-search-control button{background:#bd4746;color:white;border:0;padding:0 20px;font:800 11px Manrope,Arial,sans-serif;cursor:pointer}.city-search-section p{font-size:10px;color:#bd4746;min-height:16px;margin-top:5px}
@media(max-width:700px){.city-search-section{display:block;padding:27px 24px}.city-search-section h2{font-size:26px}.city-search-section form{width:100%;margin-top:23px}.city-search-control button{padding:0 10px;font-size:9px}}
/* v1.1 photographic shell and visitor controls */
html.shell-active .site-hero{background:linear-gradient(90deg,rgba(5,13,26,.72) 0%,rgba(7,18,33,.48) 36%,rgba(7,18,33,.03) 76%),url('assets/hero-new.jpg') center center/cover no-repeat}
html.shell-active .hero-stars{opacity:.23}
.hero-photo-credit{position:absolute;right:26px;bottom:22px;color:#e6eff5c9;font-size:10px;z-index:3}
html.shell-active .site-intro{grid-template-columns:.8fr .9fr 1.15fr;gap:4vw}
.intro-photo{margin:0;position:relative;align-self:stretch;min-height:360px;border-radius:12px;overflow:hidden;box-shadow:0 25px 50px #14385e25}
.intro-photo img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}
.intro-photo figcaption{position:absolute;bottom:0;left:0;right:0;padding:30px 18px 16px;background:linear-gradient(transparent,#0a203acc);color:white;font-size:12px;font-weight:700}
.intro-photo figcaption span{display:block;font-size:9px;font-weight:400;margin-top:5px}
.programme-card.long{background:#853638;color:#fffaf1}.programme-card.long .programme-badge{color:#f7cfaa}.programme-card.long p{color:#f4e6e2}.programme-card.long .programme-bottom{border-color:#ffffff40;color:#f4e6e2}.programme-card.long .programme-bottom a{color:#fff4dc}
.programme-card.short{background:#21486f;color:#fff9ee}
.programme-art{height:195px;margin:2px -17px 19px;border-radius:7px;overflow:hidden}.programme-art img{width:100%;height:100%;object-fit:cover;filter:none}
.carriage-grid article{padding:0 0 26px;overflow:hidden}.carriage-grid article img{width:100%;height:170px;object-fit:cover;display:block}.carriage-grid article span,.carriage-grid article h3,.carriage-grid article p{margin-left:20px;margin-right:20px}.carriage-grid article span{display:block;margin-top:18px}.carriage-grid h3{margin-top:10px}
.city-search-section{scroll-margin-top:20px;position:relative;z-index:20}.city-search-section form{position:relative}.city-search-control{position:relative}.city-search-control input{border-radius:5px 0 0 5px}.city-search-control input:focus{outline:none;border-color:#bd4746;box-shadow:0 0 0 3px #bd474629}.city-search-control input.attention{animation:city-attention 1.25s ease-out 3}@keyframes city-attention{0%,100%{box-shadow:0 0 0 0 #bd474600}45%{box-shadow:0 0 0 8px #bd474646}}
.city-options{position:absolute;top:calc(100% + 5px);left:0;right:0;max-height:280px;overflow:auto;background:#fffdf7;border:1px solid #d6dfe5;border-radius:8px;box-shadow:0 16px 45px #173b5d30;z-index:50;padding:5px}.city-options[hidden]{display:none}.city-option{display:block;width:100%;padding:10px 13px;border:0;border-radius:5px;background:transparent;text-align:left;color:#244d76;font:700 12px Manrope,Arial,sans-serif;cursor:pointer}.city-option:hover,.city-option.is-active{background:#e7eef3;color:#a53539}.city-empty{padding:12px;color:#9f3f43;font-size:12px}
.route-overview{padding-top:85px;padding-bottom:110px}.route-overview-art{position:relative;margin:35px 0 15px;height:140px;background:linear-gradient(135deg,#dfeaf0,#f5f5ed);border-radius:12px;overflow:hidden}.route-overview-art svg{width:100%;height:100%;padding:0 2%}.route-overview-art span{position:absolute;bottom:10px;color:#285377;font-size:11px;font-weight:800}.route-overview-art span:nth-of-type(1){left:3%}.route-overview-art span:nth-of-type(2){left:44%}.route-overview-art span:nth-of-type(3){right:2%}.route-key{display:flex;gap:22px;font-size:11px;color:#53728b;margin-bottom:27px}.route-key span{display:flex;align-items:center;gap:7px}.route-key i{width:10px;height:10px;background:#bc4748;border-radius:50%}.route-key span:nth-child(2) i{background:#3188b8}.route-station-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.route-month{background:#fffdf8;border:1px solid #dbe3e8;border-radius:12px;padding:20px 15px;box-shadow:0 8px 28px #173b5d0b}.route-month h3{font:27px Lobster,Georgia,serif;color:#244d76;margin:0 0 15px 9px}.route-stop{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;background:transparent;border:0;border-radius:6px;text-align:left;color:#285377;cursor:pointer;font:11px Manrope,Arial,sans-serif}.route-stop:hover,.route-stop:focus-visible{background:#e9f0f3;outline:none}.route-stop-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#ba4848}.route-stop.short .route-stop-dot{background:#3188b8}.route-stop time{color:#6b8397;min-width:35px}.route-stop strong{font-weight:800}
html.shell-active .arrival-board.is-map{position:absolute;z-index:1100}
html.shell-active #mapStage:fullscreen{width:100vw;height:100vh;min-height:0;margin:0;scroll-margin:0;box-shadow:none;background:#e7eff3}
html.shell-active #mapStage:fullscreen .site-map-label{top:25px}
html.shell-active #mapStage:fullscreen .map-controls{top:40px}
html.shell-active #mapStage:fullscreen .simulation{max-height:calc(100vh - 110px);overflow:auto}
html.map-is-fullscreen,html.map-is-fullscreen body{overflow:hidden!important;overscroll-behavior:none}
@media(max-width:1050px){html.shell-active .site-intro{grid-template-columns:1fr 1fr}.intro-photo{grid-column:1/-1;height:320px;min-height:0}.route-station-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:799px){html.shell-active #mapStage{position:absolute;left:-9999px;width:1000px;height:650px;min-height:0;box-shadow:none}.site-map-label,.map-mobile-note{display:none!important}html.shell-active .site-intro{display:block}.intro-photo{height:280px;margin-top:28px}.route-station-list{grid-template-columns:1fr}.route-overview-art{height:100px}.route-overview-art span{font-size:8px}.city-search-section{display:block}.city-search-section form{width:100%;margin-top:20px}.city-search-control button{font-size:10px;padding:0 12px}html.shell-active .arrival-board.is-page{position:fixed;z-index:3000}}
@media(max-width:500px){html.shell-active .site-hero{background-position:center center,center center}.hero-photo-credit{font-size:8px}.route-key{font-size:9px;gap:10px}}
.magic-transition{position:fixed;inset:0;z-index:10000;background:radial-gradient(circle at 50% 55%,#3c6892,#17385e 45%,#071b34);color:#fff8e9;display:grid;place-items:center;animation:magic-in .6s ease-out both}.magic-center{text-align:center;position:relative;z-index:1;animation:magic-pop 1.3s cubic-bezier(.2,.8,.2,1) both}.magic-center span{display:block;font-size:72px;color:#e7c98b;animation:magic-spin 2.3s ease-in-out both}.magic-center strong{display:block;font:clamp(42px,6vw,82px) Lobster,Georgia,serif}.magic-center small{display:block;margin-top:13px;font:700 12px Manrope,Arial,sans-serif;letter-spacing:.13em}.magic-stars{position:absolute;inset:0;background-image:radial-gradient(#fff 2px,transparent 3px),radial-gradient(#e7c98b 1.5px,transparent 2.5px);background-size:71px 79px,103px 97px;animation:magic-stars 2.3s linear both}@keyframes magic-in{from{opacity:0}to{opacity:1}}@keyframes magic-pop{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes magic-spin{from{transform:rotate(-135deg) scale(.3)}to{transform:rotate(180deg) scale(1)}}@keyframes magic-stars{from{background-position:0 0,0 0;opacity:0}to{background-position:160px 220px,-110px 250px;opacity:1}}@media(prefers-reduced-motion:reduce){.magic-transition,.magic-center,.magic-center span,.magic-stars{animation:none}}
/* v1.2 accessible monthly timetable */
.route-station-list{display:grid;grid-template-columns:1fr;gap:12px;margin-top:22px}
.route-month{padding:0;overflow:hidden}
.route-month summary{list-style:none;display:flex;align-items:center;gap:18px;cursor:pointer;padding:19px 25px;background:#fffdf8}
.route-month summary::-webkit-details-marker{display:none}
.route-month summary strong{font:28px Lobster,Georgia,serif;color:#244d76}
.route-month summary span{font:700 11px Manrope,Arial,sans-serif;color:#698296}
.route-month summary b{margin-left:auto;color:#b84747;font-size:24px;transition:transform .2s}
.route-month[open] summary b{transform:rotate(180deg)}
.route-month-stops{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 14px;max-height:470px;overflow-y:auto;overscroll-behavior:contain;padding:8px 20px 20px;border-top:1px solid #e1e8eb}
.route-stop{display:grid;grid-template-columns:10px 58px minmax(130px,1fr) 120px 14px;gap:9px;padding:11px 10px;font-size:12px;min-height:44px}
.route-stop time{min-width:0;white-space:nowrap}.route-stop strong{min-width:0}.route-stop-hours{font-size:10px;color:#617e91;white-space:nowrap;text-align:right}.route-stop-arrow{color:#b74949;text-align:right}
@media(max-width:1000px){.route-month-stops{grid-template-columns:1fr}}
@media(max-width:520px){.route-month summary{padding:16px}.route-month-stops{padding:5px 10px 14px;max-height:420px}.route-stop{grid-template-columns:9px 48px minmax(100px,1fr) 12px;gap:6px;font-size:11px}.route-stop-hours{grid-column:3;grid-row:2;text-align:left}.route-stop-arrow{grid-column:4;grid-row:1}}
.faq-search-label{display:block;margin-top:35px;margin-bottom:8px;color:#647f94;font-size:10px;font-weight:800}.faq-search{width:min(100%,690px);padding:15px 18px;border:1px solid #c8d8e0;border-radius:7px;background:#fffdf8;color:#244d76;font:13px Manrope,Arial,sans-serif}.faq-search:focus{outline:2px solid #b94748;outline-offset:2px}.faq-search-empty{font-size:12px;color:#a33f42;margin-top:15px}.faq-list details[hidden]{display:none}.faq-list .faq-answer{padding:0 0 24px;color:#59738a;font-size:13px;line-height:1.8;max-width:1000px}.faq-list .faq-answer p{font-size:inherit;margin:0 0 12px;color:inherit}.faq-list .faq-answer ul,.faq-list .faq-answer ol{margin:8px 0 15px;padding-left:22px}.faq-list .faq-answer a{color:#ad4144}.faq-action{display:inline-block;font-weight:800;text-decoration:none;border-bottom:1px solid currentColor;margin-top:10px}
/* v1.3: calm, readable city picker */
.city-search-control .city-options{max-height:min(380px,55vh);padding:8px;background:#fffdf8;border:1px solid #d6dfe5;border-radius:10px;box-shadow:0 24px 55px #173b5d29;overscroll-behavior:contain}
.city-search-control .city-options .city-option{display:flex;align-items:center;width:100%;min-height:46px;margin:0;padding:11px 16px;border:0;border-bottom:1px solid #e8edef;border-radius:0;background:transparent;color:#244d76;text-align:left;font:700 13px/1.45 Manrope,Arial,sans-serif;box-shadow:none;cursor:pointer}
.city-search-control .city-options .city-option:last-child{border-bottom:0}
.city-search-control .city-options .city-option:hover,.city-search-control .city-options .city-option.is-active{background:#edf3f5;color:#a53539;border-radius:6px}
.city-search-control .city-options .city-option:focus-visible{outline:2px solid #bd4746;outline-offset:-2px;border-radius:6px}
.city-search-control .city-options .city-empty{padding:18px 16px;font:600 13px/1.5 Manrope,Arial,sans-serif}
/* v1.5: photographic gallery and full route overview */
html.shell-active .site-intro{grid-template-columns:minmax(0,.8fr) minmax(0,.9fr) minmax(360px,1.15fr);gap:clamp(26px,3vw,58px)}
.intro-gallery{min-width:0;position:relative;align-self:stretch;min-height:390px;overflow:hidden;border-radius:14px;background:#173b5b;box-shadow:0 24px 55px #173b5d2b}
.gallery-photo{display:block;position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:#173b5b;cursor:zoom-in;overflow:hidden}
.gallery-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s ease,opacity .3s ease}
.gallery-photo:hover img{transform:scale(1.04)}
.gallery-photo>span{position:absolute;right:18px;top:17px;display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:#fdfaf0d9;color:#173b5b;font-size:21px}
.gallery-controls{position:absolute;bottom:16px;right:16px;display:flex;align-items:center;gap:4px;background:#fffaf0ef;border-radius:999px;padding:5px;color:#244d76;box-shadow:0 8px 25px #061b3266}
.gallery-controls button{width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:#244d76;font-size:20px;cursor:pointer}
.gallery-controls button:hover,.gallery-controls button:focus-visible{background:#e5edf1;outline:none}
.gallery-controls span{min-width:53px;text-align:center;font:800 10px Manrope,Arial,sans-serif;letter-spacing:.1em}
.gallery-lightbox{border:0;padding:0;max-width:none;max-height:none;width:100vw;height:100dvh;background:#06101df5;color:white;overflow:hidden}
.gallery-lightbox::backdrop{background:#06101df5}
.gallery-lightbox-inner{width:100%;height:100%;display:grid;place-items:center;padding:55px 82px}
.gallery-lightbox img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 20px 80px #0008}
.gallery-lightbox button{position:absolute;display:grid;place-items:center;width:48px;height:48px;border:1px solid #ffffff6b;border-radius:50%;background:#0b2237a8;color:#fff;font-size:26px;cursor:pointer}
.gallery-lightbox button:hover,.gallery-lightbox button:focus-visible{background:#bd4746;outline:2px solid #fff}
.gallery-lightbox-close{top:20px;right:24px}.gallery-lightbox-prev{left:22px;top:50%;transform:translateY(-50%)}.gallery-lightbox-next{right:22px;top:50%;transform:translateY(-50%)}
.route-map-wrap{position:relative;height:clamp(440px,49vw,620px);margin:36px 0 20px;border:1px solid #d9e3e7;border-radius:15px;overflow:hidden;box-shadow:0 20px 50px #173b5d20;background:#e7eff2}
#routeOverviewMap{width:100%;height:100%;background:#e7eff2}
#routeOverviewMap .leaflet-tile-pane{filter:brightness(1.08) saturate(.62) contrast(.91)}
#routeOverviewMap .leaflet-control-attribution{font-size:9px;background:#fffdf7c9}
#routeOverviewMap .leaflet-control-attribution a{color:#285377}
.route-map-heading{position:absolute;z-index:600;top:18px;left:18px;display:flex;flex-direction:column;gap:5px;max-width:calc(100% - 95px);padding:13px 18px;background:#fffdf7f2;border:1px solid #d9e4e8;border-radius:9px;box-shadow:0 10px 25px #173b5d25;color:#244d76;pointer-events:none}
.route-map-heading strong{font:24px Lobster,Georgia,serif}.route-map-heading span{font:700 10px Manrope,Arial,sans-serif;color:#607c90}
.route-map-controls{position:absolute;z-index:600;right:18px;top:18px;display:grid;gap:4px}
.route-map-controls button{width:38px;height:38px;border:1px solid #d9e4e8;border-radius:7px;background:#fffdf7f2;color:#244d76;box-shadow:0 5px 15px #173b5d1e;font-size:20px;cursor:pointer}
.route-map-controls button:hover,.route-map-controls button:focus-visible{background:#e6eef3;outline:2px solid #bd4746}
.route-map-tooltip{font:800 11px Manrope,Arial,sans-serif!important;color:#244d76!important;background:#fffdf8!important;border:1px solid #cfdee5!important;box-shadow:0 5px 15px #173b5d25!important}
.route-map-tooltip:before{display:none}
@media(max-width:1050px){html.shell-active .site-intro{grid-template-columns:1fr 1fr}.intro-gallery{grid-column:1/-1;height:420px;min-height:0}}
@media(max-width:799px){html.shell-active .site-intro{display:block}.intro-gallery{height:360px;margin-top:30px}.route-map-wrap{height:430px}.route-map-heading{top:10px;left:10px;padding:9px 12px}.route-map-heading strong{font-size:19px}.route-map-heading span{font-size:9px}.route-map-controls{top:10px;right:10px}}
@media(max-width:520px){.gallery-lightbox-inner{padding:55px 15px}.gallery-lightbox-prev{left:7px}.gallery-lightbox-next{right:7px}.gallery-lightbox button{width:38px;height:38px;font-size:22px}.route-map-heading{max-width:calc(100% - 60px)}.route-map-heading span{display:none}}
.magic-transition{overflow:hidden;transition:opacity .7s ease,visibility .7s ease}.magic-transition.is-revealing{opacity:0;visibility:hidden}.magic-burst{position:absolute;inset:-30%;background:repeating-conic-gradient(from 0deg at 50% 50%,#ffffff00 0deg 15deg,#f7d89a4a 16deg 18deg,#ffffff00 19deg 35deg);animation:magic-rays 2.7s ease-out both}.magic-flash{position:absolute;inset:0;background:#fff8de;opacity:0;animation:magic-flashes 2.6s ease-in-out both}.magic-transition .magic-center{animation:magic-pop 1.6s cubic-bezier(.2,.8,.2,1) both}.magic-transition .magic-center span{animation:magic-spin 2.6s ease-in-out both}@keyframes magic-rays{0%{opacity:0;transform:rotate(-25deg) scale(.25)}45%{opacity:.9}100%{opacity:0;transform:rotate(100deg) scale(1.4)}}@keyframes magic-flashes{0%,17%,38%,56%,100%{opacity:0}21%{opacity:.35}42%{opacity:.78}60%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.magic-burst,.magic-flash,.magic-transition .magic-center,.magic-transition .magic-center span{animation:none}}
/* v1.5 compact route timeline */
.route-timeline{margin-top:32px}
.route-timeline-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:15px}
.route-timeline-heading>div:first-child{display:flex;align-items:baseline;gap:16px}
.route-timeline-heading strong{font:32px Lobster,Georgia,serif;color:#244d76}
.route-timeline-arrows{display:flex;gap:7px}
.route-timeline-arrows button{width:42px;height:42px;border:1px solid #cbdce4;border-radius:50%;background:#fffdf8;color:#244d76;font-size:21px;cursor:pointer;box-shadow:0 5px 14px #173b5d12}
.route-timeline-arrows button:hover:not(:disabled),.route-timeline-arrows button:focus-visible{background:#244d76;color:#fff;outline:none}
.route-timeline-arrows button:disabled{opacity:.4;cursor:default}
.route-timeline-track{position:relative;display:flex;align-items:stretch;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:4px 2px 18px;scrollbar-width:thin;scrollbar-color:#b9cbd6 transparent}
.timeline-divider{flex:0 0 92px;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);border-left:2px solid #bd4746;color:#bd4746;font:26px Lobster,Georgia,serif;scroll-snap-align:start}
.timeline-card{flex:0 0 clamp(210px,21vw,255px);min-height:178px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:17px 18px;border:1px solid #d8e3e7;border-top:4px solid #bd4746;border-radius:10px;background:#fffdf8;color:#244d76;text-align:left;box-shadow:0 8px 24px #173b5d0c;cursor:pointer;scroll-snap-align:start;transition:transform .2s ease,box-shadow .2s ease}
.timeline-card.short{border-top-color:#3188b8}.timeline-card:hover,.timeline-card:focus-visible{transform:translateY(-3px);box-shadow:0 13px 29px #173b5d26;outline:none}
.timeline-number{font:800 10px Manrope,Arial,sans-serif;letter-spacing:.1em;color:#bd4746}.timeline-card.short .timeline-number{color:#3188b8}
.timeline-card time{font:800 11px Manrope,Arial,sans-serif;color:#6d8496}.timeline-card strong{font:24px Lobster,Georgia,serif;line-height:1.1}.timeline-hours{font:700 11px Manrope,Arial,sans-serif;color:#607d90}.timeline-link{margin-top:auto;font:800 10px Manrope,Arial,sans-serif;color:#bd4746}.timeline-card.short .timeline-link{color:#3188b8}
.route-timeline-progress{height:3px;background:#dce7ec;border-radius:3px;overflow:hidden}.route-timeline-progress span{display:block;width:5%;height:100%;background:#bd4746;transition:width .2s}
@media(max-width:799px){.timeline-card{flex-basis:220px}.route-timeline-heading strong{font-size:27px}.route-timeline-track{padding-bottom:15px}}
@media(prefers-reduced-motion:reduce){.route-timeline-track{scroll-behavior:auto}.timeline-card{transition:none}}

html.shell-active .site-intro{padding-bottom:70px}.route-overview{padding-top:55px;padding-bottom:72px}
/* v1.6 programme descriptions */
.programme-card{min-height:600px}
.programme-card .programme-art{height:175px}
.programme-card .programme-art img{height:175px}
.programme-card h3{margin-top:5px}
.programme-points{list-style:none;margin:4px 0 30px;padding:0;display:grid;gap:11px}
.programme-points li{position:relative;padding-left:19px;font:600 12px/1.65 Manrope,Arial,sans-serif;color:#5c7387}
.programme-points li::before{content:'✳';position:absolute;left:0;top:1px;color:#bd4746;font-size:11px}
.programme-card.short .programme-points li{color:#d9e7ee}
.programme-card.short .programme-points li::before{color:#e9c685}
.programme-card .programme-bottom{gap:14px}
.programme-card .programme-bottom span{max-width:190px;line-height:1.5}
@media(max-width:799px){.programme-card{min-height:0}.programme-card .programme-art,.programme-card .programme-art img{height:150px}}
@media(max-width:700px){.site-hero h1 em{font-size:clamp(44px,11vw,75px);white-space:nowrap}}

.arrival-page-backdrop{position:fixed;inset:0;z-index:2999;background:rgba(245,248,249,.64);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.arrival-page-backdrop[hidden]{display:none}
html.shell-active .arrival-board.is-page{z-index:3000}

@media(min-width:800px){html.shell-active .route-map-wrap{display:none}}
/* v2.0 refinements */
.site-hero h1{font-size:clamp(55px,7.3vw,119px)}
.hero-facts{font-size:12px;gap:29px}.hero-facts b{font-size:25px}
@media(max-width:700px){.site-hero h1{font-size:clamp(45px,9.1vw,74px)}.site-hero h1 em{font-size:inherit;white-space:nowrap}}
.city-search-control .city-options .city-option.long{color:#a83d40}
.city-search-control .city-options .city-option.short{color:#276e9c}
.city-search-control .city-options .city-option.long:hover,.city-search-control .city-options .city-option.long.is-active{background:#fbeeed;color:#922f36}
.city-search-control .city-options .city-option.short:hover,.city-search-control .city-options .city-option.short.is-active{background:#eaf4fa;color:#175d8a}
.timeline-card.long{background:#fff6f3;border-color:#eed7d4;border-top-color:#bd4746}
.timeline-card.short{background:#f0f8fc;border-color:#d4e8f2;border-top-color:#3188b8}
.carriage-photo{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;overflow:hidden}
.carriage-photo img{transition:transform .3s ease}.carriage-photo:hover img,.carriage-photo:focus-visible img{transform:scale(1.045)}
.carriage-photo:focus-visible{outline:3px solid #bd4746;outline-offset:-3px}
.carriage-lightbox{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:56px 72px;border:0;background:#071b2aef;color:white;overflow:hidden}
.carriage-lightbox::backdrop{background:#071b2ae6}
.carriage-lightbox img{display:block;width:100%;height:100%;object-fit:contain}
.carriage-lightbox button{position:absolute;z-index:2;width:46px;height:46px;display:grid;place-items:center;border:1px solid #ffffff88;border-radius:50%;background:#183d60c9;color:white;font-size:26px;cursor:pointer}
.carriage-lightbox-close{top:20px;right:22px}.carriage-lightbox-prev{left:18px;top:50%;transform:translateY(-50%)}.carriage-lightbox-next{right:18px;top:50%;transform:translateY(-50%)}
.carriage-lightbox-counter{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);font:700 12px Manrope,Arial,sans-serif;letter-spacing:.12em}
@media(max-width:600px){.carriage-lightbox{padding:65px 12px}.carriage-lightbox button{width:38px;height:38px;font-size:20px}}
.faq-group{margin:26px 0 34px}.faq-group[hidden]{display:none}.faq-group h3{font:30px Lobster,Georgia,serif;color:#244d76;margin:0 0 15px;padding-bottom:10px;border-bottom:1px solid #cbdce4}
/* Hide the main map at the configurable minimum width; keep the route overview. */
html.shell-active .route-map-wrap{display:none}
html.shell-active.map-widget-hidden #mapStage{display:none!important}
html.shell-active.map-widget-hidden .route-map-wrap{display:block}
