:root{
  --bg:#f4f6f8; --surface:#fff; --surface-2:#eef1f5; --border:#dde2e9;
  --ink:#10151c; --muted:#5b6472; --faint:#8a94a3;
  --accent:#b8892b; --accent-soft:rgba(184,137,43,.12);
  --pos:#1f8a5b; --pos-soft:rgba(31,138,91,.14); --neg:#cf4a41; --neg-soft:rgba(207,74,65,.13);
  --neutral:#8a94a3;
  --shadow:0 1px 2px rgba(16,21,28,.04),0 8px 30px rgba(16,21,28,.06);
  --mono:ui-monospace,"Cascadia Code","Segoe UI Mono","SF Mono",Consolas,monospace;
  --sans:-apple-system,"Segoe UI",system-ui,Roboto,"Helvetica Neue",sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0d1117;--surface:#161b22;--surface-2:#1c232d;--border:#262d38;
  --ink:#e8ecf2;--muted:#9aa5b4;--faint:#6b7482;--accent:#d0a84e;--accent-soft:rgba(208,168,78,.15);
  --pos:#3fb880;--pos-soft:rgba(63,184,128,.15);--neg:#e06b62;--neg-soft:rgba(224,107,98,.15);--neutral:#6b7482;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 30px rgba(0,0,0,.35);}}
:root[data-theme=light]{color-scheme:light;--bg:#f4f6f8;--surface:#fff;--surface-2:#eef1f5;--border:#dde2e9;--ink:#10151c;--muted:#5b6472;--faint:#8a94a3;--accent:#b8892b;--accent-soft:rgba(184,137,43,.12);--pos:#1f8a5b;--pos-soft:rgba(31,138,91,.14);--neg:#cf4a41;--neg-soft:rgba(207,74,65,.13);--neutral:#8a94a3;}
:root[data-theme=dark]{color-scheme:dark;--bg:#0d1117;--surface:#161b22;--surface-2:#1c232d;--border:#262d38;--ink:#e8ecf2;--muted:#9aa5b4;--faint:#6b7482;--accent:#d0a84e;--accent-soft:rgba(208,168,78,.15);--pos:#3fb880;--pos-soft:rgba(63,184,128,.15);--neg:#e06b62;--neg-soft:rgba(224,107,98,.15);--neutral:#6b7482;}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1180px;margin:0 auto;padding:22px 20px 70px}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* top nav */
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.brand{display:flex;align-items:baseline;gap:10px}
.brand .mark{font-family:var(--mono);font-weight:700;font-size:18px;letter-spacing:-.02em;padding:3px 9px;border:1.5px solid var(--accent);border-radius:7px;color:var(--ink)}
.brand .mark b{color:var(--accent)}
.brand .tag{color:var(--muted);font-size:12.5px}
.navlinks{display:flex;gap:6px;align-items:center}
.navlinks a{color:var(--muted);font-size:13.5px;padding:6px 11px;border-radius:8px}
.navlinks a:hover{background:var(--surface-2);text-decoration:none;color:var(--ink)}
.navlinks a.active{color:var(--ink);background:var(--accent-soft)}
.toggle{font:inherit;font-size:13px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 12px;cursor:pointer}
.toggle:hover{border-color:var(--accent);color:var(--ink)}

/* headings */
h1{font-size:26px;letter-spacing:-.02em;margin:0 0 6px;text-wrap:balance}
h2{font-size:16px;letter-spacing:-.01em;margin:0 0 4px}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-weight:600;margin-bottom:6px}
.lede{color:var(--muted);font-size:14px;max-width:80ch;margin:0 0 18px}
.lede b{color:var(--ink)}

/* cards & grid */
.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:20px 22px;margin-bottom:20px}
.card>.desc{color:var(--muted);font-size:13px;margin:0 0 14px}
.grid{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:760px){.g3,.g4{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.g3,.g4{grid-template-columns:1fr}}

/* stat tiles */
.tile{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px}
.tile .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}
.tile .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;margin-top:3px}
.tile .s{font-size:11px;color:var(--faint);margin-top:2px}

/* opportunity cards (dashboard) */
.opps{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.opp{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 16px;box-shadow:var(--shadow);display:block}
.opp:hover{border-color:var(--accent);text-decoration:none}
.opp .tk{font-family:var(--mono);font-weight:700;font-size:16px;color:var(--ink)}
.opp .nm{color:var(--muted);font-size:12px;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opp .up{font-family:var(--mono);font-size:20px;font-weight:700}
.opp .meta{font-size:11.5px;color:var(--faint);margin-top:6px}
.up.pos{color:var(--pos)} .up.neg{color:var(--neg)}

/* tables */
.tableScroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:10px 11px;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
thead th{position:sticky;top:0;background:var(--surface-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;cursor:pointer;user-select:none}
thead th:hover{color:var(--ink)}
tbody tr:hover{background:var(--accent-soft)}
tbody tr{cursor:pointer}
td.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.tk-cell{font-family:var(--mono);font-weight:700;color:var(--ink)}

/* badges */
.badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent}
.badge.positive{color:var(--pos);background:var(--pos-soft);border-color:var(--pos)}
.badge.negative{color:var(--neg);background:var(--neg-soft);border-color:var(--neg)}
.badge.neutral{color:var(--muted);background:var(--surface-2);border-color:var(--border)}
.pill{display:inline-block;font-size:11px;padding:2px 8px;border-radius:6px;background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}
.pill.flag{color:var(--neg);border-color:var(--neg);background:var(--neg-soft)}
.pill.good{color:var(--pos);border-color:var(--pos);background:var(--pos-soft)}

/* filters (screener) */
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.field{display:flex;flex-direction:column;gap:4px}
.field label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}
.field input,.field select{font:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink)}
.field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:1px}
.rangewrap{display:flex;align-items:center;gap:6px}
.rangewrap input{width:100%}

/* upside bar */
.ubar{position:relative;width:80px;height:8px;background:var(--surface-2);border-radius:4px;display:inline-block;vertical-align:middle}
.ubar .mid{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--faint);opacity:.6}
.ubar i{position:absolute;top:0;height:100%;border-radius:4px}

/* profile */
.phead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:18px}
.phead .px{text-align:right}
.verdict{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:20px}
@media(max-width:680px){.verdict{grid-template-columns:1fr}}
.vcell{background:var(--surface);padding:18px 20px}
.vcell .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:7px}
.vcell .big{font-family:var(--mono);font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1}
.vcell .note{font-size:12px;color:var(--muted);margin-top:7px}
.newslist{display:flex;flex-direction:column;gap:0}
.newsitem{display:flex;gap:11px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--border)}
.newsitem:last-child{border-bottom:none}
.newsitem .t{font-size:13.5px}
.newsitem .src{font-size:11px;color:var(--faint);margin-top:2px}
.flagitem{padding:9px 0;border-bottom:1px solid var(--border);font-size:13px;display:flex;gap:9px;align-items:flex-start}
.flagitem:last-child{border-bottom:none}
.disclaimer{font-size:12px;color:var(--faint);margin-top:16px;border-top:1px solid var(--border);padding-top:14px;text-wrap:pretty}
.loading{color:var(--muted);font-size:14px;padding:40px 0;text-align:center}
.spark{display:block}
.confbadge{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}

/* recherche dans la nav */
.search{display:flex;align-items:center;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:9px;overflow:hidden}
.search:focus-within{border-color:var(--accent)}
.search input{font:inherit;font-size:13px;font-family:var(--mono);width:150px;padding:7px 10px;border:0;background:transparent;color:var(--ink);text-transform:uppercase}
.search input:focus{outline:none}
.search button{border:0;background:var(--accent-soft);color:var(--accent);padding:7px 11px;cursor:pointer;font-size:13px}
.search button:hover{background:var(--accent);color:#fff}
@media(max-width:620px){.search input{width:96px}}

/* graphiques */
svg.chart{width:100%;height:auto;display:block}
.chart .ax{fill:var(--faint);font-size:10px;font-family:var(--mono)}
.muted{color:var(--muted)}

/* grille de cartes profil (pro, dense) */
.pcards{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:820px){.pcards{grid-template-columns:1fr}}
.pcards .card{margin-bottom:0}
.card.span2{grid-column:1/-1}
.kv{display:grid;grid-template-columns:1fr auto;gap:4px 14px;font-size:13px}
.kv .lbl{color:var(--muted)}
.kv .val{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}
.summary{font-size:13px;color:var(--muted);line-height:1.55}
.mini{font-size:11px;color:var(--faint);margin-top:8px}
h2 .sub{font-weight:400;color:var(--faint);font-size:12px;letter-spacing:0;text-transform:none}

/* ------------------------------------------------------------------ *
 * NOTE DE RISQUE — cinq familles, A+ a F
 *
 * Palette choisie pour rester lisible en DEUTERANOPIE et PROTANOPIE, les
 * deux formes les plus repandues de daltonisme : les cinq familles varient
 * en LUMINOSITE autant qu'en teinte, si bien qu'elles restent ordonnees
 * meme percues en niveaux de gris. Le vert et le rouge de l'upside ne sont
 * volontairement PAS reutilises : la note et la decote repondent a deux
 * questions differentes, les confondre visuellement les ferait lire comme
 * un seul signal.
 * ------------------------------------------------------------------ */
:root{
  --r-a:#1a7f5a; --r-a-bg:rgba(26,127,90,.14);
  --r-b:#2f7db8; --r-b-bg:rgba(47,125,184,.14);
  --r-c:#a8791f; --r-c-bg:rgba(168,121,31,.16);
  --r-d:#c2612a; --r-d-bg:rgba(194,97,42,.16);
  --r-f:#a33b47; --r-f-bg:rgba(163,59,71,.16);
}
:root[data-theme="dark"]{
  --r-a:#4fc793; --r-a-bg:rgba(79,199,147,.16);
  --r-b:#63aee6; --r-b-bg:rgba(99,174,230,.16);
  --r-c:#d9a942; --r-c-bg:rgba(217,169,66,.18);
  --r-d:#eb8b4e; --r-d-bg:rgba(235,139,78,.18);
  --r-f:#e8697a; --r-f-bg:rgba(232,105,122,.18);
}
.note-risque{display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-weight:700;letter-spacing:-.02em;
  border-radius:8px;border:1.5px solid currentColor;line-height:1;
  padding:.28em .5em;min-width:2.6em}
.note-risque.grand{font-size:30px;padding:.22em .42em}
.note-risque.tag{font-size:12px;padding:.24em .42em;min-width:2.4em}
.nr-a{color:var(--r-a);background:var(--r-a-bg)}
.nr-b{color:var(--r-b);background:var(--r-b-bg)}
.nr-c{color:var(--r-c);background:var(--r-c-bg)}
.nr-d{color:var(--r-d);background:var(--r-d-bg)}
.nr-f{color:var(--r-f);background:var(--r-f-bg)}
.dims{display:grid;gap:7px;margin-top:4px}
.dim{display:grid;grid-template-columns:150px 1fr 46px;gap:10px;align-items:center;
  font-size:12.5px}
.dim .dnom{color:var(--muted)}
.dim .djauge{height:7px;border-radius:4px;background:var(--surface-2);overflow:hidden;
  position:relative}
.dim .dbar{height:100%;border-radius:4px}
.dim .dval{font-family:var(--mono);font-size:11.5px;color:var(--faint);text-align:right}
.dim.indispo .dnom,.dim.indispo .dval{color:var(--faint);opacity:.65}
.plafond{display:inline-block;font-size:11.5px;padding:.22em .5em;border-radius:5px;
  background:var(--r-f-bg);color:var(--r-f);border:1px solid currentColor;margin:2px 4px 2px 0}

/* Tableau compact inséré dans un bloc de méthodologie (résultat de validation).
   Il doit rester lisible sur téléphone : le conteneur défile horizontalement
   plutôt que d'élargir la page — une page qui déborde latéralement est cassée,
   un tableau qui défile ne l'est pas. */
.mini-table{width:100%;border-collapse:collapse;margin:12px 0 14px;font-size:13px;
  font-variant-numeric:tabular-nums;display:block;overflow-x:auto}
.mini-table th{text-align:right;color:var(--muted);font-weight:600;
  padding:5px 10px;border-bottom:1px solid var(--border);white-space:nowrap}
.mini-table td{text-align:right;padding:5px 10px;
  border-bottom:1px solid var(--border);white-space:nowrap}
.mini-table th:first-child,.mini-table td:first-child{text-align:left}
.mini-table tr:last-child td{border-bottom:none}
