:root{
  --ink:#0d1117;
  --muted:#4d5866;
  --soft:#66717e;
  --line:#e3e6ea;
  --line2:#eef0f2;
  --accent:#8a1c24;
  --accent-soft:#f6efef;
  --paper:#fbfaf8;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--serif);line-height:1.65;-webkit-font-smoothing:antialiased}
.wrap{max-width:1120px;margin:0 auto;padding:0 28px}
a{color:inherit}

/* ===== DRAPEAUX ===== */
.flag{width:18px;height:13.5px;border-radius:2px;display:block;box-shadow:0 0 0 .5px rgba(0,0,0,.18);flex:0 0 auto}
.tflag{width:18px;height:13.5px;border-radius:2px;display:block;box-shadow:0 0 0 .5px rgba(0,0,0,.18);flex:0 0 auto}
.tflag.sm{width:16px;height:12px}
.tflag.lg{width:30px;height:22.5px;border-radius:3px}

/* ===== HEADER ===== */
header.mast{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:100}
.mast-inner{display:grid;grid-template-columns:200px 1fr 200px;align-items:center;padding:15px 0}
.logo{font-family:var(--sans);font-weight:800;font-size:1.62rem;letter-spacing:-.042em;text-decoration:none;white-space:nowrap;justify-self:start;line-height:1}
.logo em{color:var(--accent);font-style:normal}

nav.main{display:flex;align-items:center;justify-content:center;gap:2px;font-family:var(--sans);font-size:.82rem;letter-spacing:.01em}
nav.main > a,.dd > button{background:none;border:0;cursor:pointer;font:inherit;color:var(--muted);text-decoration:none;padding:9px 13px;border-radius:5px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
nav.main > a:hover,.dd > button:hover{color:var(--accent);background:var(--accent-soft)}
nav.main > a.active,.dd.active > button{color:var(--ink);font-weight:700}

.dd{position:relative}
.dd > button::after{content:"";width:5px;height:5px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .18s}
.dd.open > button{color:var(--accent);background:var(--accent-soft)}
.dd.open > button::after{transform:rotate(-135deg) translateY(-1px)}
.dd-menu{position:absolute;top:calc(100% + 9px);left:50%;transform:translateX(-50%) translateY(-6px);min-width:292px;background:#fff;border:1px solid var(--line);border-radius:7px;box-shadow:0 14px 38px rgba(13,17,23,.14);padding:8px;opacity:0;visibility:hidden;transition:all .18s ease}
.dd.open .dd-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.dd-menu a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:5px;text-decoration:none;color:var(--ink);font-size:.86rem}
.dd-menu a:hover{background:var(--accent-soft);color:var(--accent)}
/* Même neutralisation des liserés pour les drapeaux du menu Thèmes,
   sur ordinateur comme dans le menu hamburger mobile. */
.dd-menu .tflag{
  width:18px;height:14px;border-radius:2px;overflow:hidden;
  box-shadow:none;border:0;outline:0;
  transform:translateZ(0);backface-visibility:hidden;
}
.dd-menu a .lbl{flex:1}
.dd-menu a .n{font-family:var(--sans);font-size:.7rem;font-weight:600;color:var(--soft);background:#f1efec;border-radius:999px;padding:2px 9px;min-width:26px;text-align:center}
.dd-menu hr{border:0;border-top:1px solid var(--line);margin:6px 2px}
.dd-menu .all{font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--soft)}

.langswitch{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;font-family:var(--sans);font-size:.73rem;font-weight:700;letter-spacing:.05em;justify-self:end}
.langswitch a{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;text-decoration:none;color:var(--soft);background:#fff;transition:all .15s}
/* Même correction anti-liseré que pour les cartes de thèmes : dimensions
   entières, découpe nette et masque intérieur très discret. */
.langswitch .flag{
  width:18px;height:14px;border-radius:2px;overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(13,17,23,.14);
  transform:translateZ(0);backface-visibility:hidden;
}
.langswitch a.on{background:var(--ink);color:#fff}
.langswitch a:not(.on):hover{color:var(--accent);background:var(--accent-soft)}

.burger{display:none;width:36px;height:32px;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:6px;padding:0;cursor:pointer;justify-self:end;color:var(--muted);transition:color .16s,border-color .16s,background .16s}
.burger:hover{color:var(--accent);border-color:#cfd4da;background:var(--accent-soft)}
.burger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.burger-lines{position:relative;display:block;width:16px;height:12px}
.burger-lines span{position:absolute;left:0;width:16px;height:1.5px;border-radius:999px;background:currentColor;transform-origin:center;transition:top .2s ease,transform .2s ease,opacity .14s ease}
.burger-lines span:nth-child(1){top:0}
.burger-lines span:nth-child(2){top:5px}
.burger-lines span:nth-child(3){top:10px}
.burger.open .burger-lines span:nth-child(1){top:5px;transform:rotate(45deg)}
.burger.open .burger-lines span:nth-child(2){opacity:0;transform:scaleX(.35)}
.burger.open .burger-lines span:nth-child(3){top:5px;transform:rotate(-45deg)}

/* ===== PAGE HEAD ===== */
.pagehead{padding:44px 0 24px;border-bottom:1px solid var(--line)}
.pagehead.slim{padding:38px 0 20px}
.pagehead h1{font-size:2.4rem;line-height:1.12;letter-spacing:-.025em;display:flex;align-items:center;gap:13px;flex-wrap:wrap}
.pagehead p{font-size:1.04rem;color:#3b4652;max-width:700px;margin-top:12px}

/* ===== MANCHETTE EDITORIALE ===== */
.masthead{background:var(--accent);color:#fff;padding:34px 0 30px;position:relative}
.masthead::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--ink)}
.masthead-rule{height:1px;background:rgba(255,255,255,.34)}
.masthead-rule.bottom{margin-top:18px}
.masthead-title{display:block;text-align:center;padding:20px 0 0}
.masthead-main{
  display:block;font-family:var(--serif);font-weight:600;
  font-size:2.65rem;line-height:1.1;letter-spacing:-.022em;color:#fff;
}
.masthead-sub{
  display:flex;align-items:center;justify-content:center;gap:16px;
  font-family:var(--sans);font-size:.735rem;font-weight:600;
  letter-spacing:.32em;text-transform:uppercase;color:rgba(255,255,255,.88);
  margin-top:18px;
}
.masthead-sub::before,.masthead-sub::after{content:"";display:block;width:38px;height:1px;background:rgba(255,255,255,.5)}

/* ===== ACCROCHE ET APPELS A L'ACTION ===== */
.hero{padding:34px 0 32px;border-bottom:1px solid var(--line)}
.hero-lede{font-size:1.06rem;line-height:1.72;color:#3b4652;max-width:680px;text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:.8rem;font-weight:700;letter-spacing:.055em;text-transform:uppercase;text-decoration:none;padding:13px 24px;border-radius:5px;border:1px solid transparent;transition:background .16s,color .16s,border-color .16s,transform .16s}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:#6f161d;transform:translateY(-1px)}
.btn-ghost{background:#fff;color:var(--muted);border-color:var(--line)}
.btn-ghost:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}

/* ===== TYPO ROUGE ===== */
.eyebrow{
  font-family:var(--sans);font-size:.685rem;font-weight:600;
  letter-spacing:.165em;text-transform:uppercase;color:var(--accent);
  margin-bottom:11px;
}
.sectitle{
  font-family:var(--sans);font-size:.705rem;font-weight:600;
  letter-spacing:.165em;text-transform:uppercase;color:var(--ink);
  margin:40px 0 0;padding-bottom:11px;border-bottom:1px solid var(--line);
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
}
.sectitle.nb{border:0;padding-bottom:0;margin:32px 0 0}
.sectitle .more{font-family:var(--sans);font-size:.72rem;font-weight:500;letter-spacing:.04em;text-transform:none;color:var(--accent);text-decoration:none;white-space:nowrap}
.sectitle .more:hover{text-decoration:underline}

/* ===== RECHERCHE ===== */
.searchbar{position:relative;margin:22px 0 0}
.searchbar input{width:100%;padding:13px 44px;border:1px solid var(--line);border-radius:8px;font-family:var(--sans);font-size:.94rem;background:#fff;color:var(--ink)}
.searchbar input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.searchbar .ico{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:16px;height:16px;opacity:.42;pointer-events:none}
.searchbar .clr{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:#f0eeeb;color:var(--soft);cursor:pointer;border-radius:50%;width:24px;height:24px;font-size:.9rem;line-height:1;display:none;font-family:var(--sans)}
.searchbar .clr:hover{background:var(--accent-soft);color:var(--accent)}
.searchbar.has .clr{display:block}
mark{background:#fbeec4;color:inherit;border-radius:2px;padding:0 1px}

.listbar{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:14px;padding-bottom:13px;border-bottom:1px solid var(--line);
}
.srmeta{font-family:var(--sans);font-size:.79rem;color:var(--soft);min-height:19px}
.srmeta b{color:var(--ink);font-weight:600}

.pager{display:flex;align-items:center;gap:5px;font-family:var(--sans)}
.pager button{min-width:32px;height:32px;padding:0 10px;border:1px solid var(--line);background:#fff;border-radius:6px;font:inherit;font-size:.81rem;color:var(--muted);cursor:pointer;transition:all .15s}
.pager button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.pager button.on{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700}
.pager button:disabled{opacity:.35;cursor:default}
.pager .gap{color:var(--soft);padding:0 2px;font-size:.81rem}
.pager.hide{display:none}

/* ===== CARTES THÈMES ===== */
.themegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:22px 0 6px}
.themecard{display:flex;align-items:center;gap:11px;text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:7px;padding:14px 15px;position:relative;overflow:hidden;transition:border-color .18s,transform .18s,box-shadow .18s}
.themecard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);opacity:.16;transition:opacity .18s}
.themecard:hover{border-color:#cfd4da;transform:translateY(-2px);box-shadow:0 8px 22px rgba(13,17,23,.07)}
.themecard:hover::before{opacity:1}
.themecard .tflag{
  width:24px;height:18px;border-radius:2px;overflow:hidden;
  /* Dimensions entieres + masque interieur : evite les filets de sous-pixel
     visibles sur certains ecrans mobiles sans modifier le dessin du drapeau. */
  box-shadow:inset 0 0 0 1px rgba(13,17,23,.14);
  transform:translateZ(0);backface-visibility:hidden;
}
.themecard .tc-txt{min-width:0}
.themecard .tc-name{font-family:var(--sans);font-size:.89rem;font-weight:700;letter-spacing:-.01em;color:var(--ink);display:block;margin-bottom:2px}
.themecard .tc-n{font-family:var(--sans);font-size:.72rem;color:var(--soft)}
.themegrid.compact{grid-template-columns:repeat(5,1fr);gap:9px;padding:18px 0 4px}
.themegrid.compact .themecard{padding:10px 12px;gap:9px}
.themegrid.compact .tflag{width:20px;height:15px}
.themegrid.compact .tc-name{font-size:.8rem;margin-bottom:1px}
.themegrid.compact .tc-n{font-size:.68rem}
.themecard.on{border-color:var(--ink)}
.themecard.on::before{opacity:1}

.chips{display:flex;flex-wrap:wrap;gap:8px;padding:20px 0 2px}
.chips a{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-size:.79rem;text-decoration:none;color:var(--muted);border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 15px 6px 10px;transition:all .15s}
.chips a:hover{border-color:var(--accent);color:var(--accent)}
.chips a.on{background:var(--ink);border-color:var(--ink);color:#fff}
/* Correction ciblée des liserés dans la rangée de thèmes de la page
   Publications et des pages de thème. */
.chips .tflag{
  width:16px;height:12px;border-radius:2px;overflow:hidden;
  box-shadow:none;border:0;outline:0;
  transform:translateZ(0);backface-visibility:hidden;
}

/* ===== LISTE ===== */
.list{padding:4px 0 10px}
/* Hauteur reservee sur les pages dotees d'une recherche. Sans elle, passer de
   dix resultats a un seul fait remonter brutalement le bandeau noir sous les
   yeux du lecteur. Le plancher garantit que la colonne de resultats conserve
   la hauteur d'un ecran : le pied de page reste a sa place pendant la saisie,
   quel que soit le nombre de resultats. */
.listbar + .list{min-height:70vh}
.item{display:grid;grid-template-columns:1fr 200px;gap:32px;padding:26px 0;border-bottom:1px solid var(--line2);align-items:start;position:relative;transition:background .16s}
.item:hover{background:rgba(138,28,36,.018)}
.item.hide{display:none}
.item .tags{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:9px;position:relative;z-index:2}
.item .tag{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-size:.675rem;font-weight:600;
  letter-spacing:.155em;text-transform:uppercase;color:var(--accent);
  line-height:1;text-decoration:none;
}
.item .tag:hover{text-decoration:underline;text-underline-offset:3px}
.item h2{font-size:1.36rem;line-height:1.26;letter-spacing:-.015em;margin-bottom:8px}
.item h2 a{text-decoration:none}
.item h2 a::after{content:"";position:absolute;inset:0;z-index:1}
.item:hover h2 a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.item h2 a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.item .excerpt{font-size:.95rem;color:#414c58;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.item .meta{font-family:var(--sans);font-size:.755rem;color:var(--soft);margin-top:12px;letter-spacing:.02em;display:flex;align-items:center;gap:9px}
.item .meta .sep{width:3px;height:3px;border-radius:50%;background:#c3c9d0;flex:0 0 auto}

.item .thumbwrap{align-self:center;position:relative;z-index:0}
.thumb{display:block;width:100%;aspect-ratio:16/10;border-radius:5px;overflow:hidden;background:#f0ede9;border:1px solid var(--line)}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb.ph{display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(135deg,#f4f1ed,#f4f1ed 9px,#efebe6 9px,#efebe6 18px);font-family:var(--sans);font-size:.64rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:#9aa2ab;text-align:center;padding:8px}

.empty{padding:44px 0;color:var(--soft);font-family:var(--sans);font-size:.92rem;display:none}
.empty.show{display:block}
.empty b{color:var(--ink)}

/* ===== ARTICLE ===== */
/* Retour aux publications. Le conteneur reprend exactement la largeur et les
   marges de l'article : le lien s'aligne ainsi sur la première lettre du titre,
   au lieu de flotter à gauche de la colonne de lecture. Le libellé adopte le
   vocabulaire des autres repères de navigation du site — petites capitales
   espacées, comme « Publication précédente » ou les étiquettes de thème.
   Le bloc est traité comme une ligne de navigation autonome : une respiration
   franche le sépare du titre, de sorte qu'il ne vienne jamais buter dessus. */
.article-nav{max-width:780px;margin:0 auto;padding:34px 28px 30px}
.backlink{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-size:.685rem;font-weight:600;
  letter-spacing:.155em;text-transform:uppercase;
  color:var(--soft);text-decoration:none;
  padding:5px 0;transition:color .16s;
}
.backlink-ico{width:13px;height:13px;flex:0 0 auto;transition:transform .18s}
.backlink:hover{color:var(--accent)}
.backlink:hover .backlink-ico{transform:translateX(-3px)}
.backlink:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.article{max-width:780px;margin:0 auto;padding:0 28px}
.article .tag{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-size:.675rem;font-weight:600;
  letter-spacing:.155em;text-transform:uppercase;color:var(--accent);
  margin:30px 0 12px;line-height:1;text-decoration:none;
}
.article .tag:hover{text-decoration:underline}
/* Suppression ciblée des liserés autour des drapeaux de thème placés au-dessus
   des articles, dans les listes comme sur la page article. Les dimensions
   entières évitent aussi le rendu en demi-pixel, surtout visible sur mobile. */
.item .tag .flag,.item .tag .tflag,
.article .tag .flag,.article .tag .tflag{
  width:18px;height:14px;border-radius:2px;overflow:hidden;
  box-shadow:none;border:0;outline:0;
  transform:translateZ(0);backface-visibility:hidden;
}
.article h1{font-size:2.35rem;line-height:1.14;letter-spacing:-.025em;margin-bottom:16px}
.article .standfirst{font-size:1.13rem;color:#3b4652;margin-bottom:20px}
.article .byline{font-family:var(--sans);font-size:.78rem;color:var(--soft);letter-spacing:.02em;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:30px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.article .byline .sep{width:3px;height:3px;border-radius:50%;background:#c3c9d0}
/* Cadre de l'illustration. Le format 16/10 reprend celui des vignettes de liste
   et correspond aux images recommandées (1200 x 750 px) : l'illustration occupe
   donc le cadre sans recadrage sensible. */
.article .hero{width:100%;aspect-ratio:16/10;border-radius:6px;overflow:hidden;border:1px solid var(--line);margin-bottom:32px;background:repeating-linear-gradient(135deg,#f4f1ed,#f4f1ed 11px,#efebe6 11px,#efebe6 22px);display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#9aa2ab}
/* Lorsqu'une illustration est présente, elle est calée sur les quatre bords du
   cadre. Le positionnement absolu garantit le remplissage quel que soit le
   format du fichier : aucune bande de fond ne peut apparaître. */
.article .hero.has-img{display:block;position:relative;background:none}
.article .hero.has-img img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
/* Hierarchie typographique du corps : les intertitres passent en sans-serif,
   tandis que les sous-titres conservent une presence plus discrete. */
.article h2{
  font-family:var(--sans);font-size:1.18rem;font-weight:700;
  line-height:1.34;letter-spacing:-.018em;color:var(--ink);
  margin:38px 0 13px;
}
.article h3{
  font-family:var(--sans);font-size:.94rem;font-weight:700;
  line-height:1.42;letter-spacing:.035em;color:var(--accent);
  margin:27px 0 10px;
}
.article h4{
  font-family:var(--sans);font-size:.78rem;font-weight:700;
  line-height:1.45;letter-spacing:.095em;text-transform:uppercase;color:var(--soft);
  margin:23px 0 9px;
}
.article p{margin-bottom:17px;font-size:1.03rem}
/* Justification éditoriale cohérente sur ordinateur et téléphone.
   La césure automatique réduit les écarts entre les mots ; la dernière ligne
   reste alignée à gauche pour éviter un étirement artificiel. */
.article .standfirst,
.article p,
.prose p,
.prose li,
.prose .callout{
  text-align:justify;
  text-align-last:left;
  text-justify:inter-word;
  hyphens:auto;
  -webkit-hyphens:auto;
  word-break:normal;
  overflow-wrap:break-word;
}
.article h1{
  width:100%;
  text-align:left;
  text-align-last:auto;
  text-justify:auto;
  hyphens:none;
  -webkit-hyphens:none;
  margin-left:0;
  margin-right:0;
  padding-left:0;
  padding-right:0;
}
.article h2,.article h3,.article h4{
  text-align:left;
  text-justify:auto;
  hyphens:none;
  -webkit-hyphens:none;
}
.article blockquote{border-left:3px solid var(--accent);padding-left:19px;margin:26px 0;color:#36414d;font-style:italic}
.article .sources{background:#fff;border:1px solid var(--line);border-radius:6px;padding:20px 22px;font-family:var(--sans);font-size:.85rem;margin:34px 0 10px}
.article .sources h3{font-size:.685rem;font-weight:600;letter-spacing:.165em;text-transform:uppercase;color:var(--soft);margin-bottom:11px}
.article .sources li{margin-left:18px;margin-bottom:7px;color:var(--muted)}
.article .sources a{color:var(--accent)}
.article .demo{background:var(--accent-soft);border-radius:6px;padding:14px 18px;font-family:var(--sans);font-size:.8rem;color:var(--accent);margin:30px 0 6px;line-height:1.6}

.prevnext{max-width:780px;margin:0 auto;padding:30px 28px 0;border-top:1px solid var(--line);font-family:var(--sans);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.prevnext-cell{min-width:0}
.prevnext-cell.prev{grid-column:1;text-align:left}
.prevnext-cell.next{grid-column:2;text-align:right}
.prevnext a{display:block;text-decoration:none;color:var(--ink);font-family:var(--sans);font-size:1.02rem;font-weight:700;line-height:1.35;letter-spacing:-.012em;transition:color .16s}
.prevnext a:hover{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.prevnext a:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}
.prevnext .lab{font-family:var(--sans);font-size:.665rem;font-weight:700;letter-spacing:.165em;text-transform:uppercase;color:var(--soft);margin-bottom:8px;display:block}

/* ===== PROSE ===== */
.prose{max-width:780px;padding:14px 0 10px}
.prose h2{
  font-family:var(--sans);font-size:1.18rem;font-weight:700;
  line-height:1.34;letter-spacing:-.018em;margin:38px 0 13px;
}
.prose h3{
  font-family:var(--sans);font-size:.94rem;font-weight:700;
  line-height:1.42;letter-spacing:.035em;color:var(--accent);margin:27px 0 10px;
}
.prose h4{
  font-family:var(--sans);font-size:.78rem;font-weight:700;
  line-height:1.45;letter-spacing:.095em;text-transform:uppercase;color:var(--soft);margin:23px 0 9px;
}
.prose p{margin-bottom:16px;font-size:1.01rem}
.prose ul{margin:0 0 16px 22px}
.prose li{margin-bottom:8px}
.prose a{color:var(--accent)}
.prose .callout{background:#fff;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:4px;padding:19px 22px;font-size:.95rem;margin:24px 0}

/* ===== SUIVRE LES PUBLICATIONS ===== */
.follow{background:var(--ink);color:#fff;margin-top:52px;padding:42px 0}
.follow .wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
.follow-txt{max-width:540px}
.follow h2{font-size:1.58rem;letter-spacing:-.02em}
.follow p{color:#b4bcc5;font-size:.93rem;margin-top:8px;line-height:1.62}
.follow-links{display:flex;gap:12px;justify-content:flex-end}
.follow-btn{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--accent);color:#fff;text-decoration:none;
  border:1px solid var(--accent);border-radius:4px;padding:12px 20px;
  font-family:var(--sans);font-size:.785rem;font-weight:700;
  letter-spacing:.055em;text-transform:uppercase;white-space:nowrap;
  flex:1 1 0;justify-content:center;min-width:0;
  transition:background .16s,border-color .16s,color .16s;
}
.follow-btn:hover{background:#a3222c;border-color:#a3222c}
.follow-btn.ghost{background:transparent;border-color:rgba(255,255,255,.3);color:#e6e9ec}
.follow-btn.ghost:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.55);color:#fff}
.follow-btn:focus-visible{outline:2px solid #fff;outline-offset:3px}
.follow-ico{width:17px;height:17px;flex:0 0 auto}

/* ===== FOOTER ===== */
footer{border-top:1px solid var(--line);padding:38px 0 50px;font-family:var(--sans);font-size:.82rem;color:var(--muted);background:#fff}
footer a{color:var(--muted);text-decoration:none}
footer a:hover{color:var(--accent)}
.legal{font-size:.755rem;line-height:1.8;color:var(--soft)}
.legal .l1{margin-bottom:9px}
.legal .l1 a{color:var(--muted);text-decoration:underline;text-underline-offset:2px;display:inline}
.legal .l1 a:hover{color:var(--accent)}
.legal .l2{margin-bottom:12px}
.legal .l3{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px;padding-top:12px;border-top:1px solid var(--line2)}
.legal-links{display:flex;flex-wrap:wrap;gap:20px}
.legal-links a{color:var(--soft);text-decoration:none;display:inline;margin:0}
.legal-links a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px}

@media(max-width:1040px){
  .themegrid.compact{grid-template-columns:repeat(3,1fr)}
}

@media(max-width:940px){
  .themegrid{grid-template-columns:repeat(2,1fr)}
  .masthead-main{font-size:2.15rem}
  .masthead-sub{letter-spacing:.26em}
  .item{grid-template-columns:1fr 160px;gap:22px}

}
@media(max-width:860px){
  .mast-inner{grid-template-columns:1fr auto auto;gap:10px;min-height:32px}
  .burger{display:inline-flex;order:3;align-self:center}
  .langswitch{order:2;align-self:center;font-size:.64rem;letter-spacing:.03em}
  .langswitch a{gap:4px;padding:5px 8px;min-height:30px}
  .langswitch .flag{width:14px;height:11px}
  .logo{font-size:1.16rem;letter-spacing:-.035em}
  nav.main{display:flex;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:6px 20px 14px;gap:0;box-shadow:0 14px 30px rgba(13,17,23,.1);max-height:0;opacity:0;visibility:hidden;overflow:hidden;pointer-events:none;transform:translateY(-6px);transition:max-height .28s ease,opacity .18s ease,transform .22s ease,visibility 0s linear .28s}
  nav.main.show{max-height:calc(100vh - 64px);opacity:1;visibility:visible;overflow-y:auto;pointer-events:auto;transform:translateY(0);transition:max-height .34s ease,opacity .2s ease,transform .22s ease,visibility 0s}
  nav.main > a,.dd > button{min-height:44px;padding:11px 4px;width:100%;justify-content:space-between;border-radius:4px}
  nav.main > a:active,.dd > button:active{background:var(--accent-soft);color:var(--accent)}
  .dd > button::after{width:7px;height:7px;margin-right:5px;border-width:1.5px;transform:rotate(45deg);transition:transform .22s ease,color .16s ease}
  .dd.open > button{color:var(--accent);background:transparent}
  .dd.open > button::after{transform:rotate(-135deg)}
  .dd-menu{position:static;min-width:0;max-height:0;opacity:0;visibility:hidden;overflow:hidden;transform:translateY(-4px);box-shadow:none;border:0;border-left:2px solid var(--line);border-radius:0;padding:0 0 0 12px;transition:max-height .3s ease,opacity .18s ease,transform .22s ease,visibility 0s linear .3s}
  .dd.open .dd-menu{max-height:620px;opacity:1;visibility:visible;transform:translateY(0);padding-bottom:6px;transition:max-height .36s ease,opacity .2s ease,transform .22s ease,visibility 0s}
  .dd-menu a{min-height:42px;padding:9px 10px}
  .dd-menu a:active{background:var(--accent-soft);color:var(--accent)}
  .item{grid-template-columns:1fr;gap:12px}
  .item .thumbwrap{order:1;max-width:340px;align-self:start}
  .item .body{order:2}
  .follow .wrap{grid-template-columns:1fr}
  .follow{padding:34px 0}
  .follow-links{flex-direction:column;justify-content:flex-start;gap:9px}
  .follow-btn{flex:1 1 auto;width:100%;padding:13px 18px;font-size:.74rem}
  .pagehead h1{font-size:1.85rem}
  .article-nav{padding:24px 28px 22px}
  .article h1{font-size:1.8rem;width:auto;text-align:left;text-wrap:balance}
  .article h2,.prose h2{font-size:1.08rem;margin-top:32px}
  .article h3,.prose h3{font-size:.9rem;margin-top:24px}
  .article h4,.prose h4{font-size:.74rem;margin-top:21px}
  .masthead{padding:24px 0 22px}
  .masthead-title{padding-top:15px}
  .masthead-main{font-size:1.62rem;line-height:1.16}
  .masthead-sub{font-size:.635rem;letter-spacing:.17em;gap:10px;margin-top:13px}
  .masthead-sub::before,.masthead-sub::after{width:20px}
  .masthead-rule.bottom{margin-top:14px}
  .hero{padding:26px 0 24px}
  .hero-lede{font-size:.99rem}
  .hero-cta{gap:9px;margin-top:20px}
  .btn{flex:1 1 100%;padding:12px 18px;font-size:.75rem}
  .themegrid{grid-template-columns:1fr 1fr;gap:9px}
  .themegrid.compact{grid-template-columns:1fr 1fr}
  .legal .l3{flex-direction:column;align-items:flex-start;gap:10px}
  .sectitle{flex-direction:column;align-items:flex-start;gap:8px}
  .listbar{flex-direction:column;align-items:flex-start;gap:12px}
  .listbar + .list{min-height:62vh}
  .prevnext{grid-template-columns:1fr;gap:24px;padding-top:26px}
  .prevnext-cell.prev,.prevnext-cell.next{grid-column:1;text-align:left}
}

@media(max-width:420px){
  .wrap{padding-left:16px;padding-right:16px}
  .article-nav{padding:20px 16px 18px}
  .article{padding-left:16px;padding-right:16px}
  .mast-inner{gap:7px}
  .logo{font-size:1.05rem}
  .langswitch a{padding:4px 6px;min-height:28px}
  .burger{width:32px;height:28px}
  .follow{padding:30px 0}
  .follow-btn{padding:12px 14px;font-size:.69rem;letter-spacing:.035em;gap:8px}
  .follow-ico{width:15px;height:15px}
}
