/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; }
body { font-family: 'DM Sans', sans-serif; background: #f7f5f0; color: #1a2430; overflow-x: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; }

/* ── TOKENS ── */
:root {
  --abyssal: oklch(22% 0.04 225);
  --mer:     oklch(38% 0.07 220);
  --brume:   oklch(55% 0.06 218);
  --ciel:    oklch(72% 0.055 218);
  --ecume:   oklch(92% 0.018 215);
  --marais:  oklch(42% 0.07 155);
  --sage:    oklch(72% 0.06 148);
  --mousse:  oklch(88% 0.04 148);
  --sable:   oklch(93% 0.015 80);
  --parchemin: oklch(96% 0.01 80);
  --encre:   oklch(20% 0.025 220);
  --pluie:   oklch(52% 0.03 220);
  --border:  oklch(90% 0.012 220);
  --sp:      clamp(1rem, 4vw, 3.5rem);
}

/* ── LAYOUT ── */
.container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 0 1.25rem; }
@media (min-width: 640px)  { .container { padding: 0 2rem; } }
@media (min-width: 1024px) { .container { padding: 0 3.5rem; } }

/* ── TYPOGRAPHY ── */
.t-label { font-family: 'DM Sans', sans-serif; font-size: 0.625rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--pluie); }
.t-cat   { font-family: 'DM Sans', sans-serif; font-size: 0.625rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sage); }
.t-serif { font-family: 'Spectral', serif; }
.t-fell  { font-family: 'IM Fell English', serif; font-style: italic; }

/* ── NAV ── */
.site-header { position: relative; z-index: 100; }

.nav {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 1.25rem; height: 60px;
  background: white; border-bottom: 1px solid var(--border);
}
@media (min-width: 640px)  { .nav { padding: 0 2rem; } }
@media (min-width: 1024px) { .nav { padding: 0 3.5rem; } }

.nav--dark {
  position: absolute; top: 0; left: 0; right: 0;
  background: linear-gradient(to bottom, rgba(8,18,26,0.55) 0%, transparent 100%);
  border-bottom: none;
}

.nav__logo { display: flex; align-items: center; gap: 0.625rem; text-decoration: none; }
.nav__logo img { height: 36px; width: 36px; object-fit: contain; }
.nav__logo-text { display: flex; flex-direction: column; gap: 2px; }
.nav__logo-name { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.875rem; line-height: 1; color: var(--abyssal); }
.nav--dark .nav__logo-name { color: rgba(255,255,255,0.92); }
.nav__logo-sub { font-size: 0.5625rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--pluie); }
.nav--dark .nav__logo-sub { color: rgba(255,255,255,0.42); }
.nav--dark .nav__logo img { filter: brightness(0) invert(1) opacity(0.85); }

/* Desktop nav links */
.nav__links { display: none; }
@media (min-width: 1024px) { .nav__links { display: flex; } }

.nav__menu {
  list-style: none; padding: 0; margin: 0;
  display: flex; align-items: center;
  gap: clamp(1.25rem, 2.4vw, 2.25rem);
}
.nav__menu .nav__item { position: relative; }
.nav__menu .nav__item--depth-0 > a {
  display: inline-flex; align-items: center; gap: 0.25rem;
  font-family: 'Spectral', serif; font-size: 0.9375rem; font-weight: 300; font-style: italic;
  letter-spacing: 0.005em; text-decoration: none; color: var(--encre);
  padding: 0.25rem 0; position: relative; line-height: 1; transition: color 0.18s ease;
}
.nav--dark .nav__menu .nav__item--depth-0 > a { color: rgba(255,255,255,0.85); }
.nav__menu .nav__item--depth-0 > a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px;
  height: 1px; background: currentColor; opacity: 0;
  transform: scaleX(0.2); transform-origin: center;
  transition: opacity 0.22s ease, transform 0.28s ease;
}
.nav__menu .nav__item--depth-0:hover > a::after,
.nav__menu .nav__item--depth-0:focus-within > a::after { opacity: 0.55; transform: scaleX(1); }

/* Caret indicator on items with children */
.nav__caret {
  display: inline-block; font-size: 0.75rem; line-height: 1;
  opacity: 0.5; transform: rotate(90deg); margin-left: 0.125rem;
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.nav__menu .nav__item--has-children:hover > a > .nav__caret,
.nav__menu .nav__item--has-children:focus-within > a > .nav__caret { opacity: 0.9; }

/* Submenu (level 2 and 3) */
.nav__submenu {
  position: absolute; top: 100%; left: -1rem;
  list-style: none; padding: 0.625rem 0; margin: 0;
  min-width: 240px;
  background: white;
  border: 1px solid var(--border);
  box-shadow: 0 8px 24px rgba(8,18,26,0.06);
  opacity: 0; visibility: hidden; transform: translateY(-4px);
  transition: opacity 0.18s ease, transform 0.22s ease, visibility 0.18s;
  z-index: 110;
}
.nav--dark .nav__submenu {
  background: rgba(8,18,26,0.97);
  border-color: rgba(255,255,255,0.08);
  box-shadow: 0 8px 24px rgba(0,0,0,0.35);
}

.nav__menu .nav__item:hover > .nav__submenu,
.nav__menu .nav__item:focus-within > .nav__submenu {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.nav__menu .nav__item:hover > a[aria-haspopup],
.nav__menu .nav__item:focus-within > a[aria-haspopup] { /* keep aria-expanded visually consistent via JS too */ }

/* Level 3: cascade to the right */
.nav__submenu .nav__submenu { top: -0.625rem; left: 100%; }

.nav__submenu .nav__item > a {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 0.5rem 1.25rem;
  font-family: 'Spectral', serif; font-size: 0.9375rem; font-weight: 300; font-style: italic;
  color: var(--encre); text-decoration: none; white-space: nowrap;
  line-height: 1.35;
  transition: color 0.15s ease, background 0.15s ease;
}
.nav--dark .nav__submenu .nav__item > a { color: rgba(255,255,255,0.85); }
.nav__submenu .nav__item > a:hover,
.nav__submenu .nav__item > a:focus {
  color: var(--mer); background: var(--parchemin);
}
.nav--dark .nav__submenu .nav__item > a:hover,
.nav--dark .nav__submenu .nav__item > a:focus {
  color: white; background: rgba(255,255,255,0.05);
}
.nav__submenu .nav__caret {
  transform: rotate(0deg); opacity: 0.4; font-size: 0.875rem;
}

/* Burger */
.nav__burger { display: flex; flex-direction: column; gap: 5px; cursor: pointer; background: none; border: none; padding: 4px; }
.nav__burger span { display: block; width: 22px; height: 1.5px; background: var(--encre); transition: all 0.2s; }
.nav--dark .nav__burger span { background: white; }
@media (min-width: 1024px) { .nav__burger { display: none; } }

/* Mobile drawer */
.nav__drawer { display: none; position: fixed; inset: 0; z-index: 200; background: white; overflow-y: auto; flex-direction: column; padding: 1.5rem; }
.nav__drawer.open { display: flex; }
.nav__drawer-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; }
.nav__drawer-close { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: var(--encre); line-height: 1; }
.nav__drawer-menu { width: 100%; }
.nav__drawer-list, .nav__drawer-list ul {
  list-style: none; padding: 0; margin: 0;
}
.nav__drawer-list .nav__item { border-bottom: 1px solid var(--border); }
.nav__drawer-list .nav__item:last-child { border-bottom: none; }
.nav__drawer-list .nav__item > a {
  display: flex; justify-content: space-between; align-items: center;
  font-family: 'Spectral', serif; font-style: italic;
  font-size: 1.375rem; font-weight: 300; color: var(--encre);
  text-decoration: none; padding: 0.875rem 0;
}
.nav__drawer-list .nav__caret { font-size: 1rem; opacity: 0.4; }
/* Level 2 inside drawer */
.nav__drawer-list .nav__submenu {
  list-style: none; padding: 0 0 0.5rem 1rem; margin: 0;
  border-top: 1px dashed var(--border);
}
.nav__drawer-list .nav__submenu .nav__item { border-bottom: none; }
.nav__drawer-list .nav__submenu .nav__item > a {
  font-size: 1rem; padding: 0.5rem 0; color: var(--pluie);
}
/* Level 3 inside drawer */
.nav__drawer-list .nav__submenu .nav__submenu {
  border-top: none; padding-left: 1rem;
}
.nav__drawer-list .nav__submenu .nav__submenu .nav__item > a {
  font-size: 0.9375rem; color: var(--pluie); opacity: 0.85;
}

/* ── HERO ── */
.hero { position: relative; overflow: hidden; min-height: 60vh; display: flex; flex-direction: column; justify-content: flex-end; }
@media (min-width: 768px)  { .hero { min-height: 75vh; } }
@media (min-width: 1024px) { .hero { min-height: 85vh; } }
.hero__bg { position: absolute; inset: 0; }
.hero__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; }
.hero__overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(8,18,26,0.35) 0%, rgba(8,18,26,0.08) 35%, rgba(8,18,26,0.6) 80%, rgba(8,18,26,0.85) 100%); }
.hero__content { position: relative; padding: 2rem 1.25rem 3rem; text-align: center; }
@media (min-width: 640px)  { .hero__content { padding: 2.5rem 2rem 4rem; } }
@media (min-width: 1024px) { .hero__content { padding: 3rem 3.5rem 5rem; } }
.hero__eyebrow { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.75rem; color: rgba(255,255,255,0.5); letter-spacing: 0.12em; margin-bottom: 1rem; }
.hero__title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; color: white; line-height: 1.05; margin-bottom: 1.25rem; font-size: clamp(2.5rem, 8vw, 5rem); }
.hero__subtitle { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(1.125rem, 3vw, 1.5rem); color: rgba(255,255,255,0.7); }
.hero__sub-line { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; color: rgba(255,255,255,0.58); font-size: clamp(0.875rem, 2vw, 1rem); max-width: 500px; margin: 1.25rem auto 0; line-height: 1.8; }
.hero__line { width: 1px; height: 2rem; background: rgba(255,255,255,0.28); margin: 1.5rem auto 0; }

/* ── INTRO ── */
.intro { padding: clamp(3rem,8vw,6rem) 1.25rem; text-align: center; }
@media (min-width: 640px) { .intro { padding: clamp(3rem,8vw,6rem) 2rem; } }
.intro__inner { max-width: 600px; margin: 0 auto; }
.intro__label { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--brume); letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 1.5rem; }
.intro__text { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(1.0625rem, 2.5vw, 1.375rem); line-height: 1.8; color: var(--encre); }
.intro__rule { width: 2rem; height: 1px; background: var(--brume); margin: 2.5rem auto 0; opacity: 0.45; }

/* ── DOMAINES ── */
.domaines { padding: 0 1.25rem clamp(3rem,8vw,5.5rem); }
@media (min-width: 640px) { .domaines { padding: 0 2rem clamp(3rem,8vw,5.5rem); } }
/* Une bande de cartes qui suit la bande blanche des actualités (2e ligne de
   mise en avant en home) : .domaines n'a pas de padding haut, elle héritait
   du seul padding bas de .actus et démarrait pile sur la rupture de fond. */
.actus + .domaines { padding-top: clamp(2rem,5vw,3.5rem); }
/* ── Cards grid (count-aware to avoid orphans on tablet/desktop) ── */
.domaines__grid { display: grid; grid-template-columns: 1fr; gap: 3px; }

/* Tablet 768–1023px : 2 cols by default */
@media (min-width: 768px) and (max-width: 1023.98px) {
  .domaines__grid { grid-template-columns: 1fr 1fr; }
  /* For 3 items → 2 cols leaves an orphan; stack to 1 col instead */
  .domaines__grid[data-count="3"] { grid-template-columns: 1fr; }
  /* For odd counts ≥ 5 → center the last (orphan) card across both cols */
  .domaines__grid[data-count="5"]  > :last-child,
  .domaines__grid[data-count="7"]  > :last-child,
  .domaines__grid[data-count="9"]  > :last-child,
  .domaines__grid[data-count="11"] > :last-child {
    grid-column: 1 / -1;
    justify-self: center;
    width: calc(50% - 1.5px);
  }
}

/* Desktop 1024+ : 3 cols by default, with count-specific layouts */
@media (min-width: 1024px) {
  .domaines__grid { grid-template-columns: 1fr 1fr 1fr; }

  /* 1 card: centered, comfortable max-width */
  .domaines__grid[data-count="1"] {
    grid-template-columns: minmax(0, 720px);
    justify-content: center;
  }
  /* 2 cards: 2 cols, narrower outer width */
  .domaines__grid[data-count="2"] {
    grid-template-columns: 1fr 1fr;
    max-width: 1000px; margin-left: auto; margin-right: auto;
  }
  /* 4 cards: 2×2 (avoids 3+1 orphan) */
  .domaines__grid[data-count="4"] {
    grid-template-columns: 1fr 1fr;
    max-width: 1000px; margin-left: auto; margin-right: auto;
  }
  /* 5 cards: 6-col grid, each card spans 2; last 2 centered on row 2 */
  .domaines__grid[data-count="5"] {
    grid-template-columns: repeat(6, 1fr);
  }
  .domaines__grid[data-count="5"] > *           { grid-column: span 2; }
  .domaines__grid[data-count="5"] > :nth-child(4) { grid-column: 2 / span 2; }
  .domaines__grid[data-count="5"] > :nth-child(5) { grid-column: 4 / span 2; }
  /* 7 cards: 4 cols row 1, 3 cols row 2 centered (8-col grid, span 2) */
  .domaines__grid[data-count="7"] {
    grid-template-columns: repeat(8, 1fr);
  }
  .domaines__grid[data-count="7"] > *           { grid-column: span 2; }
  .domaines__grid[data-count="7"] > :nth-child(5) { grid-column: 2 / span 2; }
  .domaines__grid[data-count="7"] > :nth-child(6) { grid-column: 4 / span 2; }
  .domaines__grid[data-count="7"] > :nth-child(7) { grid-column: 6 / span 2; }
  /* 8 cards: 4 cols × 2 rows */
  .domaines__grid[data-count="8"] {
    grid-template-columns: repeat(4, 1fr);
  }
  /* 3, 6, 9, … : keep the default 3 cols (already aligns) */
}
.domaine-card { position: relative; overflow: hidden; cursor: pointer; }
.domaine-card__img { width: 100%; height: clamp(240px,40vw,460px); object-fit: cover; display: block; }
/* Dégradé en quatre paliers plutôt que deux : le texte des cartes reste
   lisible sur une photo claire dans sa moitié basse (plage, salle éclairée),
   là où l'ancien dégradé supposait un bas d'image sombre. */
.domaine-card__overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(8,18,26,0.92) 0%, rgba(8,18,26,0.62) 30%, rgba(8,18,26,0.18) 62%, rgba(8,18,26,0.04) 100%); }
.domaine-card__body { position: absolute; bottom: 0; left: 0; right: 0; padding: clamp(1.25rem,3vw,2.25rem); }
.domaine-card__cat { font-size: 0.5625rem; color: rgba(255,255,255,0.42); letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 0.75rem; font-family: 'DM Sans', sans-serif; }
.domaine-card__title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; font-size: clamp(1.375rem,3vw,1.875rem); color: white; margin-bottom: 0.625rem; line-height: 1.15; }
.domaine-card__text { font-family: 'Spectral', serif; font-weight: 300; font-size: 0.8125rem; color: rgba(255,255,255,0.58); line-height: 1.75; margin-bottom: 0.875rem; }
.domaine-card__link { font-size: 0.6875rem; color: rgba(255,255,255,0.45); letter-spacing: 0.1em; font-family: 'DM Sans', sans-serif; }

/* ── ACTUALITÉS ── */
.actus { background: white; padding: clamp(2.5rem,7vw,4.5rem) 1.25rem; }
@media (min-width: 640px)  { .actus { padding: clamp(2.5rem,7vw,4.5rem) 2rem; } }
@media (min-width: 1024px) { .actus { padding: clamp(2.5rem,7vw,4.5rem) 3.5rem; } }
.actus__grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px)  { .actus__grid { grid-template-columns: 1fr 1fr; gap: 3rem; } }
@media (min-width: 1024px) { .actus__grid { grid-template-columns: 1fr 1px 1fr 1px 1fr; gap: 0; } }
.actus__divider { background: var(--border); display: none; }
@media (min-width: 1024px) { .actus__divider { display: block; } }
@media (min-width: 1024px) { .actu-col { padding: 0 3rem; } .actu-col:first-child { padding-left: 0; } .actu-col:last-child { padding-right: 0; } }
.actu-col__label { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--brume); letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 2rem; }
.actu-col__img { width: 100%; height: clamp(160px,30vw,220px); object-fit: cover; margin-bottom: 1.25rem; }
.actu-item { padding-bottom: 1.75rem; margin-bottom: 1.75rem; border-bottom: 1px solid var(--border); }
.actu-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.actu-item--thumb { display: flex; gap: 0.875rem; align-items: flex-start; }
.actu-item--thumb .actu-item__thumb { width: 80px; height: 60px; object-fit: cover; flex-shrink: 0; border-radius: 2px; }
.actu-item--thumb .actu-item__title { margin-top: 0; font-size: 0.9375rem; }
.actu-item__cat { font-size: 0.5625rem; color: var(--sage); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 0.5rem; font-family: 'DM Sans', sans-serif; }
.actu-item__title { font-family: 'Spectral', serif; font-weight: 400; font-size: clamp(1.0625rem,2.5vw,1.25rem); line-height: 1.4; margin-bottom: 0.5rem; color: var(--encre); }
.actu-item__text { font-family: 'Spectral', serif; font-weight: 300; font-size: 0.875rem; color: var(--pluie); line-height: 1.75; }
.actu-item__link { display: inline-block; margin-top: 0.875rem; font-size: 0.75rem; color: var(--brume); text-decoration: none; font-family: 'DM Sans', sans-serif; letter-spacing: 0.08em; border-bottom: 1px solid var(--ecume); padding-bottom: 1px; }
.agenda-item { display: flex; gap: 1.125rem; padding-bottom: 1.25rem; margin-bottom: 1.25rem; border-bottom: 1px solid var(--border); align-items: flex-start; }
.agenda-item:last-child { border-bottom: none; }
.agenda-date { min-width: 2.5rem; }
.agenda-date__day { font-family: 'Spectral', serif; font-size: 1.625rem; font-weight: 300; color: var(--mer); line-height: 1; }
.agenda-date__mo { font-size: 0.5625rem; color: var(--pluie); letter-spacing: 0.08em; }
.agenda-item__type { font-size: 0.5625rem; color: var(--sage); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 0.25rem; font-family: 'DM Sans', sans-serif; }
.agenda-item__title { font-family: 'Spectral', serif; font-weight: 400; font-size: 0.9375rem; line-height: 1.4; color: var(--encre); }

/* ── CTA ── */
.cta { position: relative; overflow: hidden; min-height: clamp(220px,40vw,340px); display: flex; align-items: center; justify-content: center; }
.cta__bg { position: absolute; inset: 0; }
.cta__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; }
.cta__overlay { position: absolute; inset: 0; background: rgba(8,18,26,0.70); }
.cta__content { position: relative; text-align: center; padding: 2.5rem 1.25rem; }
@media (min-width: 640px) { .cta__content { padding: 3rem 2rem; } }
.cta__eyebrow { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.75rem; color: rgba(255,255,255,0.48); letter-spacing: 0.12em; margin-bottom: 0.875rem; }
.cta__title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; font-size: clamp(1.5rem,4vw,2.625rem); color: white; line-height: 1.15; margin-bottom: 1.75rem; }
.btn-outline { display: inline-block; border: 1px solid rgba(255,255,255,0.35); color: white; padding: 0.8125rem 2rem; text-decoration: none; font-size: 0.75rem; font-family: 'DM Sans', sans-serif; letter-spacing: 0.1em; text-transform: uppercase; min-height: 44px; }
.btn-outline:hover { background: rgba(255,255,255,0.1); }

/* ── FOOTER ── */
.footer { background: var(--parchemin); }
.footer__body { padding: clamp(2.5rem,7vw,3.5rem) 1.25rem; display: grid; grid-template-columns: 1fr; gap: 2.5rem; border-top: 1px solid var(--border); }
@media (min-width: 640px)  { .footer__body { padding: clamp(2.5rem,7vw,3.5rem) 2rem; grid-template-columns: 1fr 1fr; gap: 2rem; } }
@media (min-width: 1024px) { .footer__body { padding: clamp(2.5rem,7vw,3.5rem) 3.5rem; grid-template-columns: 2fr 1fr 1fr 1fr; } }
.footer__brand { display: flex; align-items: flex-start; gap: 0.75rem; }
.footer__brand img { height: 36px; width: 36px; object-fit: contain; flex-shrink: 0; }
.footer__brand-name { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.9375rem; color: var(--encre); margin-bottom: 0.25rem; }
.footer__brand-sub { font-size: 0.625rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--pluie); }
.footer__brand-desc { font-family: 'Spectral', serif; font-weight: 300; font-size: 0.8125rem; color: var(--pluie); line-height: 1.75; margin-top: 0.875rem; }
.footer__col h4 { font-size: 0.5625rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--pluie); margin-bottom: 1rem; font-weight: 400; }
.footer__col a { display: block; font-size: 0.8125rem; color: var(--pluie); text-decoration: none; margin-bottom: 0.625rem; font-weight: 300; }
.footer__col a:hover { color: var(--encre); }
.footer__bar { border-top: 1px solid var(--border); padding: 1.125rem 1.25rem; display: flex; flex-direction: column; gap: 0.5rem; }
@media (min-width: 640px)  { .footer__bar { padding: 1.125rem 2rem; flex-direction: row; justify-content: space-between; align-items: center; } }
@media (min-width: 1024px) { .footer__bar { padding: 1.125rem 3.5rem; } }
.footer__bar p, .footer__bar a { font-size: 0.6875rem; color: var(--pluie); font-weight: 300; text-decoration: none; font-family: 'DM Sans', sans-serif; }
.footer__bar-links { display: flex; gap: 1.25rem; flex-wrap: wrap; }
/* Crédit de réalisation : même discrétion que les liens légaux, mais détaché
   d'eux — c'est une mention d'auteur, pas une page du site. */
.footer__credit { font-family: 'DM Sans', sans-serif; font-size: 0.6875rem; color: var(--pluie); font-weight: 300; }
.footer__credit a { border-bottom: 1px solid var(--border); padding-bottom: 1px; }
.footer__credit a:hover { border-bottom-color: var(--brume); }

/* ── SECTION TITLES ── */
.section-label { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--brume); letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0.5rem; }
.section-title { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(1.5rem,4vw,2.75rem); color: var(--encre); }
.section-link { font-size: 0.75rem; color: var(--mer); text-decoration: none; font-family: 'DM Sans', sans-serif; letter-spacing: 0.08em; border-bottom: 1px solid var(--ecume); padding-bottom: 1px; white-space: nowrap; }

/* ── SOMMAIRE ── */
.sommaire-header { background: var(--parchemin); border-bottom: 1px solid var(--border); }
.sommaire-header__inner { max-width: 1100px; margin: 0 auto; padding: clamp(2.5rem,7vw,4.5rem) 1.25rem clamp(2rem,5vw,3rem); }
@media (min-width: 640px)  { .sommaire-header__inner { padding: clamp(2.5rem,7vw,4.5rem) 2rem clamp(2rem,5vw,3rem); } }
@media (min-width: 1024px) { .sommaire-header__inner { padding: clamp(2.5rem,7vw,4.5rem) 3.5rem clamp(2rem,5vw,3rem); } }
.sommaire-header__grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .sommaire-header__grid { grid-template-columns: 1fr 1fr; gap: 3rem; align-items: end; } }
.sommaire-header__title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; font-size: clamp(2rem,6vw,3.25rem); color: var(--encre); line-height: 1.05; }
.sommaire-header__desc { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(0.875rem,2vw,1.0625rem); color: var(--pluie); line-height: 1.8; }

/* Container centré pour la liste */
.sommaire-body { max-width: 1100px; margin: 0 auto; padding: 0 1.25rem clamp(2.5rem,6vw,4rem); }
@media (min-width: 640px)  { .sommaire-body { padding: 0 2rem clamp(2.5rem,6vw,4rem); } }
@media (min-width: 1024px) { .sommaire-body { padding: 0 3.5rem clamp(2.5rem,6vw,4rem); } }

/* Article vedette */
.vedette { display: grid; grid-template-columns: 1fr; border-bottom: 1px solid var(--border); margin-bottom: 0; }
@media (min-width: 768px) { .vedette { grid-template-columns: 1.05fr 1fr; } }
.vedette__media { display: block; overflow: hidden; aspect-ratio: 4 / 3; }
@media (min-width: 768px) { .vedette__media { aspect-ratio: auto; height: 100%; min-height: 360px; } }
.vedette__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.6s ease; }
.vedette__media:hover .vedette__img { transform: scale(1.02); }
.vedette__body { padding: clamp(1.75rem,5vw,3.5rem); background: var(--parchemin); display: flex; flex-direction: column; justify-content: center; }
.vedette__meta { display: flex; gap: 0.875rem; align-items: center; margin-bottom: 1.25rem; flex-wrap: wrap; }
.vedette__meta-sep { width: 1rem; height: 1px; background: var(--ecume); display: inline-block; }
.vedette__meta-date { font-size: 0.6875rem; color: var(--pluie); font-family: 'DM Sans', sans-serif; }
.vedette__title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; font-size: clamp(1.5rem,4vw,2.5rem); line-height: 1.12; color: var(--encre); margin-bottom: 1.25rem; }
.vedette__title a { color: inherit; text-decoration: none; }
.vedette__title a:hover { color: var(--mer); }
.vedette__text { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(0.875rem,2vw,1.0625rem); color: var(--pluie); line-height: 1.8; margin-bottom: 0.5rem; }
.vedette__author { font-size: 0.75rem; color: var(--pluie); font-weight: 300; margin-bottom: 1.75rem; }
.vedette__link { font-size: 0.75rem; color: var(--mer); text-decoration: none; font-family: 'DM Sans', sans-serif; letter-spacing: 0.08em; border-bottom: 1px solid var(--ecume); padding-bottom: 2px; align-self: flex-start; }
.vedette__link:hover { border-color: var(--mer); }

/* Liste articles */
.article-list { margin-bottom: clamp(2rem,4vw,3rem); }
.article-list__month { display: flex; align-items: center; gap: 1.25rem; padding: clamp(1.75rem,4vw,3rem) 0 clamp(1rem,2vw,1.5rem); }
.article-list__month span { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.8125rem; color: var(--brume); letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; }
.article-list__month hr { flex: 1; border: none; border-top: 1px solid var(--border); margin: 0; }

.article-row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 1.25rem;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  transition: background 0.15s;
  align-items: center;
}
@media (min-width: 640px) { .article-row { grid-template-columns: 180px 1fr; gap: 2rem; padding: 1.75rem 0.5rem; } }
@media (min-width: 1024px) { .article-row { grid-template-columns: 220px 1fr; padding: 1.75rem 1rem; } }
.article-row:hover { background: rgba(255,255,255,0.5); }
.article-row__img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  overflow: hidden;
}
.article-row__body { min-width: 0; }
.article-row__meta { display: flex; gap: 0.875rem; align-items: center; margin-bottom: 0.5rem; flex-wrap: wrap; }
.article-row__date { font-size: 0.6875rem; color: var(--pluie); font-family: 'DM Sans', sans-serif; }
.article-row__title { font-family: 'Spectral', serif; font-weight: 400; font-style: italic; font-size: clamp(1.0625rem,2.5vw,1.375rem); line-height: 1.3; color: var(--encre); }
.article-row:hover .article-row__title { color: var(--mer); }
.article-row__resume { font-family: 'Spectral', serif; font-weight: 300; font-size: 0.9375rem; color: var(--pluie); line-height: 1.65; margin-top: 0.5rem; }

/* Pagination — style carnet */
.sommaire-pagination { margin: clamp(2rem,5vw,3.5rem) 0 0; padding-top: clamp(1.5rem,3vw,2rem); border-top: 1px solid var(--border); }
.sommaire-pagination__list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 0.25rem;
}
.sommaire-pagination__item { display: inline-flex; }
.sommaire-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 2.25rem; height: 2.25rem; padding: 0 0.625rem;
  font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.95rem;
  color: var(--pluie); text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.15s, border-color 0.15s;
}
.sommaire-pagination .page-numbers:hover { color: var(--encre); border-bottom-color: var(--encre); }
.sommaire-pagination .page-numbers.current { color: var(--encre); border-bottom-color: var(--encre); }
.sommaire-pagination .page-numbers.dots { border-bottom: none; cursor: default; color: var(--ciel); }
.sommaire-pagination .page-numbers.prev,
.sommaire-pagination .page-numbers.next { font-family: 'DM Sans', sans-serif; font-style: normal; font-size: 1.05rem; color: var(--mer); }

/* État vide */
.sommaire-empty { max-width: 600px; margin: 0 auto; padding: clamp(3rem,8vw,6rem) 1.25rem; text-align: center; }
.sommaire-empty p { font-family: 'Spectral', serif; font-style: italic; color: var(--pluie); }

/* ── ARTICLE ── */
.article-hero { position: relative; overflow: hidden; height: clamp(220px,45vw,480px); }
.article-hero img { width: 100%; height: 100%; object-fit: cover; object-position: center 25%; display: block; }
.article-hero__overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 40%, rgba(8,18,26,0.45) 100%); }
.article-hero__caption { position: absolute; bottom: 1rem; right: 1.25rem; }
@media (min-width: 640px) { .article-hero__caption { right: 2rem; } }
.article-hero__caption p { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: rgba(255,255,255,0.5); }
.article-layout { display: grid; grid-template-columns: 1fr; }
@media (min-width: 1024px) { .article-layout { grid-template-columns: 1fr 200px; } }
.article-body { padding: clamp(2rem,6vw,4rem) 1.25rem; }
@media (min-width: 640px)  { .article-body { padding: clamp(2rem,6vw,4rem) 2rem; } }
@media (min-width: 1024px) { .article-body { padding: clamp(2rem,6vw,4rem) 5rem; border-right: 1px solid var(--border); } }
.article-inner { max-width: 680px; }
.breadcrumb { display: flex; gap: 0.5rem; align-items: center; margin-bottom: 2rem; flex-wrap: wrap; list-style: none; }
.breadcrumb a { font-size: 0.6875rem; font-family: 'DM Sans', sans-serif; color: var(--pluie); text-decoration: none; letter-spacing: 0.05em; }
.breadcrumb span { font-size: 0.6875rem; color: var(--pluie); }
.breadcrumb span.active { color: var(--mer); }
.article-meta { display: flex; gap: 1rem; align-items: center; margin-bottom: 1.25rem; flex-wrap: wrap; }
.article-meta__sep { width: 1rem; height: 1px; background: var(--ecume); display: inline-block; }
.article-meta__date, .article-meta__author { font-size: 0.75rem; color: var(--pluie); font-family: 'DM Sans', sans-serif; }
.article-title { font-family: 'Spectral', serif; font-weight: 300; font-style: italic; font-size: clamp(1.75rem,5vw,3.25rem); line-height: 1.1; color: var(--encre); margin-bottom: 1.5rem; letter-spacing: -0.01em; }
.article-chapeau { font-family: 'Spectral', serif; font-weight: 400; font-size: clamp(1rem,2.5vw,1.25rem); line-height: 1.7; color: var(--mer); margin-bottom: 2.5rem; border-left: 2px solid var(--ecume); padding-left: 1.25rem; }
.article-rule { width: 100%; height: 1px; background: var(--border); margin-bottom: 2.5rem; }
.article-p { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(1rem,2vw,1.125rem); line-height: 1.85; color: var(--encre); margin-bottom: 1.75rem; }
.article-body .entry-content p { font-family: 'Spectral', serif; font-weight: 300; font-size: clamp(1rem,2vw,1.125rem); line-height: 1.85; color: var(--encre); margin-bottom: 1.75rem; }
.article-body .entry-content h2 { font-family: 'Spectral', serif; font-weight: 400; font-style: italic; font-size: clamp(1.25rem,3vw,1.75rem); color: var(--encre); margin: 2.5rem 0 1rem; line-height: 1.25; }
.article-body .entry-content h3 { font-family: 'Spectral', serif; font-weight: 400; font-size: clamp(1.0625rem,2.5vw,1.375rem); color: var(--encre); margin: 2rem 0 0.75rem; }
.article-body .entry-content img { width: 100%; height: auto; margin: 2rem 0; }
.article-body .entry-content figcaption { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--pluie); margin-top: 0.625rem; text-align: right; }
.article-figure { margin: 2.5rem -1.25rem; }
@media (min-width: 640px)  { .article-figure { margin: 2.5rem -2rem; } }
@media (min-width: 1024px) { .article-figure { margin: 2.5rem -5rem; } }
.article-figure img { width: 100%; height: clamp(200px,35vw,400px); object-fit: cover; display: block; }
.article-figure figcaption { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--pluie); margin-top: 0.625rem; text-align: right; padding: 0 1.25rem; }
@media (min-width: 640px)  { .article-figure figcaption { padding: 0 2rem; } }
@media (min-width: 1024px) { .article-figure figcaption { padding: 0 5rem; } }
.article-author { display: flex; gap: 1rem; align-items: flex-start; }
.article-author__avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--ecume); flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.article-author__name { font-family: 'Spectral', serif; font-weight: 400; font-size: 0.9375rem; color: var(--encre); margin-bottom: 0.25rem; }
.article-author__bio { font-size: 0.75rem; color: var(--pluie); line-height: 1.65; font-weight: 300; }
.article-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-top: 3rem; }
.article-nav-item { padding: 1.25rem 1rem; background: var(--parchemin); cursor: pointer; }
@media (min-width: 640px) { .article-nav-item { padding: 1.5rem 1.75rem; } }
.article-nav-item p { font-size: 0.5625rem; color: var(--pluie); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 0.375rem; font-family: 'DM Sans', sans-serif; }
.article-nav-item h4 { font-family: 'Spectral', serif; font-weight: 400; font-size: clamp(0.875rem,2vw,1rem); color: var(--encre); line-height: 1.4; }
.article-nav-item--right { text-align: right; }

/* Article sidebar */
.article-sidebar { display: none; }
@media (min-width: 1024px) {
  .article-sidebar { display: block; padding: 2.5rem 1.75rem; background: var(--parchemin); border-left: 1px solid var(--border); position: sticky; top: 0; align-self: start; }
}
.article-sidebar h4 { font-size: 0.5625rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--pluie); margin-bottom: 1rem; font-weight: 400; font-family: 'DM Sans', sans-serif; }
.article-sidebar__toc a { display: block; font-family: 'Spectral', serif; font-weight: 300; font-size: 0.8125rem; color: var(--pluie); text-decoration: none; padding: 0.5rem 0.625rem; border-left: 2px solid transparent; line-height: 1.4; transition: all 0.15s; }
.article-sidebar__toc a.active, .article-sidebar__toc a:hover { color: var(--mer); border-left-color: var(--mer); font-weight: 400; }
.article-sidebar__rule { width: 1.25rem; height: 1px; background: var(--ecume); margin: 1.5rem 0; }
.article-sidebar a.share { display: block; font-size: 0.75rem; color: var(--pluie); text-decoration: none; margin-bottom: 0.5rem; font-weight: 300; }
.article-sidebar .pdf-btn { display: block; border: 1px solid var(--border); padding: 0.625rem 0.875rem; text-align: center; font-size: 0.6875rem; color: var(--pluie); text-decoration: none; letter-spacing: 0.08em; margin-top: 1.5rem; }

/* ── SUGGESTIONS ── */
.suggestions { background: var(--parchemin); padding: clamp(2.5rem,7vw,4.5rem) 1.25rem; }
@media (min-width: 640px)  { .suggestions { padding: clamp(2.5rem,7vw,4.5rem) 2rem; } }
@media (min-width: 1024px) { .suggestions { padding: clamp(2.5rem,7vw,4.5rem) 3.5rem; } }
.suggestions__header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2rem; flex-wrap: wrap; gap: 0.5rem; }
.suggestions__header p { font-family: 'IM Fell English', serif; font-style: italic; font-size: 0.6875rem; color: var(--brume); letter-spacing: 0.14em; text-transform: uppercase; }
.suggestions__header a { font-size: 0.75rem; color: var(--brume); text-decoration: none; font-family: 'DM Sans', sans-serif; letter-spacing: 0.08em; }
.suggestions__grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px)  { .suggestions__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .suggestions__grid { grid-template-columns: 1fr 1fr 1fr; gap: 3px; } }
.suggestion-card { cursor: pointer; }
.suggestion-card a { text-decoration: none; display: block; }
.suggestion-card img { width: 100%; height: clamp(160px,25vw,220px); object-fit: cover; display: block; margin-bottom: 1rem; }
.suggestion-card__cat { font-size: 0.5625rem; color: var(--sage); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 0.375rem; font-family: 'DM Sans', sans-serif; }
.suggestion-card h4 { font-family: 'Spectral', serif; font-weight: 400; font-size: clamp(1rem,2.5vw,1.25rem); line-height: 1.4; color: var(--encre); }

/* ─────────────────────────────────────────────────────────────────────
   SECTION TEMPLATE (page-section.php) — hub pages with child cards
   ───────────────────────────────────────────────────────────────────── */
.hero--section { min-height: 50vh; }
@media (min-width: 768px)  { .hero--section { min-height: 55vh; } }
@media (min-width: 1024px) { .hero--section { min-height: 60vh; } }
.hero__title--section { font-size: clamp(2.25rem, 7vw, 4.25rem); }

.section-cards { background: var(--parchemin); padding: clamp(2.5rem,7vw,4.5rem) 1.25rem clamp(2rem,6vw,3.5rem); }
@media (min-width: 640px)  { .section-cards { padding: clamp(2.5rem,7vw,4.5rem) 2rem clamp(2rem,6vw,3.5rem); } }
@media (min-width: 1024px) { .section-cards { padding: clamp(2.5rem,7vw,4.5rem) 3.5rem clamp(2rem,6vw,3.5rem); } }

.section-cards__head {
  text-align: center;
  margin-bottom: clamp(1.5rem,4vw,2.5rem);
}
.section-cards__title {
  font-family: 'Spectral', serif; font-style: italic; font-weight: 300;
  font-size: clamp(1.625rem,4vw,2.5rem);
  color: var(--encre); line-height: 1.1;
  margin-top: 0.375rem;
}
.section-cards__grid {
  /* inherits .domaines__grid responsive 1→2→3 cols */
}

.section-extras {
  background: white; padding: clamp(2.5rem,7vw,5rem) 1.25rem;
  border-top: 1px solid var(--border);
}
@media (min-width: 640px)  { .section-extras { padding: clamp(2.5rem,7vw,5rem) 2rem; } }
@media (min-width: 1024px) { .section-extras { padding: clamp(2.5rem,7vw,5rem) 3.5rem; } }
.section-extras__inner { max-width: 800px; margin: 0 auto; background: transparent; }
.section-extras__inner > * { background: transparent !important; }

/* ─────────────────────────────────────────────────────────────────────
   GENERIC PAGE (inner pages — carnet de terrain style)
   Overrides Gutenberg block inline colors/fonts to apply our typography
   without forcing editors to re-edit existing content.
   ───────────────────────────────────────────────────────────────────── */
.page-article { background: var(--parchemin); }

/* Slim title bar (used when the page has no wp-block-cover hero) */
.page-titlebar {
  padding: clamp(2rem,6vw,4rem) 1.25rem clamp(1.25rem,3vw,2rem);
  border-bottom: 1px solid var(--border); background: var(--parchemin);
}
@media (min-width: 640px)  { .page-titlebar { padding: clamp(2rem,6vw,4rem) 2rem clamp(1.25rem,3vw,2rem); } }
@media (min-width: 1024px) { .page-titlebar { padding: clamp(2rem,6vw,4rem) 3.5rem clamp(1.25rem,3vw,2rem); } }
.page-title {
  font-family: 'Spectral', serif; font-weight: 300; font-style: italic;
  font-size: clamp(2rem,5vw,3.25rem); color: var(--encre);
  line-height: 1.05; letter-spacing: -0.01em;
}

/* ── Body wrapper ── */
.page-body { background: var(--parchemin); color: var(--encre); }
.page-body > * { font-family: 'Spectral', serif; }

/* Default paragraphs and headings */
.page-body p {
  font-family: 'Spectral', serif !important;
  font-weight: 300; font-size: clamp(1rem,2vw,1.125rem) !important;
  line-height: 1.85 !important; color: var(--encre) !important;
  margin-bottom: 1.5rem; text-shadow: none !important;
}
.page-body em, .page-body i { color: var(--pluie) !important; }
.page-body strong, .page-body b { font-weight: 600; color: var(--encre); }

.page-body h1, .page-body h2, .page-body h3, .page-body h4, .page-body h5, .page-body h6 {
  font-family: 'Spectral', serif !important;
  color: var(--encre) !important;
  text-shadow: none !important;
  letter-spacing: -0.005em !important;
}
.page-body h1 { font-weight: 300 !important; font-style: italic; font-size: clamp(2rem,5vw,3.25rem) !important; line-height: 1.1 !important; margin: 0 0 1.5rem; }
.page-body h2 { font-weight: 300 !important; font-style: italic; font-size: clamp(1.625rem,4vw,2.5rem) !important; line-height: 1.15 !important; margin: 0 0 1.25rem; }
.page-body h3 { font-weight: 400 !important; font-style: italic; font-size: clamp(1.25rem,3vw,1.75rem) !important; line-height: 1.25 !important; margin: 2rem 0 1rem; }
.page-body h4 { font-weight: 400 !important; font-size: clamp(1rem,2vw,1.25rem) !important; margin: 1.5rem 0 0.625rem; }
.page-body h4 strong { font-weight: 400; }

/* Lists */
.page-body ul, .page-body ol {
  font-family: 'Spectral', serif; font-weight: 300;
  font-size: clamp(1rem,2vw,1.125rem) !important; line-height: 1.85 !important;
  color: var(--encre) !important;
  padding-left: 1.5rem; margin-bottom: 1.5rem;
}
.page-body ul li, .page-body ol li { margin-bottom: 0.5rem; }
.page-body ul li::marker { color: var(--brume); }

/* ── Pages écrites en blocs natifs (sans conteneur Bootstrap) ──
   Les pages historiques enveloppent leur texte dans un
   wp-bootstrap-blocks/container, qui porte la largeur et les gouttières.
   Une page composée en blocs WordPress natifs n'a rien de tel : son texte
   s'étalait d'un bord à l'autre de la fenêtre, à 150 caractères par ligne.
   On donne donc une mesure de lecture aux enfants directs de .page-body —
   les pages à conteneur ne sont pas touchées, leurs enfants directs étant
   des conteneurs, pas des paragraphes. */
.page-body > :is(p, h2, h3, h4, ul, ol, blockquote, figure, pre,
                 .wp-block-table, .wp-block-separator,
                 .cmplz-manage-consent-container) {
  max-width: 42rem;
  margin-inline: 1.25rem;
}
/* La colonne s'aligne sur le titre de la page (mêmes marges que
   .page-titlebar), plutôt que d'être centrée sous un titre calé à gauche. */
@media (min-width: 640px) {
  .page-body > :is(p, h2, h3, h4, ul, ol, blockquote, figure, pre,
                   .wp-block-table, .wp-block-separator,
                   .cmplz-manage-consent-container) { margin-inline: 2rem; }
}
@media (min-width: 1024px) {
  .page-body > :is(p, h2, h3, h4, ul, ol, blockquote, figure, pre,
                   .wp-block-table, .wp-block-separator,
                   .cmplz-manage-consent-container) { margin-inline: 3.5rem; }
}

/* Respiration en tête et en pied de ces pages */
.page-body > :is(p, h2, h3, ul, ol):first-child { margin-top: clamp(2rem, 5vw, 3rem); }
.page-body > :is(p, h2, h3, ul, ol):last-child  { margin-bottom: clamp(3rem, 7vw, 4.5rem); }

/* Un filet court au-dessus des titres de section, comme .intro__rule */
.page-body > h2 { margin-top: clamp(2.5rem, 6vw, 3.5rem); position: relative; padding-top: 1.75rem; }
.page-body > h2::before {
  content: ""; position: absolute; top: 0; left: 0;
  width: 2rem; height: 1px; background: var(--brume); opacity: 0.45;
}
.page-body > h2:first-child { padding-top: 0; }
.page-body > h2:first-child::before { display: none; }

/* Listes : la puce dans la marge, le texte aligné sur les paragraphes */
.page-body > :is(ul, ol) { padding-left: 1.25rem; }
.page-body > ul > li { margin-bottom: 0.75rem; }

/* Noms techniques cités dans le texte (cookies, en-têtes) */
.page-body code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.8125em; background: var(--ecume); color: var(--mer);
  padding: 0.125em 0.375em; border-radius: 2px;
}

/* Liens de contenu : discrets mais repérables */
.page-body > :is(p, ul, ol) a {
  color: var(--mer); text-decoration: underline;
  text-underline-offset: 0.2em; text-decoration-thickness: 1px;
  text-decoration-color: var(--ciel);
}
.page-body > :is(p, ul, ol) a:hover { text-decoration-color: var(--mer); }

/* Encart de gestion du consentement inséré dans la page (shortcode Complianz) */
.page-body .cmplz-manage-consent-container {
  border: 1px solid var(--border); background: var(--sable);
  padding: 0.5rem 1.25rem; margin-bottom: 2rem;
}
.page-body .cmplz-manage-consent-container .cmplz-category-title,
.page-body .cmplz-manage-consent-container .cmplz-always-active {
  font-family: 'DM Sans', sans-serif; font-size: 0.8125rem;
}
.page-body .cmplz-manage-consent-container .cmplz-description {
  font-family: 'Spectral', serif; font-size: 0.875rem; line-height: 1.7;
}

/* ── wp-block-cover (page hero) ── */
.page-body .wp-block-cover {
  min-height: clamp(280px,55vw,520px) !important;
  margin: 0 !important; overflow: hidden;
}
.page-body .wp-block-cover__image-background {
  filter: none !important;
}
/* Replace any color overlay with our gradient */
.page-body .wp-block-cover .wp-block-cover__background,
.page-body .wp-block-cover > span.has-background-dim {
  background: linear-gradient(to bottom, rgba(8,18,26,0.30) 0%, rgba(8,18,26,0.08) 35%, rgba(8,18,26,0.55) 80%, rgba(8,18,26,0.80) 100%) !important;
  opacity: 1 !important;
}
.page-body .wp-block-cover .wp-block-cover__inner-container {
  padding: 2rem 1.25rem 3rem;
  display: flex; flex-direction: column; justify-content: flex-end;
  height: 100%; max-width: 100% !important;
}
@media (min-width: 640px)  { .page-body .wp-block-cover .wp-block-cover__inner-container { padding: 2.5rem 2rem 4rem; } }
@media (min-width: 1024px) { .page-body .wp-block-cover .wp-block-cover__inner-container { padding: 3rem 3.5rem 5rem; } }

/* Hero eyebrow (h6) — IM Fell English italic */
.page-body .wp-block-cover h6 {
  font-family: 'IM Fell English', serif !important;
  font-style: italic !important; font-weight: 400 !important;
  font-size: 0.75rem !important;
  letter-spacing: 0.12em !important; text-transform: uppercase !important;
  color: rgba(255,255,255,0.55) !important;
  margin-bottom: 1rem !important; text-shadow: none !important;
}
/* Hero title (h2) — Spectral italic 300 */
.page-body .wp-block-cover h2 {
  font-family: 'Spectral', serif !important;
  font-style: italic !important; font-weight: 300 !important;
  font-size: clamp(2.5rem, 8vw, 4.5rem) !important;
  line-height: 1.05 !important;
  color: white !important;
  margin-bottom: 1rem !important;
  text-shadow: none !important;
  letter-spacing: -0.01em !important;
}
/* Hero paragraph */
.page-body .wp-block-cover p {
  font-family: 'Spectral', serif !important;
  font-weight: 300 !important; font-style: normal;
  font-size: clamp(0.9375rem,2vw,1.125rem) !important;
  line-height: 1.7 !important;
  color: rgba(255,255,255,0.78) !important;
  max-width: 640px;
  text-shadow: none !important;
}

/* ── wp-block-group sections ── */
.page-body .wp-block-group {
  padding: clamp(2rem,6vw,4.5rem) 1.25rem !important;
}
@media (min-width: 640px)  { .page-body .wp-block-group { padding: clamp(2rem,6vw,4.5rem) 2rem !important; } }
@media (min-width: 1024px) { .page-body .wp-block-group { padding: clamp(2rem,6vw,4.5rem) 3.5rem !important; } }
.page-body .wp-block-group .wp-block-group__inner-container { max-width: 1100px; margin: 0 auto; }

/* Override any has-background color set in the editor → parchemin tint */
.page-body .wp-block-group.has-background {
  background-color: white !important;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

/* ── wp-block-columns ── */
.page-body .wp-block-columns {
  gap: clamp(1.5rem,4vw,3rem) !important;
  align-items: start;
}
.page-body .wp-block-column { flex-basis: auto !important; }
@media (max-width: 781px) {
  .page-body .wp-block-columns { flex-direction: column !important; }
}

/* Images — strip border-radius (carnet aesthetic) */
.page-body img,
.page-body figure img,
.page-body .wp-block-image img {
  border-radius: 0 !important;
  display: block;
}
.page-body figure { margin: 0; }
.page-body .wp-block-image figcaption {
  font-family: 'IM Fell English', serif; font-style: italic;
  font-size: 0.75rem; color: var(--pluie);
  text-align: right; margin-top: 0.5rem;
}

/* Full-width image columns at bottom of pages */
.page-body .alignfull .wp-block-image img { width: 100%; height: clamp(220px,30vw,360px); object-fit: cover; }

/* Reproductions de pages d'ouvrage : la règle ci-dessus recadre au centre, ce
   qui ampute les titres. Ici on montre la planche entière. */
.page-body .lpbs-planches .wp-block-image img { height: auto; object-fit: contain; }

/* Strip corporate colors from inline styles — neutralize blues, greens, dark colors */
.page-body [style*="color:#005177"],
.page-body [style*="color: #005177"],
.page-body [style*="color:#005952"],
.page-body [style*="color: #005952"],
.page-body [style*="color:#1a3a4a"],
.page-body [style*="color: #1a3a4a"] {
  color: var(--encre) !important;
}

/* Strip corporate background colors */
.page-body [style*="background-color:#f4f7f4"],
.page-body [style*="background-color: #f4f7f4"] {
  background-color: white !important;
}

/* ───────────────────────────────────────────────
   Pattern partenaires / sections éditoriales structurées
   (utilisé via .lpbs-* classes sur les blocs Gutenberg)
   ─────────────────────────────────────────────── */
.page-body .lpbs-chapeau {
  font-family: 'Spectral', serif !important;
  font-weight: 300 !important;
  font-style: italic !important;
  font-size: clamp(1.0625rem, 2.5vw, 1.375rem) !important;
  line-height: 1.7 !important;
  color: var(--encre) !important;
  max-width: 740px;
  margin: clamp(1.5rem,4vw,2.5rem) auto clamp(2rem,5vw,3.5rem) !important;
}
.page-body .lpbs-chapeau em { color: var(--mer) !important; font-style: italic !important; }

.page-body .lpbs-partners-section {
  max-width: 1000px;
  margin: 0 auto clamp(2.5rem,6vw,4rem) !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}
.page-body .lpbs-partners-section .wp-block-group__inner-container { padding: 0 !important; }

.page-body .lpbs-section-eyebrow {
  font-family: 'IM Fell English', serif !important;
  font-style: italic !important;
  font-weight: 400 !important;
  font-size: 0.75rem !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase;
  color: var(--brume) !important;
  margin: 0 0 0.4rem !important;
  line-height: 1.4 !important;
}
.page-body .lpbs-section-title {
  font-family: 'Spectral', serif !important;
  font-style: italic !important;
  font-weight: 300 !important;
  font-size: clamp(1.625rem, 4vw, 2.25rem) !important;
  line-height: 1.15 !important;
  color: var(--encre) !important;
  margin: 0 0 clamp(1.5rem,3vw,2rem) !important;
  padding-bottom: clamp(1rem,2vw,1.25rem);
  border-bottom: 1px solid var(--border);
}

.page-body .lpbs-partners-grid { gap: clamp(1.25rem, 3vw, 2.25rem) !important; align-items: stretch !important; }
@media (max-width: 781px) {
  .page-body .lpbs-partners-grid.wp-block-columns { flex-direction: row !important; flex-wrap: wrap !important; }
  .page-body .lpbs-partners-grid .wp-block-column { flex-basis: calc(50% - 0.625rem) !important; }
}
@media (max-width: 520px) {
  .page-body .lpbs-partners-grid .wp-block-column { flex-basis: 100% !important; }
}
.page-body .lpbs-partners-grid .wp-block-column {
  padding: clamp(1.25rem,2.5vw,1.75rem) !important;
  background: white;
  border: 1px solid var(--border);
  transition: border-color 0.2s, transform 0.2s;
}
.page-body .lpbs-partners-grid .wp-block-column:hover {
  border-color: var(--ciel);
  transform: translateY(-2px);
}

.page-body .lpbs-partner__name {
  font-family: 'Spectral', serif !important;
  font-style: italic !important;
  font-weight: 400 !important;
  font-size: 1.1875rem !important;
  line-height: 1.25 !important;
  color: var(--encre) !important;
  margin: 0 0 0.5rem !important;
}
.page-body .lpbs-partner__role {
  font-family: 'Spectral', serif !important;
  font-weight: 300 !important;
  font-style: normal !important;
  font-size: 0.9375rem !important;
  line-height: 1.6 !important;
  color: var(--pluie) !important;
  margin: 0 !important;
}
.page-body .lpbs-partner__role a { color: var(--mer) !important; text-decoration: underline; text-decoration-color: var(--ecume); }
.page-body .lpbs-partner__role a:hover { text-decoration-color: var(--mer); }

/* ── Variante « colloques » : cards plus généreuses avec couverture SVG ── */
.page-body .lpbs-colloques-grid {
  gap: clamp(1.5rem, 3.5vw, 2.75rem) !important;
}
.page-body .lpbs-colloques-grid .wp-block-column {
  padding: 0 !important;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.page-body .lpbs-colloques-grid .wp-block-column::before {
  content: '';
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background-color: var(--ecume);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  border-bottom: 1px solid var(--border);
  transition: filter 0.3s;
}
.page-body .lpbs-colloques-grid .wp-block-column:hover::before {
  filter: brightness(1.04);
}
.page-body .lpbs-colloques-grid .has-cover-baie::before      { background-image: url('../images/colloques/baie-de-somme.svg'); }
.page-body .lpbs-colloques-grid .has-cover-falaises::before  { background-image: url('../images/colloques/falaises.svg'); }
.page-body .lpbs-colloques-grid .has-cover-bas-champs::before{ background-image: url('../images/colloques/bas-champs.svg'); }

.page-body .lpbs-colloques-grid .wp-block-column > p {
  padding-left:  clamp(1.25rem,2.5vw,1.75rem);
  padding-right: clamp(1.25rem,2.5vw,1.75rem);
  margin: 0 !important;
}
.page-body .lpbs-colloques-grid .wp-block-column > p.lpbs-section-eyebrow {
  padding-top:    clamp(1.25rem,2.5vw,1.75rem);
  padding-bottom: 0.5rem;
}
.page-body .lpbs-colloques-grid .wp-block-column > p.lpbs-partner__name {
  padding-bottom: 0.75rem;
  font-size: 1.3125rem !important;
}
.page-body .lpbs-colloques-grid .wp-block-column > p.lpbs-partner__role {
  padding-bottom: clamp(1.5rem,3vw,2rem);
  flex: 1;
}

.page-body .lpbs-partners-photo {
  margin: clamp(2.5rem,6vw,4rem) calc(50% - 50vw) !important;
  max-width: 100vw !important;
}
.page-body .lpbs-partners-photo img {
  width: 100% !important;
  height: clamp(280px, 45vw, 520px) !important;
  object-fit: cover !important;
  border-radius: 0 !important;
}
.page-body .lpbs-partners-photo figcaption {
  text-align: right !important;
  max-width: 1000px;
  margin: 0.5rem auto 0 !important;
  padding: 0 1.25rem;
  font-family: 'IM Fell English', serif !important;
  font-style: italic !important;
  font-size: 0.75rem !important;
  color: var(--pluie) !important;
}

.page-body .lpbs-partners-cta {
  max-width: 760px;
  margin: clamp(3rem,7vw,5rem) auto !important;
  padding: clamp(2rem,5vw,3.5rem) clamp(1.5rem,4vw,3rem) !important;
  background: var(--parchemin) !important;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  text-align: center;
}
.page-body .lpbs-partners-cta .lpbs-section-title { border-bottom: none !important; padding-bottom: 0 !important; }
.page-body .lpbs-partners-cta p {
  max-width: 540px;
  margin: 0 auto 1.5rem !important;
}
.page-body .lpbs-partners-cta .wp-block-buttons { justify-content: center !important; }
.page-body .lpbs-partners-cta .wp-block-button__link {
  background: var(--encre) !important;
  color: white !important;
  font-family: 'DM Sans', sans-serif !important;
  font-size: 0.875rem !important;
  font-weight: 400 !important;
  letter-spacing: 0.04em !important;
  padding: 0.875rem 1.75rem !important;
  border-radius: 0 !important;
  transition: background 0.2s;
}
.page-body .lpbs-partners-cta .wp-block-button__link:hover { background: var(--mer) !important; }
.page-body .lpbs-partners-cta .wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent !important;
  color: var(--encre) !important;
  border: 1px solid var(--encre) !important;
}
.page-body .lpbs-partners-cta .wp-block-button.is-style-outline .wp-block-button__link:hover {
  background: var(--encre) !important;
  color: white !important;
}
.page-body .lpbs-partners-cta .wp-block-buttons { gap: 0.75rem !important; flex-wrap: wrap; }

/* Liste de publications PDF */
.page-body .lpbs-publications {
  max-width: 1100px;
  margin: clamp(2rem,5vw,3rem) auto !important;
  padding: 0 !important;
}
.page-body .lpbs-publications__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.25rem, 3vw, 2rem);
}
@media (min-width: 600px)  { .page-body .lpbs-publications__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px)  { .page-body .lpbs-publications__grid { grid-template-columns: 1fr 1fr 1fr; } }
@media (min-width: 1200px) { .page-body .lpbs-publications__grid { grid-template-columns: 1fr 1fr 1fr 1fr; } }

.page-body .lpbs-publication {
  display: flex; flex-direction: column;
  background: white;
  border: 1px solid var(--border);
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.page-body .lpbs-publication:hover {
  border-color: var(--ciel);
  transform: translateY(-3px);
  box-shadow: 0 6px 18px rgba(8,18,26,0.06);
}
.page-body .lpbs-publication__cover {
  position: relative;
  display: block;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: var(--ecume);
}
.page-body .lpbs-publication__cover img {
  width: 100% !important; height: 100% !important; object-fit: cover !important;
  display: block; border-radius: 0 !important;
  transition: transform 0.5s ease;
}
.page-body .lpbs-publication:hover .lpbs-publication__cover img { transform: scale(1.03); }
.page-body .lpbs-publication__pdf-badge {
  position: absolute; top: 0.625rem; right: 0.625rem;
  font-family: 'DM Sans', sans-serif !important;
  font-size: 0.625rem !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase;
  background: rgba(11, 22, 32, 0.85);
  color: white !important;
  padding: 0.3rem 0.55rem !important;
  border-radius: 0;
}
.page-body .lpbs-publication__body {
  padding: clamp(1rem, 2vw, 1.25rem) !important;
  display: flex; flex-direction: column; gap: 0.4rem;
  flex: 1;
}
.page-body .lpbs-publication__cat {
  font-family: 'IM Fell English', serif !important;
  font-style: italic !important;
  font-size: 0.6875rem !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: var(--brume) !important;
  margin: 0 !important;
}
.page-body .lpbs-publication__title {
  font-family: 'Spectral', serif !important;
  font-style: italic !important;
  font-weight: 400 !important;
  font-size: clamp(1rem, 2vw, 1.1875rem) !important;
  line-height: 1.25 !important;
  color: var(--encre) !important;
  margin: 0.1rem 0 0 !important;
}
.page-body .lpbs-publication__excerpt {
  font-family: 'Spectral', serif !important;
  font-weight: 300 !important;
  font-size: 0.875rem !important;
  line-height: 1.55 !important;
  color: var(--pluie) !important;
  margin: 0 !important;
}
.page-body .lpbs-publication__link {
  font-family: 'DM Sans', sans-serif !important;
  font-size: 0.75rem !important;
  letter-spacing: 0.06em !important;
  color: var(--mer) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--ecume) !important;
  padding-bottom: 2px !important;
  align-self: flex-start;
  margin-top: auto !important;
}
.page-body .lpbs-publication__link:hover { color: var(--encre) !important; border-color: var(--encre) !important; }

/* « Voir tous les … → » sous la grille de publications */
.page-body .lpbs-publications__see-more {
  margin: clamp(1.5rem,3vw,2.25rem) 0 0 !important;
  text-align: center !important;
}
.page-body .lpbs-publications__see-more-link {
  display: inline-block;
  font-family: 'IM Fell English', serif !important;
  font-style: italic !important;
  font-size: 0.875rem !important;
  letter-spacing: 0.06em !important;
  color: var(--mer) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--ciel) !important;
  padding-bottom: 3px !important;
  transition: color 0.2s, border-color 0.2s;
}
.page-body .lpbs-publications__see-more-link:hover {
  color: var(--encre) !important;
  border-color: var(--encre) !important;
}

/* Encart fait — petite citation chiffrée encadrée */
.page-body .lpbs-fact-box {
  max-width: 760px;
  margin: clamp(2rem,5vw,3rem) auto !important;
  padding: clamp(1.5rem,4vw,2.5rem) clamp(1.5rem,4vw,2.5rem) clamp(1.5rem,4vw,2.5rem) clamp(2rem,5vw,3rem) !important;
  background: white !important;
  border-left: 3px solid var(--mer) !important;
  border-radius: 0 !important;
}
.page-body .lpbs-fact-box .wp-block-group__inner-container { padding: 0 !important; }
.page-body .lpbs-fact-text {
  font-family: 'Spectral', serif !important;
  font-weight: 300 !important;
  font-style: italic !important;
  font-size: clamp(1.0625rem, 2.2vw, 1.25rem) !important;
  line-height: 1.6 !important;
  color: var(--encre) !important;
  margin: 0.25rem 0 0 !important;
}
.page-body .lpbs-fact-text strong { font-weight: 500 !important; color: var(--mer) !important; }

/* ───────────────────────────────────────────────
   Sommaire de rubrique — overrides .page-body
   Le bloc est rendu dans the_content() donc .page-body
   force color/font sur h3/p avec !important. On rétablit
   le contraste blanc des cartes et la typo des items.
   ─────────────────────────────────────────────── */
.page-body .domaine-card__title { color: #fff !important; font-style: italic !important; }
.page-body .domaine-card__text  { color: rgba(255,255,255,0.58) !important; font-size: 0.8125rem !important; line-height: 1.75 !important; margin-bottom: 0.875rem !important; }
.page-body .domaine-card__cat,
.page-body .domaine-card__link  { color: rgba(255,255,255,0.45) !important; font-family: 'DM Sans', sans-serif !important; }
.page-body .actu-col__label     { color: var(--brume) !important; font-family: 'IM Fell English', serif !important; font-style: italic !important; }
.page-body .actu-item__cat      { color: var(--sage) !important; font-family: 'DM Sans', sans-serif !important; font-size: 0.5625rem !important; line-height: 1.4 !important; margin-bottom: 0.5rem !important; }
.page-body .actu-item__title    { font-style: normal !important; font-weight: 400 !important; font-size: clamp(1.0625rem,2.5vw,1.25rem) !important; margin: 0 0 0.5rem !important; }
.page-body .actu-item__text     { color: var(--pluie) !important; font-size: 0.875rem !important; line-height: 1.75 !important; margin-bottom: 0 !important; }

/* La bande .actus / .domaines doit pouvoir aller pleine largeur même si .page-body a un padding */
.page-body .domaines,
.page-body .actus { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); padding-left: 1.25rem; padding-right: 1.25rem; }
@media (min-width: 640px)  { .page-body .domaines, .page-body .actus { padding-left: 2rem;   padding-right: 2rem; } }
@media (min-width: 1024px) { .page-body .domaines, .page-body .actus { padding-left: 3.5rem; padding-right: 3.5rem; } }

/* ───────────────────────────────────────────────
   Sommaire de rubrique — variantes .actus (bande blanche)
   ─────────────────────────────────────────────── */
/* 2 colonnes : sommaire détaillé (large) + actualités (étroit) */
@media (min-width: 1024px) {
  .actus.actus--cols-2 .actus__grid { grid-template-columns: 2fr 1px 1fr; gap: 0; }
}
/* 1 colonne : uniquement le sommaire détaillé, max-width centré */
.actus.actus--cols-1 .actus__grid { grid-template-columns: 1fr; max-width: 800px; margin: 0 auto; }
@media (min-width: 1024px) { .actus.actus--cols-1 .actus__grid { grid-template-columns: 1fr; gap: 0; } }

/* Espacement vertical des items du sommaire détaillé */
.actu-col--sommaire .actu-item--thumb { padding-bottom: 1.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--border); }
.actu-col--sommaire .actu-item--thumb:last-child { padding-bottom: 0; margin-bottom: 0; border-bottom: none; }
.actu-col--sommaire .actu-item__thumb { width: 120px; height: 90px; }
@media (min-width: 640px) { .actu-col--sommaire .actu-item__thumb { width: 140px; height: 105px; } }
.actu-col--sommaire .actu-item__title { font-size: clamp(1.0625rem, 2vw, 1.25rem); }

/* ══════════════════════════════════════════════════════════════════
   Registre — partenaires et conseil d'administration

   Une entrée par ligne. À gauche une vignette (logo ou portrait), à
   droite deux voix distinctes : ce que la structure dit d'elle-même,
   puis ce que LPBS fait avec elle. La séparation typographique entre
   ces deux voix est le principe de la page.

   Le thème impose plus haut un padding généreux et une largeur de
   contenu de 680px à TOUT .wp-block-group. Le registre gère sa propre
   mise en page : on remet ces deux réglages à zéro sur ses descendants,
   puis on applique les nôtres — d'où des sélecteurs préfixés
   .lpbs-registre, nécessaires pour l'emporter en spécificité.
   ══════════════════════════════════════════════════════════════════ */

.page-body .lpbs-registre {
  max-width: 1000px;
  margin: 0 auto clamp(2.5rem,6vw,4rem) !important;
  padding: 0 !important;
  border-top: 1px solid var(--border);
}
.page-body .lpbs-registre .wp-block-group,
.page-body .lpbs-registre p,
.page-body .lpbs-registre figure {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 0 !important;
}

.page-body .lpbs-registre .lpbs-registre__item {
  display: flex;
  align-items: flex-start;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  width: 100%;
  padding: clamp(1.75rem, 3.5vw, 2.5rem) 0 !important;
  border-bottom: 1px solid var(--border);
}
.page-body .lpbs-registre .lpbs-registre__vignette,
.page-body .lpbs-registre .lpbs-registre__reserve {
  flex: 0 0 190px;
  width: 190px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  padding: 0.75rem !important;
}
.page-body .lpbs-registre .lpbs-registre__corps {
  flex: 1 1 auto;
  min-width: 0;              /* sans quoi un mot long fige la colonne */
}
@media (max-width: 720px) {
  .page-body .lpbs-registre .lpbs-registre__item { flex-direction: column; gap: 1rem; }
  .page-body .lpbs-registre .lpbs-registre__vignette,
  .page-body .lpbs-registre .lpbs-registre__reserve { flex-basis: auto; width: 100%; max-width: 240px; }
}

/* Vignette — fond blanc : plusieurs logos fournis sont opaques et
   afficheraient un rectangle blanc sur toute autre couleur. */
.page-body .lpbs-registre .lpbs-registre__vignette {
  background: white;
  border: 1px solid var(--border);
}
.page-body .lpbs-registre .lpbs-registre__vignette img {
  width: auto !important;
  max-width: 100%;
  max-height: 96px;
  height: auto !important;
  object-fit: contain !important;
  margin: 0 !important;
}

/* Réserve — en attente d'un logo ou d'un portrait. Le trait discontinu
   dit « à venir » sans imiter une image cassée. */
.page-body .lpbs-registre .lpbs-registre__reserve {
  background: var(--parchemin);
  border: 1px dashed var(--ciel);
}
.page-body .lpbs-registre .lpbs-registre__reserve p {
  font-family: 'Spectral', serif !important;
  font-style: italic;
  font-size: 1.375rem !important;
  letter-spacing: 0.08em;
  color: var(--brume) !important;
  margin: 0 !important;
}

.page-body .lpbs-registre .lpbs-registre__nom {
  font-family: 'Spectral', serif !important;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.1875rem, 2.2vw, 1.4375rem) !important;
  line-height: 1.25 !important;
  color: var(--encre) !important;
  margin: 0 0 0.25rem !important;
}
.page-body .lpbs-registre .lpbs-registre__lien {
  display: inline-block;
  font-family: 'Spectral', serif;
  font-size: 0.8125rem;
  letter-spacing: 0.02em;
  color: var(--mer);
  text-decoration: underline;
  text-decoration-color: var(--ecume);
  text-underline-offset: 3px;
  overflow-wrap: anywhere;
}
.page-body .lpbs-registre .lpbs-registre__lien:hover { text-decoration-color: var(--mer); }
.page-body .lpbs-registre .lpbs-registre__corps > p:has(.lpbs-registre__lien) { margin: 0 0 0.875rem !important; }

/* Première voix : la structure dans ses propres mots. */
.page-body .lpbs-registre .lpbs-registre__texte {
  font-weight: 300;
  font-size: 0.9375rem !important;
  line-height: 1.65 !important;
  color: var(--pluie) !important;
  margin: 0 !important;
}

/* Seconde voix : ce que LPBS fait avec cette structure. Le filet vert
   marais la détache sans la mettre en avant plus que de raison. */
.page-body .lpbs-registre .lpbs-registre__avec {
  margin: 1.125rem 0 0 !important;
  padding: 0 0 0 1.125rem !important;
  border-left: 2px solid var(--sage);
}
.page-body .lpbs-registre .lpbs-registre__label {
  display: block;
  font-family: 'IM Fell English', serif !important;
  font-style: italic;
  font-size: 0.75rem !important;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--marais) !important;
  margin: 0 0 0.375rem !important;
}
.page-body .lpbs-registre .lpbs-registre__avec p:not(.lpbs-registre__label) {
  font-weight: 300;
  font-size: 0.9375rem !important;
  line-height: 1.65 !important;
  color: var(--encre) !important;
  margin: 0 !important;
}

/* Variante conseil d'administration : portrait plus haut, et le rôle
   tenu dans l'association passe avant le nom. */
.page-body .lpbs-registre--ca .lpbs-registre__vignette,
.page-body .lpbs-registre--ca .lpbs-registre__reserve {
  flex: 0 0 155px;
  width: 155px;
  min-height: 195px;
  padding: 0 !important;
}
.page-body .lpbs-registre--ca .lpbs-registre__vignette img {
  width: 100% !important;
  height: 195px !important;
  max-height: none;
  object-fit: cover !important;
}
.page-body .lpbs-registre--ca .lpbs-registre__role {
  font-family: 'IM Fell English', serif !important;
  font-style: italic;
  font-size: 0.8125rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--marais) !important;
  margin: 0 0 0.25rem !important;
}
.page-body .lpbs-registre--ca .lpbs-registre__expertise {
  font-weight: 300;
  font-style: italic;
  font-size: 0.875rem !important;
  line-height: 1.6 !important;
  color: var(--pluie) !important;
  margin: 0.625rem 0 0 !important;
}

/* Listes reprises des cellules du document source. */
.page-body .lpbs-registre .lpbs-registre__corps ul {
  margin: 0.625rem 0 0 !important;
  padding-left: 1.125rem !important;
  list-style: disc;
}
.page-body .lpbs-registre .lpbs-registre__corps li {
  font-family: 'Spectral', serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--pluie);
  margin: 0 0 0.25rem;
}
.page-body .lpbs-registre .lpbs-registre__avec li { color: var(--encre); }
.page-body .lpbs-registre .lpbs-registre__texte + .lpbs-registre__texte { margin-top: 0.625rem !important; }
.page-body .lpbs-registre .lpbs-registre__avec p + p { margin-top: 0.625rem !important; }

/* Titres de section alignés sur la largeur du registre. */
.page-body .lpbs-registre-head {
  max-width: 1000px;
  margin: clamp(2rem,5vw,3.25rem) auto 0 !important;
  padding: 0 !important;
}
.page-body .lpbs-registre-head + .lpbs-registre { margin-top: 0.75rem !important; }

/* Logos sur les fiches partenaires du projet Eau en Somme. */
.page-body .lpbs-partners-grid .lpbs-partner__logo {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  height: 54px;
  margin: 0 0 0.875rem !important;
}
.page-body .lpbs-partners-grid .lpbs-partner__logo img {
  /* La hauteur prime : sans ça un logo large est bridé par sa largeur et
     n'occupe qu'une fraction de la bande, ce qui le fait paraître décalé
     à côté d'un logo haut qui la remplit. */
  height: 100% !important;
  width: auto !important;
  max-width: 100%;
  object-fit: contain !important;
  object-position: left center;
  margin: 0 !important;
}
/* Les fiches sans logo réservent la même hauteur, pour que les noms
   s'alignent d'une carte à l'autre sur une même rangée. */
.page-body .lpbs-partners-grid .wp-block-column:not(:has(.lpbs-partner__logo)) .lpbs-partner__name {
  margin-top: calc(54px + 0.875rem) !important;
}

/* ══════════════════════════════════════════════════════════════════
   Annales — les rapports moraux, année par année

   L'année tient la marge de gauche : ici la chronologie est une vraie
   séquence, le repère porte donc une information et n'est pas un décor.
   Le chapeau — le passage que Jean-Marc a surligné — reste visible ;
   la suite se replie dans un <details> natif.
   ══════════════════════════════════════════════════════════════════ */

.page-body .lpbs-annales {
  max-width: 1000px;
  margin: 0 auto clamp(2.5rem,6vw,4rem) !important;
  padding: 0 !important;
}
.page-body .lpbs-annales .wp-block-group,
.page-body .lpbs-annales p,
.page-body .lpbs-annales h2 {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 0 !important;
}

.page-body .lpbs-annales .lpbs-annale {
  display: flex;
  align-items: flex-start;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  padding: clamp(2rem, 4vw, 3rem) 0 !important;
  border-top: 1px solid var(--border);
}
.page-body .lpbs-annales .lpbs-annale__an {
  flex: 0 0 130px;
  width: 130px;
}
.page-body .lpbs-annales .lpbs-annale__an p {
  font-family: 'Spectral', serif !important;
  font-style: italic;
  font-weight: 300;
  font-size: clamp(2rem, 4.5vw, 2.875rem) !important;
  line-height: 1 !important;
  color: var(--ciel) !important;
  margin: 0 !important;
}
.page-body .lpbs-annales .lpbs-annale__corps {
  flex: 1 1 auto;
  min-width: 0;
}
@media (max-width: 720px) {
  .page-body .lpbs-annales .lpbs-annale { flex-direction: column; gap: 0.5rem; }
  .page-body .lpbs-annales .lpbs-annale__an { flex-basis: auto; width: auto; }
}

.page-body .lpbs-annales .lpbs-annale__titre {
  font-size: clamp(1.375rem, 2.8vw, 1.875rem) !important;
  line-height: 1.2 !important;
  margin: 0 0 0.875rem !important;
}
.page-body .lpbs-annales .lpbs-annale__chapo {
  font-size: 1rem !important;
  line-height: 1.75 !important;
  color: var(--encre) !important;
  margin: 0 0 0.75rem !important;
}

/* Le repli : une invitation à lire, pas un bouton. */
.page-body .lpbs-annales .lpbs-annale__suite {
  margin-top: 1rem !important;
  padding: 0 !important;
  border-left: 2px solid var(--mousse);
}
.page-body .lpbs-annales .lpbs-annale__suite > summary {
  cursor: pointer;
  list-style: none;
  padding: 0 0 0 1.125rem;
  font-family: 'IM Fell English', serif;
  font-style: italic;
  font-size: 0.8125rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--marais);
}
.page-body .lpbs-annales .lpbs-annale__suite > summary::-webkit-details-marker { display: none; }
.page-body .lpbs-annales .lpbs-annale__suite > summary::after {
  content: ' ↓';
  font-style: normal;
}
.page-body .lpbs-annales .lpbs-annale__suite[open] > summary::after { content: ' ↑'; }
.page-body .lpbs-annales .lpbs-annale__suite > summary:hover { color: var(--mer); }
.page-body .lpbs-annales .lpbs-annale__suite > summary:focus-visible {
  outline: 2px solid var(--mer);
  outline-offset: 3px;
}
.page-body .lpbs-annales .lpbs-annale__suite p {
  font-weight: 300;
  font-size: 0.9375rem !important;
  line-height: 1.75 !important;
  color: var(--pluie) !important;
  margin: 0.875rem 0 0 !important;
  padding-left: 1.125rem !important;
}

/* ── Colonnes de cartes : largeurs égales ──────────────────────────────
   WordPress ne pose que `flex-grow: 1` sur .wp-block-column, sans base
   fixe : la largeur d'une colonne dépend alors de la longueur de son
   texte. D'où des cartes inégales et, dans la grille colloques, des
   couvertures en aspect-ratio de hauteurs différentes. */
.page-body .lpbs-partners-grid > .wp-block-column,
.page-body .lpbs-colloques-grid > .wp-block-column {
  flex: 1 1 0 !important;
  min-width: 0;
}
@media (max-width: 781px) {
  .page-body .lpbs-partners-grid > .wp-block-column,
  .page-body .lpbs-colloques-grid > .wp-block-column {
    flex: 1 1 calc(50% - 0.625rem) !important;
  }
}
@media (max-width: 520px) {
  .page-body .lpbs-partners-grid > .wp-block-column,
  .page-body .lpbs-colloques-grid > .wp-block-column {
    flex: 1 1 100% !important;
  }
}

/* Registre à une seule entrée (portrait d'auteur) : pas de filet haut. */
.page-body .lpbs-registre--solo { border-top: none; }
.page-body .lpbs-registre--solo .lpbs-registre__item { border-bottom: none; padding-top: 0 !important; }

/* Colonne de complément (rangée incomplète) : occupe la place sans se voir. */
.page-body .lpbs-partners-grid > .wp-block-column:empty,
.page-body .lpbs-colloques-grid > .wp-block-column:empty {
  background: none !important;
  border: none !important;
  padding: 0 !important;
}

/* ══════════════════════════════════════════════════════════════════
   Bouton « remonter » — la marée

   Le niveau d'eau suit l'avancement de lecture : sur les pages longues
   (29 partenaires, 11 rapports moraux) le repère porte une information,
   il n'est pas un ornement. Angle vif et filet d'un pixel, comme le
   reste du thème.
   ══════════════════════════════════════════════════════════════════ */

.lpbs-remonter {
  position: fixed;
  right: clamp(1rem, 3vw, 2.25rem);
  bottom: clamp(1rem, 3vw, 2.25rem);
  z-index: 90;

  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  padding: 0;

  /* Blanc sur parchemin, comme les vignettes de logos : le bouton se lit
     comme un objet posé. Le filet est en --ciel et non en --border, sinon
     le contour disparaît et la forme finit par être dessinée par l'eau. */
  background: white;
  border: 1px solid var(--ciel);
  border-radius: 0;              /* carnet : jamais d'angle arrondi */
  cursor: pointer;
  overflow: hidden;

  opacity: 0;
  visibility: hidden;
  transform: translateY(0.5rem);
  transition: opacity 0.35s ease, transform 0.35s ease,
              visibility 0s linear 0.35s, border-color 0.2s ease;
}
.lpbs-remonter.est-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 0.35s ease, transform 0.35s ease,
              visibility 0s, border-color 0.2s ease;
}

/* Le niveau. La ligne claire en tête figure la laisse de mer. */
.lpbs-remonter__eau {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 0;
  background: var(--ciel);
  border-top: 1px solid var(--mer);
  opacity: 0.55;
  transition: height 0.15s linear;
  pointer-events: none;
}

.lpbs-remonter__fleche {
  position: relative;
  font-family: 'Spectral', serif;
  font-size: 1.125rem;
  line-height: 1;
  color: var(--encre);
  transition: transform 0.2s ease;
}

.lpbs-remonter:hover {
  border-color: var(--mer);
}
.lpbs-remonter:hover .lpbs-remonter__eau { opacity: 0.75; }
.lpbs-remonter:hover .lpbs-remonter__fleche { transform: translateY(-2px); }

.lpbs-remonter:focus-visible {
  outline: 2px solid var(--mer);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .lpbs-remonter,
  .lpbs-remonter__eau,
  .lpbs-remonter__fleche { transition: none; }
}

/* Impression : rien à remonter sur du papier. */
@media print { .lpbs-remonter { display: none; } }

/* ─────────────────────────────────────────────────────────────────────
   BANNIÈRE DE CONSENTEMENT (Complianz)
   Les couleurs viennent des réglages de l'extension (parchemin/encre/mer) ;
   ici on ne fait qu'accorder la typographie au reste du site et retirer
   le lien en double.
   ───────────────────────────────────────────────────────────────────── */
/* Complianz génère son CSS avec sa palette par défaut (bleu #3B29FF, fond
   blanc, angles arrondis). On réécrit ses variables ici : la feuille du thème
   est chargée après la sienne, et l'override survit à ses mises à jour. */
/* Double :root — la feuille de Complianz est chargée après celle du thème et
   pose les mêmes variables sur :root ; on gagne par la spécificité, pas par
   l'ordre. */
:root:root {
  --cmplz_banner_background_color:        #f5f1ea; /* parchemin */
  --cmplz_banner_border_color:            #d6e0e3;
  --cmplz_banner_border_width:            1px 1px 1px 1px;
  --cmplz_banner_border_radius:           0 0 0 0;
  --cmplz_text_color:                     #08191e; /* encre */
  --cmplz_hyperlink_color:                #004b5c; /* mer */
  --cmplz_button_accept_background_color: #004b5c;
  --cmplz_button_accept_border_color:     #004b5c;
  --cmplz_button_accept_text_color:       #f5f1ea;
  --cmplz_button_deny_background_color:   transparent;
  --cmplz_button_deny_border_color:       #08191e;
  --cmplz_button_deny_text_color:         #08191e;
  --cmplz_button_border_radius:           0 0 0 0;
  --cmplz_title_font_size:                1.25rem;
  --cmplz_text_font_size:                 0.8125rem;
  --cmplz_link_font_size:                 0.75rem;
  --cmplz_button_font_size:               0.6875rem;
}

.cmplz-cookiebanner,
.cmplz-cookiebanner .cmplz-btn,
#cmplz-manage-consent .cmplz-manage-consent {
  font-family: 'DM Sans', sans-serif;
}

/* Ombre portée : la même retenue que le reste du site. */
.cmplz-cookiebanner,
.cmplz-cookiebanner.cmplz-show { box-shadow: 0 8px 40px rgba(8,25,30,0.16); }

/* ── Vidéo en attente de consentement ──
   L'extension pose une photo grise générique et un bouton noir translucide.
   On lui substitue le vocabulaire du site : aplat d'écume, filet, bouton
   contour comme les CTA du thème. Le !important est nécessaire : l'image de
   remplacement est appliquée en style inline par le script de l'extension. */
.cmplz-blocked-content-container,
.cmplz-placeholder-element {
  background-image: none !important;
  background-color: var(--ecume) !important;
  border: 1px solid var(--border);
}
.cmplz-blocked-content-container .cmplz-blocked-content-notice {
  background: transparent;
  color: var(--encre);
  font-family: 'DM Sans', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  line-height: 1.6;
  text-transform: none;
  border: 1px solid var(--encre);
  border-radius: 0;
  padding: 0.8125rem 1.5rem;
  max-width: 22rem;
}
.cmplz-blocked-content-container .cmplz-blocked-content-notice:hover {
  background: rgba(8,25,30,0.06);
}

/* Pas de croix de fermeture : elle ferme sans choisir, alors que « Accepter »
   et « Refuser » sont côte à côte et de poids égal — ce qu'attend la CNIL. */
.cmplz-cookiebanner .cmplz-close { display: none; }
.cmplz-cookiebanner .cmplz-title {
  font-family: 'Spectral', serif; font-weight: 300; font-style: italic;
  font-size: 1.25rem; letter-spacing: 0;
}
.cmplz-cookiebanner .cmplz-message { font-size: 0.8125rem; line-height: 1.7; }
.cmplz-cookiebanner .cmplz-btn { letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.6875rem; }

/* Politique cookies et politique de confidentialité sont ici la même page :
   Complianz affiche donc deux liens vers la même adresse. On n'en montre qu'un. */
.cmplz-cookiebanner .cmplz-links .cmplz-link.privacy-statement { display: none; }
