/* Impeccable layout overlay — public + dashboards.
   Identity stays Ink / Action. Structure: one chrome stack, then the job. */

:root {
  --cmtb-space-1: 0.25rem;
  --cmtb-space-2: 0.5rem;
  --cmtb-space-3: 0.75rem;
  --cmtb-space-4: 1rem;
  --cmtb-space-5: 1.25rem;
  --cmtb-space-6: 1.5rem;
  --cmtb-space-8: 2rem;
  --cmtb-onboard-h: 0px;
  --cmtb-offline-h: 0px;
}

/* ── Chrome: skip → offline → banner → header → path rail → content ── */

html.has-onboard-path {
  scroll-padding-top: 0;
}

html {
  scroll-padding-top: 0;
}

.legal-prose [id],
.help-article [id],
h2[id],
h3[id],
.faq-item[id] {
  scroll-margin-top: calc(
    var(--site-header-offset, 72px) + var(--cmtb-onboard-h, 0px) + 0.75rem
  );
}

html.has-offline-bar:not(.has-site-banner) body:not(.ds-body):not(.admin-body) .site-header {
  top: var(--cmtb-offline-h, 0px);
}

html.has-offline-bar.has-site-banner body:not(.ds-body):not(.admin-body) .site-header {
  top: calc(var(--site-banner-h, 42px) + var(--cmtb-offline-h, 0px));
}

.cmtb-offline:not([hidden]) {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 91;
}

html.has-site-banner .cmtb-offline:not([hidden]) {
  top: var(--site-banner-h, 42px);
}

/* Path rail must not steal header clearance from the page title. */
.cmtb-onboard-path:not([hidden]) {
  margin-top: 0;
  padding-top: 0;
  position: relative;
  top: auto;
  z-index: 40;
  box-sizing: border-box;
  background: #0c0e12;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.cmtb-onboard-path:not([hidden]) .cmtb-onboard-path__inner {
  background: transparent;
  border-bottom: none;
}

html.has-offline-bar .cmtb-onboard-path:not([hidden]) {
  padding-top: 0;
}

/* Inner pages: the hero carries nav clearance (same token as ds-public-nav).
   Main stays at 0 so we do not stack two header heights. */
body.pub-page > main,
body.ds-booking-body > main,
body.page-legal > main {
  padding-top: 0 !important;
}

body.lp-home > main {
  padding-top: 0 !important;
}

body.account-auth-page > main,
body.season-lock-body > main {
  padding-top: var(--site-header-offset) !important;
}

body.pub-page main > .page-hero,
body.pub-page main > .pub-hero,
body.pub-page main > section.page-hero,
body.ds-booking-body main > .page-hero,
body.page-legal main > .page-hero,
body.page-legal main > .page-hero--legal,
body.lp-home .hero,
body.lp-home .hero--stage {
  margin-top: 0 !important;
  padding-top: var(--page-hero-pad-top) !important;
}

/* ── Rhythm: tight inside groups, generous between bands ── */

body:not(.ds-body):not(.admin-body) main > section + section {
  border-top: none;
}

body:not(.ds-body):not(.admin-body) .section-header {
  gap: var(--cmtb-space-2);
  margin-bottom: clamp(1.5rem, 4vw, 2.75rem);
}

body:not(.ds-body):not(.admin-body) .section-header h2,
body.lp-home .lp-section__head h2,
body.lp-home .approche-section__copy h2 {
  margin-block: 0 var(--cmtb-space-3);
}

body:not(.ds-body):not(.admin-body) .page-hero + section,
body.lp-home .hero + section {
  padding-top: clamp(2rem, 5vw, 3.5rem);
}

body:not(.ds-body):not(.admin-body) #cta.cta-band,
body:not(.ds-body):not(.admin-body) .cta-band {
  padding-bottom: clamp(2rem, 5vw, 3.25rem);
}

.site-footer .footer-grid--expanded > * {
  min-width: 0;
}

.footer-socials a {
  width: 44px;
  height: 44px;
}

/* ── Nav / touch ── */

body:not(.ds-body):not(.admin-body) .nav {
  gap: var(--cmtb-space-3);
}

body:not(.ds-body):not(.admin-body) .nav__link,
body:not(.ds-body):not(.admin-body) .nav__account,
body:not(.ds-body):not(.admin-body) .nav__toggle {
  min-height: 44px;
}

.nav__link,
.nav__account,
.btn {
  overflow-wrap: break-word;
}

/* ── Home: founder + copy stack before two-up ── */

@media (max-width: 960px) {
  body.lp-home .lp-who__grid {
    grid-template-columns: 1fr;
  }

  body.lp-home .lp-who__portrait {
    max-width: 17.5rem;
    margin-inline: auto;
  }
}

@media (max-width: 720px) {
  body.lp-home .hero__inner,
  body.lp-home .hero--stage .hero__inner {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ── Booking stepper: don’t squeeze five labels ── */

.stepper {
  min-width: 0;
}

@media (max-width: 720px) {
  .stepper {
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
}

.booking-login-nudge:not([hidden]) {
  gap: var(--cmtb-space-4);
}

/* ── Auth / legal measure ── */

body.account-auth-page .account-auth-card,
body.page-legal .legal-docs,
body.pub-page .page-hero__subtitle {
  max-width: 72ch;
}

body.account-auth-page .account-auth-card {
  margin-inline: auto;
}

/* ── Operate: dashboard density ── */

body.ds-body .ds-nav__item,
body.ds-body .ds-nav__sub-trigger,
body.ds-body .ds-topbar__burger,
body.ds-body .ds-topbar__icon-btn,
body.ds-body .ds-topbar__site {
  min-height: 44px;
}

body.ds-body .ds-page-header h1 {
  margin-block: var(--cmtb-space-3) var(--cmtb-space-2);
}

body.ds-body .ds-page-header {
  gap: var(--cmtb-space-4) var(--cmtb-space-6);
}

body.ds-body--account .account-kpi-grid,
body.ds-body--account .sz-kpi-row,
body.ds-body--admin .sz-kpi-row {
  min-width: 0;
}

body.ds-body .ds-main > * {
  min-width: 0;
}

@media (max-width: 620px) {
  body.ds-body .ds-main {
    padding-inline: max(var(--cmtb-space-4), env(safe-area-inset-left, 0px))
      max(var(--cmtb-space-4), env(safe-area-inset-right, 0px));
    padding-bottom: max(3rem, env(safe-area-inset-bottom, 0px));
  }
}

.site-footer {
  padding-bottom: max(1.5rem, env(safe-area-inset-bottom, 0px));
}

.site-footer .footer-grid--expanded,
.site-footer .footer-col,
.site-footer .footer-brand {
  min-width: 0;
}
