/* ------------------------------------------------------------------ *
 * Aube Géopolitique — feuille principale
 * Theme : blanc minimaliste, éditorial. Encre noire, sienne en accent.
 * ------------------------------------------------------------------ */

:root {
  --paper:       #ffffff;
  --paper-soft:  #fafafa;
  --paper-deep:  #f4f4f4;
  --ink:         #0a0a0a;
  --ink-soft:    #2a2a2a;
  --ink-mute:    #6b6b6b;
  --ink-faint:   #a0a0a0;
  --rule:        #e6e6e6;
  --rule-bold:   #0a0a0a;
  --accent:      #a0411f;
  --accent-deep: #6f2c12;

  --ff-display:  "EB Garamond", "Source Serif 4", Georgia, serif;
  --ff-body:     "Source Serif 4", "EB Garamond", Georgia, serif;
  --ff-mono:     "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --col-line:    72ch;
  --rad:         0;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--ff-body);
  font-size: 17px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--rule);
  transition: border-color 120ms ease, color 120ms ease;
}
a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ------------------------------------------------------------------ */
/* Masthead                                                           */
/* ------------------------------------------------------------------ */
.masthead {
  border-bottom: 1px solid var(--rule-bold);
  background: var(--paper);
}
.masthead__inner {
  max-width: 1240px;
  margin: 0 auto;
  padding: 28px 32px 18px;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 24px;
}
.brand {
  display: inline-flex; align-items: baseline; gap: 14px;
  border: none; color: var(--ink);
}
.brand__mark {
  font-family: var(--ff-mono);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.20em;
  padding: 4px 8px;
  border: 1px solid var(--ink);
  background: var(--paper);
}
.brand__name {
  font-family: var(--ff-display);
  font-weight: 600;
  font-size: 38px;
  letter-spacing: -0.015em;
  line-height: 1;
}
.masthead__tagline {
  margin: 8px 0 0;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.masthead__meta {
  display: flex; align-items: center; gap: 22px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.meta-row { display: inline-flex; gap: 6px; align-items: baseline; }
.meta-row__label { color: var(--ink-mute); }
.meta-row__value { color: var(--ink); font-weight: 600; }

.lang-toggle {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.20em;
  padding: 7px 11px;
  border: 1px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
}
.lang-toggle:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

.topnav {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 32px;
  display: flex; gap: 32px;
  border-top: 1px solid var(--rule);
}
.topnav__item {
  border: none;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 0;
  color: var(--ink-mute);
  border-bottom: 1px solid transparent;
}
.topnav__item:hover { color: var(--ink); }
.topnav__item.is-active {
  color: var(--ink);
  border-bottom-color: var(--ink);
}

/* ------------------------------------------------------------------ */
/* Layout                                                             */
/* ------------------------------------------------------------------ */
.layout {
  max-width: 1240px;
  margin: 0 auto;
  padding: 48px 32px 96px;
}

.kicker {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 14px;
}
.display {
  font-family: var(--ff-display);
  font-weight: 600;
  font-size: clamp(36px, 5.4vw, 68px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  margin: 0 0 18px;
  color: var(--ink);
}
.lede, .dek {
  font-family: var(--ff-display);
  font-style: italic;
  font-size: 22px;
  line-height: 1.45;
  color: var(--ink-soft);
  max-width: var(--col-line);
  margin: 0 0 24px;
}
.byline {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0;
}
.byline em { color: var(--ink); font-style: normal; }

.kbd {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
}

.rule {
  display: flex; align-items: center; gap: 16px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 44px 0 22px;
}
.rule::before, .rule::after {
  content: ""; flex: 1; height: 1px; background: var(--rule);
}
.rule span { padding: 0 4px; color: var(--ink); }

.back-link {
  display: inline-block;
  margin-bottom: 22px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  border: none;
}
.back-link:hover { color: var(--accent); }

/* ------------------------------------------------------------------ */
/* Hero / map                                                         */
/* ------------------------------------------------------------------ */
.hero__head { max-width: var(--col-line); margin-bottom: 24px; }
.map {
  height: 580px;
  border: 1px solid var(--rule-bold);
  background: var(--paper);
}
.hero__hint { margin-top: 12px; color: var(--ink-mute); }

/* Switcher de mode carte (heatmap) */
.map-modes {
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
  margin: 0 0 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.map-modes__label {
  margin-right: 6px; color: var(--ink-mute);
  text-transform: uppercase; letter-spacing: 0.18em;
}
.map-modes__btn {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  padding: 6px 10px;
  border: 1px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  cursor: pointer;
}
.map-modes__btn:hover { background: var(--paper-soft); }
.map-modes__btn.is-active { background: var(--ink); color: var(--paper); }
.map-legend {
  margin: 8px 0 0;
  color: var(--ink-mute);
  font-size: 11px;
  letter-spacing: 0.10em;
  min-height: 14px;
}

.leaflet-container {
  background: var(--paper) !important;
  font-family: var(--ff-body) !important;
}
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--ink);
  box-shadow: none;
  border-radius: 0;
}
.leaflet-popup-content { margin: 14px 16px; font-family: var(--ff-body); }
.popup-title {
  font-family: var(--ff-display);
  font-size: 20px;
  font-weight: 600;
  margin: 0 0 4px;
}
.popup-meta {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 8px;
}
.popup-link {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.popup-head {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 12px;
  align-items: start;
  margin-bottom: 8px;
}
.popup-flag {
  width: 56px; height: 42px;
  object-fit: cover;
  border: 1px solid var(--ink);
  display: block;
}
.popup-sub {
  margin: 0 0 8px;
  font-style: italic;
  font-size: 14px;
  color: var(--ink-soft);
}
.popup-sub--muted { color: var(--ink-mute); font-style: normal;
  font-family: var(--ff-mono); font-size: 11px; letter-spacing: 0.10em; text-transform: uppercase; }

/* ------------------------------------------------------------------ */
/* Featured + lists                                                   */
/* ------------------------------------------------------------------ */
.featured { margin-top: 56px; }
.grid-feat {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 32px;
  border-top: 1px solid var(--rule-bold);
  padding-top: 28px;
}
.card-feat {
  border-right: 1px solid var(--rule);
  padding-right: 28px;
}
.card-feat:last-child { border-right: none; }
.card-feat h3 {
  font-family: var(--ff-display);
  font-size: 26px;
  line-height: 1.18;
  margin: 8px 0 12px;
  font-weight: 600;
}
.card-feat h3 a { color: var(--ink); border-bottom-color: transparent; }
.card-feat h3 a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.card-feat .dek { font-size: 16px; margin-bottom: 14px; }

.list-articles {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--rule);
}
.list-articles li {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 22px;
  padding: 22px 0;
  border-bottom: 1px solid var(--rule);
  align-items: baseline;
}
.list-articles__date {
  align-self: start;
  padding-top: 4px;
  color: var(--ink-mute);
  text-transform: uppercase;
  letter-spacing: 0.14em;
}
.list-articles a {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
  border-bottom-color: transparent;
}
.list-articles a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.list-articles__dek {
  margin: 6px 0 0;
  grid-column: 2;
  font-style: italic;
  color: var(--ink-soft);
  font-size: 16px;
}
.list-articles--big li { padding: 28px 0; }
.list-articles--big h2 { margin: 0; font-weight: 400; }
.list-articles--big h2 a {
  font-family: var(--ff-display);
  font-size: 32px;
  font-weight: 600;
  color: var(--ink);
  border-bottom-color: transparent;
}
.list-articles--big h2 a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.list-articles--big .byline { margin-top: 8px; }

.empty {
  font-style: italic;
  color: var(--ink-mute);
  padding: 48px 0;
  text-align: center;
}

/* ------------------------------------------------------------------ */
/* Country grid (index)                                               */
/* ------------------------------------------------------------------ */
.page-head {
  max-width: var(--col-line);
  margin-bottom: 32px;
}
.search {
  width: 100%;
  max-width: 520px;
  font-family: var(--ff-mono);
  font-size: 14px;
  padding: 11px 14px;
  background: var(--paper);
  border: 1px solid var(--ink);
  color: var(--ink);
  outline: none;
  margin-top: 8px;
}
.search:focus { border-color: var(--accent); }

.grid-countries {
  list-style: none; padding: 0; margin: 0;
  border-top: 1px solid var(--rule-bold);
}
.country-row { border-bottom: 1px solid var(--rule); }
.country-row__link {
  display: grid;
  grid-template-columns: 80px 2fr 1.5fr 1.5fr;
  gap: 20px;
  padding: 14px 8px;
  align-items: baseline;
  border-bottom: none;
  color: var(--ink);
}
.country-row__link:hover { background: var(--paper-soft); color: var(--ink); }
.country-row__iso {
  color: var(--ink-mute);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
}
.country-row__name {
  font-family: var(--ff-display);
  font-size: 21px;
  font-weight: 600;
}
.country-row__capital, .country-row__region {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
}

/* ------------------------------------------------------------------ */
/* Country page                                                       */
/* ------------------------------------------------------------------ */
.country__head { max-width: var(--col-line); margin-bottom: 36px; }
.country__flag {
  display: block;
  width: 160px;
  height: auto;
  border: 1px solid var(--ink);
  margin-bottom: 18px;
}

.country__verified {
  display: inline-block;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  border-top: 1px solid var(--ink);
  padding-top: 4px;
  margin-top: 14px;
}

/* Bandeau identité — chiffres-clés haute densité */
.country__strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  border-top: 1px solid var(--rule-bold);
  border-bottom: 1px solid var(--rule-bold);
  margin: 0 0 40px;
}
.country__strip > div {
  padding: 16px 18px;
  border-right: 1px solid var(--rule);
}
.country__strip > div:last-child { border-right: none; }
.country__strip dt {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 6px;
}
.country__strip dd {
  margin: 0;
  font-family: var(--ff-display);
  font-size: 20px;
  font-weight: 600;
  color: var(--ink);
}
.country__strip dd .unit {
  font-family: var(--ff-mono);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  margin-left: 4px;
}

/* Diptyque chefs — portraits */
.leaders {
  margin: 0 0 48px;
}
.leaders__title {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 16px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ink);
}
.leaders__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 28px;
}
.leader {
  margin: 0;
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 20px;
  align-items: start;
}
.leader__img {
  width: 140px;
  height: 180px;
  object-fit: cover;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
  filter: grayscale(0.15) contrast(1.04);
}
.leader__img--blank::after {
  content: "—";
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  font-family: var(--ff-display);
  font-size: 32px;
  color: var(--ink-faint);
}
.leader__cap { margin: 0; padding-top: 4px; }
.leader__role {
  margin: 0 0 6px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.leader__name {
  margin: 0 0 8px;
  font-family: var(--ff-display);
  font-size: 26px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.1;
  color: var(--ink);
}
.leader__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--ink-mute);
}
.leader__meta span + span::before { content: " · "; color: var(--ink-faint); }

/* Section gouvernement — grille de cartouches avec photo */
.gov {
  margin: 0 0 48px;
}
.gov__title {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ink);
  display: flex; justify-content: space-between; align-items: baseline;
}
.gov__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.gov__row {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 14px;
  padding: 14px 16px 14px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
  align-items: start;
}
.gov__row:nth-child(2n) { border-right: none; }
.gov__img {
  width: 64px;
  height: 80px;
  object-fit: cover;
  background: var(--paper-deep);
  border: 1px solid var(--rule-bold);
  filter: grayscale(0.15) contrast(1.04);
}
.gov__img--blank::after {
  content: "—";
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  font-family: var(--ff-display);
  font-size: 18px;
  color: var(--ink-faint);
}
.gov__txt { min-width: 0; }
.gov__role {
  margin: 0 0 4px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  line-height: 1.3;
}
.gov__name {
  margin: 0 0 6px;
  font-family: var(--ff-display);
  font-size: 18px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.15;
}
.gov__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  color: var(--ink-mute);
}
.gov__meta span + span::before { content: " · "; color: var(--ink-faint); }
.gov__tag {
  display: inline-block;
  border: 1px solid var(--ink);
  padding: 1px 6px;
  margin-left: 4px;
  color: var(--ink);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Forces armées — unités militaires recensées */
.mil {
  margin: 0 0 48px;
}
.mil__branches {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 18px;
}
.mil__branch {
  display: inline-flex;
  align-items: baseline;
  border: 1px solid var(--ink);
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.mil__branch-label { padding: 5px 10px; color: var(--ink); }
.mil__branch-count {
  padding: 5px 10px;
  background: var(--ink);
  color: var(--paper);
  font-weight: 600;
}

.mil__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.mil__card {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 12px;
  padding: 12px 14px 12px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
  align-items: start;
}
.mil__card:nth-child(2n) { border-right: none; }
.mil__insignia {
  width: 56px; height: 56px;
  object-fit: contain;
  background: var(--paper-deep);
  border: 1px solid var(--rule-bold);
}
.mil__insignia--blank::after {
  content: "";
  display: block;
  width: 100%; height: 100%;
  background: repeating-linear-gradient(45deg, transparent, transparent 4px, var(--rule) 4px, var(--rule) 5px);
}
.mil__txt { min-width: 0; }
.mil__type {
  margin: 0 0 2px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.mil__name {
  margin: 0 0 4px;
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.15;
}
.mil__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 10px;
  color: var(--ink-mute);
}
.mil__meta span + span::before { content: " · "; color: var(--ink-faint); }
.mil__manual-badge {
  display: inline-block;
  padding: 1px 6px;
  background: var(--ink);
  color: var(--paper);
  font-size: 9px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.mil__manual-badge::before { content: "" !important; }

/* Score composite institut — bandeau verdict */
.score {
  margin: 0 0 32px;
  padding: 20px 24px;
  border: 2px solid var(--ink);
  background: var(--paper);
}
.score--stable    { background: #f1f7ee; border-color: #2c5e1a; }
.score--vigilance { background: #fef9e7; border-color: #7a5a00; }
.score--risque    { background: #fff5f1; border-color: var(--accent); }
.score--crise     { background: #2a0e08; border-color: #2a0e08; color: #fff5f1; }
.score--crise .score__label,
.score--crise .score__verdict,
.score--crise .score__composite,
.score--crise .score__legend,
.score--crise .score__ax-label,
.score--crise .score__ax-value { color: #fff5f1; }

.score__label {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 8px;
}
.score__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid currentColor;
  opacity: 1;
}
.score--stable .score__head    { border-color: #2c5e1a; }
.score--vigilance .score__head { border-color: #7a5a00; }
.score--risque .score__head    { border-color: var(--accent); }
.score--crise .score__head     { border-color: #fff5f1; opacity: 0.4; }

.score__verdict {
  margin: 0;
  font-family: var(--ff-display);
  font-size: 32px;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.score--stable .score__verdict    { color: #2c5e1a; }
.score--vigilance .score__verdict { color: #7a5a00; }
.score--risque .score__verdict    { color: var(--accent-deep); }
.score--crise .score__verdict     { color: #fff5f1; }
.score__composite { margin: 0; }
.score__num {
  font-family: var(--ff-display);
  font-size: 36px;
  font-weight: 600;
}
.score__unit {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-left: 4px;
}

.score__axes {
  list-style: none; padding: 0; margin: 0 0 12px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 8px 24px;
}
.score__axe {
  display: grid;
  grid-template-columns: 100px 1fr 36px;
  gap: 10px;
  align-items: center;
  font-family: var(--ff-mono);
  font-size: 11px;
}
.score__ax-label {
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.score__bar {
  display: block;
  height: 8px;
  background: rgba(0,0,0,0.06);
  border: 1px solid var(--rule);
}
.score--crise .score__bar { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.2); }
.score__bar-fill {
  display: block;
  height: 100%;
  background: var(--ink);
}
.score__bar-fill--inverse { background: var(--accent); }
.score__bar-fill--normal { background: #2c5e1a; }
.score--crise .score__bar-fill--normal { background: #fff5f1; opacity: 0.5; }
.score--crise .score__bar-fill--inverse { background: var(--accent); }
.score__ax-value {
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  text-align: right;
}
.score__legend {
  margin: 12px 0 0;
  color: var(--ink-mute);
  font-size: 10px;
}

/* Capacités militaires quantifiées */
.caps {
  margin: 0 0 48px;
}
.caps__personnel {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  margin: 0 0 22px;
}
.caps__pers-cell {
  padding: 14px 16px;
  border-right: 1px solid var(--rule);
}
.caps__pers-cell:last-child { border-right: none; }
.caps__pers-label {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 4px;
}
.caps__pers-value {
  font-family: var(--ff-display);
  font-size: 28px;
  font-weight: 600;
  margin: 0;
}
.caps__pers-value .unit {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
}

.caps__sec {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 22px 0 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--ink);
}
.caps__list {
  list-style: none; padding: 0; margin: 0;
}
.caps__row {
  display: grid;
  grid-template-columns: 80px 1.6fr 1.4fr;
  gap: 14px;
  align-items: baseline;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.caps__count {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  text-align: right;
  color: var(--ink);
}
.caps__name {
  font-family: var(--ff-display);
  font-size: 16px;
  color: var(--ink);
}
.caps__type {
  font-family: var(--ff-mono);
  font-size: 11px;
  color: var(--ink-mute);
  letter-spacing: 0.06em;
}
.caps__bases {
  margin: 0 0 4px;
  display: flex; flex-wrap: wrap; gap: 6px;
}
.caps__base {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  padding: 4px 10px;
  border: 1px solid var(--ink);
  background: var(--paper);
}
.caps__base--foreign {
  background: var(--ink);
  color: var(--paper);
}
.caps__note {
  margin: 12px 0 0;
  font-style: italic;
  color: var(--ink-mute);
}

/* Posture nucléaire — bandeau coloré selon statut */
.nuclear {
  margin: 0 0 32px;
  padding: 16px 22px;
  border: 1px solid var(--ink);
  position: relative;
}
.nuclear::before {
  content: "";
  position: absolute; top: 0; left: 0; bottom: 0;
  width: 4px;
}
.nuclear--red    { background: #fff5f1; }
.nuclear--red::before    { background: var(--accent); }
.nuclear--amber  { background: #fdf7e8; }
.nuclear--amber::before  { background: #b48a3c; }
.nuclear--gray   { background: var(--paper-soft); }
.nuclear--gray::before   { background: var(--ink-mute); }
.nuclear__label {
  margin: 0 0 8px 8px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 700;
}
.nuclear__main {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: start;
  margin-left: 8px;
}
.nuclear__status {
  margin: 0 0 8px;
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.15;
}
.nuclear__warheads {
  margin: 0 0 6px;
  font-family: var(--ff-body);
  font-size: 14px;
}
.nuclear__num {
  font-family: var(--ff-display);
  font-size: 32px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.nuclear__unit {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-left: 6px;
}
.nuclear__since {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
  margin-left: 10px;
}
.nuclear__doctrine, .nuclear__note {
  margin: 4px 0 0;
  font-family: var(--ff-body);
  font-style: italic;
  font-size: 14px;
  color: var(--ink-soft);
}
.nuclear__triad {
  border-left: 1px solid var(--rule);
  padding-left: 18px;
  min-width: 130px;
}
.nuclear__triad .kbd { display: block; margin-bottom: 4px; color: var(--ink-mute); }
.nuclear__triad ul { list-style: none; padding: 0; margin: 0; }
.nuclear__triad li {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  color: var(--ink);
  padding: 2px 0;
}
.nuclear__triad li::before { content: "● "; color: var(--accent); }

/* Verrous géostratégiques */
.chokes {
  margin: 0 0 48px;
}
.chokes__list {
  list-style: none; padding: 0; margin: 0;
  border-top: 1px solid var(--rule);
}
.chokes__row {
  display: grid;
  grid-template-columns: 130px 1.4fr 2.4fr;
  gap: 14px;
  align-items: baseline;
  padding: 14px 0;
  border-bottom: 1px solid var(--rule);
}
.chokes__role {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-deep);
  font-weight: 600;
}
.chokes__name {
  font-family: var(--ff-display);
  font-size: 19px;
  font-weight: 600;
  color: var(--ink);
}
.chokes__note {
  font-family: var(--ff-body);
  font-size: 14px;
  font-style: italic;
  color: var(--ink-soft);
}
@media (max-width: 760px) {
  .nuclear__main { grid-template-columns: 1fr; }
  .nuclear__triad { border-left: none; border-top: 1px solid var(--rule); padding: 12px 0 0; }
  .chokes__row { grid-template-columns: 1fr; gap: 4px; }
}

/* Bandeau sanctions — bandeau rouge sienne au-dessus des indicateurs */
.sanctions-banner {
  margin: 0 0 32px;
  padding: 18px 22px;
  border: 1px solid var(--accent);
  background: #fff5f1;
  position: relative;
}
.sanctions-banner::before {
  content: "";
  position: absolute; top: 0; left: 0; bottom: 0;
  width: 4px; background: var(--accent);
}
.sanctions-banner__label {
  margin: 0 0 10px 8px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent-deep);
  font-weight: 700;
}
.sanctions-banner__list {
  list-style: none; padding: 0; margin: 0 0 0 8px;
}
.sanctions-banner__list li {
  display: grid;
  grid-template-columns: 110px 1fr auto;
  gap: 14px;
  align-items: baseline;
  padding: 6px 0;
  border-bottom: 1px dashed var(--rule);
}
.sanctions-banner__list li:last-child { border-bottom: none; }
.sanctions-banner__list strong {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.sanctions-banner__detail {
  font-family: var(--ff-body);
  font-size: 14px;
  color: var(--ink);
}
.sanctions-banner__scope {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
  border: 1px solid var(--accent);
  padding: 2px 8px;
  white-space: nowrap;
}

/* Indices de gouvernance + posture militaire */
.indices {
  margin: 0 0 48px;
}
.indices__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.indices__card {
  padding: 16px 18px 16px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}
.indices__card:nth-child(4n) { border-right: none; }
.indices__label {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 6px;
  line-height: 1.4;
}
.indices__value {
  font-family: var(--ff-display);
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.1;
  margin: 0 0 6px;
  color: var(--ink);
}
.indices__value .unit {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
  margin-left: 2px;
  text-transform: uppercase;
}
.indices__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
  display: flex; gap: 10px; flex-wrap: wrap;
}
.indices__badge {
  padding: 2px 8px;
  border: 1px solid var(--ink);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-family: var(--ff-mono);
}
.indices__badge--free { background: #f1f7ee; color: #2c5e1a; border-color: #2c5e1a; }
.indices__badge--partly { background: #fef9e7; color: #7a5a00; border-color: #7a5a00; }
.indices__badge--notfree { background: #fff5f1; color: var(--accent-deep); border-color: var(--accent); }

/* Minerais stratégiques */
.minerals {
  margin: 0 0 48px;
}
.minerals__list {
  list-style: none; padding: 0; margin: 0;
  border-top: 1px solid var(--rule);
}
.minerals__row {
  display: grid;
  grid-template-columns: 60px 1.4fr 70px 1fr 70px;
  gap: 14px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--rule);
}
.minerals__rank {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
}
.minerals__name {
  font-family: var(--ff-display);
  font-size: 17px;
  color: var(--ink);
}
.minerals__share {
  font-family: var(--ff-mono);
  font-size: 12px;
  color: var(--ink);
  text-align: right;
  letter-spacing: 0.06em;
}
.minerals__bar {
  display: block;
  height: 6px;
  background: var(--paper-deep);
  border: 1px solid var(--rule);
}
.minerals__bar-fill {
  display: block;
  height: 100%;
  background: var(--ink);
}
.minerals__year { color: var(--ink-mute); text-transform: uppercase; letter-spacing: 0.14em; text-align: right; }

@media (max-width: 760px) {
  .indices__grid { grid-template-columns: repeat(2, 1fr); }
  .indices__card { border-right: 1px solid var(--rule) !important; }
  .indices__card:nth-child(2n) { border-right: none !important; }
  .minerals__row { grid-template-columns: 50px 1fr 60px; }
  .minerals__row > .minerals__bar, .minerals__row > .minerals__year { display: none; }
  .sanctions-banner__list li { grid-template-columns: 1fr; gap: 4px; }
}

/* Indicateurs économiques — grille type tableau de bord */
.econ {
  margin: 0 0 48px;
}
.econ__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.econ__card {
  padding: 18px 20px 18px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}
.econ__card:nth-child(4n) { border-right: none; }
.econ__label {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 6px;
}
.econ__value {
  font-family: var(--ff-display);
  font-size: 28px;
  font-weight: 600;
  line-height: 1.1;
  color: var(--ink);
  letter-spacing: -0.01em;
  margin: 0 0 6px;
}
.econ__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.econ__year { color: var(--ink-soft); font-weight: 600; }
.econ__trend { color: var(--ink-mute); }

@media (max-width: 760px) {
  .econ__grid { grid-template-columns: repeat(2, 1fr); }
  .econ__card { border-right: 1px solid var(--rule) !important; }
  .econ__card:nth-child(2n) { border-right: none !important; }
}

/* Dépendances commerciales — totals + colonnes exports/imports + partenaires */
.trade {
  margin: 0 0 48px;
}
.trade__totals {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  margin: 0 0 22px;
}
.trade__totals > div {
  padding: 14px 18px;
  border-right: 1px solid var(--rule);
}
.trade__totals > div:last-child { border-right: none; }
.trade__lab {
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 4px;
}
.trade__big {
  font-family: var(--ff-display);
  font-size: 28px;
  font-weight: 600;
  margin: 0;
}
.trade__big--pos { color: #2c5e1a; }
.trade__big--neg { color: var(--accent-deep); }
.trade__big .unit {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.10em;
  color: var(--ink-mute);
}

.trade__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin-bottom: 18px;
}
.trade__sec {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--ink);
}
.trade__list { list-style: none; padding: 0; margin: 0; }
.trade__row {
  display: grid;
  grid-template-columns: 50px 1fr 70px;
  gap: 10px;
  align-items: baseline;
  padding: 7px 0;
  border-bottom: 1px solid var(--rule);
  font-family: var(--ff-body);
  font-size: 14px;
}
.trade__share {
  font-family: var(--ff-display);
  font-size: 18px;
  font-weight: 600;
  text-align: right;
}
.trade__name { color: var(--ink); }
.trade__val {
  font-family: var(--ff-mono);
  font-size: 11px;
  color: var(--ink-mute);
  text-align: right;
}

.trade__partners { list-style: none; padding: 0; margin: 0; }
.trade__partner {
  display: grid;
  grid-template-columns: 32px 1fr 50px 100px;
  gap: 10px;
  align-items: center;
  padding: 6px 0;
  border-bottom: 1px solid var(--rule);
  font-size: 14px;
}
.trade__flag {
  width: 28px; height: 18px; object-fit: cover;
  border: 1px solid var(--ink);
}
.trade__partner-name {
  color: var(--ink); border-bottom-color: transparent;
}
.trade__partner-name:hover { color: var(--accent); border-bottom-color: var(--accent); }
.trade__partner-share {
  font-family: var(--ff-mono);
  font-size: 12px;
  font-weight: 600;
  text-align: right;
}
.trade__partner-bar {
  display: block; height: 6px;
  background: var(--paper-deep);
  border: 1px solid var(--rule);
}
.trade__partner-bar > span {
  display: block; height: 100%;
  background: var(--ink);
}

/* Alignement diplomatique UN */
.alignment {
  margin: 0 0 48px;
}
.alignment__list {
  list-style: none; padding: 0; margin: 0;
  border-top: 1px solid var(--rule);
}
.alignment__row {
  display: grid;
  grid-template-columns: 32px 50px 1fr 60px;
  gap: 12px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.alignment__flag {
  width: 28px; height: 18px; object-fit: cover;
  border: 1px solid var(--ink);
}
.alignment__country {
  font-family: var(--ff-mono);
  font-size: 12px;
  letter-spacing: 0.14em;
  font-weight: 600;
  color: var(--ink);
}
.alignment__bar {
  display: block; height: 10px;
  background: var(--paper-deep);
  border: 1px solid var(--rule);
}
.alignment__fill { display: block; height: 100%; }
.alignment__fill--pos { background: #2c5e1a; }
.alignment__fill--neu { background: #b48a3c; }
.alignment__fill--neg { background: var(--accent); }
.alignment__value {
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  text-align: right;
}

@media (max-width: 760px) {
  .trade__grid { grid-template-columns: 1fr; }
  .trade__totals { grid-template-columns: 1fr; }
  .trade__totals > div { border-right: none; border-bottom: 1px solid var(--rule); }
  .trade__partner { grid-template-columns: 28px 1fr 50px; }
  .trade__partner > .trade__partner-bar { display: none; }
}

/* Bases militaires étrangères / sur sol national */
.bases {
  margin: 0 0 48px;
}
.bases__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  border-top: 1px solid var(--rule);
  padding-top: 14px;
}
.bases__col {
  padding: 4px 0;
}
.bases__sec {
  display: flex; align-items: baseline; justify-content: space-between;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--ink);
}
.bases__count {
  font-family: var(--ff-display);
  font-size: 18px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: 0;
}
.bases__list { list-style: none; padding: 0; margin: 0; }
.bases__row {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
  padding: 7px 0;
  border-bottom: 1px solid var(--rule);
  font-family: var(--ff-body);
  font-size: 14px;
}
.bases__icon {
  width: 26px; height: 26px;
  border: 1px solid var(--ink);
  text-align: center; line-height: 24px;
  font-family: var(--ff-display); font-size: 16px; font-weight: 600;
}
.bases__icon--out { background: var(--paper); color: var(--ink); }
.bases__icon--in { background: var(--ink); color: var(--paper); }
.bases__name { color: var(--ink); align-self: center; }

@media (max-width: 760px) {
  .bases__grid { grid-template-columns: 1fr; gap: 18px; }
}

/* Visites bilatérales */
.visits {
  margin: 0 0 48px;
}
.visits__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  border-top: 1px solid var(--rule);
  padding-top: 14px;
}
.visits__sec {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--ink);
}
.visits__list { list-style: none; padding: 0; margin: 0; }
.visits__row {
  display: grid;
  grid-template-columns: 90px 28px 1fr;
  gap: 10px;
  align-items: start;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.visits__date {
  color: var(--ink-mute);
  letter-spacing: 0.10em;
  padding-top: 3px;
}
.visits__flag {
  width: 26px; height: 18px;
  object-fit: cover;
  border: 1px solid var(--ink);
  margin-top: 2px;
}
.visits__country {
  margin: 0 0 3px;
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}
.visits__country a { color: var(--ink); border-bottom-color: transparent; }
.visits__country a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.visits__subject {
  margin: 0;
  font-family: var(--ff-body);
  font-size: 13px;
  font-style: italic;
  color: var(--ink-soft);
}
@media (max-width: 760px) {
  .visits__grid { grid-template-columns: 1fr; gap: 18px; }
}

/* Fil GDELT */
.gdelt {
  margin: 0 0 48px;
}
.gdelt__list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--rule); }
.gdelt__row {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rule);
  align-items: start;
}
.gdelt__tone {
  width: 52px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  border: 1px solid var(--ink);
}
.gdelt__tone--pos { background: #f1f7ee; color: #2c5e1a; border-color: #2c5e1a; }
.gdelt__tone--neg { background: #fff5f1; color: var(--accent-deep); border-color: var(--accent); }
.gdelt__tone--neu { background: var(--paper-soft); color: var(--ink-mute); }
.gdelt__title {
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  color: var(--ink);
  border-bottom-color: transparent;
  display: block;
  margin-bottom: 4px;
}
.gdelt__title:hover { color: var(--accent); border-bottom-color: var(--accent); }
.gdelt__meta { margin: 0; color: var(--ink-mute); }

/* Traités-clés ratifiés */
.treaties {
  margin: 0 0 48px;
}
.treaties__grid {
  list-style: none; padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.treaties__item {
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 12px;
  align-items: start;
  padding: 12px 16px 12px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}
.treaties__item:nth-child(2n) { border-right: none; }
.treaties__icon {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
  text-align: center;
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--ink);
}
.treaties__item--ratified .treaties__icon { background: #2c5e1a; color: #fff; border-color: #2c5e1a; }
.treaties__item--signed_not_ratified .treaties__icon { background: #fef9e7; color: #7a5a00; border-color: #7a5a00; }
.treaties__item--withdrew .treaties__icon { background: #fff5f1; color: var(--accent-deep); border-color: var(--accent); }
.treaties__item--not_party .treaties__icon { background: var(--paper); color: var(--accent); border-color: var(--accent); }

.treaties__name {
  margin: 0 0 4px;
  font-family: var(--ff-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.2;
}
.treaties__meta {
  margin: 0;
  font-family: var(--ff-mono);
  font-size: 10px;
  color: var(--ink-mute);
  display: flex; gap: 10px;
}
.treaties__status { color: var(--ink-soft); letter-spacing: 0.10em; text-transform: uppercase; }
.treaties__item--ratified .treaties__status { color: #2c5e1a; }
.treaties__item--withdrew .treaties__status { color: var(--accent-deep); }
.treaties__item--not_party .treaties__status { color: var(--accent); }

/* Calendrier électoral + coups d'État */
.elections {
  margin: 0 0 48px;
}
.elections__block {
  margin: 0 0 22px;
  border-top: 1px solid var(--rule);
  padding-top: 12px;
}
.elections__sec {
  margin: 0 0 10px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.elections__sec--next { color: var(--accent-deep); }
.elections__list { list-style: none; padding: 0; margin: 0; }
.elections__row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 16px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--rule);
}
.elections__date {
  color: var(--ink-mute);
  font-weight: 600;
  letter-spacing: 0.10em;
}
.elections__type {
  margin: 0 0 4px;
  font-family: var(--ff-display);
  font-size: 17px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.25;
}
.elections__winner {
  margin: 0 0 4px;
  font-family: var(--ff-body);
  font-size: 14px;
  color: var(--ink-soft);
}
.elections__winner strong { color: var(--ink); }
.elections__stake {
  margin: 0;
  font-family: var(--ff-body);
  font-style: italic;
  font-size: 14px;
  color: var(--ink-soft);
}
.elections__coup {
  margin: 14px 0 0;
  padding: 10px 16px;
  background: #fff5f1;
  border-left: 3px solid var(--accent);
  font-family: var(--ff-body);
  font-size: 14px;
}
.elections__coup-label {
  display: block;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin-bottom: 4px;
}
.elections__coup-text { color: var(--ink); }

/* Société : HDI · inégalités · réfugiés */
.society { margin: 0 0 48px; }
.society__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.society__card {
  padding: 14px 18px;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}
.society__card:last-child { border-right: none; }
.society__card--ref { background: #fdf7e8; }
.society__card--ref-out { background: #fff5f1; }
.society__lab {
  font-family: var(--ff-mono); font-size: 10px;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: var(--ink-mute); margin: 0 0 4px;
}
.society__big {
  font-family: var(--ff-display); font-size: 28px; font-weight: 600;
  margin: 0 0 4px;
}
.society__big .unit {
  font-family: var(--ff-mono); font-size: 11px; font-weight: 400;
  letter-spacing: 0.10em; color: var(--ink-mute);
}
.society__meta {
  margin: 0; font-family: var(--ff-mono); font-size: 10px;
  color: var(--ink-mute); display: flex; gap: 10px;
}

/* Reconnaissances disputées */
.recog { margin: 0 0 48px; }
.recog__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; border-top: 1px solid var(--rule); padding-top: 14px; }
.recog__sec {
  font-family: var(--ff-mono); font-size: 11px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--ink-mute);
  margin: 0 0 10px; padding-bottom: 6px; border-bottom: 1px solid var(--ink);
}
.recog__col--yes .recog__sec { color: #2c5e1a; border-color: #2c5e1a; }
.recog__col--no  .recog__sec { color: var(--accent-deep); border-color: var(--accent); }
.recog__col ul { list-style: none; padding: 0; margin: 0; }
.recog__col li {
  font-family: var(--ff-display); font-size: 16px; padding: 6px 0;
  border-bottom: 1px solid var(--rule);
}
.recog__col--yes li::before { content: "✓ "; color: #2c5e1a; font-weight: 700; }
.recog__col--no  li::before { content: "✗ "; color: var(--accent); font-weight: 700; }
@media (max-width: 760px) { .recog__grid { grid-template-columns: 1fr; gap: 18px; } }

/* Industrie de défense */
.indus { margin: 0 0 48px; }
.indus__head {
  display: grid; grid-template-columns: 220px 1fr; gap: 22px;
  border-top: 1px solid var(--rule); padding-top: 14px; margin-bottom: 18px;
}
.indus__rank-num {
  font-family: var(--ff-display); font-size: 44px; font-weight: 600;
  margin: 4px 0 4px; color: var(--ink); letter-spacing: -0.02em;
}
.indus__doctrine-text {
  font-family: var(--ff-display); font-style: italic;
  font-size: 17px; color: var(--ink-soft); margin: 4px 0 0;
}
.indus__sec-lab { color: var(--ink-mute); margin: 0 0 8px; letter-spacing: 0.20em; text-transform: uppercase; }
.indus__block { margin-bottom: 14px; }
.indus__list { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.indus__pill {
  font-family: var(--ff-mono); font-size: 11px;
  padding: 5px 10px; border: 1px solid var(--ink); background: var(--paper);
}
.indus__pill--prod { background: var(--ink); color: var(--paper); }
@media (max-width: 760px) { .indus__head { grid-template-columns: 1fr; } }

/* Hymne national */
.anthem {
  margin: 0 0 48px;
}
.anthem__body {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
  border-top: 1px solid var(--rule);
  padding: 18px 0 4px;
}
.anthem__name {
  margin: 0 0 6px;
  font-family: var(--ff-display);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--ink);
}
.anthem__meta {
  margin: 0;
  color: var(--ink-mute);
}
.anthem__player {
  width: 320px;
  max-width: 100%;
}
.anthem__player::-webkit-media-controls-panel { background: var(--paper-soft); }

/* Parlement — chambres */
.legis {
  margin: 0 0 48px;
}
.legis__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.legis__card {
  padding: 18px 18px 20px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}
.legis__card:nth-child(odd):last-child { border-right: none; }
.legis__card:nth-child(2n) { border-right: none; }
.legis__name {
  margin: 0 0 8px;
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.2;
}
.legis__seats {
  margin: 0 0 10px;
  font-family: var(--ff-display);
  font-size: 36px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.legis__seats .unit {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin-left: 6px;
}
.legis__speaker {
  margin: 0 0 6px;
  font-family: var(--ff-body);
  font-size: 15px;
  color: var(--ink-soft);
}
.legis__speaker .kbd { margin-right: 8px; }
.legis__inception { margin: 6px 0 0; }

/* Hémicycle SVG */
.legis__hemicycle {
  margin: 4px 0 14px;
  max-width: 100%;
}
.hemicycle {
  width: 100%;
  height: auto;
  display: block;
}

/* Liste des groupes parlementaires */
.legis__parties {
  list-style: none;
  padding: 0;
  margin: 12px 0 0;
  border-top: 1px solid var(--rule);
  padding-top: 10px;
}
.legis__parties li {
  display: grid;
  grid-template-columns: 14px 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 4px 0;
  font-family: var(--ff-mono);
  font-size: 11px;
  color: var(--ink-soft);
}
.legis__swatch {
  display: inline-block;
  width: 12px; height: 12px;
  border: 1px solid var(--ink);
}
.legis__party-name {
  text-transform: none;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.legis__party-seats {
  color: var(--ink);
  font-weight: 600;
}

/* Bandeau alliances */
.alliances {
  margin: 0 0 48px;
}
.alliances h2 {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ink);
}
.alliances ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px 0; }
.alliances li {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  padding: 4px 10px;
  border: 1px solid var(--ink);
  margin: 0 6px 0 0;
  color: var(--ink);
  background: var(--paper);
}

/* Analyse géopolitique d'institut */
.analysis {
  border-top: 2px solid var(--ink);
  padding-top: 28px;
  margin: 0 0 48px;
  max-width: var(--col-line);
}
.analysis__label {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 12px;
}
.analysis__title {
  font-family: var(--ff-display);
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
  margin: 0 0 18px;
  color: var(--ink);
}
.analysis__body {
  font-family: var(--ff-body);
  font-size: 18px;
  line-height: 1.7;
  color: var(--ink-soft);
}
.analysis__body p { margin: 0 0 14px; }
.analysis__body strong { color: var(--ink); }
.analysis__body em { color: var(--ink); }

.country__related { margin-top: 36px; }

/* ------------------------------------------------------------------ */
/* Long-form article                                                  */
/* ------------------------------------------------------------------ */
.long { max-width: var(--col-line); }
.long__head { margin-bottom: 32px; }
.long__body {
  font-family: var(--ff-body);
  font-size: 18px;
  line-height: 1.68;
}
.long__body h2 {
  font-family: var(--ff-display);
  font-size: 28px;
  font-weight: 600;
  margin: 40px 0 14px;
  color: var(--ink);
}
.long__body p { margin: 0 0 16px; }
.long__body em, .long__body strong { color: var(--ink); }
.long__body ul, .long__body ol { padding-left: 24px; }
.long__body li { margin: 6px 0; }
.long__body blockquote {
  margin: 20px 0;
  padding: 6px 20px;
  border-left: 2px solid var(--accent);
  font-style: italic;
  color: var(--ink-soft);
}

.long__refs { margin-top: 44px; }
.ref-countries {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-wrap: wrap; gap: 8px;
}
.ref-countries a {
  font-family: var(--ff-body);
  display: inline-flex; align-items: baseline; gap: 8px;
  padding: 7px 12px;
  border: 1px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  border-radius: 0;
}
.ref-countries a:hover { background: var(--ink); color: var(--paper); }
.ref-countries .kbd { color: inherit; text-transform: uppercase; letter-spacing: 0.14em; }

/* ------------------------------------------------------------------ */
/* Endmatter                                                          */
/* ------------------------------------------------------------------ */
.endmatter {
  margin-top: 80px;
  border-top: 1px solid var(--rule-bold);
  background: var(--paper);
}
.endmatter__inner {
  max-width: 1240px;
  margin: 0 auto;
  padding: 26px 32px;
}
.endmatter__line {
  margin: 0;
  font-family: var(--ff-display);
  font-size: 16px;
  color: var(--ink-soft);
}
.endmatter__line--muted {
  margin-top: 8px;
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.endmatter__line--credibility {
  margin-top: 10px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent-deep);
  font-weight: 600;
}

/* Pricing */
.pricing {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
}
.pricing__plan {
  padding: 24px 22px 28px;
  border-right: 1px solid var(--rule-bold);
  display: flex; flex-direction: column;
  position: relative;
}
.pricing__plan:last-child { border-right: none; }
.pricing__plan--featured { background: var(--paper-soft); }
.pricing__plan--enterprise { background: #0a0a0a; color: #f8f5ed; }
.pricing__plan--enterprise .pricing__name,
.pricing__plan--enterprise .pricing__price,
.pricing__plan--enterprise li { color: #f8f5ed; }
.pricing__plan--enterprise .pricing__lead { color: rgba(248,245,237,0.7); }
.pricing__plan--enterprise .btn-ink { background: transparent; color: #f8f5ed; border-color: #f8f5ed; }
.pricing__plan--enterprise .btn-ink:hover { background: #f8f5ed; color: #0a0a0a; }
.pricing__badge {
  position: absolute; top: 0; right: 0;
  background: var(--accent); color: #fff;
  padding: 4px 10px;
  font-family: var(--ff-mono); font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase; margin: 0;
}
.pricing__name { font-family: var(--ff-display); font-size: 28px; font-weight: 600; margin: 0 0 6px; }
.pricing__price { font-family: var(--ff-display); font-size: 28px; font-weight: 600; margin: 0 0 6px; }
.pricing__price span {
  font-family: var(--ff-mono); font-size: 11px; font-weight: 400;
  letter-spacing: 0.10em; color: var(--ink-mute);
}
.pricing__lead {
  margin: 0 0 16px; font-family: var(--ff-display); font-style: italic;
  font-size: 14px; color: var(--ink-soft);
}
.pricing__plan ul { list-style: none; padding: 0; margin: 0 0 18px; flex: 1; }
.pricing__plan li {
  padding: 7px 0; border-top: 1px solid var(--rule); font-size: 14px; line-height: 1.4;
}
.pricing__plan--enterprise li { border-top-color: rgba(248,245,237,0.15); }
.pricing__plan li::before { content: "· "; color: var(--ink-mute); }
.pricing__cta { width: 100%; text-align: center; display: block; }
.pricing__note { margin: 8px 0 0; text-align: center; color: var(--ink-mute); font-size: 10px; }
.pricing__addons { margin: 48px 0 0; }
.pricing__addons-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 28px; border-top: 1px solid var(--rule); padding-top: 18px;
}
.pricing__addon-price { font-family: var(--ff-display); font-size: 22px; font-weight: 600; margin: 8px 0; }
@media (max-width: 1000px) {
  .pricing { grid-template-columns: 1fr 1fr; }
  .pricing__plan { border-right: none; border-bottom: 1px solid var(--rule-bold); }
}
@media (max-width: 600px) { .pricing { grid-template-columns: 1fr; } }

/* Méthode — table sources */
.methode-tbl {
  width: 100%; border-collapse: collapse; font-size: 13px; margin: 14px 0 24px;
}
.methode-tbl th, .methode-tbl td {
  text-align: left; padding: 8px 10px 8px 0; border-bottom: 1px solid var(--rule);
}
.methode-tbl th {
  font-family: var(--ff-mono); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-mute); border-bottom: 1px solid var(--ink);
}

/* Comité éditorial */
.committee { list-style: none; padding: 0; margin: 12px 0 24px; }
.committee li {
  padding: 14px 18px; border-left: 3px solid var(--ink);
  background: var(--paper-soft); margin-bottom: 10px; font-size: 15px;
}
.committee__open { border-left-color: var(--accent) !important; background: #fff5f1 !important; }

/* ------------------------------------------------------------------ */
/* Comparateur multi-pays                                              */
/* ------------------------------------------------------------------ */
.cmp-picker {
  display: flex; flex-direction: column; gap: 8px;
  margin: 0 0 32px;
  padding: 14px 18px;
  background: var(--paper-soft);
  border: 1px solid var(--rule-bold);
}
.cmp-picker__row {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
}
.cmp-picker select { flex: 1 1 280px; max-width: 420px; }

.cmp-grid {
  display: grid;
  grid-template-columns: 220px repeat(var(--cmp-cols), 1fr);
  gap: 0;
  border-top: 1px solid var(--rule-bold);
}
.cmp-head { display: contents; }
.cmp-head__cell {
  padding: 16px 14px;
  border-bottom: 2px solid var(--ink);
  border-right: 1px solid var(--rule);
  background: var(--paper);
  position: sticky; top: 0; z-index: 5;
}
.cmp-head__cell:last-child { border-right: none; }
.cmp-flag {
  width: 56px; height: auto; max-height: 38px; object-fit: contain;
  border: 1px solid var(--ink); display: block;
  margin: 0 0 8px;
}
.cmp-head__name {
  margin: 0;
  font-family: var(--ff-display);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.15;
}
.cmp-head__name a { color: var(--ink); border-bottom-color: transparent; }
.cmp-head__name a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.cmp-head__iso, .cmp-head__hos { margin: 4px 0 0; color: var(--ink-mute); }

.cmp-section {
  grid-column: 1 / -1;
  margin: 0;
  padding: 14px 14px 6px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  background: var(--paper-soft);
  border-bottom: 1px solid var(--rule);
}

.cmp-row { display: contents; }
.cmp-row__label {
  padding: 12px 14px;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  border-bottom: 1px solid var(--rule);
  background: var(--paper);
}
.cmp-row__val {
  padding: 12px 14px;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
  background: var(--paper);
  font-family: var(--ff-body);
  font-size: 15px;
  line-height: 1.4;
}
.cmp-row__val:last-child { border-right: none; }
.cmp-row__val strong { color: var(--ink); font-weight: 600; }
.cmp-row__val .kbd { color: var(--ink-mute); }

.cmp-pill {
  display: inline-block;
  padding: 3px 10px;
  border: 1px solid var(--ink);
  font-family: var(--ff-mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.cmp-pill--red { border-color: var(--accent); color: var(--accent-deep); background: #fff5f1; }

@media (max-width: 1000px) {
  .cmp-grid { grid-template-columns: 130px repeat(var(--cmp-cols), 1fr); }
  .cmp-row__label, .cmp-head__cell, .cmp-row__val { padding: 10px 8px; font-size: 13px; }
}

/* ------------------------------------------------------------------ */
/* Documentation API                                                   */
/* ------------------------------------------------------------------ */
.docs-endpoint {
  font-family: var(--ff-mono);
  font-size: 16px;
  letter-spacing: 0.04em;
  margin: 28px 0 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ink);
  display: flex; align-items: center; gap: 10px;
}
.docs-method {
  font-size: 11px;
  letter-spacing: 0.18em;
  padding: 3px 9px;
  background: var(--ink);
  color: var(--paper);
}
.docs-tag {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 3px 9px;
  border: 1px solid var(--accent);
  color: var(--accent-deep);
  margin-left: auto;
}
.docs-code {
  font-family: var(--ff-mono);
  font-size: 12.5px;
  line-height: 1.55;
  background: var(--paper-soft);
  border: 1px solid var(--rule);
  padding: 12px 14px;
  margin: 0 0 14px;
  white-space: pre-wrap;
  overflow-x: auto;
}

/* ------------------------------------------------------------------ */
/* Bandeau newsletter                                                  */
/* ------------------------------------------------------------------ */
.news-banner {
  margin: 64px 0 0;
  padding: 36px 32px;
  border-top: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
  background: var(--paper-soft);
}
.news-banner__head { max-width: var(--col-line); }
.news-banner__kicker {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 12px;
}
.news-banner__title {
  font-family: var(--ff-display);
  font-weight: 600;
  font-size: 30px;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0 0 14px;
  max-width: 60ch;
}
.news-banner__dek {
  font-family: var(--ff-display);
  font-style: italic;
  font-size: 17px;
  line-height: 1.5;
  color: var(--ink-soft);
  margin: 0 0 22px;
  max-width: 60ch;
}
.news-banner__form {
  display: flex; gap: 12px; flex-wrap: wrap;
  margin: 0 0 12px;
}
.news-banner__email {
  flex: 1 1 320px;
  font-family: var(--ff-mono);
  font-size: 14px;
  padding: 11px 14px;
  border: 1px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  outline: none;
}
.news-banner__email:focus { border-color: var(--accent); }
.news-banner__btn {
  font-family: var(--ff-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 11px 22px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--paper);
  cursor: pointer;
}
.news-banner__btn:hover { background: var(--accent); border-color: var(--accent); }
.news-banner__btn:disabled { opacity: 0.5; cursor: progress; }
.news-banner__note {
  margin: 0;
  color: var(--ink-mute);
}
.news-banner__thanks {
  font-family: var(--ff-display);
  font-style: italic;
  font-size: 22px;
  color: var(--ink);
  margin: 0;
}

/* Boutons d'action sous article (PDF, citation…) */
.long__actions {
  margin: 36px 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--rule);
}

/* Modale lead magnet */
.lead-modal {
  position: fixed; inset: 0;
  background: rgba(10, 10, 10, 0.6);
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.lead-modal[hidden] { display: none; }
.lead-modal__panel {
  background: var(--paper);
  border: 1px solid var(--ink);
  padding: 36px 36px 28px;
  max-width: 520px;
  width: 100%;
  position: relative;
  box-shadow: 8px 8px 0 var(--ink);
}
.lead-modal__close {
  position: absolute; top: 8px; right: 12px;
  background: none; border: none;
  font-size: 28px; line-height: 1;
  color: var(--ink-mute); cursor: pointer;
}
.lead-modal__close:hover { color: var(--accent); }
.lead-modal__title {
  font-family: var(--ff-display);
  font-size: 26px;
  line-height: 1.2;
  font-weight: 600;
  margin: 0 0 12px;
}
.lead-modal__dek {
  font-family: var(--ff-display);
  font-style: italic;
  font-size: 16px;
  color: var(--ink-soft);
  margin: 0 0 20px;
}
.lead-modal__form {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin: 0 0 12px;
}
.lead-modal__form input { flex: 1 1 220px; }
.lead-modal__note {
  margin: 0;
  color: var(--ink-mute);
  font-size: 10px;
}

/* ------------------------------------------------------------------ */
/* Auteurs / Tags / Admin                                             */
/* ------------------------------------------------------------------ */
.tag-link {
  display: inline-block;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: lowercase;
  padding: 3px 8px;
  margin: 0 6px 4px 0;
  border: 1px solid var(--rule-bold);
  color: var(--ink);
  background: var(--paper);
}
.tag-link:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

.authors-grid {
  list-style: none; padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule-bold);
}
.author-card {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 18px;
  padding: 22px 20px 22px 0;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
  align-items: start;
}
.author-card:nth-child(2n) { border-right: none; }
.author-card__img {
  width: 96px; height: 120px;
  object-fit: cover;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
  filter: grayscale(0.15) contrast(1.04);
}
.author-card__img--blank::after {
  content: ""; display: block; width: 100%; height: 100%;
  background: repeating-linear-gradient(45deg, transparent, transparent 4px, var(--rule) 4px, var(--rule) 5px);
}
.author-card__name {
  font-family: var(--ff-display);
  font-size: 24px;
  font-weight: 600;
  margin: 4px 0 6px;
}
.author-card__name a { color: var(--ink); border-bottom-color: transparent; }
.author-card__name a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.author-card__count { color: var(--ink-mute); }

.author-page__head {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 28px;
  margin-bottom: 36px;
  align-items: start;
}
.author-page__img {
  width: 180px; height: 220px;
  object-fit: cover;
  border: 1px solid var(--ink);
  filter: grayscale(0.15) contrast(1.04);
}

/* Admin */
.admin-form { max-width: 760px; }
.admin-form label {
  display: block;
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 14px 0 6px;
}
.admin-form input[type="text"],
.admin-form input[type="password"],
.admin-form select,
.admin-form textarea {
  width: 100%;
  font-family: var(--ff-mono);
  font-size: 14px;
  padding: 10px 12px;
  border: 1px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
  outline: none;
  border-radius: 0;
}
.admin-form textarea {
  font-family: var(--ff-body);
  font-size: 16px;
  line-height: 1.6;
}
.admin-form input:focus,
.admin-form textarea:focus,
.admin-form select:focus { border-color: var(--accent); }
.admin-form fieldset.admin-form__pair {
  border: 1px solid var(--rule);
  padding: 14px 18px 18px;
  margin: 22px 0;
}
.admin-form__pair legend {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  padding: 0 8px;
}
.admin-form__row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
}

.btn-ink, .btn-line {
  display: inline-block;
  font-family: var(--ff-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 10px 16px;
  border: 1px solid var(--ink);
  cursor: pointer;
  text-decoration: none;
}
.btn-ink { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.btn-ink:hover { background: var(--accent); border-color: var(--accent); }
.btn-line { background: var(--paper); color: var(--ink); }
.btn-line:hover { background: var(--ink); color: var(--paper); }
.btn-line--danger { color: var(--accent); border-color: var(--accent); }
.btn-line--danger:hover { background: var(--accent); color: var(--paper); }

.admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  margin-top: 12px;
}
.admin-table th, .admin-table td {
  text-align: left;
  padding: 10px 12px 10px 0;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
}
.admin-table th {
  font-family: var(--ff-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 400;
}
.admin-table a { border-bottom-color: transparent; }
.admin-table a:hover { color: var(--accent); border-bottom-color: var(--accent); }

.flash {
  padding: 10px 14px;
  margin: 0 0 16px;
  font-family: var(--ff-mono);
  font-size: 12px;
  letter-spacing: 0.10em;
  border: 1px solid var(--ink);
}
.flash--ok { border-color: var(--ink); background: var(--paper-soft); }
.flash--error { border-color: var(--accent); color: var(--accent); }

/* ------------------------------------------------------------------ */
/* Mode impression — fiches imprimables                                */
/* ------------------------------------------------------------------ */
@media print {
  body { background: #fff; color: #000; font-size: 10.5pt; }
  .masthead, .topnav, .endmatter, .news-banner, .gdelt,
  .map-modes, .map-legend, .lead-modal, .long__actions,
  #leadModal, .country__strip + p.kbd, .back-link { display: none !important; }
  .layout { padding: 0 !important; max-width: 100% !important; }
  .display { font-size: 24pt !important; }
  .country__flag { width: 96px !important; }
  .leader__img, .gov__img { filter: grayscale(100%) !important; }
  .legis__hemicycle, .map { display: none !important; }
  a { color: #000 !important; text-decoration: none !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #666; }
  section { page-break-inside: avoid; margin-bottom: 16pt; }
  h2, h3 { page-break-after: avoid; }
  .pricing__plan, .cmp-grid, .gdelt__list { page-break-inside: auto; }
}

/* ------------------------------------------------------------------ */
/* Responsive                                                         */
/* ------------------------------------------------------------------ */
@media (max-width: 760px) {
  .masthead__inner { grid-template-columns: 1fr; gap: 14px; padding: 22px 20px 14px; }
  .masthead__meta { flex-wrap: wrap; gap: 14px; }
  .topnav { gap: 18px; overflow-x: auto; padding: 0 20px; }
  .layout { padding: 32px 20px 64px; }
  .grid-feat { grid-template-columns: 1fr; }
  .card-feat { border-right: none; padding-right: 0; }
  .country__strip { grid-template-columns: repeat(2, 1fr); }
  .country__strip > div:nth-child(2n) { border-right: none; }
  .gov__table th { display: block; width: 100%; padding-bottom: 4px; }
  .gov__table td { display: block; padding-top: 0; padding-bottom: 14px; }
  .country-row__link { grid-template-columns: 60px 1fr; }
  .country-row__capital, .country-row__region { display: none; }
  .map { height: 380px; }
  .list-articles li { grid-template-columns: 1fr; gap: 4px; }
  .list-articles__dek { grid-column: 1; }
  .endmatter__inner { padding: 22px 20px; }
}
