/* Shared brand tokens remain in app.css. Layout follows the available space. */
:root{--content-width:1320px;--page-gutter:clamp(20px,4vw,64px)}
.serviceSearch__head{padding:4px 0 14px}
.serviceSearch__head h2{margin:0 0 5px}
.serviceSearch__head p{margin:0;font-size:13px;line-height:1.5;color:var(--txt-2)}
.serviceSearch__choices{padding:6px;background:var(--ground-3);border:1px solid var(--hair);border-radius:14px;gap:8px}
.serviceSearch__choice{position:relative;min-height:116px;gap:9px;padding:12px 6px;background:var(--paper,#fffdf9);border-radius:9px;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s}
.serviceSearch__choice .serviceSearch__icon{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--ground-3);color:var(--gold-ink)}
.serviceSearch__choice .serviceSearch__icon svg{width:24px;height:24px}
.serviceSearch__choice .serviceSearch__copy{display:block;font-size:14px;line-height:1.3}
.serviceSearch__copy strong{font-weight:650}.serviceSearch__copy small{display:none}
.serviceSearch__choice .serviceSearch__action{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11px;line-height:1.3;font-weight:600}
.serviceSearch__action>span{display:flex}.serviceSearch__action svg{width:14px;height:14px}
.serviceSearch__choice.is-on{box-shadow:0 3px 10px #2a211920;border-color:var(--navy);background:var(--navy);color:#fffdf9}
.serviceSearch__choice.is-on .serviceSearch__icon{background:#ffffff1a;color:var(--gold-light)}
.serviceSearch__choice.is-on .serviceSearch__action{color:var(--gold-light)}
@media(hover:hover){.serviceSearch__choice:not(.is-on):hover{background:#f3e9de;border-color:var(--gold-ink);box-shadow:0 2px 8px #2a211914}}
@media(min-width:700px){
 .serviceSearch__head{display:flex;align-items:baseline;justify-content:space-between;gap:20px}.serviceSearch__head h2{margin:0}
 .serviceSearch__choices{padding:8px;gap:10px}
 .serviceSearch__choice{display:grid;grid-template-columns:48px minmax(0,1fr);grid-template-rows:auto auto;gap:6px 14px;min-height:108px;padding:17px;text-align:left;justify-content:start}
 .serviceSearch__choice .serviceSearch__icon{width:48px;height:48px;grid-row:1/3}.serviceSearch__choice .serviceSearch__icon svg{width:28px;height:28px}
 .serviceSearch__choice .serviceSearch__copy{font-size:18px}.serviceSearch__copy small{display:block;font-size:13px;font-weight:400;margin-top:4px;opacity:.85}
 .serviceSearch__choice .serviceSearch__action{justify-content:flex-start;font-size:12px}
}
/* Search areas (editor): two per row on phones and tablets, an odd last one across the row; one row where there is room. */
.serviceSearch__choice:last-child:nth-child(odd){grid-column:1/-1}
@media(min-width:1100px){.serviceSearch__choices{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.serviceSearch__choice:last-child:nth-child(odd){grid-column:auto}}
/* Keep the test-version controls clear of the logo and main navigation. */
#demo-banner{top:calc(64px + env(safe-area-inset-top))!important}
/* Status text must not cover navigation or intercept clicks; recovery stays usable. */
#backend-status{top:calc(64px + env(safe-area-inset-top) + 8px)!important;pointer-events:none}
#backend-status button{pointer-events:auto}
:focus-visible{outline:3px solid var(--gold-ink)!important;outline-offset:3px}
.priceBox .muted{color:#eaded1}.wrap{--ok:#216348}
.pHero__slides picture{display:contents}
.heroImageCredit{display:none}
.imageCredit{display:block;margin:10px 20px 0;color:var(--txt-2);font-size:11px;line-height:1.5}
.heroMotionToggle{position:absolute;z-index:4;right:20px;bottom:18px;width:44px;height:44px;border:1px solid rgba(255,255,255,.6);border-radius:50%;background:rgba(21,16,11,.62);color:#fff;display:grid;place-items:center}
.heroMotionToggle svg{width:18px;height:18px;fill:currentColor}
.pHero.is-paused .pHero__img{animation-play-state:paused!important}
.pHero.is-paused .pHero__script{animation:none!important}
.iconBtn,.homeOfferCard__fav,.homeOfferCard--small .homeOfferCard__fav{min-width:44px;min-height:44px}
.homeTextLink,.pHero__cta{min-height:44px}
.homeVipCallback__form input,.homeTransferQuick input,.input{font-size:16px}
.homeVipCallback__form small{font-size:12px;line-height:1.6;color:rgba(255,255,255,.76)}
.homeTransferQuick label span,.homeVipCallback__form label span{font-size:11px}
.homeEditorialHead--row{flex-wrap:wrap}.homeEditorialHead--row>div{min-width:0}
.homeOfferCard__copy b,.travelWorld__copy b{overflow-wrap:break-word}
@media(min-width:700px){
 .heroImageCredit{display:block;position:absolute;bottom:20px;left:var(--page-gutter);z-index:3;color:white;font-size:10px;text-shadow:0 1px 5px black}
 .pHero{background-image:none}
 .main{inset:0!important;width:100%!important;height:100svh!important;transform:none!important;border-radius:0!important;box-shadow:none!important}
 .edgeLed{display:none}
 .wrap,.detailSec{max-width:var(--content-width);margin-inline:auto;padding-inline:var(--page-gutter)}
 .homeGateway,.homeEditorialHead,.homePromos__rail,.travelWorlds__rail,.homeVipServices__rail,.homeVipServices__links{padding-left:max(var(--page-gutter),calc((100% - var(--content-width))/2));padding-right:max(var(--page-gutter),calc((100% - var(--content-width))/2))}
 .homeGateway{padding-block:32px 12px}.homeGateway__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
 .homePromos{padding-top:48px}
 .homePromos .homeEditorialHead--row{display:flex;justify-content:space-between;align-items:end}
 .homePromos .homeEditorialHead h2{font-size:clamp(28px,3vw,40px);max-width:30ch}
 .homePromos .homeEditorialHead__sub{max-width:60ch;font-size:16px}
 .homeSuperDeal .homeEditorialHead{padding-inline:max(var(--page-gutter),calc((100% - var(--content-width))/2))}
 .serviceSearch{max-width:var(--content-width);margin-inline:auto;padding-inline:var(--page-gutter)}
 .homeGatewayTile__copy b{font-size:17px}.homeGatewayTile__copy i{font-size:13px}
 .homeEditorialHead{padding-top:48px;padding-bottom:24px}
 .homeEditorialHead h2{font-size:clamp(28px,3vw,40px);max-width:26ch}
 .homeEditorialHead__sub{font-size:16px;max-width:58ch}
 .homePromos__rail,.homeVipServices__rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;overflow:visible}
 .homePromoCard,.vipServiceCard,.vipServiceCard--featured{width:100%;min-width:0;aspect-ratio:5/4}
 .homePromos>.railBar,.homeVipServices>.railBar{display:none}
 .homePromoCard__copy b,.vipServiceCard__copy b{font-size:clamp(22px,2.2vw,30px)}
 .vipServiceCard__copy p,.vipServiceCard--featured .vipServiceCard__copy p{font-size:14px;max-width:38ch}
 .homeSuperDealCard{margin-inline:max(var(--page-gutter),calc((100% - var(--content-width))/2));width:calc(100% - 2 * max(var(--page-gutter),calc((100% - var(--content-width))/2)));min-height:440px;aspect-ratio:2/1}
 .homeSuperDealCard__copy{left:40px;bottom:36px}.homeSuperDealCard__copy b{font-size:clamp(34px,4vw,52px);max-width:16ch}
 .homeSuperDealCard__copy em{font-size:16px;max-width:42ch}
 .homeSuperDeal>.imageCredit{margin-inline:max(var(--page-gutter),calc((100% - var(--content-width))/2))}
 .homeTopOffers{padding-inline:max(var(--page-gutter),calc((100% - var(--content-width))/2));grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}
 .homeVipCallback{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;padding:48px max(var(--page-gutter),calc((100% - var(--content-width))/2))}
 .homeVipCallback__form{margin:0}.homeVipCallback__icon{display:none}.homeVipCallback__head p{font-size:15px;max-width:44ch}
 .homeOfferCard--featured{max-width:900px;margin-inline:auto}.homeOfferCard--featured .homeOfferCard__media{aspect-ratio:16/9}
 .homeOfferGrid{grid-template-columns:repeat(4,minmax(0,1fr));padding:24px max(var(--page-gutter),calc((100% - var(--content-width))/2)) 0;gap:18px}
 .homeOfferCard--small .homeOfferCard__media{aspect-ratio:3/4}
 .cardList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 24px}.cardList>*{min-width:0}
 .sheetWrap{position:fixed!important}.sheet{max-width:720px;margin-inline:auto}.tabbar,.stickyCta{position:fixed!important}
 .intro__copy{max-width:1000px}.headline{font-size:clamp(60px,7vw,100px)}
 .homeTransferRequest{min-height:600px}.homeTransferRequest__copy{left:max(var(--page-gutter),calc((100% - var(--content-width))/2));right:var(--page-gutter)}
 .homeTransferRequest__copy h2{max-width:20ch;font-size:44px}
 .homeAviationFinal{padding-left:max(var(--page-gutter),calc((100% - var(--content-width))/2))}
}
@media(min-width:1100px){
 :root{--desktop-header:84px}
 #demo-banner{top:calc(var(--desktop-header) + 10px)!important}
 #backend-status{top:calc(var(--desktop-header) + 8px)!important}
 #app{scroll-padding-top:calc(var(--desktop-header) + 20px);scrollbar-width:thin}#app::-webkit-scrollbar{display:block;width:8px}
 .appbar,.appbar--over,.appbar--over.is-solid{height:var(--desktop-header);padding:0 var(--page-gutter);background:var(--ground);color:var(--txt);border-bottom:1px solid var(--hair);text-shadow:none;backdrop-filter:none}
 .appbar--over{margin-bottom:calc(-1 * var(--desktop-header))}.appbar--over .iconBtn{background:var(--ground-2);backdrop-filter:none}
 .appbar__brand{max-width:240px}.appbar>.iconBtn:last-child{margin-left:auto}.brandLogo--bar{width:128px}
 .appbar>.langToggle{margin-left:auto}.appbar>.langToggle+.menuToggle{margin-left:0}
 .tabbar:not(.tabbar--staff){top:0;bottom:auto;left:310px;right:110px;width:auto;height:var(--desktop-header);display:flex;align-items:center;justify-content:center;gap:clamp(8px,2vw,32px);padding:0;background:none;border:0;box-shadow:none;backdrop-filter:none}
 .tabbar:not(.tabbar--staff) .tab{flex:0 1 auto;flex-direction:row;align-items:center;justify-content:center;gap:8px;padding:8px 12px;min-height:46px;border-radius:3px}
 .tabbar:not(.tabbar--staff) .tab>span:last-of-type{font-size:clamp(15px,1.1vw,17px);white-space:nowrap}
 .tabbar:not(.tabbar--staff) .tab__ic{width:26px;height:28px;background:none;color:inherit}.tabbar:not(.tabbar--staff) .tab.is-on{background:var(--ground-3);color:var(--txt)}
 #app:not(:has(.appbar))>.tabbar:not(.tabbar--staff){background:var(--ground);left:0;right:0;border-bottom:1px solid var(--hair)}
 #app:not(:has(.appbar))>.view{padding-top:var(--desktop-header)}
 .tabbar--staff{top:auto;bottom:0}
 .pHero{min-height:700px;height:min(900px,92svh);padding-top:var(--desktop-header);background-color:var(--navy-deep);background-image:none}
 .pHero__scrim{background:linear-gradient(90deg,rgba(21,16,11,.67),rgba(21,16,11,.22) 55%,rgba(21,16,11,.06)),linear-gradient(0deg,rgba(21,16,11,.25),transparent 70%)}
 .pHero__script{margin-left:max(var(--page-gutter),calc((100% - var(--content-width))/2));font-size:clamp(42px,4vw,68px);max-width:none;letter-spacing:.12em}
 .pHero__body{margin:0 0 80px max(var(--page-gutter),calc((100% - var(--content-width))/2));padding:18px 0 0;max-width:650px}
 .pHero__title{font-size:clamp(46px,4.1vw,72px);max-width:15ch;line-height:1.06}.pHero__sub{font-size:18px;max-width:42ch}
 .pHero__cta{font-size:12px;margin-top:28px}.heroMotionToggle{right:var(--page-gutter);bottom:32px}
 .homePromos__rail{grid-template-columns:repeat(3,minmax(0,1fr))}.homePromoCard{aspect-ratio:1.15}
 .travelWorlds>.homeEditorialHead{padding-inline:var(--page-gutter)}
 .travelWorlds__rail{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;overflow:visible;padding-inline:0;touch-action:pan-y pinch-zoom}
 .travelWorlds>.railBar{display:none}
 .travelWorld{width:100%;min-width:0;aspect-ratio:3/4;border-radius:0}.travelWorld__copy b{font-size:clamp(20px,1.5vw,28px);line-height:1.15}.travelWorld__copy i{font-size:11px;letter-spacing:.04em}
 /* One row however many services there are; a fifth (or one added in the editor) never sits alone in a second row. */
 .homeVipServices__rail{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
 .vipServiceCard,.vipServiceCard--featured{aspect-ratio:3/5}.vipServiceCard__copy b,.vipServiceCard--featured .vipServiceCard__copy b{font-size:26px}
 .vipServiceCard__copy p,.vipServiceCard--featured .vipServiceCard__copy p{font-size:13px}
 .homeBestHotels{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:24px max(var(--page-gutter),calc((100% - var(--content-width))/2)) 56px}
 .homeBestHotels>.homeEditorialHead{grid-column:1/-1;padding-inline:0}.homeBestHotels>.homeOfferCard--featured{width:100%;max-width:none;margin:0}
 .homeBestHotels>.homeOfferCard--featured .homeOfferCard__media{height:100%;aspect-ratio:4/5}
 .homeBestHotels>.homeOfferGrid{padding:0;grid-template-columns:1fr 1fr;gap:18px}.homeBestHotels .homeOfferCard--small .homeOfferCard__media{height:100%;aspect-ratio:4/3}
 .homeBestHotels .homeOfferCard--small .homeOfferCard__copy b{font-size:20px}
 .cardList{grid-template-columns:repeat(3,minmax(0,1fr))}.searchCard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.searchRow+.searchRow{border-top:0;border-left:1px solid var(--hair)}
 .gal{width:100%;height:min(580px,45vw);aspect-ratio:auto}
 .gal__track{width:100%;height:100%}
 .stickyCta{bottom:0;max-width:850px;left:50%;right:auto;width:100%;transform:translateX(-50%);border:1px solid var(--hair);border-radius:8px 8px 0 0}
 .pageBottom{height:40px}.pageBottom--cta{height:110px}.serviceSearchNav{top:var(--desktop-header)}
 #app:has(.tabbar--staff) .pageBottom{height:calc(var(--nav-h) + 24px)}
}
@media(max-width:699px){
 .homeOfferCard--small .homeOfferCard__media{aspect-ratio:3/5}.homeOfferCard--small .homeOfferCard__copy b{font-size:clamp(16px,4.2vw,20px)}
 .homeVipCallback__form,.homeTransferQuick{column-gap:12px}.homeEditorialHead__sub{font-size:15px;line-height:1.6}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Public navigation and quieter service invitations. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.appbar__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menuToggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:8px;gap:10px;background:transparent}
.menuToggle span{display:none}
.menuToggle svg{width:22px;height:22px}
/* The globe next to the menu: the language code beside it, one tap to the language sheet. */
/* Transparent like the menu beside it; over the hero both take the bar's tint (.appbar--over .iconBtn). */
.langToggle{display:flex;align-items:center;justify-content:center;gap:5px;width:auto;flex:0 0 auto;min-width:42px;padding:0 11px 0 10px;border-radius:8px;background:transparent;font-size:12px;font-weight:600;letter-spacing:.06em;line-height:1}
.langToggle svg{width:17px;height:17px}
.langToggle:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* A titled bar on a small phone (back, title, home, favourite, menu) has no room for the globe: the language is changed on the main pages, whose bar always shows it. */
@media(max-width:479px){.appbar--titled .langToggle{display:none}}
/* Below 360px the code does not fit beside a back button: the globe alone on every bar (the same on each view), the language stays in its name. */
@media(max-width:359px){.langToggle{min-width:44px;padding:0}.langToggle span{display:none}}
.langList{display:grid;gap:8px}
.langOption{display:flex;align-items:center;gap:14px;width:100%;min-height:52px;padding:10px 14px;border:1px solid var(--hair);border-radius:10px;background:var(--ground);color:var(--txt);font:inherit;font-size:15px;text-align:left;cursor:pointer}
.langOption__code{display:grid;place-items:center;flex:0 0 40px;height:32px;border-radius:6px;background:var(--ground-3);font-size:12px;font-weight:700;letter-spacing:.06em}
.langOption__code svg{width:17px;height:17px}
.langOption__name{flex:1 1 auto;min-width:0}
.langOption>svg{flex:0 0 18px;width:18px;height:18px;color:var(--gold-ink)}
.langOption[aria-pressed=true]{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.langOption[aria-pressed=true] .langOption__code{background:var(--navy);color:#fff}
.langOption:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media(hover:hover){.langOption:not([aria-pressed=true]):hover{background:var(--gold-light);border-color:var(--gold)}}
/* A short screen (a phone in landscape) shows all six choices at once, the marked one included. */
@media(max-height:540px){.langList{grid-template-columns:1fr 1fr}.langOption{min-height:44px;padding:6px 12px;gap:10px}}
.appbarHome{flex-shrink:0}
.sheetBackdrop{background:rgba(31,24,18,.4)}
.homeVipCallback{display:grid;grid-template-columns:1fr;gap:20px;max-width:none;margin:0;padding:28px var(--page-gutter);background:var(--ground-2);color:var(--txt);border:0;border-radius:0}
.homeVipCallback__head .eyebrow{color:var(--gold-ink)}
.homeVipCallback__head h2{font-size:24px;line-height:1.2}
.homeVipCallback__head p{font-size:15px;max-width:48ch;color:var(--txt-2);margin-top:8px}
.callbackDisclosure{min-width:0}
.callbackDisclosure summary{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:46px;padding:10px 16px;border:1px solid var(--hair);border-radius:6px;color:var(--txt);font-size:14px;font-weight:600;cursor:pointer;list-style:none}
.callbackDisclosure summary::-webkit-details-marker{display:none}
.callbackDisclosure summary svg{width:15px;height:15px;transition:transform .2s}
.callbackDisclosure[open] summary svg{transform:rotate(90deg)}
.homeVipCallback__form.vipLeadForm{margin-top:18px}
.homeVipCallback__form.vipLeadForm label span{color:var(--txt-2);font-size:11px}
.homeVipCallback__form.vipLeadForm input{color:var(--txt);background:#fff;border-color:var(--hair);font-size:16px;backdrop-filter:none}
.homeVipCallback__form.vipLeadForm input::placeholder{color:var(--txt-2)}
.homeVipCallback__form.vipLeadForm small{color:var(--txt-2);font-size:12px}
.homeVipServices{background:var(--ground);color:var(--txt);border-top:1px solid var(--hair);padding-block:24px 32px}
.homeVipServices .homeEditorialHead--dark{color:var(--txt);padding-top:12px}
.homeVipServices .homeEditorialHead__sub{color:var(--txt-2)}
.homeVipServices .homeEditorialHead h2{font-size:clamp(26px,2.5vw,34px)}
.homeVipServices__rail .vipServiceCard--featured{box-shadow:none}
.homeVipServices__links{gap:12px 28px;padding-top:16px}
.homeVipServices__links button{flex:0 1 auto;min-height:44px;width:auto;padding:8px 0;background:none;border:0;border-bottom:1px solid var(--hair);color:var(--txt);font-size:11px;letter-spacing:.07em}
.homeVipServices__links button svg:first-child,.homeVipServices__links button svg:last-child{color:var(--gold-ink)}
.homeVipServices__links button:active{background:var(--ground-3)}
.transferNote{display:grid;grid-template-columns:1fr;align-items:center;gap:18px 24px;max-width:none;margin:0;padding:28px var(--page-gutter);background:var(--ground-2);border:0;border-radius:0;color:var(--txt)}
.transferNote__actions{display:flex;flex-direction:column;align-items:center;gap:8px;grid-column:1/-1}
.transferNote__actions .btn{min-height:54px;width:min(100%,340px);padding:16px 28px;white-space:normal;letter-spacing:.07em;font-size:13px;box-shadow:0 6px 18px #29211720}
.transferNote__actions .homeTextLink{font-size:11px}
@media(min-width:700px){
 .homeGateway{padding-inline:var(--page-gutter)}
 .homeGateway__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
 .homeGatewayTile__copy{padding:18px 20px}.homeGatewayTile__copy b{min-height:1.3em}
 .homeVipCallback{grid-template-columns:minmax(0,1.3fr) minmax(250px,1fr);align-items:start;padding:32px var(--page-gutter);gap:32px}
 /* Align VIP services with the page edges; keep landscape footage at its native ratio. */
 .homeVipServices>.homeEditorialHead,.homeVipServices__rail,.homeVipServices__links{padding-inline:var(--page-gutter)}
 .homeVipServices__rail .vipServiceCard,.homeVipServices__rail .vipServiceCard--featured{aspect-ratio:auto;display:flex;flex-direction:column;box-shadow:none;background:var(--ground-2);border-color:var(--hair);overflow:hidden}
 .homeVipServices__rail .vipServiceCard>img{position:relative;height:auto;aspect-ratio:16/9;object-fit:cover;transform:none!important;animation:none!important}
 .homeVipServices__rail .vipServiceCard__video{height:auto;aspect-ratio:16/9;object-fit:cover}
 .homeVipServices__rail .vipServiceCard__shade{display:none}
 .homeVipServices__rail .vipServiceCard__copy{position:relative;inset:auto;display:flex;flex-direction:column;flex:1;padding:20px;transform:none!important;color:var(--txt)}
 .homeVipServices__rail .vipServiceCard__copy b,.homeVipServices__rail .vipServiceCard--featured .vipServiceCard__copy b{font-size:22px;line-height:1.2;margin-top:6px}
 .homeVipServices__rail .vipServiceCard__copy p{font-size:14px;line-height:1.5;color:var(--txt-2);max-width:none;margin:9px 0 16px}
 .homeVipServices__rail .vipServiceCard__copy i,.homeVipServices__rail .vipServiceCard__copy em{color:var(--gold-ink)}
 .homeVipServices__rail .vipServiceCard__copy em{margin-top:auto}
 .transferNote{padding:32px var(--page-gutter)}
}
/* Two columns: a service left over on its own takes the whole row, picture beside the text. */
@media(min-width:700px) and (max-width:1099px){
 .homeVipServices__rail>.vipServiceCard:last-child:nth-child(odd){grid-column:1/-1;flex-direction:row}
 .homeVipServices__rail>.vipServiceCard:last-child:nth-child(odd)>img{width:50%;flex:0 0 50%;align-self:stretch;aspect-ratio:auto;min-height:220px}
 .homeVipServices__rail>.vipServiceCard:last-child:nth-child(odd)>.vipServiceCard__video{right:auto;width:50%;height:100%}
}
@media(min-width:1100px){
 :root{--desktop-header:80px}
 .homeGateway__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
 .homeGatewayTile__media{aspect-ratio:1.65}
 .menuToggle,.appbar--over .menuToggle{width:auto;min-width:100px;padding:0 16px;border-radius:6px;background:transparent;transition:background .2s}
 .menuToggle span{display:inline;font-size:clamp(15px,1.1vw,17px);font-weight:600;letter-spacing:.02em}
 .menuToggle:hover{background:var(--ground-3)}
 .langToggle,.appbar--over .langToggle{min-width:76px;min-height:44px;padding:0 14px;border-radius:6px;background:transparent;font-size:13px;transition:background .2s}
 .langToggle:hover{background:var(--ground-3)}
 .langToggle svg{width:19px;height:19px}
 .appbar:not(.appbar--titled) .appbar__brand{max-width:170px}
 /* The tabs end before the globe: gutter + menu (100) + gap (12) + globe (76) + 16. */
 .tabbar:not(.tabbar--staff){left:220px;right:calc(var(--page-gutter) + 204px);justify-content:space-evenly;gap:clamp(4px,.7vw,14px)}
 .tabbar:not(.tabbar--staff) .tab{gap:7px;padding:10px 10px;border-radius:5px;min-height:44px;color:var(--txt-2)}
 .tabbar:not(.tabbar--staff) .tab.is-on{background:var(--ground-3);color:var(--txt)}
 .tabbar:not(.tabbar--staff) .tab.is-on .tab__ic{background:transparent;color:var(--gold-ink)}
 .appbar--titled .appbar__brand{max-width:none}
 #app:has(.appbar--titled)>.tabbar:not(.tabbar--staff){display:none}
 .appbar--titled>.appbarHome{margin-left:auto}
 .appbar--titled>.iconBtn:last-child{margin-left:0}
 .sheet{max-width:560px}.sheet__body .menuItem{min-height:50px}
 .homeVipServices__rail{gap:20px}
}
/* 1100–1199px: the Russian and Ukrainian tab labels need the room. The globe
   shows only its icon (the code stays in its name), the tabs start closer to
   the logo and the labels are a size smaller. */
@media(min-width:1100px) and (max-width:1199px){
 .langToggle,.appbar--over .langToggle{min-width:44px;padding:0}
 .langToggle span{display:none}
 .tabbar:not(.tabbar--staff){left:calc(var(--page-gutter) + 144px);right:calc(var(--page-gutter) + 172px)}
 .tabbar:not(.tabbar--staff) .tab>span:last-of-type{font-size:14px}
}


/* Reframe the original portrait greeting without inventing people or motion. */
.vipServiceCard[data-block="welcome"]>img,.vipServiceCard[data-block="welcome"]>video{object-position:50% 38%}
.blockHero.blockHero--welcome:not(.blockHero--plane):not(.blockHero--word){aspect-ratio:9/16;max-height:none;min-height:0;max-width:540px;margin-inline:auto}
@media(min-width:700px){
 .blockHero.blockHero--welcome:not(.blockHero--plane):not(.blockHero--word){max-width:1100px;aspect-ratio:auto;height:600px;min-height:0;max-height:calc(100svh - 100px);background:var(--ground-3);align-items:center;justify-content:flex-end}
 .blockHero--welcome>.blockHero__img,.blockHero--welcome>.blockHero__video{width:50%;object-fit:contain;background:var(--ground-3)}
 .blockHero--welcome>.blockHero__scrim{display:none}
 .blockHero--welcome>.blockHero__txt{width:50%;padding:40px}
 .blockHero--welcome .blockHero__title{color:var(--txt);font-size:clamp(30px,4vw,48px)}
 .blockHero--welcome .eyebrow{color:var(--gold-ink)}
}

/* Homepage slideshow: a single responsive layout and explicit touch controls. */
.pHero.pHero--slideshow{min-height:640px;min-height:max(600px,calc(100svh - var(--nav-h)));height:auto;padding:120px 24px 28px;gap:48px;background:#1d302f;touch-action:pan-y pinch-zoom;color:#fffdf8}
.pHero--slideshow .pHero__slides{background:url('../images/editorial-2026/coast-1280.webp') 66% center/cover}
.pHero--slideshow .pHero__img{inset:0;width:100%;height:100%;object-position:var(--hero-focal,center);animation:none!important;transform:scale(1.025);transition:opacity .9s ease;will-change:opacity}
@media (max-width:699px){.pHero--slideshow .pHero__img{object-position:var(--hero-focal-m,var(--hero-focal,center))}}
.pHero--slideshow .pHero__img.is-active{animation:heroEditorialDrift 10s linear both!important}
.pHero--slideshow.is-paused .pHero__img.is-active{animation-play-state:paused!important}
.pHero--slideshow .pHero__scrim{z-index:1;pointer-events:none;background:linear-gradient(180deg,#15242115 5%,#15100b10 26%,#15100b9c 69%,#15100bdd 100%)}
.pHero--slideshow .pHero__body{width:100%;max-width:650px;margin:0;padding:0;z-index:2}
.pHero__eyebrow{margin:0 0 20px;color:#f0d4bf;font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase}
.pHero--slideshow .pHero__title{font:400 clamp(42px,9vw,60px)/1.06 var(--serif);letter-spacing:-.025em;max-width:14ch;text-wrap:balance;margin:0;text-shadow:0 2px 14px #0003;overflow-wrap:break-word}
.pHero--slideshow .pHero__sub{font-size:15px;max-width:36ch;line-height:1.6;margin-top:20px;color:#fff5eb;text-shadow:0 1px 5px #0004}
.pHero--slideshow .pHero__cta{margin-top:26px;min-height:48px;line-height:1.5;font-size:11px;letter-spacing:.10em;text-align:left;color:#fff6ed;gap:16px}
.pHero--slideshow .pHero__cta svg{flex-shrink:0}
/* Below the photograph only a slim bar per slide (the one shown fills while it runs) and pause/play – no preview
   pictures, no captions over the image. Each bar keeps a 44 px tap target around its 3 px line. */
.heroFooter{position:relative;z-index:3;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:16px}
.heroChoices{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0}
.heroChoice{position:relative;display:block;width:36px;height:44px;padding:0;background:none;border:0;cursor:pointer}
.heroChoice>i{position:absolute;left:4px;right:4px;top:50%;height:3px;margin-top:-1.5px;border-radius:2px;background:#ffffff59;overflow:hidden}
.heroChoice>i:after{content:'';display:block;width:100%;height:100%;background:#f0d4bf;transform:scaleX(0);transform-origin:left}
.heroChoice[aria-current=true]>i{background:#ffffff8c}.heroChoice[aria-current=true]>i:after{transform:scaleX(1)}
.is-running .heroChoice[aria-current=true]>i:after{animation:heroSlideProgress 8s linear both}
.heroChoice:disabled{opacity:.4;cursor:not-allowed}
.heroActions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:none}
/* a slide's own headline fades in when the slide changes */
.pHero--slideshow .pHero__title.is-new{animation:heroTitleIn .7s ease both}
@keyframes heroTitleIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.heroControl{position:relative;display:grid;place-items:center;width:44px;height:44px;padding:0;flex:none;border:0;border-radius:50%;background:transparent;color:white;cursor:pointer}
.heroControl:before{content:"";position:absolute;inset:6px;border:1px solid #ffffff70;border-radius:50%;background:#15100b26;transition:background .18s,border-color .18s}
.heroControl svg{position:relative}
.heroControl svg{width:14px;height:14px}.heroControl[data-act=hero-motion] svg{fill:currentColor}
.pHero--slideshow :focus-visible{outline:2px solid #fff4df!important;outline-offset:5px}
.pHero--slideshow .srOnly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(hover:hover){.heroControl:hover:before{background:#ffffff24}.heroChoice:not(:disabled):hover>i{background:#ffffffb3}}
@media(min-width:700px){
 .pHero.pHero--slideshow{min-height:700px;min-height:max(650px,calc(92svh - var(--nav-h)));padding:140px var(--page-gutter) 36px;gap:60px}
 .pHero--slideshow .pHero__img{object-position:50% 50%}
 .pHero--slideshow .pHero__scrim{background:linear-gradient(90deg,#15100b91,#15100b10 78%),linear-gradient(0deg,#15100bbd,transparent 65%)}
 .pHero--slideshow .pHero__body,.heroFooter{max-width:1320px;margin-inline:auto}
 .pHero--slideshow .pHero__title{font-size:clamp(58px,5vw,88px);max-width:13ch}.pHero--slideshow .pHero__sub{font-size:17px;max-width:42ch}.pHero__eyebrow{font-size:12px}
 .heroFooter{gap:32px}.heroChoice{width:48px}
 .heroActions{gap:10px}
}
@media(min-width:1100px){
 .pHero.pHero--slideshow{min-height:700px;min-height:clamp(660px,90svh,920px);padding-top:calc(var(--desktop-header) + 120px);padding-bottom:40px;gap:64px}
 .pHero--slideshow .pHero__sub{max-width:none;white-space:nowrap}
}
@media(max-width:380px){.pHero.pHero--slideshow{padding-inline:20px}.heroChoice{width:30px}}
@media(max-height:520px) and (orientation:landscape){.pHero.pHero--slideshow{min-height:600px;padding-top:100px;gap:32px}}
@keyframes heroEditorialDrift{from{transform:scale(1.025)}to{transform:scale(1.065)}}
@keyframes heroSlideProgress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.pHero--slideshow .pHero__img,.pHero--slideshow .pHero__img.is-active{animation:none!important;transform:none!important;transition:none}.is-running .heroChoice[aria-current=true]>i:after{animation:none}.pHero--slideshow .pHero__title.is-new{animation:none}}

/* Pointer feedback belongs to actionable cards, never decorative page sections.
   Touch keeps its existing tap states; keyboard focus keeps the visible outline. */
@media (hover:hover) and (pointer:fine){
 .card[role="button"]{cursor:pointer}
 :is(.homeGatewayTile,.homeVipServices__rail .vipServiceCard):hover{
  border-color:var(--gold-ink);
  box-shadow:0 8px 22px var(--hair);
 }
 :is(.homePromoCard,.travelWorld,.homeOfferCard,.homeSuperDealCard,.destinationIndex__card):hover{
  outline:2px solid var(--gold);outline-offset:-2px;
 }
 .card[role="button"]:hover .card__name{
  color:var(--gold-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;
 }
 :is(.homeTextLink,.homeVipServices__links button,.pHero__cta):hover{
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;
 }
 :is(.menuItem,.callbackDisclosure summary,.serviceSearch__choice:not(.is-on),.tabbar:not(.tabbar--staff) .tab:not(.is-on)):hover{
  background:var(--ground-3);color:var(--txt);
 }
 .serviceSearch__choice:not(.is-on):hover,.callbackDisclosure summary:hover{border-color:var(--gold-ink)}
 :is(.card__fav,.homeOfferCard__fav):hover{background:var(--navy);border-color:var(--gold-light)}
 .heroControl:hover{color:var(--navy)}
 .heroControl:hover:before{background:var(--gold-light);border-color:var(--gold-light)}
 .heroChoice:not(:disabled):hover>i{background:var(--gold-light)}
}

/* Individual scale composes with the existing editorial image drift instead
   of restarting it. Videos retain their native framing and resolution. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :is(.homeGatewayTile,.homeVipServices__rail .vipServiceCard){
  transition:translate .24s var(--ease),box-shadow .24s var(--ease),border-color .24s ease;
 }
 :is(.homeGatewayTile,.homeVipServices__rail .vipServiceCard):hover{translate:0 -3px}
 :is(.homeGatewayTile,.homeVipServices__rail .vipServiceCard):active{translate:0 0}
 :is(.homeGatewayTile__media>img,.homePromoCard>img,.travelWorld>img,.homeOfferCard__media>img,.homeSuperDealCard>img,.destinationIndex__card>img,.card[role="button"] .card__media>img){
  transition:scale .45s var(--ease);
 }
 .homeGatewayTile:hover .homeGatewayTile__media>img,
 :is(.homePromoCard,.travelWorld,.homeSuperDealCard,.destinationIndex__card):hover>img,
 .homeOfferCard:hover .homeOfferCard__media>img,
 .card[role="button"]:hover .card__media>img{scale:1.035}
 :is(.homeGatewayTile__go,.homePromoCard__copy>span,.travelWorld__copy>span,.homeSuperDealCard__copy span svg,.vipServiceCard__copy em svg,.homeTextLink svg,.excCard__action svg){
  transition:translate .24s var(--ease);
 }
 .homeGatewayTile:hover .homeGatewayTile__go,
 .homePromoCard:hover .homePromoCard__copy>span,
 .travelWorld:hover .travelWorld__copy>span,
 .homeSuperDealCard:hover .homeSuperDealCard__copy span svg,
 .vipServiceCard:hover .vipServiceCard__copy em svg,
 .homeTextLink:hover svg,
 .card[role="button"]:hover .excCard__action svg{translate:3px 0}
 :is(.menuItem,.callbackDisclosure summary,.serviceSearch__choice,.tabbar:not(.tabbar--staff) .tab,.heroControl){
  transition:background-color .2s ease,color .2s ease,border-color .2s ease;
 }
}

/* The footer action spans the full page, including the footer gutters. */
.siteFooter{--footer-gutter:22px}
.siteFooter .siteFooter__cta{max-width:none;width:calc(100% + 2 * var(--footer-gutter) + var(--sal) + var(--sar));margin-left:calc(-1 * (var(--footer-gutter) + var(--sal)));margin-right:calc(-1 * (var(--footer-gutter) + var(--sar)));border:0;border-radius:0}
@media(min-width:700px){.siteFooter{--footer-gutter:40px}}

/* Search areas invite a switch (app.js armAreaCue). Hover and keyboard focus
   mark a tile that can be chosen; where motion is welcome it also lifts and
   its arrow steps toward the tap. While the row carries .is-cueing each tile
   that is not selected lights up in turn (--cue-i × --cue-step; --cue-shift
   picks a play up mid-way after a redraw): a rose-gold ring and glow, a warm
   surface with a bright light passing over it, the icon pops and turns
   rose-gold, and "Ansehen ›" knocks twice to the right. It moves only light,
   colour, the icon and the arrow — never the tile box — so a tap in the
   middle of it lands where it was aimed. Reduced motion keeps the static hover and focus
   states and never gets .is-cueing. */
.serviceSearch__choices>.serviceSearch__choice:not(.is-on):focus-visible{background:var(--ground-3);border-color:var(--gold-ink);box-shadow:0 2px 8px #2a211914;color:var(--txt)}
.serviceSearch__choice:not(.is-on):focus-visible .serviceSearch__action{color:var(--gold-ink)}
.serviceSearch__choice:not(.is-on):focus-visible .serviceSearch__icon{background:var(--paper,#fffdf9)}
@media(hover:hover){
 .serviceSearch__choice:not(.is-on):hover .serviceSearch__action{color:var(--gold-ink)}
 .serviceSearch__choice:not(.is-on):hover .serviceSearch__icon{background:var(--paper,#fffdf9)}
}
@media(prefers-reduced-motion:no-preference){
 .serviceSearch__choices>.serviceSearch__choice:not(.is-on){transition:translate .24s var(--ease),box-shadow .24s var(--ease),background-color .2s ease,color .2s ease,border-color .2s ease}
 .serviceSearch__choice:not(.is-on) .serviceSearch__action svg{transition:translate .24s var(--ease)}
 .serviceSearch__choices>.serviceSearch__choice:not(.is-on):focus-visible{translate:0 -2px;box-shadow:0 8px 18px #2a21191a}
 .serviceSearch__choice:not(.is-on):focus-visible .serviceSearch__action svg{translate:3px 0}
 @media(hover:hover){
  .serviceSearch__choices>.serviceSearch__choice:not(.is-on):hover{translate:0 -2px;box-shadow:0 8px 18px #2a21191a}
  /* The lift moves the box away from a pointer resting on its bottom edge,
     which would drop the hover and let the tile shimmy up and down. While
     lifted, an invisible strip under it keeps that edge covered. */
  .serviceSearch__choices>.serviceSearch__choice:not(.is-on):hover::before{content:"";position:absolute;left:0;right:0;top:100%;height:3px}
  .serviceSearch__choice:not(.is-on):hover .serviceSearch__action svg{translate:3px 0}
 }
 .serviceSearch__choices>.serviceSearch__choice:not(.is-on):active{translate:0 0}
 .serviceSearch__choices.is-cueing>.serviceSearch__choice:not(.is-on){--cue-at:calc(var(--cue-i,0) * var(--cue-step,480ms) - var(--cue-shift,0ms));isolation:isolate;animation:areaCueEdge 1.7s cubic-bezier(.4,0,.2,1) var(--cue-at) both}
 /* z-index -1 inside the isolated tile: the light crosses the tile's surface
    under the words and the icon, so nothing is washed out while it passes. */
 .serviceSearch__choices.is-cueing>.serviceSearch__choice:not(.is-on)::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,#f1d3c300 33%,#e8bfa866 43%,#fff6efee 50%,#e8bfa866 57%,#f1d3c300 67%) 110% 0/300% 100% no-repeat;animation:areaCueSweep 1.7s cubic-bezier(.45,.05,.35,1) var(--cue-at) both}
 .serviceSearch__choices.is-cueing>.serviceSearch__choice:not(.is-on) .serviceSearch__icon{animation:areaCueIcon 1.7s cubic-bezier(.34,1.3,.5,1) var(--cue-at) both}
 .serviceSearch__choices.is-cueing>.serviceSearch__choice:not(.is-on) .serviceSearch__action{animation:areaCueInk 1.7s ease-in-out var(--cue-at) both}
 .serviceSearch__choices.is-cueing>.serviceSearch__choice:not(.is-on) .serviceSearch__action svg{animation:areaCueNudge 1.7s ease-in-out var(--cue-at) both}
}
@media(forced-colors:active){.serviceSearch__choices.is-cueing>.serviceSearch__choice::after{display:none}}
@keyframes areaCueSweep{from{background-position:110% 0}to{background-position:-10% 0}}
@keyframes areaCueEdge{0%,100%{border-color:var(--hair);background-color:var(--paper,#fffdf9);box-shadow:0 0 0 0 #93564000}22%,72%{border-color:var(--gold-ink);background-color:#f7e9df;box-shadow:0 0 0 3px #d9b09c8c,0 12px 28px #93564033}}
@keyframes areaCueIcon{0%,100%{transform:none;background-color:var(--ground-3);color:var(--gold-ink)}22%{transform:scale(1.22) rotate(-7deg);background-color:var(--gold-ink);color:#fffdf9}38%{transform:scale(1.08) rotate(5deg)}54%,72%{transform:scale(1.14);background-color:var(--gold-ink);color:#fffdf9}}
@keyframes areaCueInk{0%,100%{color:#6b5b49}22%,76%{color:var(--gold-ink)}}
@keyframes areaCueNudge{0%,20%,46%,72%,100%{translate:0 0}33%,59%{translate:7px 0}}
