/* Palissade · feuille de style du site public
   Direction : « Plan + Bulletin » (papier de plan quadrillé + rapport de posture).
   Un seul fichier CSS, aucun JavaScript. */

/* Polices auto-hébergées (fichiers dans /fonts, licences OFL à côté ; voir fonts/LISEZMOI.md).
   Polices variables, sous-ensemble latin (français et anglais) : un fichier couvre toutes les graisses.
   IBM Plex Mono n'est pas encore déposée : --f-mono se rabat sur la police monospace du système. */
@font-face{font-family:"Montserrat";font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/montserrat-latin-wght-normal.woff2") format("woff2-variations"),url("/fonts/montserrat-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:100 700;font-display:swap;src:url("/fonts/ibm-plex-sans-latin-wght-normal.woff2") format("woff2-variations"),url("/fonts/ibm-plex-sans-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* Réinitialisation minimale */
html{-webkit-text-size-adjust:100%;color-scheme:light}
body{margin:0}
img,svg{max-width:100%}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
html{scroll-behavior:smooth}

/* Mise en page : papier de plan quadrillé (Plan) portant un rapport de posture (Bulletin).
   Bannière = texte + rapport d'exemple épinglé ; sections = feuilles numérotées avec colonne de marge ; pied = cartouche. */
:root{
  --bg:#F3F7FE;--paper:#FFFFFF;--ink:#0F2745;--muted:#3D5578;--line:#1F58C7;--on-line:#FFFFFF;--rule:#C9D7F0;
  --grid:rgba(31,88,199,.07);--grid-major:rgba(31,88,199,.15);
  --ok:#1F7148;--ok-bg:#E2F2E9;--warn:#8A5300;--warn-bg:#FCEFD6;--todo:#1F58C7;--todo-bg:#E3EBFB;
  --f-display:"Montserrat",system-ui,sans-serif;--f-body:"IBM Plex Sans",system-ui,sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,"Cascadia Mono","Liberation Mono","DejaVu Sans Mono",monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0F2745;--paper:#12305A;--ink:#EAF1FF;--muted:#B9CAE8;--line:#9DBBF6;--on-line:#0B1E36;--rule:#2C4D7E;
  --grid:rgba(157,187,246,.07);--grid-major:rgba(157,187,246,.15);
  --ok:#74D5A4;--ok-bg:#163C30;--warn:#F2C26B;--warn-bg:#3D2E12;--todo:#A9C4F8;--todo-bg:#1B3C6C;color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F2745;--paper:#12305A;--ink:#EAF1FF;--muted:#B9CAE8;--line:#9DBBF6;--on-line:#0B1E36;--rule:#2C4D7E;
  --grid:rgba(157,187,246,.07);--grid-major:rgba(157,187,246,.15);
  --ok:#74D5A4;--ok-bg:#163C30;--warn:#F2C26B;--warn-bg:#3D2E12;--todo:#A9C4F8;--todo-bg:#1B3C6C;color-scheme:dark}
*{box-sizing:border-box}
body{background-color:var(--bg);color:var(--ink);font:400 1rem/1.6 var(--f-body);
  background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px}
h1,h2,h3{font-family:var(--f-display);line-height:1.15;margin:0;text-wrap:balance}
p,ul,ol,dl,address,figure{margin:0}
a{color:var(--line)}
:focus-visible{outline:2px dashed var(--line);outline-offset:4px}
.skip{position:absolute;left:-9999px;top:8px;z-index:20;background:var(--paper);color:var(--ink);padding:.6rem 1rem}
.skip:focus{left:16px}
.wrap{max-width:78rem;margin-inline:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.ref{font:500 .74rem var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--line)}

/* En-tête */
.site{border-bottom:2px solid var(--line);background:var(--bg)}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.75rem;padding-block:.9rem}
.brand{display:flex;align-items:center;gap:.55rem;color:var(--ink);text-decoration:none;font:700 1.15rem var(--f-display)}
.logo{width:2rem;height:2rem;color:var(--line)}
.nav{order:3;flex-basis:100%;overflow-x:auto}
.nav ul,.lang{list-style:none;padding:0;display:flex;gap:1.25rem}
.nav a{display:inline-block;padding-block:.35rem;color:var(--ink);text-decoration:none;font:500 .82rem var(--f-mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.nav a:hover{color:var(--line)}
@media (min-width:66rem){.nav{order:0;flex-basis:auto}}
.tools{margin-left:auto;display:flex;align-items:center;gap:.9rem}
.lang{gap:0;border:1px solid var(--line)}
.lang a{display:block;padding:.28rem .55rem;font:500 .78rem var(--f-mono);color:var(--line);text-decoration:none}
.lang a[aria-current]{background:var(--line);color:var(--on-line)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.6rem 1.1rem;border:1.5px solid var(--line);font:600 .95rem var(--f-body);text-decoration:none}
.btn-primary{background:var(--line);color:var(--on-line)}
.btn-line{color:var(--ink);background:var(--paper)}
.btn-line:hover{background:var(--bg)}

/* Pastilles d'état (Bulletin) */
.chip{display:inline-flex;align-items:center;gap:.4rem;font:500 .74rem var(--f-mono);letter-spacing:.04em;text-transform:uppercase;padding:.15rem .5rem;white-space:nowrap;border:1px solid currentColor}
.chip::before{content:"";width:.5rem;height:.5rem;background:currentColor}
.c-ok{color:var(--ok);background:var(--ok-bg)}
.c-warn{color:var(--warn);background:var(--warn-bg)}
.c-todo{color:var(--todo);background:var(--todo-bg)}

/* Bannière */
.hero{padding-block:clamp(2.5rem,6vw,4.5rem)}
.hero-grid{display:grid;gap:2.5rem}
@media (min-width:64rem){.hero-grid{grid-template-columns:5fr 6fr;align-items:center}}
h1{font-size:clamp(2.1rem,4.8vw,3.4rem);font-weight:800;margin-top:.8rem;max-width:16ch}
.lede{margin-top:1.2rem;max-width:52ch;color:var(--muted);font-size:1.1rem}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}

.report{position:relative;background:var(--paper);border:1.5px solid var(--line);padding:clamp(1.25rem,3vw,2rem);min-width:0}
.report::before,.report::after{content:"";position:absolute;width:12px;height:12px;border:1.5px solid var(--line);background:var(--bg)}
.report::before{top:-7px;left:-7px}.report::after{bottom:-7px;right:-7px}
.r-head{display:flex;justify-content:space-between;align-items:start;gap:1rem;flex-wrap:wrap;padding-bottom:1rem;border-bottom:2px solid var(--line)}
.r-head h2{font-size:1.3rem;margin-top:.3rem}
.r-meta{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;font-size:.9rem;margin-top:1rem}
.r-meta dt{font:500 .74rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:.15rem}
.r-meta dd{margin:0}
.r-list{list-style:none;padding:0;margin-top:1rem}
.r-list li{display:flex;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.7rem 0;border-top:1px dashed var(--rule);flex-wrap:wrap}
.r-list .ix{font:500 .72rem var(--f-mono);color:var(--line);margin-right:.5rem}
.r-list b{font-weight:600}
.r-list small{display:block;color:var(--muted);font-size:.86rem}
.stamp{margin-top:1rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:.6rem}

/* Feuilles / chapitres */
.sheet{padding-block:clamp(3rem,6vw,4.5rem);border-top:2px solid var(--line)}
.ch-grid{display:grid;gap:1.25rem 3rem}
@media (min-width:64rem){.ch-grid{grid-template-columns:13rem minmax(0,1fr)}}
.ch-num{display:flex;gap:.75rem;align-items:baseline}
.ch-num b{font:800 2.5rem/1 var(--f-display);color:var(--line)}
.margin{margin-top:.75rem;font-size:.9rem;color:var(--muted);border-left:2px solid var(--line);padding-left:.9rem}
h2.ch{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700}
.ch-intro{margin-top:.6rem;color:var(--muted);max-width:62ch}

.fig{margin-top:1.5rem;border:1.5px solid var(--line);background:var(--bg);padding:1rem}
.fig svg{display:block;width:100%;max-width:44rem;height:auto;margin-inline:auto}
.fig figcaption{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:.6rem;border-top:1px solid var(--line);padding-top:.5rem}
.s{fill:none;stroke:var(--line);stroke-width:2}
.s-thin{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:4 4}
.f{fill:var(--line)}
.f-soft{fill:var(--line);opacity:.16}
.tx{font:500 13px var(--f-mono);fill:var(--ink);letter-spacing:.08em}
.tx-s{font:400 11px var(--f-mono);fill:var(--muted)}

.legend{list-style:none;padding:0;margin-top:1rem;display:grid;border:1.5px solid var(--line);background:var(--paper)}
@media (min-width:52rem){.legend{grid-template-columns:repeat(5,1fr)}}
.legend li{padding:1rem;border-bottom:1px solid var(--line);display:grid;gap:.35rem;align-content:start}
@media (min-width:52rem){.legend li{border-bottom:0;border-right:1px solid var(--line)}.legend li:last-child{border-right:0}}
.legend h3{font-size:1.1rem}
.legend p{color:var(--muted);font-size:.94rem}

.parts{margin-top:1.5rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}
.part{position:relative;border:1.5px solid var(--line);padding:1.1rem;background:var(--paper);display:grid;gap:.4rem;align-content:start}
.part::before,.part::after{content:"";position:absolute;width:10px;height:10px;border:1.5px solid var(--line);background:var(--bg)}
.part::before{top:-6px;left:-6px}.part::after{bottom:-6px;right:-6px}
.part h3{font-size:1.05rem}
.part p{color:var(--muted);font-size:.95rem}
.part .sect{font:400 .78rem var(--f-mono);color:var(--muted);border-top:1px dashed var(--rule);padding-top:.45rem;margin-top:.25rem}

.specs{margin-top:1.5rem;display:grid;gap:1px;background:var(--line);border:1.5px solid var(--line)}
@media (min-width:56rem){.specs{grid-template-columns:repeat(3,minmax(0,1fr))}}
.specs div{padding:1.2rem;background:var(--paper)}
.specs h3{font-size:1.05rem;margin-top:.3rem}
.specs p{color:var(--muted);margin-top:.3rem}

.tbl{margin-top:1.5rem;overflow-x:auto;border:1.5px solid var(--line);background:var(--paper)}
table{width:100%;min-width:42rem;border-collapse:collapse}
th,td{text-align:left;vertical-align:top;padding:.9rem 1rem;border-bottom:1px solid var(--line)}
tr:last-child th,tr:last-child td{border-bottom:0}
thead th{font:500 .72rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--line)}
tbody th{font-family:var(--f-display);white-space:nowrap}
td{color:var(--muted)}

.scan{margin-top:1.5rem;display:grid;gap:1.25rem;border:1.5px dashed var(--line);padding:clamp(1.1rem,3vw,1.75rem);background:var(--paper)}
@media (min-width:52rem){.scan{grid-template-columns:3fr 2fr;align-items:center}}
.scan ul{list-style:none;padding:0;display:grid;gap:.4rem;font:400 .9rem var(--f-mono)}
.scan li::before{content:"+ ";color:var(--line)}

.cta-box{display:grid;gap:1.5rem;align-items:center}
@media (min-width:64rem){.cta-box{grid-template-columns:1fr auto}}

/* Cartouche */
.cartouche{border-top:2px solid var(--line);padding-block:2rem}
.cart{display:grid;gap:1px;background:var(--line);border:1.5px solid var(--line);font-size:.92rem}
@media (min-width:40rem){.cart{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.cart{grid-template-columns:repeat(4,minmax(0,1fr))}}
.cell{padding:.8rem 1rem;background:var(--paper);overflow-wrap:anywhere}
.cell .ref{display:block;margin-bottom:.2rem}
.cell address{font-style:normal}
.cell ul{list-style:none;padding:0}

/* Documents (pages légales) et page introuvable */
.sheet-first{border-top:0}
.doc{display:grid;gap:2rem;min-width:0;max-width:60rem}
.doc h1{margin-top:.5rem;max-width:22ch}
.doc section{border-top:1px solid var(--line);padding-top:1.1rem}
.doc h2{font-size:clamp(1.2rem,2.4vw,1.45rem);font-weight:700;margin-top:.35rem}
.doc section p,.doc section dl{margin-top:.6rem;max-width:68ch}
.facts{display:grid;gap:.15rem 1.25rem}
@media (min-width:36rem){.facts{grid-template-columns:auto minmax(0,1fr)}}
.facts dt{font:500 .74rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:.2rem}
.facts dd{margin:0 0 .45rem;overflow-wrap:anywhere}
.todo{display:inline-block;border:1.5px dashed var(--line);background:var(--paper);padding:.3rem .7rem;font:500 .78rem var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ch-num b.code{font-size:2rem}

/* Utilitaires (remplacent les styles en ligne de la maquette) */
.actions-flush{margin:0}
.mt-xs{margin-top:.35rem}
