/* Semantic type roles shared by every locale. Components grow around the text. */
:root{
  --font-body:"stolzl",Stolzl,"Segoe UI","Noto Sans",Arial,sans-serif;
  --text-hero:clamp(2.5rem,1.5rem + 3.8vw,5.5rem);
  --text-page:clamp(2.25rem,1.4rem + 3.5vw,5rem);
  --text-section:clamp(1.875rem,1.35rem + 1.9vw,3.5rem);
  --text-card:clamp(1.125rem,1.06rem + .35vw,1.375rem);
  --text-body:clamp(1rem,.975rem + .12vw,1.0625rem);
  --text-button:.9375rem;
  --text-navigation:.875rem;
  --text-label:.875rem;
  --text-support:.875rem;
  --text-small:.8125rem;
  --text-legal:.8125rem;
  --text-price:clamp(1.5rem,1.25rem + .6vw,2rem);
}
html{font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--font-body);font-size:var(--text-body);line-height:1.7;letter-spacing:0}
button,input,select,textarea{font-family:inherit;font-size:var(--text-body);line-height:1.5}
h1,h2,h3,h4,strong,b{font-family:inherit}
h1,h2,h3,h4{line-height:1.2;letter-spacing:-.025em;overflow-wrap:break-word;hyphens:auto}
h1{font-size:var(--text-page);text-wrap:balance}
h2{font-size:var(--text-section);text-wrap:balance}
h3{font-size:var(--text-card);line-height:1.4}
h4{font-size:1rem;line-height:1.4}
.hero h1{font-size:var(--text-hero);line-height:1.12;max-inline-size:14ch}
.page-hero h1,.pricing-hero h1{font-size:var(--text-page);line-height:1.18;max-inline-size:21ch}
.intro h2,.feature-copy h2,.reassurance-copy h2,.footer-invitation h2,.package-layout h2,.catalog-heading h2,.quote-banner h2{font-size:var(--text-section);line-height:1.22}
p{font-size:var(--text-body);line-height:1.7;overflow-wrap:break-word}
.hero-content>p,.page-hero p,.intro p,.reassurance-copy p,.footer-invitation-copy p{font-size:var(--text-body);line-height:1.8;max-inline-size:65ch}
.btn{font-size:var(--text-button);line-height:1.45;min-block-size:48px;max-inline-size:100%;white-space:normal;overflow-wrap:break-word;text-align:center;flex-shrink:1;padding:14px 24px}
.btn>span[aria-hidden]{flex-shrink:0}
.links a,.mobile-menu a{font-size:var(--text-navigation);line-height:1.5;overflow-wrap:break-word}
.brand span{font-size:1.0625rem;line-height:1.3;letter-spacing:-.02em}
.eyebrow,.footer-label{font-size:var(--text-small);line-height:1.6;letter-spacing:.12em;overflow-wrap:break-word}
label,.form-field>span,.check,.form-options label,.package-check{font-size:var(--text-label);line-height:1.6}
.card p,.service-row p,.service-description,.catalog-heading>p,.form-help,.pricing-note,.comfort-notes span,.scope-note,.service-card-top>span:last-child{font-size:var(--text-support);line-height:1.65}
.card h3,.service-price-card h3,.step h3{font-size:var(--text-card);line-height:1.4}
.card a.text-link,.service-enquiry,.source-link{font-size:var(--text-support);line-height:1.6}
.small,.tag,.chip,.form-results,.catalog-status p,.footer-brand p,.footer-contact>p,.footer-contact-list a>span:nth-child(2),.footer-column a,.footer-legal>a,.footer-finale,.currency-timestamp,.currency-source{font-size:var(--text-small);line-height:1.7}
.notice,.legal-strip,.footer-legal p,.footer-disclaimer{font-size:var(--text-legal);line-height:1.75}
.footer-legal strong,.footer-contact-list small{font-size:var(--text-small);line-height:1.5}
.footer-brand h3{font-size:var(--text-card);line-height:1.4}
.package-summary p,.package-summary ul,.pricing-hero .pricing-fees{font-size:var(--text-support);line-height:1.7}
.service-price,.subtotal-amount,.price-amount{font-size:var(--text-price);line-height:1.35;font-variant-numeric:tabular-nums;letter-spacing:0}
.price-amount,.subtotal-amount{display:block;font-weight:500;white-space:normal;overflow-wrap:normal}
.service-price{min-block-size:calc(var(--text-price) * 4.5);overflow-wrap:break-word}
.original-charge{display:block;font-size:var(--text-small);font-weight:300;line-height:1.7;margin-top:8px;color:var(--muted)}
.card-icon{font-size:1.6rem;line-height:1}
.hamburger{font-size:1.5rem;min-width:44px;min-height:44px;line-height:1;flex-shrink:0}
.orbit-heart{font-size:1.75rem;line-height:1}
.footer-signoff b{font-size:1rem;line-height:1}
.photo-label{font-size:var(--text-small);line-height:1.6}.photo-label b{font-size:var(--text-support)}
.image-quote{font-size:var(--text-card);line-height:1.5}
.step strong,.flight-signoff{font-size:var(--text-small);line-height:1.6}
:where(header,main,footer) :where(div,section,aside,article,nav,form){min-inline-size:0}
:where(.cards,.split,.form-wrap,.form-grid,.form-options,.footer-main,.footer-directory,.footer-grid,.package-layout)>*{min-inline-size:0}
.reassurance-copy h2 span,.footer-legal>a{white-space:normal}
.form-options label{align-items:flex-start}.form-options label>span{min-inline-size:0;overflow-wrap:break-word}
.form-options input,.package-check input{margin-top:.3em}
.form-panel input,.form-panel select,.form-panel textarea{min-inline-size:0;max-inline-size:100%}
.footer-contact-list a{grid-template-columns:37px minmax(0,1fr) 16px}
.footer-contact-list a>span:nth-child(2){overflow-wrap:anywhere}
.nav{height:auto;min-height:120px;align-items:center;gap:16px;padding-block:18px}
.brand img{width:92px;height:92px}
.links{flex:1;min-inline-size:0;gap:clamp(.5rem,.8vw,1rem);justify-content:center}
.nav-actions{min-inline-size:0;flex:0 1 auto;gap:8px;justify-content:flex-end}
.nav-actions .btn{font-size:var(--text-button);max-inline-size:13rem;padding:12px 18px}
.language-switcher{min-inline-size:0;max-inline-size:100%}
.language-switcher-button{font-size:var(--text-navigation);line-height:1.4;min-height:44px;max-inline-size:100%;padding:10px 12px;gap:6px}
.language-switcher-button span:nth-child(2){white-space:normal;overflow:visible;text-overflow:clip;min-inline-size:0}
.language-switcher-button [data-current-currency]{font-size:var(--text-small);white-space:nowrap;border-inline-start:1px solid var(--line);padding-inline-start:7px}
.language-menu{min-inline-size:248px;max-inline-size:calc(100vw - 34px);max-block-size:min(78dvh,650px);overflow-y:auto}
.language-menu button{font-size:var(--text-navigation);line-height:1.5;min-height:44px;overflow-wrap:break-word}
.currency-field{border-top:1px solid var(--line);padding:14px 10px 8px;margin-top:8px}
.currency-field label{margin:0}.currency-field select{display:block;margin-top:8px;min-height:44px}
.currency-recommendation{font-size:var(--text-small);line-height:1.6;margin:10px 0 0}
.currency-notice{border:1px solid var(--line);border-radius:14px;background:#f4f1e8;padding:18px 22px;margin-bottom:24px;min-block-size:10rem}
.currency-notice p{margin:0 0 7px}.currency-notice p:last-child{margin-bottom:0}.currency-state{font-size:var(--text-support);line-height:1.7}
.currency-notice a{text-decoration:underline!important;text-underline-offset:3px}
.currency-notice button{border:0;background:transparent;padding:8px 0;min-height:44px;text-align:start;font-size:var(--text-support);color:var(--deep)}
:lang(zh-CN){--font-body:"stolzl","PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif}
:lang(zh-CN) :is(h1,h2,h3,h4){letter-spacing:0;line-break:strict;word-break:normal;hyphens:none}
@media(max-width:1200px){.nav-actions .btn{display:none}}
@media(max-width:790px){.nav{min-height:112px;padding-block:14px;gap:12px}.nav-actions{flex:1}.language-switcher-button{padding:9px 10px}.mobile-language .language-menu{max-block-size:none}.brand img{width:72px;height:72px}.footer-invitation{gap:28px}.hero-content{max-inline-size:100%}}
@media(max-width:520px){.hero-buttons{align-items:stretch}.hero-buttons .btn{padding:13px 20px}.service-card-top{gap:10px}.footer-invitation h2 br{display:none}.currency-notice{padding:16px}.catalog-status{align-items:start}.language-switcher-button{column-gap:5px}.nav-actions>.language-switcher{flex:0 1 auto}.reassurance-copy h2 span{white-space:normal}}

.hero-buttons .btn-outline>span[aria-hidden]{display:inline-grid;place-items:center;font-size:1rem;line-height:1}
.price-pending{font-size:var(--text-support);line-height:1.6}

.footer-column a>span{flex:1;min-inline-size:0;overflow-wrap:break-word;hyphens:auto}.footer-column a>i{flex-shrink:0}

/* Prominent branding; original lettering makes one turn in five minutes. */
html{scroll-padding-top:calc(var(--site-header-height,140px) + 16px)}
.header .mobile-menu.open{max-height:calc(100dvh - var(--site-nav-height,172px));overflow-y:auto;overscroll-behavior:contain}
.pricing-section{scroll-margin-top:0}
.brand-logo{display:block;flex-shrink:0;overflow:visible;aspect-ratio:1;width:112px;height:112px}
.brand-logo--header{filter:brightness(.22)}
.brand-logo-ring{transform-box:view-box;transform-origin:264px 274px;animation:brand-lettering-orbit 300s linear infinite}
.brand-logo-center{transform:none}
[data-logo-motion=paused] .brand-logo-ring{animation-play-state:paused}
.brand-motion-control{display:flex;align-items:center;gap:10px;min-height:44px;grid-column:1/-1;color:#e8dfc9;font-size:var(--text-small);cursor:pointer}
.brand-motion-control input{width:18px;height:18px;accent-color:#d8c59b;flex-shrink:0}
@keyframes brand-lettering-orbit{to{transform:rotate(360deg)}}
.brand:hover .brand-logo-ring,.brand:focus-visible .brand-logo-ring,.footer-brand:hover .brand-logo-ring{animation-play-state:paused}
.header .nav{width:min(1500px,calc(100% - 48px));display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand links actions";gap:16px;min-height:140px;padding-block:14px}
.nav>.brand{grid-area:brand;gap:14px;min-inline-size:0;justify-self:start}
.brand .brand-name{display:block;font-size:1.25rem;line-height:1.4;letter-spacing:-.02em}
.nav>.links{grid-area:links;gap:16px}
.nav>.links a{font-size:.9375rem;line-height:1.5;white-space:nowrap;flex-shrink:0;word-break:normal;overflow-wrap:normal;hyphens:none}
.nav>.nav-actions{grid-area:actions;gap:12px}
.nav .language-switcher-button,.nav-actions .btn{font-size:.9375rem}
.footer-brand .brand-logo{width:232px;height:232px;margin:0 0 28px;filter:drop-shadow(0 14px 28px #11170d35)}
.footer-brand h3{font-size:1.5rem;line-height:1.4}
@media(min-width:1201px) and (max-width:1399px){.nav-actions>.btn{display:none}}
@media(min-width:701px) and (max-width:1200px){
 .header .nav{width:calc(100% - 40px);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand actions";gap:16px;min-height:112px;padding-block:12px}
 .brand-logo--header{width:88px;height:88px}
 .nav>.brand{gap:12px}.brand .brand-name{font-size:1.125rem}
 .nav>.nav-actions{gap:8px}.nav .language-switcher-button{font-size:.9375rem}
}
@media(max-width:980px){.footer-brand{grid-template-columns:240px minmax(0,1fr)}.footer-brand .brand-logo{grid-row:1/4;margin:0}}
@media(max-width:700px){
 .header .nav{width:calc(100% - 32px);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand actions";gap:12px;min-height:96px;padding-block:12px}
 .nav>.brand{gap:12px;justify-self:start;max-inline-size:100%}
 .brand-logo--header{width:80px;height:80px}
 .brand .brand-name{font-size:clamp(1rem,.5rem + 2.5vw,1.125rem);min-inline-size:0;line-height:1.4}
 .nav>.nav-actions{width:auto;justify-content:flex-end;gap:0}
 .header .nav-actions>.language-switcher{display:none}
 .nav-actions>.language-switcher .language-menu{left:0;right:auto}
 .footer-brand{grid-template-columns:minmax(0,1fr);text-align:center}
 .footer-brand .brand-logo{width:224px;height:224px;grid-row:auto;margin:0 auto 24px}
 .brand-motion-control{justify-content:center}
}
@media(max-width:380px){.brand-logo--header{width:64px;height:64px}.nav>.brand{gap:10px}.brand .brand-name{font-size:1rem}}
@media(prefers-reduced-motion:reduce){.brand-logo-ring{animation:none!important;transform:none!important}.brand-motion-control{display:none}}

/* Translate at a readable size, then use a menu whenever the full row will not fit. */
.header[data-nav-layout=compact] .nav{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand actions"}
.header[data-nav-layout=compact] .links{display:none}
.header[data-nav-layout=compact] .hamburger{display:grid;place-items:center}
.header[data-nav-layout=compact] .mobile-menu{display:flex;flex-direction:column;max-height:0;overflow:hidden}
.header[data-nav-layout=compact] .mobile-menu.open{max-height:calc(100dvh - var(--site-nav-height,104px));overflow-y:auto}
.header[data-nav-layout=full] .nav{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand links actions"}
.header[data-nav-layout=full] .links{display:flex}
.header[data-nav-layout=full] .hamburger,.header[data-nav-layout=full] .mobile-menu{display:none}
.header[data-nav-layout=compact] .mobile-language{display:block;padding:16px 20px;border-bottom:1px solid var(--line)}
.header .mobile-menu>a{padding:13px 20px;font-size:1rem;line-height:1.5;word-break:normal;overflow-wrap:normal;hyphens:none}
.header .mobile-language .language-switcher-button{width:100%;justify-content:flex-start;gap:8px}
.header .mobile-language .language-menu{position:static;inset:auto;width:100%;max-inline-size:100%;max-block-size:none;margin-top:12px}
.header .language-switcher-button span:nth-child(2){white-space:nowrap}
.header .language-options-list button{white-space:nowrap}
@media(max-width:700px){
 .section{padding-block:48px}.section-sm{padding-block:36px}
 .page-hero{padding-block:36px 32px}
 .page-hero h1{margin-bottom:18px}.page-hero p:last-child{margin-bottom:0}
 .intro{margin-bottom:28px}.split,.form-wrap{gap:28px}
 .form-wrap>aside>.eyebrow{margin-bottom:16px}
 .form-wrap>aside>h2{margin-bottom:20px;text-wrap:balance}
 .form-panel{padding:22px 20px;border-radius:20px}
 .ticks{margin-block:20px 24px}.ticks li{padding-block:7px}
}
@media(max-width:600px){.form-panel .form-grid{grid-template-columns:minmax(0,1fr);gap:0}}
