/* Use one centered, opaque arrow treatment in every site carousel. */
.gallery-arrow,.stage-carousel-arrow,.experience-gallery-arrow{
  display:flex!important;width:50px!important;height:50px!important;flex:0 0 50px!important;
  align-items:center!important;justify-content:center!important;text-align:center!important;
  padding:0!important;border:1px solid var(--line)!important;border-radius:50%!important;
  background:#fff!important;color:var(--ink)!important;box-shadow:none!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  font-family:inherit!important;font-size:20px!important;font-weight:400!important;line-height:1!important;
  cursor:pointer!important;transition:background .18s ease,color .18s ease,opacity .18s ease!important;
}

.gallery-arrow:hover,.stage-carousel-arrow:hover:not(:disabled),.experience-gallery-arrow:hover{
  background:#111!important;color:#fff!important;
}
.gallery-arrow:hover{transform:translateY(-50%)!important}
.stage-carousel-arrow:hover:not(:disabled){transform:translateY(-50%)!important}
.experience-gallery-arrow:hover{transform:none!important}
@media(max-width:760px){
  .gallery-arrow,.stage-carousel-arrow,.experience-gallery-arrow{width:42px!important;height:42px!important;flex-basis:42px!important}
}

/* v162.11 — shared alignment system for Accueil, stages, and itinérants. */
:root{--content-copy-gap:clamp(40px,5.6vw,80px)}
@media(min-width:901px){
  .site-header{
    padding-left:max(24px,calc((100vw - var(--max))/2))!important;
    padding-right:max(24px,calc((100vw - var(--max))/2))!important;
  }
  #app .section-head:has(>p),
  #stageApp .stage-organisation-v11 .section-head,
  #app>section.intro,
  #stageApp .contact-mini-inner{
    grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)!important;
    column-gap:var(--content-copy-gap)!important;
    row-gap:0!important;
    align-items:last baseline!important;
  }
  #app .section-head>p,
  #stageApp .section-head>p{
    justify-self:stretch!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    text-align:left!important;
    transform:none!important;
  }
  #app>section.intro .intro-copy{
    align-items:flex-start!important;
    width:100%!important;
    max-width:none!important;
    text-align:left!important;
  }
  #app>section.intro .intro-copy .lead{
    width:100%!important;
    max-width:none!important;
    text-align:left!important;
  }
  #app>section.intro .intro-copy .text-link{align-self:flex-start!important}
  #stageApp .contact-mini-inner>div:last-child{
    display:contents!important;
  }
  #stageApp .contact-mini-inner>div:last-child>p{
    grid-column:2!important;
    grid-row:1!important;
    align-self:last baseline!important;
    justify-self:stretch!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    text-align:left!important;
  }
  #stageApp .contact-mini-inner>div:last-child>.text-link{
    grid-column:2!important;
    grid-row:2!important;
    align-self:start!important;
    justify-self:start!important;
    margin-top:22px!important;
  }
}
/* Keep the booking headline and its explanation on the same editorial axis. */
@media(min-width:901px){
  #stageApp .booking-v11 .booking-intro{
    display:grid!important;
    width:100%!important;
    max-width:none!important;
    grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)!important;
    column-gap:var(--content-copy-gap)!important;
    row-gap:0!important;
    align-items:start!important;
  }
  #stageApp .booking-v11 .booking-intro>.eyebrow{
    grid-column:1!important;
    grid-row:1!important;
    margin:0 0 10px!important;
  }
  #stageApp .booking-v11 .booking-intro>h2{
    grid-column:1!important;
    grid-row:2!important;
    max-width:none!important;
    margin:8px 0 0!important;
    align-self:last baseline!important;
  }
  #stageApp .booking-v11 .booking-intro>.lead{
    grid-column:2!important;
    grid-row:2!important;
    align-self:last baseline!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }
  #stageApp .booking-v11 .booking-intro>.notice{
    grid-column:1 / -1!important;
    grid-row:3!important;
    max-width:760px!important;
    margin-top:clamp(56px,4.7vw,72px)!important;
  }
}
@media(max-width:900px){
  .site-header{padding-left:16px!important;padding-right:16px!important}
}
@media(max-width:760px){
  .site-header{
    grid-template-columns:minmax(0,1fr) 40px!important;
    padding-left:16px!important;
    padding-right:16px!important;
  }
  .site-header .brand-mark{
    grid-column:1!important;
    justify-self:start!important;
    justify-content:flex-start!important;
  }
  .site-header .brand-logo{object-position:left center!important}
  .site-header .menu{grid-column:2!important}
}
/* Keep every stage heading on the shared page-content axis. */
#stageApp > .hotel-choice-intro{
  margin-left:max(24px,calc((100vw - var(--max))/2))!important;
  margin-right:0!important;
}
@media(max-width:900px){
  #stageApp > .hotel-choice-intro{
    width:calc(100% - 32px)!important;
    margin-left:16px!important;
    margin-right:16px!important;
  }
}

/* v162.14 — align editorial descriptions to the first headline baseline and the right column edge. */
@media(min-width:901px){
  #app .section-head:has(>p),
  #stageApp .section-head:has(>p){
    grid-template-rows:auto auto!important;
    row-gap:8px!important;
    align-items:start!important;
  }
  #app .section-head:has(>p)>div,
  #stageApp .section-head:has(>p)>div{display:contents!important}
  #app .section-head:has(>p)>div>.eyebrow,
  #stageApp .section-head:has(>p)>div>.eyebrow{
    grid-column:1!important;grid-row:1!important;align-self:start!important;margin:0!important;
  }
  #app .section-head:has(>p)>div>h2,
  #stageApp .section-head:has(>p)>div>h2{
    grid-column:1!important;grid-row:2!important;align-self:start!important;margin:0!important;
  }
  #app .section-head:has(>p)>p,
  #stageApp .section-head:has(>p)>p{
    grid-column:2!important;grid-row:2!important;align-self:start!important;justify-self:stretch!important;
    width:100%!important;max-width:none!important;margin:0!important;padding:0!important;
    text-align:left!important;hyphens:auto!important;
    text-wrap:pretty!important;transform:none!important;
  }

  /* The opening editorial split uses the same first-line baseline. */
  #app>section.intro{
    grid-template-rows:auto auto!important;
    row-gap:8px!important;
    align-items:start!important;
  }
  #app>section.intro>.intro-heading{display:contents!important}
  #app>section.intro>.intro-heading>.eyebrow{
    grid-column:1!important;grid-row:1!important;align-self:start!important;margin:0!important;
  }
  #app>section.intro>.intro-heading>h2{
    grid-column:1!important;grid-row:2!important;align-self:start!important;margin:0!important;
  }
  #app>section.intro>.intro-copy{
    grid-column:2!important;grid-row:2!important;align-self:start!important;
    display:flex!important;flex-direction:column!important;justify-content:flex-start!important;align-items:stretch!important;
    width:100%!important;max-width:none!important;margin:0!important;padding:0!important;transform:none!important;text-align:left!important;
  }
  #app>section.intro>.intro-copy>.lead{
    width:100%!important;max-width:none!important;margin:0!important;text-align:left!important;
    hyphens:auto!important;text-wrap:pretty!important;
  }
  #app>section.intro>.intro-copy>.text-link{align-self:flex-end!important;margin-top:18px!important;text-align:right!important}

  /* Booking keeps its payment notice beneath the two aligned intro columns. */
  #stageApp .booking-v11 .booking-intro{
    grid-template-rows:auto auto auto!important;
    row-gap:0!important;
    align-items:start!important;
  }
  #stageApp .booking-v11 .booking-intro>.eyebrow{grid-row:1!important;margin:0 0 8px!important}
  #stageApp .booking-v11 .booking-intro>h2{
    grid-column:1!important;grid-row:2!important;align-self:start!important;margin:0!important;
  }
  #stageApp .booking-v11 .booking-intro>.lead{
    grid-column:2!important;grid-row:2!important;align-self:start!important;justify-self:stretch!important;
    width:100%!important;max-width:none!important;margin:0!important;text-align:left!important;
    hyphens:auto!important;text-wrap:pretty!important;
  }
  #stageApp .booking-v11 .booking-intro>.notice{grid-row:3!important}

  /* The stage and itinérant contact invitation follows the same two-column rule. */
  #stageApp .contact-mini-inner{
    grid-template-rows:auto auto!important;
    row-gap:8px!important;
    align-items:start!important;
  }
  #stageApp .contact-mini-inner>div:first-child{display:contents!important}
  #stageApp .contact-mini-inner>div:first-child>.eyebrow{
    grid-column:1!important;grid-row:1!important;align-self:start!important;margin:0!important;
  }
  #stageApp .contact-mini-inner>div:first-child>h2{
    grid-column:1!important;grid-row:2!important;align-self:start!important;margin:0!important;
  }
  #stageApp .contact-mini-inner>div:last-child{
    grid-column:2!important;grid-row:2!important;align-self:start!important;justify-self:stretch!important;
    display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;margin:0!important;padding:0!important;text-align:left!important;
  }
  #stageApp .contact-mini-inner>div:last-child>p{
    width:100%!important;max-width:none!important;margin:0!important;text-align:left!important;
    hyphens:auto!important;text-wrap:pretty!important;
  }
  #stageApp .contact-mini-inner>div:last-child>.text-link{align-self:flex-end!important;margin-top:18px!important;text-align:right!important}

  /* Keep stage organisation copy level with the first heading line. */
  #stageApp .stage-organisation-v11 .section-head{
    display:grid!important;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)!important;
    grid-template-rows:auto auto!important;column-gap:var(--content-copy-gap)!important;
    row-gap:8px!important;align-items:start!important;
  }
  #stageApp .stage-organisation-v11 .section-head>div{display:contents!important}
  #stageApp .stage-organisation-v11 .section-head>div>.eyebrow{
    grid-column:1!important;grid-row:1!important;align-self:start!important;margin:0!important;
  }
  #stageApp .stage-organisation-v11 .section-head>div>h2{
    grid-column:1!important;grid-row:2!important;align-self:start!important;margin:0!important;
  }
  #stageApp .stage-organisation-v11 .section-head>p{
    grid-column:2!important;grid-row:2!important;align-self:start!important;justify-self:stretch!important;
    width:100%!important;max-width:none!important;margin:0!important;padding:0!important;text-align:left!important;
  }
}

/* v162.14 — one shared page-content axis for header, hero, sections, legal pages, and footer. */
:root{--site-content-gutter:max(24px,calc((100vw - var(--max))/2))}
@media(min-width:901px){
  .site-header{padding-left:var(--site-content-gutter)!important;padding-right:var(--site-content-gutter)!important}
  #app .container,#stageApp .container,body.legal-page .legal-content.container,.footer>.container{
    width:min(calc(100% - 48px),var(--max))!important;margin-left:auto!important;margin-right:auto!important;
  }
  #app>.hero .hero-content,
  #stageApp>.stage-hero-v11 .stage-hero-content-v11{
    width:min(calc(100% - 48px),var(--max))!important;margin-left:auto!important;margin-right:auto!important;
  }
  #stageApp>.hotel-choice-intro{margin-left:var(--site-content-gutter)!important}
}
@media(max-width:900px){
  :root{--site-content-gutter:16px}
  .site-header{padding-left:16px!important;padding-right:16px!important}
  #app .container,#stageApp .container,body.legal-page .legal-content.container,.footer>.container{
    width:min(calc(100% - 32px),var(--max))!important;margin-left:auto!important;margin-right:auto!important;
  }
  #app>.hero .hero-content,
  #stageApp>.stage-hero-v11 .stage-hero-content-v11{
    width:calc(100% - 32px)!important;margin-left:auto!important;margin-right:auto!important;
  }
  #stageApp>.hotel-choice-intro{width:calc(100% - 32px)!important;margin-left:16px!important;margin-right:16px!important}
}

/* v162.15 — explanatory copy shares the headline's top line and reads left-to-right. */
@media(min-width:901px){
  body:has(#app) #app .section-head:has(>p)>p{
    align-self:start!important;
    justify-self:stretch!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    text-align:left!important;
    text-wrap:wrap!important;
  }
  body:has(#app) #app>section.intro>.intro-copy,
  body:has(#app) #app>section.intro>.intro-copy>.lead{
    align-items:flex-start!important;
    text-align:left!important;
  }
  body:has(#stageApp) #stageApp .stage-organisation-v11 .section-head>p,
  body:has(#stageApp) #stageApp .booking-v11 .booking-intro>.lead,
  body:has(#stageApp) #stageApp .contact-mini-inner>div:last-child>p{
    align-self:start!important;
    justify-self:stretch!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    text-align:left!important;
    text-wrap:wrap!important;
  }
}

/* v162.16 — one reading alignment for every explanatory right column.
   The extra context raises specificity above legacy page-specific overrides. */
@media(min-width:901px){
  html body:has(#app) #app .section-head:has(>p)>p,
  html body:has(#app) #app>div#stages>section.category-section .section-head:has(>p)>p,
  html body:has(#app) #app>section.category-section .section-head:has(>p)>p,
  html body:has(#app) #app>section#experience .section-head:has(>p)>p,
  html body:has(#app) #app>section.dates-section .section-head:has(>p)>p,
  html body:has(#stageApp) #stageApp .section-head:has(>p)>p,
  html body:has(#stageApp) #stageApp .booking-v11 .booking-intro>.lead,
  html body:has(#stageApp) #stageApp .contact-mini-inner>div:last-child>p{
    align-self:start!important;
    justify-self:stretch!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    text-align:left!important;
    text-wrap:wrap!important;
    transform:none!important;
  }

  html body:has(#app) #app>section.intro>.intro-copy{
    align-self:start!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    text-align:left!important;
  }
  html body:has(#app) #app>section.intro>.intro-copy>.lead{
    align-self:start!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    text-align:left!important;
    text-wrap:wrap!important;
    transform:none!important;
  }
html body:has(#app) #app>section.intro>.intro-copy>.text-link{
    align-self:flex-start!important;
    text-align:left!important;
  }
}

/* v162.17 — editorial type and spacing tokens shared by every public page. */
:root{
  --editorial-display-tracking:-.025em;
  --editorial-subhead-tracking:-.018em;
  --editorial-kicker-title-gap:10px;
  --editorial-title-copy-gap:20px;
}

html body #app>.hero h1,
html body #app>section.intro h2,
html body #app .section-head h2,
html body #app>div#stages>section.category-section .section-head h2,
html body #app>section.category-section .section-head h2,
html body #app>section#experience .section-head h2,
html body #app>section.dates-section .section-head h2,
html body #app>section#contact .contact-intro h2,
html body #app>section.cta h2,
html body #app>section.cta .cta-heading h2,
html body #stageApp>.stage-hero-v11 h1,
html body #stageApp>.stage-overview-v11 .stage-overview-head h2,
html body #stageApp>section.stage-overview-v11 .stage-overview-head h2,
html body #stageApp>.hotel-choice-intro h2,
html body #stageApp>section.hotel-choice-intro h2,
html body #stageApp>.stage-organisation-v11 .section-head h2,
html body #stageApp>.booking-v11 .booking-intro h2,
html body #stageApp>section.booking-v11 .booking-intro h2,
html body #stageApp>.contact-mini .contact-mini-inner h2,
html body.legal-page .legal-content h1{
  letter-spacing:var(--editorial-display-tracking)!important;
  font-kerning:normal!important;
  font-optical-sizing:auto!important;
  font-feature-settings:"kern" 1,"liga" 1!important;
  text-rendering:optimizeLegibility!important;
}

html body #app .stage-info h3,
html body #app .destination-row strong,
html body #app .team-card h3,
html body #app .experience-journey .feature h3,
html body #app .calendar-month-head h3,
html body #app .calendar-row-stage strong,
html body #stageApp .info-card h3,
html body #stageApp .related-card h3,
html body #stageApp .stage-copy h2,
html body #stageApp .stage-copy h3,
html body.legal-page .legal-content section h2{
  letter-spacing:var(--editorial-subhead-tracking)!important;
  font-kerning:normal!important;
  font-optical-sizing:auto!important;
  font-feature-settings:"kern" 1,"liga" 1!important;
}

/* A single 10px label-to-title rhythm; split section copy starts level with the title. */
#app > div#stages .category-section .section-head>div>.eyebrow,
#app > section.category-section .section-head>div>.eyebrow,
#app > section#destinations .section-head>div>.eyebrow,
#app > section#experience .section-head>div>.eyebrow,
#app > section:has(.team-grid) .section-head>div>.eyebrow,
#app > section.dates-section .section-head>div>.eyebrow,
#app > section.cta .eyebrow,
#app > section#contact .contact-grid>div:first-child>.eyebrow,
#app > section#contact .contact-head .eyebrow,
#app > section#contact .contact-intro .eyebrow,
#stageApp .stage-overview-head>.eyebrow,
#stageApp .stage-organisation-v11 .section-head>div>.eyebrow,
#stageApp .booking-v11 .booking-intro>.eyebrow,
#stageApp .contact-mini-inner>div:first-child>.eyebrow,
#stageApp .hotel-choice-intro>.eyebrow,
body.legal-page .legal-content>.eyebrow{
  margin:0 0 var(--editorial-kicker-title-gap)!important;
}

#app .section-head h2,
#app>section.intro h2,
#app>section#contact .contact-intro h2,
#app>section.cta .cta-heading h2,
#app>div#stages>section.category-section .section-head h2,
#app>section.category-section .section-head h2,
#app>section#experience .section-head h2,
#app>section.dates-section .section-head h2,
#stageApp .stage-overview-head h2,
#stageApp>section.stage-overview-v11 .stage-overview-head h2,
#stageApp>section.hotel-choice-intro h2,
#stageApp .stage-organisation-v11 .section-head h2,
#stageApp .booking-v11 .booking-intro h2,
#stageApp>section.booking-v11 .booking-intro h2,
#stageApp .contact-mini-inner h2,
body.legal-page .legal-content>h1{
  margin-top:0!important;
}

#app>div#stages>section.category-section .section-head h2,
#app>section.category-section .section-head h2,
#app>section#experience .section-head h2,
#app>section.dates-section .section-head h2{
  margin:0!important;
}

#stageApp>.hotel-choice-intro h2{
  margin:0 0 var(--editorial-title-copy-gap)!important;
}
#app>section#contact .contact-intro h2{
  margin:0 0 var(--editorial-title-copy-gap)!important;
}
body.legal-page .legal-content>h1{
  margin:0 0 24px!important;
}

@media(min-width:901px){
  #app .section-head:has(>p),
  #stageApp .stage-organisation-v11 .section-head{
    row-gap:var(--editorial-kicker-title-gap)!important;
    align-items:start!important;
  }
  #app .section-head:has(>p)>div>.eyebrow,
  #stageApp .stage-organisation-v11 .section-head>div>.eyebrow{
    margin:0!important;
  }
  #app .section-head:has(>p)>div>h2,
  #stageApp .stage-organisation-v11 .section-head>div>h2{
    margin:0!important;
    align-self:start!important;
  }
  #app .section-head:has(>p)>p,
  #stageApp .stage-organisation-v11 .section-head>p{
    align-self:start!important;
    margin:0!important;
    text-align:left!important;
  }
  #app>section.intro{
    row-gap:var(--editorial-kicker-title-gap)!important;
    align-items:start!important;
  }
  #app>section.intro>.intro-heading>.eyebrow{margin:0!important}
  #app>section.intro>.intro-heading>h2{margin:0!important;align-self:start!important}
  #app>section.intro>.intro-copy{
    align-self:start!important;
    margin:0!important;
  }
  #app>section.intro>.intro-copy>.lead{
    align-self:start!important;
    margin:0!important;
    text-align:left!important;
  }
  #stageApp .booking-v11 .booking-intro{
    row-gap:var(--editorial-kicker-title-gap)!important;
    align-items:start!important;
  }
  #stageApp .booking-v11 .booking-intro>.eyebrow{margin:0!important}
  #stageApp .booking-v11 .booking-intro>h2{
    align-self:start!important;
    margin:0!important;
  }
  #stageApp .booking-v11 .booking-intro>.lead{
    align-self:start!important;
    margin:0!important;
  }
  /* Preserve the payment note's established position while the heading aligns with its lead. */
  #stageApp .booking-v11 .booking-intro>.notice{
    margin-top:calc(clamp(56px,4.7vw,72px) + 8px)!important;
  }
  #stageApp .contact-mini-inner{
    row-gap:var(--editorial-kicker-title-gap)!important;
    align-items:start!important;
  }
  #stageApp .contact-mini-inner>div:first-child>.eyebrow{margin:0!important}
  #stageApp .contact-mini-inner>div:first-child>h2{margin:0!important}
  #stageApp .contact-mini-inner>div:last-child>p{
    align-self:start!important;
    margin:0!important;
    text-align:left!important;
  }
}

@media(max-width:900px){
  #app .section-head:has(>p){row-gap:var(--editorial-title-copy-gap)!important}
  #app>section.intro{row-gap:var(--editorial-title-copy-gap)!important}
  #stageApp .stage-organisation-v11 .section-head{row-gap:var(--editorial-title-copy-gap)!important}
  #stageApp .contact-mini-inner{row-gap:var(--editorial-title-copy-gap)!important}
  #stageApp .booking-v11 .booking-intro>.eyebrow{margin-bottom:var(--editorial-kicker-title-gap)!important}
  #stageApp .booking-v11 .booking-intro>h2{margin:0 0 var(--editorial-title-copy-gap)!important}
}

/* v162.18 — keep one 10px kicker/title gap; legacy kicker margins must not add a second gap. */
@media(min-width:901px){
  html body #app>section.intro>div:first-child>.eyebrow,
  html body #app>div#stages>section.category-section .section-head:has(>p)>div>.eyebrow,
  html body #app>section.category-section .section-head:has(>p)>div>.eyebrow,
  html body #app>section#destinations .section-head:has(>p)>div>.eyebrow,
  html body #app>section#experience .section-head:has(>p)>div>.eyebrow,
  html body #app>section:has(.team-grid) .section-head:has(>p)>div>.eyebrow,
  html body #app>section.dates-section .section-head:has(>p)>div>.eyebrow,
  html body #app>section#contact .contact-grid>div:first-child>.eyebrow,
  html body #stageApp .stage-organisation-v11 .section-head:has(>p)>div>.eyebrow,
  html body #stageApp .contact-mini-inner>div:first-child>.eyebrow{
    margin:0!important;
  }

  /* The payment note keeps its established vertical position. */
  html body #stageApp .booking-v11 .booking-intro>.eyebrow{
    margin:0!important;
  }
  /* The booking grid gap supplies the 10px rhythm; keep the payment note at its original y position. */
  html body #stageApp .booking-v11 .booking-intro>.notice{
    margin-top:calc(clamp(56px,4.7vw,72px) + 8px)!important;
  }
}

/* v162.19 — the stage contact kicker shares the same single 10px label-to-title gap. */
@media(min-width:901px){
  html body #stageApp .contact-mini .contact-mini-inner>div:first-child>.eyebrow{
    margin:0!important;
  }
}
