html.intro-open,html.intro-open body{overflow:hidden}.cartoon-intro{position:fixed;inset:0;z-index:60;isolation:isolate;background:#e8e0ef;color:#705682;overflow:hidden;--intro-progress:0;--map-labels:0;--cloud-travel:0;opacity:1;transition:opacity .6s ease,visibility .6s}.cartoon-intro.departing{opacity:0;visibility:hidden;pointer-events:none}.intro-scene,.intro-scene>svg{position:absolute;inset:0;width:100%;height:100%}.intro-scene .airport-label{opacity:var(--map-labels)}.intro-scene .sea-label{font:italic 18px 'Cormorant Garamond',Georgia,serif;fill:#94a5b1;letter-spacing:.5px}.intro-scene .airport-name{font:500 24px 'Cormorant Garamond',Georgia,serif;fill:#735a85}.intro-scene .airport-code{font:8px 'DM Sans',Arial,sans-serif;letter-spacing:1.6px;fill:#ad94bb}.intro-scene .label-star{fill:#b396c5;font:23px 'Cormorant Garamond',serif}.intro-scene .map-signature{display:none}.intro-scene .cloud{animation:cartoonDrift 7s ease-in-out infinite alternate;will-change:transform}.intro-scene .cloud-back-two,.intro-scene .cloud-front-two{animation-direction:alternate-reverse;animation-delay:-4s}.intro-scene .arrival-heart{opacity:0;transition:opacity .4s}.cartoon-intro.landed .arrival-heart{opacity:1}.cartoon-intro.landed .arrival-halo{animation:cartoonHalo 1.5s ease-in-out infinite}.cartoon-skip{background:#fbf8f380;border:1px solid #bea6cc;padding:12px 18px;border-radius:30px;font-size:10px;min-height:42px;backdrop-filter:blur(10px);color:#775789}.cinema-cloud{position:absolute;width:62vw;max-width:900px;height:auto;z-index:3;pointer-events:none;opacity:.94;filter:none;will-change:transform}.cinema-cloud svg{width:100%;height:auto;display:block}.cloud-sweep-left{top:26%;left:-45vw;transform:translateX(calc(var(--cloud-travel)*155vw)) rotate(-5deg)}.cloud-sweep-right{top:52%;right:-45vw;width:49vw;transform:translateX(calc(var(--cloud-travel)*-135vw)) rotate(5deg)}@keyframes cartoonDrift{from{transform:translate(-5px,-1px)}to{transform:translate(7px,3px)}}@keyframes cartoonHalo{50%{r:25;opacity:.07}}@media(max-width:650px){.cartoon-skip{padding:10px 13px;font-size:9px}.cinema-cloud{width:92vw;max-width:none}.cloud-sweep-left{top:35%;left:-85vw;transform:translateX(calc(var(--cloud-travel)*230vw)) rotate(-5deg)}.cloud-sweep-right{top:57%;right:-78vw;width:78vw;transform:translateX(calc(var(--cloud-travel)*-205vw)) rotate(5deg)}}@media(prefers-reduced-motion:reduce){.cartoon-intro{display:none!important}}

.cartoon-intro:focus{outline:none}

/* A gentle ripple on the map, without adding a separate sea section. */
.intro-scene .sea-details path{transform-box:fill-box;transform-origin:center;animation:cartoonSeaRipple 3.2s ease-in-out infinite}
.intro-scene .sea-details path:nth-child(2){animation-delay:-1.1s}
.intro-scene .sea-details path:nth-child(3){animation-delay:-2.2s}
.cinema-cloud svg{animation:cartoonCloudBreathe 4.8s ease-in-out infinite alternate;transform-origin:center}
.cloud-sweep-right svg{animation-delay:-2.4s}
@keyframes cartoonSeaRipple{0%,100%{transform:translateY(0) scaleY(.88);opacity:.55}50%{transform:translateY(-1.8px) scaleY(1.08);opacity:.95}}
@keyframes cartoonCloudBreathe{from{transform:translateY(0) scale(1)}to{transform:translateY(-3px) scale(1.025)}}
@media(prefers-reduced-motion:reduce){.intro-scene .sea-details path,.intro-scene .cloud,.cinema-cloud svg{animation:none!important}}

/* Restore the soft, diffuse clouds of the first opening. */
.intro-scene .cloud{filter:blur(3.5px);opacity:.9}
.cinema-cloud svg{filter:blur(11px)}

/* A clean flight, followed by a heart that fills the frame. */
.cartoon-intro>.cartoon-skip{position:absolute;top:20px;right:6%;z-index:6;width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;font-size:24px;line-height:1;color:#8e75a0;border-color:#c5b4d155;background:#fbf8f34d}
.intro-scene .arrival-heart path{fill:#c8b0da;stroke:none}
.heart-reveal{position:absolute;z-index:5;pointer-events:none;transform:translate(-50%,-50%) scale(var(--heart-scale,1));transform-origin:center;will-change:transform}
.heart-reveal svg{display:block;width:100%;height:100%;overflow:visible}
.cartoon-intro.heart-growing .intro-scene .arrival-heart{opacity:0;transition:none}
