/* ============================================================================
   HEIR, Confidential Dossier
   Editorial off-white · Fraunces (display) + IBM Plex Mono (data) · oxblood
   A printed private-intelligence brief, not a SaaS dashboard.
   ========================================================================== */

@import url("../fonts/fonts.a30a8975a896.css");

:root {
  --paper:      #f4f1ea;   /* warm off-white sheet            */
  --paper-deep: #ece6d8;   /* recessed panel                  */
  --paper-edge: #e6dfce;
  --ink:        #14110d;   /* near-black, warm                */
  --ink-soft:   #4f483c;   /* muted body / captions           */
  --ink-faint:  #8a8170;   /* metadata, source refs           */
  --rule:       #d7cfbd;   /* hairlines                       */
  --rule-bold:  #b9ad94;
  --oxblood:    #6b1f2b;   /* the single accent               */
  --oxblood-dk: #4c141d;
  --field:      #fbf9f3;

  --serif: "Fraunces", "Hoefler Text", Georgia, serif;
  --mono:  "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --maxw: 1120px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: #0d0f12;                 /* flat charcoal, no gradient (an AI tell) */
  color: #e6e8eb;
  font-family: var(--mono);            /* mono-driven instrument; the fiche re-asserts serif */
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  line-height: 1.55;
  padding: 0;
}

/* ── Mono label helper: the "intelligence report" voice ─────────────────── */
.kicker, .lbl, .rail h3, .sec-no, .chip, .meta-mono,
.score-cap, .factor-name, .src-list li, .field-note, .toolbar a {
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.66rem;
  font-weight: 500;
}

a { color: var(--oxblood); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ============================================================================
   THE SHEET
   ========================================================================== */
.sheet {
  max-width: var(--maxw);
  margin: 26px auto;
  background: var(--paper);
  border: 1px solid #c9bfa6;
  padding: 54px 64px 40px;
  position: relative;
  font-family: var(--serif);          /* the fiche/PDF stays the light printed dossier */
}

/* ── Masthead ───────────────────────────────────────────────────────────── */
.masthead {
  display: flex; justify-content: space-between; align-items: flex-end;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--ink);
  position: relative;
}
.masthead::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -4px;
  border-bottom: 1px solid var(--ink);
}
.wordmark {
  font-family: var(--serif); font-weight: 600;
  font-size: 1.5rem; letter-spacing: 0.34em; margin: 0;
  text-indent: 0.34em;
}
.wordmark .h { color: var(--oxblood); }
.masthead .tag {
  font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--ink-faint); margin-top: 4px;
}
.masthead .right { text-align: right; }
.chip {
  display: inline-block; color: var(--oxblood);
  border: 1px solid var(--oxblood); border-radius: 1px;
  padding: 3px 8px 2px; letter-spacing: 0.22em; font-size: 0.6rem;
}
.masthead .ref { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint);
  letter-spacing: 0.08em; margin-top: 8px; }

/* ── Title block ────────────────────────────────────────────────────────── */
.titleblock {
  display: grid; grid-template-columns: 1fr auto; gap: 48px;
  align-items: end; padding: 30px 0 26px;
  border-bottom: 1px solid var(--rule);
}
.kicker { color: var(--oxblood); margin: 0 0 12px; }
.titleblock h1 {
  font-family: var(--serif);
  font-weight: 460;
  font-size: clamp(2.2rem, 4.6vw, 3.6rem);
  line-height: 1.02; letter-spacing: -0.012em; margin: 0;
  font-variation-settings: "opsz" 144, "SOFT" 0, "WONK" 0;
}
.titleblock .sub {
  margin: 14px 0 0; color: var(--ink-soft);
  font-family: var(--mono); font-size: 0.74rem; letter-spacing: 0.04em;
  text-transform: none;
}
.titleblock .sub b { color: var(--ink); font-weight: 600; }

/* ── Score panel ────────────────────────────────────────────────────────── */
.scorebox { text-align: right; min-width: 230px; }
.score-cap { color: var(--ink-faint); margin: 0 0 6px; }
.score-num {
  font-family: var(--serif); font-weight: 500; line-height: 0.9;
  font-size: 5.2rem; letter-spacing: -0.03em;
  font-variation-settings: "opsz" 144;
}
.score-num .den { font-size: 1.4rem; color: var(--ink-faint); font-weight: 400; letter-spacing: 0; }
.band {
  display: inline-block; margin-top: 4px; padding: 4px 10px 3px;
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.2em;
  font-size: 0.62rem; border: 1px solid currentColor; border-radius: 1px;
}
.band.brulant { color: var(--oxblood); background: rgba(107,31,43,0.06); }
.band.chaud   { color: var(--oxblood); }
.band.tiede   { color: var(--ink-soft); }
.band.froid   { color: var(--ink-faint); }

.meter { margin-top: 14px; height: 6px; background: var(--paper-deep);
  border: 1px solid var(--rule); border-radius: 1px; overflow: hidden; }
.meter > span { display: block; height: 100%;
  background: repeating-linear-gradient(90deg, var(--oxblood) 0 6px, var(--oxblood-dk) 6px 7px); }

/* ============================================================================
   BODY GRID, left rail (facts, mono) + main column (prose, serif)
   ========================================================================== */
.grid {
  display: grid; grid-template-columns: 256px 1fr; gap: 0;
  margin-top: 30px;
}
.rail { padding-right: 32px; border-right: 1px solid var(--rule); }
.body { padding-left: 40px; }

.rail .block { padding: 0 0 22px; margin-bottom: 22px; border-bottom: 1px solid var(--rule); }
.rail .block:last-child { border-bottom: 0; }
.rail h3 { color: var(--oxblood); margin: 0 0 12px; }
.rail dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; }
.rail dt { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.12em; color: var(--ink-faint); align-self: start; padding-top: 2px; }
.rail dd { margin: 0; font-family: var(--mono); font-size: 0.78rem; color: var(--ink);
  line-height: 1.45; }
.rail dd.big { font-size: 0.92rem; }

.persons { list-style: none; margin: 0; padding: 0; }
.persons li { padding: 7px 0; border-bottom: 1px dotted var(--rule); }
.persons li:last-child { border-bottom: 0; }
.persons .nm { font-family: var(--serif); font-size: 0.95rem; font-weight: 500; }
.persons .rl { font-family: var(--mono); font-size: 0.62rem; text-transform: uppercase;
  letter-spacing: 0.1em; color: var(--ink-faint); }
.persons .age { color: var(--oxblood); }

.comptes { width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 0.72rem; }
.comptes th { text-align: right; font-weight: 500; color: var(--ink-faint);
  font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.1em;
  padding: 0 0 6px; border-bottom: 1px solid var(--rule); }
.comptes th:first-child { text-align: left; }
.comptes td { text-align: right; padding: 5px 0; border-bottom: 1px dotted var(--rule); }
.comptes td:first-child { text-align: left; color: var(--ink-faint); }

.signal-list { list-style: none; margin: 0; padding: 0; }
.signal-list li { padding: 6px 0; border-bottom: 1px dotted var(--rule);
  font-family: var(--mono); font-size: 0.7rem; line-height: 1.4; color: var(--ink-soft); }
.signal-list li:last-child { border-bottom: 0; }
.signal-list .d { color: var(--oxblood); }

/* ── Main prose sections ────────────────────────────────────────────────── */
.sec { margin-bottom: 30px; }
.sec-head { display: flex; align-items: baseline; gap: 12px; margin: 0 0 12px;
  border-bottom: 1px solid var(--rule); padding-bottom: 8px; }
.sec-no { color: var(--oxblood); }
.sec-title { font-family: var(--serif); font-weight: 560; font-size: 1.12rem;
  letter-spacing: 0.01em; margin: 0; }
.sec p { margin: 0 0 10px; font-size: 1.04rem; color: var(--ink); }
.sec .lead { font-size: 1.14rem; line-height: 1.55; }
.sec .muted { color: var(--ink-soft); }

/* succession, the key fact, given weight */
.keyfact { background: var(--paper-deep); border-left: 2px solid var(--oxblood);
  padding: 16px 20px; margin: 0; }
.keyfact .status { font-family: var(--mono); text-transform: uppercase;
  letter-spacing: 0.16em; font-size: 0.68rem; color: var(--oxblood);
  display: block; margin-bottom: 8px; }

/* pourquoi maintenant, factor list with point chips */
.reasons { list-style: none; margin: 0; padding: 0; }
.reasons li { display: grid; grid-template-columns: 22px 1fr; gap: 12px;
  padding: 9px 0; border-bottom: 1px solid var(--rule); align-items: baseline; }
.reasons li:last-child { border-bottom: 0; }
.reasons .mk { color: var(--oxblood); font-family: var(--mono); font-size: 0.8rem; }
.reasons p { margin: 0; font-size: 1.0rem; }

/* angle d'approche, boxed brief */
.angle { border: 1px solid var(--rule-bold); background: var(--field); }
.angle .row { padding: 14px 20px; border-bottom: 1px solid var(--rule); }
.angle .row:last-child { border-bottom: 0; }
.angle .lbl { color: var(--ink-faint); display: block; margin-bottom: 6px; }
.angle .registre b { font-family: var(--serif); font-weight: 600; font-size: 1.05rem;
  font-family: var(--serif); text-transform: none; letter-spacing: 0; color: var(--oxblood); }
.angle .avoid { color: var(--ink-soft); }
.angle .avoid .lbl { color: var(--oxblood); }

.channels { list-style: none; margin: 0; padding: 0; }
.channels li { padding: 7px 0; border-bottom: 1px dotted var(--rule);
  font-family: var(--mono); font-size: 0.78rem; color: var(--ink-soft); }
.channels li:last-child { border-bottom: 0; }

/* ============================================================================
   SCORE DECOMPOSITION
   ========================================================================== */
.decomp { margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--ink); }
.decomp .sec-head { border: 0; }
.factors { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; }
.factor { padding: 12px 0; border-bottom: 1px solid var(--rule); }
.factor .top { display: flex; justify-content: space-between; align-items: baseline; }
.factor-name { color: var(--ink); letter-spacing: 0.12em; }
.factor .pts { font-family: var(--mono); font-size: 0.74rem; color: var(--oxblood); }
.factor .pts .m { color: var(--ink-faint); }
.factor .bar { height: 4px; background: var(--paper-deep); border: 1px solid var(--rule);
  margin: 8px 0 7px; }
.factor .bar > span { display: block; height: 100%; background: var(--oxblood); }
.factor .bar.zero > span { background: var(--rule-bold); }
.factor .det { font-family: var(--serif); font-size: 0.9rem; color: var(--ink-soft);
  margin: 0; line-height: 1.45; }

/* ============================================================================
   FOOTER, sources, provenance, rgpd
   ========================================================================== */
.colophon { margin-top: 38px; padding-top: 20px; border-top: 1px solid var(--rule); }
.colophon .cols { display: grid; grid-template-columns: 2fr 1fr; gap: 40px; }
.colophon h4 { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.62rem; color: var(--ink-faint); font-weight: 500; margin: 0 0 10px; }
.src-list { list-style: none; margin: 0; padding: 0; counter-reset: src; }
.src-list li { counter-increment: src; padding: 5px 0; letter-spacing: 0.02em;
  text-transform: none; font-size: 0.68rem; color: var(--ink-soft);
  border-bottom: 1px dotted var(--rule); }
.src-list li::before { content: "[" counter(src) "] "; color: var(--oxblood); }
.src-list li:last-child { border-bottom: 0; }
.rgpd { font-family: var(--mono); font-size: 0.6rem; line-height: 1.7; color: var(--ink-faint);
  letter-spacing: 0.02em; }
.rgpd .demo { color: var(--oxblood); }
.colophon .sign { margin-top: 18px; font-family: var(--mono); font-size: 0.58rem;
  color: var(--ink-faint); letter-spacing: 0.1em; text-transform: uppercase;
  display: flex; justify-content: space-between; border-top: 1px solid var(--rule);
  padding-top: 12px; }

/* ============================================================================
   TOOLBAR (screen only)
   ========================================================================== */
.toolbar { position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%);
  display: flex; gap: 2px; background: var(--ink); border-radius: 2px;
  box-shadow: 0 10px 30px -10px rgba(20,17,13,0.6); padding: 4px; z-index: 50; }
.toolbar a, .toolbar button { font-family: var(--mono); text-transform: uppercase;
  letter-spacing: 0.16em; font-size: 0.62rem; color: var(--paper);
  background: transparent; border: 0; padding: 9px 16px; cursor: pointer;
  text-decoration: none; }
.toolbar a:hover, .toolbar button:hover { background: rgba(244,241,234,0.12); text-decoration: none; }
.toolbar .accent { color: #e8b9a0; }

@media (max-width: 860px) {
  .grid { grid-template-columns: 1fr; }
  .rail { border-right: 0; border-bottom: 1px solid var(--rule); padding: 0 0 20px; margin-bottom: 24px; }
  .body { padding-left: 0; }
  .titleblock { grid-template-columns: 1fr; gap: 24px; }
  .scorebox { text-align: left; }
  .factors { grid-template-columns: 1fr; }
  .colophon .cols { grid-template-columns: 1fr; }
  .sheet { padding: 34px 24px; }
}

/* ============================================================================
   CONSOLE (index), intake + ranked pipeline
   ========================================================================== */
.console { padding: 40px 0 8px; }
.console .kicker { color: var(--oxblood); margin-bottom: 18px; }
.console h1 {
  font-family: var(--serif); font-weight: 420;
  font-size: clamp(2rem, 4.4vw, 3.3rem); line-height: 1.04;
  letter-spacing: -0.012em; margin: 0 0 8px; max-width: 18ch;
  font-variation-settings: "opsz" 144;
}
.console h1 em { font-style: italic; color: var(--oxblood); font-variation-settings: "opsz" 144, "SOFT" 40; }
.console .deck { color: var(--ink-soft); font-size: 1.06rem; max-width: 56ch; margin: 0 0 28px; }

.searchbar { display: flex; gap: 0; border: 1px solid var(--ink);
  background: var(--field); max-width: 640px; }
.searchbar input { flex: 1; border: 0; background: transparent; outline: none;
  font-family: var(--mono); font-size: 0.92rem; letter-spacing: 0.02em;
  color: var(--ink); padding: 16px 18px; }
.searchbar input::placeholder { color: var(--ink-faint); }
.searchbar button { border: 0; background: var(--ink); color: var(--paper);
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.66rem; padding: 0 26px; cursor: pointer; }
.searchbar button:hover { background: var(--oxblood); }
.search-note { font-family: var(--mono); font-size: 0.66rem; color: var(--ink-faint);
  letter-spacing: 0.04em; margin: 12px 0 0; }
.search-note a { letter-spacing: 0; }

.flash { font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.02em;
  color: var(--oxblood); border: 1px solid var(--oxblood); background: rgba(107,31,43,0.05);
  padding: 12px 16px; margin: 0 0 22px; max-width: 640px; }

/* ranked pipeline table */
.pipeline { margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--ink); }
.pipeline .sec-head { border: 0; margin-bottom: 6px; }
.ptable { width: 100%; border-collapse: collapse; }
.ptable thead th { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.58rem; color: var(--ink-faint); font-weight: 500; text-align: left;
  padding: 8px 12px; border-bottom: 1px solid var(--rule-bold); }
.ptable thead th.num, .ptable td.num { text-align: right; }
.ptable tbody tr { border-bottom: 1px solid var(--rule); cursor: pointer; }
.ptable tbody tr:hover { background: var(--paper-deep); }
.ptable td { padding: 14px 12px; vertical-align: baseline; }
.ptable .rank { font-family: var(--mono); font-size: 0.7rem; color: var(--ink-faint); }
.ptable .name { font-family: var(--serif); font-size: 1.12rem; font-weight: 520; }
.ptable .name a { color: var(--ink); }
.ptable .name a:hover { color: var(--oxblood); text-decoration: none; }
.ptable .sub { font-family: var(--mono); font-size: 0.62rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-faint); margin-top: 3px; }
.ptable .dir { font-family: var(--mono); font-size: 0.74rem; color: var(--ink-soft); }
.ptable .dir .age { color: var(--oxblood); }
.ptable .sc { font-family: var(--serif); font-size: 1.5rem; font-weight: 520; text-align: right;
  font-variation-settings: "opsz" 144; }
.ptable .sc .den { font-size: 0.7rem; color: var(--ink-faint); }
.ptable .bandcell { text-align: right; }
.empty { font-family: var(--mono); font-size: 0.74rem; color: var(--ink-faint);
  padding: 24px 0; letter-spacing: 0.04em; }

.foot-rgpd { margin-top: 40px; padding-top: 16px; border-top: 1px solid var(--rule);
  font-family: var(--mono); font-size: 0.58rem; line-height: 1.7; color: var(--ink-faint);
  letter-spacing: 0.03em; }

/* ============================================================================
   THESIS, intake form + console + detail
   ========================================================================== */
.thesis-form { border: 1px solid var(--rule-bold); background: var(--field); margin-top: 8px; }
.tf-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.tf-grid .f { padding: 14px 18px; border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.tf-grid .f.wide { grid-column: span 2; }
.tf-grid .f.full { grid-column: 1 / -1; border-right: 0; }
.tf-grid label { display: block; font-family: var(--mono); text-transform: uppercase;
  letter-spacing: 0.14em; font-size: 0.58rem; color: var(--ink-faint); margin-bottom: 7px; }
.tf-grid input[type=text], .tf-grid input[type=number], .tf-grid select {
  width: 100%; border: 0; background: transparent; outline: none;
  font-family: var(--mono); font-size: 0.86rem; color: var(--ink); padding: 0; }
.tf-grid input::placeholder { color: var(--ink-faint); }
.tf-grid .check { display: flex; align-items: center; gap: 8px; }
.tf-grid .check input { width: auto; }
.tf-grid .check label { margin: 0; }
.tf-submit { display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px; }
.tf-submit .hint { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint);
  letter-spacing: 0.04em; }
.tf-submit button { border: 0; background: var(--ink); color: var(--paper);
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.66rem; padding: 12px 28px; cursor: pointer; }
.tf-submit button:hover { background: var(--oxblood); }

/* criteria chips */
.crits { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.crit { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.1em; color: var(--ink-soft); border: 1px solid var(--rule-bold);
  padding: 4px 9px; background: var(--paper); }
.crit.accent { color: var(--oxblood); border-color: var(--oxblood); }

/* thesis list */
.thesis-list { list-style: none; margin: 18px 0 0; padding: 0; }
.thesis-list li { display: grid; grid-template-columns: 1fr auto; gap: 20px;
  align-items: center; padding: 16px 0; border-bottom: 1px solid var(--rule); }
.thesis-list .tl-name { font-family: var(--serif); font-size: 1.2rem; font-weight: 520; }
.thesis-list .tl-name a { color: var(--ink); }
.thesis-list .tl-name a:hover { color: var(--oxblood); text-decoration: none; }
.thesis-list .tl-crit { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint);
  text-transform: uppercase; letter-spacing: 0.08em; margin-top: 4px; }
.thesis-list .tl-stat { text-align: right; font-family: var(--mono); font-size: 0.66rem;
  color: var(--ink-soft); letter-spacing: 0.04em; }
.thesis-list .tl-stat b { font-family: var(--serif); font-size: 1.5rem; color: var(--ink);
  font-variation-settings: "opsz" 144; }

/* stats bar (detail) */
.statsbar { display: flex; flex-wrap: wrap; gap: 0; border: 1px solid var(--rule-bold);
  background: var(--field); margin: 18px 0 0; }
.statsbar .s { padding: 12px 20px; border-right: 1px solid var(--rule); }
.statsbar .s:last-child { border-right: 0; }
.statsbar .k { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.12em;
  font-size: 0.56rem; color: var(--ink-faint); }
.statsbar .v { font-family: var(--serif); font-size: 1.4rem; font-weight: 520; margin-top: 2px;
  font-variation-settings: "opsz" 144; }
.statsbar .v small { font-family: var(--mono); font-size: 0.66rem; color: var(--ink-faint); }

.thead-row { display: flex; justify-content: space-between; align-items: baseline; }
.btn-run { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.6rem; color: var(--paper); background: var(--ink); border: 0;
  padding: 9px 18px; cursor: pointer; }
.btn-run:hover { background: var(--oxblood); }
.act { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.12em; }
.act.has { color: var(--oxblood); }
.flash.ok { color: var(--ink); border-color: var(--rule-bold); background: var(--paper-deep); }

/* quick single search, compact */
.quick { margin-top: 30px; padding-top: 20px; border-top: 1px solid var(--rule); }
.quick .searchbar { max-width: 520px; }

/* ============================================================================
   AGENT, conversational sourcing
   ========================================================================== */
.agent-hero { padding: 36px 0 10px; }
.agent-hero .kicker { color: var(--oxblood); margin-bottom: 16px; }
.agent-hero h1 { font-family: var(--serif); font-weight: 420; font-size: clamp(1.9rem,4vw,3rem);
  line-height: 1.05; letter-spacing: -0.012em; margin: 0 0 22px; max-width: 20ch;
  font-variation-settings: "opsz" 144; }
.agent-hero h1 em { font-style: italic; color: var(--oxblood); }
.agent-input { border: 1px solid var(--ink); background: var(--field); }
.agent-input textarea { width: 100%; border: 0; background: transparent; outline: none; resize: vertical;
  font-family: var(--serif); font-size: 1.1rem; line-height: 1.5; color: var(--ink);
  padding: 18px 20px; min-height: 84px; }
.agent-input textarea::placeholder { color: var(--ink-faint); }
.agent-input .bar { display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid var(--rule); padding: 10px 14px 10px 20px; }
.agent-input .hint { font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.04em; color: var(--ink-faint); }
.agent-input button { border: 0; background: var(--ink); color: var(--paper);
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.66rem;
  padding: 12px 26px; cursor: pointer; }
.agent-input button:hover { background: var(--oxblood); }

.agent-thread { margin: 30px 0 8px; display: flex; flex-direction: column; gap: 12px; }
.bubble { max-width: 80%; padding: 14px 18px; font-size: 1rem; line-height: 1.5; }
.bubble.user { align-self: flex-end; background: var(--ink); color: var(--paper);
  font-family: var(--mono); font-size: 0.84rem; letter-spacing: 0.01em; }
.bubble.agent { align-self: flex-start; background: var(--paper-deep); border-left: 2px solid var(--oxblood);
  max-width: 88%; }
.bubble.agent .who { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.56rem; color: var(--oxblood); display: block; margin-bottom: 6px; }
.bubble.agent .meta { font-family: var(--mono); font-size: 0.66rem; color: var(--ink-faint);
  letter-spacing: 0.03em; margin: 8px 0 4px; }

.results { margin-top: 24px; border-top: 1px solid var(--ink); }
.results .sec-head { border: 0; margin: 14px 0 4px; }
.prospect { display: grid; grid-template-columns: 30px 1fr auto; gap: 18px; align-items: start;
  padding: 18px 0; border-bottom: 1px solid var(--rule); }
.prospect .p-rank { font-family: var(--mono); font-size: 0.72rem; color: var(--ink-faint); padding-top: 4px; }
.prospect .p-name { font-family: var(--serif); font-size: 1.18rem; font-weight: 520; }
.prospect .p-name a { color: var(--ink); }
.prospect .p-name a:hover { color: var(--oxblood); text-decoration: none; }
.prospect .p-sub { font-family: var(--mono); font-size: 0.64rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-faint); margin: 4px 0; }
.prospect .p-verdict { font-family: var(--serif); font-size: 1rem; color: var(--ink); margin-top: 6px; line-height: 1.45; }
.prospect .p-side { text-align: right; min-width: 150px; }
.prospect .p-side .sc { font-family: var(--serif); font-size: 1.5rem; font-weight: 520; display: block;
  font-variation-settings: "opsz" 144; }
.prospect .p-side .sc .den { font-size: 0.6rem; color: var(--ink-faint); }
.prospect .p-side .act { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.12em; display: inline-block; margin-top: 4px; }
.prospect .p-side .act.has { color: var(--oxblood); }
.vbadge { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.12em;
  padding: 2px 7px; border: 1px solid currentColor; vertical-align: middle; margin-left: 6px; }
.vbadge.prio { color: var(--oxblood); }
.vbadge.suivre { color: var(--ink-soft); }
.vbadge.ecarter { color: var(--ink-faint); }

/* outcome buttons, the flywheel */
.outcomes { display: flex; flex-wrap: wrap; gap: 3px; justify-content: flex-end; margin-top: 10px; }
.outcomes button { font-family: var(--mono); font-size: 0.54rem; text-transform: uppercase;
  letter-spacing: 0.08em; padding: 4px 7px; border: 1px solid var(--rule-bold); background: var(--paper);
  color: var(--ink-soft); cursor: pointer; }
.outcomes button:hover { border-color: var(--ink); color: var(--ink); }
.outcomes button.on { background: var(--oxblood); color: var(--paper); border-color: var(--oxblood); }
.outcomes button.on.refused { background: var(--ink-faint); border-color: var(--ink-faint); }

/* ============================================================================
   LANDING (public), show the depth
   ========================================================================== */
.land-hero { display: grid; grid-template-columns: 1.05fr 1fr; gap: 50px; align-items: center;
  padding: 40px 0 30px; }
.land-hero h1 { font-family: var(--serif); font-weight: 420; font-size: clamp(2.2rem,4.4vw,3.6rem);
  line-height: 1.04; letter-spacing: -0.014em; margin: 14px 0 18px; font-variation-settings: "opsz" 144; }
.land-hero h1 em { font-style: italic; color: var(--oxblood); }
.land-hero .deck { font-size: 1.08rem; color: var(--ink-soft); max-width: 46ch; margin: 0 0 26px; }
.land-cta { display: flex; gap: 10px; }
.land-cta a { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem; padding: 14px 24px; text-decoration: none; }
.land-cta a.primary { background: var(--ink); color: var(--paper); }
.land-cta a.primary:hover { background: var(--oxblood); }
.land-cta a.ghost { border: 1px solid var(--ink); color: var(--ink); }

/* the demo dossier card */
.demo-card { border: 1px solid var(--rule-bold); background: var(--paper);
  box-shadow: 0 24px 60px -30px rgba(20,17,13,0.5); position: relative;
  animation: rise .7s cubic-bezier(.2,.7,.2,1) both; }
.demo-card .dc-head { display: flex; justify-content: space-between; align-items: flex-start;
  padding: 18px 22px 14px; border-bottom: 1px solid var(--rule); }
.demo-card .dc-kick { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.54rem; color: var(--oxblood); }
.demo-card .dc-name { font-family: var(--serif); font-size: 1.5rem; font-weight: 520; margin-top: 4px;
  font-variation-settings: "opsz" 144; }
.demo-card .dc-score { font-family: var(--serif); font-size: 2.6rem; font-weight: 500; line-height: 0.9;
  font-variation-settings: "opsz" 144; }
.demo-card .dc-score .den { font-size: 0.8rem; color: var(--ink-faint); }
.demo-card .dc-body { padding: 16px 22px 20px; }
.demo-card .dc-verdict { font-family: var(--serif); font-size: 1.04rem; line-height: 1.5; }
.demo-card .dc-insight { background: var(--paper-deep); border-left: 2px solid var(--oxblood);
  padding: 12px 16px; margin: 14px 0 0; font-size: 0.95rem; line-height: 1.5; }
.demo-card .dc-insight .l { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.54rem; color: var(--oxblood); display: block; margin-bottom: 5px; }
.demo-card .dc-facts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.demo-card .dc-facts .f { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-soft); border: 1px solid var(--rule-bold); padding: 4px 8px; }
.demo-card .dc-blur { position: absolute; inset: auto 0 0 0; height: 70px;
  background: linear-gradient(transparent, var(--paper)); pointer-events: none; }

.pillars { display: grid; grid-template-columns: repeat(3,1fr); gap: 0; margin-top: 36px;
  border-top: 1px solid var(--ink); }
.pillars .p { padding: 22px 24px 22px 0; border-right: 1px solid var(--rule); }
.pillars .p:last-child { border-right: 0; padding-right: 0; }
.pillars .p h3 { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.6rem; color: var(--oxblood); margin: 0 0 8px; }
.pillars .p p { font-size: 0.95rem; color: var(--ink-soft); margin: 0; line-height: 1.5; }

.auth-wrap { max-width: 420px; margin: 50px auto; }
.auth-wrap h2 { font-family: var(--serif); font-weight: 460; font-size: 1.8rem; margin: 0 0 6px;
  font-variation-settings: "opsz" 144; }
.auth-wrap .deck { color: var(--ink-soft); margin: 0 0 24px; font-size: 0.95rem; }
.auth-form label { display: block; font-family: var(--mono); text-transform: uppercase;
  letter-spacing: 0.12em; font-size: 0.56rem; color: var(--ink-faint); margin: 14px 0 6px; }
.auth-form input { width: 100%; border: 1px solid var(--rule-bold); background: var(--field);
  font-family: var(--mono); font-size: 0.9rem; color: var(--ink); padding: 12px 14px; outline: none; }
.auth-form input:focus { border-color: var(--ink); }
.auth-form button { width: 100%; margin-top: 22px; border: 0; background: var(--ink); color: var(--paper);
  font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.66rem;
  padding: 14px; cursor: pointer; }
.auth-form button:hover { background: var(--oxblood); }
.auth-wrap .alt { margin-top: 18px; font-family: var(--mono); font-size: 0.66rem; color: var(--ink-faint); }

@media (max-width: 820px) { .land-hero { grid-template-columns: 1fr; } .pillars { grid-template-columns: 1fr; }
  .pillars .p { border-right: 0; border-bottom: 1px solid var(--rule); padding-right: 0; } }

/* logout, POST form styled as an inline ref link */
.linkform { display: inline; }
.linkbtn { background: none; border: 0; padding: 0; margin: 0; cursor: pointer; font: inherit;
  color: inherit; }
.ref .linkbtn:hover { color: var(--oxblood); }

/* billing (stub) */
.stub-note { font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--oxblood); border: 1px dashed var(--oxblood);
  padding: 8px 12px; display: inline-block; margin: 4px 0 22px; }
.plan-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; margin-top: 8px; }
.plan { border: 1px solid var(--rule-bold); padding: 22px 20px; display: flex; flex-direction: column;
  background: var(--paper); }
.plan.current { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.plan .pname { font-family: var(--serif); font-size: 1.4rem; font-weight: 520;
  font-variation-settings: "opsz" 144; }
.plan .ptag { color: var(--ink-soft); font-size: 0.88rem; margin: 4px 0 14px; min-height: 2.4em; }
.plan .pprice { font-family: var(--serif); font-size: 1.6rem; margin-bottom: 16px; }
.plan ul { list-style: none; padding: 0; margin: 0 0 20px; flex: 1; }
.plan ul li { font-size: 0.9rem; color: var(--ink-soft); padding: 6px 0 6px 18px; position: relative;
  border-top: 1px solid var(--rule); }
.plan ul li:before { content: "›"; position: absolute; left: 0; color: var(--oxblood); }
.plan button, .plan .badge-current { width: 100%; padding: 12px; font-family: var(--mono);
  text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.62rem; text-align: center; }
.plan button { border: 1px solid var(--ink); background: var(--ink); color: var(--paper); cursor: pointer; }
.plan button:hover { background: var(--oxblood); border-color: var(--oxblood); }
.plan .badge-current { border: 1px solid var(--rule-bold); color: var(--ink-faint); }
@media (max-width: 820px) { .plan-grid { grid-template-columns: 1fr; } }

/* ============================================================================
   ALERTS, the deal radar (living flow)
   ========================================================================== */
.alert-list { list-style: none; margin: 18px 0 0; padding: 0; }
.alert-list li { display: grid; grid-template-columns: 8px 1fr auto; gap: 16px; align-items: start;
  padding: 16px 0; border-bottom: 1px solid var(--rule); }
.alert-list li.unread { background: linear-gradient(90deg, rgba(107,31,43,0.04), transparent 40%); }
.alert-list .dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 7px; background: var(--ink-faint); }
.alert-list .dot.high { background: var(--oxblood); }
.alert-list .dot.medium { background: var(--ink-soft); }
.alert-list .a-title { font-family: var(--serif); font-size: 1.08rem; font-weight: 520; }
.alert-list .a-detail { font-family: var(--mono); font-size: 0.7rem; color: var(--ink-soft);
  letter-spacing: 0.02em; margin-top: 4px; line-height: 1.5; }
.alert-list .a-meta { text-align: right; font-family: var(--mono); font-size: 0.58rem;
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-faint); white-space: nowrap; }
.alert-list .a-meta a { display: block; margin-top: 6px; }
.sev-pill { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.12em;
  padding: 2px 6px; border: 1px solid currentColor; }
.sev-pill.high { color: var(--oxblood); }
.alert-badge { font-family: var(--mono); font-size: 0.58rem; letter-spacing: 0.1em; color: var(--oxblood);
  border: 1px solid var(--oxblood); padding: 2px 7px; text-transform: uppercase; }
.watch { cursor: pointer; color: var(--ink-faint); background: 0; border: 0; font-size: 0.8rem; }
.watch.on { color: var(--oxblood); }
.monitor-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  border: 1px solid var(--rule-bold); background: var(--field); padding: 12px 18px; margin: 18px 0 0; }
.monitor-bar .k { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.58rem; color: var(--ink-faint); }
.monitor-bar form { display: inline; }
.monitor-bar button { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.6rem; padding: 8px 14px; border: 1px solid var(--ink); background: var(--paper);
  color: var(--ink); cursor: pointer; }
.monitor-bar button.go { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.monitor-bar button.go:hover { background: var(--oxblood); border-color: var(--oxblood); }

/* ============================================================================
   UX LAYER, toasts, progress, chips, tooltips, skeletons
   ========================================================================== */
#toasts { position: fixed; bottom: 22px; right: 22px; z-index: 200; display: flex;
  flex-direction: column; gap: 8px; align-items: flex-end; }
.toast { background: var(--ink); color: var(--paper); font-family: var(--mono);
  font-size: 0.68rem; letter-spacing: 0.04em; padding: 11px 16px; border-radius: 1px;
  box-shadow: 0 10px 30px -10px rgba(20,17,13,0.6); opacity: 0; transform: translateY(8px);
  transition: opacity .25s, transform .25s; max-width: 320px; }
.toast.in { opacity: 1; transform: none; }
.toast.error { background: var(--oxblood); }

/* agent submit overlay (instant feedback before redirect) */
#agent-overlay { position: fixed; inset: 0; background: rgba(244,241,234,0.86);
  backdrop-filter: blur(2px); z-index: 150; display: none; align-items: center; justify-content: center; }
#agent-overlay.show { display: flex; }
#agent-overlay .spin { width: 34px; height: 34px; border: 2px solid var(--rule-bold);
  border-top-color: var(--oxblood); border-radius: 50%; animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* running page */
.running { max-width: 620px; margin: 60px auto; text-align: center; animation: rise .5s both; }
.running .spin { width: 40px; height: 40px; border: 2px solid var(--rule-bold);
  border-top-color: var(--oxblood); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 26px; }
.running h2 { font-family: var(--serif); font-weight: 460; font-size: 1.7rem; margin: 0 0 8px;
  font-variation-settings: "opsz" 144; }
.running #run-msg { font-family: var(--mono); font-size: 0.8rem; color: var(--ink-soft);
  letter-spacing: 0.03em; min-height: 1.2em; }
.run-track { height: 4px; background: var(--paper-deep); border: 1px solid var(--rule);
  margin: 22px 0; overflow: hidden; }
.run-track > span { display: block; height: 100%; width: 5%; background: var(--oxblood);
  transition: width .6s cubic-bezier(.3,.7,.3,1); }
#run-steps { list-style: none; margin: 18px 0 0; padding: 0; text-align: left;
  font-family: var(--mono); font-size: 0.66rem; color: var(--ink-faint); }
#run-steps li { padding: 5px 0; border-bottom: 1px dotted var(--rule); }
#run-steps li::before { content: "✓ "; color: var(--oxblood); }

/* query suggestion chips */
.suggests { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.suggests .chip-q { font-family: var(--mono); font-size: 0.64rem; letter-spacing: 0.02em;
  color: var(--ink-soft); border: 1px solid var(--rule-bold); background: var(--paper);
  padding: 7px 12px; cursor: pointer; text-transform: none; }
.suggests .chip-q:hover { border-color: var(--ink); color: var(--ink); }

/* tooltips (data-tip) */
[data-tip] { position: relative; border-bottom: 1px dotted var(--ink-faint); cursor: help; }
[data-tip]:hover::after { content: attr(data-tip); position: absolute; bottom: 130%; left: 0;
  background: var(--ink); color: var(--paper); font-family: var(--mono); font-size: 0.6rem;
  letter-spacing: 0.02em; padding: 7px 10px; width: max-content; max-width: 260px; white-space: normal;
  z-index: 60; box-shadow: 0 8px 24px -10px rgba(20,17,13,0.5); line-height: 1.4; }

/* copy affordance */
.cp { cursor: pointer; border-bottom: 1px dotted var(--ink-faint); }
.cp:hover { color: var(--oxblood); }

/* skeleton */
.skel { background: linear-gradient(90deg, var(--paper-deep) 25%, var(--paper-edge) 37%, var(--paper-deep) 63%);
  background-size: 400% 100%; animation: shimmer 1.3s ease infinite; height: 1em; border-radius: 1px; }
@keyframes shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }

/* modal (email draft) */
.modal-bg { position: fixed; inset: 0; background: rgba(20,17,13,0.4); z-index: 180;
  display: none; align-items: center; justify-content: center; padding: 24px; }
.modal-bg.show { display: flex; }
.modal { background: var(--paper); border: 1px solid var(--rule-bold); max-width: 640px; width: 100%;
  box-shadow: 0 30px 80px -30px rgba(20,17,13,0.6); animation: rise .4s both; }
.modal .m-head { display: flex; justify-content: space-between; align-items: center;
  padding: 16px 22px; border-bottom: 1px solid var(--rule); }
.modal .m-head h3 { font-family: var(--serif); font-size: 1.1rem; margin: 0; }
.modal .m-head .x { cursor: pointer; font-family: var(--mono); color: var(--ink-faint); border: 0; background: 0; font-size: 1rem; }
.modal .m-body { padding: 20px 22px; font-family: var(--serif); font-size: 1rem; line-height: 1.6;
  white-space: pre-wrap; max-height: 50vh; overflow: auto; }
.modal .m-foot { padding: 12px 22px; border-top: 1px solid var(--rule); text-align: right; }
.modal .m-foot button { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.62rem; padding: 10px 20px; border: 0; background: var(--ink); color: var(--paper); cursor: pointer; }
.modal .m-foot button:hover { background: var(--oxblood); }
.modal .m-loading { padding: 40px; text-align: center; }
.modal .m-loading .spin { width: 30px; height: 30px; border: 2px solid var(--rule-bold);
  border-top-color: var(--oxblood); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto; }

/* ============================================================================
   PRINT, the deliverable PDF (window.print → Save as PDF)
   ========================================================================== */
/* ============================================================================
   SOURCED EVIDENCE, every fact, its confidence, its register link
   ========================================================================== */
.evidence-head { display: flex; align-items: baseline; justify-content: space-between;
  gap: 10px; margin: 0 0 18px; padding-bottom: 12px; border-bottom: 2px solid var(--ink); }
.evidence-head .ev-count { font-family: var(--serif); font-size: 1.05rem; font-weight: 560; }
.evidence-head .ev-pct { font-family: var(--mono); font-size: 0.54rem; text-transform: uppercase;
  letter-spacing: 0.1em; color: #2f5d43; white-space: nowrap; }
.ev { display: block; }
.ev .ev-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  padding: 8px 0; border-bottom: 1px dotted var(--rule); }
.ev .ev-row:last-child { border-bottom: 0; }
.ev .ev-k { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--ink-faint); padding-top: 3px; flex: 0 0 36%; }
.ev .ev-v { text-align: right; flex: 1; min-width: 0; }
.ev .val { font-family: var(--mono); font-size: 0.8rem; color: var(--ink); display: block;
  word-break: break-word; line-height: 1.35; }
.src { font-family: var(--mono); font-size: 0.49rem; text-transform: uppercase; letter-spacing: 0.05em;
  text-decoration: none; white-space: nowrap; padding: 1px 5px 1px 4px; border: 1px solid;
  margin-top: 4px; display: inline-block; line-height: 1.4; }
.src .cdot { display: inline-block; width: 5px; height: 5px; border-radius: 50%; margin-right: 4px;
  vertical-align: middle; }
.src.verifie { color: #2f5d43; border-color: #c2d6c8; }      .src.verifie .cdot { background: #2f5d43; }
.src.probable { color: #8a611c; border-color: #e2cfa4; }     .src.probable .cdot { background: #8a611c; }
.src.non_verifie { color: var(--ink-faint); border-color: var(--rule-bold); border-style: dashed; }
.src.non_verifie .cdot { background: var(--ink-faint); }
.src:hover { background: var(--paper-deep); }
.analysis-note { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-faint); border: 1px dashed var(--rule-bold);
  padding: 8px 12px; margin: 0 0 24px; line-height: 1.5; }
.analysis-note b { color: var(--oxblood); }

/* the discreet "par Heir", turns a forwarded PDF into a distribution channel */
.print-brand { display: none; }

@page { size: A4; margin: 14mm 14mm 18mm; }
@media print {
  body { background: #fff; padding: 0; }
  .toolbar, .modal-bg { display: none !important; }
  .sheet { box-shadow: none; border: 0; max-width: none; margin: 0; padding: 0;
    animation: none; }
  .sheet::after { opacity: 0.05; }
  .sec, .factor, .keyfact, .angle, .ev-row, .block { break-inside: avoid; }
  .decomp { break-before: auto; }
  a { color: var(--ink); }
  .src { border-color: #ccc !important; }
  .print-brand { display: block; position: fixed; bottom: 4mm; left: 0; right: 0; text-align: center;
    font-family: var(--mono); font-size: 7pt; letter-spacing: 0.12em; color: #9a948a; }
  .print-brand b { color: var(--oxblood); font-weight: 600; }
}

/* ============================================================================
   APP SHELL, instrument-dense, dossier DNA extended. No AI tells: mono data,
   1px rules (no shadows), Fraunces+Plex only, restrained palette, no centered hero.
   ========================================================================== */
.app { max-width: 1180px; margin: 0 auto; padding: 0 30px 70px; }

/* slim sticky command bar (replaces the editorial masthead on working screens) */
.appbar { display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--ink); padding: 13px 0 11px; position: sticky; top: 0;
  background: var(--paper); z-index: 30; }
.appbar .brand { display: flex; align-items: baseline; gap: 16px; }
.appbar .mark { font-family: var(--serif); font-weight: 600; font-size: 1.02rem;
  letter-spacing: 3px; color: var(--ink); text-decoration: none; }
.appbar .mark .h { color: var(--oxblood); }
.appbar .seg { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.22em; color: var(--ink-faint); }
.appbar nav { display: flex; align-items: center; gap: 20px; font-family: var(--mono);
  font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.12em; }
.appbar nav a { color: var(--ink-soft); text-decoration: none; }
.appbar nav a:hover, .appbar nav a.on { color: var(--oxblood); }
.appbar nav a.on { position: relative; }
.appbar .org { color: var(--ink-faint); letter-spacing: 0.06em; }
.appbar .radar { color: var(--oxblood); }
.appbar .kbd { border: 1px solid var(--rule-bold); padding: 1px 6px; color: var(--ink-faint);
  font-size: 0.56rem; letter-spacing: 0.08em; }
.appbar .linkbtn { color: var(--ink-soft); }
.appbar .linkbtn:hover { color: var(--oxblood); }

/* command input, left-aligned instrument field, not a centered hero */
.command { margin-top: 26px; }
.command .label { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.22em; color: var(--oxblood); }
.command .lead { font-family: var(--serif); font-weight: 440; font-size: 1.55rem; margin: 7px 0 14px;
  letter-spacing: -0.01em; }
.command .lead em { font-style: italic; color: var(--oxblood); }
.command form { border: 1px solid var(--ink); background: var(--field); }
.command textarea { width: 100%; border: 0; background: transparent; outline: none; resize: vertical;
  font-family: var(--mono); font-size: 0.84rem; line-height: 1.55; color: var(--ink);
  padding: 14px 16px; min-height: 74px; }
.command textarea::placeholder { color: var(--ink-faint); }
.command .bar { display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid var(--rule); padding: 9px 12px 9px 16px; }
.command .hint { font-family: var(--mono); font-size: 0.58rem; letter-spacing: 0.04em; color: var(--ink-faint); }
.command button { border: 0; background: var(--ink); color: var(--paper); font-family: var(--mono);
  text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.6rem; padding: 9px 18px; cursor: pointer; }
.command button:hover { background: var(--oxblood); }
.suggest-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.suggest-row .q { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--ink-soft); border: 1px solid var(--rule-bold); padding: 4px 9px;
  cursor: pointer; }
.suggest-row .q:hover { border-color: var(--ink); color: var(--ink); }

/* interpretation readout, a ruled instrument strip, NOT chat bubbles */
.readout { border: 1px solid var(--rule-bold); border-left: 2px solid var(--oxblood);
  padding: 11px 15px; margin-top: 20px; }
.readout .q { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint);
  text-transform: uppercase; letter-spacing: 0.08em; }
.readout .interp { font-family: var(--serif); font-size: 1.08rem; margin: 5px 0 6px; }
.readout .crit { font-family: var(--mono); font-size: 0.6rem; color: var(--ink-soft);
  letter-spacing: 0.04em; }
.readout .crit a { color: var(--oxblood); text-decoration: none; }

/* the prospects ledger, dense, grouped by verdict */
.ledger { margin-top: 28px; }
.ledger .lhead { display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 1px solid var(--ink); padding-bottom: 7px; }
.ledger .lhead .t { font-family: var(--mono); font-size: 0.62rem; text-transform: uppercase;
  letter-spacing: 0.18em; color: var(--ink); }
.ledger .lhead .n { font-family: var(--mono); font-size: 0.6rem; color: var(--ink-faint); }
.grp { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.18em;
  color: var(--ink-soft); padding: 16px 0 5px; }
.grp.prio { color: var(--oxblood); }
.grp .dot { margin-right: 5px; }
.lrow { display: grid; grid-template-columns: 26px 1fr 168px 92px; gap: 16px; align-items: baseline;
  padding: 9px 0; border-bottom: 1px solid var(--rule); }
.lrow:hover { background: var(--paper-deep); }
.lrow.sel { background: var(--paper-deep); box-shadow: inset 2px 0 0 var(--oxblood); }
.lrow .rk { font-family: var(--mono); font-size: 0.6rem; color: var(--ink-faint); }
.lrow .nm { font-family: var(--serif); font-size: 1.06rem; font-weight: 500; line-height: 1.2; }
.lrow .nm a { color: var(--ink); text-decoration: none; }
.lrow .nm a:hover { color: var(--oxblood); }
.lrow .sub { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--ink-faint); margin-top: 2px; }
.lrow .dir { font-family: var(--mono); font-size: 0.66rem; color: var(--ink-soft); text-align: right;
  white-space: nowrap; }
.lrow .scorecell { text-align: right; }
.lrow .scorecell .v { font-family: var(--serif); font-size: 1.22rem; font-weight: 520; }
.lrow .scorecell .den { font-family: var(--mono); font-size: 0.5rem; color: var(--ink-faint); }
.lrow .sbar { height: 2px; background: var(--rule); margin-top: 3px; }
.lrow .sbar span { display: block; height: 2px; background: var(--oxblood); }
.lrow .sbar.cold span { background: var(--rule-bold); }
/* per-row actions: appear on hover/selection, stay compact */
.lrow .acts { grid-column: 2 / -1; display: none; gap: 4px; margin-top: 7px; flex-wrap: wrap; }
.lrow:hover .acts, .lrow.sel .acts { display: flex; }
.lrow .acts form { display: inline-flex; gap: 4px; }
.lrow .acts button, .lrow .acts a { font-family: var(--mono); font-size: 0.53rem; text-transform: uppercase;
  letter-spacing: 0.08em; border: 1px solid var(--rule-bold); background: var(--paper); color: var(--ink-soft);
  padding: 3px 8px; cursor: pointer; text-decoration: none; }
.lrow .acts button:hover, .lrow .acts a:hover { border-color: var(--ink); color: var(--ink); }
.lrow .acts button.on { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.lrow .acts button.on.refused { background: var(--oxblood); border-color: var(--oxblood); }
.lrow .acts a.fiche { color: var(--oxblood); border-color: var(--oxblood); }
.ledger .lfoot { font-family: var(--mono); font-size: 0.56rem; color: var(--ink-faint);
  letter-spacing: 0.06em; padding: 12px 0 0; }
.ledger .lfoot .kbd { border: 1px solid var(--rule-bold); padding: 0 5px; color: var(--ink-soft); }
.ledger .empty { font-family: var(--mono); font-size: 0.72rem; color: var(--ink-faint);
  padding: 22px 0; line-height: 1.7; }

/* pipeline header (thesis_detail), instrument, not editorial titleblock */
.phead { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px;
  padding: 24px 0 16px; border-bottom: 1px solid var(--rule); }
.phead .label { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.22em; color: var(--oxblood); }
.phead .ptitle { font-family: var(--serif); font-weight: 460; font-size: 1.9rem; margin: 6px 0 12px;
  letter-spacing: -0.01em; }
.phead .crits { display: flex; flex-wrap: wrap; gap: 6px; }
.tag-pure { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--oxblood); border: 1px solid var(--oxblood); padding: 1px 5px; vertical-align: middle; }
.lrow .scorecell .den { display: inline; }

.phead .ptitle em, .command .lead em { font-style: italic; color: var(--oxblood); }

/* ============================================================================
   CRM KANBAN, the deal board. Sharp 1px cards (no card-soup shadows), columns,
   right drawer. Every gesture feeds the OutcomeEvent ledger.
   ========================================================================== */
.board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(208px, 1fr);
  gap: 12px; margin-top: 22px; overflow-x: auto; padding-bottom: 8px; align-items: start; }
.kcol { border: 1px solid var(--rule); background: var(--paper); min-height: 120px; }
.kcol .khead { display: flex; justify-content: space-between; align-items: center;
  padding: 9px 11px; border-bottom: 1px solid var(--ink); position: sticky; top: 0;
  background: var(--paper); }
.kcol .kh-lbl { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.14em; color: var(--ink); }
.kcol[data-status="sold"] .kh-lbl { color: var(--oxblood); }
.kcol .kh-n { font-family: var(--mono); font-size: 0.58rem; color: var(--ink-faint); }
.kcol .kbody { padding: 8px; display: flex; flex-direction: column; gap: 8px; min-height: 80px; }
.kcol.drop { background: var(--paper-deep); }
.kcol.drop .kbody { outline: 1px dashed var(--oxblood); outline-offset: -2px; }
.kempty { font-family: var(--mono); font-size: 0.7rem; color: var(--rule-bold); text-align: center; padding: 8px 0; }

.kcard { border: 1px solid var(--rule-bold); background: var(--paper); padding: 9px 10px;
  cursor: grab; transition: border-color 0.12s; }
.kcard:hover { border-color: var(--ink); }
.kcard.overdue { border-left: 2px solid var(--oxblood); }
.kcard.dragging { opacity: 0.4; }
.kc-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.kc-name { font-family: var(--serif); font-size: 0.96rem; font-weight: 500; line-height: 1.15; }
.kc-score { font-family: var(--serif); font-size: 1.05rem; font-weight: 560; color: var(--ink); }
.kc-score.cold { color: var(--ink-faint); }
.kc-sub { font-family: var(--mono); font-size: 0.56rem; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--ink-faint); margin-top: 3px; line-height: 1.4; }
.kc-v { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--oxblood); display: inline-block; margin-top: 5px; }
.kc-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 6px; }
.ktag { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--ink-soft); border: 1px solid var(--rule-bold); padding: 1px 5px; }
.kc-relance { font-family: var(--mono); font-size: 0.52rem; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--ink-faint); margin-top: 6px; }
.kcard.overdue .kc-relance { color: var(--oxblood); }

/* the drawer */
.drawer-bg { position: fixed; inset: 0; background: rgba(20,17,13,0.32); z-index: 60;
  opacity: 0; pointer-events: none; transition: opacity 0.2s; }
.drawer-bg.show { opacity: 1; pointer-events: auto; }
.drawer { position: absolute; top: 0; right: 0; bottom: 0; width: min(440px, 92vw);
  background: var(--paper); border-left: 1px solid var(--ink); overflow-y: auto;
  transform: translateX(100%); transition: transform 0.24s cubic-bezier(.2,.7,.2,1); }
.drawer-bg.show .drawer { transform: none; }
.dw-inner { padding: 22px 24px 40px; }
.dw-head { border-bottom: 1px solid var(--rule); padding-bottom: 14px; }
.dw-kicker { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase;
  letter-spacing: 0.14em; color: var(--oxblood); }
.dw-name { font-family: var(--serif); font-weight: 500; font-size: 1.5rem; margin: 5px 0 6px; line-height: 1.1; }
.dw-sub { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--ink-faint); line-height: 1.5; }
.dw-score { font-family: var(--mono); font-size: 0.68rem; color: var(--ink-soft); margin-top: 6px; }
.dw-score .v { font-family: var(--serif); font-size: 1.05rem; font-weight: 560; }
.dw-score .den { color: var(--ink-faint); }
.dw-actions { display: flex; gap: 8px; margin: 16px 0; }
.dw-btn { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.1em;
  border: 1px solid var(--ink); background: var(--paper); color: var(--ink); padding: 8px 12px;
  cursor: pointer; text-decoration: none; }
.dw-btn:hover { background: var(--paper-deep); }
.dw-btn.primary { background: var(--ink); color: var(--paper); }
.dw-btn.primary:hover { background: var(--oxblood); }
.dw-block { border-top: 1px solid var(--rule); padding: 14px 0; }
.dw-lbl { font-family: var(--mono); font-size: 0.56rem; text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--ink-faint); margin-bottom: 8px; }
.dw-lbl .over { color: var(--oxblood); }
.dw-stat-row { display: flex; flex-wrap: wrap; gap: 4px; }
.dw-stat { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase; letter-spacing: 0.06em;
  border: 1px solid var(--rule-bold); background: var(--paper); color: var(--ink-soft); padding: 5px 9px; cursor: pointer; }
.dw-stat:hover { border-color: var(--ink); color: var(--ink); }
.dw-stat.on { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.dw-stat.on.refused { background: var(--oxblood); border-color: var(--oxblood); }
.dw-inline { display: flex; gap: 6px; }
.dw-inline input { flex: 1; min-width: 0; }
.dw-form input, .dw-form textarea { width: 100%; border: 1px solid var(--rule-bold); background: var(--field);
  font-family: var(--mono); font-size: 0.72rem; color: var(--ink); padding: 7px 9px; outline: none; }
.dw-form input:focus, .dw-form textarea:focus { border-color: var(--ink); }
.dw-form button { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase; letter-spacing: 0.1em;
  border: 1px solid var(--ink); background: var(--ink); color: var(--paper); padding: 0 12px; cursor: pointer; }
.dw-form button:hover { background: var(--oxblood); border-color: var(--oxblood); }
.dw-addnote { width: 100%; margin-top: 6px; padding: 7px 0; }
.dw-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.dw-timeline { list-style: none; margin: 10px 0 0; padding: 0; }
.dw-timeline li { font-family: var(--mono); font-size: 0.64rem; color: var(--ink-soft); line-height: 1.5;
  padding: 6px 0; border-bottom: 1px dotted var(--rule); }
.dw-timeline li:last-child { border-bottom: 0; }
.dw-timeline li.auto { color: var(--ink-faint); }
.dw-timeline li.none { color: var(--ink-faint); border: 0; }
.dw-timeline .t { color: var(--oxblood); margin-right: 8px; }
.dw-remove { background: none; border: 1px solid var(--rule-bold); color: var(--ink-faint);
  font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase; letter-spacing: 0.1em;
  padding: 7px 12px; cursor: pointer; width: 100%; }
.dw-remove:hover { border-color: var(--oxblood); color: var(--oxblood); }
.dw-foot { margin-top: 16px; }

/* ============================================================================
   CHAT-WITH-FICHE, a grounded Q&A log (document voice, not a messenger)
   ========================================================================== */
#chat-drawer { overflow: hidden; }
.drawer .dw-inner.chat { display: flex; flex-direction: column; height: 100vh; padding-bottom: 0; }
.chat-thread { flex: 1; overflow-y: auto; padding: 8px 0 14px; }
.chat-entry { padding: 13px 0; border-bottom: 1px dotted var(--rule); }
.chat-entry:first-child { padding-top: 0; }
.chat-q { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--oxblood); margin-bottom: 7px; line-height: 1.5; }
.chat-a { font-family: var(--serif); font-size: 1.02rem; line-height: 1.55; color: var(--ink); }
.chat-a.pending { color: var(--ink-faint); }
.chat-a.na { color: var(--ink-faint); font-style: italic; }
.chat-cites { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.chat-suggests { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 6px; }
.cq { font-family: var(--mono); font-size: 0.56rem; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--ink-soft); border: 1px solid var(--rule-bold); background: var(--paper); padding: 5px 9px;
  cursor: pointer; }
.cq:hover { border-color: var(--ink); color: var(--ink); }
.chat-form { display: flex; gap: 6px; border-top: 1px solid var(--ink); padding: 12px 0 18px;
  background: var(--paper); }
.chat-form input { flex: 1; min-width: 0; border: 1px solid var(--rule-bold); background: var(--field);
  font-family: var(--mono); font-size: 0.78rem; color: var(--ink); padding: 10px 12px; outline: none; }
.chat-form input:focus { border-color: var(--ink); }
.chat-form button { border: 1px solid var(--ink); background: var(--ink); color: var(--paper);
  font-family: var(--mono); font-size: 0.95rem; padding: 0 16px; cursor: pointer; }
.chat-form button:hover { background: var(--oxblood); border-color: var(--oxblood); }

/* ============================================================================
   ONBOARDING, guided first run + one-click thesis templates
   ========================================================================== */
.onb { margin-top: 26px; }
.onb-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 12px; }
.onb-step { display: flex; gap: 12px; border: 1px solid var(--rule); padding: 15px; }
.onb-step .n { font-family: var(--serif); font-size: 1.5rem; font-weight: 600; color: var(--oxblood); line-height: 1; }
.onb-step b { font-family: var(--serif); font-size: 1.02rem; font-weight: 540; }
.onb-step p { font-family: var(--mono); font-size: 0.6rem; color: var(--ink-soft); line-height: 1.55;
  margin: 5px 0 8px; text-transform: none; letter-spacing: 0; }
.onb-link { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--oxblood); text-decoration: none; }
.onb-link:hover { text-decoration: underline; }
.tpl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 12px; }
.tpl { border: 1px solid var(--rule-bold); padding: 14px; display: flex; flex-direction: column; background: var(--paper); }
.tpl:hover { border-color: var(--ink); }
.tpl-name { font-family: var(--serif); font-size: 1.04rem; font-weight: 540; }
.tpl-sum { font-family: var(--mono); font-size: 0.57rem; color: var(--ink-faint); line-height: 1.5;
  margin: 6px 0 12px; flex: 1; letter-spacing: 0.02em; }
.tpl button { align-self: flex-start; font-family: var(--mono); font-size: 0.56rem; text-transform: uppercase;
  letter-spacing: 0.12em; border: 1px solid var(--ink); background: var(--ink); color: var(--paper);
  padding: 7px 14px; cursor: pointer; }
.tpl button:hover { background: var(--oxblood); border-color: var(--oxblood); }

/* ============================================================================
   RESPONSIVE, mobile / tablet. Instrument density adapts; nothing breaks.
   ========================================================================== */
@media (max-width: 820px) {
  body { padding: 16px 0 80px; }
  .app { padding: 0 16px 60px; }
  .appbar { flex-wrap: wrap; gap: 8px 14px; position: static; padding: 12px 0; }
  .appbar nav { gap: 12px; flex-wrap: wrap; font-size: 0.56rem; }
  .appbar .org, .appbar .kbd { display: none; }            /* secondary chrome off on mobile */
  .command .lead { font-size: 1.2rem; }
  .command .bar { flex-direction: column; align-items: stretch; gap: 8px; }
  .command .bar .hint { order: 2; }
  .onb-steps, .tpl-grid { grid-template-columns: 1fr; }
  .phead { flex-direction: column; align-items: flex-start; gap: 12px; }
  .statsbar { flex-wrap: wrap; }
  /* dense ledger → drop the dirigeant column, keep name + score */
  .lrow { grid-template-columns: 22px 1fr 60px; gap: 10px; }
  .lrow .dir { display: none; }
  .lrow .acts { grid-column: 1 / -1; }
  /* board: comfortable card width, native horizontal scroll */
  .board { grid-auto-columns: 82vw; }
  /* drawers full-width */
  .drawer { width: 100vw; }
  /* the dossier: single column */
  .grid { grid-template-columns: 1fr; }
  .rail { border-right: 0; border-bottom: 1px solid var(--rule); padding: 0 0 18px; margin-bottom: 22px; }
  .body { padding-left: 0; }
  .titleblock { grid-template-columns: 1fr; gap: 18px; }
  .scorebox { min-width: 0; text-align: left; }
  .score-num { font-size: 3.6rem; }
  .toolbar { flex-wrap: wrap; max-width: 94vw; justify-content: center; }
  .modal { width: 94vw; }
}
@media (max-width: 480px) {
  .command .lead { font-size: 1.05rem; }
  .lrow .nm { font-size: 0.95rem; }
  .ev .ev-row { flex-direction: column; gap: 3px; }
  .ev .ev-v { text-align: left; }
}

/* aperçu financier (pré-screen) */
.prescreen { font-family: var(--mono); font-size: 0.6rem; text-transform: uppercase;
  letter-spacing: 0.12em; color: var(--ink-faint); }
.fin-table { font-size: 0.78rem; }
.fin-confidential { border: 1px solid var(--oxblood); border-left-width: 2px; background: var(--paper-deep);
  padding: 12px 15px; }
.fin-confidential p { font-size: 0.95rem; line-height: 1.5; color: var(--ink-soft); }

/* cessibilité, "qui peut vendre", the deal qualifier */
.cessib { border: 1px solid var(--rule-bold); border-left: 3px solid var(--ink-faint);
  padding: 13px 16px; background: var(--paper); }
.cessib-solo { border-left-color: #2f5d43; }
.cessib-tiers, .cessib-accord { border-left-color: var(--oxblood); }
.cessib-a_confirmer { border-left-color: var(--ink-faint); }
.cessib-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.cessib-badge { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.62rem; font-weight: 600; color: var(--ink-faint); }
.cessib-solo .cessib-badge { color: #2f5d43; }
.cessib-tiers .cessib-badge, .cessib-accord .cessib-badge { color: var(--oxblood); }
.cessib-cap { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.54rem; color: var(--ink-faint); }
.cessib-read { font-family: var(--serif); font-size: 1.05rem; line-height: 1.5; margin: 7px 0 0; }
.cessib-ctrl { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.ctrl-item { font-family: var(--mono); font-size: 0.66rem; color: var(--ink-soft); }
.ctrl-item b { color: var(--ink); }

/* ============================================================================
   SCREENER, filter/sort + mass triage + export (thesis_detail)
   ========================================================================== */
.screener { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;
  gap: 10px; border: 1px solid var(--rule); padding: 10px 14px; background: var(--paper); }
.scr-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.screener label { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-faint); display: flex; align-items: center; gap: 5px; }
.screener select, .screener input { font-family: var(--mono); font-size: 0.7rem; color: var(--ink);
  border: 1px solid var(--rule-bold); background: var(--field); padding: 5px 7px; outline: none; }
.screener select:focus, .screener input:focus { border-color: var(--ink); }
.screener .scr-controls > button { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase;
  letter-spacing: 0.12em; border: 1px solid var(--ink); background: var(--ink); color: var(--paper);
  padding: 6px 12px; cursor: pointer; }
.screener .scr-controls > button:hover { background: var(--oxblood); border-color: var(--oxblood); }
.scr-clear { font-family: var(--mono); font-size: 0.56rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--ink-faint); }
.scr-right { display: flex; align-items: center; gap: 12px; }
.scr-count { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint); }
.scr-export { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--oxblood); border: 1px solid var(--rule-bold); padding: 5px 10px; text-decoration: none; }
.scr-export:hover { border-color: var(--oxblood); }

.bulk-bar { display: none; align-items: center; gap: 10px; margin-top: 12px; padding: 8px 14px;
  border: 1px solid var(--ink); background: var(--paper-deep); }
.bulk-bar.show { display: flex; }
.bulk-n { font-family: var(--mono); font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--ink-soft); }
.bulk-n b { color: var(--ink); }
.bulk-bar button { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.1em;
  border: 1px solid var(--ink); background: var(--ink); color: var(--paper); padding: 6px 12px; cursor: pointer; }
.bulk-bar button.ecarter { background: var(--paper); color: var(--oxblood); border-color: var(--oxblood); }
.bulk-bar .bulk-clear { background: none; border: 0; color: var(--ink-faint); }
.row-check { width: 14px; height: 14px; accent-color: var(--oxblood); cursor: pointer; }
.vb { font-family: var(--mono); font-size: 0.5rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--ink-faint); }
.vb.prio { color: var(--oxblood); }
.cessib-tag { font-family: var(--mono); font-size: 0.52rem; text-transform: uppercase; letter-spacing: 0.06em;
  margin-top: 3px; color: var(--ink-faint); }
.cessib-tag.cessib-solo { color: #2f5d43; }
.cessib-tag.cessib-tiers, .cessib-tag.cessib-accord { color: var(--oxblood); }
@media (max-width: 820px) { .screener { flex-direction: column; align-items: stretch; } }

/* équipe (gestion intra-org) */
.team-add { border: 1px solid var(--rule-bold); padding: 14px 16px; margin-top: 18px; background: var(--paper); }
.team-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.team-row input { flex: 1; min-width: 180px; border: 1px solid var(--rule-bold); background: var(--field);
  font-family: var(--mono); font-size: 0.78rem; color: var(--ink); padding: 9px 11px; outline: none; }
.team-row input:focus { border-color: var(--ink); }
.team-row button { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.12em;
  border: 1px solid var(--ink); background: var(--ink); color: var(--paper); padding: 0 16px; cursor: pointer; }
.team-row button:hover { background: var(--oxblood); border-color: var(--oxblood); }
.team-hint { font-family: var(--mono); font-size: 0.6rem; color: var(--ink-faint); margin: 9px 0 0; line-height: 1.6; }
.team-lrow { grid-template-columns: 1fr 120px 90px; }
.team-role { font-family: var(--mono); font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--ink-faint); }
.team-role.owner { color: var(--oxblood); }
.team-remove { font-family: var(--mono); font-size: 0.55rem; text-transform: uppercase; letter-spacing: 0.08em;
  border: 1px solid var(--rule-bold); background: var(--paper); color: var(--ink-faint); padding: 5px 10px; cursor: pointer; }
.team-remove:hover { border-color: var(--oxblood); color: var(--oxblood); }
.land-access { font-family: var(--mono); font-size: 0.62rem; color: var(--ink-faint); margin-top: 14px; letter-spacing: 0.04em; }

/* ============================================================================
   DARK TERMINAL THEME — app chrome only. Tokens re-scoped to .app/.gate so every
   component flips automatically; the fiche/PDF (.sheet) keep the light tokens.
   ========================================================================== */
.app, .gate {
  --paper: #15181d; --paper-deep: #1b1f26; --paper-edge: #20252d;
  --ink: #e7e9ec; --ink-soft: #9aa0a8; --ink-faint: #6a717a;
  --rule: #23272e; --rule-bold: #363c45;
  --oxblood: #e0556b; --oxblood-dk: #c8324a; --field: #0f1216;
  color: var(--ink); font-family: var(--mono);
}
.gate { max-width: 1120px; margin: 0 auto; padding: 0 30px 60px; }

/* soften "strong line = --ink" borders so dividers aren't glaring white */
.app .appbar, .app .ledger .lhead, .app .section-head, .app .command form,
.app .bulk-bar, .app .titleblock, .gate .appbar { border-color: var(--rule-bold); }
.app .appbar { border-bottom-color: var(--rule-bold); background: #0d0f12; }

/* primary action = oxblood (not a light inverted button) */
.app .command button, .app .btn-run, .app .tpl button, .app .team-row button,
.app .dw-btn.primary, .app .bulk-bar button:not(.ecarter):not(.bulk-clear),
.app .scr-controls > button {
  background: var(--oxblood); border-color: var(--oxblood); color: #fff; }
.app .command button:hover, .app .btn-run:hover, .app .scr-controls > button:hover { background: #ef6a7f; border-color: #ef6a7f; }

/* form controls — kill the OS-default look (the #1 amateur tell) */
.app select, .app input, .app textarea {
  background: var(--field); color: var(--ink); border: 1px solid var(--rule-bold); border-radius: 0; }
.app select:focus, .app input:focus, .app textarea:focus { border-color: var(--oxblood); outline: none; }
.app select {
  -webkit-appearance: none; appearance: none; padding-right: 24px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M0 0l4.5 6L9 0z' fill='%239aa0a8'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 9px center; }
.app input[type=checkbox] { accent-color: var(--oxblood); }
.app input::placeholder, .app textarea::placeholder { color: var(--ink-faint); }

/* status / financial colors readable on charcoal */
.app .cessib-tag.cessib-solo { color: #3fb950; }
.app .src.verifie { color: #3fb950; border-color: #2c4a36; }
.app .src.probable { color: #d9a441; border-color: #4a3f22; }
.app .lrow:hover, .app .kcard:hover { background: var(--paper-deep); }
.app .lrow.sel { box-shadow: inset 2px 0 0 var(--oxblood); background: var(--paper-deep); }

/* flash / banners on dark */
.app .flash, .gate .flash { background: var(--paper-deep); border: 1px solid var(--rule-bold); color: var(--ink); }
.app .flash.error, .gate .flash.error { border-color: var(--oxblood); }

/* the dossier teaser on the dark landing stays a LIGHT document card (previews the product) */
.gate .demo-card { --paper: #f4f1ea; --ink: #14110d; --ink-soft: #4f483c; --ink-faint: #8a8170;
  --rule: #d7cfbd; --rule-bold: #b9ad94; --oxblood: #6b1f2b;
  background: #f4f1ea; color: #14110d; box-shadow: 0 18px 50px -28px #000; }
.gate .demo-card .band { color: #6b1f2b; }

/* landing/login on the dark gate */
.gate .masthead { border-color: var(--rule-bold); }
.gate .masthead::after { display: none; }
.gate .auth-wrap input { background: var(--field); color: var(--ink); border-color: var(--rule-bold); }

/* full terminal: the app chrome is mono everywhere; serif lives ONLY in the light fiche/PDF */
.app .ptitle, .app .command .lead, .app .lead, .app .nm, .app .kc-name,
.app .scorecell .v, .app .ev-count, .app .dw-name, .app .tpl-name,
.app .onb-step b, .app .onb-step .n, .app .phead .ptitle,
.gate .auth-wrap h2, .gate .land-hero h1 {
  font-family: var(--mono); font-variation-settings: normal; letter-spacing: -0.01em;
}
.app .ptitle, .app .phead .ptitle { font-size: 1.4rem; font-weight: 600; text-transform: none; }
.app .command .lead, .gate .land-hero h1 { font-weight: 600; }
.gate .auth-wrap h2 { font-weight: 600; }
.app .nm { font-weight: 600; font-size: 0.92rem; }
.app .scorecell .v { font-weight: 600; }
/* but the dossier teaser on the gate keeps its serif (it previews the light fiche) */
.gate .demo-card .dc-name { font-family: var(--serif); }
