/*  Extracteur de fiche d'arrêt (§7.2)                                   */
/* ===================================================================== */
.ar-source { max-width: 820px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; }
.ar-source-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ar-source-grid .input, .ar-source-ta { width: 100%; }
.ar-source-ta { resize: vertical; font-family: var(--sans); line-height: 1.55; min-height: 130px; }
.ar-source-a { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.ar-ia-note { flex: 1 1 240px; min-width: 0; font-size: 11.5px; }
/* Surlignage des mots-charnières (texte source) */
.ar-surl { max-width: 820px; margin: 0 auto 14px; }
.ar-surl > summary { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.ar-surl[open] > summary { color: var(--ink); margin-bottom: 10px; }
.ar-legende { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 10px; }
.ar-leg { display: inline-flex; align-items: center; gap: 6px; font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); }
.ar-leg-sw { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 auto; }
.ar-leg-visa .ar-leg-sw { background: color-mix(in srgb, var(--ref) 30%, var(--card)); box-shadow: inset 0 0 0 1px var(--ref); }
.ar-leg-chapeau .ar-leg-sw { background: color-mix(in srgb, var(--c-b) 28%, var(--card)); box-shadow: inset 0 0 0 1px var(--c-b); }
.ar-leg-moyen .ar-leg-sw { background: color-mix(in srgb, var(--c-a) 24%, var(--card)); box-shadow: inset 0 0 0 1px var(--c-a); }
.ar-leg-dispositif .ar-leg-sw { background: color-mix(in srgb, var(--method) 26%, var(--card)); box-shadow: inset 0 0 0 1px var(--method); }
.ar-surl-body { font-family: var(--serif); font-size: 14px; line-height: 1.7; white-space: pre-wrap; max-height: 42vh; overflow-y: auto; color: var(--ink); }
.ar-mk { border-radius: 3px; padding: 0 2px; color: var(--ink); background: transparent; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.ar-mk-visa { background: color-mix(in srgb, var(--ref) 22%, transparent); box-shadow: inset 0 -2px 0 var(--ref); }
.ar-mk-chapeau { background: color-mix(in srgb, var(--c-b) 20%, transparent); box-shadow: inset 0 -2px 0 var(--c-b); }
.ar-mk-moyen { background: color-mix(in srgb, var(--c-a) 16%, transparent); box-shadow: inset 0 -2px 0 var(--c-a); }
.ar-mk-dispositif { background: color-mix(in srgb, var(--method) 18%, transparent); box-shadow: inset 0 -2px 0 var(--method); font-weight: 600; }
.ar-err { max-width: 820px; margin: 0 auto 14px; }
.ar-err p { margin: 0 0 6px; font-size: 13.5px; }
.ar-err p:last-child { margin: 0; }
/* Les 5 blocs */
.ar-blocs { max-width: 820px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.ar-bloc { border-left: 3px solid var(--hairline); display: flex; flex-direction: column; gap: 9px; }
/* Lot 10 : la couleur du bloc = la couleur de son surlignage dans le texte source */
.ar-bloc-faits, .ar-bloc-proc { border-left-color: var(--hairline); }
.ar-bloc-pret { border-left-color: var(--c-a); }
.ar-bloc-pret .ar-bloc-k { color: var(--a-text); }
.ar-bloc-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.ar-bloc-k { font-family: var(--serif); font-size: 17px; color: var(--ink); font-weight: 600; }
.ar-bloc-s { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); }
.ar-ta { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.55; }
.ar-bloc-q { border-left-color: var(--gold); }
.ar-bloc-q .ar-bloc-k { color: var(--gold); }
.ar-bloc-sol { border-left-color: var(--method); }
.ar-bloc-sol .ar-bloc-k { color: var(--ok-text); }
.ar-sol-sens { max-width: 260px; }
.ar-portee { display: flex; flex-direction: column; gap: 5px; border-top: 1px dashed var(--hairline); padding-top: 10px; }
.ar-bloc-masque { border-left-color: var(--ink-soft); align-items: flex-start; }
/* Garde-fou « question abstraite » */
.ar-qwarn { margin: 0; font-family: var(--sans); font-size: 12.5px; line-height: 1.45; }
.ar-qwarn-warn { color: var(--danger); }
.ar-qwarn-ok { color: var(--method); }
.ar-actions { max-width: 820px; margin: 16px auto 0; display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
/* Fiches récentes */
.ar-recentes { max-width: 820px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 9px; }
.ar-recentes-t { font-size: 17px; margin: 0; }
.ar-recentes-s { margin: -4px 0 4px; }
.ar-rec-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.ar-rec-b { min-width: 0; }
.ar-rec-nom { margin: 0 0 5px; font-family: var(--serif); font-size: 15px; line-height: 1.3; }
.ar-rec-meta { display: flex; flex-wrap: wrap; gap: 6px; }
.ar-rec-a { display: flex; gap: 4px; flex: 0 0 auto; }
.ar-pill-cassation { background: var(--b-surface); }
.ar-pill-rejet { background: var(--ok-surface); }
.ar-pill-autre { background: var(--n-surface); }
.ar-pill-ok { background: var(--ok-surface); }
.ar-pill-warn { background: var(--react-surface); color: var(--react-on); }
@media (max-width: 620px) {
  .ar-source-grid { grid-template-columns: 1fr; }
  .ar-rec-i { flex-direction: column; align-items: flex-start; }
}
/*  Banque d'arrêts indexée (§7.3)                                       */
/* ===================================================================== */
.bq-barre { max-width: 820px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 12px; }
.bq-search-row { display: flex; align-items: center; gap: 9px; }
.bq-search-row svg { width: 18px; height: 18px; color: var(--c-d); flex: 0 0 auto; }
.bq-search { flex: 1 1 auto; min-width: 0; }
.bq-fils { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 9px; }
.bq-fil { width: 100%; min-width: 0; }
.bq-stats { display: flex; flex-wrap: wrap; gap: 12px; font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); }
.bq-stats b { color: var(--d-text); }
.bq-stat-ok { color: var(--method); }
.bq-stat-warn { color: var(--gold-text); }
.bq-results { max-width: 820px; margin: 0 auto; display: flex; flex-direction: column; gap: 10px; }
.bq-count { margin: 0 0 -2px; }
.bq-vide { text-align: center; padding: 18px; }
.bq-card { cursor: pointer; transition: border-color .15s, transform .05s; display: flex; flex-direction: column; gap: 6px; padding: 13px 15px; }
.bq-card:hover { border-color: var(--gold); }
.bq-card:active { transform: translateY(1px); }
.bq-card:focus-visible { outline: 2px solid var(--c-d); outline-offset: 2px; }
.bq-card-h { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.bq-card-nom { margin: 0; font-family: var(--serif); font-size: 16px; line-height: 1.3; }
.bq-card-pills { display: flex; flex-wrap: wrap; gap: 5px; flex: 0 0 auto; }
.bq-card-snip { margin: 0; font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); line-height: 1.5; }
.bq-gestion { max-width: 820px; margin: 18px auto 0; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; border-top: 1px dashed var(--hairline); padding-top: 14px; }
.bq-gestion-n { margin: 0; }
/* Détail */
.bq-detail { max-width: 820px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
.bq-det-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.bq-back { padding-left: 8px; }
.bq-det-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.bq-det-nom { margin: 0; font-size: clamp(20px, 3vw, 26px); }
.bq-acompleter { border-left-color: var(--gold); }
.bq-det-blocs { display: flex; flex-direction: column; gap: 12px; }
.bq-bloc { border-left: 3px solid var(--c-d); display: flex; flex-direction: column; gap: 7px; }
.bq-bloc-k { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--d-text); }
.bq-bloc-q { border-left-color: var(--gold); }
.bq-bloc-q .bq-bloc-k { color: var(--gold); }
.bq-bloc-sol { border-left-color: var(--c-a); }
.bq-bloc-sol .bq-bloc-k { color: var(--c-a); }
.bq-bloc-masque { border-left-color: var(--ink-soft); align-items: flex-start; gap: 9px; }
.bq-lecture { margin: 0; font-family: var(--serif); font-size: 14.5px; line-height: 1.6; color: var(--ink); white-space: pre-wrap; }
.bq-sol-l { display: flex; flex-direction: column; gap: 3px; }
.bq-sol-l + .bq-sol-l { border-top: 1px dashed var(--hairline); padding-top: 8px; }
.bq-det-a { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.bq-del { margin-left: auto; }

@media (max-width: 620px) {
  .bq-fils { grid-template-columns: 1fr; }
  .bq-card-h { flex-direction: column; gap: 6px; }
  .bq-del { margin-left: 0; }
}
/*  Comparateur de régimes (§7.4)                                        */
/* ===================================================================== */
.cp-barre { max-width: 900px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 12px; }
.cp-barre-row .input, .cp-titre { width: 100%; }
.cp-barre-row2 { display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; align-items: end; }
.cp-neuf { white-space: nowrap; }
.cp-grille-wrap { max-width: 100%; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 8px; }
.cp-grille-scroll { overflow-x: auto; padding-bottom: 4px; }
.cp-table { border-collapse: separate; border-spacing: 0; width: 100%; }
.cp-cap { caption-side: top; font-family: var(--serif); font-size: 18px; font-weight: 600; color: var(--ink); text-align: left; padding: 0 0 10px; }
.cp-table th, .cp-table td { border: 1px solid var(--hairline); vertical-align: top; padding: 0; }
.cp-corner { background: var(--paper-2); min-width: 150px; position: sticky; left: 0; z-index: 3; }
.cp-corner span { display: block; padding: 8px 10px; font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--ink-soft); }
.cp-th-reg { background: color-mix(in srgb, var(--c-a) 10%, var(--paper-2)); min-width: 180px; }
.cp-th-crit { background: var(--paper-2); min-width: 150px; max-width: 200px; position: sticky; left: 0; z-index: 2; text-align: left; }
.cp-axe-h { display: flex; align-items: center; gap: 4px; padding: 6px 8px; }
.cp-axe { flex: 1 1 auto; min-width: 0; font-weight: 600; font-size: 13px; border-color: transparent; background: transparent; padding: 4px 6px; }
.cp-th-reg .cp-axe { color: var(--c-a); }
.cp-axe:focus { background: var(--card); border-color: var(--c-a); }
.cp-axe-del, .cp-coltest { flex: 0 0 auto; padding: 3px 7px; font-size: 13px; line-height: 1; color: var(--ink-soft); }
.cp-axe-del:hover { color: var(--danger); border-color: var(--danger); }
.cp-td { background: var(--card); }
.cp-cell { width: 100%; min-width: 160px; border: none; background: transparent; resize: vertical; font-family: var(--sans); font-size: 13px; line-height: 1.5; padding: 8px 10px; border-radius: 0; }
.cp-cell:focus { outline: 2px solid var(--c-a); outline-offset: -2px; background: var(--card); }
.cp-cell-mask { width: 100%; min-height: 46px; border: none; background: transparent; cursor: pointer; font-family: var(--sans); font-size: 13px; line-height: 1.5; padding: 8px 10px; text-align: left; color: var(--ink-soft); letter-spacing: .15em; }
.cp-cell-mask.is-revele { color: var(--ink); letter-spacing: normal; background: color-mix(in srgb, var(--method) 8%, var(--card)); }
.cp-addcol, .cp-rowend { border: none !important; background: none; }
.cp-addrow { border: none !important; background: none; text-align: left; padding-top: 6px; }
.cp-add { font-size: 13px; color: var(--c-a); white-space: nowrap; }
.cp-compte { margin: 0; }
.cp-test-note { color: var(--c-a); }
.cp-actions { max-width: 900px; margin: 4px auto 0; display: flex; flex-wrap: wrap; gap: 9px; }
.cp-liste { max-width: 900px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 9px; }
.cp-liste-t { font-size: 17px; margin: 0; }
.cp-liste-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.cp-liste-b { min-width: 0; }
.cp-liste-titre { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; }
.cp-liste-a { display: flex; gap: 4px; flex: 0 0 auto; }
@media (max-width: 620px) {
  .cp-barre-row2 { grid-template-columns: 1fr; }
  .cp-liste-i { flex-direction: column; align-items: flex-start; }
}
/* Impression : ne garder que le tableau */
@media print {
  .view-head, .cp-barre, .cp-actions, .cp-liste, .cp-compte,
  .cp-addcol, .cp-addrow, .cp-rowend, .cp-axe-del, .cp-add, .cp-coltest { display: none !important; }
  .view { padding: 0; max-width: none; }
  .cp-grille-scroll { overflow: visible; }
  .cp-table { font-size: 11px; }
  .cp-axe { color: var(--ink) !important; }
  .cp-cell, .cp-th-crit, .cp-th-reg, .cp-corner { position: static; }
}
/*  Fabrique de fiches (§7.1) ⭐                                          */
/* ===================================================================== */
.fb-meta { max-width: 980px; margin: 0 auto 14px; }
.fb-meta-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 12px; }
.fb-meta-grid .input, .fb-titre { width: 100%; }
.fb-split { max-width: 980px; margin: 0 auto 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.fb-pane { display: flex; flex-direction: column; gap: 10px; }
.fb-pane-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.fb-pane-k { font-family: var(--serif); font-size: 16px; font-weight: 600; color: var(--c-a); }
.fb-pane-tools { display: flex; gap: 6px; }
.fb-transcript { width: 100%; resize: vertical; font-family: var(--sans); font-size: 13.5px; line-height: 1.55; min-height: 240px; }
.fb-audio { display: flex; flex-direction: column; gap: 5px; background: var(--paper-2); border-radius: 10px; padding: 8px 10px; }
.fb-audio-n { font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fb-audio audio { width: 100%; height: 34px; }
.fb-struct { display: flex; flex-direction: column; gap: 6px; border-top: 1px dashed var(--hairline); padding-top: 10px; }
.fb-struct-go { justify-content: center; }
.fb-struct-go:disabled { opacity: .6; cursor: not-allowed; }
.fb-struct-note { font-size: 11.5px; }
.fb-champ-w { display: flex; flex-direction: column; gap: 4px; }
.fb-champ-l { font-family: var(--sans); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); }
.fb-champ { width: 100%; resize: vertical; font-family: var(--serif); font-size: 14px; line-height: 1.55; }
.fb-err { max-width: 980px; margin: 0 auto 14px; }
.fb-err p { margin: 0 0 6px; font-size: 13.5px; }
.fb-err p:last-child { margin: 0; }
.fb-actions { max-width: 980px; margin: 4px auto 0; display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.fb-compte { margin-left: auto; }
.fb-liste { max-width: 980px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 9px; }
.fb-liste-t { font-size: 17px; margin: 0; }
.fb-liste-s { margin: -4px 0 4px; }
.fb-liste-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.fb-liste-b { min-width: 0; }
.fb-liste-titre { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; }
.fb-liste-a { display: flex; gap: 4px; flex: 0 0 auto; }
@media (max-width: 760px) {
  .fb-split { grid-template-columns: 1fr; }
  .fb-meta-grid { grid-template-columns: 1fr; }
  .fb-compte { margin-left: 0; width: 100%; }
  .fb-liste-i { flex-direction: column; align-items: flex-start; }
}
/*  Veille « fiche périmée » (§7.5)                                       */
/* ===================================================================== */
.ve-topbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; max-width: 900px; margin: 0 auto 16px; }
.ve-annee-row { display: flex; align-items: center; gap: 10px; }
.ve-synth { display: flex; gap: 14px; font-family: var(--sans); font-size: 14px; color: var(--ink-soft); }
.ve-synth-i b { color: var(--ink); font-variant-numeric: tabular-nums; margin-left: 1px; }
.ve-sec-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.ve-sec-t { font-size: 18px; margin: 0; }
/* Frise verticale des réformes */
.ve-frisecard { max-width: 900px; margin: 0 auto 18px; }
.ve-frise { list-style: none; margin: 0; padding: 2px 0 0 4px; display: flex; flex-direction: column; }
.ve-frise-vide { padding: 8px 4px; }
.ve-fitem { position: relative; display: flex; align-items: flex-start; gap: 14px; padding: 11px 0 11px 22px; border-left: 2px solid var(--hairline); }
.ve-fitem::before { content: ''; position: absolute; left: -6px; top: 16px; width: 10px; height: 10px; border-radius: 50%; background: var(--c-d); box-shadow: 0 0 0 3px var(--paper); }
.ve-fitem-projet::before { background: var(--card); box-shadow: 0 0 0 3px var(--paper), inset 0 0 0 2px var(--c-d); }
.ve-fyear { flex: 0 0 auto; font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 13px; color: var(--d-text); min-width: 42px; padding-top: 1px; }
.ve-fbody { flex: 1 1 auto; min-width: 0; }
.ve-ftitre { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; line-height: 1.35; color: var(--ink); }
.ve-fmeta { margin: 0; font-family: var(--sans); font-size: 12px; color: var(--ink-soft); }
.ve-statut { margin-left: 8px; vertical-align: middle; }
.ve-statut-vote { background: var(--ok-surface); color: var(--ok-on); border-color: var(--ok-surface); }
.ve-statut-projet { background: var(--enjeu); color: var(--enjeu-ink); border-color: color-mix(in srgb, var(--gold) 40%, var(--hairline)); }
.ve-fdel { font-size: 18px; padding: 2px 9px; flex: 0 0 auto; }

.ve-fsocle { flex: 0 0 auto; color: var(--ink-soft); opacity: .5; font-size: 14px; padding-top: 2px; }
/* Formulaire « + réforme » */
.ve-fo-sum { font-family: var(--sans); font-size: 13px; font-weight: 600; color: var(--d-text); cursor: pointer; list-style: none; padding: 6px 11px; border: 1px solid var(--hairline); border-radius: 9px; }
.ve-fo-sum::-webkit-details-marker { display: none; }
.ve-fo[open] .ve-fo-sum { margin-bottom: 10px; }
.ve-fo-grid { display: grid; grid-template-columns: 150px 1.4fr 1fr auto auto; gap: 9px; align-items: center; }
.ve-fo-grid .input { width: 100%; min-width: 0; }
/* Cartes matière */
.ve-mats { max-width: 900px; margin: 0 auto; }
.ve-mats-t { margin-bottom: 12px; }
.ve-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.ve-m { display: flex; flex-direction: column; gap: 9px; }
.ve-m-perimee { border-left: 4px solid var(--danger); }
.ve-m-verifier { border-left: 4px solid var(--gold); }
.ve-m-ajour { border-left: 4px solid var(--method); }
.ve-m-h { display: flex; align-items: flex-start; gap: 11px; }
.ve-voyant { font-size: 20px; line-height: 1.1; flex: 0 0 auto; }
.ve-m-b { min-width: 0; }
.ve-m-t { margin: 0 0 2px; font-family: var(--serif); font-size: 15.5px; line-height: 1.3; }
.ve-mstatut { margin-left: 8px; vertical-align: middle; }
.ve-mstatut-fondamentale-critique { background: var(--b-surface); }
.ve-mstatut-fondamentale { background: var(--a-surface); }
.ve-mstatut-complementaire { background: var(--n-surface); }
.ve-m-s { margin: 0; }
.ve-m-aide { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); line-height: 1.45; margin: 0; }
.ve-m-projet { font-family: var(--sans); font-size: 12px; color: var(--enjeu-ink); margin: 0; }
.ve-m-a { display: flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 2px; }
.ve-verif { padding: 7px 13px; font-size: 13px; }
.ve-verif-on { color: var(--method); border-color: color-mix(in srgb, var(--method) 45%, var(--hairline)); }
.ve-m-undo { color: var(--ink-soft); font-size: 12px; padding: 5px 9px; }
@media (max-width: 620px) {
  .ve-fo-grid { grid-template-columns: 1fr 1fr; }
  .ve-topbar { justify-content: flex-start; }
}
/* ===================================================================
   Les Sources (/sources) — ingestion PDF → détection juridique
   =================================================================== */
.ing-h2 { font-family: var(--sans); font-size: 14px; letter-spacing: .02em; text-transform: uppercase; color: var(--ink-soft); margin: 22px 0 10px; }
.ing-vide { margin-top: 18px; }
/* Zone de dépôt */
.ing-drop { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  width: 100%; padding: 30px 18px; margin-top: 6px; cursor: pointer; text-align: center;
  background: var(--card-2); border: 2px dashed var(--hairline); border-radius: 16px;
  color: var(--ink); font: inherit; transition: border-color .15s, background .15s, transform .1s; }
.ing-drop:hover { border-color: var(--gold); }
.ing-drop.is-drag { border-color: var(--c-a); background: color-mix(in srgb, var(--c-a) 10%, var(--card-2)); transform: scale(1.005); }
.ing-drop-i { width: 30px; height: 30px; color: var(--gold); }
.ing-drop-t { font-family: var(--sans); font-weight: 650; font-size: 16px; }
.ing-drop-s { font-size: 13px; }
/* Deux zones de dépôt (PDF · audio) côte à côte */
.ing-drops { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 6px; }
@media (max-width: 560px) { .ing-drops { grid-template-columns: 1fr; } }
.ing-drops .ing-drop { margin-top: 0; padding: 24px 16px; }
.ing-drop-audio .ing-drop-i { color: var(--c-a); }
.ing-drop-audio:hover { border-color: var(--c-a); }
/* ---- Audio (Source mp3) : lecteur, marqueurs, transcript synchronisé ---- */
.ts-srcaudio { color: var(--c-a); font-size: 15px; line-height: 1; }
.ts-audio { padding: 14px 16px; margin-bottom: 14px; }
.ts-audio-h { display: flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 13.5px; font-weight: 600; color: var(--ink); margin-bottom: 10px; }
.ts-audio-i { width: 18px; height: 18px; color: var(--c-a); flex-shrink: 0; }
.ts-player { width: 100%; height: 40px; margin-bottom: 4px; }
.ts-noaudio { font-size: 13.5px; line-height: 1.5; margin: 0 0 8px; }
/* Marqueurs « passage flou / important » */
.ts-mk { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-top: 10px; border-top: 1px solid var(--hairline); }
.ts-mk-btns { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ts-mk-add { font-size: 13px; }
.ts-mk-hint { font-size: 12px; }
.ts-mk-list { display: flex; flex-wrap: wrap; gap: 6px; }
.ts-mk-item { display: inline-flex; align-items: center; gap: 6px; font-family: var(--sans); font-size: 12px; font-weight: 600;
  background: var(--paper-2); border: 1px solid var(--hairline); border-radius: 99px; padding: 2px 6px 2px 9px; cursor: pointer; color: var(--ink); }
.ts-mk-item:hover { border-color: var(--gold); }
.ts-mk-flou { border-left: 3px solid var(--gold); }
.ts-mk-cle { border-left: 3px solid var(--c-b); }
.ts-mk-x { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 99px; color: var(--ink-soft); font-size: 11px; }
.ts-mk-x:hover { background: var(--danger); color: #fff; }
.ts-mk-empty { font-size: 12px; }
/* Bloc transcription (import / coller / re-transcrire) */
.ts-tr { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--hairline); }
.ts-tr-lede { font-size: 13px; line-height: 1.55; margin: 0 0 10px; }
.ts-tr-stats { font-family: var(--sans); font-size: 12.5px; margin-bottom: 8px; }
.ts-tr-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* Transcript en segments cliquables (mode écoute, synchronisé à l'audio) */
.ts-ecoute { line-height: 1.95; }
.ts-para { margin: 0 0 14px; }
.ts-seg { font: inherit; font-family: var(--serif); color: var(--ink); background: none; border: 0; padding: 0 1px; margin: 0; cursor: pointer;
  border-radius: 3px; transition: background .15s, box-shadow .15s; }
.ts-seg:hover { background: color-mix(in srgb, var(--c-a) 12%, transparent); }
.ts-seg.is-actif { background: color-mix(in srgb, var(--gold) 30%, transparent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--gold) 22%, transparent); }
/* Overlay de transcription automatique (progression + transcript partiel) */
.ts-ov { width: min(560px, 100%); }
.ts-ov-bar { height: 8px; background: var(--paper-2); border-radius: 99px; overflow: hidden; margin-bottom: 10px; }
.ts-ov-fill { height: 100%; width: 0; background: var(--c-a); border-radius: 99px; transition: width .25s; }
.ts-ov-etat { font-family: var(--sans); font-size: 13.5px; margin: 0 0 8px; }
.ts-ov-partiel { font-family: var(--serif); font-size: 14.5px; line-height: 1.6; color: var(--ink); min-height: 2.6em; max-height: 30vh; overflow: auto;
  background: var(--card-2); border: 1px solid var(--hairline); border-radius: 10px; padding: 10px 12px; margin: 0 0 10px; }
.ts-ov-note { font-size: 12px; margin: 0 0 12px; }
/* Progression */
.ing-prog { margin-top: 14px; }
.ing-prog-t { font-family: var(--sans); margin-bottom: 10px; }
.ing-prog-bar { height: 8px; background: var(--paper-2); border-radius: 99px; overflow: hidden; }
.ing-prog-fill { height: 100%; background: var(--c-a); border-radius: 99px; transition: width .2s; }
.ing-prog-n { font-size: 13px; margin-top: 8px; }
/* Corpus (liste de sources) */
.ing-list { display: grid; gap: 10px; }
.ing-srccard { display: flex; align-items: stretch; gap: 6px; padding: 0; overflow: hidden; }
.ing-srccard-main { flex: 1; display: block; text-align: left; background: none; border: 0; cursor: pointer; padding: 14px 16px; font: inherit; color: inherit; }
.ing-srccard-h { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.ing-srccard-t { font-family: var(--serif); font-size: 18px; margin: 0; }
.ing-srccard-meta { font-family: var(--sans); font-size: 13px; }
.ing-orph { color: var(--c-b); }
.ing-del { align-self: center; margin-right: 8px; }

/* Chips de type */
.ing-chip { font-family: var(--sans); font-size: 11px; font-weight: 650; letter-spacing: .03em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 99px; color: #fff; white-space: nowrap; }
.ing-chip-cours { background: var(--a-surface); }
.ing-chip-td { background: var(--c-surface); }
.ing-chip-fiche-prof { background: var(--d-surface); }
.ing-chip-annale { background: var(--b-surface); }
.ing-chip-autre { background: var(--n-surface); }
/* Atelier — barre du haut */
.ing-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.ing-top-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.ing-back { display: inline-flex; align-items: center; gap: 4px; }
@media (max-width: 560px) {
  .ing-top-actions { flex: 1 1 100%; }
  .ing-top-actions .btn { flex: 1 1 auto; justify-content: center; }
}
/* Cartouche (carte d'identité éditable) */
.ing-cartouche { padding: 14px 16px; margin-bottom: 14px; }
.ing-titre { width: 100%; font-family: var(--serif); font-size: 22px; font-weight: 600; color: var(--ink);
  background: transparent; border: 0; border-bottom: 1px solid transparent; padding: 2px 0; }
.ing-titre:focus { outline: none; border-bottom-color: var(--gold); }
.ing-cartouche-2 { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.ing-sel { font-family: var(--sans); font-size: 13px; padding: 6px 10px; max-width: 100%; }
.ing-idstats { display: flex; flex-wrap: wrap; gap: 14px; font-family: var(--sans); font-size: 13px; }
.ing-idstat b { color: var(--ink); font-weight: 700; }
/* Deux colonnes */
.ing-cols { display: grid; grid-template-columns: 1.25fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 860px) { .ing-cols { grid-template-columns: 1fr; } }
.ing-col { min-width: 0; }
.ing-col-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.ing-h3 { font-family: var(--sans); font-size: 14px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; color: var(--ink-soft); margin: 0 0 8px; }
/* Bascule Lecture / Édition */
.ing-seg { display: inline-flex; background: var(--paper-2); border-radius: 99px; padding: 3px; }
.ing-seg-b { font-family: var(--sans); font-size: 13px; font-weight: 600; padding: 5px 14px; border: 0; border-radius: 99px; background: none; color: var(--ink-soft); cursor: pointer; }
.ing-seg-b.is-on { background: var(--card); color: var(--ink); box-shadow: var(--shadow); }
/* Vue de lecture surlignée */
.ing-read { font-family: var(--serif); font-size: 16.5px; line-height: 1.85; color: var(--ink);
  white-space: pre-wrap; word-wrap: break-word; max-height: 64vh; overflow: auto;
  padding: 16px 18px; background: var(--card); border: 1px solid var(--hairline); border-radius: 12px; }
.ing-read:focus { outline: 2px solid color-mix(in srgb, var(--gold) 50%, transparent); outline-offset: 2px; }
.ing-edit { width: 100%; min-height: 52vh; font-family: var(--sans); font-size: 14px; line-height: 1.7;
  padding: 14px 16px; border: 1px solid var(--hairline); border-radius: 12px; background: var(--card); color: var(--ink); resize: vertical; }
.ing-edit-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
/* Marques de surlignage par famille (fond léger + soulignage coloré) */
.ing-h { border-radius: 3px; padding: .5px 1px; background: transparent;
  border-bottom: 2px solid var(--gold); color: inherit; transition: background .2s; cursor: default; }
.ing-h-arret { border-bottom-color: var(--c-b); background: color-mix(in srgb, var(--c-b) 12%, transparent); }
.ing-h-article { border-bottom-color: var(--c-a); background: color-mix(in srgb, var(--c-a) 12%, transparent); }
.ing-h-loi { border-bottom-color: var(--c-d); background: color-mix(in srgb, var(--c-d) 14%, transparent); }
.ing-h-definition { border-bottom-color: var(--c-c); background: color-mix(in srgb, var(--c-c) 13%, transparent); }
.ing-h-condition { border-bottom-color: var(--c-e); background: color-mix(in srgb, var(--c-e) 13%, transparent); }
.ing-h-distinction { border-bottom-color: var(--c-syllo); background: color-mix(in srgb, var(--c-syllo) 13%, transparent); }
.ing-h-signal { border-bottom-color: var(--gold); background: color-mix(in srgb, var(--gold) 16%, transparent); }
.ing-h.is-cible { background: color-mix(in srgb, var(--gold) 38%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--gold) 30%, transparent); }
/* Panneau des détections */
.ing-find { padding: 14px 16px; margin-bottom: 14px; }
.ing-find-grp { margin-top: 12px; }
.ing-find-grp-h { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.ing-find-grp-t { font-family: var(--sans); font-size: 12.5px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; color: var(--ink-soft); }
.ing-find-grp-n { font-family: var(--sans); font-size: 11px; font-weight: 700; color: var(--ink-soft); background: var(--paper-2); border-radius: 99px; padding: 1px 8px; }
.ing-find-item { display: flex; align-items: baseline; gap: 4px; width: 100%; text-align: left; font: inherit;
  background: none; border: 0; border-left: 2px solid var(--hairline); padding: 4px 10px; margin: 1px 0; cursor: pointer; color: var(--ink); border-radius: 0 6px 6px 0; }
.ing-find-item:hover { background: var(--paper-2); border-left-color: var(--gold); }
.ing-fi-t { font-family: var(--sans); font-size: 13.5px; }
.ing-fi-d { font-size: 12.5px; }
.ing-fi-badge { font-family: var(--sans); font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--c-c); border: 1px solid var(--c-c); border-radius: 99px; padding: 0 6px; }
.ing-fi-sig { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; padding: 1px 7px; border-radius: 99px; color: var(--ink); }
/* Plan de production */
.ing-plan { padding: 14px 16px; }
.ing-plan-lede { font-size: 13px; line-height: 1.5; margin: 0 0 12px; }
.ing-plan-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 560px) { .ing-plan-cols { grid-template-columns: 1fr; } }
.ing-plan-col-t { font-family: var(--sans); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--ink-soft); margin-bottom: 6px; }
.ing-prod { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; font: inherit; color: var(--ink);
  background: var(--card-2); border: 1px solid var(--hairline); border-radius: 9px; padding: 8px 10px; margin: 4px 0; cursor: pointer; transition: border-color .12s, transform .08s; }
.ing-prod:hover { border-color: var(--gold); transform: translateX(2px); }
.ing-prod.is-actif { border-left: 3px solid var(--c-b); }
.ing-prod.is-passif { border-left: 3px solid var(--c-a); }
.ing-prod-l { flex: 1; font-family: var(--sans); font-size: 13px; }
.ing-prod-n { font-family: var(--sans); font-size: 11px; font-weight: 700; color: var(--b-on); background: var(--b-surface); border-radius: 99px; padding: 0 7px; }
.ing-prod-go { width: 15px; height: 15px; color: var(--ink-soft); flex-shrink: 0; }
.ing-verser { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--hairline); }
.ing-verser-b { width: 100%; justify-content: center; }
.ing-verser-s { font-size: 12.5px; line-height: 1.5; margin: 8px 0 0; }
/* Dossier complet (IA) */
.ing-dossier-btn { border-color: var(--c-e); color: var(--c-e); }
.ing-dossier-btn:hover { background: color-mix(in srgb, var(--c-e) 10%, transparent); }
.ing-dossier-btn svg { width: 16px; height: 16px; }
.ing-ov-back { position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center;
  padding: 16px; background: rgba(27,34,51,.45); backdrop-filter: blur(2px); }
.ing-ov { width: min(640px, 100%); max-height: 88vh; display: flex; flex-direction: column;
  background: var(--card); border: 1px solid var(--hairline); border-radius: 16px; box-shadow: var(--shadow); overflow: hidden; }
.ing-ov-h { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 14px 18px; border-bottom: 1px solid var(--hairline); }
.ing-ov-t { font-family: var(--serif); font-size: 19px; margin: 0; }
.ing-ov-x { font-size: 18px; line-height: 1; background: none; border: 0; color: var(--ink-soft); cursor: pointer; padding: 4px 8px; border-radius: 8px; }
.ing-ov-x:hover { background: var(--paper-2); color: var(--ink); }
.ing-ov-b { padding: 16px 18px; overflow: auto; }
.ing-ov-lede { font-size: 13.5px; line-height: 1.55; margin: 0 0 12px; }
.ing-ov-ops { display: grid; gap: 6px; }
.ing-ov-op { display: grid; grid-template-columns: auto auto 1fr; align-items: baseline; gap: 10px;
  padding: 8px 10px; border: 1px solid var(--hairline); border-radius: 10px; cursor: pointer; }
.ing-ov-op:hover { border-color: var(--gold); }
.ing-ov-op-cap { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em;
  padding: 2px 8px; border-radius: 99px; border-bottom-width: 2px; border-bottom-style: solid; }
.ing-ov-op-d { font-family: var(--sans); font-size: 13.5px; color: var(--ink); }
.ing-ov-foot { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.ing-ov-ok { font-family: var(--sans); font-size: 14.5px; line-height: 1.5; color: var(--method); margin: 0 0 4px; }
.ing-ov-err { font-family: var(--sans); color: var(--danger); margin: 0 0 4px; }
/* Bouton « Exercices actifs » : couleur des modules d'entraînement (famille méthode, c-b). */
.ing-exos-btn { border-color: var(--c-b); color: var(--c-b); }
.ing-exos-btn:hover { background: color-mix(in srgb, var(--c-b) 10%, transparent); }
.ing-exos-btn svg { width: 16px; height: 16px; }
/* ============================================================
   OCR — PDF scanné (chantier ingestion, lot 2b)
   ============================================================ */
.ing-ocr-prop p { font-family: var(--sans); line-height: 1.55; margin: 0 0 10px; }
.ing-ocr-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
/* Indicateur « OCR » sur les Sources issues de la reconnaissance (origine:'ocr'). */
.ing-srcocr { font-size: 13px; opacity: .85; }
/* ============================================================
   Le Corpus — recherche · demande à tes cours · graphe (lot 5)
   ============================================================ */
.co-sec { margin-top: 16px; display: grid; gap: 12px; }
.co-garde { border-left: 4px solid var(--c-a); margin-top: 14px; }
.co-garde-t { font-family: var(--sans); font-weight: 700; font-size: 13px; }
.co-garde-p { font-family: var(--sans); font-size: 13.5px; line-height: 1.5; margin: 4px 0 0; }
.co-onglets { margin-top: 14px; }
.co-searchrow { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
.co-champ, .co-question { flex: 1 1 260px; }
.co-hint, .co-count, .co-empty { font-family: var(--sans); font-size: 13px; line-height: 1.5; }
.co-vide { display: grid; gap: 12px; justify-items: start; }
/* Résultats de recherche */
.co-res { padding: 12px 14px; }
.co-res-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.co-res-t { font-family: var(--serif); font-weight: 600; font-size: 15px; }
.co-res-mat { font-family: var(--sans); font-size: 12px; }
.co-passage { font-family: var(--serif); font-size: 14px; line-height: 1.6; margin: 6px 0 0; color: var(--ink); }
.co-hl { background: color-mix(in srgb, var(--gold) 32%, transparent); border-radius: 3px; padding: 0 1px; }
/* Demande à tes cours */
.co-reponse { padding: 14px 16px; }
.co-reponse-h { display: flex; align-items: center; gap: 8px; font-family: var(--sans); margin-bottom: 8px; }
.co-reponse-h svg { width: 18px; height: 18px; color: var(--c-a); }
.co-reponse-p { font-family: var(--serif); font-size: 14.5px; line-height: 1.62; margin: 0 0 8px; white-space: pre-wrap; }
.co-refs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 10px 0; }
.co-refs-t { font-family: var(--sans); font-size: 12px; }
.co-ref { background: color-mix(in srgb, var(--c-a) 16%, transparent); color: var(--ink); }
.co-reponse-foot { font-family: var(--sans); font-size: 12px; margin: 6px 0 0; }
/* Graphe de citations */
.co-pont { padding: 10px 14px; }
.co-pont-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.co-pont-label { font-family: var(--serif); font-weight: 600; }
.co-pont-n { font-family: var(--sans); font-size: 12px; margin-left: auto; }
.co-pont-srcs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.co-pont-src { font-family: var(--sans); font-size: 12.5px; padding: 3px 9px; border: 1px solid var(--hairline); border-radius: 99px; background: var(--card); }
/* Mode de recherche (lot 5b) : mots-clés · sens · hybride + activation de l'index sémantique */
.co-mode { display: flex; align-items: center; gap: 10px 12px; flex-wrap: wrap; margin: 2px 0; }
.co-mode-seg { flex: 0 0 auto; }
.co-mode-ok { font-family: var(--sans); font-size: 12.5px; color: var(--method); }
.co-mode-idx { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.co-idx-note { font-family: var(--sans); font-size: 12px; }
.ing-relire[aria-pressed='true'] { background: color-mix(in srgb, var(--gold) 25%, transparent); }
.ing-relire-pill { background: color-mix(in srgb, var(--gold) 18%, transparent); }
.ar-pill-relire { white-space: nowrap; }


/* ===== Lot 10 : acquisition ===== */
/* Le débord horizontal du comparateur SE VOIT (fondu + rappel au bord droit) */
.cp-grille-scroll { position: relative; }
.cp-debord::after { content: ''; position: sticky; display: block; pointer-events: none;
  left: 100%; top: 0; margin-top: -100%; height: 100%; width: 28px; float: right;
  background: linear-gradient(270deg, var(--paper), transparent); }
.cp-cap-vide { color: var(--ink-soft); font-style: italic; font-weight: 500; }
/* Dropzones : l'affordance du pointillé tient aussi en sombre */
.ing-drop { border-color: color-mix(in srgb, var(--ink-soft) 45%, transparent); }
.ing-drop:hover { border-color: var(--gold); }
/* Banque : l'état de travail n'est plus une pille (taxonomies séparées) */
.bq-etat { display: inline-flex; align-items: center; gap: 5px; font-family: var(--sans); font-size: 12px; color: var(--ink-soft); }
.bq-etat .pastille { width: 12px; height: 12px; }
/* Veille : le groupe des jamais-révisées */
.ve-vierges { margin-top: 14px; }
.ve-vierges-sum { display: flex; align-items: center; gap: 8px; cursor: pointer; font-family: var(--sans);
  font-size: 13.5px; color: var(--ink); padding: 12px 14px; border: 1px solid var(--hairline);
  border-radius: var(--r-l); background: var(--card); }
.ve-vierges-sum:hover { border-color: var(--gold); }
.ve-vierges[open] .ve-vierges-sum { margin-bottom: 12px; }
