/* ============================================================
   3615 GISCARD // ENCYCLOPEDIE DU GISCARDPUNK
   Feuille de style VIDEOTEX / ANTIOPE
   Norme d'affichage : 40 colonnes x 24 rangees, 8 couleurs.
   Dans l'esprit des services 3615 CIAO et 3615 LCM.
   ============================================================ */

@font-face{
  font-family:"LCMVideotex";
  src:url("fonts/LCMVideotex.woff2") format("woff2"),
      url("fonts/LCMVideotex.ttf") format("truetype");
  font-display:block;
}

:root{
  /* 8 couleurs videotex */
  --vx-black:#0b0d12;
  --vx-red:#d7441e;
  --vx-green:#8ed15e;
  --vx-yellow:#f0e04a;
  --vx-blue:#2336a4;
  --vx-magenta:#c0479c;
  --vx-cyan:#54c8d8;
  --vx-white:#e6efe4;

  --vx-blue-dark:#141d55;
  --vx-blue-deep:#0e1436;
  --vx-green-dark:#2f7a34;
  --vx-green-deep:#123a1c;
  --vx-red-dark:#8f2410;
  --vx-orange:#e07a1f;

  --row:1.125em;   /* hauteur d'une rangee caractere */
  --c-ink:#d3e6d0; /* texte courant */
}

/* ---------- Mode monochrome (phosphore vert) -------------- */
body.mono{
  --vx-black:#050a06;
  --vx-red:#4e9c3f;
  --vx-green:#9fdc8f;
  --vx-yellow:#9fdc8f;
  --vx-blue:#123a1c;
  --vx-magenta:#7ab46e;
  --vx-cyan:#9fdc8f;
  --vx-white:#cfecc7;
  --vx-blue-dark:#123a1c;
  --vx-blue-deep:#08150c;
  --vx-green-dark:#2f7a34;
  --vx-green-deep:#0b1f10;
  --vx-red-dark:#2f7a34;
  --c-ink:#b7e2ab;
}
body.mono img{filter:grayscale(1) brightness(1.06) sepia(1) hue-rotate(52deg) saturate(4.2) contrast(1.08) !important}
body.mono iframe{filter:grayscale(1) sepia(1) hue-rotate(52deg) saturate(4) contrast(1.05)}

*{box-sizing:border-box;margin:0;padding:0}

html{background:#000;height:100%}

body{
  min-height:100%;
  background:#000;
  color:var(--vx-white);
  font-family:"LCMVideotex","Courier New",monospace;
  font-size:16px;
  line-height:1.125;
  letter-spacing:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  -webkit-font-smoothing:none;
  font-smooth:never;
  text-rendering:optimizeSpeed;
}

a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--vx-yellow);color:#000}

.skip{
  position:fixed;left:6px;top:6px;z-index:9999;
  background:var(--vx-yellow);color:#000;padding:6px 10px;
  transform:translateY(-250%);font-size:13px
}
.skip:focus{transform:none}

/* ============================================================
   LE TERMINAL
   ============================================================ */

.terminal{
  position:relative;
  width:100%;
}

.vx-screen{
  --cols:40;
  position:relative;
  width:100%;
  max-width:none;
  margin:0 auto;
  /* police plus petite et reglee sur la hauteur : ~33 rangees visibles,
     le terminal reste proche du plein ecran mais bien plus lisible */
  font-size:min(max(12.5px, 1.3vw), calc((100svh - 4px) / 37.5));
  height:calc(33 * var(--row));
  min-height:480px;
  background:var(--vx-black);
  overflow:hidden;
  display:grid;
  grid-template-rows:auto 1fr auto;
}

/* (scanlines et frange chromatique retirees : rendu plus fluide) */
.vx-screen>*{position:relative;z-index:2;min-width:0}

/* Peinture progressive de la page a 1200 bauds */
.vx-paint{
  position:absolute;inset:0;z-index:55;pointer-events:none;
  background:var(--vx-black);
  clip-path:inset(0 0 0 0);
  animation:paint .62s steps(24) forwards;
}
@keyframes paint{ to{ clip-path:inset(100% 0 0 0) } }

/* Transition de page (effacement / retransmission) */
body.transmitting .vx-screen{
  animation:page-clear .16s steps(3) both;
}
@keyframes page-clear{ to{opacity:0;filter:blur(2px) brightness(1.6)} }

/* ============================================================
   BANDEAU SUPERIEUR
   ============================================================ */

.vx-head{
  background:var(--vx-blue);
  color:var(--vx-white);
  padding:0 1ch;
  border-bottom:calc(var(--row)*.18) solid var(--vx-black);
  overflow:hidden;
}
 .vx-head .vx-h1{
  font-size:1.25em;line-height:1.2;
  letter-spacing:0;white-space:nowrap;
  color:var(--vx-white);
  text-shadow:.06em .06em 0 #0a1150;
  font-weight:400;
  overflow:hidden;text-overflow:clip;
}
.vx-head .vx-h1 .lo{color:var(--vx-yellow)}
.vx-head .vx-sub{
  display:flex;justify-content:space-between;gap:1ch;
  height:var(--row);align-items:center;
  color:var(--vx-yellow);font-size:.55em;
  white-space:nowrap;overflow:hidden;
}
.vx-head .vx-sub>span{overflow:hidden;text-overflow:clip}
.vx-head .vx-sub>span:first-child{flex:1 1 auto;min-width:0}
.vx-head .vx-sub>span:nth-child(2){flex:0 0 auto}
.vx-head .vx-sub b{background:var(--vx-red);color:var(--vx-white);padding:0 .4ch;font-weight:400}
.blink{animation:blink 1.06s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* ============================================================
   CORPS : MENU + PAGE
   ============================================================ */

.vx-main{
  display:grid;
  grid-template-columns:12ch 1fr;
  overflow:hidden;
  min-height:0;
}

/* ---------- Menu general (sommaire des services) ---------- */

.vx-menu{
  position:relative;
  background:var(--vx-green);
  border-right:.28ch solid var(--vx-black);
  padding:calc(var(--row)*.35) .6ch calc(var(--row)*.25);
  overflow:hidden;
  display:flex;flex-direction:column;
  color:var(--vx-black);
}
/* (triangle decoratif retire : il rendait le bandeau de marque illisible) */
.vx-menu-title{
  flex:0 0 auto;
  display:block;
  height:calc(var(--row)*1.0);
  line-height:calc(var(--row)*1.0);
  font-size:.92em;color:#123511;
  overflow:hidden;
  white-space:nowrap;
}
.vx-menu ul{
  flex:0 0 auto;
  list-style:none;
  margin:.2em 0 0;
  padding:0;
  overflow:hidden;
}
.vx-menu li{height:calc(var(--row)*1.05);overflow:hidden}
.vx-menu li a{
  display:flex;align-items:center;
  gap:.3ch;
  height:100%;
  padding:0 .2ch;
  color:var(--vx-black);
  font-size:.74em;
  white-space:nowrap;
  outline:none;
}
.vx-menu .pad{display:none}
/* libelle : prend l'espace disponible, jamais de debordement sur le code */
.vx-menu .lbl{
  flex:1 1 auto;min-width:0;
  overflow:hidden;text-overflow:ellipsis;
  color:#123511;
}
.vx-menu .dots{display:none}
.vx-menu .code{
  flex:0 0 auto;
  background:var(--vx-red);color:var(--vx-yellow);
  padding:0 .24ch;font-size:.92em;
  white-space:nowrap;
  margin-left:.1ch;
}
.vx-menu a:hover,.vx-menu a:focus-visible,
.vx-menu li.sel a{
  background:var(--vx-white);color:#000;
}
.vx-menu li.sel a .lbl{color:#0d2f0c}
.vx-menu li.sel a:before{
  content:"\25B6";color:var(--vx-red);margin-right:.2ch;flex:0 0 auto;
}
.vx-menu li.sel a .code{background:var(--vx-yellow);color:#000}
.vx-menu-foot{
  flex:0 0 auto;
  margin-top:auto;
  color:var(--vx-yellow);font-size:.6em;height:calc(var(--row)*1.3);
  display:flex;align-items:center;
  text-shadow:.05em .05em 0 #1b4a14;
  border-top:.1em dashed #2c5c25;padding-top:.15em;
  overflow:hidden;
  white-space:nowrap;
}
.vx-menu .brand{
  flex:0 0 auto;
  display:block;
  height:auto;
  min-height:0;
  padding:.15em 0 .2em;
  border-bottom:.1em dashed #2c5c25;
  margin:0 0 .2em;
  font-size:.6em;line-height:1.08;color:#123511;
  white-space:normal;
  overflow-wrap:break-word;
  overflow:hidden;
}
.vx-menu .brand img{display:none}
.vx-menu .brand b{display:block;color:#0d2f0c;font-weight:400;margin-bottom:.05em}
.vx-menu .brand em{display:block;font-style:normal;color:#17411a}

/* ---------- Page courante ---------- */

.vx-page{
  position:relative;
  overflow:hidden;
  background:var(--vx-black);
  display:grid;
  grid-template-rows:auto 1fr;
  min-width:0;
}

.vx-title{
  display:flex;align-items:center;gap:.5ch;
  background:var(--vx-orange);
  color:#0a0a06;
  padding:0 .5ch;height:calc(var(--row)*1.12);
  font-size:.78em;white-space:nowrap;overflow:hidden;
  border-bottom:.16em solid var(--vx-red-dark);
}
.vx-title .n{background:var(--vx-red);color:var(--vx-yellow);padding:0 .35ch}
.vx-title .t{overflow:hidden;text-overflow:ellipsis;min-width:0}
.vx-title .pg{margin-left:auto;color:#3a1206;flex:0 0 auto;padding-left:.6ch}

.vx-body{
  position:relative;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:thin;
  scrollbar-color:var(--vx-green-dark) var(--vx-black);
  padding:calc(var(--row)*.3) 1.1ch calc(var(--row)*.6);
  min-height:0;
}
.vx-body::-webkit-scrollbar{width:.6ch}
.vx-body::-webkit-scrollbar-thumb{background:var(--vx-green-dark)}

/* ============================================================
   TYPOGRAPHIE DE CONTENU
   ============================================================ */

.vx-body h1,
.vx-body h2,
.vx-body h3,
.vx-body h4{font-weight:400}

.vx-body h2{
  font-size:1em;color:var(--vx-yellow);
  background:var(--vx-blue-dark);
  padding:0 .5ch;margin:calc(var(--row)*.5) 0 calc(var(--row)*.25);
  border-left:.35ch solid var(--vx-red);
  line-height:var(--row);
  overflow-wrap:break-word;
}
.vx-body h3{
  font-size:.9em;color:var(--vx-cyan);
  margin:calc(var(--row)*.4) 0 calc(var(--row)*.15);
  border-bottom:.1em dotted #2b5a2b;
  line-height:1.2;
  overflow-wrap:break-word;
}
.vx-body h4{
  font-size:.82em;color:var(--vx-magenta);
  margin:calc(var(--row)*.3) 0 calc(var(--row)*.1);
}
.vx-body p{
  font-size:.78em;margin:0 0 calc(var(--row)*.28);
  color:var(--c-ink);line-height:1.24;
  overflow-wrap:break-word;
}
.vx-body strong,.vx-body b{color:var(--vx-white);font-weight:400}
.vx-body em,.vx-body i{color:var(--vx-green);font-style:normal}
.vx-body a{color:var(--vx-cyan)}
.vx-body a:hover,.vx-body a:focus-visible{background:var(--vx-yellow);color:#000;outline:none}
.vx-body a.external{color:var(--vx-magenta)}
.vx-body hr{
  border:0;height:.14em;margin:calc(var(--row)*.3) 0;
  background:repeating-linear-gradient(90deg,var(--vx-green-dark) 0 .5ch,transparent .5ch 1ch);
}

.vx-body ul,.vx-body ol{list-style:none;margin:0 0 calc(var(--row)*.3);padding:0}
.vx-body li{
  font-size:.78em;color:var(--c-ink);padding-left:2ch;position:relative;
  margin-bottom:.12em;line-height:1.22;
}
.vx-body ul li:before{content:"\25A0";position:absolute;left:.4ch;color:var(--vx-red);font-size:.8em}
.vx-body ol{counter-reset:n}
.vx-body ol li:before{
  counter-increment:n;content:counter(n,decimal-leading-zero);
  color:var(--vx-yellow);position:absolute;left:0;
}
.vx-body li ul,.vx-body li ol{margin:.1em 0 0}
.vx-body li li{font-size:1em}

/* Citations */
.vx-body blockquote{
  font-size:.78em;color:var(--vx-yellow);
  border-top:.14em dashed var(--vx-green-dark);
  border-bottom:.14em dashed var(--vx-green-dark);
  padding:.25em .5ch;margin:calc(var(--row)*.3) 0;
}
.vx-body blockquote p{color:var(--vx-yellow);margin:0 0 .2em}
.vx-body blockquote p:last-child{margin:0}

/* Tableaux */
.vx-body table{
  width:100%;max-width:100%;
  table-layout:fixed;
  border-collapse:collapse;
  font-size:.72em;margin-bottom:calc(var(--row)*.3);
  color:#cde5cb;
}
.vx-body th,.vx-body td{
  border:.1em solid var(--vx-green-dark);
  padding:.08em .4ch;text-align:left;color:var(--c-ink);
  vertical-align:top;
  overflow-wrap:anywhere;word-break:normal;
}
.vx-body th{background:var(--vx-green-dark);color:var(--vx-yellow);font-weight:400}

/* Fiches "portable-infobox" -> fiche videotex */
.vx-body .portable-infobox{
  border:.14em solid var(--vx-blue);
  background:var(--vx-blue-deep);
  padding:0;margin:.2em 0 .8em 1.2em;
  font-size:.78em;color:var(--vx-white);
  float:right;clear:right;
  width:min(58%,30em);
  min-width:16em;
  max-width:100%;
}
.vx-body .pi-title{
  background:var(--vx-red);color:var(--vx-yellow);
  padding:.15em .6ch;font-size:1.05em;line-height:1.15;
}
.vx-body .pi-header{
  background:var(--vx-blue-dark);color:var(--vx-white);
  padding:.12em .6ch;font-size:.95em;
}
.vx-body .pi-data{
  display:grid;grid-template-columns:9ch 1fr;gap:.6ch;align-items:baseline;
  padding:.18em .6ch;border-top:.1em dotted #1c2c66;
}
.vx-body .pi-data-label{color:var(--vx-yellow);line-height:1.2}
.vx-body .pi-data-value{
  color:#cfe3cc;min-width:0;
  overflow-wrap:anywhere;word-break:normal;
  line-height:1.25;
}
.vx-body .pi-image{margin:0;padding:.3em .5ch;text-align:center}
.vx-body .pi-image img{display:inline-block;max-width:100%;height:auto;image-rendering:pixelated;border:.12em solid var(--vx-blue)}
.vx-body .pi-caption{display:block;font-size:.85em;color:var(--vx-cyan);margin-top:.2em}

/* Sommaire MediaWiki */
.vx-body .toc{
  border:.12em solid var(--vx-green-dark);
  background:var(--vx-green-deep);
  padding:.25em .6ch;margin:0 0 calc(var(--row)*.3);
  font-size:.74em;
  display:inline-block;min-width:min(60%,14em);
}
.vx-body .toc .toctitle h2{background:none;border:0;margin:0;padding:0;color:var(--vx-yellow);font-size:1.05em;display:inline}
.vx-body .toc ul{margin:.15em 0 0;padding-left:.6ch}
.vx-body .toc li{font-size:.95em;padding-left:1.6ch;margin-bottom:.05em}
.vx-body .toc .tocnumber{color:var(--vx-yellow);margin-right:.4ch}
.vx-body .toc a{color:var(--vx-cyan)}
.vx-body .toc .toctogglespan{display:none}

/* Sommaire local (details) */
.vx-body details.local-toc{
  border:.12em solid var(--vx-blue);
  background:var(--vx-blue-deep);
  margin:0 0 calc(var(--row)*.35);
  font-size:.76em;
}
.vx-body details.local-toc summary{
  cursor:pointer;color:var(--vx-yellow);
  padding:.15em .5ch;list-style:none;
  display:flex;align-items:center;gap:.4ch;
}
.vx-body details.local-toc summary::-webkit-details-marker{display:none}
.vx-body details.local-toc summary:before{content:"\25B8";color:var(--vx-red)}
.vx-body details.local-toc[open] summary:before{content:"\25BE"}
.vx-body details.local-toc .prompt{color:var(--vx-red)}
.vx-body details.local-toc ol{margin:.1em 0 .3em;padding:0 .6ch .1em .6ch;counter-reset:tc;list-style:none}
.vx-body details.local-toc li{font-size:.92em;padding-left:1.8ch;position:relative}
.vx-body details.local-toc li:before{
  counter-increment:tc;content:counter(tc,decimal-leading-zero);
  position:absolute;left:0;color:var(--vx-yellow);
}
.vx-body details.local-toc .toc-sub{padding-left:3.4ch}

/* Vignettes / figures */
.vx-body figure{margin:0 0 calc(var(--row)*.3)}
.vx-body .thumb{
  background:var(--vx-blue-deep);
  border:.14em solid var(--vx-blue);
  padding:.3em .4em .2em;
  font-size:.74em;
  /* on ignore les largeurs inline MediaWiki : cadre borne qui suit la photo videotex */
  width:auto !important;
  max-width:min(100%,15em);
  /* vignettes en bord de texte : le texte s'enroule autour */
  float:right;
  margin:.15em 0 .5em 1em;
  clear:both;
}
.vx-body .thumb.tleft{
  float:left;
  margin:.15em 1em .5em 0;
}
.vx-body .thumb.tcenter{
  float:none;
  margin:.4em auto;
}
.vx-body .thumbinner{
  width:auto !important;
  max-width:100%;
}
.vx-body .thumb.tright{float:right;margin-left:1ch;margin-top:.15em}
.vx-body .thumb.tleft{float:left;margin-right:1ch;margin-top:.15em}
.vx-body .thumbinner{max-width:100%}
.vx-body .thumb img.thumbimage{
  display:block;width:100%;max-width:100%;height:auto;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.12em solid var(--vx-blue);
}
.vx-body .thumbcaption{
  display:block;color:var(--vx-cyan);
  font-size:.86em;line-height:1.15;padding-top:.2em;
}
.vx-body .thumbcaption .caption{color:var(--c-ink)}
.vx-body .thumbcaption .info-icon{color:var(--vx-magenta);margin-right:.3ch}
.vx-body .thumbcaption .info-icon svg{display:none}
.vx-body .magnify{display:none}
.vx-body .mw-empty-elt{display:none}

/* Galleries (wikia) — on neutralise les styles inline MediaWiki
   (width/height fixes, wrappers positionnes) pour une grille videotex propre */
.vx-body .wikia-gallery{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5em,1fr));
  gap:.5em;margin:0 0 calc(var(--row)*.4);
  font-size:.68em;
}
.vx-body .wikia-gallery-item{
  width:auto !important;
  min-width:0;
  border:.14em solid var(--vx-green-dark);
  background:#08170a;
  padding:.3em;
  font-size:1em;
}
.vx-body .wikia-gallery-item .thumb{
  background:none;border:0;padding:0;margin:0;
  width:100% !important;
  max-width:none !important;
  height:auto !important;
  float:none !important;
  clear:none !important;
}
.vx-body .wikia-gallery-item .thumb a,
.vx-body .gallery-image-wrapper a{
  display:block;
  width:100% !important;
  height:auto !important;
}
.vx-body .gallery-image-wrapper{
  position:static !important;
  top:auto !important;left:auto !important;
  width:100% !important;
  height:auto !important;
  display:block;text-align:center;
  line-height:0;
}
.vx-body .wikia-gallery-item .thumbimage{
  display:block;width:100% !important;height:auto !important;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.12em solid var(--vx-blue);
  background:#000;
}
.vx-body .lightbox-caption{
  color:var(--vx-cyan);
  padding-top:.3em;line-height:1.18;
  font-size:.94em;
  overflow-wrap:anywhere;word-break:normal;
  display:block;
}
.vx-body .lightbox-caption a{color:var(--vx-yellow)}
.vx-body .lightbox-caption a:hover{background:var(--vx-yellow);color:#000}

/* Carte interactive : le SVG ne doit jamais deborder du cadre */
.vx-body .interactive-maps-container{max-width:100%}
.vx-body a.static-map,
.vx-body a.static-map img{
  display:block;max-width:100%;height:auto;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.12em solid var(--vx-blue);
}

/* Securite : aucune image ne sort de la zone de lecture */
.vx-body img{max-width:100%;height:auto}

/* Securite : les blocs MediaWiki portant une largeur inline (ex. 400px)
   se replient toujours dans la colonne de lecture */
.vx-body [style*="width"]{max-width:100%}

/* Vignettes mediawiki brutes dans les paragraphes (unes de Paris Match) */
.vx-body span[typeof="mw:File"]{display:inline-block;margin:.15em .2em;vertical-align:top}
.vx-body img.mw-file-element{
  display:block;width:auto;height:auto;
  max-width:min(11em,100%);
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.12em solid var(--vx-blue);
  background:#000;
}
.vx-body span[typeof="mw:File"] a:hover img{border-color:var(--vx-yellow)}

/* Video embarquee : la chaine de wrappers MediaWiki (largeurs inline 400px)
   doit se replier dans la colonne de lecture */
.vx-body .embedvideo{
  border:.16em solid var(--vx-blue);
  background:var(--vx-blue-deep);
  padding:.3em;margin:.4em auto calc(var(--row)*.3);
  max-width:100%;
  float:none !important;
  clear:both;
}
.vx-body .embedvideo,
.vx-body .embedvideowrap,
.vx-body .embedvideo p,
.vx-body .embedvideowrap p{
  width:100% !important;
  max-width:100%;
}
.vx-body .embedvideo iframe{
  display:block;max-width:100%;width:100% !important;
  height:auto;aspect-ratio:16/9;
  border:.1em solid var(--vx-blue);
  background:#000;
}

/* Notes / references */
.vx-body .references{
  font-size:.7em;border-top:.14em dashed var(--vx-green-dark);
  margin-top:calc(var(--row)*.4);padding-top:.3em;
}
.vx-body .references li{font-size:.95em;padding-left:1.6ch}
.vx-body .references li:before{display:none}
.vx-body .reference-text{color:var(--c-ink)}
.vx-body .mw-cite-backlink a{color:var(--vx-yellow)}
.vx-body .cite-bracket{color:var(--vx-yellow)}
.vx-body sup.reference a{font-size:.75em;color:var(--vx-yellow);padding:0 .2em;background:var(--vx-blue-deep)}

/* Avertissements / encadres */
.vx-body .portal-lead{
  border:.14em solid var(--vx-green-dark);
  background:var(--vx-green-deep);
  padding:.3em .6ch;margin:0 0 calc(var(--row)*.3);
  font-size:.78em;
}
.vx-body .portal-lead .eyebrow{
  color:var(--vx-yellow);font-size:.9em;margin-bottom:.15em;
}
.vx-body .warning-lead{border-color:var(--vx-red);background:var(--vx-red-dark)}
.vx-body .warning-lead .eyebrow{color:var(--vx-yellow)}

/* Listes de notices / categories */
.vx-body .category-members{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(13em,1fr));
  gap:.15em .8em;margin:0 0 calc(var(--row)*.3);
  list-style:none;
}
.vx-body .category-members li{font-size:.78em;padding-left:1.4ch}
.vx-body .category-members li:before{content:"\25A0";position:absolute;left:.2ch;color:var(--vx-red)}
.vx-body .category-members a{color:var(--vx-cyan)}
.vx-body .alpha-group h2{font-size:.9em;background:var(--vx-green-dark);color:var(--vx-yellow);border-left-color:var(--vx-yellow)}

/* En-tete d'article */
.vx-body .article-header{margin-bottom:calc(var(--row)*.35)}
.vx-body .article-kicker{
  display:flex;justify-content:space-between;gap:1ch;
  font-size:.6em;color:var(--vx-cyan);text-transform:uppercase;
}
.vx-body .article-header h1{
  font-size:1.6em;color:var(--vx-yellow);
  line-height:1.08;margin:.1em 0 .2em;
  text-shadow:.05em .05em 0 #1b4a14;
  overflow-wrap:break-word;
}
.vx-body .article-tools{display:flex;flex-wrap:wrap;gap:.4em;margin-top:.2em}
.vx-body .tool-button{
  font-size:.66em;background:var(--vx-blue-dark);color:var(--vx-white);
  border:.1em solid var(--vx-blue);padding:0 .5ch;cursor:pointer;
  font-family:inherit;line-height:1.5;
}
.vx-body .tool-button:hover,.vx-body .tool-button:focus-visible{background:var(--vx-yellow);color:#000;outline:none}

/* Attribution */
.vx-body .article-attribution{
  border-top:.14em dashed var(--vx-green-dark);
  margin-top:calc(var(--row)*.5);padding-top:.3em;
  font-size:.66em;color:#7fa2a2;line-height:1.2;
}
.vx-body .article-attribution a{color:var(--vx-cyan)}
.vx-body .licence-badge{
  display:inline-block;background:var(--vx-green-dark);color:var(--vx-white);
  padding:0 .4ch;margin-bottom:.2em;
}

/* ============================================================
   BANDEAU DE COMMANDE (TOUCHES MINITEL)
   ============================================================ */

.vx-keys{
  background:var(--vx-blue-dark);
  border-top:calc(var(--row)*.16) solid var(--vx-black);
  padding:0 .5ch;
}
.vx-keyline{
  display:flex;gap:.35ch;align-items:center;height:var(--row);
  font-size:.56em;color:var(--vx-cyan);
  overflow:hidden;white-space:nowrap;
}
.vx-keyline .pg{margin-left:auto;color:var(--vx-yellow);flex:0 0 auto}
.vx-keys button,.vx-keys a.k{
  font-family:inherit;font-size:1em;line-height:1.1;
  background:#2b3a80;color:var(--vx-white);
  border:.1em solid #6479d8;padding:0 .4ch;cursor:pointer;
  white-space:nowrap;
}
.vx-keys button:hover,.vx-keys a.k:hover,
.vx-keys button:focus-visible,.vx-keys a.k:focus-visible{
  background:var(--vx-yellow);color:#000;outline:none
}
.vx-cmd{
  display:flex;gap:.4ch;align-items:center;height:var(--row);
  font-size:.56em;color:var(--vx-green);
  overflow:hidden;
}
.vx-cmd input{
  font:inherit;background:#0a1030;color:var(--vx-yellow);
  border:.1em solid var(--vx-green-dark);padding:0 .4ch;
  width:9ch;text-transform:uppercase;
}
.vx-cmd input:focus{outline:.1em solid var(--vx-yellow)}
.vx-cmd .hint{margin-left:auto;color:#7fa2c8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.vx-cmd .hint b{color:var(--vx-yellow);font-weight:400}
.cursor{
  display:inline-block;width:.5em;height:.8em;background:var(--vx-yellow);
  vertical-align:-.08em;animation:blink 1.05s steps(1) infinite;
}

/* ============================================================
   ECRAN DE CONNEXION
   ============================================================ */

.vx-boot{
  position:fixed;inset:0;z-index:900;
  background:#05060a;
  display:flex;align-items:center;justify-content:center;
  font-family:"LCMVideotex",monospace;
}
.vx-boot[hidden]{display:none}
.vx-boot .box{
  width:min(92vw,680px);color:var(--vx-green);font-size:min(3.4vw,19px);
  line-height:1.4;
}
.vx-boot .box b{color:var(--vx-white);font-weight:400}
.vx-boot .box .y{color:var(--vx-yellow)}
.vx-boot .box .c{color:var(--vx-cyan)}
.vx-boot .bar{
  height:.9em;margin-top:.6em;
  background:repeating-linear-gradient(90deg,var(--vx-green) 0 .55em,transparent .55em 1.1em);
  animation:baud .55s steps(12) forwards;transform-origin:left;
}
@keyframes baud{from{transform:scaleX(.02)}to{transform:scaleX(1)}}

/* ============================================================
   RECHERCHE (PANNEAU + PAGE)
   ============================================================ */

.command-panel{
  position:fixed;
  top:0;left:0;right:0;bottom:0;
  z-index:800;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.88);
  padding:16px;
}
.command-panel[hidden]{display:none}
.command-panel .command-backdrop{
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background:none;border:0;cursor:default;
}
.command-panel section{
  position:relative;
  width:min(680px,100%);
  margin:auto;   /* ceinture + bretelles : centre meme si flex echoue */
  background:var(--vx-black);
  border:.2em solid var(--vx-yellow);
  color:var(--vx-white);
  font-size:min(3vw,20px);
}
.command-panel header{
  display:flex;justify-content:space-between;align-items:center;
  background:var(--vx-blue);color:var(--vx-white);
  padding:.1em .5ch;font-size:.9em;
}
.command-panel header b{font-weight:400}
.command-panel header button{
  background:var(--vx-red);color:var(--vx-white);
  border:0;padding:0 .5ch;cursor:pointer;font-family:inherit;
}
.command-panel header button:hover{background:var(--vx-yellow);color:#000}
.command-panel label{
  display:block;color:var(--vx-yellow);font-size:.75em;
  padding:.3em .5ch .1em;
}
.command-panel input{
  width:100%;background:#0a1030;color:var(--vx-white);
  border:.1em solid var(--vx-green-dark);
  padding:.1em .5ch;font-size:.9em;
}
.command-panel input:focus{outline:.1em solid var(--vx-yellow)}
.command-results{max-height:45vh;overflow:auto;margin-top:.3em}
.command-results a{
  display:block;padding:.15em .5ch;font-size:.72em;color:var(--c-ink);
  border-bottom:.1em dotted #2b5a2b;
}
.command-results a b{color:var(--vx-yellow);font-weight:400}
.command-results a small{display:block;color:#7fa2c8;font-size:.9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.command-results a.selected,.command-results a:hover{background:var(--vx-yellow);color:#000}
.command-results a.selected b,.command-results a.selected small{color:#000}
.command-panel footer{
  font-size:.6em;color:var(--vx-cyan);padding:.2em .5ch;
  display:flex;gap:.6ch;flex-wrap:wrap;
}
.command-panel kbd{
  background:#2b3a80;color:var(--vx-white);
  border:.1em solid #6479d8;padding:0 .3ch;
}

/* Page recherche dediee */
.search-result{
  border:.12em solid var(--vx-green-dark);
  padding:.2em .5ch;margin-bottom:.4em;font-size:.78em;
}
.search-result h2{background:none;border:0;margin:0;padding:0;color:var(--vx-yellow);font-size:1.05em;line-height:1.2}
.search-result p{font-size:.95em;margin:.1em 0}
.search-result small{color:var(--vx-cyan)}
.vx-form{display:grid;gap:.3em;margin-bottom:calc(var(--row)*.3)}
.vx-form label{font-size:.7em;color:var(--vx-yellow)}
.vx-form input{
  font:inherit;font-size:.78em;background:#0a1030;color:var(--vx-white);
  border:.12em solid var(--vx-blue);padding:.1em .5ch;width:100%;
}
.vx-form input:focus{outline:.1em solid var(--vx-yellow)}
.vx-form button{
  font-family:inherit;font-size:.78em;background:var(--vx-red);color:var(--vx-yellow);
  border:.1em solid #f27a52;padding:0 .6ch;cursor:pointer;justify-self:start;
}
.vx-form button:hover{background:var(--vx-yellow);color:#000}

/* Page recherche dediee : formulaire centre */
.search-page-form{
  display:flex;flex-direction:column;gap:.3em;
  margin:0 auto calc(var(--row)*.3);
  font-size:.72em;
  max-width:38em;
}
.search-page-results{min-height:2em;max-width:52em;margin:0 auto}
.search-count{text-align:center}
.search-page-form label{color:var(--vx-yellow)}
.search-page-form div{display:flex;align-items:center;gap:.3ch}
.search-page-form div>span{color:var(--vx-red);font-size:1.1em}
.search-page-form input{
  font:inherit;font-size:.9em;background:#0a1030;color:var(--vx-white);
  border:.1em solid var(--vx-green-dark);padding:.05em .4ch;flex:1;min-width:0;
}
.search-page-form input:focus{outline:.1em solid var(--vx-yellow)}
.search-page-form button{
  font-family:inherit;font-size:.9em;background:var(--vx-red);color:var(--vx-yellow);
  border:.1em solid #f27a52;padding:0 .6ch;cursor:pointer;
}
.search-page-form button:hover{background:var(--vx-yellow);color:#000}
.search-count{
  color:var(--vx-cyan);font-size:.68em;margin:0 0 calc(var(--row)*.25);
}
.search-page-results{min-height:2em}

/* ============================================================
   VISIONNEUSE (LIGHTBOX)
   ============================================================ */

.lightbox{
  width:min(94vw,1500px);
  max-width:94vw;
  border:.2em solid var(--vx-yellow);
  background:#000;
  color:var(--vx-white);
  font-family:"LCMVideotex",monospace;
  padding:.7em 1em 1em;
  margin:auto;
}
.lightbox::backdrop{background:rgba(0,0,0,.92)}
.lightbox figure{margin:0;text-align:center}
.lightbox img{
  display:block;
  width:min(100%,1200px);
  max-width:100%;
  max-height:78vh;
  height:auto;
  object-fit:contain;
  margin:0 auto;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.14em solid var(--vx-blue);
  background:#000;
}
.lightbox figcaption{
  color:var(--vx-cyan);font-size:.8em;margin-top:.4em;
  border-top:.1em dotted #2b5a2b;padding-top:.3em;
}
.lightbox button{
  position:absolute;top:0;right:0;
  background:var(--vx-red);color:var(--vx-white);
  border:0;padding:.1em .5em;cursor:pointer;font-family:inherit;font-size:1em;
}
.lightbox button:hover{background:var(--vx-yellow);color:#000}

/* ============================================================
   PAGE D'ACCUEIL
   ============================================================ */

.home-terminal{margin-bottom:calc(var(--row)*.4)}
.home-terminal-cap{
  display:grid;grid-template-columns:1fr auto 1fr;gap:1ch;align-items:center;
  font-size:.54em;color:var(--vx-cyan);
  border:.12em solid var(--vx-green-dark);
  background:var(--vx-green-deep);
  padding:0 .5ch;line-height:var(--row);
}
.home-terminal-cap b{color:var(--vx-yellow);font-weight:400;text-align:center}
.home-terminal-cap span:last-child{text-align:right}

.home-hero{
  display:grid;grid-template-columns:1.55fr 1fr;gap:1.6ch;
  padding:calc(var(--row)*.4) 0;
}
.home-overline{
  color:var(--vx-green);font-size:.6em;
  border-left:.3ch solid var(--vx-yellow);
  background:var(--vx-green-deep);
  padding:.1em .5ch;margin-bottom:.35em;
}
.home-hero h1{
  font-size:1.4em;color:var(--vx-yellow);line-height:1.05;font-weight:400;
  text-shadow:.06em .06em 0 #1b4a14;
}
.home-hero h1 em{font-style:normal;color:var(--vx-white)}
.home-pitch{color:var(--vx-cyan);font-size:.72em;margin:.25em 0 .5em;line-height:1.22}
.home-search{margin:.5em 0}
.home-search label{display:block;font-size:.62em;color:var(--vx-yellow);margin-bottom:.2em}
.home-search div{display:flex;align-items:center;gap:.3ch}
.home-search div>span{color:var(--vx-red);font-size:.8em}
.home-search input{
  font:inherit;font-size:.8em;background:#0a1030;color:var(--vx-white);
  border:.1em solid var(--vx-green-dark);padding:.05em .4ch;flex:1;min-width:0;
}
.home-search input:focus{outline:.1em solid var(--vx-yellow)}
.home-search button{
  font-family:inherit;font-size:.72em;background:var(--vx-red);color:var(--vx-yellow);
  border:.1em solid #f27a52;padding:0 .5ch;cursor:pointer;
}
.home-search button:hover{background:var(--vx-yellow);color:#000}
.home-stats{
  display:flex;flex-wrap:wrap;gap:.4em .9em;
  margin-top:.5em;font-size:.6em;color:var(--vx-cyan);
}
.home-stats b{color:var(--vx-yellow);font-weight:400;font-size:1.15em;margin-right:.2ch}

.home-emblem{
  border:.16em solid var(--vx-blue);
  background:var(--vx-blue-deep);
  padding:.5em .6em;
  text-align:center;
  align-self:center;
}
.videotex-portrait{position:relative;margin:0 0 .4em}
.videotex-portrait img{
  display:block;width:min(100%,13em);margin:0 auto;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.14em solid var(--vx-green-dark);
}
.videotex-portrait span{
  position:absolute;left:0;right:0;bottom:-.1em;margin:0 auto;
  width:fit-content;
  background:var(--vx-blue);color:var(--vx-yellow);
  font-size:.5em;padding:0 .5ch;
}
.home-emblem p{color:var(--vx-white);font-size:.86em;line-height:1.15;margin:0}
.home-emblem p b{color:var(--vx-yellow);font-weight:400}
.home-emblem small{display:block;color:var(--vx-cyan);font-size:.6em;margin-top:.4em;line-height:1.2}

.home-marquee{
  overflow:hidden;white-space:nowrap;
  border-top:.14em solid var(--vx-red-dark);
  border-bottom:.14em solid var(--vx-red-dark);
  padding:.15em 0;margin:.25em 0;
  font-size:.6em;color:var(--vx-yellow);
}
.home-marquee span{margin-right:2em}

.home-services{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(15em,1fr));gap:.4em;
  margin:.5em 0;
}
.home-service{
  display:grid;grid-template-columns:auto 1fr;gap:.6ch;align-items:center;
  border:.13em solid var(--vx-green-dark);
  background:var(--vx-green-deep);
  padding:.25em .6ch;
}
.home-service:hover,.home-service:focus-visible{background:var(--vx-green-dark);outline:none}
.home-service-no{
  font-size:1.2em;color:var(--vx-yellow);
  border:.1em solid var(--vx-yellow);padding:0 .3ch;
}
.home-service-copy b{display:block;color:var(--vx-white);font-weight:400;font-size:.86em}
.home-service-copy small{color:var(--vx-cyan);font-size:.66em}
.home-service>strong{
  grid-column:1/-1;display:none;
}

.home-quick{
  border:.13em solid var(--vx-blue);
  padding:.25em .6ch;margin:.4em 0;
  font-size:.66em;
}
.home-quick b{color:var(--vx-yellow);font-weight:400;display:block;margin-bottom:.15em}
.home-quick a{display:inline-block;color:var(--vx-cyan);margin:0 .9em .1em 0;white-space:nowrap}
.home-quick a span{color:var(--vx-red);margin-right:.2ch}
.home-quick a:hover{background:var(--vx-yellow);color:#000}

/* ============================================================
   PUBLICITES DE LA COLONNE DE GAUCHE
   Slot .vx-ad-slot rempli par vx.js (choix aleatoire).
   Chaque pub est un <a class="vx-ad" data-ad="cle">.
   Pour ajouter une pub : ajouter un objet a GP_ADS dans vx.js
   et, si besoin, une variante [data-ad="..."] ci-dessous.
   ============================================================ */
.vx-menu .vx-ad-slot{
  flex:0 1 auto;
  margin-top:auto;   /* colle les pubs en bas du menu, au-dessus du pied */
  margin-bottom:.3em;
  display:flex;
  flex-direction:column;
  gap:.45em;
  min-height:0;              /* autorise la pile a retrecir dans la colonne  */
  overflow-y:auto;           /* si les 3 pubs depassent : defilement, jamais */
  overflow-x:hidden;         /* de chevauchement avec le menu ou le pied     */
  scrollbar-width:thin;
  scrollbar-color:var(--vx-black) transparent;
}
.vx-menu .vx-ad-slot::-webkit-scrollbar{width:5px}
.vx-menu .vx-ad-slot::-webkit-scrollbar-thumb{background:var(--vx-black)}
.vx-menu .vx-ad{flex:0 0 auto}
.vx-menu .vx-ad{
  display:block;
  height:auto;
  font-size:.62em;
  line-height:1.15;
  border:.16em solid var(--vx-red);
  background:#000;
  color:var(--vx-white);
  padding:.3em;
}
.vx-menu .vx-ad:hover{border-color:var(--vx-yellow)}
.vx-menu .vx-ad img{
  display:block;width:100%;height:auto;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.1em solid var(--vx-red);
}
/* Pub LCMBDLRPI-Channel : banniere texte videotex (pas d'image) */
.vx-menu .vx-ad[data-ad="lcm"]{
  background:var(--vx-blue-deep);
  border-color:var(--vx-blue);
  text-align:center;
}
.vx-menu .vx-ad[data-ad="lcm"]:hover{border-color:var(--vx-yellow)}
.vx-ad[data-ad="lcm"] .vx-ad-kicker{
  display:block;
  color:var(--vx-red);
  font-size:.9em;
  letter-spacing:.06em;
}
.vx-ad[data-ad="lcm"] .vx-ad-kicker b{
  background:var(--vx-red);color:var(--vx-white);
  padding:0 .3ch;font-weight:400;
}
.vx-ad[data-ad="lcm"] .vx-ad-title{
  display:block;
  color:var(--vx-yellow);
  font-size:1.15em;
  line-height:1.1;
  margin:.15em 0;
}
.vx-ad[data-ad="lcm"] .vx-ad-title b{color:var(--vx-white);font-weight:400}
.vx-ad[data-ad="lcm"] .vx-ad-sub{
  display:block;
  color:var(--vx-cyan);
  font-size:.92em;
  line-height:1.15;
}
/* Portrait du fondateur (Wissam Bengherbi), meme photo que le sous-site LCM */
.vx-ad[data-ad="lcm"] .vx-ad-portrait{
  display:block;
  width:min(58%,7em);
  height:auto;
  margin:.25em auto .1em;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.12em solid var(--vx-blue);
  background:#000;
}
.vx-ad[data-ad="lcm"] .vx-ad-portrait-cap{
  display:block;
  color:var(--vx-yellow);
  font-size:.8em;
  line-height:1.1;
  margin-bottom:.15em;
}
@media (max-width:760px){
  .vx-menu .vx-ad-slot{display:none}
}
.home-channel-link{
  display:flex;align-items:baseline;gap:.6ch;flex-wrap:wrap;
  border:.13em solid var(--vx-blue);
  background:var(--vx-blue-deep);
  padding:.2em .6ch;margin:0 0 .4em;
  font-size:.64em;
}
.home-channel-link span{color:var(--vx-red);font-weight:400}
.home-channel-link b{color:var(--vx-yellow);font-weight:400}
.home-channel-link small{color:var(--vx-cyan);font-size:.9em}
.home-channel-link:hover{background:var(--vx-blue)}

/* Corpus iconographique (galerie accueil) */
.home-source{
  border:.16em solid var(--vx-green-dark);
  background:var(--vx-green-deep);
  padding:.3em .6ch .4em;
  margin-top:calc(var(--row)*.4);
}
.home-source-head{
  display:flex;align-items:center;gap:1ch;flex-wrap:wrap;
  border-bottom:.1em dashed #2b5a2b;
  padding-bottom:.2em;margin-bottom:.3em;
  font-size:.68em;
}
.home-source-head div{color:var(--vx-cyan)}
.home-source-head div b{color:var(--vx-yellow);font-weight:400}
.home-source-head h2{
  background:none;border:0;margin:0;padding:0;
  color:var(--vx-white);font-size:1.35em;
  text-transform:uppercase;letter-spacing:.04em;
}
.home-source-head small{margin-left:auto;color:#7fa2c8}

/* ============================================================
   PAGES D'INDEX / MEDIAS
   ============================================================ */

.media-toolbar{
  display:flex;align-items:center;gap:.5ch;flex-wrap:wrap;
  margin:0 0 .4em;font-size:.7em;
}
.media-toolbar label{color:var(--vx-yellow)}
.media-toolbar input{
  font:inherit;font-size:.9em;background:#0a1030;color:var(--vx-white);
  border:.1em solid var(--vx-green-dark);padding:.05em .4ch;flex:1;min-width:10em;
}
.media-toolbar input:focus{outline:.1em solid var(--vx-yellow)}
.media-list{list-style:none;margin:0;padding:0}
.media-list li{
  display:flex;justify-content:space-between;gap:.6ch 1ch;align-items:baseline;
  flex-wrap:wrap;
  border-bottom:.1em dotted #2b5a2b;
  padding:.12em 0;font-size:.68em;
}
.media-list li b{color:var(--vx-white);font-weight:400;word-break:break-all}
.media-list li small{color:#7fa2c8;display:block}
.media-list li>div:last-child{
  display:flex;gap:.6ch;flex-wrap:wrap;
  white-space:normal;flex:1 1 auto;justify-content:flex-end;
  min-width:0;
}
.media-list .media-local{
  background:var(--vx-green-dark);color:var(--vx-white);
  padding:0 .4ch;
}
.media-list .media-local:hover{background:var(--vx-yellow);color:#000}
.media-list a[target]{color:var(--vx-cyan)}

/* Liste de notices (articles.html) */
.notice-list{list-style:none;margin:0;padding:0}
.notice-list>li{
  display:grid;grid-template-columns:auto 1fr;gap:.8ch;
  border-bottom:.1em dotted #2b5a2b;
  padding:.18em 0;font-size:.74em;
}
.notice-list .nl-num{color:var(--vx-yellow)}
.notice-list .nl-title{color:var(--vx-cyan)}
.notice-list .nl-title:hover{background:var(--vx-yellow);color:#000}
.notice-list .nl-excerpt{color:#7fa2c8;font-size:.92em;grid-column:2}
.notice-list .nl-excerpt img{
  display:none;
}
nav.alphabet{
  display:flex;flex-wrap:wrap;gap:.2em .3em;
  margin:0 0 .5em;font-size:.7em;
}
nav.alphabet a{
  background:var(--vx-blue-dark);color:var(--vx-white);
  padding:0 .35em;border:.1em solid var(--vx-blue);
}
nav.alphabet a:hover{background:var(--vx-yellow);color:#000}
.article-index .alpha-group{
  margin:0 0 calc(var(--row)*.45);
}
.article-index .alpha-group h2{
  font-size:.9em;background:var(--vx-green-dark);color:var(--vx-yellow);
  border-left-color:var(--vx-yellow);
  width:fit-content;min-width:3ch;text-align:center;
}
.article-index .alpha-group ul{
  list-style:none;margin:0;padding:0;
  /* deux colonnes de noms de notices */
  columns:2;column-gap:2.2em;
}
.article-index .alpha-group li{
  font-size:.78em;padding:.16em 0 .16em 1.8ch;position:relative;
  border-bottom:.1em dotted #2b5a2b;margin:0;
  break-inside:avoid;
}
.article-index .alpha-group li:before{
  content:"\25A0";position:absolute;left:.3ch;color:var(--vx-red);font-size:.8em;top:.3em;
}
.article-index .alpha-group li a{color:var(--vx-cyan)}
.article-index .alpha-group li a:hover{background:var(--vx-yellow);color:#000}

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width:900px){
  .vx-main{grid-template-columns:12ch 1fr}
  .vx-keyline{flex-wrap:wrap;height:auto;min-height:var(--row);padding:.08em 0}
}
@media (max-width:760px){
  body{padding:0}
  .vx-screen{
    width:100vw;height:100svh;min-height:0;
    font-size:min(3.05vw,17px);
  }
  /* menu : bandeau horizontal deroulant sous le bandeau */
  .vx-main{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .vx-menu{
    border-right:0;border-bottom:.22ch solid var(--vx-black);
    padding:.15em .5ch;
    display:block;overflow-x:auto;white-space:nowrap;
    font-size:.92em;
  }
  .vx-menu .brand{display:none}
  .vx-menu-title{display:none}
  .vx-menu ul{display:flex;margin:0;gap:.3ch}
  .vx-menu li{flex:0 0 auto}
  .vx-menu li.sel{order:-1}
  .vx-menu a .dots,.vx-menu .dots{display:none}
  .vx-menu-foot{display:none}
  .vx-menu a{font-size:.92em;padding:0 .4ch}
  .vx-menu li.sel a{background:var(--vx-yellow);color:#000}
  .vx-menu li.sel a:before{content:"";display:none}
  .vx-keyline{flex-wrap:wrap;height:auto;padding:.1em 0}
  .vx-cmd .hint{display:none}
  .vx-head .vx-h1{font-size:1.35em}
  .vx-head .vx-sub{font-size:.56em}
  .home-hero{grid-template-columns:1fr}
  .home-hero .home-emblem{display:none}
  .home-services{grid-template-columns:1fr}
  .vx-body .portable-infobox{float:none;width:100%;margin-left:0}
}
@media (max-width:480px){
  .vx-body{padding:calc(var(--row)*.25) .7ch calc(var(--row)*.5)}
  .vx-keyline .pg{display:none}
  .home-terminal-cap{grid-template-columns:1fr auto}
  .home-terminal-cap span:last-child{display:none}
  .vx-title{font-size:.82em}
}
@media (max-width:640px){
  .vx-body .wikia-gallery{grid-template-columns:repeat(2,1fr);gap:.4em}
  .vx-body .wikia-gallery-item{font-size:.8em}
  .article-index .alpha-group ul{columns:1}
}

/* ============================================================
   ACCESSIBILITE
   ============================================================ */

@media (prefers-reduced-motion:reduce){
  .vx-paint,.blink,.cursor{animation:none!important}
  .vx-paint{display:none}
  .vx-boot{display:none!important}
}

/* 3615 BB — annonce Minitel Rose dans la rotation aleatoire */
.vx-menu .vx-ad[data-ad="bb"]{
  display:flex;flex-direction:column;align-items:center;gap:.26rem;
  padding:.42rem;background:#000;border:3px solid var(--vx-magenta,#f0f);
  color:var(--vx-white,#fff);text-align:center;overflow:hidden;
}
.vx-menu .vx-ad[data-ad="bb"]:hover{border-color:var(--vx-cyan,#0ff)}
.vx-ad[data-ad="bb"] .vx-ad-bb-top{width:100%;padding:.18rem;background:var(--vx-magenta,#f0f);color:#000;font-size:.58rem;line-height:1.1}
.vx-ad[data-ad="bb"] .vx-ad-bb-call{color:var(--vx-cyan,#0ff);font-size:1.5rem;line-height:1;letter-spacing:.08em;text-shadow:2px 0 var(--vx-blue,#00f)}
.vx-ad[data-ad="bb"] .vx-ad-bb-call b{color:var(--vx-magenta,#f0f)}
.vx-ad[data-ad="bb"] .vx-ad-bb-portrait{width:100%;max-width:150px;aspect-ratio:1;object-fit:cover;image-rendering:pixelated;border:2px solid var(--vx-blue,#00f)}
.vx-ad[data-ad="bb"] .vx-ad-bb-name{color:var(--vx-white,#fff);font-size:.64rem;line-height:1.15}
.vx-ad[data-ad="bb"] .vx-ad-bb-sub{width:100%;padding:.24rem;background:var(--vx-blue,#00f);color:var(--vx-yellow,#ff0);font-size:.7rem;line-height:1.05}
/* Pub 3615 GLUCKSMANN — « avez-vous rêvé de cet homme ? » (tract Chimère Quantique) */
.vx-menu .vx-ad[data-ad="glk"]{background:#000;border-color:var(--vx-cyan,#0ff);text-align:center;padding:.45em .35em}
.vx-menu .vx-ad[data-ad="glk"]:hover{border-color:var(--vx-yellow,#ff0)}
.vx-menu .vx-ad[data-ad="glk"] .vx-ad-glk-portrait{display:block;width:min(72%,9.5em);height:auto;margin:0 auto .35em;image-rendering:pixelated;image-rendering:crisp-edges;border:0;background:#000}
.vx-ad[data-ad="glk"] .vx-ad-glk-q{display:block;color:var(--vx-cyan,#0ff);font-size:1.1em;line-height:1.18;letter-spacing:.02em;text-transform:lowercase}
/* Pub 3615 VIDEOSTAR — chaîne SQUEEZ (plateforme de vidéo minitélique) */
.vx-menu .vx-ad[data-ad="vst"]{background:#000;border-color:var(--vx-red,#f00);text-align:center;padding:0 0 .35em;display:flex;flex-direction:column;align-items:center;gap:.22em}
.vx-menu .vx-ad[data-ad="vst"]:hover{border-color:var(--vx-yellow,#ff0)}
.vx-ad[data-ad="vst"] .vx-ad-vst-top{width:100%;padding:.18rem;background:var(--vx-red,#f00);color:var(--vx-white,#fff);font-size:.6rem;line-height:1.1}
.vx-ad[data-ad="vst"] .vx-ad-vst-call{color:var(--vx-yellow,#ff0);font-size:1.05rem;line-height:1.05;letter-spacing:.05em;text-shadow:2px 0 var(--vx-red,#f00)}
.vx-ad[data-ad="vst"] .vx-ad-vst-call b{color:var(--vx-white,#fff);font-weight:400}
.vx-ad[data-ad="vst"] .vx-ad-vst-portrait{width:100%;max-width:150px;aspect-ratio:16/9;object-fit:cover;image-rendering:pixelated;border:2px solid var(--vx-yellow,#ff0)}
.vx-ad[data-ad="vst"] .vx-ad-vst-name{color:var(--vx-cyan,#0ff);font-size:.64rem;line-height:1.2}
.vx-ad[data-ad="vst"] .vx-ad-vst-name b{color:var(--vx-yellow,#ff0);font-weight:400}
.vx-ad[data-ad="vst"] .vx-ad-vst-sub{width:100%;padding:.22rem;background:var(--vx-blue-deep,#003);color:var(--vx-cyan,#0ff);font-size:.62rem;line-height:1.1}
/* Pub WUHAN-CAM — webcam vidéotex sur la momie flottante de Mao */
.vx-menu .vx-ad[data-ad="cam"]{background:#000;border-color:var(--vx-green,#0f0);text-align:center;padding:0 0 .35em;display:flex;flex-direction:column;align-items:center;gap:.22em}
.vx-menu .vx-ad[data-ad="cam"]:hover{border-color:var(--vx-yellow,#ff0)}
.vx-ad[data-ad="cam"] .vx-ad-cam-live{width:100%;padding:.18rem;background:var(--vx-red,#f00);color:var(--vx-white,#fff);font-size:.62rem;line-height:1.1;letter-spacing:.06em}
.vx-ad[data-ad="cam"] .vx-ad-cam-shot{width:100%;max-width:150px;aspect-ratio:4/3;object-fit:cover;image-rendering:pixelated;border:2px solid var(--vx-green,#0f0)}
.vx-ad[data-ad="cam"] .vx-ad-cam-name{color:var(--vx-yellow,#ff0);font-size:.66rem;line-height:1.2}
.vx-ad[data-ad="cam"] .vx-ad-cam-sub{width:100%;padding:.22rem;background:#010;border-top:1px solid var(--vx-green,#0f0);color:var(--vx-green,#0f0);font-size:.58rem;line-height:1.1}
/* Pub 3615 CINETHEQUE — la video a la demande (plateforme privee) */
.vx-menu .vx-ad[data-ad="ct"]{background:#000;border-color:var(--vx-yellow,#ff0);text-align:center;padding:0 0 .35em;display:flex;flex-direction:column;align-items:center;gap:.22em}
.vx-menu .vx-ad[data-ad="ct"]:hover{border-color:var(--vx-white,#fff)}
.vx-ad[data-ad="ct"] .vx-ad-ct-top{width:100%;padding:.18rem;background:var(--vx-yellow,#ff0);color:#000;font-size:.6rem;line-height:1.1;letter-spacing:.08em}
.vx-ad[data-ad="ct"] .vx-ad-ct-call{color:var(--vx-yellow,#ff0);font-size:.92rem;line-height:1.05;letter-spacing:.04em;text-shadow:2px 0 var(--vx-red,#f00)}
.vx-ad[data-ad="ct"] .vx-ad-ct-call b{color:var(--vx-white,#fff);font-weight:400}
.vx-ad[data-ad="ct"] .vx-ad-ct-shot{width:100%;max-width:126px;height:auto;image-rendering:pixelated;border:2px solid var(--vx-red,#f00)}
.vx-ad[data-ad="ct"] .vx-ad-ct-name{color:var(--vx-cyan,#0ff);font-size:.58rem;line-height:1.25}
.vx-ad[data-ad="ct"] .vx-ad-ct-name b{color:var(--vx-yellow,#ff0);font-weight:400}
.vx-ad[data-ad="ct"] .vx-ad-ct-sub{width:100%;padding:.22rem;background:var(--vx-red,#f00);color:var(--vx-white,#fff);font-size:.56rem;line-height:1.1}

/* ============================================================
   MODE 3 PUBLICITES SIMULTANEES : les pubs sont legerement
   resserrees mais JAMAIS rognees — les images restent entieres.
   Si les trois pubs depassent la hauteur de la colonne, le slot
   defile verticalement : aucune superposition possible.
   ============================================================ */
.vx-menu .vx-ad-slot{gap:.3em}
.vx-menu .vx-ad{font-size:.58em;padding:.26em}
/* les images ne sont jamais recadrees : largeur pleine, hauteur auto */
.vx-menu .vx-ad img{width:100%;height:auto;max-height:none;object-fit:unset}
/* LCM : portrait legerement reduit mais entier */
.vx-ad[data-ad="lcm"] .vx-ad-portrait{width:min(52%,5.6em);height:auto;margin:.18em auto .08em}
.vx-ad[data-ad="lcm"] .vx-ad-title{font-size:1.05em}
/* 3615 BB : portrait entier, un peu plus etroit */
.vx-ad[data-ad="bb"] .vx-ad-bb-call{font-size:1.2rem}
.vx-ad[data-ad="bb"] .vx-ad-bb-portrait{width:100%;max-width:108px;aspect-ratio:auto;height:auto;object-fit:unset}
/* GLUCKSMANN : tract entier (portrait haut), simplement plus etroit */
.vx-menu .vx-ad[data-ad="glk"] .vx-ad-glk-portrait{width:min(58%,6.6em);height:auto;max-height:none;object-fit:unset;object-position:unset;margin-bottom:.25em}
.vx-ad[data-ad="glk"] .vx-ad-glk-q{font-size:1em}
/* VIDEOSTAR : miniature 16:9 entiere */
.vx-ad[data-ad="vst"] .vx-ad-vst-call{font-size:.9rem}
.vx-ad[data-ad="vst"] .vx-ad-vst-portrait{width:100%;max-width:126px;aspect-ratio:auto;height:auto;object-fit:unset}
.vx-ad[data-ad="vst"] .vx-ad-vst-top{font-size:.54rem}
.vx-ad[data-ad="vst"] .vx-ad-vst-name{font-size:.58rem}
.vx-ad[data-ad="vst"] .vx-ad-vst-sub{font-size:.54rem}
/* WUHAN-CAM : vue 4:3 entiere */
.vx-ad[data-ad="cam"] .vx-ad-cam-shot{width:100%;max-width:126px;aspect-ratio:auto;height:auto;object-fit:unset}
.vx-ad[data-ad="cam"] .vx-ad-cam-live{font-size:.54rem}
.vx-ad[data-ad="cam"] .vx-ad-cam-name{font-size:.58rem}
.vx-ad[data-ad="cam"] .vx-ad-cam-sub{font-size:.52rem}

/* ============================================================
   PANNEAU SERVICE PUBLIC « ESSAIS NUCLEAIRES » — bas de la page
   d'accueil uniquement (insere par vx.js). Pas une publicite.
   ============================================================ */
.vx-nuc-panel{
  display:flex;align-items:center;gap:1.2ch;flex-wrap:wrap;
  margin:1.2em 0 .4em;padding:.5em .9ch;
  border:.14em solid var(--vx-white);
  background:#000;
  font-size:.6em;line-height:1.3;
  color:var(--vx-white);
}
.vx-nuc-panel:hover{border-color:var(--vx-yellow);background:#001}
.vx-nuc-flag{display:inline-flex;width:4ch;height:2.4ch;border:1px solid var(--vx-white);flex:0 0 auto}
.vx-nuc-flag i{flex:1}
.vx-nuc-flag i:nth-child(1){background:var(--vx-blue,#00f)}
.vx-nuc-flag i:nth-child(2){background:var(--vx-white,#fff)}
.vx-nuc-flag i:nth-child(3){background:var(--vx-red,#f00)}
.vx-nuc-txt{flex:1 1 22ch;min-width:0}
.vx-nuc-txt b{display:block;color:var(--vx-cyan);font-weight:400;margin-bottom:.15em}
.vx-nuc-txt u{color:var(--vx-yellow);text-decoration-thickness:from-font}
.vx-nuc-go{flex:0 0 auto;background:var(--vx-blue,#00f);color:var(--vx-white);padding:.3em .8ch;white-space:nowrap}
.vx-nuc-panel:hover .vx-nuc-go{background:var(--vx-yellow);color:#000}

/* ============================================================
   AVIS DE RECHERCHE « BILLY » — petit pop-up fixe en bas a
   droite de l'ecran (insere par vx.js une fois sur deux).
   Fermable par la croix ou la touche Echap.
   ============================================================ */
.vx-avis-billy{
  position:fixed;
  right:14px;bottom:56px;   /* au-dessus de la barre F1-F5 */
  z-index:60;
  width:10.5em;
  border:.14em solid var(--vx-red,#f00);
  background:#000;
  font-size:.85em;line-height:1.2;
  text-align:center;color:var(--vx-white,#fff);
  box-shadow:0 0 0 2px #000,0 0 18px rgba(255,0,0,.35);
  animation:vx-avis-in .5s steps(4);
}
@keyframes vx-avis-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.vx-avis-billy .vx-avis-close{
  position:absolute;top:0;right:0;z-index:2;
  width:1.5em;height:1.5em;
  background:var(--vx-red,#f00);color:var(--vx-white,#fff);
  border:0;font:inherit;font-size:.72em;line-height:1;
  cursor:pointer;
}
.vx-avis-billy .vx-avis-close:hover{background:var(--vx-yellow,#ff0);color:#000}
.vx-avis-billy .vx-avis-link{
  display:flex;flex-direction:column;align-items:center;gap:.2em;
  padding:0 0 .3em;font-size:.6em;
}
.vx-avis-billy .vx-avis-link:hover{outline:.14em solid var(--vx-yellow,#ff0);outline-offset:-.14em}
.vx-avis-billy .vx-avis-top{
  width:100%;padding:.3em 1.8em .3em .5em;  /* place pour la croix */
  background:var(--vx-red,#f00);color:var(--vx-white,#fff);
  letter-spacing:.06em;font-size:.9em;line-height:1.25;
  white-space:normal;overflow:visible;      /* lisible en entier */
}
.vx-avis-billy img{
  width:72%;max-width:9em;height:auto;margin-top:.3em;
  image-rendering:pixelated;image-rendering:crisp-edges;
  border:.13em double var(--vx-white,#fff);background:#000;
}
.vx-avis-billy .vx-avis-nom{color:var(--vx-yellow,#ff0);font-size:.95em}
.vx-avis-billy .vx-avis-nom b{color:var(--vx-cyan,#0ff);font-weight:400}
.vx-avis-billy .vx-avis-sub{
  width:100%;padding:.22em .4ch;background:#100;border-top:1px solid var(--vx-red,#f00);
  color:var(--vx-red,#f00);font-size:.8em;
}
@media (max-width:760px){.vx-avis-billy{right:8px;bottom:8px;width:9.5em}}
@media (prefers-reduced-motion:reduce){.vx-avis-billy{animation:none}}
