/* =====================================================================
   app.css — layout & composants propres au hub de l'Atelier
   S'appuie sur les tokens de theme.css (parchemin & encre, filets dorés).
   UI en sans (boutons, nav), lecture en serif (titres, intentions).
   ===================================================================== */
:root { --nav-w: 266px; --view-max: 1120px; }

/* ---------- Ossature ---------- */
.wrap { display: flex; min-height: 100vh; align-items: stretch; }

#sidebar {
  flex: 0 0 var(--nav-w); width: var(--nav-w);
  position: sticky; top: 0; align-self: flex-start; height: 100vh;
  display: flex; flex-direction: column;
  background: var(--paper-2); border-right: 1px solid var(--hairline);
  padding: 16px 14px; gap: 4px; overflow-y: auto;
}
.main-col { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }

.topbar {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; gap: 8px;
  padding: 10px 18px; min-height: 54px;
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: saturate(1.2) blur(6px);
  border-bottom: 1px solid var(--hairline);
}
.topbar-spacer { flex: 1 1 auto; }
.topbar-tools { display: flex; gap: 6px; }
.topbar-brand { display: none; }

.view { flex: 1 1 auto; width: 100%; max-width: var(--view-max); margin: 0 auto; padding: 26px 22px 64px; }
.view:focus { outline: none; }

/* ---------- Boutons d'icône (topbar) ---------- */
.iconbtn {
  display: inline-grid; place-items: center; width: 38px; height: 38px;
  border: 1px solid var(--hairline); background: var(--card); color: var(--ink-soft);
  border-radius: 10px; cursor: pointer; box-shadow: var(--shadow);
  transition: border-color .15s, color .15s;
}
.iconbtn:hover { border-color: var(--gold); color: var(--ink); }
.iconbtn:focus-visible { outline: 2px solid var(--c-a); outline-offset: 2px; }
.iconbtn svg { width: 19px; height: 19px; }
.menu-btn { display: inline-grid; }   /* visible aussi sur bureau : replie/affiche le panneau */

/* Toute icône dans un bouton garde une taille fixe (sinon un SVG sans dimension s'étire). */
.btn svg { width: 18px; height: 18px; flex: 0 0 auto; }

/* ---------- Marque « </> » ---------- */
.brand-mark {
  font-family: var(--sans); font-weight: 700; letter-spacing: -.06em;
  display: inline-grid; place-items: center;
  width: 30px; height: 30px; border-radius: 9px;
  border: 1.5px solid var(--gold); color: var(--gold);
  background: color-mix(in srgb, var(--gold) 9%, var(--card)); font-size: 12.5px;
}
.brand { display: flex; align-items: center; gap: 10px; padding: 6px 8px 12px; text-decoration: none; color: inherit; }
.brand-t { display: flex; flex-direction: column; line-height: 1.18; }
.brand-t b { font-family: var(--serif); font-size: 16px; color: var(--ink); }
.brand-t span { font-family: var(--sans); font-size: 11px; color: var(--ink-soft); }

/* ---------- Navigation latérale ---------- */
.sidenav { display: flex; flex-direction: column; gap: 2px; }

/* Sélecteur d'années (portée globale) */
.scope-sel { padding: 4px 8px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--hairline); }
.scope-lab { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; font-family: var(--sans); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 6px; }
.scope-hint { font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--c-c); }
.scope-chips { display: flex; gap: 6px; }
.scope-chips + .scope-chips { margin-top: 5px; }
.scope-sems { gap: 4px; }
.scope-chip { flex: 1 1 0; min-width: 0; padding: 6px 0; border: 1px solid var(--hairline); border-radius: 8px; background: var(--card); font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 12.5px; font-weight: 600; color: var(--ink-soft); cursor: pointer; transition: background .12s, color .12s, border-color .12s; }
.scope-chip:hover { border-color: var(--c-c); }
.scope-chip.is-on { background: var(--c-c); border-color: var(--c-c); color: #fff; }
.scope-chip-sm { padding: 5px 0; font-size: 11px; border-radius: 7px; }
.scope-chip-sm.is-on { background: color-mix(in srgb, var(--c-c) 80%, #000); }
.nav-section {
  font-family: var(--sans); font-size: 10px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--ink-soft); padding: 14px 8px 5px;
}
.navlink {
  display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 9px;
  font-family: var(--sans); font-size: 13.5px; color: var(--ink); text-decoration: none;
  border: 1px solid transparent;
}
.navlink:hover { background: var(--card); border-color: var(--hairline); }
.navlink.is-active { background: var(--card); border-color: var(--hairline); box-shadow: var(--shadow); font-weight: 600; }
.navlink svg { width: 17px; height: 17px; color: var(--ink-soft); flex: 0 0 auto; }
.nav-mark { width: 22px; height: 22px; font-size: 9px; border-radius: 6px; }

.nav-fam { display: flex; align-items: center; gap: 9px; padding: 6px 10px; font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); }
.nav-fam-dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
.nav-fam-t { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-fam-n { font-size: 11px; font-weight: 700; color: var(--ink-soft); opacity: .7; }

.side-foot { margin-top: auto; padding: 12px 8px 4px; display: flex; flex-direction: column; gap: 3px;
  font-family: var(--sans); font-size: 10.5px; color: var(--ink-soft); border-top: 1px solid var(--hairline); }
.side-foot-priv { opacity: .8; }

/* ---------- Accueil (hub) ---------- */
.hub-hero { text-align: center; max-width: 64ch; margin: 8px auto 30px; }
.hub-mark { width: 60px; height: 60px; border-radius: 16px; font-size: 23px; border-width: 2px; margin: 6px auto 14px; }
.hub-title { font-size: clamp(30px, 4vw, 42px); margin: 0 0 10px; letter-spacing: .01em; }
.hub-lede { font-size: 17px; color: var(--ink-soft); margin: 0 auto 18px; max-width: 56ch; }
.hub-gardefou { text-align: left; max-width: 60ch; margin: 0 auto 16px; font-size: 14px; }
.hub-state { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); }
.hub-state-n { font-weight: 700; color: var(--c-a); }

/* Filet doré décoratif entre les familles */
.fam { margin: 0 0 30px; }
.fam-h { display: flex; align-items: flex-start; gap: 11px; padding-bottom: 10px; margin-bottom: 14px; border-bottom: 1px solid var(--hairline); }
.fam-dot { width: 11px; height: 11px; border-radius: 50%; background: currentColor; margin-top: 6px; flex: 0 0 auto; }
.fam-ht { flex: 1 1 auto; min-width: 0; }
.fam-t { font-size: 20px; margin: 0; }
.fam-note { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 2px 0 0; }
.fam-count { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--ink-soft); white-space: nowrap; padding-top: 4px; }

.fam-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(264px, 1fr)); gap: 14px; }
.toolcard {
  display: flex; flex-direction: column; gap: 7px;
  background: var(--card); border: 1px solid var(--hairline); border-radius: 13px;
  box-shadow: var(--shadow); padding: 14px 15px; text-decoration: none; color: inherit;
  position: relative;
}
.toolcard.is-dispo { cursor: pointer; transition: border-color .15s, transform .05s; }
.toolcard.is-dispo:hover { border-color: var(--gold); }
.toolcard.is-dispo:active { transform: translateY(1px); }
.toolcard-h { display: flex; align-items: center; gap: 7px; }
.toolcard-code { font-family: var(--sans); font-size: 10.5px; font-weight: 700; color: #fff; background: var(--c-cc); padding: 2px 7px; border-radius: 20px; }
.toolcard-star { color: var(--gold); font-size: 14px; line-height: 1; }
.toolcard-phase { margin-left: auto; font-family: var(--sans); font-size: 10px; font-weight: 700; color: var(--ink-soft); border: 1px solid var(--hairline); border-radius: 20px; padding: 1px 7px; }
.toolcard-t { font-size: 15.5px; margin: 0; line-height: 1.25; }
.toolcard-p { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 0; line-height: 1.45; }
.toolcard-f { margin-top: auto; padding-top: 4px; }
.toolcard-soon { font-family: var(--sans); font-size: 11px; color: var(--ink-soft); opacity: .75; }
.pill.dispo { background: var(--method); }

/* ---------- Vues « panneau » (sauvegarde) ---------- */
.view-head { margin: 0 0 22px; }
.view-title { font-size: clamp(24px, 3vw, 32px); margin: 0 0 6px; }
.view-sub { font-family: var(--sans); font-size: 13.5px; color: var(--ink-soft); margin: 0; }
.panels { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; align-items: start; }
.panel { display: flex; flex-direction: column; gap: 10px; }
.panel-t { font-size: 18px; margin: 0; }
.panel-lede { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: -2px 0 4px; line-height: 1.5; }

.row { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.field { display: flex; flex-direction: column; gap: 5px; }
.field-l { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); }
.muted { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); line-height: 1.5; margin: 0; }
.confirm { margin-top: 6px; }
.confirm p { margin: 0 0 9px; font-size: 14px; }
.panel .input { min-width: 0; flex: 1 1 180px; }

/* Segments (thème, taille, modèle) */
.seg { display: inline-flex; border: 1px solid var(--hairline); border-radius: 10px; overflow: hidden; background: var(--card); width: fit-content; }
.segbtn { font-family: var(--sans); font-size: 13px; padding: 7px 14px; border: none; background: none; color: var(--ink-soft); cursor: pointer; border-right: 1px solid var(--hairline); }
.segbtn:last-child { border-right: none; }
.segbtn[data-on="true"] { background: var(--c-a); color: #fff; font-weight: 600; }
.segbtn:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; }

/* ===================================================================== */
/*  Minuteur 50/10 (§10.1)                                               */
/* ===================================================================== */
.mn-card { max-width: 560px; margin: 0 auto 18px; display: flex; flex-direction: column; gap: 14px; }
.mn-obj { font-size: 16px; padding: 12px 14px; }
.mn-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.mn-durees { display: flex; gap: 10px; }
.mn-pas { display: flex; flex-direction: column; gap: 4px; font-family: var(--sans); font-size: 11px; color: var(--ink-soft); }
.mn-num { width: 76px; text-align: center; }
.mn-presets { display: flex; gap: 8px; }
.mn-options { display: flex; flex-direction: column; gap: 8px; border-top: 1px dashed var(--hairline); padding-top: 12px; }
.mn-switchrow { display: flex; align-items: center; justify-content: space-between; font-family: var(--sans); font-size: 13.5px; color: var(--ink); }
.mn-switch { width: 42px; height: 24px; border-radius: 20px; border: 1px solid var(--hairline); background: var(--paper-2); position: relative; cursor: pointer; transition: background .15s, border-color .15s; flex: 0 0 auto; }
.mn-switch-k { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--card); box-shadow: var(--shadow); transition: transform .15s; }
.mn-switch[aria-checked="true"] { background: var(--c-c); border-color: var(--c-c); }
.mn-switch[aria-checked="true"] .mn-switch-k { transform: translateX(18px); }
.mn-switch:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.mn-go { justify-content: center; padding: 13px; font-size: 15px; }
.mn-go:disabled { opacity: .5; cursor: not-allowed; }
.mn-ios { margin: 0; }

/* Course : grand cadran */
.mn-course { align-items: center; }
.mn-cadran { position: relative; width: min(300px, 78vw); aspect-ratio: 1; display: grid; place-items: center; }
.mn-ring { width: 100%; height: 100%; }
.mn-ring-bg { stroke: var(--hairline); }
.mn-ring-fg { transition: stroke-dashoffset .25s linear; }
.mn-ring-travail .mn-ring-fg { stroke: var(--c-c); }
.mn-ring-pause .mn-ring-fg { stroke: var(--gold); }
.mn-ring-center { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; }
.mn-temps { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 600; font-size: clamp(46px, 13vw, 66px); line-height: 1; color: var(--ink); letter-spacing: -.01em; }
.mn-phase { font-family: var(--sans); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-soft); margin-top: 6px; }
.mn-objline { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; font-family: var(--sans); font-size: 14px; color: var(--ink-soft); margin: 0; text-align: center; }
.mn-objline svg { width: 15px; height: 15px; color: var(--c-c); flex: 0 0 auto; }
.mn-ctrls { display: flex; gap: 10px; }

/* Bilan (mini-journal) */
.mn-bilan { align-items: center; text-align: center; }
.mn-bilan-h { display: flex; align-items: center; gap: 10px; }
.mn-bilan-h h2 { margin: 0; font-size: 21px; }
.mn-check { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--method); color: #fff; font-weight: 700; }
.mn-journal { display: flex; gap: 9px; flex-wrap: wrap; justify-content: center; }

/* Chaîne des blocs du jour */
.mn-chaine { max-width: 560px; margin: 0 auto; text-align: center; }
.mn-chaine-h { font-family: var(--sans); font-size: 13.5px; color: var(--ink-soft); margin-bottom: 8px; }
.mn-chaine-h b { color: var(--c-c); font-size: 16px; }
.mn-chaine-sem { opacity: .85; }
.mn-dots { display: flex; gap: 7px; justify-content: center; flex-wrap: wrap; }
.mn-dot { width: 11px; height: 11px; border-radius: 50%; background: var(--hairline); }
.mn-dot.on { background: var(--gold); box-shadow: 0 0 0 2px color-mix(in srgb, var(--gold) 25%, transparent); }

@media (max-width: 560px) { .mn-row2 { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .mn-ring-fg, .mn-switch-k { transition: none; } }

/* ===================================================================== */
/*  Suivi de chaîne / streak (§11.1)                                     */
/* ===================================================================== */
.sk-stats { max-width: 620px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 14px; }
.sk-figs { display: flex; align-items: baseline; gap: 18px; }
.sk-fig { display: flex; flex-direction: column; }
.sk-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(34px, 8vw, 46px); line-height: 1; color: var(--c-c); }
.sk-l { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
.sk-fig-soft .sk-n { color: var(--ink-soft); font-size: clamp(22px, 5vw, 28px); }
.sk-sep { flex: 0 0 1px; align-self: stretch; background: var(--hairline); margin: 4px 0; }
.sk-msg { margin: 0; font-size: 14px; }
.sk-msg-warn { background: var(--enjeu); border-left-color: var(--gold); color: var(--enjeu-ink); }

.sk-vuebar { display: flex; justify-content: center; margin: 0 auto 14px; }
.sk-seg { }

.sk-cal { max-width: 620px; margin: 0 auto 16px; }
.sk-cal-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.sk-cal-t { text-align: center; display: flex; flex-direction: column; gap: 2px; }
.sk-cal-t b { font-family: var(--serif); font-size: 17px; }
.sk-cal-n { font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); }

.sk-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.sk-dow { font-family: var(--sans); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); text-align: center; padding-bottom: 2px; }
.sk-cell { position: relative; aspect-ratio: 1; display: grid; place-items: center; border-radius: 10px; }
.sk-d { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); z-index: 1; }
.sk-empty { }
.sk-manque { background: var(--paper-2); }
.sk-futur { opacity: .4; }
.sk-aujourdhui { box-shadow: inset 0 0 0 2px var(--c-c); }
.sk-aujourdhui .sk-d { color: var(--c-c); font-weight: 700; }
.sk-mark { position: absolute; inset: 14%; border-radius: 50%; background: var(--gold); box-shadow: 0 1px 2px rgba(27,34,51,.18); }
.sk-fait .sk-d { color: #fff; font-weight: 700; }

/* Heatmap annuelle */
.sk-hm { display: flex; gap: 3px; overflow-x: auto; padding-bottom: 6px; }
.sk-hm-col { display: flex; flex-direction: column; gap: 3px; }
.sk-hm-cell { width: 12px; height: 12px; border-radius: 3px; background: var(--paper-2); flex: 0 0 auto; }
.sk-hm-manque { background: var(--paper-2); }
.sk-hm-fait { background: var(--gold); }
.sk-hm-aujourdhui { box-shadow: inset 0 0 0 1.5px var(--c-c); }
.sk-hm-futur { background: transparent; }
.sk-hm-leg { display: flex; align-items: center; gap: 5px; justify-content: flex-end; margin-top: 8px; font-family: var(--sans); font-size: 11px; color: var(--ink-soft); }
.sk-hm-leg .sk-hm-cell { display: inline-block; }

.sk-plancher { max-width: 620px; margin: 0 auto; display: flex; flex-direction: column; gap: 8px; }

/* ===================================================================== */
/*  Intentions de mise en œuvre (§10.3)                                  */
/* ===================================================================== */
.in-demain { max-width: 680px; margin: 0 auto 16px; border-left: 5px solid var(--gold); background: var(--card-2); display: flex; flex-direction: column; gap: 6px; }
.in-demain-lbl { display: flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-c); }
.in-demain-lbl svg { width: 15px; height: 15px; }
.in-demain-act { font-family: var(--serif); font-size: 19px; line-height: 1.3; margin: 2px 0; color: var(--ink); }
.in-demain-ctx { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); margin: 0 0 6px; }

.in-form { max-width: 680px; margin: 0 auto 18px; display: flex; flex-direction: column; gap: 12px; }
.in-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.in-grid .in-action { grid-column: 1 / -1; }
.in-form .input { width: 100%; }
.in-form-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.in-demain-tog { flex: 1 1 auto; }

.in-liste { max-width: 680px; margin: 0 auto; display: flex; flex-direction: column; gap: 10px; }
.in-vide { max-width: 680px; margin: 0 auto; text-align: center; padding: 18px; }
.in-sep { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-soft); margin: 8px 0 2px; }
.in-card { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 13px 15px; }
.in-card-b { min-width: 0; }
.in-si { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); margin: 0 0 2px; }
.in-alors { font-family: var(--serif); font-size: 15.5px; color: var(--ink); margin: 0; line-height: 1.35; }
.in-card-b b { color: var(--c-c); font-family: var(--sans); font-size: .82em; text-transform: uppercase; letter-spacing: .04em; }
.in-card-a { display: flex; align-items: center; gap: 4px; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; }
.in-mini { padding: 5px 9px; font-size: 12px; }
.in-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.in-del:hover { color: var(--danger); border-color: var(--danger); }
.in-pill-demain { background: var(--gold); }
.in-done { opacity: .62; }
.in-done .in-alors { text-decoration: line-through; text-decoration-color: var(--hairline); }

@media (max-width: 560px) { .in-grid { grid-template-columns: 1fr; } .in-card { flex-direction: column; } .in-card-a { justify-content: flex-start; } }

/* ===================================================================== */
/*  Garde-fou anti-impulsivité (§11.4)                                   */
/* ===================================================================== */
.gf-focuscard, .gf-capturecard { max-width: 680px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 10px; }
.gf-capture-row { display: flex; gap: 9px; }
.gf-capture-row .input { flex: 1 1 auto; min-width: 0; }

.gf-liste { max-width: 680px; margin: 0 auto; display: flex; flex-direction: column; gap: 9px; }
.gf-vide { max-width: 680px; margin: 0 auto; text-align: center; padding: 18px; }
.gf-sep { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-soft); margin: 8px 0 2px; }
.gf-sep-row { display: flex; align-items: center; justify-content: space-between; }
.gf-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 15px; }
.gf-texte { margin: 0; font-family: var(--serif); font-size: 15px; color: var(--ink); min-width: 0; }
.gf-item-a { display: flex; gap: 4px; flex: 0 0 auto; }
.gf-done { opacity: .6; }
.gf-done .gf-texte { text-decoration: line-through; text-decoration-color: var(--hairline); }

/* Overlay focus (masque l'Atelier) */
.gf-overlay { position: fixed; inset: 0; z-index: 50; background: var(--paper); display: grid; place-items: center; padding: 24px; overflow-y: auto; }
.gf-card { max-width: 520px; width: 100%; background: var(--card); border: 1px solid var(--hairline); border-radius: 18px; box-shadow: var(--shadow); padding: 28px; display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; }
.gf-card h2 { margin: 0; font-size: 24px; }
.gf-lede { font-family: var(--sans); font-size: 14px; color: var(--ink-soft); margin: 0; max-width: 42ch; line-height: 1.5; }
.gf-mark { display: inline-grid; place-items: center; width: 54px; height: 54px; border-radius: 50%; border: 2px solid var(--gold); color: var(--gold); font-size: 26px; }
.gf-mark-on { border-color: var(--c-c); color: var(--c-c); }
.gf-checklist { list-style: none; margin: 4px 0; padding: 0; display: flex; flex-direction: column; gap: 9px; width: 100%; max-width: 340px; text-align: left; }
.gf-check-l { display: flex; align-items: center; gap: 10px; font-family: var(--sans); font-size: 14px; color: var(--ink); cursor: pointer; }
.gf-check-l input { width: 17px; height: 17px; accent-color: var(--c-c); flex: 0 0 auto; }
.gf-actions { justify-content: center; }
.gf-card-focus .gf-capture-row { width: 100%; }
.gf-capture { text-align: left; }
.gf-compteur { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 0; }

@media (max-width: 560px) { .gf-item { flex-direction: column; align-items: flex-start; } }

/* ===================================================================== */
/*  Flashcards / répétition espacée (§9.1)                               */
/* ===================================================================== */
.fc-tableau { max-width: 620px; margin: 0 auto; display: flex; flex-direction: column; gap: 18px; }

/* Bloc « réviser » */
.fc-reviser { display: flex; flex-direction: column; gap: 14px; align-items: center; text-align: center; }
.fc-reviser-h { display: flex; align-items: center; gap: 14px; }
.fc-due-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(40px, 10vw, 56px); line-height: 1; color: var(--c-c); }
.fc-due-l { display: flex; flex-direction: column; align-items: flex-start; font-family: var(--sans); }
.fc-due-l b { font-size: 15px; color: var(--ink); }
.fc-due-l span { font-size: 12.5px; color: var(--ink-soft); }
.fc-scope { max-width: 100%; }
.fc-go { justify-content: center; padding: 12px 18px; font-size: 15px; min-width: 220px; }
.fc-go:disabled { opacity: .5; cursor: not-allowed; }
.fc-stats { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 0; }
.fc-vide { text-align: center; padding: 4px 10px; }

/* Ajout de cartes */
.fc-ajout { display: flex; flex-direction: column; gap: 12px; }
.fc-ajout-t { font-size: 17px; margin: 0; }
.fc-ta { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.5; }
.fc-simple { display: flex; flex-direction: column; gap: 9px; }
.fc-coller-d > summary { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; padding: 6px 0; }
.fc-coller-d[open] > summary { color: var(--ink); margin-bottom: 8px; }
.fc-coller { font-family: var(--mono, ui-monospace, monospace); font-size: 13px; }
.fc-apercu { display: flex; flex-direction: column; gap: 5px; margin: 8px 0; }
.fc-apercu-c { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); line-height: 1.4; }
.fc-apercu-c b { color: var(--ink); font-weight: 600; }

/* Paquets */
.fc-paquets { display: flex; flex-direction: column; gap: 9px; }
.fc-paquet { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 15px; }
.fc-paquet-b { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fc-paquet-b b { font-family: var(--serif); font-size: 15px; }
.fc-paquet-due { color: var(--c-c); font-weight: 600; }
.fc-paquet-a { display: flex; gap: 4px; flex: 0 0 auto; }
.fc-mini { padding: 5px 11px; font-size: 12.5px; }
.fc-mini:disabled { opacity: .45; cursor: not-allowed; }
.fc-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 10px; }
.fc-del:hover { color: var(--danger); border-color: var(--danger); }
.fc-confirm { margin-top: 6px; }

/* Session : carte plein centre */
.fc-session { max-width: 620px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
.fc-session-h { display: flex; align-items: center; justify-content: space-between; }
.fc-prog-n { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); display: flex; align-items: center; gap: 8px; }
.fc-pill { background: var(--c-c); }
.fc-prog { height: 6px; border-radius: 6px; background: var(--paper-2); overflow: hidden; }
.fc-prog-fill { display: block; height: 100%; background: var(--c-c); border-radius: 6px; transition: width .25s ease; }

.fc-carte { min-height: 230px; display: flex; align-items: center; justify-content: center; padding: 26px 22px; }
.fc-carte-corps { width: 100%; display: flex; flex-direction: column; gap: 14px; }
.fc-recto { font-family: var(--serif); font-size: clamp(19px, 3.6vw, 24px); line-height: 1.4; color: var(--ink); text-align: center; white-space: pre-wrap; }
.fc-sep { width: 100%; border: none; border-top: 1px dashed var(--hairline); margin: 2px 0; }
.fc-verso { font-family: var(--serif); font-size: clamp(16px, 3vw, 19px); line-height: 1.55; color: var(--ink); text-align: center; white-space: pre-wrap; }

.fc-revrow { justify-content: center; }
.fc-reveal { padding: 12px 22px; font-size: 15px; }
.fc-notes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }
.fc-note { flex-direction: column; gap: 2px; padding: 11px 6px; border-width: 1px; }
.fc-note-l { font-size: 13.5px; font-weight: 600; }
.fc-note-i { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 11px; color: var(--ink-soft); }
.fc-encore { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 40%, var(--hairline)); }
.fc-encore:hover { background: color-mix(in srgb, var(--danger) 9%, var(--card)); border-color: var(--danger); }
.fc-difficile { color: var(--gold); border-color: color-mix(in srgb, var(--gold) 40%, var(--hairline)); }
.fc-difficile:hover { background: color-mix(in srgb, var(--gold) 11%, var(--card)); border-color: var(--gold); }
.fc-correct { color: var(--method); border-color: color-mix(in srgb, var(--method) 40%, var(--hairline)); }
.fc-correct:hover { background: color-mix(in srgb, var(--method) 10%, var(--card)); border-color: var(--method); }
.fc-facile { color: var(--c-c); border-color: color-mix(in srgb, var(--c-c) 40%, var(--hairline)); }
.fc-facile:hover { background: color-mix(in srgb, var(--c-c) 10%, var(--card)); border-color: var(--c-c); }
.fc-note-i { color: inherit; opacity: .8; }
.fc-aide { text-align: center; margin: 0; }

/* Résumé */
.fc-resume { max-width: 560px; margin: 0 auto; align-items: center; text-align: center; display: flex; flex-direction: column; gap: 10px; }
.fc-resume-h { display: flex; align-items: center; gap: 10px; }
.fc-resume-h h2 { margin: 0; font-size: 21px; }
.fc-check { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--method); color: #fff; font-weight: 700; }
.fc-resume-p { font-size: 15px; margin: 0; }
.fc-resume-p b { color: var(--c-c); font-size: 18px; }
.fc-resume-a { justify-content: center; }

@media (max-width: 560px) { .fc-notes { grid-template-columns: repeat(2, 1fr); } }
@media (prefers-reduced-motion: reduce) { .fc-prog-fill { transition: none; } }

/* Sangsues (cartes à reformuler) */
.fc-sangsues { display: flex; flex-direction: column; gap: 10px; border-left: 3px solid var(--gold); }
.fc-sangsues-h { display: flex; align-items: flex-start; gap: 10px; }
.fc-sangsues-ic { color: var(--gold); font-size: 17px; line-height: 1.3; flex: 0 0 auto; }
.fc-sangsues-h b { font-family: var(--sans); font-size: 14px; }
.fc-sangsues-h p { margin: 2px 0 0; font-size: 12.5px; line-height: 1.45; }
.fc-sangsue { display: flex; flex-direction: column; gap: 8px; padding: 9px 0; border-top: 1px solid var(--hairline); }
.fc-sangsue-b { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.fc-sangsue-r { font-family: var(--serif); font-size: 14.5px; color: var(--ink); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fc-sangsue-n { flex: 0 0 auto; font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 12px; font-weight: 700; color: var(--gold); }
.fc-sangsue-a { display: flex; gap: 6px; flex-wrap: wrap; }

/* Réglages de révision (raffinements SM-2) */
.fc-reglages > summary { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.fc-reglages[open] > summary { color: var(--ink); margin-bottom: 12px; }
.fc-rgl-grid { display: flex; flex-direction: column; gap: 14px; }
.fc-rgl-f { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; align-items: center; }
.fc-rgl-l { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fc-rgl-l b { font-family: var(--sans); font-size: 13.5px; font-weight: 600; }
.fc-rgl-l span { font-size: 12px; line-height: 1.4; }
.fc-rgl-c { flex: 0 0 auto; justify-self: end; }
.fc-rgl-range { display: flex; align-items: center; gap: 9px; }
.fc-range { accent-color: var(--c-c); width: 130px; }
.fc-rgl-val { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 13px; color: var(--c-c); font-weight: 600; min-width: 46px; text-align: right; }
.fc-rgl-inline { display: flex; align-items: center; gap: 7px; }
.fc-rgl-num { width: 84px; }
.fc-rgl-check { display: inline-flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: 13px; color: var(--ink); cursor: pointer; }
.fc-rgl-check input { width: 17px; height: 17px; accent-color: var(--c-c); }
@media (max-width: 560px) { .fc-rgl-f { grid-template-columns: 1fr; } .fc-rgl-c { justify-self: start; } }

/* ===================================================================== */
/*  Entraîneur de syllogisme (§8.1)                                      */
/* ===================================================================== */
.sy-outils { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; }
.sy-outils-row .input, .sy-enonce { width: 100%; }
.sy-outils-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 12px; align-items: end; }
.sy-outils-row2 > * { min-width: 0; }
.sy-outils-row2 .input { width: 100%; }
.sy-neuf { white-space: nowrap; }

/* Le fil visuel Majeure → Mineure → Conclusion */
.sy-fil { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 0; position: relative; }
.sy-bloc { margin: 0 auto 0; width: 100%; border-left: 3px solid var(--c-b); display: flex; flex-direction: column; gap: 10px; border-radius: 13px; }
.sy-fil .sy-bloc + .sy-bloc { margin-top: 14px; position: relative; }
.sy-fil .sy-bloc + .sy-bloc::before { content: ''; position: absolute; left: -2px; top: -14px; height: 14px; width: 3px; background: color-mix(in srgb, var(--c-b) 45%, transparent); }
.sy-bloc-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.sy-bloc-k { font-family: var(--serif); font-size: 18px; color: var(--c-b); font-weight: 600; }
.sy-bloc-s { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); }

.sy-maj, .sy-min-app, .sy-concl, .sy-enonce { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.5; }
.sy-conds-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.sy-add { font-size: 12.5px; color: var(--c-b); }
.sy-hint { margin: 0; }
.sy-conds { display: flex; flex-direction: column; gap: 8px; }
.sy-cond { display: flex; align-items: center; gap: 8px; }
.sy-cond-n { flex: 0 0 auto; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--c-b) 12%, var(--card)); color: var(--c-b); font-family: var(--sans); font-size: 12px; font-weight: 700; }
.sy-cond-lib { flex: 1 1 auto; min-width: 0; }
.sy-type { flex: 0 0 auto; font-size: 11.5px; padding: 5px 9px; color: var(--ink-soft); }
.sy-type[aria-pressed="true"] { color: var(--c-b); border-color: var(--c-b); }
.sy-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; flex: 0 0 auto; }
.sy-del:hover { color: var(--danger); border-color: var(--danger); }

.sy-mins { display: flex; flex-direction: column; gap: 10px; }
.sy-min { display: flex; flex-direction: column; gap: 5px; }
.sy-min-lab { font-family: var(--sans); font-size: 12.5px; font-weight: 600; color: var(--ink); padding-left: 2px; }
.sy-min-lab::before { content: '↳ '; color: var(--c-b); }

.sy-nuance { display: flex; align-items: flex-start; gap: 9px; font-family: var(--sans); font-size: 13px; color: var(--ink); cursor: pointer; line-height: 1.4; }
.sy-nuance input { width: 17px; height: 17px; margin-top: 1px; accent-color: var(--c-b); flex: 0 0 auto; }

.sy-actions { max-width: 760px; margin: 16px auto 0; display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.sy-verif { }
.sy-ia-note { flex: 1 1 220px; min-width: 0; font-size: 11.5px; }

/* Verdict (complétude locale) */
.sy-verdict { max-width: 760px; margin: 16px auto 0; display: flex; flex-direction: column; gap: 12px; scroll-margin-top: 70px; }
.sy-verdict-h { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; font-family: var(--sans); }
.sy-verdict-badge { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; font-weight: 700; flex: 0 0 auto; }
.sy-verdict-h.is-ok .sy-verdict-badge { background: var(--method); }
.sy-verdict-h.is-warn .sy-verdict-badge { background: var(--gold); }
.sy-checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.sy-check { display: flex; align-items: center; gap: 9px; font-family: var(--sans); font-size: 13.5px; }
.sy-check-i { flex: 0 0 auto; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; font-size: 12px; font-weight: 700; }
.sy-check.ok .sy-check-i { background: color-mix(in srgb, var(--method) 16%, var(--card)); color: var(--method); }
.sy-check.ko .sy-check-i { background: var(--paper-2); color: var(--ink-soft); }
.sy-check-t { flex: 1 1 auto; min-width: 0; }
.sy-check.ko .sy-check-t { color: var(--ink-soft); }
.sy-warns { display: flex; flex-direction: column; gap: 6px; border-top: 1px dashed var(--hairline); padding-top: 10px; }
.sy-warn { margin: 0; font-family: var(--sans); font-size: 12.5px; color: var(--enjeu-ink); }
.sy-warn b { color: var(--gold); }

.sy-pill-alt { background: var(--c-b); }
.sy-pill-warn { background: var(--gold); }
.sy-pill-ok { background: var(--method); }

/* Coach IA */
.sy-coach { max-width: 760px; margin: 14px auto 0; display: flex; flex-direction: column; gap: 9px; border-left: 3px solid var(--c-e); }
.sy-coach-err { border-left-color: var(--danger); }
.sy-coach-h { font-family: var(--serif); font-size: 16px; }
.sy-coach-avis { margin: 0; font-size: 14.5px; line-height: 1.5; }
.sy-coach-pts { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.sy-coach-pt { display: flex; align-items: baseline; gap: 8px; font-family: var(--sans); font-size: 13px; line-height: 1.45; }
.sy-coach-asp { background: var(--c-e); flex: 0 0 auto; }
.sy-coach-foot { margin: 4px 0 0; }

/* Carnet */
.sy-carnet { max-width: 760px; margin: 22px auto 0; display: flex; flex-direction: column; gap: 9px; }
.sy-carnet-t { font-size: 17px; margin: 0 0 2px; }
.sy-carnet-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.sy-carnet-b { min-width: 0; }
.sy-carnet-titre { margin: 0 0 2px; font-family: var(--serif); font-size: 14.5px; line-height: 1.35; }
.sy-carnet-b .pill { margin-left: 8px; }
.sy-carnet-a { display: flex; gap: 4px; flex: 0 0 auto; }
.sy-mini { padding: 5px 10px; font-size: 12.5px; }

@media (max-width: 620px) {
  .sy-outils-row2 { grid-template-columns: 1fr; }
  .sy-carnet-i { flex-direction: column; align-items: flex-start; }
}

/* ===================================================================== */
/*  Brain-dump / restitution (§9.2)                                      */
/* ===================================================================== */
.bd-choix { max-width: 680px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
.bd-seg { width: fit-content; }
.bd-ref, .bd-dump-zone { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.55; }
.bd-row { display: flex; gap: 12px; }
.bd-timer { width: fit-content; min-width: 160px; }
.bd-go { justify-content: center; padding: 12px; font-size: 15px; }
.bd-go:disabled { opacity: .5; cursor: not-allowed; }
.bd-note { display: flex; align-items: flex-start; gap: 7px; margin: 0; }
.bd-note svg { width: 15px; height: 15px; color: var(--c-c); flex: 0 0 auto; margin-top: 1px; }

/* Page blanche immersive */
.bd-dump { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.bd-dump-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.bd-dump-t { font-family: var(--serif); font-size: 17px; }
.bd-dump-meta { display: flex; align-items: center; gap: 12px; font-family: var(--sans); }
.bd-tmr { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 16px; color: var(--c-c); }
.bd-tmr-fin { color: var(--gold); }
.bd-compteur { font-size: 12.5px; color: var(--ink-soft); }
.bd-dump-zone { min-height: 320px; font-size: 15.5px; }
.bd-dump-a { display: flex; gap: 10px; }

/* Comparaison */
.bd-compare { max-width: 900px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
.bd-cov { display: flex; align-items: center; gap: 14px; max-width: 360px; }
.bd-cov-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(30px, 7vw, 40px); line-height: 1; color: var(--c-c); }
.bd-cov-l { display: flex; flex-direction: column; font-family: var(--sans); }
.bd-cov-l b { font-size: 14px; color: var(--ink); }
.bd-cov-l span { font-size: 12.5px; color: var(--ink-soft); }

.bd-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.bd-col { background: var(--card); border: 1px solid var(--hairline); border-radius: 13px; box-shadow: var(--shadow); overflow: hidden; }
.bd-col-h { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); padding: 10px 14px; border-bottom: 1px solid var(--hairline); background: var(--paper-2); }
.bd-col-b { padding: 14px; font-size: 13.5px; line-height: 1.6; white-space: pre-wrap; max-height: 50vh; overflow-y: auto; }
.bd-col-ref { font-family: var(--serif); }

.bd-trous-card { display: flex; flex-direction: column; gap: 10px; }
.bd-trous-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.bd-trous { display: flex; flex-wrap: wrap; gap: 7px; }
.bd-trou { cursor: pointer; }
.bd-trou[aria-pressed="true"] { background: var(--c-c); color: #fff; border-color: var(--c-c); }
.bd-trou[aria-pressed="true"]::before { content: '✓ '; }
.bd-trous-foot { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; border-top: 1px dashed var(--hairline); padding-top: 12px; }
.bd-ajout { flex: 1 1 180px; min-width: 0; }
.bd-cartes:disabled { opacity: .5; cursor: not-allowed; }
.bd-compare-a { display: flex; justify-content: center; }

@media (max-width: 680px) { .bd-cols { grid-template-columns: 1fr; } }

/* ===================================================================== */
/*  Checklist d'auto-notation (§8.7)                                     */
/* ===================================================================== */
.an-card { max-width: 760px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 16px; }
.an-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.an-form .input { width: 100%; }

.an-grille-wrap { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: start; }
.an-grille { display: flex; flex-direction: column; gap: 7px; }
.an-crit { display: flex; align-items: center; gap: 11px; padding: 10px 13px; border: 1px solid var(--hairline); border-radius: 11px; background: var(--card); cursor: pointer; transition: border-color .12s, background .12s; }
.an-crit:hover { border-color: var(--gold); }
.an-crit input { width: 18px; height: 18px; accent-color: var(--c-b); flex: 0 0 auto; }
.an-crit-t { flex: 1 1 auto; min-width: 0; font-family: var(--sans); font-size: 13.5px; color: var(--ink); }
.an-crit.an-ok { background: color-mix(in srgb, var(--method) 8%, var(--card)); border-color: color-mix(in srgb, var(--method) 35%, var(--hairline)); }
.an-poids { flex: 0 0 auto; font-family: var(--sans); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: 2px 8px; border-radius: 20px; color: #fff; }
.an-poids-capital { background: var(--danger); }
.an-poids-eleve { background: var(--gold); }
.an-poids-moyen { background: var(--ink-soft); }

.an-score { position: sticky; top: 70px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-width: 116px; padding: 16px 14px; border: 1px solid var(--hairline); border-radius: 14px; background: var(--paper-2); }
.an-score-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(26px, 6vw, 34px); line-height: 1; color: var(--c-b); white-space: nowrap; }
.an-score-l { font-family: var(--sans); font-size: 11px; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.an-actions { }

/* Agrégat : reproche récurrent + points faibles */
.an-agregat { max-width: 760px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 12px; border-left: 3px solid var(--c-b); }
.an-hint { max-width: 760px; margin: 0 auto 16px; text-align: center; }
.an-rec-lbl { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-b); }
.an-rec-t { font-family: var(--serif); font-size: 19px; line-height: 1.3; margin: 3px 0; color: var(--ink); }
.an-rec-s { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); margin: 0; }
.an-pf-h { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); border-top: 1px dashed var(--hairline); padding-top: 10px; }
.an-pf { display: flex; flex-direction: column; gap: 7px; }
.an-pf-row { display: grid; grid-template-columns: 1fr 120px auto; gap: 10px; align-items: center; }
.an-pf-t { font-family: var(--sans); font-size: 12.5px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.an-pf-bar { height: 8px; border-radius: 6px; background: var(--paper-2); overflow: hidden; }
.an-pf-fill { display: block; height: 100%; border-radius: 6px; }
.an-pf-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 11.5px; color: var(--ink-soft); white-space: nowrap; }

/* Historique */
.an-hist { max-width: 760px; margin: 22px auto 0; display: flex; flex-direction: column; gap: 9px; }
.an-hist-t { font-size: 17px; margin: 0 0 2px; }
.an-hist-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 15px; }
.an-hist-b { min-width: 0; }
.an-hist-titre { margin: 0 0 1px; font-family: var(--serif); font-size: 14.5px; }
.an-hist-a { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.an-hist-score { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 14px; color: var(--c-b); }
.an-mini { padding: 5px 10px; font-size: 12.5px; }
.an-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.an-del:hover { color: var(--danger); border-color: var(--danger); }

@media (max-width: 620px) {
  .an-form { grid-template-columns: 1fr; }
  .an-grille-wrap { grid-template-columns: 1fr; }
  .an-score { position: static; flex-direction: row; gap: 10px; width: fit-content; }
  .an-pf-row { grid-template-columns: 1fr 80px auto; }
  .an-hist-i { flex-direction: column; align-items: flex-start; }
}

/* ===================================================================== */
/*  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(--c-b); display: flex; flex-direction: column; gap: 9px; }
.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(--c-b); 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(--c-a); }
.ar-bloc-sol .ar-bloc-k { color: var(--c-a); }
.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-mini { padding: 5px 10px; font-size: 12.5px; }
.ar-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.ar-del:hover { color: var(--danger); border-color: var(--danger); }
.ar-pill-cassation { background: var(--c-b); }
.ar-pill-rejet { background: var(--method); }
.ar-pill-autre { background: var(--ink-soft); }
.ar-pill-ok { background: var(--method); }
.ar-pill-warn { background: var(--gold); }

@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(--c-d); }
.bq-stat-ok { color: var(--method); }
.bq-stat-warn { color: var(--gold); }

.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(--c-d); }
.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 { color: var(--ink-soft); margin-left: auto; }
.bq-del:hover { color: var(--danger); border-color: var(--danger); }

@media (max-width: 620px) {
  .bq-fils { grid-template-columns: 1fr; }
  .bq-card-h { flex-direction: column; gap: 6px; }
  .bq-del { margin-left: 0; }
}

/* ===================================================================== */
/*  Banque de formulations (§8.5)                                        */
/* ===================================================================== */
.fo-capture { max-width: 760px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 12px; }
.fo-cap-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.fo-cap-row .input { width: 100%; }
.fo-ta { width: 100%; resize: vertical; font-family: var(--serif); font-size: 15px; line-height: 1.6; }
.fo-cap-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.fo-favlbl { display: inline-flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.fo-favlbl input { width: 16px; height: 16px; accent-color: var(--gold); }

.fo-filtres { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 10px; }
.fo-search-row { display: flex; align-items: center; gap: 9px; }
.fo-search-row svg { width: 18px; height: 18px; color: var(--c-b); flex: 0 0 auto; }
.fo-search { flex: 1 1 auto; min-width: 0; }
.fo-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.fo-chip { cursor: pointer; }
.fo-chip[data-on="true"] { background: var(--c-b); color: #fff; border-color: var(--c-b); }
.fo-chip-fav[data-on="true"] { background: var(--gold); border-color: var(--gold); }
.fo-fils { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.fo-fil { width: 100%; min-width: 0; }

.fo-results { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 11px; }
.fo-count { margin: 0 0 -2px; }
.fo-vide { text-align: center; padding: 18px; }

/* Carte spécimen (façon Grand Livre : parchemin, liseré garance, petites capitales) */
.fo-spec { border-left: 4px solid var(--c-b); display: flex; flex-direction: column; gap: 9px; }
.fo-spec-accroche { border-left-color: var(--c-b); }
.fo-spec-chapeau { border-left-color: var(--gold); }
.fo-spec-transition { border-left-color: var(--c-c); }
.fo-spec-problematique { border-left-color: var(--c-a); }
.fo-spec-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.fo-spec-type { font-family: var(--sans); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--c-b); }
.fo-spec-chapeau .fo-spec-type { color: var(--gold); }
.fo-spec-transition .fo-spec-type { color: var(--c-c); }
.fo-spec-problematique .fo-spec-type { color: var(--c-a); }
.fo-spec-meta { flex: 1 1 auto; min-width: 0; font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); }
.fo-spec-a { display: flex; align-items: center; gap: 3px; flex: 0 0 auto; }
.fo-star { padding: 4px 9px; font-size: 15px; line-height: 1; color: var(--ink-soft); }
.fo-star.is-fav { color: var(--gold); }
.fo-mini { padding: 5px 9px; font-size: 12px; }
.fo-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.fo-del:hover { color: var(--danger); border-color: var(--danger); }
.fo-spec-txt { margin: 0; font-family: var(--serif); font-size: 16px; line-height: 1.6; color: var(--ink); white-space: pre-wrap; border-left: 2px solid var(--hairline); padding-left: 12px; }
.fo-spec-note { display: flex; flex-direction: column; gap: 2px; background: var(--method-bg); border-radius: 9px; padding: 8px 11px; }
.fo-spec-note-l { font-family: var(--sans); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--method); }
.fo-spec-note span:last-child { font-family: var(--sans); font-size: 12.5px; color: var(--ink); line-height: 1.5; }

@media (max-width: 620px) {
  .fo-cap-row { grid-template-columns: 1fr; }
  .fo-fils { grid-template-columns: 1fr; }
  .fo-spec-h { flex-direction: column; align-items: flex-start; gap: 6px; }
  .fo-spec-a { align-self: flex-end; }
}

/* ===================================================================== */
/*  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-table tbody tr:nth-child(even) .cp-td { background: color-mix(in srgb, var(--paper-2) 45%, 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; }
.cp-mini { padding: 5px 10px; font-size: 12.5px; }
.cp-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.cp-del:hover { color: var(--danger); border-color: var(--danger); }

@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 {
  #sidebar, .topbar, .scrim, .toast-host { display: none !important; }
  .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-mini { padding: 5px 10px; font-size: 12px; }
.fb-mini svg { width: 14px; height: 14px; }

.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; }
.fb-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 9px; }
.fb-del:hover { color: var(--danger); border-color: var(--danger); }

@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; }
}

/* ===================================================================== */
/*  Générateur de semaine-type (§10.2)                                   */
/* ===================================================================== */
.st-gen { max-width: 980px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 14px; }
.st-gen-grid { display: grid; grid-template-columns: auto 1fr 2fr; gap: 14px; align-items: start; }
.st-annee { width: fit-content; }
.st-num { width: 96px; text-align: center; }
.st-jours { display: flex; flex-wrap: wrap; gap: 6px; }
.st-jour { cursor: pointer; min-width: 42px; text-align: center; }
.st-jour[data-on="true"] { background: var(--c-c); color: #fff; border-color: var(--c-c); }
.st-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.st-mat { cursor: pointer; }
.st-mat[data-on="true"] { background: var(--c-a); color: #fff; border-color: var(--c-a); }
.st-mat-h { margin: 0 0 4px; }
.st-gen-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border-top: 1px dashed var(--hairline); padding-top: 12px; }
.st-vide { max-width: 980px; margin: 0 auto; text-align: center; padding: 14px; }

/* Jalons (échéances de devoirs IED) */
.st-jalons { max-width: 980px; margin: 0 auto 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; border-left-color: var(--gold); background: var(--enjeu); }
.st-jalon { font-family: var(--sans); font-size: 12.5px; color: var(--enjeu-ink); background: color-mix(in srgb, var(--gold) 14%, var(--card)); border-radius: 20px; padding: 3px 10px; }
.st-jalon b { color: var(--enjeu-ink); }

/* Aujourd'hui */
.st-today { max-width: 980px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 10px; border-left: 4px solid var(--c-c); }
.st-today-h { display: flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-c); }
.st-today-h svg { width: 15px; height: 15px; }
.st-today-list { display: flex; flex-direction: column; gap: 8px; }

/* Grille hebdomadaire (agenda responsive) */
.st-week-wrap { max-width: 980px; margin: 0 auto 14px; }
.st-week { display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 12px; align-items: start; }
.st-day { display: flex; flex-direction: column; gap: 8px; padding: 12px; }
.st-day-mer { background: color-mix(in srgb, var(--c-b) 5%, var(--card)); border-color: color-mix(in srgb, var(--c-b) 25%, var(--hairline)); }
.st-day-h { display: flex; align-items: baseline; justify-content: space-between; border-bottom: 1px solid var(--hairline); padding-bottom: 6px; }
.st-day-h b { font-family: var(--serif); font-size: 15px; }
.st-day-n { font-family: var(--sans); font-size: 11px; font-weight: 700; color: var(--ink-soft); }
.st-add { font-size: 12px; color: var(--c-c); padding: 5px 9px; align-self: flex-start; }

/* Créneau */
.st-cr { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 9px 11px; background: var(--card); border: 1px solid var(--hairline); border-left: 3px solid var(--c-a); border-radius: 10px; }
.st-cr-acquisition { border-left-color: var(--c-a); }
.st-cr-methode { border-left-color: var(--c-b); }
.st-cr-consolidation, .st-cr-reprise { border-left-color: var(--c-c); }
.st-cr-libre { border-left-color: var(--c-d); }
.st-cr-b { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.st-cr-time { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 11.5px; font-weight: 700; color: var(--ink-soft); display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; }
.st-cr-type { font-weight: 700; text-transform: uppercase; letter-spacing: .04em; font-size: 9.5px; color: var(--ink-soft); }
.st-cr-acquisition .st-cr-type { color: var(--c-a); }
.st-cr-methode .st-cr-type { color: var(--c-b); }
.st-cr-consolidation .st-cr-type, .st-cr-reprise .st-cr-type { color: var(--c-c); }
.st-cr-obj { margin: 0; font-family: var(--serif); font-size: 13.5px; line-height: 1.35; color: var(--ink); }
.st-cr-mat { align-self: flex-start; margin-top: 1px; }
.st-cr-a { display: flex; gap: 2px; flex: 0 0 auto; }
.st-mini { padding: 4px 8px; font-size: 12.5px; line-height: 1; }
.st-del { color: var(--ink-soft); }
.st-del:hover { color: var(--danger); border-color: var(--danger); }

/* Éditeur de créneau (inline) */
.st-cr-edit { flex-direction: column; align-items: stretch; gap: 9px; }
.st-ed-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.st-ed-grid .input, .st-ed-h, .st-ed-d { width: 100%; }
.st-ed-a { display: flex; gap: 6px; }

.st-actions { max-width: 980px; margin: 4px auto 0; display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }

.st-liste { max-width: 980px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 9px; }
.st-liste-t { font-size: 17px; margin: 0; }
.st-liste-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.st-liste-b { min-width: 0; }
.st-liste-titre { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; display: flex; align-items: center; gap: 8px; }
.st-actif { background: var(--method); }
.st-liste-a { display: flex; gap: 4px; flex: 0 0 auto; }

@media (max-width: 760px) {
  .st-gen-grid { grid-template-columns: 1fr; }
  .st-ed-grid { grid-template-columns: 1fr; }
  .st-liste-i { flex-direction: column; align-items: flex-start; }
}

/* ===================================================================== */
/*  Simulateur de copie en conditions (§8.4) ⭐                           */
/* ===================================================================== */
.sm-prep { max-width: 820px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 16px; }
.sm-prep-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 12px; }
.sm-prep-grid .input { width: 100%; }
.sm-duree-row { display: flex; align-items: center; gap: 8px; }
.sm-duree { width: 80px; text-align: center; }
.sm-duree-lbl { white-space: nowrap; }
.sm-source-seg { flex-wrap: wrap; width: 100%; }
.sm-source { display: flex; flex-direction: column; gap: 9px; margin-top: 10px; }
.sm-source .btn { align-self: flex-start; }
.sm-ta { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.55; }
.sm-banque { gap: 6px; }
.sm-banque-i { display: flex; align-items: center; gap: 8px; }
.sm-banque-t { flex: 1 1 auto; min-width: 0; font-family: var(--serif); font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sm-mini { padding: 5px 10px; font-size: 12.5px; }
.sm-del { color: var(--ink-soft); }
.sm-del:hover { color: var(--danger); border-color: var(--danger); }

.sm-preview { border-left-color: var(--c-b); display: flex; flex-direction: column; gap: 6px; }
.sm-preview-h { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; font-family: var(--serif); font-size: 15px; }
.sm-preview-t { margin: 0; font-family: var(--sans); font-size: 13px; color: var(--ink-soft); line-height: 1.5; white-space: pre-wrap; }
.sm-pill-corr { background: var(--ink-soft); }

.sm-rituel > summary { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.sm-rituel[open] > summary { color: var(--ink); margin-bottom: 8px; }
.sm-rituel-l { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.sm-rit { display: flex; align-items: center; gap: 9px; font-family: var(--sans); font-size: 13.5px; color: var(--ink); cursor: pointer; }
.sm-rit input { width: 16px; height: 16px; accent-color: var(--c-b); }
.sm-go { justify-content: center; padding: 13px; font-size: 15px; }
.sm-go:disabled { opacity: .5; cursor: not-allowed; }

/* Overlay « mode épreuve » plein écran (sobre, zéro distraction) */
.sm-overlay { position: fixed; inset: 0; z-index: 50; background: var(--paper); overflow-y: auto; padding: 20px 18px 40px; }
.sm-ep { max-width: 1000px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; }
.sm-ep-h { text-align: center; }
.sm-ep-titre { font-family: var(--serif); font-size: clamp(19px, 3vw, 25px); color: var(--ink); line-height: 1.25; }
.sm-ep-meta { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin-top: 4px; }
.sm-chrono { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.sm-chrono-t { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 600; font-size: clamp(50px, 13vw, 78px); line-height: 1; color: var(--c-b); letter-spacing: -.01em; }
.sm-chrono.is-pause .sm-chrono-t { color: var(--ink-soft); }
.sm-prog { width: min(420px, 80vw); height: 6px; border-radius: 6px; background: var(--paper-2); overflow: hidden; }
.sm-prog-fill { display: block; height: 100%; background: var(--c-b); border-radius: 6px; transition: width .25s linear; }
.sm-chrono-lbl { font-family: var(--sans); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-soft); }
.sm-ep-body { display: grid; grid-template-columns: 1.7fr 1fr; gap: 14px; align-items: start; }
.sm-sujet { background: var(--card); border: 1px solid var(--hairline); border-radius: 13px; box-shadow: var(--shadow); overflow: hidden; }
.sm-sujet-h { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-b); padding: 10px 16px; border-bottom: 1px solid var(--hairline); background: var(--paper-2); }
.sm-sujet-b { padding: 16px; font-family: var(--serif); font-size: 15.5px; line-height: 1.7; color: var(--ink); white-space: pre-wrap; max-height: 56vh; overflow-y: auto; }
.sm-ep-side { display: flex; flex-direction: column; gap: 12px; }
.sm-seal { display: flex; flex-direction: column; align-items: center; gap: 5px; text-align: center; padding: 16px; border: 1px dashed var(--hairline); border-radius: 13px; background: var(--card-2); }
.sm-seal-i { font-size: 26px; }
.sm-seal b { font-family: var(--serif); font-size: 15px; }
.sm-seal p { margin: 0; font-size: 12.5px; }
.sm-brouillon { width: 100%; resize: vertical; min-height: 180px; font-family: var(--sans); font-size: 14px; line-height: 1.6; }
.sm-ep-ctrls { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.sm-ep-ctrls .btn-primary { min-width: 200px; justify-content: center; }

/* Débrief */
.sm-debrief { max-width: 900px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 16px; }
.sm-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.sm-col { background: var(--card); border: 1px solid var(--hairline); border-radius: 13px; box-shadow: var(--shadow); overflow: hidden; }
.sm-col-corr { border-color: color-mix(in srgb, var(--c-b) 30%, var(--hairline)); }
.sm-col-h { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); padding: 10px 14px; border-bottom: 1px solid var(--hairline); background: var(--paper-2); }
.sm-col-corr .sm-col-h { color: var(--c-b); }
.sm-col-b { padding: 14px; font-size: 13.5px; line-height: 1.6; white-space: pre-wrap; max-height: 44vh; overflow-y: auto; }
.sm-col-corr .sm-col-b { font-family: var(--serif); }
.sm-sub { font-size: 16px; margin: 0; }
.sm-score .sm-score-n2 { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--c-b); margin-top: 4px; }
.sm-debrief-foot { display: grid; grid-template-columns: 200px 1fr; gap: 14px; align-items: start; }
.sm-note-i { width: 100%; text-align: center; font-variant-numeric: tabular-nums; }
.sm-ecart { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.55; }
.sm-actions { display: flex; gap: 9px; flex-wrap: wrap; }

/* Historique + reproche récurrent */
.sm-hist { max-width: 900px; margin: 22px auto 0; display: flex; flex-direction: column; gap: 9px; }
.sm-rec { border-left-color: var(--c-b); }
.sm-hist-vide { text-align: center; padding: 14px; }
.sm-hist-t { font-size: 17px; margin: 6px 0 2px; }
.sm-hist-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 15px; }
.sm-hist-b { min-width: 0; }
.sm-hist-titre { margin: 0 0 1px; font-family: var(--serif); font-size: 14.5px; }
.sm-hist-a { display: flex; align-items: center; gap: 7px; flex: 0 0 auto; }
.sm-hist-score { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 14px; color: var(--c-b); }
.sm-pill-note { background: var(--c-b); }

@media (max-width: 760px) {
  .sm-prep-grid { grid-template-columns: 1fr; }
  .sm-ep-body { grid-template-columns: 1fr; }
  .sm-cols { grid-template-columns: 1fr; }
  .sm-debrief-foot { grid-template-columns: 1fr; }
  .sm-hist-i { flex-direction: column; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) { .sm-prog-fill { transition: none; } }

/* ===================================================================== */
/*  Suivi des devoirs IED (§10.5)                                        */
/* ===================================================================== */
.dv-rec { max-width: 760px; margin: 0 auto 14px; border-left-color: var(--c-c); display: flex; flex-direction: column; gap: 3px; }
.dv-rec-vide { max-width: 760px; margin: 0 auto 14px; text-align: center; }
.dv-rec-lbl { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-c); }
.dv-rec-t { font-family: var(--serif); font-size: 19px; line-height: 1.3; margin: 3px 0; color: var(--ink); }
.dv-rec-s { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); margin: 0; }

.dv-echeance { max-width: 760px; margin: 0 auto 14px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 14px; }
.dv-echeance svg { width: 16px; height: 16px; color: var(--c-c); flex: 0 0 auto; }
.dv-echeance-urgent { border-left-color: var(--gold); background: var(--enjeu); }
.dv-echeance-urgent svg { color: var(--gold); }

.dv-form { max-width: 760px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 12px; }
.dv-form-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 12px; }
.dv-form-grid .input { width: 100%; }
.dv-form-foot { display: flex; gap: 9px; align-items: center; }
.dv-form-foot .input { flex: 1 1 auto; min-width: 0; }

.dv-liste { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 9px; }
.dv-vide { max-width: 760px; margin: 0 auto; text-align: center; padding: 18px; }
.dv-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; border-left: 3px solid var(--hairline); }
.dv-i-retard { border-left-color: var(--danger); }
.dv-i-urgent { border-left-color: var(--gold); }
.dv-i-avenir { border-left-color: var(--c-c); }
.dv-i-depose { border-left-color: var(--c-a); }
.dv-i-corrige { border-left-color: var(--method); }
.dv-i-b { min-width: 0; }
.dv-i-t { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.dv-i-a { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.dv-mini { padding: 5px 10px; font-size: 12.5px; }
.dv-del { color: var(--ink-soft); }
.dv-del:hover { color: var(--danger); border-color: var(--danger); }

.dv-pill-retard { background: var(--danger); }
.dv-pill-urgent { background: var(--gold); }
.dv-pill-avenir { background: var(--c-c); }
.dv-pill-depose { background: var(--c-a); }
.dv-pill-corrige { background: var(--method); }
.dv-pill-note { background: var(--c-c); }

/* Détail */
.dv-detail { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; border-left: 3px solid var(--c-c); }
.dv-detail-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.dv-detail-t { margin: 0; font-size: 19px; }
.dv-detail-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end; }
.dv-switch { width: auto; gap: 10px; }
.dv-note-i { width: 90px; text-align: center; font-variant-numeric: tabular-nums; }
.dv-detail-a { display: flex; flex-wrap: wrap; gap: 9px; }

@media (max-width: 620px) {
  .dv-form-grid { grid-template-columns: 1fr; }
  .dv-i { flex-direction: column; align-items: flex-start; }
  .dv-detail-row { flex-direction: column; align-items: stretch; gap: 10px; }
}

/* ===================================================================== */
/*  Tableau de délestage (§10.4)                                         */
/* ===================================================================== */
.de-annee-row { max-width: 1000px; margin: 0 auto 14px; display: flex; align-items: center; gap: 12px; }
.de-annee { width: fit-content; }

.de-jauges { max-width: 1000px; margin: 0 auto 16px; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; align-items: start; }
.de-jauge { display: flex; flex-direction: column; gap: 5px; }
.de-jauge-h { display: flex; align-items: baseline; justify-content: space-between; font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); }
.de-jauge-h b { font-variant-numeric: tabular-nums; font-size: 16px; color: var(--ink); }
.de-jauge-bar { height: 8px; border-radius: 6px; background: var(--paper-2); overflow: hidden; }
.de-jauge-fill { display: block; height: 100%; border-radius: 6px; transition: width .25s ease; }
.de-fill-janvier { background: var(--c-d); }
.de-fill-printemps { background: var(--c-a); }
.de-fill-session { background: var(--ink-soft); }
.de-jauges-n { grid-column: 1 / -1; margin: 0; }

.de-cols { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; align-items: start; }
.de-col { display: flex; flex-direction: column; gap: 9px; padding: 12px; }
.de-col-janvier { border-top: 3px solid var(--c-d); }
.de-col-printemps { border-top: 3px solid var(--c-a); }
.de-col-session { border-top: 3px solid var(--ink-soft); }
.de-col-h { display: flex; align-items: baseline; justify-content: space-between; border-bottom: 1px solid var(--hairline); padding-bottom: 6px; }
.de-col-h b { font-family: var(--serif); font-size: 15px; }
.de-col-n { font-family: var(--sans); font-size: 11px; font-weight: 700; color: var(--ink-soft); }
.de-col-vide { text-align: center; padding: 10px 6px; }

.de-m { display: flex; flex-direction: column; gap: 8px; padding: 11px; border: 1px solid var(--hairline); border-radius: 11px; background: var(--card); }
.de-m-alerte { border-color: color-mix(in srgb, var(--danger) 45%, var(--hairline)); background: color-mix(in srgb, var(--danger) 5%, var(--card)); }
.de-m-h { display: flex; align-items: flex-start; gap: 9px; }
.de-voyant { font-size: 14px; line-height: 1.3; flex: 0 0 auto; }
.de-m-b { min-width: 0; }
.de-m-t { margin: 0 0 2px; font-family: var(--serif); font-size: 14px; line-height: 1.3; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.de-m-s { margin: 0; font-size: 11.5px; }
.de-statut { font-size: 9.5px; padding: 1px 7px; }
.de-statut-fondamentale-critique { background: var(--c-e); }
.de-statut-fondamentale { background: var(--c-a); }
.de-statut-complementaire { background: var(--ink-soft); }
.de-vseg { width: 100%; }
.de-vbtn { flex: 1 1 0; padding: 6px 4px; font-size: 12px; text-align: center; }
.de-vbtn[data-on="true"] { background: var(--c-d); color: #fff; }
.de-pret { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-family: var(--sans); font-size: 12.5px; color: var(--ink); cursor: default; }
.de-avis { margin: 0; font-family: var(--sans); font-size: 11.5px; line-height: 1.45; padding: 7px 9px; border-radius: 8px; }
.de-avis-risque { color: var(--danger); background: var(--danger-bg); }
.de-avis-tiede { color: var(--enjeu-ink); background: var(--enjeu); }
.de-avis-ok { color: var(--method); background: var(--method-bg); }

@media (max-width: 860px) {
  .de-jauges { grid-template-columns: 1fr; gap: 10px; }
  .de-cols { grid-template-columns: 1fr; }
}

/* ===================================================================== */
/*  Moteur d'interleaving (§9.3) — réutilise l'UI de session des Flashcards */
/* ===================================================================== */
.il-config { max-width: 560px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; align-items: stretch; }
.il-due { display: flex; align-items: center; gap: 14px; justify-content: center; }
.il-due-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(40px, 10vw, 56px); line-height: 1; color: var(--c-c); }
.il-due-l { display: flex; flex-direction: column; font-family: var(--sans); }
.il-due-l b { font-size: 15px; color: var(--ink); }
.il-due-l span { font-size: 12.5px; color: var(--ink-soft); }
.il-tailles { display: flex; gap: 8px; }
.il-tailles .chip { cursor: pointer; min-width: 54px; text-align: center; }
.il-tailles .chip[data-on="true"] { background: var(--c-c); color: #fff; border-color: var(--c-c); }
.il-go { justify-content: center; padding: 12px 18px; font-size: 15px; }
.il-go:disabled { opacity: .5; cursor: not-allowed; }
.il-vide { text-align: center; }

.il-session { max-width: 620px; }
.il-quit { padding: 5px 11px; font-size: 12.5px; }
/* Indicateur de discrimination : la matière/type courant, pour la conscience de la bascule */
.il-disc { display: flex; align-items: center; justify-content: center; gap: 8px; }
.il-disc-mat { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--c-c); background: color-mix(in srgb, var(--c-c) 12%, var(--card)); border-radius: 20px; padding: 3px 11px; }
.il-disc-type { font-family: var(--sans); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-soft); border: 1px solid var(--hairline); border-radius: 20px; padding: 2px 9px; }
.il-bilan { max-width: 560px; }

/* ===================================================================== */
/*  Prompteur d'auto-explication (§9.4)                                  */
/* ===================================================================== */
.ax-config { max-width: 680px; margin: 0 auto 16px; display: flex; flex-direction: column; gap: 14px; }
.ax-srcseg { flex-wrap: wrap; width: 100%; }
.ax-source { width: 100%; margin-top: 10px; }
.ax-libre { width: 100%; }
.ax-go { justify-content: center; padding: 12px; font-size: 15px; }

/* Session « carnet » : une question en grand */
.ax-session { max-width: 680px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.ax-session-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ax-notion { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; min-width: 0; }
.ax-notion-l { font-family: var(--sans); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-c); }
.ax-notion b { font-family: var(--serif); font-size: 18px; color: var(--ink); }
.ax-quit { padding: 5px 11px; font-size: 12.5px; }
.ax-prog { height: 6px; border-radius: 6px; background: var(--paper-2); overflow: hidden; }
.ax-prog-fill { display: block; height: 100%; background: var(--c-c); border-radius: 6px; transition: width .25s ease; }

.ax-card { display: flex; flex-direction: column; gap: 12px; padding: 22px; }
.ax-q { margin: 0; font-family: var(--serif); font-size: clamp(19px, 3.2vw, 24px); line-height: 1.35; color: var(--ink); }
.ax-rep { width: 100%; resize: vertical; min-height: 150px; font-family: var(--sans); font-size: 15px; line-height: 1.6; }
.ax-card-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ax-mic { font-size: 13px; padding: 6px 12px; }
.ax-mic.is-on { color: var(--danger); border-color: var(--danger); }
.ax-tip { flex: 1 1 auto; }
.ax-toform { font-size: 12.5px; }

.ax-nav { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ax-step { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 13px; color: var(--ink-soft); }

.ax-vide { max-width: 680px; margin: 0 auto; text-align: center; padding: 18px; }
.ax-archive { max-width: 680px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 9px; }
.ax-archive-t { font-size: 17px; margin: 0; }
.ax-arch-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.ax-arch-b { min-width: 0; }
.ax-arch-t { margin: 0 0 2px; font-family: var(--serif); font-size: 15px; }
.ax-arch-a { display: flex; gap: 4px; flex: 0 0 auto; }
.ax-mini { padding: 5px 10px; font-size: 12.5px; }
.ax-del { color: var(--ink-soft); }
.ax-del:hover { color: var(--danger); border-color: var(--danger); }

@media (max-width: 560px) {
  .ax-nav { flex-wrap: wrap; }
  .ax-arch-i { flex-direction: column; align-items: flex-start; }
}

/* ---------- Toasts ---------- */
.toast-host { position: fixed; left: 0; right: 0; bottom: 18px; display: flex; flex-direction: column; align-items: center; gap: 8px; z-index: 60; pointer-events: none; }
.toast { font-family: var(--sans); font-size: 13.5px; background: var(--ink); color: var(--paper); padding: 10px 16px; border-radius: 10px; box-shadow: var(--shadow); opacity: 0; transform: translateY(8px); transition: opacity .2s, transform .2s; max-width: 90vw; }
.toast.show { opacity: 1; transform: none; }
.toast.ok { background: var(--method); color: #fff; }
.toast.danger { background: var(--danger); color: #fff; }

/* ===================================================================== */
/*  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(--c-d); 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(--method); color: #fff; border-color: var(--method); }
.ve-statut-projet { background: var(--enjeu); color: var(--enjeu-ink); border-color: color-mix(in srgb, var(--gold) 40%, var(--hairline)); }
.ve-fdel { color: var(--ink-soft); font-size: 18px; line-height: 1; padding: 2px 9px; flex: 0 0 auto; }
.ve-fdel:hover { color: var(--danger); border-color: var(--danger); }
.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(--c-d); 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(--c-b); }
.ve-mstatut-fondamentale { background: var(--c-a); }
.ve-mstatut-complementaire { background: var(--ink-soft); }
.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; }
}

/* ===================================================================== */
/*  Boussole ENM (§12.2)                                                 */
/* ===================================================================== */
.bo-controls { display: flex; gap: 20px; flex-wrap: wrap; max-width: 900px; margin: 0 auto 14px; }
.bo-avert { display: flex; align-items: flex-start; gap: 8px; max-width: 900px; margin: 0 auto 14px; line-height: 1.5; }
.bo-avert svg { width: 15px; height: 15px; color: var(--c-e); flex: 0 0 auto; margin-top: 2px; }
.bo-reco { max-width: 900px; margin: 0 auto 16px; font-size: 14px; }
.bo-sec-t { font-size: 18px; margin: 0 0 12px; }

/* Équilibre par bloc */
.bo-blocs { max-width: 900px; margin: 0 auto 18px; display: flex; flex-direction: column; gap: 14px; }
.bo-empty { margin: -4px 0 2px; }
.bo-bloc { display: flex; flex-direction: column; gap: 6px; }
.bo-bloc-h { display: flex; align-items: center; gap: 9px; font-family: var(--sans); }
.bo-bloc-pt { width: 10px; height: 10px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
.bo-bloc-l { font-size: 14px; font-weight: 600; color: var(--ink); }
.bo-bloc-n { margin-left: auto; font-size: 12.5px; color: var(--ink-soft); }
.bo-bloc-n.bo-sous { color: var(--danger); font-weight: 600; }
.bo-bar { position: relative; height: 12px; border-radius: 7px; background: var(--paper-2); overflow: hidden; margin-top: 4px; }
.bo-bar-reel { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 7px; transition: width .3s ease; }
.bo-fill-civil { background: var(--c-a); }
.bo-fill-penal { background: var(--c-b); }
.bo-fill-public { background: var(--c-e); }
.bo-bar-cible { position: absolute; top: -2px; bottom: -2px; width: 2px; background: var(--ink); opacity: .55; }

/* Cartes matière */
.bo-mats { max-width: 900px; margin: 0 auto; }
.bo-list { display: flex; flex-direction: column; gap: 9px; }
.bo-m { display: flex; align-items: center; gap: 14px; padding: 12px 15px; }
.bo-m-sous { border-left: 4px solid var(--danger); }
.bo-pips { display: inline-flex; gap: 3px; flex: 0 0 auto; }
.bo-pip { width: 7px; height: 7px; border-radius: 50%; background: var(--hairline); }
.bo-pip.on { background: var(--c-e); }
.bo-m-b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.bo-m-t { margin: 0; font-family: var(--serif); font-size: 15px; line-height: 1.3; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bo-statut { font-size: 10px; }
.bo-statut-fondamentale-critique { background: var(--c-b); }
.bo-statut-fondamentale { background: var(--c-a); }
.bo-statut-complementaire { background: var(--ink-soft); }
.bo-bloc-chip { font-size: 11px; padding: 1px 8px; }
.bo-m-bar { position: relative; height: 7px; border-radius: 5px; background: var(--paper-2); overflow: hidden; max-width: 360px; }
.bo-m-reel { position: absolute; left: 0; top: 0; bottom: 0; background: var(--c-e); border-radius: 5px; }
.bo-m-cible { position: absolute; top: -1px; bottom: -1px; width: 2px; background: var(--ink); opacity: .45; }
.bo-m-r { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 3px; text-align: right; }
.bo-m-min { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 600; color: var(--ink); }
.bo-sousbadge { font-family: var(--sans); font-size: 10.5px; font-weight: 700; color: var(--danger); }

@media (max-width: 620px) {
  .bo-m { flex-wrap: wrap; }
  .bo-m-bar { max-width: none; }
}

/* ===================================================================== */
/*  Tableau de bord global ⭐ (§12.1)                                     */
/* ===================================================================== */
.tb-loading { max-width: 920px; margin: 0 auto; text-align: center; }
.tb-sec-t { font-size: 18px; margin: 0 0 12px; }

/* Action vitale (le héros) */
.tb-action { max-width: 920px; margin: 0 auto 12px; display: flex; flex-direction: column; gap: 8px; border-left: 5px solid var(--gold); background: var(--card-2); }
.tb-action-moyenne { border-left-color: var(--method); }
.tb-action-haute { border-left-color: var(--danger); }
.tb-action-lbl { display: flex; align-items: center; gap: 7px; font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--c-e); }
.tb-action-haute .tb-action-lbl { color: var(--danger); }
.tb-action-lbl svg { width: 15px; height: 15px; }
.tb-action-t { font-family: var(--serif); font-size: clamp(20px, 3vw, 26px); line-height: 1.25; margin: 2px 0; color: var(--ink); }
.tb-action-why { font-family: var(--sans); font-size: 13.5px; color: var(--ink-soft); margin: 0; line-height: 1.5; }
.tb-action-a { margin-top: 6px; }
.tb-action-go { font-size: 15px; padding: 11px 18px; }

/* Coup d'œil du coach (IA) */
.tb-coach { max-width: 920px; margin: 0 auto 18px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.tb-coach-go { font-size: 13px; }
.tb-coach-go:disabled { opacity: .6; cursor: progress; }
.tb-coach-note { font-size: 11.5px; }
.tb-coach-r { width: 100%; display: flex; flex-direction: column; gap: 8px; }
.tb-coach-h { display: flex; align-items: baseline; gap: 10px; }
.tb-coach-h b { font-family: var(--serif); font-size: 16px; }
.tb-coach-m { font-size: 11px; }
.tb-coach-enc { margin: 0; font-size: 14.5px; line-height: 1.5; }
.tb-coach-gestes { margin: 0; padding-left: 22px; display: flex; flex-direction: column; gap: 5px; font-family: var(--sans); font-size: 13.5px; line-height: 1.45; }
.tb-coach-close { align-self: flex-start; font-size: 12px; padding: 5px 10px; }

/* Alertes */
.tb-alertes { max-width: 920px; margin: 0 auto 18px; display: flex; flex-direction: column; gap: 9px; }
.tb-alerte { display: flex; align-items: center; gap: 11px; padding: 11px 15px; }
.tb-alerte-rouge { border-left-color: var(--danger); background: var(--danger-bg); }
.tb-alerte-orange { border-left-color: var(--gold); background: var(--enjeu); }
.tb-alerte-pt { flex: 0 0 auto; font-size: 13px; }
.tb-alerte-tx { flex: 1 1 auto; min-width: 0; margin: 0; font-family: var(--sans); font-size: 13.5px; color: var(--ink); }
.tb-alerte-go { flex: 0 0 auto; font-size: 12.5px; padding: 6px 11px; }

/* Tendances */
.tb-tend { max-width: 920px; margin: 0 auto 18px; }
.tb-figs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 12px; }
.tb-fig { background: var(--card); border: 1px solid var(--hairline); border-radius: 13px; box-shadow: var(--shadow); padding: 14px 16px; display: flex; flex-direction: column; gap: 2px; }
.tb-fig-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: clamp(24px, 5vw, 30px); line-height: 1.05; color: var(--ink); }
.tb-fig-l { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); }
.tb-fig-s { font-family: var(--sans); font-size: 11px; color: var(--ink-soft); opacity: .85; margin-top: 2px; }
.tb-reproche { border-left-color: var(--c-b); display: flex; flex-direction: column; gap: 2px; }
.tb-reproche-l { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-b); }
.tb-reproche-t { font-family: var(--serif); font-size: 17px; margin: 2px 0; color: var(--ink); }

/* Couverture par matière */
.tb-cov { max-width: 920px; margin: 0 auto; }
.tb-cov-h { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.tb-cov-h .tb-sec-t { margin: 0; }
.tb-cov-n { font-family: var(--sans); font-size: 12.5px; font-weight: 700; color: var(--ink-soft); }
.tb-cov-h .seg { margin-left: auto; }
.tb-cov-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 11px; }
.tb-m { display: flex; align-items: flex-start; gap: 11px; padding: 12px 14px; }
.tb-m-voyant { font-size: 17px; line-height: 1.2; flex: 0 0 auto; }
.tb-m-b { flex: 1 1 auto; min-width: 0; }
.tb-m-t { margin: 0 0 2px; font-family: var(--serif); font-size: 14.5px; line-height: 1.3; }
.tb-statut { margin-left: 7px; font-size: 10px; }
.tb-statut-fondamentale-critique { background: var(--c-b); }
.tb-statut-fondamentale { background: var(--c-a); }
.tb-statut-complementaire { background: var(--ink-soft); }
.tb-m-s { margin: 0; }
.tb-m-meta { font-family: var(--sans); font-size: 11px; color: var(--ink-soft); margin: 0; flex: 0 0 auto; text-align: right; max-width: 96px; }

@media (max-width: 620px) {
  .tb-figs { grid-template-columns: 1fr; }
  .tb-alerte { flex-wrap: wrap; }
  .tb-m-meta { max-width: none; text-align: left; }
}

/* ===================================================================== */
/*  Redevabilité hebdomadaire (§11.2)                                    */
/* ===================================================================== */
.rd-refcard, .rd-card { max-width: 760px; margin: 0 auto 16px; }
.rd-ref { display: flex; flex-direction: column; gap: 8px; }
.rd-ref .input { flex: 1 1 150px; min-width: 0; }
.rd-dim { max-width: 760px; margin: 0 auto 16px; font-size: 14px; }
.rd-periode { max-width: 760px; margin: 0 auto 12px; display: flex; align-items: center; justify-content: center; gap: 12px; }
.rd-nav { padding: 7px 11px; }
.rd-nav:disabled { opacity: .4; cursor: not-allowed; }
.rd-periode-l { font-family: var(--serif); font-size: 16px; display: flex; align-items: center; gap: 8px; }
.rd-courante { background: var(--c-c); }
.rd-card-h { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.rd-card-t { font-size: 18px; margin: 0; }
.rd-envoye { background: var(--method); }
.rd-ta { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.6; font-size: 14px; min-height: 220px; }
.rd-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 12px; }
.rd-hist { max-width: 760px; margin: 22px auto 0; display: flex; flex-direction: column; gap: 9px; }
.rd-hist-i { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 15px; }
.rd-hist-b { min-width: 0; }
.rd-hist-t { margin: 0 0 2px; font-family: var(--serif); font-size: 14.5px; display: flex; align-items: center; gap: 8px; }
.rd-hist-x { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rd-mini { padding: 6px 12px; font-size: 12.5px; flex: 0 0 auto; }
@media (max-width: 620px) { .rd-hist-i { flex-direction: column; align-items: flex-start; } }

/* ===================================================================== */
/*  Rituel dominical de pilotage (§11.5)                                 */
/* ===================================================================== */
.ri-stepper { max-width: 760px; margin: 0 auto 16px; }
.ri-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.ri-step { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px 6px; border: 1px solid var(--hairline); border-radius: 11px; background: var(--card); cursor: pointer; text-align: center; }
.ri-step:hover { border-color: var(--gold); }
.ri-step-n { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; background: var(--paper-2); color: var(--ink-soft); font-family: var(--sans); font-size: 12px; font-weight: 700; }
.ri-step-t { font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); line-height: 1.25; }
.ri-step.ri-on { border-color: var(--c-e); box-shadow: var(--shadow); }
.ri-step.ri-on .ri-step-n { background: var(--c-e); color: #fff; }
.ri-step.ri-on .ri-step-t { color: var(--ink); font-weight: 600; }
.ri-step.ri-done .ri-step-n { background: var(--method); color: #fff; }
.ri-prog { text-align: center; margin: 8px 0 0; }

.ri-wrap { max-width: 760px; margin: 0 auto; }
.ri-card { display: flex; flex-direction: column; gap: 10px; }
.ri-et-t { font-size: 20px; margin: 0; }
.ri-et-s { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); margin: -4px 0 6px; }
.ri-intro { font-family: var(--sans); font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; margin: 0; }

/* Bilan */
.ri-figs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 6px; }
.ri-fig { background: var(--paper-2); border-radius: 11px; padding: 12px; display: flex; flex-direction: column; gap: 2px; text-align: center; }
.ri-fig-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 22px; color: var(--ink); }
.ri-fig-l { font-family: var(--sans); font-size: 11.5px; color: var(--ink-soft); }
.ri-reproche { border-left-color: var(--c-b); font-size: 13.5px; }

/* Décrochage */
.ri-raisons { display: flex; flex-wrap: wrap; gap: 8px; }
.ri-raison { cursor: pointer; }
.ri-raison.on { background: var(--c-e); color: #fff; border-color: var(--c-e); }
.ri-notes { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.5; }

/* Plan */
.ri-st { margin: 0; }
.ri-st-a { margin-top: 10px; }
.ri-reports-h { font-family: var(--sans); font-size: 12.5px; font-weight: 700; color: var(--ink-soft); margin: 4px 0; }
.ri-reports-l { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; font-family: var(--sans); font-size: 13.5px; }
.ri-report-j { font-size: 11.5px; color: var(--ink-soft); }
.ri-report-j.ri-retard { color: var(--danger); font-weight: 600; }
.ri-planok { display: flex; align-items: flex-start; gap: 9px; font-family: var(--sans); font-size: 13.5px; cursor: pointer; line-height: 1.4; }
.ri-planok input { width: 17px; height: 17px; margin-top: 1px; accent-color: var(--c-e); flex: 0 0 auto; }

/* Rapport */
.ri-rapport-ta { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.55; font-size: 13.5px; }
.ri-rapport-ok { background: var(--method); }

.ri-nav { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; }

@media (max-width: 620px) {
  .ri-step-t { display: none; }
  .ri-figs { grid-template-columns: repeat(2, 1fr); }
}

/* ===================================================================== */
/*  Détecteur de problématique (§8.2)                                    */
/* ===================================================================== */
.pb-saisie { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; }
.pb-ta { width: 100%; resize: vertical; font-family: var(--serif); font-size: 16px; line-height: 1.5; }
.pb-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.pb-ia-note { flex: 1 1 220px; min-width: 0; font-size: 11.5px; }

.pb-verdict { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; border-left: 4px solid var(--ink-soft); }
.pb-verdict.pb-ok { border-left-color: var(--method); }
.pb-verdict.pb-warn { border-left-color: var(--gold); }
.pb-verdict.pb-ko { border-left-color: var(--danger); }
.pb-verdict-h { display: flex; align-items: center; gap: 12px; }
.pb-badge { flex: 0 0 auto; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; color: #fff; font-weight: 700; background: var(--ink-soft); }
.pb-ok .pb-badge { background: var(--method); }
.pb-warn .pb-badge { background: var(--gold); }
.pb-ko .pb-badge { background: var(--danger); }
.pb-verdict-l { font-family: var(--serif); font-size: 18px; }
.pb-verdict-n { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 2px 0 0; }
.pb-checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pb-check { display: flex; align-items: flex-start; gap: 10px; }
.pb-check-i { flex: 0 0 auto; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; font-size: 12px; font-weight: 700; }
.pb-check.ok .pb-check-i { background: color-mix(in srgb, var(--method) 16%, var(--card)); color: var(--method); }
.pb-check.ko .pb-check-i { background: var(--paper-2); color: var(--ink-soft); }
.pb-check-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.pb-check-t { font-family: var(--sans); font-size: 13.5px; font-weight: 600; color: var(--ink); }
.pb-check.ko .pb-check-t { color: var(--ink-soft); }
.pb-check-a { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); line-height: 1.4; }
.pb-tofor { border-top: 1px dashed var(--hairline); padding-top: 10px; }
.pb-mini { padding: 5px 11px; font-size: 12.5px; }

/* Avis du coach (IA) */
.pb-coach { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 9px; border-left: 3px solid var(--c-b); }
.pb-coach-h { display: flex; align-items: center; gap: 10px; }
.pb-coach-h b { font-family: var(--serif); font-size: 16px; }
.pb-coach-v { background: var(--c-b); }
.pb-coach-m { margin-left: auto; font-size: 11px; }
.pb-coach-tx { margin: 0; font-size: 14px; line-height: 1.55; }
.pb-reform-w { border-top: 1px dashed var(--hairline); padding-top: 10px; }
.pb-reform-h { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--ink-soft); margin: 0 0 6px; }
.pb-reform { margin: 0; padding-left: 22px; display: flex; flex-direction: column; gap: 6px; font-family: var(--serif); font-size: 14.5px; line-height: 1.45; }

/* Spécimens */
.pb-ex { max-width: 760px; margin: 0 auto; }
.pb-ex-sum { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.pb-ex[open] .pb-ex-sum { color: var(--ink); margin-bottom: 10px; }
.pb-ex-i { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border: 1px solid var(--hairline); border-radius: 11px; margin-bottom: 9px; background: var(--card-2); }
.pb-ex-tag { flex: 0 0 auto; font-family: var(--sans); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #fff; padding: 2px 8px; border-radius: 20px; }
.pb-ex-forte .pb-ex-tag { background: var(--method); }
.pb-ex-faible .pb-ex-tag { background: var(--ink-soft); }
.pb-ex-t { flex: 1 1 auto; min-width: 0; margin: 0; font-family: var(--serif); font-size: 14px; line-height: 1.4; }

@media (max-width: 620px) { .pb-ex-i { flex-wrap: wrap; } }

/* ===================================================================== */
/*  Auditeur de plan (§8.3)                                              */
/* ===================================================================== */
.pl-form { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 14px; }
.pl-prob { width: 100%; resize: vertical; font-family: var(--serif); font-size: 15px; line-height: 1.5; }
.pl-parties { display: flex; flex-direction: column; gap: 14px; }
.pl-partie { display: flex; flex-direction: column; gap: 8px; padding-left: 4px; border-left: 3px solid var(--c-b); padding-left: 12px; }
.pl-gp { display: flex; align-items: center; gap: 9px; }
.pl-mark { flex: 0 0 auto; font-family: var(--serif); font-weight: 700; color: var(--c-b); min-width: 28px; }
.pl-mark-gp { font-size: 18px; }
.pl-gp .input { flex: 1 1 auto; min-width: 0; font-weight: 600; }
.pl-sous { display: flex; flex-direction: column; gap: 7px; padding-left: 16px; }
.pl-ss { display: flex; align-items: center; gap: 9px; }
.pl-ss .pl-mark { font-size: 13px; font-weight: 600; min-width: 32px; }
.pl-ss .input { flex: 1 1 auto; min-width: 0; }
.pl-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.pl-ia-note { flex: 1 1 220px; min-width: 0; font-size: 11.5px; }

/* Audit local */
.pl-audit { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; border-left: 4px solid var(--ink-soft); }
.pl-audit.pl-ok { border-left-color: var(--method); }
.pl-audit.pl-warn { border-left-color: var(--gold); }
.pl-audit.pl-ko { border-left-color: var(--danger); }
.pl-audit-h { display: flex; align-items: center; gap: 11px; }
.pl-badge { flex: 0 0 auto; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; color: #fff; font-weight: 700; background: var(--ink-soft); }
.pl-ok .pl-badge { background: var(--method); } .pl-warn .pl-badge { background: var(--gold); } .pl-ko .pl-badge { background: var(--danger); }
.pl-audit-l { font-family: var(--serif); font-size: 18px; }
.pl-checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pl-check { display: flex; align-items: flex-start; gap: 10px; }
.pl-check-i { flex: 0 0 auto; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; font-size: 12px; font-weight: 700; }
.pl-check.ok .pl-check-i { background: color-mix(in srgb, var(--method) 16%, var(--card)); color: var(--method); }
.pl-check.ko .pl-check-i { background: var(--paper-2); color: var(--ink-soft); }
.pl-check-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.pl-check-t { font-family: var(--sans); font-size: 13.5px; font-weight: 600; color: var(--ink); }
.pl-check.ko .pl-check-t { color: var(--ink-soft); }
.pl-check-a { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); line-height: 1.4; }
.pl-faux { margin: 0; font-size: 13.5px; }
.pl-plats { border-top: 1px dashed var(--hairline); padding-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.pl-plats-h { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--ink-soft); margin: 0; }
.pl-plat { margin: 0; font-family: var(--sans); font-size: 12.5px; line-height: 1.45; display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; }
.pl-plat-c { font-weight: 700; color: var(--c-b); }
.pl-plat-t { font-family: var(--serif); color: var(--ink); }
.pl-plat-a { color: var(--ink-soft); }

/* Avis du coach */
.pl-coach { max-width: 760px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 10px; border-left: 3px solid var(--c-b); }
.pl-coach-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pl-coach-h b { font-family: var(--serif); font-size: 16px; }
.pl-adeq { background: var(--c-b); }
.pl-coach-m { margin-left: auto; font-size: 11px; }
.pl-coach-tx { margin: 0; font-size: 14px; line-height: 1.55; }
.pl-remarques { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pl-remarque { font-family: var(--sans); font-size: 13px; line-height: 1.5; }
.pl-asp { font-size: 10px; margin-right: 7px; vertical-align: middle; }
.pl-rm-c { font-weight: 600; }
.pl-requal { border-top: 1px dashed var(--hairline); padding-top: 10px; }
.pl-requal-h { font-family: var(--sans); font-size: 12px; font-weight: 700; color: var(--ink-soft); margin: 0 0 6px; }
.pl-requal-i { margin: 0 0 5px; font-family: var(--serif); font-size: 14px; line-height: 1.4; }
.pl-requal-old { color: var(--ink-soft); text-decoration: line-through; text-decoration-color: var(--hairline); }
.pl-requal-new { color: var(--ink); font-weight: 600; }

/* Ossatures */
.pl-oss { max-width: 760px; margin: 0 auto; }
.pl-oss-sum { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.pl-oss[open] .pl-oss-sum { color: var(--ink); margin-bottom: 10px; }
.pl-oss-i { padding: 10px 14px; border: 1px solid var(--hairline); border-radius: 11px; margin-bottom: 9px; background: var(--card-2); }
.pl-oss-n { font-family: var(--serif); font-size: 14.5px; color: var(--c-b); }
.pl-oss-p { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); margin: 3px 0 0; }

@media (max-width: 620px) { .pl-remarque { display: block; } }

/* ===================================================================== */
/*  Générateur de cas pratiques (§8.6)                                   */
/* ===================================================================== */
.cp-avert { max-width: 820px; margin: 0 auto 14px; font-size: 13px; }
.cp-ctrl { max-width: 820px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; }
.cp-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cp-ctrl .input, .cp-mat, .cp-notion { width: 100%; }
.cp-dom, .cp-diff { flex-wrap: wrap; }
.cp-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; }
.cp-ia-note { flex: 1 1 200px; min-width: 0; font-size: 11.5px; }
.cp-coachstate { max-width: 820px; margin: 0 auto 14px; }

.cp-cas { max-width: 820px; margin: 0 auto 14px; display: flex; flex-direction: column; gap: 12px; border-left: 4px solid var(--c-b); }
.cp-cas-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cp-src { background: var(--ink-soft); }
.cp-src-ia { background: var(--c-e); }
.cp-src-banque { background: var(--c-d); }
.cp-cas-t { font-size: 19px; margin: 0; }
.cp-enonce { font-family: var(--serif); font-size: 15.5px; line-height: 1.6; color: var(--ink); margin: 0; white-space: pre-wrap; }
.cp-cas-a { display: flex; flex-wrap: wrap; gap: 9px; }

.cp-corrige { border-top: 1px dashed var(--hairline); padding-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.cp-corrige-h { font-family: var(--sans); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--c-b); margin: 0; }
.cp-trame { font-family: var(--sans); font-size: 13.5px; line-height: 1.6; color: var(--ink); margin: 0; white-space: pre-wrap; }
.cp-syl { display: flex; flex-direction: column; gap: 4px; }
.cp-syl-k { font-family: var(--serif); font-size: 14px; font-weight: 600; color: var(--c-b); }
.cp-syl-t { margin: 0; font-family: var(--sans); font-size: 13.5px; line-height: 1.55; }
.cp-conds, .cp-min { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 5px; font-family: var(--sans); font-size: 13.5px; line-height: 1.5; }
.cp-avert-in { font-family: var(--sans); font-size: 12px; color: var(--enjeu-ink); margin: 2px 0 0; }

@media (max-width: 620px) { .cp-row2 { grid-template-columns: 1fr; } }

/* ===================================================================== */
/*  Veille juridique pour l'oral (§12.3)                                 */
/* ===================================================================== */
.vo-rappel { max-width: 860px; margin: 0 auto 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13.5px; }
.vo-rappel-x { font-size: 16px; line-height: 1; padding: 3px 9px; color: var(--ink-soft); }

.vo-liste-wrap { max-width: 860px; margin: 0 auto; }
.vo-bar { display: flex; gap: 9px; align-items: center; margin-bottom: 12px; }
.vo-search { flex: 1 1 auto; min-width: 0; }
.vo-add { white-space: nowrap; }
.vo-chips { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; margin-bottom: 10px; }
.vo-chips-l { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); margin-right: 4px; }

.vo-cards { display: flex; flex-direction: column; gap: 12px; }
.vo-vide { text-align: center; padding: 14px; }
.vo-card { display: flex; flex-direction: column; gap: 10px; border-left: 4px solid var(--c-e); }
.vo-c-h { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.vo-c-t { font-size: 17px; margin: 0 0 4px; }
.vo-c-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0; }
.vo-theme { background: var(--c-e); color: #fff; border-color: var(--c-e); }
.vo-date { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 12px; color: var(--ink-soft); }
.vo-eq { font-family: var(--sans); font-size: 11px; font-weight: 700; }
.vo-eq-ok { color: var(--method); }
.vo-eq-ko { color: var(--gold); }
.vo-c-a { display: flex; gap: 5px; flex: 0 0 auto; flex-wrap: wrap; }
.vo-mini { padding: 5px 11px; font-size: 12.5px; }
.vo-del { color: var(--ink-soft); font-size: 16px; line-height: 1; padding: 4px 10px; }
.vo-del:hover { color: var(--danger); border-color: var(--danger); }
.vo-c-enj { font-family: var(--sans); font-size: 13.5px; line-height: 1.55; margin: 0; }
.vo-c-args { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.vo-arg { background: var(--paper-2); border-radius: 11px; padding: 10px 12px; }
.vo-arg-h { font-family: var(--sans); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.vo-pour .vo-arg-h { color: var(--method); }
.vo-contre .vo-arg-h { color: var(--danger); }
.vo-arg-l { margin: 6px 0 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-family: var(--sans); font-size: 13px; line-height: 1.45; }
.vo-arg-vide { margin: 5px 0 0; }
.vo-c-pos { font-family: var(--serif); font-size: 14px; line-height: 1.55; margin: 0; padding: 8px 12px; background: var(--card-2); border-radius: 9px; }
.vo-c-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.vo-tag { font-size: 10.5px; }

/* Formulaire */
.vo-form { max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.vo-form-t { font-size: 19px; margin: 0; }
.vo-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.vo-form-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.vo-form .input, .vo-form textarea, .vo-form select { width: 100%; }
.vo-form textarea { resize: vertical; font-family: var(--sans); line-height: 1.5; }
.vo-form-a { display: flex; gap: 9px; }

@media (max-width: 620px) {
  .vo-c-args, .vo-form-grid, .vo-form-grid2 { grid-template-columns: 1fr; }
  .vo-bar { flex-wrap: wrap; }
}

/* ===================================================================== */
/*  Le Grand Livre — consultation                                        */
/* ===================================================================== */
/* Carte d'accès depuis le hub (hero) */
.hub-gl { display: flex; align-items: center; gap: 13px; text-align: left; max-width: 60ch; margin: 0 auto 18px;
  padding: 12px 15px; background: var(--card-2); border: 1px solid var(--hairline); border-radius: 13px;
  box-shadow: var(--shadow); text-decoration: none; color: inherit; transition: border-color .15s, transform .05s; }
.hub-gl:hover { border-color: var(--gold); }
.hub-gl:active { transform: translateY(1px); }
.hub-gl-mark { flex: 0 0 auto; display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 10px;
  font-family: var(--serif); font-size: 22px; color: var(--gold); border: 1.5px solid var(--gold);
  background: color-mix(in srgb, var(--gold) 9%, var(--card)); line-height: 1; }
.hub-gl-b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.hub-gl-t { font-family: var(--serif); font-size: 15.5px; color: var(--ink); }
.hub-gl-s { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); line-height: 1.4; }
.hub-gl-go { flex: 0 0 auto; font-size: 18px; color: var(--gold); }

/* Rangée d'accès (Grand Livre + Calendrier) */
.hub-acces { display: flex; gap: 12px; flex-wrap: wrap; max-width: 60ch; margin: 0 auto 18px; }
.hub-acces .hub-gl { flex: 1 1 260px; margin: 0; max-width: none; }
.hub-cal .hub-gl-mark { color: var(--c-c); border-color: var(--c-c); background: color-mix(in srgb, var(--c-c) 9%, var(--card)); }
.hub-cal .hub-gl-mark svg { width: 21px; height: 21px; }
.hub-cal .hub-gl-go { color: var(--c-c); }
.hub-cal:hover { border-color: var(--c-c); }

/* Vue de consultation (iframe) */
.gl-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.gl-head-l { min-width: 0; }
.gl-open { white-space: nowrap; }
.gl-frame-wrap { width: 100%; }
.gl-frame { width: 100%; height: calc(100dvh - 210px); min-height: 460px; border: 1px solid var(--hairline);
  border-radius: 14px; box-shadow: var(--shadow); background: var(--card); display: block; }

@media (max-width: 860px) { .gl-frame { height: calc(100dvh - 230px); } }

/* ===================================================================== */
/*  Repli du panneau latéral (bureau) + « Repartir à neuf »              */
/* ===================================================================== */
@media (min-width: 861px) {
  #sidebar { transition: width .2s ease, flex-basis .2s ease, opacity .15s ease, padding .2s ease; }
  html.nav-replie #sidebar {
    width: 0; flex-basis: 0; min-width: 0; padding-left: 0; padding-right: 0;
    border-right: none; overflow: hidden; opacity: 0; pointer-events: none;
  }
  html.nav-replie .topbar-brand { display: inline-grid; place-items: center; }
}
@media (prefers-reduced-motion: reduce) { #sidebar { transition: none; } }

/* Réinitialisation ciblée (cases à cocher) */
.rz-list { display: flex; flex-direction: column; gap: 1px; margin: 4px 0 8px; }
.rz-row { display: flex; align-items: flex-start; gap: 11px; padding: 9px 11px; border-radius: 10px; cursor: pointer; transition: background .12s; }
.rz-row:hover { background: var(--card-2); }
.rz-cb { margin-top: 2px; width: 16px; height: 16px; accent-color: var(--gold); flex: 0 0 auto; cursor: pointer; }
.rz-row-b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.rz-row-b b { font-size: 14px; color: var(--ink); }
.rz-row-d { font-size: 12px; color: var(--ink-soft); line-height: 1.35; }
.rz-count { flex: 0 0 auto; align-self: center; font-size: 12px; color: var(--ink-soft); font-variant-numeric: tabular-nums; min-width: 2.5ch; text-align: right; }
.rz-total { margin: 2px 0 10px; font-weight: 600; color: var(--ink); }
.rz-go { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 40%, var(--hairline)); }
.rz-go:hover { border-color: var(--danger); color: var(--danger); }
.cr-go { font-size: 14.5px; padding: 11px 18px; }
.cr-confirm { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 45%, var(--hairline)); font-weight: 600; }
.cr-confirm:hover { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 9%, var(--card)); }

/* ---------- Scrim (mobile) ---------- */
.scrim { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.38); z-index: 30; }

/* ---------- Responsive ---------- */
@media (max-width: 860px) {
  #sidebar {
    position: fixed; left: 0; top: 0; bottom: 0; height: 100dvh; z-index: 40;
    transform: translateX(-100%); transition: transform .2s ease; box-shadow: var(--shadow);
  }
  body.nav-open #sidebar { transform: none; }
  body.nav-open .scrim { display: block; }
  .menu-btn { display: inline-grid; }
  .topbar-brand { display: inline-grid; place-items: center; }
  .topbar-brand .brand-mark { width: 30px; height: 30px; }
  .view { padding: 20px 15px 56px; }
  .fam-grid, .panels { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  #sidebar { transition: none; }
  .toast { transition: none; }
}

/* ===================================================================== */
/*  Calendrier & méthode des J (§4)                                      */
/* ===================================================================== */
.cal-head-l { min-width: 0; }
.view-title-ic { width: 22px; height: 22px; vertical-align: -3px; margin-right: 8px; color: var(--c-c); }

/* Barre d'outils */
.cal-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px 16px; flex-wrap: wrap; margin-bottom: 14px; }
.cal-bar-nav { display: flex; align-items: center; gap: 6px; }
.cal-mois { font-family: var(--serif); font-size: 18px; color: var(--ink); min-width: 9.5ch; text-align: center; text-transform: capitalize; }
.cal-auj { margin-left: 4px; padding: 6px 12px; font-size: 13px; }
.cal-bar-act { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cal-vues { display: inline-flex; border: 1px solid var(--hairline); border-radius: 9px; overflow: hidden; background: var(--card-2); }
.cal-vue { border: none; border-radius: 0; padding: 7px 14px; font-size: 13px; color: var(--ink-soft); background: transparent; }
.cal-vue + .cal-vue { border-left: 1px solid var(--hairline); }
.cal-vue.is-on { background: var(--c-c); color: #fff; }
.cal-add { padding: 8px 14px; }

/* Grille du mois */
.cal-grid { display: flex; flex-direction: column; border: 1px solid var(--hairline); border-radius: 14px; overflow: hidden; box-shadow: var(--shadow); background: var(--card); }
.cal-row { display: grid; grid-template-columns: repeat(7, 1fr); }
.cal-row-head { background: var(--card-2); border-bottom: 1px solid var(--hairline); }
.cal-dow { padding: 8px 6px; text-align: center; font-family: var(--sans); font-size: 11.5px; font-weight: 600; letter-spacing: .03em; color: var(--ink-soft); text-transform: uppercase; }
.cal-cell { position: relative; min-height: 96px; padding: 5px 6px 7px; border-right: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); display: flex; flex-direction: column; gap: 3px; cursor: pointer; background: var(--card); transition: background .12s; text-align: left; }
.cal-row .cal-cell:last-child { border-right: none; }
.cal-grid .cal-row:last-child .cal-cell { border-bottom: none; }
.cal-cell:hover { background: color-mix(in srgb, var(--c-c) 5%, var(--card)); }
.cal-cell:focus-visible { outline: 2px solid var(--c-c); outline-offset: -2px; z-index: 1; }
.cal-hors { background: var(--paper-2); cursor: default; }
.cal-hors .cal-num { opacity: .45; }
.cal-hors:hover { background: var(--paper-2); }
.cal-auj-cell { background: color-mix(in srgb, var(--c-c) 8%, var(--card)); }
.cal-auj-cell .cal-num { background: var(--c-c); color: #fff; }

.cal-cell-h { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.cal-num { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 12.5px; font-weight: 600; color: var(--ink); min-width: 21px; height: 21px; display: inline-grid; place-items: center; border-radius: 50%; }
.cal-fait { color: var(--c-c); font-size: 12px; font-weight: 700; }

.cal-cell-b { display: flex; flex-direction: column; gap: 2px; min-height: 0; }
.cal-past { display: block; width: 100%; text-align: left; border: none; border-radius: 5px; padding: 2px 6px; font-family: var(--sans); font-size: 11.5px; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.cal-past:hover { filter: brightness(1.06) saturate(1.05); }
.cal-past-fait { opacity: .6; text-decoration: line-through; }
.cal-past-j { font-weight: 700; }
.cal-plus { align-self: flex-start; border: none; background: transparent; color: var(--ink-soft); font-family: var(--sans); font-size: 11px; padding: 1px 4px; cursor: pointer; }
.cal-plus:hover { color: var(--ink); text-decoration: underline; }

.cal-sem { position: absolute; top: 6px; left: 6px; display: flex; gap: 3px; pointer-events: none; opacity: .6; }
.cal-sem-dot { width: 5px; height: 5px; border-radius: 50%; display: inline-block; }

.cal-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: auto; padding-top: 2px; }
.cal-chip { border: 1px solid var(--hairline); background: var(--card-2); border-radius: 20px; padding: 1px 7px; font-family: var(--sans); font-size: 10.5px; font-variant-numeric: tabular-nums; color: var(--ink-soft); cursor: pointer; line-height: 1.5; }
.cal-chip:hover { border-color: currentColor; }
.cal-chip-dev { color: var(--danger); }
.cal-chip-fc { color: var(--c-c); }

/* Vue agenda */
.cal-agenda { display: flex; flex-direction: column; gap: 4px; max-width: 720px; }
.cal-vide { text-align: center; padding: 26px 14px; }
.cal-ag-jour { display: grid; grid-template-columns: 124px 1fr; gap: 10px; padding: 8px 0; border-top: 1px solid var(--hairline); }
.cal-ag-jour:first-child { border-top: none; }
.cal-ag-date { font-family: var(--sans); font-size: 13.5px; padding-top: 4px; }
.cal-ag-date.is-today b { color: var(--c-c); }
.cal-ag-items { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.cal-ag-item { display: flex; align-items: stretch; gap: 9px; text-align: left; background: var(--card); border: 1px solid var(--hairline); border-radius: 10px; padding: 8px 11px; cursor: pointer; transition: border-color .12s; }
.cal-ag-item:hover { border-color: var(--c-c); }
.cal-ag-bar { flex: 0 0 4px; border-radius: 3px; }
.cal-ag-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cal-ag-b b { font-family: var(--serif); font-size: 14.5px; color: var(--ink); }
.cal-ag-b span { font-size: 12px; }

@media (max-width: 560px) {
  .cal-ag-jour { grid-template-columns: 1fr; gap: 4px; }
  .cal-cell { min-height: 78px; }
}

/* Dialog (éditeur d'événement) */
.cal-dialog { width: min(560px, 94vw); border: 1px solid var(--hairline); border-radius: 16px; padding: 0; background: var(--card); color: var(--ink); box-shadow: 0 18px 50px rgba(0,0,0,.28); }
.cal-dialog::backdrop { background: rgba(20,16,12,.42); backdrop-filter: blur(2px); }
.cal-dialog-mini { width: min(420px, 92vw); }
.cal-dlg-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px 8px; }
.cal-dlg-h h2 { margin: 0; font-size: 18px; }
.cal-x { font-size: 20px; line-height: 1; color: var(--ink-soft); }
.cal-x:hover { color: var(--ink); }
.cal-form { display: flex; flex-direction: column; gap: 11px; padding: 0 18px 18px; }
.cal-form .field { gap: 4px; }
.cal-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.cal-f-duree, .cal-f-inter { max-width: 110px; }
.cal-f-unite { font-size: 12.5px; }
.cal-rec { display: flex; flex-direction: column; gap: 8px; }
.cal-rec-det { display: flex; flex-direction: column; gap: 7px; }
.cal-rec-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-family: var(--sans); font-size: 13px; }
.cal-rec-row .input { max-width: 160px; }
.cal-err { color: var(--danger); font-size: 12.5px; }
.cal-err p { margin: 0; }
.cal-dlg-f { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 4px; }
.cal-del { color: var(--danger); }
.cal-del:hover { border-color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, var(--card)); }

/* Couleurs (palette + libre) */
.cal-swatchs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.cal-swatch { width: 26px; height: 26px; border-radius: 50%; border: 2px solid transparent; box-shadow: 0 0 0 1px var(--hairline) inset; cursor: pointer; padding: 0; }
.cal-swatch.is-on { border-color: var(--ink); }
.cal-swatch-libre { width: 30px; height: 28px; padding: 0; border: 1px solid var(--hairline); border-radius: 7px; background: var(--card); cursor: pointer; }

/* Dialog « +N » du jour + export */
.cal-jour-list { display: flex; flex-direction: column; gap: 6px; padding: 0 18px; max-height: 50vh; overflow: auto; }
.cal-dialog-jour .cal-dlg-f { padding: 14px 18px 18px; }
.cal-expo-act { display: flex; gap: 9px; padding: 4px 18px 18px; flex-wrap: wrap; }
.cal-dialog-mini .cal-leg-t { margin: 6px 18px 0; }
.cal-imp-body { padding: 0 18px; max-height: 46vh; overflow-y: auto; }
.cal-imp-liste { display: flex; flex-direction: column; gap: 4px; }
.cal-imp-row { display: flex; align-items: flex-start; gap: 9px; padding: 7px 9px; border: 1px solid var(--hairline); border-radius: 8px; cursor: pointer; }
.cal-imp-row input { margin-top: 2px; width: 16px; height: 16px; flex: 0 0 auto; accent-color: var(--c-c); }
.cal-imp-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cal-imp-b b { font-family: var(--sans); font-size: 13px; }
.cal-imp-b span { font-size: 11.5px; font-variant-numeric: tabular-nums; }

/* Légende / filtres / superpositions */
.cal-legende { margin-top: 16px; }
.cal-legende > summary { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); cursor: pointer; }
.cal-legende[open] > summary { color: var(--ink); margin-bottom: 12px; }
.cal-leg-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.cal-leg-bloc { display: flex; flex-direction: column; gap: 8px; }
.cal-leg-t { font-family: var(--sans); font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); }
.cal-filtres { display: flex; flex-wrap: wrap; gap: 6px; }
.cal-fil { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--hairline); background: var(--card-2); border-radius: 20px; padding: 4px 11px; font-family: var(--sans); font-size: 12.5px; color: var(--ink); cursor: pointer; }
.cal-fil-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; }
.cal-fil.is-off { opacity: .42; text-decoration: line-through; }
.cal-overlays { display: flex; flex-direction: column; gap: 7px; }
.cal-ov { display: flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 13px; color: var(--ink); cursor: pointer; }
.cal-ov input { width: 16px; height: 16px; accent-color: var(--c-c); }
.cal-delest-l { display: flex; gap: 8px; font-family: var(--sans); font-size: 12.5px; }
.cal-delest-l b { flex: 0 0 84px; }
.cal-delest-lien { font-family: var(--sans); font-size: 12.5px; color: var(--c-c); text-decoration: none; }
.cal-delest-lien:hover { text-decoration: underline; }
.cal-reglages { border-top: 1px solid var(--hairline); padding-top: 12px; margin-top: 12px; }
.cal-rgl-row { display: flex; align-items: center; gap: 10px; }
.cal-rgl-row .input { max-width: 150px; }
.cal-rgl-rappels { flex-wrap: wrap; }
.cal-rgl-note { flex-basis: 100%; font-size: 11px; line-height: 1.4; }

@media (prefers-reduced-motion: reduce) { .cal-cell { transition: none; } }

/* Vues semaine / jour — grille horaire */
.cal-tg { --tg-gut: 48px; border: 1px solid var(--hairline); border-radius: 14px; overflow: hidden; box-shadow: var(--shadow); background: var(--card); }
.cal-tg-head, .cal-tg-allday, .cal-tg-cols { display: grid; }
.cal-tg-head { border-bottom: 1px solid var(--hairline); background: var(--card-2); }
.cal-tg-gut { width: var(--tg-gut); }
.cal-tg-gut-l { display: flex; align-items: center; justify-content: flex-end; padding-right: 6px; font-family: var(--sans); font-size: 10px; color: var(--ink-soft); }
.cal-tg-dow { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 7px 4px; border-left: 1px solid var(--hairline); background: transparent; cursor: pointer; }
.cal-tg-dow:hover { background: color-mix(in srgb, var(--c-c) 6%, transparent); }
.cal-tg-dow-d { font-family: var(--sans); font-size: 11px; text-transform: uppercase; letter-spacing: .03em; color: var(--ink-soft); }
.cal-tg-dow-n { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 16px; font-weight: 600; color: var(--ink); width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; }
.cal-tg-dow.is-today .cal-tg-dow-n { background: var(--c-c); color: #fff; }
.cal-tg-dow.is-today .cal-tg-dow-d { color: var(--c-c); }

.cal-tg-allday { border-bottom: 1px solid var(--hairline); min-height: 30px; }
.cal-tg-ad { border-left: 1px solid var(--hairline); padding: 3px; display: flex; flex-direction: column; gap: 3px; cursor: pointer; min-width: 0; }
.cal-tg-ad .cal-past { font-size: 11px; }

.cal-tg-body { max-height: 64vh; overflow-y: auto; }
.cal-tg-cols { position: relative; }
.cal-tg-axe { position: relative; }
.cal-tg-hlab { position: absolute; right: 5px; transform: translateY(-50%); font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 10.5px; color: var(--ink-soft); white-space: nowrap; }
.cal-tg-col { position: relative; border-left: 1px solid var(--hairline); cursor: pointer;
  background-image: repeating-linear-gradient(to bottom, var(--hairline), var(--hairline) 1px, transparent 1px, transparent var(--tg-hh)); }
.cal-tg-col:hover { background-color: color-mix(in srgb, var(--c-c) 3%, transparent); }

.cal-tg-ev { position: absolute; border: none; border-radius: 6px; padding: 2px 6px; overflow: hidden; text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 0; line-height: 1.2; box-shadow: 0 1px 2px rgba(0,0,0,.12); }
.cal-tg-ev:hover { filter: brightness(1.05) saturate(1.05); z-index: 3; }
.cal-tg-ev-h { font-family: var(--sans); font-variant-numeric: tabular-nums; font-size: 10px; opacity: .85; }
.cal-tg-ev-t { font-family: var(--sans); font-size: 11.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.cal-tg-sem { position: absolute; left: 2px; right: 2px; border-radius: 5px; border-left: 3px solid var(--sc); background: color-mix(in srgb, var(--sc) 12%, transparent); pointer-events: none; overflow: hidden; padding: 1px 5px; }
.cal-tg-sem span { font-family: var(--sans); font-size: 10px; color: var(--ink-soft); opacity: .85; }
.cal-tg-now { position: absolute; left: 0; right: 0; height: 0; border-top: 2px solid var(--danger); z-index: 4; pointer-events: none; }
.cal-tg-now::before { content: ''; position: absolute; left: -3px; top: -4px; width: 7px; height: 7px; border-radius: 50%; background: var(--danger); }
@media (max-width: 560px) { .cal-tg { --tg-gut: 38px; } .cal-tg-ev-h { display: none; } }

/* Glisser-déposer (replanification) */
.cal-past[draggable="true"], .cal-tg-ev[draggable="true"] { cursor: grab; }
.cal-dragging { opacity: .45; }
.cal-cell.cal-drop, .cal-tg-col.cal-drop, .cal-tg-ad.cal-drop { background: color-mix(in srgb, var(--c-c) 14%, var(--card)) !important; outline: 2px dashed var(--c-c); outline-offset: -2px; }

/* Méthode des J — séries de réactivation */
.cal-j-intro { margin: 0 18px 10px; line-height: 1.5; }
.cal-j-body { padding: 0 18px; max-height: 52vh; overflow: auto; }
.cal-series { display: flex; flex-direction: column; gap: 8px; }
.cal-serie-l { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid var(--hairline); }
.cal-serie-l:first-child { border-top: none; }
.cal-serie-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cal-serie-b b { font-family: var(--serif); font-size: 14.5px; }
.cal-serie-b span { font-size: 12px; }
.cal-serie-ech { font-family: var(--sans); font-variant-numeric: tabular-nums; color: var(--ink-soft); letter-spacing: .02em; }
.cal-serie-a { display: flex; gap: 5px; flex: 0 0 auto; }
.cal-j-ech { display: flex; flex-direction: column; gap: 7px; }
.cal-j-apercu { margin: 2px 0 0; font-size: 12px; line-height: 1.4; }

/* Réactivation (fait / report / ponts) */
.cal-dialog-react { width: min(480px, 94vw); }
.cal-react-body { padding: 0 18px 18px; display: flex; flex-direction: column; gap: 10px; }
.cal-react-meta { font-family: var(--sans); font-size: 13.5px; margin: 0; }
.cal-react-retard { color: var(--gold); font-weight: 600; }
.cal-react-jf { display: inline-flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 13px; color: var(--ink); cursor: pointer; }
.cal-react-jf input { width: 16px; height: 16px; accent-color: var(--c-c); }
.cal-react-act { display: flex; gap: 8px; flex-wrap: wrap; }
.cal-react-pont-t { font-family: var(--sans); font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); margin: 6px 0 0; }
.cal-ponts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cal-pont { display: flex; flex-direction: column; align-items: flex-start; gap: 0; text-align: left; padding: 9px 12px; }
.cal-pont b { font-family: var(--sans); font-size: 13px; }
.cal-pont span { font-size: 11px; }
@media (max-width: 460px) { .cal-ponts { grid-template-columns: 1fr; } }

/* Flashcards : sélecteur « mode J » par paquet + badge session */
.fc-paquets-note { margin: -4px 0 4px; font-size: 12.5px; }
.fc-modej { padding: 4px 8px; font-size: 12px; max-width: 132px; }
.fc-pill-j { background: var(--gold); }
.fc-pill-fsrs { background: var(--method); }

/* Cockpit : ligne « Aujourd'hui » */
.tb-auj { display: flex; flex-direction: column; gap: 9px; }
.tb-auj-h { display: flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: 13.5px; }
.tb-auj-ic { width: 18px; height: 18px; color: var(--c-c); }
.tb-auj-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.tb-auj-chip { border: 1px solid var(--hairline); background: var(--card-2); border-radius: 20px; padding: 5px 12px; font-family: var(--sans); font-size: 12.5px; color: var(--ink); cursor: pointer; transition: border-color .12s; }
.tb-auj-chip:hover { border-color: var(--c-c); }
.tb-auj-j { color: var(--gold); border-color: color-mix(in srgb, var(--gold) 40%, var(--hairline)); }
.tb-auj-dev { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 35%, var(--hairline)); }
.tb-auj-fc { color: var(--c-c); border-color: color-mix(in srgb, var(--c-c) 35%, var(--hairline)); }

/* ===================================================================== */
/*  Assistant IA du calendrier                                           */
/* ===================================================================== */
.cal-assist { color: var(--method); border-color: color-mix(in srgb, var(--method) 45%, var(--hairline)); background: color-mix(in srgb, var(--method) 7%, var(--card)); }
.cal-assist:hover { border-color: var(--method); background: color-mix(in srgb, var(--method) 12%, var(--card)); }
.cal-assist svg { width: 17px; height: 17px; }

.cal-dialog-ia { width: min(600px, 95vw); }
.cal-ia-ic { width: 20px; height: 20px; color: var(--method); vertical-align: -4px; margin-right: 4px; }
.cal-ia-note { margin: 0 18px 8px; }
.cal-ia-body { display: flex; flex-direction: column; gap: 11px; padding: 0 18px 18px; }
.cal-ia-nokey { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.cal-ia-nokey p { margin: 0; }

.cal-ia-sugg { display: flex; flex-wrap: wrap; gap: 6px; }
.cal-ia-chip { border: 1px solid var(--hairline); background: var(--card-2); border-radius: 18px; padding: 5px 11px; font-family: var(--sans); font-size: 12px; color: var(--ink); cursor: pointer; transition: border-color .12s; }
.cal-ia-chip:hover { border-color: var(--method); color: var(--method); }

.cal-ia-fil { display: flex; flex-direction: column; gap: 9px; max-height: 42vh; overflow-y: auto; padding: 2px; }
.cal-ia-fil:empty { display: none; }
.cal-ia-bulle { max-width: 92%; font-family: var(--sans); font-size: 13.5px; line-height: 1.5; }
.cal-ia-bulle p { margin: 0; }
.cal-ia-moi { align-self: flex-end; background: var(--c-c); color: #fff; border-radius: 13px 13px 4px 13px; padding: 8px 12px; }
.cal-ia-ia { align-self: flex-start; background: var(--card-2); border: 1px solid var(--hairline); border-radius: 13px 13px 13px 4px; padding: 10px 13px; width: 100%; }
.cal-ia-sys { align-self: center; }
.cal-ia-msg { margin: 0 0 8px !important; color: var(--ink); }
.cal-ia-err { color: var(--danger); display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.cal-ia-err p { margin: 0; }

.cal-ia-ops { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.cal-ia-op { display: flex; align-items: flex-start; gap: 9px; padding: 8px 10px; border: 1px solid var(--hairline); border-left-width: 3px; border-radius: 8px; cursor: pointer; background: var(--card); }
.cal-ia-op input { margin-top: 2px; width: 16px; height: 16px; flex: 0 0 auto; accent-color: var(--method); }
.cal-ia-op-d { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cal-ia-op-d b { font-family: var(--sans); font-size: 13px; font-weight: 600; }
.cal-ia-op-d span { font-size: 11.5px; line-height: 1.4; }
.cal-ia-op-creer { border-left-color: var(--c-c); }
.cal-ia-op-modifier { border-left-color: var(--method); }
.cal-ia-op-supprimer { border-left-color: var(--danger); }
.cal-ia-op-serie { border-left-color: var(--gold); }
.cal-ia-actions { justify-content: flex-end; }
.cal-ia-undo { font-family: var(--sans); font-size: 12.5px; color: var(--ink-soft); display: flex; align-items: center; gap: 6px; }

.cal-ia-saisie { display: flex; flex-direction: column; gap: 7px; border-top: 1px solid var(--hairline); padding-top: 10px; }
.cal-ia-champ { width: 100%; resize: vertical; font-family: var(--sans); line-height: 1.45; }
.cal-ia-saisie-b { display: flex; align-items: center; gap: 8px; }
.cal-ia-spacer { flex: 1 1 auto; }
.cal-ia-img { display: inline-flex; align-items: center; gap: 4px; font-family: var(--sans); font-size: 12px; color: var(--ink-soft); }
.cal-ia-imgx { border: none; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 15px; line-height: 1; padding: 0 2px; }
.cal-ia-imgx:hover { color: var(--danger); }

/* ====================================================================
   Le Greffier — assistant global (bouton flottant + panneau)
   Monté sur <body> : présent sur toutes les routes. z-index 45 (au-dessus du
   contenu, SOUS les overlays focus 50 et les toasts 60). Safe-area iPhone.
   ==================================================================== */
.greffier-fab {
  position: fixed; right: max(18px, env(safe-area-inset-right)); bottom: max(18px, env(safe-area-inset-bottom));
  z-index: 45; width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--hairline);
  background: var(--c-a); color: #fff; box-shadow: var(--shadow); cursor: pointer;
  display: grid; place-items: center; transition: transform .15s ease, box-shadow .15s ease;
}
.greffier-fab:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.22); }
.greffier-fab svg { width: 24px; height: 24px; }
.greffier-fab-badge {
  position: absolute; top: -3px; right: -3px; min-width: 19px; height: 19px; padding: 0 5px;
  border-radius: 10px; background: var(--danger); color: #fff; font: 600 11px/19px var(--sans);
  text-align: center; box-shadow: 0 0 0 2px var(--paper);
}

/* L'attribut [hidden] doit l'emporter sur display:flex — sinon le panneau (et les
   blocs internes) ne se masquent jamais : la croix « fermer » resterait sans effet. */
.greffier-panel[hidden], .greffier-ops[hidden], .greffier-apercu[hidden], .greffier-image-jointe[hidden] { display: none !important; }

.greffier-panel {
  position: fixed; z-index: 46; right: max(16px, env(safe-area-inset-right));
  bottom: calc(84px + env(safe-area-inset-bottom)); width: min(420px, calc(100vw - 32px));
  max-height: min(72vh, 720px); display: flex; flex-direction: column;
  background: var(--card); color: var(--ink); border: 1px solid var(--hairline);
  border-radius: 16px; box-shadow: 0 18px 50px rgba(0,0,0,.28); overflow: hidden;
}
.greffier-h { display: flex; align-items: center; gap: 8px; padding: 12px 12px 10px; border-bottom: 1px solid var(--hairline); }
.greffier-h-t { display: flex; align-items: center; gap: 7px; flex: 1 1 auto; min-width: 0; }
.greffier-h-t b { font-family: var(--sans); font-size: 15px; }
.greffier-mark { font-size: 16px; }
.greffier-modele { font-size: 11px; }
.greffier-x { font-size: 20px; line-height: 1; }
.greffier-ctx { margin: 0; padding: 7px 14px; font-family: var(--sans); font-size: 11.5px; border-bottom: 1px solid var(--hairline); background: var(--paper-2, var(--paper)); }

.greffier-fil { flex: 1 1 auto; overflow-y: auto; padding: 12px 14px; display: flex; flex-direction: column; gap: 9px; }
.greffier-vide p { margin: 0 0 8px; font-family: var(--sans); font-size: 13px; line-height: 1.5; }
.greffier-msg { max-width: 86%; padding: 9px 12px; border-radius: 13px; font-family: var(--sans); font-size: 13.5px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.greffier-msg-user { align-self: flex-end; background: var(--c-a); color: #fff; border-bottom-right-radius: 4px; }
.greffier-msg-bot { align-self: flex-start; background: var(--paper); border: 1px solid var(--hairline); border-bottom-left-radius: 4px; }
.greffier-busy { opacity: .7; font-style: italic; }
.greffier-undo { align-self: flex-start; font-family: var(--sans); font-size: 12.5px; }

.greffier-sugg { padding: 0 14px; display: flex; flex-direction: column; gap: 8px; }
.greffier-sugg:empty { display: none; }
.greffier-pro { display: flex; flex-direction: column; gap: 6px; padding-top: 10px; }
.greffier-pro-l { font-family: var(--sans); font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; }
.greffier-starter { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 0; }
.greffier-chip {
  font-family: var(--sans); font-size: 12.5px; text-align: left; padding: 7px 11px; border-radius: 16px;
  border: 1px solid var(--hairline); background: var(--paper); color: var(--ink); cursor: pointer; line-height: 1.35;
}
.greffier-chip:hover { border-color: var(--c-a); }
.greffier-chip-haute { border-left: 3px solid var(--danger); }
.greffier-chip-moyenne { border-left: 3px solid var(--gold); }
.greffier-chip-compagnon { border-style: dashed; }
.greffier-chip-orch { border-left: 3px solid var(--c-e); }
.greffier-op-orch { border-left-color: var(--c-e); }

.greffier-ops { padding: 0 14px 4px; display: flex; flex-direction: column; gap: 6px; }
.greffier-ops-t { margin: 6px 0 2px; font-family: var(--sans); font-size: 12.5px; font-weight: 600; }
.greffier-op { display: flex; align-items: flex-start; gap: 9px; padding: 8px 10px; border: 1px solid var(--hairline); border-left: 3px solid var(--c-c); border-radius: 8px; cursor: pointer; }
.greffier-op input { margin-top: 2px; width: 16px; height: 16px; flex: 0 0 auto; accent-color: var(--c-c); }
.greffier-op-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.greffier-op-d { font-family: var(--sans); font-size: 13px; font-weight: 600; }
.greffier-op-r { font-size: 11.5px; line-height: 1.4; }
.greffier-ops-ign { font-size: 11.5px; }
.greffier-ops-a { display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px; }

.greffier-f { border-top: 1px solid var(--hairline); padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); display: flex; flex-direction: column; gap: 6px; }
.greffier-image-jointe { display: flex; align-items: center; gap: 6px; font-family: var(--sans); }
.greffier-img-x { border: none; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 16px; line-height: 1; }
.greffier-img-x:hover { color: var(--danger); }
.greffier-apercu { display: flex; }
.greffier-apercu-b { font-family: var(--sans); font-size: 12.5px; padding: 6px 10px; border-radius: 8px; border: 1px dashed var(--c-a); background: transparent; color: var(--c-a); cursor: pointer; width: 100%; text-align: left; }
.greffier-barre { display: flex; align-items: flex-end; gap: 6px; }
.greffier-input { flex: 1 1 auto; resize: none; min-height: 38px; max-height: 120px; padding: 9px 11px; border-radius: 10px; border: 1px solid var(--hairline); background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 13.5px; line-height: 1.4; }
.greffier-input:focus { outline: 2px solid var(--c-a); outline-offset: -1px; }
.greffier-mic.on { background: var(--danger); color: #fff; }
.greffier-send { padding: 0 12px; height: 38px; }
.greffier-send svg { width: 18px; height: 18px; }
.greffier-note { margin: 0; font-size: 10.5px; line-height: 1.35; }

@media (max-width: 560px) {
  .greffier-panel { right: 8px; left: 8px; width: auto; bottom: calc(78px + env(safe-area-inset-bottom)); max-height: 76vh; }
  .greffier-fab { width: 52px; height: 52px; }
}
@media print { .greffier-fab, .greffier-panel { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .greffier-fab { transition: none; } }
