/* ============================================================
   Schémas — dessinés avec le contrat --ui-* pour suivre le thème actif
   ============================================================ */

.fig {
  margin: var(--sp-5, 24px) 0 0;
  padding: 22px;
  border: 1px solid var(--ui-border, #ddd);
  border-radius: var(--ui-radius, 8px);
  background: var(--ui-surface, #fff);
}
.fig svg { display: block; width: 100%; height: auto; }
.fig figcaption {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--ui-border, #ddd);
  color: var(--ui-text-3, #666);
  font-size: 0.85rem;
  line-height: 1.5;
}
.fig figcaption strong { color: var(--ui-text-2, #333); }

/* Primitives réutilisées par les schémas */
.fig .d-surface { fill: var(--ui-surface-2, #f2f2f2); }
.fig .d-line    { stroke: var(--ui-border, #ccc); fill: none; }
.fig .d-strong  { stroke: var(--ui-text-2, #444); fill: none; }
.fig .d-accent  { fill: var(--ui-accent, #3355dd); }
.fig .d-accent-s{ stroke: var(--ui-accent, #3355dd); fill: none; }
.fig .d-wash    { fill: var(--ui-accent-wash, rgba(51,85,221,.12)); }
.fig .d-warn    { fill: #c2410c; }
.fig .d-warn-s  { stroke: #c2410c; fill: none; }
.fig .d-ok      { fill: #15803d; }

.fig text {
  font-family: inherit;
  fill: var(--ui-text-2, #444);
  font-size: 12px;
}
.fig .t-title { fill: var(--ui-text, #111); font-size: 13px; font-weight: 600; }
.fig .t-small { fill: var(--ui-text-3, #777); font-size: 10.5px; }
.fig .t-mono  { font-family: var(--mono, monospace); font-size: 11px; }
.fig .t-on-accent { fill: var(--ui-on-accent, #fff); font-weight: 600; }

@media (max-width: 680px) {
  .fig { padding: 16px; }
  .fig text { font-size: 13px; }
  .fig .t-small { font-size: 11.5px; }
}

/* ============================================================
   Animation au scroll — les schémas se construisent à l'entrée
   ============================================================ */

.anim-ready .fig[data-anim] .an-grow    { transform-origin: left center; transform: scaleX(0); }
.anim-ready .fig[data-anim] .an-fade    { opacity: 0; }
.anim-ready .fig[data-anim] .an-rise    { opacity: 0; transform: translateY(8px); }
.anim-ready .fig[data-anim] .an-draw    { stroke-dasharray: 1; stroke-dashoffset: 1; }
.anim-ready .fig[data-anim] .an-pop     { opacity: 0; transform: scale(0.7); transform-origin: center; }

.fig[data-anim].is-in .an-grow,
.fig[data-anim].is-in .an-fade,
.fig[data-anim].is-in .an-rise,
.fig[data-anim].is-in .an-pop {
  opacity: 1;
  transform: none;
  transition:
    transform 0.7s cubic-bezier(0.16, 1, 0.3, 1) var(--d, 0s),
    opacity 0.5s ease var(--d, 0s);
}
.fig[data-anim].is-in .an-draw {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 0.8s cubic-bezier(0.16, 1, 0.3, 1) var(--d, 0s);
}

@media (prefers-reduced-motion: reduce) {
  .fig[data-anim] .an-grow,
  .fig[data-anim] .an-fade,
  .fig[data-anim] .an-rise,
  .fig[data-anim] .an-pop,
  .fig[data-anim] .an-draw {
    opacity: 1;
    transform: none;
    stroke-dashoffset: 0;
    transition: none;
  }
}

/* ============================================================
   Autres formes visuelles
   ============================================================ */

/* Statistique mise en avant */
.stat-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 22px 0 0;
}
.stat {
  padding: 18px 20px;
  border: 1px solid var(--ui-border, #ddd);
  border-radius: var(--ui-radius, 8px);
  background: var(--ui-surface, #fff);
}
.stat-num {
  display: block;
  font-family: var(--mono, monospace);
  font-size: 1.9rem;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.04em;
  color: var(--ui-accent-ink, #333);
  font-variant-numeric: tabular-nums;
}
.stat-label {
  display: block;
  margin-top: 7px;
  font-size: 0.86rem;
  line-height: 1.45;
  color: var(--ui-text-3, #666);
}

/* Citation / principe détaché */
.pull {
  margin: 26px 0;
  padding: 22px 26px;
  border-left: 3px solid var(--ui-accent, #35d);
  background: var(--ui-accent-wash, rgba(51,85,221,.08));
  border-radius: 0 var(--ui-radius, 8px) var(--ui-radius, 8px) 0;
}
.pull p {
  margin: 0;
  font-size: 1.12rem;
  line-height: 1.5;
  color: var(--ui-text, #111);
  font-weight: 500;
  letter-spacing: -0.015em;
}
.pull cite {
  display: block;
  margin-top: 9px;
  font-style: normal;
  font-size: 0.83rem;
  color: var(--ui-text-3, #666);
}

/* Avant / après en deux colonnes marquées */
.ba {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 22px 0 0;
}
.ba-col {
  padding: 18px 20px;
  border: 1px solid var(--ui-border, #ddd);
  border-radius: var(--ui-radius, 8px);
  background: var(--ui-surface, #fff);
}
.ba-col h4 {
  margin: 0 0 10px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.ba-col.no h4 { color: #c2410c; }
.ba-col.yes h4 { color: #15803d; }
.ba-col p { margin: 0; font-size: 0.92rem; line-height: 1.55; }
.ba-col pre {
  margin-top: 12px;
  padding: 12px;
  border-radius: 6px;
  background: var(--ui-surface-2, #f2f2f2);
  font-size: 0.78rem;
}

@media (max-width: 680px) {
  .stat-row, .ba { grid-template-columns: 1fr; }
  .pull { padding: 18px 20px; }
  .pull p { font-size: 1.02rem; }
}

/* Le code dans un bloc avant/après est sur fond clair : il reprend l'encre du texte */
.ba-col pre,
.ba-col pre code {
  color: var(--ui-text-2, #333);
}
