@layer modules{
/* ════════ Complément « AutoTesteur » - le chef d'orchestre des validateurs ════════
   Refonte du 2026-10-29 (CDC_VALIDATEURS, lot L3 § 2.10) : lignes compactes groupées
   par moteur, pastille d'état, compteurs, clair et sombre, comme les écrans Live.
   Rien n'est écrit en dur : les couleurs viennent des jetons de 01-tokens.css, et le
   sombre suit donc le poste sans une seule règle de plus (N20 : le thème a trois
   états, et c'est le jeton qui les porte, pas cette feuille). */

.at{ --at:var(--ok); display:grid; grid-template-columns:212px 1fr; gap:var(--sp-18); align-items:start; }
@media (max-width:760px){ .at{ grid-template-columns:1fr; } }

.at-rail{ display:flex; flex-direction:column; gap:var(--sp-4); position:sticky; top:8px; }
.at-nav-btn{ display:flex; align-items:center; gap:var(--sp-8); width:100%; text-align:left; padding:var(--sp-8) var(--sp-10);
  border:1px solid transparent; border-radius:var(--radius-sm,8px); background:none; color:var(--mut); font:inherit; font-size:var(--fs-md); cursor:pointer; transition:.12s; }
.at-nav-btn:hover{ background:var(--card2); color:var(--txt); }
.at-nav-btn.on{ background:var(--card2); color:var(--txt); border-color:var(--line); font-weight:var(--fw-strong); }
.at-nav-ic{ width:18px; text-align:center; color:var(--at); }

.at-main{ min-width:0; display:flex; flex-direction:column; gap:var(--sp-16); }

.at-head{ display:flex; align-items:flex-start; gap:var(--sp-14); }
.at-head-t h2{ margin:0 0 var(--sp-2); font-size:var(--fs-lg); }
.at-head-t p{ margin:0; color:var(--mut); font-size:var(--fs-md); }
.at-head-a{ margin-left:auto; display:flex; gap:var(--sp-8); flex-wrap:wrap; align-items:center; }
.at-gen-st{ color:var(--mut); font-size:var(--fs-sm); }
.at-vide{ color:var(--mut); padding:var(--sp-14); border:1px dashed var(--line); border-radius:var(--radius); font-size:var(--fs-md); }
.at-note{ color:var(--mut); font-size:var(--fs-sm); border-left:2px solid var(--line); padding-left:var(--sp-10); }
.at-block-t{ font-size:var(--fs-md); margin:var(--sp-4) 0 0; }

/* ── Les trois états, une seule fois : tout le reste s'y réfère ── */
.at-pill{ display:inline-flex; align-items:center; gap:var(--sp-4); padding:1px var(--sp-8); border-radius:var(--radius-pill);
  font-size:var(--fs-xs); font-weight:var(--fw-strong); letter-spacing:.02em; border:1px solid transparent; white-space:nowrap; }
.at-pill.ok{ color:var(--ok); background:color-mix(in srgb,var(--ok) 14%,transparent); border-color:color-mix(in srgb,var(--ok) 34%,transparent); }
.at-pill.am{ color:var(--warn,#b45309); background:color-mix(in srgb,var(--warn,#b45309) 14%,transparent); border-color:color-mix(in srgb,var(--warn,#b45309) 34%,transparent); }
.at-pill.ko{ color:var(--err); background:color-mix(in srgb,var(--err) 14%,transparent); border-color:color-mix(in srgb,var(--err) 34%,transparent); }
.at-cpt{ color:var(--mut); font-size:var(--fs-sm); display:inline-flex; gap:var(--sp-8); }
.at-cpt b{ font-variant-numeric:tabular-nums; }
.at-cpt b.ok{ color:var(--ok); } .at-cpt b.am{ color:var(--warn,#b45309); } .at-cpt b.ko{ color:var(--err); }

/* ── L'inventaire : ce qui va être joué, annoncé avant (§ 2.1) ── */
.at-inv{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); padding:var(--sp-12) var(--sp-14);
  display:flex; flex-direction:column; gap:var(--sp-8); }
.at-inv-l{ display:flex; gap:var(--sp-18); flex-wrap:wrap; }
.at-inv-n{ color:var(--mut); font-size:var(--fs-sm); }
.at-inv-n b{ color:var(--txt); font-size:var(--fs-lg); margin-right:var(--sp-4); font-variant-numeric:tabular-nums; }
.at-inv-s{ margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:var(--sp-4); }
.at-inv-s li{ display:flex; align-items:baseline; gap:var(--sp-8); font-size:var(--fs-md); }
.at-inv-s code{ color:var(--mut); font-size:var(--fs-xs); }
.at-inv-rien,.at-inv-ambre{ margin:0; color:var(--mut); font-size:var(--fs-sm); display:flex; align-items:center; gap:var(--sp-8); flex-wrap:wrap; }
.at-inv-ambre{ color:var(--warn,#b45309); }

/* ── Le verdict unique, en tête (§ 2.2) ── */
.at-passage{ display:flex; flex-direction:column; gap:var(--sp-8); }
.at-verdict{ display:flex; align-items:center; gap:var(--sp-12); flex-wrap:wrap; padding:var(--sp-10) var(--sp-14);
  border:1px solid var(--line); border-left-width:3px; border-radius:var(--radius); background:var(--card); }
.at-verdict.ok{ border-left-color:var(--ok); } .at-verdict.am{ border-left-color:var(--warn,#b45309); } .at-verdict.ko{ border-left-color:var(--err); }
.at-verdict-t{ font-weight:var(--fw-strong); }
.at-verdict-m{ color:var(--mut); font-size:var(--fs-sm); margin-left:auto; }

.at-tend{ margin:0; display:flex; flex-direction:column; gap:var(--sp-4); font-size:var(--fs-md); color:var(--mut); }
.at-tend p{ margin:0; }
.at-tend p.ko b{ color:var(--err); } .at-tend p.ok b{ color:var(--ok); }

/* ── Un moteur, ses verdicts : lignes compactes ── */
.at-mot{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); overflow:hidden; }
.at-mot>summary{ display:flex; align-items:center; gap:var(--sp-10); padding:var(--sp-8) var(--sp-12); cursor:pointer; list-style:none; }
.at-mot>summary::-webkit-details-marker{ display:none; }
.at-mot>summary:hover{ background:var(--card2); }
.at-mot.ko{ border-color:color-mix(in srgb,var(--err) 34%,var(--line)); }
.at-mot-n{ color:var(--mut); font-size:var(--fs-sm); }
.at-mot-m{ color:var(--mut); font-size:var(--fs-xs); margin-left:auto; font-variant-numeric:tabular-nums; }
.at-plies{ border:1px dashed var(--line); border-radius:var(--radius); padding:var(--sp-4); }
.at-plies>summary{ cursor:pointer; color:var(--mut); font-size:var(--fs-sm); padding:var(--sp-6) var(--sp-8); }
.at-plies .at-mot{ margin-top:var(--sp-4); }

.at-vs{ margin:0; padding:0 var(--sp-12) var(--sp-10); list-style:none; display:flex; flex-direction:column; }
.at-v{ display:grid; grid-template-columns:10px 80px 1fr; gap:var(--sp-8); align-items:baseline;
  padding:var(--sp-6) 0; border-top:1px solid var(--line); font-size:var(--fs-md); }
.at-v-p{ width:7px; height:7px; border-radius:50%; background:var(--mut); align-self:center; }
.at-v.ok .at-v-p{ background:var(--ok); } .at-v.am .at-v-p{ background:var(--warn,#b45309); } .at-v.ko .at-v-p{ background:var(--err); }
.at-v-f{ color:var(--mut); font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.04em; }
.at-v-t{ color:var(--txt); }
.at-v-d{ grid-column:3; color:var(--mut); font-size:var(--fs-sm); }
/* Le geste qui répare (CDC_VALIDATEUR2 § 1.6) et la couverture du contrat par moteur (V12). */
.at-v-r{ grid-column:3; color:var(--txt); font-size:var(--fs-sm); }
.at-couv{ margin:var(--sp-8) 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:var(--sp-4); font-size:var(--fs-sm); }
.at-couv li{ display:flex; flex-wrap:wrap; gap:var(--sp-8); align-items:baseline; }
.at-couv li.am b{ color:var(--warn); }
.at-couv-m{ color:var(--mut); font-size:var(--fs-xs); }
.at-v-lent{ grid-column:3; color:var(--warn,#b45309); font-size:var(--fs-xs); }
.at-sortie{ margin:0; padding:var(--sp-10) var(--sp-12); background:var(--card2); color:var(--mut);
  font-size:var(--fs-xs); white-space:pre-wrap; word-break:break-word; max-height:320px; overflow:auto; }

/* ── L'historique des passages (§ 2.6) ── */
.at-hist{ display:flex; flex-direction:column; gap:var(--sp-8); }
.at-hl{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); }
.at-hl>summary{ display:flex; align-items:center; gap:var(--sp-12); padding:var(--sp-8) var(--sp-12); cursor:pointer; list-style:none; flex-wrap:wrap; }
.at-hl>summary::-webkit-details-marker{ display:none; }
.at-hl>summary:hover{ background:var(--card2); }
.at-hl-d{ font-weight:var(--fw-strong); font-variant-numeric:tabular-nums; }
.at-hl-m{ color:var(--mut); font-size:var(--fs-xs); margin-left:auto; }
.at-hl .at-passage{ padding:0 var(--sp-12) var(--sp-12); }

/* ── Les propositions de l'IA (§ 2.4, 2.5) ── */
.at-gen{ display:flex; gap:var(--sp-8); align-items:center; flex-wrap:wrap; }
.at-gen-sel{ font:inherit; font-size:var(--fs-md); padding:var(--sp-6) var(--sp-8); border:1px solid var(--line);
  border-radius:var(--radius-sm,8px); background:var(--card); color:var(--txt); }
.at-prop{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); padding:var(--sp-12) var(--sp-14);
  display:flex; flex-direction:column; gap:var(--sp-8); }
.at-prop header{ display:flex; align-items:baseline; gap:var(--sp-10); flex-wrap:wrap; }
.at-prop-m{ color:var(--mut); font-size:var(--fs-xs); }
.at-prop-p{ margin:0; color:var(--mut); font-size:var(--fs-md); }
.at-prop-c{ margin:0; padding:var(--sp-10); background:var(--card2); border-radius:var(--radius-sm,8px);
  font-size:var(--fs-xs); white-space:pre-wrap; max-height:260px; overflow:auto; }
.at-prop footer{ display:flex; gap:var(--sp-8); }

/* ── Les commandes libres (§ 2.9) ── */
.at-cmds{ display:flex; flex-direction:column; gap:var(--sp-8); }
.at-cmd{ display:grid; grid-template-columns:auto 170px 1fr auto; gap:var(--sp-10); align-items:center;
  border:1px solid var(--line); border-radius:var(--radius); background:var(--card); padding:var(--sp-8) var(--sp-12); }
@media (max-width:700px){ .at-cmd{ grid-template-columns:auto 1fr; } .at-cmd-c{ grid-column:1/-1; } }
.at-cmd.on{ border-color:color-mix(in srgb,var(--at) 34%,var(--line)); }
.at-cmd-tog input{ width:16px; height:16px; }
.at-cmd-id{ display:flex; flex-direction:column; }
.at-cmd-k{ color:var(--mut); font-size:var(--fs-xs); }
.at-cmd-c{ font:inherit; font-size:var(--fs-sm); padding:var(--sp-6) var(--sp-8); border:1px solid var(--line);
  border-radius:var(--radius-sm,8px); background:var(--card2); color:var(--txt); min-width:0; }
}
