/* Kdance · gestion des adhérents.
   Rouge et noir de l'école, clair pour travailler. Un écran à la fois, le téléphone d'abord. */
/* Polices hébergées ici, plus aucun appel à Google Fonts (l'adresse des utilisateurs ne part plus chez Google). */
@font-face { font-family: 'Bebas Neue'; font-style: normal; font-weight: 400; font-display: swap; src: url(bebas-neue-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Bebas Neue'; font-style: normal; font-weight: 400; font-display: swap; src: url(bebas-neue-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url(dm-sans-italic-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url(dm-sans-italic-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(dm-sans-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(dm-sans-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  --rouge: #E01B2C;
  --rouge-sombre: #B4121F;
  --rouge-pale: #FBE9EB;
  --noir: #111111;
  --encre: #1E1D1B;
  --gris: #6F6A64;
  --gris-clair: #A39D96;
  --trait: #E7E2DC;
  --papier: #F6F3EF;
  --carte: #FFFFFF;
  --vert: #1F8A4C;
  --vert-pale: #E6F4EC;
  --ambre: #B8770A;
  --ambre-pale: #FBF1DC;
  --rayon: 14px;
  --titre: 'Bebas Neue', Impact, 'Arial Narrow', sans-serif;
  --texte: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --barre-h: 56px;
  --onglets-h: 64px;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--papier); color: var(--encre);
  font: 16px/1.45 var(--texte); font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4 { margin: 0; font-weight: 600; letter-spacing: 0; }
h1 { font: 400 40px/1 var(--titre); letter-spacing: .01em; }
h2 { font-size: 18px; }
h3 { font-size: 16px; }
h4 { font-size: 13px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); margin: 14px 0 6px; }
small { font-size: .85em; color: var(--gris); }
button { font: inherit; color: inherit; }
input, select, textarea { font: inherit; color: inherit; }
[hidden] { display: none !important; }

/* ── Barre haute ─────────────────────────────────────────────────────────── */
.barre {
  position: sticky; top: 0; z-index: 20; height: var(--barre-h);
  background: var(--noir); color: #fff;
  display: flex; align-items: center; gap: 10px; padding: 0 12px 0 14px;
  padding-top: env(safe-area-inset-top);
}
.marque { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.marque .logo { height: 40px; width: auto; display: block; }
.marque .k {
  font: 400 26px/1 var(--titre); color: #fff; background: var(--rouge);
  width: 30px; height: 30px; border-radius: 7px; display: inline-grid; place-items: center; align-self: center;
}
.marque .nom { font: 400 22px/1 var(--titre); letter-spacing: .06em; }
.marque .saison { font-size: 12px; color: #A9A49E; }
.recherche { flex: 1; min-width: 0; }
.recherche input {
  width: 100%; height: 36px; border: 0; border-radius: 10px; padding: 0 12px;
  background: #2A2926; color: #fff; outline: none;
}
.recherche input::placeholder { color: #8C8781; }
.recherche input:focus { background: #3A3936; box-shadow: 0 0 0 2px var(--rouge); }
.recherche input::-webkit-search-cancel-button { filter: invert(1); }
.moi { position: relative; flex-shrink: 0; }
.moi summary {
  list-style: none; cursor: pointer; width: 34px; height: 34px; border-radius: 50%;
  background: #3A3936; display: grid; place-items: center; font-weight: 600; font-size: 14px;
}
.moi summary::-webkit-details-marker { display: none; }
.moi[open] summary { background: var(--rouge); }
.menu {
  position: absolute; right: 0; top: 42px; min-width: 210px; background: var(--carte); color: var(--encre);
  border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25); padding: 6px; z-index: 30;
}
.menu-nom { margin: 6px 10px 8px; font-weight: 600; }
.menu-nom small { display: block; font-weight: 400; }
.menu a, .menu .lien { display: block; width: 100%; text-align: left; padding: 9px 10px; border-radius: 8px; background: none; border: 0; cursor: pointer; }
.menu a:hover, .menu .lien:hover { background: var(--papier); }

.recherche-resultats {
  position: fixed; z-index: 30; left: 50%; transform: translateX(-50%); top: calc(var(--barre-h) + 6px);
  width: min(640px, calc(100% - 16px)); background: var(--carte); border: 1px solid var(--trait); border-radius: 14px;
  box-shadow: 0 16px 40px rgba(0,0,0,.22); overflow: hidden; max-height: min(70vh, 560px); overflow-y: auto;
}
.recherche-resultats .liste .ligne { padding-left: 16px; padding-right: 16px; }
.recherche-tout { display: block; text-align: center; padding: 12px; color: var(--rouge); font-weight: 600; font-size: 14px; border-top: 1px solid var(--trait); background: var(--papier); }
@media (min-width: 900px) { .recherche-resultats { left: calc(50% + 110px); } }

/* ── Onglets ─────────────────────────────────────────────────────────────── */
.onglets {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; height: calc(var(--onglets-h) + env(safe-area-inset-bottom));
  padding-bottom: env(safe-area-inset-bottom);
  background: var(--carte); border-top: 1px solid var(--trait);
  display: grid; grid-template-columns: repeat(5, 1fr);
}
.onglets a {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  font-size: 11px; font-weight: 500; color: var(--gris);
}
.onglets svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.onglets a.on { color: var(--rouge); }
.onglets a.notes-onglet { display: none; }
.onglets a.plus svg { background: var(--noir); color: #fff; border-radius: 50%; padding: 4px; width: 28px; height: 28px; }
.onglets a.plus.on svg { background: var(--rouge); }

/* ── Page ────────────────────────────────────────────────────────────────── */
.page { max-width: 760px; margin: 0 auto; padding: 16px 14px calc(var(--onglets-h) + 28px); }
.entete-page { margin: 6px 0 18px; }
.entete-page .sous { margin: 6px 0 0; color: var(--gris); }
.entete-page .actions { margin-top: 12px; }
.retour { display: inline-block; font-size: 13px; color: var(--gris); padding: 10px 0 8px; margin: -10px 0 0; }
.retour::before { content: '‹ '; }
.identite { display: flex; align-items: center; gap: 14px; }
.identite h1 { font-size: 34px; }
.a-verifier { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--ambre); background: var(--ambre-pale); padding: 2px 6px; border-radius: 6px; vertical-align: middle; }

.flash { padding: 12px 14px; border-radius: 12px; margin: 0 0 14px; background: var(--vert-pale); color: #145C33; font-weight: 500; }
.flash-action { float: right; background: #145C33; color: #fff; padding: 4px 12px; border-radius: 8px; font-size: 14px; }
.flash.erreur { background: var(--rouge-pale); color: var(--rouge-sombre); }
/* Un lien dans un message doit se voir cliquable (fiches en double, élève déjà inscrit). */
.flash a:not(.flash-action) { color: inherit; text-decoration: underline; text-underline-offset: 2px; font-weight: 600; }
.flash.doublons ul { margin: 8px 0 0 20px; }

.vide { color: var(--gris); text-align: center; padding: 40px 10px; }
.vide a { color: var(--rouge); font-weight: 600; }

/* ── Chiffres d'accueil ──────────────────────────────────────────────────── */
.chiffres { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 18px; }
.chiffre {
  background: var(--carte); border-radius: var(--rayon); padding: 14px 16px; display: flex; flex-direction: column; gap: 2px;
  border: 1px solid var(--trait);
}
.chiffre.grand { grid-column: 1 / -1; }
.chiffre .etiquette { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); }
.chiffre strong { font: 400 40px/1.05 var(--titre); white-space: nowrap; }
.chiffre.grand strong { font-size: 56px; }
.chiffre.alerte strong { color: var(--rouge); }
.chiffre.ok strong { color: var(--vert); }
.chiffre .detail { font-size: 13px; color: var(--gris); }
@media (max-width: 480px) { .chiffre:not(.grand) strong { font-size: 32px; } }

/* ── Accueil ─────────────────────────────────────────────────────────────── */
.hero {
  position: relative; overflow: hidden; background: var(--noir); color: #fff; border-radius: 18px;
  padding: 26px 22px 24px; margin: 0 0 14px; display: flex; flex-direction: column; gap: 16px;
  background-image: radial-gradient(ellipse at 110% 10%, rgba(224,27,44,.55), transparent 55%), radial-gradient(ellipse at -10% 110%, rgba(224,27,44,.25), transparent 50%);
}
.hero-logo { width: 150px; height: auto; display: block; }
.hero-sur { margin: 0 0 4px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #B9B4AE; }
.hero h1 { font-size: 46px; color: #fff; }
.hero-date { margin: 4px 0 0; color: #B9B4AE; font-size: 15px; }
.hero-recherche { margin-top: 14px; }
.hero-recherche input {
  width: 100%; height: 50px; border-radius: 14px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.08);
  color: #fff; padding: 0 16px; font-size: 16px; outline: none; backdrop-filter: blur(6px);
}
.hero-recherche input::placeholder { color: #A9A49E; }
.hero-recherche input:focus { background: rgba(255,255,255,.14); border-color: var(--rouge); box-shadow: 0 0 0 3px rgba(224,27,44,.3); }
.hero-recherche input::-webkit-search-cancel-button { filter: invert(1); }

.rubriques { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 18px; }
.rubrique {
  background: var(--carte); border: 1px solid var(--trait); border-radius: 16px; padding: 18px 16px 16px;
  display: flex; flex-direction: column; gap: 3px; min-height: 124px; transition: transform .12s ease, border-color .12s ease;
}
.rubrique:hover, .rubrique:active { border-color: var(--rouge); transform: translateY(-1px); }
.rubrique svg { width: 28px; height: 28px; fill: none; stroke: var(--rouge); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; margin-bottom: 8px; }
.rubrique strong { font: 400 26px/1 var(--titre); letter-spacing: .03em; }
.rubrique span { font-size: 13px; color: var(--gris); line-height: 1.35; }
.rubrique.grande { min-height: 150px; }
.rubrique.grande strong { font-size: 34px; }
.rubrique.accent { background: var(--rouge); border-color: var(--rouge); color: #fff; }
.rubrique.accent svg { stroke: #fff; }
.rubrique.accent span { color: rgba(255,255,255,.8); }
.rubrique.accent:hover { background: var(--rouge-sombre); }

.agenda { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-bottom: 14px; }
.agenda > * { min-width: 0; }
.agenda-cal { background: var(--carte); border: 1px solid var(--trait); border-radius: 16px; padding: 14px 14px 10px; }
.agenda-tete { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.agenda-tete h2 { font: 400 24px/1 var(--titre); letter-spacing: .03em; text-transform: capitalize; }
.agenda-nav { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--trait); background: var(--carte); font-size: 22px; line-height: 1; cursor: pointer; color: var(--gris); }
.agenda-nav:hover { border-color: var(--rouge); color: var(--rouge); }
.agenda-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.agenda-grille .entete { text-align: center; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris-clair); padding: 4px 0 6px; }
.agenda-grille button {
  position: relative; aspect-ratio: 1; width: 100%; min-width: 0; border-radius: 10px; border: 1px solid transparent; background: transparent; font-size: 14px; font-weight: 500; color: var(--encre); cursor: pointer; padding: 0;
}
.agenda-grille button.hors { color: var(--gris-clair); }
.agenda-grille button.avec::after { content: ''; position: absolute; left: 50%; bottom: 5px; width: 5px; height: 5px; border-radius: 50%; background: var(--rouge); transform: translateX(-50%); }
.agenda-grille button.hors-saison { color: #D2CDC7; }
.agenda-grille button.hors-saison::after { display: none; }
.agenda-grille button:hover { background: var(--papier); }
.agenda-grille button.auj { border-color: var(--rouge); color: var(--rouge); font-weight: 700; }
.agenda-grille button.choisi { background: var(--noir); color: #fff; }
.agenda-grille button.choisi::after { background: #fff; }
.agenda-auj { margin: 8px 2px 0; }
.jour { margin-bottom: 14px; }
.jour-tete { display: flex; justify-content: space-between; align-items: baseline; padding: 0 2px 10px; }
.jour-tete h2 { font: 400 26px/1 var(--titre); letter-spacing: .03em; }
.jour-fil { display: flex; gap: 10px; overflow-x: auto; padding: 2px 2px 8px; scroll-snap-type: x proximity; scrollbar-width: none; }
.jour-fil::-webkit-scrollbar { display: none; }
.jour-cours {
  flex: 0 0 auto; width: 180px; scroll-snap-align: start; background: var(--carte); border: 1px solid var(--trait); border-radius: 14px; padding: 12px 14px;
  display: flex; flex-direction: column; gap: 2px;
}
.jour-cours:hover { border-color: var(--rouge); }
.jour-heure { font: 400 30px/1 var(--titre); color: var(--rouge); }
.jour-nom { font-weight: 600; font-size: 14px; line-height: 1.25; }
.jour-sous { font-size: 12px; color: var(--gris); }

@media (min-width: 700px) {
  .hero { flex-direction: row; align-items: center; gap: 30px; padding: 34px 36px; }
  .hero-logo { width: 190px; flex-shrink: 0; }
  .hero-texte { flex: 1; min-width: 0; }
  .hero h1 { font-size: 56px; }
  .rubriques { grid-template-columns: repeat(4, 1fr); }
  .rubrique.grande { grid-column: span 2; }
  .jour-fil { flex-wrap: wrap; overflow: visible; }
  .jour-cours { width: calc(25% - 8px); }
  .agenda { grid-template-columns: 330px minmax(0, 1fr); align-items: start; }
  .agenda .jour-cours { width: calc(50% - 5px); }
}

/* ── Blocs et listes ─────────────────────────────────────────────────────── */
.bloc { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 14px 0 6px; margin-bottom: 14px; }
.bloc.discret { background: transparent; border: 0; padding: 4px 2px; }
.bloc.discret h2 { font-size: 14px; color: var(--gris); margin-bottom: 6px; }
.bloc-titre { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 0 16px 8px; }
.bloc-titre .sous { color: var(--gris); font-size: 13px; }
.bloc-intro { margin: 0 16px 10px; color: var(--gris); font-size: 14px; }
.lien-suite { background: none; border: 0; padding: 10px 0; margin: -10px 0; cursor: pointer; color: var(--rouge); font-weight: 600; font-size: 14px; }
.bloc > .lien-suite { margin: 6px 16px 10px; display: inline-block; }
.puces { margin: 0; padding-left: 18px; color: var(--gris); font-size: 14px; }
.puces li { margin: 4px 0; }
.puces a { color: var(--rouge); font-weight: 600; }

.liste { list-style: none; margin: 0; padding: 0; }
.liste > li { border-top: 1px solid var(--trait); }
.liste > li:first-child { border-top: 0; }
.liste .lettre {
  border-top: 0; padding: 12px 16px 4px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--gris-clair);
}
.liste.eleves { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); overflow: hidden; }
.ligne {
  display: flex; align-items: center; gap: 12px; padding: 11px 16px; min-height: 58px;
  -webkit-tap-highlight-color: transparent;
}
a.ligne:active, a.ligne:hover { background: var(--papier); }
.ligne.statique { padding-right: 10px; }
.liste.compacte .ligne { min-height: 50px; padding-top: 8px; padding-bottom: 8px; }
.ligne .corps { flex: 1; min-width: 0; display: flex; flex-direction: column; }
a.corps:hover .titre { color: var(--rouge); }
.ligne .titre { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ligne .titre strong { font-weight: 600; }
.ligne .sous { font-size: 13px; color: var(--gris); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ligne .corps-droite { display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; }
.avatar {
  flex-shrink: 0; width: 38px; height: 38px; border-radius: 50%; background: var(--papier); border: 1px solid var(--trait);
  display: grid; place-items: center; font-size: 13px; font-weight: 600; color: var(--gris);
}
.avatar.grand { width: 56px; height: 56px; font-size: 18px; background: var(--noir); color: #fff; border: 0; }
.fratrie { color: var(--gris-clair); font-weight: 500; margin-left: 4px; }
.heure { flex-shrink: 0; width: 46px; font: 400 20px/1 var(--titre); color: var(--encre); }
.effectif { font: 400 24px/1 var(--titre); }
.effectif small { font-size: 14px; color: var(--gris-clair); }
.effectif.vide { color: var(--gris-clair); }
.montant { flex-shrink: 0; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.montant.du { color: var(--rouge); }
.montant.recu { color: var(--vert); }
.montant.ok { color: var(--vert); display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.montant.ok em { font-style: normal; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; }
.montant.vide { color: var(--ambre); font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }
.manque { color: var(--ambre); }
.puce { width: 10px; height: 10px; border-radius: 50%; background: var(--gris-clair); flex-shrink: 0; }
.puce.paiement { background: var(--vert); }
.puce.relance { background: var(--ambre); }
.puce.inscription { background: var(--rouge); }
.fil-date { flex-shrink: 0; width: 64px; font-size: 13px; color: var(--gris); line-height: 1.2; }
.croix {
  flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%; border: 0; background: transparent; color: var(--gris-clair);
  font-size: 22px; line-height: 1; cursor: pointer;
}
.croix:hover { background: var(--rouge-pale); color: var(--rouge); }
.tag { font-size: 11px; background: var(--papier); border: 1px solid var(--trait); border-radius: 6px; padding: 1px 6px; color: var(--gris); margin-left: 4px; vertical-align: middle; }

/* ── Pastilles (filtres) ─────────────────────────────────────────────────── */
.pastilles { display: flex; gap: 6px; align-items: center; overflow-x: auto; padding: 2px 0 12px; scrollbar-width: none; }
.pastilles::-webkit-scrollbar { display: none; }
.pastilles a {
  flex-shrink: 0; padding: 9px 13px; border-radius: 999px; background: var(--carte); border: 1px solid var(--trait);
  font-size: 14px; font-weight: 500; color: var(--gris);
}
.pastilles a b { font-weight: 600; color: var(--gris-clair); margin-left: 2px; }
.pastilles a.on { background: var(--noir); color: #fff; border-color: var(--noir); }
.pastilles a.on b { color: #B9B4AE; }
.pastilles .espace { flex: 1; }
.pastilles .tri { border-style: dashed; }
.pastille-select { flex-shrink: 0; max-width: 220px; height: 40px; padding: 0 30px 0 12px; border-radius: 999px; border: 1px solid var(--trait); background: var(--carte) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 7l5 5 5-5' fill='none' stroke='%236F6A64' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 10px center / 14px; font-size: 14px; font-weight: 500; color: var(--gris); appearance: none; -webkit-appearance: none; }
.pastille-select.on { background-color: var(--noir); color: #fff; border-color: var(--noir); }
.pastilles.petites a { padding: 5px 10px; font-size: 13px; }

/* ── Recherche dans la page ──────────────────────────────────────────────── */
.recherche-page { margin-bottom: 10px; }
.recherche-page input {
  width: 100%; height: 46px; border-radius: 12px; border: 1px solid var(--trait); background: var(--carte); padding: 0 14px; outline: none;
}
.recherche-page input:focus { border-color: var(--noir); box-shadow: 0 0 0 3px rgba(17,17,17,.08); }

/* ── Carte argent (fiche élève) ──────────────────────────────────────────── */
.carte { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 16px; margin-bottom: 14px; }
.carte.argent { border-left: 4px solid var(--gris-clair); }
.carte.argent.alerte { border-left-color: var(--rouge); }
.carte.argent.ok { border-left-color: var(--vert); }
.argent-tete { display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.argent-tete .etiquette { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); display: block; }
.grand-montant { font: 400 48px/1 var(--titre); display: block; margin: 2px 0 4px; }
.alerte .grand-montant { color: var(--rouge); }
.ok .grand-montant { color: var(--vert); }
.argent-tete .detail { display: block; font-size: 13px; color: var(--gris); }
.alerte-txt { color: var(--ambre) !important; }
.argent-note { margin: 12px 0 0; font-size: 13px; color: var(--gris); }
.note-dossier { background: var(--ambre-pale); color: #6E4700; border-radius: 12px; padding: 12px 14px; margin: -6px 0 14px; font-size: 14px; white-space: pre-line; }

/* ── Boutons ─────────────────────────────────────────────────────────────── */
.actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.bouton {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 42px; padding: 0 16px; border-radius: 11px; border: 1px solid var(--trait); background: var(--carte);
  font-weight: 600; font-size: 15px; cursor: pointer; white-space: nowrap;
}
.bouton:hover { border-color: var(--gris-clair); }
.bouton.principal { background: var(--rouge); border-color: var(--rouge); color: #fff; }
.bouton.principal:hover { background: var(--rouge-sombre); }
.bouton.discret { border-color: transparent; background: transparent; color: var(--gris); }
.bouton.discret:hover { background: var(--papier); }
.bouton.large { width: 100%; min-height: 50px; font-size: 16px; }
.boutons-ligne { display: flex; gap: 8px; flex-wrap: wrap; padding: 0 16px 10px; }

/* ── Formulaires ─────────────────────────────────────────────────────────── */
label { display: block; font-size: 13px; font-weight: 500; color: var(--gris); margin: 10px 0; }
label small { font-weight: 400; }
label input, label select, label textarea {
  display: block; width: 100%; margin-top: 4px; min-height: 44px; padding: 8px 12px;
  border: 1px solid var(--trait); border-radius: 10px; background: var(--carte); color: var(--encre); font-size: 16px; outline: none;
}
label textarea { min-height: 0; line-height: 1.4; resize: vertical; }
label input:focus, label select:focus, label textarea:focus { border-color: var(--noir); box-shadow: 0 0 0 3px rgba(17,17,17,.08); }
label.case, label.radio { display: flex; align-items: center; gap: 10px; font-size: 15px; color: var(--encre); font-weight: 400; margin: 8px 0; cursor: pointer; }
label.case input, label.radio input { width: 20px; height: 20px; min-height: 0; margin: 0; accent-color: var(--rouge); }
.grille-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.grille-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 12px; }
.repli { border-top: 1px dashed var(--trait); margin: 14px 16px 6px; padding-top: 6px; }
.carte .repli, .repli.carte { margin-left: 0; margin-right: 0; }
.repli.carte { border: 1px solid var(--trait); border-radius: var(--rayon); padding: 16px; }
.repli h3 { margin: 8px 0 0; }
.repli .actions { margin: 10px 0 6px; }
.formulaire fieldset { border: 0; padding: 0; margin: 0 0 8px; background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 8px 16px 12px; }
.formulaire legend { font: 400 22px/1 var(--titre); letter-spacing: .02em; padding: 0 6px; margin-left: -6px; }
.formulaire .actions { margin-top: 14px; }
.aide { font-size: 13px; color: var(--gris); margin: 6px 0 0; }
fieldset.moyens { border: 0; padding: 0; margin: 12px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
fieldset.moyens legend { font-size: 13px; font-weight: 500; color: var(--gris); margin-bottom: 6px; }
fieldset.moyens .radio { margin: 0; }
fieldset.moyens .radio { position: relative; }
fieldset.moyens .radio input { position: absolute; opacity: 0; width: 1px; height: 1px; min-height: 0; margin: 0; pointer-events: none; }
fieldset.moyens .radio span { padding: 9px 14px; border-radius: 999px; border: 1px solid var(--trait); background: var(--carte); font-weight: 500; }
fieldset.moyens .radio input:checked + span { background: var(--noir); color: #fff; border-color: var(--noir); }
.cases-cours h4:first-child { margin-top: 4px; }
.cases-cours .case { margin: 4px 0; }
.cases-cours .effectif { font: inherit; color: var(--gris-clair); margin-left: auto; }
.fiche-contact { margin: 0; padding: 0 16px 8px; }
.fiche-contact div { display: flex; gap: 12px; padding: 7px 0; border-top: 1px solid var(--trait); }
.fiche-contact div:first-child { border-top: 0; }
.fiche-contact dt { width: 120px; flex-shrink: 0; color: var(--gris); font-size: 14px; }
.fiche-contact dd { margin: 0; font-size: 15px; }
.fiche-contact a { color: var(--rouge); font-weight: 500; }

/* ── Fil historique ──────────────────────────────────────────────────────── */
.fil { list-style: none; margin: 0; padding: 0 16px 6px; }
.fil li { display: flex; gap: 12px; padding: 9px 0; border-top: 1px solid var(--trait); align-items: flex-start; }
.fil li:first-child { border-top: 0; }
.fil-corps { flex: 1; min-width: 0; font-size: 15px; }
.fil li.paiement strong { color: var(--vert); }
.detail-relance summary { cursor: pointer; color: var(--rouge); font-size: 13px; font-weight: 600; }
.detail-relance pre { white-space: pre-wrap; font: 13px/1.45 var(--texte); background: var(--papier); padding: 10px; border-radius: 8px; margin: 6px 0 0; }

/* ── Impayés cochables ───────────────────────────────────────────────────── */
.cochable > li { display: flex; align-items: stretch; }
.cochable > li.lettre { display: block; }
.cochable .ligne { flex: 1; min-width: 0; }
.coche { display: flex; align-items: center; padding: 0 0 0 14px; margin: 0; cursor: pointer; position: relative; }
.coche input { position: absolute; opacity: 0; width: 1px; height: 1px; min-height: 0; margin: 0; pointer-events: none; }
.coche span { width: 24px; height: 24px; border-radius: 7px; border: 2px solid var(--trait); display: inline-block; background: var(--carte); position: relative; }
.coche input:checked + span { background: var(--rouge); border-color: var(--rouge); }
.coche input:checked + span::after { content: ''; position: absolute; left: 7px; top: 3px; width: 6px; height: 11px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.barre-groupe {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(var(--onglets-h) + 12px + env(safe-area-inset-bottom)); z-index: 25;
  width: min(720px, calc(100% - 20px)); background: var(--noir); color: #fff; border-radius: 14px; padding: 10px 12px;
  display: flex; align-items: center; gap: 10px; box-shadow: 0 12px 30px rgba(0,0,0,.3);
}
.barre-groupe select { flex: 1; min-width: 0; min-height: 40px; border-radius: 9px; border: 0; background: #2A2926; color: #fff; padding: 0 10px; }
.barre-groupe [data-compte] { font-size: 13px; white-space: nowrap; }

/* ── Écran d'entrée ──────────────────────────────────────────────────────── */
body.porte { background: var(--noir); color: #fff; min-height: 100vh; display: grid; place-items: center; padding: 20px; }
.entree { width: min(380px, 100%); }
.entree-marque { margin-bottom: 20px; }
.entree-marque img { width: 220px; max-width: 70%; height: auto; display: block; }
.entree-marque .k { background: var(--rouge); width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; font-size: 34px; }
.entree h1 { font-size: 24px; font-family: var(--texte); font-weight: 500; color: #B9B4AE; margin-bottom: 16px; }
.form-entree label { color: #B9B4AE; }
.form-entree input { background: #2A2926; border-color: #3A3936; color: #fff; }
.form-entree input:focus { border-color: var(--rouge); box-shadow: 0 0 0 3px rgba(224,27,44,.25); }
.form-entree .bouton { margin-top: 8px; }
.entree-note { color: #6F6A64; font-size: 13px; margin-top: 22px; }
body.porte .flash { margin-bottom: 12px; }

/* ── Liste d'appel ───────────────────────────────────────────────────────── */
body.impression { background: #fff; }
body.impression .page { max-width: none; padding: 20px; }
.appel-tete { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 16px; }
.appel-ecole { margin: 0; font-size: 12px; letter-spacing: .1em; color: var(--gris); }
.appel h1 { font-size: 36px; margin: 2px 0; }
.appel-sous { margin: 0; color: var(--gris); }
.appel-defile { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.appel-table { width: 100%; min-width: 720px; border-collapse: collapse; font-size: 13px; }
.appel-table th, .appel-table td { border: 1px solid #C9C4BE; padding: 6px 6px; height: 30px; text-align: left; }
.appel-table th { background: #F1EDE8; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
.appel-table .n { width: 28px; color: var(--gris); }
.appel-table .nom { min-width: 180px; }
.appel-table .contact { width: 170px; color: var(--gris); font-size: 12px; }
.appel-table .date { width: 30px; }
.appel-table tr.libre td { color: transparent; }
.appel-du { font-size: 11px; color: var(--rouge); margin-left: 6px; }
.appel-pied { margin-top: 14px; font-size: 11px; color: var(--gris); }
@media print {
  @page { size: A4 landscape; margin: 12mm; }
  body.impression .page { padding: 0; }
  .ecran { display: none !important; }
  .appel-table th, .appel-table td { height: 28px; }
}

/* ── Grand écran ─────────────────────────────────────────────────────────── */
@media (min-width: 900px) {
  :root { --onglets-h: 0px; }
  body.app { padding-left: 220px; }
  .barre { padding-left: 234px; }
  .onglets {
    top: var(--barre-h); bottom: auto; left: 0; right: auto; width: 220px; height: calc(100vh - var(--barre-h));
    display: flex; flex-direction: column; border-top: 0; border-right: 1px solid var(--trait); padding: 16px 12px; gap: 4px;
  }
  .onglets a { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 10px 12px; border-radius: 10px; font-size: 15px; }
  .onglets a.on { background: var(--rouge-pale); }
  .onglets a.plus { margin-top: 12px; }
  .onglets a.notes-onglet { display: flex; }
  .badge { display: inline-block; min-width: 18px; padding: 0 5px; border-radius: 999px; background: var(--rouge); color: #fff; font-size: 11px; line-height: 18px; text-align: center; margin-left: 6px; }
  .onglets a.plus svg { width: 26px; height: 26px; }
  .page { padding: 28px 32px 60px; max-width: 860px; }
  .chiffres { grid-template-columns: 1.4fr 1fr 1fr; }
  .chiffre.grand { grid-column: auto; }
  .chiffre.grand strong { font-size: 52px; }
  h1 { font-size: 46px; }
  .barre-groupe { left: calc(50% + 110px); bottom: 20px; }
  .liste.compacte .ligne, .ligne { padding-left: 18px; padding-right: 18px; }
}
@media (max-width: 560px) {
  .grille-3 { grid-template-columns: 1fr 1fr; }
  .argent-tete .actions { width: 100%; }
  .argent-tete .actions .bouton { flex: 1; }
  .marque .saison { display: none; }
  .marque .logo { height: 36px; }
  .fiche-contact dt { width: 100px; }
  .identite h1 { font-size: 28px; }
}
@media (prefers-reduced-motion: no-preference) {
  .repli[data-ouvert] { animation: deplie .18s ease-out; }
  @keyframes deplie { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
}

/* ── Page publique de l'école ────────────────────────────────────────────── */
body.public { background: var(--papier); }
.pub-barre {
  position: sticky; top: 0; z-index: 20; background: var(--noir); color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 18px; height: 60px;
}
.pub-barre .marque .nom { display: inline; font-size: 24px; }
.pub-nav { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.pub-nav::-webkit-scrollbar { display: none; }
.pub-nav a { padding: 8px 12px; border-radius: 8px; font-size: 14px; font-weight: 500; color: #D9D4CE; white-space: nowrap; }
.pub-nav a:hover { background: #2A2926; color: #fff; }
.pub-hero {
  background: var(--noir); color: #fff; padding: 56px 20px 64px; text-align: center;
  background-image: radial-gradient(ellipse at 50% 120%, rgba(224,27,44,.45), transparent 60%);
}
.pub-surtitre { margin: 0 0 10px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: #B9B4AE; }
.pub-hero h1 { font-size: clamp(44px, 9vw, 88px); line-height: .95; max-width: 14ch; margin: 0 auto; text-transform: uppercase; }
.pub-hero-actions { display: flex; gap: 10px; justify-content: center; margin-top: 28px; flex-wrap: wrap; }
.bouton.clair { background: transparent; border-color: #4A4844; color: #fff; }
.bouton.clair:hover { border-color: #fff; }
.pub-page { max-width: 960px; margin: 0 auto; padding: 8px 18px 40px; }
.pub-section { padding: 40px 0 8px; scroll-margin-top: 70px; }
.pub-section h2 { font: 400 40px/1 var(--titre); letter-spacing: .02em; margin-bottom: 8px; }
.pub-intro, .pub-texte { color: var(--gris); max-width: 62ch; margin: 0 0 18px; font-size: 16px; }
.pub-texte { color: var(--encre); }
.pub-disciplines { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.pub-discipline { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 16px 18px; }
.pub-discipline h3 { font: 400 26px/1 var(--titre); letter-spacing: .03em; color: var(--rouge); margin-bottom: 8px; }
.pub-discipline ul { list-style: none; margin: 0; padding: 0; }
.pub-discipline li { padding: 9px 0; border-top: 1px solid var(--trait); display: flex; flex-direction: column; gap: 2px; }
.pub-discipline li:first-child { border-top: 0; }
.pub-cours-nom { font-weight: 600; }
.pub-cours-nom small { font-weight: 400; color: var(--gris); }
.pub-cours-quand { font-size: 14px; color: var(--gris); }
.pub-sombre { background: var(--noir); color: #fff; border-radius: var(--rayon); padding: 32px 24px; margin: 32px 0 8px; }
.pub-sombre h2 { color: #fff; }
.pub-sombre .pub-texte { color: #E7E2DC; }
.pub-note { color: #B9B4AE; font-size: 14px; margin: 0; }
.pub-infos { margin: 0; }
.pub-infos div { display: flex; gap: 14px; padding: 10px 0; border-top: 1px solid var(--trait); }
.pub-infos div:first-child { border-top: 0; }
.pub-infos dt { width: 120px; flex-shrink: 0; color: var(--gris); }
.pub-infos dd { margin: 0; }
.pub-contact { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 16px; }
.pub-contact a { color: var(--rouge); font-weight: 600; }
.pub-pied { max-width: 960px; margin: 0 auto; padding: 18px; border-top: 1px solid var(--trait); display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 13px; color: var(--gris); }
.pub-bureau { color: var(--gris-clair); }
.pub-bureau:hover { color: var(--rouge); }
@media (max-width: 560px) {
  .pub-barre { padding: 0 12px; }
  .pub-barre .marque .nom { display: none; }
  .pub-hero { padding: 40px 16px 48px; }
  .pub-section h2 { font-size: 34px; }
}

/* ── Tableaux ────────────────────────────────────────────────────────────── */
.tableau { width: 100%; border-collapse: collapse; font-size: 14px; margin: 8px 0 12px; }
.tableau th, .tableau td { padding: 8px 8px; border-bottom: 1px solid var(--trait); text-align: left; vertical-align: top; }
.tableau th { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--gris); font-weight: 600; }
.tableau .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tableau tfoot th, .tableau tfoot td { border-bottom: 0; }
.tableau tfoot th { font-size: 15px; text-transform: none; letter-spacing: 0; color: var(--encre); }
.tableau tr.groupe td { background: var(--papier); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); font-weight: 600; padding-top: 12px; }
.tableau.tarifs input { width: 90px; min-height: 36px; padding: 4px 8px; text-align: right; margin: 0; }
.lien-doc { color: var(--rouge); font-weight: 600; font-size: 13px; margin-left: 6px; }

/* ── Documents : facture, reçu ───────────────────────────────────────────── */
body.impression .page { max-width: 820px; margin: 0 auto; padding: 24px 20px 60px; }
.doc { background: #fff; color: #111; border: 1px solid var(--trait); border-radius: 6px; padding: 40px 44px; position: relative; font-size: 14px; line-height: 1.45; }
.doc-outils { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: -12px 0 22px; flex-wrap: wrap; }
.doc-outils .retour { margin: 0; }
.doc-etat { margin: 0 0 14px; padding: 8px 12px; border-radius: 6px; background: #F6F3EF; font-weight: 600; font-size: 14px; }
.doc-etat.acquittee { background: #F1FAF4; color: #145C33; }
.doc-etat.annulee { background: #FBE9EB; color: var(--rouge-sombre); }
.doc-tete { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; margin-bottom: 30px; }
.doc-logo img { width: 190px; height: auto; display: block; }
.doc-titre { text-align: right; }
.doc-genre { margin: 0; font: 400 44px/1 var(--titre); letter-spacing: .04em; }
.doc-numero { margin: 4px 0 0; font-weight: 600; font-size: 16px; }
.doc-date { margin: 2px 0 0; color: #666; }
.doc-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 28px; }
.doc-parties p { margin: 0; }
.doc-etiquette { font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: #888; margin-bottom: 4px !important; }
.doc-table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
.doc-table th, .doc-table td { padding: 9px 8px; text-align: left; vertical-align: top; border-bottom: 1px solid #E5E5E5; }
.doc-table thead th { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: #666; border-bottom: 2px solid #111; }
.doc-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.doc-table small { color: #666; }
.doc-table tfoot td { border-bottom: 0; padding-top: 6px; padding-bottom: 6px; }
.doc-table tfoot tr.total td { font-weight: 600; border-top: 2px solid #111; padding-top: 10px; }
.doc-table tfoot tr.reste td { font-weight: 700; font-size: 16px; color: var(--rouge); }
.doc-table tfoot tr.reste.solde td { color: var(--vert); }
.doc-table tfoot tr.acquit td { font-weight: 700; font-size: 16px; color: var(--vert); }
.doc-table.petite { font-size: 13px; margin-top: 4px; }
.doc-table.petite td { padding: 5px 8px; }
.doc-acquit { border: 1px solid #CFE7D8; background: #F1FAF4; border-radius: 8px; padding: 12px 14px; margin: 14px 0 12px; }
.doc-acquit p { margin: 0 0 6px; }
.doc-acquit p:last-child { margin: 0; }
.doc-note, .doc-mention { color: #444; font-size: 13px; margin: 0 0 8px; }
.doc-pied { margin-top: 40px; padding-top: 12px; border-top: 1px solid #E5E5E5; font-size: 11px; color: #777; }
.doc-pied p { margin: 0; }
.doc-somme { font-size: 18px; margin: 10px 0 14px; }
.doc-somme small { color: #666; font-size: 13px; }
.doc-texte { margin: 0 0 8px; }
@media (max-width: 560px) {
  .doc { padding: 22px 18px; }
  .doc-parties { grid-template-columns: 1fr; gap: 12px; }
  .doc-logo img { width: 140px; }
  .doc-genre { font-size: 34px; }
}
@media print {
  body.impression { background: #fff; }
  body.impression .page { padding: 0; max-width: none; }
  .doc { border: 0; border-radius: 0; padding: 0; }
  .doc-outils, .ecran, .flash { display: none !important; }
  @page { size: A4 portrait; margin: 16mm; }
}

/* ── Fiche d'inscription ─────────────────────────────────────────────────── */
.fi-bloc { margin: 0 0 14px; }
.fi-bloc h3 { font: 400 20px/1 var(--titre); letter-spacing: .04em; color: var(--rouge); margin-bottom: 8px; padding-bottom: 4px; border-bottom: 1px solid #E5E5E5; }
.fi-bloc h3 small { font: 400 12px var(--texte); color: #777; letter-spacing: 0; }
.fi-grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 16px; }
.fi-grille div { display: flex; flex-direction: column; gap: 1px; }
.fi-grille div.large { grid-column: 1 / -1; }
.fi-grille span { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: #888; }
.fi-grille strong { font-weight: 600; font-size: 14px; border-bottom: 1px dotted #CCC; padding-bottom: 3px; min-height: 20px; }
.fi-vide { color: #B8770A; font-style: italic; font-weight: 400; }
.fi-cases { margin: 0; font-size: 13px; line-height: 1.6; }
.fi-case { display: inline-block; width: 14px; height: 14px; border: 1.5px solid #333; border-radius: 3px; vertical-align: -2px; margin-right: 4px; position: relative; }
.fi-case.coche::after { content: ''; position: absolute; left: 4px; top: 0; width: 4px; height: 8px; border: solid #111; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.fi-mentions { margin: 0; font-size: 12px; line-height: 1.5; color: #333; }
.fi-signatures { margin-top: 22px; }
.fi-signatures > p { margin: 0 0 10px; font-size: 14px; }
.fi-sig-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.fi-sig-grille span { display: block; font-weight: 600; font-size: 13px; }
.fi-sig-grille small { display: block; color: #777; font-size: 11px; margin-bottom: 6px; }
.fi-sig { height: 70px; border: 1px solid #C9C4BE; border-radius: 6px; }
@media (max-width: 560px) { .fi-grille { grid-template-columns: 1fr 1fr; } .fi-sig-grille { grid-template-columns: 1fr; } }
@media print { .fi-bloc { margin-bottom: 10px; } .fi-sig { height: 64px; } }
/* Fiche d'inscription : une seule page A4 à l'impression */
@media print {
  .fiche-insc { font-size: 12px; line-height: 1.35; }
  .fiche-insc .doc-tete { margin-bottom: 12px; }
  .fiche-insc .doc-logo img { width: 130px; }
  .fiche-insc .doc-genre { font-size: 32px; }
  .fiche-insc .fi-bloc { margin-bottom: 8px; page-break-inside: avoid; }
  .fiche-insc .fi-bloc h3 { font-size: 16px; margin-bottom: 5px; padding-bottom: 2px; }
  .fiche-insc .fi-grille { gap: 5px 14px; }
  .fiche-insc .fi-grille span { font-size: 9.5px; }
  .fiche-insc .fi-grille strong { font-size: 12px; min-height: 16px; padding-bottom: 2px; }
  .fiche-insc .doc-table.petite td { padding: 3px 6px; font-size: 11.5px; }
  .fiche-insc .fi-cases, .fiche-insc .fi-mentions { font-size: 11px; line-height: 1.45; }
  .fiche-insc .fi-signatures { margin-top: 12px; page-break-inside: avoid; }
  .fiche-insc .fi-sig { height: 58px; }
  .fiche-insc .doc-pied { margin-top: 14px; padding-top: 8px; font-size: 9.5px; }
}

.zone-danger { margin-top: 26px; }
.zone-danger form { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.zone-danger .sous { font-size: 13px; color: var(--gris); }
.bouton.danger { color: var(--rouge); }
.bouton.danger:hover { background: var(--rouge-pale); }
.croix.texte { width: auto; border-radius: 8px; font-size: 13px; font-weight: 600; padding: 0 10px; color: var(--gris); }
.croix.texte:hover { color: var(--rouge); }

/* ── Seuil de rentabilité ────────────────────────────────────────────────── */
.carte.seuil { border-left: 4px solid var(--ambre); }
.carte.seuil.ok { border-left-color: var(--vert); }
.seuil-tete { display: flex; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.seuil-tete .etiquette { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); display: block; }
.seuil-tete .detail { display: block; font-size: 13px; color: var(--gris); }
.seuil-marge strong { font: 400 40px/1.1 var(--titre); display: block; color: var(--ambre); }
.carte.seuil.ok .seuil-marge strong { color: var(--vert); }
.seuil-barre { position: relative; height: 14px; border-radius: 999px; background: var(--papier); border: 1px solid var(--trait); margin: 14px 0 8px; overflow: hidden; }
.seuil-barre span { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 999px; }
.seuil-facture { background: #F0B7BD; }
.seuil-encaisse { background: var(--rouge); }
.seuil-repere { position: absolute; top: -2px; bottom: -2px; width: 2px; background: var(--noir); transform: translateX(-2px); }
.seuil-legende { margin: 0; font-size: 13px; color: var(--gris); }
.seuil-legende span { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; }
.seuil-legende .l-f { background: #F0B7BD; } .seuil-legende .l-e { background: var(--rouge); } .seuil-legende .l-s { background: var(--noir); width: 3px; }
.carte.seuil.encours { border-left-color: var(--encre); }
.carte.seuil.encours .seuil-marge strong { color: var(--encre); }
.carte.seuil.ok .seuil-encaisse { background: var(--vert); }
.carte.seuil.encours .seuil-encaisse { background: var(--encre); }
.seuil-barre .seuil-prevu { border-radius: 0 999px 999px 0; background: repeating-linear-gradient(135deg, var(--gris-clair) 0 2px, transparent 2px 7px); }
.seuil-legende .l-p { background: repeating-linear-gradient(135deg, var(--gris-clair) 0 3px, transparent 3px 5px); border: 1px solid var(--trait); }
.carte.seuil.ok .seuil-legende .l-e { background: var(--vert); } .carte.seuil.encours .seuil-legende .l-e { background: var(--encre); }
.seuil-points { list-style: none; margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--trait); display: grid; gap: 6px; font-size: 14px; }
.seuil-points strong { font-weight: 700; }
.seuil-points .pos { color: var(--vert); } .seuil-points .neg { color: var(--encre); }
.seuil-points .discret { font-size: 12px; color: var(--gris); }
.seuil-reglage { margin-top: 10px; }
.seuil-reglage summary { cursor: pointer; color: var(--rouge); font-weight: 600; font-size: 14px; }
.seuil-reglage form { margin-top: 8px; align-items: flex-end; }
.seuil-reglage input { width: 180px; }
.seuil-manque { display: block; margin-top: 6px; font-size: 14px; color: var(--encre); }
.seuil-manque strong { font: 400 22px/1 var(--titre); color: var(--ambre); margin-right: 4px; }

/* ── Liste des adhérents ─────────────────────────────────────────────────── */
.listing .doc-tete { margin-bottom: 18px; }
.li-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 22px; }
.li-cours { page-break-inside: avoid; break-inside: avoid; }
.li-cours h3 { display: flex; align-items: baseline; gap: 8px; font: 400 19px/1.1 var(--titre); letter-spacing: .03em; color: var(--rouge); border-bottom: 2px solid #111; padding-bottom: 4px; margin-bottom: 4px; }
.li-cours h3 small { font: 400 11px var(--texte); color: #666; letter-spacing: 0; flex: 1; }
.li-total { font: 400 19px/1 var(--titre); color: #111; }
.li-cours ol { margin: 0; padding-left: 22px; font-size: 12.5px; line-height: 1.45; columns: 1; }
.li-cours li { padding: 1px 0; border-bottom: 1px dotted #E5E5E5; }
.li-cours li small { color: #777; }
.li-vide { margin: 0; font-size: 12px; color: #999; font-style: italic; }
.li-grille.pages { grid-template-columns: 1fr; }
.li-grille.pages .li-cours { page-break-after: always; break-after: page; min-height: 60vh; }
.li-grille.pages .li-cours ol { columns: 2; column-gap: 30px; font-size: 14px; }
.li-grille.pages .li-cours h3 { font-size: 26px; }
.li-alpha { font-size: 12.5px; }
.li-alpha td, .li-alpha th { padding: 5px 8px; }
.li-alpha .li-n { color: #999; width: 30px; }
.li-alpha tr.li-lettre td { background: #F1EDE8; font: 400 13px var(--titre); letter-spacing: .1em; color: var(--rouge); padding: 3px 8px; }
@media screen and (max-width: 700px) { .li-grille { grid-template-columns: 1fr; } }
@media print {
  .listing { font-size: 12px; }
  .li-grille { gap: 10px 20px; }
  .li-alpha { font-size: 11px; }
  .li-alpha tr { page-break-inside: avoid; }
  .li-alpha thead { display: table-header-group; }
}
.li-grille.seul .li-cours { page-break-after: auto; break-after: auto; min-height: 0; }
.listing .doc-outils .pastille-select { max-width: 260px; }

/* ── Liste des impayés (imprimable, José 14/10) ──────────────────────────── */
.imp-table { font-size: 12px; }
.imp-table td, .imp-table th { padding: 5px 6px; }
.imp-table .imp-contact { white-space: nowrap; }
.imp-table .imp-nom { white-space: nowrap; }
.imp-table td:nth-child(3) { min-width: 110px; }
.imp-table .imp-reste { color: var(--rouge); }
.imp-table .imp-coche { width: 22px; padding-left: 2px; padding-right: 2px; }
.imp-case { display: inline-block; width: 14px; height: 14px; border: 1.5px solid #111; border-radius: 3px; vertical-align: middle; }
.imp-table tfoot td { border-top: 2px solid #111; font-weight: 600; padding-top: 8px; }
@media print {
  .imp-table { font-size: 10.5px; }
  .imp-table td, .imp-table th { padding: 4px 5px; }
  .imp-table tr { page-break-inside: avoid; }
  .imp-table thead { display: table-header-group; }
  .imp-table tfoot { display: table-row-group; }   /* le total une seule fois, pas sur chaque page */
  .imp-table .imp-reste { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

.pin-carte { max-width: 380px; }
.pin-champ { font: 400 40px/1 var(--titre); letter-spacing: .5em; text-align: center; min-height: 64px !important; }

/* ── Grands écrans : la page occupe la largeur, moins de marges ─────────── */
@media (min-width: 900px) {
  .page { max-width: none; padding: 24px 36px 60px; }
  .rubriques { grid-template-columns: repeat(4, 1fr); }
  .rubrique.grande { grid-column: span 1; min-height: 124px; }
  .rubrique.grande strong { font-size: 26px; }
  .agenda { grid-template-columns: 360px minmax(0, 1fr); }
  .agenda .jour-cours { width: calc(33.333% - 7px); }
  .chiffres { grid-template-columns: 1.3fr 1fr 1fr 1fr; }
  body.impression .page { max-width: 1000px; margin: 0 auto; }
}
@media (min-width: 1500px) {
  .page { padding: 28px 56px 60px; }
  .agenda .jour-cours { width: calc(25% - 8px); }
}

/* ── Tampon de l'association ─────────────────────────────────────────────── */
.doc-signature { display: flex; justify-content: flex-end; align-items: flex-end; gap: 18px; margin: 18px 0 6px; }
.doc-signature-txt { text-align: right; font-size: 13px; }
.doc-signature-txt span { display: block; font-weight: 600; }
.doc-signature-txt small { color: #666; }
.doc-tampon { width: 270px; height: auto; display: block; }
.fi-sig.avec-tampon { position: relative; overflow: hidden; }
.fi-sig.avec-tampon .doc-tampon { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 190px; opacity: .92; }
@media print { .doc-tampon { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }
/* Documents : impression compacte, une page pour une facture acquittée avec tampon */
@media print {
  .doc { font-size: 12.5px; line-height: 1.35; }
  .doc .doc-tete { margin-bottom: 18px; }
  .doc .doc-logo img { width: 150px; }
  .doc .doc-genre { font-size: 36px; }
  .doc .doc-parties { margin-bottom: 16px; gap: 18px; }
  .doc .doc-table th, .doc .doc-table td { padding: 6px 8px; }
  .doc .doc-table { margin-bottom: 12px; }
  .doc .doc-etat { margin-bottom: 10px; padding: 6px 10px; }
  .doc .doc-acquit { padding: 8px 12px; margin: 10px 0 8px; }
  .doc .doc-signature { margin: 10px 0 4px; }
  .doc .doc-tampon { width: 230px; }
  .doc .doc-sig-manu { width: 200px; }
  .doc .doc-pied { margin-top: 18px; padding-top: 8px; }
}

/* ── Signature ───────────────────────────────────────────────────────────── */
.sig-zone { position: relative; border: 2px dashed var(--trait); border-radius: 14px; background: #fff; touch-action: none; overflow: hidden; }
.sig-zone canvas { display: block; width: 100%; height: auto; }
.sig-ligne { position: absolute; left: 8%; right: 8%; bottom: 22%; border-bottom: 1px solid #DDD; pointer-events: none; }
.sig-apercu { max-width: 320px; height: auto; display: block; margin: 6px 0 10px; background: #fff; border: 1px solid var(--trait); border-radius: 8px; padding: 8px; }
.doc-cachet { position: relative; }
.doc-cachet { position: relative; display: inline-block; }
.doc-sig-manu { position: absolute; left: -46px; bottom: -22px; width: 200px; height: auto; z-index: 2; transform: rotate(-4deg); }
.doc-signature { min-height: 160px; align-items: center; padding-bottom: 14px; }
.fi-sig.avec-tampon .doc-sig-manu { position: absolute; left: 24px; bottom: 2px; transform: rotate(-4deg); width: 150px; z-index: 2; }

/* ── Cours d'essai ───────────────────────────────────────────────────────── */
.pastille-btn { display: inline-block; margin: 4px 4px 0 0; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--trait); background: var(--carte); font-size: 13px; font-weight: 500; cursor: pointer; }
.pastille-btn.on, .pastille-btn:hover { background: var(--noir); color: #fff; border-color: var(--noir); }
.essai-actions { flex-shrink: 0; }
.essai-actions select { min-height: 40px; border-radius: 10px; border: 1px solid var(--trait); padding: 0 8px; font-size: 14px; background: var(--carte); }
.bon .doc-tete { margin-bottom: 20px; }
.bon-pour { font-size: 22px; margin: 0 0 18px; }
.bon-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 18px; }
.bon-case { border: 1px solid #E5E5E5; border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
.bon-case span { font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: #888; }
.bon-case strong { font-size: 18px; }
.bon-case small { color: #555; font-size: 13px; }
.bon-consignes { background: #F6F3EF; border-radius: 8px; padding: 10px 12px; font-size: 13px; margin: 0 0 12px; }
.bon-suite { font-size: 14px; color: #333; margin: 0 0 6px; }
@media (max-width: 560px) { .bon-grille { grid-template-columns: 1fr; } .essai-actions { flex-wrap: wrap; } }
@media print { .bon { font-size: 13px; } @page { size: A4 portrait; margin: 16mm; } }
.archives-arbo .rubrique { min-height: 96px; }
.archives-arbo .rubrique strong { font-size: 22px; }
@media (min-width: 900px) { .archives-arbo { grid-template-columns: repeat(3, 1fr); } }

/* ── Mes notes ───────────────────────────────────────────────────────────── */
.notes-colonnes { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 900px) { .notes-colonnes { grid-template-columns: 1fr 1.2fr; align-items: start; } }
.tache-ajout { display: flex; gap: 8px; padding: 0 16px 10px; flex-wrap: wrap; }
.tache-ajout input[name=texte] { flex: 1; min-width: 180px; min-height: 44px; border: 1px solid var(--trait); border-radius: 10px; padding: 0 12px; font-size: 16px; }
.tache-ajout input[type=date] { min-height: 44px; border: 1px solid var(--trait); border-radius: 10px; padding: 0 10px; font-size: 14px; }
.tache-coche { flex-shrink: 0; }
.coche-btn { width: 26px; height: 26px; border-radius: 8px; border: 2px solid var(--gris-clair); background: var(--carte); cursor: pointer; position: relative; }
.coche-btn:hover { border-color: var(--rouge); }
.coche-btn.on { background: var(--vert); border-color: var(--vert); }
.coche-btn.on::after { content: ''; position: absolute; left: 8px; top: 3px; width: 6px; height: 12px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.taches .ligne.tard .sous { color: var(--rouge); font-weight: 600; }
.taches .ligne.faite .titre { text-decoration: line-through; color: var(--gris); }
.taches-faites { padding: 6px 16px 10px; }
.taches-faites summary { cursor: pointer; color: var(--gris); font-size: 14px; }
.notes-grille { display: grid; grid-template-columns: 1fr; gap: 10px; padding: 0 16px 10px; }
@media (min-width: 1200px) { .notes-grille { grid-template-columns: 1fr 1fr; } }
.note { background: #FFF8DC; border: 1px solid #F0E2A8; border-radius: 12px; padding: 14px 16px; }
.note.epinglee { background: #FBE9EB; border-color: #F0B7BD; }
.note h3 { margin-bottom: 4px; }
.note p { margin: 0 0 8px; font-size: 15px; line-height: 1.45; white-space: pre-line; }
.note-pied { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
.note-actions { display: flex; gap: 12px; align-items: center; }
.note-actions form { display: inline; }
.lien-suite.danger { color: var(--gris); }
.lien-suite.danger:hover { color: var(--rouge); }
.note .repli { border-top: 0; margin: 0; padding: 0; }

.filtre-cours { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 12px; }
.filtre-cours .pastille-select { max-width: 100%; flex: 1; min-width: 200px; }
.discret-txt { color: var(--gris-clair); }
.ligne .corps-droite { gap: 2px; line-height: 1.1; }
.ligne .corps-droite .sous { line-height: 1.2; }
.effectif { line-height: 1; }

/* ── Suite de l'inscription : les étapes du comptoir, dans l'ordre ───────── */
.etapes { list-style: none; margin: 0; padding: 0; counter-reset: etape; }
.etape { display: flex; gap: 14px; background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 16px 16px 14px; margin-bottom: 12px; }
.etape-num { flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font: 400 20px/1 var(--titre); background: var(--rouge); color: #fff; margin-top: 2px; }
.etape.faite { border-left: 4px solid var(--vert); }
.etape.faite .etape-num { background: var(--vert); }
.etape.faite .etape-num::before { content: '✓'; font: 700 16px/1 var(--texte, sans-serif); }
.etape.faite .etape-num { font-size: 0; }
.etape.inactive { opacity: .55; }
.etape.inactive .etape-num { background: var(--gris-clair); }
.etape-corps { flex: 1; min-width: 0; }
.etape-corps h2 { margin: 4px 0 2px; }
.etape-corps > .sous { margin: 0 0 10px; color: var(--gris); font-size: 14px; }
.etape-corps .sous.manque { color: var(--ambre); font-weight: 500; }
.etape-corps .actions { margin-top: 8px; }
.etape-fil { padding: 0; margin-bottom: 6px; }
.etape-form { margin-top: 6px; }
.etape-form .grille-2 { margin-top: 2px; }
.pin-inline { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; margin-top: 6px; }
.pin-inline label { flex: 1; min-width: 200px; margin: 0; }
.pin-inline input { letter-spacing: .3em; }
@media (max-width: 480px) {
  .etape { padding: 14px 12px 12px; gap: 10px; }
  .etape-num { width: 28px; height: 28px; font-size: 17px; }
}

/* ── Éditeur de facture ─────────────────────────────────────────────────── */
.tableau.editable th, .tableau.editable td { padding: 6px 4px; }
.tableau.editable td:first-child { width: 100%; }
.tableau.editable input { width: 100%; min-height: 38px; padding: 4px 8px; margin: 0 0 4px; font-size: 14px; }
.tableau.editable input.detail { font-size: 13px; color: var(--gris); margin-bottom: 0; }
.tableau.editable td.num input { width: 74px; text-align: right; }
.tableau.editable td[data-montant] { min-width: 80px; font-weight: 600; padding-top: 14px; }
.tableau.editable .croix { margin-top: 6px; }
.tableau.editable tfoot td { padding-top: 8px; }
@media (max-width: 480px) {
  .tableau.editable td.num input { width: 62px; padding: 4px 6px; }
  .tableau.editable td[data-montant] { min-width: 64px; font-size: 13px; }
}

/* Messagerie Orange : le panneau à copier, l'avis de copie */
.orange-voile { position: fixed; inset: 0; z-index: 200; background: rgba(17, 17, 17, .55); display: flex; align-items: center; justify-content: center; padding: 16px; }
.orange-panneau { background: var(--carte); border-radius: var(--rayon); width: min(560px, 100%); max-height: calc(100vh - 32px); overflow: auto; padding: 18px 18px 8px; box-shadow: 0 20px 60px rgba(0, 0, 0, .35); }
.orange-panneau h2 { margin: 0 0 6px; }
.orange-ligne { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 8px; align-items: center; margin: 10px 0; }
.orange-ligne span { font-size: 14px; color: var(--gris); }
.orange-ligne input, .orange-ligne textarea { width: 100%; font: inherit; font-size: 15px; padding: 8px 10px; border: 1px solid var(--trait); border-radius: 10px; background: var(--papier); }
.orange-ligne.texte { align-items: start; }
.orange-ligne textarea { resize: vertical; }
.orange-panneau .actions { display: flex; gap: 8px; flex-wrap: wrap; padding: 8px 0 10px; }
.avis-copie { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 300; background: #111; color: #fff; padding: 12px 18px; border-radius: 999px; font-weight: 500; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); transition: opacity .3s; }
.avis-copie.part { opacity: 0; }
@media (max-width: 560px) { .orange-ligne { grid-template-columns: 1fr auto; } .orange-ligne span { grid-column: 1 / -1; } }

/* ── Bilan par cours (Trésorerie) ────────────────────────────────────────── */
.bl-barre { position: relative; display: block; height: 12px; border-radius: 999px; background: var(--papier); border: 1px solid var(--trait); overflow: hidden; min-width: 90px; }
.bl-barre i { position: absolute; top: 0; bottom: 0; left: 0; display: block; }
.bl-barre .bl-paye { background: var(--rouge); border-radius: 999px 0 0 999px; }
.bl-barre .bl-reste { background: repeating-linear-gradient(135deg, var(--gris-clair) 0 2px, transparent 2px 6px); border-left: 2px solid #fff; }
.bl-legende { margin: 6px 0 22px; font-size: 13px; color: var(--gris); }
.bl-legende span { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; }
.bl-legende .l-paye { background: var(--rouge); }
.bl-legende .l-reste { background: repeating-linear-gradient(135deg, var(--gris-clair) 0 3px, transparent 3px 5px); border: 1px solid var(--trait); }
.bl-chiffres { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 0 0 8px; }
.bl-chiffre { border: 1px solid var(--trait); border-radius: 8px; padding: 12px 14px; display: grid; gap: 2px; }
.bl-chiffre .etiquette { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); }
.bl-chiffre strong { font: 400 34px/1.05 var(--titre); white-space: nowrap; }
.bl-chiffre.ok strong { color: var(--vert); }
.bl-chiffre.du strong { color: var(--rouge); }
.bl-chiffre .detail { font-size: 12px; color: var(--gris); }
.bl-section { margin: 26px 0 0; }
.bl-titre { font: 400 26px/1 var(--titre); letter-spacing: .03em; margin: 0 0 6px; padding-bottom: 6px; border-bottom: 2px solid #111; }
.bl-intro { margin: 0 0 10px; font-size: 13px; color: var(--gris); }
.bl-lecture { margin: 2px 0 0; font-size: 13px; }
.bl-lecture.discret { color: var(--gris); }
.bl-table { margin-bottom: 6px; font-size: 13px; }
.bl-table th, .bl-table td { padding: 7px 7px; }
.bl-table td small { display: block; color: var(--gris); font-size: 11px; }
.bl-table td.num small { display: inline; }
.bl-table td.num small.bloc { display: block; white-space: normal; }
.bl-table .bl-col-barre { width: 22%; min-width: 110px; vertical-align: middle; }
.bl-table .bl-du { color: var(--rouge); font-weight: 600; }
.bl-table .bl-zero { color: var(--gris-clair); }
.bl-table .bl-sous-titre td { padding-top: 14px; font: 400 17px/1 var(--titre); letter-spacing: .04em; color: var(--rouge); border-bottom: 1px solid #111; }
.bl-table .bl-sous-titre td small { display: inline; font: 400 11px var(--texte); color: var(--gris); letter-spacing: 0; }
.bl-table .bl-discret td { color: var(--gris); }
.bl-lien { color: inherit; text-decoration: none; }
.bl-lien:hover { color: var(--rouge); text-decoration: underline; }
.bl-deux { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.bl-deux > div { min-width: 0; }
.bl-constats h3, .bl-methode h3 { font: 400 17px/1 var(--titre); letter-spacing: .04em; margin: 16px 0 6px; }
.bl-constats h3 small, .bl-methode h3 small { font: 400 12px var(--texte); color: var(--gris); letter-spacing: 0; }
.bl-liste { list-style: none; margin: 0; padding: 0; font-size: 13px; display: grid; gap: 3px; }
.bl-liste li small { color: var(--gris); }
.bl-liste.bl-deux-col { grid-template-columns: 1fr 1fr; column-gap: 20px; }
.bl-methode { margin-top: 22px; padding-top: 12px; border-top: 1px solid #E5E5E5; }
.bl-methode p { margin: 0; font-size: 12.5px; color: #444; line-height: 1.5; }
.carte.origine { margin-bottom: 16px; }
.origine-liste { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 10px; }
.origine-liste li { display: grid; grid-template-columns: 150px 1fr auto; gap: 12px; align-items: center; }
.origine-nom strong { display: block; font-size: 14px; }
.origine-nom small, .origine-montant small { display: block; font-size: 12px; color: var(--gris); }
.origine-montant { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 640px) {
  .bl-chiffres { grid-template-columns: 1fr; }
  .bl-deux { grid-template-columns: 1fr; }
  .bl-liste.bl-deux-col { grid-template-columns: 1fr; }
  .bl-table .bl-col-barre { display: none; }
  .bilan-doc { padding: 18px 12px; }
  .bilan-doc .bl-section { overflow-x: auto; }
  .bilan-doc .doc-logo img { width: 110px; }
  .origine-liste li { grid-template-columns: 1fr auto; }
  .origine-liste .bl-barre { grid-column: 1 / -1; }
}
@media print {
  .bilan-doc { font-size: 11px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .bilan-doc .bl-chiffre strong { font-size: 28px; }
  .bilan-doc .bl-table { font-size: 10.5px; }
  .bilan-doc .bl-table th, .bilan-doc .bl-table td { padding: 4px 5px; }
  .bilan-doc .bl-section { page-break-inside: avoid; }
  .bilan-doc .bl-section.bl-cours-section { page-break-inside: auto; }
  .bilan-doc tr { page-break-inside: avoid; }
  .bilan-doc thead { display: table-header-group; }
  .bilan-doc .bl-table .bl-sous-titre { page-break-after: avoid; }
  .bilan-doc .bl-barre { min-width: 50px; height: 9px; }
  .bilan-doc .bl-deux .bl-col-barre { width: 18%; min-width: 50px; }
  .bilan-doc .bl-liste { font-size: 10.5px; }
  .bilan-doc .bl-titre { font-size: 22px; }
  .bilan-doc .doc-pied { margin-top: 10px; page-break-before: avoid; }
  .bilan-doc tfoot { display: table-row-group; }
  .bilan-doc .bl-constats { page-break-inside: auto; }
  .bilan-doc .bl-constats h3, .bilan-doc .bl-titre { page-break-after: avoid; }
  .bilan-doc .bl-methode { page-break-inside: avoid; }
}
