body:not(.catalogue-ready) main>section{display:none}#connected-catalogue{min-height:500px}.staging-banner{text-align:center;font-size:11px;background:var(--surface);padding:8px;color:var(--accent)}.loading-state,.error-state{padding:100px 0}.image-placeholder{background:linear-gradient(135deg,var(--surface),var(--line));display:flex;align-items:center;justify-content:center;min-height:170px;border-radius:12px;padding:20px;color:var(--muted);text-align:center;font:600 25px var(--display)}.journey-city{background:transparent;border:0;color:inherit;padding:0;text-align:left;cursor:pointer}.city-rail .journey-city img{width:100%;aspect-ratio:1.15;object-fit:cover;border-radius:12px}.city-rail .pathway img{height:auto;width:100%;aspect-ratio:1;object-fit:cover}.ticket-photo .image-placeholder{height:100%;border-radius:0}.ticket-photo h3{font-size:22px}.ticket-content h4{font-size:23px}.ticket-bottom>strong{display:block}.ticket-bottom a:not(.button){display:inline-block;font-size:12px;color:var(--accent);margin:10px 0}.ticket-bottom .register-link{width:100%;font-size:11px;margin:10px 0}.ticket-bottom small{display:block;font-size:11px;color:var(--muted)}.price-notes{font-size:12px;line-height:1.6;margin:10px 0}.price-notes summary{cursor:pointer}.price-notes p{padding-top:8px;overflow-wrap:anywhere}.ticket-photo .sample-badge{max-width:75%;font-size:9px}.ticket-grid{margin-top:25px}.empty-state{padding:35px;background:var(--surface);border:1px solid var(--line)}.result-count{padding-top:20px}.selection-preview .peek-copy>p{overflow-wrap:anywhere}.selection-preview .peek-copy>.outline{margin:10px}.filter-grid{margin-top:30px}.section-head h2{overflow-wrap:anywhere}.ticket-rail{align-items:stretch}.city-rail{align-items:start}.peek-copy h2{overflow-wrap:anywhere}.search-form input{width:100%;min-width:0}.rail-nav{justify-content:flex-end;margin-bottom:15px}.destination-hero{background-color:var(--surface)}.experience h1{overflow-wrap:anywhere}.peek-image.image-placeholder{border-radius:0}.ticket-content .ce-pill{margin-top:15px}.peek-copy p{white-space:pre-line}
@media(max-width:650px){.filter-grid{grid-template-columns:1fr}.ticket-photo h3{font-size:25px}.ticket-content h4{font-size:28px}}
/* Compact selection previews keep the underlying catalogue visible. */
.selection-preview{width:min(560px,calc(100vw - 48px));max-height:72dvh;box-shadow:0 20px 70px #0008}
.selection-preview::backdrop{background:#08060b66;backdrop-filter:none}
.selection-preview .peek-image{height:180px;min-height:180px;width:100%;object-fit:cover}
.selection-preview .peek-copy{padding:20px 24px 24px}
.selection-preview .peek-copy h2{font-size:32px;line-height:1.08;margin:4px 0 12px}
.selection-preview .peek-copy p{font-size:13px;line-height:1.55;margin:10px 0}
.selection-preview .peek-copy>.button{font-size:12px}
.selection-preview .peek-close{width:36px;height:36px;right:12px;top:12px;font-size:24px}
@media(max-width:650px){.selection-preview{width:calc(100vw - 48px);max-height:72dvh}.selection-preview .peek-image{height:140px;min-height:140px}.selection-preview .peek-copy{padding:16px 18px 20px}.selection-preview .peek-copy h2{font-size:28px}}

/* Anchor previews to the selected card rather than the viewport centre. */
.selection-preview{position:fixed;margin:0;inset:auto;transition:none}
.selection-preview::backdrop{background:transparent;backdrop-filter:none}

/* The selected card expands in the layout; siblings flow around it. */
.expanded-source{display:none!important}
.selection-preview[open]{position:relative;inset:auto!important;margin:0;width:100%;max-width:none;max-height:none;grid-column:span 2;align-self:start;box-sizing:border-box;overflow:hidden;box-shadow:0 8px 28px #0004;scroll-snap-align:start}
.selection-preview .peek-image{height:200px;min-height:200px}
@media(max-width:650px){.selection-preview[open]{grid-column:span 1}.selection-preview .peek-image{height:180px;min-height:180px}}

/* Clean carousel controls and compact catalogue cards. */
.carousel-shell{position:relative;container-type:inline-size}
.carousel-shell>.rail-nav{position:absolute;inset:0 0 auto;z-index:3;margin:0;pointer-events:none;display:flex;justify-content:space-between;top:calc((100cqw - 80px)/10 - 20px)}
.carousel-shell>.rail-nav button{pointer-events:auto;width:40px;height:40px;border-radius:50%;background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:0 3px 12px #0005}
.city-rail,.ticket-rail{scrollbar-width:none}.city-rail::-webkit-scrollbar,.ticket-rail::-webkit-scrollbar{display:none}
.journey-city>.image-placeholder{width:100%;aspect-ratio:1.15;min-height:0;box-sizing:border-box}
.ticket-rail,.ticket-grid{align-items:start}.ticket-content{flex:none}.ticket-content .ce-pill{margin-top:10px}.ticket-content>p:last-of-type{padding-bottom:0}
.ticket-bottom .course-overview-button{background:transparent;color:var(--muted);border:0;padding:4px 0;text-align:left;width:auto;margin:4px 0 10px;text-decoration:underline}
@media(max-width:1000px){.carousel-shell>.rail-nav{top:calc(15cqw - 20px)}}
@media(max-width:650px){.carousel-shell>.rail-nav{top:calc(36cqw - 20px)}}
.legal-links{display:flex;flex-wrap:wrap;gap:16px;width:100%;font-size:12px;margin-bottom:20px}.legal-links button{background:none;border:0;color:inherit;font:inherit;padding:0;text-decoration:underline;cursor:pointer}.experience footer{flex-wrap:wrap}.cookie-notice{position:fixed;bottom:18px;left:18px;z-index:100;max-width:420px;margin-right:18px;padding:18px 22px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 30px #0005;font-size:13px}.cookie-notice p{line-height:1.5;margin:8px 0 12px}.cookie-notice a,.contact-consent a{color:var(--accent);text-decoration:underline}.cookie-notice[hidden],.contact-consent[hidden]{display:none}.contact-consent{margin:20px 0}.contact-consent .confirmation{align-items:start;font-size:13px;line-height:1.5;margin:14px 0}.contact-consent input{flex:0 0 auto;width:18px;height:18px;margin-top:2px}

.destination-illustration{position:relative;background-image:url('/assets/destination-atlas.png');background-size:600% 400%;width:100%;aspect-ratio:1.15;border-radius:12px;overflow:hidden}.destination-illustration>small{position:absolute;right:8px;bottom:8px;font:10px system-ui;background:#100d12bd;color:#fff;padding:3px 6px;border-radius:4px}.selection-preview .destination-illustration{aspect-ratio:auto}

/* Pan within each illustration; lighting changes never alter the location. */
.destination-illustration{background-image:none;isolation:isolate}.city-art{position:absolute;inset:0 auto 0 0;width:115%;background-image:var(--art-url);background-size:var(--art-size);background-position:var(--art-position);animation:city-pan 28s ease-in-out infinite alternate,city-daylight 48s ease-in-out infinite;will-change:transform,filter;z-index:-1}.destination-illustration>small{z-index:2}
.ai-city-hero{position:relative;overflow:hidden;isolation:isolate;background:var(--surface)}.ai-city-hero::before{content:'';position:absolute;inset:0 auto 0 0;width:115%;background-image:var(--art-url);background-size:var(--art-size);background-position:var(--art-position);animation:city-pan 28s ease-in-out infinite alternate,city-daylight 48s ease-in-out infinite;z-index:-2}.ai-city-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#100d12c9,transparent);z-index:-1}
@keyframes city-pan{from{transform:translateX(-12%)}to{transform:translateX(0)}}
@keyframes city-daylight{0%,100%{filter:brightness(1) saturate(1.05)}30%{filter:brightness(.9) sepia(.24) saturate(1.2)}60%{filter:brightness(.5) saturate(.8) hue-rotate(12deg)}80%{filter:brightness(.8) sepia(.12)}}
@media(prefers-reduced-motion:reduce){.city-art,.ai-city-hero::before{animation:none;transform:translateX(-6%);filter:none}}
/* Preserve the square artwork proportions in wide destination heroes. */
.ai-city-hero::before{top:50%;bottom:auto;height:auto;aspect-ratio:1;animation-name:city-hero-pan,city-daylight}
@keyframes city-hero-pan{from{transform:translate(-12%,-50%)}to{transform:translate(0,-50%)}}
@media(prefers-reduced-motion:reduce){.ai-city-hero::before{animation:none;transform:translate(-6%,-50%)}}

/* Proportional city imagery in cards, previews and headers. */
.destination-illustration{aspect-ratio:4/3}
.destination-illustration .city-art{top:50%;bottom:auto;height:auto;aspect-ratio:1;animation-name:city-hero-pan,city-daylight}
.selection-preview .destination-illustration.peek-image{height:auto;min-height:0;aspect-ratio:4/3;border-radius:12px 12px 0 0}
.ai-city-hero{min-height:420px;padding:64px 40px;display:flex;flex-direction:column;justify-content:center;background:#171419}
.ai-city-hero::before{left:auto;right:-5%;width:70%;top:50%;aspect-ratio:1}
.ai-city-hero::after{background:linear-gradient(90deg,#171419 5%,#171419ef 23%,#17141970 48%,transparent 75%)}
.ai-city-hero>p,.ai-city-hero>h1{position:relative;max-width:55%}
@media(max-width:650px){.ai-city-hero{min-height:380px;padding:28px 22px;justify-content:flex-end}.ai-city-hero::before{width:115%;right:-15%;top:42%}.ai-city-hero::after{background:linear-gradient(0deg,#171419 0%,#171419ba 27%,transparent 75%)}.ai-city-hero>p,.ai-city-hero>h1{max-width:100%}}
@media(prefers-reduced-motion:reduce){.destination-illustration .city-art{animation:none;transform:translate(-6%,-50%);filter:none}}
.ai-city-hero::before{right:-10%;width:75%}.ai-city-hero::after{background:linear-gradient(90deg,#171419 0%,#171419 36%,#17141980 52%,transparent 78%)}@media(max-width:650px){.ai-city-hero::before{width:115%;right:-15%}.ai-city-hero::after{background:linear-gradient(0deg,#171419 0%,#171419ba 27%,transparent 75%)}}

#faq.faq-section{display:block;padding-top:28px;padding-bottom:28px}
.faq-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:20px;cursor:pointer;list-style:none}
.faq-disclosure>summary::-webkit-details-marker{display:none}
.faq-disclosure>summary h2{margin:0;font-size:28px}
.faq-expand-label{font-size:13px;color:var(--accent);white-space:nowrap}
.faq-expand-label::after{content:' +';font-size:20px}
.faq-disclosure[open] .faq-expand-label{font-size:0}
.faq-disclosure[open] .faq-expand-label::after{content:'Close FAQs −';font-size:13px}
.faq-disclosure .faq-items{margin-top:24px;max-width:850px}

.ticket-rail{align-items:stretch!important}.ticket-rail>.ticket,.ticket-grid>.ticket{height:100%;display:flex;flex-direction:column}.ticket-content{flex:1}.ticket-bottom{margin-top:auto}.ticket-bottom>small{min-height:30px}.ticket-bottom .price-notes{display:inline-block;margin:4px 8px 4px 0}.ticket-bottom .course-overview-button{display:inline-block;margin:4px 0;padding:2px 6px}.ticket-bottom .register-link{display:flex;align-items:center;justify-content:center;min-height:44px}

/* Phone discovery: one card across, one section per vertical screen. */
@media(max-width:650px){
.mobile-home-feed{scroll-snap-type:y proximity;scroll-padding-top:0}
.mobile-home-feed #connected-catalogue>.section{box-sizing:border-box;min-height:100svh;margin:0;padding:28px 0;scroll-snap-align:start;scroll-snap-stop:always;display:flex;flex-direction:column;justify-content:center}
.mobile-home-feed #connected-catalogue>.section>.section-head{margin-bottom:20px}
.mobile-home-feed .city-rail,.mobile-home-feed .ticket-rail{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:100%;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:0}
.mobile-home-feed .city-rail>*,.mobile-home-feed .ticket-rail>*{min-width:0;width:100%;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}
.mobile-home-feed .carousel-shell{width:100%;min-width:0}
.mobile-home-feed .city-rail .pathway img{aspect-ratio:1;max-height:55svh;object-fit:cover}
.mobile-home-feed .destination-illustration{aspect-ratio:1;max-height:55svh}
.mobile-home-feed .carousel-shell>.rail-nav{top:calc(min(50cqw,27.5svh) - 20px)}
.mobile-home-feed .ticket-photo{height:190px;min-height:190px}
.mobile-home-feed .ticket-content{padding:14px 18px}.mobile-home-feed .ticket-content h4{font-size:23px;line-height:1.15}
.mobile-home-feed .ticket-bottom{padding:12px 18px}
.mobile-home-feed #faq{scroll-snap-align:start}
}
