/* ═══════════════════════════════════════════════════════════════════════════════════════
   POLICE OUTFIT · retablie le 03/08/2026
   ═══════════════════════════════════════════════════════════════════════════════════════
   🔴 LE DEFAUT : cette feuille declarait `font-family:'Outfit'` mais AUCUN @font-face
   n existait nulle part sur le domaine. La police etait donc reclamee a chaque page et
   jamais fournie : le navigateur retombait sur la police systeme.
   Consequence visible, celle que Kurt a signalee : « tout est en gros GRAS ». Le site
   emploie des graisses de 700 a 850 sur ses titres, ses libelles et ses boutons. Avec
   Outfit, qui est une linéale geometrique fine, ces graisses sont nettes. Avec la police
   de repli, elles deviennent lourdes et illisibles, et l ecart entre un titre et un texte
   courant disparait.
   🔑 Rien a telecharger : les deux fichiers etaient DEJA sur le serveur depuis le 24/07
   (`/fonts/outfit-latin.woff2`, `/fonts/outfit-latinext.woff2`) et la declaration existait
   dans `index-actuel.html`, qui n est pas la page servie. Il ne manquait que le lien entre
   les deux. Copie ici TELLE QUELLE, sans une virgule de changement.
   ⚠️ `font-weight:300 800` : c est une police VARIABLE, un seul fichier couvre toutes les
   graisses. Ne pas la remplacer par des fichiers separes par graisse.
   ⚠️ La CSP du domaine porte `font-src 'self' data: https:` : le chargement local passe.
   ═══════════════════════════════════════════════════════════════════════════════════════ */
@font-face{font-family:"Outfit";font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/outfit-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Outfit";font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/outfit-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}


/* ===================================================================
   CaleDoAlerte — Design system
   =================================================================== */

:root {
  --primary: #3b99f6;
  --primary-dark: #1565c0;
  --primary-light: rgba(59,153,246,.15);
  --accent: #3b99f6;
  --accent-2: #1565c0;
  --bg: #0a1424;
  --surface: #132743;
  --text: #eaf2ff;
  --text-muted: #a8c1e6;
  --border: rgba(255,255,255,.10);
  --border-strong: rgba(255,255,255,.18);
  --success: #10b981;
  --warn: #f59e0b;
  --danger: #ef4444;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.05);
  --shadow: 0 4px 12px -2px rgba(0,0,0,.08);
  --shadow-lg: 0 12px 32px -8px rgba(0,0,0,.15);
  --r-xs: 6px;
  --r-sm: 10px;
  --r: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --maxw: 1180px;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, sans-serif;
  font-size: 15px;
  color: var(--text);
  background: var(--bg);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; display: block; }
button { font-family: inherit; font-size: inherit; cursor: pointer; }

.cdv-container {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 18px;
}

/* ── HEADER ─────────────────────────────────────────────────────── */
.cdv-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255,255,255,.92);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--border);
}
.cdv-header-inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 16px;
}
.cdv-logo {
  display: flex; align-items: center; gap: 10px;
  font-weight: 800; font-size: 18px;
  color: var(--text); text-decoration: none;
  letter-spacing: -0.02em;
}
.cdv-logo-icon {
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 18px;
  box-shadow: 0 4px 10px -2px rgba(220,38,38,.4);
}
.cdv-nav {
  display: flex; gap: 4px; align-items: center;
  margin-left: auto;
}
.cdv-nav a {
  padding: 8px 14px; border-radius: 999px;
  color: var(--text-muted); text-decoration: none;
  font-size: 13.5px; font-weight: 500;
  transition: background .15s ease, color .15s ease;
}
.cdv-nav a:hover { background:#16294b; color: var(--text); }
.cdv-nav a.active { background: var(--primary-light); color: var(--primary-dark); }
.cdv-cta {
  padding: 9px 18px;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff !important;
  border-radius: 999px;
  font-weight: 600; font-size: 13.5px;
  box-shadow: 0 4px 12px -2px rgba(220,38,38,.4);
  border: 0; cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease;
}
.cdv-cta:hover { transform: translateY(-1px); box-shadow: 0 8px 18px -4px rgba(220,38,38,.5); text-decoration: none !important; }

.cdv-user-chip {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 12px 6px 6px;
  border-radius: 999px;
  background:#16294b;
  cursor: pointer;
  font-size: 13px; font-weight: 500;
  border: 0;
  transition: background .15s;
}
.cdv-user-chip:hover { background: rgba(255,255,255,.12); }
.cdv-user-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, #6366f1, #ec4899);
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
}

/* ── HERO ────────────────────────────────────────────────────────── */
.cdv-hero {
  position: relative;
  background:
    radial-gradient(ellipse at top right, rgba(99,102,241,.15), transparent 60%),
    radial-gradient(ellipse at bottom left, rgba(236,72,153,.10), transparent 50%),
    linear-gradient(180deg, #fff 0%, #fafbfc 100%);
  padding: 70px 0 50px;
  overflow: hidden;
}
.cdv-hero::before {
  content: ''; position: absolute; inset: 0;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><circle cx="20" cy="20" r="1" fill="%23000" opacity=".05"/></svg>');
  pointer-events: none;
}
.cdv-hero-inner { position: relative; text-align: center; }
.cdv-hero h1 {
  font-size: clamp(32px, 5vw, 52px);
  font-weight: 800;
  letter-spacing: -0.03em;
  margin: 0 0 18px;
  line-height: 1.05;
  color: var(--text);
}
.cdv-hero h1 span {
  background: linear-gradient(135deg, var(--primary), var(--accent-2));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.cdv-hero p.lead {
  font-size: clamp(15px, 1.5vw, 18px);
  color: var(--text-muted);
  max-width: 640px;
  margin: 0 auto 32px;
}
.cdv-hero-cta {
  display: inline-flex; gap: 10px; flex-wrap: wrap; justify-content: center;
}
.cdv-btn {
  padding: 13px 24px;
  border-radius: 999px;
  border: 0;
  font-weight: 600; font-size: 14.5px;
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
  transition: transform .15s, box-shadow .15s;
}
.cdv-btn-primary {
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff;
  box-shadow: 0 6px 16px -4px rgba(220,38,38,.5);
}
.cdv-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 10px 22px -4px rgba(220,38,38,.55); }
.cdv-btn-ghost {
  background:#132743; color: var(--text);
  border: 1.5px solid var(--border);
}
.cdv-btn-ghost:hover { border-color: var(--text-muted); }
.cdv-btn-secondary {
  background: var(--text); color: #fff;
}
.cdv-btn-secondary:hover { transform: translateY(-1px); }

/* Search bar */
.cdv-search-bar {
  max-width: 580px;
  margin: 30px auto 0;
  display: flex;
  background:#132743;
  border-radius: 999px;
  box-shadow: 0 12px 32px -10px rgba(0,0,0,.18), 0 0 0 1px var(--border) inset;
  overflow: hidden;
}
.cdv-search-bar input {
  flex: 1;
  padding: 16px 22px;
  border: 0; outline: 0;
  font-size: 15px;
  background: transparent;
}
.cdv-search-bar button {
  padding: 0 26px;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff; border: 0; font-weight: 600;
}

/* ── STATS BAR ──────────────────────────────────────────────────── */
.cdv-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  padding: 30px 0;
}
.cdv-stat-card {
  background: var(--surface);
  border-radius: var(--r);
  padding: 18px;
  border: 1px solid var(--border);
  text-align: center;
}
.cdv-stat-num {
  font-size: 28px; font-weight: 800;
  color: var(--text);
  letter-spacing: -0.02em;
}
.cdv-stat-label {
  font-size: 12px; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.05em;
  margin-top: 4px;
}

/* ── SECTION ──────────────────────────────────────────────────────── */
.cdv-section { padding: 50px 0; }
.cdv-section-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}
.cdv-section h2 {
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 0;
  flex: 1;
}
.cdv-section-sub {
  color: var(--text-muted);
  font-size: 14px;
  margin: -16px 0 24px;
}

/* ── CATEGORY GRID ──────────────────────────────────────────────── */
.cdv-cat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px;
}
.cdv-cat-card {
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--r);
  padding: 20px 16px;
  text-align: center;
  cursor: pointer;
  transition: transform .15s, border-color .15s, box-shadow .15s;
  text-decoration: none;
  color: var(--text);
}
.cdv-cat-card:hover {
  transform: translateY(-3px);
  border-color: var(--primary);
  box-shadow: var(--shadow);
  text-decoration: none;
}
.cdv-cat-icon {
  font-size: 36px;
  margin-bottom: 10px;
}
.cdv-cat-label {
  font-weight: 600;
  font-size: 14px;
}
.cdv-cat-count {
  font-size: 11.5px;
  color: var(--text-muted);
  margin-top: 4px;
}

/* ── VOL CARD (signalement) ─────────────────────────────────────── */
.cdv-vol-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
}
.cdv-vol-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r);
  overflow: hidden;
  transition: transform .15s, box-shadow .15s, border-color .15s;
  text-decoration: none;
  color: var(--text);
  display: flex; flex-direction: column;
}
.cdv-vol-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  border-color: var(--text-muted);
  text-decoration: none;
}
.cdv-vol-photo {
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg,#16294b,#132743);
  position: relative;
  overflow: hidden;
}
.cdv-vol-photo img {
  width: 100%; height: 100%; object-fit: cover;
}
.cdv-vol-photo-empty {
  display: flex; align-items: center; justify-content: center;
  height: 100%; font-size: 48px; opacity: .35;
}
.cdv-vol-status {
  position: absolute; top: 10px; left: 10px;
  padding: 4px 10px;
  background: rgba(0,0,0,.75);
  color: #fff; border-radius: 999px;
  font-size: 11px; font-weight: 600;
  display: flex; align-items: center; gap: 4px;
  backdrop-filter: blur(6px);
}
.cdv-vol-cat {
  position: absolute; top: 10px; right: 10px;
  padding: 4px 8px;
  background: rgba(255,255,255,.92);
  color: #0a1424 !important; border-radius: 6px;
  font-size: 11px; font-weight: 600;
}
.cdv-vol-body { padding: 14px 16px 16px; flex: 1; display: flex; flex-direction: column; }
.cdv-vol-title {
  font-weight: 700; font-size: 15.5px;
  letter-spacing: -0.01em;
  margin: 0 0 4px;
  line-height: 1.3;
}
.cdv-vol-id {
  font-family: 'SF Mono', ui-monospace, monospace;
  font-size: 13px; color: var(--primary-dark);
  font-weight: 700;
  letter-spacing: 0.5px;
  margin-bottom: 8px;
}
.cdv-vol-meta {
  font-size: 12.5px;
  color: var(--text-muted);
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px dashed var(--border);
}
.cdv-vol-meta span { display: inline-flex; align-items: center; gap: 4px; }

/* ── FORM ───────────────────────────────────────────────────────── */
.cdv-form {
  background: var(--surface);
  border-radius: var(--r-lg);
  padding: 32px;
  box-shadow: var(--shadow);
  max-width: 720px;
  margin: 0 auto;
}
.cdv-form h2 { margin-top: 0; }
.cdv-field {
  margin-bottom: 18px;
}
.cdv-field label {
  display: block;
  font-size: 13px; font-weight: 600;
  margin-bottom: 6px;
  color: var(--text);
}
.cdv-field label .req { color: var(--primary); margin-left: 2px; }
.cdv-field .hint {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
}
.cdv-input, .cdv-textarea, .cdv-select {
  width: 100%;
  padding: 11px 14px;
  border-radius: var(--r-sm);
  border: 1.5px solid var(--border);
  font: inherit;
  font-size: 14.5px;
  background:#132743;
  transition: border-color .15s, box-shadow .15s;
}
.cdv-input:focus, .cdv-textarea:focus, .cdv-select:focus {
  outline: 0;
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(220,38,38,.1);
}
.cdv-textarea { resize: vertical; min-height: 90px; }

/* Step indicator */
.cdv-stepper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-bottom: 28px;
  flex-wrap: wrap;
}
.cdv-step {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 14px 6px 6px;
  border-radius: 999px;
  background:#16294b;
  font-size: 13px;
  color: var(--text-muted);
  transition: background .2s, color .2s;
}
.cdv-step.active {
  background: var(--primary);
  color: #fff;
}
.cdv-step.done { background: var(--success); color: #fff; }
.cdv-step-num {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: rgba(255,255,255,.4);
  color: inherit;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
}
.cdv-step:not(.active):not(.done) .cdv-step-num { background: #cbd5e1; color: var(--surface); }
.cdv-step-arrow {
  color: var(--text-muted);
  font-size: 12px;
}

/* Photo upload */
.cdv-photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 10px;
  margin-top: 8px;
}
.cdv-photo-tile, .cdv-photo-add {
  aspect-ratio: 1 / 1;
  border-radius: var(--r-sm);
  overflow: hidden;
  position: relative;
  background:#16294b;
  display: flex; align-items: center; justify-content: center;
}
.cdv-photo-tile img { width: 100%; height: 100%; object-fit: cover; }
.cdv-photo-tile .cdv-photo-remove {
  position: absolute; top: 6px; right: 6px;
  width: 26px; height: 26px;
  border-radius: 50%;
  background: rgba(0,0,0,.7);
  color: #fff;
  border: 0; cursor: pointer;
  font-size: 14px;
  display: flex; align-items: center; justify-content: center;
}
.cdv-photo-add {
  border: 2px dashed var(--border-strong);
  cursor: pointer;
  font-size: 12px; font-weight: 500; color: var(--text-muted);
  flex-direction: column; gap: 4px;
}
.cdv-photo-add:hover { border-color: var(--primary); color: var(--primary); }
.cdv-photo-add svg { font-size: 28px; }

/* Map */
.cdv-map {
  width: 100%;
  height: 360px;
  border-radius: var(--r);
  overflow: hidden;
  border: 1.5px solid var(--border);
}

/* ── DETAIL FICHE ────────────────────────────────────────────────── */
.cdv-fiche-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 28px;
  padding: 30px 0;
}
@media (max-width: 880px) {
  .cdv-fiche-grid { grid-template-columns: 1fr; }
}
.cdv-fiche-photos {
  display: grid; gap: 8px;
  grid-template-columns: repeat(2, 1fr);
}
.cdv-fiche-photos .main {
  grid-column: 1 / -1;
  aspect-ratio: 16 / 10;
  background:#16294b;
  border-radius: var(--r);
  overflow: hidden;
}
.cdv-fiche-photos .main img { width: 100%; height: 100%; object-fit: cover; }
.cdv-fiche-photos .thumb {
  aspect-ratio: 1 / 1;
  background:#16294b;
  border-radius: var(--r-sm);
  overflow: hidden;
  cursor: pointer;
}
.cdv-fiche-photos .thumb img { width: 100%; height: 100%; object-fit: cover; }
.cdv-fiche-info {
  background: var(--surface);
  border-radius: var(--r);
  padding: 20px 22px;
  border: 1px solid var(--border);
}
.cdv-fiche-info dl { margin: 0; }
.cdv-fiche-info dt {
  font-size: 11.5px; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.05em;
  margin-top: 12px; margin-bottom: 2px;
}
.cdv-fiche-info dd {
  margin: 0;
  font-weight: 600;
  font-size: 15px;
}
.cdv-share-row {
  display: flex; gap: 8px; flex-wrap: wrap;
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}
.cdv-share-btn {
  padding: 8px 14px;
  border-radius: 999px;
  border: 1.5px solid var(--border);
  background:#132743;
  font-weight: 500; font-size: 13px;
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  text-decoration: none;
  color: var(--text);
  transition: background .15s, border-color .15s;
}
.cdv-share-btn:hover { background:#16294b; border-color: var(--border-strong); text-decoration: none; }
.cdv-share-btn.fb { background: #1877f2; color: #fff; border-color: #1877f2; }
.cdv-share-btn.wa { background: #25d366; color: #fff; border-color: #25d366; }
.cdv-share-btn.x  { background: #000; color: #fff; border-color: #000; }
.cdv-share-btn:hover.fb, .cdv-share-btn:hover.wa, .cdv-share-btn:hover.x { opacity: .92; }

/* Sightings (community) */
.cdv-sighting {
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid var(--warn);
  border-radius: var(--r);
  padding: 14px 16px;
  margin-bottom: 10px;
}
.cdv-sighting-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 8px;
  font-size: 13px; color: var(--text-muted);
}
.cdv-sighting-author { font-weight: 600; color: var(--text); }
.cdv-sighting-body { font-size: 14px; line-height: 1.55; }
.cdv-sighting-photo {
  margin-top: 8px;
  border-radius: var(--r-sm);
  overflow: hidden;
  max-width: 240px;
}
.cdv-sighting-photo img { width: 100%; display: block; }

/* ── EMPTY STATE ───────────────────────────────────────────────── */
.cdv-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-muted);
}
.cdv-empty .icon { font-size: 56px; opacity: .4; margin-bottom: 14px; }

/* ── BADGES ─────────────────────────────────────────────────────── */
.cdv-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11.5px; font-weight: 600;
  background:#16294b; color: var(--text);
}
.cdv-badge.recherche { background: rgba(255,90,90,.16); color: #ff8f8f; }
.cdv-badge.apercu    { background: rgba(245,196,81,.16); color: #f5c451; }
.cdv-badge.retrouve  { background:rgba(52,211,153,.16); color:#34d399; }
.cdv-badge.archive   { background: rgba(255,255,255,.12); color: var(--text-muted); }

/* ── FOOTER ─────────────────────────────────────────────────────── */
.cdv-footer {
  margin-top: 34px;
  padding: 24px 0;
  background: var(--text);
  color: rgba(255,255,255,.7);
  font-size: 13.5px;
}
.cdv-footer a { color: rgba(255,255,255,.85); }
.cdv-footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 18px 26px;
}
.cdv-footer h4 {
  color: #fff; font-size: 13px;
  text-transform: uppercase; letter-spacing: 0.05em;
  margin: 0 0 12px;
}
.cdv-footer ul { list-style: none; padding: 0; margin: 0; }
.cdv-footer li { margin-bottom: 4px; }
.cdv-footer-bottom {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,.1);
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  font-size: 12px;
}

/* Emergency strip */
.cdv-emergency {
  background: linear-gradient(135deg, #FEF2F2, #FFFFFF);
  border: 1px solid #FECACA;
  border-radius: var(--r);
  padding: 16px 20px;
}
.cdv-emergency h3 {
  margin: 0 0 10px; font-size: 14px;
  color: var(--primary-dark);
  display: flex; align-items: center; gap: 6px;
}
.cdv-emergency-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px;
}
.cdv-emergency-tile {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background:#132743;
  border: 1px solid #FECACA;
  border-radius: var(--r-sm);
  text-decoration: none;
  color: var(--text);
  transition: background .15s;
  font-size: 13px;
}
.cdv-emergency-tile:hover { background: rgba(255,90,90,.12); text-decoration: none; }
.cdv-emergency-tile strong { color: var(--primary-dark); font-size: 14px; }

/* Toasts */
.cdv-toast {
  position: fixed; bottom: 24px; left: 50%;
  transform: translateX(-50%) translateY(80px);
  background: var(--text); color: #fff;
  padding: 12px 20px;
  border-radius: 999px;
  font-size: 13.5px; font-weight: 500;
  box-shadow: 0 12px 30px -10px rgba(0,0,0,.4);
  z-index: 10000;
  opacity: 0;
  transition: transform .25s ease, opacity .25s ease;
  max-width: calc(100vw - 32px);
}
.cdv-toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }
.cdv-toast.error { background: var(--danger); }
.cdv-toast.success { background: var(--success); }

/* Modal */
.cdv-modal {
  position: fixed; inset: 0;
  background: rgba(15,23,42,.6);
  z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  opacity: 0; pointer-events: none;
  transition: opacity .2s ease;
  backdrop-filter: blur(4px);
}
.cdv-modal.show { opacity: 1; pointer-events: auto; }
.cdv-modal-inner {
  background:#132743;
  border-radius: var(--r-lg);
  max-width: 520px; width: 100%;
  max-height: 90vh; overflow-y: auto;
  padding: 28px;
  transform: translateY(10px) scale(.98);
  transition: transform .25s cubic-bezier(.22,1,.36,1);
}
.cdv-modal.show .cdv-modal-inner { transform: translateY(0) scale(1); }
.cdv-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.cdv-modal-head h3 { margin: 0; font-size: 18px; }
.cdv-modal-close {
  width: 32px; height: 32px; border-radius: 50%;
  background:#16294b; border: 0; cursor: pointer;
  font-size: 16px;
}

/* Mobile */
@media (max-width: 720px) {
  .cdv-nav { display: none; }
  .cdv-stats { grid-template-columns: repeat(2, 1fr); }
  .cdv-form { padding: 22px 18px; border-radius: var(--r); }
  .cdv-footer-grid { grid-template-columns: 1fr 1fr; }
}


/* ── Kind picker / badges / tabs (Volé / Trouvé) ─────────────────── */
.cdv-kind-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.cdv-kind-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px;
  background: var(--surface);
  border: 2px solid var(--border);
  border-radius: var(--r);
  cursor: pointer;
  transition: all .18s ease;
}
.cdv-kind-card:hover { border-color: var(--primary); transform: translateY(-2px); box-shadow: var(--shadow); }
.cdv-kind-card.active {
  border-color: var(--primary);
  background: linear-gradient(180deg, #fff 0%, rgba(220,38,38,0.04) 100%);
  box-shadow: 0 6px 18px -8px rgba(220,38,38,0.35);
}
.cdv-kind-icon {
  width: 56px; height: 56px; min-width: 56px;
  border-radius: 14px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 28px;
}
.cdv-kind-text { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cdv-kind-text strong { font-size: 15.5px; font-weight: 700; }
.cdv-kind-text span { font-size: 13px; color: var(--text-muted); line-height: 1.4; }

.cdv-kind-tabs {
  display: inline-flex;
  background:#16294b;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 4px;
  gap: 4px;
}
.cdv-kind-tab {
  border: 0; background: transparent;
  padding: 8px 16px;
  border-radius: 999px;
  cursor: pointer;
  font-size: 13.5px; font-weight: 600;
  color: var(--text-muted);
  transition: all .15s ease;
}
.cdv-kind-tab:hover { color: var(--text); }
.cdv-kind-tab.active { background: var(--surface); color: var(--text); box-shadow: 0 1px 3px rgba(0,0,0,0.08); }

.cdv-kind-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 999px;
  font-size: 11.5px; font-weight: 600;
  letter-spacing: 0.02em;
}
.cdv-kind-badge.vole { background: rgba(255,90,90,.16); color: #ff8f8f; }
.cdv-kind-badge.trouve { background:rgba(52,211,153,.16); color:#34d399; }

.cdv-badge.attente-proprio { background:rgba(52,211,153,.16); color:#34d399; }
.cdv-badge.rendu { background:rgba(52,211,153,.16); color:#34d399; }

/* When ecosystem unified top bar is present, our local header is not sticky */
.ch-top-bar ~ .cdv-header { position: relative; top: 0; z-index: 90; }

@media (max-width: 600px) {
  .cdv-kind-grid { grid-template-columns: 1fr; }
}

.cdv-kind-badge.perdu { background: rgba(245,196,81,.16); color: #f5c451; }
.cdv-kind-card[data-kind="perdu"].active {
  border-color: #F59E0B;
  background: linear-gradient(180deg, #fff 0%, rgba(245,158,11,0.05) 100%);
  box-shadow: 0 6px 18px -8px rgba(245,158,11,0.4);
}


/* Dark Mode */
[data-theme="dark"]{
  --bg:#0f1419;--surface:#1a2026;--surface-2:#242b34;
  --text:#e6e9ef;--text-muted:#9aa3ad;--border:#2d3540;
  color-scheme:dark;
}
[data-theme="dark"] body{background:var(--bg);color:var(--text)}
[data-theme="dark"] .cdv-vol-card,[data-theme="dark"] .cdv-card,[data-theme="dark"] .cdv-blog-card,[data-theme="dark"] .cdv-cat-other-card,[data-theme="dark"] .cdv-cat-stat{background:var(--surface);border-color:var(--border);color:var(--text)}
[data-theme="dark"] .cdv-modal-content,[data-theme="dark"] .cdv-input,[data-theme="dark"] .cdv-select,[data-theme="dark"] .cdv-textarea,[data-theme="dark"] input[type="text"],[data-theme="dark"] input[type="email"],[data-theme="dark"] input[type="password"],[data-theme="dark"] input[type="number"],[data-theme="dark"] textarea,[data-theme="dark"] select{background:var(--surface);color:var(--text);border-color:var(--border)}
[data-theme="dark"] .cdv-header,[data-theme="dark"] header{background:var(--surface);border-bottom-color:var(--border)}
[data-theme="dark"] .cdv-footer,[data-theme="dark"] footer{background:var(--surface);color:var(--text-muted);border-top-color:var(--border)}
[data-theme="dark"] .cdv-article-toc{background:var(--surface);border-color:var(--border)}
[data-theme="dark"] .cdv-article-tip{background:rgba(249,168,37,.12)}
[data-theme="dark"] .cdv-article-warn{background:rgba(198,40,40,.15)}
[data-theme="dark"] .cdv-article-info{background:rgba(25,118,210,.15)}
[data-theme="dark"] .cdv-cat-other{background:var(--surface)}
[data-theme="dark"] a{color:#7dabd9}
[data-theme="dark"] .cdv-vol-photo-empty{background:var(--surface-2);color:var(--text-muted)}
@keyframes cdvFadeIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* Theme toggle button */
.cdv-theme-toggle{background:none;border:1px solid var(--border);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:16px;display:inline-flex;align-items:center;justify-content:center;transition:transform .2s}
.cdv-theme-toggle:hover{transform:rotate(20deg)}
[data-theme="dark"] .cdv-theme-toggle{background:var(--surface);color:var(--text)}


/* ════════════════════════════════════════════════════════ */
/* CALEDOALERTE — THÈME NAVY (charte pilotes) — réécrit à la source 2026-07-10 */
/* Remplace l'ancien thème clair "Tropical". Navy = base, plus d'override. */
/* ════════════════════════════════════════════════════════ */
:root{
  --brand: #3b99f6 !important;
  --brand-dark: #1565c0 !important;
  --brand-light: #90c8ff !important;
  --accent: #ff5a5a !important;
  --accent-dark: #e5484d !important;
  --bg: #0a1424 !important;
  --surface: #132743 !important;
  --surface-2: #16294b !important;
  --text: #eaf2ff !important;
  --text-muted: #a8c1e6 !important;
  --border: rgba(255,255,255,.10) !important;
  --success: #34d399;
  --warn: #f5c451;
  --danger: #ff5a5a;
}
body{ background: radial-gradient(66% 46% at 82% -4%,rgba(59,153,246,.22),transparent 60%), radial-gradient(52% 44% at 4% 4%,rgba(255,90,90,.13),transparent 55%), radial-gradient(56% 42% at 50% 106%,rgba(21,101,192,.17),transparent 62%), linear-gradient(160deg,#0b1b31,#123457) fixed !important; min-height:100vh; color: #eaf2ff !important; }
html{ background: #0a1424 !important; }
.cdv-header, header.cdv-header, .ch-top-bar{ background: linear-gradient(135deg, rgba(15,42,77,.92), rgba(10,20,36,.92)) !important; box-shadow: 0 4px 18px rgba(0,0,0,.35) !important; }
.cdv-header *, header.cdv-header *, .cdv-nav a, .cdv-header a{ color: #eaf2ff !important; }
.cdv-nav a:hover{ background: rgba(255,255,255,.10) !important; border-radius: 6px; }
.cdv-vol-card, .cdv-card, .cdv-blog-card, .cdv-cat-other-card, .cdv-cat-stat, .ad-card, .pa-card, .fa-card, .cp-card, .ct-card, .pr-plan, .am-tier, .nl-feat, .ap-value, .pr-card, .pr-asset{ background: #132743 !important; border: 1px solid rgba(255,255,255,.10) !important; border-radius: 14px !important; box-shadow: 0 2px 14px rgba(0,0,0,.28) !important; color:#eaf2ff !important; transition: transform .2s, box-shadow .2s; }
.cdv-vol-card:hover, .cdv-card:hover, .cdv-blog-card:hover{ transform: translateY(-3px); box-shadow: 0 12px 28px rgba(0,0,0,.4) !important; }
.cdv-btn, .cdv-btn-primary, .pa-btn, .fa-btn, .cp-btn, .nl-btn, .pr-cta, .pr-btn, .ad-btn, .am-btn, button[type=submit]:not(.danger):not(.alt){ background: linear-gradient(135deg, #3b99f6, #1565c0) !important; color: #fff !important; border: none !important; transition: transform .15s, box-shadow .15s; }
.cdv-btn:hover, .pa-btn:hover, .fa-btn:hover, .cp-btn:hover, .nl-btn:hover, .pr-btn:hover{ transform: translateY(-1px); box-shadow: 0 6px 18px rgba(59,153,246,.35) !important; }
.cdv-hero, .cdv-vol-hero, section.cdv-hero, .au-hero, .ap-hero, .ct-hero, .pa-hero, .ma-hero, .mb-hero, .nl-hero, .am-hero, .pr-hero, .fo-hero, .ck-hero, .cl-hero, .db-hero{ position: relative; }
.cdv-kind-badge.vole{ background:rgba(255,90,90,.16) !important; color:#ff8f8f !important; border:1px solid rgba(255,90,90,.35) !important; }
.cdv-kind-badge.perdu{ background:rgba(245,196,81,.16) !important; color:#f5c451 !important; border:1px solid rgba(245,196,81,.35) !important; }
.cdv-kind-badge.trouve{ background:rgba(52,211,153,.16) !important; color:#34d399 !important; border:1px solid rgba(52,211,153,.35) !important; }
.cdv-input, .cdv-select, .cdv-textarea, input[type=text], input[type=email], input[type=password], input[type=number], input[type=tel], textarea, select{ background:#0a1424 !important; color:#eaf2ff !important; border: 1.5px solid rgba(255,255,255,.12) !important; border-radius: 10px !important; transition: border-color .15s, box-shadow .15s; }
.cdv-input:focus, .cdv-select:focus, .cdv-textarea:focus, input:focus, textarea:focus, select:focus{ outline: none !important; border-color: #3b99f6 !important; box-shadow: 0 0 0 3px rgba(59,153,246,.20) !important; }
.cdv-input::placeholder, input::placeholder, textarea::placeholder{ color:#6f88b0 !important; }
.cdv-footer, footer.cdv-footer{ background: linear-gradient(135deg, #0a1424, #0f2a4d) !important; color: #a8c1e6 !important; border-top:1px solid rgba(255,255,255,.08) !important; }
.cdv-footer a, footer.cdv-footer a{ color: #3b99f6 !important; }
#cdv-live-counter{ color: #a8c1e6; }

#cdv-panic-btn{ background: linear-gradient(135deg, #ff5a5a, #e5484d) !important; box-shadow: 0 4px 18px rgba(255,90,90,.45) !important; }
.db-w .num, .pa-stat .v, .r-stat .v, .ap-num .v, .m-stat .v, .cdv-cat-stat .v, .ad-stat .v, .au-score{ background: linear-gradient(135deg, #3b99f6, #90c8ff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.cdv-article-tip{ background: rgba(245,196,81,.12) !important; border-left-color: #f5c451 !important; }
.cdv-article-info{ background: rgba(59,153,246,.12) !important; border-left-color: #3b99f6 !important; }
.cdv-article-warn{ background: rgba(255,90,90,.12) !important; border-left-color: #ff5a5a !important; }

/* Hero badge (verre navy) */
.cdv-hero .cdv-badge{background:rgba(255,255,255,0.10) !important;color:#eaf2ff !important;border:1px solid rgba(255,255,255,0.22) !important;backdrop-filter:blur(6px);box-shadow:0 4px 14px rgba(0,0,0,.25)}
.cdv-hero .cdv-badge,.cdv-hero .cdv-badge *{color:#eaf2ff !important}
/* Titres toujours clairs sur navy (bat les couleurs sombres héritées du design-system partagé) */
h1,h2,h3,h4,h5,h6{ color:#eaf2ff; }
h1[data-cdv-title],.cdv-container h1,.cdv-container h2,.cdv-container h3,main h1,main h2,main h3,section h1,section h2,section h3{ color:#eaf2ff !important; }


/* ===== CALEDOHUB HARMONISATION =====
   Refonte: aligne typo, navs, composants sur le hub
   tout en gardant l'identité ROUGE ALARME de CaleDoAlerte
   ===================================================== */



/* Reset typographique unifié */
html, body, input, button, select, textarea {
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  letter-spacing: -0.005em;
}

/* Variables alignées hub mais identité Vol préservée */
:root {
  /* Identité ROUGE ALARME Vol (préservée) */
  --primary: #DC2626;
  --primary-dark: #991B1B;
  --primary-light: #FEE2E2;
  
  /* Texte aligné hub */
  --text: #0F1A30;
  --text-muted: #475569;
  
  /* Bordures hub */
  --border: rgba(255,255,255,.12);
  --border-strong: #CBD5E1;
  
  /* Rayons cohérents hub */
  --r-xs: 6px;
  --r-sm: 10px;
  --r: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --r-pill: 999px;
  
  /* Spacing scale */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-8: 32px;
  --sp-10: 40px;
  --sp-12: 48px;
  
  /* Transitions cohérentes */
  --tr-fast: 150ms ease;
  --tr: 250ms ease;
  --tr-slow: 400ms ease;
  
  /* Ombres unifiées */
  --shadow-xs: 0 1px 2px rgba(15,23,42,.04);
  --shadow-sm: 0 1px 3px rgba(15,23,42,.08);
  --shadow: 0 4px 12px rgba(15,23,42,.10);
  --shadow-lg: 0 12px 32px rgba(15,23,42,.14);
}

/* === HEADER PRINCIPAL CDV === */
.cdv-header {
  background: rgba(255,255,255,.92);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow-xs);
}
.cdv-header-inner {
  padding: 10px 24px;
  gap: 16px;
}

/* === LOGO === */
.cdv-logo {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.35rem;
  letter-spacing: 0.5px;
  gap: 10px;
  color: var(--text);
}
.cdv-logo-icon {
  width: 36px;
  height: 36px;
  border-radius: 12px;
}

/* === NAV PRINCIPALE - PILLS STYLE === */
.cdv-nav {
  gap: 4px;
  flex-wrap: wrap;
}
.cdv-nav a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: var(--r-pill);
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--text-muted);
  text-decoration: none;
  transition: all var(--tr-fast);
  white-space: nowrap;
  line-height: 1.2;
}
.cdv-nav a:hover {
  background: var(--primary-light);
  color: var(--primary);
}
.cdv-nav a.active {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 2px 6px rgba(220,38,38,.32);
}

/* === SECTIONS === */
section h1, section h2, .section h2 {
  font-family: 'Outfit', system-ui, sans-serif;
  letter-spacing: 0;
  line-height: 1.15;
}
section p, .section p {
  color: var(--text-muted);
  line-height: 1.6;
}

/* === CARTES === */
.card, .cdv-card, [class*="-card"]:not([class*="hub-card"]) {
  background:#132743;
  border: 1px solid var(--border);
  border-radius: var(--r);
  box-shadow: var(--shadow-sm);
  transition: transform var(--tr), box-shadow var(--tr);
}
.card:hover, .cdv-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}

/* === BOUTONS UNIFIÉS === */
.btn, button.btn, .cdv-btn, .cdv-btn-primary, button[type="submit"] {
  font-family: 'Outfit', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  padding: 10px 20px;
  border-radius: var(--r-pill);
  border: 0;
  cursor: pointer;
  transition: transform var(--tr-fast), box-shadow var(--tr-fast), background var(--tr-fast);
  letter-spacing: 0.01em;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.btn:hover, .cdv-btn:hover {
  transform: translateY(-1px);
}
.cdv-btn-primary, button[type="submit"], .btn.primary {
  background: linear-gradient(135deg, #EF4444 0%, var(--primary) 100%);
  color: #fff;
  box-shadow: 0 4px 14px rgba(220,38,38,.32);
}
.cdv-btn-primary:hover, button[type="submit"]:hover {
  box-shadow: 0 6px 20px rgba(220,38,38,.42);
}

/* === LIENS === */
a { color: var(--primary); transition: color var(--tr-fast); }
a:hover { color: var(--primary-dark); }

/* === FORMULAIRES === */
input, select, textarea {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 10px 14px;
  font-size: 0.95rem;
  background:#132743;
  color: var(--text);
  transition: border-color var(--tr-fast), box-shadow var(--tr-fast);
  width: 100%;
  box-sizing: border-box;
}
input:focus, select:focus, textarea:focus {
  outline: 0;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(220,38,38,.18);
}

/* === BADGE / CHIPS === */
.badge, .chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: var(--r-pill);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}

/* === RESPONSIVE NAV === */
@media (max-width: 1024px) {
  .cdv-nav a {
    font-size: 0.82rem;
    padding: 6px 10px;
  }
}
@media (max-width: 768px) {
  .cdv-header-inner { padding: 10px 16px; }
  .cdv-nav { display: none; } /* hamburger géré par JS */
}

/* === HERO === */
.cdv-hero {
  position: relative;
}
.cdv-hero h1 {
  font-family: 'Outfit', system-ui, sans-serif;
  letter-spacing: 0;
}
.cdv-hero .lead {
  font-family: 'Outfit', sans-serif;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.55;
}

/* ===== FIN HARMONISATION ===== */




/* ===== CALEDOHUB HARMONISATION COMPLETE — V3+V4+V5 ===== */

/* === V3: TYPOGRAPHIE PRO === */
html, body, input, button, select, textarea, h1, h2, h3, h4, h5, h6 {
  font-family: 'Outfit', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1, .cdv-hero h1, .hero h1, section.cdv-hero h1, .cdv-vol-hero h1 {
  font-family: 'Outfit', 'Inter', system-ui, sans-serif !important;
  font-weight: 800 !important;
  font-style: normal !important;
  letter-spacing: -0.025em !important;
  line-height: 1.1 !important;
}
h2, h3, h4 {
  font-family: 'Outfit', 'Inter', system-ui, sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
}

/* === Variables hub + identité Vol === */
:root {
  --primary: #DC2626;
  --primary-dark: #991B1B;
  --primary-light: #FEE2E2;
  --primary-glow: rgba(220,38,38,.32);
  --hub-navy: #0F1A30;
  --hub-navy-light: #1E2A47;
  --hub-slate-100: #F1F5F9;
  --hub-slate-200: rgba(255,255,255,.12);
  --hub-slate-300: #CBD5E1;
  --hub-slate-500: #64748B;
  --hub-slate-700: #334155;
  --hub-slate-900: #0F172A;
}

/* === BARRE HUB NAVY === */
.ch-top-bar, div.ch-top-bar, body > .ch-top-bar {
  position: sticky !important;
  top: 0 !important;
  z-index: 1000 !important;
  background: linear-gradient(135deg, #0F1A30 0%, #1E2A47 100%) !important;
  color: rgba(255,255,255,.12) !important;
  border-bottom: 1px solid rgba(255,255,255,.06) !important;
}
.ch-top-bar *, .ch-top-bar a { color: rgba(255,255,255,0.85) !important; }
.ch-top-bar .ch-label {
  color: rgb(148, 163, 184) !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.4px !important;
  text-transform: uppercase !important;
}
.ch-top-bar .ch-tb-link:hover .ch-label { color: white !important; }
.ch-top-bar .ch-tb-badge {
  background: #3b99f6 !important;
  color: white !important;
  font-weight: 700 !important;
  letter-spacing: 0.4px !important;
}

/* === V5: HEADER CDV NAVY STICKY === */
.cdv-header, header.cdv-header {
  position: sticky !important;
  top: 0 !important;
  z-index: 999 !important;
  background: linear-gradient(135deg, rgba(15,42,77,.92), rgba(10,20,36,.92)) !important;
  backdrop-filter: saturate(180%) blur(12px) !important;
  -webkit-backdrop-filter: saturate(180%) blur(12px) !important;
  border-bottom: 1px solid rgba(255,255,255,.06) !important;
  box-shadow: 0 4px 12px rgba(0,0,0,.18) !important;
  color: rgba(255,255,255,.85) !important;
}
.cdv-header *, .cdv-header a { color: rgba(255,255,255,.85) !important; }

/* V4: Logo visible sur fond navy */
.cdv-logo, .cdv-header .cdv-logo,
.cdv-logo > span:not(.cdv-logo-icon),
.cdv-header .cdv-logo > span:not(.cdv-logo-icon) {
  color: white !important;
  font-weight: 800 !important;
}
.cdv-header .cdv-logo .cdv-logo-icon {
  background: linear-gradient(135deg, var(--primary), var(--primary-dark)) !important;
  color: white !important;
  width: 36px !important;
  height: 36px !important;
  border-radius: 12px !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
}
.cdv-logo {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  font-size: 1.25rem !important;
  text-decoration: none !important;
}

/* === Nav links pills === */
.cdv-nav a {
  color: rgba(255,255,255,.72) !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  padding: 7px 13px !important;
  border-radius: 999px !important;
  font-weight: 500 !important;
  font-size: 0.875rem !important;
  transition: all 150ms ease !important;
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
.cdv-nav a:hover {
  color: white !important;
  background: rgba(255,255,255,.08) !important;
  border-color: rgba(255,255,255,.12) !important;
}
.cdv-nav a.active {
  background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%) !important;
  color: white !important;
  border-color: transparent !important;
  box-shadow: 0 2px 8px rgba(220,38,38,.42) !important;
}
.cdv-header-inner {
  padding: 12px 24px !important;
  gap: 20px !important;
  max-width: 1400px !important;
  margin: 0 auto !important;
}
.cdv-nav { flex-wrap: wrap !important; gap: 4px !important; }

/* === V3: HERO PROPRE NAVY + accent rouge === */
html { background:#0a1424 !important; }
body {
  background: linear-gradient(180deg,#0f2137,#0a1424) !important;
  color:#eaf2ff !important;
}
.cdv-hero, section.cdv-hero, .cdv-vol-hero {
  background: linear-gradient(135deg, #0F1A30 0%, #1E3A5F 50%, #DC2626 130%) !important;
  color: white !important;
  padding: 80px 24px !important;
  position: relative;
  overflow: hidden;
}
.cdv-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(220,38,38,.15) 0%, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(6,214,160,.12) 0%, transparent 40%);
  pointer-events: none;
}
.cdv-hero h1, section.cdv-hero h1 {
  font-size: clamp(2rem, 5vw, 3.5rem) !important;
  color: white !important;
  font-weight: 800 !important;
  margin-bottom: 16px !important;
}
.cdv-hero .lead, .cdv-hero p {
  font-size: 1.15rem !important;
  font-weight: 400 !important;
  color: rgba(255,255,255,.85) !important;
  line-height: 1.55 !important;
  max-width: 720px;
  margin: 0 auto;
}
.cdv-hero .cdv-badge {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  padding: 6px 14px !important;
  background: rgba(255,255,255,.12) !important;
  border: 1px solid rgba(255,255,255,.2) !important;
  border-radius: 999px !important;
  font-size: 0.78rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.4px !important;
  text-transform: uppercase !important;
  color: white !important;
  margin-bottom: 20px !important;
}

/* CTAs hero pills */
.cdv-hero-cta a, .cdv-hero-cta button,
.cdv-btn, button.cdv-btn {
  font-family: 'Outfit', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.95rem !important;
  padding: 11px 22px !important;
  border-radius: 999px !important;
  border: 0 !important;
  transition: transform 150ms ease, box-shadow 150ms ease !important;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none !important;
}
.cdv-hero-cta a {
  background: rgba(255,255,255,.12) !important;
  color: white !important;
  border: 1px solid rgba(255,255,255,.2) !important;
  backdrop-filter: blur(8px);
}
.cdv-btn-primary, .cdv-hero-cta a.primary, button[type="submit"] {
  background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%) !important;
  color: white !important;
  box-shadow: 0 4px 14px rgba(220,38,38,.32) !important;
  border: 0 !important;
}

/* === Search bar hero === */
.cdv-hero input[type="search"], .cdv-hero input[type="text"], .cdv-hero .cdv-search-input, .cdv-vol-hero input {
  background: rgba(255,255,255,0.95) !important;
  color:#eaf2ff !important;
  border: 0 !important;
  border-radius: 999px !important;
  padding: 14px 22px !important;
  font-size: 1rem !important;
  box-shadow: 0 4px 12px rgba(0,0,0,.16) !important;
}
.cdv-hero input::placeholder, .cdv-vol-hero input::placeholder {
  color:#a8c1e6 !important;
}

/* === Cards modernes === */
.cdv-vol-card, .cdv-card, .cdv-blog-card,
.cdv-cat-other-card, .ad-card, .pa-card,
.fa-card, .cp-card, .am-card, .pr-card {
  background:#132743 !important;
  border: 1px solid var(--hub-slate-200) !important;
  border-radius: 16px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,.06) !important;
  transition: transform 250ms ease, box-shadow 250ms ease, border-color 150ms ease !important;
  padding: 20px !important;
}
.cdv-vol-card:hover, .cdv-card:hover {
  transform: translateY(-3px) !important;
  box-shadow: 0 12px 32px rgba(15,23,42,.12) !important;
}

/* === Sections === */
section, .section { padding: 56px 24px !important; }
section h2, .section h2 {
  font-size: clamp(1.5rem, 3vw, 2.25rem) !important;
  font-weight: 800 !important;
  color:#eaf2ff !important;
}

/* === Stats numbers === */
.db-w .num, .pa-stat .v, .r-stat .v, .ap-num .v,
.m-stat .v, .cdv-cat-stat .v, .ad-stat .v, .au-score {
  font-family: 'Outfit', sans-serif !important;
  font-weight: 800 !important;
  font-size: 2.5rem !important;
  letter-spacing: -0.03em !important;
  color: var(--primary) !important;
}

/* === Footer hub navy === */
.ch-unified-footer {
  background: #0F1A30 !important;
  color: #CBD5E1 !important;
}
.ch-unified-footer h4, .ch-unified-footer .ch-uf-title {
  color: #94A3B8 !important;
  font-weight: 700 !important;
  font-size: 0.78rem !important;
  letter-spacing: 0.5px !important;
  text-transform: uppercase !important;
}
.ch-unified-footer a {
  color: rgba(255,255,255,0.85) !important;
  transition: color 150ms ease !important;
}
.ch-unified-footer a:hover { color: #3b99f6 !important; }

/* === Responsive === */
@media (max-width: 1024px) {
  .cdv-nav a { font-size: 0.82rem !important; padding: 6px 10px !important; }
}
@media (max-width: 768px) {
  .cdv-hero { padding: 60px 16px !important; }
}

/* ===== FIN HARMONISATION COMPLETE ===== */


/* === FIX V6 — Police logo + intervertir modules === */

/* Police logo CaleDoAlerte forcée Outfit (pas cursive) */
.cdv-logo,
.cdv-logo > span,
.cdv-logo > span:not(.cdv-logo-icon),
.cdv-header .cdv-logo,
.cdv-header .cdv-logo > span,
.cdv-header .cdv-logo > span:not(.cdv-logo-icon),
header.cdv-header .cdv-logo > span:not(.cdv-logo-icon) {
  font-family: 'Outfit', 'Inter', system-ui, -apple-system, sans-serif !important;
  font-style: normal !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
}

/* Intervertir Hero ↔ En direct via flexbox order */
body {
  display: flex !important;
  flex-direction: column !important;
  min-height: 100vh !important;
}
body > .ch-top-bar { order: 1 !important; }
body > .cdv-header, body > header.cdv-header { order: -1 !important; } /* -1 = toujours en tete, sans dependre de data-cds-site */
/* Bandeau live data */
body > div:not([id]):not([class]) { order: 3 !important; }
/* Hero passe AVANT En direct */
body > section.cdv-hero, body > section.cdv-vol-hero { order: 4 !important; }
/* En direct passe APRES Hero */
body > section:not(.cdv-hero):not(.cdv-vol-hero) { order: 5 !important; }
/* Main et autres */
body > main, body > main.cdv-container { order: 6 !important; }
/* Footer toujours en bas */
body > footer, body > .ch-unified-footer { order: 99 !important; }
/* Fab buttons restent fixed (pas affectés) */
body > button[id*="fab"], body > button[id*="cdv-"], body > #cdv-pwa-banner, body > #cdv-consent-banner, body > #cdv-panic, body > .cdg-dock {
  order: 100 !important;
}

/* === FIN V6 === */


/* === FIX V7 — Logo, espaces, texte, CTAs === */

/* 1. Logo CaleDoAlerte dans la barre de menu (nav épurée façon pilote 2026-07-10) */
.cdv-header .cdv-logo,
header.cdv-header .cdv-logo {
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  font-weight: 800;
  font-size: 1.15rem;
  color: #eaf2ff !important;
  text-decoration: none;
  margin-right: auto;
}
.cdv-header .cdv-logo strong{ color:#3b99f6 !important; }
.cdv-header .cdv-logo .cdv-logo-icon{ font-size:1.3rem; }

/* 2. Enlever les espaces dans "Cale Do Hub" du logo top bar */
.ch-tb-brand,
.ch-top-bar .ch-tb-brand {
  letter-spacing: -0.5px !important;
  gap: 0 !important;
  font-weight: 800 !important;
}
.ch-tb-brand > span,
.ch-top-bar .ch-tb-brand > span {
  margin: 0 !important;
  padding: 0 !important;
}

/* 3. Sous-titre du hero plus serré pour meilleure répartition */
.cdv-hero .lead, .cdv-hero p, section.cdv-hero p {
  max-width: 640px !important;
  margin: 0 auto !important;
  text-align: center !important;
  line-height: 1.55 !important;
}

/* 4. CTAs hero PLUS VISIBLES - boutons solides avec ombres */
.cdv-hero-cta {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  justify-content: center !important;
  margin-top: 36px !important;
}
.cdv-hero-cta a, .cdv-hero-cta button,
section.cdv-hero .cdv-btn:not(.cdv-btn-primary) {
  background: rgba(255,255,255,0.18) !important;
  color: white !important;
  border: 1.5px solid rgba(255,255,255,0.38) !important;
  font-weight: 600 !important;
  font-size: 0.95rem !important;
  padding: 12px 22px !important;
  border-radius: 999px !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  box-shadow: 0 4px 14px rgba(0,0,0,0.25) !important;
  transition: all 200ms ease !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
}
.cdv-hero-cta a:hover, .cdv-hero-cta button:hover {
  background:#132743 !important;
  color: #DC2626 !important;
  border-color: white !important;
  transform: translateY(-2px) !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.35) !important;
}

/* CTA primary "J'ai été volé(e)" - rouge alarme bien visible */
.cdv-hero-cta a.primary, .cdv-hero-cta a[href*="signaler"],
.cdv-hero-cta > a:first-child, .cdv-hero-cta > button:first-child {
  background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%) !important;
  border-color: transparent !important;
  box-shadow: 0 6px 18px rgba(220,38,38,0.55) !important;
  color: white !important;
}
.cdv-hero-cta a.primary:hover, .cdv-hero-cta a[href*="signaler"]:hover,
.cdv-hero-cta > a:first-child:hover {
  background: linear-gradient(135deg, var(--primary), var(--primary-dark)) !important;
  color: white !important;
  border-color: transparent !important;
  box-shadow: 0 10px 28px rgba(220,38,38,0.7) !important;
  transform: translateY(-2px) !important;
}

/* === FIN V7 === */


/* === FIX V8 — CTAs propres + Connexion CDV supprimé + texte hero === */

/* 1. Supprimer Connexion DANS cdv-header (le top-bar hub garde le sien) */
.cdv-header .cdv-cta,
header.cdv-header .cdv-cta,
.cdv-header button.cdv-cta {
  display: none !important;
}

/* 2. CTAs hero centrés sur 2 lignes propres : 3 primary | 4 ghost */
.cdv-hero-cta {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  justify-content: center !important;
  align-items: center !important;
  margin: 36px auto 0 !important;
  max-width: 760px !important;
}

/* Force order: primary first, ghost after */
.cdv-hero-cta .cdv-btn-primary { order: 1 !important; }
.cdv-hero-cta .cdv-btn-ghost { order: 5 !important; }

/* Insert a flex line-break between primary and ghost */
.cdv-hero-cta::after {
  content: '';
  flex-basis: 100%;
  height: 0;
  width: 100%;
  order: 4;
}

/* 3. Texte hero — meilleure répartition */
.cdv-hero p, .cdv-hero .lead, section.cdv-hero p, section.cdv-hero .lead {
  max-width: 580px !important;
  margin: 0 auto !important;
  text-align: center !important;
  text-wrap: balance !important;
  line-height: 1.6 !important;
}

/* === FIN V8 === */


/* === FIX V9 — Centrage des grids et navs === */

/* 1. Nav CDV centrée */
.cdv-nav {
  justify-content: center !important;
}

/* 2. Stats grid centrée */
.db-w, .cdv-stats, [class*="stats-grid"], [class*="stat-grid"],
section .stats, main > .stats, section[class*="stat"] > div {
  justify-content: center !important;
  justify-items: center !important;
}

/* 3. Catégories grid centrées */
.cdv-cat-grid, [class*="cat-grid"], [class*="category-grid"] {
  justify-content: center !important;
  justify-items: center !important;
}

/* 4. Écosystème links centrés (la 4-col grid sans class) */
section h2 + div[style*="grid"],
section:has(> h2) > div:has(> div),
.cdv-eco-grid, [class*="eco-grid"], [class*="ecosystem"] {
  justify-content: center !important;
  justify-items: center !important;
}

/* Generic: tout grid avec moins d'enfants que de colonnes - centrer */
main > section > div[class*="grid"],
section > div[class*="grid"],
.cdv-container [class*="grid"] {
  justify-content: center !important;
}

/* === FIN V9 === */


/* === FIX V10 — Supprimer PROF, bandeau live, bouton Héros === */

/* 1. Supprimer le lien PROF dans la barre Cale Do Hub */
.ch-top-bar a.ch-tb-link[href*="caledoprof"],
.ch-top-bar a[href*="caledoprof"] {
  display: none !important;
}

/* 2. Supprimer le bandeau jaune "Plateforme communautaire... Données live" */
body > div:not([id]):not([class]),
body > div.cdv-banner,
body > div[class=""][id=""] {
  display: none !important;
}

/* 3. Supprimer le bouton Héros dans les CTAs hero */
.cdv-hero-cta a[href*="heros"],
.cdv-hero-cta a[href="/heros.html"] {
  display: none !important;
}

/* === FIN V10 === */


/* === FIX V10b — Spécificité renforcée === */

/* Héros dans CTAs - sélecteur plus spécifique */
section.cdv-hero .cdv-hero-cta a[href*="heros"],
section.cdv-hero .cdv-hero-cta a[href="/heros.html"],
.cdv-hero .cdv-hero-cta a.cdv-btn[href*="heros"] {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
}

/* Bandeau "Plateforme communautaire... Données live" - sélecteur élargi */
body > div:not([id]):not([class]):not(.cdv-container):not(.cdv-header):not(.cdv-hero),
div.cdv-banner,
[class*="banner-live"], [class*="live-banner"] {
  display: none !important;
}

/* Cibler le bandeau par son contenu si possible */
.cdv-stats-banner, .cdv-data-banner {
  display: none !important;
}

/* === FIN V10b === */




/* === FIX V11 (corrigé) — PWA banner masqué + stats sur 1 ligne === */

/* PWA banner masqué */
#cdv-pwa-banner, .cdv-pwa-banner, [class*="pwa-banner"] {
  display: none !important;
}

/* Stats: laissez le grid d'origine mais mettez tous les enfants en flow direct */
.cdv-stats {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 14px !important;
  justify-content: center !important;
  max-width: 1280px !important;
  margin: 24px auto !important;
  padding: 0 24px !important;
}
.cdv-stats > * {
  flex: 1 1 160px !important;
  min-width: 140px !important;
  max-width: 220px !important;
}

/* Si un enfant contient lui-même un sub-grid de stats - le déplier */
.cdv-stats > div[style*="grid"],
.cdv-stats > div:has(> .stat-card),
.cdv-stats > div:has(> div > .num) {
  display: contents !important;
}

/* Stat cards - même apparence pour tous */
.cdv-stats .stat-card,
.cdv-stats > div:not(:has(> div)),
.cdv-stats > [class*="stat"] {
  background:#132743 !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 14px !important;
  padding: 18px 12px !important;
  text-align: center !important;
  box-shadow: 0 1px 3px rgba(15,23,42,.06) !important;
}
.cdv-stats .num {
  font-size: 2rem !important;
  font-weight: 800 !important;
  color: #DC2626 !important;
  display: block !important;
  margin-bottom: 4px !important;
}

@media (max-width: 768px) {
  .cdv-stats > * {
    flex: 1 1 calc(50% - 14px) !important;
    max-width: none !important;
  }
}

/* === FIN V11 === */


/* === FIX V12 — Déplie la stat-card imbriquée === */

/* Toute card qui contient elle-même d'autres cards = on la déplie */
.cdv-stats > .cdv-stat-card:has(> .cdv-stat-card) {
  display: contents !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
}

/* === FIN V12 === */


/* === FIX V13 — Décaler le bouton + au-dessus du cookie banner === */

/* Décaler le dock + et autres FAB pour ne pas chevaucher le cookie banner */
.cdg-dock,
body > .cdg-dock {
  bottom: 95px !important;
  z-index: 9990 !important;
}

/* Colonne bas-droite : chat + (heatmap sur carte). Langue, toggle nuit, banniere alertes, onboarding = retires. */
#cdv-theme-fab, body > #cdv-theme-fab,
#cdv-lang-fab, body > #cdv-lang-fab,
#cdv-push-banner, body > #cdv-push-banner,
#cdv-onboard, body > #cdv-onboard { display: none !important; }
#cdv-chat-fab, body > #cdv-chat-fab { right: 14px !important; bottom: 16px !important; z-index: 9990 !important; }
#cdv-predict-toggle, body > #cdv-predict-toggle { right: 14px !important; bottom: 74px !important; z-index: 9990 !important; }

/* Footer compact : la description ne prend que 2 colonnes -> un groupe de liens remonte a cote, on supprime une rangee */
.cdv-footer-grid > :first-child { grid-column: span 2 !important; }
.cdv-footer-grid { row-gap: 16px !important; }
/* Logo CaleDoAlerte : bleu radar (--primary vaut rouge en legacy, on force) */
.cdv-logo-icon, .cdv-header .cdv-logo .cdv-logo-icon { background: linear-gradient(135deg, #2f6df6, #1e3a8a) !important; }
/* === FIN V13 === */


/* === FIX V14 — Uniformiser cellules catégories === */
.cdv-cat-grid {
  align-items: stretch !important;
  grid-auto-rows: 1fr !important;
}
.cdv-cat-grid > * {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 180px !important;
  height: 100% !important;
  padding: 24px 16px !important;
  text-align: center !important;
  gap: 10px !important;
  border-radius: 16px !important;
  border: 2px solid rgba(255,255,255,.12) !important;
  background:#132743 !important;
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease !important;
  cursor: pointer !important;
}
.cdv-cat-grid > *:hover {
  transform: translateY(-3px) !important;
  box-shadow: 0 12px 28px rgba(15,23,42,.12) !important;
  border-color: #DC2626 !important;
}
.cdv-cat-grid h3, .cdv-cat-grid strong {
  font-weight: 700 !important;
  font-size: 0.95rem !important;
  color:#eaf2ff !important;
  line-height: 1.3 !important;
}
.cdv-cat-grid small, .cdv-cat-grid p {
  font-size: 0.78rem !important;
  color:#8aa2c8 !important;
}
/* === FIN V14 === */


/* === FIX V16 — Width 100% sur cellules + Loader === */

/* Cellules catégories : remplir toute la cellule de grid */
.cdv-cat-grid .cdv-cat-card,
.cdv-cat-grid > * {
  width: 100% !important;
  box-sizing: border-box !important;
}




/* === FIX V17 — Simplifier le dock : SOS + Assistant IA === */
.cdg-dock [data-cdg-key="switch language"],
.cdg-dock [data-cdg-key="basculer thème clair/sombre"] {
  display: none !important;
}
.cdg-dock [data-cdg-key="🚨"] > span:last-child {
  font-size: 0 !important;
  position: relative !important;
}
.cdg-dock [data-cdg-key="🚨"] > span:last-child::after {
  content: "SOS Urgence" !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  letter-spacing: 0.5px !important;
}
.cdg-dock [data-cdg-key="assistant caledovol"] .cdg-dock-item-icon {
  font-size: 0 !important;
}
.cdg-dock [data-cdg-key="assistant caledovol"] .cdg-dock-item-icon::after {
  content: "🤖" !important;
  font-size: 1.25rem !important;
}
.cdg-dock [data-cdg-key="assistant caledovol"] > span:last-child {
  font-size: 0 !important;
  position: relative !important;
}
.cdg-dock [data-cdg-key="assistant caledovol"] > span:last-child::after {
  content: "Assistant IA" !important;
  font-size: 14px !important;
  font-weight: 600 !important;
}
/* === FIN V17 === */


/* === FIX V18 — Nettoyer la barre de recherche === */
.cdv-search-bar, form.cdv-search-bar {
  background:#132743 !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 999px !important;
  overflow: hidden !important;
  box-shadow: 0 12px 32px -10px rgba(0,0,0,.25) !important;
  display: flex !important;
  align-items: center !important;
  padding: 0 !important;
  max-width: 600px !important;
  margin: 0 auto !important;
}
.cdv-search-bar input,
.cdv-search-bar input[type="search"],
.cdv-search-bar input[type="text"] {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 14px 22px !important;
  font-size: 1rem !important;
  flex: 1 !important;
  min-width: 0 !important;
  color:#eaf2ff !important;
}
.cdv-search-bar input:focus {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: none !important;
}
.cdv-search-bar button,
.cdv-search-bar button[type="submit"] {
  background: linear-gradient(135deg, #1565c0 0%, #0d47a1 100%) !important;
  color: white !important;
  border: 0 !important;
  border-radius: 999px !important;
  padding: 12px 24px !important;
  font-weight: 700 !important;
  font-size: 0.95rem !important;
  margin: 4px !important;
  cursor: pointer !important;
  white-space: nowrap !important;
}
.cdv-search-bar button:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 6px 18px rgba(14,116,144,.4) !important;
}
/* === FIN V18 === */


/* === FIX V19 — Gestion des espaces hero CTAs ↔ search === */

/* Plus d'espace entre les CTAs et la search bar */
.cdv-hero-cta {
  margin: 36px auto 0 !important;
  padding-bottom: 8px !important;
}

/* Search bar : grosse marge supérieure pour bien séparer des CTAs */
.cdv-hero .cdv-search-bar,
.cdv-hero form.cdv-search-bar,
section.cdv-hero .cdv-search-bar {
  margin: 24px auto 0 !important;
}

/* Le bouton Héros caché : retirer complètement du flow flex */
section.cdv-hero .cdv-hero-cta a[href*="heros"],
.cdv-hero-cta a[href*="heros"] {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  position: absolute !important;
  pointer-events: none !important;
}

/* Le pseudo ::after qui force le break - pas de hauteur */
.cdv-hero-cta::after {
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

/* === FIN V19 === */


/* === FIX V20 — Supprimer barre blanche top + bouton + violet === */

/* 1. Supprimer le padding-top du body qui crée la bande blanche */
body, html body {
  padding-top: 0 !important;
}

/* 2. Cacher le bouton "+" violet (toggle du dock) */
.cdg-dock-toggle,
.cdg-dock .cdg-dock-toggle,
button.cdg-dock-toggle {
  display: none !important;
}

/* 3. Forcer les 2 items (Assistant IA + SOS) à être TOUJOURS visibles, en flottant */
.cdg-dock .cdg-dock-items {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  pointer-events: auto !important;
}

.cdg-dock .cdg-dock-item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 10px 16px !important;
  background:#132743 !important;
  color:#eaf2ff !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 999px !important;
  box-shadow: 0 4px 14px rgba(0,0,0,0.12) !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  transition: transform 150ms ease, box-shadow 150ms ease !important;
  opacity: 1 !important;
  visibility: visible !important;
}

.cdg-dock .cdg-dock-item:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 8px 20px rgba(0,0,0,0.18) !important;
}

/* === FIN V20 === */


/* === FIX V21 — Forcer les 2 boutons dock visibles === */

/* Forcer le dock à avoir une hauteur naturelle */
.cdg-dock,
body > .cdg-dock {
  height: auto !important;
  min-height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}

/* Items wrapper : hauteur auto, pas de max-height bloquant */
.cdg-dock .cdg-dock-items {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  height: auto !important;
  min-height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  pointer-events: auto !important;
  padding: 0 !important;
}

/* Chaque item : taille fixe et toujours visible */
.cdg-dock .cdg-dock-item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 11px 18px !important;
  background:#132743 !important;
  color:#eaf2ff !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 999px !important;
  box-shadow: 0 6px 18px rgba(0,0,0,0.16) !important;
  font-weight: 600 !important;
  font-size: 0.95rem !important;
  cursor: pointer !important;
  transition: transform 150ms ease, box-shadow 150ms ease !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  height: auto !important;
  min-height: 44px !important;
  width: auto !important;
  white-space: nowrap !important;
}

.cdg-dock .cdg-dock-item:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 10px 24px rgba(0,0,0,0.22) !important;
}

/* Force le dock à être en mode "open" via override */
.cdg-dock:not(.cdg-open) .cdg-dock-items,
.cdg-dock .cdg-dock-items {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  pointer-events: auto !important;
  display: flex !important;
}

/* === FIN V21 === */


/* === FIX V22 — Re-cacher langue et thème (V21 les avait montrés) === */

/* Cacher fermement langue et thème, peu importe les autres règles */
.cdg-dock .cdg-dock-item[data-cdg-key="switch language"],
.cdg-dock .cdg-dock-item[data-cdg-key="basculer thème clair/sombre"],
.cdg-dock-items .cdg-dock-item[data-cdg-key="switch language"],
.cdg-dock-items .cdg-dock-item[data-cdg-key="basculer thème clair/sombre"] {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  position: absolute !important;
  pointer-events: none !important;
  opacity: 0 !important;
}

/* === FIN V22 === */


/* === FIX V23 — Tuer la barre blanche du body === */
html.ch-bar-active body,
html body.ch-bar-active,
html body, body {
  padding-top: 0 !important;
  padding: 0 !important;
}
:root { --ch-bar-h: 0px !important; }
/* === FIN V23 === */


/* === FIX V24 — Anti-collapse ch-top-bar (hauteur naturelle forcée) === */
html body > .ch-top-bar,
html body > header.ch-top-bar,
html.ch-bar-active body > .ch-top-bar,
html.ch-bar-active body > header.ch-top-bar {
  height: auto !important;
  min-height: 44px !important;
  max-height: none !important;
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
  display: flex !important;
  align-items: center !important;
  overflow: visible !important;
  box-sizing: border-box !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 1100 !important;
  background: var(--ch-bar-bg, #0F1B33) !important;
  width: 100% !important;
}
html body > .ch-top-bar > .ch-tb-inner,
html body > header.ch-top-bar > .ch-tb-inner {
  width: 100% !important;
  min-height: 44px !important;
  height: 44px !important;
  display: flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  padding: 0 12px !important;
}
html body > .cdv-header,
html body > header.cdv-header {
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  height: auto !important;
  min-height: 44px !important;
  overflow: visible !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 1090 !important;
}
/* Anti-blanc résiduel : pseudo-éléments fantômes */
html::before, html::after,
body::before, body::after {
  content: none !important;
  display: none !important;
  height: 0 !important;
  background: transparent !important;
}
/* Body flex column ne doit pas écraser les enfants en hauteur */
html.ch-bar-active body,
html body {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  min-height: 100vh !important;
  padding-top: 0 !important;
  margin: 0 !important;
}
/* Le main content prend l'espace restant */
html body > main,
html body > .main-content,
html body > #app {
  flex: 1 1 auto !important;
  min-height: 0 !important;
}

/* cdv-a11y-global : focus visible + reduced-motion pour tout le chrome (haut de gamme + WCAG) */
a:focus-visible,button:focus-visible,.cdv-nav a:focus-visible,.cdv-burger:focus-visible,.cdv-btn:focus-visible,.cdv-user-chip:focus-visible,[role=button]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #7fc0ff!important;outline-offset:2px;border-radius:6px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
/* cdv-a11y-global-end */

/* cdv-footer-compact */
.cdv-footer{padding:16px 0 14px!important;margin-top:24px!important;font-size:13px}
.cdv-footer li{margin-bottom:1px!important}
.cdv-footer h4{margin:0 0 5px!important;font-size:12.5px}
.cdv-footer a{line-height:1.35}

/* Un seul chat flottant : la messagerie DM est accessible via la cloche (inbox unifie) + mon-espace ; on masque sa bulle redondante */
#cdv-dm-fab{display:none!important}

/* cdv-touch-action : desactive le zoom double-tap tactile sur les controles (bug "clic qui grossit la page") */
summary,button,a,label,[role=button],.cdv-btn,.cdv-nav a,.cdv-burger,details summary{touch-action:manipulation}

/* footer : largeur propre et CONSTANTE, independante du .cdv-container variable de chaque page (fix footers differents selon pages) */
.cdv-footer .cdv-container{max-width:1120px!important;margin:0 auto;padding:0 22px}
.cdv-footer-grid>div{min-width:0}

/* FAB hub redondants (caledohub-bundle, 5 pages) : toggle dark inutile sur site navy + lanceur ecosysteme deja dans le footer -> masques pour eviter la pile bas-droite et harmoniser toutes les pages */
#ch-dm-toggle,#cdhHubLauncher{display:none!important}

/* bouton favori (fiche) : le remonter au-dessus du chat pour eviter le chevauchement bas-droite */
#cdh-fav-btn{right:14px!important;bottom:76px!important}



/* ===== Cartes annonce v2 — tournoi design 21/07 (disque categorie premium) ===== */
/* ==========================================================================
   CaleDoAlerte · Carte "annonce" — FINAL (Disque catégorie premium + greffes éditoriales)
   Drop-in : classes existantes conservées, appendé EN DERNIER.
   Bat le bloat via !important ciblés (notamment padding:20px parasite).
   Requiert markup : style="--cat:${c.color}" sur .cdv-vol-card (hérite partout)
                     + emoji enveloppé : <span class="cdv-vol-ico">${c.icon}</span>
   100% CSS/HTML inline, zéro ressource externe (CSP stricte OK).
   ========================================================================== */

/* --- Grille : rythme homogène cartes avec/sans photo --- */
.cdv-vol-grid{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr)) !important;
  gap:18px !important;
}

/* --- CARTE : coque navy premium, flush restauré, --cat propagé par héritage --- */
.cdv-vol-card{
  --cat:#3b99f6;                                   /* fallback si catégorie sans couleur */
  position:relative !important;
  padding:0 !important;                            /* tue le padding:20px !important parasite */
  margin:0 !important;
  display:flex !important; flex-direction:column !important;
  background:
    linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0) 120px),
    #132743 !important;
  border:1px solid rgba(255,255,255,.10) !important;
  border-radius:16px !important;
  overflow:hidden !important;
  text-decoration:none !important;
  color:#eaf2ff !important;
  isolation:isolate;
  box-shadow:0 1px 2px rgba(0,0,0,.35);
  transition:transform .24s cubic-bezier(.2,.7,.3,1),
             box-shadow .24s ease, border-color .24s ease;
}
/* Barre d'accent supérieure teintée catégorie (enrichit AUSSI les cartes photo) */
.cdv-vol-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px; z-index:5;
  background:linear-gradient(90deg,
    var(--cat), color-mix(in srgb, var(--cat) 32%, transparent));
}
.cdv-vol-card:hover{
  transform:translateY(-4px);
  border-color:color-mix(in srgb, var(--cat) 50%, rgba(255,255,255,.10)) !important;
  box-shadow:
    0 18px 40px -16px rgba(0,0,0,.66),
    0 10px 30px -14px color-mix(in srgb, var(--cat) 52%, transparent);
}
.cdv-vol-card:focus-visible{
  outline:2px solid color-mix(in srgb, var(--cat) 70%, #fff);
  outline-offset:2px;
}

/* --- Zone média 4/3 (commune) --- */
.cdv-vol-photo{
  aspect-ratio:4/3 !important;
  position:relative !important;
  overflow:hidden !important;
  margin:0 !important;
  background:linear-gradient(135deg,#16294b,#0f2038) !important;
}
.cdv-vol-photo img{
  width:100% !important; height:100% !important;
  object-fit:cover !important; display:block;
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.cdv-vol-card:hover .cdv-vol-photo img{ transform:scale(1.05); }

/* ==========================================================================
   ÉTAT SANS PHOTO — la pièce maîtresse : médaillon fini, jamais "image cassée"
   ========================================================================== */
.cdv-vol-photo-empty{
  position:absolute !important; inset:0 !important;
  display:flex !important; flex-direction:column;
  align-items:center; justify-content:center;
  gap:11px;
  opacity:1 !important;                            /* annule l'opacity:.35 amateur */
  font-size:38px !important;                          /* neutralise le 48px hérité (emoji = dans .cdv-vol-ico) */
  background:                                      /* fallback plein avant color-mix */
    linear-gradient(160deg,#172c4f,#0f2038);
  background:
    radial-gradient(120% 90% at 50% 34%,
      color-mix(in srgb, var(--cat) 26%, transparent), transparent 68%),
    linear-gradient(160deg,#172c4f,#0f2038);
}
/* Texture pointillée discrète, fondue au centre → profondeur premium */
.cdv-vol-photo-empty::before{
  content:""; position:absolute; inset:0; z-index:0;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px, transparent 1.4px);
  background-size:14px 14px;
  -webkit-mask-image:radial-gradient(72% 62% at 50% 40%, #000, transparent 78%);
          mask-image:radial-gradient(72% 62% at 50% 40%, #000, transparent 78%);
  pointer-events:none;
}
/* Disque coloré catégorie + halo concentrique + grande icône nette */
.cdv-vol-ico{
  position:relative; z-index:1;
  width:78px; height:78px;
  display:flex; align-items:center; justify-content:center;
  font-size:36px !important; line-height:1;
  border-radius:50%;
  background:radial-gradient(circle at 50% 38%, #26426f, #152a4c);                    /* fallback */
  background:radial-gradient(circle at 50% 38%,
             color-mix(in srgb, var(--cat) 52%, #0f2038),
             color-mix(in srgb, var(--cat) 20%, #0f2038));
  border:1px solid rgba(255,255,255,.16);                                             /* fallback */
  border:1px solid color-mix(in srgb, var(--cat) 62%, transparent);
  box-shadow:0 8px 22px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.18);         /* fallback */
  box-shadow:
    0 0 0 6px color-mix(in srgb, var(--cat) 12%, transparent),
    0 8px 22px rgba(0,0,0,.35),
    inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .22s ease, box-shadow .22s ease;
}
.cdv-vol-card:hover .cdv-vol-ico{
  transform:translateY(-1px) scale(1.04);
  box-shadow:
    0 0 0 9px color-mix(in srgb, var(--cat) 17%, transparent),
    0 12px 28px rgba(0,0,0,.44),
    inset 0 1px 0 rgba(255,255,255,.22);
}
/* Micro-label : assume l'absence de photo comme un choix (pur CSS, aucun markup) */
.cdv-vol-photo-empty::after{
  content:"Pas de photo";
  position:relative; z-index:1;
  font-size:10.5px; font-weight:600; letter-spacing:.07em;
  text-transform:uppercase; color:#8aa6cf; opacity:.9;
}

/* ==========================================================================
   BADGES média — contraste renforcé (tiennent sur photo ET sur fond teinté)
   ========================================================================== */
.cdv-vol-status{
  position:absolute !important; top:11px; left:11px; z-index:3;
  display:inline-flex; align-items:center; gap:5px;
  padding:5px 11px !important;
  background:rgba(8,15,28,.82) !important;
  -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px);
  color:#fff !important;
  border:1px solid rgba(255,255,255,.16) !important;
  border-radius:999px !important;
  font-size:11px !important; font-weight:700 !important; line-height:1; letter-spacing:.01em;
  box-shadow:0 2px 8px rgba(0,0,0,.38);
}
.cdv-vol-cat{
  position:absolute !important; top:11px; right:11px; z-index:3;
  display:inline-flex; align-items:center;
  max-width:62%;
  padding:5px 9px 5px 8px !important;
  background:rgba(255,255,255,.97) !important;
  color:#0a1424 !important;
  border-radius:8px !important;
  border-left:3px solid var(--cat) !important;
  font-size:11px !important; font-weight:700 !important; line-height:1; letter-spacing:.005em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  box-shadow:0 2px 8px rgba(0,0,0,.32);
}

/* ==========================================================================
   CORPS — info-first, scannable
   ========================================================================== */
.cdv-vol-body{
  padding:14px 16px 15px !important;
  flex:1 !important; display:flex !important; flex-direction:column !important;
  background:#132743;
}
/* Ligne badges type (Volé / Perdu / Trouvé + Exemple) */
.cdv-vol-body > div:first-child{
  display:flex; flex-wrap:wrap; gap:6px; margin-bottom:9px;
}
.cdv-kind-badge{
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 9px; border-radius:999px;
  font-size:11.5px; font-weight:700; line-height:1;
  background:rgba(59,153,246,.14); color:#bcd6ff;
  border:1px solid rgba(59,153,246,.30);
}
/* Variantes optionnelles si data-kind présent sur le badge */
.cdv-kind-badge[data-kind="vole"]{   background:rgba(255,90,90,.15);  color:#ffb4b4; border-color:rgba(255,90,90,.38); }
.cdv-kind-badge[data-kind="perdu"]{  background:rgba(245,196,81,.15); color:#f7d789; border-color:rgba(245,196,81,.38); }
.cdv-kind-badge[data-kind="trouve"]{ background:rgba(52,211,153,.15); color:#8ff0cc; border-color:rgba(52,211,153,.38); }
.cdv-kind-badge[data-kind="demo"]{   background:rgba(111,136,176,.16);color:#aabfe0; border-color:rgba(111,136,176,.34); }

/* Titre : priorité n°1, clampé 2 lignes */
.cdv-vol-title{
  font-size:16px !important; font-weight:700 !important;
  line-height:1.28 !important; letter-spacing:-.012em !important;
  margin:0 0 8px !important; color:#eaf2ff !important;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
/* Identifiant : pastille monospace élégante pointée par la catégorie (greffe D3) */
.cdv-vol-id{
  display:inline-flex !important; align-items:center; gap:7px;
  width:fit-content; max-width:100%;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace !important;
  font-size:12.5px !important; font-weight:700 !important; letter-spacing:.03em !important;
  color:#dbe8fc !important;
  background:color-mix(in srgb, var(--cat) 13%, #0e1f3a) !important;
  border:1px solid color-mix(in srgb, var(--cat) 32%, rgba(255,255,255,.08)) !important;
  padding:4px 10px !important; border-radius:8px !important;
  margin:0 0 10px !important;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.cdv-vol-id::before{
  content:""; flex:0 0 auto;
  width:6px; height:6px; border-radius:50%;
  background:var(--cat);
  box-shadow:0 0 8px color-mix(in srgb, var(--cat) 80%, transparent);
}
/* Méta : discrète, ancrée en bas, filet fin teinté */
.cdv-vol-meta{
  font-size:12.5px !important; color:#8fa8cf !important;
  display:flex; flex-wrap:wrap; gap:6px 12px;
  margin-top:auto !important; padding-top:11px !important;
  border-top:1px solid color-mix(in srgb, var(--cat) 12%, rgba(255,255,255,.09)) !important;
}

/* Accessibilité : mouvement réduit */
@media (prefers-reduced-motion:reduce){
  .cdv-vol-card, .cdv-vol-photo img, .cdv-vol-ico{ transition:none !important; }
  .cdv-vol-card:hover{ transform:none; }
  .cdv-vol-card:hover .cdv-vol-photo img{ transform:none; }
  .cdv-vol-card:hover .cdv-vol-ico{ transform:none; }
}

/* garde-fou anti-chevauchement des pastilles de carte (statut a gauche, categorie a droite) */
.cdv-vol-status{max-width:52% !important;overflow:hidden !important;text-overflow:ellipsis !important;white-space:nowrap !important}
.cdv-vol-cat{max-width:44% !important;overflow:hidden !important;text-overflow:ellipsis !important;white-space:nowrap !important}

/* === Absorbé de caledohub-design.css (V4b 24/07) : seules règles vives, en littéraux === */
::selection{background:#06D6A0;color:#0A0E1A}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:#F8FAFC}
::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:5px}
::-webkit-scrollbar-thumb:hover{background:#94A3B8}

/* ═══════════════════════════════════════════════════════════════════════════════════════
   COUPURES DE LIGNE · 03/08/2026
   ═══════════════════════════════════════════════════════════════════════════════════════
   Kurt : « retour a la ligne stp […] que ce soit propre a lire ».
   Le titre d accueil se coupait apres « , en », laissant « Nouvelle-Caledonie » seul sur la
   seconde ligne, et une premiere ligne beaucoup plus longue que la seconde.

   Mesure a 1310 px de large, part de la DERNIERE ligne par rapport a la largeur du bloc :
     « Ce qui se passe pres de chez vous, en… »  55 %  ->  90 %
     « Derniers besoins de la communaute »        5 %   (un seul mot sur la 2e ligne)
     « Derniers vols signales »                   8 %
     « L ecosysteme CaleDoHub »                   4 %

   `text-wrap:balance` demande au navigateur de repartir le texte pour que les lignes aient
   des longueurs proches, au lieu de remplir la premiere et de laisser tomber le reste. Il
   ne s applique qu aux blocs courts (quelques lignes), ce qui en fait exactement l outil des
   titres, sans cout de calcul sur les paragraphes longs.

   `text-wrap:pretty` sur le texte courant traite le probleme voisin : le mot solitaire en
   fin de paragraphe, que les typographes appellent une ligne veuve.

   ⚠️ Les deux sont ignores en silence par un navigateur qui ne les connait pas : le texte
   se coupe alors comme avant, jamais moins bien. Aucun repli a prevoir.
   ⛔ On ne touche PAS au texte lui-meme : pas d espaces insecables glissees a la main dans le
   HTML. Une correction typographique appliquee au contenu se propage mal et se perd au
   premier reenregistrement ; la mise en forme, elle, appartient a la feuille de style.
   ═══════════════════════════════════════════════════════════════════════════════════════ */
h1,h2,h3,h4,.hero h1,.pd-hero h1{text-wrap:balance}
p,li,figcaption,.cdv-bes-sub,.pd-tag,summary{text-wrap:pretty}

/* Les libelles courts qui ne doivent jamais se couper en deux : une date, un nombre suivi de
   son unite, un badge. Une coupure y est toujours une faute de lecture. */
.eti,.fia,.dem,.badge,.pill,time,.cdv-bes-m>span{white-space:nowrap}


/* ═══════════════════════════════════════════════════════════════════════════════════════
   THEME CLAIR · 03/08/2026 au soir · decision de Kurt : clair par defaut, navy au bouton
   ═══════════════════════════════════════════════════════════════════════════════════════
   🔴 CE QUI A ETE MESURE AVANT D ECRIRE CE BLOC
   `main.css` n avait AUCUN theme clair. Son `:root` de la ligne 28 EST la charte sombre
   (`--bg:#0a1424`, `--text:#eaf2ff`), et le bloc de la ligne 860 la repose en
   `!important`. Le selecteur `[data-theme="dark"]` de la ligne 832 ne faisait que
   reappliquer les memes valeurs : ces 52 pages etaient sombres dans LES DEUX themes.

   🔑 CE BLOC EST GENERE, PAS ECRIT A LA MAIN
   Produit en relisant les regles du fichier et en emettant la contrepartie claire de
   celles qui posent une couleur de charte en dur.

   ⛔ RIEN N EST RETIRE. Tout est AJOUTE sous `html[data-theme="light"]` : en sombre,
   `main.css` est joue exactement comme avant.

   ⛔ ENCRE ET FOND SONT TRAITES SEPAREMENT. Une meme couleur ne veut pas dire la meme
   chose selon la propriete : `.cdv-skip{background:#fff;color:#0a1424}` est de l encre
   sombre sur du blanc. La traiter comme un fond la passait a `#ffffff`, et le lien
   « Aller au contenu » disparaissait.

   La palette claire vient de `css/cda-socle.css`, deja validee a l ecran sur l accueil.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

html[data-theme="light"],html[data-theme="clair"]{
  --bg:#ffffff !important; --surface:#f7f9fc !important; --surface-2:#eef3fa !important;
  --text:#0d1b2a !important; --text-muted:#5a6b80 !important;
  --border:rgba(13,27,42,.12) !important; --border-strong:rgba(13,27,42,.20) !important;
}
html[data-theme="light"]{background:#ffffff !important}
html[data-theme="light"] body{background:#ffffff !important;color:#0d1b2a !important}

html[data-theme="light"]{--primary:#1565c0 !important;--accent:#1565c0 !important;--bg:#ffffff !important;--surface:#f7f9fc !important;--text:#0d1b2a !important;--text-muted:#5a6b80 !important;--success:#067a55 !important;--warn:#8a6100 !important;--danger:#c62828 !important}
html[data-theme="light"] .cdv-nav a:hover{background:#eef3fa !important}
html[data-theme="light"] .cdv-user-chip{background:#eef3fa !important}
html[data-theme="light"] .cdv-user-chip:hover{background:rgba(13,27,42,.06) !important}
html[data-theme="light"] .cdv-btn-ghost{background:#f7f9fc !important}
html[data-theme="light"] .cdv-search-bar{background:#f7f9fc !important}
html[data-theme="light"] .cdv-vol-photo{background:linear-gradient(135deg,#eef3fa,#f7f9fc) !important}
html[data-theme="light"] .cdv-vol-status{color:#0d1b2a !important}
html[data-theme="light"] .cdv-input,html[data-theme="light"] .cdv-textarea,html[data-theme="light"] .cdv-select{background:#f7f9fc !important}
html[data-theme="light"] .cdv-step{background:#eef3fa !important}
html[data-theme="light"] .cdv-step-num{background:rgba(13,27,42,.06) !important}
html[data-theme="light"] .cdv-photo-tile,html[data-theme="light"] .cdv-photo-add{background:#eef3fa !important}
html[data-theme="light"] .cdv-fiche-photos .main{background:#eef3fa !important}
html[data-theme="light"] .cdv-fiche-photos .thumb{background:#eef3fa !important}
html[data-theme="light"] .cdv-share-btn{background:#f7f9fc !important}
html[data-theme="light"] .cdv-share-btn:hover{background:#eef3fa !important}
html[data-theme="light"] .cdv-badge{background:#eef3fa !important}
html[data-theme="light"] .cdv-badge.recherche{color:#a33a3a !important}
html[data-theme="light"] .cdv-badge.apercu{color:#8a6100 !important}
html[data-theme="light"] .cdv-badge.retrouve{color:#067a55 !important}
html[data-theme="light"] .cdv-badge.archive{background:rgba(13,27,42,.06) !important}
html[data-theme="light"] .cdv-emergency-tile{background:#f7f9fc !important}
html[data-theme="light"] .cdv-modal-inner{background:#f7f9fc !important}
html[data-theme="light"] .cdv-modal-close{background:#eef3fa !important}
html[data-theme="light"] .cdv-kind-tabs{background:#eef3fa !important}
html[data-theme="light"] .cdv-kind-badge.vole{color:#a33a3a !important}
html[data-theme="light"] .cdv-kind-badge.trouve{color:#067a55 !important}
html[data-theme="light"] .cdv-badge.attente-proprio{color:#067a55 !important}
html[data-theme="light"] .cdv-badge.rendu{color:#067a55 !important}
html[data-theme="light"] .cdv-kind-badge.perdu{color:#8a6100 !important}
html[data-theme="light"]{--brand:#1565c0 !important;--brand-light:#1565c0 !important;--accent:#c62828 !important;--bg:#ffffff !important;--surface:#f7f9fc !important;--surface-2:#eef3fa !important;--text:#0d1b2a !important;--text-muted:#5a6b80 !important;--success:#067a55 !important;--warn:#8a6100 !important;--danger:#c62828 !important}
html[data-theme="light"] body{background:radial-gradient(66% 46% at 82% -4%,rgba(59,153,246,.22),transparent 60%), radial-gradient(52% 44% at 4% 4%,rgba(255,90,90,.13),transparent 55%), radial-gradient(56% 42% at 50% 106%,rgba(21,101,192,.17),transparent 62%), linear-gradient(160deg,#ffffff,#f7f9fc) fixed !important;color:#0d1b2a !important}
html[data-theme="light"]{background:#ffffff !important}
html[data-theme="light"] .cdv-header,html[data-theme="light"] header.cdv-header{background:linear-gradient(135deg, rgba(255,255,255,.92), rgba(247,249,252,.92)) !important}
html[data-theme="light"] .cdv-header *,html[data-theme="light"] header.cdv-header *,html[data-theme="light"] .cdv-nav a,html[data-theme="light"] .cdv-header a{color:#0d1b2a !important}
html[data-theme="light"] .cdv-nav a:hover{background:rgba(13,27,42,.06) !important}
html[data-theme="light"] .cdv-vol-card,html[data-theme="light"] .cdv-card,html[data-theme="light"] .cdv-blog-card,html[data-theme="light"] .cdv-cat-other-card,html[data-theme="light"] .cdv-cat-stat,html[data-theme="light"] .ad-card,html[data-theme="light"] .pa-card,html[data-theme="light"] .fa-card,html[data-theme="light"] .cp-card,html[data-theme="light"] .ct-card,html[data-theme="light"] .pr-plan,html[data-theme="light"] .am-tier,html[data-theme="light"] .nl-feat,html[data-theme="light"] .ap-value,html[data-theme="light"] .pr-card,html[data-theme="light"] .pr-asset{background:#f7f9fc !important;border:1px solid rgba(13,27,42,.14) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-input,html[data-theme="light"] .cdv-select,html[data-theme="light"] .cdv-textarea,html[data-theme="light"] input[type=text],html[data-theme="light"] input[type=email],html[data-theme="light"] input[type=password],html[data-theme="light"] input[type=number],html[data-theme="light"] input[type=tel],html[data-theme="light"] textarea,html[data-theme="light"] select{background:#ffffff !important;border:1.5px solid rgba(13,27,42,.14) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-input::placeholder,html[data-theme="light"] input::placeholder,html[data-theme="light"] textarea::placeholder{color:#5a6b80 !important}
html[data-theme="light"] #cdv-live-counter{color:#5a6b80 !important}
html[data-theme="light"] .cdv-hero .cdv-badge{border:1px solid rgba(13,27,42,.14) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-hero .cdv-badge,html[data-theme="light"] .cdv-hero .cdv-badge *{color:#0d1b2a !important}
html[data-theme="light"] h1,html[data-theme="light"] h2,html[data-theme="light"] h3,html[data-theme="light"] h4,html[data-theme="light"] h5,html[data-theme="light"] h6{color:#0d1b2a !important}
html[data-theme="light"] h1[data-cdv-title],html[data-theme="light"] .cdv-container h1,html[data-theme="light"] .cdv-container h2,html[data-theme="light"] .cdv-container h3,html[data-theme="light"] main h1,html[data-theme="light"] main h2,html[data-theme="light"] main h3,html[data-theme="light"] section h1,html[data-theme="light"] section h2,html[data-theme="light"] section h3{color:#0d1b2a !important}
html[data-theme="light"] .card,html[data-theme="light"] .cdv-card,html[data-theme="light"] [class*="-card"]:not([class*="hub-card"]){background:#f7f9fc !important}
html[data-theme="light"] input,html[data-theme="light"] select,html[data-theme="light"] textarea{background:#f7f9fc !important}
html[data-theme="light"]{--hub-navy:#f7f9fc !important;--hub-navy-light:#eef3fa !important}
html[data-theme="light"] .cdv-header,html[data-theme="light"] header.cdv-header{background:linear-gradient(135deg, rgba(255,255,255,.92), rgba(247,249,252,.92)) !important;border-bottom:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-nav a:hover{background:rgba(13,27,42,.06) !important;border-color:rgba(13,27,42,.14) !important}
html[data-theme="light"] body{background:linear-gradient(180deg,#ffffff,#ffffff) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-hero,html[data-theme="light"] section.cdv-hero,html[data-theme="light"] .cdv-vol-hero{background:linear-gradient(135deg, #f7f9fc 0%, #dbe7f7 50%, #DC2626 130%) !important}
html[data-theme="light"] .cdv-hero .cdv-badge{background:rgba(13,27,42,.06) !important;border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-hero-cta a{background:rgba(13,27,42,.06) !important;border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-hero input[type="search"],html[data-theme="light"] .cdv-hero input[type="text"],html[data-theme="light"] .cdv-hero .cdv-search-input,html[data-theme="light"] .cdv-vol-hero input{color:#0d1b2a !important}
html[data-theme="light"] .cdv-hero input::placeholder,html[data-theme="light"] .cdv-vol-hero input::placeholder{color:#5a6b80 !important}
html[data-theme="light"] .cdv-vol-card,html[data-theme="light"] .cdv-card,html[data-theme="light"] .cdv-blog-card,html[data-theme="light"] .cdv-cat-other-card,html[data-theme="light"] .ad-card,html[data-theme="light"] .pa-card,html[data-theme="light"] .fa-card,html[data-theme="light"] .cp-card,html[data-theme="light"] .am-card,html[data-theme="light"] .pr-card{background:#f7f9fc !important}
html[data-theme="light"] section h2,html[data-theme="light"] .section h2{color:#0d1b2a !important}
html[data-theme="light"] .cdv-header .cdv-logo,html[data-theme="light"] header.cdv-header .cdv-logo{color:#0d1b2a !important}
html[data-theme="light"] .cdv-header .cdv-logo strong{color:#1565c0 !important}
html[data-theme="light"] .cdv-hero-cta a,html[data-theme="light"] .cdv-hero-cta button,html[data-theme="light"] section.cdv-hero .cdv-btn:not(.cdv-btn-primary){border:1.5px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-hero-cta a:hover,html[data-theme="light"] .cdv-hero-cta button:hover{background:#f7f9fc !important}
html[data-theme="light"] .cdv-stats .stat-card,html[data-theme="light"] .cdv-stats > div:not(:has(> div)),html[data-theme="light"] .cdv-stats > [class*="stat"]{background:#f7f9fc !important;border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-cat-grid > *{border:2px solid rgba(13,27,42,.14) !important;background:#f7f9fc !important}
html[data-theme="light"] .cdv-cat-grid h3,html[data-theme="light"] .cdv-cat-grid strong{color:#0d1b2a !important}
html[data-theme="light"] .cdv-search-bar,html[data-theme="light"] form.cdv-search-bar{background:#f7f9fc !important;border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-search-bar input,html[data-theme="light"] .cdv-search-bar input[type="search"],html[data-theme="light"] .cdv-search-bar input[type="text"]{color:#0d1b2a !important}
html[data-theme="light"] .cdg-dock .cdg-dock-item{background:#f7f9fc !important;border:1px solid rgba(13,27,42,.14) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-vol-card{background:linear-gradient(180deg,rgba(13,27,42,.06),rgba(13,27,42,.06) 120px),
    #f7f9fc !important;border:1px solid rgba(13,27,42,.14) !important;color:#0d1b2a !important}
html[data-theme="light"] .cdv-vol-card:hover{border-color:color-mix(in srgb, var(--cat) 50%, rgba(13,27,42,.14)) !important}
html[data-theme="light"] .cdv-vol-photo{background:linear-gradient(135deg,#eef3fa,#eef3fa) !important}
html[data-theme="light"] .cdv-vol-photo-empty{background:radial-gradient(120% 90% at 50% 34%,
      color-mix(in srgb, var(--cat) 26%, transparent), transparent 68%),
    linear-gradient(160deg,#eef3fa,#eef3fa) !important}
html[data-theme="light"] .cdv-vol-photo-empty::before{background-image:radial-gradient(rgba(13,27,42,.06) 1px, transparent 1.4px) !important}
html[data-theme="light"] .cdv-vol-ico{border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-vol-status{background:rgba(255,255,255,.90) !important;border:1px solid rgba(13,27,42,.14) !important}
html[data-theme="light"] .cdv-vol-body{background:#f7f9fc !important}
html[data-theme="light"] .cdv-kind-badge[data-kind="vole"]{color:#a33a3a !important}
html[data-theme="light"] .cdv-vol-title{color:#0d1b2a !important}
html[data-theme="light"] .cdv-vol-id{border:1px solid color-mix(in srgb, var(--cat) 32%, rgba(13,27,42,.14)) !important}
html[data-theme="light"] .cdv-vol-meta{border-top:1px solid color-mix(in srgb, var(--cat) 12%, rgba(13,27,42,.14)) !important;color:#5a6b80 !important}

/* ── Encre claire a l interieur des zones restees navy ─────────────────────────── */
html[data-theme="light"] .cdv-footer,html[data-theme="light"] .cdv-footer *,html[data-theme="light"] .ch-unified-footer,html[data-theme="light"] .ch-unified-footer *,html[data-theme="light"] .ch-top-bar,html[data-theme="light"] .ch-top-bar *{color:#a8c1e6 !important}
html[data-theme="light"] .cdv-footer h1,html[data-theme="light"] .cdv-footer h2,html[data-theme="light"] .cdv-footer h3,html[data-theme="light"] .cdv-footer h4,html[data-theme="light"] .cdv-footer strong,html[data-theme="light"] .cdv-footer b,html[data-theme="light"] .ch-unified-footer h1,html[data-theme="light"] .ch-unified-footer h2,html[data-theme="light"] .ch-unified-footer h3,html[data-theme="light"] .ch-unified-footer h4,html[data-theme="light"] .ch-unified-footer strong,html[data-theme="light"] .ch-unified-footer b,html[data-theme="light"] .ch-top-bar h1,html[data-theme="light"] .ch-top-bar h2,html[data-theme="light"] .ch-top-bar h3,html[data-theme="light"] .ch-top-bar h4,html[data-theme="light"] .ch-top-bar strong,html[data-theme="light"] .ch-top-bar b{color:#ffffff !important}
html[data-theme="light"] .cdv-footer a,html[data-theme="light"] .ch-unified-footer a,html[data-theme="light"] .ch-top-bar a{color:#cfe0ff !important}
