:root{--bg:#0a0f14;--panel:#10171e;--panel2:#0c1218;--line:#1e2a33;--line2:#2b3d4a;
--txt:#dbe4e9;--txt2:#9fb2bf;--dim:#5f7484;--faint:#43586a;--acc:#2ee58a;--accdark:#03271a;--accline:#21473a}
*{box-sizing:border-box}
body.console{margin:0;background:var(--bg);color:var(--txt);font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:15px;line-height:1.6}
.cw{max-width:1500px;margin:0 auto;padding:0 24px}
.cut{clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.cut-s{clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}
.hdr{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}
.hdr nav{display:flex;gap:18px;align-items:center;font-size:12px;letter-spacing:1.5px;color:var(--txt2)}
.hdr nav a{color:var(--txt2);text-decoration:none}
.hdr nav a.on{color:#e8f5ee;border-bottom:2px solid var(--acc);padding-bottom:2px}
.hdr nav a.rss{color:var(--acc)}
/* Le lien Discord porte une icone : sans inline-flex, le SVG et le mot
   se separent sur deux lignes quand la barre est etroite. */
.hdr nav a.dsc{display:inline-flex;align-items:center;white-space:nowrap}

.btn{display:inline-block;background:var(--acc);color:var(--accdark);padding:8px 16px;font-weight:600;font-size:12px;letter-spacing:1px;text-decoration:none;border:0;cursor:pointer}
.btn-o{display:inline-block;border:1px solid var(--line2);color:var(--txt2);padding:7px 14px;font-size:12px;letter-spacing:1px;text-decoration:none;background:transparent}
.statusbar{display:flex;gap:20px;padding:8px 0;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:1.5px;color:var(--dim)}
.panel{background:var(--panel);border:1px solid var(--line);padding:16px}
.tag{font-size:10px;letter-spacing:2px;color:var(--acc)}
.edition{font-size:15px;line-height:1.75;color:var(--txt)}
.edition h1{font-size:26px;line-height:1.3;color:#f0f5f7;border-left:3px solid var(--acc);padding-left:14px}
.edition h2{font-size:19px;color:#f0f5f7;letter-spacing:.5px;border-bottom:1px solid var(--line);padding-bottom:6px;margin-top:34px}
.edition h3{font-size:15px;color:#e8f5ee}
.edition a{color:var(--acc);text-decoration:none}
.edition a:hover{text-decoration:underline}
.edition img{max-width:100%;border:1px solid var(--line);
  display:block;margin:12px auto}
/* Le lien qui enveloppe une image devient un bloc pleine largeur pour
   que l'image (margin:auto) se centre dedans. Le texte de la puce ou du
   paragraphe reste aligne a gauche : on ne touche pas au text-align. */
.edition a:has(img){display:block;margin:12px 0}
.edition a:has(img) img{margin:0 auto}
.edition li:has(img) img,.edition p:has(img) img{margin:10px auto}
/* --- Puces de l'edition ---------------------------------------------------
   overflow:hidden ci-dessus est indispensable au rendu des images en puce
   (038/039 : sans lui le texte de la puce se colle a DROITE de l'image), mais
   il ROGNE le marqueur natif, dessine hors de la boite de contenu quand
   list-style-position vaut outside. Resultat : des listes sans puce visible.
   On dessine donc la puce nous-memes A L'INTERIEUR de la boite, en couleur
   d'accent du theme (var(--acc)), avec l'aeration du rendu email.
   Ne pas revenir a une puce native tant que overflow:hidden est la. */
.edition li{overflow:hidden}
.edition ul{list-style:none;padding-left:0;margin:10px 0}
.edition ul>li{position:relative;padding-left:20px;margin-bottom:6px}
.edition ul>li::before{content:"";position:absolute;left:3px;top:.66em;
  width:6px;height:6px;background:var(--acc)}
/* Listes imbriquees : puce attenuee pour distinguer les niveaux. */
.edition ul ul>li::before{background:var(--line2)}
/* Listes numerotees : le compteur natif serait rogne lui aussi, on le ramene
   a l'interieur de la boite. */
.edition ol{padding-left:20px;margin:10px 0}
.edition ol>li{list-style-position:inside;margin-bottom:6px}
/* Legende d'image : un <em> seul sur sa ligne, juste apres une image,
   est traite comme une legende (italique deja porte par <em>, gris
   attenue, taille reduite, rapproche de l'image du dessus). */
/* ATTENTION : p > em:only-child ne fait PAS ce qu on croit. :only-child ne
   compte que les ELEMENTS, pas les noeuds texte : dans « texte <em>x</em>,
   suite », le em etait donc enfant unique et se voyait centre sur sa propre
   ligne, coupant la phrase en deux. Meme piege pour li > em. On ne garde que
   l italique qui SUIT une image, plus une classe posee cote serveur. */
.edition p.legende > em,
.edition a:has(img) + em,
.edition img + em{
  display:block;color:#8698a5;font-size:13px;line-height:1.5;
  margin:2px 0 10px;font-style:italic;text-align:center}
/* Vignettes YouTube : taille raisonnable. */
/* Vignette YouTube plafonnee a 360px MAIS jamais plus large que son
   conteneur : ce selecteur d'attribut l'emporte sur .edition img
   {max-width:100%}, d'ou un debordement de 10px sur un ecran de 375px
   (conteneur 327px) et une vignette rognee dans une puce. */
.edition a[href*="youtu"] img{max-width:min(360px,100%)}
.edition blockquote{border-left:2px solid var(--line2);margin:0;padding:2px 16px;color:var(--txt2)}
.edition code{background:var(--panel2);padding:1px 6px;font-size:13px}
.edition hr{border:0;border-top:1px solid var(--line)}
.edition table{border-collapse:collapse;width:100%}
.edition th,.edition td{border:1px solid var(--line);padding:6px 10px;font-size:13px;text-align:left}
.edition th{color:var(--dim);font-size:11px;letter-spacing:1px}
.ftr{border-top:1px solid var(--line);margin-top:40px;padding:14px 0 28px;font-size:11px;letter-spacing:.6px;color:var(--faint);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
.ftr a{color:var(--dim);text-decoration:none}
.input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--txt);padding:9px 12px;font-size:13px}
.pagebody{max-width:760px}
.pagebody h1{font-size:24px;color:#f0f5f7}
.pagebody h2{font-size:17px;color:#e8f5ee;margin-top:28px}
.pagebody a{color:var(--acc)}
@media(max-width:820px){.grid2{grid-template-columns:1fr!important}.hdr nav{flex-wrap:wrap}}
.flags{display:inline-flex;align-items:center;gap:6px}
.flags a{display:inline-flex;line-height:0;opacity:.4;padding:2px;
  border:1px solid transparent;transition:opacity .15s}
.flags a:hover{opacity:.8}
.flags a.sel{opacity:1;border-color:#2ee58a}
.flag{width:21px;height:14px;display:block;border:1px solid #0a0f14}

/* ── Encadres outils ─────────────────────────────── */
.toolsgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:20px;align-items:start}
.toolsgrid.two{grid-template-columns:1fr 1fr}
.toolsrow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;align-items:start}
.toolsrow.two{align-items:start}
.tcol{display:flex;flex-direction:column;gap:14px}
.sidetools{display:flex;flex-direction:column;gap:12px;margin-top:16px}
/* Accueil 3 colonnes : outils gauche | edition | outils droite */
.home3{display:grid;grid-template-columns:290px minmax(0,1fr) 290px;gap:26px;
  margin-top:20px;align-items:start}
.home3 .colL,.home3 .colR{display:flex;flex-direction:column;gap:13px}
.home3 .edition{min-width:0}
.logbook{border-top:1px solid #1e2a33;padding-top:11px}
.logline{display:block;font-size:12px;color:#9fb2bf;text-decoration:none;
  padding:5px 0;border-bottom:1px solid #131c24}
.logline:hover{color:#dbe4e9}
.loglink{display:block;font-size:11px;letter-spacing:1.5px;color:#2ee58a;
  text-decoration:none;padding-top:9px}
@media(max-width:1320px){
  .home3{grid-template-columns:minmax(0,1fr) 252px}
  .home3 .colL{grid-column:2;grid-row:1}
  .home3 .edition{grid-column:1;grid-row:1/3}
  .home3 .colR{grid-column:2;grid-row:2}
}
@media(max-width:860px){
  .home3{grid-template-columns:1fr}
  .home3 .colL,.home3 .colR,.home3 .edition{grid-column:1;grid-row:auto}
  .home3 .edition{order:-1}
}
.toolcard{padding:13px 14px}
.toolcard .tag{margin-bottom:9px}
.tcline{display:flex;align-items:center;gap:9px}
.tcbig{font-size:13px;color:#f0f5f7;letter-spacing:.5px}
.tcbig2{font-size:23px;color:#f0f5f7;margin:9px 0 2px;letter-spacing:1px}
.tcbig2 small{font-size:12px;color:#5f7484;letter-spacing:1px}
.tcsub{font-size:11px;color:#9fb2bf;margin-top:2px}
.tclist{margin-top:9px}
.tcval{color:#5f7484;margin-left:auto;font-size:10px}
.tcgrid{display:grid;gap:3px;margin-top:9px;font-size:12px;color:#dbe4e9}
.tcgrid span{color:#5f7484;font-size:9px;letter-spacing:1.2px;display:block;text-transform:uppercase}
.tcgrid > div{padding:2px 0}
.tcsrc{font-size:9px;color:#43586a;margin-top:9px;letter-spacing:.5px}
.tcna{color:#5f7484;font-size:12px}
.tchint{font-size:11px;color:#5f7484;margin-top:9px;line-height:1.5}
.tclink{display:inline-block;color:#2ee58a;font-size:11px;letter-spacing:1px;margin-top:10px;text-decoration:none}
.tcform{display:flex;gap:7px;margin-bottom:2px}
.tcform .input{font-size:12px;padding:7px 10px}
.tcform .btn{padding:7px 12px;white-space:nowrap}
.tcdesc{font-size:11px;color:#9fb2bf;line-height:1.55;max-height:120px;overflow:auto}

/* ── Executive Hangars (modele xyxyll) ──────────── */
.leds{display:flex;align-items:center;gap:9px}
.led{width:14px;height:14px;border-radius:50%;display:inline-block;
  border:1px solid #1e2a33;background:#0f1519}
.led.online.live{background:#2ee58a;border-color:#2ee58a;box-shadow:0 0 10px #2ee58aaa}
.led.offline.live{background:#cf222e;border-color:#cf222e;box-shadow:0 0 10px #cf222eaa}
.ledlabel{font-size:16px;letter-spacing:3px}
.ledlabel.online{color:#2ee58a}.ledlabel.offline{color:#cf222e}
.countdown{font-size:26px;color:#f0f5f7;letter-spacing:2px;margin:3px 0 2px;
  font-variant-numeric:tabular-nums}
.countdown.done{color:#e3b341}
.gauge{position:relative;height:5px;background:#0c1218;border:1px solid #1e2a33;margin:9px 0 3px;overflow:hidden}
.gauge > span{position:absolute;left:0;top:0;bottom:0;background:#17694a}
.gauge .gmark{position:absolute;top:0;bottom:0;width:1px;background:#2b3d4a}
.sched{width:100%;border-collapse:collapse;margin-top:5px;font-size:11px}
.sched td{padding:4px 0;border-bottom:1px solid #131c24;color:#dbe4e9;letter-spacing:.5px}
.sched td:first-child{display:flex;align-items:center;gap:7px}
.sched td:nth-child(2){text-align:right;color:#9fb2bf;font-variant-numeric:tabular-nums}
.sched td.cyc{text-align:right;color:#43586a;width:42px}
.toolcard.loading{opacity:.55}
/* ── Cartes RSI ──────────────────────────────────── */
.toolrow{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.8px;color:#dbe4e9;padding:3px 0}
.dot{width:8px;height:8px;display:inline-block;flex-shrink:0;border-radius:50%}
.dot.ok{background:#2ee58a}.dot.warn{background:#e3b341}.dot.err{background:#cf222e}
.dot.off{background:#5f7484}
.dot.big{width:12px;height:12px}
.rsicard{margin-top:12px;border-top:1px solid #1e2a33;padding-top:11px}
.rsihead{display:flex;gap:12px;align-items:center}
.rsihead img{border:1px solid #2b3d4a;background:#0c1319;flex-shrink:0}
.rsiname{font-size:15px;color:#f0f5f7;letter-spacing:.5px}
.rsiname b{color:#2ee58a;font-weight:400}
.orgline{display:flex;gap:10px;align-items:center;margin-top:6px}
.orgline.bord{padding:7px 0;border-bottom:1px solid #131c24}
.orgline img{border:1px solid #1e2a33;background:#0c1319;flex-shrink:0}
.orgname{font-size:13px;color:#dbe4e9;text-decoration:none}
.orgname:hover{color:#2ee58a}
.orgname b{color:#2ee58a;font-weight:400}
.rsierr{margin-top:11px;color:#e3b341;font-size:12px}
.alltools{display:block;text-align:center;font-size:10px;letter-spacing:1.5px;color:#2ee58a;text-decoration:none;padding:8px;border:1px solid #1e2a33;background:#0c1218}

.edition .ytthumb:hover img{border-color:#2ee58a}
@media(max-width:820px){.toolsgrid.two,.toolsrow,.toolsrow.two{grid-template-columns:1fr}}

/* ── Fil du jour ─────────────────────────────────── */
.centercol{min-width:0;display:flex;flex-direction:column;gap:18px}
.home3 .centercol .edition{min-width:0}
.dayfeed{padding:13px 16px}
.dfhead{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.dfdot{width:9px;height:9px;border-radius:50%;background:#2ee58a;
  box-shadow:0 0 8px #2ee58a99;animation:dfpulse 2.4s infinite}
@keyframes dfpulse{50%{opacity:.35}}
.dfnote{margin-left:auto;font-size:9px;letter-spacing:1px;color:#43586a}
.dfitem{display:flex;gap:12px;padding:7px 0;border-top:1px solid #131c24;align-items:baseline}
.dfitem:first-of-type{border-top:0}
.dftime{flex-shrink:0;font-size:11px;color:#2ee58a;font-variant-numeric:tabular-nums;letter-spacing:1px}
.dftext{font-size:13px;color:#dbe4e9;line-height:1.55}
.dflink{color:#2ee58a;text-decoration:none}

/* ── MOTD breaking news ──────────────────────────── */
.motd{display:block;text-decoration:none;background:#1a0f12;
  border:1px solid #6b1f28;border-left:3px solid #cf222e;padding:11px 15px}
.motd:hover{border-color:#cf222e}
.motdtag{display:inline-block;font-size:9px;letter-spacing:2px;color:#0a0f14;
  background:#cf222e;padding:2px 7px;margin-right:9px;vertical-align:middle}
.motdtext{font-size:13.5px;color:#f0f5f7;line-height:1.5}
.motdmeta{display:block;font-size:9px;color:#6b7f8c;letter-spacing:1px;margin-top:6px}
.dfsrc{color:#5f7484;font-size:11px}
/* Fil du jour : hauteur plafonnee, defilement interne */
.dayfeed .dfscroll{max-height:340px;overflow-y:auto}
.dayfeed .dfscroll::-webkit-scrollbar{width:5px}
.dayfeed .dfscroll::-webkit-scrollbar-thumb{background:#1e2a33}

/* ── Observatoire aUEC (page cachee) ─────────────── */
.obswrap{margin:22px 0 40px}
.obshead{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:18px}
.obshead>div:first-child{flex:1 1 340px;min-width:0}
.obstitre{font-size:20px;color:#f0f5f7;margin-top:6px}
.obsnote{color:var(--txt2);font-size:13px;max-width:60ch}
.obsvaleur{text-align:right;min-width:210px}
.obschiffre{font-size:42px;line-height:1;color:var(--acc);font-weight:600}
.obsunite{font-size:11px;letter-spacing:1.5px;color:var(--dim);margin-top:6px}
.obsvar{font-size:12px;margin-top:8px;color:var(--txt2)}
.obsvar.up{color:#f85149}.obsvar.down{color:var(--acc)}
.obsstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:12px;margin-bottom:18px}
.obsstats>div{background:var(--panel);border:1px solid var(--line);padding:12px 14px;
  font-size:19px;color:#f0f5f7}
.obsstats span{display:block;font-size:10px;letter-spacing:2px;color:var(--dim);
  margin-bottom:5px}
.obsgraph{margin-bottom:16px;overflow-x:auto}
.obssvg{width:100%;height:auto;display:block;margin-top:10px;min-width:520px}
.obsgrid{stroke:var(--line);stroke-width:1}
.obsaxe{fill:var(--dim);font-size:10px;font-family:system-ui,sans-serif}
.obsligne{fill:none;stroke:var(--acc);stroke-width:2;stroke-linejoin:round}
.obsaire{fill:var(--acc);opacity:.10;stroke:none}
.obspoint{fill:var(--acc)}
.obsbarre{fill:var(--acc);opacity:.55}
.obsbarre:hover{opacity:.9}
.obsvide{color:var(--dim);font-size:13px;padding:26px 0;text-align:center}
.obsalerte{border-color:#5c2a2a;background:#1a1012;margin-bottom:18px}
.obspied{color:var(--faint);font-size:12px;max-width:80ch;margin-top:18px}

/* ── Observatoire : bloc d'analyse ──────────────── */
.obsanalyse{margin-bottom:16px}
.obsahead{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.obsbadge{font-size:10px;letter-spacing:1.5px;padding:4px 9px;border:1px solid}
.obsb-rien_a_signaler{color:var(--acc);border-color:var(--accline)}
.obsb-historique_insuffisant{color:var(--dim);border-color:var(--line2)}
.obsb-mouvement_notable{color:#e3b341;border-color:#5c4a1a}
.obsb-signal_a_interpreter{color:#f85149;border-color:#5c2a2a}
.obsconf{font-size:11px;color:var(--dim);letter-spacing:1px}
.obsdeux{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);
  gap:22px;margin-top:14px}
@media(max-width:760px){.obsdeux{grid-template-columns:1fr}}
.obsetiq{font-size:10px;letter-spacing:2px;color:var(--dim);
  border-bottom:1px solid var(--line);padding-bottom:5px;margin-bottom:9px}
.obsetiq-i{color:#9a8bbf;border-color:#2e2740}
.obsfaits{list-style:none;padding:0;margin:0;font-size:13px;color:var(--txt2)}
.obsfaits li{padding:3px 0}
.obsfaits strong{color:#f0f5f7}
.obshypo{font-size:14px;color:var(--txt);margin:0;font-style:italic}
.obsevts{margin:6px 0 0;padding-left:18px;font-size:12px;color:var(--txt2)}
.obsevts li{padding:2px 0}
.obsinsuf{font-size:14px;color:var(--txt2);margin-top:12px}
.obsinsuf strong{color:#f0f5f7}
.obsvide2{color:var(--dim);font-size:13px;margin-top:12px}
.obsavert{font-size:11px;color:var(--faint);margin:14px 0 0;
  border-top:1px solid var(--line);padding-top:10px}
.obssoustitre{font-size:12px;letter-spacing:1px;color:var(--acc);margin-top:4px}
.obsrepere{stroke:var(--line2);stroke-width:1;stroke-dasharray:3 3;opacity:.85}
.obsrepereetiq{fill:var(--txt2);font-size:9px;letter-spacing:.5px;
  font-family:system-ui,sans-serif}
.obsreperenote{font-size:11px;color:var(--faint);margin:8px 0 0}
.obsvitesse{margin-top:10px;display:flex;gap:12px;justify-content:flex-end;
  align-items:baseline;flex-wrap:wrap}
.obsvlabel{font-size:10px;letter-spacing:2px;color:var(--dim)}
.obsv{font-size:12px;color:var(--txt2)}
.obsv strong{color:var(--txt2);font-weight:600}
.obsv-fort strong{color:#f85149}
.obsv-haut strong{color:#e3b341}
.obsm-eleve{color:#f85149}
.obsm-normal{color:var(--acc)}
.obsm-reference_insuffisante{color:var(--dim)}

/* --- Podcast : lecteur de l'episode du jour (note 078) ------------------- */
.podplayer{margin-bottom:16px;padding:14px 16px;background:#0e1a16;border:1px solid #21473a}
.podhead{display:flex;align-items:center;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.poddot{width:7px;height:7px;background:#2ee58a;border-radius:50%;flex:none}
.podmeta{font-size:11px;color:#5f7484;letter-spacing:1px;text-transform:uppercase}
.podfeed{margin-left:auto;font-size:11px;letter-spacing:1px;color:#2ee58a;text-decoration:none}
.podfeed:hover{text-decoration:underline}
.podtitle{font-size:14px;color:#dbe4e9;margin-bottom:10px}
/* Le lecteur natif est gris clair et ne se stylise quasiment pas : il jurait
   avec le theme. On le masque a l'oeil (sans le retirer du DOM, il reste le
   moteur audio et le repli sans JavaScript) et on pilote des controles aux
   couleurs de Cavalera. Les controles sont de vrais elements de formulaire :
   le bouton est un <button>, la barre un <input type=range>, donc le clavier
   et les lecteurs d'ecran fonctionnent sans code supplementaire. */
.podaudio{display:none}
.podctl{display:flex;align-items:center;gap:12px}
.podplay{flex:none;width:38px;height:38px;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:#2ee58a;color:#04140d;border:0;
  clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px));
  transition:background .12s}
.podplay:hover{background:#4df0a0}
.podplay:focus-visible{outline:2px solid #dbe4e9;outline-offset:2px}
.podplay svg{fill:currentColor;margin-left:1px}
.podplay.playing svg{margin-left:0}
.podseek{flex:1;height:4px;-webkit-appearance:none;appearance:none;
  background:#1e2a33;cursor:pointer;outline:none;min-width:60px}
.podseek::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;
  background:#2ee58a;cursor:pointer;border:0;border-radius:0;transform:rotate(45deg)}
.podseek::-moz-range-thumb{width:11px;height:11px;background:#2ee58a;
  cursor:pointer;border:0;border-radius:0}
.podseek::-moz-range-progress{background:#2ee58a;height:4px}
.podseek:focus-visible{outline:2px solid #dbe4e9;outline-offset:4px}
.podseek:disabled{cursor:default;opacity:.5}
.podtime{flex:none;font-size:11.5px;color:#5f7484;font-variant-numeric:tabular-nums;
  letter-spacing:.5px;min-width:74px;text-align:right}
.poddl{flex:none;color:#5f7484;display:flex;align-items:center;transition:color .12s}
.poddl:hover{color:#2ee58a}
@media (max-width:640px){
  .podfeed{margin-left:0;width:100%}
  .podtitle{font-size:13px}
}

/* Mention de non-affiliation (politique fansite CIG). Discrete mais
   lisible : elle doit etre visible, pas cachee. */
.legal{max-width:1500px;margin:0 auto;padding:18px 24px 34px;
  color:#43586a;font-size:11.5px;line-height:1.65;text-align:center}

/* Drapeau de langue des videos, en image plutot qu'en emoji : Windows ne rend
   pas les emojis drapeaux (il n'assemble pas les indicateurs regionaux) et le
   lectorat est majoritairement sur PC. Selecteur plus specifique que
   « .edition img », sinon le drapeau herite du centrage en bloc applique aux
   illustrations et part seul sur sa ligne. */
.edition img.flag, img.flag{display:inline-block;width:18px;height:13px;
  max-width:18px;vertical-align:-2px;margin:0 3px;border:1px solid #1e2a33;
  border-radius:1px}

/* Liste « lache » : Markdown enveloppe alors le contenu de chaque puce dans
   un <p>, dont la marge haute pousse le texte vers le bas tandis que la puce,
   en position absolue, reste en haut. D'ou un decroche visible entre la puce
   et son texte. On annule la marge du premier paragraphe. */
.edition li > p:first-child{margin-top:0}
.edition li > p:last-child{margin-bottom:0}

/* Carte RMT price watch de la page Outils. La carte entiere est un lien :
   cible de clic large, plus sure au doigt qu'un petit lien texte. */
a.rmtcard{display:block;text-decoration:none;color:inherit;transition:border-color .12s}
a.rmtcard:hover{border-color:#2ee58a}
.rmtunit{font-size:11px;color:#5f7484;letter-spacing:.5px;margin-top:2px}
.rmtvar{font-size:12px;color:#5f7484;margin-top:6px;font-variant-numeric:tabular-nums}
.rmtvar.up{color:#2ee58a}
.rmtvar.down{color:#e5734e}
.rmtvar.big{font-size:20px;font-weight:bold}
.rmtspark{margin:12px 0 6px;line-height:0}
.rmtspark.tall svg{height:74px}
.rmtrow{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.rmtrow.tight{align-items:baseline;justify-content:flex-start}
.rmtcta{margin-top:8px;font-size:11px;letter-spacing:1px;color:#2ee58a;text-transform:uppercase}

/* Page d'abonnement au podcast. Le lien « s'abonner » menait au flux XML brut :
   correct pour une application, illisible pour un humain. */
.podsub{max-width:760px;margin:24px auto 40px;padding:0 20px}
.podsub-h1{font-size:26px;margin:0 0 6px;color:#f0f5f7;font-weight:600}
.podsub-intro{color:#5f7484;margin:0 0 24px;line-height:1.6}
.podsub-block{padding:16px 18px;margin-bottom:16px}
.podsub-apps{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;align-items:center;justify-content:center}
/* Les badges officiels et le pave texte n'ont pas la meme hauteur : sans
   align-items:center ils s'etiraient et paraissaient decales. */
.podsub-badge{display:inline-flex;align-items:center;line-height:0;border:0;background:none;padding:0;text-decoration:none}
.podsub-badge img{display:block;height:40px;width:auto}
.podsub-app{display:flex;align-items:center;gap:8px;padding:11px 16px;
  background:#0e1a16;border:1px solid #21473a;color:#dbe4e9;text-decoration:none;
  transition:border-color .12s,background .12s}
a.podsub-app:hover{border-color:#2ee58a;background:#12241d}
.podsub-app.off{opacity:.45;border-color:#1e2a33;background:#0d1218}
.podsub-app-nom{font-size:14px}
.podsub-soon{font-size:10.5px;color:#5f7484;letter-spacing:1px;text-transform:uppercase}
.podsub-help{color:#5f7484;font-size:13px;line-height:1.6;margin:10px 0 0}
.podsub-url{display:flex;gap:8px;margin-top:12px}
.podsub-url input{flex:1;background:#0a0f14;border:1px solid #1e2a33;color:#dbe4e9;
  padding:10px 12px;font-family:inherit;font-size:13px;min-width:0}
.podsub-copy{flex:none;padding:10px 16px;background:#2ee58a;color:#04140d;border:0;
  cursor:pointer;font-size:13px;font-weight:600;transition:background .12s}
.podsub-copy:hover{background:#4df0a0}
.podsub-copy.done{background:#1e2a33;color:#2ee58a}
.podsub-eps{list-style:none;padding:0;margin:12px 0 0}
.podsub-eps li{display:flex;align-items:baseline;gap:10px;padding:8px 0;
  border-bottom:1px solid #16202a}
.podsub-eps li:last-child{border-bottom:0}
.podsub-eps a{color:#dbe4e9;text-decoration:none;flex:1}
.podsub-eps a:hover{color:#2ee58a}
.podsub-meta{color:#5f7484;font-size:12px;font-variant-numeric:tabular-nums}
.podsub-langs{color:#5f7484;font-size:13px;text-align:center;margin-top:20px}
.podsub-langs a{color:#2ee58a;text-decoration:none;margin:0 2px}
@media(max-width:640px){.podsub-url{flex-direction:column}}

/* Annuaire communautaire. Cartes cliquables en entier : cible large, plus
   sure au doigt qu'un lien texte. */
.comm{max-width:1100px;margin:20px auto 40px;padding:0 20px}
.comm-intro{color:#5f7484;line-height:1.7;margin:0 0 26px;max-width:720px}
.comm-theme{margin-bottom:30px}
.comm-h2{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;
  color:#f0f5f7;margin:0 0 12px;letter-spacing:.5px}
.comm-ico{font-size:16px}
.comm-line{flex:1;height:1px;background:#1e2a33}
.comm-n{font-size:11px;color:#43586a;font-variant-numeric:tabular-nums}
.comm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
a.comm-card{display:block;padding:14px 16px;text-decoration:none;color:inherit;
  transition:border-color .12s,background .12s}
a.comm-card:hover{border-color:#2ee58a;background:#0e1a16}
.comm-nom{font-size:14px;font-weight:600;color:#2ee58a;margin-bottom:6px}
.comm-desc{font-size:12.5px;color:#8fa3b0;line-height:1.55;min-height:38px}
.comm-hote{font-size:10.5px;color:#43586a;margin-top:10px;letter-spacing:.5px}
a.comm-card:hover .comm-hote{color:#5f7484}
.comm-note{color:#43586a;font-size:12px;line-height:1.6;margin-top:30px;
  padding-top:18px;border-top:1px solid #16202a;max-width:720px}
@media(max-width:600px){.comm-grid{grid-template-columns:1fr}}

/* --- Page /sources : specifique, le reste reprend les classes .comm-* --- */
.src-nom{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.src-freq{flex:none;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#5f7484;font-weight:400}
.src-avert{margin:0 0 14px;font-size:12px;color:#8a7a45;border-left:2px solid #5c4d1f;padding-left:10px}
.src-yt-desc{color:#5f7484;border-left-color:#21473a}
/* Une source non liee : meme carte, sans affordance de clic. */
.src-nolink{cursor:default}
.src-chaines{display:flex;flex-wrap:wrap;gap:8px}
.src-chaine{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;background:#0e1a16;border:1px solid #21473a;color:#dbe4e9;text-decoration:none;font-size:13px}
a.src-chaine:hover{border-color:#2ee58a;color:#f0f5f7}
.src-flag{font-size:12px;line-height:1}


/* Financement : collecte des 24 h et courbe sur 7 jours. La courbe est
   normalisee entre son minimum et son maximum, elle montre donc une FORME
   et non des valeurs absolues, le total variant trop peu en pourcentage. */
.fhisto{margin:9px 0 4px;padding-top:8px;border-top:0.5px solid #1e2a33}
.fh24{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.fh24 span{color:#5f7484;font-size:10px;letter-spacing:1.2px;text-transform:uppercase}
.fh24 b{color:#2ee58a;font-size:13px}
.fhsvg{width:100%;height:30px;display:block}
.fhleg{color:#43586a;font-size:10px;margin-top:3px}

/* Points reperes sur la courbe du financement : les trois jours precedents en
   gris, le jour courant en vert. Le rayon est fixe en pixels malgre
   l'etirement du viewBox, sinon les cercles seraient ovales. */
.fhpt{fill:#43586a;vector-effect:non-scaling-stroke}
.fhpt.on{fill:#2ee58a}
.fhjours{display:flex;justify-content:space-between;gap:6px;margin-top:7px}
.fhjours div{display:flex;flex-direction:column;gap:1px;min-width:0}
.fhjours span{color:#43586a;font-size:9.5px;letter-spacing:.5px}
.fhjours b{color:#8698a5;font-size:11px;font-weight:400;white-space:nowrap}

/* Etiquettes des jours : positionnees SUR leur point, pas reparties
   uniformement. Les points tombent a 0, 33 et 67 % selon leur date, alors
   qu'un space-between les aurait mis a 0, 50 et 100 % : le decalage se voyait.
   La derniere est ramenee a gauche pour ne pas deborder de la carte. */
.fhjours.abs{position:relative;height:30px;margin-top:6px;display:block}
.fhjours.abs div{position:absolute;top:0;transform:translateX(-50%);
  display:flex;flex-direction:column;gap:1px;text-align:center;white-space:nowrap}
/* La premiere etiquette s'aligne a gauche et la derniere a droite : centrees
   sur leur point, elles sortiraient de la carte. Le decalage residuel de
   quelques pixels est le prix a payer pour rester dans le cadre. */
.fhjours.abs div:first-child{transform:none;text-align:left}
.fhjours.abs div:last-child{transform:translateX(-100%);text-align:right}

/* Volume du lecteur. Retour d'un lecteur : le son est tres fort sur certains
   navigateurs, et le lecteur maison n'offrait aucun reglage. Le curseur reste
   discret (gris, court) pour ne pas concurrencer la barre de lecture. */
.podmute{background:none;border:0;padding:2px 4px;cursor:pointer;color:#5f7484;
  display:inline-flex;align-items:center;flex:0 0 auto}
.podmute:hover{color:#8fe0b6}
.podvol{-webkit-appearance:none;appearance:none;flex:0 0 58px;width:58px;height:3px;
  border-radius:2px;background:#1e2a33;cursor:pointer;outline:none}
.podvol::-webkit-slider-thumb{-webkit-appearance:none;width:9px;height:9px;
  border-radius:50%;background:#8698a5;cursor:pointer}
.podvol::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;
  background:#8698a5;cursor:pointer}
.podvol:hover::-webkit-slider-thumb{background:#2ee58a}
.podvol:hover::-moz-range-thumb{background:#2ee58a}
/* Sous 520 px, le curseur de volume disparait : la barre de lecture doit
   garder la place. Le bouton de sourdine reste, il suffit sur mobile ou le
   volume se regle avec les touches physiques. */
@media (max-width:520px){.podvol{display:none}}

/* Badges Apple et Spotify sous le lecteur. Ils portent la charte imposee par
   les plateformes : plutot que de la contrarier, on les laisse tels quels et
   on les attenue au repos pour qu'ils ne tirent pas l'oeil avant le titre de
   l'episode. Le filet et la marge les separent des commandes, sinon le bouton
   de lecture les touche. */
.podapps{display:flex;gap:8px;align-items:center;justify-content:center;
  flex-wrap:wrap;margin:14px 0 2px;padding-top:12px;
  border-top:0.5px solid #1e2a33}
.podapps a{display:inline-flex;opacity:.72;transition:opacity .15s ease}
.podapps a:hover{opacity:1}
.podapps img{height:26px;width:auto;display:block;border-radius:5px}
@media (max-width:520px){.podapps img{height:23px}}

/* --- Carte d'installation du bot Discord ------------------------------- */
/* Bordure accentuee le temps du lancement : retirer border-color pour la
   fondre dans les autres cartes de la colonne. */
.dcard{padding:12px 13px;border-color:#2ee58a}
.dcard-tag{color:#2ee58a}
.dcard-p{margin:0 0 10px;font-size:12px;line-height:1.55;color:#9fb2bf}
.dcard-btn{display:block;text-align:center;width:100%;box-sizing:border-box}
