/* ============================================================================
   Charte « Rapport d'ingénierie » — style pérenne des publications techniques.
   Serif Charter + libellés sans-serif · accent bleu-plan · filets fins ·
   numéros de section suspendus · tableaux booktabs · figures numérotées.
   Conçu pour du HTML Pandoc (sections en <h1>, sous-sections en <h2>).
   ========================================================================== */

:root{
  --paper:#ffffff;
  --desk:#eceef1;
  --ink:#16202b;
  --mut:#5a6b7b;
  --line:#d7dee6;
  --line-soft:#e9eef3;
  --accent:#1f4e79;
  --accent-soft:#eaf1f8;
  --code-bg:#f6f8fa;
  --code-inline:#eef2f6;

  --serif:"Charter","Bitstream Charter","Cambria",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;

  --measure:900px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--desk);
  color:var(--ink);
  font-family:var(--serif);
  font-size:18px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{ background:var(--accent-soft); }

/* ---- bandeau-marque du site (sticky) -------------------------------------- */
.site-nav{
  position:sticky; top:0; z-index:20;
  background:var(--paper);
  border-bottom:1px solid var(--line);
  box-shadow:0 6px 20px -14px rgba(20,30,45,.35);
}
.site-nav .nav-inner{
  max-width:var(--measure); margin:0 auto;
  padding:.5em clamp(20px,6vw,84px);
  display:flex; align-items:center; gap:1.4em;
}
/* plaque de marque : monogramme + logotype */
.site-nav .brand{
  display:inline-flex; align-items:center; gap:.55em;
  font-family:var(--serif); font-weight:700; font-size:1.18rem;
  letter-spacing:-.015em; color:var(--ink); text-decoration:none; white-space:nowrap;
}
.site-nav .brand::before{
  content:"N"; display:grid; place-items:center; flex:none;
  width:1.7em; height:1.7em;
  font-family:var(--sans); font-weight:700; font-size:.74em; line-height:1;
  color:#fff; background:var(--accent); border-radius:6px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);
  transition:background .12s;
}
.site-nav .brand:hover{ text-decoration:none; }
.site-nav .brand:hover::before{ background:#173c5e; }
/* menu (droite) */
.site-nav .nav-menu{ margin-left:auto; display:flex; align-items:center; gap:1.6em; }
.nav-link{
  font-family:var(--sans); font-size:.74rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.1em;
  color:var(--mut); text-decoration:none; white-space:nowrap; transition:color .12s;
}
.nav-link:hover{ color:var(--ink); }
.nav-link[aria-current="page"]{ color:var(--accent); }

/* menu déroulant « Publications » (élément natif <details>) */
.nav-dd{ position:relative; }
.nav-dd > summary{
  list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:.5em;
  font-family:var(--sans); font-size:.74rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.1em; color:var(--mut);
  white-space:nowrap; user-select:none; transition:color .12s;
}
.nav-dd > summary::-webkit-details-marker{ display:none; }
.nav-dd > summary:hover{ color:var(--ink); }
.nav-dd[data-active] > summary{ color:var(--accent); }
.nav-dd .chev{
  width:.5em; height:.5em; flex:none;
  border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform:rotate(45deg); margin-top:-.22em; transition:transform .15s;
}
.nav-dd[open] .chev{ transform:rotate(-135deg); margin-top:.15em; }
.nav-dd-panel{
  position:absolute; right:0; top:calc(100% + .75em);
  min-width:310px; background:var(--paper);
  border:1px solid var(--line); border-radius:12px;
  box-shadow:0 24px 60px -24px rgba(20,30,45,.45);
  padding:.5em; z-index:40;
}
.dd-item{ display:block; padding:.7em .85em; border-radius:8px; text-decoration:none; }
.dd-item + .dd-item{ margin-top:.1em; }
.dd-item:hover{ background:var(--accent-soft); }
.dd-item[aria-current="page"]{ background:var(--accent-soft); }
.dd-title{ display:block; font-family:var(--serif); font-size:1.02rem; font-weight:650;
  color:var(--ink); line-height:1.25; }
.dd-item[aria-current="page"] .dd-title{ color:var(--accent); }
.dd-meta{ display:block; margin-top:.15em; font-family:var(--sans); font-size:.72rem;
  letter-spacing:.02em; color:var(--mut); }
.dd-all{ display:block; margin-top:.3em; padding:.65em .85em;
  border-top:1px solid var(--line-soft);
  font-family:var(--sans); font-size:.71rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.09em; color:var(--accent); text-decoration:none; }
.dd-all:hover{ text-decoration:underline; }
@media (max-width:600px){
  .site-nav .nav-inner{ gap:.8em; padding-left:16px; padding-right:16px; }
  .site-nav .brand{ font-size:0; gap:0; }              /* masque le logotype, garde le monogramme */
  .site-nav .brand::before{ font-size:15px; }
  .site-nav .nav-menu{ gap:1.1em; }
  .nav-dd-panel{ min-width:min(80vw,310px); }
}

/* ---- feuille (sheet) : la publication posée sur le "bureau" ---------------- */
main{
  counter-reset:figure;
  max-width:var(--measure);
  margin:clamp(0px,4vw,44px) auto;
  background:var(--paper);
  box-shadow:0 14px 44px rgba(20,30,45,.10);
  padding:clamp(30px,6vw,72px) clamp(24px,6vw,84px);
}

/* ---- bloc-titre ----------------------------------------------------------- */
#title-block-header{ margin:0 0 2.6em; }
h1.title{
  font-size:clamp(2rem,4.6vw,2.85rem);
  font-weight:700;
  line-height:1.08;
  letter-spacing:-.02em;
  margin:0 0 .35em;
  padding-bottom:.35em;
  border-bottom:2px solid var(--accent);
  text-wrap:balance;
}
.subtitle{ color:var(--mut); font-size:1.12rem; font-style:italic; margin:.55em 0 .9em; }
.date{ font-family:var(--sans); font-size:.85rem; letter-spacing:.02em; color:var(--mut); margin:0; }

/* ---- sommaire ------------------------------------------------------------- */
nav#TOC{
  margin:0 0 3em;
  padding:22px 26px 18px;
  background:#fafbfc;
  border:1px solid var(--line);
  border-radius:8px;
}
nav#TOC::before{
  content:"Sommaire";
  display:block;
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.7rem;
  font-weight:600;
  color:var(--accent);
  margin-bottom:.9em;
}
nav#TOC > ul{ columns:2; column-gap:44px; }
nav#TOC ul{ margin:0; padding-left:1.15em; list-style:none; }
nav#TOC > ul{ padding-left:0; }
nav#TOC ul ul{ padding-left:1em; }
nav#TOC li{ break-inside:avoid; margin:.26em 0; font-size:.94rem; }
nav#TOC a{ text-decoration:none; }
nav#TOC a:hover{ text-decoration:underline; }

/* ---- titres de section ---------------------------------------------------- */
main > h1, main > h2{ display:flex; gap:.55em; align-items:baseline; text-wrap:balance; }
main > h1{
  margin:2.6em 0 .7em;
  font-size:clamp(1.55rem,3.4vw,2.05rem);
  font-weight:650;
  line-height:1.14;
  letter-spacing:-.015em;
  padding-bottom:.28em;
  border-bottom:2px solid var(--accent);
  scroll-margin-top:1rem;
}
main > h2{
  margin:2em 0 .55em;
  font-size:1.38rem;
  font-weight:650;
  line-height:1.2;
  scroll-margin-top:1rem;
}
h3{ margin:1.7em 0 .45em; font-size:1.12rem; font-weight:650; color:var(--accent); }
h4{ margin:1.4em 0 .4em; font-size:1rem; font-weight:650; }

.secno{
  flex:0 0 auto;
  font-family:var(--sans);
  font-weight:600;
  color:var(--accent);
  font-variant-numeric:tabular-nums;
}
main > h1 .secno{ font-size:.78em; }
main > h2 .secno{ font-size:.82em; }

/* ---- corps ---------------------------------------------------------------- */
p{ margin:0 0 1.05em; }
p, li{ max-width:78ch; }
a{ color:var(--accent); text-decoration:underline; text-decoration-thickness:.6px; text-underline-offset:2px; }
a:hover{ text-decoration-thickness:1.3px; }
strong{ font-weight:650; }
ul, ol{ margin:0 0 1.05em; padding-left:1.4em; }
li{ margin:.3em 0; }
li::marker{ color:var(--mut); }
hr{ border:0; border-top:1px solid var(--line); margin:2.6em 0; }

/* ---- appels & notes (blockquote) ----------------------------------------- */
blockquote{
  margin:1.7em 0;
  padding:.85em 1.25em;
  border-left:3px solid var(--accent);
  background:var(--accent-soft);
  border-radius:0 6px 6px 0;
  color:#1d2c3a;
}
blockquote p:last-child{ margin-bottom:0; }

/* ---- figures (numérotation auto « Figure N ») ---------------------------- */
figure{ counter-increment:figure; margin:1.9em 0; }
figure img, figure svg{ display:block; width:100%; height:auto;
  border:1px solid var(--line); border-radius:6px; background:var(--paper); }
figcaption{
  font-family:var(--sans);
  font-size:.85rem;
  line-height:1.5;
  color:var(--mut);
  margin-top:.75em;
  padding-left:.05em;
}
figcaption::before{
  content:"Figure " counter(figure) " — ";
  font-weight:600;
  color:var(--accent);
}
img{ max-width:100%; height:auto; }

/* ---- tableaux (booktabs) -------------------------------------------------- */
table{
  width:100%;
  border-collapse:collapse;
  margin:1.7em 0;
  font-size:.95rem;
  font-variant-numeric:tabular-nums;
  border-top:1.5px solid var(--ink);
}
th, td{ padding:.52em .8em; text-align:left; vertical-align:top; }
thead th{
  font-family:var(--sans);
  font-weight:600;
  font-size:.8rem;
  letter-spacing:.02em;
  color:var(--accent);
  border-bottom:2px solid var(--accent);
}
tbody td{ border-bottom:1px solid var(--line-soft); }
tbody tr:last-child td{ border-bottom:1.5px solid var(--ink); }

/* ---- code ----------------------------------------------------------------- */
code{ font-family:var(--mono); font-size:.86em; background:var(--code-inline);
  padding:.1em .36em; border-radius:4px; }
pre{
  margin:1.5em 0;
  overflow-x:auto;
  padding:1em 1.15em;
  background:var(--code-bg);
  border:1px solid var(--line);
  border-radius:6px;
  font-family:var(--mono);
  font-size:.85rem;
  line-height:1.55;
  color:var(--ink);
}
pre code{ background:none; padding:0; font-size:inherit; color:inherit; }
div.sourceCode{ margin:1.5em 0; }
div.sourceCode pre{ margin:0; }

/* ---- notes de bas de page ------------------------------------------------- */
.footnotes{
  margin-top:3.2em;
  padding-top:1em;
  border-top:1px solid var(--line);
  font-size:.9rem;
  color:var(--mut);
}
.footnotes hr{ display:none; }

/* ---- listes de tâches ----------------------------------------------------- */
.task-list-item{ list-style:none; }
.task-list-item input{ margin:0 .5em 0 -1.4em; }

/* ---- zone de questions (Cusdis) ------------------------------------------- */
.qa{ margin-top:3.6em; padding-top:1.7em; border-top:2px solid var(--accent); }
.qa-title{ margin:0 0 .3em; font-size:1.5rem; font-weight:650; color:var(--ink); }
.qa-intro{ margin:0 0 1.5em; color:var(--mut); font-size:.98rem; max-width:70ch; }
.qa-pending{ font-family:var(--sans); font-size:.9rem; color:var(--mut); }
#cusdis_thread{ font-family:var(--sans); }

/* ---- responsive ----------------------------------------------------------- */
@media (max-width:720px){
  body{ background:var(--paper); }
  main{ margin:0; box-shadow:none; padding-left:20px; padding-right:20px; }
  nav#TOC > ul{ columns:1; }
  main > h1{ font-size:1.5rem; }
  main > h2{ font-size:1.24rem; }
  table{ display:block; overflow-x:auto; white-space:nowrap; }
}

/* ---- impression ----------------------------------------------------------- */
@media print{
  body{ background:#fff; font-size:11pt; }
  main{ max-width:none; margin:0; box-shadow:none; padding:0; }
  a{ color:var(--ink); }
  nav#TOC{ break-after:page; }
  main > h1{ break-after:avoid; }
  figure, table, pre{ break-inside:avoid; }
}

@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }
