/* ==========================================================================
   Scanteria, feuille de style unique
   Direction : plan technique. L'identite vient de la structure exposee,
   pas des effets. Regles de construction, tenues strictement :
     0 arrondi, 0 ombre, 0 degrade, 0 flou, 0 halo, 0 soulevement au survol.
   Les blocs ne flottent pas : ils partagent leurs traits, comme un tableau.
   Le teal des rapports (#0F5257) est employe en aplat plein sur la section
   des limites ; sa variante lumineuse (#5FD5DD) porte le texte sur le noir.
   Polices systeme uniquement. Aucune ressource externe, aucun JavaScript.
   ========================================================================== */

:root{
  /* Noir neutre, volontairement pas bleute */
  --bg:#0A0A0B;
  --bg-1:#101012;
  --bg-2:#141416;

  /* Traits : ils sont l'ossature, donc visibles */
  --line:rgba(255,255,255,.12);
  --line-2:rgba(255,255,255,.22);

  --ink:#EDEDEE;
  --muted:#A2A5A8;
  --muted-2:#85898C;

  --accent:#5FD5DD;
  --brand:#0F5257;
  --on-brand:#D7E5E5;
  --on-brand-dim:#ABD0D0;
  --ink-on-accent:#07100F;

  --wrap:1240px;
  --pad:clamp(1.15rem,4vw,2.75rem);

  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;

  color-scheme:dark;
}

/* --- Base ---------------------------------------------------------------- */

*,*::before,*::after{box-sizing:border-box}

/* Regle de construction n°1 : rien n'est arrondi, rien ne porte d'ombre. */
*,*::before,*::after{border-radius:0;box-shadow:none}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scrollbar-color:#2A2A2D var(--bg);
}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-size:1.0625rem;
  line-height:1.66;
  -webkit-font-smoothing:antialiased;
  counter-reset:sec;
}

::selection{background:var(--accent);color:var(--ink-on-accent)}

h1,h2,h3{
  margin:0 0 .6em;
  color:#fff;
  font-weight:700;
  line-height:1.13;
  letter-spacing:-.028em;
  text-wrap:balance;
}
h1{
  font-size:clamp(2.1rem,1.2rem + 3.5vw,3.85rem);
  font-weight:800;
  line-height:1.03;
  letter-spacing:-.04em;
  max-width:19ch;
}
h2{font-size:clamp(1.6rem,1.15rem + 1.95vw,2.5rem);max-width:24ch}
h3{font-size:1.1rem;letter-spacing:-.012em;margin-bottom:.5em;line-height:1.36}

p{margin:0 0 1.05em}
p:last-child{margin-bottom:0}

a{
  color:var(--accent);
  text-decoration-thickness:1px;
  text-underline-offset:.2em;
  transition:color .12s linear,background-color .12s linear,border-color .12s linear;
}
a:hover{color:#fff}

strong{font-weight:600;color:#fff}

:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

section[id]{scroll-margin-top:4.5rem}

/* --- Structure ----------------------------------------------------------- */

.wrap{
  position:relative;
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:var(--pad);
}
.wrap--narrow{max-width:880px}

.section{
  position:relative;
  padding-block:clamp(3.75rem,8vw,6.5rem);
  border-top:1px solid var(--line-2);
  counter-increment:sec;
}
.section--alt{background:var(--bg-1)}

/* --- Lien d'evitement ---------------------------------------------------- */

.skip{
  position:absolute;
  top:0;
  left:-9999px;
  z-index:100;
  padding:.75rem 1.25rem;
  background:var(--accent);
  color:var(--ink-on-accent);
  font-family:var(--mono);
  font-size:.8rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.12em;
  text-decoration:none;
}
.skip:focus{left:0}

/* --- En-tete ------------------------------------------------------------- */

.site-header{
  position:sticky;
  top:0;
  z-index:50;
  background:var(--bg);
  border-bottom:1px solid var(--line-2);
}
.header-inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5rem 2.25rem;
  padding-block:.95rem;
}

.wordmark{
  position:relative;
  margin-right:auto;
  padding-left:1.1rem;
  color:#fff;
  font-size:.97rem;
  font-weight:700;
  letter-spacing:.19em;
  text-transform:uppercase;
  text-decoration:none;
}
/* Carre plein en guise de repere de marque. Pas de logo, un signal. */
.wordmark::before{
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:8px;
  height:8px;
  margin-top:-4px;
  background:var(--accent);
}
.wordmark:hover{color:var(--accent)}

.site-header nav ul{
  display:flex;
  flex-wrap:wrap;
  gap:.3rem 1.9rem;
  margin:0;
  padding:0;
  list-style:none;
}
.site-header nav a{
  color:var(--muted);
  font-family:var(--mono);
  font-size:.735rem;
  font-weight:500;
  letter-spacing:.13em;
  text-transform:uppercase;
  text-decoration:none;
}
.site-header nav a:hover{color:var(--accent)}

/* --- Surtitres : [00] LIBELLE suivi d'une regle jusqu'au bord ------------ */

.eyebrow{
  display:flex;
  align-items:center;
  gap:.85rem;
  margin:0 0 1.4rem;
  color:var(--accent);
  font-family:var(--mono);
  font-size:.71rem;
  font-weight:600;
  letter-spacing:.21em;
  text-transform:uppercase;
}
.eyebrow::after{
  content:"";
  flex:1;
  height:1px;
  background:var(--line-2);
  transform-origin:left;
}
.section .eyebrow::before{
  content:"[" counter(sec,decimal-leading-zero) "]";
  color:var(--accent);
  letter-spacing:.06em;
}
.eyebrow--light{color:var(--on-brand-dim)}
.eyebrow--light::after{background:rgba(255,255,255,.3)}

.section-lede{
  max-width:66ch;
  color:var(--muted);
  font-size:1.04rem;
}
.section-lede--light{color:var(--on-brand)}

/* --- Accroche, cadree par deux equerres ---------------------------------- */

.hero{position:relative;padding-block:clamp(4rem,9vw,7.25rem)}

.hero .wrap::before,
.hero .wrap::after{
  content:"";
  position:absolute;
  width:26px;
  height:26px;
  pointer-events:none;
}
.hero .wrap::before{
  top:0;
  left:0;
  border-top:2px solid var(--accent);
  border-left:2px solid var(--accent);
}
.hero .wrap::after{
  bottom:0;
  right:0;
  border-bottom:2px solid var(--accent);
  border-right:2px solid var(--accent);
}
.hero .wrap{padding-block:1.9rem}

.hero .eyebrow{max-width:34rem}

.lede{
  max-width:60ch;
  color:var(--muted);
  font-size:clamp(1.06rem,1rem + .45vw,1.24rem);
}

/* Encart methode : trait teal a gauche, aucune fioriture */
.method{
  max-width:62ch;
  margin-top:2rem;
  padding:1.2rem 1.4rem;
  background:var(--bg-1);
  border:1px solid var(--line);
  border-left:2px solid var(--accent);
  color:var(--muted);
  font-size:.96rem;
}
.method strong{color:var(--accent);font-weight:600}

.actions{
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:.75rem;
  margin-top:2.25rem;
}
.btn,.btn-ghost{
  display:inline-flex;
  align-items:center;
  padding:.95rem 1.7rem;
  font-family:var(--mono);
  font-size:.755rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase;
  text-decoration:none;
  border:1px solid var(--accent);
  transition:background-color .12s linear,color .12s linear,border-color .12s linear;
}
.btn{background:var(--accent);color:var(--ink-on-accent)}
.btn:hover{background:transparent;color:var(--accent)}
.btn-ghost{background:transparent;border-color:var(--line-2);color:var(--ink)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}

/* --- Grilles : les blocs partagent leurs traits, comme un tableau -------- */

.grid-2,
.steps,
.limits{
  display:grid;
  gap:0;
  margin-top:2.75rem;
  padding:0;
  list-style:none;
  border:1px solid var(--line-2);
}
/* Les traits sont portes par les cellules, decalees de 1px pour se superposer
   a leur voisine. Une cellule vide ne dessine donc rien : la grille reste
   propre meme quand la derniere rangee est incomplete.                       */
.grid-2 > *,
.steps > li,
.limits > div{
  margin:-1px 0 0 -1px;
  border-top:1px solid var(--line-2);
  border-left:1px solid var(--line-2);
}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr))}
.steps{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}
.limits{grid-template-columns:repeat(auto-fit,minmax(min(100%,26rem),1fr))}

/* Le bloc contexte reste en texte libre, sans cadre */
.grid-2--text{
  gap:clamp(1.75rem,4vw,3.5rem);
  margin-top:2.5rem;
  border:0;
}
.grid-2--text > div{
  margin:0;
  padding-top:1.4rem;
  border-top:1px solid var(--line-2);
  border-left:0;
}
.grid-2--text p{color:var(--muted);font-size:.98rem}
.grid-2--text h3{
  margin-bottom:1rem;
  color:var(--accent);
  font-family:var(--mono);
  font-size:.735rem;
  font-weight:600;
  letter-spacing:.19em;
  text-transform:uppercase;
}

/* --- Cartes prestations -------------------------------------------------- */

.card{
  position:relative;
  padding:clamp(1.6rem,3vw,2.4rem);
  background:var(--bg-2);
  transition:background-color .12s linear;
}
.card:hover{background:#181819}
.card > p{color:var(--muted);font-size:.98rem}
.card h3{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.55rem;
  font-size:1.26rem;
  letter-spacing:-.022em;
}

.card-tag{
  padding:.3rem .6rem;
  border:1px solid rgba(95,213,221,.4);
  color:var(--accent);
  font-family:var(--mono);
  font-size:.635rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  white-space:nowrap;
}

.card-sub{
  margin:1.9rem 0 0;
  padding:.85rem 0;
  border-top:1px solid var(--line-2);
  border-bottom:1px solid var(--line);
  color:var(--muted-2);
  font-family:var(--mono);
  font-size:.665rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
}

/* Le contenu des rapports se lit comme une feuille de releve */
.ticks{margin:0;padding:0;list-style:none}
.ticks li{
  position:relative;
  padding:.85rem 0 .85rem 1.5rem;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:.95rem;
  line-height:1.6;
}
.ticks li:last-child{border-bottom:0;padding-bottom:0}
.ticks li::before{
  content:"";
  position:absolute;
  left:0;
  top:1.42em;
  width:6px;
  height:6px;
  background:var(--accent);
}
.ticks strong{color:var(--ink);font-weight:600}

/* --- Les trois etapes ---------------------------------------------------- */

.steps li{
  padding:clamp(1.5rem,2.6vw,2rem);
  background:var(--bg-2);
  transition:background-color .12s linear;
}
.steps li:hover{background:#181819}
.steps p{margin:0;color:var(--muted);font-size:.95rem}

.step-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:2.75rem;
  height:2.75rem;
  margin-bottom:1.2rem;
  border:1px solid var(--accent);
  color:var(--accent);
  font-family:var(--mono);
  font-size:1.05rem;
  font-weight:700;
  line-height:1;
}

.note{
  max-width:74ch;
  margin-top:2.5rem;
  padding-top:1.6rem;
  border-top:1px solid var(--line);
  color:var(--muted-2);
  font-size:.925rem;
}
.note--flush{margin-top:1.75rem;padding-top:0;border-top:0}

/* --- Limites : aplat plein du teal de marque ----------------------------- */
/* Sur une page noire, le seul bloc en couleur pleine. C'est aussi la teinte
   exacte des rapports PDF, donc le point d'ancrage de la marque.            */

.section--dark{
  background:var(--brand);
  border-top:1px solid var(--brand);
  color:var(--on-brand);
}
.section--dark h2{color:#fff}
.section--dark h3{color:#fff}
.section--dark strong{color:#fff}
.section--dark a{color:#fff}
.section--dark :focus-visible{outline-color:#fff}

/* Sur l'aplat teal, les traits passent en blanc translucide */
.limits,
.limits > div{border-color:rgba(255,255,255,.3)}
.limits > div{padding:1.75rem}
.limits h3{font-size:1.04rem;line-height:1.4}
.limits p{margin:0;color:var(--on-brand);font-size:.95rem}

/* --- Contact ------------------------------------------------------------- */

.mail{margin:2rem 0 0}
.mail a{
  display:inline-block;
  padding-bottom:.25rem;
  border-bottom:2px solid var(--accent);
  color:var(--accent);
  font-family:var(--mono);
  font-size:clamp(1.05rem,.8rem + 1.5vw,1.7rem);
  font-weight:700;
  letter-spacing:-.02em;
  text-decoration:none;
  overflow-wrap:anywhere;
}
.mail a:hover{color:#fff;border-bottom-color:#fff}

/* --- Pied de page -------------------------------------------------------- */

.site-footer{
  padding-block:2.75rem;
  background:var(--bg);
  border-top:1px solid var(--line-2);
  color:var(--muted-2);
  font-size:.885rem;
}
.footer-inner{display:grid;gap:1.15rem}
.footer-brand{
  position:relative;
  margin:0;
  padding-left:1.1rem;
  color:#fff;
  font-size:.88rem;
  font-weight:700;
  letter-spacing:.19em;
  text-transform:uppercase;
}
.footer-brand::before{
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:8px;
  height:8px;
  margin-top:-4px;
  background:var(--accent);
}
.footer-note{margin:0;max-width:64ch;color:var(--muted)}
.site-footer nav ul{
  display:flex;
  flex-wrap:wrap;
  gap:.35rem 1.9rem;
  margin:0;
  padding:0;
  list-style:none;
}
.site-footer nav a{
  font-family:var(--mono);
  font-size:.73rem;
  letter-spacing:.13em;
  text-transform:uppercase;
  text-decoration:none;
}
.copy{
  margin:0;
  padding-top:1.15rem;
  border-top:1px solid var(--line);
  color:var(--muted-2);
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.09em;
}

/* --- Page mentions legales ----------------------------------------------- */

.legal{padding-block:clamp(2.75rem,6vw,4.5rem)}
.legal h1{
  max-width:none;
  margin-bottom:.4em;
  font-size:clamp(1.9rem,1.4rem + 2vw,2.75rem);
}
.legal h2{
  max-width:none;
  margin-top:2.75rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line-2);
  font-family:var(--mono);
  font-size:.86rem;
  font-weight:600;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:var(--accent);
}
.legal p{color:var(--muted);max-width:72ch}
.legal .updated{
  margin-bottom:0;
  color:var(--muted-2);
  font-family:var(--mono);
  font-size:.76rem;
  letter-spacing:.08em;
}

/* Bloc editeur : lu comme une table d'identification */
.facts{
  display:grid;
  grid-template-columns:minmax(11rem,auto) 1fr;
  gap:1px;
  margin:0;
  background:var(--line-2);
  border:1px solid var(--line-2);
}
.facts dt{
  margin:0;
  padding:.85rem 1.1rem;
  background:var(--bg-1);
  color:var(--muted-2);
  font-family:var(--mono);
  font-size:.685rem;
  font-weight:600;
  letter-spacing:.15em;
  text-transform:uppercase;
}
.facts dd{
  margin:0;
  padding:.85rem 1.1rem;
  background:var(--bg-2);
  color:var(--ink);
}

.back{
  display:inline-block;
  margin-top:2.75rem;
  padding:.9rem 1.6rem;
  border:1px solid var(--line-2);
  color:var(--ink);
  font-family:var(--mono);
  font-size:.755rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase;
  text-decoration:none;
  transition:border-color .12s linear,color .12s linear;
}
.back:hover{border-color:var(--accent);color:var(--accent)}

@media (max-width:40rem){
  .facts{grid-template-columns:1fr}
  .facts dt{padding-bottom:.35rem}
  .facts dd{padding-top:.35rem}
}

/* --- Apparition au defilement, CSS pur ----------------------------------- */
/* Un plan technique ne s'anime pas : la regle des surtitres se trace, le
   contenu monte de quelques pixels. Rien d'autre. Actif uniquement si le
   navigateur gere les timelines ET si l'utilisateur accepte le mouvement ;
   partout ailleurs, tout est simplement visible.                            */

@keyframes rise{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:none}
}
@keyframes trace{
  from{transform:scaleX(0)}
  to{transform:scaleX(1)}
}

@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline:view()){
    .section h2,
    .section-lede,
    .grid-2,
    .steps,
    .limits,
    .note,
    .mail{
      animation:rise linear both;
      animation-timeline:view();
      animation-range:entry 4% entry 44%;
    }
    .section .eyebrow::after{
      animation:trace linear both;
      animation-timeline:view();
      animation-range:entry 6% entry 40%;
    }
  }
}

/* --- Preferences et contextes particuliers ------------------------------- */

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
}

@media (forced-colors:active){
  .card,.steps li,.limits > div,.facts dt,.facts dd{border:1px solid CanvasText}
  .grid-2,.steps,.limits,.facts{background:Canvas;gap:0}
  .wordmark::before,.footer-brand::before,.ticks li::before{background:CanvasText}
}

@media print{
  .skip,.site-header nav,.actions,.back{display:none}
  *{background:#fff!important;color:#000!important}
  body{font-size:11pt}
  .section,.hero,.legal{padding-block:1.2rem}
  .grid-2,.steps,.limits,.facts,.card,.steps li,.limits > div,.method{border:1px solid #999;gap:0}
  .hero .wrap::before,.hero .wrap::after{border-color:#000}
  .ticks li::before,.wordmark::before,.footer-brand::before{background:#000}
  a{text-decoration:underline}
}
