/* ============================================================
   SBINFO — feuille de style du thème
   ------------------------------------------------------------
   Le site est sombre de bout en bout. Les variables ci-dessous
   sont nommées par rôle et non par couleur : si la teinte change,
   un seul endroit bouge.
   ============================================================ */

:root{
  /* fonds, du plus profond au plus clair */
  --creux:#0E1720;        /* champs de saisie, prises du panneau */
  --fond:#131C26;         /* fond général de la page */
  --fond-2:#1A2532;       /* surfaces surélevées : cartes, fiches, panneau */

  /* textes */
  --blanc:#FFFFFF;        /* titres et valeurs mises en avant */
  --plein:#C3CFDA;        /* texte courant */
  --doux:#8B9AA8;         /* étiquettes, mentions secondaires */

  /* traits */
  --filet:#2B3846;        /* séparations discrètes */
  --filet-fort:#3A4A5C;   /* bordures de champs et de puces */

  /* accent */
  --lien:#4FB483;
  --lien-vif:#6BC79A;
  --alerte:#E4767A;

  --police-titre:"Archivo",system-ui,sans-serif;
  --police-courante:"IBM Plex Sans",system-ui,sans-serif;
  --police-mono:"IBM Plex Mono",ui-monospace,monospace;
  --marge:clamp(1.25rem,5vw,5rem);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--fond)}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
}

body{
  margin:0;background:var(--fond);color:var(--plein);
  font-family:var(--police-courante);font-size:17px;line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{
  font-family:var(--police-titre);font-variation-settings:"wdth" 112;
  margin:0;line-height:1.08;letter-spacing:-.015em;color:var(--blanc);
}
a{color:inherit}
::placeholder{color:var(--doux);opacity:1}
:focus-visible{outline:2px solid var(--lien);outline-offset:3px}
::selection{background:var(--lien);color:var(--fond)}

.enveloppe{max-width:1180px;margin:0 auto;padding:0 var(--marge)}
.etiquette{
  font-family:var(--police-mono);font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--doux);
}

/* ---------- barre de navigation ---------- */
.barre{position:sticky;top:0;z-index:20;background:var(--fond);border-bottom:1px solid var(--filet)}
.barre__in{max-width:1180px;margin:0 auto;padding:.85rem var(--marge);display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.marque{
  font-family:var(--police-titre);font-variation-settings:"wdth" 118;font-weight:700;
  font-size:1.15rem;letter-spacing:.02em;color:var(--blanc);text-decoration:none;
}
.marque span{color:var(--lien)}
.barre nav{margin-left:auto;display:flex;gap:1.35rem;flex-wrap:wrap}
.barre nav a{
  font-family:var(--police-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--doux);text-decoration:none;padding:.2rem 0;border-bottom:1px solid transparent;
}
.barre nav a:hover{color:var(--blanc);border-bottom-color:var(--lien)}
.barre nav a.actif{color:var(--blanc);border-bottom-color:var(--lien)}

/* ---------- hero façade de baie ---------- */
.baie{background:var(--fond);padding:clamp(3rem,8vw,5.5rem) 0 clamp(2.5rem,6vw,4rem)}
.baie h1{font-size:clamp(2.4rem,6.5vw,4.6rem);font-weight:600;margin:.9rem 0 0;max-width:20ch}
.baie h1 em{font-style:normal;color:var(--lien)}
.baie__chapo{max-width:52ch;margin:1.4rem 0 0;color:var(--plein);font-size:1.05rem}
.baie__meta{display:flex;flex-wrap:wrap;gap:.6rem 2rem;margin-top:1.8rem;font-family:var(--police-mono);font-size:.8rem;color:var(--doux)}
.baie__meta strong{color:var(--blanc);font-weight:500}

/* ---------- bandeau de brassage ---------- */
.brassage{margin-top:clamp(2.5rem,6vw,4rem)}
.brassage__titre{
  display:flex;align-items:center;gap:.75rem;margin:0 0 1.1rem;
  font-family:var(--police-mono);font-size:.92rem;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--blanc);
}
.brassage__titre::before{content:"";flex:none;width:28px;height:2px;background:var(--lien)}
.panneau{
  background:var(--fond-2);border:1px solid var(--filet);border-radius:3px;
  padding:.9rem;display:grid;grid-template-columns:repeat(8,1fr);gap:.55rem;
}
.port{
  appearance:none;border:1px solid var(--filet-fort);background:var(--creux);color:var(--doux);
  border-radius:2px;padding:.75rem .4rem .6rem;cursor:pointer;text-align:center;
  font-family:var(--police-mono);font-size:.68rem;letter-spacing:.06em;
  display:flex;flex-direction:column;align-items:center;gap:.5rem;
  transition:border-color .15s,color .15s,background .15s;
}
.port__prise{width:100%;max-width:34px;aspect-ratio:1/.82;border:1px solid var(--filet-fort);border-radius:2px;background:#060C12;position:relative}
.port__prise::after{content:"";position:absolute;left:34%;right:34%;top:-1px;height:32%;border:1px solid var(--filet-fort);border-top:none;border-radius:0 0 2px 2px;background:#060C12}
.port__led{width:6px;height:6px;border-radius:50%;background:#2A3947}
.port:hover{border-color:#59748C;color:var(--plein)}
.port[aria-selected="true"]{background:#0A1219;border-color:var(--lien);color:var(--blanc)}
.port[aria-selected="true"] .port__led{background:var(--lien);box-shadow:0 0 7px var(--lien)}
.port[aria-selected="true"] .port__prise{border-color:var(--lien)}

.fiche{
  margin-top:1.4rem;border:1px solid var(--filet);border-radius:3px;
  background:var(--fond-2);padding:clamp(1.4rem,3vw,2rem);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:1.5rem 2.5rem;
}
.fiche[hidden]{display:none}
.fiche h2{font-size:1.55rem;font-weight:600;margin-top:.4rem}
.fiche p{margin:.7rem 0 0;color:var(--plein);font-size:.97rem}
.fiche ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.55rem}
.fiche li{font-size:.92rem;color:var(--plein);padding-left:1.15rem;position:relative}
.fiche li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:1px;background:var(--lien)}
.fiche__socle{font-family:var(--police-mono);font-size:.74rem;letter-spacing:.06em;color:var(--doux);margin-top:1.1rem}

.fiche__lien{margin-top:1.1rem}
.fiche__lien a{
  font-family:var(--police-mono);font-size:.76rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--lien);text-decoration:none;
  border-bottom:1px solid var(--filet-fort);padding-bottom:.15rem;
}
.fiche__lien a:hover{color:var(--lien-vif);border-bottom-color:var(--lien-vif)}

/* ---------- sections de contenu ---------- */
.bloc{padding:clamp(3.5rem,8vw,6rem) 0;border-bottom:1px solid var(--filet)}
.bloc--clair{background:var(--fond-2)}
.bloc__titre{font-size:clamp(1.8rem,4vw,2.7rem);font-weight:600;margin:.7rem 0 0;max-width:22ch}
.bloc__intro{max-width:56ch;margin-top:1.2rem;color:var(--doux)}

.duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:2rem 4rem;align-items:start;margin-top:2.5rem}
.duo p{margin:0 0 1.1rem}
.duo p:last-child{margin-bottom:0}
.chiffres{display:grid;gap:1.1rem;border-left:1px solid var(--filet);padding-left:1.6rem}
.chiffres div strong{display:block;font-family:var(--police-titre);font-variation-settings:"wdth" 112;font-size:1.35rem;font-weight:600;color:var(--blanc)}
.chiffres div span{font-size:.9rem;color:var(--doux)}

/* ---------- parc technologique ---------- */
.parc{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1px;background:var(--filet);border:1px solid var(--filet);margin-top:2.5rem}
.carte{background:var(--fond-2);padding:1.6rem 1.5rem}
.carte h3{font-size:1.1rem;font-weight:600;margin-bottom:.9rem}
.carte ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.4rem}
.carte li{font-family:var(--police-mono);font-size:.76rem;border:1px solid var(--filet-fort);border-radius:2px;padding:.2rem .5rem;color:var(--doux)}
/* Cartes cliquables de l'index des domaines. */
.carte--lien{display:flex;flex-direction:column;gap:.5rem;text-decoration:none;transition:background .15s}
.carte--lien:hover{background:#1F2C3B}
.carte--lien h3{margin:0}
.carte--lien p{margin:0;color:var(--plein);font-size:.94rem}
.carte__aller{margin-top:auto;padding-top:.6rem;font-family:var(--police-mono);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--lien)}
.carte--lien:hover .carte__aller{color:var(--lien-vif)}

.credo{margin-top:2.5rem;border-left:3px solid var(--lien);padding:.2rem 0 .2rem 1.6rem;max-width:60ch}
.credo p{margin:.6rem 0 0;font-size:1.02rem}

/* ---------- contenu Markdown générique ---------- */
.prose{max-width:68ch;margin-top:2rem}
.prose h2{font-size:1.5rem;font-weight:600;margin:2.2rem 0 .8rem}
.prose h3{font-size:1.15rem;font-weight:600;margin:1.8rem 0 .6rem}
.prose p{margin:0 0 1.1rem}
.prose ul,.prose ol{margin:0 0 1.2rem;padding-left:1.3rem}
.prose li{margin-bottom:.4rem}
.prose strong{color:var(--blanc);font-weight:600}
.prose a{color:var(--lien)}
.prose table{border-collapse:collapse;width:100%;margin-bottom:1.4rem}
.prose th,.prose td{border:1px solid var(--filet);padding:.55rem .8rem;text-align:left;font-size:.95rem}
.prose th{background:var(--fond-2);font-weight:600;color:var(--blanc)}

/* ---------- formulaires ---------- */
.formulaire{margin-top:2.5rem;max-width:760px}

/* Deux colonnes : un champ occupe toute la largeur, sauf s'il porte
   outerclasses: demi dans la définition du formulaire. */
.formulaire form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.2rem}
.formulaire .form-field{grid-column:1 / -1;margin-bottom:1.1rem}
.formulaire .form-field.demi{grid-column:span 1}
.formulaire .buttons{grid-column:1 / -1;margin-top:.4rem}

.form-label,.formulaire label{
  display:block;margin-bottom:.4rem;
  font-family:var(--police-mono);font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--doux);
}
.formulaire .required{color:var(--lien)}
.formulaire input[type=text],
.formulaire input[type=email],
.formulaire input[type=tel],
.formulaire select,
.formulaire textarea{
  font-family:var(--police-courante);font-size:.98rem;color:var(--blanc);
  background:var(--creux);border:1px solid var(--filet-fort);border-radius:2px;
  padding:.7rem .8rem;width:100%;
}
.formulaire textarea{min-height:130px;resize:vertical}
.formulaire input:focus,.formulaire select:focus,.formulaire textarea:focus{
  border-color:var(--lien);outline:none;box-shadow:0 0 0 2px rgba(79,180,131,.22);
}
.formulaire input[type=checkbox]{width:auto;accent-color:var(--lien);margin-right:.5rem}
/* Le widget anti-robot n'a pas de libellé : le gabarit du plugin en produit un
   vide, qui laisserait un blanc au-dessus du cadre. */
.formulaire .form-field.captcha .form-label{display:none}
.formulaire .form-field.captcha{margin-top:.4rem}

/* Le libellé de consentement est une phrase, pas une étiquette technique.
   Le champ porte outerclasses: consentement dans la définition du formulaire. */
.formulaire .form-field.consentement label{
  display:inline;text-transform:none;letter-spacing:0;
  font-family:var(--police-courante);font-size:.95rem;color:var(--plein);
}
.formulaire .button,
.formulaire button[type=submit],
.formulaire input[type=submit]{
  font-family:var(--police-mono);font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;
  background:var(--lien);color:var(--fond);border:1px solid var(--lien);border-radius:2px;
  padding:.85rem 1.8rem;cursor:pointer;font-weight:500;transition:background .15s,border-color .15s;
}
.formulaire .button:hover,
.formulaire button[type=submit]:hover{background:var(--lien-vif);border-color:var(--lien-vif)}
.form-errors,.form-message{
  border-left:3px solid var(--lien);background:var(--fond-2);
  padding:.9rem 1.2rem;margin-bottom:1.4rem;font-size:.95rem;
}
.form-errors{border-left-color:var(--alerte);color:var(--alerte)}

.coord{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.4rem;margin-top:2.5rem;padding-top:1.8rem;border-top:1px solid var(--filet);font-size:.95rem}
.coord a{color:var(--lien);text-decoration:none;border-bottom:1px solid var(--filet-fort)}
.coord a:hover{border-bottom-color:var(--lien)}

/* ---------- pied de page ---------- */
.pied{background:var(--fond);border-top:1px solid var(--filet);color:var(--doux);padding:2.5rem 0;font-size:.85rem}
.pied__in{max-width:1180px;margin:0 auto;padding:0 var(--marge);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.pied a{color:var(--plein);text-decoration:none}
.pied a:hover{color:var(--blanc)}

/* ---------- adaptatif ---------- */
@media (max-width:860px){
  .fiche,.duo{grid-template-columns:1fr}
  .chiffres{border-left:none;border-top:1px solid var(--filet);padding-left:0;padding-top:1.6rem}
}
/* Le bandeau reste sur une seule rangée aussi longtemps que les prises
   restent lisibles. Une baie de brassage ne se replie pas en deux étages :
   c'est la ligne continue qui fait l'image. En dessous, on replie plutôt que
   de réduire les prises à des traits. */
@media (max-width:620px){
  .panneau{grid-template-columns:repeat(4,1fr)}
}

@media (max-width:560px){
  .formulaire form{grid-template-columns:1fr}
  .formulaire .form-field.demi{grid-column:1 / -1}
}
@media (max-width:460px){
  .panneau{grid-template-columns:repeat(2,1fr)}
  .barre nav{gap:.9rem}
}

/* ---------- sans JavaScript ---------- */
.sans-js .fiche[hidden]{display:grid}
.sans-js .panneau{display:none}
