/* CARTE-DU-MONDE.NET — DA WEB V2
 * COW-2026-0085
 * Scope rule: brand variables live on :root, visual rules only target .cdm-* / .cdm-v2.
 * The legacy footer is deliberately outside this scope.
 */
:root {
  --cdm-navy:#0B1F4B;
  --cdm-navy-deep:#071634;
  --cdm-navy-soft:#132C63;
  --cdm-blue:#2D8CFF;
  --cdm-purple:#7B3CFF;
  --cdm-pink:#FF3B8D;
  --cdm-orange:#FF8A00;
  --cdm-green:#00C996;
  --cdm-bg:#F8FAFC;
  --cdm-surface:#FFFFFF;
  --cdm-border:#E5E7EB;
  --cdm-element:#CBD5E1;
  --cdm-text:#1E293B;
  --cdm-muted:#64748B;
  --cdm-on-navy:#C7D6EE;
  --cdm-on-navy-muted:#8FB4EC;
  --cdm-success-bg:#E6FBF4;
  --cdm-success-fg:#065F46;
  --cdm-warning-bg:#FFF4E6;
  --cdm-warning-fg:#8A4700;
  --cdm-danger-bg:#FFF1F5;
  --cdm-danger-fg:#8A0F45;
  --cdm-font-title:"Montserrat",system-ui,sans-serif;
  --cdm-font-text:"Inter",system-ui,sans-serif;
  --cdm-radius-sm:8px;
  --cdm-radius-md:12px;
  --cdm-radius-lg:16px;
  --cdm-radius-xl:20px;
  --cdm-radius-2xl:24px;
  --cdm-radius-pill:999px;
  --cdm-shadow-1:0 1px 2px rgba(11,31,75,.06);
  --cdm-shadow-2:0 4px 14px rgba(11,31,75,.10);
  --cdm-shadow-3:0 14px 40px rgba(11,31,75,.16);
  --cdm-space-1:4px;
  --cdm-space-2:8px;
  --cdm-space-3:12px;
  --cdm-space-4:16px;
  --cdm-space-5:24px;
  --cdm-space-6:32px;
  --cdm-space-7:48px;
  --cdm-space-8:64px;
  --cdm-space-9:96px;
  --cdm-container:1240px;
  --cdm-gutter:24px;
  --cdm-gutter-mobile:20px;
  --cdm-measure:68ch;
  --cdm-focus-ring:0 0 0 3px rgba(45,140,255,.55);
  --cdm-focus-offset:2px;
  --cdm-tap-target:44px;
  --cdm-dur-fast:120ms;
  --cdm-dur:200ms;
  --cdm-dur-panel:320ms;
  --cdm-ease:cubic-bezier(.2,.8,.2,1);
  --cdm-z-header:60;
  --cdm-z-panel:80;
  --cdm-z-modal:100;
}

/* ---------- Foundations (scoped) ---------- */
.cdm-v2 {
  color:var(--cdm-text);
  background:var(--cdm-bg);
  font-family:var(--cdm-font-text);
  font-size:16px;
  line-height:1.5;
}
.cdm-v2 *, .cdm-v2 *::before, .cdm-v2 *::after,
.cdm-header *, .cdm-header *::before, .cdm-header *::after,
.cdm-mobile-menu *, .cdm-mobile-menu *::before, .cdm-mobile-menu *::after { box-sizing:border-box; }
.cdm-v2 h1,.cdm-v2 h2,.cdm-v2 h3,.cdm-v2 h4,
.cdm-heading { font-family:var(--cdm-font-title); color:var(--cdm-navy); text-wrap:balance; }
.cdm-v2 h1 { font-weight:800; letter-spacing:-.02em; }
.cdm-v2 h2 { font-weight:700; letter-spacing:-.02em; }
.cdm-v2 h3,.cdm-v2 h4 { font-weight:600; }
.cdm-v2 img { max-width:100%; }
.cdm-v2 a,.cdm-header a,.cdm-header button,.cdm-mobile-menu a,.cdm-mobile-menu button {
  transition:color var(--cdm-dur) var(--cdm-ease),background-color var(--cdm-dur) var(--cdm-ease),border-color var(--cdm-dur) var(--cdm-ease),box-shadow var(--cdm-dur) var(--cdm-ease),transform var(--cdm-dur) var(--cdm-ease);
}
.cdm-v2 :focus-visible,.cdm-header :focus-visible,.cdm-mobile-menu :focus-visible {
  outline:2px solid var(--cdm-surface);
  box-shadow:var(--cdm-focus-ring);
  outline-offset:var(--cdm-focus-offset);
}
.cdm-container { width:min(calc(100% - (2 * var(--cdm-gutter))),var(--cdm-container)); margin-inline:auto; }
.cdm-section { padding-block:var(--cdm-space-9); }
.cdm-section--compact { padding-block:var(--cdm-space-8); }
.cdm-surface { background:var(--cdm-surface); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-xl); box-shadow:var(--cdm-shadow-1); }
.cdm-card { background:var(--cdm-surface); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-lg); box-shadow:var(--cdm-shadow-1); overflow:hidden; }
.cdm-card:hover { border-color:var(--cdm-element); box-shadow:var(--cdm-shadow-2); transform:translateY(-2px); }
.cdm-overline { display:block; margin:0 0 var(--cdm-space-3); font-size:11px; line-height:1.45; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--cdm-blue); }
.cdm-lead { max-width:var(--cdm-measure); color:var(--cdm-muted); font-size:clamp(1rem,1.8vw,1.25rem); line-height:1.65; }
.cdm-muted { color:var(--cdm-muted); }
.cdm-badge { display:inline-flex; min-height:28px; align-items:center; gap:var(--cdm-space-2); padding:4px 10px; border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-pill); background:var(--cdm-surface); color:var(--cdm-navy); font-size:.78rem; font-weight:700; }
.cdm-btn { display:inline-flex; min-height:var(--cdm-tap-target); align-items:center; justify-content:center; gap:10px; padding:10px 18px; border:1px solid transparent; border-radius:var(--cdm-radius-md); font-weight:700; line-height:1.2; text-decoration:none; cursor:pointer; }
.cdm-btn--primary { background:var(--cdm-blue); color:var(--cdm-surface); box-shadow:var(--cdm-shadow-1); }
.cdm-btn--primary:hover { background:var(--cdm-navy-soft); box-shadow:var(--cdm-shadow-2); }
.cdm-btn--secondary { background:var(--cdm-surface); color:var(--cdm-navy); border-color:var(--cdm-border); }
.cdm-btn--secondary:hover { border-color:var(--cdm-blue); color:var(--cdm-blue); }
.cdm-btn--ghost { color:var(--cdm-navy); background:transparent; border-color:transparent; }
.cdm-btn--ghost:hover { background:color-mix(in srgb,var(--cdm-blue) 9%,transparent); color:var(--cdm-blue); }
.cdm-btn--on-dark { color:var(--cdm-surface); border-color:color-mix(in srgb,var(--cdm-surface) 28%,transparent); }
.cdm-btn--on-dark:hover { color:var(--cdm-surface); background:color-mix(in srgb,var(--cdm-surface) 12%,transparent); border-color:color-mix(in srgb,var(--cdm-surface) 45%,transparent); }
.cdm-grid { display:grid; gap:var(--cdm-space-5); }
.cdm-grid--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.cdm-grid--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.cdm-grid--4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.cdm-breadcrumb { display:flex; flex-wrap:wrap; align-items:center; gap:8px; color:var(--cdm-muted); font-size:.875rem; }
.cdm-breadcrumb a { color:var(--cdm-navy); text-decoration:none; }
.cdm-breadcrumb a:hover { color:var(--cdm-blue); }
.cdm-breadcrumb--on-dark { color:var(--cdm-on-navy-muted); }
.cdm-breadcrumb--on-dark a { color:var(--cdm-on-navy); }
.cdm-breadcrumb--on-dark a:hover,.cdm-breadcrumb--on-dark span:last-child { color:var(--cdm-surface); }

/* ---------- B01 Header ---------- */
.cdm-header { position:sticky; top:0; z-index:var(--cdm-z-header); background:var(--cdm-surface); color:var(--cdm-navy); border-bottom:1px solid var(--cdm-border); box-shadow:var(--cdm-shadow-1); font-family:var(--cdm-font-text); }
.cdm-header__bar { min-height:72px; display:flex; align-items:center; gap:var(--cdm-space-4); }
.cdm-brand { display:inline-flex; align-items:center; flex:0 0 auto; min-height:var(--cdm-tap-target); text-decoration:none; }
.cdm-brand__logo { width:174px; height:auto; max-height:58px; object-fit:contain; display:block; }
.cdm-nav { margin-left:auto; display:flex; align-items:center; gap:2px; }
.cdm-nav__item { position:relative; }
.cdm-nav__link,.cdm-nav__trigger { display:inline-flex; min-height:44px; align-items:center; gap:6px; padding:10px 12px; border:0; border-radius:var(--cdm-radius-md); background:transparent; color:var(--cdm-navy); font:600 .9rem/1 var(--cdm-font-text); text-decoration:none; cursor:pointer; white-space:nowrap; }
.cdm-nav__link:hover,.cdm-nav__trigger:hover,.cdm-nav__link[aria-current="page"],.cdm-nav__trigger[aria-expanded="true"] { color:var(--cdm-blue); background:color-mix(in srgb,var(--cdm-blue) 8%,transparent); }
.cdm-nav__chevron { width:14px; height:14px; transition:transform var(--cdm-dur) var(--cdm-ease); }
.cdm-nav__trigger[aria-expanded="true"] .cdm-nav__chevron { transform:rotate(180deg); }
.cdm-mega { position:fixed; top:82px; left:50%; width:min(760px,calc(100vw - 40px)); padding:var(--cdm-space-5); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-xl); background:var(--cdm-surface); box-shadow:var(--cdm-shadow-3); color:var(--cdm-text); opacity:0; visibility:hidden; transform:translate(-50%,-6px); pointer-events:none; transition:opacity var(--cdm-dur) var(--cdm-ease),transform var(--cdm-dur) var(--cdm-ease),visibility var(--cdm-dur); }
.cdm-nav__item[data-open="true"] > .cdm-mega { opacity:1; visibility:visible; transform:translate(-50%,0); pointer-events:auto; }
.cdm-mega__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--cdm-space-5); }
.cdm-mega__grid--4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.cdm-mega__title { margin:0 0 var(--cdm-space-3); font:700 11px/1.45 var(--cdm-font-text); letter-spacing:.14em; text-transform:uppercase; color:var(--cdm-muted); }
.cdm-mega__list { list-style:none; margin:0; padding:0; display:grid; gap:4px; }
.cdm-mega__link { display:flex; min-height:44px; align-items:center; padding:7px 8px; margin-inline:-8px; border-radius:var(--cdm-radius-sm); color:var(--cdm-text); font-size:.875rem; line-height:1.35; text-decoration:none; }
.cdm-mega__link:hover { color:var(--cdm-blue); background:color-mix(in srgb,var(--cdm-blue) 7%,transparent); }
.cdm-header__tools { display:flex; align-items:center; gap:var(--cdm-space-2); }
.cdm-search-link,.cdm-menu-toggle { display:inline-flex; min-width:44px; min-height:44px; align-items:center; justify-content:center; gap:8px; border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-md); background:var(--cdm-surface); color:var(--cdm-navy); text-decoration:none; cursor:pointer; }
.cdm-search-link:hover,.cdm-menu-toggle:hover { border-color:var(--cdm-blue); color:var(--cdm-blue); }
.cdm-menu-toggle { display:none; }
.cdm-context { border-top:1px solid var(--cdm-border); background:var(--cdm-navy); color:var(--cdm-on-navy); }
.cdm-context__rail { min-height:44px; display:flex; align-items:center; gap:var(--cdm-space-4); overflow-x:auto; scrollbar-width:none; }
.cdm-context__rail::-webkit-scrollbar { display:none; }
.cdm-context__label { color:var(--cdm-on-navy-muted); font-size:.78rem; font-weight:700; white-space:nowrap; }
.cdm-context__link { display:inline-flex; min-height:44px; align-items:center; color:var(--cdm-on-navy); font-size:.82rem; font-weight:600; text-decoration:none; white-space:nowrap; }
.cdm-context__link:hover,.cdm-context__link[aria-current="page"] { color:var(--cdm-surface); }
.cdm-context__news { margin-left:auto; }

/* Mobile nav overlay */
.cdm-mobile-menu { position:fixed; inset:0; z-index:var(--cdm-z-modal); display:none; background:var(--cdm-navy-deep); color:var(--cdm-surface); font-family:var(--cdm-font-text); overflow-y:auto; overscroll-behavior:contain; }
.cdm-mobile-menu[data-open="true"] { display:block; }
.cdm-mobile-menu__inner { width:min(100%,620px); min-height:100%; margin-left:auto; padding:var(--cdm-space-5) var(--cdm-gutter-mobile) var(--cdm-space-8); }
.cdm-mobile-menu__top { display:flex; align-items:center; justify-content:space-between; gap:var(--cdm-space-4); padding-bottom:var(--cdm-space-4); border-bottom:1px solid color-mix(in srgb,var(--cdm-surface) 18%,transparent); }
.cdm-mobile-menu__logo { width:164px; height:auto; display:block; }
.cdm-mobile-menu__close { min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; border:1px solid color-mix(in srgb,var(--cdm-surface) 25%,transparent); border-radius:var(--cdm-radius-md); background:transparent; color:var(--cdm-surface); cursor:pointer; }
.cdm-mobile-nav { padding-top:var(--cdm-space-4); }
.cdm-mobile-nav__section { border-bottom:1px solid color-mix(in srgb,var(--cdm-surface) 12%,transparent); }
.cdm-mobile-nav__trigger,.cdm-mobile-nav__direct { width:100%; min-height:54px; display:flex; align-items:center; justify-content:space-between; gap:var(--cdm-space-3); padding:12px 4px; border:0; background:transparent; color:var(--cdm-surface); font:700 1rem/1.2 var(--cdm-font-text); text-decoration:none; cursor:pointer; text-align:left; }
.cdm-mobile-nav__panel { display:none; padding:0 0 var(--cdm-space-4) var(--cdm-space-3); }
.cdm-mobile-nav__trigger[aria-expanded="true"] + .cdm-mobile-nav__panel { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
.cdm-mobile-nav__link { min-height:44px; display:flex; align-items:center; padding:8px 10px; border-radius:var(--cdm-radius-sm); color:var(--cdm-on-navy); font-size:.875rem; text-decoration:none; }
.cdm-mobile-nav__link:hover { color:var(--cdm-surface); background:color-mix(in srgb,var(--cdm-surface) 10%,transparent); }
.cdm-mobile-nav__utilities { padding-top:var(--cdm-space-5); display:grid; grid-template-columns:1fr 1fr; gap:var(--cdm-space-3); }
.cdm-mobile-nav__utility { min-height:48px; display:flex; align-items:center; justify-content:center; border:1px solid color-mix(in srgb,var(--cdm-surface) 22%,transparent); border-radius:var(--cdm-radius-md); color:var(--cdm-surface); font-weight:700; text-decoration:none; }

/* ---------- Homepage pilot ---------- */
.cdm-home-hero { position:relative; overflow:hidden; background:var(--cdm-navy-deep); color:var(--cdm-surface); }
.cdm-home-hero::after { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 80% 20%,color-mix(in srgb,var(--cdm-purple) 28%,transparent),transparent 40%),radial-gradient(circle at 15% 85%,color-mix(in srgb,var(--cdm-blue) 22%,transparent),transparent 42%); }
.cdm-home-hero__inner { position:relative; z-index:1; min-height:520px; display:grid; grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr); align-items:center; gap:var(--cdm-space-7); padding-block:var(--cdm-space-8); }
.cdm-home-hero__copy { max-width:720px; }
.cdm-home-hero h1 { margin:0 0 var(--cdm-space-5); color:var(--cdm-surface); font-size:clamp(2.55rem,5vw,4rem); line-height:1.06; }
.cdm-home-hero__accent { display:block; color:var(--cdm-on-navy); font-size:.48em; line-height:1.25; margin-top:var(--cdm-space-3); letter-spacing:0; }
.cdm-home-hero__lead { margin:0 0 var(--cdm-space-6); max-width:65ch; color:var(--cdm-on-navy); font-size:clamp(1.05rem,2vw,1.25rem); line-height:1.65; }
.cdm-home-hero__actions { display:flex; flex-wrap:wrap; gap:var(--cdm-space-3); }
.cdm-home-hero__map { position:relative; align-self:stretch; display:flex; align-items:center; justify-content:center; min-height:360px; }
.cdm-home-hero__map img { width:100%; max-height:390px; object-fit:contain; filter:drop-shadow(0 18px 30px rgba(0,0,0,.22)); border-radius:var(--cdm-radius-xl); }
.cdm-home-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--cdm-space-3); margin-top:var(--cdm-space-6); max-width:560px; }
.cdm-home-stat { padding:12px 14px; border:1px solid color-mix(in srgb,var(--cdm-surface) 16%,transparent); border-radius:var(--cdm-radius-md); background:color-mix(in srgb,var(--cdm-surface) 7%,transparent); }
.cdm-home-stat strong { display:block; color:var(--cdm-surface); font-family:var(--cdm-font-title); font-size:1.35rem; }
.cdm-home-stat span { display:block; margin-top:2px; color:var(--cdm-on-navy); font-size:.78rem; }
.cdm-section-head { max-width:760px; margin:0 auto var(--cdm-space-7); text-align:center; }
.cdm-section-head h2 { margin:0 0 var(--cdm-space-3); font-size:clamp(2rem,4vw,3rem); line-height:1.15; }
.cdm-section-head p { margin:0; color:var(--cdm-muted); font-size:1.05rem; }
.cdm-home-v2 .card-hover { border:1px solid var(--cdm-border); box-shadow:var(--cdm-shadow-1); }
.cdm-home-v2 .card-hover:hover { border-color:var(--cdm-element); box-shadow:var(--cdm-shadow-2); transform:translateY(-2px); }
.cdm-home-v2 .font-serif { font-family:var(--cdm-font-title); }
.cdm-home-v2 .text-secondary { color:var(--cdm-navy); }
.cdm-home-v2 .text-primary { color:var(--cdm-blue); }
.cdm-home-v2 .bg-primary { background-color:var(--cdm-blue); }
.cdm-home-v2 .bg-primary\/10 { background-color:color-mix(in srgb,var(--cdm-blue) 10%,transparent); }
.cdm-home-v2 .bg-primary\/5 { background-color:color-mix(in srgb,var(--cdm-blue) 5%,transparent); }
.cdm-home-v2 .hover\:text-primary:hover { color:var(--cdm-blue); }
.cdm-home-v2 .hover\:bg-primary\/90:hover { background-color:var(--cdm-navy-soft); }
.cdm-home-v2 .bg-blue-50 { background-color:color-mix(in srgb,var(--cdm-blue) 6%,var(--cdm-surface)); }
.cdm-home-v2 .bg-gray-100 { background-color:var(--cdm-bg); }
.cdm-home-v2 section:not(.cdm-home-hero) > .max-w-7xl { max-width:var(--cdm-container); }

/* ---------- B24–B28 world/map product ---------- */
.cdm-map-page { padding-bottom:var(--cdm-space-8); }
.cdm-map-hero { background:linear-gradient(135deg,var(--cdm-navy-deep),var(--cdm-navy)); color:var(--cdm-surface); }
.cdm-map-hero__inner { padding-block:var(--cdm-space-7); }
.cdm-map-hero h1 { margin:0 0 var(--cdm-space-4); color:var(--cdm-surface); font-size:clamp(2.25rem,5vw,3.75rem); line-height:1.08; }
.cdm-map-hero p { max-width:var(--cdm-measure); margin:0; color:var(--cdm-on-navy); font-size:1.08rem; }
.cdm-map-hero__figure { overflow:hidden; border:1px solid color-mix(in srgb,var(--cdm-surface) 16%,transparent); border-radius:var(--cdm-radius-xl); background:var(--cdm-navy); box-shadow:var(--cdm-shadow-3); }
.cdm-map-hero__figure img { display:block; width:100%; height:auto; object-fit:contain; }
.cdm-map-hero__figure figcaption { padding:var(--cdm-space-3) var(--cdm-space-4); color:var(--cdm-on-navy); font-size:.82rem; }
.cdm-page-tabs { padding-block:var(--cdm-space-4); display:flex; flex-wrap:wrap; gap:var(--cdm-space-2); }
.cdm-page-tab { display:inline-flex; min-height:44px; align-items:center; padding:8px 14px; border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-pill); background:var(--cdm-surface); color:var(--cdm-navy); font-size:.88rem; font-weight:650; text-decoration:none; box-shadow:var(--cdm-shadow-1); }
.cdm-page-tab:hover { border-color:var(--cdm-blue); color:var(--cdm-blue); }
.cdm-viewer { margin-top:calc(var(--cdm-space-6) * -1); position:relative; z-index:2; background:var(--cdm-surface); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-2xl); box-shadow:var(--cdm-shadow-3); padding:var(--cdm-space-4); }
.cdm-viewer__media { position:relative; display:flex; align-items:center; justify-content:center; min-height:320px; border-radius:var(--cdm-radius-lg); overflow:hidden; background:var(--cdm-bg); }
.cdm-viewer__media img,.cdm-viewer__media svg { width:100%; height:auto; max-height:min(72vh,760px); object-fit:contain; }
.cdm-viewer > a { display:block; border-radius:var(--cdm-radius-lg); overflow:hidden; background:var(--cdm-bg); }
.cdm-viewer > a img { display:block; width:100%; height:auto; max-height:min(72vh,760px); object-fit:contain; margin-inline:auto; }
.cdm-map-aside { padding:var(--cdm-space-5); }
.cdm-map-aside a { color:var(--cdm-blue); }
.cdm-map-aside a:hover { color:var(--cdm-navy); }
.cdm-actionbar { display:flex; flex-wrap:wrap; gap:var(--cdm-space-2); padding-top:var(--cdm-space-4); }
.cdm-variants { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--cdm-space-4); }
.cdm-variant { display:flex; flex-direction:column; min-width:0; color:var(--cdm-navy); text-decoration:none; }
.cdm-variant__media { aspect-ratio:16/10; overflow:hidden; background:var(--cdm-bg); }
.cdm-variant__media img { width:100%; height:100%; object-fit:cover; }
.cdm-variant__body { padding:var(--cdm-space-4); }
.cdm-variant > img { display:block; width:100%; aspect-ratio:16/10; object-fit:contain; background:var(--cdm-bg); }
.cdm-variant > div { padding:var(--cdm-space-4); }
.cdm-variant__title { margin:0; font:700 1rem/1.3 var(--cdm-font-title); color:var(--cdm-navy); }
.cdm-downloads { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--cdm-space-3); }
.cdm-download { min-height:84px; display:flex; align-items:center; justify-content:space-between; gap:var(--cdm-space-3); padding:var(--cdm-space-4); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-lg); background:var(--cdm-surface); color:var(--cdm-navy); text-decoration:none; }
.cdm-download:hover { border-color:var(--cdm-blue); box-shadow:var(--cdm-shadow-1); }
.cdm-download strong { font-family:var(--cdm-font-title); }
.cdm-download-section { background:var(--cdm-surface); border-block:1px solid var(--cdm-border); }
.cdm-provenance { padding:var(--cdm-space-5); background:var(--cdm-bg); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-lg); color:var(--cdm-muted); font-size:.9rem; }
.cdm-provenance summary { min-height:44px; display:flex; align-items:center; color:var(--cdm-navy); font-weight:700; cursor:pointer; }
.cdm-projection { background:var(--cdm-navy-deep); color:var(--cdm-surface); }
.cdm-projection h2 { color:var(--cdm-surface); }
.cdm-projection p,.cdm-projection figcaption { color:var(--cdm-on-navy); }
.cdm-projection figure { overflow:hidden; border-radius:var(--cdm-radius-xl); background:color-mix(in srgb,var(--cdm-surface) 6%,transparent); }
.cdm-projection figure img { display:block; width:100%; height:auto; }
.cdm-faq { background:var(--cdm-surface); border-block:1px solid var(--cdm-border); }
.cdm-faq__inner { max-width:900px; }
.cdm-faq details { border-top:1px solid var(--cdm-border); padding-block:var(--cdm-space-4); }
.cdm-faq summary { min-height:44px; display:flex; align-items:center; color:var(--cdm-navy); font-weight:700; cursor:pointer; }
.cdm-map-page .legacy-card { display:block; border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-lg); overflow:hidden; background:var(--cdm-surface); box-shadow:var(--cdm-shadow-1); color:var(--cdm-text); text-decoration:none; }
.cdm-map-page .legacy-card:hover { border-color:var(--cdm-element); box-shadow:var(--cdm-shadow-2); transform:translateY(-2px); }
.cdm-map-page .legacy-card img { display:block; width:100%; aspect-ratio:4/3; object-fit:cover; background:var(--cdm-bg); }
.cdm-map-page .legacy-card > div { padding:var(--cdm-space-4); }
.cdm-related { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--cdm-space-4); }
.cdm-figure { margin:0; }
.cdm-figure img { width:100%; height:auto; border-radius:var(--cdm-radius-lg); }
.cdm-figure figcaption { margin-top:var(--cdm-space-2); color:var(--cdm-muted); font-size:.82rem; line-height:1.5; }

/* ---------- B29–B40 shared renderer primitives ---------- */
.cdm-renderer-v2 { background:var(--cdm-bg); color:var(--cdm-text); }
.cdm-renderer-v2 .font-serif { font-family:var(--cdm-font-title); }
.cdm-renderer-v2 .text-secondary { color:var(--cdm-navy); }
.cdm-renderer-v2 .text-primary { color:var(--cdm-blue); }
.cdm-renderer-v2 .bg-primary { background-color:var(--cdm-blue); }
.cdm-renderer-v2 .bg-secondary { background-color:var(--cdm-navy); }
.cdm-renderer-v2 .hover\:text-primary:hover,.cdm-renderer-v2 .group:hover .group-hover\:text-primary { color:var(--cdm-blue); }
.cdm-renderer-v2 .card-hover { border-color:var(--cdm-border); box-shadow:var(--cdm-shadow-1); }
.cdm-renderer-v2 .card-hover:hover { transform:translateY(-2px); box-shadow:var(--cdm-shadow-2); }
.cdm-renderer-v2 .rounded-2xl { border-radius:var(--cdm-radius-xl); }
.cdm-renderer-v2 .rounded-xl { border-radius:var(--cdm-radius-md); }
.cdm-renderer-v2 .ad-container { width:100%; max-width:100%; min-width:0; overflow:clip; }
.cdm-renderer-v2 ins.adsbygoogle,.cdm-renderer-v2 iframe { max-width:100%!important; }
.cdm-renderer-v2 .prose { color:var(--cdm-text); }
.cdm-renderer-v2 .prose a { color:var(--cdm-blue); }
.cdm-renderer-v2 .cdm-geo-hero { background:linear-gradient(135deg,var(--cdm-navy-deep),var(--cdm-navy-soft)); }
.cdm-renderer-v2 .text-white :is(h1,h2,h3,h4),
.cdm-renderer-v2 :is(h1,h2,h3,h4).text-white,
.cdm-renderer-v2 .bg-secondary :is(h1,h2,h3,h4) { color:var(--cdm-surface); }
.cdm-geo-hero { padding:var(--cdm-space-7) 0; background:linear-gradient(135deg,var(--cdm-navy-deep),var(--cdm-navy-soft)); color:var(--cdm-surface); }
.cdm-geo-hero h1 { margin:0; color:var(--cdm-surface); font-size:clamp(2.25rem,5vw,3.5rem); }
.cdm-geo-hero p { color:var(--cdm-on-navy); }
.cdm-place-card { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:var(--cdm-space-4); padding:var(--cdm-space-5); }
.cdm-atlas-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--cdm-space-5); }
.cdm-flag-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:var(--cdm-space-4); }
.cdm-quiz-card { padding:var(--cdm-space-5); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-xl); background:var(--cdm-surface); box-shadow:var(--cdm-shadow-1); }
.cdm-search { display:flex; gap:var(--cdm-space-2); }
.cdm-search input { width:100%; min-height:44px; padding:10px 14px; border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-md); color:var(--cdm-text); background:var(--cdm-surface); }
.cdm-ad-slot { width:100%; max-width:100%; min-height:100px; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:var(--cdm-space-3); margin-block:var(--cdm-space-5); border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-md); background:var(--cdm-bg); overflow:clip; contain:layout paint; }
.cdm-ad-slot::before { content:"Publicité"; display:block; align-self:flex-start; margin-bottom:var(--cdm-space-2); color:var(--cdm-muted); font-size:10px; letter-spacing:.12em; text-transform:uppercase; }
.cdm-ad-slot ins,.cdm-ad-slot iframe { max-width:100%!important; }
.cdm-article { width:min(calc(100% - (2 * var(--cdm-gutter))),var(--cdm-container)); margin-inline:auto; }
.cdm-article__measure { max-width:var(--cdm-measure); margin-inline:auto; }

@media (max-width:1239px) {
  .cdm-section { padding-block:var(--cdm-space-8); }
  .cdm-nav__link,.cdm-nav__trigger { padding-inline:9px; font-size:.84rem; }
  .cdm-search-link span { display:none; }
  .cdm-mega { width:min(680px,calc(100vw - 32px)); }
  .cdm-home-hero__inner { grid-template-columns:1fr .8fr; gap:var(--cdm-space-5); }
  .cdm-variants,.cdm-downloads { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cdm-atlas-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cdm-flag-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
}

@media (max-width:899px) {
  .cdm-container,.cdm-article { width:min(calc(100% - (2 * var(--cdm-gutter-mobile))),var(--cdm-container)); }
  .cdm-section { padding-block:var(--cdm-space-8); }
  .cdm-header__bar { min-height:64px; }
  .cdm-brand__logo { width:154px; max-height:52px; }
  .cdm-nav,.cdm-search-link { display:none; }
  .cdm-header__tools { margin-left:auto; }
  .cdm-menu-toggle { display:inline-flex; }
  .cdm-context__rail { min-height:44px; }
  .cdm-context__link { min-height:44px; }
  .cdm-context__news { margin-left:0; }
  .cdm-home-hero__inner { min-height:auto; grid-template-columns:1fr; padding-block:var(--cdm-space-7); }
  .cdm-home-hero__map { min-height:220px; order:-1; }
  .cdm-home-hero__map img { max-height:290px; }
  .cdm-home-stats { max-width:none; }
  .cdm-grid--4,.cdm-grid--3 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cdm-related { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cdm-flag-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:639px) {
  .cdm-section,.cdm-section--compact { padding-block:var(--cdm-space-7); }
  .cdm-grid--4,.cdm-grid--3,.cdm-grid--2,.cdm-related,.cdm-atlas-grid { grid-template-columns:1fr; }
  .cdm-home-hero__inner { padding-block:var(--cdm-space-6); gap:var(--cdm-space-5); }
  .cdm-home-hero h1 { font-size:clamp(2.15rem,10vw,3rem); }
  .cdm-home-hero__map { min-height:180px; }
  .cdm-home-stats { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
  .cdm-home-stat { padding:10px 8px; }
  .cdm-home-stat strong { font-size:1.05rem; }
  .cdm-home-stat span { font-size:.7rem; }
  .cdm-home-hero__actions .cdm-btn { width:100%; }
  .cdm-mobile-nav__trigger[aria-expanded="true"] + .cdm-mobile-nav__panel { grid-template-columns:1fr; }
  .cdm-mobile-nav__utilities { grid-template-columns:1fr; }
  .cdm-viewer { margin-top:calc(var(--cdm-space-5) * -1); padding:var(--cdm-space-2); border-radius:var(--cdm-radius-lg); }
  .cdm-viewer__media { min-height:220px; border-radius:var(--cdm-radius-md); }
  .cdm-actionbar { position:static; display:grid; grid-template-columns:1fr 1fr; padding:var(--cdm-space-3) var(--cdm-space-1) var(--cdm-space-1); }
  .cdm-actionbar .cdm-btn { min-width:0; padding-inline:10px; font-size:.86rem; }
  .cdm-variants,.cdm-downloads { grid-template-columns:1fr; }
  .cdm-flag-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cdm-place-card { grid-template-columns:1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .cdm-v2 *, .cdm-v2 *::before, .cdm-v2 *::after,
  .cdm-header *, .cdm-header *::before, .cdm-header *::after,
  .cdm-mobile-menu *, .cdm-mobile-menu *::before, .cdm-mobile-menu *::after {
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}

/* ---------- Final legacy-renderer harmonization (COW-2026-0090) ---------- */
.cdm-legacy-v2 { background:var(--cdm-bg); color:var(--cdm-text); }
.cdm-legacy-v2 .font-serif { font-family:var(--cdm-font-title)!important; }
.cdm-legacy-v2 .text-secondary { color:var(--cdm-navy)!important; }
.cdm-legacy-v2 .text-primary { color:var(--cdm-blue)!important; }
.cdm-legacy-v2 .bg-primary { background:var(--cdm-blue)!important; }
.cdm-legacy-v2 .bg-secondary { background:var(--cdm-navy)!important; }
.cdm-legacy-v2 .hover\:text-primary:hover { color:var(--cdm-blue)!important; }
.cdm-legacy-v2 .group:hover .group-hover\:text-primary { color:var(--cdm-blue)!important; }
.cdm-legacy-v2 .cdm-legacy-hero {
  background:var(--cdm-navy-deep)!important;
  color:var(--cdm-surface);
  position:relative;
  overflow:hidden;
}
.cdm-legacy-v2 .cdm-legacy-hero::after {
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(circle at 82% 18%,color-mix(in srgb,var(--cdm-purple) 24%,transparent),transparent 42%),radial-gradient(circle at 12% 92%,color-mix(in srgb,var(--cdm-blue) 20%,transparent),transparent 44%);
}
.cdm-legacy-v2 .cdm-legacy-hero > * { position:relative; z-index:1; }
.cdm-legacy-v2 .cdm-legacy-hero h1,.cdm-legacy-v2 .cdm-legacy-hero h2,.cdm-legacy-v2 .cdm-legacy-hero h3 { color:var(--cdm-surface)!important; }
.cdm-legacy-v2 .cdm-legacy-hero a { min-height:44px; }
.cdm-legacy-v2 .card-hover { transition:transform var(--cdm-dur) var(--cdm-ease),box-shadow var(--cdm-dur) var(--cdm-ease),border-color var(--cdm-dur) var(--cdm-ease)!important; }
.cdm-legacy-v2 .card-hover:hover { transform:translateY(-2px)!important; box-shadow:var(--cdm-shadow-2)!important; }
.cdm-legacy-v2 .rounded-2xl.bg-white,.cdm-legacy-v2 .rounded-xl.bg-white {
  border:1px solid var(--cdm-border); box-shadow:var(--cdm-shadow-1)!important;
}
.cdm-legacy-v2 .rounded-2xl.bg-white:hover,.cdm-legacy-v2 .rounded-xl.bg-white:hover { border-color:var(--cdm-element); }
.cdm-legacy-v2 button,.cdm-legacy-v2 a[class*="px-"] { min-height:44px; }
.cdm-contact-result-v2 > div { border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-xl)!important; box-shadow:var(--cdm-shadow-2)!important; }
.cdm-zoom-v2 #imageContainer { border:1px solid var(--cdm-border); border-radius:var(--cdm-radius-xl); background:var(--cdm-surface); box-shadow:var(--cdm-shadow-2); }
@media (max-width:899px) {
  .cdm-legacy-v2 .cdm-legacy-hero { padding-top:var(--cdm-space-6)!important; padding-bottom:var(--cdm-space-6)!important; }
  .cdm-legacy-v2 .cdm-legacy-hero h1 { font-size:clamp(2.15rem,10vw,3rem)!important; line-height:1.08!important; }
}

.cdm-country-index-v2 #mapPays { max-width:100%; overflow:hidden; }
.cdm-country-index-v2 .leaflet-container { max-width:100%; }
.cdm-legacy-v2 .grid > * { min-width:0; }
.cdm-legacy-v2 .leaflet-container { max-width:100%; overflow:hidden; }
.cdm-legacy-v2 h1,.cdm-legacy-v2 h2,.cdm-legacy-v2 h3,.cdm-legacy-v2 p,.cdm-legacy-v2 a { overflow-wrap:anywhere; }

/* Final QA correction: Atlas legacy CSS must not override V2 title font. */
.cdm-v2.cdm-atlas-v2 h1,.cdm-v2.cdm-atlas-v2 h2,.cdm-v2.cdm-atlas-v2 h3,.cdm-v2.cdm-atlas-v2 h4 { font-family:var(--cdm-font-title)!important; }
