/* Leaderr — composants ajoutés au câblage réel (écrans Scrapings, Dirigeants,
   Journal, Exports, Comptes, connexion). Feuille SÉPARÉE, chargée après la
   première : les règles d'origine restent lisibles telles que Rico les a validées,
   et ce qui a été ajouté depuis se voit d'un coup d'œil. */

/* ---------- bandeau de démonstration ---------- */
/* Il n'est pas décoratif : la règle du projet dit qu'un écran mêlant réel et
   décor est pire qu'un écran vide. Tant qu'il est là, rien ne vient de la base. */
.demobar{
  position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:9px;
  padding:9px 18px;background:#FFF4D6;border-bottom:1px solid #F2DFA6;
  font-size:13px;color:#7A5B00;
}
.demobar a{margin-left:auto;border-bottom:1px solid currentColor;font-weight:600}
.demobar svg{flex:0 0 auto}
.shell.with-demobar .side{height:calc(100vh - 39px);top:39px}

/* ---------- barre latérale : compléments ---------- */
.side-note{
  display:flex;align-items:center;gap:8px;padding:11px 13px;border-radius:var(--r-sub);
  background:var(--sub);color:var(--ink-2);font-size:12.5px;font-weight:600;
}
.nav .count.nb{background:var(--sub);color:var(--ink-2);border:1px solid var(--line-strong)}
.nav .count.live{background:#E6F0FF;color:#1B49B5}
.nav .count.live::before{
  content:"";width:6px;height:6px;border-radius:50%;background:#1B49B5;
  display:inline-block;margin-right:5px;animation:puls 1.4s ease-in-out infinite;
}
@keyframes puls{0%,100%{opacity:1}50%{opacity:.25}}

.side-user{
  margin-top:10px;display:flex;align-items:center;gap:10px;padding:10px 11px;
  border-top:1px solid var(--line);
}
.side-user .ava{
  width:32px;height:32px;border-radius:var(--r-pill);flex:0 0 auto;display:grid;
  place-items:center;background:var(--action);color:#fff;font-size:12px;font-weight:700;
}
.side-user .tx{min-width:0;flex:1}
.side-user .t{font-size:13px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-user .d{font-size:11.5px;color:var(--ink-2)}
.credit .sub.warn{color:#9A5B00;font-weight:600}

/* ---------- en-tête de page ---------- */
.pagehead{display:flex;align-items:flex-end;gap:16px;margin:2px 0 18px}
.pagehead h1{margin:0;font-size:28px;font-weight:750;letter-spacing:-.025em}
.pagehead .sub{margin:4px 0 0;font-size:13.5px;color:var(--ink-2)}
.pagehead .sp{flex:1}
.pill.live{background:#E6F0FF;border-color:#C9DCFF;color:#1B49B5;font-weight:650}

/* ---------- pagination ---------- */
.pager{display:flex;align-items:center;gap:14px;justify-content:center;padding:16px var(--pad) var(--pad)}
.pagerinfo{font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}

/* ---------- écran Scrapings ---------- */
.runs{display:flex;flex-direction:column;gap:12px;padding:0 var(--pad) var(--pad)}
.run{border:1px solid var(--line);border-radius:var(--r-sub);padding:14px 16px;background:var(--surface)}
.run.live{border-color:#C9DCFF;background:#FBFCFF}
.run-h{display:flex;align-items:center;gap:10px;font-size:13px}
.run-h .sp{flex:1}
.run-h .mute{color:var(--ink-2);font-size:12px}

.badge{
  display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--r-pill);
  font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  background:var(--sub);color:var(--ink-2);border:1px solid var(--line-strong);
}
.badge.st-succeeded{background:#EAF7F0;border-color:#CDEBDC;color:#0B7A4B}
.badge.st-running,.badge.st-ready,.badge.st-pending{background:#E6F0FF;border-color:#C9DCFF;color:#1B49B5}
.badge.st-failed,.badge.st-timed-out{background:#FDECEF;border-color:#F7CFD7;color:#B3213C}
/* ⚠️ ABORTED n'est pas un échec : c'est le plafond de dépense qui a coupé. On lui
   donne l'ambre de l'avertissement, jamais le rouge de l'erreur. */
.badge.st-aborted{background:#FFF4D6;border-color:#F2DFA6;color:#7A5B00}

.run-g{display:flex;flex-wrap:wrap;gap:22px;margin:12px 0 0}
.run-g>div{min-width:96px}
.run-g .k{display:block;font-size:10.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-3)}
.run-g .v{display:block;font-size:16px;font-weight:700;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;margin-top:2px}
.run-crit{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.run-err{
  margin-top:11px;display:flex;align-items:flex-start;gap:8px;padding:9px 11px;
  border-radius:10px;background:#FDECEF;color:#B3213C;font-size:12.5px;
}
.run-err svg{flex:0 0 auto;margin-top:1px}
.run-unknown{margin-top:11px;font-size:12.5px}
.run-unknown summary{cursor:pointer;color:var(--ink-2);font-weight:600}
.run-unknown .unk{display:flex;flex-wrap:wrap;gap:5px;margin:9px 0}
.run-unknown code{
  background:var(--sub);border:1px solid var(--line);border-radius:7px;
  padding:2px 7px;font-size:11.5px;font-family:ui-monospace,Menlo,Consolas,monospace;
}
.run-report{margin-top:11px;padding:10px 12px;border-radius:10px;background:#EAF7F0;
  color:#0B7A4B;font-size:12.5px;font-weight:600}
.run-report.ko{background:#FDECEF;color:#B3213C}

/* ---------- journal complet ---------- */
/* `.feed-i .d` tronque à une ligne dans la barre latérale, où la place manque.
   Sur la page entière, un détail coupé cacherait précisément ce qu'on vient y lire. */
.feed.jrn .feed-i .d{white-space:normal;overflow:visible}
.feed.jrn .when{font-size:11.5px;color:var(--ink-3);text-align:right;flex:0 0 auto;
  font-variant-numeric:tabular-nums;line-height:1.35}

/* ---------- exports ---------- */
.exports{display:flex;flex-direction:column;gap:10px;padding:0 var(--pad) var(--pad)}
.exp{
  display:flex;align-items:center;gap:14px;padding:15px 16px;border:1px solid var(--line);
  border-radius:var(--r-sub);background:var(--surface);
}
.exp:hover{border-color:var(--line-strong);background:var(--sub)}
.exp .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  background:var(--sub);color:var(--ink-2);flex:0 0 auto}
.exp:hover .ic{background:var(--surface)}
.exp .tx{flex:1;min-width:0}
.exp .t{font-size:14px;font-weight:650;letter-spacing:-.01em}
.exp .d{font-size:12.5px;color:var(--ink-2);margin-top:2px}

/* ---------- formulaire en ligne (comptes) ---------- */
.inline-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.inline-form input,.inline-form select{
  padding:10px 12px;border:1px solid var(--line-strong);border-radius:11px;
  background:var(--surface);font-size:13.5px;min-width:150px;
}
.inline-form input:focus,.inline-form select:focus{outline:2px solid var(--ink);outline-offset:-2px}

/* ---------- repli et recherche dans une liste ---------- */
.fold{margin:0 0 18px;border:1px solid var(--line);border-radius:var(--r-sub);padding:12px 14px}
.fold summary{cursor:pointer;font-weight:650;font-size:13.5px}
.fold[open] summary{margin-bottom:12px}
.fold .mute{color:var(--ink-2);font-weight:500}
input.mini{
  margin-top:6px;width:100%;padding:8px 11px;border:1px solid var(--line-strong);
  border-radius:10px;background:var(--surface);font-size:13px;
}
select[multiple]{
  width:100%;padding:6px;border:1px solid var(--line-strong);border-radius:11px;
  background:var(--surface);font-size:13.5px;
}
select[multiple] option{padding:5px 8px;border-radius:7px}

/* Un filtre sans source est DÉSACTIVÉ et le dit, plutôt que d'être proposé et de
   rendre zéro — un écran vide se lit « il n'y a personne », jamais « le critère
   n'a pas de donnée ». */
.fchip.off{opacity:.45}
.fchip.off select{cursor:not-allowed}

/* ---------- connexion ---------- */
body.auth{display:grid;place-items:center;padding:24px;background:var(--bg)}
.authbox{
  width:min(400px,100%);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-card);box-shadow:var(--shadow);padding:30px 28px 26px;
}
.authlogo{
  width:44px;height:44px;border-radius:13px;background:var(--action);color:#fff;
  display:grid;place-items:center;font-size:22px;font-weight:800;margin-bottom:18px;
}
.authbox h1{margin:0 0 6px;font-size:22px;font-weight:750;letter-spacing:-.02em}
.authsub{margin:0 0 22px;font-size:13px;color:var(--ink-2);line-height:1.5}
.authbox label{display:block;font-size:12px;font-weight:650;margin:14px 0 6px;color:var(--ink-2)}
.authbox input{
  width:100%;padding:12px 13px;border:1px solid var(--line-strong);border-radius:12px;
  background:var(--surface);font-size:14px;
}
.authbox input:focus{outline:2px solid var(--ink);outline-offset:-2px}
.authbox .hint{font-size:11.5px;color:var(--ink-3);margin-top:5px}
.btn.wide{width:100%;margin-top:22px;justify-content:center}
.autherr{
  padding:10px 12px;border-radius:11px;background:#FDECEF;color:#B3213C;
  font-size:13px;font-weight:600;margin-bottom:4px;
}

/* Code pays a cote du drapeau : tabulaire pour que la colonne reste alignee. */
.cc{font-size:11.5px;font-weight:650;color:var(--ink-2);letter-spacing:.03em}

/* Icone alignee dans une cellule de tableau. */
.ic-inline{display:inline-flex;vertical-align:-2px;color:var(--ink-2);margin-right:4px}
