@layer modules{
/* ════════ Complément « AutoTesteur » - tests IA + protocoles + rapports ════════
   Réutilise les tokens de 01-tokens.css. Accent du complément : var(--ok). */

.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-loading{ display:flex; align-items:center; gap:var(--sp-8); color:var(--mut); padding:var(--sp-24) var(--sp-4); }
.at-spin{ width:14px; height:14px; border:2px solid var(--line); border-top-color:var(--at); border-radius:50%; display:inline-block; animation:atspin .7s linear infinite; }
@keyframes atspin{ to{ transform:rotate(360deg); } }

.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; }
.at-upd{ color:var(--mut); font-size:var(--fs-sm); }

/* ── Cartes ── */
.at-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:var(--sp-12); }
.at-card{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); padding:var(--sp-12) var(--sp-14); }
.at-card.ok{ border-color:color-mix(in srgb,var(--ok) 40%,transparent); } .at-card.ko{ border-color:color-mix(in srgb,var(--err) 40%,transparent); }
.at-card-h{ font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.04em; color:var(--mut); margin-bottom:var(--sp-6); }
.at-card-b{ display:flex; flex-direction:column; gap:var(--sp-4); }
.at-card-b b{ font-size:var(--fs-lg); } .at-card-b .muted{ color:var(--mut); font-size:var(--fs-sm); }
.at-card-acts{ margin-top:var(--sp-4); }
.at-bar{ height:6px; border-radius:var(--radius-pill); background:var(--card2); overflow:hidden; }
.at-bar i{ display:block; height:100%; background:var(--at); }

.at-block-t{ font-size:var(--fs-md); margin:0 0 var(--sp-8); }
.at-catgrid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:var(--sp-10); }
.at-cat-tile{ display:flex; flex-direction:column; gap:var(--sp-2); align-items:flex-start; padding:var(--sp-12); border:1px solid var(--line);
  border-radius:var(--radius); background:var(--card); color:var(--txt); font:inherit; cursor:pointer; transition:.12s; }
.at-cat-tile:hover{ border-color:var(--at); background:var(--card2); }
.at-cat-ic{ font-size:var(--fs-lg); color:var(--at); }
.at-cat-n{ font-weight:var(--fw-strong); font-size:var(--fs-md); }
.at-cat-c{ color:var(--mut); font-size:var(--fs-sm); }

/* ── Générateur IA ── */
.at-gen{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-8); padding:var(--sp-12); border:1px solid var(--line);
  border-radius:var(--radius); background:var(--card2); }
.at-gen-scope{ display:flex; flex-wrap:wrap; gap:var(--sp-6); flex:1; min-width:200px; }
.at-chip{ display:inline-flex; align-items:center; gap:var(--sp-4); font-size:var(--fs-sm); color:var(--mut);
  border:1px solid var(--line); border-radius:var(--radius-pill); padding:var(--sp-2) var(--sp-8); background:var(--card); cursor:pointer; }
.at-gen-brief{ flex:1; min-width:180px; padding:var(--sp-6) var(--sp-10); border:1px solid var(--line); border-radius:var(--radius-sm,8px);
  background:var(--card); color:var(--txt); font:inherit; font-size:var(--fs-md); }
.at-gen-st{ font-size:var(--fs-sm); color:var(--mut); }

/* ── Plans ── */
.at-plans{ display:flex; flex-direction:column; gap:var(--sp-18); }
.at-catsec-h{ display:flex; align-items:center; gap:var(--sp-10); margin-bottom:var(--sp-8); }
.at-catsec-h>div{ display:flex; flex-direction:column; }
.at-catsec-h b{ font-size:var(--fs-base); }
.at-catsec-d{ color:var(--mut); font-size:var(--fs-sm); }
.at-catsec-h .mini{ margin-left:auto; }
.at-cat-empty{ color:var(--mut); font-size:var(--fs-sm); padding:var(--sp-8) var(--sp-2); }
.at-plan{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); padding:var(--sp-12) var(--sp-14); margin-bottom:var(--sp-10); }
.at-plan-h{ display:flex; align-items:center; gap:var(--sp-10); margin-bottom:var(--sp-8); }
.at-plan-t{ flex:1; padding:var(--sp-6) var(--sp-8); border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card2); color:var(--txt); font:inherit; font-weight:var(--fw-strong); }
.at-plan-n{ color:var(--mut); font-size:var(--fs-sm); white-space:nowrap; }
.at-x{ flex:none; border:1px solid var(--line); background:var(--card); color:var(--mut); border-radius:var(--radius-sm); width:30px; height:30px; cursor:pointer; transition:.12s; }
.at-x:hover{ color:var(--err); border-color:color-mix(in srgb,var(--err) 40%,transparent); }

.at-cases{ width:100%; border-collapse:collapse; font-size:var(--fs-sm); }
.at-cases th{ text-align:left; font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.03em; color:var(--mut); padding:var(--sp-4) var(--sp-6); border-bottom:1px solid var(--line); }
.at-cases td{ padding:var(--sp-6) var(--sp-6); border-bottom:1px solid var(--line); vertical-align:top; }
.at-case.s-pass{ background:rgba(22,163,74,.05); } .at-case.s-fail{ background:rgba(220,38,38,.05); }
.at-c-t{ width:100%; padding:var(--sp-4) var(--sp-8); border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card); color:var(--txt); font:inherit; font-weight:var(--fw-strong); margin-bottom:var(--sp-4); }
.at-c-steps,.at-c-exp{ width:100%; padding:var(--sp-4) var(--sp-8); border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card); color:var(--txt); font:inherit; font-size:var(--fs-sm); resize:vertical; }
.at-c-prio{ width:auto; min-width:76px; padding:var(--sp-4) var(--sp-6); border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card); color:var(--txt); font:inherit; font-size:var(--fs-sm); }
.at-c-prio.p-high{ color:var(--err); } .at-c-prio.p-medium{ color:var(--warn); } .at-c-prio.p-low{ color:var(--mut); }
.at-c-status{ display:flex; gap:var(--sp-2); }
.at-st{ width:26px; height:26px; border:1px solid var(--line); background:var(--card); color:var(--mut); border-radius:var(--radius-sm); cursor:pointer; font-size:var(--fs-md); }
.at-st.b-pass.on{ background:var(--ok); color:var(--on-solid); border-color:var(--ok); }
.at-st.b-fail.on{ background:var(--err); color:var(--on-solid); border-color:var(--err); }
.at-st.b-skip.on{ background:var(--mut); color:var(--on-solid); }
.at-st.b-todo.on{ background:var(--card2); color:var(--txt); border-color:var(--line); }
.at-c-empty td{ color:var(--mut); }

/* ── Protocoles ── */
.at-note{ font-size:var(--fs-sm); color:var(--mut); border:1px dashed var(--line); border-radius:var(--radius-sm,8px); padding:var(--sp-8) var(--sp-10); }
.at-protos{ display:flex; flex-direction:column; gap:var(--sp-8); }
.at-proto{ display:grid; grid-template-columns:auto 1fr 2fr auto; gap:var(--sp-10); align-items:center; padding:var(--sp-10) var(--sp-12);
  border:1px solid var(--line); border-radius:var(--radius); background:var(--card); }
.at-proto.on{ border-color:var(--at); }
@media (max-width:680px){ .at-proto{ grid-template-columns:auto 1fr; } .at-proto-cmd,.at-proto .mini{ grid-column:1/-1; } }
.at-proto-tog input{ position:absolute; opacity:0; }
.at-proto-tog{ position:relative; display:inline-block; width:38px; height:22px; cursor:pointer; }
.at-proto-tog span{ position:absolute; inset:0; background:var(--card2); border:1px solid var(--line); border-radius:var(--radius-pill); transition:.15s; }
.at-proto-tog span::after{ content:''; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:var(--mut); transition:.15s; }
.at-proto-tog input:checked + span{ background:var(--at); border-color:var(--at); }
.at-proto-tog input:checked + span::after{ left:18px; background:var(--on-solid); }
.at-proto-id{ display:flex; flex-direction:column; }
.at-proto-id b{ font-size:var(--fs-md); } .at-proto-kind{ color:var(--mut); font-size:var(--fs-xs); }
.at-proto-cmd{ padding:var(--sp-6) var(--sp-8); border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card2); color:var(--txt); font-size:var(--fs-sm); min-width:0; }

/* ── Rapports ── */
.at-runs{ display:flex; flex-direction:column; gap:var(--sp-6); }
.at-run{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card); overflow:hidden; }
.at-run>summary{ display:flex; align-items:center; gap:var(--sp-10); padding:var(--sp-8) var(--sp-12); cursor:pointer; list-style:none; }
.at-run>summary::-webkit-details-marker{ display:none; }
.at-run-n{ font-weight:var(--fw-strong); font-size:var(--fs-md); white-space:nowrap; }
.at-run-meta{ color:var(--mut); font-size:var(--fs-xs); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.at-run-meta.mono{ flex:1; min-width:0; }
.at-run-body{ padding:0 var(--sp-12) var(--sp-12); }
.at-run-sum{ font-size:var(--fs-sm); color:var(--txt); margin:var(--sp-4) 0 var(--sp-8); }
.at-run-out{ margin:0; padding:var(--sp-10); background:var(--card2); border:1px solid var(--line); border-radius:var(--radius); max-height:320px; overflow:auto; font-size:var(--fs-sm); line-height:var(--lh-normal); white-space:pre-wrap; word-break:break-word; }

/* ── Pastilles statut ── */
.at-rpill{ flex:none; font-size:var(--fs-xs); font-weight:var(--fw-bold); padding:var(--sp-1) var(--sp-8); border-radius:var(--radius-pill); border:1px solid var(--line); background:var(--card2); }
.at-rpill.ok{ color:var(--ok); border-color:color-mix(in srgb,var(--ok) 40%,transparent); }
.at-rpill.ko{ color:var(--err); border-color:color-mix(in srgb,var(--err) 40%,transparent); }
.at-rpill.to{ color:var(--warn); border-color:color-mix(in srgb,var(--warn) 40%,transparent); }

}
