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

    :root {
      /* Couleurs de marque — rouge / blanc / tolérance noir (charte ONASER) */
      --R: #c21017;
      --Rd: #8E1414;
      --Rl: #E24A4A;
      /* Anciennes variables vertes/or de la maquette conservées comme alias neutres
         pour ne pas casser les règles existantes qui les référencent — elles ne
         pointent plus vers du vert/or mais vers des nuances de noir/gris. */
      --V: #2A2724;
      --Vm: #3D3934;
      --Vl: #57524B;
      --O: #57524B;
      --Ol: #FFFFFF;
      --ink: #1A1613;
      --ink2: #3D3934;
      --muted: #746D64;
      --bg: #fff;
      --bg2: #F5F2EF;
      --bg3: #ECE7E2;
      --white: #FFFFFF;
      --bord: #E3DDD6;
      /* Neutre gris-bleuté pour l'info non-urgente (dates, meta, tags secondaires) :
         libère le rouge pour les vraies actions/CTA. */
      --slate: #4B5563;
      --slate-l: #EEF1F4;
      --sh: 0 2px 12px rgba(20, 15, 10, .07);
      --sh2: 0 8px 32px rgba(20, 15, 10, .13);
      /* Échelle d'espacement — remplace les valeurs codées en dur */
      --s1: 4px;
      --s2: 8px;
      --s3: 16px;
      --s4: 24px;
      --s5: 32px;
      --s6: 48px;
      /* Padding latéral fluide : 52px sur grand écran, se resserre sur mobile
         sans dépendre d'un @media pour chaque section. */
      --pad: clamp(20px, 5vw, 52px);
      /* Largeur max de lecture pour ne pas étirer le contenu sur écran large */
      --maxw: 1300px;
      /* FONTS — Public Sans (corps) + Oswald (titres), les 2 réellement chargées
         via le <link> Google Fonts de chaque page. IBM Plex Serif n'était jamais
         chargée : le corps retombait sur la police système. */
      --f-display: 'Oswald', sans-serif;
      --f-body: 'Public Sans', sans-serif;
      --f-mono: 'IBM Plex Mono', monospace
    }

    html {
      scroll-behavior: smooth
    }

    body {
      font-family: var(--f-body);
      background: var(--bg);
      color: var(--ink);
      /* 16px de base (au lieu de 19px) : plus adapté à un site institutionnel
         dense, et cohérent avec les tailles des composants. */
      font-size: 1rem;
      line-height: 1.65;
      -webkit-font-smoothing: antialiased
    }

    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
      font-weight: 600;
      letter-spacing: .01em
    }

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

    /* TOPBAR */
    /* Barre utilitaire sombre unie — l'ancien dégradé rouge/vert + étoile
       or reprenait les couleurs du drapeau (rejeté explicitement pour la
       charte du site : rouge / blanc / tolérance noir uniquement). */
    .topbar {
      background: var(--ink);
      padding: 0 52px;
      display: flex;
      justify-content: space-between;
      align-items: stretch;
      height: 34px;
      position: relative
    }

    .topbar-left {
      font-size: 10px;
      color: white;
      letter-spacing: .12em;
      text-transform: uppercase;
      font-weight: 400;
      font-family: var(--f-body);
      display: flex;
      align-items: center
    }

    .topbar-right {
      display: flex;
      gap: 0;
      align-items: stretch
    }

    .topbar-right a {
      font-size: 10px;
      color: white;
      font-weight: 500;
      padding: 0 14px;
      display: flex;
      align-items: center;
      border-left: 1px solid rgba(255, 255, 255, .1);
      transition: .15s;
      letter-spacing: .06em;
      font-family: var(--f-display);
    }

    .topbar-right a:hover {
      color: #fff;
      background: rgba(255, 255, 255, .08)
    }

    .topbar-urgence {
      background: rgba(0, 0, 0, .25) !important;
      color: var(--Ol) !important;
      font-weight: 700 !important;
      gap: 6px
    }

    .pulse {
      width: 5px;
      height: 5px;
      background: var(--Ol);
      border-radius: 50%;
      animation: pulse 1.4s infinite;
      flex-shrink: 0
    }

    @keyframes pulse {

      0%,
      100% {
        opacity: 1;
        transform: scale(1)
      }

      50% {
        opacity: .4;
        transform: scale(.6)
      }
    }

    /* HEADER */
    .header {
      background: var(--white);
      border-bottom: 2px solid var(--ink);
      padding: 0 52px;
      height: 68px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      position: sticky;
      top: 0;
      z-index: 200;
      box-shadow: 0 2px 16px rgba(0, 0, 0, .07)
    }


    .logo-emblem {
      height: 50px;
      overflow: hidden;
      border: 2px solid var(--R);
      flex-shrink: 0;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .logo-emblem img {
      width: 100%;
      height: 100%;
      object-fit: cover
    }



    .logo-txt .full {
      font-size: 9px;
      color: var(--muted);
      letter-spacing: .1em;
      text-transform: uppercase;
      margin-top: 2px;
      font-weight: 400;
      font-family: var(--f-body)
    }

    nav {
      display: flex;
      align-items: center;
      gap: 1px
    }

    .ni {
      position: relative
    }

    .ni>a {
      font-size: 12px;
      font-weight: 500;
      color: var(--ink2);
      text-transform: uppercase;
      letter-spacing: .04em;
      padding: 10px 15px 5px 5px;
      display: flex;
      align-items: center;
      gap: 5px;
      border-bottom: 2px solid transparent;
      margin-bottom: -5px;
      transition: .15s;
      font-family: var(--f-display)
    }

  
    .ni>a.act {
      color: var(--R);
      border-bottom-color: var(--R)
    }

    .ni:hover > a {
  color: var(--white);
  background: var(--R);
}

    .chev {
      font-size: 14px;
      opacity: .4;
      transition: .15s
    }

    .ni:hover .chev {
      transform: rotate(180deg);
      opacity: 1
    }

    .drop {
      position: absolute;
      top: calc(100% + 4px);
      left: 0;
      background: var(--R);
      border-left: 2px solid var(--R);
      border-radius: 0 0 6px 6px;
      min-width: 200px;
      box-shadow: var(--sh2);
      display: none;
      z-index: 300
    }

    .ni:hover .drop {
      display: block
    }

    .drop a {
      display: block;
      font-size: 11.5px;
      color: var(--white);
      padding: 8px 14px;
      /* border-radius: 3px; */
      font-weight: 400;
      font-family: var(--f-display);
      letter-spacing: .02em;
      transition: .12s
    }

    .drop a:hover {
      background: var(--bg2);
      color: var(--R)
    }

    .hd-actions {
      display: flex;
      align-items: center;
      gap: 8px
    }

    .btn-sig {
      background: var(--R);
      color: #fff;
      font-size: 11px;
      font-weight: 600;
      padding: 11px 18px;
      border-radius: 3px;
      border: 2px solid var(--R);
      letter-spacing: .04em;
      text-transform: uppercase;
      display: flex;
      align-items: center;
      gap: 6px;
      transition: .15s;
      cursor: pointer;
      font-family: var(--f-body)
    }

    .btn-sig:hover {
      background: var(--Rd);
      border-color: var(--Rd)
    }

    .btn-srch {
      width: 34px;
      height: 34px;
      border: 1px solid var(--bord);
      border-radius: 3px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: var(--muted);
      cursor: pointer;
      transition: .15s;
      background: transparent
    }

    .btn-srch:hover {
      border-color: var(--V);
      color: var(--V)
    }

    svg.ic {
      width: 15px;
      height: 15px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round;
      flex-shrink: 0
    }

    /* TICKER */
    .ticker {
      background: white;
      height: 30px;
      display: flex;
      align-items: center;
      overflow: hidden;
      position: sticky;
      top: 68px;
      z-index: 150;
      box-shadow: 0 2px 8px rgba(0, 0, 0, .08)
    }

    .ticker-label {
      background: var(--ink);
      color: #fff;
      font-size: 9px;
      font-weight: 700;
      letter-spacing: .15em;
      text-transform: uppercase;
      padding: 0 20px;
      height: 100%;
      display: flex;
      align-items: center;
      white-space: nowrap;
      flex-shrink: 0;
      gap: 6px;
      font-family: var(--f-body)
    }

    .ticker-label::after {
      content: '▶';
      font-size: 8px
    }

    .ticker-track {
      flex: 1;
      overflow: hidden;
      position: relative
    }

    .ticker-inner {
      display: flex;
      animation: ticker 30s linear infinite;
      white-space: nowrap
    }

    .ticker-inner:hover {
      animation-play-state: paused
    }

    .ticker-item {
      font-size: 12px;
      color: var(--R);
      /* text-transform: uppercase; */
      white-space: nowrap;
      padding: 0 40px;
      display: flex;
      align-items: center;
      gap: 10px;
      font-family: var(--f-display);
      letter-spacing: .02em
    }

    .ticker-item::before {
      content: '●';
      font-size: 7px;
      color: var(--Ol);
      opacity: .8
    }

    @keyframes ticker {
      0% {
        transform: translateX(0)
      }

      100% {
        transform: translateX(-50%)
      }
    }

    /* ═══════════════════════════════════════
       HERO — photo + recherche (repris de la maquette « Civique », v3)
       Feuille indépendante de style-v3.css (même règle que pour les
       variantes : pas de classe partagée entre gabarits) — classes propres
       .hero1-* plutôt que de réutiliser .hero3-* telles quelles.
       ═══════════════════════════════════════ */
    .hero1 {
      position: relative;
      height: 520px;
      overflow: hidden;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center
    }

    /* Désature puis pousse la teinte vers le rouge/brun (sepia + hue-rotate)
       avant même le voile ci-dessous : ça neutralise le vert/or de fond de
       la photo (hors charte) sans avoir besoin d'une autre image. */
    .hero1 img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      filter: saturate(.5) sepia(.35) hue-rotate(-14deg) brightness(.92)
    }

    /* Voile rouge-noir en diagonale plutôt qu'un simple assombrissement
       neutre : ramène n'importe quelle photo (même une avec du vert/or en
       arrière-plan, hors charte) dans la palette rouge/noir de la marque,
       tout en assurant un bon contraste pour le texte blanc en dessous. */
    .hero1::after {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(160deg, rgba(142, 20, 20, .48) 0%, rgba(20, 16, 13, .58) 45%, rgba(20, 16, 13, .84) 100%)
    }

    .hero1-in {
      position: relative;
      z-index: 2;
      max-width: 720px;
      padding: 0 24px
    }

    .hero1-tag {
      display: inline-flex;
      align-items: center;
      gap: 14px;
      font-size: 11px;
      font-weight: 500;
      letter-spacing: .22em;
      text-transform: uppercase;
      color: var(--Ol);
      margin-bottom: 22px;
      font-family: var(--f-body)
    }

    .hero1-tag::before,
    .hero1-tag::after {
      content: '';
      width: 30px;
      height: 1px;
      background: var(--Ol)
    }

    .hero1-in h1 {
      font-family: var(--f-display);
      font-size: 52px;
      font-weight: 600;
      line-height: 1.1;
      color: #fff;
      margin-bottom: 34px;
      letter-spacing: -.01em
    }

    .hero1-search {
      display: flex;
      max-width: 560px;
      margin: 0 auto;
      background: #fff;
      border-radius: 3px;
      overflow: hidden;
      box-shadow: 0 16px 40px rgba(0, 0, 0, .25)
    }

    .hero1-search input {
      flex: 1;
      border: none;
      padding: 18px 22px;
      font-size: 14px;
      font-family: var(--f-body);
      color: var(--ink);
      outline: none
    }

    .hero1-search button {
      display: flex;
      align-items: center;
      gap: 8px;
      background: var(--R);
      color: #fff;
      border: none;
      padding: 0 26px;
      font-size: 12px;
      font-weight: 600;
      font-family: var(--f-body);
      text-transform: uppercase;
      letter-spacing: .06em;
      cursor: pointer;
      transition: .15s
    }

    .hero1-search button:hover {
      background: var(--Rd)
    }

    .hero1-search svg {
      width: 15px;
      height: 15px;
      stroke: currentColor;
      fill: none;
      stroke-width: 2
    }

    .btn-gold {
      background: var(--Ol);
      color: var(--ink);
      font-size: 11px;
      font-weight: 600;
      font-family: var(--f-body);
      padding: 14px 28px;
      border-radius: 2px;
      text-transform: uppercase;
      letter-spacing: .1em;
      display: inline-flex;
      align-items: center;
      gap: 8px;
      transition: .15s
    }

    .btn-gold:hover {
      background: var(--R);
      color: #fff
    }

    .btn-outline-w {
      background: transparent;
      color: #fff;
      border: 1px solid rgba(255, 255, 255, .4);
      font-size: 11px;
      font-weight: 500;
      font-family: var(--f-body);
      padding: 13px 28px;
      border-radius: 2px;
      text-transform: uppercase;
      letter-spacing: .08em;
      transition: .15s
    }

    .btn-outline-w:hover {
      border-color: #fff;
      background: rgba(255, 255, 255, .08)
    }

    /* ═══ STATS STRIP — chiffres aérés ═══ */
    .hero-stats {
      background: var(--Rd);
      display: grid;
      grid-template-columns: repeat(4, 1fr)
    }

    .hs {
      padding: 22px 0 22px 40px;
      border-right: 1px solid rgba(255, 255, 255, .07);
      display: flex;
      align-items: center;
      gap: 18px
    }

    .hs:last-child {
      border-right: none
    }

    .hs-num {
      font-size: 40px;
      font-weight: 600;
      color: var(--Ol);
      line-height: 1;
      letter-spacing: -.01em
    }

    .hs-label {
      font-size: 10px;
      font-weight: 400;
      color: white;
      text-transform: uppercase;
      /* letter-spacing: .1em; */
      /* font-family: var(--f-body); */
      display: block;
      margin-bottom: 5px
    }

    .hs-trend {
      font-size: 9px;
      font-weight: 600;
      font-family: var(--f-body);
      padding: 2px 7px;
      border-radius: 2px;
      display: inline-block;
      width: fit-content;
      letter-spacing: .04em
    }

    .hs-trend.up {
      background: rgba(200, 30, 30, .3);
      color: #FF8A80
    }

    .hs-trend.dn {
      background: rgba(255, 255, 255, .15);
      color: #fff
    }

    .hs-trend.ok {
      background: rgba(255, 255, 255, .08);
      color: #D9D2C8
    }

    /* ═══ MAIN WRAP ═══ */
    .main-wrap {
      display: grid;
      grid-template-columns: 1fr 320px;
      gap: 36px;
      padding: 48px 52px;
      align-items: start
    }

    /* ═══ MOT DU DIRECTEUR — photo rectangulaire pleine hauteur ═══ */
    .directeur-block {
      background: var(--white);
      border: 1px solid var(--bord);
      border-left: 4px solid var(--R);
      border-radius: 0 8px 8px 0;
      overflow: hidden;
      display: grid;
      grid-template-columns: 200px 1fr;
      gap: 0;
      margin-bottom: 40px;
      box-shadow: var(--sh)
    }

    /* Photo rectangulaire — couvre toute la hauteur */
    .dir-photo-col {
      position: relative;
      overflow: hidden;
      background: linear-gradient(160deg, #6B1414, #1A1613);
      flex-shrink: 0
    }

    .dir-photo-col img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: top center;
      display: block
    }

    /* Fallback si pas d'image */
    .dir-avatar-fallback {
      width: 100%;
      height: 100%;
      min-height: 220px;
      background: linear-gradient(160deg, #6B1414 0%, #3D3934 60%, #1A1613 100%);
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 8px
    }

    .dir-avatar-initials {
      font-size: 52px;
      font-weight: 600;
      color: rgba(255, 255, 255, .85);
      line-height: 1
    }

    .dir-avatar-sub {
      font-size: 9px;
      color: rgba(255, 255, 255, .45);
      text-transform: uppercase;
      letter-spacing: .14em;
      font-family: var(--f-body)
    }

    /* Bandeau titre en bas de la photo */
    .dir-photo-caption {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      background: linear-gradient(transparent, rgba(10, 5, 0, .75));
      padding: 28px 16px 12px;
    }

    .dir-badge {
      font-size: 8.5px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .1em;
      color: var(--Ol);
      font-family: var(--f-body);
      display: block
    }

    .dir-name-photo {
      font-size: 15px;
      font-weight: 600;
      color: #fff;
      line-height: 1.2;
      margin-top: 3px
    }

    /* Texte du DG */
    .dir-text {
      padding: 36px 40px;
      display: flex;
      flex-direction: column;
      justify-content: center
    }

    .dir-text blockquote {
      font-family: var(--f-display);
      font-size: 19px;
      font-style: italic;
      color: var(--ink);
      line-height: 1.75;
      margin-bottom: 20px;
      font-weight: 400;
      border-left: none;
      padding: 0
    }

    .dir-text blockquote::before {
      content: '«\00a0';
      color: var(--R);
      font-size: 28px;
      font-weight: 600;
      font-style: normal;
      line-height: 0;
      vertical-align: -8px
    }

    .dir-text blockquote::after {
      content: '\00a0»';
      color: var(--R);
      font-size: 28px;
      font-weight: 600;
      font-style: normal;
      line-height: 0;
      vertical-align: -8px
    }

    .dir-sig {
      font-size: 16px;
      font-weight: 600;
      color: var(--R);
      letter-spacing: .03em
    }

    .dir-sig span {
      font-family: var(--f-body);
      font-weight: 400;
      color: var(--muted);
      display: block;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-top: 4px
    }

    .eyebrow {
      font-size: 11px;
      font-weight: 600;
      letter-spacing: .16em;
      text-transform: uppercase;
      color: var(--R);
      display: flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 6px;
      font-family: var(--f-body)
    }

    .eyebrow::after {
      content: '';
      width: 24px;
      height: 1px;
      background: var(--R)
    }

    .sec-title {
      font-size: 28px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.15;
      letter-spacing: .01em
    }

    .sec-hd {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      margin-bottom: 28px
    }

    .more-link {
      font-size: 11.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .08em;
      display: flex;
      align-items: center;
      gap: 4px;
      border-bottom: 1px solid transparent;
      transition: .15s;
      padding-bottom: 1px
    }

    .more-link:hover {
      border-bottom-color: var(--R)
    }

    /* ═══ ACTUALITÉS À LA UNE ═══ */
    .actu-featured {
      border: 1px solid var(--bord);
      border-radius: 8px;
      overflow: hidden;
      background: var(--white);
      display: grid;
      grid-template-columns: 300px 1fr;
      margin-bottom: 20px;
      box-shadow: var(--sh)
    }

    .actu-img {
      height: 100%;
      min-height: 220px;
      position: relative;
      overflow: hidden
    }

    .actu-img-inner {
      width: 100%;
      height: 100%;
      min-height: 220px;
      object-fit: cover;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .ai-r {
      background: linear-gradient(135deg, #B71C1C, #7B0000)
    }

    .actu-img-tag {
      position: absolute;
      top: 12px;
      left: 12px
    }

    .atag {
      font-size: 8.5px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .1em;
      color: #fff;
      padding: 4px 11px;
      border-radius: 2px;
      font-family: var(--f-body)
    }

    .atag.s {
      background: var(--R)
    }

    .atag.p {
      background: var(--V)
    }

    .atag.l {
      background: var(--ink2)
    }

    .atag.e {
      background: var(--Rd)
    }

    .actu-body {
      padding: 32px 36px;
      display: flex;
      flex-direction: column;
      justify-content: center
    }

    .actu-meta {
      font-size: 11px;
      color: var(--slate);
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-bottom: 12px;
      display: flex;
      align-items: center;
      gap: 8px;
      font-family: var(--f-body)
    }

    .actu-meta-dot {
      width: 2px;
      height: 2px;
      border-radius: 50%;
      background: var(--bord)
    }

    .actu-body h3 {
      font-family: var(--f-display);
      font-size: 22px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.3;
      margin-bottom: 12px;
      letter-spacing: .01em
    }

    .actu-body>p {
      font-size: 14.5px;
      color: var(--ink2);
      line-height: 1.7;
      margin-bottom: 18px;
      font-weight: 400
    }

    .actu-read {
      font-size: 10.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .07em;
      display: inline-flex;
      align-items: center;
      gap: 5px;
      border-bottom: 1px solid rgba(200, 30, 30, .3);
      padding-bottom: 2px;
      transition: .15s
    }

    .actu-read:hover {
      border-bottom-color: var(--R)
    }

    .actu-read svg {
      transition: .2s
    }

    .actu-read:hover svg {
      transform: translateX(3px)
    }

    /* ═══ ACTUALITÉS MINI ═══ */
    .actu-list {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 18px;
      margin-top: 18px
    }

    .actu-mini {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 8px;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      box-shadow: var(--sh);
      transition: .2s;
      height: 100%
    }

    .actu-mini:hover {
      box-shadow: var(--sh2);
      transform: translateY(-3px)
    }

    .am-img {
      height: 130px;
      width: 100%;
      flex-shrink: 0;
      position: relative;
      overflow: hidden
    }

    .am-img-inner {
      width: 100%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .am-img-inner img {
      width: 100%;
      height: 100%;
      object-fit: cover
    }

    .ai-v {
      background: linear-gradient(135deg, #3D3934, #1A1613)
    }

    .ai-rv {
      background: linear-gradient(135deg, #B71C1C, #1A1613)
    }

    .am-tag-bar {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      padding: 6px 10px;
      background: linear-gradient(transparent, rgba(0, 0, 0, .55));
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .am-tag {
      font-size: 8px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .11em;
      color: #fff;
      background: var(--R);
      padding: 2px 8px;
      border-radius: 1px;
      font-family: var(--f-body)
    }

    .am-tag.v {
      background: var(--V)
    }

    .am-tag.b {
      background: var(--ink2)
    }

    .am-date-tag {
      font-size: 10px;
      color: rgba(255, 255, 255, .8);
      font-weight: 500;
      font-family: var(--f-body)
    }

    .am-body {
      padding: 16px 18px 18px;
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 10px
    }

    .am-body h4 {
      font-size: 16px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.38;
      letter-spacing: .01em
    }

    .am-desc {
      font-size: 13px;
      color: var(--ink2);
      line-height: 1.65;
      flex: 1;
      font-weight: 400
    }

    .am-read {
      font-size: 9.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .07em;
      display: inline-flex;
      align-items: center;
      gap: 4px;
      margin-top: 4px;
      border-bottom: 1px solid transparent;
      transition: .15s;
      width: fit-content
    }

    .am-read:hover {
      border-bottom-color: var(--R)
    }

    /* ═══ SIDEBAR ═══ */
    .sidebar {
      display: flex;
      flex-direction: column;
      gap: 20px
    }

    .sb-card {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 8px;
      overflow: hidden;
      box-shadow: var(--sh)
    }

    .sb-card-head {
      padding: 14px 18px 12px;
      border-bottom: 1px solid var(--bord);
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .sb-card-head h3 {
      font-size: 10.5px;
      font-weight: 600;
      color: var(--ink);
      text-transform: uppercase;
      letter-spacing: .1em;
      display: flex;
      align-items: center;
      gap: 7px;
      font-family: var(--f-body)
    }

    .sb-head-dot {
      width: 7px;
      height: 7px;
      border-radius: 50%;
      flex-shrink: 0
    }

    .sb-head-dot.r {
      background: var(--R)
    }

    .sb-head-dot.v {
      background: var(--Vm)
    }

    .sb-head-dot.o {
      background: var(--O)
    }

    .sb-card-body {
      padding: 14px 18px
    }

    .sb-more {
      font-size: 9.5px;
      font-weight: 600;
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .07em;
      font-family: var(--f-body)
    }

    .agenda-item {
      display: flex;
      gap: 14px;
      padding: 11px 0;
      border-bottom: 1px solid var(--bg3)
    }

    .agenda-item:last-child {
      border-bottom: none
    }

    .agenda-date {
      width: 42px;
      text-align: center;
      background: var(--R);
      border-radius: 4px;
      padding: 6px 4px;
      flex-shrink: 0
    }

    .agenda-date .day {
      font-size: 22px;
      font-weight: 600;
      color: #fff;
      line-height: 1;
      display: block
    }

    .agenda-date .month {
      font-size: 8px;
      font-weight: 600;
      text-transform: uppercase;
      color: rgba(255, 255, 255, .65);
      letter-spacing: .09em;
      display: block;
      margin-top: 1px;
      font-family: var(--f-body)
    }

    .agenda-info h4 {
      font-size: 12px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.3;
      margin-bottom: 3px;
      letter-spacing: .01em
    }

    .agenda-info p {
      font-size: 10.5px;
      color: var(--muted);
      line-height: 1.4;
      font-weight: 300
    }

    .agenda-info .loc {
      font-size: 9.5px;
      color: var(--Vm);
      font-weight: 600;
      margin-top: 3px;
      display: flex;
      align-items: center;
      gap: 3px;
      font-family: var(--f-body);
      letter-spacing: .03em
    }

    .alert-mini {
      display: flex;
      gap: 10px;
      padding: 10px 0;
      border-bottom: 1px solid var(--bg3);
      align-items: flex-start
    }

    .alert-mini:last-child {
      border-bottom: none
    }

    .alert-mini-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      flex-shrink: 0;
      margin-top: 4px
    }

    .alert-mini-dot.r {
      background: var(--R)
    }

    .alert-mini-dot.o {
      background: var(--muted)
    }

    .alert-mini-dot.v {
      background: var(--Vm)
    }

    .alert-mini-info h4 {
      font-size: 11.5px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.3;
      margin-bottom: 2px;
      letter-spacing: .01em
    }

    .alert-mini-info p {
      font-size: 10.5px;
      color: var(--muted);
      line-height: 1.4;
      font-weight: 300
    }

    .alert-mini-info .route {
      font-size: 9px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-top: 2px
    }

    .ql-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 6px
    }

    .ql-btn {
      background: var(--bg2);
      border: 1px solid var(--bord);
      border-radius: 6px;
      padding: 14px 9px;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 7px;
      text-align: center;
      transition: .15s;
      cursor: pointer
    }

    .ql-btn:hover {
      background: var(--bg3);
      border-color: var(--Vm)
    }

    .ql-btn svg {
      width: 22px;
      height: 22px;
      fill: none;
      stroke: var(--V);
      stroke-width: 1.6
    }

    .ql-btn span {
      font-size: 9.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--ink2);
      text-transform: uppercase;
      letter-spacing: .07em;
      line-height: 1.25
    }

    /* ═══ CAMPAGNE & KPIs ═══ */
    .campagne-section {
      padding: 0 52px 48px
    }

    .campagne-wrap {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0;
      border: 1px solid var(--bord);
      border-radius: 8px;
      overflow: hidden;
      box-shadow: var(--sh)
    }

    .camp-video {
      background: var(--V);
      position: relative;
      min-height: 320px;
      display: flex;
      flex-direction: column
    }

    .camp-vid-header {
      padding: 22px 24px 16px;
      border-bottom: 1px solid rgba(255, 255, 255, .08)
    }

    .camp-vid-header h3 {
      font-size: 18px;
      font-weight: 600;
      color: #fff;
      letter-spacing: .01em
    }

    .camp-vid-header p {
      font-size: 11px;
      color: rgba(255, 255, 255, .42);
      margin-top: 3px;
      font-weight: 300;
      font-family: var(--f-body);
      letter-spacing: .03em
    }

    .camp-screen {
      flex: 1;
      position: relative;
      overflow: hidden;
      background: #000;
      min-height: 220px
    }

    .camp-screen video {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block
    }

    .camp-live-dot {
      position: absolute;
      top: 14px;
      left: 14px;
      display: flex;
      align-items: center;
      gap: 5px;
      background: rgba(0, 0, 0, .4);
      padding: 4px 10px;
      border-radius: 20px;
      z-index: 3
    }

    .camp-live-dot .d {
      width: 5px;
      height: 5px;
      border-radius: 50%;
      background: var(--Ol);
      animation: pulse 1.4s infinite
    }

    .camp-live-dot span {
      font-size: 9px;
      color: rgba(255, 255, 255, .65);
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .1em;
      font-family: var(--f-body)
    }

    .camp-thumbs {
      padding: 10px 14px;
      display: flex;
      gap: 7px;
      border-top: 1px solid rgba(255, 255, 255, .07)
    }

    .camp-thumb {
      width: 58px;
      height: 38px;
      background: rgba(255, 255, 255, .06);
      border: 1.5px solid rgba(255, 255, 255, .1);
      border-radius: 2px;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: .15s;
      flex-shrink: 0;
      overflow: hidden;
      position: relative
    }

    .camp-thumb.on {
      border-color: var(--Ol)
    }

    .camp-thumb:hover {
      background: rgba(255, 255, 255, .12)
    }

    .camp-thumb video {
      width: 100%;
      height: 100%;
      object-fit: cover;
      pointer-events: none
    }

    .camp-kpis {
      background: var(--white);
      display: flex;
      flex-direction: column
    }

    .camp-kpis-head {
      padding: 22px 24px 14px;
      border-bottom: 1px solid var(--bord)
    }

    .camp-kpis-head h3 {
      font-size: 18px;
      font-weight: 600;
      color: var(--ink);
      letter-spacing: .01em
    }

    .camp-kpis-head p {
      font-size: 11px;
      color: var(--muted);
      margin-top: 3px;
      font-weight: 300;
      font-family: var(--f-body);
      letter-spacing: .03em
    }

    .camp-kpis-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0
    }

    .kpi {
      padding: 22px 24px;
      border-bottom: 1px solid var(--bord);
      border-right: 1px solid var(--bord);
      display: flex;
      flex-direction: column;
      gap: 5px;
      position: relative;
      overflow: hidden;
      transition: .15s
    }

    .kpi:hover {
      background: var(--bg2)
    }

    .kpi:nth-child(even) {
      border-right: none
    }

    .kpi:nth-child(5),
    .kpi:nth-child(6) {
      border-bottom: none
    }

    .kpi-num {
      font-size: 36px;
      font-weight: 600;
      line-height: 1;
      letter-spacing: -.01em
    }

    .kpi-num.r {
      color: var(--R)
    }

    .kpi-num.v {
      color: var(--V)
    }

    .kpi-num.o {
      color: var(--O)
    }

    .kpi-label {
      font-size: 10.5px;
      color: var(--muted);
      font-weight: 400;
      line-height: 1.45;
      font-family: var(--f-body);
      letter-spacing: .02em
    }

    .kpi-badge {
      font-size: 8.5px;
      font-weight: 600;
      font-family: var(--f-body);
      padding: 2px 7px;
      border-radius: 2px;
      width: fit-content;
      letter-spacing: .05em
    }

    .kpi-badge.up {
      background: #FFEBEE;
      color: var(--R)
    }

    .kpi-badge.dn {
      background: #F5F2EF;
      color: var(--Rd)
    }

    .kpi-badge.na {
      background: #ECE7E2;
      color: var(--O)
    }

    /* ═══ MAP ═══ */
    .map-section {
      padding: 0 52px 48px
    }

    .map-wrap {
      display: grid;
      grid-template-columns: 1fr 280px;
      gap: 0;
      border: 1px solid var(--bord);
      border-radius: 8px;
      overflow: hidden;
      box-shadow: var(--sh)
    }

    .map-frame {
      background: #F0EDE8;
      position: relative;
      min-height: 400px;
      overflow: hidden
    }

    .map-overlay-label {
      position: absolute;
      top: 18px;
      left: 18px;
      background: rgba(255, 255, 255, .93);
      padding: 9px 16px;
      border-radius: 3px;
      border-left: 3px solid var(--R);
      box-shadow: var(--sh)
    }

    .map-overlay-label h4 {
      font-size: 11.5px;
      font-weight: 600;
      color: var(--ink);
      letter-spacing: .02em
    }

    .map-overlay-label p {
      font-size: 9.5px;
      color: var(--muted);
      font-family: var(--f-body)
    }

    .map-legend {
      position: absolute;
      bottom: 18px;
      left: 18px;
      background: rgba(255, 255, 255, .93);
      padding: 10px 16px;
      border-radius: 3px;
      box-shadow: var(--sh);
      display: flex;
      flex-direction: column;
      gap: 6px
    }

    .ml-item {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 9.5px;
      color: var(--ink2);
      font-weight: 400;
      font-family: var(--f-body)
    }

    .ml-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      flex-shrink: 0
    }

    .map-side {
      background: var(--white);
      border-left: 1px solid var(--bord);
      display: flex;
      flex-direction: column
    }

    .map-side-head {
      padding: 18px 20px 14px;
      border-bottom: 1px solid var(--bord)
    }

    .map-side-head h3 {
      font-size: 13px;
      font-weight: 600;
      color: var(--ink);
      letter-spacing: .02em
    }

    .map-side-head p {
      font-size: 10px;
      color: var(--muted);
      margin-top: 2px;
      font-family: var(--f-body)
    }

    .map-side-list {
      flex: 1;
      overflow-y: auto;
      padding: 10px 0
    }

    .msl-item {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 9px 18px;
      border-bottom: 1px solid var(--bg3);
      cursor: pointer;
      transition: .15s
    }

    .msl-item:last-child {
      border-bottom: none
    }

    .msl-item:hover {
      background: var(--bg2)
    }

    .msl-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      flex-shrink: 0
    }

    .msl-dot.hq {
      background: var(--R)
    }

    .msl-dot.reg {
      background: var(--Vm)
    }

    .msl-dot.ant {
      background: var(--O)
    }

    .msl-info h4 {
      font-size: 11.5px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.2;
      letter-spacing: .01em
    }

    .msl-info p {
      font-size: 9.5px;
      color: var(--muted);
      font-family: var(--f-body)
    }

    .msl-type {
      font-size: 8.5px;
      font-weight: 600;
      font-family: var(--f-body);
      text-transform: uppercase;
      letter-spacing: .09em;
      margin-top: 2px
    }

    .msl-type.hq {
      color: var(--R)
    }

    .msl-type.reg {
      color: var(--Vm)
    }

    .msl-type.ant {
      color: var(--O)
    }

    /* ═══ DOCUMENTS ═══ */
    .docs-section {
      padding: 0 52px 48px
    }

    .docs-hero {
      background: linear-gradient(135deg, var(--Rd) 0%, #7B0000 100%);
      border-radius: 8px;
      padding: 40px 44px;
      margin-bottom: 24px;
      position: relative;
      overflow: hidden
    }

    .docs-hero::after {
      content: '';
      position: absolute;
      right: -20px;
      bottom: -30px;
      width: 180px;
      height: 180px;
      border-radius: 50%;
      border: 40px solid rgba(255, 255, 255, .04)
    }

    .docs-hero-inner {
      position: relative;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 32px
    }

    .docs-hero h2 {
      font-size: 28px;
      font-weight: 600;
      color: #fff;
      margin-bottom: 8px;
      letter-spacing: .01em
    }

    .docs-hero p {
      font-size: 13px;
      color: rgba(255, 255, 255, .55);
      line-height: 1.75;
      max-width: 520px;
      font-weight: 300
    }

    .docs-hero-stats {
      display: flex;
      gap: 32px;
      flex-shrink: 0
    }

    .dhs {
      text-align: center
    }

    .dhs-num {
      font-size: 40px;
      font-weight: 600;
      color: var(--Ol);
      line-height: 1
    }

    .dhs-lbl {
      font-size: 9px;
      color: rgba(255, 255, 255, .38);
      text-transform: uppercase;
      letter-spacing: .1em;
      margin-top: 4px;
      font-family: var(--f-body)
    }

    .docs-categories {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 16px;
      margin-bottom: 24px
    }

    .doc-cat {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 6px;
      padding: 18px;
      cursor: pointer;
      transition: .2s;
      text-align: center;
      position: relative;
      overflow: hidden
    }

    .doc-cat::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 3px;
      background: var(--bord);
      transition: .2s
    }

    .doc-cat:hover {
      box-shadow: var(--sh2)
    }

    .doc-cat:hover::after,
    .doc-cat.active::after {
      background: var(--R)
    }

    .doc-cat.active {
      background: var(--bg2)
    }

    .dcat-icon {
      width: 38px;
      height: 38px;
      border-radius: 8px;
      margin: 0 auto 12px;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .dcat-icon svg {
      width: 19px;
      height: 19px;
      fill: none;
      stroke-width: 1.6;
      stroke-linecap: round;
      stroke-linejoin: round
    }

    .dcat-r {
      background: #FFF0F0
    }

    .dcat-r svg {
      stroke: var(--R)
    }

    .dcat-v {
      background: #F5F2EF
    }

    .dcat-v svg {
      stroke: var(--Rd)
    }

    .dcat-o {
      background: #ECE7E2
    }

    .dcat-o svg {
      stroke: var(--O)
    }

    .dcat-b {
      background: #F5F2EF
    }

    .dcat-b svg {
      stroke: var(--ink)
    }

    .doc-cat h4 {
      font-size: 12px;
      font-weight: 600;
      color: var(--ink);
      margin-bottom: 4px;
      letter-spacing: .01em
    }

    .doc-cat p {
      font-size: 11px;
      line-height: 1.5;
      color: var(--muted);
      font-family: var(--f-body)
    }

    .docs-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 14px;
      margin-bottom: 24px
    }

    .doc-card {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 6px;
      overflow: hidden;
      box-shadow: var(--sh);
      transition: .2s;
      cursor: pointer;
      display: flex;
      flex-direction: column
    }

    .doc-card:hover {
      box-shadow: var(--sh2);
      transform: translateY(-2px)
    }

    .doc-card-top {
      padding: 20px 18px 14px;
      flex: 1
    }

    .doc-type-badge {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      font-size: 8px;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: .11em;
      padding: 3px 9px;
      border-radius: 2px;
      margin-bottom: 12px;
      font-family: var(--f-body)
    }

    .dtb-r {
      background: #FFEBEE;
      color: var(--R)
    }

    .dtb-v {
      background: #F5F2EF;
      color: var(--Rd)
    }

    .dtb-o {
      background: #ECE7E2;
      color: var(--O)
    }

    .dtb-b {
      background: #F5F2EF;
      color: var(--ink)
    }

    .dtb-p {
      background: #ECE7E2;
      color: var(--ink2)
    }

    .doc-card h4 {
      font-size: 15px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.38;
      margin-bottom: 8px;
      letter-spacing: .01em
    }

    .doc-card p {
      font-size: 12.5px;
      color: var(--ink2);
      line-height: 1.6;
      font-weight: 400
    }

    .doc-card-foot {
      padding: 10px 18px 14px;
      border-top: 1px solid var(--bg3);
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .doc-foot-meta {
      font-size: 10.5px;
      color: var(--slate);
      font-weight: 600;
      font-family: var(--f-body);
      letter-spacing: .03em
    }

    .doc-dl-btn {
      display: flex;
      align-items: center;
      gap: 4px;
      font-size: 9.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      text-transform: uppercase;
      letter-spacing: .07em;
      transition: .15s
    }

    .doc-dl-btn svg {
      width: 13px;
      height: 13px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2;
      stroke-linecap: round
    }

    .doc-dl-btn:hover {
      color: var(--Rd)
    }

    .docs-rapports {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 6px;
      overflow: hidden;
      margin-bottom: 24px
    }

    .docs-rapports-head {
      background: linear-gradient(90deg, var(--V), var(--Vm));
      padding: 18px 24px;
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .docs-rapports-head h3 {
      font-size: 17px;
      font-weight: 600;
      color: #fff;
      letter-spacing: .01em
    }

    .docs-rapports-head span {
      font-size: 10.5px;
      color: rgba(255, 255, 255, .5);
      font-family: var(--f-body)
    }

    .rapport-list {
      padding: 0
    }

    .rapport-item {
      display: flex;
      align-items: center;
      gap: 16px;
      padding: 16px 24px;
      border-bottom: 1px solid var(--bg3);
      transition: .15s;
      cursor: pointer
    }

    .rapport-item:last-child {
      border-bottom: none
    }

    .rapport-item:hover {
      background: var(--bg2)
    }

    .rapport-year {
      width: 52px;
      height: 52px;
      border-radius: 6px;
      background: var(--bg3);
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0
    }

    .rapport-year span {
      font-size: 17px;
      font-weight: 600;
      color: var(--ink2)
    }

    .rapport-info {
      flex: 1
    }

    .rapport-info h4 {
      font-size: 14px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.3;
      margin-bottom: 2px;
      letter-spacing: .01em
    }

    .rapport-info p {
      font-size: 10.5px;
      color: var(--muted);
      font-weight: 300;
      font-family: var(--f-body)
    }

    .rapport-badges {
      display: flex;
      gap: 5px;
      margin-top: 5px;
      flex-wrap: wrap
    }

    .rbadge {
      font-size: 8px;
      font-weight: 600;
      padding: 2px 7px;
      border-radius: 2px;
      text-transform: uppercase;
      letter-spacing: .07em;
      font-family: var(--f-body)
    }

    .rbadge.pdf {
      background: #FFEBEE;
      color: var(--R)
    }

    .rbadge.xls {
      background: #F5F2EF;
      color: var(--Rd)
    }

    .rbadge.new {
      background: var(--Ol);
      color: var(--Rd)
    }

    .rapport-dl {
      display: flex;
      align-items: center;
      gap: 6px
    }

    .rdl-btn {
      width: 34px;
      height: 34px;
      border-radius: 4px;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: .15s
    }

    .rdl-btn.pdf-btn {
      background: #FFEBEE;
      color: var(--R)
    }

    .rdl-btn.pdf-btn:hover {
      background: var(--R);
      color: #fff
    }

    .rdl-btn.xls-btn {
      background: #F5F2EF;
      color: var(--Rd)
    }

    .rdl-btn.xls-btn:hover {
      background: var(--Rd);
      color: #fff
    }

    .rdl-btn svg {
      width: 14px;
      height: 14px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2;
      stroke-linecap: round
    }

    .docs-textes {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
      margin-bottom: 24px
    }

    .texte-card {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 6px;
      padding: 20px;
      transition: .2s;
      cursor: pointer
    }

    .texte-card:hover {
      box-shadow: var(--sh2);
      border-color: var(--R)
    }

    .texte-header {
      display: flex;
      align-items: flex-start;
      gap: 14px;
      margin-bottom: 12px
    }

    .texte-icon {
      width: 38px;
      height: 38px;
      border-radius: 6px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0
    }

    .texte-icon svg {
      width: 17px;
      height: 17px;
      fill: none;
      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round
    }

    .ti-r {
      background: #FFEBEE
    }

    .ti-r svg {
      stroke: var(--R)
    }

    .ti-v {
      background: #F5F2EF
    }

    .ti-v svg {
      stroke: var(--Rd)
    }

    .texte-card h4 {
      font-size: 14.5px;
      font-weight: 600;
      color: var(--ink);
      line-height: 1.38;
      margin-bottom: 5px;
      letter-spacing: .01em
    }

    .texte-card p {
      font-size: 10.5px;
      color: var(--muted);
      line-height: 1.6;
      font-weight: 300
    }

    .texte-foot {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-top: 12px;
      padding-top: 9px;
      border-top: 1px solid var(--bg3)
    }

    .texte-ref {
      font-size: 8.5px;
      font-weight: 600;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: .08em;
      font-family: var(--f-body)
    }

    .texte-dl {
      font-size: 9.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--R);
      display: flex;
      align-items: center;
      gap: 3px;
      text-transform: uppercase;
      letter-spacing: .07em
    }

    .docs-search {
      background: var(--bg2);
      border: 1px solid var(--bord);
      border-radius: 6px;
      padding: 20px 24px;
      display: flex;
      align-items: center;
      gap: 14px
    }

    .docs-search-icon svg {
      width: 20px;
      height: 20px;
      fill: none;
      stroke: var(--muted);
      stroke-width: 2;
      stroke-linecap: round
    }

    .docs-search input {
      flex: 1;
      background: transparent;
      border: none;
      outline: none;
      font-size: 14px;
      color: var(--ink);
      font-family: var(--f-body)
    }

    .docs-search input::placeholder {
      color: var(--muted)
    }

    .docs-search-btn {
      background: var(--R);
      color: #fff;
      font-size: 10px;
      font-weight: 600;
      font-family: var(--f-body);
      padding: 9px 18px;
      border-radius: 3px;
      text-transform: uppercase;
      letter-spacing: .08em;
      border: none;
      cursor: pointer;
      transition: .15s
    }

    .docs-search-btn:hover {
      background: var(--Rd)
    }

    .docs-filters {
      display: flex;
      gap: 6px;
      margin-left: 8px
    }

    .df {
      font-size: 9.5px;
      font-weight: 500;
      font-family: var(--f-body);
      padding: 5px 13px;
      border-radius: 20px;
      border: 1px solid var(--bord);
      color: var(--muted);
      cursor: pointer;
      transition: .15s;
      background: var(--white)
    }

    .df:hover,
    .df.on {
      background: var(--R);
      color: #fff;
      border-color: var(--R)
    }

    /* ═══ PARTENAIRES ═══ */
    .part-section {
      padding: 0 52px 48px
    }

    .part-strip {
      background: var(--white);
      border: 1px solid var(--bord);
      border-radius: 6px;
      padding: 0;
      display: flex;
      overflow: hidden
    }

    .part-item {
      flex: 1;
      padding: 20px 0;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 4px;
      border-right: 1px solid var(--bord);
      cursor: pointer;
      transition: .15s
    }

    .part-item:last-child {
      border-right: none
    }

    .part-item:hover {
      background: var(--bg2)
    }

    .part-abbr {
      font-size: 16px;
      font-weight: 600;
      color: var(--Rd);
      letter-spacing: .04em
    }

    .part-sub {
      font-size: 8.5px;
      text-transform: uppercase;
      letter-spacing: .09em;
      color: var(--muted);
      text-align: center;
      font-family: var(--f-body)
    }

    /* ═══ FOOTER ═══ */
    footer {
      background: #14100D
    }

    .foot-main {
      padding: 56px 52px 44px;
      display: grid;
      grid-template-columns: 1.8fr 1fr 1fr 1.2fr;
      gap: 48px;
      border-bottom: 1px solid rgba(255, 255, 255, .06)
    }

    .fb-wrap {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-bottom: 16px
    }

    .fb-flag {
      width: 4px;
      height: 36px;
      display: flex;
      flex-direction: column;
      border-radius: 1px;
      overflow: hidden;
      flex-shrink: 0
    }

    .fbf-r {
      flex: 1;
      background: var(--R)
    }

    .fbf-g {
      flex: 1;
      background: var(--Vm)
    }

    .fb-name {
      font-size: 22px;
      font-weight: 600;
      color: var(--Ol);
      letter-spacing: .04em
    }

    footer p.bio {
      font-size: 12px;
      color: rgba(255, 255, 255, .32);
      line-height: 1.8;
      max-width: 250px;
      margin-bottom: 20px;
      font-weight: 300
    }

    .fsoc {
      display: flex;
      gap: 7px
    }

    .fsoc a {
      width: 32px;
      height: 32px;
      border: 1px solid rgba(255, 255, 255, .1);
      border-radius: 3px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: rgba(255, 255, 255, .32);
      transition: .15s
    }

    .fsoc a:hover {
      border-color: var(--Ol);
      color: var(--Ol)
    }

    .fsoc a svg {
      width: 13px;
      height: 13px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2
    }

    .fc h4 {
      font-size: 12px;
      font-weight: 600;
      font-family: var(--display);
      color: #c0bebc;
      text-transform: uppercase;
      /* letter-spacing: .18em; */
      margin-bottom: 18px
    }

    .fc ul {
      list-style: none
    }

    .fc li {
      margin-bottom: 10px
    }

    .fc a {
      font-size: 12px;
      color: rgba(255, 255, 255, .38);
      display: flex;
      align-items: center;
      gap: 5px;
      transition: .12s;
      font-weight: 300
    }

    .fc a:hover {
      color: var(--Ol)
    }

    .fc a svg {
      width: 9px;
      height: 9px;
      opacity: .3
    }

    .fc address {
      font-style: normal
    }

    .fc .cl {
      display: flex;
      gap: 10px;
      margin-bottom: 12px;
      align-items: flex-start
    }

    .fc .ci {
      width: 24px;
      height: 24px;
      background: rgba(255, 255, 255, .05);
      border-radius: 3px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      margin-top: 1px
    }

    .fc .ci svg {
      width: 11px;
      height: 11px;
      fill: none;
      stroke: var(--Ol);
      stroke-width: 2
    }

    .fc .ct {
      font-size: 12px;
      color: rgba(255, 255, 255, .38);
      line-height: 1.6;
      font-weight: 300
    }

    .fc .ct a {
      color: var(--Ol);
      display: inline
    }

    .foot-bot {
      padding: 16px 52px;
      display: flex;
      justify-content: space-between;
      align-items: center
    }

    .foot-bot p {
      font-size: 10px;
      color: rgba(255, 255, 255, .2);
      font-family: var(--f-body)
    }

    .foot-flags {
      display: flex;
      align-items: center;
      gap: 4px
    }

    .ff-r {
      width: 9px;
      height: 14px;
      background: var(--R);
      border-radius: 1px
    }

    .ff-g {
      width: 9px;
      height: 14px;
      background: var(--Vm);
      border-radius: 1px
    }

    .ff-lbl {
      font-size: 9px;
      color: rgba(255, 255, 255, .2);
      text-transform: uppercase;
      letter-spacing: .12em;
      margin-left: 4px;
      font-family: var(--f-body)
    }

    .yt-bg {
      position: absolute;
      inset: 0;
      overflow: hidden;
      pointer-events: none;
      /* empêche les clics sur la vidéo */
    }

    .yt-bg iframe {
      position: absolute;
      /* Agrandi pour masquer les bords noirs YouTube */
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 177.78vh;
      /* ratio 16:9 — toujours plus large que l'écran */
      height: 56.25vw;
      /* ratio 16:9 — toujours plus haut que l'écran */
      min-width: 100%;
      min-height: 100%;
      border: none;
      pointer-events: none;
    }

    /* ═══ BANDEAU DE PAGE (gabarits internes) ═══ */
    .page-banner {
      background: linear-gradient(135deg, var(--ink) 0%, var(--Rd) 100%);
      padding: 64px 52px 40px;
      color: #fff
    }

    .breadcrumb {
      font-size: 10.5px;
      font-family: var(--f-body);
      color: rgba(255, 255, 255, .5);
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-bottom: 14px;
      display: flex;
      gap: 6px;
      align-items: center
    }

    .breadcrumb a {
      color: rgba(255, 255, 255, .8)
    }

    .breadcrumb a:hover {
      color: #fff
    }

    .page-banner h1 {
      font-family: var(--f-display);
      font-size: 40px;
      font-weight: 600;
      letter-spacing: .01em;
      margin-bottom: 10px
    }

    .page-banner p {
      font-size: 14px;
      color: rgba(255, 255, 255, .62);
      max-width: 580px;
      font-weight: 300;
      line-height: 1.7
    }

    .page-sub-nav {
      background: var(--white);
      border-bottom: 1px solid var(--bord);
      padding: 0 52px;
      display: flex;
      gap: 4px;
      overflow-x: auto
    }

    .page-sub-nav a {
      font-size: 10.5px;
      font-weight: 600;
      font-family: var(--f-body);
      color: var(--ink2);
      text-transform: uppercase;
      letter-spacing: .06em;
      padding: 14px 16px;
      white-space: nowrap;
      border-bottom: 2px solid transparent;
      transition: .15s
    }

    .page-sub-nav a:hover {
      color: var(--R);
      border-bottom-color: var(--R)
    }

    .page-content {
      max-width: 1180px;
      margin: 0 auto;
      padding: 48px 52px
    }

    .page-content section+section {
      margin-top: 56px
    }

    /* ═══ ACCORDÉON FAQ ═══ */
    .faq-list {
      display: flex;
      flex-direction: column;
      gap: 10px;
      max-width: 820px
    }

    .faq-item {
      border: 1px solid var(--bord);
      border-radius: 8px;
      background: var(--white);
      overflow: hidden
    }

    .faq-item summary {
      padding: 16px 20px;
      cursor: pointer;
      font-weight: 600;
      font-size: 13.5px;
      color: var(--ink);
      list-style: none;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px
    }

    .faq-item summary::-webkit-details-marker {
      display: none
    }

    .faq-item summary::after {
      content: '+';
      font-size: 20px;
      color: var(--R);
      flex-shrink: 0
    }

    .faq-item[open] summary::after {
      content: '−'
    }

    .faq-item p {
      padding: 0 20px 18px;
      font-size: 13px;
      color: var(--ink2);
      line-height: 1.75;
      font-weight: 300
    }

    /* ═══ FORMULAIRES ═══ */
    .form-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
      max-width: 720px
    }

    .form-grid .full {
      grid-column: 1/-1
    }

    .form-field {
      display: flex;
      flex-direction: column;
      gap: 6px
    }

    .form-field label {
      font-size: 11px;
      font-weight: 600;
      color: var(--ink2);
      text-transform: uppercase;
      letter-spacing: .05em;
      font-family: var(--f-body)
    }

    .form-field input,
    .form-field select,
    .form-field textarea {
      border: 1px solid var(--bord);
      border-radius: 4px;
      padding: 11px 14px;
      font-size: 13.5px;
      font-family: var(--f-body);
      color: var(--ink);
      background: var(--white)
    }

    .form-field textarea {
      resize: vertical;
      min-height: 120px
    }

    .form-submit {
      background: var(--R);
      color: #fff;
      border: none;
      cursor: pointer;
      font-size: 11px;
      font-weight: 600;
      font-family: var(--f-body);
      padding: 14px 30px;
      border-radius: 3px;
      text-transform: uppercase;
      letter-spacing: .08em;
      transition: .15s
    }

    .form-submit:hover {
      background: var(--Rd)
    }

    /* ═══ LISTE DE COORDONNÉES SUR FOND CLAIR (hors footer) ═══ */
    .contact-list .cl {
      display: flex;
      gap: 12px;
      margin-bottom: 18px;
      align-items: flex-start
    }

    .contact-list .ci {
      width: 32px;
      height: 32px;
      background: var(--bg2);
      border-radius: 6px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0
    }

    .contact-list .ci svg {
      width: 15px;
      height: 15px;
      fill: none;
      stroke: var(--R);
      stroke-width: 2
    }

    .contact-list .ct {
      font-size: 13px;
      color: var(--ink2);
      line-height: 1.7;
      font-weight: 400
    }

    .contact-list .ct a {
      color: var(--R)
    }

    /* ═══ GRILLE DE CARTES GÉNÉRIQUE (services, projets…) ═══ */
    .card-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
      gap: 20px
    }

    /* ═══ BLOCS QUIZ / FORUM — remplacent les styles inline dans index.html ═══ */
    .quiz-forum {
      margin: 0 var(--pad) 48px;
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 20px
    }

    .qf-card {
      border-radius: 8px;
      padding: 40px;
      box-shadow: var(--sh)
    }

    .qf-card.dark {
      background: var(--ink)
    }

    .qf-card.red {
      background: var(--Rd)
    }

    .qf-card h3 {
      font-family: var(--f-display);
      font-size: 24px;
      font-weight: 600;
      color: #fff;
      margin-bottom: 10px
    }

    .qf-card p {
      font-size: 13.5px;
      color: rgba(255, 255, 255, .7);
      line-height: 1.7;
      margin-bottom: 22px
    }

    /* ═══════════════════════════════════════════════════════════
       RESPONSIVE — points de rupture 1024 / 768 / 480.
       Ajouté lors de la passe design ; les gabarits n'avaient
       aucun @media auparavant. Le menu mobile (burger) est injecté
       par main.js et présent sur les 15 pages.
       ═══════════════════════════════════════════════════════════ */

    /* Bouton burger — masqué sur desktop, affiché sous 900px */
    .nav-toggle {
      display: none;
      width: 42px;
      height: 42px;
      border: 1px solid var(--bord);
      border-radius: 6px;
      background: var(--white);
      cursor: pointer;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      gap: 4px;
      flex-shrink: 0
    }

    .nav-toggle span {
      display: block;
      width: 20px;
      height: 2px;
      background: var(--ink);
      border-radius: 2px;
      transition: .2s
    }

    .header.nav-open .nav-toggle span:nth-child(1) {
      transform: translateY(6px) rotate(45deg)
    }

    .header.nav-open .nav-toggle span:nth-child(2) {
      opacity: 0
    }

    .header.nav-open .nav-toggle span:nth-child(3) {
      transform: translateY(-6px) rotate(-45deg)
    }

    @media (max-width: 1024px) {
      .main-wrap {
        grid-template-columns: 1fr !important;
        gap: 28px
      }

      .actu-list {
        grid-template-columns: repeat(2, 1fr)
      }

      .docs-categories,
      .docs-grid,
      .docs-textes {
        grid-template-columns: repeat(2, 1fr)
      }

      .actu-featured,
      .campagne-wrap,
      .map-wrap {
        grid-template-columns: 1fr
      }

      .hero-stats {
        grid-template-columns: repeat(2, 1fr)
      }

      .hs:nth-child(2) {
        border-right: none
      }

      .foot-main {
        grid-template-columns: 1fr 1fr;
        gap: 32px
      }
    }

    /* Menu mobile : la nav devient un panneau déroulant sous le header */
    @media (max-width: 900px) {
      .nav-toggle {
        display: flex
      }

      .header {
        flex-wrap: wrap;
        /* hauteur auto quand la nav se déplie : sinon le fond blanc reste
           bloqué à 68px et le contenu transparaît derrière le menu. */
        height: auto;
        min-height: 68px
      }

      .header nav {
        display: none;
        order: 3;
        flex-basis: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 8px 0 12px;
        border-top: 1px solid var(--bord);
        margin-top: 8px;
        background: var(--white)
      }

      .header.nav-open nav {
        display: flex
      }

      .ni>a {
        padding: 12px 4px;
        font-size: 14px;
        border-bottom: 1px solid var(--bg3);
        margin-bottom: 0
      }

      .ni:hover>a {
        background: transparent;
        color: var(--R)
      }

      .chev {
        margin-left: auto
      }

      /* Sous-menus : affichés en flux (pas de survol au tactile) */
      .drop {
        position: static;
        display: block;
        box-shadow: none;
        border: none;
        border-radius: 0;
        background: transparent;
        min-width: 0;
        padding-left: 12px
      }

      .drop a {
        color: var(--ink2);
        padding: 9px 4px
      }

      .drop a:hover {
        background: transparent;
        color: var(--R)
      }
    }

    @media (max-width: 768px) {

      /* Paddings latéraux resserrés */
      .topbar,
      .header,
      .ticker,
      .campagne-section,
      .docs-section,
      .map-section,
      .part-section,
      .page-sub-nav {
        padding-left: 20px;
        padding-right: 20px
      }

      .main-wrap {
        padding: 32px 20px
      }

      .page-banner {
        padding: 48px 20px 32px
      }

      .page-content {
        padding: 32px 20px
      }

      .foot-main {
        padding: 40px 20px 32px;
        grid-template-columns: 1fr;
        gap: 28px
      }

      .foot-bot {
        padding: 16px 20px;
        flex-direction: column;
        gap: 10px;
        text-align: center
      }

      /* Topbar : on masque les liens secondaires, on garde l'urgence */
      .topbar-left {
        display: none
      }

      /* Hero fluide */
      .hero1 {
        height: auto;
        padding: 72px 0
      }

      .hero1-in h1 {
        font-size: clamp(28px, 8vw, 44px)
      }

      .hero1-search {
        flex-direction: column;
        border-radius: 8px
      }

      .hero1-search button {
        padding: 14px;
        justify-content: center
      }

      /* Grilles en 1 colonne */
      .actu-list,
      .docs-categories,
      .docs-grid,
      .docs-textes,
      .quiz-forum {
        grid-template-columns: 1fr
      }

      .directeur-block {
        grid-template-columns: 1fr
      }

      .dir-photo-col {
        min-height: 240px
      }

      .actu-featured {
        grid-template-columns: 1fr
      }

      .part-strip {
        flex-wrap: wrap
      }

      .part-item {
        flex: 1 1 33%;
        min-width: 110px;
        border-bottom: 1px solid var(--bord)
      }

      .quiz-forum {
        margin: 0 20px 40px
      }

      .qf-card {
        padding: 28px 24px
      }
    }

    @media (max-width: 480px) {
      .hero-stats {
        grid-template-columns: 1fr
      }

      .hs {
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, .07);
        padding: 18px 0 18px 28px
      }

      .part-item {
        flex: 1 1 50%
      }

      .sec-hd {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px
      }

      .sec-title {
        font-size: 24px
      }
    }
