/* ==========================================================================
   NECIM Group — V3 · Luxe éditorial ivoire & or
   Light-mode private-bank editorial theme · ivory paper + antique gold
   ========================================================================== */

:root {
  --ivory-50: #faf7f0;
  --ivory-100: #f5f0e6;
  --ivory-200: #ede5d6;
  --ivory-300: #e2d8c2;
  --ink-950: #16140f;
  --ink-900: #1d1a13;
  --ink-800: #292519;
  --ink-700: #3a3528;
  --ink-600: #4b463b;
  --ink-400: #7a735e;
  --ink-300: #a9a292;
  --gold-300: #ecdbb6;
  --gold-400: #c9a962;
  --gold-500: #a88442;
  --gold-600: #8a6a2f;
  --gold-700: #6e5426;
  --paper: var(--ivory-50);
  --paper-alt: var(--ivory-100);
  --line: rgba(29, 26, 19, 0.10);
  --line-strong: rgba(168, 132, 66, 0.45);
  --green: #2f8f5b;
  --amber: #b8860b;
  --blue: #35639e;
  --red: #9e3535;
  --font-serif: "Fraunces", "Cormorant Garamond", Georgia, serif;
  --font-sans: "Manrope", "Inter", system-ui, sans-serif;
  --container: 82rem;
  --container-narrow: 56rem;
  --header-h: 5rem;
  --radius: 2px;
  --radius-lg: 4px;
  --shadow: 0 22px 60px rgba(29, 26, 19, 0.10);
  --shadow-soft: 0 10px 30px rgba(29, 26, 19, 0.06);
  --grad-gold: linear-gradient(135deg, var(--gold-300) 0%, var(--gold-400) 45%, var(--gold-500) 100%);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

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

body.v3-theme {
  font-family: var(--font-sans);
  background: var(--paper);
  color: var(--ink-800);
  line-height: 1.7;
  padding-top: var(--header-h);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
::selection { background: rgba(201, 169, 98, 0.35); color: var(--ink-950); }

.v3-container {
  width: min(100% - 3rem, var(--container));
  margin-inline: auto;
}
.v3-container--narrow { max-width: var(--container-narrow); }

/* ---------- Buttons ---------- */
.v3-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.85rem 1.7rem;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-family: var(--font-sans);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s ease;
  line-height: 1.3;
  white-space: nowrap;
}
.v3-btn--primary {
  background: var(--grad-gold);
  color: var(--ink-950);
  box-shadow: 0 8px 24px rgba(168, 132, 66, 0.28);
}
.v3-btn--primary:hover { filter: brightness(1.05); transform: translateY(-1px); box-shadow: 0 12px 30px rgba(168, 132, 66, 0.34); }
.v3-btn--outline {
  border-color: var(--line-strong);
  color: var(--gold-700);
  background: transparent;
}
.v3-btn--outline:hover { background: rgba(201, 169, 98, 0.12); border-color: var(--gold-500); }
.v3-btn--ghost { color: var(--ink-600); border-color: var(--line); }
.v3-btn--ghost:hover { color: var(--ink-950); border-color: var(--gold-500); }
.v3-btn--sm { padding: 0.55rem 1.05rem; font-size: 0.68rem; }

/* ---------- Typography ---------- */
.v3-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--gold-600);
  margin-bottom: 1.1rem;
}
.v3-eyebrow::before {
  content: "";
  width: 38px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold-500), transparent);
}
.v3-eyebrow--center { justify-content: center; }
.v3-eyebrow--center::after {
  content: "";
  width: 38px;
  height: 1px;
  background: linear-gradient(270deg, var(--gold-500), transparent);
}

.v3-section__title,
.v3-page-hero h1,
.v3-hero h1,
.v3-cta h2 {
  font-family: var(--font-serif);
  font-weight: 500;
  font-size: clamp(1.8rem, 3.6vw, 2.7rem);
  line-height: 1.12;
  letter-spacing: 0.005em;
  color: var(--ink-950);
  text-wrap: balance;
}

.gold-text {
  background: linear-gradient(135deg, var(--gold-600) 0%, var(--gold-500) 55%, var(--gold-600) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ---------- Section scaffolding ---------- */
.v3-section { padding: 5.5rem 0; }
.v3-section--alt { background: var(--paper-alt); border-block: 1px solid var(--line); }
.v3-section--card-bg { background: linear-gradient(180deg, var(--ivory-200), var(--ivory-100)); }
.v3-section--thin { padding: 3.5rem 0; }

.v3-section__head { max-width: 46rem; margin-bottom: 3rem; }
.v3-section__head--center { margin-inline: auto; text-align: center; }
.v3-section__title { margin-bottom: 1rem; }
.v3-section__sub { color: var(--ink-600); font-size: 1.02rem; max-width: 42rem; line-height: 1.75; }
.v3-section__head--center .v3-section__sub { margin-inline: auto; }

/* ---------- Header ---------- */
.v3-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 1000;
  background: rgba(250, 247, 240, 0.88);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line);
}
.v3-header__inner {
  display: flex;
  align-items: center;
  gap: 2rem;
  height: var(--header-h);
}
.v3-logo { display: flex; align-items: center; gap: 0.9rem; flex-shrink: 0; }
.v3-logo__mark {
  width: 44px; height: 44px;
  display: grid; place-items: center;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  color: var(--gold-600);
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.1em;
  background: linear-gradient(160deg, rgba(201,169,98,0.16), rgba(201,169,98,0.03));
}
.v3-logo__text { display: flex; flex-direction: column; line-height: 1.2; }
.v3-logo__line {
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 1.22rem;
  letter-spacing: 0.16em;
  color: var(--ink-950);
}
.v3-logo__sub {
  font-size: 0.52rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--gold-600);
  margin-top: 3px;
  font-weight: 600;
}

.v3-nav { display: flex; align-items: center; flex: 1; justify-content: center; }
.v3-nav ul { display: flex; align-items: center; gap: 0.1rem; }
.v3-nav ul > li { position: relative; }
.v3-nav__link {
  display: block;
  padding: 0.65rem 0.85rem;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-700);
  transition: color 0.2s;
  cursor: pointer;
  white-space: nowrap;
}
.v3-nav__link:hover, .v3-nav ul > li:hover > .v3-nav__link { color: var(--gold-700); }

.v3-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  min-width: 340px;
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-top: 2px solid var(--gold-400);
  box-shadow: var(--shadow);
  padding: 0.7rem;
  opacity: 0;
  visibility: hidden;
  transition: all 0.22s ease;
}
.v3-nav ul > li:hover .v3-dropdown,
.v3-dropdown:hover { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.v3-dropdown a {
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
  padding: 0.62rem 0.8rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--ink-800);
  border-radius: 2px;
  transition: all 0.18s;
}
.v3-dropdown a:hover { background: var(--ivory-100); color: var(--gold-700); }
.v3-dropdown a .n { font-family: var(--font-serif); color: var(--gold-600); font-size: 0.74rem; min-width: 1.5rem; }
.v3-dropdown a .d { display: block; font-size: 0.68rem; color: var(--ink-400); }

.v3-header__actions { display: flex; align-items: center; gap: 0.8rem; margin-left: auto; flex-shrink: 0; }

.v3-burger { display: none; width: 42px; height: 42px; background: none; border: 1px solid var(--line-strong); border-radius: var(--radius); cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 5px; }
.v3-burger span { width: 20px; height: 1.5px; background: var(--ink-800); transition: all 0.25s; }
.v3-burger.is-open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.v3-burger.is-open span:nth-child(2) { opacity: 0; }
.v3-burger.is-open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

.v3-mobile-menu {
  position: fixed;
  inset: var(--header-h) 0 auto 0;
  background: var(--ivory-50);
  border-bottom: 1px solid var(--line);
  padding: 1.5rem 1.5rem 2rem;
  transform: translateY(-8px);
  opacity: 0;
  visibility: hidden;
  transition: all 0.25s ease;
  max-height: calc(100vh - var(--header-h));
  overflow-y: auto;
  z-index: 999;
}
.v3-mobile-menu.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
.v3-mobile-menu a.v3-mm-link {
  display: block;
  padding: 0.8rem 0.2rem;
  border-bottom: 1px solid var(--line);
  font-family: var(--font-serif);
  font-size: 1.12rem;
  font-weight: 500;
  color: var(--ink-950);
}
.v3-mobile-menu .v3-mm-group { margin: 1.1rem 0 0.4rem; font-size: 0.64rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold-600); font-weight: 700; }
.v3-mobile-menu a.v3-mm-sub { display: block; padding: 0.45rem 0.2rem; font-size: 0.9rem; color: var(--ink-600); }

/* ---------- Hero ---------- */
.v3-hero {
  position: relative;
  min-height: min(88vh, 760px);
  display: flex;
  align-items: center;
  overflow: hidden;
  padding: 5rem 0;
  background:
    radial-gradient(52% 72% at 82% 6%, rgba(201, 169, 98, 0.16), transparent 62%),
    radial-gradient(42% 60% at 6% 96%, rgba(201, 169, 98, 0.07), transparent 60%),
    linear-gradient(180deg, var(--ivory-100), var(--ivory-50));
  border-bottom: 1px solid var(--line);
}
.v3-hero__bg {
  position: absolute; inset: 0;
  opacity: 0.12;
  background-size: cover; background-position: center;
}
.v3-hero__bg::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, var(--ivory-100) 8%, rgba(245, 240, 230, 0.55) 55%, rgba(245, 240, 230, 0.25) 100%);
}
.v3-hero__content { position: relative; z-index: 2; max-width: 52rem; }
.v3-hero__sig {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  padding: 0.45rem 1.1rem 0.45rem 0.65rem;
  font-size: 0.64rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gold-700);
  background: rgba(201, 169, 98, 0.08);
  margin-bottom: 1.8rem;
}
.v3-hero__sig .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gold-500); }
.v3-hero h1 { font-size: clamp(2.5rem, 5.4vw, 4.1rem); }
.v3-hero__lead { max-width: 38rem; margin-top: 1.3rem; font-size: 1.08rem; color: var(--ink-600); line-height: 1.8; }
.v3-hero__cta { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.4rem; }
.v3-hero__meta { display: flex; flex-wrap: wrap; gap: 2.8rem; margin-top: 3rem; padding-top: 1.7rem; border-top: 1px solid var(--line); max-width: 40rem; }
.v3-hero__stat .val { font-family: var(--font-serif); font-size: 1.75rem; font-weight: 600; color: var(--gold-600); }
.v3-hero__stat .lbl { font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-400); }

.v3-scroll-hint {
  position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%);
  z-index: 2;
  color: var(--ink-400);
  font-size: 0.64rem; letter-spacing: 0.24em; text-transform: uppercase;
  display: flex; flex-direction: column; align-items: center; gap: 0.5rem;
}
.v3-scroll-hint::after { content: ""; width: 1px; height: 34px; background: linear-gradient(180deg, var(--gold-500), transparent); }

/* ---------- Value proposition band ---------- */
.v3-valueband { border-block: 1px solid var(--line); background: var(--ivory-100); }
.v3-valueband__inner { display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; align-items: center; justify-content: space-between; padding: 2.4rem 0; }
.v3-valueband p { font-family: var(--font-serif); font-size: clamp(1.2rem, 2.4vw, 1.55rem); font-weight: 500; line-height: 1.5; color: var(--ink-900); }
.v3-valueband p span { color: var(--gold-600); }

/* ---------- Grid / cards ---------- */
.v3-grid { display: grid; gap: 1.5rem; }
.v3-grid--2 { grid-template-columns: repeat(2, 1fr); }
.v3-grid--3 { grid-template-columns: repeat(3, 1fr); }
.v3-grid--4 { grid-template-columns: repeat(4, 1fr); }
.v3-grid--engines { grid-template-columns: repeat(6, 1fr); }
.v3-grid--5 { grid-template-columns: repeat(5, 1fr); }

@media (max-width: 1080px) {
  .v3-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .v3-grid--5 { grid-template-columns: repeat(3, 1fr); }
  .v3-grid--engines { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 720px) {
  .v3-grid--3, .v3-grid--2, .v3-grid--4, .v3-grid--5 { grid-template-columns: 1fr; }
  .v3-grid--engines { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 440px) { .v3-grid--engines { grid-template-columns: 1fr; } }

.v3-card {
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 2rem;
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}
.v3-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: var(--grad-gold);
  opacity: 0;
  transition: opacity 0.25s;
}
.v3-card:hover { transform: translateY(-4px); border-color: var(--line-strong); box-shadow: var(--shadow-soft); background: var(--ivory-50); }
.v3-card:hover::before { opacity: 1; }
.v3-card__num {
  font-family: var(--font-serif);
  font-size: 0.72rem;
  color: var(--gold-600);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  display: block;
  margin-bottom: 1.1rem;
}
.v3-card__icon { display: flex; width: 52px; height: 52px; align-items: center; justify-content: center; border: 1px solid var(--line-strong); border-radius: 50%; color: var(--gold-600); margin-bottom: 1.2rem; background: rgba(201, 169, 98, 0.07); }
.v3-card__icon .v3-ic { width: 24px; height: 24px; }
.v3-card h3 { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 600; margin-bottom: 0.65rem; color: var(--ink-950); }
.v3-card p { font-size: 0.9rem; color: var(--ink-600); line-height: 1.7; }
.v3-card__tags { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 1.2rem; }
.v3-tag {
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--ink-600);
  background: var(--ivory-100);
}
.v3-tag--gold { border-color: var(--line-strong); color: var(--gold-700); background: rgba(201, 169, 98, 0.1); }
.v3-card__link { margin-top: 1.3rem; font-size: 0.72rem; color: var(--gold-700); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; display: inline-flex; align-items: center; gap: 0.4rem; border-bottom: 1px solid transparent; transition: all 0.2s; }
.v3-card__link:hover { gap: 0.7rem; border-color: var(--line-strong); color: var(--gold-600); }

/* ---------- Engine strip ---------- */
.v3-engine-strip { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.1rem; }
@media (max-width: 1080px) { .v3-engine-strip { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .v3-engine-strip { grid-template-columns: 1fr; } }

.v3-engine-card {
  position: relative;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: 340px;
  display: flex;
  align-items: flex-end;
  background: var(--ivory-100);
  transition: all 0.25s;
}
.v3-engine-card__img { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0.42; transition: all 0.35s; }
.v3-engine-card:hover .v3-engine-card__img { opacity: 0.28; transform: scale(1.04); }
.v3-engine-card__img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 28%, rgba(250, 247, 240, 0.82) 78%, var(--ivory-100) 100%); }
.v3-engine-card__body { position: relative; z-index: 2; padding: 1.7rem 1.5rem; width: 100%; }
.v3-engine-card__num { font-family: var(--font-serif); font-size: 0.78rem; color: var(--gold-600); letter-spacing: 0.16em; }
.v3-engine-card h3 { font-family: var(--font-serif); font-size: 1.42rem; font-weight: 600; margin: 0.45rem 0; line-height: 1.2; color: var(--ink-950); }
.v3-engine-card .tags { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.v3-engine-card:hover { border-color: var(--line-strong); transform: translateY(-4px); box-shadow: var(--shadow-soft); }

/* ---------- Pipeline / flow ---------- */
.v3-flow { display: flex; flex-wrap: wrap; gap: 0.8rem; align-items: stretch; justify-content: center; }
.v3-flow__step {
  flex: 1 1 170px;
  max-width: 220px;
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 1.5rem 1.3rem;
  position: relative;
}
.v3-flow__step .idx {
  width: 36px; height: 36px;
  display: grid; place-items: center;
  border-radius: 50%;
  border: 1px solid var(--line-strong);
  color: var(--gold-600);
  font-family: var(--font-serif);
  font-weight: 600;
  margin-bottom: 1rem;
  font-size: 0.9rem;
}
.v3-flow__step h4 { font-family: var(--font-serif); font-size: 1.05rem; font-weight: 600; margin-bottom: 0.4rem; color: var(--ink-900); }
.v3-flow__step p { font-size: 0.8rem; color: var(--ink-600); line-height: 1.65; }
.v3-flow__arrow { display: flex; align-items: center; color: var(--gold-500); font-size: 1.2rem; }

/* ---------- Agenda 2030 journey ---------- */
.v3-journey { position: relative; display: flex; flex-direction: column; gap: 0; }
.v3-journey::before {
  content: "";
  position: absolute;
  left: 27px; top: 10px; bottom: 10px;
  width: 1px;
  background: linear-gradient(180deg, var(--gold-500), var(--line) 75%);
}
.v3-journey__item { display: flex; gap: 1.8rem; padding: 0.95rem 0; position: relative; }
.v3-journey__dot {
  width: 56px; height: 56px; flex-shrink: 0;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--ivory-50);
  border: 1px solid var(--line-strong);
  color: var(--gold-600);
  font-family: var(--font-serif);
  font-size: 1.15rem;
  font-weight: 600;
  z-index: 2;
  box-shadow: var(--shadow-soft);
}
.v3-journey__body { padding-top: 0.35rem; }
.v3-journey__body h3 { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 600; margin-bottom: 0.3rem; color: var(--ink-950); }
.v3-journey__body p { color: var(--ink-600); max-width: 38rem; font-size: 0.92rem; }

/* ---------- Project Bank ---------- */
.v3-pb-toolbar {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.8rem;
  margin-bottom: 1.6rem;
}
@media (max-width: 1080px) { .v3-pb-toolbar { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .v3-pb-toolbar { grid-template-columns: 1fr; } }
.v3-select {
  width: 100%;
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  color: var(--ink-800);
  font-family: var(--font-sans);
  font-size: 0.8rem;
  padding: 0.75rem 0.9rem;
  cursor: pointer;
  outline: none;
  transition: border-color 0.2s;
}
.v3-select:focus { border-color: var(--gold-500); }
.v3-select option { background: var(--ivory-50); }

.v3-pb-maturity { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2rem; }
.v3-maturity {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 1rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--ink-600);
  cursor: pointer;
  transition: all 0.2s;
  background: var(--ivory-50);
  font-family: var(--font-sans);
}
.v3-maturity:hover { border-color: var(--gold-400); color: var(--gold-700); }
.v3-maturity.is-active { border-color: var(--line-strong); color: var(--gold-700); background: rgba(201, 169, 98, 0.12); }
.v3-maturity .dot { width: 9px; height: 9px; border-radius: 50%; }
.v3-maturity .dot--green { background: var(--green); }
.v3-maturity .dot--amber { background: var(--amber); }
.v3-maturity .dot--blue { background: var(--blue); }

.v3-pb-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
@media (max-width: 1080px) { .v3-pb-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .v3-pb-grid { grid-template-columns: 1fr; } }

.v3-project {
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: all 0.25s;
}
.v3-project:hover { transform: translateY(-3px); border-color: var(--line-strong); box-shadow: var(--shadow-soft); }
.v3-project__visual { height: 160px; background-size: cover; background-position: center; position: relative; }
.v3-project__badge {
  position: absolute;
  top: 0.8rem; left: 0.8rem;
  display: inline-flex; align-items: center; gap: 0.45rem;
  font-size: 0.6rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  background: rgba(250, 247, 240, 0.92);
  backdrop-filter: blur(4px);
  color: var(--ink-800);
  border: 1px solid var(--line);
}
.v3-project__badge .dot { width: 8px; height: 8px; border-radius: 50%; }
.v3-project__body { padding: 1.5rem 1.5rem 1.7rem; display: flex; flex-direction: column; flex: 1; }
.v3-project__meta { font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold-600); font-weight: 700; margin-bottom: 0.5rem; }
.v3-project h3 { font-family: var(--font-serif); font-size: 1.3rem; font-weight: 600; margin-bottom: 0.55rem; color: var(--ink-950); }
.v3-project p.desc { font-size: 0.86rem; color: var(--ink-600); flex: 1; }
.v3-project__specs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.45rem 0.8rem; margin-top: 1.1rem; }
.v3-project__specs div { font-size: 0.74rem; }
.v3-project__specs dt { color: var(--ink-400); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.6rem; }
.v3-project__specs dd { color: var(--ink-900); font-weight: 600; }

.v3-pb-empty { text-align: center; padding: 3rem; color: var(--ink-400); border: 1px dashed var(--line-strong); border-radius: var(--radius-lg); }

/* ---------- NECIM Africa ---------- */
.v3-africa-card {
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: all 0.25s;
}
.v3-africa-card:hover { border-color: var(--line-strong); transform: translateY(-3px); box-shadow: var(--shadow-soft); }
.v3-africa-card__visual { height: 180px; background-size: cover; background-position: center 35%; display: flex; align-items: flex-end; justify-content: flex-end; padding: 0.6rem; filter: brightness(1.4) saturate(1.1); transition: transform 0.5s ease, filter 0.5s ease; }
.v3-africa-card:hover .v3-africa-card__visual { transform: scale(1.03); filter: brightness(1.5) saturate(1.15); }
.v3-flag {
  font-family: var(--font-serif);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  color: rgba(250, 247, 240, 0.92);
  border: 1px solid rgba(201, 169, 98, 0.4);
  border-radius: 4px;
  padding: 0.2em 0.55em;
  display: inline-block;
  background: rgba(22, 20, 15, 0.45);
  backdrop-filter: blur(4px);
  text-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.v3-africa-card__body { padding: 1.5rem; }
.v3-africa-card__body h3 { font-family: var(--font-serif); font-size: 1.28rem; font-weight: 600; margin-bottom: 0.3rem; color: var(--ink-950); }
.v3-africa-card__body .sub { font-size: 0.66rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold-600); font-weight: 700; margin-bottom: 0.6rem; }
.v3-africa-card__body p { font-size: 0.86rem; color: var(--ink-600); }

.v3-africa-flow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; }
@media (max-width: 1080px) { .v3-africa-flow { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .v3-africa-flow { grid-template-columns: 1fr; } }
.v3-africa-flow .step {
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  text-align: center;
}
.v3-africa-flow .step .idx { font-family: var(--font-serif); color: var(--gold-600); font-size: 0.8rem; letter-spacing: 0.16em; font-weight: 600; }
.v3-africa-flow .step h4 { font-family: var(--font-serif); font-size: 1.1rem; font-weight: 600; margin: 0.5rem 0 0.3rem; color: var(--ink-950); }
.v3-africa-flow .step p { font-size: 0.8rem; color: var(--ink-600); }

/* ---------- Platforms ---------- */
.v3-platform {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 2.2rem;
  align-items: center;
  padding: 2.2rem;
  background: var(--ivory-50);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: all 0.25s;
}
.v3-platform:hover { border-color: var(--line-strong); box-shadow: var(--shadow-soft); }
.v3-platform__icon {
  width: 200px; height: 200px;
  background-size: cover; background-position: center;
  border-radius: var(--radius);
  border: 1px solid var(--line-strong);
}
.v3-platform__body h3 { font-family: var(--font-serif); font-size: 1.65rem; font-weight: 600; margin-bottom: 0.3rem; color: var(--ink-950); }
.v3-platform__body .role { font-size: 0.68rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold-600); font-weight: 700; margin-bottom: 0.75rem; }
.v3-platform__body p { color: var(--ink-600); font-size: 0.92rem; max-width: 40rem; line-height: 1.7; }
.v3-platform__body .links { margin-top: 1.1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
@media (max-width: 720px) {
  .v3-platform { grid-template-columns: 1fr; }
  .v3-platform__icon { width: 100%; height: 190px; }
}

/* ---------- Page hero (interior) ---------- */
.v3-page-hero {
  background:
    radial-gradient(50% 70% at 85% 0%, rgba(201, 169, 98, 0.14), transparent 60%),
    linear-gradient(180deg, var(--ivory-100), var(--ivory-50));
  border-bottom: 1px solid var(--line);
  padding: 4.5rem 0 3.5rem;
}
.v3-page-hero h1 { font-size: clamp(2.2rem, 4.6vw, 3.3rem); }
.v3-page-hero .lead { color: var(--ink-600); font-size: 1.08rem; max-width: 44rem; margin-top: 1.1rem; line-height: 1.75; }
.v3-breadcrumb { display: flex; flex-wrap: wrap; gap: 0.5rem; font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-400); margin-bottom: 1.6rem; font-weight: 600; }
.v3-breadcrumb a:hover { color: var(--gold-600); }
.v3-breadcrumb span.sep { color: var(--gold-500); }

.v3-page-hero--photo {
  background-size: cover;
  background-position: center;
  position: relative;
}
.v3-page-hero--photo::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    rgba(250, 247, 240, 0.85) 0%,
    rgba(250, 247, 240, 0.60) 30%,
    rgba(250, 247, 240, 0.25) 55%,
    rgba(250, 247, 240, 0.08) 75%,
    rgba(250, 247, 240, 0.03) 100%
  );
  z-index: 1;
}
.v3-page-hero--photo > * { position: relative; z-index: 2; }

/* ---------- Prose ---------- */
.v3-prose { font-size: 1rem; color: var(--ink-600); line-height: 1.85; }
.v3-prose h2 { color: var(--ink-950); font-family: var(--font-serif); font-weight: 600; font-size: 1.7rem; margin: 2.4rem 0 0.9rem; }
.v3-prose h3 { color: var(--gold-700); font-family: var(--font-serif); font-weight: 600; font-size: 1.25rem; margin: 1.8rem 0 0.6rem; }
.v3-prose p { margin-bottom: 1rem; }
.v3-prose ul { margin: 0 0 1.2rem 1.1rem; list-style: none; }
.v3-prose ul li { margin-bottom: 0.5rem; padding-left: 1.2rem; position: relative; }
.v3-prose ul li::before { content: ""; position: absolute; left: 0; top: 0.62em; width: 6px; height: 6px; border-radius: 50%; background: var(--gold-500); }
.v3-prose strong { color: var(--ink-950); }
.v3-prose a { color: var(--gold-700); border-bottom: 1px solid var(--line-strong); }
.v3-prose a:hover { color: var(--gold-600); }

/* ---------- CTA band ---------- */
.v3-cta {
  background:
    radial-gradient(52% 100% at 18% 50%, rgba(201, 169, 98, 0.14), transparent 58%),
    var(--ink-950);
  border-block: 1px solid var(--line);
}
.v3-cta__inner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 2rem;
  padding: 3.8rem 0;
}
.v3-cta h2 { color: var(--ivory-50); margin-bottom: 0.55rem; }
.v3-cta p { color: rgba(250, 247, 240, 0.72); max-width: 40rem; }
.v3-cta .actions { display: flex; flex-wrap: wrap; gap: 1rem; }
.v3-cta .v3-btn--outline { border-color: rgba(201, 169, 98, 0.5); color: var(--gold-300); }
.v3-cta .v3-btn--outline:hover { background: rgba(201, 169, 98, 0.12); }
.v3-cta .v3-btn--ghost { color: rgba(250, 247, 240, 0.7); border-color: rgba(250, 247, 240, 0.2); }
.v3-cta .v3-btn--ghost:hover { color: var(--ivory-50); border-color: rgba(201, 169, 98, 0.5); }
.v3-cta .v3-eyebrow { color: var(--gold-400); }
.v3-cta .v3-eyebrow::before { background: linear-gradient(90deg, var(--gold-400), transparent); }
.v3-cta .gold-text { background: linear-gradient(135deg, var(--gold-300) 0%, var(--gold-400) 60%, var(--gold-300) 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }

/* ---------- Contact ---------- */
.v3-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; align-items: start; }
@media (max-width: 900px) { .v3-contact-grid { grid-template-columns: 1fr; } }

.v3-form { background: var(--ivory-50); border: 1px solid var(--line); border-top: 2px solid var(--gold-400); border-radius: var(--radius-lg); padding: 2.4rem; box-shadow: var(--shadow-soft); }
.v3-form .field { margin-bottom: 1.3rem; }
.v3-form label { display: block; font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-600); margin-bottom: 0.45rem; font-weight: 700; }
.v3-form input, .v3-form select, .v3-form textarea {
  width: 100%;
  background: var(--ivory-100);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  color: var(--ink-900);
  font-family: var(--font-sans);
  font-size: 0.9rem;
  padding: 0.8rem 0.95rem;
  outline: none;
  transition: border-color 0.2s;
}
.v3-form input:focus, .v3-form select:focus, .v3-form textarea:focus { border-color: var(--gold-500); background: var(--ivory-50); }
.v3-form textarea { min-height: 120px; resize: vertical; }
.v3-form .form-status { margin-top: 1.1rem; font-size: 0.85rem; font-weight: 600; }

.v3-contact-info li { display: flex; gap: 1.1rem; padding: 1.1rem 0; border-bottom: 1px solid var(--line); }
.v3-contact-info li .ic { width: 44px; height: 44px; flex-shrink: 0; display: grid; place-items: center; border: 1px solid var(--line-strong); border-radius: 50%; color: var(--gold-600); background: rgba(201, 169, 98, 0.07); }
.v3-contact-info li .ic .v3-ic { width: 20px; height: 20px; }
.v3-contact-info li .k { font-size: 0.64rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-400); font-weight: 700; }
.v3-contact-info li .v { color: var(--ink-900); font-weight: 600; margin-top: 0.2rem; }
.v3-contact-info li .v a:hover { color: var(--gold-700); }

/* ---------- Footer ---------- */
.v3-footer { border-top: 1px solid var(--line); background: var(--ink-950); color: rgba(250, 247, 240, 0.78); }
.v3-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 2.5rem; padding: 4rem 0; }
@media (max-width: 1080px) { .v3-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .v3-footer__grid { grid-template-columns: 1fr; } }
.v3-footer h4 { font-size: 0.66rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold-400); margin-bottom: 1.3rem; font-weight: 700; }
.v3-footer .v3-logo__line { color: var(--ivory-50); }
.v3-footer .v3-logo__sub { color: var(--gold-400); }
.v3-footer .v3-logo__mark { border-color: rgba(201, 169, 98, 0.5); color: var(--gold-300); }
.v3-footer__desc { color: rgba(250, 247, 240, 0.6); font-size: 0.86rem; margin: 1.1rem 0 1.5rem; max-width: 24rem; line-height: 1.75; }
.v3-footer__tagline { font-family: var(--font-serif); font-size: 1.05rem; font-weight: 500; color: var(--gold-300); line-height: 1.5; }
.v3-footer__links li { margin-bottom: 0.6rem; }
.v3-footer__links a { font-size: 0.86rem; color: rgba(250, 247, 240, 0.66); transition: color 0.2s; }
.v3-footer__links a:hover { color: var(--gold-300); }
.v3-footer__bottom { border-top: 1px solid rgba(250, 247, 240, 0.12); padding: 1.6rem 0; display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: center; }
.v3-footer__bottom p { font-size: 0.76rem; color: rgba(250, 247, 240, 0.45); }

/* ---------- Misc ---------- */
.v3-divider { height: 1px; background: var(--line); margin: 3rem 0; }
.v3-note {
  display: flex; gap: 0.9rem; align-items: flex-start;
  border: 1px solid var(--line-strong);
  border-left: 3px solid var(--gold-400);
  border-radius: var(--radius);
  padding: 1.15rem 1.4rem;
  background: rgba(201, 169, 98, 0.07);
  font-size: 0.86rem;
  color: var(--ink-600);
  line-height: 1.7;
}
.v3-note .ic { color: var(--gold-600); margin-top: 0.1rem; }
.v3-note .ic .v3-ic { width: 20px; height: 20px; }
.v3-note strong { color: var(--ink-900); }
.v3-note em { color: var(--gold-700); }

.v3-maturity-legend { display: flex; flex-wrap: wrap; gap: 1.6rem; margin-top: 1.5rem; font-size: 0.78rem; color: var(--ink-600); font-weight: 600; }
.v3-maturity-legend span { display: inline-flex; align-items: center; gap: 0.5rem; }
.v3-maturity-legend .dot { width: 10px; height: 10px; border-radius: 50%; }

/* ---------- Responsive nav ---------- */
@media (max-width: 1180px) {
  .v3-nav { gap: 0; }
  .v3-nav__link { padding: 0.65rem 0.55rem; font-size: 0.68rem; }
}
@media (max-width: 1100px) {
  .v3-nav, .v3-header__actions .v3-btn--cta { display: none; }
  .v3-burger { display: flex; }
  .v3-header__actions { gap: 0.4rem; }
}

@media (max-width: 620px) {
  .v3-logo { flex: 0 1 auto; min-width: 0; }
  .v3-logo__text { flex: 1; min-width: 0; }
  .v3-logo__sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 56vw; }
  .v3-logo__line { font-size: 1.05rem; letter-spacing: 0.1em; }
  .v3-header__inner { gap: 1rem; }
  .v3-logo__mark { width: 38px; height: 38px; }
}

/* ---------- Reveal animation ---------- */
.v3-reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease, transform 0.7s ease; }
.v3-reveal.is-in { opacity: 1; transform: none; }

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