@charset "utf-8";
/* ============================================================================
   RankScopeWorld — identité visuelle unifiée du portail
   ----------------------------------------------------------------------------
   Ce fichier est ADDITIF : il est chargé après la feuille d'origine
   /_astro/_path_.EX46qRUI.css et ne la remplace pas. Les surcharges reprennent
   strictement les mêmes sélecteurs afin de rester ciblées et réversibles.

   1. Portail graphite / bleu nuit (thème premium commun aux deux univers)
   2. Accents : OR pour RankScope Rankings · BLEU pour World Data Intelligence
   3. Composants World Data Intelligence (cartes, tableaux, graphiques, cartes)
   ========================================================================== */

/* ---------------------------------------------------------------- 1. Jetons */
html {
  color-scheme: dark;
}
:root {
  --paper: #0d1016;
  --paper-soft: #0a0d13;
  --surface: #161b24;
  --surface-soft: #121822;
  --ink: #eef2f8;
  --ink-2: #c6cfdd;
  --muted: #97a2b3;
  --blue: #7db2ff;          /* liens et accents lumineux */
  --blue-deep: #2f74e0;     /* dégradés de boutons */
  --blue-soft: #16263f;     /* fonds teintés bleu */
  --copper: #e8b24a;        /* accent OR — univers Rankings */
  --gold: #f5c86a;
  --copper-soft: #2a2113;
  --line: #29313f;
  --line-soft: #212936;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.4), 0 6px 16px -8px rgba(0,0,0,.55);
  --shadow-md: 0 18px 40px -22px rgba(0,0,0,.75), 0 4px 12px -6px rgba(0,0,0,.45);
  --shadow-lg: 0 34px 70px -30px rgba(0,0,0,.85);
  /* accents d'univers */
  --rsw-gold: #e8b24a;
  --rsw-blue: #5fa8ff;
}

body {
  background:
    radial-gradient(1100px 520px at 82% -8%, rgba(47,116,224,.16), transparent 62%),
    radial-gradient(760px 420px at 4% 12%, rgba(232,178,74,.08), transparent 60%),
    linear-gradient(180deg, var(--paper-soft), var(--paper) 42%);
  color: var(--ink);
}
::selection { background: rgba(122,166,255,.32); color: #fff; }
a { color: var(--blue); }
a:hover { color: var(--copper); }
:focus-visible { outline: 3px solid var(--copper); outline-offset: 5px; }
.muted { color: var(--muted); }
.count { color: var(--muted); }

/* ---------------------------------------------------------------- 2. Chrome */
header {
  background: linear-gradient(135deg, #161c28 0%, #0f141f 55%, #12203a 100%);
  border-bottom: 1px solid rgba(122,166,255,.14);
  box-shadow: inset 0 2px 0 0 rgba(232,178,74,.5), 0 20px 40px -34px rgba(0,0,0,.95);
}
.skip { background: var(--surface); color: var(--ink); border-color: var(--line); }
nav a { color: #d6dcea; }
nav a:after { background: linear-gradient(90deg, var(--blue), var(--copper)); }
nav a.lang { background: var(--surface); color: var(--ink); border-color: #2d3646; }
nav a.lang:hover { background: var(--copper); color: #14171c; border-color: var(--copper); }
nav a.nav-rank:before,
nav a.nav-wd:before {
  content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  margin-right: 8px; vertical-align: middle; background: var(--rsw-gold);
  box-shadow: 0 0 9px rgba(232,178,74,.75);
}
nav a.nav-wd:before { background: var(--rsw-blue); box-shadow: 0 0 9px rgba(95,168,255,.8); }
nav a.nav-wd[aria-current]:after { transform: scaleX(1); }
nav a.nav-wd[aria-current] { color: #fff; }

footer {
  background: linear-gradient(180deg, #11151f 0%, #070a0f 100%);
  border-top: 1px solid rgba(122,166,255,.12);
  color: #dfe5ee;
}
footer a { color: #c4d5e7; }
footer a:after { background: linear-gradient(90deg, var(--gold), var(--copper)); }
body.wd footer a:after { background: linear-gradient(90deg, var(--rsw-blue), #2f74e0); }
.copyright { color: #7f8a9b; }

/* ------------------------------------------- 3. Surfaces des pages Rankings */
.eyebrow { color: var(--copper); }
.eyebrow.wd-accent { color: var(--rsw-blue); }
.statline b { color: var(--blue); }
.hero-card {
  background: linear-gradient(165deg, #182030 0%, #10151f 100%);
  border-color: var(--line);
}
.hero-card:before { background: linear-gradient(90deg, var(--copper), var(--gold) 55%, var(--blue)); }
.hero-card p.big-number {
  background: linear-gradient(120deg, #eef2f8 8%, var(--blue) 55%, var(--copper));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.category { background: linear-gradient(180deg, #171d27 0%, #121822 100%); border-color: var(--line); }
.category:hover, .category:focus-visible { background: linear-gradient(180deg, #1a2333 0%, #121a2a 100%); }
.filters { background: var(--surface); border-color: var(--line); }
.filters:focus-within { border-color: #3d4a60; box-shadow: var(--shadow-md); }
input, select, textarea { background: #10141c; color: var(--ink); border-color: #3b4557; }
input:hover, select:hover, textarea:hover { border-color: #4b5769; }
input:focus-visible, select:focus-visible, textarea:focus-visible {
  border-color: var(--blue); background: #10141c; box-shadow: 0 0 0 4px rgba(122,166,255,.18);
}
option { background: #10141c; color: var(--ink); }
.rank-row { background: var(--surface); border-color: var(--line); }
.rank-row:hover { border-color: #3a4658; background: linear-gradient(90deg, #171d29, #121826); }
.rank { color: var(--copper); }
.rank-row:hover .rank { color: var(--blue); }
.avatar {
  background: linear-gradient(160deg, #1c2532, #131a24);
  border: 1px solid #2c3646; color: var(--blue);
}
.tag { background: var(--blue-soft); color: #a9ccff; border-color: rgba(122,166,255,.22); }
.rank-row:hover .tag { background: #1c3050; }
.details > div:hover { background: linear-gradient(180deg, #182030, #121822); border-left-color: var(--copper); }
.edition-badge { background: #141a24; border-color: #2d3646; }
.edition-badge:hover { background: var(--blue-soft); border-color: #2f4a72; }
.notice {
  background: linear-gradient(90deg, #241d10 0%, #12161e 70%);
  border-color: var(--line); border-left-color: var(--copper);
}
.archive { background: var(--surface); border-color: var(--line); border-left-color: #3a4658; }
.archive:hover { border-left-color: var(--copper); }
.archive .grid a { background: #121822; border-color: #242d3c; }
.archive .grid a:hover { background: var(--blue-soft); border-color: #2f4a72; color: var(--blue); }
button, .button {
  background: linear-gradient(135deg, #2f74e0, #17468f);
  box-shadow: 0 10px 22px -14px rgba(47,116,224,.95);
  color: #fff;
}
button:hover, .button:hover {
  background: linear-gradient(135deg, #3d84ef, #1c56a8);
  color: #fff;
}
button:disabled { opacity: .55; cursor: not-allowed; transform: none; }
.original-content th, .original-content td { border-color: var(--line); }
.original-content th { background: #131922; }
button.ghost, .button.ghost {
  background: transparent; color: var(--blue);
  border: 1px solid rgba(122,166,255,.45); box-shadow: none;
}
button.ghost:hover, .button.ghost:hover { background: rgba(122,166,255,.12); color: #fff; }
#contact-status { color: var(--copper); }

/* ==========================================================================
   4. WORLD DATA INTELLIGENCE — accents bleus
   ========================================================================== */
body.wd {
  --copper: #5fa8ff;
  --gold: #8fc0ff;
  --copper-soft: #10233c;
  --blue-soft: #16263f;
}
body.wd header { box-shadow: inset 0 2px 0 0 rgba(95,168,255,.55), 0 20px 40px -34px rgba(0,0,0,.95); }
body.wd .hero-card:before { background: linear-gradient(90deg, #2f74e0, #5fa8ff 55%, #8fc0ff); }
body.wd .hero-card p.big-number { background: linear-gradient(120deg, #eef2f8 8%, #5fa8ff 55%, #8fc0ff); }
body.wd .rank-row:before { background: linear-gradient(180deg, #2f74e0, #5fa8ff); }
body.wd .notice { border-left-color: #5fa8ff; background: linear-gradient(90deg, #10233c 0%, #12161e 70%); }
body.wd .category:before { background: linear-gradient(90deg, #2f74e0, #5fa8ff); }
body.wd .avatar { color: #8fc0ff; }

/* -- structure ------------------------------------------------------------ */
.wd-main { max-width: 1280px; }
.wd-hero {
  display: grid; grid-template-columns: 1.35fr .8fr; gap: 46px; align-items: center;
  padding: 18px 0 46px;
}
.wd-hero p.lead { font-size: 20px; color: var(--ink-2); max-width: 62ch; }
.wd-panel {
  background: linear-gradient(165deg, #171f2c, #10151f);
  border: 1px solid var(--line); border-radius: var(--radius);
  padding: 26px; box-shadow: var(--shadow-sm); position: relative;
}
.wd-panel:before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 3px;
  background: linear-gradient(90deg, #2f74e0, #5fa8ff 45%, rgba(95,168,255,0));
  border-radius: var(--radius) var(--radius) 0 0;
}
.wd-kpis { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; margin: 6px 0 8px; }
.wd-kpi {
  background: linear-gradient(180deg, #161d28, #11161f);
  border: 1px solid var(--line); border-radius: var(--radius-sm);
  padding: 18px; box-shadow: var(--shadow-sm);
}
.wd-kpi b {
  display: block; font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; font-size: 30px; line-height: 1.1;
  font-variant-numeric: tabular-nums;
  background: linear-gradient(120deg, #eef2f8 10%, #7db2ff 60%, #5fa8ff);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.wd-kpi span { font-size: 14px; color: var(--muted); letter-spacing: .02em; }
.wd-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.wd-grid > * { min-width: 0; }
.wd-grid.two { grid-template-columns: repeat(2, minmax(0,1fr)); }
.wd-grid.four { grid-template-columns: repeat(4, minmax(0,1fr)); }
.wd-card {
  display: block; background: linear-gradient(180deg, #171d28, #121822);
  border: 1px solid var(--line); border-radius: var(--radius); padding: 22px;
  color: var(--ink); text-decoration: none; box-shadow: var(--shadow-sm);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
  position: relative; overflow: hidden;
}
.wd-card:before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, #2f74e0, rgba(95,168,255,.15));
  transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ease);
}
.wd-card:hover, .wd-card:focus-visible { transform: translateY(-6px); box-shadow: var(--shadow-md); border-color: #33507a; }
.wd-card:hover:before, .wd-card:focus-visible:before { transform: scaleX(1); }
.wd-card h3 { margin: 10px 0 6px; font-size: 22px; }
.wd-card h3 a { text-decoration: none; color: inherit; }
.wd-card p { margin: 0; font-size: 15px; color: var(--muted); max-width: none; }
.wd-card .wd-mini { font-size: 13px; color: var(--blue); font-weight: 600; letter-spacing: .04em; }
.wd-card.plain:hover { transform: none; box-shadow: var(--shadow-sm); }

.wd-badge {
  display: inline-flex; align-items: center; gap: 7px; font-size: 12px; letter-spacing: .09em;
  text-transform: uppercase; font-weight: 600; padding: 5px 10px; border-radius: 999px;
  background: #16263f; color: #a9ccff; border: 1px solid rgba(122,166,255,.28);
}
.wd-badge.gold { background: #2a2113; color: #f0cd86; border-color: rgba(232,178,74,.3); }
.wd-badge.neutral { background: #1a2029; color: #aab4c4; border-color: #2d3646; }

.wd-controls {
  display: flex; flex-wrap: wrap; gap: 16px; align-items: end; margin: 22px 0;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 18px; box-shadow: var(--shadow-sm);
}
.wd-controls label { display: flex; flex-direction: column; gap: 6px; font-size: 14px; color: var(--muted); flex: 1; min-width: 190px; }
.wd-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.wd-controls .wd-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.wd-controls select, .wd-controls input { min-width: 190px; }
.wd-hint { font-size: 14px; color: var(--muted); margin: 0 0 14px; }

/* -- tableaux ------------------------------------------------------------- */
.wd-table-wrap {
  border: 1px solid var(--line); border-radius: var(--radius); overflow: auto;
  background: var(--surface); box-shadow: var(--shadow-sm); max-height: 78vh;
}
table.wd-table { width: 100%; border-collapse: collapse; font-size: 16px; font-variant-numeric: tabular-nums; }
table.wd-table caption { text-align: left; padding: 14px 18px; color: var(--muted); font-size: 14px; }
table.wd-table th, table.wd-table td { padding: 11px 14px; border-bottom: 1px solid var(--line-soft); text-align: left; }
table.wd-table thead th {
  position: sticky; top: 0; z-index: 2; background: #121822; color: var(--ink-2);
  font-size: 13px; text-transform: uppercase; letter-spacing: .07em;
  border-bottom: 1px solid var(--line);
}
table.wd-table tbody tr:nth-child(even) { background: rgba(255,255,255,.015); }
table.wd-table tbody tr:hover { background: rgba(95,168,255,.07); }
table.wd-table td.num, table.wd-table th.num { text-align: right; white-space: nowrap; }
table.wd-table td.rank { color: var(--blue); font-weight: 600; width: 66px; }
table.wd-table a { text-decoration: none; font-weight: 600; }
table.wd-table .wd-flag { display: inline-block; min-width: 42px; color: var(--muted); font-size: 12px; letter-spacing: .06em; }
.wd-nodata { color: var(--muted); font-style: italic; }
.wd-bar { display: block; height: 6px; border-radius: 3px; background: linear-gradient(90deg, #2f74e0, #5fa8ff); margin-top: 5px; }

/* -- graphiques ----------------------------------------------------------- */
.wd-chartbox { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow-sm); }
.wd-chartbox svg { display: block; width: 100%; height: auto; overflow: visible; }
.wd-legend { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; font-size: 14px; color: var(--ink-2); }
.wd-legend i { display: inline-block; width: 16px; height: 4px; border-radius: 2px; margin-right: 7px; vertical-align: middle; }
.wd-scale { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); margin: 10px 0 0; }
.wd-scale i { display: inline-block; width: 26px; height: 12px; border-radius: 3px; border: 1px solid rgba(255,255,255,.08); }
.wd-tip {
  position: fixed; z-index: 80; pointer-events: none; opacity: 0; transform: translate(-50%, -120%);
  background: #0b111c; color: #eef2f8; border: 1px solid #2f4a72; border-radius: 8px;
  padding: 8px 11px; font-size: 14px; line-height: 1.45; box-shadow: var(--shadow-md);
  transition: opacity .15s var(--ease); max-width: 260px;
}
.wd-tip.on { opacity: 1; }
.wd-tip b { color: #9cc6ff; }
.wd-spark { display: block; width: 100%; height: 38px; }
.wd-spark path { fill: none; stroke: #5fa8ff; stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.wd-spark .area { fill: url(#wd-sparkfill); stroke: none; opacity: .5; }

/* -- carte ---------------------------------------------------------------- */
.wd-map { background: radial-gradient(900px 420px at 60% 0%, rgba(47,116,224,.14), transparent 70%), var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow-sm); overflow-x: auto; }
.wd-map svg { display: block; width: 100%; height: auto; min-width: 720px; }
.wd-map .tile { stroke: rgba(10,13,19,.9); stroke-width: .8; cursor: pointer; transition: opacity .2s var(--ease); }
.wd-map .tile:hover, .wd-map .tile:focus { opacity: .78; outline: none; stroke: #fff; stroke-width: 1.4; }
.wd-map .tile.empty { fill: #1a2029; stroke: rgba(10,13,19,.7); cursor: default; }
.wd-map .dot { stroke: rgba(10,13,19,.85); stroke-width: .7; cursor: pointer; }
.wd-map .dot:hover { stroke: #fff; stroke-width: 1.2; }
.wd-map .graticule { fill: none; stroke: rgba(125,178,255,.09); stroke-width: .6; }
.wd-map .frame { fill: none; stroke: rgba(125,178,255,.16); stroke-width: 1; }
.wd-maplabel { font: 600 8px "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; fill: #c6cfdd; pointer-events: none; }

/* -- comparateur ---------------------------------------------------------- */
.wd-compare-head { display: grid; grid-template-columns: 1fr auto 1fr; gap: 18px; align-items: center; margin-bottom: 22px; }
.wd-compare-side { text-align: center; }
.wd-compare-side h2 { margin: 8px 0 4px; font-size: 30px; }
.wd-compare-side p { margin: 0; font-size: 14px; color: var(--muted); }
.wd-vs { font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; font-size: 22px; color: var(--blue); }
.wd-cmp-row { display: grid; grid-template-columns: 1fr; gap: 6px; padding: 16px 0; border-bottom: 1px solid var(--line-soft); }
.wd-cmp-row:last-child { border-bottom: 0; }
.wd-cmp-top { display: flex; justify-content: space-between; gap: 14px; align-items: baseline; flex-wrap: wrap; }
.wd-cmp-top h3 { margin: 0; font-size: 18px; font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; font-weight: 600; }
.wd-cmp-top .wd-unit { font-size: 13px; color: var(--muted); }
.wd-cmp-bars { display: grid; gap: 6px; }
.wd-cmp-bar { display: grid; grid-template-columns: 132px minmax(0,1fr) 150px; gap: 12px; align-items: center; font-size: 15px; }
.wd-cmp-bar .who { color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wd-cmp-bar .track { height: 12px; border-radius: 6px; background: #11161f; border: 1px solid var(--line-soft); overflow: hidden; }
.wd-cmp-bar .fill { height: 100%; border-radius: 6px; background: linear-gradient(90deg, #2f74e0, #5fa8ff); transition: width .5s var(--ease); }
.wd-cmp-bar.b .fill { background: linear-gradient(90deg, #1c56a8, #3d84ef); }
.wd-cmp-bar .val { text-align: right; font-variant-numeric: tabular-nums; }
.wd-cmp-delta { font-size: 14px; color: var(--muted); }
.wd-cmp-delta b { color: var(--blue); }

/* -- fiches pays ---------------------------------------------------------- */
.wd-value {
  font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; font-size: 24px; color: var(--ink);
  font-variant-numeric: tabular-nums; margin: 8px 0 2px; line-height: 1.2;
}
.wd-value.na { font-size: 16px; color: var(--muted); font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; }
.wd-rankline { display: flex; gap: 8px 12px; align-items: center; flex-wrap: wrap; font-size: 14px; color: var(--muted); margin: 4px 0 10px; }
.wd-rankline b { color: var(--blue); font-variant-numeric: tabular-nums; }
.wd-sheet-head { display: flex; gap: 22px; align-items: center; flex-wrap: wrap; }
.wd-iso {
  width: 84px; height: 84px; flex-shrink: 0; display: grid; place-items: center;
  border-radius: 18px; font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; font-size: 26px; letter-spacing: .04em;
  background: linear-gradient(160deg, #1b2534, #12181f);
  border: 1px solid #2f3c50; color: #9cc6ff; box-shadow: var(--shadow-sm);
}
.wd-meta { display: flex; flex-wrap: wrap; gap: 10px 26px; margin: 16px 0 4px; font-size: 15px; color: var(--ink-2); }
.wd-meta div span { color: var(--muted); font-size: 13px; text-transform: uppercase; letter-spacing: .07em; display: block; }
.wd-source {
  border: 1px solid var(--line); border-left: 3px solid var(--blue);
  background: linear-gradient(90deg, #101a2a, #12161e 65%);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: 18px 20px; font-size: 15px; color: var(--ink-2); margin: 26px 0;
}
.wd-source h2, .wd-source h3 { margin-top: 0; font-size: 19px; }
.wd-source dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; margin: 10px 0 0; }
.wd-source dt { color: var(--muted); font-size: 14px; }
.wd-source dd { margin: 0; overflow-wrap: anywhere; }
.wd-source a { word-break: break-word; }
.wd-updated { font-size: 13px; color: var(--muted); letter-spacing: .03em; }
.wd-foot { margin-top: 34px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 14px; color: var(--muted); }

/* -- recherche de pays ---------------------------------------------------- */
.wd-search-list { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin: 16px 0; }
.wd-search-list a {
  display: flex; justify-content: space-between; gap: 10px; align-items: center;
  padding: 12px 15px; border: 1px solid var(--line); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--ink); text-decoration: none; font-size: 16px;
  transition: transform .25s var(--ease), border-color .25s var(--ease), background-color .25s var(--ease);
}
.wd-search-list a:hover { transform: translateY(-2px); border-color: #2f4a72; background: #141c2a; }
.wd-search-list a b { color: var(--muted); font-size: 12px; letter-spacing: .07em; font-weight: 600; }

/* -- univers (accueil commune) ------------------------------------------- */
.universe-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; margin: 26px 0 10px; }
.universe {
  position: relative; display: block; text-decoration: none; color: var(--ink);
  border: 1px solid var(--line); border-radius: 18px; padding: 32px;
  background: linear-gradient(165deg, #171d28, #0f141c);
  box-shadow: var(--shadow-sm); overflow: hidden;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.universe:before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 4px;
  background: linear-gradient(90deg, var(--rsw-gold), rgba(232,178,74,0) 80%);
}
.universe.wd-universe:before { background: linear-gradient(90deg, var(--rsw-blue), rgba(95,168,255,0) 80%); }
.universe:hover, .universe:focus-visible { transform: translateY(-6px); box-shadow: var(--shadow-md); border-color: #33507a; }
.universe h2 { margin: 14px 0 10px; font-size: 31px; }
.universe p { color: var(--ink-2); font-size: 17px; max-width: 46ch; }
.universe ul { margin: 16px 0 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.universe li { font-size: 15px; color: var(--muted); }
.universe li:before { content: "—"; color: var(--rsw-gold); margin-right: 9px; }
.universe.wd-universe li:before { color: var(--rsw-blue); }
.universe .wd-cta { display: inline-block; margin-top: 20px; font-weight: 600; color: var(--blue); }
.universe.gold-universe .wd-cta { color: var(--gold); }
/* L'univers RankScope est doré : son CTA principal reprend l'or au lieu du bleu. */
.universe.gold-universe .wd-cta .button {
  background: linear-gradient(135deg, #b98a2e, #7a5514);
  box-shadow: 0 10px 22px -14px rgba(245,200,106,.85);
  border-color: rgba(245,200,106,.5);
}
.universe.gold-universe .wd-cta .button:hover { background: linear-gradient(135deg, #d2a544, #95681c); }
.universe.gold-universe .wd-cta .button.ghost {
  background: transparent; color: var(--gold); border-color: rgba(245,200,106,.45); box-shadow: none;
}
.universe.gold-universe .wd-cta .button.ghost:hover { background: rgba(245,200,106,.12); color: #fff; }

/* -- accessibilité / divers ---------------------------------------------- */
.wd-skipnote { font-size: 14px; color: var(--muted); }
.wd-err { color: #ffb4a8; font-weight: 600; }
.wd-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ------------------------------------------------------------- responsive */
@media (max-width: 1040px) {
  .wd-grid.four { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .wd-kpis { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .wd-search-list { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 800px) {
  .wd-hero { grid-template-columns: 1fr; gap: 22px; padding-bottom: 26px; }
  .wd-grid, .wd-grid.two, .wd-grid.four { grid-template-columns: 1fr; }
  .universe-grid { grid-template-columns: 1fr; }
  .wd-compare-head { grid-template-columns: 1fr; gap: 8px; }
  .wd-cmp-bar { grid-template-columns: 92px minmax(0,1fr); }
  .wd-cmp-bar .val { grid-column: 1 / -1; text-align: left; padding-left: 104px; }
  .wd-search-list { grid-template-columns: 1fr; }
  .wd-controls label { min-width: 100%; }
  .wd-controls select, .wd-controls input { min-width: 0; }
  .wd-table-wrap { max-height: none; }
  table.wd-table { font-size: 15px; }
  .wd-iso { width: 64px; height: 64px; font-size: 20px; border-radius: 14px; }
  .wd-kpi b { font-size: 25px; }
}
@media (max-width: 480px) {
  .wd-kpis { grid-template-columns: 1fr; }
  .universe { padding: 24px; }
  .wd-cmp-bar { grid-template-columns: 1fr; }
  .wd-cmp-bar .val { padding-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .wd-card, .universe, .wd-search-list a { transition: none; }
  .wm-country, .map-tip, .map-results, .map-ex-btn, .cp-host { transition: none !important; }
}

/* ==================================================================  accueils
   Bande d'introduction compacte (titre court + recherche) puis la carte
   pleine largeur, immédiatement visible dès l'arrivée du visiteur. */
body.home main { padding-top: 4px; }

.home-hero, .portal-hero {
  display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: center;
  justify-content: space-between; padding: 0 0 6px;
}
.hero-text { flex: 1 1 430px; min-width: 0; }
.hero-text .eyebrow { margin: 0; font-size: 12px; }
.hero-text h1 {
  font-size: clamp(24px, 3vw, 34px); line-height: 1.1; letter-spacing: -.03em;
  margin: 3px 0 0; max-width: none;
}
.hero-text .lead {
  font-size: 14px; line-height: 1.35; color: var(--ink-2); margin: 6px 0 0; max-width: none;
}
.portal-hero h1 span[lang="en"] { display: inline; margin: 0; font-size: 1em;
  color: inherit; -webkit-text-fill-color: currentColor; background: none; }

.wd-cta { display: inline-flex; align-items: center; gap: 8px; padding: 12px 20px; border-radius: 12px;
  border: 1px solid #2c3d5c; font-weight: 600; text-decoration: none;
  color: var(--ink); background: #16223a; transition: transform .2s, border-color .2s, background .2s; }
.wd-cta:hover { transform: translateY(-2px); border-color: #4d78b8; background: #1c2c4a; }
.wd-cta.primary { background: linear-gradient(135deg, #2f74e0, #1f4fae); border-color: #3f86f0; color: #fff; }
.wd-cta.primary:hover { background: linear-gradient(135deg, #3f86f0, #2658bd); }

/* -- recherche pays : dans la bande d'introduction, au-dessus de la carte -- */
.map-find { position: relative; flex: 0 1 420px; max-width: 420px; }
.map-find-input { width: 100%; display: block; padding: 10px 12px; border-radius: 11px;
  border: 1px solid var(--line); background: var(--surface); font: inherit; font-size: 15px;
  color: var(--ink); }
.map-find-input::placeholder { color: var(--muted); }
.map-find-input:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
.map-ex { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; margin-top: 7px; }
.map-ex-label { font-size: 12.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.map-ex-btn { border: 1px solid var(--line); background: var(--surface-soft); color: var(--ink-2);
  border-radius: 999px; padding: 4px 11px; font: inherit; font-size: 13px; cursor: pointer;
  transition: border-color .15s, color .15s, background-color .15s; }
.map-ex-btn:hover, .map-ex-btn:focus-visible { border-color: var(--blue); color: var(--ink);
  background: var(--blue-soft); }
.map-results { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; right: 0;
  margin: 0; padding: 6px; list-style: none; background: #0e1520; border: 1px solid var(--line);
  border-radius: 12px; box-shadow: var(--shadow-md); max-height: 296px; overflow: auto; }
.map-results li + li { margin-top: 2px; }
.map-results button { display: flex; width: 100%; gap: 10px; align-items: baseline; flex-wrap: wrap;
  padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--ink);
  font: inherit; font-size: 14.5px; text-align: left; cursor: pointer; }
.map-results button:hover, .map-results button.is-active { background: var(--blue-soft); }
.map-results .mr-name { font-weight: 600; }
.map-results .mr-iso { margin-left: auto; font-size: 12px; color: var(--muted); letter-spacing: .06em; }
.map-results .mr-note { width: 100%; font-size: 11.5px; color: var(--muted); }
.map-results .mr-empty { padding: 9px 10px; font-size: 13.5px; color: var(--muted); }

/* -- fine bandeau d'étiquette au-dessus de la carte -- */
.map-bar { display: flex; flex-wrap: wrap; gap: 2px 24px; align-items: baseline;
  justify-content: space-between; margin-bottom: 4px; }
.map-bar h2 { margin: 0; font-size: 20px; letter-spacing: -.01em; }
.map-hint { display: flex; align-items: center; gap: 9px; margin: 0; font-size: 15px;
  font-weight: 600; color: var(--ink); }
.map-hint-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--blue); flex: 0 0 auto;
  box-shadow: 0 0 0 4px rgba(63, 134, 240, .18); }
.map-hint-alt { display: inline-block; margin-left: 8px; color: var(--muted); font-weight: 500; }

/* -- pile carte : étiquette, carte pleine largeur, panneau compact sous la
   carte, accès rapides. Le panneau n'apparaît qu'après sélection et s'ouvre
   sous la carte avec un espace de séparation maîtrisé (28 px). */
.home-map { display: flex; flex-direction: column; margin: 0 0 10px; }
.home-map .hero-panel { position: static; width: auto; margin-top: 28px; }
.hero-panel[hidden] { display: none; }

/* -- accès rapides sous la carte (les boutons ne monopolisent plus le héros) -- */
.map-quick { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 14px; }
.map-quick .wd-cta { padding: 10px 17px; font-size: 14.5px; border-radius: 11px; }
.map-quick-note { font-size: 13px; color: var(--muted); margin-right: 4px; }

/* -- infobulle de survol : nom du pays + invitation courte */
.map-tip { position: absolute; z-index: 25; left: 0; top: 0; pointer-events: none;
  transform: translate(-50%, -128%); padding: 7px 11px; border-radius: 10px;
  background: rgba(13, 20, 32, .97); border: 1px solid #37557f; box-shadow: var(--shadow-md);
  font-size: 13.5px; color: var(--ink); white-space: nowrap; opacity: 0;
  transition: opacity .12s linear; }
.map-tip.is-on { opacity: 1; }
.map-tip b { display: block; font-size: 14.5px; color: #d7e7ff; }
.map-tip i { display: block; font-style: normal; font-size: 12px; color: #9db4d6; margin-top: 2px; }

.hero-map { position: relative; width: 100%; border-radius: 16px; overflow: hidden;
  background: radial-gradient(120% 140% at 50% 0%, #12203a 0%, #0c1420 70%);
  border: 1px solid var(--line); box-shadow: var(--shadow-md); }
.hero-map-skeleton { min-height: 240px; background:
  repeating-linear-gradient(90deg, transparent 0 82px, rgba(31,58,95,.25) 82px 83px),
  repeating-linear-gradient(0deg, transparent 0 60px, rgba(31,58,95,.18) 60px 61px); }
.hero-map.is-ready .hero-map-skeleton { display: none; }
.worldmap { display: block; width: 100%; height: auto; }
.wm-graticule path { fill: none; stroke: #1f3a5f; stroke-width: .6; opacity: .5; }
.wm-graticule path.wm-eq { stroke: #33558c; opacity: .7; }
.wm-countries { --fill: #2a4a75; }
/* Entités sans fiche pays : silhouette plus sourde, jamais cliquable. */
.wm-land { fill: #121b2a; stroke: #0a111c; stroke-width: .5; }
/* Pays cliquables : contraste net avec le fond, frontières discernables. */
.wm-country { fill: #2a4a75; stroke: #0a111c; stroke-width: .6; transition: fill .16s ease;
  cursor: pointer; }
.wm-country:hover, .wm-country:focus { fill: #5fa5f2; stroke: #bcd8ff; stroke-width: .9;
  outline: none; }
.hero-map a:focus-visible .wm-country { fill: #6fa8ff; stroke: #e2efff; stroke-width: 1.3; }
.hero-map a { cursor: pointer; outline: none; }

.home-section { margin: 40px 0; }
.home-tools { margin-top: 20px; }
.home-section .wd-card h3 { margin-top: 8px; }
.wd-grid.three { grid-template-columns: repeat(3, minmax(0,1fr)); }
.wd-card.infl { border-color: #3a3320; }
.wd-card.infl .gold-mini, .gold-mini { color: var(--gold); }
.wd-foot-note, .wd-foot { font-size: 13px; color: var(--muted); margin-top: 24px; }

/* ------------------------------------------- intégration aux fiches pays */
.wd-influence { margin: 34px 0; padding: 22px; border: 1px solid var(--line);
  border-radius: 16px; background: linear-gradient(180deg, #141c28, #10161f); }
.wd-influence .wd-grid { margin-top: 14px; }
.wd-infl-group { padding: 14px 16px; border: 1px solid var(--line-soft); border-radius: 12px;
  background: #121925; }
.wd-infl-group h3 { margin: 0 0 10px; font-size: 15px; color: var(--blue); letter-spacing: .02em; }
.wd-infl-group ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
.wd-infl-group li { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; }
.wd-infl-group a { color: var(--ink); text-decoration: none; border-bottom: 1px solid transparent; }
.wd-infl-group a:hover { color: var(--blue); border-color: var(--blue); }
.wd-infl-group .wd-mini { color: var(--muted); font-size: 12px; white-space: nowrap; }

/* ------------------------------------------- bloc de traçabilité (influence) */
.trace-block { margin: 14px 0 0; padding: 12px 14px; border-left: 2px solid var(--gold);
  background: #171310; border-radius: 8px; }
.trace-block p { margin: 0 0 6px; font-size: 13px; color: #d8c9a6; }
.trace-block p:last-child { margin-bottom: 0; }
.trace-block b { color: var(--gold); }
.trace-block a { color: var(--blue); }


@media (max-width: 900px) {
  .wd-grid.three { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 620px) {
  .wd-grid.three { grid-template-columns: 1fr; }
  .home-hero .wd-actions { flex-direction: column; align-items: stretch; }
  .wd-cta { justify-content: center; }
  .hero-map-skeleton { min-height: 160px; }
  .wd-infl-group li { flex-direction: column; gap: 2px; }
}

/* ================================================== panneau pays contextuel
   Ouvre à côté de la carte d'accueil et de la page « Carte interactive » :
   statistiques + rangs mondiaux + profils associés, sans navigation. */
/* Accueil : une seule colonne — la carte occupe toute la largeur utile.
   Le panneau pays n'est révélé qu'après sélection (attribut hidden). */
.hero-panel { position: static; }
.hero-panel[hidden] { display: none; }
/* Page « Carte interactive » : carte + colonne latérale. */
.wd-atlas { display: grid; gap: 18px; align-items: start;
  grid-template-columns: minmax(0, 1.55fr) minmax(290px, .85fr); }
.wd-atlas > * { min-width: 0; }
.wd-side { position: sticky; top: 14px; }

/* Panneau sous la carte : hauteur adaptée au contenu, sans défilement interne. */
.hero-panel .cp-host { max-height: none; overflow: visible; }

.cp-host { background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: 14px;
  max-height: calc(100vh - 28px); overflow: auto; }

.cp-toolbar { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.cp-search { flex: 1 1 auto; min-width: 0; display: block; }
.cp-search input { width: 100%; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--surface-soft);
  font: inherit; font-size: 14px; color: var(--ink); }
.cp-search input:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
.cp-close { flex: 0 0 auto; border: 1px solid var(--line); background: var(--surface-soft);
  border-radius: 9px; padding: 8px 10px; font: inherit; font-size: 13px;
  cursor: pointer; color: var(--ink-2); }
.cp-close:hover { background: var(--blue-soft); border-color: var(--blue); }

.cp-head { display: flex; gap: 12px; align-items: flex-start; }
.cp-iso { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center;
  min-width: 46px; height: 46px; padding: 0 6px; border-radius: 12px;
  background: linear-gradient(135deg, #2f74e0, #1f4fae); color: #fff;
  font-weight: 700; font-size: 13px; letter-spacing: .06em; }
.cp-name { margin: 0 0 4px; font-size: 20px; line-height: 1.2; }
.cp-facts { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.55; }

.cp-section { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line-soft); }
.cp-h { margin: 0 0 9px; font-size: 12px; text-transform: uppercase;
  letter-spacing: .07em; color: var(--muted); font-weight: 700; }
.cp-group + .cp-group, .cp-cat + .cp-cat { margin-top: 11px; }
.cp-group h4, .cp-cat h4 { margin: 0 0 6px; font-size: 13px; color: var(--ink-2); font-weight: 600; }
.cp-stats { display: grid; gap: 6px; }
.cp-stat { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px;
  padding: 7px 9px; border: 1px solid var(--line-soft); border-radius: 9px;
  background: var(--surface-soft); }
.cp-stat-name { grid-column: 1; font-size: 13px; color: var(--ink-2); }
.cp-stat-val { grid-column: 2; grid-row: 1; font-size: 14px; font-weight: 700;
  color: var(--ink); text-align: right; white-space: nowrap; }
.cp-stat-meta { grid-column: 1 / -1; font-size: 11.5px; color: var(--muted); }

.cp-cat ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.cp-cat li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px;
  font-size: 14px; padding: 5px 9px; border-radius: 8px; background: var(--surface-soft); }
.cp-cat li a { color: var(--blue); font-weight: 600; text-decoration: none; }
.cp-cat li a:hover, .cp-cat li a:focus-visible { text-decoration: underline; }
.cp-rank { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.cp-note { margin-top: 9px; font-size: 12px; line-height: 1.5; }

.cp-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 15px; }
.cp-actions .wd-cta { padding: 10px 15px; font-size: 14px; border-radius: 10px; }
.cp-src { margin: 12px 0 0; font-size: 11.5px; color: var(--muted); line-height: 1.5; }

/* Pays sélectionné sur la carte (distinction franche par rapport au survol). */
.hero-map a.is-selected .wm-country,
.hero-map a.is-selected .wm-country:hover,
.hero-map a.is-selected .wm-country:focus {
  fill: var(--gold); stroke: #ffe6b4; stroke-width: 1.1;
}
.wd-map a.wm-link { cursor: pointer; }
.wd-map a.wm-link:focus-visible { outline: none; }
.wd-map a.wm-link.is-selected .tile,
.wd-map a.wm-link.is-selected .tile:hover { stroke: var(--gold); stroke-width: 2; }
.wd-map a.wm-link.is-selected .dot,
.wd-map a.wm-link.is-selected .dot:hover { stroke: var(--gold); stroke-width: 2.4; }

@media (max-width: 900px) {
  /* Mobile / tablette : le panneau reste sous la carte, sans hauteur contrainte. */
  .wd-atlas { grid-template-columns: 1fr; }
  .wd-side { position: static; }
  .cp-host { max-height: none; overflow: visible; }
  .map-find { max-width: none; flex: 1 1 100%; }
  /* Panneau en flux, sous la carte, sans hauteur contrainte. */
  .home-map .hero-panel { max-height: none; overflow: visible; }
}
@media (max-width: 620px) {
  .cp-actions { flex-direction: column; }
  .cp-actions .wd-cta { justify-content: center; }
  .cp-stat { grid-template-columns: 1fr; }
  .cp-stat-val { grid-column: 1; grid-row: auto; text-align: left; }
  .map-bar { align-items: stretch; }
  .map-bar h2 { font-size: 19px; }
  .map-quick { flex-direction: column; align-items: stretch; }
  .map-quick .wd-cta { justify-content: center; }
  .map-quick-note { text-align: center; margin: 0 0 2px; }
  .map-results { position: static; margin-top: 8px; max-height: 240px; box-shadow: none; }
}

/* ============================================================= typographie
   IBM Plex Sans (variable) — auto-hébergée, SIL Open Font License 1.1.
   Une seule famille sans empattement, sobre et institutionnelle, remplace
   Fraunces (titres) et Source Sans 3 (textes) sur l'ensemble du portail.
   Placée en fin de feuille : elle surcharge les déclarations de la feuille
   d'origine /_astro/_path_.EX46qRUI.css sans la modifier. */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 100 700; font-display: swap;
  src: url(/fonts/ibm-plex-sans-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 100 700; font-display: swap;
  src: url(/fonts/ibm-plex-sans-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* Harmonisation : texte courant, titres et afficheurs numériques. */
body { font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; }
h1, h2, h3, h4, h5, h6 { font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; }
.hero-card p.big-number,
.statline b,
.rank,
.rank-row h3,
footer strong { font-family: "IBM Plex Sans", "RswCJK", "RswDeva", system-ui, sans-serif; }

/* ================================================== page contact (finition)
   Titre harmonisé et non disproportionné, formulaire centré dans un
   conteneur équilibré, largeur confortable sur ordinateur. */
.contact-page main h1 { font-size: clamp(28px, 3.6vw, 46px); letter-spacing: -0.02em; margin: 16px 0 22px; }
.contact-page .contact { margin: 0 auto; max-width: 660px; }
.contact-page .contact label { gap: 7px; }
.contact-page .contact > * + * { margin-top: 0; }

/* ------------------------------------------- 4. Sélecteur de langue (5 langues)
   Contrôle explicite « globe FR · EN · ES · 中文 · HI ▾ » : on voit d'un coup
   d'œil que le site existe en cinq langues, la langue active est mise en
   évidence, le chevron signale le menu déroulant. Les liens sont relatifs à
   l'origine (voir build/gen_lang.py nav_url) : la prévisualisation locale reste
   locale, la production reste sur son domaine — les URL SEO, elles, restent
   absolues et publiques dans canonical / hreflang / sitemaps. */
nav .langmenu { position: relative; margin: 0; }
nav .langmenu > .langmenu-btn {
  display: inline-flex; align-items: center; gap: 7px;
  list-style: none; cursor: pointer; white-space: nowrap;
  border: 1px solid #2d3646; border-radius: 999px;
  padding: 6px 13px; font-size: 14px; font-weight: 600;
  letter-spacing: .04em; background: var(--surface); color: var(--ink);
  box-shadow: var(--shadow-sm);
  transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease),
              border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
nav .langmenu > .langmenu-btn::-webkit-details-marker { display: none; }
nav .langmenu > .langmenu-btn::marker { content: ""; }
nav .langmenu > .langmenu-btn:hover,
nav .langmenu[open] > .langmenu-btn {
  background: var(--copper); color: #14171c; border-color: var(--copper);
  transform: translateY(-2px);
}
nav .langmenu > .langmenu-btn:focus-visible { color: var(--ink); outline: 2px solid var(--blue); outline-offset: 2px; }
nav .langmenu[open] > .langmenu-btn:focus-visible { color: #14171c; }
.langmenu-globe {
  font-size: 15px; line-height: 1;
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji",
               "IBM Plex Sans", sans-serif;
}
.langmenu-codes {
  display: inline-flex; align-items: center; gap: 4px;
  font-variant-numeric: tabular-nums;
}
.langmenu-codes .sep { opacity: .45; font-weight: 500; }
.langmenu-codes .is-on { color: var(--blue); font-weight: 800; text-decoration: underline;
  text-underline-offset: 3px; text-decoration-thickness: 1px; }
nav .langmenu > .langmenu-btn:hover .langmenu-codes .is-on,
nav .langmenu[open] > .langmenu-btn .langmenu-codes .is-on { color: #14171c; }
.langmenu-caret { font-size: 10px; line-height: 1; opacity: .75;
  transform: translateY(1px); transition: transform var(--dur) var(--ease); }
nav .langmenu[open] > .langmenu-btn .langmenu-caret { transform: translateY(1px) rotate(180deg); }
.langmenu-list {
  position: absolute; right: 0; top: calc(100% + 9px); z-index: 5;
  min-width: 246px; max-width: calc(100vw - 24px); margin: 0; padding: 7px;
  list-style: none; background: var(--surface);
  border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow-md);
}
.langmenu-list li + li { margin-top: 2px; }
.langmenu-list a {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; border-radius: 9px;
  color: var(--ink-2); text-decoration: none; font-size: 15px;
}
.langmenu-list a:hover, .langmenu-list a:focus-visible {
  background: var(--blue-soft); color: #fff;
}
.langmenu-list a[aria-current="true"] {
  background: linear-gradient(90deg, rgba(95,168,255,.22), rgba(232,178,74,.14));
  color: #fff; box-shadow: inset 0 0 0 1px rgba(122,166,255,.45);
}
.langmenu-list .langmenu-flag {
  flex: 0 0 auto; font-size: 16px; line-height: 1;
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji",
               "IBM Plex Sans", sans-serif;
}
.langmenu-list .langmenu-name { flex: 1 1 auto; }
.langmenu-list .langmenu-code {
  flex: 0 0 auto; font-size: 11px; letter-spacing: .07em;
  font-variant-numeric: tabular-nums; opacity: .7;
}
.langmenu-list a[aria-current="true"] .langmenu-code { opacity: 1; color: var(--copper); font-weight: 700; }
/* responsive : le contrôle reste entier, sans débordement horizontal */
@media (max-width: 800px) {
  /* Un <details> ouvert peint sa liste dans sa propre couche : sans contexte
     d'empilement (le header est statique sur mobile — _path_.css), la liste
     passerait SOUS le texte de la page. `position: relative` ne déplace rien,
     il crée seulement ce contexte : le menu peint alors au-dessus du contenu,
     sans rétablir le header collant décidé en V6. */
  header { position: relative; z-index: 40; }
  nav .langmenu > .langmenu-btn { font-size: 13px; padding: 5px 11px; gap: 5px; }
  .langmenu-globe { font-size: 14px; }
  .langmenu-codes { gap: 3px; }
  /* menu ouvert à gauche du contrôle : jamais débordant à droite (390 px) */
  .langmenu-list { left: 0; right: auto; min-width: 160px; max-width: calc(100vw - 24px); }
  .langmenu-list a { font-size: 14px; padding: 9px 10px; gap: 9px; }
}
@media (max-width: 480px) {
  nav .langmenu > .langmenu-btn { font-size: 12.5px; padding: 5px 9px; letter-spacing: .01em; }
  .langmenu-codes { gap: 2px; }
}

/* --- familles CJK / Devanagari (V7) --- */
/* == RSW-FONTS-BEGIN (build/fonts.py) == */
@font-face { font-family: "RswCJK"; font-style: normal; font-weight: 400 700;
  font-display: swap; src: url(/fonts/rsw-cjk-31ed3172-1.woff2) format("woff2");
  unicode-range: U+3001, U+3002, U+300A, U+300B, U+4E00, U+4E01, U+4E07, U+4E09-4E0B, U+4E0D, U+4E0E, U+4E13, U+4E14, U+4E16, U+4E1A, U+4E1C, U+4E24, U+4E25, U+4E2A, U+4E2D, U+4E30, U+4E39-4E3B, U+4E3D, U+4E3E, U+4E45, U+4E48, U+4E49, U+4E4B-4E4E, U+4E50, U+4E54, U+4E59, U+4E5D, U+4E5F, U+4E60, U+4E66, U+4E70, U+4E73, U+4E86, U+4E88, U+4E89, U+4E8B, U+4E8C, U+4E8E, U+4E91, U+4E92, U+4E9A, U+4E9B, U+4EA4, U+4EA7, U+4EAC, U+4EBA, U+4EBF-4EC1, U+4ECA, U+4ECB, U+4ECD, U+4ECE, U+4ED6, U+4ED8, U+4EE3, U+4EE5, U+4EEC, U+4EF0, U+4EF6, U+4EF7, U+4EFB, U+4EFD, U+4F01, U+4F0A, U+4F0D, U+4F0F-4F11, U+4F17-4F1A, U+4F20, U+4F24, U+4F26, U+4F2F, U+4F30, U+4F34, U+4F3C, U+4F4D-4F4F, U+4F53, U+4F55, U+4F5B, U+4F5C, U+4F69, U+4F73, U+4F7F, U+4F88, U+4F8B, U+4F9B, U+4F9D, U+4FBF, U+4FC4, U+4FDD, U+4FE1, U+4FEE, U+5019, U+503C, U+5047, U+504F, U+5065, U+5076, U+50A8, U+50CF, U+5143-5145, U+5148, U+5149, U+514B, U+514D, U+5154, U+515A, U+5165, U+5168, U+516B-516D, U+5170, U+5171, U+5173, U+5174, U+5176-5179, U+517B, U+517C, U+5185, U+5188, U+518C, U+518D, U+5199, U+519B, U+519C, U+51B0, U+51B2, U+51B3, U+51B5, U+51B7, U+51C0, U+51C6, U+51E0, U+51E1, U+51EF, U+51F8, U+51FA, U+51FB, U+5206, U+5207, U+5211, U+5217, U+5219-521B, U+521D, U+5220, U+5224, U+5229, U+522B, U+5230, U+5236, U+5237, U+523B, U+5242, U+524D, U+5251, U+526F, U+529B, U+529E-52A1, U+52A8-52AA, U+52B2, U+52B3, U+52BF, U+52D2, U+5305, U+5308, U+5316, U+5317, U+5319, U+5339-533B, U+5341, U+5343, U+5347, U+534A, U+534E, U+534F, U+5355-5357, U+535A, U+5360-5362, U+536B, U+5370, U+5371, U+5373, U+5377, U+537F, U+5382, U+5384-5386, U+538B, U+539A, U+539F, U+53A8, U+53BB, U+53C2, U+53C9, U+53CA, U+53CD, U+53D1, U+53D6-53D9, U+53E0, U+53E3, U+53E4, U+53E6, U+53EA, U+53EF, U+53F0, U+53F2, U+53F3, U+53F6-53F8, U+5404, U+5408, U+5409, U+540C-540E, U+5411, U+5415, U+5426, U+542B, U+542C, U+542F, U+5438, U+5448, U+544A, U+5458, U+5468, U+5473, U+547C, U+547D, U+548C, U+54A8, U+54AC, U+54C1, U+54C8, U+54CD, U+54E5, U+54F2, U+54FA, U+5510, U+552E, U+5544, U+5546, U+5580, U+5584, U+5609, U+5668, U+56DE, U+56E0, U+56E2, U+56F0, U+56F4, U+56FA, U+56FD, U+56FE, U+5706, U+571F, U+5723, U+5728, U+572D, U+5730, U+5733, U+573A, U+5740, U+5747, U+574E-5750, U+5757, U+5761, U+5766, U+578B, U+57C3, U+57CE, U+57D4, U+57DF, U+57F9, U+57FA, U+5802, U+5821, U+582A, U+5851, U+5854, U+585E, U+5883, U+589E, U+58A8, U+58E4, U+58EB, U+58F0, U+5904, U+5907, U+590D, U+590F, U+5915, U+5916, U+591A, U+5927, U+5929-592B, U+592E, U+5931, U+5934, U+5938, U+5947, U+594F, U+5956, U+5960, U+5962, U+5965, U+5973, U+5979, U+597D, U+5982, U+5986, U+5987, U+59C6, U+59CB, U+59D3, U+59D4, U+59FF, U+5A01, U+5A1C, U+5A31, U+5A92, U+5AE9, U+5B50, U+5B54, U+5B57, U+5B58, U+5B5F, U+5B66, U+5B81, U+5B83, U+5B87-5B89, U+5B8C, U+5B8F, U+5B97-5B9C, U+5B9E, U+5BA1, U+5BA2, U+5BA4, U+5BAA, U+5BAB, U+5BB6, U+5BB9, U+5BBE, U+5BC4, U+5BC6, U+5BCC, U+5BDF; }
@font-face { font-family: "RswCJK"; font-style: normal; font-weight: 400 700;
  font-display: swap; src: url(/fonts/rsw-cjk-358cb87c-2.woff2) format("woff2");
  unicode-range: U+5BE8, U+5BF8, U+5BF9, U+5BFB, U+5BFC, U+5BFF, U+5C01, U+5C06, U+5C0A, U+5C0F, U+5C14, U+5C16, U+5C1A, U+5C1D, U+5C31, U+5C3A, U+5C3C, U+5C3D, U+5C3F, U+5C40, U+5C42, U+5C45, U+5C4A, U+5C4B, U+5C4F, U+5C55, U+5C5E, U+5C71, U+5C81, U+5C9B, U+5CB8, U+5CE1, U+5CF0, U+5DDE, U+5DE5, U+5DE6, U+5DE8, U+5DE9, U+5DEE, U+5DF1, U+5DF2, U+5DF4, U+5E01-5E03, U+5E08, U+5E0C, U+5E15, U+5E1D, U+5E26, U+5E2D, U+5E38, U+5E55, U+5E72-5E74, U+5E76, U+5E7F, U+5E8F, U+5E93-5E95, U+5E97, U+5E9C, U+5EA6, U+5EB7, U+5EC9, U+5EF6, U+5EF7, U+5EFA, U+5F00, U+5F0F, U+5F15, U+5F17, U+5F1F, U+5F20, U+5F3A, U+5F52, U+5F53, U+5F55, U+5F62, U+5F6D, U+5F70, U+5F71, U+5F88, U+5F8B, U+5F97, U+5FAA, U+5FAE, U+5FB7, U+5FC3, U+5FC5, U+5FD7, U+5FEB, U+5FF5, U+6001, U+601D, U+6027, U+603B, U+6052, U+6069, U+606F, U+6076, U+6089, U+60A8, U+60C5, U+60D1, U+60E0, U+60F3, U+6108, U+610F, U+611F, U+613F, U+6148, U+6155, U+6208, U+620F-6211, U+6216, U+6218, U+6234, U+6237, U+623F, U+6240, U+624B, U+624E, U+6253, U+6258, U+6267, U+6269, U+626C, U+6279, U+627E-6280, U+6295-6298, U+62A4, U+62A5, U+62B1, U+62BD, U+62C5, U+62C9, U+62D3, U+62DB, U+62DC, U+62DF, U+62E3, U+62E5, U+62E9, U+62EC, U+62FC, U+62FF, U+6301, U+6307, U+6309, U+631D, U+6325, U+632A, U+634F, U+6355, U+6362, U+636E, U+6377, U+6388, U+6392, U+63A2, U+63A5, U+63A7, U+63A8, U+63AA, U+63CF, U+63D0, U+63D2, U+6410, U+641C, U+6458, U+6469, U+6492, U+64AD, U+64B0, U+64CD, U+64CE, U+652F, U+6536, U+6539, U+653E, U+653F, U+6545, U+6548, U+654F, U+6551, U+6559, U+6563, U+6566, U+6570, U+6574, U+6587, U+6590, U+6599, U+65A1, U+65AD, U+65AF, U+65B0, U+65B9, U+65BD, U+65CB, U+65D7, U+65E0, U+65E2, U+65E5-65E8, U+65ED, U+65F6, U+65FA, U+6602, U+6606, U+660E, U+6613, U+661F, U+6620, U+662F, U+663E, U+664B, U+6668, U+666E-6670, U+667A, U+66DD, U+66F2, U+66F4, U+66FC, U+66FF, U+6700, U+6708, U+6709, U+670D, U+6717, U+671B, U+671D, U+671F, U+6728, U+672A, U+672C, U+672F, U+6731, U+673A, U+6742, U+6743, U+6746, U+6749, U+6750, U+6751, U+675C, U+675F, U+6761, U+6765, U+676D, U+677E, U+677F, U+6781, U+6784, U+6790, U+6797, U+679C, U+67B6, U+67CF, U+67D0, U+67D3, U+67E5, U+67EC, U+67F4, U+6807, U+6821, U+6837-6839, U+683C, U+6846, U+6848, U+684C, U+6851, U+6863, U+6865, U+6885, U+68B0, U+68B5, U+68C0, U+68EE, U+6982, U+699C, U+6A21, U+6A2A, U+6B21, U+6B22, U+6B27, U+6B3E, U+6B4C, U+6B63-6B65, U+6BB5, U+6BCF, U+6BD2, U+6BD4, U+6BD5, U+6BDB, U+6C11, U+6C14, U+6C27, U+6C28, U+6C2E, U+6C34, U+6C38, U+6C40-6C42, U+6C47, U+6C49, U+6C57, U+6C60, U+6C64, U+6C76, U+6C7D, U+6C83, U+6C99, U+6CA1, U+6CB3, U+6CB9, U+6CBB, U+6CBF, U+6CCA, U+6CD5, U+6CDB, U+6CE2, U+6CE5, U+6CE8, U+6CF0, U+6D01, U+6D0B, U+6D1B, U+6D1E, U+6D25, U+6D2A, U+6D32, U+6D3B, U+6D3E, U+6D41, U+6D4B, U+6D4E, U+6D66, U+6D77, U+6D85, U+6D88, U+6D89, U+6DA6, U+6DB2, U+6DF1, U+6DF7, U+6DFB, U+6E05, U+6E21, U+6E25, U+6E29, U+6E2F, U+6E38, U+6E7E, U+6E90, U+6EAF, U+6ECB, U+6EE1, U+6EE4, U+6EE9, U+6F14, U+6F58, U+6F5C, U+6F6E, U+6F84, U+6FB3, U+6FC0, U+706B, U+7075, U+70B9, U+70BC, U+70C8, U+70E4, U+70E7, U+70ED, U+70F9, U+7136, U+7167, U+71D5, U+7206, U+7231; }
@font-face { font-family: "RswCJK"; font-style: normal; font-weight: 400 700;
  font-display: swap; src: url(/fonts/rsw-cjk-d374d7fe-3.woff2) format("woff2");
  unicode-range: U+7247, U+7248, U+724C, U+7259, U+725B, U+7269, U+7279, U+72B6, U+72D7, U+72EC, U+730E, U+732E, U+7387, U+738B, U+739B, U+73A9, U+73AF, U+73B0, U+73B2, U+73BB, U+73D1, U+73E0, U+73ED, U+7403, U+7406, U+743C, U+7459, U+745E, U+74DC, U+74E6, U+74F7, U+751F, U+7528, U+7530, U+7531, U+7535, U+7537, U+7538, U+754C, U+7559, U+7565, U+7586, U+7597, U+759F, U+75AB, U+75BE, U+75C5, U+75C7, U+7624, U+764C, U+767B, U+767D, U+767E, U+7684, U+76AE, U+76CA, U+76D1, U+76D6, U+76DB, U+76DF, U+76EE, U+76F4, U+76F8, U+7701, U+770B, U+771F, U+7740, U+7763, U+77A9, U+77E5, U+77E9, U+77ED, U+77F3, U+77F6, U+7801, U+7814, U+7816, U+7827, U+7834, U+7840, U+7845, U+7855, U+786C, U+786E, U+78B1, U+78B3, U+78C1, U+78F7, U+793A, U+793E, U+7956, U+795E, U+798F, U+79BB, U+79C1, U+79CD, U+79D1, U+79D8, U+79EF, U+79F0, U+79FB, U+7A0B, U+7A0D, U+7A0E, U+7A33, U+7A3F, U+7A46, U+7A76, U+7A7A, U+7A81, U+7A9D, U+7ACB, U+7AD9, U+7ADE, U+7AE0, U+7AEF, U+7AF9, U+7B2C, U+7B49, U+7B51, U+7B54, U+7B56, U+7B7E, U+7B80, U+7B97, U+7BA1, U+7C73, U+7C7B, U+7CA4, U+7CAE, U+7CB9, U+7CBE, U+7CD5, U+7CD6, U+7CFB, U+7D22, U+7D27, U+7D2B, U+7E41, U+7EA0, U+7EA2, U+7EA6, U+7EA7, U+7EB3, U+7EB6, U+7EBA, U+7EBD, U+7EBF, U+7EC3, U+7EC4, U+7EC6-7EC8, U+7ECD, U+7ECF, U+7ED3, U+7ED5, U+7ED8, U+7ED9, U+7EDC, U+7EDD, U+7EDF, U+7EE7, U+7EED, U+7EF4, U+7EFC, U+7EFF, U+7F05, U+7F16, U+7F18, U+7F3A, U+7F51, U+7F55, U+7F57, U+7F6E, U+7F72, U+7F8E, U+7FA4, U+7FC1, U+7FF0, U+7FFC, U+8001, U+8003, U+8005, U+800C, U+8010, U+8033, U+8036, U+804C, U+8054, U+8058, U+805A, U+8096, U+80A1, U+80A5, U+80A9, U+80AF, U+80B2, U+80BF, U+80C0, U+80CC, U+80D6, U+80DE, U+80E1, U+80FD, U+8111, U+8131, U+8138, U+814A, U+81A8, U+81EA, U+81F3, U+81F4, U+820C, U+820D, U+822A, U+826F, U+8272, U+827A, U+827E, U+8282, U+829D, U+82A6, U+82AC, U+82AD, U+82AF, U+82B1, U+82C7, U+82CF, U+82D7, U+82F1, U+8303, U+8328, U+8350, U+8363, U+836F, U+8377, U+83AB, U+83B1, U+83B7, U+83DC, U+83F2, U+8403, U+8404, U+8425, U+8428, U+8457, U+8461, U+8463, U+8482, U+8499, U+84EC, U+8651, U+866B, U+86CB, U+878D, U+8815, U+8840, U+884C, U+8854, U+8857, U+8861, U+8863, U+8865, U+8868, U+8896, U+88AB, U+88C1, U+88C5, U+897F, U+8981, U+8986, U+89C1, U+89C2, U+89C4, U+89C6, U+89C8, U+89C9, U+89D2, U+89E3, U+8A00, U+8A89, U+8B66, U+8BA1, U+8BA2, U+8BA4, U+8BA9, U+8BAD, U+8BAE, U+8BB0, U+8BB2, U+8BB7, U+8BB8, U+8BBA, U+8BBE, U+8BBF, U+8BC1, U+8BC4, U+8BC6, U+8BCA, U+8BCD, U+8BD5, U+8BDD, U+8BE2, U+8BE5, U+8BE6, U+8BED, U+8BEF, U+8BF1, U+8BF4, U+8BF7, U+8BF8, U+8BFA, U+8BFB, U+8C01, U+8C03, U+8C1C, U+8C22, U+8C37, U+8C61, U+8D1D, U+8D1F, U+8D21-8D23, U+8D27, U+8D28, U+8D2D, U+8D2F, U+8D38, U+8D39, U+8D3E, U+8D44, U+8D56, U+8D5B, U+8D5E, U+8D64, U+8D6B, U+8D70, U+8D77, U+8D85, U+8D8A, U+8DB3, U+8DC3, U+8DDD, U+8DDF, U+8DE8, U+8DEF, U+8DFB, U+8EAB, U+8F66, U+8F68, U+8F6C, U+8F6F, U+8F7D, U+8F83, U+8F85, U+8F91, U+8F93, U+8F9B, U+8F9E, U+8FA9, U+8FB9, U+8FBE, U+8FC5, U+8FC7, U+8FC8, U+8FCE, U+8FD0, U+8FD1, U+8FD4, U+8FD9, U+8FDB, U+8FDC, U+8FDE, U+8FEA, U+8FED, U+8FF0, U+8FF9, U+8FFD, U+9001, U+9009, U+900A, U+900F, U+9010, U+9012, U+9014, U+901A, U+901F, U+9020, U+903B, U+9053, U+9057, U+9075, U+9080, U+90A3, U+90A6, U+90AE, U+90E8, U+90FD; }
@font-face { font-family: "RswCJK"; font-style: normal; font-weight: 400 700;
  font-display: swap; src: url(/fonts/rsw-cjk-3d8a32c6-4.woff2) format("woff2");
  unicode-range: U+914B, U+914D, U+9152, U+9171, U+9175, U+9176, U+91C7, U+91CA, U+91CC-91CF, U+91D1, U+9488, U+949F, U+94A5, U+94C1, U+94F6, U+94FA, U+94FD, U+94FE, U+9500-9502, U+9519, U+9521, U+952E, U+957F, U+95E8, U+95EA, U+95ED, U+95EE, U+95F4, U+95FB, U+9605, U+962A, U+9632, U+9633, U+963F, U+9640, U+9644-9646, U+964D, U+9650, U+9662, U+9664, U+9669, U+9675, U+9676, U+9686, U+968F, U+9690, U+9699, U+96A7, U+96B6, U+96C4-96C6, U+96F6, U+96F7, U+9700, U+970D, U+975E, U+9762, U+9769, U+9776, U+97E6, U+97E9, U+97F3, U+9875, U+9876, U+9879-987B, U+987E, U+987F, U+9884, U+9886, U+9891, U+9898, U+989D, U+98CE, U+98DF, U+9910, U+996A, U+996E, U+9986, U+9988, U+9996, U+9999, U+9A6C, U+9A71, U+9A76, U+9A7E, U+9A8C, U+9A9A, U+9AA8, U+9AD8, U+9C81, U+9C9C, U+9E1F, U+9E43, U+9EA6, U+9EBB, U+9ECE, U+9ED1, U+9ED8, U+9F50, U+FF01, U+FF08, U+FF09, U+FF0C, U+FF1A, U+FF1B, U+FF1F; }
@font-face { font-family: "RswDeva"; font-style: normal; font-weight: 400 700;
  font-display: swap; src: url(/fonts/rsw-deva-1dc0d61f-1.woff2) format("woff2");
  unicode-range: U+901, U+902, U+905-90A, U+90F-911, U+913-918, U+91A-928, U+92A-930, U+932, U+935-939, U+93C, U+93E-943, U+945, U+947-949, U+94B-94D, U+964; }
/* == RSW-FONTS-END == */
/* == RSW-V8-ENRICHMENT-START == */
/* Ajouts V8 : profils référencés dans les fiches pays (sans rang ni score). */
.wd-infl-group .wd-why { color: var(--ink); font-size: 13px; line-height: 1.45; }
.wd-infl-group .wd-rel { display: inline-block; align-self: flex-start; margin-top: 3px;
  color: var(--muted); font-size: 11px; letter-spacing: .03em; line-height: 1.6;
  border: 1px solid var(--line); border-radius: 999px; padding: 0 8px; }
/* Affichage progressif natif : <details>/<summary>, sans JavaScript,
   utilisable au clavier et par les technologies d'assistance. */
.wd-infl-more { margin: 0; }
.wd-infl-more > summary { display: inline-block; cursor: pointer; list-style: none;
  margin-top: 6px; font-size: 13px; color: var(--blue);
  border-bottom: 1px solid transparent; }
.wd-infl-more > summary::-webkit-details-marker { display: none; }
.wd-infl-more > summary:hover, .wd-infl-more > summary:focus-visible { border-color: var(--blue); }
.wd-infl-more[open] > summary { margin-bottom: 8px; }
.wd-infl-more > ul { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
/* == RSW-V8-ENRICHMENT-END == */
/* Blocs « à valider avant publication » des pages légales V8 : visibles, mais
   clairement séparés du reste du texte — ils signalent les mentions que
   l'éditeur doit arrêter lui-même avant mise en ligne. */
.legal-todo { margin: 12px 0; padding: 12px 16px; border-radius: 0 6px 6px 0;
  border-left: 3px solid var(--copper); background: var(--paper-soft);
  color: var(--ink); font-size: 14px; line-height: 1.6; }
.legal-todo strong { color: #8a4b12; }
/* == RSW-V8-MONETISATION == */
/* Ancres de monétisation — **inertes**. Un élément `.rsw-slot` vide n'a ni
   hauteur, ni marge, ni bordure : il n'apparaît pas dans le flux de lecture et
   ne réserve aucun emplacement visible. Aucun script publicitaire n'est chargé,
   aucun cookie n'est déposé (contrôlé : 0 occurrence). Ces classes ne servent
   qu'à documenter où une unité future pourrait être insérée sans réarchitecture
   ni retouche du contenu éditorial. */
.rsw-slot { margin: 0; padding: 0; border: 0; min-height: 0; }
.rsw-slot-aff { font-size: 13px; color: var(--muted); }
.rsw-disclosure { font-size: 12px; color: var(--muted); font-style: italic; }
/* == RSW-V8-MONETISATION-END == */
