/* ==========================================================================
   AURION — main stylesheet
   Design direction: premium, sober, austere, sleek.
   Mix of Rothschild & Co (serif elegance, single navy accent) and
   Slaughter and May (typographic restraint, hairline rules).
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Calluna (self-hosted serif). Files in ../fonts/Calluna/. woff first
   where available (smaller, broadly supported), otf as fallback; the four
   styles below that ship as otf-only (Light, Italic, Semibold, Semibold
   Italic, Black, Bold Italic) have no woff in the source repository.
   -------------------------------------------------------------------------- */
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-Light.otf") format("opentype");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-Regular.woff") format("woff"),
       url("../fonts/Calluna/Calluna-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-It.otf") format("opentype");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-Semibold.otf") format("opentype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-SemiboldIt.otf") format("opentype");
  font-weight: 600;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-Bold.woff") format("woff"),
       url("../fonts/Calluna/Calluna-Bold.otf") format("opentype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-BoldIt.otf") format("opentype");
  font-weight: 700;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Calluna";
  src: url("../fonts/Calluna/Calluna-Black.otf") format("opentype");
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}

/* --------------------------------------------------------------------------
   1. Design tokens
   -------------------------------------------------------------------------- */
:root {
  /* Palette */
  --bg:         #FCFBF9;   /* ivory, near white */
  --bg-alt:     #F6F4EF;   /* deeper ivory, alternating sections */
  --ink:        #1A1A2E;   /* deep charcoal navy */
  --navy:       #142A52;   /* heading navy (Rothschild register) */
  --ink-soft:   #52526B;   /* secondary text */
  --ink-faint:  #8A8A9C;   /* meta text, captions */
  --line:       #E3DFD4;   /* hairlines */
  --line-dark:  rgba(252, 251, 249, 0.16); /* hairlines on dark footer */

  /* Typography */
  --font-display: "Calluna", "Source Serif 4", Georgia, "Times New Roman", serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
               Helvetica, Arial, sans-serif;

  /* Spacing scale */
  --s1: 0.5rem;   /* 8  */
  --s2: 1rem;     /* 16 */
  --s3: 1.5rem;   /* 24 */
  --s4: 2.5rem;   /* 40 */
  --s5: 4rem;     /* 64 */
  --s6: 6rem;     /* 96 */
  --s7: 8rem;     /* 128 */

  /* Layout */
  --max-w: 90rem;        /* 1440px, matches rothschildandco.com's content cap */
  --max-w-text: 43.75rem; /* 700px, editorial column */
  --header-h: 4rem;
}

/* --------------------------------------------------------------------------
   2. Reset & base
   -------------------------------------------------------------------------- */
*,
*::before,
*::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 1rem);
}

body {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.75;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

p { color: rgb(26, 26, 45); font-family: var(--font-display); }

img, svg { max-width: 100%; display: block; }

a { color: inherit; text-decoration: none; }

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 3px;
}

::selection { background: rgba(26, 26, 46, 0.10); }

.skip-link {
  position: absolute;
  left: -999px;
  top: 0;
  background: var(--ink);
  color: var(--bg);
  padding: 0.5rem 1rem;
  z-index: 100;
}
.skip-link:focus { left: 0; }

/* --------------------------------------------------------------------------
   3. Typography
   -------------------------------------------------------------------------- */
h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 500;
  line-height: 1.04; /* matches hero video h1 */
  letter-spacing: 0.01em;
  color: var(--navy);
}

.eyebrow {
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--ink);
  display: block;
  margin-bottom: var(--s2);
}

.lead {
  font-size: 1.125rem;
  line-height: 1.8;
  color: var(--ink-soft);
}

.small-caps {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
}

/* --------------------------------------------------------------------------
   4. Layout primitives
   -------------------------------------------------------------------------- */
.container {
  max-width: var(--max-w);
  margin-inline: auto;
  padding-inline: clamp(0.544rem, 2.176vw, 1.088rem); /* -15% again, from clamp(0.64rem, 2.56vw, 1.28rem) */
}

.section { padding-block: clamp(var(--s5), 9vw, var(--s7)); }
.section--alt { background: var(--bg-alt); }
.section--hairline { border-top: 1px solid var(--line); }

.section-head { max-width: 38rem; margin-bottom: clamp(var(--s4), 6vw, var(--s5)); }

.section-head h2 {
  font-size: clamp(1.75rem, 3.2vw, 2.5rem);
  margin-bottom: var(--s2);
}

/* Thin rule used under section titles */
.rule {
  width: 3rem;
  height: 1px;
  background: var(--ink);
  border: 0;
  margin: var(--s3) 0 0;
}

/* --------------------------------------------------------------------------
   5. Header
   -------------------------------------------------------------------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(252, 251, 249, 0.94);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid transparent;
  transition: border-color 0.3s ease, background 0.3s ease;
}
/* Once scrolled (on any page), the header turns solid dark navy with a
   blur behind it, so nav items switch to light-on-dark to stay readable. */
.site-header.is-scrolled {
  background: rgba(20, 42, 82, 0.92);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom-color: rgba(255, 255, 255, 0.14);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header.is-scrolled { background: rgb(20, 42, 82); } /* solid fallback where blur isn't supported */
}
.site-header.is-scrolled .brand { color: #FFFFFF; }
.site-header.is-scrolled .nav-toggle span { background: #FFFFFF; }
.site-header.is-scrolled .lang-switch a { color: rgba(255, 255, 255, 0.65); }
.site-header.is-scrolled .lang-switch a:hover { color: #FFFFFF; }
.site-header.is-scrolled .lang-switch .lang-current { color: #FFFFFF; }
@media (min-width: 52.01rem) {
  .site-header.is-scrolled .site-nav a { color: rgba(255, 255, 255, 0.85); }
  .site-header.is-scrolled .site-nav a:hover { color: #FFFFFF; }
  .site-header.is-scrolled .site-nav a[aria-current="page"] { color: #FFFFFF; }
  .site-header.is-scrolled .site-nav a::after { background: #FFFFFF; }
  .site-header.is-scrolled .btn--header.btn { color: #FFFFFF; border-color: rgba(255, 255, 255, 0.7); }
  .site-header.is-scrolled .btn--header.btn:hover { background: #FFFFFF; color: var(--navy); border-color: #FFFFFF; }
}

/* On pages with the video hero, the header is translucent over the footage
   while at the top of the page, then turns solid ivory on scroll. */
body.has-video-hero .site-header:not(.is-scrolled) {
  background: rgba(26, 26, 46, 0.28);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom-color: rgba(252, 251, 249, 0.14);
}
body.has-video-hero .site-header:not(.is-scrolled) .brand { color: var(--bg); }
body.has-video-hero .site-header:not(.is-scrolled) .nav-toggle span { background: var(--bg); }
body.has-video-hero .site-header:not(.is-scrolled) .lang-switch a { color: rgba(252, 251, 249, 0.65); }
body.has-video-hero .site-header:not(.is-scrolled) .lang-switch a:hover { color: var(--bg); }
body.has-video-hero .site-header:not(.is-scrolled) .lang-switch .lang-current { color: var(--bg); }

@media (min-width: 52.01rem) {
  body.has-video-hero .site-header:not(.is-scrolled) .site-nav a { color: rgba(252, 251, 249, 0.85); }
  body.has-video-hero .site-header:not(.is-scrolled) .site-nav a:hover { color: var(--bg); }
  body.has-video-hero .site-header:not(.is-scrolled) .site-nav a[aria-current="page"] { color: var(--bg); }
  body.has-video-hero .site-header:not(.is-scrolled) .btn--header.btn {
    color: var(--bg);
    border-color: rgba(252, 251, 249, 0.7);
  }
  /* .btn--header.btn (not just .btn--header) so this outweighs the generic
     ".site-nav a:hover" rule below on the color property — both end up with
     the same class-count, but ".site-nav a:hover" has one extra element
     selector (the bare "a"), which otherwise wins the tie-break and left
     this button with light text on its own light hover background. */
  body.has-video-hero .site-header:not(.is-scrolled) .btn--header.btn:hover {
    background: var(--bg);
    color: var(--ink);
    border-color: var(--bg);
  }
  body.has-video-hero .site-header:not(.is-scrolled) .site-nav a::after { background: var(--bg); }
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--header-h);
  gap: var(--s3);
}

.brand {
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 600;
  letter-spacing: 0.28em;
  color: var(--ink);
}

.site-nav { display: flex; align-items: center; gap: clamp(1rem, 2.5vw, 2rem); }

.site-nav a {
  position: relative;
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ink-soft);
  padding-block: 0.35rem;
  transition: color 0.2s ease;
}
.site-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: var(--ink);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
}
.site-nav a:hover { color: var(--ink); }
.site-nav a:hover::after,
.site-nav a[aria-current="page"]::after { transform: scaleX(1); }
.site-nav a[aria-current="page"] { color: var(--ink); }

.lang-switch {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  color: var(--ink-faint);
}
.lang-switch a { color: var(--ink-faint); transition: color 0.2s ease; }
.lang-switch a:hover { color: var(--ink); }
.lang-switch .lang-current { color: var(--ink); font-weight: 600; }

/* Buttons: single outlined style, navy invert on hover. */
.btn {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink);
  background: transparent;
  border: 1px solid var(--ink);
  padding: 0.85rem 1.9rem;
  line-height: 1.4;
  cursor: pointer;
  transition: color 0.25s ease, border-color 0.25s ease, background 0.25s ease;
}
.btn:hover {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}
.btn--header { padding: 0.6rem 1.2rem; line-height: 1.2; }
/* .btn--header.btn (not just .btn) to outweigh ".site-nav a:hover" on color,
   same specificity fix as the scrolled/video-hero states below — this is the
   plain default state (top of page, no video hero) which was missed. */
.btn--header.btn:hover { color: var(--bg); }

/* Mobile navigation */
.nav-toggle {
  display: none;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 0.5rem;
}
.nav-toggle span {
  display: block;
  width: 1.4rem;
  height: 1px;
  background: var(--ink);
  margin: 5px 0;
  transition: transform 0.25s ease, opacity 0.25s ease;
}

@media (max-width: 52rem) {
  .nav-toggle { display: block; }

  .site-nav {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    background: var(--bg);
    border-bottom: 1px solid var(--line);
    padding: var(--s2) clamp(1.25rem, 5vw, 2.5rem) var(--s3);
    display: none;
  }
  .site-nav.is-open { display: flex; }
  .site-nav a { padding-block: 0.75rem; font-size: 0.8rem; }
  .site-nav .btn--header { margin-top: var(--s2); }

  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
}

/* --------------------------------------------------------------------------
   6. Hero
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  padding-block: clamp(var(--s6), 13vw, 11rem);
  text-align: center;
  overflow: hidden;
}

/* Faint zellige-inspired line pattern, barely visible */
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("../img/zellige.svg");
  background-size: 160px 160px;
  opacity: 0.35;
  pointer-events: none;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, black, transparent 75%);
  mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, black, transparent 75%);
}

.hero-inner { position: relative; max-width: 46rem; margin-inline: auto; }

/* Video variant: ambient footage behind a navy scrim, light text.
   Falls back to the poster (CSS background) when JS is off or
   prefers-reduced-motion removes the video element.
   Pulled up behind the translucent header (see .has-video-hero rules). */
.hero--video {
  background: url("../video/hero-poster.jpg") center / cover no-repeat;
  margin-top: calc(-1 * var(--header-h));
  padding-top: calc(clamp(var(--s6), 13vw, 11rem) + var(--header-h));
  min-height: 100vh; /* full-viewport hero, matches rothschildandco.com */
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero--video::before { content: none; }

.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 0.8s ease;
}
.hero-video.is-ready { opacity: 1; }

.hero-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(rgba(26, 26, 46, 0.55), rgba(26, 26, 46, 0.74));
}

/* Small wordmark above a large serif statement (Rothschild-style hierarchy) */
.hero--video .hero-wordmark {
  font-size: 1.14rem; /* +20% from 0.95rem */
  font-weight: 600;
  letter-spacing: 0.45em;
  margin-right: -0.45em;
  color: var(--bg);
  text-shadow: 0 1px 28px rgba(26, 26, 46, 0.5);
}
.hero--video .hero-divider { background: rgba(252, 251, 249, 0.3); }
.hero.hero--video h1 {
  font-family: var(--font-display);
  font-size: clamp(2.31rem, 4.62vw, 3.85rem); /* +10% from clamp(2.1rem, 4.2vw, 3.5rem) */
  font-weight: 500;
  line-height: 1.04; /* -20% from 1.3 */
  letter-spacing: 0.005em;
  max-width: 44rem;
  margin-top: var(--s3);
  color: rgba(252, 251, 249, 0.97);
  text-shadow: 0 1px 18px rgba(26, 26, 46, 0.55);
}
.hero-wordmark {
  font-family: var(--font-display);
  font-size: clamp(2.6rem, 7vw, 4.5rem);
  font-weight: 500;
  letter-spacing: 0.32em;
  margin-right: -0.32em; /* optically recenter letterspaced text */
  color: var(--ink);
}

.hero-divider {
  width: 3rem;
  height: 1px;
  background: var(--line);
  border: 0;
  margin: var(--s4) auto;
}

.hero h1 {
  font-family: var(--font-body);
  font-size: clamp(1.05rem, 2vw, 1.3rem);
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: 0;
  color: var(--ink-soft);
  max-width: 36rem;
  margin-inline: auto;
}

.hero .btn { margin-top: var(--s4); }

/* --------------------------------------------------------------------------
   6b. Statement band (below the hero, Rothschild-style)
   -------------------------------------------------------------------------- */
.statement {
  text-align: center;
  padding-top: clamp(var(--s5), 7vw, var(--s6));
  padding-bottom: 0;
}

.statement-text {
  font-family: var(--font-display);
  font-size: clamp(1.595rem, 2.86vw, 2.31rem); /* +10% from clamp(1.45rem, 2.6vw, 2.1rem) */
  font-weight: 500;
  line-height: 1.24; /* -20% from 1.55 */
  color: var(--navy);
  max-width: 44rem;
  margin-inline: auto;
}

.statement-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s3);
  margin-top: clamp(var(--s5), 7vw, var(--s6));
  color: var(--ink);
}
.statement-divider .line {
  width: min(11rem, 26vw);
  height: 1px;
  background: var(--line);
}

/* --------------------------------------------------------------------------
   6c. Services: centered head + three columns
   -------------------------------------------------------------------------- */
#services.section { padding-top: clamp(var(--s5), 7vw, var(--s6)); }

.services-head {
  text-align: center;
  margin-bottom: clamp(var(--s4), 6vw, var(--s5));
}
.services-label {
  display: block;
  font-size: 0.85rem;
  color: var(--ink-soft);
}
.services-label::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 1px;
  background: var(--ink);
  margin: 0 auto var(--s2);
}
.services-head h2 {
  font-size: clamp(1.9rem, 3.6vw, 2.75rem);
  margin-top: var(--s2);
}

.services-cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(5, auto);
  column-gap: clamp(var(--s3), 3vw, var(--s4));
  row-gap: 0;
  align-items: start;
}

/* Each column is a 5-row subgrid (image / title / description / bullets /
   link) sharing the parent's row tracks, so every column's bullet list
   starts at the same height regardless of title or description length. */
.service-col {
  display: grid;
  grid-row: span 5;
  grid-template-rows: subgrid;
  row-gap: 0;
  align-items: start;
}
.service-col .img-placeholder,
.service-col .service-img { margin: 0 0 var(--s3); }
.service-col h3 { font-size: clamp(1.62rem, 2.4vw, 1.92rem); margin-bottom: var(--s2); }
.service-col > p {
  font-size: 1.0625rem; /* 17px */
  line-height: 1.7;
  color: var(--ink);
  margin-bottom: var(--s2);
}
.service-col .service-list { margin-bottom: var(--s4); }
.service-col .service-list li { color: var(--ink); }
.service-col .service-list li::before { background: var(--ink); }
.service-col .service-list li { font-size: 1.0625rem; padding: 0.35rem 0 0.35rem 1.3rem; }
.service-col .service-list li::before { top: 0.95rem; }
.service-col .link-arrow { align-self: start; justify-self: start; width: fit-content; }

@media (max-width: 62rem) {
  .services-cols { grid-template-columns: 1fr; gap: var(--s5); }
}

/* KPI tiles below the service columns (Rothschild-style) */
.kpis {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--s3);
  margin-top: clamp(var(--s5), 7vw, var(--s6));
}
.kpi {
  background: var(--navy);
  border-left: 1px solid var(--line-dark);
  padding: var(--s3);
}
.kpi-value {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(2rem, 3.2vw, 2.7rem);
  font-weight: 500;
  line-height: 1.1;
  color: var(--bg);
}
.kpi-label {
  display: block;
  margin-top: var(--s1);
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: rgba(252, 251, 249, 0.72);
}
@media (max-width: 75rem) {
  .kpis { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 52rem) {
  .kpis { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   7. Service verticals
   -------------------------------------------------------------------------- */
.vertical {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(var(--s4), 6vw, var(--s6));
  align-items: start;
}

.vertical-motif {
  color: var(--ink);
  margin-bottom: var(--s3);
}

.vertical h2,
.vertical h3.vertical-title {
  font-size: clamp(1.6rem, 2.8vw, 2.1rem);
  margin-bottom: var(--s3); /* more space to the first sentence below */
  color: var(--navy);
}

.vertical-desc { color: var(--ink); max-width: 30rem; font-size: 0.98rem; } /* matches .interventions a */

.vertical-media { width: 60%; margin-left: clamp(20px, 2vw, 30px); } /* -40% width; nudged right, responsive */

.vertical .service-list { margin-top: var(--s4); } /* clear break before the bullets start */
.vertical .service-list li {
  font-size: 0.98rem; /* matches .vertical-desc and .interventions a */
  line-height: 1.32; /* -20% from the shared 1.65 */
}
.vertical .service-list li::before {
  width: 4.8px; /* -20% from 6px */
  height: 4.8px;
  top: 0.947rem; /* re-centered on this font-size/line-height combo */
}

/* Arrow link: arrow always visible; on hover it slides right while an
   underline draws in from the left. */
.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  position: relative;
  margin-top: var(--s3);
  padding-bottom: 0.35rem;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink);
}
.link-arrow .arrow {
  transition: transform 0.25s ease;
}
.link-arrow::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
}
.link-arrow:hover::after { transform: scaleX(1); }
.link-arrow:hover .arrow { transform: translateX(4px); }

/* Bulleted service lists: plain round navy bullets, no separators */
.service-list { list-style: none; }
.service-list li {
  position: relative;
  padding: 0.45rem 0 0.45rem 1.4rem;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 0.903rem; /* -15% from 1.0625rem (17px); .service-col .service-list li overrides this back up on the home page */
  line-height: 1.65;
}
.service-list li::before {
  content: "";
  position: absolute;
  left: 0.1rem;
  top: 1.05rem;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ink);
}

/* Service section imagery: portrait crops, graded to match the hero film */
.service-img {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  display: block;
}

/* Placeholder frame for images to come */
.img-placeholder {
  aspect-ratio: 3 / 4;
  border: 1px solid var(--line);
  background: var(--bg);
  display: grid;
  place-items: center;
  margin-top: var(--s3);
}
.img-placeholder span {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--ink-faint);
}

@media (max-width: 52rem) {
  .vertical { grid-template-columns: 1fr; gap: var(--s3); }
}

/* --------------------------------------------------------------------------
   8. Method (5 steps)
   -------------------------------------------------------------------------- */
.method-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--s3);
  counter-reset: step;
}

.method-step {
  border-top: 1px solid var(--line);
  padding-top: var(--s3);
}
.method-step::before {
  counter-increment: step;
  content: "0" counter(step);
  font-family: var(--font-display);
  font-size: 1.9rem;
  color: var(--ink);
  display: block;
  line-height: 1;
  margin-bottom: var(--s2);
}
.method-step h3 {
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  margin-bottom: var(--s1);
}
.method-step p { font-size: 1.0625rem; line-height: 1.7; color: var(--ink-soft); }

@media (max-width: 62rem) { .method-grid { grid-template-columns: repeat(2, 1fr); gap: var(--s4) var(--s3); } }
@media (max-width: 36rem) { .method-grid { grid-template-columns: 1fr; gap: var(--s3); } }

/* --------------------------------------------------------------------------
   9. Why Aurion / About pillars
   -------------------------------------------------------------------------- */
.pillars {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s4) var(--s3);
}

.pillar { border-left: 1px solid var(--ink); padding-left: var(--s3); }
.pillar h3 {
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  margin-bottom: var(--s1);
}
.pillar p { font-size: 1.0625rem; line-height: 1.7; color: var(--ink-soft); }

@media (max-width: 62rem) { .pillars { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 36rem) { .pillars { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   9b. News / publications band (home, Rothschild-style)
   -------------------------------------------------------------------------- */
.section-head--split {
  max-width: none;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s3);
}

.news-nav { display: flex; gap: var(--s2); }
.news-nav button {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--navy);
  padding: 0.4rem;
  transition: opacity 0.2s ease;
}
.news-nav button svg { display: block; }
.news-nav button:hover { opacity: 0.6; }
.news-nav button[disabled] { opacity: 0.25; cursor: default; }

/* Horizontal scroller, hidden scrollbar, driven by the arrows (and touch) */
.news-grid {
  display: flex;
  gap: clamp(var(--s3), 3vw, var(--s4));
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.news-grid::-webkit-scrollbar { display: none; }

.news-card {
  display: flex;
  flex-direction: column;
  flex: 0 0 min(24rem, 78vw);
  scroll-snap-align: start;
  position: relative;
}

/* Type badge pinned to the top-left corner of the card image */
.news-badge {
  position: absolute;
  top: 0.6rem;
  left: 0.6rem;
  z-index: 1;
  background: rgba(252, 251, 249, 0.94);
  color: var(--navy);
  font-size: 0.62rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 0.3rem 0.6rem;
}
.news-card--text .news-badge {
  position: static;
  align-self: flex-start;
  margin-bottom: var(--s2);
  background: var(--bg-alt);
}
.news-card--featured {
  flex-basis: min(36rem, 85vw);
  border: 1px solid var(--navy);
  padding: clamp(0.9rem, 1.6vw, 1.25rem);
  box-shadow: 0 1.25rem 2.5rem -1.5rem rgba(26, 26, 46, 0.35);
}
.news-card--featured .news-img { margin-bottom: var(--s3); }
.news-card--featured .news-badge {
  top: calc(0.6rem + clamp(0.9rem, 1.6vw, 1.25rem));
  left: calc(0.6rem + clamp(0.9rem, 1.6vw, 1.25rem));
}

/* "À la une" badge: dark navy fill, distinct from the standard light badges */
.news-badge--highlight {
  background: var(--navy);
  color: var(--bg);
}

.news-img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
  margin-bottom: var(--s2);
}

.news-label {
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--navy);
  margin-bottom: var(--s1);
}

.news-card h3 {
  font-size: 1.15rem;
  line-height: 1.35;
  margin-bottom: var(--s1);
}
.news-card--featured h3 { font-size: clamp(1.4rem, 2vw, 1.7rem); }

.news-card p {
  font-size: 1.0625rem; /* 17px */
  line-height: 1.7;
  color: rgb(76, 74, 72);
  margin-bottom: var(--s2);
}

.news-date { font-size: 0.78rem; color: var(--ink-faint); margin-top: auto; }

.news-card:hover h3 {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}


/* Consolidated index: wrapping grid + filter pills */
.filter-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: clamp(var(--s4), 5vw, var(--s5));
}
.filter-pills button {
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  background: none;
  border: 1px solid var(--line);
  padding: 0.5rem 1rem;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.filter-pills button:hover { color: var(--ink); border-color: var(--ink); }
.filter-pills button.is-active {
  color: var(--bg);
  background: var(--navy);
  border-color: var(--navy);
}

.news-index-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--s4), 4vw, var(--s5)) clamp(var(--s3), 3vw, var(--s4));
}
.news-index-grid .news-card { flex: initial; }
.news-index-grid .news-card.is-hidden { display: none; }
@media (max-width: 62rem) { .news-index-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 40rem) { .news-index-grid { grid-template-columns: 1fr; } }

.news-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  margin-top: clamp(var(--s4), 5vw, var(--s5));
}
.news-pagination button {
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--ink-soft);
  background: none;
  border: 1px solid var(--line);
  min-width: 2.25rem;
  height: 2.25rem;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.news-pagination button:hover:not(:disabled) { color: var(--ink); border-color: var(--ink); }
.news-pagination button:disabled { opacity: 0.35; cursor: default; }
.news-pagination-page.is-active {
  color: var(--bg);
  background: var(--navy);
  border-color: var(--navy);
}

/* Text-only cards (related articles) */
.news-card--text {
  border-top: 1px solid var(--line);
  padding-top: var(--s3);
}
.related-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--s3), 3vw, var(--s4));
}
@media (max-width: 52rem) { .related-grid { grid-template-columns: 1fr; } }

/* Sub-carousel under each service section */
.news-sub { margin-top: clamp(var(--s4), 5vw, var(--s5)); }
.news-sub-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  margin-bottom: var(--s3);
}
.news-sub .news-card { flex-basis: min(20rem, 74vw); }
.news-sub .news-card--featured { flex-basis: min(20rem, 74vw); }
.news-sub .news-card h3 { font-size: 1.02rem; }

/* --------------------------------------------------------------------------
   10. Insights cards
   -------------------------------------------------------------------------- */
.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s3);
}

.card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  padding: var(--s3);
  background: var(--bg);
  transition: border-color 0.25s ease;
}
.card:hover { border-color: var(--ink); }

.card-meta {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ink-faint);
  margin-bottom: var(--s2);
}

.card h3 {
  font-size: 1.25rem;
  line-height: 1.3;
  margin-bottom: var(--s1);
}

.card p { font-size: 1.0625rem; line-height: 1.7; color: var(--ink-soft); flex-grow: 1; }

.card-more {
  margin-top: var(--s3);
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink);
}

@media (max-width: 52rem) { .cards { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   11. Article / editorial pages
   -------------------------------------------------------------------------- */
.article-header {
  padding-block: clamp(var(--s5), 8vw, var(--s6)) 0;
  max-width: var(--max-w-text);
  margin-inline: auto;
}

.article-header h1 {
  font-size: clamp(1.9rem, 4vw, 2.8rem);
  margin-bottom: var(--s2);
}

.article-meta {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ink-faint);
}

.article-body {
  max-width: var(--max-w-text);
  margin-inline: auto;
  padding-block: var(--s4) clamp(var(--s5), 8vw, var(--s6));
}

.article-body > * + * { margin-top: var(--s3); }

.article-body h2 {
  font-size: 1.55rem;
  margin-top: var(--s5);
  padding-top: var(--s3);
  border-top: 1px solid var(--line);
}

.article-body h3 { font-size: 1.2rem; margin-top: var(--s4); }

.article-body p, .article-body li { font-size: 1.0625rem; line-height: 1.85; color: var(--ink); }

.article-body ul, .article-body ol { padding-left: 1.4rem; }
.article-body li + li { margin-top: 0.5rem; }
.article-body li::marker { color: var(--ink); }

.article-body strong { font-weight: 600; }

.article-note {
  margin-top: var(--s5);
  border: 1px solid var(--line);
  border-left: 1px solid var(--ink);
  padding: var(--s3);
  font-size: 0.92rem;
  color: var(--ink-soft);
}
.article-note a { color: var(--ink); border-bottom: 1px solid var(--ink); }
.article-note a:hover { color: var(--ink-soft); }

/* Legal disclaimer line under articles */
.article-disclaimer {
  margin-top: var(--s3);
  font-size: 0.78rem;
  color: var(--ink-faint);
}

/* --------------------------------------------------------------------------
   11b. Service detail pages (converted editorial documents)
   -------------------------------------------------------------------------- */
.service-doc .standfirst {
  font-size: 1.125rem;
  line-height: 1.8;
  color: var(--ink-soft);
  margin-top: var(--s3);
}

.service-doc .article-body section { margin-top: var(--s5); padding: 0; }
.service-doc .article-body section:first-child { margin-top: 0; }

.service-doc .marker {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink-faint);
  margin-bottom: var(--s2);
}
.service-doc .marker::after { content: ""; flex: 1; height: 1px; background: var(--line); }

.service-doc .article-body h2 { border-top: none; padding-top: 0; margin-top: 0; }
.service-doc .article-body h3 { font-family: var(--font-body); font-size: 0.95rem; font-weight: 600; }
.service-doc .article-body h4 { font-size: 1.1rem; margin-bottom: var(--s1); }

.service-doc .ref {
  font-size: 0.76em;
  color: var(--ink-faint);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.service-doc .num { font-variant-numeric: tabular-nums; }

.service-doc ol.timeline { list-style: none; padding: 0; }
.service-doc ol.timeline li {
  position: relative;
  border-left: 1px solid var(--line);
  padding: 0 0 var(--s3) var(--s3);
}
.service-doc ol.timeline li::before {
  content: "";
  position: absolute;
  left: -3.5px;
  top: 0.45em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--navy);
}
.service-doc ol.timeline .when {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--navy);
  margin-bottom: 0.35rem;
}

.service-doc .regimes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--s3);
  margin: var(--s3) 0;
}
.service-doc .regime {
  background: var(--bg);
  border: 1px solid var(--line);
  border-top: 2px solid var(--navy);
  padding: var(--s3);
}
.service-doc .regime .tag {
  display: block;
  font-size: 0.64rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-faint);
  margin-bottom: var(--s1);
}
.service-doc .regime p { font-size: 1.0625rem; line-height: 1.65; color: var(--ink-soft); }

.service-doc .vigilance {
  border: 1px solid var(--line);
  border-left: 2px solid var(--navy);
  background: var(--bg-alt);
  padding: var(--s3);
}
.service-doc .vigilance ul { margin: 0; }

.service-doc .firm {
  border: 1px solid var(--line);
  border-left: 2px solid var(--navy);
  background: var(--bg-alt);
  padding: clamp(var(--s3), 4vw, var(--s4));
  margin-top: var(--s5);
}
.service-doc .firm .label,
.service-doc .sources .label {
  display: block;
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--navy);
  margin-bottom: var(--s2);
}
.service-doc .firm .btn { margin-top: var(--s2); }

.service-doc .sources {
  margin-top: var(--s5);
  border-top: 1px solid var(--line);
  padding-top: var(--s3);
  font-size: 0.85rem;
  color: var(--ink-soft);
}
.service-doc .sources ul { padding-left: 1.2rem; margin-bottom: var(--s2); }
.service-doc .sources li { font-size: 0.85rem; }
.service-doc .sources b { color: var(--ink); font-weight: 600; }

/* Per-service intervention link lists on the services hub */
.interventions {
  margin-top: clamp(var(--s4), 5vw, var(--s5));
  padding-top: var(--s3);
}
.interventions .eyebrow { margin-bottom: var(--s3); }
.interventions-eyebrow,
.news-sub-head .eyebrow {
  text-transform: none;
  color: var(--navy);
  font-family: var(--font-display);
  font-size: 1.2rem; /* +20% from 1rem */
  letter-spacing: normal;
  font-weight: 500;
}
.interventions ul {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.4rem var(--s4);
}
.interventions a {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s2);
  font-family: var(--font-display);
  font-size: 0.98rem;
  color: var(--navy);
  padding: 0.45rem 0;
  border-bottom: 1px solid rgba(227, 223, 212, 0.5); /* lighter than var(--line) */
}
.interventions a .arrow { transition: transform 0.25s ease; color: var(--ink-faint); }
.interventions a:hover .arrow { transform: translateX(4px); color: var(--navy); }
@media (max-width: 52rem) { .interventions ul { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   11c. Institutional directory (annuaire)
   -------------------------------------------------------------------------- */
.inst-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(var(--s3), 3vw, var(--s4));
  align-items: stretch;
}
@media (max-width: 62rem) { .inst-grid { grid-template-columns: 1fr; } }

.inst-card {
  --card-pad: clamp(var(--s3), 3vw, var(--s4));
  background: var(--bg);
  border: 1px solid var(--line);
  padding: var(--card-pad);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
/* Editorial header image, flush to the card's top and side borders */
.inst-img {
  display: block;
  width: calc(100% + 2 * var(--card-pad));
  max-width: none;
  height: 150px;
  object-fit: cover;
  margin: calc(-1 * var(--card-pad)) calc(-1 * var(--card-pad)) var(--s3);
}

.inst-acronym {
  display: block;
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink-faint);
  margin-bottom: var(--s1);
}
.inst-card h3 { font-size: clamp(1.25rem, 1.8vw, 1.5rem); margin-bottom: 1.1rem; }
.inst-card h3 a:hover { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.inst-desc {
  font-size: 0.9rem;
  line-height: 1.7;
  color: rgb(76, 74, 72);
  margin-bottom: var(--s3);
}
.inst-card .link-arrow { margin-top: var(--s4); color: var(--navy); align-self: flex-start; width: fit-content; }
.inst-card .img-placeholder,
.inst-card .inst-photo {
  width: calc(100% + 2 * var(--card-pad) - 2px);
  height: 150px;
  margin: calc(1px - var(--card-pad)) calc(1px - var(--card-pad)) var(--s3);
}
.inst-card .img-placeholder { aspect-ratio: auto; }
.inst-card .inst-photo { display: block; max-width: none; object-fit: cover; }
.inst-address { font-size: 0.8rem; color: var(--ink-faint); }

/* Official resource lists (external links) */
.resource-list { list-style: none; margin: 0 0 var(--s3); }
.resource-list li {
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.9rem;
  line-height: 1.6;
}
.resource-list li:first-child { border-top: 1px solid var(--line); }
.resource-list a { color: var(--navy); font-weight: 500; }
.resource-list a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ext {
  font-size: 0.8em;
  color: var(--ink-faint);
  margin-left: 0.2rem;
}
.res-desc { display: block; color: var(--ink-soft); font-size: 0.85rem; }

/* Non-affiliation microcopy */
.nonaffil { font-size: 0.78rem; line-height: 1.7; color: var(--ink-faint); max-width: 44rem; }

/* "Ressources officielles" box on service pages */
.official-box {
  border: 1px solid var(--line);
  border-left: 2px solid var(--navy);
  background: var(--bg-alt);
  padding: var(--s3);
  margin-top: var(--s5);
}
.official-box .label {
  display: block;
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--navy);
  margin-bottom: var(--s2);
}
.official-box ul { list-style: none; margin: 0 0 var(--s2); }
.official-box li { padding: 0.3rem 0; font-size: 1.0625rem; }
.official-box a { color: var(--navy); font-weight: 500; }
.official-box a:hover { text-decoration: underline; text-underline-offset: 3px; }
.official-box .nonaffil { margin-top: var(--s2); }

.article-meta a:hover { color: var(--ink); }

/* --------------------------------------------------------------------------
   12. Page intro (interior pages)
   -------------------------------------------------------------------------- */
.page-head {
  padding-block: clamp(var(--s5), 8vw, var(--s6));
  border-bottom: 1px solid var(--line);
}
.page-head h1 { font-size: clamp(2rem, 4.5vw, 3rem); margin-bottom: var(--s2); }
.page-head .lead { max-width: 38rem; }

/* --------------------------------------------------------------------------
   13. Contact
   -------------------------------------------------------------------------- */
.contact-grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(var(--s4), 6vw, var(--s6));
}

.contact-details { list-style: none; }
.contact-details li {
  padding-block: var(--s2);
  border-bottom: 1px solid var(--line);
  font-size: 0.95rem;
}
.contact-details li:first-child { border-top: 1px solid var(--line); }
.contact-details .label {
  display: block;
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ink-faint);
  margin-bottom: 0.25rem;
}

.contact-form { display: grid; gap: var(--s3); }

.form-field label {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  margin-bottom: 0.5rem;
}

.form-field input,
.form-field textarea {
  width: 100%;
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--ink);
  background: var(--bg);
  border: 1px solid var(--line);
  padding: 0.85rem 1rem;
  transition: border-color 0.2s ease;
}
.form-field input:focus,
.form-field textarea:focus { border-color: var(--ink); outline: none; }

.form-note { font-size: 0.78rem; color: var(--ink-faint); }

@media (max-width: 52rem) { .contact-grid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   14. Footer
   -------------------------------------------------------------------------- */
.site-footer {
  background: var(--ink);
  color: #FFFFFF;
  font-family: var(--font-display);
  padding-block: var(--s5) var(--s4);
  font-size: 0.9775rem; /* +15% from 0.85rem */
}

.site-footer .container { position: relative; }

.footer-top-link {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  align-items: center;
  gap: var(--s2);
  color: #FFFFFF;
  transition: opacity 0.2s ease;
}
.footer-top-link:hover { opacity: 0.7; }
.footer-top-link-label { font-size: 0.85rem; white-space: nowrap; }
.footer-top-link-icon {
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
}
.footer-top-link-icon svg { display: block; }

/* Flexbox, not grid: grid columns stretch to fill their fr-share of the
   row regardless of content width or margin tweaks, which is what made
   the link columns keep reading as "spread out" no matter how the gap
   was adjusted. Flex items shrink to their own content width, so the
   three link lists sit directly against each other with only the
   explicit margins below between them — nothing left to fight. */
.footer-top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  padding-bottom: var(--s5);
}
.footer-brand { margin-right: 18rem; }
.footer-top > div:nth-child(2) { margin-right: clamp(4rem, 8vw, 6.5rem); }
.footer-top > div:nth-child(3) { margin-right: clamp(4rem, 8vw, 6.5rem); }

.footer-brand .brand { color: #FFFFFF; font-size: 1.5525rem; } /* +15% from 1.35rem */

.footer-nav { list-style: none; }
.footer-nav li + li { margin-top: 0.5rem; }
.footer-nav a { color: #FFFFFF; transition: opacity 0.2s ease; }
.footer-nav a:hover { opacity: 0.7; }

.footer-note {
  padding-top: var(--s3);
  font-style: italic;
  font-size: 0.8625rem; /* +15% from 0.75rem */
  line-height: 1.7;
  color: #FFFFFF;
  max-width: 44rem;
}

.footer-legal {
  padding-top: var(--s3);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--s2);
  font-size: 0.8625rem; /* +15% from 0.75rem */
  color: #FFFFFF;
}
.footer-legal a:hover { opacity: 0.7; }

address { font-style: normal; line-height: 1.9; }

@media (max-width: 52rem) {
  .footer-top { flex-direction: column; gap: var(--s3); }
  .footer-brand,
  .footer-top > div:nth-child(2),
  .footer-top > div:nth-child(3) { margin-right: 0; }
  .footer-top-link-label { display: none; }
}

/* --------------------------------------------------------------------------
   15. Reveal on scroll (progressive enhancement, JS adds .js to <html>)
   -------------------------------------------------------------------------- */
html.js .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
html.js .reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.js .reveal { opacity: 1; transform: none; transition: none; }
}

/* --------------------------------------------------------------------------
   16. Trust band (home, under the hero)
   -------------------------------------------------------------------------- */
.trust-band { border-bottom: 1px solid var(--line); background: var(--bg); }
.trust-band-inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s3);
  padding-block: var(--s3);
}
.trust-band a {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--navy);
}
.trust-band a .desc {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  font-size: 0.8rem;
  color: var(--ink-soft);
}
.trust-band a:hover { text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 52rem) { .trust-band-inner { grid-template-columns: repeat(2, 1fr); } }

/* --------------------------------------------------------------------------
   17. Status list (état des démarches)
   -------------------------------------------------------------------------- */
.status-list { list-style: none; }
.status-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--s3);
  padding: var(--s3) 0;
  border-bottom: 1px solid var(--line);
}
.status-item:first-child { border-top: 1px solid var(--line); }
.status-name { font-family: var(--font-display); font-size: 1.15rem; color: var(--navy); }
.status-state {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-soft);
  white-space: nowrap;
}
.status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.status-dot--ok { background: #1F6E43; }
.status-dot--warn { background: #8A6D1A; }
.status-dot--alert { background: #8B3626; }
.status-note { font-size: 0.85rem; color: var(--ink-soft); margin-top: 0.35rem; }

/* --------------------------------------------------------------------------
   18. FAQ accordion
   -------------------------------------------------------------------------- */
.faq-group details { border-bottom: 1px solid var(--line); }
.faq-group details:first-of-type { border-top: 1px solid var(--line); }
.faq-group summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--s3);
  padding: var(--s3) 0;
  font-family: var(--font-display);
  font-size: 1.08rem;
  color: var(--navy);
}
.faq-group summary::-webkit-details-marker { display: none; }
.faq-group summary::after { content: "+"; font-family: var(--font-body); color: var(--ink-faint); }
.faq-group details[open] summary::after { content: "\2212"; }
.faq-group details > div { padding: 0 0 var(--s3); max-width: 44rem; }
.faq-group details p, .faq-group details li { font-size: 1.0625rem; line-height: 1.75; color: rgb(76, 74, 72); }
.faq-group details p + p { margin-top: var(--s2); }

/* --------------------------------------------------------------------------
   19. Contact center channels
   -------------------------------------------------------------------------- */
.channels {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--s3);
}
.channel { border: 1px solid var(--line); padding: var(--s3); background: var(--bg); }
.channel .label {
  display: block;
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink-faint);
  margin-bottom: var(--s1);
}
.channel .value { font-family: var(--font-display); font-size: 1.1rem; color: var(--navy); display: block; }
.channel .note { font-size: 0.82rem; color: var(--ink-soft); display: block; margin-top: 0.35rem; }
@media (max-width: 40rem) { .channels { grid-template-columns: 1fr; } }

.calendly-embed { width: 100%; height: 660px; border: 1px solid var(--line); background: var(--bg); }

/* --------------------------------------------------------------------------
   20. Operating standards
   -------------------------------------------------------------------------- */
.standards { display: grid; gap: var(--s4); }
.standard { border-left: 1px solid var(--navy); padding-left: var(--s3); }
.standard .num {
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--navy);
  display: block;
  line-height: 1.1;
  margin-bottom: var(--s1);
}
.standard h3 {
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin-bottom: var(--s1);
}
.standard p { font-size: 1.0625rem; line-height: 1.7; color: var(--ink-soft); }

/* --------------------------------------------------------------------------
   21. Klaro consent (assets/vendor/klaro/) — themed to match the site.
   Klaro's own structural CSS is not loaded (klaro-no-css.js build); every
   rule needed to render the notice, modal and switches lives here.
   -------------------------------------------------------------------------- */
.klaro .cookie-notice:not(.cookie-modal-notice) {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 90;
  background: var(--ink);
  border-radius: 0;
  box-shadow: none;
  max-width: none;
}
.klaro .cookie-notice .cn-body {
  max-width: var(--max-w);
  margin-inline: auto;
  padding: 1.1rem clamp(1.25rem, 5vw, 2.5rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(var(--s3), 4vw, var(--s5));
  flex-wrap: wrap;
}
.klaro .cookie-notice .cn-body p {
  color: rgba(252, 251, 249, 0.82);
  font-size: 0.8rem;
  line-height: 1.65;
  max-width: 54rem;
  flex: 1 1 26rem;
  margin: 0;
}
.klaro .cookie-notice .cn-body a {
  color: var(--bg);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.klaro .cookie-notice .cn-learn-more {
  flex: 0 1 auto;
  align-self: center;
}
.klaro .cookie-notice .cn-learn-more .cm-link {
  font-size: 0.76rem;
  color: var(--bg);
  text-decoration: underline;
  text-underline-offset: 2px;
  white-space: nowrap;
}
.klaro .cookie-notice .cn-ok {
  display: flex;
  align-items: center;
  gap: var(--s3);
  flex: 0 0 auto;
  margin: 0;
}
.klaro .cookie-notice .cn-buttons { display: flex; gap: var(--s3); flex-wrap: wrap; }
.klaro .cm-btn {
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--bg);
  background: none;
  border: 1px solid rgba(252, 251, 249, 0.6);
  border-radius: 0;
  padding: 0.6rem 1.15rem;
  margin: 0;
  cursor: pointer;
  white-space: nowrap;
}
.klaro .cm-btn:hover { background: var(--bg); color: var(--ink); border-color: var(--bg); }
.klaro .cm-btn.cm-btn-success { background: var(--bg); color: var(--ink); border-color: var(--bg); }
.klaro .cm-btn.cm-btn-success:hover { background: transparent; color: var(--bg); border-color: rgba(252, 251, 249, 0.6); }
@media (max-width: 62rem) {
  .klaro .cookie-notice .cn-body { justify-content: flex-start; }
  .klaro .cookie-notice .cn-ok { flex: 1 1 100%; justify-content: flex-start; }
}

/* Preferences modal ("Paramètres des cookies") */
.klaro .cookie-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  overflow: auto;
  width: 100%;
  height: 100%;
  font-family: var(--font-body);
  font-size: 1rem;
}
.klaro .cookie-modal .cm-bg {
  position: fixed;
  inset: 0;
  background: rgba(26, 26, 46, 0.6);
}
.klaro .cookie-modal .cm-modal.cm-klaro {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
  width: calc(100% - 2.5rem);
  max-width: 34rem;
  max-height: 88vh;
  overflow: auto;
  background: var(--bg);
  color: var(--ink);
  border-radius: 0;
  box-shadow: 0 20px 60px rgba(26, 26, 46, 0.25);
}
.klaro .cookie-modal .cm-header {
  border-bottom: 1px solid var(--line);
  padding: var(--s3) clamp(var(--s3), 4vw, var(--s4));
}
.klaro .cookie-modal .cm-header h1 {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--navy);
}
.klaro .cookie-modal .hide {
  position: absolute;
  top: 1.3rem;
  right: 1.3rem;
  z-index: 1;
  border: none;
  background: none;
  cursor: pointer;
}
.klaro .cookie-modal .hide svg { stroke: var(--ink-faint); }
.klaro .cookie-modal .cm-body { padding: var(--s3) clamp(var(--s3), 4vw, var(--s4)); }
.klaro .cookie-modal .cm-body > p {
  font-size: 0.9rem;
  line-height: 1.7;
  color: var(--ink-soft);
  margin: 0 0 var(--s3);
}
.klaro .cookie-modal .cm-body ul.cm-services,
.klaro .cookie-modal .cm-body ul.cm-purposes { list-style: none; margin: 0; padding: 0; }
.klaro .cookie-modal .cm-body ul.cm-services li.cm-service,
.klaro .cookie-modal .cm-body ul.cm-purposes li.cm-purpose {
  border-bottom: 1px solid var(--line);
  padding: var(--s2) 0;
}
.klaro .cookie-modal .cm-body ul.cm-services li.cm-service:first-child,
.klaro .cookie-modal .cm-body ul.cm-purposes li.cm-purpose:first-child {
  border-top: 1px solid var(--line);
}
.klaro .cookie-modal .cm-body ul.cm-services li.cm-service p,
.klaro .cookie-modal .cm-body ul.cm-purposes li.cm-purpose p {
  margin: 0.2rem 0 0;
}

/* Klaro's real markup: <input class="cm-list-input"> then
   <label class="cm-list-label"> wrapping <span class="cm-list-title"> and
   <span class="cm-switch"><div class="slider"></div></span>, then a
   sibling description <div>. State is a plain "active" class on .slider,
   not a :checked selector. */
.klaro .cookie-modal .cm-list-input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  clip: rect(0 0 0 0);
}
.klaro .cookie-modal .cm-list-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  cursor: pointer;
}
.klaro .cookie-modal .cm-list-title {
  font-family: var(--font-display);
  font-size: 1.02rem;
  font-weight: 500;
  color: var(--navy);
}
.klaro .cookie-modal .cm-list-input.required + .cm-list-label,
.klaro .cookie-modal .cm-list-input.only-required + .cm-list-label {
  cursor: not-allowed;
}
.klaro .cookie-modal .cm-list-description { color: var(--ink-faint); font-size: 0.85rem; margin-top: 0.2rem; }
.klaro .cookie-modal .cm-list-description .purposes { display: block; margin-top: 0.35rem; color: var(--ink-faint); }

.klaro .cookie-modal .cm-switch {
  position: relative;
  flex: 0 0 auto;
  display: inline-block;
  width: 44px;
  height: 24px;
}
.klaro .cookie-modal .cm-switch .slider {
  position: absolute;
  inset: 0;
  border-radius: 24px;
  background: var(--line);
  transition: background-color 0.2s ease;
}
.klaro .cookie-modal .cm-switch .slider::before {
  content: "";
  position: absolute;
  left: 3px;
  top: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--bg);
  transition: transform 0.2s ease;
}
.klaro .cookie-modal .cm-switch .slider.active { background: var(--navy); }
.klaro .cookie-modal .cm-switch .slider.active::before { transform: translateX(20px); }
.klaro .cookie-modal .cm-list-input:focus-visible + .cm-list-label .cm-switch .slider {
  outline: 2px solid var(--navy);
  outline-offset: 2px;
}

/* Nested per-service list under each purpose ("↓ 1 service") */
.klaro .cookie-modal .cm-services { margin-top: 0.6rem; }
.klaro .cookie-modal .cm-caret a {
  font-size: 0.78rem;
  color: var(--ink-faint);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.klaro .cookie-modal ul.cm-content {
  list-style: none;
  margin: 0.6rem 0 0;
  padding: 0 0 0 var(--s3);
  border-left: 1px solid var(--line);
}
.klaro .cookie-modal ul.cm-content li.cm-service {
  border: none;
  padding: var(--s1) 0;
}
.klaro .cookie-modal ul.cm-content li.cm-service:first-child { border-top: none; }
.klaro .cookie-modal ul.cm-content .cm-list-title { font-size: 0.92rem; }

.klaro .cookie-modal p.purposes,
.klaro .cookie-modal span.cm-opt-out,
.klaro .cookie-modal span.cm-required { color: var(--ink-faint); }
.klaro .cookie-modal .cm-footer {
  border-top: 1px solid var(--line);
  padding: var(--s3) clamp(var(--s3), 4vw, var(--s4));
}
.klaro .cookie-modal .cm-footer-buttons { display: flex; gap: var(--s2); flex-wrap: wrap; }
.klaro .cookie-modal a { color: var(--navy); }

/* Calendly embed: blocked until the "calendly" service is consented to */
.calendly-wrap { position: relative; }
.calendly-embed { display: none; }
.calendly-wrap.is-consented .calendly-embed { display: block; }
.calendly-wrap.is-consented .consent-placeholder { display: none; }
.consent-placeholder {
  border: 1px solid var(--line);
  border-left: 2px solid var(--navy);
  background: var(--bg-alt);
  padding: clamp(var(--s3), 4vw, var(--s4));
}
.consent-placeholder p { font-size: 0.92rem; color: var(--ink-soft); margin-bottom: var(--s2); }

/* --------------------------------------------------------------------------
   22. Companies band (home, "issu d'organisations de premier plan")
   -------------------------------------------------------------------------- */
.companies-band {
  padding-top: clamp(var(--s5), 6vw, var(--s6)); /* matches companies-strip-section's padding-bottom */
  padding-bottom: clamp(var(--s4), 5vw, var(--s5));
}
.companies-headline {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3.2vw, 2.5rem); /* matches "Actualités et publications" (.section-head h2) */
  font-weight: 500;
  line-height: 1.04; /* matches hero video h1 */
  color: var(--navy);
  max-width: 40rem;
}
.companies-intro {
  margin-top: var(--s2);
  max-width: 40rem;
  color: var(--ink-soft);
  font-size: 1.0625rem; /* 17px, matches .service-col > p */
  line-height: 1.7;
}
.companies-intro sup { font-size: 0.7em; color: var(--ink-faint); }
/* Standalone white band, distinct from the beige sections on either side of
   it (companies-band above is plain --bg already; know-us below is --alt) */
.companies-strip-section {
  background: var(--bg);
  border-bottom: 1px solid var(--line);
  padding-top: clamp(var(--s3), 4vw, var(--s4));
  padding-bottom: clamp(var(--s5), 6vw, var(--s6));
  overflow: hidden;
}
/* Track holds two identical copies of the strip back to back; animating it
   from -50% to 0% drifts the names left-to-right in an endless conveyor —
   as the first copy slides fully into view the duplicate feeds in behind it
   from the left, so the loop point is invisible. */
.companies-strip-track {
  display: flex;
  width: max-content;
  animation: companies-drift 42s linear infinite;
}
.companies-strip {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: var(--s5);
  padding-inline: calc(var(--s5) / 2);
}
@keyframes companies-drift {
  from { transform: translateX(-50%); }
  to { transform: translateX(0%); }
}
.companies-strip-section:hover .companies-strip-track { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .companies-strip-track { animation: none; }
}
.company-name {
  color: #4A4A4A;
  white-space: nowrap;
  line-height: 1;
}
.company-name--oracle   { font-family: "Archivo Black", Arial, sans-serif; font-size: 1.3rem; font-weight: 400; }
.company-name--siemens  { font-family: "Titillium Web", sans-serif; font-weight: 600; font-size: 1.3rem; letter-spacing: 0.02em; }
.company-name--boa      { font-family: "Nunito Sans", sans-serif; font-weight: 800; font-size: 1.15rem; }
.company-name--axa      { font-family: "Poppins", sans-serif; font-weight: 700; font-size: 1.3rem; }
.company-name--pwc      { font-family: "Work Sans", sans-serif; font-weight: 500; font-size: 1.25rem; }
.company-name--sanofi   { font-family: "Quicksand", sans-serif; font-weight: 700; font-size: 1.25rem; }
.company-name--visa     { font-family: "Montserrat", sans-serif; font-weight: 700; font-style: italic; font-size: 1.3rem; }
.company-name--manpower { font-family: "Oswald", sans-serif; font-weight: 500; font-size: 1.2rem; text-transform: uppercase; letter-spacing: 0.04em; }
.company-name--shell    { font-family: "Rubik", sans-serif; font-weight: 800; font-size: 1.3rem; }
.company-name--lg       { font-family: "Baloo 2", sans-serif; font-weight: 700; font-size: 1.25rem; }
.company-name--bureauveritas { font-family: "Work Sans", sans-serif; font-weight: 500; font-size: 1.2rem; }
.company-name--leyton    { font-family: "Montserrat", sans-serif; font-weight: 700; font-size: 1.3rem; }
.company-name--orange    { font-family: "Baloo 2", sans-serif; font-weight: 700; font-size: 1.25rem; text-transform: lowercase; }
.company-name--danone    { font-family: "Quicksand", sans-serif; font-weight: 600; font-size: 1.25rem; }
.company-name--mcdonalds { font-family: "Archivo Black", Arial, sans-serif; font-weight: 400; font-size: 1.2rem; }
.company-name--jumia     { font-family: "Rubik", sans-serif; font-weight: 700; font-size: 1.25rem; }
.company-name--glovo     { font-family: "Comfortaa", sans-serif; font-weight: 700; font-size: 1.15rem; }
.company-name--byd       { font-family: "Titillium Web", sans-serif; font-weight: 700; font-size: 1.25rem; letter-spacing: 0.03em; }
.company-name--ikea      { font-family: "Oswald", sans-serif; font-weight: 700; font-size: 1.25rem; text-transform: uppercase; }
.company-name--sap       { font-family: "Work Sans", sans-serif; font-weight: 700; font-size: 1.15rem; text-transform: uppercase; letter-spacing: 0.05em; }
.company-name--creditagricole { font-family: "Nunito Sans", sans-serif; font-weight: 700; font-size: 1.15rem; }

@media (max-width: 40rem) {
  .companies-strip { gap: var(--s4); }
}

/* --------------------------------------------------------------------------
   23. Nous connaître (CEO note + team link, Rothschild-style)
   -------------------------------------------------------------------------- */
.know-us-inner {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(var(--s3), 3vw, var(--s4)); /* brought closer together */
  align-items: start;
}
.know-us-media { display: flex; }
.know-us-portrait {
  aspect-ratio: 1 / 1;
  width: 85%; /* -15% from 100% */
  height: auto; /* override the img's width/height HTML attributes so aspect-ratio governs */
  background: var(--bg);
  object-fit: cover;
  display: block;
}
.know-us-content { position: relative; }

/* Eyebrow: short rule + label sitting inline, rothschildandco.com "Nous
   connaître" style (not the sitewide uppercase/letterspaced .eyebrow). */
.know-us-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s3);
}
.know-us-eyebrow::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 1px;
  background: var(--ink-soft);
}
.know-us-eyebrow span {
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--navy);
}

.know-us-quote-mark {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(3.5rem, 6vw, 5rem);
  line-height: 1;
  color: var(--navy);
  margin-bottom: -1.5rem; /* the glyph itself sits high in its line box, leaving dead space below it — pull the paragraph back up into it */
}
.know-us-text {
  max-width: 36rem;
  font-family: var(--font-display);
  font-size: 1.581rem; /* +15% from 1.375rem (~22px) */
  line-height: 1.3; /* reduced from 1.6 */
  color: var(--navy);
}
.know-us-text + .know-us-text { margin-top: var(--s3); }

.know-us-signoff {
  margin-top: -0.25rem;
  display: flex;
  align-items: center;
  gap: var(--s5);
}
.know-us-name {
  font-family: var(--font-display);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.85rem;
  line-height: 1.3; /* matches .know-us-text */
  color: var(--navy);
}
.know-us-title {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-family: var(--font-display);
  font-size: 0.82rem;
  line-height: 1.3; /* matches .know-us-text: name and title stack like consecutive lines */
  color: var(--ink-soft);
}
.know-us-title::before { content: "—"; }
.know-us-signature {
  height: 8.8rem; /* x4 */
  width: auto;
  mix-blend-mode: multiply; /* drops the scan's white background onto the section bg */
}

.know-us-ctas {
  margin-top: var(--s2);
  display: flex;
  flex-wrap: wrap;
  gap: var(--s2);
}
.btn--solid {
  background: var(--navy);
  color: var(--bg);
  border-color: var(--navy);
}
.btn--solid:hover { background: var(--ink); border-color: var(--ink); color: var(--bg); }

@media (max-width: 52rem) {
  .know-us-inner { grid-template-columns: 1fr; gap: var(--s3); }
  .know-us-portrait { width: 60%; max-width: 14rem; }
}

/* --------------------------------------------------------------------------
   24. Ressources: dark carousel band (Rothschild "Travailler chez" style)
   -------------------------------------------------------------------------- */
.resources-band {
  background: rgb(25, 42, 79);
  color: var(--bg);
  padding-block: clamp(var(--s4), 6vw, var(--s6)); /* tighter than the default section padding, so the media sits closer to the band's own top/bottom edges */
}
.resources-inner {
  display: grid;
  grid-template-columns: minmax(0, 4fr) minmax(0, 6fr) minmax(0, 3fr);
  gap: clamp(var(--s4), 6vw, var(--s6));
  align-items: start; /* content's top (the counter row) lines up with the image's top edge */
}
.resources-media { aspect-ratio: 4 / 5.75; overflow: hidden; position: relative; } /* +15% height from 4/5 */
.resources-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.233s ease; /* 1.5x faster than 0.35s */
}
.resources-content { color: var(--bg); }
/* Secondary column: nav arrows sit above the accent image, same pattern as
   the Actualités section's arrows above its news grid. */
.resources-secondary-col { display: flex; flex-direction: column; }
.resources-media--secondary {
  aspect-ratio: 3 / 4;
  overflow: hidden;
  margin-top: clamp(var(--s5), 8vw, var(--s6)); /* keeps the image offset lower, rothschildandco.com "Travailler chez" style */
}
.resources-media--secondary img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.233s ease; /* 1.5x faster than 0.35s */
}
/* Both images stay anchored in place — only opacity animates. */
.resources-img.is-fading,
.resources-media--secondary img.is-fading { opacity: 0; }

/* Eyebrow row: counter + short rule + static label, rothschildandco.com
   "03 / 04 —— Travailler chez Rothschild & Co" pattern. */
.resources-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s3);
}
.resources-counter {
  font-family: var(--font-display);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  color: var(--bg);
}
.resources-eyebrow-rule {
  width: 2.5rem;
  height: 1px;
  background: rgba(252, 251, 249, 0.4);
}
.resources-eyebrow-label {
  font-family: var(--font-display);
  font-size: 0.95rem; /* matches .know-us-eyebrow span ("Nous connaître") */
  font-weight: 500;
  letter-spacing: normal;
  color: var(--bg);
}
.resources-band h2 {
  color: var(--bg);
  font-size: clamp(1.75rem, 3.2vw, 2.5rem); /* matches .companies-headline */
  margin-bottom: var(--s3);
}
.resources-title {
  font-family: var(--font-display);
  font-size: 1.3rem;
  color: var(--bg);
  margin-bottom: var(--s1);
}
.resources-desc {
  color: rgba(252, 251, 249, 0.78);
  font-size: 1.0625rem; /* 17px */
  line-height: 1.7;
  margin-bottom: var(--s3); /* no max-width: filling the column keeps the gap to the right image equal to the gap on the left */
}
.btn--white {
  background: var(--bg);
  color: var(--navy);
  border-color: var(--bg);
}
.btn--white:hover { background: transparent; color: var(--bg); border-color: var(--bg); }
.resources-nav { display: flex; justify-content: flex-end; gap: var(--s2); }
.resources-nav button {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--bg);
  padding: 0.4rem;
  transition: opacity 0.2s ease;
}
.resources-nav button svg { display: block; }
.resources-nav button:hover { opacity: 0.6; }

@media (max-width: 52rem) {
  .resources-inner { grid-template-columns: 1fr; gap: var(--s3); }
  .resources-media { max-width: 16rem; aspect-ratio: 1 / 1; }
  .resources-secondary-col { display: none; }
}

/* --------------------------------------------------------------------------
   25. Notre présence au Maroc et à l'international
   -------------------------------------------------------------------------- */
.presence-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s3);
}
.presence-eyebrow::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 1px;
  background: var(--ink-soft);
}
.presence-eyebrow span {
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--navy);
}
.presence-grid {
  display: grid;
  grid-template-columns: minmax(0, 6fr) minmax(0, 6fr);
  gap: clamp(var(--s4), 6vw, var(--s6));
  align-items: stretch; /* map fills the row height, which the list (the taller column) determines */
}
.presence-list { list-style: none; max-width: 31.2rem; } /* +30% from 24rem */
.presence-item {
  border-top: 1px solid var(--line);
  padding-block: 0.52rem; /* +30% */
}
.presence-item:last-child { border-bottom: 1px solid var(--line); }
.presence-city {
  font-family: var(--font-display);
  font-size: 1.144rem; /* +30% */
  line-height: 1.15;
  color: var(--navy);
  margin-bottom: 0.26rem; /* +30% */
}
.presence-detail { font-size: 0.988rem; color: var(--ink); line-height: 1.4; } /* +30% */
.presence-detail a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }

.presence-map {
  position: relative;
  width: 85%; /* -15% */
  height: 100%; /* matches the list's height via grid row stretch, not a fixed aspect-ratio */
  min-height: 22rem;
  background: var(--bg-alt);
  border: 1px solid var(--line);
  overflow: hidden;
}
.presence-map > div { width: 100%; height: 100%; min-height: 22rem; background: var(--bg-alt); }

/* Leaflet chrome restyled to match the site: sharp corners, no heavy shadow,
   navy/Calluna typography instead of Leaflet's default sans-serif popup. */
.leaflet-container { font-family: var(--font-body); }
/* Desaturate the standard OSM tiles to a sober, editorial grayscale instead
   of pulling in a hosted map style (which would need an API key). */
.leaflet-tile-pane { filter: grayscale(1) contrast(1.05) brightness(1.05); }
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
  border-radius: 0;
  box-shadow: 0 0.5rem 1.5rem -0.5rem rgba(26, 26, 46, 0.35);
}
.leaflet-popup-content { margin: var(--s3); }
.leaflet-popup-close-button { color: var(--ink-soft) !important; }
.presence-popup-city {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--navy);
  margin: 0 0 0.4rem;
}
.presence-popup-address { font-size: 0.85rem; color: var(--ink-soft); line-height: 1.5; margin: 0 0 0.5rem; }
.presence-popup-phone { margin: 0 0 0.5rem; }
.presence-popup-phone a { font-size: 0.9rem; color: var(--navy); text-decoration: none; }
.presence-popup-phone a:hover { text-decoration: underline; }
.presence-popup-link {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--navy);
  border-bottom: 1px solid var(--navy);
  padding-bottom: 0.15rem;
}

@media (max-width: 52rem) {
  .presence-grid { grid-template-columns: 1fr; gap: var(--s4); }
  .presence-list { max-width: none; }
  .presence-map { width: 100%; height: auto; aspect-ratio: 4 / 3; } /* stacked layout: no row to stretch against, so fall back to a fixed ratio */
}

/* --------------------------------------------------------------------------
   26. Contactez-nous (home teaser: three channels, links to /contact/)
   -------------------------------------------------------------------------- */
.contact-teaser-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--s4), 4vw, var(--s5));
}
.contact-teaser-card {
  padding: clamp(var(--s4), 4vw, var(--s5));
  border: 1px solid var(--line);
  background: var(--bg);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.contact-teaser-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  background: var(--bg-alt);
  color: var(--navy);
  margin-bottom: var(--s3);
}
.contact-teaser-card h3 { font-size: 1.25rem; margin-bottom: var(--s1); }
.contact-teaser-delay {
  font-family: var(--font-display);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: var(--s2);
}
.contact-teaser-card p {
  color: var(--ink-soft);
  font-size: 1rem;
  line-height: 1.6;
  margin-bottom: var(--s3);
  flex-grow: 1;
}
.contact-teaser-card p.contact-teaser-delay { flex-grow: 0; }

@media (max-width: 52rem) {
  .contact-teaser-grid { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   27. Team profiles (Équipe): grouped by tier (Direction / Responsables de
   pôles / Équipe), portrait-led cards with no border box — kept plain to
   avoid a "directory" look.
   -------------------------------------------------------------------------- */
.team-group-label {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 500;
  color: var(--navy);
  margin-top: clamp(var(--s5), 6vw, var(--s6));
  margin-bottom: var(--s3);
}
.team-group-label:first-of-type { margin-top: 0; }

.team-grid {
  display: grid;
  gap: clamp(var(--s4), 4vw, var(--s5));
}
.team-grid--2 { grid-template-columns: repeat(2, 1fr); }
.team-grid--3 { grid-template-columns: repeat(3, 1fr); }

.team-card { display: flex; flex-direction: column; }
.team-portrait { margin-bottom: var(--s3); }
.team-card .img-placeholder { margin-top: 0; }
/* Mouhsine Diouri's real photo, vs. the placeholder <div> the other cards
   use — the img needs its own sizing since it isn't wrapped in
   .img-placeholder; height:auto keeps the width/height HTML attributes
   from overriding aspect-ratio (see the home-page CEO portrait fix). */
img.team-portrait {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border: 1px solid var(--line);
}
.team-card h3 { font-size: clamp(1.1rem, 1.6vw, 1.35rem); margin-bottom: 0.3rem; }
.team-role { font-size: 0.85rem; color: var(--navy); margin-bottom: var(--s2); }
.team-desc { font-size: 0.9rem; line-height: 1.6; color: var(--ink-soft); margin-bottom: var(--s2); }
.team-langs { font-size: 0.8rem; color: var(--ink-faint); }

/* Direction tier: portrait+bio on the left, the director's note (identical
   style to the home page "Nous connaître" quote block) on the right. */
.director-block {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(var(--s4), 6vw, var(--s6));
  align-items: start;
}
.director-note .know-us-signoff { margin-top: var(--s2); }

@media (max-width: 62rem) {
  .team-grid--2,
  .team-grid--3,
  .director-block { grid-template-columns: 1fr; }
}
