/* ============================================================
   pjdf.fr — Appel aux juifs de France
   Direction « La Tribune » : l'imprimé engagé, aujourd'hui.
   Caractère : Spectral (Production Type, SIL OFL) — auto-hébergé.
   Aucune ressource externe.
   ============================================================ */

@font-face { font-family: 'Spectral'; font-weight: 400; font-style: normal; font-display: swap;
  src: url('/assets/fonts/spectral-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family: 'Spectral'; font-weight: 400; font-style: italic; font-display: swap;
  src: url('/assets/fonts/spectral-latin-400-italic.woff2') format('woff2'); }
@font-face { font-family: 'Spectral'; font-weight: 500; font-style: normal; font-display: swap;
  src: url('/assets/fonts/spectral-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: 'Spectral'; font-weight: 700; font-style: normal; font-display: swap;
  src: url('/assets/fonts/spectral-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family: 'Spectral'; font-weight: 800; font-style: normal; font-display: swap;
  src: url('/assets/fonts/spectral-latin-800-normal.woff2') format('woff2'); }

:root {
  --fond:    #FFFFFF;
  --encre:   #17181B;
  --gris:    #55585F;
  --filet:   #E3E3E6;
  --champ:   #CFCFD4;
  --carmin:  #8F1D2C;
  --carmin-sombre: #741622;
  --carmin-pale:   #F8EEEF;
  --serif: 'Spectral', Georgia, 'Times New Roman', serif;
  --ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--fond);
  color: var(--encre);
  font-family: var(--serif);
  font-size: 1.0625rem;
  line-height: 1.7;
}

.wrap { max-width: 46rem; margin-inline: auto; padding-inline: 1.35rem; }

a { color: var(--carmin); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--carmin-sombre); }

:focus-visible {
  outline: 2px solid var(--carmin);
  outline-offset: 2px;
}

.skiplink {
  position: absolute; left: -999px; top: 0;
  background: var(--encre); color: #fff; padding: .5rem 1rem;
}
.skiplink:focus { left: 0; z-index: 10; }

/* ---------- En-tête & navigation ---------- */
.site-header {
  position: sticky; top: 0; z-index: 5;
  background: rgba(255,255,255,.96);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid var(--filet);
}
.header-inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; padding-block: 1rem; flex-wrap: wrap;
}
.brand {
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--encre);
  text-decoration: none;
}
.brand:hover { color: var(--carmin); }
.site-nav { display: flex; gap: 1.55rem; align-items: center; font-size: .95rem; }
.site-nav a {
  color: var(--encre);
  text-decoration: none;
  font-weight: 500;
  padding-bottom: .2rem;
  border-bottom: 2px solid transparent;
  transition: border-color .15s ease, color .15s ease;
}
.site-nav a:hover { border-color: #C9CACE; }
.site-nav a.actif {
  border-color: var(--carmin);
  font-weight: 700;
}
.site-nav a.nav-cta {
  border: 1.5px solid var(--carmin);
  color: var(--carmin);
  font-weight: 700;
  padding: .42rem 1.05rem;
  border-radius: 3px;
  transition: background-color .15s ease, color .15s ease;
}
.site-nav a.nav-cta:hover { background: var(--carmin-pale); border-color: var(--carmin); }
.site-nav a.nav-cta.actif { background: var(--carmin); color: #fff; }

/* ---------- Fronton de la tribune ---------- */
.tribune-tete {
  text-align: center;
  padding-block: 2.9rem .4rem;
}
.tribune-tete::before {
  content: "";
  display: block;
  border-top: 3px solid var(--encre);
  border-bottom: 1px solid var(--encre);
  height: 5px;
  margin-bottom: 2.6rem;
}
.tribune-tete::after {
  content: "";
  display: block;
  width: 5.5rem;
  border-top: 1px solid var(--encre);
  margin: 2.3rem auto 0;
}
.surtitre {
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--carmin);
  margin: 0 0 1.35rem;
}
h1 {
  font-size: clamp(2.5rem, 6vw, 4.05rem);
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.05;
  margin: 0;
  text-wrap: balance;
  hyphens: none;
}
.sous-titre {
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.2rem, 3vw, 1.5rem);
  color: var(--gris);
  margin: 1.05rem 0 0;
}

/* ---------- Corps de lecture ---------- */
.tribune-corps { padding-block: 2.3rem .5rem; }
.prose {
  font-size: clamp(1.08rem, 1rem + 0.45vw, 1.24rem);
  line-height: 1.75;
}
.prose p {
  margin: 0 0 1.25rem;
  text-align: justify;
  hyphens: auto;
  overflow-wrap: break-word;
}
.prose .chapeau::first-letter {
  font-size: 4.4em;
  font-weight: 800;
  color: var(--carmin);
  float: left;
  line-height: .82;
  padding: .06em .12em 0 0;
}
.prose h2, .tribune-corps h2 {
  font-size: 1.55rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  margin: 2.9rem 0 1rem;
  text-align: left;
}
.prose h2::before, .tribune-corps h2::before {
  content: "";
  display: block;
  width: 2.1rem;
  border-top: 3px solid var(--carmin);
  margin-bottom: .85rem;
}
.prose ul { margin: 0 0 1.25rem; }
.prose li { margin-bottom: .4rem; }
.prose strong { font-weight: 700; }

/* L'envoi final : la strophe au filet */
.envoi {
  margin: 2.8rem 0 2rem;
  padding-left: 1.45rem;
  border-left: 2px solid var(--carmin);
  font-style: italic;
  font-size: 1.3rem;
  line-height: 1.62;
}
.envoi p {
  margin: 0 0 1.05rem;
  text-align: left;
}
.envoi p:last-child { margin-bottom: 0; }

.note-sep { border: 0; border-top: 1px solid var(--filet); margin: 2.5rem 0 1rem; width: 8rem; }
.note { font-size: .88rem; color: var(--gris); text-align: left !important; }

/* Liste ouverte affichee sur la page de l'appel : meme presentation que
   le bloc des premiers signataires, filet carmin compris. */
.bloc-liste { padding-block: .5rem 0; }
.bloc-liste .liste-titre {
  text-align: left;
  border-bottom: 0;
  margin: 1.6rem 0 1.15rem;
}
.bloc-liste .liste-titre::before {
  content: "";
  display: block;
  width: 2.1rem;
  border-top: 3px solid var(--carmin);
  margin: 0 0 .9rem;
}

/* Premiere liste : le premier nom de la partie alphabetique est separe de
   la tete de liste par un espace et un filet discret. Meme typographie
   des deux cotes : la tete est mise en avant par la position, pas par
   la taille. */
.premiers-liste li.debut-alpha,
.signataires.premiers li.debut-alpha {
  margin-top: 1.4rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--filet);
}

/* Liste ouverte en paragraphe continu (effet de masse). Nom en gras,
   qualite en italique grise, separateur carmin. Centre, choix de JL du
   14/09/2026. */
.signataires-masse {
  margin: 0;
  text-align: center;
  line-height: 1.75;
  font-size: 1.02rem;
}
.signataires-masse .sig strong { font-weight: 700; }
.signataires-masse .sig .prof { font-style: italic; color: var(--gris); }
.signataires-masse .sep { color: var(--carmin); margin: 0 .12em 0 .05em; }
/* Premiere liste : le paragraphe alphabetique est separe de la tete de
   liste par un espace et un filet discret. */
.signataires-masse.debut-alpha {
  margin-top: 1.2rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--filet);
}
/* Mot compose insecable, pose par ligne_signataire(). */
.nb { white-space: nowrap; }

/* ---------- Parrainages internationaux ----------
   Même structure que les premiers signataires, marqué par un globe
   dessiné en CSS plutôt que par le filet carmin : c'est ce qui
   distingue les deux catégories au premier coup d'oeil.
   Dessiné, pas en emoji : les emojis ne s'affichent pas sur Windows. */
.bloc-parrains { padding-block: .5rem 0; }
.bloc-parrains .liste-titre {
  text-align: left;
  border-bottom: 0;
  margin: 1.2rem 0 1.15rem;
  display: flex;
  align-items: center;
  gap: .55rem;
}
.bloc-parrains .liste-titre::before {
  content: "";
  display: inline-block;
  flex: 0 0 auto;
  width: 1.15em;
  height: 1.15em;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%238F1D2C" stroke-width="1.7"><circle cx="12" cy="12" r="9.3"/><ellipse cx="12" cy="12" rx="4" ry="9.3"/><line x1="2.7" y1="12" x2="21.3" y2="12"/><line x1="4.6" y1="6.4" x2="19.4" y2="6.4"/><line x1="4.6" y1="17.6" x2="19.4" y2="17.6"/></svg>') no-repeat center / contain;
}
.parrains-liste {
  list-style: none;
  margin: 0; padding: 0;
  text-align: left;
}
.parrains-liste li {
  font-size: 1.17rem;
  line-height: 1.55;
  margin-bottom: .6rem;
}
.parrain-pays { color: var(--gris); font-size: .93em; }

/* ---------- Blocs pilotés (accueil) : premiers signataires & compteur ---------- */
.bloc-premiers { padding-block: .5rem 0; }
.bloc-premiers .liste-titre {
  text-align: left;
  border-bottom: 0;
  margin: 1.2rem 0 1.15rem;
}
.bloc-premiers .liste-titre::before {
  content: "";
  display: block;
  width: 2.1rem;
  border-top: 3px solid var(--carmin);
  margin: 0 0 .9rem;
}
.premiers-liste {
  list-style: none;
  margin: 0; padding: 0;
  text-align: left;
}
.premiers-liste li {
  font-size: 1.17rem;
  line-height: 1.55;
  margin-bottom: .6rem;
}
.compteur-final { text-align: center; padding-block: 2.2rem 3rem; }
.compteur-final p { margin: 0; }
.compteur-final strong {
  display: block;
  font-size: clamp(2.4rem, 6vw, 3.4rem);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--carmin);
  margin-bottom: .3rem;
}
.compteur-final span { font-style: italic; color: var(--gris); font-size: 1.05rem; }

/* ---------- Bloc signer ---------- */
.tribune-signer { text-align: center; padding-block: 1.8rem 1.2rem; }
.btn-signer {
  display: inline-block;
  background: var(--carmin);
  color: #fff;
  font-family: var(--serif);
  font-size: .93rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  text-decoration: none;
  border: none;
  border-radius: 3px;
  padding: 1.02rem 2.5rem;
  cursor: pointer;
  transition: background-color .15s ease;
}
.btn-signer:hover, .btn-signer:focus-visible { background: var(--carmin-sombre); color: #fff; }
.signer-note {
  font-size: .88rem;
  color: var(--gris);
  margin-top: .9rem;
}

/* ---------- Pages étapes (signer, merci, confirmation, légal) ---------- */
.etape { padding-block: 2.7rem 4rem; }
.etape .surtitre { text-align: left; margin-bottom: 1rem; }
.etape h1 {
  font-size: clamp(1.85rem, 4.5vw, 2.5rem);
  text-align: left;
  text-wrap: balance;
}
.exergue {
  font-style: italic;
  font-size: 1.25rem;
  color: var(--gris);
  margin: .6rem 0 1.9rem;
}
.qui-signe {
  font-size: 1.02rem;
  color: var(--encre);
  background: #FBFBFC;
  border: 1px solid var(--filet);
  border-left: 3px solid var(--carmin);
  border-radius: 3px;
  padding: .8rem 1.05rem;
  margin: 0 0 1.9rem;
}
.lien-retour { font-size: .98rem; font-weight: 500; }
.discret { color: var(--gris); font-size: .93em; }

/* ---------- Formulaire ---------- */
.formulaire { margin-top: 1.4rem; }
.grille-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.2rem; }
@media (max-width: 34rem) { .grille-2 { grid-template-columns: 1fr; } }

.champ { margin: 0 0 1.25rem; }
.champ label {
  display: block;
  font-size: .93rem;
  font-weight: 600;
  margin-bottom: .35rem;
}
.champ input {
  width: 100%;
  font-family: var(--serif);
  font-size: 1.05rem;
  color: var(--encre);
  background: #fff;
  border: 1px solid var(--champ);
  border-radius: 3px;
  padding: .66rem .8rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.champ input:focus-visible {
  outline: none;
  border-color: var(--carmin);
  box-shadow: 0 0 0 3px var(--carmin-pale);
}
.champ-aide {
  display: block;
  font-size: .85rem;
  color: var(--gris);
  margin-top: .4rem;
}
.champ-erreur {
  display: block;
  font-size: .88rem;
  color: var(--carmin);
  font-weight: 700;
  margin-top: .4rem;
}
.requis { color: var(--carmin); }
.facultatif { font-weight: 400; color: var(--gris); font-size: .85em; }

.case {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .65rem;
  align-items: start;
  margin: 0 0 1.05rem;
  font-size: 1rem;
}
.case input {
  margin-top: .3rem;
  width: 1.1rem; height: 1.1rem;
  accent-color: var(--carmin);
}
.case label { line-height: 1.55; }
.case .champ-erreur, .case .champ-aide { grid-column: 2; }

.champ-piege {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px; overflow: hidden;
}

.frc-captcha { margin: 1.3rem 0 .3rem; }

.envoi-bloc { margin: 1.5rem 0 .4rem; }
.info-donnees {
  font-size: .85rem;
  color: var(--gris);
  margin: .9rem 0 0;
  text-align: left;
}
.alerte {
  background: var(--carmin-pale);
  border: 1px solid #E2B9BE;
  border-radius: 3px;
  color: var(--carmin-sombre);
  padding: .85rem 1rem;
  font-size: .97rem;
}

/* ---------- Compteur & liste des signataires ---------- */
.compteur-grand { margin: 1.7rem 0 .6rem; }
.compteur-grand strong {
  display: block;
  font-size: clamp(2.8rem, 8vw, 4.4rem);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--carmin);
}
.compteur-grand span { color: var(--gris); font-size: 1rem; font-style: italic; }

.liste-titre {
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .18em;
  color: var(--gris);
  border-bottom: 1px solid var(--filet);
  padding-bottom: .5rem;
  margin: 2.5rem 0 1.05rem;
}
.signataires {
  list-style: none;
  margin: 0; padding: 0;
}
.signataires li {
  margin-bottom: .55rem;
  font-size: 1rem;
}
.signataires.premiers li { font-size: 1.14rem; margin-bottom: .7rem; }
.prof { color: var(--gris); font-style: italic; }

.pagination {
  display: flex; gap: 1.2rem; align-items: baseline;
  font-size: .98rem;
  margin-top: 1.6rem;
}

/* ---------- Diffusion (page merci) ---------- */
.diffusion {
  margin-top: 2.5rem;
  border: 1px solid var(--filet);
  border-radius: 4px;
  padding: 1.5rem 1.6rem 1.6rem;
  background: #FBFBFC;
}
.diffusion h2 {
  font-size: 1.3rem; font-weight: 700; margin: 0 0 .5rem;
}
.copie-bloc { display: flex; gap: .6rem; flex-wrap: wrap; align-items: center; margin: 1.1rem 0; }
.copie-bloc input {
  flex: 1 1 14rem;
  font-family: var(--serif);
  font-size: .98rem;
  padding: .6rem .75rem;
  border: 1px solid var(--champ);
  border-radius: 3px;
  background: #fff;
  color: var(--encre);
}
.btn-copier {
  font-family: var(--serif);
  font-size: .92rem;
  font-weight: 600;
  background: var(--encre);
  color: #fff;
  border: none;
  border-radius: 3px;
  padding: .62rem 1.1rem;
  cursor: pointer;
}
.btn-copier:hover { background: #000; }
.copie-ok { font-size: .9rem; color: var(--carmin); font-weight: 700; }

.partage {
  list-style: none;
  margin: .8rem 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: .55rem;
}
.partage a {
  display: inline-block;
  font-size: .92rem;
  font-weight: 500;
  text-decoration: none;
  color: var(--encre);
  border: 1px solid var(--champ);
  border-radius: 3px;
  padding: .5rem 1.05rem;
  transition: all .15s ease;
}
.partage a:hover { background: var(--encre); border-color: var(--encre); color: #fff; }

/* ---------- Pied de page ---------- */
.site-footer {
  border-top: 1px solid var(--filet);
  margin-top: 2rem;
  padding-block: 1.7rem 2.3rem;
  font-size: .9rem;
  color: var(--gris);
}
.footer-inner { display: flex; flex-wrap: wrap; gap: .6rem 2rem; justify-content: space-between; }
.footer-line { margin: 0; }
.footer-nav { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.footer-nav a { color: var(--gris); }

/* ============================================================
   Espace d'administration (registre utilitaire — sans-serif)
   ============================================================ */
.admin-body {
  background: #F5F5F7;
  font-family: var(--ui);
  font-size: .95rem;
  color: var(--encre);
  margin: 0;
}
.admin-login {
  max-width: 24rem;
  margin: 8vh auto;
  background: #fff;
  border: 1px solid var(--filet);
  border-radius: 6px;
  padding: 2rem;
}
.admin-login h1 { font-size: 1.5rem; font-weight: 700; margin-top: 0; letter-spacing: 0; }
.admin-login .champ input { font-family: var(--ui); font-size: 1rem; border-radius: 4px; }
.admin-login .btn-signer { font-family: var(--ui); letter-spacing: .02em; text-transform: none; font-size: 1rem; border-radius: 4px; padding: .75rem 1.6rem; }

.admin-header { background: var(--encre); color: #fff; }
.admin-header-inner {
  max-width: 78rem; margin-inline: auto; padding: .8rem 1.25rem;
  display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: .6rem;
}
.admin-header nav { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.admin-header nav .nav-actif { color: #fff; font-weight: 600; border-bottom: 3px solid var(--carmin); padding-bottom: 2px; }
.admin-header a { color: #fff; text-decoration: none; }
.admin-header a:hover { text-decoration: underline; }
.admin-header .discret { color: #bbb; }

.admin-main { max-width: 78rem; margin-inline: auto; padding: 1.4rem 1.25rem 4rem; }

.flash {
  background: #EAF5EA; border: 1px solid #86BE86; border-radius: 4px;
  color: #235A23; padding: .7rem 1rem; margin-bottom: 1.2rem;
}

/* Cartes de la moderation : chaque carte affiche un nombre ET filtre la
   liste. Une seule rangee, sous le selecteur de tribune dont elle depend. */
.stats {
  list-style: none; display: flex; flex-wrap: wrap; gap: .45rem;
  margin: 0 0 1rem; padding: 0;
}
.stats li { display: flex; }
.stats li a {
  display: block;
  background: #fff; border: 1px solid var(--filet); border-radius: 5px;
  padding: .45rem .7rem;
  font-size: .88rem;
  white-space: nowrap;
  text-decoration: none;
  color: var(--encre);
  transition: border-color .12s, background .12s;
}
.stats li a:hover { border-color: var(--carmin); background: var(--carmin-pale); }
.stats strong { color: var(--carmin); font-size: 1.02rem; }
/* Filtre actif : plein encre, pour qu'on sache toujours ce qu'on regarde. */
.stats li a.actif {
  background: var(--encre); border-color: var(--encre); color: #fff;
}
.stats li a.actif strong { color: #fff; }
/* Le total de la ligne, et le seul chiffre visible du public. */
.stats li.stats-total a { background: var(--carmin-pale); border-color: var(--carmin); }
.stats li.stats-total a.actif { background: var(--carmin); border-color: var(--carmin); color: #fff; }
.stats li.stats-total a.actif strong { color: #fff; }
/* Separation entre la composition de la liste et les etats de moderation. */
.stats-sep { margin-left: .9rem; position: relative; }
.stats-sep::before {
  content: ""; position: absolute; left: -.5rem; top: 15%; bottom: 15%;
  border-left: 1px solid var(--filet);
}
@media (max-width: 640px) {
  .stats { gap: .28rem; }
  .stats li a { padding: .32rem .42rem; font-size: .72rem; }
  .stats strong { font-size: .84rem; }
  .stats-sep { margin-left: 0; }
  .stats-sep::before { display: none; }
}

.admin-filtres {
  display: flex; flex-wrap: wrap; gap: .8rem; align-items: center;
  margin-bottom: 1.2rem;
}
.filtres-liens { display: flex; flex-wrap: wrap; gap: .25rem; }
.filtres-liens a {
  text-decoration: none; color: var(--encre);
  padding: .45rem .85rem; border-radius: 4px;
}
.filtres-liens a:hover { background: #ECECEF; }
.filtres-liens a.actif { background: #fff; border: 1px solid var(--champ); font-weight: 600; }
.admin-filtres input[type="search"] {
  padding: .5rem .75rem; border: 1px solid var(--champ); border-radius: 4px; min-width: 15rem;
  font-family: var(--ui);
}
.admin-filtres button {
  padding: .5rem 1rem; border: none; border-radius: 4px;
  background: var(--encre); color: #fff; cursor: pointer; font-weight: 500;
  font-family: var(--ui);
}

.admin-table {
  width: 100%; border-collapse: collapse; background: #fff;
  border: 1px solid var(--filet); border-radius: 6px; overflow: hidden;
}
.admin-table th, .admin-table td {
  text-align: left; vertical-align: top;
  padding: .65rem .8rem; border-bottom: 1px solid var(--filet);
}
.admin-table th {
  font-size: .78rem; text-transform: uppercase; letter-spacing: .06em;
  color: var(--gris); background: #FAFAFB;
}
.admin-table td.actions form { display: flex; flex-wrap: wrap; gap: .35rem; }
.admin-table button {
  font-size: .82rem; padding: .35rem .7rem;
  border: 1px solid var(--champ); border-radius: 4px; background: #fff; cursor: pointer;
  font-family: var(--ui);
}
.admin-table button:hover { border-color: var(--encre); }
.admin-table button.ok { border-color: #2E7D2E; color: #235A23; }
.admin-table button.ok:hover { background: #2E7D2E; color: #fff; }
.admin-table button.ko { border-color: var(--carmin); color: var(--carmin); }
.admin-table button.ko:hover { background: var(--carmin); color: #fff; }
.etoile { color: #C08A00; }

.badge {
  display: inline-block; font-size: .76rem; font-weight: 600;
  padding: .22rem .6rem; border-radius: 999px; border: 1px solid;
  font-family: var(--ui);
}
.badge-attente   { color: #8a6d1a; border-color: #E2CD82; background: #FBF6E4; }
.badge-confirmee { color: #1F3A5F; border-color: #AABDD8; background: #EDF2F9; }
.badge-approuvee { color: #235A23; border-color: #90C290; background: #EAF5EA; }
.badge-rejetee   { color: var(--carmin); border-color: #DFA3AA; background: var(--carmin-pale); }

/* ---------- Divers ---------- */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}
@media print {
  .site-header, .site-footer, .tribune-signer, .nav-cta { display: none; }
  .prose p { text-align: left; }
  .tribune-tete::before { border-color: #000; }
}

/* ---------- Bascule de langue (variante C : drapeau dessiné + code) ---------- */
/* Le drapeau est dessiné en CSS, pas en emoji : Windows n'affiche pas
   les emojis de drapeau et les remplace par deux lettres ("GB", "FR"). */
.bascule-langue {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-left: 1rem;
  padding: .34rem .6rem;
  border: 1px solid var(--gris);
  border-radius: 4px;
  text-decoration: none;
  background: transparent;
  transition: border-color .15s, background .15s;
}
.bascule-langue:hover,
.bascule-langue:focus-visible { border-color: var(--carmin); background: var(--carmin-pale, #F8EEEF); }

.bascule-langue .drapeau {
  display: inline-flex;
  width: 26px;
  height: 18px;
  border-radius: 2px;
  overflow: hidden;
  flex: 0 0 auto;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .12);
}
.bascule-langue .drapeau i { flex: 1 1 0; display: block; }

/* Tricolore français : bleu, blanc, rouge */
.drapeau-fr i:nth-child(1) { background: #0055A4; }
.drapeau-fr i:nth-child(2) { background: #FFFFFF; }
.drapeau-fr i:nth-child(3) { background: #EF4135; }

/* Union Jack simplifié : croix blanche puis croix rouge par-dessus le bleu.
   Les diagonales sont omises volontairement : illisibles à 26 px. */
.drapeau-en {
  background:
    linear-gradient(to bottom, transparent 36%, #C8102E 36%, #C8102E 64%, transparent 64%),
    linear-gradient(to right,  transparent 34%, #C8102E 34%, #C8102E 66%, transparent 66%),
    linear-gradient(to bottom, transparent 24%, #FFFFFF 24%, #FFFFFF 76%, transparent 76%),
    linear-gradient(to right,  transparent 22%, #FFFFFF 22%, #FFFFFF 78%, transparent 78%),
    #012169;
}
.drapeau-en i { background: transparent; }

.bascule-langue .langue-code {
  font-size: .84rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--encre);
  line-height: 1;
}
.bascule-langue:hover .langue-code,
.bascule-langue:focus-visible .langue-code { color: var(--carmin); }

@media (max-width: 640px) {
  .bascule-langue { margin-left: .55rem; padding: .3rem .45rem; gap: .35rem; }
  .bascule-langue .drapeau { width: 22px; height: 15px; }
  .bascule-langue .langue-code { font-size: .78rem; }
}
