:root{
  /* encres — profondes pour rester lisibles sur des fonds pâles */
  --encre:#3A2E4F;
  --encre-2:#645679;
  --muted:#8578A0;

  /* surfaces */
  --papier:#F7F4FB;
  --surface:#FFFFFF;
  --trait:#EAE3F3;
  --trait-fort:#D3C7E4;

  /* pastels */
  --rose:#E87BAA;
  --rose-pale:#FBE4EE;
  --violet:#9B7FE0;
  --violet-pale:#EEE7FC;
  --turquoise:#4FBFB8;
  --turquoise-pale:#DFF5F3;
  --peche:#F0A87C;
  --menthe:#6BC7A8;

  --signal:#7C5FC0;
  --alerte:#E05575;
  --alerte-pale:#FCE8ED;
  --ok:#3F9E7C;

  --sans:'Figtree', system-ui, -apple-system, sans-serif;
  --mono:'DM Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
  --r:8px;
  --r-p:6px;
  --ombre:0 1px 2px rgba(58,46,79,.05), 0 6px 20px -12px rgba(58,46,79,.22);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);background:var(--papier);color:var(--encre);
  font-size:14px;line-height:1.5;min-height:100vh;position:relative;
}
/* aurore : la brillance ambiante, immobile */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(760px 420px at 8% -6%, rgba(232,123,170,.22), transparent 62%),
    radial-gradient(680px 420px at 92% 2%, rgba(155,127,224,.20), transparent 60%),
    radial-gradient(700px 480px at 55% 108%, rgba(79,191,184,.16), transparent 62%);
}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--violet);outline-offset:2px}

.app{max-width:1440px;margin:0 auto;padding:0 20px 80px}

/* ---------- en-tête ---------- */
.entete{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:30px 0 20px;flex-wrap:wrap}
.titre-bloc h1{
  font-size:24px;font-weight:700;letter-spacing:-.025em;
  background:linear-gradient(96deg,var(--rose),var(--violet) 55%,var(--turquoise));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.surtitre{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}

.charge-globale{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.metrique{
  display:flex;flex-direction:column;gap:3px;padding:9px 14px;
  background:rgba(255,255,255,.72);border:1px solid var(--trait);border-radius:var(--r);
  backdrop-filter:blur(6px);
}
.metrique .valeur{font-family:var(--mono);font-size:20px;font-weight:500;line-height:1.1;letter-spacing:-.02em}
.metrique .valeur small{font-size:11.5px;color:var(--muted);font-weight:400}
.metrique .label{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.metrique.depasse{background:var(--alerte-pale);border-color:#F3C8D3}
.metrique.depasse .valeur{color:var(--alerte)}

/* ---------- barre d'outils ---------- */
.outils{display:flex;align-items:center;gap:9px;padding:6px 0 16px;flex-wrap:wrap}
.onglets{display:flex;padding:3px;gap:3px;background:rgba(255,255,255,.72);border:1px solid var(--trait);border-radius:999px}
.onglets button{
  background:none;border:0;border-radius:999px;padding:6px 16px;cursor:pointer;
  font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  transition:background .18s,color .18s;
}
.onglets button:hover{color:var(--encre)}
.onglets button[aria-pressed="true"]{
  background:linear-gradient(135deg,var(--violet),var(--rose));color:#fff;
  box-shadow:0 2px 8px -2px rgba(155,127,224,.6), inset 0 1px 0 rgba(255,255,255,.45);
}

.champ-recherche{flex:1;min-width:180px;max-width:290px;background:var(--surface);border:1px solid var(--trait-fort);border-radius:999px;padding:8px 15px;font-size:13px}
.champ-recherche::placeholder{color:var(--muted)}
select.filtre{background:var(--surface);border:1px solid var(--trait-fort);border-radius:999px;padding:8px 13px;font-size:13px;cursor:pointer}
.espaceur{flex:1}
.btn{
  border:0;border-radius:999px;padding:9px 19px;cursor:pointer;font-size:13px;font-weight:600;color:#fff;
  background:linear-gradient(135deg,var(--violet),var(--rose));
  box-shadow:0 3px 12px -3px rgba(155,127,224,.65), inset 0 1px 0 rgba(255,255,255,.5);
  transition:transform .15s, box-shadow .2s;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px -4px rgba(155,127,224,.75), inset 0 1px 0 rgba(255,255,255,.55)}
.btn:active{transform:none}
.btn-fant{background:var(--surface);color:var(--encre);border:1px solid var(--trait-fort);box-shadow:none;font-weight:500}
.btn-fant:hover{background:var(--violet-pale);border-color:var(--violet);transform:none;box-shadow:none}
.btn-min{padding:6px 13px;font-size:12px}

/* ---------- registre ---------- */
.registre{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r);overflow:hidden;box-shadow:var(--ombre)}
.ligne{
  display:grid;grid-template-columns:5px 178px minmax(180px,1fr) 128px 270px 96px;
  align-items:center;gap:14px;background:none;border:0;border-top:1px solid var(--trait);
  width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit;transition:background .16s;
}
.ligne:first-of-type{border-top:0}
.ligne:hover{background:#FCFAFE}
.ligne[aria-current="true"]{background:linear-gradient(90deg,var(--violet-pale),rgba(238,231,252,0) 70%)}
.ligne>*{padding:13px 0}
.puce{align-self:stretch;padding:0!important;background:var(--c);box-shadow:inset -1px 0 0 rgba(255,255,255,.5)}
.ref{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ref .offre{display:block;font-size:10px;color:var(--muted);font-weight:400;letter-spacing:.04em}
.intitule{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cell-statut{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.echeance{font-family:var(--mono);font-size:11.5px;color:var(--encre-2);text-align:right;padding-right:16px!important;white-space:nowrap}
.echeance.urgent{color:var(--alerte);font-weight:500}
.echeance small{display:block;font-size:9.5px;color:var(--muted);letter-spacing:.07em;text-transform:uppercase}

.entete-registre{
  display:grid;grid-template-columns:5px 178px minmax(180px,1fr) 128px 270px 96px;gap:14px;padding:0 0 9px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
}
.entete-registre .fin{text-align:right;padding-right:16px}

.statut{
  display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  padding:3px 10px;border-radius:999px;white-space:nowrap;background:var(--bg);color:var(--fg);
}
.st-analyse{--bg:#EEE7FC;--fg:#7C5FC0}
.st-dev{--bg:#E4EDFC;--fg:#4B7FD0}
.st-revue{--bg:#FDEEDF;--fg:#C07A2E}
.st-test{--bg:#DFF5F3;--fg:#2E9E97}
.st-attente{--bg:#F0ECF6;--fg:#8578A0}
.st-livre{--bg:#E2F5EC;--fg:#3F9E7C}

.mini-tests{font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;color:var(--muted);display:flex;align-items:center;gap:4px}
.mini-tests b{font-weight:500}
.mini-tests.tous-ok{color:var(--ok)}
.mini-tests.ko{color:var(--alerte)}

/* ---------- jauge d'heures : vernie en permanence ---------- */
.jauge{position:relative;height:24px;display:flex;align-items:center}
.jauge .piste{
  position:absolute;left:0;right:0;height:12px;border-radius:999px;
  background:repeating-linear-gradient(90deg,transparent 0 calc(var(--pas) - 1px),var(--trait) calc(var(--pas) - 1px) var(--pas));
}
.jauge .budget{position:relative;height:12px;background:#F0EBF7;border-radius:999px;width:var(--w);box-shadow:inset 0 1px 2px rgba(58,46,79,.08)}
.jauge .consomme{
  position:absolute;top:0;left:0;bottom:0;border-radius:999px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--c) 62%, white) 0%, var(--c) 52%, color-mix(in srgb, var(--c) 88%, #3A2E4F) 100%);
  box-shadow:0 0 8px -1px color-mix(in srgb, var(--c) 55%, transparent), inset 0 1px 0 rgba(255,255,255,.6);
  transition:width .4s cubic-bezier(.4,0,.2,1);
}
.jauge .exces{
  position:absolute;top:-1px;bottom:-1px;left:100%;border-radius:0 999px 999px 0;
  background:repeating-linear-gradient(135deg,var(--alerte) 0 4px,#FDDDE4 4px 8px);
  box-shadow:0 0 8px -2px var(--alerte);
}
.jauge .chiffres{position:absolute;right:-90px;width:86px;text-align:right;font-family:var(--mono);font-size:11.5px;white-space:nowrap}
.jauge .chiffres b{font-weight:500}
.jauge .chiffres .sur{color:var(--muted)}
.jauge.debord .chiffres b{color:var(--alerte)}
.cell-jauge{padding-right:90px!important}

/* ---------- vue parallèle ---------- */
.parallele{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r);box-shadow:var(--ombre);overflow:hidden}
.frise{position:relative;padding:14px 20px 18px}
.reglure{position:relative;height:34px;border-bottom:1px solid var(--trait);margin-bottom:6px}
.semaine{position:absolute;top:0;bottom:0;border-left:1px solid var(--trait);padding-left:7px;padding-top:8px}
.semaine span{font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;color:var(--muted);display:block}
.semaine b{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--encre-2)}
.piste-tache{position:relative;height:40px;border-bottom:1px solid #F4F0FA;cursor:pointer;transition:background .16s}
.piste-tache:hover{background:#FCFAFE}
.piste-tache .grille{position:absolute;inset:0;pointer-events:none}
.piste-tache .grille i{position:absolute;top:0;bottom:0;border-left:1px solid #F6F2FB}
.barre{
  position:absolute;top:8px;height:24px;border-radius:var(--r-p);
  display:flex;align-items:center;padding:0 10px;overflow:hidden;
  background:linear-gradient(180deg, color-mix(in srgb, var(--c) 32%, white) 0%, color-mix(in srgb, var(--c) 58%, white) 100%);
  border:1px solid color-mix(in srgb, var(--c) 55%, white);
  box-shadow:0 2px 8px -4px color-mix(in srgb, var(--c) 70%, transparent), inset 0 1px 0 rgba(255,255,255,.75);
}
.barre span{font-family:var(--mono);font-size:10.5px;color:var(--encre);white-space:nowrap}
.barre.pale{opacity:.5}
.aujourdhui{position:absolute;top:14px;bottom:18px;width:2px;border-radius:999px;background:var(--rose);box-shadow:0 0 8px 1px rgba(232,123,170,.6);z-index:2}
.aujourdhui::after{content:"AUJ.";position:absolute;top:-1px;left:6px;font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:var(--rose)}
.legende-parallele{display:flex;gap:16px;padding:11px 20px;border-top:1px solid var(--trait);background:#FCFAFE;font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap}

/* ---------- panneau de détail ---------- */
.voile{position:fixed;inset:0;background:rgba(58,46,79,.26);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .22s;z-index:40}
.voile.on{opacity:1;pointer-events:auto}
.panneau{
  position:fixed;top:0;right:0;bottom:0;width:min(500px,100%);background:var(--surface);
  z-index:50;display:flex;flex-direction:column;
  border-radius:var(--r) 0 0 var(--r);box-shadow:-18px 0 50px -24px rgba(58,46,79,.4);
  transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
}
.panneau.on{transform:none}
.panneau-entete{padding:20px 24px 0;border-bottom:1px solid var(--trait);position:relative;background:linear-gradient(180deg,var(--violet-pale),rgba(255,255,255,0))}
.panneau-entete::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--c);border-radius:var(--r) 0 0 0}
.panneau-corps{overflow-y:auto;flex:1;padding:20px 24px 44px}
.fermer{position:absolute;top:16px;right:18px;background:none;border:0;cursor:pointer;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--muted)}
.fermer:hover{color:var(--encre)}
.panneau h2{font-size:17px;font-weight:700;letter-spacing:-.015em;margin:5px 0 10px;padding-right:62px}
.panneau .ref-grand{font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--encre-2)}

.sous-onglets{display:flex;gap:4px;margin-top:16px}
.sous-onglets button{
  background:none;border:0;border-radius:var(--r-p) var(--r-p) 0 0;border-bottom:2px solid transparent;
  padding:9px 13px;cursor:pointer;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);
  display:flex;align-items:center;gap:6px;transition:color .16s,background .16s;
}
.sous-onglets button:hover{color:var(--encre);background:rgba(255,255,255,.6)}
.sous-onglets button[aria-pressed="true"]{color:var(--encre);border-bottom-color:var(--violet);background:var(--surface)}
.sous-onglets .compte{background:var(--violet-pale);border-radius:999px;padding:1px 7px;font-size:9.5px;color:var(--signal)}
.sous-onglets .compte.alerte{background:var(--alerte);color:#fff}

.fiche{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--trait);border:1px solid var(--trait);border-radius:var(--r-p);overflow:hidden;margin:0 0 22px}
.fiche div{background:var(--surface);padding:10px 13px}
.fiche dt{font-family:var(--mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
.fiche dd{font-size:13px;font-family:var(--mono)}

.desc{font-size:13px;color:var(--encre-2);margin-bottom:20px}
.desc-bloc{margin-bottom:22px}

.sous-titre{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  border-bottom:1px solid var(--trait);padding-bottom:6px;margin-bottom:15px;
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
}
.sous-titre button{background:none;border:0;cursor:pointer;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--signal);font-weight:500}
.sous-titre button:hover{color:var(--rose)}

/* journal */
.journal{list-style:none;position:relative;padding-left:20px}
.journal::before{content:"";position:absolute;left:3.5px;top:6px;bottom:8px;width:2px;border-radius:999px;background:linear-gradient(180deg,var(--trait-fort),var(--trait))}
.journal li{position:relative;padding-bottom:18px}
.journal li::before{content:"";position:absolute;left:-20px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--surface);border:2px solid var(--trait-fort)}
.journal li:first-child::before{border-color:var(--c);background:var(--c);box-shadow:0 0 0 4px color-mix(in srgb, var(--c) 18%, transparent)}
.journal .date{font-family:var(--mono);font-size:10.5px;color:var(--muted);display:flex;gap:8px;align-items:center;margin-bottom:4px;flex-wrap:wrap}
.journal .h{font-family:var(--mono);font-size:10.5px;color:var(--encre);font-weight:500}
.journal p{font-size:13px}
.journal .suppr{margin-left:auto;background:none;border:0;cursor:pointer;color:var(--trait-fort);font-family:var(--mono);font-size:9.5px;letter-spacing:.08em}
.journal .suppr:hover{color:var(--alerte)}
.vide{color:var(--muted);font-size:13px;font-style:italic;margin-bottom:16px}

/* spéc */
.liens{list-style:none;margin-bottom:10px}
.liens li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--trait)}
.liens .icone{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;color:var(--signal);background:var(--violet-pale);border-radius:999px;padding:3px 8px;flex-shrink:0}
.liens a{color:var(--signal);font-size:13px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.liens a:hover{text-decoration:underline}
.liens .meta{font-family:var(--mono);font-size:10px;color:var(--muted);flex-shrink:0}
.liens .suppr{background:none;border:0;cursor:pointer;color:var(--trait-fort);font-family:var(--mono);font-size:9.5px;margin-left:auto;flex-shrink:0;letter-spacing:.08em}
.liens .suppr:hover{color:var(--alerte)}
.liens .nom-fichier{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.depot{border:1.5px dashed var(--trait-fort);border-radius:var(--r);background:linear-gradient(135deg,var(--rose-pale),var(--violet-pale));padding:16px;text-align:center;margin-bottom:10px}
.depot input[type=file]{font-size:12px;width:100%}
.note-maquette{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--muted);margin-top:8px;line-height:1.6}

/* tests */
.bandeau-tests{display:flex;align-items:center;gap:14px;padding:13px 15px;border-radius:var(--r);background:var(--violet-pale);margin-bottom:18px;position:relative;overflow:hidden}
.bandeau-tests .score{font-family:var(--mono);font-size:21px;font-weight:500;line-height:1}
.bandeau-tests .score.tous-ok{color:var(--ok)}
.bandeau-tests .score.ko{color:var(--alerte)}
.bandeau-tests .txt{font-size:12.5px;color:var(--encre-2);flex:1}
.bandeau-tests.reussi{background:linear-gradient(120deg,var(--turquoise-pale),#E7F7EF 45%,var(--rose-pale))}
/* le seul mouvement permanent : réservé à l'état « tout est passé » */
.bandeau-tests.reussi::after{
  content:"";position:absolute;top:0;bottom:0;width:45%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.85),transparent);
  animation:balayage 3.6s ease-in-out infinite;
}
@keyframes balayage{0%{left:-50%}55%,100%{left:110%}}
.bandeau-tests.ko-actif{background:var(--alerte-pale)}

.tests{list-style:none;margin-bottom:20px}
.tests li{display:flex;gap:12px;padding:12px;border-radius:var(--r-p);align-items:flex-start;transition:background .16s}
.tests li+li{margin-top:2px}
.tests li:hover{background:#FCFAFE}
.tests .bascule{
  flex-shrink:0;width:28px;height:28px;border-radius:50%;border:2px solid var(--trait-fort);
  background:var(--surface);cursor:pointer;font-family:var(--mono);font-size:13px;line-height:1;
  display:flex;align-items:center;justify-content:center;color:var(--trait-fort);
  transition:transform .16s, box-shadow .2s, border-color .2s, background .2s;
}
.tests .bascule:hover{transform:scale(1.1)}
.tests .bascule[data-s="ok"]{
  border-color:var(--menthe);color:#fff;
  background:linear-gradient(160deg,#8FDCC0,var(--menthe));
  box-shadow:0 0 0 4px rgba(107,199,168,.18), inset 0 1px 0 rgba(255,255,255,.6);
}
.tests .bascule[data-s="ko"]{
  border-color:var(--alerte);color:#fff;
  background:linear-gradient(160deg,#F08098,var(--alerte));
  box-shadow:0 0 0 4px rgba(224,85,117,.16), inset 0 1px 0 rgba(255,255,255,.5);
}
.tests .corps{flex:1;min-width:0}
.tests .titre-test{font-size:13.5px;font-weight:600;margin-bottom:3px}
.tests .attendu{font-size:12.5px;color:var(--encre-2)}
.tests .attendu b{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:400;display:block;margin-bottom:1px}
.tests .quand{font-family:var(--mono);font-size:9.5px;color:var(--muted);margin-top:5px}
.tests .suppr{background:none;border:0;cursor:pointer;color:var(--trait-fort);font-family:var(--mono);font-size:9.5px;flex-shrink:0;letter-spacing:.08em}
.tests .suppr:hover{color:var(--alerte)}
.tests li.ko-actif{background:var(--alerte-pale)}
.tests li.ko-actif:hover{background:#FBDFE6}

/* étincelles : uniquement quand un scénario passe au vert */
.etincelle{
  position:fixed;z-index:200;pointer-events:none;user-select:none;line-height:1;
  animation:jaillir 1s ease-out forwards;animation-delay:var(--d);opacity:0;
}
@keyframes jaillir{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(0deg)}
  22%{opacity:1;transform:translate(calc(-50% + var(--dx)*.4),calc(-50% + var(--dy)*.4)) scale(1.15) rotate(60deg)}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.35) rotate(160deg)}
}

/* éditeur de texte enrichi */
.rt{border:1px solid var(--trait-fort);border-radius:var(--r-p);background:var(--surface);overflow:hidden}
.rt-barre{display:flex;flex-wrap:wrap;align-items:center;gap:1px;padding:5px;background:linear-gradient(135deg,var(--violet-pale),var(--rose-pale));border-bottom:1px solid var(--trait)}
.rt-barre button{
  background:none;border:1px solid transparent;border-radius:999px;cursor:pointer;
  min-width:26px;height:26px;padding:0 7px;
  font-family:var(--mono);font-size:11px;color:var(--encre-2);
  display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;
}
.rt-barre button:hover{background:var(--surface);border-color:var(--trait-fort)}
.rt-barre button svg{display:block;fill:currentColor}
.rt-barre .sep{width:1px;align-self:stretch;background:var(--trait-fort);margin:3px 5px;opacity:.6}
.rt-zone{min-height:84px;padding:10px 12px;outline:none}
.rt-zone:focus{box-shadow:inset 0 0 0 2px var(--violet-pale)}
.rt-zone:empty::before{content:attr(data-ph);color:var(--muted)}
.rt-aide{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--muted);margin-top:5px}

/* rendu du contenu enrichi */
.rendu{font-size:13px;color:var(--encre-2)}
.rendu h3{font-size:14px;font-weight:700;color:var(--encre);margin:13px 0 5px;letter-spacing:-.01em}
.rendu h4{font-size:10px;font-weight:500;color:var(--signal);margin:11px 0 4px;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase}
.rendu h3:first-child,.rendu h4:first-child{margin-top:0}
.rendu p{margin:0 0 8px}
.rendu ul,.rendu ol{margin:0 0 8px 20px}
.rendu li{margin-bottom:4px}
.rendu a{color:var(--signal)}
.rendu code{font-family:var(--mono);font-size:12px;background:var(--violet-pale);color:var(--signal);padding:1px 6px;border-radius:999px}
.rendu blockquote{border-left:2px solid var(--trait-fort);padding-left:12px;margin:0 0 8px;color:var(--muted)}
.rendu>*:last-child{margin-bottom:0}

/* formulaires */
.form-etape{background:#FBF9FE;border:1px solid var(--trait);border-radius:var(--r);padding:16px;margin-top:6px}
label{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
input[type=text],input[type=url],input[type=number],input[type=date],select,textarea{
  width:100%;background:var(--surface);border:1px solid var(--trait-fort);border-radius:var(--r-p);
  padding:8px 11px;font-size:13px;transition:border-color .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{border-color:var(--violet);box-shadow:0 0 0 3px var(--violet-pale);outline:none}
textarea{resize:vertical;min-height:56px;font-family:var(--sans)}
.rangee{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-bottom:11px}
.rangee-3{display:grid;grid-template-columns:1.2fr 1fr .8fr;gap:11px;margin-bottom:11px}
.champ{margin-bottom:11px}

/* modale */
.modale{position:fixed;inset:0;z-index:60;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;background:rgba(58,46,79,.32);backdrop-filter:blur(3px)}
.modale.on{display:flex}
.modale-boite{background:var(--surface);border-radius:var(--r);width:min(580px,100%);box-shadow:0 24px 60px -20px rgba(58,46,79,.45);overflow:hidden}
.modale-entete{padding:18px 22px;border-bottom:1px solid var(--trait);display:flex;justify-content:space-between;align-items:center;background:linear-gradient(120deg,var(--violet-pale),var(--rose-pale))}
.modale-entete h2{font-size:16px;font-weight:700;letter-spacing:-.015em}
.modale-corps{padding:20px 22px}
.modale-pied{padding:15px 22px;border-top:1px solid var(--trait);display:flex;gap:10px;justify-content:flex-end;background:#FBF9FE}

.nuancier{display:flex;gap:9px;flex-wrap:wrap}
.nuancier button{
  width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;
  box-shadow:inset 0 2px 4px rgba(255,255,255,.7), 0 2px 6px -2px rgba(58,46,79,.3);
  transition:transform .15s;
}
.nuancier button:hover{transform:scale(1.12)}
.nuancier button[aria-pressed="true"]{border-color:var(--surface);box-shadow:0 0 0 2.5px var(--encre), inset 0 2px 4px rgba(255,255,255,.7)}

.etat-vide{background:var(--surface);border:1.5px dashed var(--trait-fort);border-radius:var(--r);padding:48px 20px;text-align:center}
.etat-vide p{color:var(--muted);margin-bottom:14px}

@media (max-width:980px){
  .ligne,.entete-registre{grid-template-columns:5px 150px minmax(120px,1fr) 128px}
  .entete-registre .col-jauge,.entete-registre .fin,
  .ligne .cell-jauge,.ligne .echeance{display:none}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  .bandeau-tests.reussi::after{display:none}
}

/* ---------- page de connexion ---------- */
.page-connexion{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.carte-connexion{
  background:var(--surface);border-radius:var(--r);padding:34px 32px;width:min(380px,100%);
  box-shadow:0 24px 60px -22px rgba(58,46,79,.4);text-align:center;
}
.carte-connexion h1{
  font-size:21px;font-weight:700;letter-spacing:-.02em;margin-bottom:24px;
  background:linear-gradient(96deg,var(--rose),var(--violet) 55%,var(--turquoise));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.carte-connexion .champ{text-align:left;margin-bottom:16px}
.erreur-connexion{color:var(--alerte);font-size:12.5px;margin-bottom:14px}

/* ---------- messages d'erreur de l'API ---------- */
#alerte{
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,140%);z-index:300;
  background:var(--encre);color:#fff;padding:12px 20px;border-radius:999px;font-size:13px;
  box-shadow:0 10px 30px -10px rgba(58,46,79,.6);transition:transform .28s cubic-bezier(.4,0,.2,1);
  max-width:min(520px,92vw);text-align:center;
}
#alerte.on{transform:translate(-50%,0)}

/* ---------- barre de compte ---------- */
.compte-lien{
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;
}
.compte-lien:hover{color:var(--encre)}
.chargement{padding:60px 0;text-align:center;color:var(--muted);font-size:13px}
