/* ============================================================
   GINA GROUP SERVICES SARL — Kinshasa, RDC
   Design system — corporate identity
   ============================================================ */

/* --- Marianne — official French government typeface, self-hosted --- */
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Light.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Regular_Italic.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Medium_Italic.woff2') format('woff2');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Bold_Italic.woff2') format('woff2');
  font-weight: 700;
  font-style: italic;
  font-display: swap;
}
/* Map 600/800/900 weights to Bold since Marianne only has Regular/Medium/Bold */
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Bold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Bold.woff2') format('woff2');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Marianne';
  src: url('../fonts/Marianne-Bold.woff2') format('woff2');
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}

/* ============================================================
   GINA GROUP SERVICES — Design Tokens
   ============================================================ */
:root {
  /* ─── GINA GROUP SERVICES brand greens (primary palette) ─── */
  --rouge:        #0F4D2E;   /* primary brand green */
  --rouge-fonce:  #08351F;   /* dark green — hover / depth */
  --rouge-clair:  #1a6b3f;   /* medium green — hover states */
  --rouge-pale:   #e8f5ee;   /* very light green — bg tints */

  /* ─── IFRDC accent palette (kept for the 8-colour system) ─── */
  --blue:       #0F4D2E;   /* PRIMARY — GINA primary green */
  --menthe:     #21ab88;   /* teal / success / upcoming */
  --tournesol:  #ffe552;   /* yellow accent */
  --ecume:      #a8d4b4;   /* muted light green */
  --tuile:      #FF4B36;   /* accent — CTAs */
  --cumulus:    #5a9673;   /* muted green highlight */
  --bourgeon:   #2d8a5a;   /* medium green */
  --macaron:    #6dcb9a;   /* light green pastel */

  /* Dark backgrounds — near-black neutrals (red accents stand out more on neutral dark) */
  --blackgray-900:  #060c09;
  --blackgray-800:  #0d1a12;   /* very dark, near-black, slightly warm */
  --blackgray-700:  #111f16;   /* used for hero bg, footer bg */
  --blackgray-600:  #1a2e21;
  --blackgray-500:  #243d2b;

  /* Light section backgrounds — very subtly warm (almost white) */
  --bluegray-800:   #7a9e85;   /* used decoratively */
  --bluegray-700:   #8ab895;
  --bluegray-400:   #a8c5b0;
  --bluegray-300:   #c2d8ca;
  --bluegray-200:   #d8ebde;
  --bluegray-50:    #F5F8F6;   /* section background — barely-there warmth */
  --bluegray-100:   #e8f0ea;
  --gray-300:       #d1d5db;
  --gray-500:       #6b7280;
  --gray-600:       #4b5563;
  --white:          #ffffff;
  --black:          #111111;

  /* Typography — Marianne (self-hosted) */
  --font: 'Marianne', Arial, system-ui, sans-serif;

  /* Layout */
  --container-max:     1300px;
  --header-utility-h:  38px;
  --header-main-h:     92px;
  --header-h:          130px;   /* utility(38) + main(92) */
  --stripe-h:          4px;

  /* Spacing */
  --section-py: 4rem;

  /* Shadows — green-tinted */
  --shadow-sm:  0 1px 3px rgba(0,0,0,.08);
  --shadow:     0 4px 16px rgba(15,77,46,.12);
  --shadow-lg:  0 12px 32px rgba(15,77,46,.20);

  /* Radius — sharp corners (IFRDC style) */
  --radius:    0px;
  --radius-sm: 0px;

  /* Transitions */
  --t: all .25s ease;
  --t-slow: all .5s ease;
}

/* ============================================================
   Reset
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  scroll-padding-top: calc(var(--header-h) + var(--stripe-h) + 12px);
}

section[id] {
  scroll-margin-top: calc(var(--header-h) + var(--stripe-h) + 16px);
}

button,
input,
select,
textarea {
  font-family: var(--font);
}

body {
  font-family: var(--font);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--blackgray-700);
  background: var(--white);
  padding-top: calc(var(--header-h) + var(--stripe-h)); /* stripe(4) + utility(38) + main(92) = 134px */
}

img { max-width: 100%; display: block; }
a   { color: inherit; text-decoration: none; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font);
  font-weight: 800;
  line-height: 1.2;
  color: var(--blackgray-700);
}

/* ============================================================
   8-COLOR STRIPE BAR (ifrdc exact)
   ============================================================ */
.stripe-bar {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: var(--stripe-h);
  z-index: 999;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
}
.stripe-bar span:nth-child(1) { background: var(--blue); }
.stripe-bar span:nth-child(2) { background: var(--menthe); }
.stripe-bar span:nth-child(3) { background: var(--tournesol); }
.stripe-bar span:nth-child(4) { background: var(--ecume); }
.stripe-bar span:nth-child(5) { background: var(--tuile); }
.stripe-bar span:nth-child(6) { background: var(--cumulus); }
.stripe-bar span:nth-child(7) { background: var(--bourgeon); }
.stripe-bar span:nth-child(8) { background: var(--macaron); }

/* ============================================================
   HEADER (ifrdc exact: white, 100px, border-b)
   ============================================================ */
/* ============================================================
   SITE HEADER — two-row IFRDC style
   Row 1: utility bar (bluegray-50, 38px) — phone + language
   Row 2: main nav  (white, 92px)         — logo + links + CTA
   ============================================================ */
.site-header {
  position: fixed;
  top: var(--stripe-h);
  left: 0; right: 0;
  z-index: 200;
  background: var(--white);
  box-shadow: 0 1px 0 var(--gray-300);
}

/* --- UTILITY BAR (top row) --- */
.header-utility {
  background: var(--bluegray-50);
  border-bottom: 1px solid var(--bluegray-100);
  height: var(--header-utility-h);
  display: flex;
  align-items: center;
}
.header-utility-inner {
  max-width: var(--container-max);
  width: 100%;
  margin: 0 auto;
  padding: 0 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.header-utility-left {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.header-utility-link {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  color: var(--gray-600);
  text-decoration: none;
  font-weight: 500;
  transition: color .2s;
}
.header-utility-link:hover { color: var(--blue); }
.header-utility-link svg { width: 14px; height: 14px; flex-shrink: 0; }
.header-utility-right {
  display: flex;
  align-items: center;
  gap: .75rem;
}

/* --- LANGUAGE SELECTOR (IFRDC exact style) --- */
.lang-selector {
  position: relative;
}
.lang-selector-btn {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .78rem;
  font-weight: 700;
  color: var(--rouge);
  background: none;
  border: none;
  cursor: pointer;
  padding: .25rem .3rem;
  font-family: var(--font);
  transition: color .2s;
}
.lang-selector-btn:hover { color: var(--blackgray-700); }
.lang-selector-btn .lang-globe { width: 15px; height: 15px; color: var(--gray-600); }
.lang-selector-btn .lang-chevron {
  width: 14px; height: 14px;
  color: rgba(107,114,128,.7);
  transition: transform .2s;
}
.lang-selector.open .lang-chevron { transform: rotate(180deg); }

/* Dropdown panel */
.lang-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  background: white;
  border: 1px solid var(--gray-300);
  min-width: 200px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
  z-index: 500;
  padding: .4rem 0;
  display: none;
}
.lang-dropdown::before {
  content: '';
  position: absolute;
  top: -5px;
  right: 16px;
  width: 10px;
  height: 10px;
  background: white;
  border-left: 1px solid var(--gray-300);
  border-top: 1px solid var(--gray-300);
  transform: rotate(45deg);
}
.lang-selector.open .lang-dropdown { display: block; }

/* Each language option */
.lang-option {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .55rem 1rem;
  cursor: pointer;
  transition: background .15s;
  font-size: .82rem;
  color: var(--blackgray-700);
  font-weight: 500;
  position: relative;
}
.lang-option:hover { background: var(--bluegray-50); }
.lang-option--active { color: var(--rouge); font-weight: 700; background: var(--bluegray-50); }
.lang-option--active::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--rouge);
}
.lang-option--disabled {
  opacity: .55;
  cursor: not-allowed;
  pointer-events: none;
}
.lang-flag {
  font-size: 1rem;
  flex-shrink: 0;
  line-height: 1;
}
.lang-name { flex: 1; }
.lang-check {
  margin-left: auto;
  color: var(--menthe);
  font-size: .85rem;
}
.lang-badge {
  margin-left: auto;
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  background: var(--bluegray-100);
  color: var(--gray-600);
  padding: .15rem .45rem;
}

/* --- MAIN NAV ROW (bottom row) --- */
.header-main {
  background: var(--white);
  height: var(--header-main-h);
  display: flex;
  align-items: center;
}

.header-inner {
  max-width: var(--container-max);
  width: 100%;
  margin: 0 auto;
  padding: 0 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  height: 100%;
}

.c-wrapper {
  align-items: center;
  display: flex;
  justify-content: center;
  width: 100%;
}

.c-container {
  margin-left: auto;
  margin-right: auto;
  max-width: var(--container-max);
  padding-left: 1rem;
  padding-right: 1rem;
  width: 100%;
}
@media (min-width: 1024px) {
  .c-container { padding-left: 2rem; padding-right: 2rem; }
}

.header-inner {
  max-width: var(--container-max);
  width: 100%;
  margin: 0 auto;
  padding: 0 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  height: 100%;
}

/* Logo block — ifrdc: blue bg box with white logo */
.site-logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: .75rem;
  text-decoration: none;
  height: var(--header-main-h);
}

.site-logo-box {
  background: var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: .6rem .85rem;
  height: 100%;
  flex-shrink: 0;
}
.site-logo-box img {
  height: 58px;
  width: auto;
  object-fit: contain;
  display: block;
}

.site-logo-text { padding-left: .5rem; }
.site-logo-text .logo-name {
  display: block;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--rouge);
  line-height: 1.2;
  letter-spacing: -.01em;
}
.site-logo-text .logo-sub {
  display: block;
  font-size: .68rem;
  font-weight: 600;
  color: var(--rouge-fonce);
  letter-spacing: 1px;
  text-transform: uppercase;
}

/* ============================================================
   NAVIGATION (ifrdc c-menu-link exact)
   ============================================================ */
.site-nav {
  display: flex;
  align-items: center;
  gap: 0;
  height: 100%;
}

/* ifrdc exact c-menu-link */
.c-menu-link {
  font-weight: 500;
  position: relative;
  white-space: nowrap;
  color: var(--blackgray-700);
  padding: .5rem .85rem;
  display: flex;
  align-items: center;
  cursor: pointer;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  transition: color .25s;
  height: 100%;
  font-family: var(--font);
  font-size: .9rem;
}

.c-menu-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  width: 0;
  z-index: 10;
  background: var(--rouge);
  transition: none;
}

.c-menu-link:hover::after {
  animation: active_menu_after .5s forwards;
  -webkit-animation: active_menu_after .5s forwards;
  height: 3px;
  width: 100%;
}

.c-menu-link--active {
  font-weight: 600;
  color: var(--rouge);
}
.c-menu-link--active::after {
  content: '';
  display: flex;
  height: 3px;
  width: 100%;
  background: var(--rouge-fonce);
  animation: active_menu_after .5s forwards;
  -webkit-animation: active_menu_after .5s forwards;
}

@keyframes active_menu_after {
  0%   { width: 0; }
  100% { width: 100%; }
}

/* Nav dropdown */
.nav-dropdown { position: relative; height: 100%; display: flex; align-items: center; }
.dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--white);
  border: 1px solid var(--gray-300);
  min-width: 240px;
  z-index: 200;
  padding: .5rem 0;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
}
.nav-dropdown:hover .dropdown-menu,
.nav-dropdown:focus-within .dropdown-menu { display: block; }
.dropdown-menu a {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .55rem 1.25rem;
  font-size: .82rem;
  font-weight: 500;
  color: var(--blackgray-700);
  transition: background .15s, color .15s;
  text-decoration: none;
}
.dropdown-menu a:hover { background: var(--bluegray-50); color: var(--rouge); }
/* Color dot before each dropdown item */
.dropdown-dot {
  width: 8px;
  height: 8px;
  border-radius: 0;
  flex-shrink: 0;
  display: inline-block;
}

/* Contact/Enroll CTA in header (tuile bg, IFRDC exact) */
.btn-header-cta {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: var(--tuile);
  color: var(--white);
  font-weight: 700;
  font-size: .82rem;
  padding: .9rem 1.35rem;
  text-decoration: none;
  transition: background .2s;
  border: none;
  cursor: pointer;
  white-space: nowrap;
  letter-spacing: .03em;
  text-transform: uppercase;
  margin-left: .75rem;
  flex-shrink: 0;
  transition: background .2s, transform .15s ease, box-shadow .2s;
}
.btn-header-cta:hover {
  background: #e03a25;
  color: white;
  box-shadow: 0 6px 20px rgba(255,75,54,.35);
}
.btn-header-cta:active {
  transform: translateY(1px);
}
.btn-header-cta svg { flex-shrink: 0; }

/* Mobile menu toggle */
.menu-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  cursor: pointer;
  padding: .5rem;
  background: none;
  border: 2px solid var(--gray-300) !important;
  padding: .5rem;
}
.menu-toggle span {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--blackgray-700);
  transition: var(--t);
}

/* ============================================================
   IFRDC CLIP-PATH COMPONENTS
   ============================================================ */

/* c-tag-angle-semi: clips bottom-right corner */
.c-tag-angle-semi {
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 13px), calc(100% - 14px) 100%, 0 100%);
  -webkit-clip-path: polygon(0 0, 100% 0, 100% calc(100% - 13px), calc(100% - 14px) 100%, 0 100%);
}

/* c-tag-angle: clips bottom-right on wide elements */
.c-tag-angle {
  clip-path: polygon(0 0, 100% 0, calc(100% - 15px) 100%, 0 100%);
  -webkit-clip-path: polygon(0 0, 100% 0, calc(100% - 15px) 100%, 0 100%);
}

/* c-tag-angle big version */
.c-tag-angle-big-left {
  clip-path: polygon(0 0, 100% 0, calc(100% - 35px) 100%, 0 100%);
  -webkit-clip-path: polygon(0 0, 100% 0, calc(100% - 35px) 100%, 0 100%);
}

/* ============================================================
   BUTTONS (ifrdc style with shadow backing + angle)
   ============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--font);
  font-weight: 700;
  font-size: .8rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: var(--t);
  border: none;
  text-decoration: none;
  padding: .65rem 1.5rem;
  white-space: nowrap;
}

/* Primary (blue) with angled corner + shadow backing */
.btn-primary-if {
  position: relative;
  color: var(--white);
  z-index: 1;
}
.btn-primary-if .btn-shadow {
  position: absolute;
  inset: 0;
  background: var(--ecume);
  transform: translate(-4px, 4px);
  z-index: -1;
}
.btn-primary-if .btn-face {
  position: relative;
  z-index: 1;
  background: var(--blue);
  color: var(--white);
  padding: .7rem 1.5rem;
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  transition: background .2s;
}
.btn-primary-if:hover .btn-face { background: var(--blackgray-500); }

/* Outline white button with angle */
.btn-outline-if {
  position: relative;
  color: var(--blue);
  z-index: 1;
}
.btn-outline-if .btn-shadow {
  position: absolute;
  inset: 0;
  background: rgba(134,158,206,.3);
  transform: translate(-4px, 4px);
  z-index: -1;
}
.btn-outline-if .btn-face {
  position: relative;
  z-index: 1;
  background: var(--white);
  color: var(--blue);
  padding: .7rem 1.5rem;
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  transition: background .2s, color .2s;
  border: none;
}
.btn-outline-if:hover .btn-face { background: var(--bluegray-50); }

/* Simple flat button (gold for enroll) */
.btn-enroll {
  background: var(--af-gold);
  color: var(--white);
  padding: .6rem 1.25rem;
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  transition: var(--t);
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.btn-enroll:hover { background: #a87020; }

/* Generic utility buttons */
.btn-blue  { background: var(--blue);   color: white; }
.btn-tuile { background: var(--tuile);  color: white; }
.btn-menthe{ background: var(--menthe); color: white; }
.btn-sm { padding: .4rem 1rem; font-size: .75rem; }
.btn-lg { padding: .85rem 2rem; font-size: .85rem; }

/* ============================================================
   LAYOUT
   ============================================================ */
.c-padding-24-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
@media (min-width: 640px) {
  .c-padding-24-16 { padding-top: 6rem; padding-bottom: 6rem; }
}

.section-bg-gray { background: var(--bluegray-50); }
.section-bg-white { background: var(--white); }
.section-bg-blue  { background: var(--blue); }

section { position: relative; }

/* ============================================================
   SECTION TITLES (ifrdc c-title-h2)
   ============================================================ */
.c-title-h2 {
  border-left: 4px solid var(--tuile);
  font-size: 1.875rem;
  font-weight: 800;
  line-height: 1.2;
  padding-left: .75rem;
  margin-bottom: 1.5rem;
  color: var(--blackgray-700);
}
@media (min-width: 640px) {
  .c-title-h2 { font-size: 2.25rem; padding-left: 1rem; }
}

.c-title-h1 {
  font-size: 2.25rem;
  font-weight: 900;
  line-height: 1.1;
}
@media (min-width: 640px) {
  .c-title-h1 { font-size: 3rem; }
}

/* Section label (small uppercase above heading) */
.section-label {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--tuile);
  margin-bottom: .5rem;
  display: block;
}

/* ============================================================
   HERO SECTION (ifrdc: bluegray-50 bg + dot grid + tagline)
   ============================================================ */
.hero-if {
  background: var(--bluegray-50);
  position: relative;
  overflow: hidden;
  padding: 5rem 0 4rem;
  min-height: 520px;
  display: flex;
  align-items: center;
}

/* Dot grid background pattern */
.hero-dot-grid {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}
.hero-dot-grid svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: .6;
}

.hero-if .hero-inner {
  position: relative;
  z-index: 10;
  text-align: center;
  width: 100%;
}

/* IFRDC-style tagline with colored words */
.hero-tagline {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .25rem;
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 900;
  line-height: 1.1;
  margin-bottom: 1.25rem;
  letter-spacing: -.03em;
}
@media (min-width: 640px) {
  .hero-tagline {
    flex-direction: row;
    gap: 1rem;
    font-size: clamp(2.5rem, 6vw, 4.5rem);
  }
}

.hero-tagline .word-blue   { color: var(--blue); }
.hero-tagline .word-ecume  { color: var(--ecume); }
.hero-tagline .word-cumulus{ color: var(--cumulus); }
.hero-tagline .word-tuile  { color: var(--tuile); }

.hero-dot-sep {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.hero-dot-sep svg { width: 8px; height: 8px; }

.hero-subtitle {
  font-size: 1.05rem;
  color: var(--gray-600);
  max-width: 520px;
  margin: 0 auto 2rem;
  line-height: 1.7;
}

.hero-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  flex-wrap: wrap;
}

/* Hero announce callout (top of hero) */
.hero-announce {
  max-width: 600px;
  margin: 0 auto 2rem;
  background: var(--white);
  border: 1px solid rgba(15,77,46,.2);
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .75rem 1rem;
  text-align: left;
}

.hero-announce-inner {
  display: flex;
  align-items: center;
  gap: .75rem;
  min-width: 0;
  flex: 1;
}

.hero-announce-icon {
  width: 28px;
  height: 28px;
  background: var(--blue);
  color: white;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: .8rem;
}

.hero-announce-label {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: .15rem;
}

.hero-announce-text {
  font-size: .875rem;
  color: var(--blackgray-700);
  font-weight: 500;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.hero-announce-cta {
  background: var(--blue);
  color: white;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: .4rem .85rem;
  white-space: nowrap;
  flex-shrink: 0;
  transition: var(--t);
  display: inline-flex;
  align-items: center;
  gap: .3rem;
}
.hero-announce-cta:hover { background: var(--blackgray-500); }

/* Dismiss X */
.hero-announce-close {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--gray-300);
  padding: .25rem;
  transition: var(--t);
  flex-shrink: 0;
}
.hero-announce-close:hover { color: var(--blackgray-700); }

/* ============================================================
   IFRDC CARDS
   ============================================================ */

/* Base card */
.c-card {
  position: relative;
  background: var(--bluegray-50);
  transition: var(--t-slow);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.c-card-img {
  background: var(--blackgray-700);
  overflow: hidden;
  position: relative;
}
.c-card-img img {
  width: 100%;
  object-fit: cover;
  display: block;
  transition: transform .5s ease;
}
.c-card:hover .c-card-img img { transform: scale(1.08); }

/* Category tag in image (top-left) */
.c-card-cat {
  position: absolute;
  top: 1rem;
  left: 1rem;
  z-index: 50;
  background: var(--blue);
  color: white;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: .3rem .75rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.c-card-cat .cat-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Status badge in image (bottom-left) */
.c-card-status {
  position: absolute;
  bottom: 1rem;
  left: 1rem;
  z-index: 50;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: lowercase;
  padding: .25rem .6rem;
  color: white;
  background: var(--menthe);
}
.c-card-status.ongoing { background: var(--tuile); }
.c-card-status.archive { background: var(--ecume); }

/* Card text area */
.c-card-text {
  padding: 1rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.c-card-text .c-card-meta {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .82rem;
  color: var(--gray-600);
  margin-bottom: .4rem;
}
.c-card-text .c-card-meta svg { width: 14px; height: 14px; color: var(--blue); flex-shrink: 0; }
.c-card-text h3 {
  font-size: 1.05rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--blackgray-700);
  margin-top: .4rem;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.c-card-text h3 a { color: inherit; }

/* c-underline-animation (ifrdc exact) */
.c-underline-animation {
  background-image: linear-gradient(transparent calc(100% - 3px), var(--cumulus) 10px);
  background-repeat: no-repeat;
  background-size: 0 100%;
  transition: background-size 1s;
  width: 100%;
}
.c-card:hover .c-underline-animation {
  background-size: 100% 100%;
  color: var(--blue);
}

/* c-card--classic-vertical */
.c-card--classic-vertical {
  flex-direction: column;
  height: 100%;
  min-height: 100%;
  background: var(--bluegray-50);
}
.c-card--classic-vertical .c-card-img { height: 200px; }
.c-card--classic-vertical .c-card-img img { height: 200px; }
@media (min-width: 640px) {
  .c-card--classic-vertical .c-card-img { height: 240px; }
  .c-card--classic-vertical .c-card-img img { height: 240px; }
  .c-card--classic-vertical.big-view .c-card-img { height: 300px; }
  .c-card--classic-vertical.big-view .c-card-img img { height: 300px; }
  .c-card--classic-vertical.big-view h3 { font-size: 1.35rem; line-height: 1.3; }
}
.c-card--classic-vertical .c-card-text {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1rem;
}
.c-card--classic-vertical.max-h-feature {
  max-height: 420px;
}

/* c-card--classic-horizontal */
.c-card--classic-horizontal {
  flex-direction: column;
  background: var(--bluegray-50);
}
@media (min-width: 640px) {
  .c-card--classic-horizontal { flex-direction: row; }
  .c-card--classic-horizontal .c-card-img {
    min-width: 200px;
    width: 200px;
    flex-shrink: 0;
  }
}
.c-card--classic-horizontal .c-card-img img { height: 160px; }
@media (min-width: 640px) {
  .c-card--classic-horizontal .c-card-img img { height: 145px; }
}

/* ============================================================
   VIDEO CARD — exact IFRDC structure
   Image (16:9) with badge + play button + text section below
   ============================================================ */
.c-video-card {
  position: relative;
  overflow: hidden;
  background: var(--white);
  display: block;
  text-decoration: none;
}
/* The image wrapper with 16:9 ratio */
.c-video-card .c-vc-img {
  position: relative;
  overflow: hidden;
  background: var(--blackgray-700);
  aspect-ratio: 16 / 9;
}
.c-video-card .c-vc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1);
  transition: transform .7s ease-in-out;
}
.c-video-card:hover .c-vc-img img { transform: scale(1.05); }

/* Status/archive badge — top-left */
.c-video-card .c-vc-badge {
  position: absolute;
  top: 1rem;
  left: 1rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.c-vc-badge span {
  background: var(--ecume);
  color: white;
  font-size: .7rem;
  font-weight: 600;
  padding: .2rem .6rem;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.c-vc-badge span.badge-free { background: var(--menthe); }
.c-vc-badge span.badge-coming { background: var(--tournesol); color: var(--blackgray-700); }

/* Play button — bottom-right in blue square */
.c-video-card .c-vc-play {
  position: absolute;
  bottom: 1rem;
  right: 1rem;
  background: rgba(15,77,46,.9);
  padding: .65rem;
  transition: background .2s;
}
.c-video-card:hover .c-vc-play { background: var(--blue); }
.c-video-card .c-vc-play svg { width: 20px; height: 20px; fill: white; display: block; }

/* Text section below image */
.c-video-card .c-vc-text {
  padding: .75rem 0 .25rem;
}
.c-video-card .c-vc-date {
  font-size: .82rem;
  color: var(--gray-600);
  margin-bottom: .4rem;
}
.c-video-card .c-vc-title {
  font-weight: 700;
  font-size: .95rem;
  line-height: 1.4;
  color: var(--blackgray-700);
  margin-bottom: .6rem;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: color .2s;
}
.c-video-card:hover .c-vc-title { color: var(--blue); }
.c-video-card .c-vc-cat {
  display: flex;
  align-items: center;
  gap: .4rem;
}
.c-video-card .c-vc-cat-dot {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
  display: inline-block;
}
.c-video-card .c-vc-cat span {
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--blue);
}

/* ============================================================
   c-titre — IFRDC highlighted title effect (event detail pages)
   ============================================================ */
.c-titre {
  font-size: clamp(1.5rem, 4vw, 2.5rem);
  font-weight: 800;
  line-height: 1.3;
  color: var(--blackgray-700);
}
.c-titre span {
  background-color: var(--blue);
  color: white;
  padding: .1em .3em;
  display: inline;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  line-height: 1.55;
}

/* ============================================================
   IFRDC-style link buttons (c-tag-angle-semi white pill)
   ============================================================ */
.c-link-btn {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  background: white;
  padding: .5rem .75rem .5rem .5rem;
  gap: .4rem;
  font-size: .875rem;
  font-weight: 500;
  color: var(--blackgray-700);
  text-decoration: none;
  transition: box-shadow .2s;
  clip-path: polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 9px) 100%,0 100%);
}
.c-link-btn:hover { box-shadow: 0 4px 12px rgba(15,77,46,.15); }
.c-link-btn .c-link-btn-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.c-link-btn svg { width: 14px; height: 14px; color: var(--gray-600); }

/* ============================================================
   OFFERING PANELS — 3 variants from IFRDC homepage
   ============================================================ */

/* 1. Dark panel — image bg + gradient overlay + white text */
.offering-panel {
  position: relative;
  overflow: hidden;
  clip-path: polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 14px) 100%,0 100%);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 3.5rem 3rem;
}
.offering-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, transparent, var(--blackgray-700) 50%, var(--blackgray-700));
  z-index: 1;
}
@media (min-width: 768px) {
  .offering-panel::before {
    background: linear-gradient(to left, transparent, var(--blackgray-700) 55%, var(--blackgray-700));
  }
}
.offering-panel-inner {
  position: relative;
  z-index: 2;
  color: white;
  max-width: 520px;
}
.offering-panel h2 {
  font-size: 1.75rem;
  font-weight: 700;
  color: white;
  margin-bottom: 1rem;
  line-height: 1.2;
}
.offering-panel p { color: rgba(175,192,229,1); font-size: .95rem; margin-bottom: 2rem; line-height: 1.8; }
.offering-panel-btns { display: flex; flex-wrap: wrap; gap: .5rem; }

/* 2. Light panel — border + bluegray-50 bg, split image + text */
.offering-panel-light {
  border: 1px solid var(--bluegray-100);
  background: var(--bluegray-50);
  clip-path: polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 14px) 100%,0 100%);
  display: flex;
  flex-wrap: wrap;
  overflow: hidden;
}
.offering-panel-light .opl-image {
  width: 100%;
  height: 280px;
  overflow: hidden;
  clip-path: polygon(0 0,100% 0,calc(100% - 35px) 100%,0 100%);
}
@media (min-width: 768px) {
  .offering-panel-light .opl-image { width: 50%; height: auto; min-height: 320px; }
}
.offering-panel-light .opl-image img { width: 100%; height: 100%; object-fit: cover; }
.offering-panel-light .opl-text {
  width: 100%;
  padding: 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
@media (min-width: 768px) { .offering-panel-light .opl-text { width: 50%; } }
.offering-panel-light h2 {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: 1rem;
}
.offering-panel-light p { color: var(--gray-600); font-size: .95rem; margin-bottom: 1.5rem; line-height: 1.8; }

/* 3. Blue panel — blue bg, text + image */
.offering-panel-blue {
  background: var(--blue);
  clip-path: polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 14px) 100%,0 100%);
  display: flex;
  flex-wrap: wrap;
  overflow: hidden;
}
.offering-panel-blue .opb-text {
  width: 100%;
  padding: 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
@media (min-width: 768px) { .offering-panel-blue .opb-text { width: 50%; } }
.offering-panel-blue h2 {
  font-size: 1.5rem;
  font-weight: 800;
  color: white;
  margin-bottom: 1rem;
}
.offering-panel-blue p { color: rgba(175,192,229,1); font-size: .95rem; margin-bottom: 1.5rem; line-height: 1.8; }
.offering-panel-blue .opb-image {
  width: 100%;
  height: 280px;
  overflow: hidden;
  clip-path: polygon(35px 0,100% 0,100% 100%,0 100%);
}
@media (min-width: 768px) {
  .offering-panel-blue .opb-image { width: 50%; height: auto; min-height: 320px; }
}
.offering-panel-blue .opb-image img { width: 100%; height: 100%; object-fit: cover; }

/* Section title with two-tone colored spans (IFRDC pattern) */
.c-title-h2 span.accent { color: var(--ecume); }

/* line-clamp utilities */
.line-clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* ============================================================
   HERO SLIDER (full-bleed for inner pages or alt homepage)
   ============================================================ */
.hero-slider {
  position: relative;
  height: 85vh;
  min-height: 500px;
  max-height: 760px;
  overflow: hidden;
  background: var(--blackgray-700);
}
.hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity .9s ease;
}
.hero-slide.active { opacity: 1; }
.hero-slide-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(.38);
}
.hero-slide-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(15,77,46,.6) 0%, rgba(8,53,31,.25) 100%);
}
.hero-slide-content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding: 0 2rem;
  max-width: calc(var(--container-max) + 4rem);
  margin: 0 auto;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
}
.hero-slide-label {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--tuile);
  margin-bottom: .6rem;
}
.hero-slide-title {
  font-size: clamp(2rem, 5.5vw, 3.75rem);
  font-weight: 900;
  color: white;
  max-width: 700px;
  margin-bottom: 1.1rem;
  line-height: 1.1;
  letter-spacing: -.03em;
}
.hero-slide-sub {
  font-size: clamp(.95rem, 2vw, 1.1rem);
  color: rgba(255,255,255,.8);
  max-width: 520px;
  margin-bottom: 2rem;
  line-height: 1.7;
}
.hero-slide-actions { display: flex; gap: 1rem; flex-wrap: wrap; }

/* Dots and arrows */
.hero-dots {
  position: absolute;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: .4rem;
  z-index: 10;
}
.hero-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.35);
  cursor: pointer;
  transition: var(--t);
  border: none;
}
.hero-dot.active { background: white; width: 28px; border-radius: 4px; }
.hero-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px; height: 46px;
  border-radius: 0;
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.25);
  color: white;
  font-size: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 10;
  transition: var(--t);
  backdrop-filter: blur(4px);
}
.hero-arrow:hover { background: rgba(255,255,255,.25); }
.hero-arrow.prev { left: 1.5rem; }
.hero-arrow.next { right: 1.5rem; }

/* ============================================================
   PAGE HERO (inner pages) — matches IFRDC events hero style
   Blue bg + grid overlay + centered text
   ============================================================ */
.page-hero {
  background: linear-gradient(135deg, var(--rouge-fonce) 0%, var(--rouge) 60%, var(--rouge-clair) 100%);
  padding: 5rem 0 4.5rem;
  position: relative;
  overflow: hidden;
}
/* Grid dot overlay (matches IFRDC) */
.page-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.07)' stroke-width='1'/%3E%3C/svg%3E") repeat;
}
/* Bottom wave shape (IFRDC deco style) */
.page-hero::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--menthe), var(--tournesol), var(--ecume), var(--tuile), var(--cumulus), var(--bourgeon), var(--macaron));
}
.page-hero .c-container {
  text-align: center;
  position: relative;
  z-index: 1;
}
/* Optional label above h1 (IFRDC uses colored badge above title) */
.page-hero-label {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: var(--menthe);
  color: white;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: .35rem .9rem;
  margin-bottom: 1.5rem;
}
.page-hero h1 {
  font-size: clamp(1.75rem, 4.5vw, 3rem);
  font-weight: 800;
  color: white;
  margin-bottom: .75rem;
  line-height: 1.15;
  position: relative;
  display: inline-block;
}
/* Decorative rotating highlight bar below title (IFRDC) */
.page-hero h1::after {
  content: '';
  display: block;
  width: 80px;
  height: 12px;
  background: rgba(127,155,214,.4);
  margin: .5rem auto 0;
  transform: rotate(-3deg);
}
.page-hero p {
  font-size: 1.05rem;
  color: rgba(255,255,255,.78);
  max-width: 600px;
  margin: 0 auto;
  position: relative;
  line-height: 1.7;
}
.page-hero p a {
  color: white;
  text-decoration: underline;
  font-weight: 500;
}
/* Breadcrumb in page hero */
.breadcrumb {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  font-size: .8rem;
  color: rgba(255,255,255,.55);
  margin-bottom: 1.5rem;
  position: relative;
  flex-wrap: wrap;
}
.breadcrumb a {
  color: rgba(255,255,255,.7);
  transition: color .2s;
}
.breadcrumb a:hover { color: white; }
.breadcrumb-sep { opacity: .4; }

/* ============================================================
   STATS BANNER
   ============================================================ */
.stats-banner {
  background: var(--blue);
  padding: 3.5rem 0;
  position: relative;
  overflow: hidden;
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  text-align: center;
  position: relative;
}
.stat-number {
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
  display: block;
  letter-spacing: -.04em;
}
.stat-label {
  font-size: .875rem;
  color: rgba(255,255,255,.75);
  margin-top: .4rem;
  font-weight: 400;
}

/* ============================================================
   CLASSES GRID (upcoming courses horizontal scroll)
   ============================================================ */
.class-card {
  position: relative;
  overflow: hidden;
  display: block;
  background: var(--blackgray-700);
  aspect-ratio: 3/4;
  flex-shrink: 0;
}
.class-card img { width: 100%; height: 100%; object-fit: cover; opacity: .85; transition: transform .5s; }
.class-card:hover img { transform: scale(1.05); }
.class-card-label {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 2rem .75rem .75rem;
  background: linear-gradient(to top, rgba(8,53,31,.9), transparent);
  color: white;
  font-weight: 700;
  font-size: .85rem;
}

/* ============================================================
   HOMEPAGE OFFERING PANELS (image-based grid, original style kept)
   ============================================================ */
.offering-panels {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
}
.offering-panel-img-card {
  position: relative;
  min-height: 400px;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  clip-path: polygon(0 0,100% 0,100% calc(100% - 13px),calc(100% - 14px) 100%,0 100%);
}
.offering-panel-img-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .7s ease;
}
.offering-panel-img-card:hover img { transform: scale(1.06); }
.offering-panel-img-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(23,40,76,.93) 0%, rgba(15,77,46,.25) 55%, transparent 100%);
  transition: var(--t-slow);
}
.offering-panel-img-card:hover::after {
  background: linear-gradient(to top, rgba(15,77,46,.96) 0%, rgba(15,77,46,.4) 70%, transparent 100%);
}
.offering-panel-img-card-body {
  position: relative;
  z-index: 2;
  padding: 2rem 1.75rem 1.75rem;
  width: 100%;
  color: white;
}
.offering-panel-img-card-tag {
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--tournesol);
  margin-bottom: .5rem;
  display: block;
}
.offering-panel-img-card-title {
  font-size: 1.3rem;
  font-weight: 800;
  color: white;
  margin-bottom: .6rem;
  line-height: 1.2;
}
.offering-panel-img-card-text {
  font-size: .875rem;
  color: rgba(255,255,255,.75);
  margin-bottom: 1.25rem;
  line-height: 1.65;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Separator dot (used in hero tagline between words) */
.sep-square {
  display: inline-block;
  width: 8px;
  height: 8px;
  background: var(--tuile);
}

/* ============================================================
   CATEGORY FILTER (IFRDC-style pills)
   ============================================================ */
.category-filter-wrap {
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-bottom: .5rem;
}
.category-filter-wrap::-webkit-scrollbar { display: none; }

.category-filter {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: 2rem;
  flex-wrap: wrap;
}

.filter-btn {
  padding: .35rem 1rem;
  border: 1.5px solid var(--gray-300);
  background: transparent;
  font-family: var(--font);
  font-size: .78rem;
  font-weight: 600;
  color: var(--gray-600);
  cursor: pointer;
  transition: var(--t);
  white-space: nowrap;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.filter-btn:hover {
  border-color: var(--blue);
  color: var(--blue);
}
.filter-btn.active {
  background: var(--blue);
  border-color: var(--blue);
  color: white;
}

.filter-label {
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--gray-600);
  white-space: nowrap;
  align-self: center;
}

/* ============================================================
   TESTIMONIALS
   ============================================================ */
.testimonial-card {
  background: var(--bluegray-50);
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-left: 4px solid var(--ecume);
  position: relative;
}
.testimonial-card::before {
  content: '"';
  position: absolute;
  top: .75rem;
  right: 1.25rem;
  font-size: 5rem;
  line-height: 1;
  color: var(--blue);
  opacity: .07;
  font-family: Georgia, serif;
}
.testimonial-text {
  font-size: .95rem;
  color: var(--blackgray-700);
  font-style: italic;
  line-height: 1.75;
}
.testimonial-author { display: flex; align-items: center; gap: .75rem; }
.testimonial-avatar {
  width: 44px; height: 44px;
  background: var(--blue);
  display: flex; align-items: center; justify-content: center;
  color: white; font-weight: 800; font-size: .875rem;
  flex-shrink: 0;
}
.testimonial-name { font-weight: 700; font-size: .9rem; }
.testimonial-level { font-size: .78rem; color: var(--tuile); font-weight: 600; }

/* ============================================================
   PARTNERS GRID
   ============================================================ */
.partners-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1rem;
  align-items: center;
}
.partner-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  aspect-ratio: 3/2;
  transition: var(--t);
}
.partner-logo:hover { box-shadow: var(--shadow); border-color: var(--ecume); }
.partner-logo img {
  max-height: 50px;
  width: auto;
  object-fit: contain;
  filter: grayscale(60%);
  transition: var(--t);
}
.partner-logo:hover img { filter: grayscale(0%); }

/* ============================================================
   CONTACT COMPONENTS
   ============================================================ */
.contact-info-card {
  background: var(--blue);
  padding: 2.5rem;
  height: 100%;
}
.contact-info-card h3 { color: white; margin-bottom: 1.75rem; font-size: 1.25rem; }
.contact-item { display: flex; gap: .85rem; margin-bottom: 1.5rem; align-items: flex-start; }
.contact-icon {
  width: 42px; height: 42px;
  background: rgba(255,255,255,.12);
  display: flex; align-items: center; justify-content: center;
  font-size: 1rem; flex-shrink: 0; color: white;
}
.contact-detail { font-size: .875rem; color: rgba(255,255,255,.78); line-height: 1.6; }
.contact-detail strong {
  color: white; display: block; margin-bottom: .1rem;
  font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .8px;
}

/* ============================================================
   FORMS
   ============================================================ */
.form-group { margin-bottom: 1.25rem; }
.form-label { display: block; font-size: .85rem; font-weight: 700; margin-bottom: .4rem; color: var(--blackgray-700); }
.form-input, .form-select, .form-textarea {
  width: 100%;
  padding: .75rem 1rem;
  border: 1.5px solid var(--bluegray-100);
  border-radius: 0;
  font-size: .95rem;
  font-family: var(--font);
  color: var(--blackgray-700);
  background: var(--white);
  transition: var(--t);
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(15,77,46,.1);
}
.form-textarea { min-height: 140px; resize: vertical; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* ============================================================
   PRICING TABLE
   ============================================================ */
.pricing-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .9rem;
  border: 1px solid var(--bluegray-100);
}
.pricing-table th {
  background: var(--blue);
  color: white;
  padding: .9rem 1.25rem;
  text-align: left;
  font-weight: 700;
  font-size: .78rem;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.pricing-table td {
  padding: .85rem 1.25rem;
  border-bottom: 1px solid var(--bluegray-100);
  vertical-align: top;
}
.pricing-table tr:last-child td { border-bottom: none; }
.pricing-table tr:nth-child(even) td { background: var(--bluegray-50); }
.pricing-badge {
  background: var(--tuile);
  color: white;
  font-weight: 700;
  font-size: .75rem;
  padding: .2rem .65rem;
}

/* ============================================================
   INFO BOX
   ============================================================ */
.info-box {
  background: rgba(15,77,46,.05);
  border: 1px solid rgba(15,77,46,.15);
  border-left: 4px solid var(--blue);
  padding: 1.25rem 1.5rem;
  margin: 1.5rem 0;
}
.info-box.gold {
  background: rgba(200,146,42,.05);
  border-left-color: var(--af-gold);
  border-color: rgba(200,146,42,.2);
}

/* ============================================================
   RENTAL CARDS
   ============================================================ */
.rental-card {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: var(--t-slow);
}
.rental-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
.rental-card-img { aspect-ratio: 16/10; overflow: hidden; background: var(--bluegray-50); }
.rental-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.rental-card:hover .rental-card-img img { transform: scale(1.05); }
.rental-card-body { padding: 1.5rem; }
.rental-price {
  background: var(--af-gold);
  color: white;
  font-weight: 700;
  font-size: .78rem;
  padding: .3rem .75rem;
  display: inline-block;
  margin-bottom: 1rem;
}
.rental-card-title { font-size: 1.1rem; font-weight: 800; margin-bottom: .5rem; color: var(--blackgray-700); }
.rental-features { list-style: none; margin: .75rem 0; }
.rental-features li {
  display: flex; align-items: flex-start; gap: .4rem;
  font-size: .875rem; color: var(--gray-600); padding: .2rem 0;
}
.rental-features li::before { content: '✓'; color: var(--blue); font-weight: 700; flex-shrink: 0; }

/* ============================================================
   SOCIAL LINKS
   ============================================================ */
.social-links { display: flex; gap: .5rem; flex-wrap: wrap; }
.social-link {
  width: 38px; height: 38px;
  background: rgba(255,255,255,.1);
  display: flex; align-items: center; justify-content: center;
  color: white; font-size: .9rem;
  transition: var(--t);
  border: 1px solid rgba(255,255,255,.15);
}
.social-link:hover { background: var(--tuile); border-color: var(--tuile); }

/* ============================================================
   FOOTER — IFRDC exact structure
   1. Black CTA strip (with logos + enroll button)
   2. bg-bluegray-50 links grid (5-col, IFRDC heading style)
   3. Bottom copyright bar
   ============================================================ */
.site-footer {
  position: relative;
  color: var(--blackgray-700);
}

/* --- 1. BLACK CTA STRIP --- */
.footer-cta-strip {
  background: var(--blackgray-800);
  position: relative;
  overflow: hidden;
  margin-top: 3.5rem;
}
/* Decorative rotated squares (IFRDC corner deco) */
.footer-cta-deco {
  position: absolute;
  width: 24px;
  height: 96px;
  transform: rotate(-45deg);
  z-index: 1;
}
.footer-cta-deco--tr { top: -24px; right: -8px; }
.footer-cta-deco--bl { bottom: -24px; left: -8px; }

.footer-cta-inner {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
  padding-top: 2.25rem;
  padding-bottom: 2.25rem;
}

/* Brand logos block */
.footer-cta-logos {
  display: flex;
  align-items: center;
  gap: 1.75rem;
}
.footer-cta-logo-box {
  display: flex;
  flex-direction: column;
}
.footer-cta-af-text {
  font-size: 1.05rem;
  font-weight: 900;
  color: white;
  line-height: 1.1;
  letter-spacing: -.02em;
}
.footer-cta-af-sub {
  font-size: .65rem;
  color: var(--tuile);
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-top: .25rem;
}
.footer-cta-divider {
  width: 1px;
  height: 40px;
  background: rgba(255,255,255,.15);
}
.footer-cta-since {
  display: flex;
  flex-direction: column;
}
.footer-cta-since-year {
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
}
.footer-cta-since-label {
  font-size: .7rem;
  color: rgba(255,255,255,.5);
  line-height: 1.5;
  margin-top: .2rem;
}

/* Right CTA content */
.footer-cta-right {
  display: flex;
  align-items: center;
  gap: 2rem;
  flex-wrap: wrap;
}
.footer-cta-title {
  font-size: 1.05rem;
  font-weight: 800;
  color: white;
  margin-bottom: .2rem;
}
.footer-cta-subtitle {
  font-size: .8rem;
  color: rgba(255,255,255,.5);
}
.footer-cta-actions {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
}

/* IFRDC shadow button in footer */
.footer-cta-btn {
  position: relative;
  display: inline-block;
  text-decoration: none;
}
.footer-cta-btn-shadow {
  position: absolute;
  inset: 0;
  background: var(--ecume);
  transform: translate(-4px, 4px);
  z-index: 0;
}
.footer-cta-btn-face {
  position: relative;
  z-index: 1;
  background: var(--blue);
  color: white;
  padding: .6rem 1.35rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  display: inline-flex;
  align-items: center;
  transition: background .2s;
}
.footer-cta-btn:hover .footer-cta-btn-face { background: var(--blackgray-600); }

.footer-cta-btn-outline {
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: rgba(255,255,255,.6);
  text-decoration: none;
  padding: .6rem .5rem;
  transition: color .2s;
  clip-path: polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 9px) 100%,0 100%);
}
.footer-cta-btn-outline:hover { color: white; }

/* --- 2. MAIN LINKS GRID (bg-bluegray-50) --- */
.footer-body {
  background: var(--bluegray-50);
  border-top: 1px solid var(--bluegray-100);
  padding: 3.5rem 0 3rem;
}

.footer-links-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 2.5rem 2rem;
}
@media (min-width: 640px) {
  .footer-links-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
  .footer-links-grid { grid-template-columns: repeat(5, 1fr); gap: 2rem; }
}

/* Column heading — IFRDC style: bold + yellow 20px bar */
.footer-col-heading {
  font-size: .9rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: 1.35rem;
  position: relative;
  padding-bottom: .85rem;
}
.footer-col-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 20px;
  height: 4px;
  background: var(--tournesol);
  display: block;
}

/* Links list — IFRDC style */
.footer-links-list {
  list-style: none;
}
.footer-links-list li {
  margin-bottom: .55rem;
}
.footer-links-list a {
  font-size: .82rem;
  color: var(--gray-600);
  text-decoration: none;
  position: relative;
  display: inline-block;
  transition: color .2s;
}
.footer-links-list a:hover { color: var(--blue); }
/* IFRDC hover underline bar */
.footer-links-list a::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 3px;
  background: var(--menthe);
  opacity: .5;
  transition: width .25s ease;
}
.footer-links-list a:hover::after { width: 100%; }

/* Social links in the 5th column */
.footer-social-list a {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
}
.footer-social-icon {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bluegray-100);
  color: var(--blue);
  font-size: .7rem;
  flex-shrink: 0;
  transition: background .2s, color .2s;
}
.footer-social-list a:hover .footer-social-icon {
  background: var(--blue);
  color: white;
}

/* Contact block inside the social column */
.footer-contact-block {
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--bluegray-100);
}
.footer-contact-row {
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  font-size: .78rem;
  color: var(--gray-600);
  margin-bottom: .65rem;
  line-height: 1.5;
}
.footer-contact-row svg {
  width: 14px;
  height: 14px;
  color: var(--blue);
  flex-shrink: 0;
  margin-top: .1rem;
}
.footer-contact-row a { color: var(--gray-600); transition: color .2s; }
.footer-contact-row a:hover { color: var(--blue); }

/* --- 3. BOTTOM COPYRIGHT BAR --- */
.footer-bottom-bar {
  background: var(--bluegray-100);
  border-top: 1px solid var(--bluegray-200);
  padding: 1rem 0;
}
.footer-bottom-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.footer-copyright {
  font-size: .75rem;
  color: var(--gray-600);
}
.footer-bottom-links {
  display: flex;
  gap: 1.25rem;
}
.footer-bottom-links a {
  font-size: .75rem;
  color: var(--gray-600);
  text-decoration: none;
  transition: color .2s;
}
.footer-bottom-links a:hover { color: var(--blue); }

.footer-cta-heading p {
  margin: 0;
}
.footer-cta-heading .footer-cta-subtitle {
  margin-top: .35rem;
}
.footer-muted {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin: 0;
  max-width: 16rem;
}

/* ============================================================
   CTA SECTION
   ============================================================ */
.cta-section {
  background: var(--blue);
  padding: 5rem 0;
  position: relative;
  overflow: hidden;
  text-align: center;
}
.cta-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.05)' stroke-width='1'/%3E%3C/svg%3E") repeat;
}
.cta-section > * { position: relative; z-index: 1; }
.cta-section h2 { color: white; margin-bottom: 1rem; }
.cta-section p { color: rgba(255,255,255,.75); max-width: 520px; margin: 0 auto 2.5rem; line-height: 1.8; }

/* ============================================================
   UTILITIES
   ============================================================ */
.text-center { text-align: center; }
.text-left   { text-align: left; }
.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-1 { gap: .25rem; }
.gap-2 { gap: .5rem; }
.gap-4 { gap: 1rem; }
.gap-6 { gap: 1.5rem; }
.gap-8 { gap: 2rem; }

.mt-2 { margin-top: .5rem; }
.mt-4 { margin-top: 1rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-8 { margin-top: 2rem; }
.mt-12 { margin-top: 3rem; }
.mb-2 { margin-bottom: .5rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-6 { margin-bottom: 1.5rem; }
.mb-8 { margin-bottom: 2rem; }

.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; }

.divider { border: none; border-top: 1px solid var(--bluegray-100); margin: 2rem 0; }

/* Feature cards */
.feature-card {
  background: var(--bluegray-50);
  padding: 2rem;
  border-left: 3px solid var(--ecume);
  transition: var(--t);
}
.feature-card:hover { border-left-color: var(--blue); }
.feature-icon {
  width: 52px; height: 52px;
  background: rgba(15,77,46,.08);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.35rem;
  color: var(--rouge);
  margin-bottom: 1.1rem;
  flex-shrink: 0;
}
.feature-icon i { color: inherit; font-size: inherit; }

/* ============================================================
   SCROLL REVEAL
   ============================================================ */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* Stagger */
.reveal:nth-child(2) { transition-delay: .08s; }
.reveal:nth-child(3) { transition-delay: .16s; }
.reveal:nth-child(4) { transition-delay: .24s; }
.reveal:nth-child(5) { transition-delay: .32s; }

/* Hero animations */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
.animate-in { animation: fadeInUp .65s ease both; }
.animate-in-delay-1 { animation-delay: .12s; }
.animate-in-delay-2 { animation-delay: .24s; }
.animate-in-delay-3 { animation-delay: .36s; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1024px) {
  .offering-panels { grid-template-columns: 1fr; }
  .partners-grid  { grid-template-columns: repeat(4, 1fr); }
  .footer-links-grid { grid-template-columns: repeat(3, 1fr); }
  .stats-grid     { grid-template-columns: repeat(2, 1fr); }
  .grid-3         { grid-template-columns: 1fr 1fr; }
  .grid-4         { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
  :root {
    --header-utility-h: 36px;
    --header-main-h:    70px;
    --header-h:         106px;
  }

  /* Hide phone text in utility on small screens */
  .header-utility-link .util-label { display: none; }

  /* Mobile nav panel */
  .site-nav {
    display: none;
    flex-direction: column;
    align-items: stretch;
    height: auto;
  }
  .site-nav.open {
    display: flex;
    position: fixed;
    top: calc(var(--header-h) + var(--stripe-h));
    left: 0; right: 0; bottom: 0;
    background: white;
    padding: 1.25rem;
    overflow-y: auto;
    z-index: 300;
    box-shadow: var(--shadow-lg);
    gap: 0;
  }
  /* Language selector inside mobile menu */
  .site-nav.open .lang-selector-mobile {
    display: block;
    border-top: 1px solid var(--bluegray-100);
    padding-top: 1rem;
    margin-top: .5rem;
  }
  .c-menu-link { height: auto; padding: .75rem 1rem; border-bottom: 1px solid var(--bluegray-50) !important; }
  .c-menu-link::after { display: none; }
  .nav-dropdown .dropdown-menu {
    display: block;
    position: static;
    box-shadow: none;
    border: none;
    background: var(--bluegray-50);
    margin-left: 1rem;
    margin-top: .25rem;
    padding: .25rem 0;
  }
  .menu-toggle { display: flex; }

  .hero-slider     { height: 75vh; max-height: none; }
  .hero-arrow      { display: none; }
  .hero-slide-content { padding: 0 1.25rem; }
  .hero-tagline    { font-size: 2rem; gap: .4rem; }

  .offering-panels { grid-template-columns: 1fr; }
  .offering-panel  { min-height: 280px; }

  .partners-grid   { grid-template-columns: repeat(3, 1fr); }
  .stats-grid      { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
  .footer-links-grid  { grid-template-columns: repeat(2, 1fr); }
  .footer-cta-inner   { flex-direction: column; align-items: flex-start; }
  .footer-cta-right   { flex-direction: column; align-items: flex-start; }
  .footer-bottom-inner { flex-direction: column; text-align: center; }
  .footer-bottom-links { justify-content: center; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .form-grid       { grid-template-columns: 1fr; }
  .hero-if         { padding: 3.5rem 0 3rem; }
  .c-padding-24-16 { padding-top: 3rem; padding-bottom: 3rem; }
  .hero-announce   { flex-wrap: wrap; }

  .c-card--classic-horizontal { flex-direction: column; }
  .c-card--classic-horizontal .c-card-img { width: 100%; }
}

@media (max-width: 480px) {
  .partners-grid { grid-template-columns: repeat(2, 1fr); }
  .hero-tagline  { font-size: 1.75rem; }
  .hero-tagline .word-sep { display: none; }
}

/* ============================================================
   CSS VARIABLE BRIDGES (old → new IFRDC tokens)
   ============================================================ */
:root {
  --color-muted:   var(--gray-600);
  --color-bg:      var(--bluegray-50);
  --color-border:  var(--bluegray-100);
  --color-text:    var(--blackgray-700);
  --color-white:   var(--white);
  --af-blue:       var(--blue);
  --af-blue-dark:  var(--af-dark);
  --af-gold-light: #f0c060;
  --transition:    var(--t);
  --shadow-md:     var(--shadow);
  --radius-xl:     0px;
  --radius-lg:     0px;
  --radius-md:     0px;
  --section-py-sm: 2.5rem;
}

/* ============================================================
   COMPATIBILITY ALIASES (for inner pages using old class names)
   ============================================================ */
.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 1.5rem;
  width: 100%;
}
@media (min-width: 1024px) { .container { padding: 0 2rem; } }

.section {
  padding: var(--section-py) 0;
  background: var(--white);
}
.section-alt { background: var(--bluegray-50); padding: var(--section-py) 0; }

.section-header {
  margin-bottom: 2.5rem;
  max-width: 680px;
}
.section-header.text-center { margin-left: auto; margin-right: auto; text-align: center; }

.section-title {
  font-size: clamp(1.5rem, 3.5vw, 2.25rem);
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: .75rem;
  line-height: 1.2;
  letter-spacing: -.025em;
}

.section-subtitle {
  font-size: 1.05rem;
  color: var(--gray-600);
  line-height: 1.75;
}

/* Old offering, feature, and card classes */
.offering-card {
  background: var(--bluegray-50);
  padding: 2rem;
  border-top: 4px solid var(--blue);
  transition: var(--t);
  height: 100%;
}
.offering-card:hover { box-shadow: var(--shadow-lg); }
.offering-card h3 { font-size: 1.1rem; margin-bottom: .6rem; }
.offering-card p { font-size: .9rem; color: var(--gray-600); line-height: 1.7; }

.icon-box {
  width: 52px; height: 52px;
  background: rgba(15,77,46,.08);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
  margin-bottom: 1.1rem;
  border-radius: 0;
}

/* Old event-card */
.event-card {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  transition: var(--t-slow);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.event-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
.event-card-img {
  height: 180px;
  overflow: hidden;
  background: var(--bluegray-50);
  position: relative;
}
.event-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.event-card:hover .event-card-img img { transform: scale(1.06); }
.event-date-badge {
  position: absolute;
  top: 1rem; left: 1rem;
  background: var(--blue);
  color: white;
  font-weight: 800;
  text-align: center;
  padding: .4rem .65rem;
  line-height: 1.1;
}
.event-date-badge .day { font-size: 1.25rem; display: block; }
.event-date-badge .month { font-size: .65rem; text-transform: uppercase; letter-spacing: 1px; }
.event-status {
  position: absolute;
  bottom: .75rem; left: 1rem;
  font-size: .7rem; font-weight: 700;
  text-transform: lowercase;
  padding: .2rem .6rem;
  color: white;
  background: var(--menthe);
}
.event-status.free { background: var(--tournesol); color: var(--blackgray-700); }
.event-category {
  font-size: .68rem; font-weight: 700;
  letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--tuile);
  margin-bottom: .3rem;
  display: block;
}
.event-body { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.event-body h3 { font-size: 1rem; font-weight: 700; margin-bottom: .5rem; }
.event-meta { display: flex; align-items: center; gap: .4rem; font-size: .82rem; color: var(--gray-600); margin-top: .35rem; }
.event-meta i { color: var(--blue); font-size: .85rem; }
.event-meta-item { display: flex; align-items: center; gap: .35rem; font-size: .82rem; color: var(--gray-600); }
.event-card-body, .event-body { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.event-title, .event-card-body h3 { font-size: 1rem; font-weight: 700; margin-bottom: .5rem; color: var(--blackgray-700); }
.date-day, .event-date-badge .day { font-size: 1.25rem; display: block; font-weight: 900; }
.date-month, .event-date-badge .month { font-size: .65rem; text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }
.event-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.5rem;
}
.event-grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .event-grid-3 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .event-grid-3 { grid-template-columns: 1fr; } }

/* Btn aliases */
.btn-primary { background: var(--blue); color: white; padding: .6rem 1.25rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; display: inline-flex; align-items: center; gap: .4rem; transition: var(--t); cursor: pointer; border: none; }
.btn-primary:hover { background: var(--blackgray-500); }
.btn-secondary { background: transparent; color: var(--blue); border: 1.5px solid var(--blue); padding: .6rem 1.25rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; display: inline-flex; align-items: center; gap: .4rem; transition: var(--t); cursor: pointer; }
.btn-secondary:hover { background: var(--blue); color: white; }
.btn-sm { padding: .4rem .9rem !important; font-size: .75rem !important; }

/* Old class-grid */
.class-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.5rem;
}

/* Old highlight-row (regular events) */
.highlight-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.5rem;
  align-items: center;
  margin-bottom: 4rem;
}
.highlight-row img {
  width: 100%;
  height: 320px;
  object-fit: cover;
  box-shadow: var(--shadow-lg);
}
.highlight-row:nth-child(even) { direction: rtl; }
.highlight-row:nth-child(even) > * { direction: ltr; }

/* Old two-column layout */
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: start; }
.two-col-reverse { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: start; }
@media (max-width: 768px) {
  .two-col, .two-col-reverse { grid-template-columns: 1fr; gap: 2rem; }
  .highlight-row { grid-template-columns: 1fr; gap: 1.5rem; }
  .highlight-row:nth-child(even) { direction: ltr; }
}

/* Tags and badges */
.tag {
  display: inline-block;
  padding: .25rem .75rem;
  background: rgba(15,77,46,.08);
  color: var(--blue);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-bottom: .5rem;
}
.tag-menthe { background: rgba(33,171,136,.1); color: var(--menthe); }
.tag-tuile  { background: rgba(255,149,117,.1); color: var(--tuile); }
.tag-gold   { background: rgba(200,146,42,.1);  color: var(--af-gold); }

/* Feature strip */
.feature-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
.feature-strip-item {
  padding: 2.5rem 2rem;
  border-right: 1px solid var(--bluegray-100);
  text-align: center;
}
.feature-strip-item:last-child { border-right: none; }
@media (max-width: 768px) {
  .feature-strip { grid-template-columns: 1fr 1fr; }
  .feature-strip-item:nth-child(2) { border-right: none; }
}

/* Map iframe */
.map-embed {
  width: 100%;
  height: 360px;
  border: none;
  display: block;
}

/* Old .card and .card-body */
.card {
  background: var(--white);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: var(--t-slow);
  display: flex;
  flex-direction: column;
}
.card:hover { box-shadow: var(--shadow-lg); }
.card-body { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

/* Old section-sm */
.section-sm { padding: 2.5rem 0; }

/* Old btn-gold, btn-outline, btn-outline-white */
.btn-gold { background: var(--af-gold); color: white; padding: .7rem 1.5rem; font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; display: inline-flex; align-items: center; gap: .5rem; transition: var(--t); cursor: pointer; border: none; }
.btn-gold:hover { background: #a87020; }
.btn-outline { background: transparent; color: var(--blue); border: 1.5px solid var(--blue); padding: .6rem 1.25rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; display: inline-flex; align-items: center; gap: .4rem; transition: var(--t); cursor: pointer; }
.btn-outline:hover { background: var(--blue); color: white; }
.btn-outline-white { background: transparent; color: white; border: 1.5px solid rgba(255,255,255,.5); padding: .7rem 1.5rem; font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; display: inline-flex; align-items: center; gap: .5rem; transition: var(--t); cursor: pointer; }
.btn-outline-white:hover { background: rgba(255,255,255,.1); }
.btn-lg { padding: .85rem 2rem !important; font-size: .85rem !important; }

/* Utility */
.hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* Old hero-slider (still used in some pages) */
.hero-slide-actions .btn { padding: .7rem 1.5rem; }

/* Cta-banner alias */
.cta-banner {
  background: var(--blue);
  padding: 5rem 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-banner::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.05)' stroke-width='1'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}
.cta-banner h2, .cta-banner h3 { color: white; position: relative; }
.cta-banner p { color: rgba(255,255,255,.78); position: relative; }
.cta-banner .btn { position: relative; }

/* ============================================================
   PAGE LOADER — full-screen overlay with AF Mombasa logo
   ============================================================ */
#page-loader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: #0e0607;   /* near-black, very slight warmth */
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  transition: opacity .5s ease, visibility .5s ease;
}
#page-loader.loader-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
/* Decorative stripe at very top of loader */
#page-loader .loader-stripe {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
}
#page-loader .loader-stripe span:nth-child(1) { background: var(--blue); }
#page-loader .loader-stripe span:nth-child(2) { background: var(--menthe); }
#page-loader .loader-stripe span:nth-child(3) { background: var(--tournesol); }
#page-loader .loader-stripe span:nth-child(4) { background: var(--ecume); }
#page-loader .loader-stripe span:nth-child(5) { background: var(--tuile); }
#page-loader .loader-stripe span:nth-child(6) { background: var(--cumulus); }
#page-loader .loader-stripe span:nth-child(7) { background: var(--bourgeon); }
#page-loader .loader-stripe span:nth-child(8) { background: var(--macaron); }

.loader-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.75rem;
  animation: loaderFadeUp .5s ease both;
}
@keyframes loaderFadeUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Logo block (mirrors header blue box) */
.loader-logo-wrap {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.loader-logo-box {
  background: var(--blue);
  padding: .75rem 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.loader-logo-box img {
  height: 64px;
  width: auto;
  filter: brightness(0) invert(1);
  display: block;
}
.loader-brand-text {
  display: flex;
  flex-direction: column;
}
.loader-brand-name {
  font-size: 1.3rem;
  font-weight: 800;
  color: white;
  letter-spacing: -.01em;
  line-height: 1.2;
}
.loader-brand-sub {
  font-size: .72rem;
  font-weight: 600;
  color: var(--tuile);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  margin-top: .1rem;
}

/* Dotted spinning ring */
.loader-spinner {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 4px dotted rgba(214, 40, 57, .25);
  border-top-color: var(--rouge);
  animation: loaderSpin .85s linear infinite;
  flex-shrink: 0;
}
@keyframes loaderSpin {
  to { transform: rotate(360deg); }
}

/* ============================================================
   NEWSLETTER MODAL
   ============================================================ */
#newsletter-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(7,8,11,.55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity .35s ease, visibility .35s ease;
}
#newsletter-modal.modal-open {
  opacity: 1;
  visibility: visible;
}
.newsletter-panel {
  background: white;
  max-width: 860px;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  position: relative;
  box-shadow: 0 24px 64px rgba(0,0,0,.3);
  animation: modalSlideUp .4s ease both;
  max-height: 90vh;
  overflow: hidden;
}
@keyframes modalSlideUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (max-width: 640px) {
  .newsletter-panel { grid-template-columns: 1fr; }
}

/* Left decorative side */
.newsletter-deco {
  background: var(--blackgray-800);
  position: relative;
  overflow: hidden;
  min-height: 380px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 2rem;
}
.newsletter-deco-img {
  position: absolute;
  inset: 0;
  object-fit: cover;
  width: 100%;
  height: 100%;
  opacity: .45;
}
.newsletter-deco::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--blackgray-800) 0%, transparent 60%);
}
.newsletter-deco-content {
  position: relative;
  z-index: 1;
}
.newsletter-deco-tag {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: var(--tuile);
  color: white;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  padding: .3rem .7rem;
  margin-bottom: 1rem;
}
.newsletter-deco h3 {
  color: white;
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1.25;
  margin: 0 0 .5rem;
}
.newsletter-deco p {
  color: rgba(255,255,255,.7);
  font-size: .85rem;
  margin: 0;
}
/* Color dots grid decoration */
.newsletter-deco-dots {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
  display: grid;
  grid-template-columns: repeat(4, 12px);
  gap: 6px;
  z-index: 1;
}
.newsletter-deco-dots span {
  width: 12px;
  height: 12px;
  display: block;
}

/* Right form side */
.newsletter-form-side {
  padding: 2.5rem 2rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.25rem;
}
.newsletter-form-side .nl-eyebrow {
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--tuile);
}
.newsletter-form-side h2 {
  font-size: 1.45rem;
  font-weight: 800;
  color: var(--blackgray-800);
  line-height: 1.25;
  margin: 0;
}
.newsletter-form-side h2 .accent { color: var(--rouge); }
.newsletter-form-side .nl-desc {
  font-size: .85rem;
  color: var(--gray-600);
  margin: 0;
  line-height: 1.55;
}
#newsletter-form {
  display: flex;
  flex-direction: column;
  gap: .7rem;
}
.nl-field {
  display: flex;
  flex-direction: column;
  gap: .3rem;
}
.nl-field label {
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--blackgray-700);
}
.nl-field input {
  border: 1.5px solid var(--gray-300);
  padding: .65rem .85rem;
  font-family: var(--font);
  font-size: .875rem;
  color: var(--blackgray-700);
  background: var(--bluegray-50);
  outline: none;
  transition: border-color .2s;
  width: 100%;
}
.nl-field input:focus { border-color: var(--rouge); background: white; }
.nl-submit {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  background: var(--tuile);
  color: white;
  font-weight: 700;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: .85rem 1.5rem;
  border: none;
  cursor: pointer;
  width: 100%;
  font-family: var(--font);
  transition: background .2s;
  margin-top: .25rem;
}
.nl-submit:hover { background: #c94c2a; }
.nl-privacy {
  font-size: .72rem;
  color: var(--gray-500);
  text-align: center;
  margin: 0;
}
.nl-success {
  display: none;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1rem;
  padding: 1rem 0;
}
.nl-success-icon {
  width: 52px;
  height: 52px;
  background: var(--menthe);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
}
.nl-success h3 { margin: 0; color: var(--blackgray-800); font-size: 1.1rem; }
.nl-success p  { margin: 0; font-size: .85rem; color: var(--gray-600); }

/* Close button */
.modal-close-btn {
  position: absolute;
  top: .85rem;
  right: .85rem;
  width: 32px;
  height: 32px;
  background: var(--bluegray-100);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--blackgray-700);
  z-index: 10;
  transition: background .15s;
  font-size: 1.1rem;
  line-height: 1;
}
.modal-close-btn:hover { background: var(--bluegray-200); }

@media (max-width: 640px) {
  .newsletter-deco { min-height: 160px; }
  .newsletter-form-side { padding: 1.5rem 1.25rem; }
}

/* ============================================================
   COOKIE CONSENT BANNER
   ============================================================ */
#cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9998;
  background: var(--blackgray-800);
  color: white;
  box-shadow: 0 -4px 32px rgba(0,0,0,.3);
  transform: translateY(100%);
  transition: transform .45s cubic-bezier(.4,0,.2,1);
}
#cookie-banner.cookie-visible {
  transform: translateY(0);
}
.cookie-main {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.cookie-icon-wrap {
  font-size: 1.5rem;
  flex-shrink: 0;
  color: var(--tournesol);
  display: flex;
  align-items: center;
}
.cookie-text-block { flex: 1; min-width: 240px; }
.cookie-text-block strong {
  display: block;
  font-size: .9rem;
  font-weight: 700;
  color: white;
  margin-bottom: .2rem;
}
.cookie-text-block p {
  font-size: .78rem;
  color: rgba(255,255,255,.65);
  margin: 0;
  line-height: 1.5;
}
.cookie-text-block a {
  color: var(--bluegray-300);
  text-decoration: underline;
}
.cookie-actions-wrap {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.cookie-btn {
  font-family: var(--font);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .6rem 1rem;
  border: none;
  cursor: pointer;
  white-space: nowrap;
  transition: all .2s;
}
.cookie-btn-accept {
  background: var(--tuile);
  color: white;
}
.cookie-btn-accept:hover { background: #c94c2a; }
.cookie-btn-reject {
  background: transparent;
  color: rgba(255,255,255,.75);
  border: 1px solid rgba(255,255,255,.2);
}
.cookie-btn-reject:hover { color: white; border-color: rgba(255,255,255,.5); }
.cookie-btn-customize {
  background: transparent;
  color: rgba(255,255,255,.55);
  padding: .6rem .5rem;
  text-decoration: underline;
  text-transform: none;
  font-weight: 500;
  letter-spacing: 0;
  font-size: .75rem;
}
.cookie-btn-customize:hover { color: white; }

/* Customize panel (expanded) */
.cookie-customize-panel {
  border-top: 1px solid rgba(255,255,255,.1);
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 1.25rem 1.5rem 1.5rem;
  display: none;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
.cookie-customize-panel.panel-open {
  display: grid;
}
@media (max-width: 640px) {
  .cookie-customize-panel { grid-template-columns: 1fr; }
  .cookie-main { gap: 1rem; }
  .cookie-actions-wrap { width: 100%; }
}
.cookie-category {
  background: rgba(255,255,255,.06);
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}
.cookie-cat-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.cookie-cat-name {
  font-size: .8rem;
  font-weight: 700;
  color: white;
}
.cookie-cat-desc {
  font-size: .72rem;
  color: rgba(255,255,255,.55);
  line-height: 1.45;
  margin: 0;
}
/* Toggle switch */
.cookie-toggle {
  position: relative;
  width: 40px;
  height: 22px;
  flex-shrink: 0;
}
.cookie-toggle input { opacity: 0; width: 0; height: 0; position: absolute; }
.cookie-toggle-track {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,.2);
  cursor: pointer;
  transition: background .2s;
}
.cookie-toggle-track::after {
  content: '';
  position: absolute;
  left: 3px;
  top: 3px;
  width: 16px;
  height: 16px;
  background: white;
  transition: transform .2s;
}
.cookie-toggle input:checked + .cookie-toggle-track { background: var(--menthe); }
.cookie-toggle input:checked + .cookie-toggle-track::after { transform: translateX(18px); }
.cookie-toggle input:disabled + .cookie-toggle-track { cursor: not-allowed; opacity: .6; }
/* Confirm preferences button */
.cookie-save-prefs {
  background: var(--rouge);
  color: white;
  font-family: var(--font);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .65rem 1.25rem;
  border: none;
  cursor: pointer;
  margin-top: .5rem;
  transition: background .2s;
  align-self: flex-end;
  grid-column: 1 / -1;
}
.cookie-save-prefs:hover { background: var(--blackgray-600); }

/* ============================================================
   ENROLLMENT MODAL — two-step: programme → contact form → success
   ============================================================ */
#enroll-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10000;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
#enroll-modal.em-open {
  display: flex;
}
.em-overlay {
  position: fixed;
  inset: 0;
  background: rgba(10,4,5,.65);
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
  animation: emFadeIn .3s ease both;
}
@keyframes emFadeIn  { from { opacity: 0; } to { opacity: 1; } }
@keyframes emSlideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

/* Panel */
.em-panel {
  position: relative;
  z-index: 1;
  background: white;
  width: 100%;
  max-width: 720px;
  max-height: 90vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  animation: emSlideUp .35s ease both;
  box-shadow: 0 32px 80px rgba(0,0,0,.4);
}

/* Header */
.em-header {
  background: linear-gradient(135deg, var(--rouge-fonce) 0%, var(--rouge) 100%);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  position: sticky;
  top: 0;
  z-index: 10;
  flex-shrink: 0;
}
.em-header-logo {
  background: white;
  padding: .4rem .6rem;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.em-header-logo img {
  height: 40px;
  width: auto;
  display: block;
}
.em-header-text { flex: 1; }
.em-eyebrow {
  display: block;
  font-size: .65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: rgba(255,255,255,.7);
  margin-bottom: .15rem;
}
.em-title {
  font-size: 1.2rem;
  font-weight: 800;
  color: white;
  margin: 0;
  line-height: 1.2;
}
.em-close {
  background: rgba(255,255,255,.15);
  border: none;
  cursor: pointer;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  flex-shrink: 0;
  transition: background .15s;
}
.em-close:hover { background: rgba(255,255,255,.3); }
.em-close svg { width: 18px; height: 18px; }

/* Progress steps */
.em-progress {
  display: flex;
  align-items: center;
  padding: .9rem 1.5rem;
  background: var(--bluegray-50);
  border-bottom: 1px solid var(--bluegray-100);
  gap: 0;
  flex-shrink: 0;
}
.em-progress-step {
  display: flex;
  align-items: center;
  gap: .45rem;
  font-size: .75rem;
  font-weight: 600;
  color: var(--gray-500);
  white-space: nowrap;
}
.em-step-num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--bluegray-200);
  color: var(--gray-500);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .72rem;
  font-weight: 800;
  flex-shrink: 0;
  transition: background .2s, color .2s;
}
.em-step-active .em-step-num { background: var(--rouge); color: white; }
.em-step-active .em-step-label { color: var(--rouge); }
.em-step-done .em-step-num {
  background: var(--menthe);
  color: white;
  /* checkmark */
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 20 20' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z' clip-rule='evenodd'/%3E%3C/svg%3E");
  background-size: 14px;
  background-repeat: no-repeat;
  background-position: center;
  font-size: 0;
}
.em-progress-line {
  flex: 1;
  height: 2px;
  background: var(--bluegray-200);
  margin: 0 .5rem;
}

/* Body */
.em-body { padding: 1.5rem; display: flex; flex-direction: column; gap: 1.1rem; }
/* Force [hidden] to win over display:flex — prevents all steps showing at once */
#enroll-modal [hidden] { display: none !important; }
.em-step-desc {
  font-size: .88rem;
  color: var(--gray-600);
  margin: 0;
}

/* Programme grid */
.ep-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .65rem;
}
@media (max-width: 600px) { .ep-grid { grid-template-columns: repeat(2, 1fr); } }

.ep-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .3rem;
  padding: .85rem .8rem;
  background: var(--bluegray-50);
  border: 2px solid var(--bluegray-100);
  cursor: pointer;
  text-align: left;
  font-family: var(--font);
  transition: border-color .15s, background .15s, box-shadow .15s;
  position: relative;
}
.ep-card:hover {
  border-color: var(--ep-color, var(--rouge));
  background: white;
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
}
.ep-card.ep-selected {
  border-color: var(--ep-color, var(--rouge));
  background: white;
  box-shadow: 0 0 0 3px rgba(15,77,46,.1);
}
.ep-icon {
  font-size: 1.1rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: rgba(15,77,46,.08);
  color: var(--ep-color, var(--rouge));
  flex-shrink: 0;
  margin-bottom: .1rem;
}
.ep-icon i { font-size: 1rem; }
.ep-card-title {
  font-size: .78rem;
  font-weight: 700;
  color: var(--blackgray-700);
  line-height: 1.25;
}
.ep-card-desc {
  font-size: .68rem;
  color: var(--gray-600);
  line-height: 1.4;
}
.ep-card-check {
  position: absolute;
  top: .5rem;
  right: .5rem;
  width: 18px;
  height: 18px;
  background: var(--ep-color, var(--rouge));
  border-radius: 50%;
  color: white;
  display: none;
  align-items: center;
  justify-content: center;
}
.ep-card-check svg { width: 11px; height: 11px; }
.ep-card.ep-selected .ep-card-check { display: flex; }

/* Step 2: contact form */
.em-prog-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: var(--bluegray-50);
  border-left: 4px solid var(--ep-color, var(--rouge));
  padding: .55rem .85rem;
  font-size: .82rem;
  font-weight: 700;
  color: var(--blackgray-700);
}
.em-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
@media (max-width: 480px) { .em-field-row { grid-template-columns: 1fr; } }
.em-field { display: flex; flex-direction: column; gap: .3rem; }
.em-field label {
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--blackgray-700);
}
.em-req { color: var(--rouge); }
.em-field input,
.em-field select,
.em-field textarea {
  border: 1.5px solid var(--gray-300);
  padding: .6rem .85rem;
  font-family: var(--font);
  font-size: .875rem;
  color: var(--blackgray-700);
  background: var(--bluegray-50);
  outline: none;
  transition: border-color .2s, background .2s;
  width: 100%;
}
.em-field input:focus,
.em-field select:focus,
.em-field textarea:focus { border-color: var(--rouge); background: white; }
.em-field.em-field-error input,
.em-field.em-field-error select { border-color: var(--rouge) !important; }
.em-field input.em-field-error,
.em-field select.em-field-error { border-color: var(--rouge) !important; }
input.em-field-error,
select.em-field-error,
textarea.em-field-error { border-color: var(--rouge) !important; }
.em-field textarea { resize: vertical; min-height: 80px; }
.em-field select { appearance: none; -webkit-appearance: none; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%234b5563'%3E%3Cpath fill-rule='evenodd' d='M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z' clip-rule='evenodd'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .75rem center; background-size: 16px; padding-right: 2.5rem; }

/* Footer buttons */
.em-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .75rem;
  padding-top: .5rem;
}
.em-btn-next,
.em-btn-submit {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: var(--rouge);
  color: white;
  font-family: var(--font);
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .8rem 1.5rem;
  border: none;
  cursor: pointer;
  transition: background .2s;
}
.em-btn-next:hover,
.em-btn-submit:hover { background: var(--rouge-fonce); }
.em-btn-next:disabled,
.em-btn-submit:disabled { background: var(--gray-300); cursor: not-allowed; }
.em-btn-back {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: none;
  border: 1.5px solid var(--gray-300);
  color: var(--gray-600);
  font-family: var(--font);
  font-size: .78rem;
  font-weight: 600;
  padding: .75rem 1.1rem;
  cursor: pointer;
  transition: border-color .2s, color .2s;
}
.em-btn-back:hover { border-color: var(--rouge); color: var(--rouge); }

/* Success screen */
.em-success-body { justify-content: center; min-height: 300px; }
.em-success {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1rem;
  padding: 1rem 0 .5rem;
}
.em-success-icon {
  width: 64px;
  height: 64px;
  background: var(--menthe);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
}
.em-success-icon svg { width: 32px; height: 32px; }
.em-success h3 { font-size: 1.4rem; color: var(--blackgray-700); margin: 0; }
.em-success p  { font-size: .88rem; color: var(--gray-600); max-width: 380px; margin: 0; line-height: 1.6; }
.em-success-info {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  margin-top: .25rem;
}
.em-success-contact {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .82rem;
  color: var(--gray-600);
}
.em-success-contact a { color: var(--rouge); font-weight: 600; }
.em-btn-done {
  background: var(--rouge);
  color: white;
  font-family: var(--font);
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .8rem 2rem;
  border: none;
  cursor: pointer;
  margin-top: .5rem;
  transition: background .2s;
}
.em-btn-done:hover { background: var(--rouge-fonce); }

/* ============================================================
   PREMIUM REDESIGN — Calendar, Courses, Offerings, Why French
   ============================================================ */

/* ---- Events Editorial Layout ---- */
.events-editorial {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 2px;
  background: var(--bluegray-100);
  min-height: 480px;
}
.events-featured-card {
  position: relative;
  overflow: hidden;
  min-height: 480px;
  display: block;
  text-decoration: none;
}
.events-featured-card img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(.38);
  transition: transform .7s ease;
}
.events-featured-card:hover img { transform: scale(1.04); }
.events-featured-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(165deg, rgba(15,77,46,.18) 0%, rgba(10,6,7,.72) 70%);
}
.events-featured-body {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 2.5rem;
}
.event-pills {
  display: flex;
  gap: .45rem;
  margin-bottom: 1.25rem;
  flex-wrap: wrap;
}
.event-cat-pill {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  padding: .3rem .7rem;
  background: var(--blue);
  color: white;
}
.event-status-pill {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  padding: .3rem .7rem;
  background: var(--menthe);
  color: white;
}
.events-featured-date-block {
  display: flex;
  align-items: baseline;
  gap: .6rem;
  margin-bottom: .9rem;
}
.events-featured-date-block .efd-day {
  font-size: clamp(3rem, 6vw, 4.5rem);
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
  letter-spacing: -.04em;
}
.events-featured-date-block .efd-rest {
  font-size: .95rem;
  font-weight: 700;
  color: rgba(255,255,255,.65);
  text-transform: uppercase;
  letter-spacing: .1em;
  line-height: 1.4;
}
.events-featured-title {
  font-size: clamp(1.35rem, 2.8vw, 2rem);
  font-weight: 900;
  color: white;
  line-height: 1.15;
  letter-spacing: -.02em;
  margin-bottom: .9rem;
  max-width: 520px;
}
.events-featured-venue {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .78rem;
  color: rgba(255,255,255,.55);
}
.events-featured-venue svg { flex-shrink: 0; }

/* Side list */
.events-side-list {
  background: white;
  display: flex;
  flex-direction: column;
}
.event-list-item {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.4rem 1.5rem;
  border-bottom: 1px solid var(--bluegray-100);
  text-decoration: none;
  transition: background .2s;
  flex: 1;
}
.event-list-item:last-child { border-bottom: none; }
.event-list-item:hover { background: var(--bluegray-50); }
.event-list-datebox {
  flex-shrink: 0;
  width: 54px;
  text-align: center;
  padding: .5rem .25rem;
  border-top: 3px solid var(--blue);
  background: var(--bluegray-50);
}
.event-list-datebox .eld-day {
  display: block;
  font-size: 1.6rem;
  font-weight: 900;
  color: var(--blue);
  line-height: 1;
}
.event-list-datebox .eld-month {
  display: block;
  font-size: .58rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: var(--gray-500);
  margin-top: .15rem;
}
.event-list-info { flex: 1; min-width: 0; }
.event-list-cat {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: .25rem;
}
.event-list-title {
  font-size: .9rem;
  font-weight: 700;
  color: var(--blackgray-700);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.event-list-venue {
  font-size: .73rem;
  color: var(--gray-500);
  margin-top: .2rem;
  display: flex;
  align-items: center;
  gap: .3rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.event-list-arrow {
  flex-shrink: 0;
  color: var(--bluegray-400);
  transition: transform .2s, color .2s;
}
.event-list-item:hover .event-list-arrow { transform: translateX(3px); color: var(--blue); }

/* Category filter refined */
.filter-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--bluegray-100);
  margin-bottom: 2rem;
  overflow-x: auto;
  scrollbar-width: none;
}
.filter-tabs::-webkit-scrollbar { display: none; }
.filter-tab {
  flex-shrink: 0;
  padding: .7rem 1.25rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--gray-500);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  cursor: pointer;
  transition: color .2s, border-color .2s;
  white-space: nowrap;
}
.filter-tab:hover { color: var(--blue); }
.filter-tab.active { color: var(--blue); border-bottom-color: var(--blue); }

/* Premium course cards */
.courses-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .courses-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .courses-grid { grid-template-columns: 1fr; } }

.course-card-p {
  display: flex;
  flex-direction: column;
  background: white;
  box-shadow: 0 1px 4px rgba(15,77,46,.07), 0 4px 16px rgba(15,77,46,.05);
  transition: transform .25s, box-shadow .25s;
  text-decoration: none;
  overflow: hidden;
}
.course-card-p:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 32px rgba(15,77,46,.14);
}
.course-card-p .cc-img {
  position: relative;
  height: 210px;
  overflow: hidden;
}
.course-card-p .cc-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .55s;
}
.course-card-p:hover .cc-img img { transform: scale(1.06); }
.course-card-p .cc-level {
  position: absolute;
  top: .75rem; left: .75rem;
  background: var(--blue);
  color: white;
  font-size: .58rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: .3rem .65rem;
}
.course-card-p .cc-free {
  position: absolute;
  top: .75rem; right: .75rem;
  background: var(--menthe);
  color: white;
  font-size: .58rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: .3rem .65rem;
}
.course-card-p .cc-body {
  padding: 1.25rem 1.25rem 1rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.course-card-p .cc-name {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--blackgray-700);
  line-height: 1.25;
  margin-bottom: .5rem;
}
.course-card-p .cc-date {
  font-size: .75rem;
  color: var(--gray-500);
  display: flex;
  align-items: center;
  gap: .35rem;
  margin-bottom: .75rem;
}
.course-card-p .cc-date svg { flex-shrink: 0; }
.course-card-p .cc-enrol {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: .9rem;
  border-top: 1px solid var(--bluegray-100);
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--blue);
}

/* Offering bento grid */
.offering-bento {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2px;
  background: var(--bluegray-100);
}
@media (max-width: 960px) { .offering-bento { grid-template-columns: 1fr 1fr; } }
@media (max-width: 580px) { .offering-bento { grid-template-columns: 1fr; } }
.offering-tile {
  position: relative;
  min-height: 440px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.offering-tile img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(.32);
  transition: transform .65s ease;
}
.offering-tile:hover img { transform: scale(1.05); }
.offering-tile-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10,6,7,.85) 0%, rgba(10,6,7,.08) 55%);
}
.offering-tile-body {
  position: relative;
  z-index: 2;
  padding: 2rem;
}
.offering-tile-tag {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--tournesol);
  margin-bottom: .75rem;
  display: block;
}
.offering-tile-title {
  font-size: 1.45rem;
  font-weight: 900;
  color: white;
  line-height: 1.2;
  letter-spacing: -.02em;
  margin-bottom: .75rem;
  max-width: 280px;
}
.offering-tile-desc {
  font-size: .85rem;
  color: rgba(255,255,255,.68);
  line-height: 1.75;
  max-width: 300px;
  margin-bottom: 1.5rem;
}
.offering-tile-links { display: flex; flex-wrap: wrap; gap: .5rem; }
.offering-tile-link {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: white;
  border: 1.5px solid rgba(255,255,255,.35);
  padding: .5rem 1rem;
  text-decoration: none;
  transition: background .2s, border-color .2s;
}
.offering-tile-link:hover { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.65); }

/* Why French feature items */
.why-feature {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--bluegray-100);
}
.why-feature:last-child { border-bottom: none; }
.why-feature-num {
  flex-shrink: 0;
  width: 40px; height: 40px;
  display: flex; align-items: center; justify-content: center;
  background: var(--blue);
  color: white;
  font-size: .85rem;
  font-weight: 900;
  letter-spacing: -.01em;
}
.why-feature-content h4 { font-size: .95rem; font-weight: 800; margin-bottom: .3rem; }
.why-feature-content p { font-size: .84rem; color: var(--gray-600); line-height: 1.6; margin: 0; }

/* Section header row utility */
.section-header-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 2.5rem;
}
.see-all-link {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--blue);
  white-space: nowrap;
  text-decoration: none;
}
.see-all-link:hover { opacity: .75; }

/* Responsive: events editorial */
@media (max-width: 960px) {
  .events-editorial {
    grid-template-columns: 1fr;
  }
  .events-side-list {
    flex-direction: row;
    flex-wrap: wrap;
  }
  .event-list-item {
    flex: 1 1 260px;
  }
}
@media (max-width: 600px) {
  .events-featured-date-block .efd-day { font-size: 2.8rem; }
  .events-featured-body { padding: 1.5rem; }
  .offering-tile { min-height: 320px; }
}

/* ============================================================
   PREMIUM REDESIGN — Events Recap, Testimonials, CTA, Partners
   ============================================================ */

/* ---- Events Recap Editorial Grid ---- */
.events-recap-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2px;
  background: var(--bluegray-100);
}
.events-recap-grid .erc-wide {
  grid-column: span 2;
}
@media (max-width: 900px) {
  .events-recap-grid { grid-template-columns: 1fr 1fr; }
  .events-recap-grid .erc-wide { grid-column: span 2; }
}
@media (max-width: 580px) {
  .events-recap-grid { grid-template-columns: 1fr; }
  .events-recap-grid .erc-wide { grid-column: span 1; }
}
.event-recap-card {
  position: relative;
  min-height: 300px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  text-decoration: none;
}
.events-recap-grid .erc-wide { min-height: 400px; }
.event-recap-card img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(.35);
  transition: transform .65s ease, filter .65s ease;
}
.event-recap-card:hover img { transform: scale(1.05); filter: brightness(.45); }
.event-recap-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10,6,7,.9) 0%, rgba(10,6,7,.05) 55%);
}
.event-recap-body {
  position: relative;
  z-index: 2;
  padding: 1.5rem;
}
.event-recap-meta {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: .65rem;
}
.event-recap-cat {
  font-size: .58rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  padding: .25rem .6rem;
  background: var(--blue);
  color: white;
}
.event-recap-date {
  font-size: .68rem;
  font-weight: 600;
  color: rgba(255,255,255,.55);
  letter-spacing: .04em;
}
.event-recap-title {
  font-size: clamp(.9rem, 1.6vw, 1.15rem);
  font-weight: 800;
  color: white;
  line-height: 1.3;
  margin-bottom: .5rem;
}
.events-recap-grid .erc-wide .event-recap-title {
  font-size: clamp(1.15rem, 2.2vw, 1.55rem);
}
.event-recap-cat-line {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .7rem;
  color: rgba(255,255,255,.5);
}
.event-recap-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
/* Header chips (top-right) */
.event-recap-chip {
  position: absolute;
  top: 1rem; right: 1rem;
  z-index: 3;
  font-size: .58rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: .28rem .65rem;
  background: rgba(10,6,7,.65);
  color: white;
  border: 1px solid rgba(255,255,255,.2);
  backdrop-filter: blur(4px);
}

/* ---- Premium Testimonials ---- */
.testimonials-section {
  background: var(--blackgray-700);
  padding: 5rem 0;
}
.testimonials-section .section-label { color: var(--tournesol); }
.testimonials-section .c-title-h2 { color: white; }

.testimonial-p {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  position: relative;
  transition: background .25s, border-color .25s;
}
.testimonial-p:hover {
  background: rgba(255,255,255,.07);
  border-color: rgba(255,255,255,.15);
}
.testimonial-p-quote {
  font-size: 4rem;
  font-weight: 900;
  color: var(--blue);
  line-height: .7;
  letter-spacing: -.04em;
  user-select: none;
  opacity: .9;
}
.testimonial-p-stars {
  display: flex;
  gap: .2rem;
}
.testimonial-p-stars i {
  font-size: .75rem;
  color: var(--tournesol);
}
.testimonial-p-text {
  font-size: .9rem;
  color: rgba(255,255,255,.8);
  line-height: 1.8;
  flex: 1;
  font-style: italic;
}
.testimonial-p-author {
  display: flex;
  align-items: center;
  gap: .9rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,.08);
}
.testimonial-p-avatar {
  width: 42px; height: 42px;
  background: var(--blue);
  color: white;
  font-size: .82rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  letter-spacing: .02em;
}
.testimonial-p-name {
  font-weight: 700;
  font-size: .9rem;
  color: white;
  margin-bottom: .15rem;
}
.testimonial-p-level {
  font-size: .7rem;
  font-weight: 600;
  color: var(--tournesol);
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* ---- Premium CTA section ---- */
.cta-premium {
  position: relative;
  overflow: hidden;
  background: var(--blackgray-800);
  padding: 6rem 0;
}
.cta-premium-bg {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(.18);
  transform: scale(1.05);
}
.cta-premium-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(15,77,46,.25) 0%, rgba(10,6,7,.5) 100%);
}
.cta-premium-inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}
@media (max-width: 768px) {
  .cta-premium-inner { grid-template-columns: 1fr; gap: 3rem; }
}
.cta-premium-label { color: var(--tournesol); }
.cta-premium h2 {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  font-weight: 900;
  color: white;
  letter-spacing: -.03em;
  line-height: 1.1;
  margin-bottom: 1.25rem;
}
.cta-premium p {
  color: rgba(255,255,255,.7);
  line-height: 1.8;
  margin-bottom: 2rem;
  font-size: .95rem;
}
.cta-premium-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px;
  background: rgba(255,255,255,.06);
}
.cta-stat {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.06);
  padding: 1.75rem 1.5rem;
  text-align: center;
}
.cta-stat-num {
  display: block;
  font-size: 2rem;
  font-weight: 900;
  color: var(--tournesol);
  letter-spacing: -.04em;
  line-height: 1;
  margin-bottom: .35rem;
}
.cta-stat-label {
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,.5);
}

/* ---- Premium Partners Grid ---- */
.partners-premium {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 2px;
  background: var(--bluegray-200);
}
@media (max-width: 960px) { .partners-premium { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 600px) { .partners-premium { grid-template-columns: repeat(3, 1fr); } }
.partner-tile {
  background: white;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.75rem 1.25rem;
  transition: background .2s;
  min-height: 90px;
}
.partner-tile:hover { background: var(--bluegray-50); }
.partner-tile img {
  max-height: 48px;
  max-width: 100%;
  object-fit: contain;
  filter: grayscale(100%);
  opacity: .65;
  transition: filter .3s, opacity .3s;
}
.partner-tile:hover img { filter: grayscale(0%); opacity: 1; }

/* ============================================================
   REDESIGN v2 — Events Recap, Testimonials, CTA
   ============================================================ */

/* ---- Events cards (clean light style) ---- */
.ev-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .ev-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .ev-grid { grid-template-columns: 1fr; } }

.ev-card {
  display: flex;
  flex-direction: column;
  background: white;
  border: 1px solid var(--bluegray-100);
  text-decoration: none;
  transition: box-shadow .25s, transform .25s;
  overflow: hidden;
}
.ev-card:hover {
  box-shadow: 0 8px 28px rgba(15,77,46,.12);
  transform: translateY(-3px);
}
.ev-card-img {
  position: relative;
  height: 200px;
  overflow: hidden;
}
.ev-card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .55s ease;
}
.ev-card:hover .ev-card-img img { transform: scale(1.06); }
.ev-card-badge {
  position: absolute;
  top: .75rem; left: .75rem;
  font-size: .58rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: .28rem .65rem;
  background: var(--blue);
  color: white;
}
.ev-card-badge.badge-green { background: var(--menthe); }
.ev-card-badge.badge-yellow { background: var(--tournesol); color: var(--blackgray-700); }
.ev-card-body {
  padding: 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.ev-card-meta {
  display: flex;
  align-items: center;
  gap: .5rem;
}
.ev-card-cat {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
}
.ev-card-date {
  font-size: .72rem;
  color: var(--gray-500);
}
.ev-card-date::before { content: '·'; margin-right: .5rem; color: var(--bluegray-400); }
.ev-card-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--blackgray-700);
  line-height: 1.35;
  flex: 1;
}
.ev-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: .9rem;
  border-top: 1px solid var(--bluegray-100);
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--blue);
}
.ev-card-footer svg { flex-shrink: 0; transition: transform .2s; }
.ev-card:hover .ev-card-footer svg { transform: translateX(3px); }

/* Wide ev-card (featured row) */
.ev-card-wide {
  grid-column: span 2;
  flex-direction: row;
}
.ev-card-wide .ev-card-img {
  width: 52%;
  height: auto;
  min-height: 260px;
  flex-shrink: 0;
}
.ev-card-wide .ev-card-img img { height: 100%; }
.ev-card-wide .ev-card-body { padding: 2rem; justify-content: center; }
.ev-card-wide .ev-card-title { font-size: 1.25rem; }
@media (max-width: 900px) {
  .ev-card-wide { grid-column: span 2; flex-direction: column; }
  .ev-card-wide .ev-card-img { width: 100%; height: 220px; min-height: 0; }
}
@media (max-width: 560px) {
  .ev-card-wide { grid-column: span 1; }
}

/* ---- Testimonials v2 (clean light) ---- */
.tq-section {
  background: var(--bluegray-50);
  padding: 5rem 0;
}
.tq-card {
  background: white;
  padding: 2rem;
  border-left: 4px solid var(--blue);
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  transition: box-shadow .25s;
}
.tq-card:hover { box-shadow: 0 6px 24px rgba(15,77,46,.1); }
.tq-card-quote {
  font-size: .95rem;
  color: var(--gray-600);
  line-height: 1.85;
  flex: 1;
  font-style: italic;
  position: relative;
  padding-left: 1.5rem;
}
.tq-card-quote::before {
  content: '\201C';
  position: absolute;
  left: 0; top: -.1rem;
  font-size: 2rem;
  font-weight: 900;
  color: var(--blue);
  line-height: 1;
  font-style: normal;
}
.tq-card-author {
  display: flex;
  align-items: center;
  gap: .85rem;
}
.tq-card-avatar {
  width: 40px; height: 40px;
  background: var(--blue);
  color: white;
  font-size: .78rem;
  font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  letter-spacing: .02em;
}
.tq-card-name { font-weight: 700; font-size: .9rem; color: var(--blackgray-700); }
.tq-card-level {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--blue);
}

/* ---- CTA v2 (clean bold block) ---- */
.cta-clean {
  background: var(--blackgray-700);
  padding: 5.5rem 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-clean::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--blue) 0%, var(--tuile) 40%, var(--tournesol) 70%, var(--menthe) 100%);
}
.cta-clean .section-label { color: var(--tournesol); }
.cta-clean h2 {
  font-size: clamp(2rem, 5vw, 3.25rem);
  font-weight: 900;
  color: white;
  letter-spacing: -.04em;
  line-height: 1.1;
  margin-bottom: 1.25rem;
}
.cta-clean p {
  color: rgba(255,255,255,.65);
  line-height: 1.8;
  font-size: .95rem;
  max-width: 560px;
  margin: 0 auto 2.5rem;
}
.cta-clean-btns {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* ======================================================
   VOIX D'ÉTUDIANTS — clean white testimonial cards
   ====================================================== */
.voix-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 960px) { .voix-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .voix-grid { grid-template-columns: 1fr; } }

.voix-card {
  background: #fff;
  border: 1px solid #eee;
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  transition: box-shadow .25s, transform .25s;
}
.voix-card:hover {
  box-shadow: 0 8px 30px rgba(0,0,0,.09);
  transform: translateY(-3px);
}

.voix-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.voix-stars {
  display: flex;
  gap: .2rem;
  color: var(--tournesol);
  font-size: .88rem;
}
.voix-level {
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
  background: #F5F8F6;
  padding: .2rem .6rem;
  border: 1px solid #b8d8c0;
}

.voix-text {
  font-size: .9rem;
  color: #444;
  line-height: 1.8;
  flex: 1;
  font-style: italic;
}

.voix-author {
  display: flex;
  align-items: center;
  gap: .85rem;
  padding-top: .75rem;
  border-top: 1px solid #f0f0f0;
}
.voix-avatar {
  width: 40px;
  height: 40px;
  background: var(--blue);
  color: #fff;
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .05em;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.voix-name {
  font-weight: 700;
  font-size: .88rem;
  color: var(--blackgray-700);
  margin: 0;
}
.voix-sub {
  font-size: .75rem;
  color: #888;
  margin: .15rem 0 0;
}

/* ======================================================
   CTA LIGHT — split layout, light grey background
   ====================================================== */
.cta-light-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
@media (max-width: 768px) {
  .cta-light-inner {
    grid-template-columns: 1fr;
    gap: 2.5rem;
    text-align: center;
  }
}

.cta-light-text {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.cta-light-heading {
  font-size: clamp(1.9rem, 4vw, 3rem);
  font-weight: 900;
  color: var(--blackgray-700);
  letter-spacing: -.04em;
  line-height: 1.1;
  margin: 0;
}

.cta-light-sub {
  font-size: .95rem;
  color: #555;
  line-height: 1.8;
  max-width: 480px;
}
@media (max-width: 768px) { .cta-light-sub { margin: 0 auto; } }

/* Stats grid on the right */
.cta-light-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

.cta-light-stat {
  background: #fff;
  border: 1px solid #e8e8e8;
  padding: 1.5rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  transition: box-shadow .2s;
}
.cta-light-stat:hover { box-shadow: 0 4px 18px rgba(0,0,0,.07); }

.cls-num {
  font-size: 2rem;
  font-weight: 900;
  color: var(--blue);
  letter-spacing: -.04em;
  line-height: 1;
}
.cls-label {
  font-size: .78rem;
  color: #666;
  text-transform: uppercase;
  letter-spacing: .8px;
  font-weight: 600;
}

/* ======================================================
   ABOUT US PAGE
   ====================================================== */

/* Hero with background image */
.about-hero {
  background-image:
    linear-gradient(135deg, rgba(15,77,46,.88) 0%, rgba(8,53,31,.82) 60%, rgba(140,10,20,.78) 100%),
    url('https://afmombasa.org/wp-content/uploads/2025/11/Outdoor-Stage-scaled.jpg');
  background-size: cover;
  background-position: center;
}

/* Our Story grid */
.about-story-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}
@media (max-width: 768px) {
  .about-story-grid { grid-template-columns: 1fr; gap: 3rem; }
}

.about-story-body {
  color: var(--gray-600);
  line-height: 1.85;
  margin-bottom: 1.25rem;
  font-size: .95rem;
}

/* Milestone timeline */
.about-milestones {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0;
  border-left: 2px solid #eee;
  padding-left: 1.5rem;
}
.about-milestone {
  position: relative;
  padding: .85rem 0;
  display: flex;
  flex-direction: column;
  gap: .2rem;
}
.about-milestone::before {
  content: '';
  position: absolute;
  left: -1.6rem;
  top: 1.1rem;
  width: 10px;
  height: 10px;
  background: var(--blue);
}
.aml-year {
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--blue);
}
.aml-text {
  font-size: .875rem;
  color: var(--gray-600);
  line-height: 1.6;
}

/* Story image */
.about-story-img-wrap {
  position: relative;
}
.about-story-img {
  width: 100%;
  height: 440px;
  object-fit: cover;
  display: block;
}
.about-story-badge {
  position: absolute;
  bottom: -1.25rem;
  left: -1.25rem;
  background: var(--blue);
  color: white;
  padding: 1.25rem 1.5rem;
  font-weight: 900;
  line-height: 1.2;
}
.asb-year {
  display: block;
  font-size: 2rem;
  color: var(--tournesol);
  letter-spacing: -.03em;
}
.asb-label {
  display: block;
  font-size: .72rem;
  font-weight: 500;
  opacity: .8;
  margin-top: .2rem;
}
.about-story-badge-2 {
  position: absolute;
  top: 1.5rem;
  right: -1rem;
  background: var(--blackgray-700);
  color: white;
  padding: 1rem 1.25rem;
  text-align: center;
}
.asb2-num {
  display: block;
  font-size: 1.6rem;
  font-weight: 900;
  color: var(--tournesol);
  letter-spacing: -.03em;
  line-height: 1;
}
.asb2-num sup { font-size: .7em; }
.asb2-label {
  display: block;
  font-size: .65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1px;
  opacity: .7;
  margin-top: .35rem;
}

/* Mission / Values cards */
.mvcard {
  background: #fff;
  border: 1px solid #eee;
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  transition: box-shadow .25s, transform .25s;
}
.mvcard:hover {
  box-shadow: 0 8px 28px rgba(0,0,0,.08);
  transform: translateY(-3px);
}
.mvcard-icon {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.mvcard-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0;
}
.mvcard-body {
  font-size: .88rem;
  color: var(--gray-600);
  line-height: 1.75;
  margin: 0;
}

/* What We Offer grid */
.about-offer-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}
@media (max-width: 960px) { .about-offer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .about-offer-grid { grid-template-columns: 1fr; } }

.about-offer-tile {
  background: #fff;
  border: 1px solid #eee;
  border-top: 3px solid var(--tile-accent, var(--blue));
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: .85rem;
  transition: box-shadow .25s, transform .25s;
}
.about-offer-tile:hover {
  box-shadow: 0 6px 24px rgba(0,0,0,.08);
  transform: translateY(-3px);
}
.aot-icon {
  width: 44px;
  height: 44px;
  background: #F5F8F6;
  color: var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
}
.aot-title {
  font-size: .95rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0;
}
.aot-body {
  font-size: .84rem;
  color: var(--gray-600);
  line-height: 1.7;
  flex: 1;
  margin: 0;
}
.aot-link {
  font-size: .78rem;
  font-weight: 700;
  color: var(--blue);
  text-transform: uppercase;
  letter-spacing: .06em;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  text-decoration: none;
  margin-top: .25rem;
}
.aot-link:hover { text-decoration: underline; }

/* Leadership team cards */
.team-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 768px) { .team-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .team-grid { grid-template-columns: 1fr; } }

.team-card {
  background: #fff;
  border: 1px solid #eee;
  overflow: hidden;
  transition: box-shadow .25s, transform .25s;
}
.team-card:hover {
  box-shadow: 0 8px 28px rgba(0,0,0,.09);
  transform: translateY(-3px);
}
.team-card-top {
  height: 80px;
  display: flex;
  align-items: flex-end;
  padding: 0 1.75rem 0;
}
.team-avatar {
  width: 64px;
  height: 64px;
  background: rgba(255,255,255,.25);
  border: 3px solid rgba(255,255,255,.5);
  color: white;
  font-size: 1.5rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: translateY(50%);
  flex-shrink: 0;
}
.team-card-body {
  padding: 2.5rem 1.75rem 1.75rem;
}
.team-name {
  font-size: 1rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0 0 .25rem;
}
.team-role {
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--blue);
  margin: 0 0 1rem;
}
.team-desc {
  font-size: .875rem;
  color: var(--gray-600);
  line-height: 1.7;
  margin: 0;
}

/* Campus bento gallery */
.campus-bento {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 220px 220px;
  gap: 1rem;
}
@media (max-width: 768px) {
  .campus-bento {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
  }
  .campus-tile--large { grid-column: span 2; }
}
@media (max-width: 480px) {
  .campus-bento { grid-template-columns: 1fr; }
  .campus-tile--large { grid-column: span 1; }
}

.campus-tile {
  position: relative;
  overflow: hidden;
}
.campus-tile--large {
  grid-row: span 2;
}
.campus-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.campus-tile:hover img { transform: scale(1.04); }

.campus-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(to top, rgba(0,0,0,.65) 0%, transparent 100%);
  color: white;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 1.5rem .85rem .65rem;
  transform: translateY(100%);
  transition: transform .3s ease;
}
.campus-tile:hover .campus-caption { transform: translateY(0); }

/* ============================================================
   GINA GROUP SERVICES — Custom Additions
   ============================================================ */

/* --- Utility bar: show address on wider screens --- */
.util-address { display: none; }
@media (min-width: 900px) { .util-address { display: inline-flex; } }

/* --- Social icons in utility bar --- */
.header-social { display: flex; align-items: center; gap: .35rem; }
.header-social a {
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  color: var(--gray-600);
  font-size: .8rem;
  transition: color .2s;
  border: 1px solid var(--gray-300);
}
.header-social a:hover { color: var(--blue); border-color: var(--blue); }

/* --- Logo: IFRDC / AFM — primary bar + coloured mark (JPEG, no invert) --- */
.site-logo-box {
  background: var(--rouge) !important;
  border-right: 1px solid rgba(255,255,255,.12);
}

.site-logo-text .logo-name {
  color: var(--rouge) !important;
}
.site-logo-text .logo-sub {
  color: var(--rouge-fonce) !important;
}

/* Footer uses .site-footer (IFRDC / AFM-style) — see block “SITE FOOTER — IFRDC” below */

/* --- Services section cards --- */
.services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 960px) { .services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .services-grid { grid-template-columns: 1fr; } }

.service-card {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  padding: 2rem;
  display: flex; flex-direction: column; gap: 1rem;
  transition: box-shadow .25s, transform .25s;
  border-top: 3px solid var(--blue);
}
.service-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
.service-card-icon {
  width: 56px; height: 56px;
  background: var(--rouge-pale);
  color: var(--blue);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
}
.service-card-title { font-size: 1.1rem; font-weight: 800; color: var(--blackgray-700); margin: 0; }
.service-card-body { font-size: .875rem; color: var(--gray-600); line-height: 1.75; margin: 0; flex: 1; }
.service-card-link {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--blue); text-decoration: none;
}
.service-card-link:hover { text-decoration: underline; }

/* --- Projects / Réalisations grid --- */
.projects-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 960px) { .projects-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .projects-grid { grid-template-columns: 1fr; } }

.project-card {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .3s, transform .3s;
}
.project-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
.project-card-img { aspect-ratio: 4/3; overflow: hidden; background: var(--blackgray-700); position: relative; }
.project-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.project-card:hover .project-card-img img { transform: scale(1.06); }
.project-card-status-badge {
  position: absolute; top: .75rem; right: .75rem;
  font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  padding: .25rem .65rem; color: white;
}
.project-card-status-badge.completed { background: var(--menthe); }
.project-card-status-badge.ongoing { background: var(--tuile); }
.project-card-status-badge.planned { background: var(--gray-600); }
.project-card-body { padding: 1.5rem; }
.project-card-sector {
  font-size: .65rem; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--blue); margin-bottom: .5rem; display: block;
}
.project-card-title { font-size: 1.05rem; font-weight: 700; color: var(--blackgray-700); margin: 0 0 .5rem; }
.project-card-meta { font-size: .82rem; color: var(--gray-600); display: flex; align-items: center; gap: .35rem; }

/* --- Real estate / Immobilier grid --- */
.immo-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 960px) { .immo-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .immo-grid { grid-template-columns: 1fr; } }

.immo-card {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .3s, transform .3s;
}
.immo-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
.immo-card-img { aspect-ratio: 4/3; overflow: hidden; background: var(--blackgray-700); position: relative; }
.immo-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.immo-card:hover .immo-card-img img { transform: scale(1.06); }
.immo-card-type-badge {
  position: absolute; top: .75rem; left: .75rem;
  font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  padding: .25rem .65rem; color: white; background: var(--blue);
}
.immo-card-price-badge {
  position: absolute; bottom: .75rem; right: .75rem;
  font-size: .75rem; font-weight: 800;
  padding: .4rem .85rem; color: white; background: var(--tuile);
}
.immo-card-body { padding: 1.5rem; }
.immo-card-title { font-size: 1rem; font-weight: 700; color: var(--blackgray-700); margin: 0 0 .5rem; }
.immo-card-loc { font-size: .82rem; color: var(--gray-600); display: flex; align-items: center; gap: .35rem; margin-bottom: .85rem; }
.immo-card-features { display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.immo-card-feat { font-size: .8rem; color: var(--gray-600); display: flex; align-items: center; gap: .3rem; }
.immo-card-cta {
  display: block;
  text-align: center;
  background: var(--blue);
  color: white;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .085em;
  padding: .65rem 1rem;
  text-decoration: none;
  transition: background .2s, transform .12s ease, box-shadow .2s;
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.immo-card-cta:hover {
  background: var(--rouge-fonce);
  color: white;
  transform: translate(-1px, -1px);
}

/* --- Page hero / breadcrumb --- */
.page-hero {
  padding: 4rem 0 3.5rem;
  background: var(--blue);
  position: relative;
  overflow: hidden;
}
.page-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(8,53,31,.6) 0%, rgba(15,77,46,.1) 100%);
  z-index: 1;
}
.page-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  filter: brightness(.48);
}
.page-hero-inner {
  position: relative;
  z-index: 2;
}
.page-hero h1 {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  font-weight: 900;
  color: white;
  margin-bottom: .75rem;
  line-height: 1.2;
}
.page-hero-sub { font-size: .95rem; color: rgba(255,255,255,.75); max-width: 560px; line-height: 1.7; }
.breadcrumb {
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  font-size: .78rem; margin-bottom: 1.25rem;
}
.breadcrumb a { color: rgba(255,255,255,.65); text-decoration: none; }
.breadcrumb a:hover { color: white; }
.breadcrumb-sep { color: rgba(255,255,255,.35); }
.breadcrumb-current { color: rgba(255,255,255,.9); font-weight: 600; }

/* --- Stats banner --- */
.stats-banner {
  background: var(--blue);
  padding: 2.5rem 0;
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  text-align: center;
}
@media (max-width: 768px) { .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } }
@media (max-width: 400px) { .stats-grid { grid-template-columns: 1fr 1fr; } }
.stat-number {
  display: block;
  font-size: clamp(2rem, 4vw, 2.75rem);
  font-weight: 900;
  color: white;
  letter-spacing: -.03em;
  line-height: 1;
  margin-bottom: .35rem;
}
.stat-label { font-size: .8rem; color: rgba(255,255,255,.7); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }

/* --- CTA dark section --- */
.cta-dark {
  background: var(--blackgray-700);
  padding: 5rem 0;
}
.cta-dark-inner { text-align: center; max-width: 680px; margin: 0 auto; }
.cta-dark h2 { font-size: clamp(1.75rem, 4vw, 2.75rem); font-weight: 900; color: white; margin-bottom: 1rem; line-height: 1.2; }
.cta-dark p { font-size: .95rem; color: rgba(255,255,255,.65); margin-bottom: 2rem; line-height: 1.8; }
.cta-dark-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* --- Section header row (title + see-all link) --- */
.section-header-row {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem;
  margin-bottom: 2.5rem; flex-wrap: wrap;
}
.see-all-link {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--blue); text-decoration: none;
  white-space: nowrap;
}
.see-all-link:hover { text-decoration: underline; }

/* --- WhatsApp floating button --- */
.whatsapp-float {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 100;
  width: 54px; height: 54px;
  background: #25D366;
  color: white;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
  box-shadow: 0 4px 20px rgba(37,211,102,.4);
  transition: transform .2s, box-shadow .2s;
  border-radius: 50%;
  text-decoration: none;
}
.whatsapp-float:hover { transform: scale(1.1); box-shadow: 0 6px 28px rgba(37,211,102,.5); color: white; }

/* --- Service detail page --- */
.service-detail-hero { background-size: cover; background-position: center; }
.service-benefits { list-style: none; display: flex; flex-direction: column; gap: .65rem; }
.service-benefits li { display: flex; align-items: flex-start; gap: .65rem; font-size: .9rem; color: var(--gray-600); line-height: 1.6; }
.service-benefits li::before { content: '✓'; color: var(--blue); font-weight: 900; flex-shrink: 0; font-size: 1rem; }

/* --- Contact page cards --- */
.contact-cards-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  margin-bottom: 4rem;
}
@media (max-width: 960px) { .contact-cards-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .contact-cards-grid { grid-template-columns: 1fr; } }

.contact-card-tile {
  background: var(--white);
  border: 1px solid var(--bluegray-100);
  border-top: 3px solid var(--blue);
  padding: 2rem;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: .85rem;
  transition: box-shadow .25s, transform .25s;
}
.contact-card-tile:hover { box-shadow: var(--shadow-lg); transform: translateY(-3px); }
.contact-card-tile-icon {
  width: 54px; height: 54px;
  background: var(--rouge-pale);
  color: var(--blue);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
}
.contact-card-tile h4 { font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 1.5px; color: var(--gray-500); margin: 0; }
.contact-card-tile p, .contact-card-tile a { font-size: .9rem; color: var(--blackgray-700); margin: 0; text-decoration: none; line-height: 1.6; }
.contact-card-tile a:hover { color: var(--blue); }

/* --- Values cards --- */
.values-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; }
@media (max-width: 960px) { .values-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 560px) { .values-grid { grid-template-columns: 1fr 1fr; } }
.value-card {
  background: var(--blue);
  color: white;
  padding: 1.75rem 1.25rem;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: .75rem;
}
.value-card-icon { font-size: 1.6rem; }
.value-card-title { font-size: .85rem; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; }
.value-card-body { font-size: .78rem; color: rgba(255,255,255,.75); line-height: 1.6; }

/* --- Clients section --- */
.clients-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
@media (max-width: 768px) { .clients-grid { grid-template-columns: repeat(2, 1fr); } }
.client-card {
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  padding: 2rem;
  display: flex; flex-direction: column; align-items: center; gap: .75rem; text-align: center;
}
.client-card-icon { font-size: 2rem; color: var(--blue); }
.client-card-title { font-size: .9rem; font-weight: 800; color: var(--blackgray-700); }
.client-card-desc { font-size: .82rem; color: var(--gray-600); line-height: 1.7; }

/* --- Smooth section transitions --- */
.section-white { background: var(--white); }
.section-gray { background: var(--bluegray-50); }
.section-dark { background: var(--blackgray-700); }
.section-green { background: var(--blue); }

/* --- Map placeholder --- */
.map-placeholder {
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  height: 380px;
  display: flex; align-items: center; justify-content: center;
  flex-direction: column; gap: 1rem;
  color: var(--gray-500);
}
.map-placeholder i { font-size: 3rem; color: var(--blue); }
.map-placeholder p { font-size: .9rem; }

/* --- WhatsApp CTA button --- */
.btn-whatsapp {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: #25D366;
  color: white;
  padding: .75rem 1.5rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .085em;
  text-decoration: none;
  transition: background .2s, transform .12s ease, box-shadow .2s;
  box-shadow: 4px 4px 0 rgba(37,211,102,.35);
}
.btn-whatsapp:hover {
  background: #1da750;
  color: white;
  transform: translate(-1px, -1px);
}

/* --- Btn variants — IFRDC / AFM tactile style --- */
.btn-gina-primary {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  justify-content: center;
  background: var(--blue);
  color: white;
  padding: .85rem 1.85rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .085em;
  text-decoration: none;
  transition: background .2s, transform .12s ease, box-shadow .2s;
  border: none;
  cursor: pointer;
  box-shadow: 4px 4px 0 rgba(15,77,46,.22);
}
.btn-gina-primary:hover {
  background: var(--rouge-fonce);
  color: white;
  transform: translate(-1px, -1px);
  box-shadow: 5px 5px 0 rgba(15,77,46,.28);
}

.btn-gina-outline {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: transparent;
  color: white;
  border: 2px solid rgba(255,255,255,.65);
  padding: .82rem 1.75rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .085em;
  text-decoration: none;
  transition: all .2s;
  cursor: pointer;
  box-shadow: 3px 3px 0 rgba(255,255,255,.08);
}
.btn-gina-outline:hover {
  background: white;
  color: var(--blue);
  border-color: white;
  transform: translate(-1px, -1px);
}

.btn-gina-orange {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  justify-content: center;
  background: var(--tuile);
  color: white;
  padding: .85rem 1.85rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .085em;
  text-decoration: none;
  transition: background .2s, transform .12s ease, box-shadow .2s;
  border: none;
  cursor: pointer;
  box-shadow: 4px 4px 0 rgba(255,75,54,.28);
}
.btn-gina-orange:hover {
  background: #e03a25;
  color: white;
  transform: translate(-1px, -1px);
}

/* --- Immo detail page --- */
.immo-gallery {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: .5rem;
  margin-bottom: 2rem;
}
@media (max-width: 768px) { .immo-gallery { grid-template-columns: 1fr; } }
.immo-gallery-main { aspect-ratio: 4/3; overflow: hidden; background: var(--blackgray-700); }
.immo-gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.immo-gallery-side { display: grid; grid-template-rows: 1fr 1fr; gap: .5rem; }
.immo-gallery-side-img { overflow: hidden; background: var(--blackgray-600); }
.immo-gallery-side-img img { width: 100%; height: 100%; object-fit: cover; }

.immo-detail-features { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.5rem 0; }
.immo-detail-feat {
  display: flex; align-items: center; gap: .5rem;
  background: var(--bluegray-50); border: 1px solid var(--bluegray-100);
  padding: .5rem 1rem; font-size: .84rem; color: var(--blackgray-700); font-weight: 600;
}
.immo-detail-feat i { color: var(--blue); }

/* --- Enquiry form card --- */
.enquiry-form-card {
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  padding: 2rem;
  position: sticky;
  top: calc(var(--header-h) + var(--stripe-h) + 1.5rem);
}
.enquiry-form-card h3 {
  font-size: 1.1rem; font-weight: 800; color: var(--blackgray-700);
  margin-bottom: 1.5rem; padding-bottom: 1rem;
  border-bottom: 2px solid var(--blue);
}

/* --- Section py overrides --- */
.py-8 { padding-top: 5rem; padding-bottom: 5rem; }
.py-6 { padding-top: 4rem; padding-bottom: 4rem; }
.py-4 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.mt-8 { margin-top: 5rem; }
.mb-6 { margin-bottom: 4rem; }

/* --- Mobile nav improvements --- */
@media (max-width: 900px) {
  .site-nav {
    position: fixed;
    top: calc(var(--header-h) + var(--stripe-h));
    left: 0; right: 0;
    background: var(--white);
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    height: calc(100vh - var(--header-h) - var(--stripe-h));
    overflow-y: auto;
    transform: translateX(-100%);
    transition: transform .3s ease;
    box-shadow: 4px 0 20px rgba(0,0,0,.15);
    padding: 1rem 0;
    z-index: 300;
  }
  .site-nav.open { transform: translateX(0); }
  .menu-toggle { display: flex !important; }
  .c-menu-link { width: 100%; padding: 1rem 1.5rem; height: auto; border-bottom: 1px solid var(--bluegray-100) !important; }
  .nav-dropdown { width: 100%; height: auto; flex-direction: column; align-items: flex-start; }
  .nav-dropdown .c-menu-link { width: 100%; }
  .dropdown-menu { position: static; display: flex !important; flex-direction: column; box-shadow: none; border: none; background: var(--bluegray-50); width: 100%; }
  .btn-header-cta { margin: 1rem 1.5rem; width: calc(100% - 3rem); justify-content: center; }
}

/* ============================================================
   GINA GROUP SERVICES — v2 Professional Improvements
   ============================================================ */

/* --- Logo header (AFM-style height, JPEG mark on primary bar) --- */
.site-logo-box img {
  height: 60px;
  width: auto;
  object-fit: contain;
  display: block;
  max-width: 130px;
}

/* --- Logo text improvements — IFRDC / AFM --- */
.site-logo-text .logo-name {
  font-size: 1rem !important;
  font-weight: 800 !important;
  color: var(--rouge) !important;
  letter-spacing: -.01em;
  line-height: 1.15;
}
.site-logo-text .logo-sub {
  font-size: .6rem !important;
  color: var(--rouge-fonce) !important;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

/* --- Section accent heading color --- */
.c-title-h2 span.accent { color: var(--tuile) !important; }

/* --- Section background WITH default padding --- */
.section-bg-white { background: var(--white); padding: 5rem 0; }
.section-bg-gray  { background: var(--bluegray-50); padding: 5rem 0; }

/* Sections that already have their own padding reset the section padding */
.section-bg-white > .c-wrapper > .c-container > *:first-child,
.section-bg-gray  > .c-wrapper > .c-container > *:first-child { margin-top: 0; }

/* Stats dividers on desktop */
@media (min-width: 640px) {
  .stats-grid > div + div { border-left: 1px solid rgba(255,255,255,.12); }
}

/* --- Improved hero slide content --- */
.hero-slide-label {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: rgba(255,255,255,.12);
  backdrop-filter: blur(4px);
  border-left: 3px solid var(--tuile);
  padding: .4rem .85rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(255,255,255,.9);
  margin-bottom: 1.25rem;
}
.hero-slide-title {
  font-size: clamp(1.75rem, 4vw, 3rem);
  font-weight: 900;
  color: #fff;
  line-height: 1.15;
  margin-bottom: 1.25rem;
  letter-spacing: -.02em;
}
.hero-slide-sub {
  font-size: clamp(.875rem, 1.5vw, 1rem);
  color: rgba(255,255,255,.82);
  max-width: 540px;
  line-height: 1.75;
  margin-bottom: 2.25rem;
}
.hero-slide-actions { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }

/* --- Improved card hover states --- */
.service-card { transition: box-shadow .3s ease, transform .3s ease; }
.project-card, .immo-card { transition: box-shadow .35s ease, transform .35s ease; }

/* --- About story body text --- */
.about-story-body {
  font-size: .95rem;
  color: var(--gray-600);
  line-height: 1.85;
  margin-bottom: 1.25rem;
}

/* --- Mission/Vision grid — responsive --- */
.mvcard-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}
@media (max-width: 640px) {
  .mvcard-grid { grid-template-columns: 1fr; }
}

/* --- Breadcrumb light variant (for non-hero breadcrumbs) --- */
.breadcrumb--light { background: var(--bluegray-50); border-bottom: 1px solid var(--bluegray-100); padding: .9rem 0; }
.breadcrumb--light .breadcrumb { margin: 0; }
.breadcrumb--light .breadcrumb a { color: var(--gray-600); }
.breadcrumb--light .breadcrumb a:hover { color: var(--blue); }
.breadcrumb--light .breadcrumb-sep { color: var(--gray-300); }
.breadcrumb--light .breadcrumb-current { color: var(--blackgray-700); font-weight: 600; }

/* --- Filter tabs improved active state --- */
.filter-tab.active { font-weight: 800; border-bottom-color: var(--blue); color: var(--blue); }
.filter-tab:hover { color: var(--blue); border-bottom-color: rgba(15,77,46,.3); }

/* --- Form improvements --- */
.form-input:hover, .form-select:hover, .form-textarea:hover {
  border-color: var(--bluegray-400);
}
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 560px) { .form-grid { grid-template-columns: 1fr; } }

/* --- Contact form section responsive --- */
@media (max-width: 768px) {
  .contact-form-grid { grid-template-columns: 1fr !important; gap: 2rem !important; }
}

/* --- Immobilier detail content grid responsive --- */
@media (max-width: 900px) {
  .immo-detail-content-grid { grid-template-columns: 1fr !important; }
}

/* --- Section heading text for dark sections --- */
.cta-dark .section-label { color: rgba(255,255,255,.45) !important; }
.stats-banner .stat-label { letter-spacing: 1.5px; font-weight: 700; }

/* --- Improved service card border accent --- */
.service-card { border-top: 3px solid var(--blue); border-radius: 0; }
.service-card:hover { border-top-color: var(--tuile); }

/* --- Project and immo card image ratio consistent --- */
.project-card-img { aspect-ratio: 16/10; }

/* --- Mobile nav overlay backdrop (superseded by final block below) --- */
@media (max-width: 900px) {
  body.nav-open::after { content: none; display: none; }
}

/* --- Smooth section transitions --- */
.section-bg-white + .section-bg-gray,
.section-bg-gray + .section-bg-white { border-top: none; }

/* --- Contact cards grid improvement --- */
.contact-cards-grid { margin-bottom: 0; }

/* --- Stats number sizing --- */
.stat-number { font-size: clamp(2.25rem, 5vw, 3rem); margin-bottom: .5rem; }

/* --- Hero arrows clean styling --- */
.hero-arrow {
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.25);
  backdrop-filter: blur(4px);
  transition: background .2s, border-color .2s;
}
.hero-arrow:hover {
  background: rgba(255,255,255,.25);
  border-color: rgba(255,255,255,.5);
}

/* --- FAQ details element improvement --- */
details {
  border-radius: 2px;
  transition: box-shadow .2s;
}
details[open] { box-shadow: 0 4px 16px rgba(15,77,46,.08); }
details summary::marker,
details summary::-webkit-details-marker { display: none; }

/* --- Page hero padding increase --- */
.page-hero { padding: 5rem 0 4rem; }

/* --- Immo card type badge colors --- */
.immo-card-type-badge { border-radius: 2px; }
.immo-card-price-badge { border-radius: 2px; }
.project-card-status-badge { border-radius: 2px; }

/* --- Better about-offer responsive --- */
@media (max-width: 768px) {
  div[style*="grid-template-columns:repeat(3,1fr)"] {
    grid-template-columns: 1fr !important;
  }
}

/* --- Partners grid improvement --- */
@media (max-width: 640px) {
  div[style*="grid-template-columns:repeat(4,1fr)"] {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* --- Utility bar hide on mobile --- */
@media (max-width: 768px) {
  .header-utility { display: none; }
  body { padding-top: calc(var(--header-main-h) + var(--stripe-h)); }
  .site-header { top: var(--stripe-h); }
  .site-nav {
    top: calc(var(--header-main-h) + var(--stripe-h));
    height: calc(100vh - var(--header-main-h) - var(--stripe-h));
  }
}

@keyframes fadeInOverlay {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Real overlay div (created by JS, reliable click/touch on mobile) ── */
#nav-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.35);
  z-index: 150; /* below .site-header z-index:200 so the nav inside header stays visible */
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
#nav-overlay.active {
  display: block;
  animation: fadeInOverlay .3s ease forwards;
}

/* --- WhatsApp float pulse animation --- */
@keyframes wa-pulse {
  0%, 100% { box-shadow: 0 4px 20px rgba(37,211,102,.4); }
  50%       { box-shadow: 0 4px 28px rgba(37,211,102,.65), 0 0 0 8px rgba(37,211,102,.1); }
}
.whatsapp-float { animation: wa-pulse 3s ease-in-out infinite; }
.whatsapp-float:hover { animation: none; }

/* --- Reveal animation improvement --- */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* --- Hero slide overlay stronger on mobile --- */
@media (max-width: 640px) {
  .hero-slide-content { padding: 0 1.25rem; }
  .hero-slide-title { font-size: 1.65rem; }
}

.immo-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}

@media (max-width: 768px) {
  .immo-services-grid { grid-template-columns: 1fr !important; }
}

/* --- Inner page heroes: left-aligned (overrides legacy centered rule) --- */
.page-hero .page-hero-inner {
  text-align: left;
}
.page-hero .breadcrumb {
  justify-content: flex-start;
}
.page-hero h1::after {
  display: none;
}

.page-hero-bg {
  filter: brightness(0.62) saturate(0.92);
}
.page-hero::before {
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(120deg, rgba(8,53,31,.72) 0%, rgba(15,77,46,.35) 55%, rgba(15,77,46,.12) 100%);
}

.project-card-status-badge.ongoing {
  background: var(--bourgeon);
}

.service-card.service-card--cta {
  background: linear-gradient(145deg, var(--rouge-fonce) 0%, var(--rouge) 100%);
  border-top-color: var(--tuile);
}

.service-card.service-card--cta .service-card-icon {
  background: rgba(255,255,255,.12);
  color: #fff;
}

.service-card.service-card--cta .service-card-title,
.service-card.service-card--cta .service-card-body {
  color: rgba(255,255,255,.92);
}

.service-card.service-card--cta .service-card-body {
  color: rgba(255,255,255,.78);
}

.contact-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: start;
}
@media (max-width: 960px) {
  .contact-layout {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
}


.immo-type-pill {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: .35rem;
  display: block;
}

.btn-gina-outline--on-gray {
  color: var(--rouge);
  border-color: var(--rouge);
}

.btn-gina-outline--on-gray:hover {
  background: var(--rouge);
  color: var(--white);
  border-color: var(--rouge);
}


.section-tight-bottom {
  padding-top: 3.25rem !important;
  padding-bottom: 2.75rem !important;
}

.partners-grid-static {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}
@media (max-width: 768px) {
  .partners-grid-static {
    grid-template-columns: repeat(2, 1fr);
  }
}

.immo-detail-layout {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 3rem;
  align-items: start;
}
@media (max-width: 992px) {
  .immo-detail-layout {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   SERVICE OVERVIEW CARDS (services.html top grid)
   ============================================================ */
.services-overview-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  border: 1px solid var(--bluegray-100);
}
@media (max-width: 1024px) { .services-overview-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px)  { .services-overview-grid { grid-template-columns: 1fr 1fr; } }

.sov-card {
  display: flex;
  flex-direction: column;
  padding: 2rem 1.5rem;
  border-right: 1px solid var(--bluegray-100);
  text-decoration: none;
  background: white;
  transition: background .2s, box-shadow .2s;
  position: relative;
  overflow: hidden;
}
.sov-card:last-child { border-right: none; }
.sov-card::before {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: var(--blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s ease;
}
.sov-card:hover::before { transform: scaleX(1); }
.sov-card:hover { background: var(--bluegray-50); }
.sov-card-num {
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--gray-400);
  margin-bottom: 1rem;
}
.sov-card-icon {
  width: 48px; height: 48px;
  background: var(--rouge-pale);
  color: var(--blue);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.25rem;
  margin-bottom: 1rem;
  flex-shrink: 0;
}
.sov-card-title {
  font-size: .95rem;
  font-weight: 800;
  color: var(--blackgray-700);
  line-height: 1.3;
  margin-bottom: .5rem;
}
.sov-card-desc {
  font-size: .8rem;
  color: var(--gray-600);
  line-height: 1.65;
  flex: 1;
  margin-bottom: 1.25rem;
}
.sov-card-link {
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--blue);
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.sov-card:hover .sov-card-link { color: var(--rouge); }

/* ============================================================
   SERVICE DETAIL PAGE COMPONENTS
   ============================================================ */
.service-benefits-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
@media (max-width: 768px) { .service-benefits-grid { grid-template-columns: 1fr; } }

.service-benefit-card {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  background: white;
  border: 1px solid var(--bluegray-100);
  padding: 1.5rem;
  border-left: 3px solid var(--blue);
  transition: border-color .2s, box-shadow .2s;
}
.service-benefit-card:hover {
  border-left-color: var(--tuile);
  box-shadow: 0 4px 16px rgba(15,77,46,.08);
}
.sbc-icon {
  width: 44px; height: 44px;
  background: var(--rouge-pale);
  color: var(--blue);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}
.sbc-title {
  font-size: .9rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0 0 .35rem;
}
.sbc-body {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin: 0;
}

.process-steps {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin-top: 1.5rem;
}
.process-step {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
}
.ps-num {
  width: 42px; height: 42px;
  background: var(--blue);
  color: white;
  font-size: .9rem;
  font-weight: 900;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  letter-spacing: 1px;
}
.ps-title {
  font-size: .9rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0 0 .3rem;
}
.ps-body {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin: 0;
}

.related-svc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
@media (max-width: 640px) { .related-svc-grid { grid-template-columns: 1fr; } }

.related-svc-card {
  display: flex;
  align-items: center;
  gap: 1rem;
  background: white;
  border: 1px solid var(--bluegray-100);
  padding: 1.25rem 1.5rem;
  text-decoration: none;
  color: var(--blackgray-700);
  font-size: .88rem;
  font-weight: 700;
  transition: background .2s, border-color .2s, transform .15s;
}
.related-svc-card:hover {
  background: var(--blue);
  color: white;
  border-color: var(--blue);
  transform: translateY(-2px);
}
.related-svc-card i:first-child { font-size: 1.1rem; color: var(--blue); flex-shrink: 0; }
.related-svc-card:hover i { color: white; }
.related-svc-arrow { margin-left: auto; font-size: .75rem; opacity: .5; }

/* ============================================================
   REDESIGNED IMMOBILIER PAGE — stats bar
   ============================================================ */
.immo-stats-bar {
  background: var(--blackgray-700);
  padding: 1.75rem 0;
}
.immo-stats-row {
  display: flex;
  gap: 0;
  justify-content: space-around;
  flex-wrap: wrap;
}
.immo-stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: .75rem 2rem;
  border-right: 1px solid rgba(255,255,255,.1);
  min-width: 120px;
}
.immo-stat-item:last-child { border-right: none; }
.immo-stat-num {
  font-size: 2rem;
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
}
.immo-stat-label {
  font-size: .72rem;
  font-weight: 600;
  color: rgba(255,255,255,.55);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-top: .3rem;
}

/* ============================================================
   REDESIGNED PROJECT CARDS — "Voir le projet" CTA
   ============================================================ */
.project-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--blue);
  text-decoration: none;
  margin-top: .75rem;
  transition: color .2s;
}
.project-card-cta:hover { color: var(--tuile); }
.project-card-cta i { font-size: .7rem; }

/* ============================================================
   RÉALISATIONS STATS BANNER
   ============================================================ */
.real-stats-banner {
  background: var(--blue);
  padding: 2.5rem 0;
}
.real-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  text-align: center;
}
@media (max-width: 640px) { .real-stats-grid { grid-template-columns: repeat(2, 1fr); } }
.real-stat {
  padding: 1rem;
  border-right: 1px solid rgba(255,255,255,.12);
}
.real-stat:last-child { border-right: none; }
.real-stat-num {
  font-size: 2.25rem;
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
}
.real-stat-label {
  font-size: .72rem;
  font-weight: 600;
  color: rgba(255,255,255,.6);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-top: .4rem;
}

/* ============================================================
   À PROPOS — improved stats strip
   ============================================================ */
.apropos-stats-strip {
  background: var(--blue);
  padding: 3rem 0;
}
.apropos-stats-inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  text-align: center;
}
@media (max-width: 640px) { .apropos-stats-inner { grid-template-columns: repeat(2, 1fr); } }
.astat {
  padding: 1.5rem 1rem;
  border-right: 1px solid rgba(255,255,255,.12);
}
.astat:last-child { border-right: none; }
.astat-num {
  font-size: 2.5rem;
  font-weight: 900;
  color: var(--tournesol);
  line-height: 1;
  margin-bottom: .35rem;
}
.astat-label {
  font-size: .72rem;
  font-weight: 600;
  color: rgba(255,255,255,.6);
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* ============================================================
   POLISH PASS — May 2026
   ============================================================ */

/* ── Uppercase nav links ── */
.c-menu-link {
  text-transform: uppercase;
  letter-spacing: .055em;
  font-size: .78rem;
  font-weight: 700;
  padding: .5rem .95rem;
}

/* ── Inline FR | EN switcher ── */
.header-nav-sep {
  width: 1px;
  height: 22px;
  background: var(--bluegray-100);
  margin: 0 .5rem;
  flex-shrink: 0;
}
.lang-inline {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  flex-shrink: 0;
}
.lang-inline-btn {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--gray-500);
  text-decoration: none;
  padding: .2rem .25rem;
  transition: color .2s;
}
.lang-inline-btn--active {
  color: var(--rouge);
}
.lang-inline-btn:hover { color: var(--blackgray-700); }
.lang-inline-sep {
  font-size: .7rem;
  color: var(--gray-300);
  pointer-events: none;
}

/* ── Page hero — GINA green overlay cleanup ── */
.page-hero {
  padding: 5rem 0 4rem;
}
.page-hero::before {
  background: linear-gradient(130deg, rgba(8,53,31,.78) 0%, rgba(15,77,46,.45) 55%, rgba(15,77,46,.15) 100%);
}
.page-hero-bg {
  filter: brightness(.44) saturate(.9);
}
.page-hero h1 {
  font-size: clamp(1.85rem, 4vw, 3rem);
}
.breadcrumb {
  font-size: .8rem;
  letter-spacing: .02em;
}
.breadcrumb a { color: rgba(255,255,255,.7); font-weight: 500; }
.breadcrumb-sep { color: var(--tournesol); opacity: .7; }
.breadcrumb-current { color: white; font-weight: 700; }

/* ── Global btn cleanup — all primary CTAs green, not orange ── */
.btn-gina-primary {
  background: var(--blue);
}
.btn-gina-primary:hover {
  background: var(--rouge-fonce);
}

/* ── Contact cards ── */
.contact-card-tile {
  border-top: 3px solid var(--blue);
}
.contact-card-tile-icon {
  color: var(--blue);
}

/* ── Service benefit card left border ── */
.service-benefit-card {
  border-left-color: var(--blue);
}
.service-benefit-card:hover {
  border-left-color: var(--tuile);
}

/* ── Process step number block ── */
.ps-num {
  background: var(--blue);
}

/* ── Related service card hover ── */
.related-svc-card:hover {
  background: var(--blue);
  border-color: var(--blue);
}

/* ── Portfolio / Réalisations card — new style ── */
.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}
@media (max-width: 1024px) { .portfolio-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .portfolio-grid { grid-template-columns: 1fr; } }

.portfolio-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .3s ease, transform .3s ease;
  display: flex;
  flex-direction: column;
}
.portfolio-card:hover {
  box-shadow: 0 12px 36px rgba(15,77,46,.14);
  transform: translateY(-3px);
}
.portfolio-card-img {
  position: relative;
  aspect-ratio: 16/10;
  overflow: hidden;
  background: var(--blackgray-600);
}
.portfolio-card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
}
.portfolio-card:hover .portfolio-card-img img { transform: scale(1.04); }

.portfolio-card-status {
  position: absolute;
  top: .85rem; left: .85rem;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: .3rem .75rem;
  color: white;
}
.portfolio-card-status--done   { background: var(--blue); }
.portfolio-card-status--ongoing { background: var(--tuile); }
.portfolio-card-status--planned { background: var(--menthe); color: var(--blackgray-700); }

.portfolio-card-body {
  padding: 1.5rem 1.5rem 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.portfolio-card-type {
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .09em;
  color: var(--blue);
  margin-bottom: .5rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.portfolio-card-type::before {
  content: '';
  display: inline-block;
  width: 12px; height: 2px;
  background: var(--tuile);
  flex-shrink: 0;
}
.portfolio-card-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: .45rem;
  line-height: 1.3;
}
.portfolio-card-loc {
  font-size: .8rem;
  color: var(--gray-500);
  display: flex;
  align-items: center;
  gap: .3rem;
  margin-bottom: .75rem;
}
.portfolio-card-desc {
  font-size: .83rem;
  color: var(--gray-600);
  line-height: 1.65;
  flex: 1;
  margin-bottom: 1.25rem;
}
.portfolio-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: white;
  background: var(--blue);
  padding: .65rem 1.25rem;
  text-decoration: none;
  align-self: flex-start;
  transition: background .2s, transform .15s;
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.portfolio-card-cta:hover {
  background: var(--rouge-fonce);
  transform: translate(-1px, -1px);
}

/* ── Project detail page styles ── */
.project-detail-header {
  display: flex;
  gap: 2rem;
  align-items: flex-start;
  flex-wrap: wrap;
  margin-bottom: 2.5rem;
}
.project-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1.25rem;
  margin: 1rem 0;
}
.project-meta-item {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .82rem;
  color: var(--gray-600);
}
.project-meta-item i { color: var(--blue); font-size: .8rem; }
.project-meta-item strong { color: var(--blackgray-700); font-weight: 700; }

.project-gallery {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: .75rem;
  margin-bottom: 2.5rem;
}
@media (max-width: 768px) { .project-gallery { grid-template-columns: 1fr; } }
.project-gallery-main {
  aspect-ratio: 16/10;
  overflow: hidden;
  background: var(--blackgray-600);
  position: relative;
}
.project-gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.project-gallery-side {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: .75rem;
}
.project-gallery-thumb {
  overflow: hidden;
  background: var(--blackgray-500);
  position: relative;
}
.project-gallery-thumb img { width: 100%; height: 100%; object-fit: cover; }
.gallery-placeholder {
  width: 100%; height: 100%;
  min-height: 160px;
  display: flex; align-items: center; justify-content: center;
  flex-direction: column;
  gap: .5rem;
  background: var(--bluegray-50);
  border: 2px dashed var(--bluegray-200);
  color: var(--gray-400);
  font-size: .78rem;
  text-align: center;
}
.gallery-placeholder i { font-size: 1.5rem; }

.project-highlights-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin: 1.5rem 0;
}
@media (max-width: 640px) { .project-highlights-grid { grid-template-columns: 1fr 1fr; } }

.project-highlight-item {
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  border-left: 3px solid var(--blue);
  padding: 1rem 1.25rem;
}
.project-highlight-label {
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--gray-500);
  margin-bottom: .3rem;
}
.project-highlight-val {
  font-size: .9rem;
  font-weight: 700;
  color: var(--blackgray-700);
}

.video-placeholder {
  background: var(--blackgray-700);
  aspect-ratio: 16/9;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 1rem;
  color: rgba(255,255,255,.4);
  border: 2px dashed rgba(255,255,255,.1);
}
.video-placeholder i { font-size: 3rem; color: rgba(255,255,255,.2); }
.video-placeholder p { font-size: .84rem; }

/* ── FAQ section ── */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 780px;
  margin: 0 auto;
}
.faq-item {
  background: white;
  border: 1px solid var(--bluegray-100);
  border-left: 3px solid var(--blue);
  overflow: hidden;
}
.faq-item details { cursor: pointer; }
.faq-summary {
  font-weight: 700;
  color: var(--blackgray-700);
  font-size: .95rem;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.25rem 1.5rem;
  user-select: none;
  gap: 1rem;
}
.faq-summary::-webkit-details-marker { display: none; }
.faq-summary::marker { display: none; }
.faq-icon { color: var(--blue); font-size: .85rem; flex-shrink: 0; transition: transform .3s; }
details[open] .faq-icon { transform: rotate(45deg); }
.faq-body {
  padding: 0 1.5rem 1.25rem;
  font-size: .875rem;
  color: var(--gray-600);
  line-height: 1.8;
}

/* ── About page compact ── */
.apropos-section { padding: 3rem 0; }
.apropos-section + .apropos-section { border-top: 1px solid var(--bluegray-100); }

/* ── Mobile: include lang switcher in mobile nav ── */
@media (max-width: 768px) {
  .header-nav-sep { display: none; }
  .lang-inline {
    border-top: 1px solid var(--bluegray-100);
    padding-top: .75rem;
    margin-top: .25rem;
    width: 100%;
    gap: .5rem;
  }
  .lang-inline-btn {
    font-size: .8rem;
    padding: .3rem .5rem;
  }
}

/* ── About page value cards — uniform colors ── */
.value-card {
  background: var(--blue) !important;
}
.value-card:nth-child(2) { background: var(--rouge-fonce) !important; }
.value-card:nth-child(3) { background: var(--rouge-clair) !important; }
.value-card:nth-child(4) { background: var(--blackgray-700) !important; }
.value-card:nth-child(5) { background: var(--tuile) !important; }

/* ── Realisations filter improved ── */
.filter-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  padding-bottom: 1.5rem;
}
.filter-tab {
  font-size: .73rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: .5rem 1.1rem;
  border: 1.5px solid var(--bluegray-200);
  background: white;
  color: var(--gray-600);
  cursor: pointer;
  transition: all .2s;
}
.filter-tab:hover { border-color: var(--blue); color: var(--blue); }
.filter-tab.active {
  background: var(--blue);
  border-color: var(--blue);
  color: white;
}

/* ── Ensure body padding uses dynamic header height ── */
body {
  padding-top: calc(var(--header-h) + var(--stripe-h));
}

/* ============================================================
   CONTACT PAGE STYLES
   ============================================================ */
.contact-cards-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
  margin-bottom: 0;
}
@media (max-width: 1024px) { .contact-cards-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .contact-cards-grid { grid-template-columns: 1fr; } }

.contact-card-tile {
  padding: 2rem 1.5rem;
  background: white;
  border: 1px solid var(--bluegray-100);
  border-top: 3px solid var(--blue);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .5rem;
}
.contact-card-tile h4 {
  font-size: .88rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin: 0;
}
.contact-card-tile a,
.contact-card-tile span {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.6;
}
.contact-card-tile a:hover { color: var(--blue); }
.contact-card-tile-icon {
  font-size: 1.5rem;
  color: var(--blue);
  margin-bottom: .25rem;
}

.contact-form-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 3rem;
  align-items: start;
}
@media (max-width: 860px) { .contact-form-grid { grid-template-columns: 1fr; } }

.contact-form-fields { display: flex; flex-direction: column; gap: 1.25rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 560px) { .form-row { grid-template-columns: 1fr; } }
.form-group { display: flex; flex-direction: column; gap: .4rem; }
.form-label { font-size: .78rem; font-weight: 700; color: var(--blackgray-700); text-transform: uppercase; letter-spacing: .05em; }
.form-input {
  padding: .75rem 1rem;
  border: 1.5px solid var(--bluegray-200);
  background: var(--bluegray-50);
  font-family: var(--font);
  font-size: .88rem;
  color: var(--blackgray-700);
  outline: none;
  transition: border-color .2s;
  width: 100%;
}
.form-input:focus { border-color: var(--blue); background: white; }
textarea.form-input { resize: vertical; min-height: 130px; }

.contact-hours-list { display: flex; flex-direction: column; gap: .5rem; }
.contact-hours-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: .75rem 1rem;
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  font-size: .85rem;
  color: var(--blackgray-700);
}
.contact-hours-row strong { font-weight: 700; color: var(--blue); }
.contact-hours-row.muted strong { color: var(--gray-500); }

/* Values grid responsive */
@media (max-width: 900px) {
  [style*="grid-template-columns: repeat(5,1fr)"] {
    grid-template-columns: repeat(3, 1fr) !important;
  }
}
@media (max-width: 560px) {
  [style*="grid-template-columns: repeat(5,1fr)"] {
    grid-template-columns: 1fr 1fr !important;
  }
}

/* Timeline for a-propos */
.timeline { display: flex; flex-direction: column; gap: 0; max-width: 720px; }
.timeline-item {
  display: flex;
  gap: 1.5rem;
  padding-bottom: 2rem;
  position: relative;
}
.timeline-item::before {
  content: '';
  position: absolute;
  left: 11px;
  top: 24px;
  bottom: 0;
  width: 2px;
  background: var(--bluegray-200);
}
.timeline-item:last-child::before { display: none; }
.timeline-dot {
  width: 24px;
  height: 24px;
  background: var(--blue);
  border: 3px solid white;
  box-shadow: 0 0 0 2px var(--blue);
  flex-shrink: 0;
  margin-top: .25rem;
  position: relative;
  z-index: 1;
}
.timeline-dot--current { background: var(--tuile); box-shadow: 0 0 0 2px var(--tuile); }
.timeline-year {
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .09em;
  color: var(--blue);
  margin-bottom: .3rem;
}
.timeline-title { font-size: .95rem; font-weight: 800; color: var(--blackgray-700); margin-bottom: .4rem; }
.timeline-body { font-size: .85rem; color: var(--gray-600); line-height: 1.7; }

/* Mobile: mission/vision stack */
@media (max-width: 700px) {
  [style*="grid-template-columns:1fr 1fr"] { grid-template-columns: 1fr !important; }
}

/* ============================================================
   REFINEMENTS PASS — May 2026
   ============================================================ */

/* ── Util divider ── */
.util-divider {
  width: 1px;
  height: 16px;
  background: var(--bluegray-200);
  margin: 0 .25rem;
}

/* ── AFM-style lang selector in utility bar ── */
.lang-selector-btn .lang-current-label {
  font-size: .75rem;
  font-weight: 700;
  color: var(--rouge);
  letter-spacing: .06em;
}
.lang-dropdown {
  min-width: 180px;
}
.lang-check { color: var(--rouge); }

/* ── Mobile lang row inside nav ── */
.mobile-lang-row {
  display: none;
  align-items: center;
  gap: .6rem;
  padding: .75rem 1rem;
  background: var(--bluegray-50);
  border-top: 1px solid var(--bluegray-100);
  font-size: .8rem;
  flex-wrap: wrap;
}
.mobile-lang-label { color: var(--gray-500); font-weight: 500; }
.mobile-lang-active { font-weight: 700; color: var(--rouge); }
.mobile-lang-soon { color: var(--gray-500); display: flex; align-items: center; gap: .3rem; }

@media (max-width: 768px) {
  .mobile-lang-row { display: flex; }
  /* Hide desktop lang selector on mobile */
  .lang-selector { display: none; }
  .util-divider  { display: none; }
}

/* ── AFM-style breadcrumbs — centered, slash separator ── */
.breadcrumb {
  display: flex !important;
  align-items: center;
  justify-content: center !important;
  gap: .4rem !important;
  font-size: .8rem !important;
  color: rgba(255,255,255,.6) !important;
  margin-bottom: 1.25rem !important;
  flex-wrap: wrap;
  text-align: center;
}
.breadcrumb a {
  color: rgba(255,255,255,.75) !important;
  text-decoration: none;
  transition: color .2s;
  font-weight: 500;
}
.breadcrumb a:hover { color: white !important; }
.breadcrumb-sep {
  color: rgba(255,255,255,.35) !important;
  font-weight: 300;
}
.breadcrumb-current {
  color: white !important;
  font-weight: 600;
}

/* ── Page hero — refined AFM-inspired ── */
.page-hero {
  padding: 5.5rem 0 4.5rem;
  text-align: center;
}
.page-hero-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.page-hero h1 {
  font-size: clamp(1.9rem, 4.5vw, 3rem);
  font-weight: 900;
  color: white;
  line-height: 1.15;
  margin-bottom: .75rem;
}
.page-hero-sub {
  font-size: .97rem;
  color: rgba(255,255,255,.75);
  max-width: 560px;
  line-height: 1.75;
  margin-top: .25rem;
}
/* Colorbar at hero bottom (AFM style) */
.page-hero::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--menthe), var(--tournesol), var(--tuile), var(--bourgeon), var(--macaron));
  z-index: 3;
}

/* ── CTA row in hero (not centered for inner pages with left-align) ── */
.page-hero .cta-row {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-top: 1.5rem;
  justify-content: center;
}

/* ── SERVICES CARDS GRID ── */
.services-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}
@media (max-width: 1024px) { .services-cards-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px)  { .services-cards-grid { grid-template-columns: 1fr; } }

.svc-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: box-shadow .3s ease, transform .25s ease;
}
.svc-card:hover {
  box-shadow: 0 16px 48px rgba(15,77,46,.15);
  transform: translateY(-4px);
}

.svc-card-top {
  position: relative;
  padding: 2rem 1.75rem 1.5rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  min-height: 140px;
}
.svc-card-num {
  font-size: .65rem;
  font-weight: 900;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: rgba(255,255,255,.45);
}
.svc-card-icon {
  font-size: 2.25rem;
  color: rgba(255,255,255,.9);
}

.svc-card-body {
  padding: 1.75rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: .75rem;
}
.svc-card-title {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--blackgray-700);
  line-height: 1.25;
}
.svc-card-desc {
  font-size: .85rem;
  color: var(--gray-600);
  line-height: 1.7;
}
.svc-card-features {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  flex: 1;
}
.svc-card-features li {
  font-size: .82rem;
  color: var(--gray-600);
  display: flex;
  align-items: center;
  gap: .4rem;
}
.svc-card-features li i { color: var(--blue); font-size: .75rem; flex-shrink: 0; }

.svc-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--blue);
  text-decoration: none;
  border: 2px solid var(--blue);
  padding: .6rem 1.25rem;
  align-self: flex-start;
  transition: all .2s;
  margin-top: .5rem;
}
.svc-card-cta:hover {
  background: var(--blue);
  color: white;
}

/* ── PORTFOLIO CARDS — premium polish ── */
.portfolio-card {
  border-radius: 0;
  border-color: var(--bluegray-100);
}
.portfolio-card-img {
  aspect-ratio: 16/9;
}

/* ── UTILITY bar address hide on smaller screens ── */
@media (max-width: 1100px) {
  .util-address { display: none !important; }
}
@media (max-width: 860px) {
  .header-utility-left a:nth-child(2) { display: none; }
}

/* ── Header main row responsive ── */
@media (max-width: 768px) {
  .site-logo-text { display: none; }
  .header-inner { padding: 0 1rem; }
}
@media (max-width: 400px) {
  .site-logo-box img { height: 44px; }
}

/* ── Mobile nav improvements ── */
@media (max-width: 768px) {
  .site-nav.open {
    padding: 0 0 2rem;
    gap: 0;
    border-top: 3px solid var(--blue);
  }
  .c-menu-link {
    padding: 1rem 1.25rem;
    font-size: .85rem;
    border-bottom: 1px solid var(--bluegray-50) !important;
    display: flex;
    align-items: center;
    gap: .5rem;
  }
  .c-menu-link--active {
    background: var(--bluegray-50);
    border-left: 3px solid var(--blue) !important;
    padding-left: 1rem;
  }
  .btn-header-cta {
    margin: 1rem 1.25rem 0;
    width: calc(100% - 2.5rem);
    justify-content: center;
  }
}

/* ── Réalisations filter responsive ── */
@media (max-width: 640px) {
  .filter-tabs { gap: .3rem; }
  .filter-tab { font-size: .68rem; padding: .45rem .8rem; }
  .portfolio-grid { gap: 1.25rem; }
}

/* ── Hero slider responsive ── */
@media (max-width: 640px) {
  .hero-slide-title { font-size: 1.5rem !important; }
  .hero-slide-sub { font-size: .85rem; }
}

/* ── Services cards mobile ── */
@media (max-width: 480px) {
  .svc-card-top { min-height: 110px; padding: 1.5rem 1.25rem 1.25rem; }
  .svc-card-icon { font-size: 1.75rem; }
  .svc-card-body { padding: 1.25rem; }
}

/* ── Contact form mobile ── */
@media (max-width: 640px) {
  .contact-cards-grid { grid-template-columns: 1fr 1fr; }
  .contact-form-grid { gap: 2rem; }
}
@media (max-width: 400px) {
  .contact-cards-grid { grid-template-columns: 1fr; }
}

/* ── Footer responsive ── */
@media (max-width: 768px) {
  .footer-cols { grid-template-columns: 1fr 1fr !important; gap: 2rem !important; }
}
@media (max-width: 480px) {
  .footer-cols { grid-template-columns: 1fr !important; }
}

/* ── Page hero left-aligned variant for detail pages ── */
.page-hero--left .page-hero-inner {
  align-items: flex-start;
  text-align: left;
}
.page-hero--left .breadcrumb {
  justify-content: flex-start !important;
}

/* ============================================================
   PROJECT REAL-MEDIA GALLERY & VIDEO
   ============================================================ */

/* ── Masonry-style photo gallery ── */
.proj-gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .75rem;
}
@media (max-width: 1024px) { .proj-gallery-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px)  { .proj-gallery-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 380px)  { .proj-gallery-grid { grid-template-columns: 1fr; } }

/* First item spans 2 columns as a hero shot */
.proj-gallery-item:first-child {
  grid-column: span 2;
}
@media (max-width: 640px) {
  .proj-gallery-item:first-child { grid-column: span 2; }
}
@media (max-width: 380px) {
  .proj-gallery-item:first-child { grid-column: span 1; }
}

.proj-gallery-item {
  position: relative;
  overflow: hidden;
  background: var(--blackgray-600);
  aspect-ratio: 4/3;
  cursor: pointer;
}
/* First item slightly taller */
.proj-gallery-item:first-child {
  aspect-ratio: 16/9;
}
.proj-gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .45s ease;
}
.proj-gallery-item:hover img {
  transform: scale(1.05);
}
/* Subtle overlay on hover */
.proj-gallery-item::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(15,77,46,0);
  transition: background .3s;
  pointer-events: none;
}
.proj-gallery-item:hover::after {
  background: rgba(15,77,46,.15);
}

/* ── Video grid ── */
.proj-videos-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.25rem;
}
@media (max-width: 768px) { .proj-videos-grid { grid-template-columns: 1fr; } }

/* 3 or more videos → 3-col on large screens */
.proj-videos-grid:has(.proj-video-item:nth-child(3)) {
  grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 900px) {
  .proj-videos-grid:has(.proj-video-item:nth-child(3)) {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  .proj-videos-grid:has(.proj-video-item:nth-child(3)) {
    grid-template-columns: 1fr;
  }
}

.proj-video-item {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  background: var(--blackgray-700);
}
.proj-video-item video {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  display: block;
  background: var(--blackgray-900);
}
.proj-video-label {
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: rgba(255,255,255,.5);
  padding: .5rem .75rem .65rem;
  background: var(--blackgray-700);
}

/* ============================================================
   HOMEPAGE — Services strip, Why grid, Portfolio preview
   ============================================================ */

/* ── Home Services horizontal list ── */
.home-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px)  { .home-services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .home-services-grid { grid-template-columns: 1fr; } }

.home-svc {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
  padding: 1.75rem;
  background: white;
  border: 1px solid var(--bluegray-100);
  text-decoration: none;
  color: inherit;
  transition: box-shadow .25s ease, transform .25s ease;
}
.home-svc:hover {
  box-shadow: 0 8px 32px rgba(15,77,46,.12);
  transform: translateY(-3px);
  border-color: var(--bluegray-200);
}
.home-svc-icon {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  color: white;
  flex-shrink: 0;
}
.home-svc-body { flex: 1; min-width: 0; }
.home-svc-title {
  font-size: .95rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
  line-height: 1.25;
}
.home-svc-desc {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin-bottom: .75rem;
}
.home-svc-link {
  font-size: .73rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--blue);
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  transition: gap .2s;
}
.home-svc:hover .home-svc-link { gap: .55rem; }

/* CTA service tile */
.home-svc--cta {
  background: var(--blue);
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  cursor: default;
  border-color: var(--blue);
}
.home-svc--cta:hover {
  transform: none;
  box-shadow: 0 8px 32px rgba(15,77,46,.25);
}
.home-svc-cta-icon {
  font-size: 2rem;
  color: rgba(255,255,255,.35);
  margin-bottom: .25rem;
}
.home-svc--cta h3 { font-size: 1rem; font-weight: 800; color: white; }
.home-svc--cta p  { font-size: .83rem; color: rgba(255,255,255,.75); line-height: 1.65; }

/* ── Why GINA grid ── */
.why-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px)  { .why-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .why-grid { grid-template-columns: 1fr; } }

.why-card {
  padding: 2rem 1.5rem;
  background: var(--bluegray-50);
  border: 1px solid var(--bluegray-100);
  border-top: 3px solid var(--blue);
  transition: box-shadow .25s ease, transform .25s ease;
}
.why-card:hover {
  box-shadow: 0 8px 28px rgba(15,77,46,.1);
  transform: translateY(-3px);
}
.why-card-icon {
  font-size: 1.75rem;
  color: var(--blue);
  margin-bottom: 1rem;
}
.why-card-title {
  font-size: .9rem;
  font-weight: 800;
  color: var(--blackgray-700);
  margin-bottom: .5rem;
}
.why-card-desc {
  font-size: .83rem;
  color: var(--gray-600);
  line-height: 1.7;
}

/* ── section-header-row responsive ── */
@media (max-width: 640px) {
  .section-header-row { flex-direction: column; gap: .75rem; }
  .see-all-link { align-self: flex-start; }
}

/* ── Hero slide label pill ── */
.hero-slide-label {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.2);
  backdrop-filter: blur(4px);
  color: rgba(255,255,255,.9);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: .35rem .85rem;
  margin-bottom: 1.25rem;
}

/* [NEUTRALIZED v3 mobile menu complete override block] */
/* Show hamburger from 900px down */
@media (max-width: 900px) {
  .menu-toggle {
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    padding: 0;
    background: none !important;
    border: none !important;
    cursor: pointer;
    flex-shrink: 0;
    z-index: 400;
  }
  .menu-toggle span {
    display: block;
    width: 24px;
    height: 2px;
    background: var(--blackgray-700);
    border-radius: 2px;
    transition: transform .3s ease, opacity .3s ease, width .3s ease;
    transform-origin: center;
  }
  /* Hamburger → X animation */
  .menu-toggle[aria-expanded="true"] span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) {
    opacity: 0;
    width: 0;
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
  }
}

/* ── NAV DRAWER ── */
@media (max-width: 900px) {

  /* Drawer — hidden state (slide from right) */
  .site-nav {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    position: fixed !important;
    top: calc(64px + var(--stripe-h, 4px)) !important;
    left: unset !important;
    right: 0 !important;
    bottom: 0 !important;
    width: min(340px, 88vw) !important;
    max-width: none !important;
    height: calc(100vh - 64px - var(--stripe-h, 4px)) !important;
    background: #fff !important;
    z-index: 350 !important;
    transform: translateX(100%) !important;
    transition: transform .35s cubic-bezier(.4,0,.2,1) !important;
    box-shadow: -4px 0 32px rgba(0,0,0,.15) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 0 !important;
    gap: 0 !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
  }

  /* Drawer — open state */
  .site-nav.open {
    transform: translateX(0) !important;
  }

  /* ── Drawer brand header ── */
  .site-nav::before {
    content: 'GINA GROUP SERVICES';
    display: block;
    padding: 1rem 1.5rem;
    font-size: .6rem;
    font-weight: 900;
    letter-spacing: .22em;
    color: #fff;
    background: var(--blue);
    border-bottom: 3px solid var(--rouge-fonce);
    flex-shrink: 0;
  }

  /* ── Nav links ── */
  .c-menu-link {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    height: auto !important;
    padding: .82rem 1.5rem !important;
    font-size: .83rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: .07em !important;
    color: #1a2e22 !important;
    border-bottom: 1px solid var(--bluegray-100) !important;
    border-left: 3px solid transparent !important;
    text-decoration: none !important;
    transition: background .15s, border-left-color .15s, color .15s !important;
    position: relative !important;
    box-shadow: none !important;
    outline: none !important;
    background: #fff !important;
  }
  .c-menu-link::after { display: none !important; }

  .c-menu-link:hover,
  .c-menu-link:active {
    background: var(--bluegray-50) !important;
    border-left-color: var(--blue) !important;
    color: var(--blue) !important;
  }
  .c-menu-link--active {
    background: var(--bluegray-50) !important;
    border-left-color: var(--blue) !important;
    color: var(--blue) !important;
  }

  /* ── Mobile lang row — flows naturally (no auto margin) ── */
  .mobile-lang-row {
    display: flex !important;
    align-items: center !important;
    gap: .55rem !important;
    padding: .9rem 1.5rem !important;
    background: var(--bluegray-50) !important;
    border-top: 2px solid var(--bluegray-100) !important;
    font-size: .78rem !important;
    flex-wrap: wrap !important;
    margin-top: 0 !important;
  }
  .mobile-lang-label { color: var(--gray-400) !important; font-weight: 500 !important; }
  .mobile-lang-active {
    color: var(--blue) !important;
    font-weight: 800 !important;
    font-size: .8rem !important;
  }
  .mobile-lang-soon { color: var(--gray-400) !important; display: flex !important; align-items: center !important; gap: .3rem !important; }

  /* ── CTA inside drawer ── */
  .btn-header-cta {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: .5rem !important;
    margin: 1rem 1.5rem 1.5rem !important;
    width: calc(100% - 3rem) !important;
    padding: .85rem 1.5rem !important;
    font-size: .76rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .1em !important;
    background: var(--blue) !important;
    color: white !important;
    text-decoration: none !important;
    border: none !important;
    border-radius: 3px !important;
    box-shadow: 0 2px 8px rgba(15,77,46,.25) !important;
    transition: background .2s !important;
  }
  .btn-header-cta:hover { background: var(--rouge-fonce) !important; }

  body.nav-open { overflow: hidden !important; }
  /* ::before no longer used for overlay — see #nav-overlay in JS */
  body.nav-open::before { display: none !important; }

  /* ── Header main row height on mobile ── */
  :root {
    --header-main-h: 64px;
    --header-h: 64px;
  }
  .header-utility { display: none !important; }
  body { padding-top: calc(64px + var(--stripe-h)) !important; }
  .site-header { top: var(--stripe-h) !important; }
  .header-main { height: 64px !important; }

  /* ── Logo ── */
  .site-logo-text { display: none !important; }
  .site-logo-box { padding: .4rem .7rem !important; }
  .site-logo-box img { height: 42px !important; }

  /* ── Hide desktop lang in mobile ── */
  .lang-selector,
  .util-divider,
  .header-nav-sep,
  .lang-inline { display: none !important; }
}

/* ── Extra-small phones ── */
@media (max-width: 400px) {
  .site-nav { width: 100vw !important; }
  .c-menu-link { font-size: .84rem !important; }
}

/* ── Tablet — 768-900px: keep hamburger but wider nav ── */
@media (min-width: 769px) and (max-width: 900px) {
  .site-nav { width: 380px !important; }
}

/* ================================================================
   MOBILE NAV — FINAL AUTHORITY v4
   Overrides ALL previous conflicting nav blocks.
   z-index: overlay 1000 / menu 1100 / hamburger 1200
   ================================================================ */

/* ── Overlay div (created by JS) ── */
#nav-overlay {
  display: none !important;
  position: fixed !important;
  inset: 0 !important;
  background: rgba(0,0,0,.38) !important;
  /* Must stay BELOW .site-header (z-index:200) so the nav drawer
     inside the header is never obscured by this overlay */
  z-index: 150 !important;
  cursor: pointer !important;
  pointer-events: none !important;
  -webkit-tap-highlight-color: transparent !important;
}
#nav-overlay.active {
  display: block !important;
  pointer-events: all !important;
  animation: navOverlayIn .25s ease forwards !important;
}
@keyframes navOverlayIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Mobile breakpoint ── */
@media (max-width: 900px) {

  /* Hamburger — always on top */
  .menu-toggle {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    background: none !important;
    border: none !important;
    cursor: pointer !important;
    z-index: 1200 !important;
    position: relative !important;
    flex-shrink: 0 !important;
  }
  .menu-toggle span {
    display: block !important;
    width: 24px !important;
    height: 2px !important;
    background: var(--blackgray-700) !important;
    border-radius: 2px !important;
    transform-origin: center !important;
    transition: transform .3s ease, opacity .3s ease !important;
  }

  /* Nav drawer — always flex, hidden via transform+visibility */
  .site-nav {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    position: fixed !important;
    top: calc(64px + var(--stripe-h, 4px)) !important;
    right: 0 !important;
    left: auto !important;
    bottom: 0 !important;
    width: min(320px, 90vw) !important;
    height: calc(100dvh - 64px - var(--stripe-h, 4px)) !important;
    background: #fff !important;
    z-index: 1100 !important;
    transform: translateX(110%) !important;
    visibility: hidden !important;
    transition: transform .35s cubic-bezier(.4,0,.2,1),
                visibility .35s !important;
    box-shadow: -6px 0 40px rgba(0,0,0,.18) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 0 !important;
    gap: 0 !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    pointer-events: none !important;
  }

  /* Open state */
  .site-nav.open {
    transform: translateX(0) !important;
    visibility: visible !important;
    pointer-events: all !important;
  }

  /* Disable old ::before drawer label */
  .site-nav::before { display: none !important; content: none !important; }

  /* ── Drawer header: logo + close button ── */
  .nav-drawer-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: .9rem 1.25rem !important;
    background: var(--blue) !important;
    flex-shrink: 0 !important;
    gap: 1rem !important;
  }
  .nav-drawer-logo {
    height: 36px !important;
    width: auto !important;
    object-fit: contain !important;
    display: block !important;
    filter: brightness(0) invert(1) !important;
  }
  .nav-drawer-close {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 36px !important;
    height: 36px !important;
    padding: 0 !important;
    background: rgba(255,255,255,.15) !important;
    border: 1px solid rgba(255,255,255,.25) !important;
    border-radius: 6px !important;
    color: #fff !important;
    cursor: pointer !important;
    flex-shrink: 0 !important;
    transition: background .15s !important;
    -webkit-tap-highlight-color: transparent !important;
  }
  .nav-drawer-close:hover,
  .nav-drawer-close:active { background: rgba(255,255,255,.28) !important; }
  .nav-drawer-close svg { pointer-events: none !important; }

  /* ── Nav links ── */
  .site-nav .c-menu-link {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    height: auto !important;
    padding: .875rem 1.5rem !important;
    font-size: .82rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: .08em !important;
    color: #1a2e22 !important;
    background: #fff !important;
    border: none !important;
    border-bottom: 1px solid #eaf0ec !important;
    border-left: 3px solid transparent !important;
    text-decoration: none !important;
    box-shadow: none !important;
    outline: none !important;
    transition: background .15s, border-left-color .15s, color .15s !important;
    pointer-events: all !important;
  }
  .site-nav .c-menu-link::after { display: none !important; }
  .site-nav .c-menu-link:hover,
  .site-nav .c-menu-link:active,
  .site-nav .c-menu-link:focus {
    background: #f5f8f6 !important;
    border-left-color: var(--blue) !important;
    color: var(--blue) !important;
  }
  .site-nav .c-menu-link--active {
    background: #f5f8f6 !important;
    border-left-color: var(--blue) !important;
    color: var(--blue) !important;
  }

  /* ── Language row ── */
  .mobile-lang-row {
    display: flex !important;
    align-items: center !important;
    gap: .5rem !important;
    padding: .85rem 1.5rem !important;
    background: #f5f8f6 !important;
    border-top: 2px solid #dce8de !important;
    border-bottom: 1px solid #dce8de !important;
    font-size: .77rem !important;
    flex-wrap: wrap !important;
    margin: 0 !important;
    flex-shrink: 0 !important;
  }
  .mobile-lang-label { color: #6b7280 !important; font-weight: 500 !important; }
  .mobile-lang-active { color: var(--blue) !important; font-weight: 800 !important; }
  .mobile-lang-soon   { color: #9ca3af !important; display: flex !important; align-items: center !important; gap: .3rem !important; }

  /* ── CTA ── */
  .site-nav .btn-header-cta {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: .5rem !important;
    margin: 1rem 1.25rem 1.5rem !important;
    width: calc(100% - 2.5rem) !important;
    padding: .85rem 1.25rem !important;
    font-size: .76rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .1em !important;
    background: var(--blue) !important;
    color: #fff !important;
    text-decoration: none !important;
    border: none !important;
    border-radius: 4px !important;
    box-shadow: 0 2px 10px rgba(15,77,46,.22) !important;
    pointer-events: all !important;
  }
  .site-nav .btn-header-cta:hover,
  .site-nav .btn-header-cta:active {
    background: var(--rouge-fonce) !important;
  }

  /* ── Header height ── */
  .header-utility { display: none !important; }
  .header-main    { height: 64px !important; }
  body            { padding-top: calc(64px + var(--stripe-h, 4px)) !important; }
  .site-header    { top: var(--stripe-h, 4px) !important; }
  .site-logo-text { display: none !important; }

  /* Lock scroll when open */
  body.nav-open   { overflow: hidden !important; }
}

/* ── 400px and below ── */
@media (max-width: 400px) {
  .site-nav { width: 100vw !important; }
}
/* ── Tablet 768–900px ── */
@media (min-width: 769px) and (max-width: 900px) {
  .site-nav { width: 360px !important; }
}

/* ── Hide drawer-only elements on desktop ── */
.nav-drawer-header { display: none; }
@media (max-width: 900px) {
  .nav-drawer-header { display: flex !important; }
}

/* ============================================================
   GINA DESIGN REFRESH 2026 — Charte graphique verte
   Toutes les occurrences rouge/orange remplacées par vert/teal.
   ============================================================ */

/* ── 1. Redéfinir --tuile (rouge-orange) → vert-teal ── */
:root {
  --tuile:         #21ab88;   /* vert teal — remplace #FF4B36 partout */
  --tuile-dark:    #178a6e;   /* hover du teal */
  --gold-accent:   #C8920A;   /* or chaud — stats / highlight */
  --green-xlight:  #f0faf6;   /* très léger vert pour fonds */
}

/* ── 2. Section labels — vert foncé (pas orange) ── */
.section-label {
  color: var(--blue) !important;
  letter-spacing: 2.5px;
}

/* ── 3. Titre h2 — bordure gauche en teal ── */
.c-title-h2 {
  border-left-color: var(--menthe) !important;
}
.c-title-h2 span.accent {
  color: var(--menthe) !important;
}

/* ── 4. Header CTA "Nous contacter" — vert foncé (desktop) ── */
.btn-header-cta {
  background: var(--blue) !important;
  box-shadow: none !important;
  border-radius: 2px;
}
.btn-header-cta:hover {
  background: var(--rouge-fonce) !important;
  box-shadow: 0 4px 16px rgba(15,77,46,.3) !important;
  transform: none !important;
}

/* ── 5. Header — amélioration visuelle ── */
.site-header {
  box-shadow: 0 1px 0 var(--bluegray-100), 0 4px 24px rgba(15,77,46,.06);
}
.header-utility {
  background: var(--blackgray-700);
  border-bottom: none;
}
.header-utility-link {
  color: rgba(255,255,255,.65);
}
.header-utility-link:hover { color: var(--menthe); }
.header-utility-link svg { color: rgba(255,255,255,.4); }
.util-address { color: rgba(255,255,255,.55); }
.header-social a {
  border-color: rgba(255,255,255,.15);
  color: rgba(255,255,255,.55);
}
.header-social a:hover {
  color: var(--menthe);
  border-color: var(--menthe);
}
.lang-selector-btn {
  color: rgba(255,255,255,.85);
}
.lang-selector-btn .lang-globe { color: rgba(255,255,255,.45); }
.lang-selector-btn .lang-current-label { color: var(--menthe) !important; }
.lang-selector-btn:hover { color: white; }
.util-divider { background: rgba(255,255,255,.15); }

/* Logo box couleur cohérente */
.site-logo-box {
  background: var(--blue) !important;
  border-right: none;
}

/* ── 6. Navigation — active + hover ── */
.c-menu-link--active {
  color: var(--blue) !important;
}
.c-menu-link--active::after {
  background: var(--blue) !important;
}
.c-menu-link::after {
  background: var(--blue) !important;
}

/* ── 7. Hero Slider — label pill amélioré ── */
.hero-slide-label {
  background: rgba(33,171,136,.18) !important;
  border: 1px solid rgba(33,171,136,.35) !important;
  color: var(--menthe) !important;
  backdrop-filter: blur(8px);
}

/* ── 8. Stats banner — chiffres blancs/gold sur vert ── */
.stats-banner {
  background: linear-gradient(135deg, var(--rouge-fonce) 0%, var(--blue) 100%);
  padding: 3.5rem 0;
}
.stat-number {
  color: white;
  text-shadow: 0 2px 8px rgba(0,0,0,.2);
}
.stat-label {
  color: rgba(255,255,255,.7);
  font-weight: 600;
  letter-spacing: 1.5px;
}

/* ── 9. Cards homepage services ── */
.home-svc {
  border-color: var(--bluegray-100);
  border-bottom: 2px solid transparent;
  transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.home-svc:hover {
  border-color: var(--bluegray-200);
  border-bottom-color: var(--menthe);
  box-shadow: 0 10px 36px rgba(15,77,46,.13);
  transform: translateY(-4px);
}
.home-svc-link { color: var(--blue); }
.home-svc:hover .home-svc-link { color: var(--menthe); }

/* CTA tile */
.home-svc--cta {
  background: linear-gradient(145deg, var(--rouge-fonce) 0%, var(--blue) 100%) !important;
  border-color: var(--blue) !important;
  border-bottom-color: var(--menthe) !important;
}

/* ── 10. Why-cards ── */
.why-card {
  border-top-color: var(--blue);
  position: relative;
  overflow: hidden;
}
.why-card::before {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 0;
  background: linear-gradient(to top, rgba(15,77,46,.04), transparent);
  transition: height .3s ease;
}
.why-card:hover::before { height: 100%; }
.why-card:hover { border-top-color: var(--menthe); }
.why-card-icon { color: var(--blue); }

/* ── 11. Portfolio cards ── */
.portfolio-card-type::before {
  background: var(--menthe) !important;
}
.portfolio-card-status--ongoing {
  background: var(--bourgeon) !important;
}
.portfolio-card-status--done {
  background: var(--blue) !important;
}
.portfolio-card-cta {
  background: var(--blue);
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.portfolio-card-cta:hover {
  background: var(--rouge-fonce);
}
.portfolio-card:hover {
  box-shadow: 0 16px 48px rgba(15,77,46,.15);
  transform: translateY(-4px);
}

/* ── 12. Service cards ── */
.service-card {
  border-top-color: var(--blue) !important;
  transition: box-shadow .3s ease, transform .3s ease, border-top-color .2s ease;
}
.service-card:hover {
  border-top-color: var(--menthe) !important;
  box-shadow: 0 16px 48px rgba(15,77,46,.15) !important;
  transform: translateY(-5px);
}
.service-benefit-card:hover {
  border-left-color: var(--menthe) !important;
}

/* ── 13. Contact cards ── */
.contact-card-tile {
  border-top-color: var(--blue) !important;
  transition: box-shadow .25s ease, transform .25s ease, border-top-color .2s ease;
}
.contact-card-tile:hover {
  border-top-color: var(--menthe) !important;
  box-shadow: 0 12px 36px rgba(15,77,46,.12) !important;
  transform: translateY(-4px);
}
.contact-card-tile-icon { color: var(--blue); }

/* ── 14. Form improvements ── */
.form-input:focus {
  border-color: var(--menthe) !important;
  box-shadow: 0 0 0 3px rgba(33,171,136,.12);
}
.contact-hours-row strong { color: var(--blue) !important; }

/* ── 15. Footer — refonte visuelle ── */
.site-footer { }

/* CTA strip */
.footer-cta-strip {
  background: linear-gradient(135deg, var(--blackgray-800) 0%, #0d1f15 100%);
  margin-top: 0;
}
.footer-cta-af-sub { color: var(--menthe) !important; }
.footer-cta-since-year { color: var(--menthe) !important; }
.footer-cta-btn-shadow { background: var(--menthe) !important; opacity: .25; }
.footer-cta-btn-face { background: var(--blue) !important; }
.footer-cta-btn:hover .footer-cta-btn-face { background: var(--menthe) !important; color: white; }
.footer-cta-btn-outline { color: rgba(255,255,255,.65); }
.footer-cta-btn-outline:hover { color: white; }

/* Footer body */
.footer-body {
  background: #f8faf9;
  border-top: 3px solid var(--blue);
  padding: 4rem 0 3.5rem;
}
.footer-col-bar { background: var(--menthe) !important; }
.footer-col-heading { color: var(--blackgray-700); }
.footer-links-list a:hover { color: var(--blue); }
.footer-links-list a::after { background: var(--menthe); }
.footer-social-list a:hover .footer-social-icon {
  background: var(--blue);
  color: white;
}
.footer-contact-row svg { color: var(--blue); }
.footer-contact-row a:hover { color: var(--blue); }

/* Bottom bar */
.footer-bottom-bar {
  background: var(--blackgray-700);
  border-top: none;
  padding: 1.25rem 0;
}
.footer-copyright { color: rgba(255,255,255,.5); }
.footer-bottom-links a { color: rgba(255,255,255,.5); }
.footer-bottom-links a:hover { color: var(--menthe); }

/* ── 16. Page hero — plus beau ── */
.page-hero {
  padding: 5.5rem 0 4.5rem;
}
.page-hero::before {
  background: linear-gradient(130deg, rgba(8,53,31,.82) 0%, rgba(15,77,46,.5) 55%, rgba(15,77,46,.18) 100%);
}
.page-hero-bg {
  filter: brightness(.42) saturate(.85);
}
.page-hero h1 { letter-spacing: -.02em; }

/* ── 17. CTA dark section ── */
.cta-dark {
  background: linear-gradient(145deg, var(--blackgray-800) 0%, var(--blackgray-700) 100%);
  position: relative;
}
.cta-dark::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.03)' stroke-width='1'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}
.cta-dark::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--menthe), var(--bourgeon));
}

/* ── 18. SVC cards (services page) ── */
.svc-card {
  border-bottom: 3px solid transparent;
  transition: box-shadow .3s ease, transform .25s ease, border-bottom-color .2s ease;
}
.svc-card:hover {
  border-bottom-color: var(--menthe);
}
.svc-card-cta {
  color: var(--blue);
  border-color: var(--blue);
}
.svc-card-cta:hover {
  background: var(--blue);
  color: white;
}

/* ── 19. Buttons refresh ── */
.btn-gina-primary {
  background: var(--blue) !important;
  box-shadow: 4px 4px 0 rgba(15,77,46,.2);
  border-radius: 1px;
}
.btn-gina-primary:hover {
  background: var(--rouge-fonce) !important;
  transform: translate(-1px, -1px);
  box-shadow: 5px 5px 0 rgba(15,77,46,.28);
}

.btn-gina-outline {
  border-color: rgba(255,255,255,.6);
  border-radius: 1px;
}
.btn-gina-outline:hover {
  background: white;
  color: var(--blue);
  border-color: white;
}

/* ── 20. Filter tabs (réalisations) ── */
.filter-tab.active {
  background: var(--blue) !important;
  border-color: var(--blue) !important;
  color: white !important;
}
.filter-tab:hover {
  border-color: var(--blue) !important;
  color: var(--blue) !important;
}

/* ── 21. Timeline (à propos) ── */
.timeline-dot--current {
  background: var(--menthe) !important;
  box-shadow: 0 0 0 2px var(--menthe) !important;
}
.timeline-year { color: var(--blue); }

/* ── 22. Value cards ── */
.value-card { background: var(--blue) !important; }
.value-card:nth-child(2) { background: var(--rouge-fonce) !important; }
.value-card:nth-child(3) { background: var(--rouge-clair) !important; }
.value-card:nth-child(4) { background: var(--blackgray-700) !important; }
.value-card:nth-child(5) { background: var(--bourgeon) !important; }

/* ── 23. Stripe bar — version verte cohérente ── */
.stripe-bar span:nth-child(5) { background: var(--bourgeon); }

/* ── 24. FAQs ── */
.faq-item { border-left-color: var(--blue); }
.faq-icon { color: var(--blue); }

/* ── 25. Immo cards ── */
.immo-card-cta {
  background: var(--blue);
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.immo-card-cta:hover { background: var(--rouge-fonce); }
.immo-card-price-badge { background: var(--bourgeon) !important; }

/* ── 26. Process steps ── */
.ps-num { background: var(--blue); }

/* ── 27. Related svc card ── */
.related-svc-card:hover {
  background: var(--blue) !important;
  border-color: var(--blue) !important;
}

/* ── 28. Section SOV cards (overview services) ── */
.sov-card::before { background: var(--menthe); }
.sov-card:hover .sov-card-link { color: var(--menthe); }

/* ── 29. Newsletter submit → vert ── */
.nl-submit { background: var(--blue) !important; }
.nl-submit:hover { background: var(--rouge-fonce) !important; }

/* ── 30. Cookie accept → vert ── */
.cookie-btn-accept { background: var(--blue) !important; }
.cookie-btn-accept:hover { background: var(--rouge-fonce) !important; }

/* ── 31. Breadcrumb séparateur — teal ── */
.breadcrumb-sep { color: var(--menthe) !important; opacity: .8 !important; }

/* ── 32. Section-label dark context ── */
.stats-banner .section-label,
.cta-dark .section-label,
.cta-clean .section-label,
.cta-premium .section-label {
  color: var(--menthe) !important;
}

/* ── 33. Testimonials level tag ── */
.testimonial-level,
.testimonial-p-level { color: var(--menthe) !important; }

/* ── 34. Portfolio card type line ── */
.portfolio-card-type {
  color: var(--blue);
}

/* ── 35. Dropdown menu ── */
.dropdown-menu a:hover { color: var(--blue); }
.lang-option--active::after { background: var(--blue); }
.lang-option--active { color: var(--blue); }

/* ── 36. About story badge ── */
.asb-year { color: var(--menthe) !important; }
.asb2-num { color: var(--menthe) !important; }

/* ── 37. Scroll reveal — stagger plus fluide ── */
.reveal {
  transition: opacity .7s cubic-bezier(.4,0,.2,1), transform .7s cubic-bezier(.4,0,.2,1);
}
.reveal:nth-child(2) { transition-delay: .1s; }
.reveal:nth-child(3) { transition-delay: .2s; }
.reveal:nth-child(4) { transition-delay: .3s; }
.reveal:nth-child(5) { transition-delay: .4s; }

/* ── 38. Page hero colorbar bottom (amélioration) ── */
.page-hero::after {
  background: linear-gradient(90deg,
    var(--blue) 0%,
    var(--menthe) 30%,
    var(--bourgeon) 55%,
    var(--ecume) 75%,
    var(--macaron) 100%
  ) !important;
  height: 4px !important;
}

/* ── 39. Mobile nav drawer header — cohérent ── */
.site-nav::before {
  background: linear-gradient(135deg, var(--rouge-fonce), var(--blue)) !important;
  border-bottom-color: var(--menthe) !important;
}

/* ── 40. Hero dots ── */
.hero-dot.active { background: var(--menthe); }

/* ── 41. Suppression rouge erreur form → vert ── */
.em-req { color: var(--blue); }

/* ── 42. Why card — légère amélioration bg ── */
.why-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  border-top: 3px solid var(--blue);
}

/* ── 43. Immo stats bar ── */
.immo-stat-num { color: var(--menthe) !important; }
.real-stat-num { color: var(--menthe) !important; }
.astat-num { color: var(--menthe) !important; }

/* ── 44. Footer CTA strip deco squares ── */
.footer-cta-deco--tr { background: var(--bourgeon) !important; }
.footer-cta-deco--bl { background: var(--menthe) !important; }

/* ── 45. Header utility bar nav drawer branding ── */
.nav-drawer-header {
  background: linear-gradient(135deg, var(--rouge-fonce), var(--blue));
  padding: 1.25rem 1.5rem;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  border-bottom: 3px solid var(--menthe);
}
.nav-drawer-logo {
  height: 38px;
  width: auto;
  object-fit: contain;
  filter: brightness(0) invert(1);
  opacity: .9;
}
.nav-drawer-close {
  background: rgba(255,255,255,.15);
  border: none;
  color: white;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .15s;
}
.nav-drawer-close:hover { background: rgba(255,255,255,.3); }

/* ── 46. Section bg gray légèrement verdâtre ── */
.section-bg-gray { background: #f4f8f5; }
.footer-body { background: #f4f8f5; }

/* ── 47. Amélioration générale shadow des cartes ── */
.home-svc:hover,
.portfolio-card:hover,
.why-card:hover,
.service-card:hover,
.svc-card:hover,
.contact-card-tile:hover,
.immo-card:hover,
.project-card:hover {
  box-shadow: 0 16px 52px rgba(15,77,46,.14), 0 4px 12px rgba(15,77,46,.08) !important;
}

/* ── 48. Project card cta ── */
.project-card-cta:hover { color: var(--menthe) !important; }

/* ── 49. See-all links ── */
.see-all-link {
  color: var(--blue);
  position: relative;
}
.see-all-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background: var(--menthe);
  transition: width .25s ease;
}
.see-all-link:hover::after { width: 100%; }
.see-all-link:hover { text-decoration: none; color: var(--menthe); }

/* ── 50. Stripe bar 5ème segment → bourgeon (vert) ── */
.stripe-bar span:nth-child(5) { background: var(--bourgeon) !important; }

/* ============================================================
   GGSW DESIGN UPGRADE 2026 — Hero centering, breadcrumb AFM,
   contact strip, contact info card, services improvements
   ============================================================ */

/* ── Hero slide — centered text ── */
.hero-slide-content {
  text-align: center !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
}
.hero-slide-label {
  text-align: center;
}
.hero-slide-title {
  text-align: center !important;
  max-width: 780px !important;
}
.hero-slide-sub {
  text-align: center !important;
  max-width: 620px !important;
}
.hero-slide-actions {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-wrap: wrap !important;
  gap: .85rem !important;
}

/* ── Page hero — centered layout (AFM style) ── */
.page-hero .c-container,
.page-hero .page-hero-inner {
  text-align: center !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
}
.page-hero h1 {
  text-align: center !important;
}
.page-hero .page-hero-sub {
  text-align: center;
  max-width: 600px;
}
.page-hero .cta-row {
  justify-content: center !important;
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  margin-top: 1.5rem;
}

/* ── Breadcrumb — AFM style (green palette) ── */
.breadcrumb {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: .45rem !important;
  font-size: .78rem !important;
  font-weight: 500 !important;
  color: rgba(255,255,255,.5) !important;
  margin-bottom: 1.25rem !important;
  flex-wrap: wrap !important;
}
.breadcrumb a {
  color: rgba(255,255,255,.7) !important;
  text-decoration: none !important;
  transition: color .2s !important;
}
.breadcrumb a:hover {
  color: var(--menthe) !important;
  text-decoration: none !important;
}
.breadcrumb-sep {
  color: rgba(255,255,255,.35) !important;
  font-size: .75rem !important;
}
.breadcrumb-current {
  color: rgba(255,255,255,.85) !important;
  font-weight: 600 !important;
}

/* ── Quick contact strip (AFM style) ── */
.quick-contact-strip {
  background: var(--bluegray-50);
  border-bottom: 1px solid var(--bluegray-100);
  border-top: none;
}
.quick-contact-strip-inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.quick-contact-tile {
  display: flex;
  align-items: center;
  gap: .9rem;
  padding: 1.4rem 1.25rem;
  border-right: 1px solid var(--bluegray-100);
  text-decoration: none;
  color: inherit;
  transition: background .2s;
  cursor: pointer;
}
.quick-contact-tile:last-child { border-right: none; }
.quick-contact-tile:hover { background: white; }
.quick-contact-tile-icon {
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: .9rem;
  color: white;
}
.quick-contact-tile-label {
  font-size: .67rem;
  font-weight: 700;
  color: var(--gray-500);
  text-transform: uppercase;
  letter-spacing: .08em;
  margin-bottom: .18rem;
}
.quick-contact-tile-value {
  font-size: .88rem;
  font-weight: 600;
  color: var(--blackgray-700);
}
@media (max-width: 768px) {
  .quick-contact-strip-inner { grid-template-columns: 1fr 1fr; }
  .quick-contact-tile:nth-child(2) { border-right: none; }
  .quick-contact-tile:nth-child(3) { border-right: 1px solid var(--bluegray-100); border-top: 1px solid var(--bluegray-100); }
  .quick-contact-tile:nth-child(4) { border-top: 1px solid var(--bluegray-100); border-right: none; }
}
@media (max-width: 480px) {
  .quick-contact-strip-inner { grid-template-columns: 1fr; }
  .quick-contact-tile { border-right: none !important; border-top: 1px solid var(--bluegray-100); }
  .quick-contact-tile:first-child { border-top: none; }
}

/* ── Contact info card (dark green AFM-style) ── */
.contact-info-card {
  background: linear-gradient(145deg, var(--rouge-fonce) 0%, var(--blue) 100%);
  color: white;
  padding: 2rem;
  position: relative;
  overflow: hidden;
}
.contact-info-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.05)' stroke-width='1'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}
.contact-info-card > * { position: relative; }
.contact-info-card h3 {
  color: white;
  font-size: 1.05rem;
  margin-bottom: 1.5rem;
  margin-top: .5rem;
}
.contact-item {
  display: flex;
  gap: 1rem;
  margin-bottom: 1.25rem;
  align-items: flex-start;
}
.contact-icon {
  width: 36px;
  height: 36px;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.2);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: .85rem;
  color: var(--menthe);
}
.contact-detail strong {
  display: block;
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: rgba(255,255,255,.5);
  margin-bottom: .2rem;
}
.contact-detail a,
.contact-detail span {
  font-size: .88rem;
  color: rgba(255,255,255,.85);
  text-decoration: none;
}
.contact-detail a:hover { color: var(--menthe); }
.contact-social-links {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
}
.contact-social-link {
  width: 36px;
  height: 36px;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.2);
  color: rgba(255,255,255,.7);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .8rem;
  text-decoration: none;
  transition: background .2s, color .2s;
}
.contact-social-link:hover {
  background: var(--menthe);
  color: white;
  border-color: var(--menthe);
}

/* ── Department contact cards ── */
.dept-card {
  padding: .9rem 1rem;
  background: white;
  border-bottom: 2px solid var(--blue);
}
.dept-card-label {
  font-size: .66rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--blue);
  margin-bottom: .2rem;
}
.dept-card-name {
  font-size: .9rem;
  font-weight: 700;
  margin-bottom: .1rem;
  color: var(--blackgray-700);
}
.dept-card a {
  font-size: .8rem;
  color: var(--gray-600);
  text-decoration: none;
}
.dept-card a:hover { color: var(--blue); }
.dept-cards-grid {
  display: grid;
  gap: .6rem;
}

/* ── Homepage intro strip ── */
.home-intro-strip {
  background: white;
  border-bottom: 1px solid var(--bluegray-100);
  padding: 2rem 0;
}
.home-intro-strip-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
}
.home-intro-kpi {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex: 1;
  min-width: 140px;
}
.home-intro-kpi-num {
  font-size: 2rem;
  font-weight: 900;
  color: var(--blue);
  line-height: 1;
}
.home-intro-kpi-label {
  font-size: .78rem;
  color: var(--gray-600);
  line-height: 1.4;
  font-weight: 500;
}
.home-intro-divider {
  width: 1px;
  height: 3rem;
  background: var(--bluegray-100);
  flex-shrink: 0;
}
@media (max-width: 640px) {
  .home-intro-strip-inner { flex-direction: column; align-items: flex-start; gap: 1.25rem; }
  .home-intro-divider { display: none; }
}

/* ── Process steps ── */
.process-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  position: relative;
}
.process-steps::before {
  content: '';
  position: absolute;
  top: 28px;
  left: 12.5%;
  right: 12.5%;
  height: 2px;
  background: var(--bluegray-100);
  z-index: 0;
}
.process-step {
  text-align: center;
  padding: 0 1rem;
  position: relative;
  z-index: 1;
}
.process-step-num {
  width: 56px;
  height: 56px;
  background: var(--blue);
  color: white;
  font-weight: 900;
  font-size: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.25rem;
  position: relative;
}
.process-step-num::after {
  content: '';
  position: absolute;
  inset: -3px;
  border: 2px solid var(--menthe);
  opacity: .35;
}
.process-step-title {
  font-size: .88rem;
  font-weight: 700;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
}
.process-step-desc {
  font-size: .78rem;
  color: var(--gray-600);
  line-height: 1.6;
}
@media (max-width: 768px) {
  .process-steps { grid-template-columns: 1fr 1fr; gap: 2rem 1rem; }
  .process-steps::before { display: none; }
}
@media (max-width: 480px) {
  .process-steps { grid-template-columns: 1fr; }
}

/* ── Service page hero (full-width with image) ── */
.service-page-hero {
  position: relative;
  overflow: hidden;
  background: var(--rouge-fonce);
  padding: 5.5rem 0 4.5rem;
  color: white;
}
.service-page-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: .18;
  filter: grayscale(.8);
}
.service-page-hero-content {
  position: relative;
  z-index: 1;
}
.service-page-hero h1 { color: white; }

/* ── Improved service benefit cards ── */
.service-benefit-card {
  padding: 1.5rem;
  background: white;
  border: 1px solid var(--bluegray-100);
  border-left: 4px solid var(--blue);
  transition: border-left-color .2s, box-shadow .2s;
}
.service-benefit-card:hover {
  border-left-color: var(--menthe) !important;
  box-shadow: 0 4px 20px rgba(15,77,46,.08);
}
.service-benefit-icon {
  width: 44px;
  height: 44px;
  background: rgba(15,77,46,.08);
  color: var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  margin-bottom: 1rem;
}
.service-benefit-title {
  font-size: .9rem;
  font-weight: 700;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
}
.service-benefit-desc {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
}

/* ── Immobilier search/filter bar ── */
.immo-filter-bar {
  background: white;
  border: 1px solid var(--bluegray-100);
  padding: 1.25rem 1.5rem;
  display: flex;
  gap: 1rem;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 2.5rem;
  box-shadow: 0 2px 12px rgba(15,77,46,.06);
}
.immo-filter-select {
  flex: 1;
  min-width: 160px;
  padding: .65rem .9rem;
  border: 1px solid var(--bluegray-200);
  font-family: inherit;
  font-size: .85rem;
  color: var(--blackgray-700);
  background: white;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%236b7280'%3E%3Cpath fill-rule='evenodd' d='M5.22 8.22a.75.75 0 011.06 0L10 11.94l3.72-3.72a.75.75 0 111.06 1.06l-4.25 4.25a.75.75 0 01-1.06 0L5.22 9.28a.75.75 0 010-1.06z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .75rem center;
  background-size: 16px;
  cursor: pointer;
}
.immo-filter-select:focus {
  outline: none;
  border-color: var(--menthe);
  box-shadow: 0 0 0 3px rgba(33,171,136,.1);
}
.immo-filter-btn {
  padding: .65rem 1.4rem;
  background: var(--blue);
  color: white;
  font-family: inherit;
  font-size: .82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  border: none;
  cursor: pointer;
  transition: background .2s;
  white-space: nowrap;
}
.immo-filter-btn:hover { background: var(--rouge-fonce); }

/* ── Immobilier property card ── */
.immo-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .3s ease, transform .25s ease;
  display: flex;
  flex-direction: column;
}
.immo-card:hover {
  box-shadow: 0 16px 52px rgba(15,77,46,.14), 0 4px 12px rgba(15,77,46,.08) !important;
  transform: translateY(-4px);
}
.immo-card-img {
  position: relative;
  overflow: hidden;
  height: 220px;
}
.immo-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.immo-card:hover .immo-card-img img {
  transform: scale(1.04);
}
.immo-card-body {
  padding: 1.4rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.immo-card-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
  line-height: 1.35;
}
.immo-card-loc {
  font-size: .78rem;
  color: var(--gray-500);
  display: flex;
  align-items: center;
  gap: .3rem;
  margin-bottom: .85rem;
}
.immo-card-features {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.1rem;
  padding-bottom: 1.1rem;
  border-bottom: 1px solid var(--bluegray-100);
}
.immo-card-feat {
  font-size: .78rem;
  color: var(--gray-600);
  display: flex;
  align-items: center;
  gap: .3rem;
}
.immo-card-feat i { color: var(--blue); }
.immo-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: var(--blue);
  color: white;
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .6rem 1.1rem;
  text-decoration: none;
  transition: background .2s;
  margin-top: auto;
  align-self: flex-start;
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.immo-card-cta:hover { background: var(--rouge-fonce); }
.immo-card-type-badge {
  position: absolute;
  top: .85rem;
  left: .85rem;
  background: var(--blue);
  color: white;
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .28rem .65rem;
}
.immo-card-price-badge {
  position: absolute;
  bottom: .85rem;
  right: .85rem;
  background: var(--bourgeon);
  color: white;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .05em;
  padding: .28rem .65rem;
}

/* ── Homepage testimonial section ── */
.testimonial-strip {
  background: linear-gradient(135deg, var(--rouge-fonce) 0%, var(--blue) 100%);
  padding: 4rem 0;
  position: relative;
  overflow: hidden;
}
.testimonial-strip::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.05)' stroke-width='1'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}
.testimonial-quote {
  position: relative;
  z-index: 1;
  text-align: center;
  max-width: 700px;
  margin: 0 auto;
  color: white;
}
.testimonial-quote-mark {
  font-size: 4rem;
  color: var(--menthe);
  line-height: 1;
  font-family: Georgia, serif;
  margin-bottom: -.5rem;
  display: block;
}
.testimonial-quote-text {
  font-size: 1.1rem;
  line-height: 1.75;
  color: rgba(255,255,255,.9);
  font-style: italic;
  margin-bottom: 1.5rem;
}
.testimonial-author {
  font-size: .82rem;
  font-weight: 700;
  color: var(--menthe);
  text-transform: uppercase;
  letter-spacing: .1em;
}

/* ── Section centered header ── */
.section-header-center {
  text-align: center;
  margin-bottom: 3rem;
}
.section-header-center .c-title-h2 {
  display: inline-block;
  border-left: none !important;
  padding-left: 0 !important;
}
.section-header-center .c-title-h2::before {
  content: '';
  display: block;
  width: 48px;
  height: 3px;
  background: var(--menthe);
  margin: 0 auto 1rem;
}
.section-header-center p {
  max-width: 580px;
  margin: .75rem auto 0;
  color: var(--gray-600);
  font-size: .95rem;
  line-height: 1.75;
}

/* ── Intro section (homepage: who we are strip) ── */
.home-about-strip {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 5rem;
  align-items: center;
}
@media (max-width: 900px) {
  .home-about-strip { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* ── Why cards — 4-column grid ── */
.why-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .why-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .why-grid { grid-template-columns: 1fr; } }

/* ── Partner logos strip ── */
.partners-strip {
  background: var(--bluegray-50);
  border-top: 1px solid var(--bluegray-100);
  border-bottom: 1px solid var(--bluegray-100);
  padding: 2rem 0;
}
.partners-strip-label {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--gray-400);
  text-align: center;
  margin-bottom: 1.25rem;
}
.partners-strip-logos {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2.5rem;
  flex-wrap: wrap;
}
.partners-strip-logo {
  font-size: .75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--gray-400);
  padding: .5rem 1rem;
  border: 1px solid var(--bluegray-200);
  background: white;
}

/* ── Portfolio card improved ── */
.portfolio-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .3s ease, transform .25s ease;
  display: flex;
  flex-direction: column;
}
.portfolio-card-img {
  position: relative;
  overflow: hidden;
  height: 220px;
}
.portfolio-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.portfolio-card:hover .portfolio-card-img img {
  transform: scale(1.04);
}
.portfolio-card-body {
  padding: 1.4rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.portfolio-card-type {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--blue);
  margin-bottom: .4rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.portfolio-card-type::before {
  content: '';
  display: inline-block;
  width: 10px;
  height: 2px;
  background: var(--menthe);
  flex-shrink: 0;
}
.portfolio-card-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
  line-height: 1.35;
}
.portfolio-card-loc {
  font-size: .78rem;
  color: var(--gray-500);
  display: flex;
  align-items: center;
  gap: .3rem;
  margin-bottom: .65rem;
}
.portfolio-card-desc {
  font-size: .83rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin-bottom: 1rem;
  flex: 1;
}
.portfolio-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: var(--blue);
  color: white;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: .55rem 1rem;
  text-decoration: none;
  transition: background .2s;
  align-self: flex-start;
  box-shadow: 3px 3px 0 rgba(15,77,46,.2);
}
.portfolio-card-cta:hover { background: var(--rouge-fonce); }
.portfolio-card-status {
  position: absolute;
  top: .85rem;
  right: .85rem;
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: .28rem .65rem;
  color: white;
}
.portfolio-card-status--done { background: var(--blue); }
.portfolio-card-status--ongoing { background: var(--bourgeon); }

/* ── Services overview grid (homepage) ── */
.home-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .home-services-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .home-services-grid { grid-template-columns: 1fr; } }

/* ── Home service card ── */
.home-svc {
  background: white;
  border: 1px solid var(--bluegray-100);
  border-bottom: 3px solid transparent;
  padding: 1.75rem 1.5rem;
  text-decoration: none;
  color: inherit;
  display: flex;
  gap: 1.1rem;
  align-items: flex-start;
  transition: border-color .25s, box-shadow .25s, transform .25s;
}
.home-svc:hover {
  border-bottom-color: var(--menthe);
  box-shadow: 0 10px 36px rgba(15,77,46,.12);
  transform: translateY(-3px);
}
.home-svc-icon {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  color: white;
  flex-shrink: 0;
}
.home-svc-title {
  font-size: .95rem;
  font-weight: 700;
  color: var(--blackgray-700);
  margin-bottom: .4rem;
}
.home-svc-desc {
  font-size: .82rem;
  color: var(--gray-600);
  line-height: 1.65;
  margin-bottom: .65rem;
}
.home-svc-link {
  font-size: .75rem;
  font-weight: 700;
  color: var(--blue);
  text-transform: uppercase;
  letter-spacing: .06em;
  display: flex;
  align-items: center;
  gap: .3rem;
}
.home-svc--cta {
  background: linear-gradient(145deg, var(--rouge-fonce) 0%, var(--blue) 100%) !important;
  border-color: var(--blue) !important;
  border-bottom-color: var(--menthe) !important;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: .75rem;
}
.home-svc--cta h3, .home-svc--cta p { color: rgba(255,255,255,.9); }
.home-svc-cta-icon { font-size: 2rem; color: var(--menthe); }

/* ============================================================
   MOBILE POLISH — comprehensive responsive improvements
   Covers: page hero, sections, cards, footer, typography
   ============================================================ */

/* ── Page hero on phones ── */
@media (max-width: 640px) {
  .page-hero {
    padding: 3.5rem 0 2.75rem !important;
  }
  .page-hero h1 {
    font-size: clamp(1.55rem, 6vw, 2rem) !important;
    line-height: 1.25 !important;
  }
  .page-hero-sub {
    font-size: .88rem !important;
    max-width: 100% !important;
  }
  .page-hero-label {
    font-size: .62rem !important;
  }
}

/* ── Hero slider on very small screens ── */
@media (max-width: 480px) {
  .hero-slider { height: 82vh !important; }
  .hero-slide-title { font-size: 1.45rem !important; line-height: 1.25 !important; }
  .hero-slide-sub   { font-size: .84rem !important; display: -webkit-box !important; -webkit-line-clamp: 3 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; }
  .hero-cta-group   { flex-direction: column !important; align-items: flex-start !important; gap: .6rem !important; }
  .hero-cta-group a { width: 100% !important; justify-content: center !important; text-align: center !important; }
}

/* ── Section spacing tighter on mobile ── */
@media (max-width: 768px) {
  .c-section { padding-top: 3rem !important; padding-bottom: 3rem !important; }
  .section-intro { max-width: 100% !important; }
  .c-title-h2 { font-size: clamp(1.45rem, 5.5vw, 1.9rem) !important; }
}

/* ── Services overview grid — 1 column on phone ── */
@media (max-width: 480px) {
  .services-overview-grid { grid-template-columns: 1fr !important; }
  .svc-card { padding: 1.4rem !important; }
}

/* ── Why / value cards — 1 col on smallest phones ── */
@media (max-width: 360px) {
  .why-grid { grid-template-columns: 1fr !important; }
  .value-card { padding: 1.4rem 1rem !important; }
}

/* ── Portfolio / project grid ── */
@media (max-width: 480px) {
  .portfolio-grid      { grid-template-columns: 1fr !important; }
  .project-highlights-grid { grid-template-columns: 1fr !important; }
}

/* ── Immobilier cards ── */
@media (max-width: 640px) {
  .immo-grid { grid-template-columns: 1fr !important; }
  .immo-card-img { height: 195px !important; }
}

/* ── Contact section ── */
@media (max-width: 640px) {
  .contact-cards-grid { grid-template-columns: 1fr !important; }
  .contact-card-tile { padding: 1.5rem 1.25rem !important; }
  .form-input, .form-select, .form-textarea {
    font-size: 16px !important; /* Prevent iOS zoom */
  }
}

/* ── Footer ── */
@media (max-width: 640px) {
  .footer-links-grid   { grid-template-columns: 1fr !important; gap: 2rem !important; }
  .footer-cta-inner    { flex-direction: column !important; align-items: flex-start !important; gap: 1.5rem !important; }
  .footer-cta-right    { flex-direction: column !important; align-items: flex-start !important; gap: .75rem !important; }
  .footer-cta-strip    { padding: 3rem 1.25rem !important; }
  .footer-body         { padding: 3rem 0 2.5rem !important; }
  .footer-bottom-inner { flex-direction: column !important; gap: .75rem !important; text-align: center !important; }
  .footer-bottom-links { justify-content: center !important; flex-wrap: wrap !important; gap: .75rem 1.25rem !important; }
}

/* ── Breadcrumb wrapping ── */
@media (max-width: 640px) {
  .breadcrumb { font-size: .72rem !important; flex-wrap: wrap !important; }
}

/* ── Stats banner 2-col on mobile ── */
@media (max-width: 640px) {
  .stats-grid { grid-template-columns: 1fr 1fr !important; gap: 1.5rem 1rem !important; }
  .stat-number { font-size: 2.2rem !important; }
}

/* ── Project detail ── */
@media (max-width: 640px) {
  .proj-gallery-grid { grid-template-columns: 1fr !important; }
  .proj-header-inner { flex-direction: column !important; gap: 1rem !important; }
}

/* ── A-propos timeline ── */
@media (max-width: 640px) {
  .timeline-item { flex-direction: column !important; gap: .5rem !important; }
  .timeline-year-col { min-width: unset !important; }
}

/* ── WhatsApp float button — smaller on mobile ── */
@media (max-width: 480px) {
  .whatsapp-float { width: 50px !important; height: 50px !important; font-size: 1.35rem !important; bottom: 1rem !important; right: 1rem !important; }
}

/* ── Buttons full-width on tiny phones ── */
@media (max-width: 360px) {
  .btn-gina-primary,
  .btn-gina-outline { width: 100% !important; justify-content: center !important; }
}

/* ── CTA dark section ── */
@media (max-width: 640px) {
  .cta-dark .c-container { flex-direction: column !important; align-items: flex-start !important; gap: 1.25rem !important; }
  .cta-dark h2 { font-size: 1.5rem !important; }
}

/* ── Horizontal cards (project / service) → stack on mobile ── */
@media (max-width: 640px) {
  .c-card--classic-horizontal { flex-direction: column !important; }
  .c-card--classic-horizontal .c-card-img { width: 100% !important; height: 200px !important; }
}

/* ── Filter tabs wrap nicely on mobile ── */
@media (max-width: 640px) {
  .filter-tabs { gap: .4rem !important; }
  .filter-tab  { font-size: .72rem !important; padding: .4rem .85rem !important; }
}

/* ── Service detail benefit cards ── */
@media (max-width: 480px) {
  .service-benefits-grid { grid-template-columns: 1fr !important; }
  .service-benefit-card  { padding: 1.25rem !important; }
}

/* ── Immobilier detail specs ── */
@media (max-width: 640px) {
  .immo-specs-grid { grid-template-columns: 1fr 1fr !important; }
}

/* ── Prevent horizontal overflow site-wide ── */
html, body { overflow-x: hidden; max-width: 100vw; }
*, *::before, *::after { box-sizing: border-box; }


/* ================================================================
   GGSW 2026 MASTER OVERRIDES — Page Hero (no image), Mobile Menu, Spacing
   ================================================================ */

/* ── Page Hero: gradient only, no image ── */
.page-hero {
  background: linear-gradient(135deg, var(--rouge-fonce) 0%, var(--blue) 65%, #1a6b45 100%) !important;
  padding: 4.5rem 0 3.5rem !important;
  position: relative !important;
  overflow: hidden !important;
}
.page-hero-bg { display: none !important; }
.page-hero::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='40' height='40' fill='none' stroke='rgba(255,255,255,0.06)' stroke-width='1'/%3E%3C/svg%3E") repeat !important;
  z-index: 0 !important;
}
.page-hero::after {
  content: '' !important;
  position: absolute !important;
  bottom: 0 !important; left: 0 !important; right: 0 !important;
  height: 3px !important;
  background: linear-gradient(90deg, var(--menthe), #f4c430, #21ab88, #0F4D2E) !important;
  z-index: 2 !important;
}
.page-hero .c-container,
.page-hero .page-hero-inner {
  position: relative !important;
  z-index: 1 !important;
  text-align: center !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
}
.page-hero h1 { color: white !important; }
.page-hero-sub { color: rgba(255,255,255,.78) !important; }

/* ── Nav centering ── */
@media (min-width: 901px) {
  .site-nav {
    flex: 1 !important;
    justify-content: center !important;
  }
  /* Hide mobile-only nav elements on desktop */
  .mobile-nav-header,
  .mobile-nav-actions,
  .mobile-nav-cta,
  .mobile-nav-footer {
    display: none !important;
  }
}

/* ── Section spacing — reduce excessive gaps ── */
.apropos-section { padding-top: 3rem !important; padding-bottom: 3rem !important; }
.section-bg-white,
.section-bg-gray { padding: 3.5rem 0 !important; }
.section-bg-white + .section-bg-white,
.section-bg-gray + .section-bg-gray { padding-top: 0 !important; }

/* ── Partner logo slider ── */
.partner-slider-track {
  display: flex;
  gap: 2rem;
  animation: partnerScroll 22s linear infinite;
  width: max-content;
}
.partner-slider-track:hover { animation-play-state: paused; }
@keyframes partnerScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
.partner-logo-card {
  flex-shrink: 0;
  width: 160px;
  height: 80px;
  background: white;
  border: 1px solid var(--bluegray-100);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  text-decoration: none;
  transition: box-shadow .2s, border-color .2s;
}
.partner-logo-card:hover {
  box-shadow: 0 4px 16px rgba(15,77,46,.14);
  border-color: var(--menthe);
}
.partner-logo-card span {
  font-size: .75rem;
  font-weight: 800;
  color: var(--blue);
  letter-spacing: .06em;
  text-align: center;
  line-height: 1.3;
}
.partner-slider-wrap { overflow: hidden; }

/* ── Director card ── */
.director-card {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 2.5rem;
  align-items: center;
  background: white;
  border: 1px solid var(--bluegray-100);
  padding: 2.5rem;
  max-width: 780px;
  margin: 0 auto;
  box-shadow: 0 4px 24px rgba(15,77,46,.08);
}
.director-photo {
  width: 200px;
  height: 200px;
  background: var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 5rem;
  flex-shrink: 0;
  border-radius: 50%;
  overflow: hidden;
}
.director-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.director-name { font-size: 1.35rem; font-weight: 900; color: var(--blackgray-700); margin-bottom: .25rem; }
.director-title { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--menthe); margin-bottom: 1rem; }
.director-bio { font-size: .9rem; color: var(--gray-600); line-height: 1.7; margin-bottom: 1.25rem; }
.director-contacts { display: flex; gap: 1rem; flex-wrap: wrap; }
.director-contact-link {
  display: flex; align-items: center; gap: .5rem;
  font-size: .82rem; font-weight: 600; color: var(--blue);
  text-decoration: none; transition: color .2s;
}
.director-contact-link:hover { color: var(--menthe); }
@media (max-width: 640px) {
  .director-card { grid-template-columns: 1fr; text-align: center; }
  .director-contacts { justify-content: center; }
  .director-photo { width: 120px; height: 120px; font-size: 3rem; margin: 0 auto; }
}

/* ── Realisation card improvements ── */
.real-card {
  background: white;
  border: 1px solid var(--bluegray-100);
  overflow: hidden;
  transition: box-shadow .25s, transform .25s;
  display: flex;
  flex-direction: column;
}
.real-card:hover { box-shadow: 0 8px 32px rgba(15,77,46,.16); transform: translateY(-3px); }
.real-card-img { position: relative; height: 220px; overflow: hidden; }
.real-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.real-card:hover .real-card-img img { transform: scale(1.04); }
.real-card-tags {
  position: absolute; top: .75rem; left: .75rem;
  display: flex; flex-wrap: wrap; gap: .35rem;
}
.real-card-tag {
  font-size: .65rem; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; padding: .2rem .6rem;
  background: var(--blue); color: white;
}
.real-card-tag--type { background: var(--menthe); }
.real-card-tag--status-done { background: #22c55e; }
.real-card-tag--status-progress { background: #f59e0b; color: #1a1a1a; }
.real-card-body { padding: 1.25rem 1.5rem 1.5rem; flex: 1; display: flex; flex-direction: column; }
.real-card-client { font-size: .72rem; font-weight: 700; color: var(--menthe); text-transform: uppercase; letter-spacing: .08em; margin-bottom: .4rem; }
.real-card-title { font-size: 1rem; font-weight: 800; color: var(--blackgray-700); margin-bottom: .5rem; line-height: 1.35; }
.real-card-desc { font-size: .82rem; color: var(--gray-600); line-height: 1.6; flex: 1; margin-bottom: 1rem; }
.real-card-cta {
  display: inline-flex; align-items: center; gap: .45rem;
  font-size: .78rem; font-weight: 700; color: var(--blue);
  text-decoration: none; text-transform: uppercase; letter-spacing: .06em;
  transition: gap .2s, color .2s;
}
.real-card-cta:hover { color: var(--menthe); gap: .7rem; }
.real-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .real-cards-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 580px) { .real-cards-grid { grid-template-columns: 1fr; } }

/* ── Project detail: tighter spacing ── */
.projet-detail-section { padding: 2.5rem 0 !important; }
.projet-gallery { margin-bottom: 2rem !important; }

/* ── Service card improvements ── */
.service-card-v2 {
  background: white;
  border: 1px solid var(--bluegray-100);
  padding: 2rem 1.75rem;
  display: flex; flex-direction: column;
  transition: box-shadow .25s, transform .25s, border-color .25s;
  position: relative; overflow: hidden;
}
.service-card-v2::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--menthe);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s;
}
.service-card-v2:hover { box-shadow: 0 8px 32px rgba(15,77,46,.14); transform: translateY(-3px); border-color: transparent; }
.service-card-v2:hover::before { transform: scaleX(1); }
.service-card-v2-icon { width: 52px; height: 52px; background: var(--bluegray-50); display: flex; align-items: center; justify-content: center; font-size: 1.4rem; color: var(--blue); margin-bottom: 1.25rem; }
.service-card-v2-title { font-size: 1rem; font-weight: 800; color: var(--blackgray-700); margin-bottom: .6rem; }
.service-card-v2-desc { font-size: .83rem; color: var(--gray-600); line-height: 1.65; flex: 1; margin-bottom: 1.25rem; }
.service-card-v2-link { display: inline-flex; align-items: center; gap: .4rem; font-size: .78rem; font-weight: 700; color: var(--blue); text-decoration: none; text-transform: uppercase; letter-spacing: .06em; transition: gap .2s, color .2s; }
.service-card-v2-link:hover { color: var(--menthe); gap: .65rem; }
.services-grid-v2 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
@media (max-width: 900px) { .services-grid-v2 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 580px) { .services-grid-v2 { grid-template-columns: 1fr; } }

/* ── Mobile menu full redesign ── */
@media (max-width: 900px) {
  /* Drawer */
  .site-nav {
    display: flex !important;
    flex-direction: column !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 100dvh !important;
    background: white !important;
    z-index: 1200 !important;
    transform: translateX(100%) !important;
    transition: transform .35s cubic-bezier(.4,0,.2,1) !important;
    box-shadow: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 0 !important;
    gap: 0 !important;
  }
  .site-nav.open { transform: translateX(0) !important; }

  /* Drawer header strip */
  .mobile-nav-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 1rem 1.25rem !important;
    background: var(--rouge-fonce) !important;
    flex-shrink: 0 !important;
  }
  .mobile-nav-brand {
    font-size: .65rem !important;
    font-weight: 900 !important;
    letter-spacing: .18em !important;
    color: white !important;
    text-transform: uppercase !important;
  }
  .mobile-nav-close {
    width: 36px !important; height: 36px !important;
    display: flex !important; align-items: center !important; justify-content: center !important;
    background: rgba(255,255,255,.15) !important;
    border: none !important; cursor: pointer !important;
    color: white !important; font-size: 1.2rem !important;
    flex-shrink: 0 !important;
  }

  /* Quick actions bar */
  .mobile-nav-actions {
    display: flex !important;
    background: var(--blue) !important;
    flex-shrink: 0 !important;
  }
  .mobile-nav-action {
    flex: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: .3rem !important;
    padding: .75rem .5rem !important;
    text-decoration: none !important;
    color: white !important;
    font-size: .6rem !important;
    font-weight: 700 !important;
    letter-spacing: .06em !important;
    text-transform: uppercase !important;
    border-right: 1px solid rgba(255,255,255,.1) !important;
    transition: background .2s !important;
  }
  .mobile-nav-action:last-child { border-right: none !important; }
  .mobile-nav-action:hover { background: var(--rouge-fonce) !important; }
  .mobile-nav-action i { font-size: 1.1rem !important; }

  /* Nav links — centered */
  .site-nav .c-menu-link {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    padding: 1rem 1.5rem !important;
    font-size: .95rem !important;
    font-weight: 700 !important;
    color: var(--blackgray-700) !important;
    border-bottom: 1px solid var(--bluegray-50) !important;
    border-left: none !important;
    text-align: center !important;
    text-transform: uppercase !important;
    letter-spacing: .08em !important;
    text-decoration: none !important;
    background: white !important;
    transition: background .15s, color .15s !important;
  }
  .site-nav .c-menu-link:hover,
  .site-nav .c-menu-link--active {
    background: var(--bluegray-50) !important;
    color: var(--blue) !important;
  }
  .site-nav .c-menu-link::after { display: none !important; }

  /* Contact CTA inside drawer */
  .mobile-nav-cta {
    display: block !important;
    margin: 1.25rem 1.5rem !important;
    padding: .85rem 1.5rem !important;
    background: var(--blue) !important;
    color: white !important;
    text-align: center !important;
    font-size: .8rem !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .1em !important;
    text-decoration: none !important;
    flex-shrink: 0 !important;
  }
  .mobile-nav-cta:hover { background: var(--rouge-fonce) !important; }

  /* Social + lang footer inside drawer */
  .mobile-nav-footer {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 1rem 1.5rem !important;
    border-top: 1px solid var(--bluegray-100) !important;
    background: var(--bluegray-50) !important;
    flex-shrink: 0 !important;
    flex-wrap: wrap !important;
    gap: .75rem !important;
  }
  .mobile-nav-socials {
    display: flex !important;
    gap: .75rem !important;
  }
  .mobile-nav-social {
    width: 34px !important; height: 34px !important;
    background: var(--blue) !important;
    color: white !important;
    display: flex !important; align-items: center !important; justify-content: center !important;
    font-size: .85rem !important;
    text-decoration: none !important;
    transition: background .2s !important;
  }
  .mobile-nav-social:hover { background: var(--menthe) !important; }
  .mobile-nav-lang {
    display: flex !important;
    align-items: center !important;
    gap: .5rem !important;
    font-size: .75rem !important;
    color: var(--gray-500) !important;
  }
  .mobile-nav-lang span { font-weight: 700; color: var(--blue); cursor: pointer; }

  /* hamburger z-index above drawer */
  .menu-toggle { z-index: 1300 !important; }

  /* overlay stays at z-index 150 (below site-header z-index:200) — see global rule above */
}

/* Project detail pages — tighter spacing */
.projet-section { padding: 2rem 0 !important; }
section[class*="section-bg"] { padding-top: 3rem !important; padding-bottom: 3rem !important; }

/* ── Section header mobile centering fix ── */
@media (max-width: 768px) {
  .section-header-row {
    text-align: center !important;
    align-items: center !important;
    justify-content: center !important;
    flex-direction: column !important;
  }
  /* Remove left-border offset from h2 on mobile — use bottom accent instead */
  .section-header-row .c-title-h2,
  .section-header-center .c-title-h2 {
    border-left: none !important;
    padding-left: 0 !important;
    display: inline-block !important;
  }
  .section-header-row .c-title-h2::after,
  .section-header-center .c-title-h2::after {
    content: '' !important;
    display: block !important;
    width: 48px !important;
    height: 3px !important;
    background: var(--menthe) !important;
    margin: .6rem auto 0 !important;
  }
  .section-label { text-align: center !important; }
}

/* ================================================================
   GGSW — COMPREHENSIVE MOBILE POLISH
   Target: all disproportionate elements on phones (≤768px / ≤480px)
   ================================================================ */

/* ── 1. Global containment & typography scale ── */
@media (max-width: 768px) {
  html, body { overflow-x: hidden; }
  .c-container,
  .c-wrapper { padding-left: 1rem !important; padding-right: 1rem !important; }

  /* Headings scale down */
  h1 { font-size: clamp(1.6rem, 6vw, 2.2rem) !important; }
  h2 { font-size: clamp(1.3rem, 5vw, 1.75rem) !important; }
  h3 { font-size: clamp(1.1rem, 4.5vw, 1.35rem) !important; }

  /* Remove h1 decorative rotate bar — too wide on mobile */
  .page-hero h1::after { display: none !important; }
}

/* ── 2. Page hero padding & text ── */
@media (max-width: 768px) {
  .page-hero { padding: 3rem 0 2.5rem !important; }
  .page-hero h1 { font-size: clamp(1.5rem, 6vw, 2rem) !important; line-height: 1.2 !important; }
  .page-hero-sub { font-size: .875rem !important; padding: 0 .5rem !important; }
  .page-hero-label { font-size: .62rem !important; margin-bottom: 1rem !important; }
  .breadcrumb { font-size: .72rem !important; gap: .3rem !important; margin-bottom: .85rem !important; }
}

/* ── 3. Hero slider ── */
@media (max-width: 768px) {
  .hero-slider { height: 90vh !important; min-height: 480px !important; }
  .hero-slide-content { padding: 0 1.25rem 2rem !important; }
  .hero-slide-title { font-size: clamp(1.5rem, 6vw, 2rem) !important; line-height: 1.2 !important; }
  .hero-slide-sub { font-size: .875rem !important; max-width: 100% !important; }
  .hero-slide-actions { flex-direction: column !important; align-items: center !important; gap: .65rem !important; width: 100% !important; }
  .hero-slide-actions a { width: 100% !important; justify-content: center !important; max-width: 320px !important; }
  .hero-dots { bottom: 1.25rem !important; }
  .hero-arrow { display: none !important; }
}

/* ── 4. Stats banner ── */
@media (max-width: 640px) {
  .stats-banner { padding: 2.5rem 0 !important; }
  .stats-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 1.5rem 1rem !important; }
  .stat-number { font-size: 2rem !important; }
  .stat-label { font-size: .75rem !important; }
}

/* ── 5. Home: "Qui sommes-nous" 2-col → 1-col ── */
@media (max-width: 768px) {
  .home-about-strip { grid-template-columns: 1fr !important; gap: 2rem !important; }
  .home-about-img { height: 250px !important; }
}

/* ── 6. Home services grid ── */
@media (max-width: 640px) {
  .home-services-grid { grid-template-columns: 1fr !important; }
}

/* ── 7. Process steps ── */
@media (max-width: 768px) {
  .process-steps { grid-template-columns: 1fr 1fr !important; gap: 1.5rem !important; }
  .process-steps::before { display: none !important; }
  .process-step { text-align: center !important; }
}
@media (max-width: 480px) {
  .process-steps { grid-template-columns: 1fr !important; }
  .process-step-num { margin: 0 auto .75rem !important; }
}

/* ── 8. Why / atouts grid ── */
@media (max-width: 640px) {
  .why-grid { grid-template-columns: 1fr 1fr !important; gap: 1rem !important; }
  .why-card { padding: 1.25rem 1rem !important; }
  .why-card-icon { font-size: 1.5rem !important; }
}
@media (max-width: 400px) {
  .why-grid { grid-template-columns: 1fr !important; }
}

/* ── 9. Portfolio / réalisations cards ── */
@media (max-width: 640px) {
  .real-cards-grid { grid-template-columns: 1fr !important; }
  .real-card-img { height: 200px !important; }
}

/* ── 10. Immobilier cards & filter ── */
@media (max-width: 640px) {
  .immo-grid { grid-template-columns: 1fr !important; }
  .immo-card-img { height: 200px !important; }
  .filter-tabs { flex-wrap: wrap !important; gap: .4rem !important; justify-content: center !important; }
  .filter-tab, .filter-btn { font-size: .72rem !important; padding: .4rem .9rem !important; }
}

/* ── 11. Immobilier detail ── */
@media (max-width: 768px) {
  .immo-detail-layout { grid-template-columns: 1fr !important; }
  .immo-gallery { grid-template-columns: 1fr !important; }
  .immo-gallery-main { height: 260px !important; }
  .immo-gallery-side { grid-template-columns: 1fr 1fr !important; height: 140px !important; }
  .immo-gallery-side-img { height: 100% !important; }
  .immo-specs-grid { grid-template-columns: 1fr 1fr !important; }
}

/* ── 12. Services grid (overview + detail) ── */
@media (max-width: 640px) {
  .services-grid-v2 { grid-template-columns: 1fr !important; }
  .service-card-v2 { padding: 1.5rem 1.25rem !important; }
  .service-benefits-grid { grid-template-columns: 1fr !important; }
  .service-benefit-card { padding: 1.25rem !important; }
}

/* ── 13. Contact page ── */
@media (max-width: 768px) {
  .contact-layout { grid-template-columns: 1fr !important; gap: 2rem !important; }
  .quick-contact-strip-inner { grid-template-columns: 1fr 1fr !important; }
  .quick-contact-tile { padding: 1rem !important; gap: .65rem !important; }
  .quick-contact-tile-icon { width: 38px !important; height: 38px !important; font-size: .9rem !important; flex-shrink: 0 !important; }
  .quick-contact-tile-value { font-size: .78rem !important; word-break: break-all !important; }
  .contact-info-card { padding: 1.5rem !important; }
  .form-input, .form-select, .form-textarea { font-size: 16px !important; padding: .7rem .9rem !important; }
  .form-grid { grid-template-columns: 1fr !important; }
}
@media (max-width: 420px) {
  .quick-contact-strip-inner { grid-template-columns: 1fr !important; }
}

/* ── 14. Director card ── */
@media (max-width: 640px) {
  .director-card { grid-template-columns: 1fr !important; padding: 1.5rem !important; gap: 1.5rem !important; text-align: center !important; }
  .director-photo { width: 100px !important; height: 100px !important; font-size: 2.5rem !important; margin: 0 auto !important; }
  .director-contacts { justify-content: center !important; flex-wrap: wrap !important; gap: .75rem !important; }
}

/* ── 15. Partner slider ── */
@media (max-width: 640px) {
  .partner-logo-card { width: 130px !important; height: 65px !important; }
  .partner-logo-card span { font-size: .65rem !important; }
}

/* ── 16. Timeline (à-propos) ── */
@media (max-width: 640px) {
  .timeline { padding-left: 1.25rem !important; }
  .timeline-item { padding-left: 1rem !important; gap: .5rem !important; }
  .timeline-year { font-size: .7rem !important; }
  .timeline-title { font-size: .9rem !important; }
  .timeline-body { font-size: .82rem !important; }
}

/* ── 17. Mission / Vision 2-col → 1-col ── */
@media (max-width: 640px) {
  div[style*="grid-template-columns:1fr 1fr"],
  div[style*="grid-template-columns: 1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }
}

/* ── 18. Project detail pages ── */
@media (max-width: 768px) {
  .projet-detail-layout { grid-template-columns: 1fr !important; }
  .projet-gallery-grid { grid-template-columns: 1fr !important; }
  .projet-gallery-grid img { height: 220px !important; object-fit: cover !important; }
  .proj-meta-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 480px) {
  .proj-meta-grid { grid-template-columns: 1fr !important; }
}

/* ── 19. Footer ── */
@media (max-width: 768px) {
  .footer-links-grid { grid-template-columns: 1fr 1fr !important; gap: 2rem 1.5rem !important; }
  .footer-cta-inner { flex-direction: column !important; gap: 1.5rem !important; align-items: flex-start !important; }
  .footer-cta-right { flex-direction: column !important; gap: .75rem !important; align-items: flex-start !important; }
  .footer-cta-actions { flex-direction: column !important; gap: .65rem !important; align-items: flex-start !important; width: 100% !important; }
  .footer-cta-btn,
  .footer-cta-btn-outline { width: 100% !important; justify-content: center !important; }
  .footer-cta-strip { padding: 2.5rem 1rem !important; }
  .footer-body { padding: 2.5rem 0 2rem !important; }
  .footer-bottom-inner { flex-direction: column !important; gap: .75rem !important; text-align: center !important; }
  .footer-bottom-links { justify-content: center !important; flex-wrap: wrap !important; }
}
@media (max-width: 480px) {
  .footer-links-grid { grid-template-columns: 1fr !important; }
}

/* ── 20. CTA dark section ── */
@media (max-width: 640px) {
  .cta-dark { padding: 3rem 0 !important; }
  .cta-dark .c-container { flex-direction: column !important; align-items: flex-start !important; gap: 1.25rem !important; }
  .cta-dark h2 { font-size: 1.45rem !important; }
  .cta-dark-actions { flex-direction: column !important; gap: .65rem !important; width: 100% !important; align-items: flex-start !important; }
  .cta-dark-actions a { width: 100% !important; justify-content: center !important; }
}

/* ── 21. Testimonial strip ── */
@media (max-width: 640px) {
  .testimonial-strip { padding: 2.5rem 0 !important; }
  .testimonial-p { padding: 1.25rem !important; }
  .testimonial-p-text { font-size: .9rem !important; }
}

/* ── 22. WhatsApp float ── */
@media (max-width: 480px) {
  .whatsapp-float { width: 48px !important; height: 48px !important; font-size: 1.3rem !important; bottom: 1rem !important; right: 1rem !important; }
}

/* ── 23. Utility / stripe bar ── */
@media (max-width: 768px) {
  .header-utility { display: none !important; }
  .stripe-bar { height: 3px !important; }
}

/* ── 24. Buttons ── */
@media (max-width: 480px) {
  .btn-gina-primary,
  .btn-gina-outline,
  .c-btn { font-size: .82rem !important; padding: .75rem 1.25rem !important; }
}

/* ── 25. Map section ── */
@media (max-width: 640px) {
  .map-iframe-wrap iframe { height: 240px !important; }
}

/* ── 26. FAQ accordion ── */
@media (max-width: 640px) {
  .faq-question { font-size: .9rem !important; padding: 1rem !important; }
  .faq-answer { font-size: .85rem !important; padding: 0 1rem 1rem !important; }
}

/* ── 27. Home about / intro 2-col ── */
@media (max-width: 640px) {
  .home-about-grid,
  .about-2col { grid-template-columns: 1fr !important; }
  .home-about-img-wrap { height: 220px !important; }
}

/* ── 28. Section padding uniform on small phones ── */
@media (max-width: 480px) {
  .section-bg-white,
  .section-bg-gray,
  .apropos-section { padding: 2.5rem 0 !important; }
  .section-header-center,
  .section-header-row { margin-bottom: 1.75rem !important; }
}

/* ── Process steps: definitive card layout ── */
/* Force vertical card layout (number top, title+desc below, centered) */
.process-steps {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1.5rem !important;
  position: relative !important;
}
.process-steps::before {
  content: '' !important;
  position: absolute !important;
  top: 26px !important;
  left: 12.5% !important;
  right: 12.5% !important;
  height: 2px !important;
  background: var(--bluegray-100) !important;
  z-index: 0 !important;
}
.process-step {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  text-align: center !important;
  padding: 1.5rem 1rem !important;
  position: relative !important;
  z-index: 1 !important;
  background: white !important;
  border: 1px solid var(--bluegray-100) !important;
}
/* Number badge */
.process-step-num,
.ps-num {
  width: 52px !important;
  height: 52px !important;
  background: var(--blue) !important;
  color: white !important;
  font-weight: 900 !important;
  font-size: 1.05rem !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 auto 1.1rem !important;
  flex-shrink: 0 !important;
  position: relative !important;
  letter-spacing: .04em !important;
}
.process-step-num::after {
  content: '' !important;
  position: absolute !important;
  inset: -3px !important;
  border: 2px solid var(--menthe) !important;
  opacity: .4 !important;
}
/* Title */
.process-step-title,
.ps-title {
  font-size: .9rem !important;
  font-weight: 800 !important;
  color: var(--blackgray-700) !important;
  margin: 0 0 .45rem !important;
  line-height: 1.3 !important;
}
/* Description */
.process-step-desc,
.ps-body {
  font-size: .8rem !important;
  color: var(--gray-600) !important;
  line-height: 1.65 !important;
  margin: 0 !important;
}
/* The div wrapper inside ps-num variant */
.process-step > div:not(.ps-num) {
  text-align: center !important;
  width: 100% !important;
}
/* Responsive */
@media (max-width: 900px) {
  .process-steps { grid-template-columns: repeat(2, 1fr) !important; }
  .process-steps::before { display: none !important; }
}
@media (max-width: 480px) {
  .process-steps { grid-template-columns: 1fr !important; }
  .process-step { padding: 1.25rem !important; }
}

/* ── Lisibilité du méta sur le héros foncé (pages projet) ── */
.page-hero .project-detail-meta .project-meta-item { color: rgba(255,255,255,.92); }
.page-hero .project-detail-meta .project-meta-item i { color: var(--menthe); }
.page-hero .project-detail-meta .project-meta-item strong { color: #ffffff; }

/* ── Popup contact (déclenché par les icônes RS sans profil) ── */
.ggs-popup-overlay { position: fixed; inset: 0; background: rgba(8,53,31,.55); display: none; align-items: center; justify-content: center; z-index: 99999; padding: 1rem; }
.ggs-popup-overlay.open { display: flex; }
.ggs-popup { background: #fff; max-width: 340px; width: 100%; border-radius: 14px; padding: 1.85rem 1.5rem 1.6rem; text-align: center; box-shadow: 0 24px 70px rgba(0,0,0,.32); position: relative; animation: ggsPopIn .2s ease; }
@keyframes ggsPopIn { from { opacity: 0; transform: translateY(12px) scale(.97); } to { opacity: 1; transform: none; } }
.ggs-popup-close { position: absolute; top: .5rem; right: .8rem; background: none; border: none; font-size: 1.7rem; line-height: 1; color: #9aa6a0; cursor: pointer; }
.ggs-popup-close:hover { color: var(--blue); }
.ggs-popup-title { font-size: 1.15rem; font-weight: 800; color: var(--blue); margin: 0 0 .25rem; }
.ggs-popup-sub { font-size: .82rem; color: #6b7280; margin: 0 0 1.25rem; }
.ggs-popup-btn { display: flex; align-items: center; justify-content: center; gap: .6rem; padding: .85rem 1rem; border-radius: 9px; font-weight: 700; font-size: .9rem; text-decoration: none; margin-top: .6rem; transition: transform .12s ease, box-shadow .12s ease; }
.ggs-popup-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,.18); }
.ggs-popup-btn--wa { background: #25d366; color: #fff; }
.ggs-popup-btn--call { background: var(--blue); color: #fff; }
