/* Facturio — feuille de style des pages statiques (landing, /pro, pages légales).
   Servie telle quelle depuis frontend/public/pages/ : pas de build, pas de PostCSS.
   Tokens alignés sur design_guidelines.json — aucun dégradé, aucune ombre complexe.
   Texte secondaire : #57534E (stone-600) et non #78716C (stone-500), qui échoue
   WCAG AA sur le fond stone-100 (4,4:1). Vérifié le 20/08/2026. */

:root{
  --bg:#F5F5F4; --surface:#FFFFFF; --text:#1C1917; --text-muted:#57534E;
  --border:#E7E5E4; --border-strong:#D6D3D1;
  /* Bordure des éléments INTERACTIFS (bouton secondaire, champ de saisie).
     WCAG 1.4.11 impose 3:1 pour la limite d'un composant d'interface :
     #D6D3D1 ne donne que 1,49:1 sur blanc. #78716C donne 4,8:1.
     Les séparateurs purement décoratifs restent en --border. */
  --border-ui:#78716C;
  --cta:#1C1917; --cta-text:#FFFFFF; --cta-hover:#292524;
  --space-2:8px; --space-3:12px; --space-4:16px; --space-6:24px;
  --space-8:32px; --space-12:48px; --space-16:64px; --space-24:96px;
  --maxw:1120px; --maxw-prose:720px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 var(--space-6)}
.wrap-prose{max-width:var(--maxw-prose); margin:0 auto; padding:0 var(--space-6)}
a{color:inherit}
h1,h2,h3,h4{letter-spacing:-.02em; line-height:1.15; margin:0; font-weight:600}
h1{font-size:clamp(30px,5vw,52px); text-wrap:balance}
h2,h3{text-wrap:pretty}
h2{font-size:clamp(23px,3vw,32px)}
h3{font-size:17px; letter-spacing:-.01em}
p{margin:0}
sup{font-size:.7em}
.muted{color:var(--text-muted)}
.eyebrow{font-size:11px; text-transform:uppercase; letter-spacing:.09em; font-weight:500; color:var(--text-muted)}
.skip{position:absolute; left:-9999px}
.skip:focus{
  left:var(--space-6); top:var(--space-3); z-index:20; background:var(--surface);
  padding:var(--space-3) var(--space-4); border:1px solid var(--text); border-radius:6px;
}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{
  outline:2px solid currentColor; outline-offset:2px; border-radius:2px;
}
/* boutons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--space-2);
  min-height:44px; padding:0 var(--space-6); border-radius:6px; border:1px solid transparent;
  font-size:15px; font-weight:500; text-decoration:none; cursor:pointer;
  font-family:inherit; transition:background-color 200ms ease, border-color 200ms ease;
}
.btn-primary{background:var(--cta); color:var(--cta-text)}
.btn-primary:hover{background:var(--cta-hover)}
.btn-ghost{color:var(--text); border-color:var(--border-ui); background:var(--surface)}
.btn-ghost:hover{border-color:var(--text)}
.btn-lg{min-height:52px; font-size:16px; padding:0 var(--space-6)}
.icon{flex:none; display:block}
/* nav */
header{
  position:sticky; top:0; z-index:10; background:rgba(245,245,244,.93);
  backdrop-filter:blur(8px); border-bottom:1px solid var(--border);
}
.nav{display:flex; align-items:center; gap:var(--space-8); height:60px}
.brand{display:flex; align-items:center; gap:10px; text-decoration:none; font-weight:600; letter-spacing:-.02em}
.mark{
  width:28px; height:28px; flex:none; background:var(--text); color:#fff;
  border-radius:5px; display:flex; align-items:center; justify-content:center;
}
.nav-links{display:none; gap:var(--space-6); margin-left:auto; font-size:14px}
.nav-links a{color:var(--text-muted); text-decoration:none; padding:8px 0; transition:color 200ms ease}
.nav-links a:hover{color:var(--text)}
.nav > .btn{margin-left:auto}
.nav-links ~ .btn{margin-left:0}
@media(min-width:880px){ .nav-links{display:flex} }
/* sections */
section{padding:var(--space-16) 0}
.sec-head{max-width:640px; margin-bottom:var(--space-12)}
.sec-head p{margin-top:var(--space-3); color:var(--text-muted)}
.rule{border:0; border-top:1px solid var(--border); margin:0}
/* hero */
.hero{padding-top:var(--space-16); padding-bottom:var(--space-12)}
.hero-grid{display:grid; gap:var(--space-12); align-items:center}
@media(min-width:1000px){ .hero-grid{grid-template-columns:1fr 1fr; gap:var(--space-16)} }
.hero .lede{margin-top:var(--space-6); font-size:18px; color:var(--text-muted); max-width:34em}
.hero-cta{display:flex; flex-wrap:wrap; gap:var(--space-3); margin-top:var(--space-8)}
.trust{display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2) var(--space-4); margin-top:var(--space-6); font-size:13px; color:var(--text-muted)}
.trust span{display:inline-flex; align-items:center; gap:6px}
/* maquette d'app */
.shot{background:var(--surface); border:1px solid var(--border); border-radius:8px; box-shadow:0 20px 60px -28px rgba(0,0,0,.22); overflow:hidden}
.shot-bar{display:flex; align-items:center; gap:6px; padding:10px var(--space-4); border-bottom:1px solid var(--border)}
.dot{width:9px; height:9px; border-radius:50%; background:var(--border-strong)}
.shot-body{display:grid; grid-template-columns:132px 1fr; min-height:290px}
.shot-side{border-right:1px solid var(--border); padding:var(--space-4); display:grid; gap:10px; align-content:start}
.fld{height:8px; border-radius:2px; background:var(--border)}
.fld.s{width:56%} .fld.m{width:78%} .fld.l{width:100%}
.lbl{height:5px; width:38%; border-radius:2px; background:var(--border-strong)}
.shot-main{background:var(--bg); padding:var(--space-4); display:flex; justify-content:center}
.paper{background:#fff; border:1px solid var(--border); width:100%; max-width:210px; padding:14px; display:grid; gap:7px; align-content:start; box-shadow:0 8px 24px -12px rgba(0,0,0,.14)}
.paper .t{height:11px; width:52%; background:var(--text); border-radius:1px}
.paper .row{height:5px; border-radius:1px; background:var(--border)}
.paper .row.w80{width:80%} .paper .row.w60{width:60%} .paper .row.w90{width:90%}
.paper .tot{height:7px; width:44%; background:var(--text-muted); border-radius:1px; justify-self:end; margin-top:5px}
.shot-note{font-size:12px; color:var(--text-muted); margin-top:var(--space-3); text-align:center}
/* étapes */
.steps{display:grid; gap:var(--space-8)}
@media(min-width:820px){ .steps{grid-template-columns:repeat(3,1fr); gap:var(--space-12)} }
.step{padding-top:var(--space-4); border-top:2px solid var(--text)}
.step-n{font-size:12px; font-weight:600; letter-spacing:.06em; color:var(--text-muted); display:flex; align-items:center; gap:var(--space-2); margin-bottom:var(--space-3)}
.step h3{margin-bottom:var(--space-2)}
.step p{font-size:15px; color:var(--text-muted)}
/* cartes */
.cards{display:grid; gap:1px; background:var(--border); border:1px solid var(--border); border-radius:8px; overflow:hidden}
@media(min-width:720px){ .cards{grid-template-columns:repeat(2,1fr)} }
@media(min-width:1000px){ .cards{grid-template-columns:repeat(3,1fr)} }
.card{background:var(--surface); padding:var(--space-8) var(--space-6)}
.card .ic{color:var(--text); margin-bottom:var(--space-4); display:block}
.card h3{margin-bottom:var(--space-2)}
.card p{font-size:14.5px; color:var(--text-muted)}
/* conformité */
.conf{display:grid; gap:var(--space-12)}
@media(min-width:940px){ .conf{grid-template-columns:1fr 1fr; gap:var(--space-16)} }
.checks{list-style:none; margin:var(--space-6) 0 0; padding:0; display:grid; gap:var(--space-3)}
.checks li{display:flex; gap:var(--space-3); font-size:15px}
.checks .ic{color:var(--text); margin-top:4px}
.panel{background:var(--surface); border:1px solid var(--border-strong); border-radius:8px; padding:var(--space-8)}
.panel h3{margin-bottom:var(--space-4)}
.panel p{font-size:15px; color:var(--text-muted); margin-bottom:var(--space-4)}
.panel strong{color:var(--text); font-weight:600}
.panel .lnk{font-size:14px; font-weight:500; text-decoration:none; border-bottom:1px solid var(--border-strong); padding-bottom:2px; transition:border-color 200ms ease; color:var(--text)}
.panel .lnk:hover{border-color:var(--text)}
/* données */
.band{background:var(--surface); border-top:1px solid var(--border); border-bottom:1px solid var(--border)}
.band-grid{display:grid; gap:var(--space-8); max-width:800px}
@media(min-width:820px){ .band-grid{grid-template-columns:auto 1fr} }
.band p{margin-bottom:var(--space-4); font-size:15.5px}
.band p:last-child{margin-bottom:0}
.band strong{font-weight:600}
/* FAQ */
.faq{max-width:760px; border-top:1px solid var(--border)}
.faq details{border-bottom:1px solid var(--border)}
.faq summary{display:flex; align-items:center; justify-content:space-between; gap:var(--space-4); padding:var(--space-6) 0; cursor:pointer; font-weight:500; font-size:16.5px; list-style:none; min-height:44px}
.faq summary::-webkit-details-marker{display:none}
.faq summary .ic{color:var(--text-muted); transition:transform 200ms ease}
.faq details[open] summary .ic{transform:rotate(180deg)}
.faq .ans{padding:0 0 var(--space-6); font-size:15px; color:var(--text-muted); max-width:64ch}
.faq .ans p + p{margin-top:var(--space-3)}
/* CTA final */
.final{padding:var(--space-24) 0}
.final p{margin-top:var(--space-4); color:var(--text-muted); max-width:46em}
.final .btn{margin-top:var(--space-8)}
/* footer */
footer{border-top:1px solid var(--border); padding:var(--space-8) 0; font-size:13.5px; color:var(--text-muted)}
.foot{display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-3) var(--space-6)}
.foot a{
  text-decoration:none; transition:color 200ms ease;
  /* WCAG 2.5.8 : 24x24 px minimum. Ces liens forment une liste, ils ne
     bénéficient pas de l'exemption « lien en ligne dans une phrase ». */
  display:inline-flex; align-items:center; min-height:32px;
}
.foot a:hover{color:var(--text)}
.foot .sep{margin-left:auto}
/* pages de contenu (légales, roadmap, pro) */
.doc{padding:var(--space-16) 0 var(--space-24)}
.doc h1{font-size:clamp(27px,4vw,38px)}
.doc .updated{margin-top:var(--space-4); font-size:13.5px; color:var(--text-muted)}
.doc h2{font-size:21px; margin-top:var(--space-12); margin-bottom:var(--space-4)}
.doc h3{margin-top:var(--space-8); margin-bottom:var(--space-3)}
.doc p, .doc li{font-size:15.5px; color:var(--text-muted)}
.doc p{margin-bottom:var(--space-4)}
.doc strong{color:var(--text); font-weight:600}
.doc ul, .doc ol{margin:0 0 var(--space-4); padding-left:var(--space-6); display:grid; gap:var(--space-2)}
.doc a{color:var(--text); text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--border-strong); transition:text-decoration-color 200ms ease}
.doc a:hover{text-decoration-color:var(--text)}
/* display:block + overflow-x évite le débordement de page sur mobile : c'est le
   tableau qui défile, pas le document. */
.doc table{width:100%; border-collapse:collapse; margin-bottom:var(--space-6); font-size:14.5px; display:block; overflow-x:auto}
.doc table tbody, .doc table tr{display:table; width:100%; table-layout:fixed}
.doc th{width:38%}
.doc td, .doc th{word-break:break-word; overflow-wrap:anywhere}
.doc th,.doc td{text-align:left; padding:var(--space-3) var(--space-4); border-bottom:1px solid var(--border); vertical-align:top}
.doc th{font-weight:600; color:var(--text); background:var(--surface)}
.doc td{color:var(--text-muted)}
.todo{background:var(--surface); border:1px dashed var(--border-strong); border-radius:6px; padding:var(--space-6); margin-bottom:var(--space-8)}
.todo p{margin-bottom:var(--space-2)}
.todo p:last-child{margin-bottom:0}
.back{display:inline-flex; align-items:center; gap:var(--space-2); font-size:14px; color:var(--text-muted); text-decoration:none; margin-bottom:var(--space-8); min-height:44px}
.back:hover{color:var(--text)}
/* jalons (feuille de route) */
.mile{border-left:2px solid var(--border-strong); padding:0 0 var(--space-8) var(--space-6); position:relative}
.mile:last-child{padding-bottom:0}
.mile::before{content:""; position:absolute; left:-6px; top:6px; width:10px; height:10px; border-radius:50%; background:var(--border-strong)}
.mile.now{border-left-color:var(--text)}
.mile.now::before{background:var(--text)}
.mile h3{margin-bottom:var(--space-2)}
.mile .tag{font-size:11px; text-transform:uppercase; letter-spacing:.08em; font-weight:600; color:var(--text-muted); display:block; margin-bottom:6px}
.mile.now .tag{color:var(--text)}
.mile ul{margin-top:var(--space-3)}
/* formulaire /pro */
.form{background:var(--surface); border:1px solid var(--border-strong); border-radius:8px; padding:var(--space-8); max-width:520px}
.form label{display:block; font-size:12px; text-transform:uppercase; letter-spacing:.07em; font-weight:500; color:var(--text-muted); margin-bottom:var(--space-2)}
.form input{
  width:100%; min-height:46px; padding:0 var(--space-4); font-size:15.5px; font-family:inherit;
  color:var(--text); background:var(--surface); border:1px solid var(--border-ui); border-radius:6px;
  transition:border-color 200ms ease;
}
.form input:hover{border-color:var(--text)}
.form input:focus{border-color:var(--text); outline:2px solid var(--text); outline-offset:1px}
.form .btn{width:100%; margin-top:var(--space-4)}
.form .hint{font-size:13px; color:var(--text-muted); margin-top:var(--space-4)}
.price{display:flex; align-items:baseline; gap:var(--space-2); margin:var(--space-6) 0}
.price .amount{font-size:44px; font-weight:600; letter-spacing:-.03em; color:var(--text)}
.price .per{font-size:15px; color:var(--text-muted)}
.plan{display:grid; gap:var(--space-12)}
@media(min-width:940px){ .plan{grid-template-columns:1fr 1fr; gap:var(--space-16); align-items:start} }
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:0ms !important; animation-duration:0ms !important}
}
/* marqueurs de contenu à compléter — doivent rester visibles jusqu'à la relecture */
.ph{background:#FEF3C7; color:#78350F; padding:1px 5px; border-radius:3px; font-weight:500}
