*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:#0f1117;
  --bg-card:#161920;
  --bg-card-hover:#1c1f28;
  --border:#2a2d35;
  --border-sub:#1e2128;
  --text:#e8e9eb;
  --text-muted:#888;
  --text-dim:#555;
  --green:#5dcaa5;
  --green-bg:#1a2e24;
  --green-border:#1d9e75;
  --amber:#ef9f27;
  --amber-bg:#2a2010;
  --red:#e24b4a;
  --red-bg:#2d1818;
  --blue:#5b8def;
  --blue-bg:#1c2340;
  --coral:#e08060;
  --coral-bg:#2d1f1a;
  --purple:#a07ad8;
  --purple-bg:#26202e;
  --radius:8px;
  --radius-lg:12px;
}

html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:15px;line-height:1.6;min-height:100vh}

a{color:var(--green);text-decoration:none}
a:hover{text-decoration:underline}

/* NAV */
nav{display:flex;justify-content:space-between;align-items:center;padding:20px 0;border-bottom:0.5px solid var(--border);margin-bottom:0}
.logo{font-size:15px;font-weight:600;letter-spacing:-0.3px;color:#fff}
.logo em{color:var(--green);font-style:normal}
.nav-link{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted)}
.nav-link:hover{color:var(--text);text-decoration:none}
.nav-link svg{width:16px;height:16px}

.nav-back{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted)}
.nav-back:hover{color:var(--text);text-decoration:none}
.nav-back svg{width:15px;height:15px}

/* LAYOUT */
.container{max-width:860px;margin:0 auto;padding:0 24px 80px}

/* HERO */
.hero{padding:64px 0 48px}
.badge{display:inline-flex;align-items:center;gap:6px;background:var(--green-bg);border:0.5px solid var(--green-border);color:var(--green);font-size:12px;font-weight:500;padding:5px 12px;border-radius:20px;margin-bottom:24px}
.badge svg{width:13px;height:13px}
h1{font-size:38px;font-weight:600;line-height:1.15;letter-spacing:-0.8px;color:#fff;margin-bottom:16px}
h1 em{color:var(--green);font-style:normal}
.subtitle{font-size:16px;color:var(--text-muted);line-height:1.65;max-width:560px;margin-bottom:32px}
.hero-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;padding:10px 20px;border-radius:var(--radius);border:none;cursor:pointer;transition:opacity .15s}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--green-border);color:#fff}
.btn-primary:hover:not(:disabled){background:#25b887}
.btn-ghost{background:transparent;color:var(--text-muted);border:0.5px solid var(--border)}
.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--text-dim)}
.btn svg{width:16px;height:16px;flex-shrink:0}

/* STATUS MSG */
.status-msg{font-size:13px;color:var(--text-muted);display:none}
.status-msg.visible{display:block}
.status-msg.error{color:var(--red)}

/* STATS */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:48px 0}
.stat{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:20px 20px 18px}
.stat-val{font-size:30px;font-weight:600;letter-spacing:-1px;color:#fff}
.stat-val.green{color:var(--green)}
.stat-val.amber{color:var(--amber)}
.stat-label{font-size:12px;color:var(--text-dim);margin-top:4px}

.badge-amber{background:var(--amber-bg);border-color:var(--amber);color:var(--amber)}
.badge-blue{background:var(--blue-bg);border-color:var(--blue);color:var(--blue)}

/* ─── SENTINELSCAN ─── */

/* Avertissement d'usage */
.warn-box{background:var(--amber-bg);border:0.5px solid var(--amber);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:40px}
.warn-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--amber);margin-bottom:12px}
.warn-head svg{width:16px;height:16px;flex-shrink:0}
.warn-list{list-style:none;padding:0;margin:0 0 14px}
.warn-list li{position:relative;padding-left:16px;font-size:12.5px;color:var(--text-muted);line-height:1.65;margin-bottom:6px}
.warn-list li::before{content:"";position:absolute;left:0;top:9px;width:4px;height:4px;border-radius:50%;background:var(--amber);opacity:.7}
.warn-list strong{color:var(--text);font-weight:500}
.warn-accept{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;color:var(--text);cursor:pointer;padding-top:12px;border-top:0.5px solid rgba(239,159,39,.25)}
.warn-accept input{margin-top:2px;accent-color:var(--amber);cursor:pointer;flex-shrink:0}

/* Formulaire */
.scan-form{display:flex;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.kw-input{flex:1;min-width:220px;background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:14px;padding:10px 14px}
.kw-input::placeholder{color:var(--text-dim)}
.kw-input:focus{outline:none;border-color:var(--green-border)}
.form-hint{font-size:12px;color:var(--text-dim);margin-bottom:44px;line-height:1.6}
.form-hint.error{color:var(--red)}

/* Progression */
.scan-progress{display:none}
.scan-progress.visible{display:block;margin-bottom:44px}
.progress-list{border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.progress-row{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--bg-card);border-bottom:0.5px solid var(--border-sub);font-size:12.5px}
.progress-row:last-child{border-bottom:none}
.q-label{flex:1;color:var(--text-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.q-result{color:var(--text-dim);white-space:nowrap;font-size:12px}
.progress-row.has-hits .q-result{color:var(--amber)}
.progress-row.has-error .q-result{color:var(--red)}
.dot-error{background:var(--red)}

/* Résultat */
.scan-results{display:none}
.scan-results.visible{display:block}
.crit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:20px}
.crit-box{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px}
.crit-val{font-size:26px;font-weight:600;letter-spacing:-.8px;color:var(--text)}
.crit-label{font-size:11px;font-weight:600;letter-spacing:.6px;color:var(--text-dim);margin-top:2px}
.crit-critique .crit-val{color:var(--red)}
.crit-majeur .crit-val{color:var(--amber)}
.crit-mineur .crit-val{color:var(--blue)}
.crit-info .crit-val{color:var(--text-muted)}

/* ─── SAFETYSCOPE (HARA / ASIL) ─── */

.badge-purple{background:var(--purple-bg);border-color:var(--purple);color:var(--purple)}

.disclaimer{display:flex;gap:10px;align-items:flex-start;background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:44px;font-size:12.5px;color:var(--text-muted);line-height:1.6}
.disclaimer svg{width:16px;height:16px;flex-shrink:0;margin-top:2px;color:var(--text-dim)}
.disclaimer strong{color:var(--text);font-weight:500}

.item-field{width:100%;margin-bottom:8px}

/* Carte d'événement redouté */
.event-card{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:12px;transition:border-color .15s}
.event-card.is-rated{border-color:var(--border-sub);background:var(--bg-card-hover)}
.event-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.event-num{font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim)}
.event-del{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px;border-radius:4px;display:flex}
.event-del:hover{color:var(--red)}
.event-del svg{width:15px;height:15px}
.event-input{width:100%;margin-bottom:8px;font-size:13px}

.event-rating{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end;margin-top:12px}
.rating{display:flex;flex-direction:column;gap:5px;min-width:0}
.rating-label{font-size:10.5px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim)}
.rating-select{background:#0d1014;border:0.5px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:12px;padding:7px 9px;width:100%;cursor:pointer}
.rating-select:focus{outline:none;border-color:var(--purple)}
.rating-result{display:flex;flex-direction:column;gap:5px;align-items:flex-start}

/* Badges ASIL — échelle croissante de criticité */
.asil-badge{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:6px 12px;border-radius:6px;font-size:14px;font-weight:600;letter-spacing:.4px}
.asil-badge.badge-sm{min-width:30px;padding:2px 7px;font-size:11px}
.asil-none{background:#0d1014;border:0.5px solid var(--border);color:var(--text-dim)}
.asil-qm{background:#1a1d24;border:0.5px solid var(--border);color:var(--text-muted)}
.asil-a{background:var(--blue-bg);border:0.5px solid var(--blue);color:var(--blue)}
.asil-b{background:var(--amber-bg);border:0.5px solid var(--amber);color:var(--amber)}
.asil-c{background:var(--coral-bg);border:0.5px solid var(--coral);color:var(--coral)}
.asil-d{background:var(--red-bg);border:0.5px solid var(--red);color:var(--red)}

.events-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:48px}
.events-actions .form-hint{margin-bottom:0}

.btn-suggest{border-color:rgba(160,122,216,.5);color:var(--purple)}
.btn-suggest:hover:not(:disabled){border-color:var(--purple);color:var(--purple)}
#suggest-hint{margin-top:-36px;margin-bottom:48px;max-width:640px}
.event-card.is-suggested{border-left:2px solid var(--purple)}

.summary-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;flex-wrap:wrap}
.summary-head .btn-download{margin-left:0;border:none;background:none;cursor:pointer;font-family:inherit;padding:5px 11px;background:var(--purple-bg);border:0.5px solid var(--purple);color:var(--purple);border-radius:6px}
.summary-head .btn-download:hover:not(:disabled){background:#312a3d}
.summary-head .btn-download:disabled{opacity:.4;cursor:not-allowed}
#export-hint{margin-top:-8px;margin-bottom:16px}

/* Synthèse */
.hara-summary{display:grid;grid-template-columns:minmax(180px,1fr) 2fr;gap:16px;margin-bottom:48px}
.summary-main,.summary-side{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:20px}
.summary-main{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.summary-main .asil-badge{min-width:64px;font-size:20px;padding:10px 16px}
.summary-label{font-size:10.5px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim)}
.summary-note{font-size:12px;color:var(--text-muted)}

.asil-spread{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 4px}
.spread-cell{display:flex;align-items:center;gap:6px;opacity:.4}
.spread-cell.has-value{opacity:1}
.spread-count{font-size:14px;font-weight:600;color:var(--text)}

.decomp{margin-top:14px;padding-top:14px;border-top:0.5px solid var(--border-sub)}
.decomp-line{font-family:monospace;font-size:12px;color:var(--text-muted);margin-top:5px}
.decomp-note{font-size:11.5px;color:var(--text-dim);margin-top:10px;line-height:1.5}

@media(max-width:600px){
  .hara-summary{grid-template-columns:1fr}
}

/* ─── THREATSCOPE (TARA) ───
   Deux niveaux imbriqués : le scénario de dommage porte l'impact, le
   scénario de menace porte la faisabilité. Le risque naît du croisement,
   il s'affiche donc sur la carte de menace. */
.damage-card{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:14px;transition:border-color .15s}
.damage-card.is-rated{border-color:var(--border-sub);background:var(--bg-card-hover)}
.damage-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.damage-num{font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim)}

.impact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;align-items:end;margin-top:12px}
.impact-badge{display:inline-flex;align-items:center;justify-content:center;min-width:92px;padding:6px 12px;border-radius:6px;font-size:12.5px;font-weight:600;background:#0d1014;border:0.5px solid var(--border);color:var(--text-dim);text-align:center}
.impact-badge.has-value{background:var(--purple-bg);border-color:var(--purple);color:var(--purple)}

.threats{margin-top:18px;padding-left:14px;border-left:2px solid var(--border)}
.threats-label{font-size:10.5px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px}
.threat-card{background:#0d1014;border:0.5px solid var(--border-sub);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}
.threat-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px}
.threat-num{font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim)}
/* Pleine largeur et empilés : .kw-input est en flex/inline-block, sans ça
   l'intitulé de la menace et le chemin d'attaque se partagent une ligne et
   se tronquent l'un l'autre. */
.threat-card .kw-input{background:var(--bg-card);font-size:12.5px;width:100%;margin-bottom:8px}
.threat-card .rating-select{background:var(--bg-card)}
.feasibility-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:9px;align-items:end;margin-top:12px}
.threat-result{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:0.5px solid var(--border-sub)}
.threat-result .rating-result{flex-direction:row;align-items:center;gap:8px}
.potential-note{font-size:11.5px;color:var(--text-dim);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

.risk-badge{display:inline-flex;align-items:center;justify-content:center;min-width:34px;padding:5px 11px;border-radius:6px;font-size:14px;font-weight:600;letter-spacing:.4px}
.risk-badge.badge-sm{min-width:26px;padding:2px 7px;font-size:11px}
.risk-none{background:#0d1014;border:0.5px solid var(--border);color:var(--text-dim)}
.risk-1{background:#1a1d24;border:0.5px solid var(--border);color:var(--text-muted)}
.risk-2{background:var(--blue-bg);border:0.5px solid var(--blue);color:var(--blue)}
.risk-3{background:var(--amber-bg);border:0.5px solid var(--amber);color:var(--amber)}
.risk-4{background:var(--coral-bg);border:0.5px solid var(--coral);color:var(--coral)}
.risk-5{background:var(--red-bg);border:0.5px solid var(--red);color:var(--red)}

.threat-card.is-suggested{border-left:2px solid var(--purple)}
.suggest-hint{margin-top:8px}
.damage-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.btn-ghost.btn-sm{font-size:11.5px;padding:5px 10px}

/* Le raisonnement de calibration est montré, pas caché : c'est ce qui rend
   un barème propre défendable. */
.calib{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius);padding:12px 16px}
.calib summary{font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;list-style:none}
.calib summary::-webkit-details-marker{display:none}
.calib summary::before{content:'▸ ';color:var(--text-dim)}
.calib[open] summary::before{content:'▾ '}
.calib summary:hover{color:var(--text)}
.calib p{margin-top:12px;font-size:12.5px;line-height:1.7;color:var(--text-muted);white-space:pre-line}

.tara-summary{display:grid;grid-template-columns:minmax(180px,1fr) 2fr;gap:16px;margin-bottom:48px}
.tara-summary .summary-main .risk-badge{min-width:60px;font-size:20px;padding:10px 16px}
.risk-spread{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 4px}
.treatment-note{margin-top:14px;padding-top:14px;border-top:0.5px solid var(--border-sub);font-size:12px;color:var(--text-muted)}

@media(max-width:600px){
  .tara-summary{grid-template-columns:1fr}
  .threats{padding-left:10px}
  .damage-card{padding:16px 14px}
}

/* ─── PAGE DE GARDE : APPARIEMENT DES OUTILS ET PARTI PRIS ───
   La liaison entre SafetyScope et ThreatScope doit se voir dès le catalogue.
   Tout tient DANS la carte : la grille auto-fill n'est pas touchée. */
.tool-pair{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-dim);margin-top:14px;padding-top:12px;border-top:0.5px solid var(--border-sub)}
.tool-pair svg{width:13px;height:13px;flex-shrink:0}
.tool-card:hover .tool-pair{color:var(--text-muted)}

.stance{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:22px 24px;margin-bottom:56px}
.stance p{font-size:13.5px;line-height:1.75;color:var(--text-muted);margin-bottom:14px}
.stance p:last-child{margin-bottom:0}
.stance strong{color:var(--text)}
.stance-pair{padding-top:16px;border-top:0.5px solid var(--border-sub)}

/* ─── PLAFONDS DU JOUR ───
   L'état IA est REACTIF : il ne bascule qu'après un refus de quota constaté
   du fournisseur. Aucune prédiction — les en-têtes HTTP ne donnent que la
   limite par minute, jamais celle du jour. */
.caps-group{margin-bottom:16px}
.caps-group:last-child{margin-bottom:0}
.caps-head{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-bottom:4px}
.caps-title{font-size:13.5px;font-weight:600;color:var(--text)}
.caps-state{font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:2px 8px;border-radius:4px;background:var(--green-bg);border:0.5px solid var(--green-border);color:var(--green)}
.caps-state.is-down{background:var(--amber-bg);border-color:var(--amber);color:var(--amber)}
.caps-note{font-size:12.5px;line-height:1.7;color:var(--text-muted);margin-bottom:9px}
.caps-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 10px;padding:8px 0;border-top:0.5px solid var(--border-sub)}
.caps-label{font-size:13px;color:var(--text)}
.caps-count{font-size:12.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.caps-outage{margin-bottom:14px;padding:10px 12px;border-radius:var(--radius);background:var(--amber-bg);border:0.5px solid var(--amber);color:var(--amber);font-size:12.5px;line-height:1.6}
.caps-resets{margin-top:12px;font-size:12px;color:var(--text-muted)}

/* ─── TRAITEMENT DU RISQUE ET OBJECTIFS DE CYBERSÉCURITÉ ───
   Le bout de la chaîne : une TARA produit des exigences, pas un chiffre. */
.treatment{margin-top:12px;padding-top:12px;border-top:0.5px solid var(--border-sub)}
.treatment[hidden]{display:none}
.treatment-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}
.treatment-state{font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:2px 8px;border-radius:4px}
.treatment-state.is-ok{background:var(--green-bg);border:0.5px solid var(--green-border);color:var(--green)}
.treatment-state.is-todo{background:var(--amber-bg);border:0.5px solid var(--amber);color:var(--amber)}
.treatment .treatment-select{width:100%;max-width:320px}
.treatment-hint{font-size:11.5px;color:var(--text-dim);line-height:1.55;margin-top:7px}
.treatment-input{width:100%;margin-top:8px;font-size:12.5px}
.treatment-input[hidden]{display:none}
.treatment-input.is-goal{border-color:var(--green-border)}
.threat-card .treatment.is-incomplete .treatment-head .rating-label{color:var(--amber)}

.goal{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:baseline;background:var(--bg-card);border:0.5px solid var(--border);border-left:2px solid var(--green-border);border-radius:var(--radius);padding:11px 14px;margin-bottom:8px}
.goal-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;font-weight:600;color:var(--green)}
.goal-text{font-size:13px;color:var(--text);line-height:1.55}
.goal-src{font-size:11px;color:var(--text-dim);white-space:nowrap}
.treatment-note.is-todo{color:var(--amber)}

@media(max-width:600px){
  .goal{grid-template-columns:1fr;gap:4px}
  .goal-src{white-space:normal}
}

/* ─── PONT HARA → TARA ───
   La liaison entre les deux outils doit se voir sans qu'on la cherche :
   appel côté HARA, bandeau côté TARA, et la règle de transfert affichée
   à l'endroit où elle s'applique. */

/* Côté /hara : l'appel à poursuivre. Toujours visible, même sans cotation. */
.handoff{display:flex;align-items:center;gap:20px;flex-wrap:wrap;background:var(--bg-card);border:0.5px solid var(--green-border);border-radius:var(--radius-lg);padding:20px 22px;margin-bottom:40px}
.handoff-text{flex:1;min-width:260px}
.handoff-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--green);margin-bottom:8px}
.handoff-title svg{width:15px;height:15px}
.handoff-text p{font-size:12.5px;color:var(--text-muted);line-height:1.65;margin-bottom:8px}
.handoff-rule{color:var(--text-dim)!important}
.handoff .btn-primary{white-space:nowrap}
.handoff .btn-primary:disabled{opacity:.4;cursor:not-allowed}

/* Côté /tara : le bandeau de reprise. */
.bridge-banner{background:var(--green-bg);border:0.5px solid var(--green-border);border-radius:var(--radius-lg);padding:18px 22px;margin-bottom:20px}
.bridge-banner[hidden]{display:none}
.bridge-head{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;color:var(--green)}
.bridge-head svg{width:15px;height:15px;flex-shrink:0}
.bridge-sub{font-size:12.5px;color:var(--text-muted);line-height:1.65;margin-top:8px}
.bridge-rule{margin-top:14px;padding-top:14px;border-top:0.5px solid rgba(29,158,117,.35)}
.bridge-line{display:flex;gap:9px;font-size:12px;line-height:1.6;color:var(--text-muted);margin-bottom:7px}
.bridge-mark{flex-shrink:0;font-weight:700}
.bridge-yes .bridge-mark{color:var(--green)}
.bridge-no{color:var(--text-dim)}
.bridge-no .bridge-mark{color:var(--red)}
.bridge-note{font-size:11.5px;color:var(--text-dim);line-height:1.6;margin-top:10px;font-style:italic}
.bridge-clear{margin-top:14px;background:none;border:none;padding:0;font-family:inherit;font-size:11.5px;color:var(--text-dim);cursor:pointer;text-decoration:underline}
.bridge-clear:hover{color:var(--text-muted)}
.bridge-absent[hidden]{display:none}

/* Bandeau de brouillon restauré (SafetyScope). */
.draft-banner{background:var(--green-bg);border:0.5px solid var(--green-border);border-radius:var(--radius);padding:14px 18px;margin-bottom:24px;font-size:12.5px;color:var(--text-muted);line-height:1.65}
.draft-banner[hidden]{display:none}
.draft-banner .bridge-clear{display:block;margin-top:8px}
.bridge-absent{margin-bottom:32px}

/* Une carte issue d'une reprise se distingue d'une saisie manuelle. */
.damage-card.is-from-hara{border-left:2px solid var(--green-border)}
.damage-origin{font-size:11px;color:var(--green);margin-bottom:10px}
.impact-proposal{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding:9px 12px;background:var(--green-bg);border:0.5px solid rgba(29,158,117,.4);border-radius:6px;font-size:12px;color:var(--text-muted)}
.impact-proposal.is-applied{opacity:.55}
.btn-apply{background:var(--green-bg);border:0.5px solid var(--green-border);color:var(--green);border-radius:5px;font-family:inherit;font-size:11.5px;font-weight:500;padding:4px 11px;cursor:pointer;white-space:nowrap}
.btn-apply:hover{background:#1d3b30}
.impact-proposal.is-applied .btn-apply{cursor:default;opacity:.7}

/* Téléchargement du rapport */
.btn-download{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12px;font-weight:500;color:var(--green);background:var(--green-bg);border:0.5px solid var(--green-border);border-radius:6px;padding:5px 11px;white-space:nowrap}
.btn-download:hover{background:#1d3b30;text-decoration:none}
.btn-download svg{width:14px;height:14px}
.btn-download[hidden]{display:none}

.agent-time{font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums;margin-left:8px}
.agent-status.status-running .agent-time{color:var(--amber)}

/* SECTION LABELS */
.section-label{font-size:11px;font-weight:600;letter-spacing:.9px;color:var(--text-dim);text-transform:uppercase;margin-bottom:16px}

/* ─── GRILLE D'OUTILS (page de garde) ───
   auto-fill : la grille absorbe n'importe quel nombre de cartes.
   Ajouter un outil ne demande aucun réglage ici. */
.tools-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:16px;
  margin-bottom:56px;
}

.tool-card{
  display:flex;
  flex-direction:column;
  background:var(--bg-card);
  border:0.5px solid var(--border);
  border-radius:var(--radius-lg);
  padding:22px;
  color:inherit;
  text-decoration:none;
  transition:border-color .15s, background .15s, transform .15s;
}
.tool-card:hover{
  background:var(--bg-card-hover);
  border-color:var(--text-dim);
  text-decoration:none;
  transform:translateY(-2px);
}

.tool-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.tool-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tool-icon svg{width:20px;height:20px}
.icon-green{background:var(--green-bg);color:var(--green)}
.icon-blue{background:var(--blue-bg);color:var(--blue)}
.icon-coral{background:var(--coral-bg);color:var(--coral)}
.icon-purple{background:var(--purple-bg);color:var(--purple)}
.icon-amber{background:var(--amber-bg);color:var(--amber)}
.icon-red{background:var(--red-bg);color:var(--red)}

.tool-status{display:flex;align-items:center;gap:6px;font-size:11.5px;white-space:nowrap}
.status-live{color:var(--green)}
.status-soon{color:var(--amber)}

.tool-name{font-size:17px;font-weight:600;color:#fff;letter-spacing:-.3px;margin-bottom:8px}
.tool-desc{font-size:13px;color:var(--text-muted);line-height:1.6;margin-bottom:16px;flex:1}

.tool-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.tag{font-size:11px;color:var(--text-dim);background:#0d1014;border:0.5px solid var(--border-sub);border-radius:5px;padding:3px 8px}

.tool-cta{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--green)}
.tool-cta svg{width:15px;height:15px;transition:transform .15s}
.tool-card:hover .tool-cta svg{transform:translateX(3px)}
.tool-card.is-soon .tool-cta{color:var(--amber)}

/* AGENTS */
.agents{border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:visible;margin-bottom:48px}
.agent-card{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:0.5px solid var(--border-sub);background:var(--bg-card);transition:background .15s;overflow:visible}
.agent-card:first-of-type{border-radius:var(--radius-lg) var(--radius-lg) 0 0}
.agent-card:last-of-type{border-bottom:none}
.agent-card.running{background:var(--bg-card-hover)}

.agent-info{flex:1;min-width:0}
.agent-name{font-size:13px;font-weight:500;color:var(--text)}
.agent-desc{font-size:12px;color:var(--text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-status{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}
.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.dot-wait{background:var(--border)}
.dot-running{background:var(--amber);animation:blink 1s ease-in-out infinite}
.dot-done{background:var(--green)}
.status-wait{color:var(--text-dim)}
.status-running{color:var(--amber)}
.status-done{color:var(--green)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}

/* TASK OUTPUT */
.task-output{display:none;margin:0 20px 14px;padding:10px 14px;background:#0d1014;border-radius:6px;border-left:2px solid var(--border-sub);font-size:12px;color:var(--text-muted);line-height:1.6;max-height:220px;overflow-y:auto}
.task-output.visible{display:block}
.task-output p{margin-bottom:8px}
.task-output p:last-child{margin-bottom:0}
.task-output strong{color:var(--text);font-weight:500}
.task-output ul,.task-output ol{padding-left:18px;margin-bottom:8px}
.task-output li{margin-bottom:3px}
.task-output h1,.task-output h2,.task-output h3{font-size:12px;font-weight:600;color:var(--text);margin:10px 0 6px}
.task-output h1:first-child,.task-output h2:first-child,.task-output h3:first-child{margin-top:0}
.task-output table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:8px}
.task-output th{text-align:left;color:var(--text-dim);font-weight:500;padding:4px 6px;border-bottom:0.5px solid var(--border)}
.task-output td{padding:5px 6px;border-bottom:0.5px solid var(--border-sub);vertical-align:top}
.task-output tr:last-child td{border-bottom:none}
.task-output code{font-family:monospace;font-size:10.5px;background:#000;color:var(--green);padding:1px 4px;border-radius:3px}

/* ─── BONHOMMES ANIMÉS ─── */

.char-wrap{
  width:48px;
  flex-shrink:0;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  height:68px;
  overflow:visible;
  position:relative;
}

.bonhomme{
  display:block;
  overflow:visible;
}

/* Parties SVG */
.b-head{fill:var(--ac,#5dcaa5)}
.b-body{fill:var(--ac,#5dcaa5);opacity:.82}
.b-limb{stroke:var(--ac,#5dcaa5);stroke-width:3.5;stroke-linecap:round;fill:none}
.b-pupil{fill:var(--ad,#085041)}
.b-mouth{fill:none;stroke:rgba(255,255,255,.75);stroke-width:1.6;stroke-linecap:round}

/* Pivots bras (coordonnées SVG absolues) */
.arm-l{transform-origin:16px 29px}
.arm-r{transform-origin:34px 29px}

/* ── État EN ATTENTE : balancement doux ── */
.bonhomme.state-wait{
  animation:char-sway 2.4s ease-in-out infinite;
  transform-origin:25px 70px;
}
@keyframes char-sway{
  0%,100%{transform:rotate(-5deg)}
  50%   {transform:rotate(5deg)}
}

/* ── État EN COURS : rebond + bras qui oscillent ── */
.bonhomme.state-running{
  animation:char-bounce .42s ease-in-out infinite alternate;
  transform-origin:25px 70px;
}
@keyframes char-bounce{
  0%  {transform:translateY(0) scaleY(1)}
  100%{transform:translateY(-6px) scaleY(1.04)}
}
.bonhomme.state-running .arm-l{
  animation:arm-l-run .42s ease-in-out infinite alternate;
}
.bonhomme.state-running .arm-r{
  animation:arm-r-run .42s ease-in-out infinite alternate;
}
@keyframes arm-l-run{
  0%  {transform:rotate(-32deg)}
  100%{transform:rotate(22deg)}
}
@keyframes arm-r-run{
  0%  {transform:rotate(32deg)}
  100%{transform:rotate(-22deg)}
}

/* ── État TERMINÉ : saut + bras levés ── */
.bonhomme.state-done{
  animation:char-celebrate .5s ease-in-out 5;
  transform-origin:25px 70px;
}
@keyframes char-celebrate{
  0%,100%{transform:translateY(0)}
  40%    {transform:translateY(-10px)}
}
.bonhomme.state-done .arm-l{
  transform:rotate(-138deg);
  transition:transform .4s cubic-bezier(.34,1.56,.64,1);
}
.bonhomme.state-done .arm-r{
  transform:rotate(138deg);
  transition:transform .4s cubic-bezier(.34,1.56,.64,1);
}

/* ─── FIN BONHOMMES ─── */

/* REPORT */
.report-section{display:none}
.report-section.visible{display:block}
.report-box{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.report-header{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:0.5px solid var(--border-sub)}
.report-header svg{width:16px;height:16px;color:var(--text-dim)}
.report-title{font-size:13px;font-weight:500;color:var(--text)}
.report-date{font-size:12px;color:var(--text-dim)}
.report-body{padding:24px;overflow-x:auto}

/* MARKDOWN STYLES */
.report-body h2{font-size:16px;font-weight:600;color:#fff;margin:20px 0 10px;letter-spacing:-.2px}
.report-body h2:first-child{margin-top:0}
.report-body h3{font-size:14px;font-weight:500;color:var(--text);margin:16px 0 8px}
.report-body p{font-size:13px;color:var(--text-muted);margin-bottom:10px}
.report-body ul,.report-body ol{font-size:13px;color:var(--text-muted);padding-left:20px;margin-bottom:10px}
.report-body li{margin-bottom:4px}
.report-body strong{color:var(--text);font-weight:500}
.report-body table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:16px}
.report-body th{text-align:left;color:var(--text-dim);font-weight:500;padding:6px 10px;border-bottom:0.5px solid var(--border)}
.report-body td{padding:8px 10px;border-bottom:0.5px solid var(--border-sub);color:var(--text-muted);vertical-align:top}
.report-body tr:last-child td{border-bottom:none}
.report-body code{font-family:monospace;font-size:11px;background:#0d1014;color:var(--green);padding:1px 5px;border-radius:3px}

/* FOOTER */
footer{border-top:0.5px solid var(--border);padding:24px 0;margin-top:0}
.footer-inner{display:flex;justify-content:space-between;align-items:center}
.footer-text{font-size:12px;color:var(--text-dim)}

/* RESPONSIVE */
@media(max-width:600px){
  h1{font-size:28px}
  .stats{grid-template-columns:1fr}
  .agent-desc{display:none}
  .char-wrap{width:40px;height:58px}
}

/* REGWATCH — sélection des normes */
.norm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:18px}
.norm-card{background:var(--bg-card);border:0.5px solid var(--border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;display:block;transition:border-color .15s,background .15s}
.norm-card:hover{background:var(--bg-card-hover)}
.norm-card.is-on{border-color:var(--green-border);background:var(--green-bg)}
.norm-head{display:flex;align-items:flex-start;gap:9px}
.norm-head input{margin-top:3px;accent-color:var(--green);cursor:pointer;flex-shrink:0}
.norm-name{font-size:13.5px;font-weight:600;color:#fff;line-height:1.35}
.norm-src{margin-top:9px;display:flex;flex-wrap:wrap;gap:5px}

/* Palier de fiabilité d'une source — jamais masqué */
.tier{font-size:10.5px;font-weight:500;border-radius:4px;padding:2px 7px;border:0.5px solid;white-space:nowrap}
.tier-officiel{color:var(--green);border-color:var(--green-border);background:var(--green-bg)}
.tier-communaute{color:var(--blue);border-color:var(--blue);background:var(--blue-bg)}
.tier-commentaire{color:var(--amber);border-color:var(--amber);background:var(--amber-bg)}

/* Couverture incomplète — passe AVANT les résultats */
.cover-box{background:var(--red-bg);border:0.5px solid var(--red);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:24px}
.cover-box.is-note{background:var(--amber-bg);border-color:var(--amber)}
.cover-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--red);margin-bottom:10px}
.cover-box.is-note .cover-head{color:var(--amber)}
.cover-head svg{width:16px;height:16px;flex-shrink:0}
.cover-list{list-style:none;padding:0;margin:0}
.cover-list li{position:relative;padding-left:14px;font-size:12.5px;color:var(--text-muted);line-height:1.6;margin-bottom:5px;word-break:break-word}
.cover-list li::before{content:"—";position:absolute;left:0;color:var(--text-dim)}

/* Filtres par norme */
.filters{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:20px}
.filter-chip{font-size:12px;color:var(--text-muted);background:var(--bg-card);border:0.5px solid var(--border);border-radius:20px;padding:5px 13px;cursor:pointer}
.filter-chip:hover{color:var(--text)}
.filter-chip.is-on{color:var(--bg);background:var(--green);border-color:var(--green);font-weight:600}

/* Sections et lignes de signaux */
.norm-section{margin-bottom:28px}
.norm-section-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding-bottom:8px;border-bottom:0.5px solid var(--border);margin-bottom:12px}
.norm-section-head h3{font-size:14px;font-weight:600;color:#fff}
.norm-count{font-size:12px;color:var(--text-dim)}
.norm-empty{font-size:12.5px;color:var(--text-muted);background:var(--bg-card);border:0.5px solid var(--border-sub);border-radius:var(--radius);padding:12px 14px;line-height:1.6}
.signal-row{display:flex;gap:14px;padding:11px 0;border-bottom:0.5px solid var(--border-sub)}
.signal-row:last-child{border-bottom:none}
.signal-date{font-size:11.5px;color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0;padding-top:2px;width:78px}
.signal-body{min-width:0;flex:1}
.signal-title{font-size:13.5px;color:var(--text);line-height:1.5;display:block;word-break:break-word}
a.signal-title:hover{color:var(--green)}
.signal-meta{margin-top:6px;display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.signal-src{font-size:11.5px;color:var(--text-dim)}
.sig-badge{font-size:10.5px;font-weight:600;border-radius:4px;padding:2px 7px;white-space:nowrap}
.sig-pub{color:var(--green);background:var(--green-bg)}
.sig-draft{color:var(--amber);background:var(--amber-bg)}
.sig-event{color:var(--blue);background:var(--blue-bg)}
.sig-info{color:var(--text-muted);background:#0d1014}

/* Catalogue des sources, dépliant */
.sources-box{border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:0;margin-bottom:40px;overflow:hidden}
.sources-box summary{padding:14px 18px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;background:var(--bg-card)}
.sources-box summary:hover{background:var(--bg-card-hover)}
.sources-inner{padding:4px 18px 18px}
.source-row{padding:14px 0;border-bottom:0.5px solid var(--border-sub)}
.source-row:last-child{border-bottom:none}
.source-top{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:5px}
.source-name{font-size:12.5px;font-weight:500;color:var(--text)}
.source-url{font-size:11px;color:var(--text-dim);word-break:break-all;display:block;margin-bottom:6px}
.source-note{font-size:12px;color:var(--text-muted);line-height:1.6}

@media (max-width:520px){
  .signal-row{flex-direction:column;gap:5px}
  .signal-date{width:auto;padding-top:0}
}

/* REGWATCH — phrase « pourquoi ça compte », produite par l'IA */
.why{margin-top:7px;padding-left:10px;border-left:2px solid var(--purple);font-size:12.5px;color:var(--text-muted);line-height:1.55}
.why-mark{font-size:10px;font-weight:600;color:var(--purple);letter-spacing:.4px;margin-right:6px}
.explain-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px}
.explain-note{font-size:12px;color:var(--text-dim);line-height:1.55;flex:1;min-width:220px}

/* Sélecteur de langue — discret, à côté du lien GitHub */
.nav-lang{font-weight:600;letter-spacing:.5px;padding:3px 9px;border:1px solid var(--border);border-radius:6px}
.nav-lang:hover{border-color:var(--text-muted);color:var(--text)}

/* CauseTrace — 8D : chaînes de pourquoi et disciplines verrouillées */
.d-card.is-locked{opacity:.5}
.d-card.is-locked input,.d-card.is-locked select,.d-card.is-locked textarea,.d-card.is-locked button{pointer-events:none}
.treatment-state.is-locked{background:#0d1014;border:0.5px solid var(--border);color:var(--text-dim)}
.d-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:12px}
.why-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.why-n{font-size:10.5px;font-weight:600;color:var(--text-dim);flex-shrink:0;width:14px}
.why-row .kw-input{flex:1;min-width:0;font-size:12.5px}
.why-row .rating-select{flex-shrink:0;max-width:190px;font-size:12px}
.d-gaps{list-style:none;padding:0;margin:12px 0 0;border-top:0.5px solid var(--border);padding-top:10px}
.d-gaps li{font-size:12px;color:var(--amber);line-height:1.6;padding-left:14px;position:relative}
.d-gaps li::before{content:"›";position:absolute;left:2px}
.d-gaps li.is-lock{color:var(--text-dim)}
.warn-box.is-note{background:var(--bg-card);border-color:var(--border)}
.warn-box.is-ok{background:var(--green-bg);border-color:var(--green-border)}
.btn-download:disabled{opacity:.45;cursor:not-allowed}
.verdict-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.verdict-count{font-size:12px;color:var(--text-muted)}
.gap-src{color:var(--text-dim)}
