/* ############################################################################
   BOUOH CAISSE — FEUILLE DE STYLE
   Organisation, pour s'y retrouver dans ~5 000 lignes :

     1. VARIABLES        :root — couleurs, ombres, rayons. Le thème de
                          l'entreprise remplace --primary à l'exécution
                          (voir applyTheme dans app.js).
     2. SOCLE            reset, typographie, boutons (.btn-*), champs (.fld),
                          fenêtres (.scrim / .sheet / .sheet-h / .sheet-f).
     3. STRUCTURE        .side-nav (menu), .apphead (en-tête), .mobtop (mobile),
                          .view (un écran), .dtreso-* (bande des trésoreries).
     4. PAR ÉCRAN        préfixes : tx- historique · cl-/clc- clients ·
                          gx-/gxd-/gxt- guichets · mp-/mph- points master ·
                          op-/cs- trésorerie de départ · as-/asc- assistants ·
                          rcpt-/rc- reçus · qc-/qm- nouvelle transaction.
     5. IMPRESSION       @media print — ⚠ les navigateurs SUPPRIMENT les fonds
                          colorés : un texte clair sur fond coloré sort blanc
                          sur blanc. Le reçu force donc le noir, sauf pour les
                          couleurs qui PORTENT une information (solde client,
                          sens des mouvements) — voir v314 et v325.
     6. MOBILE           @media(max-width:...) en fin de chaque section.
                          Concevoir pour le téléphone D'ABORD : la plupart des
                          correctifs d'affichage sont venus de là.

   CONVENTIONS
     • couleurs de sens : vert #0E7A50 (entre / on nous doit),
       rouge #B23B0C (sort / nous devons), ambre #E08A2B (à traiter) ;
     • un montant porte la classe .num (chiffres à largeur fixe) ;
     • toute animation est neutralisée par
       @media (prefers-reduced-motion: reduce) — et par .sync-quiet
       pendant une mise à jour venue du cloud (v318).
   ############################################################################ */

:root{
    --paper:#F4F6F7; --surface:#FFFFFF; --surface-2:#FBFCFC;
    --ink:#10272E; --ink-soft:#5D6E73; --ink-faint:#93A2A6;
    --line:#E3E9EA; --line-strong:#CBD6D8;
    --primary:#0E5561; --primary-d:#0A424C; --primary-l:#E7F0F1;
    --paid:#1E8E5A; --wait:#C9820A; --fail:#C0392B;
    --danger:#C0392B; --danger-bg:#FBEAE8;
    --shadow:0 1px 2px rgba(16,39,46,.04), 0 8px 24px rgba(16,39,46,.06);
    --shadow-lg:0 12px 40px rgba(16,39,46,.18);
    --r:14px; --r-sm:9px;
    --ff:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  }
  *{box-sizing:border-box}
  html,body{margin:0}
  html,body{overflow-x:hidden}   /* aucune page ne défile latéralement (Android) */
  body{
    font-family:var(--ff); background:var(--paper); color:var(--ink);
    -webkit-font-smoothing:antialiased; line-height:1.45; font-size:15px;
  }
  .num{font-variant-numeric:tabular-nums; letter-spacing:-.01em}
  .clogo{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex:none;
    font-weight:800;letter-spacing:-.01em;line-height:1;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.08)}
  .clogo svg{width:56%;height:56%}
  .clogo-img{background:#fff;overflow:hidden}
  .clogo-img img{width:100%;height:100%;object-fit:contain}
  .logo-pick{position:relative;cursor:pointer;display:inline-flex;flex:none;border-radius:50%}
  .logo-pick:hover{filter:brightness(.96)}
  .logo-cam{position:absolute;right:-3px;bottom:-3px;width:15px;height:15px;border-radius:50%;
    background:var(--primary);color:#fff;display:grid;place-items:center;border:2px solid var(--surface)}
  .logo-cam svg{width:9px;height:9px}
  .logo-clear{flex:none;width:26px;height:26px;border-radius:50%;border:1px solid var(--line-strong);
    background:var(--surface);color:var(--ink-soft);font-size:12px;line-height:1}
  .logo-clear:hover{color:var(--danger);border-color:var(--danger)}
  .as-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
  /* Filtres de la base des assistants */
  .asf{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin:0 0 14px}
  .asf-s{position:relative;display:flex;align-items:center;flex:1;min-width:220px}
  .asf-s svg{position:absolute;left:13px;width:17px;height:17px;color:var(--ink-soft);pointer-events:none}
  .asf-s .fld{width:100%;padding-left:38px;border-radius:11px;font-weight:700}
  .asf .fld{border-radius:11px}
  .asf select.fld{max-width:210px;font-weight:700}
  .asf-x{padding:9px 14px;border-radius:11px;border:1px solid var(--line);background:var(--surface);
    color:#B23B0C;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}
  .asf-x:hover{background:rgba(178,59,12,.08)}
  .asf-n{font-size:11.5px;font-weight:800;color:var(--ink-soft);margin-bottom:10px;
    letter-spacing:.03em;text-transform:uppercase}
  @media(max-width:560px){ .asf select.fld{max-width:none;flex:1} .asf-x{flex:1} }
  /* ---------- Gestion des assistants en cartes (calquées sur le modèle fourni) ---------- */
  .as-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:0}
  .asc{display:flex;gap:20px;padding:22px 24px;background:var(--surface);cursor:pointer;
    border:1px solid var(--line);margin:-1px 0 0 -1px;   /* bordures partagées, comme une grille */
    transition:background .16s, box-shadow .18s;position:relative}
  .asc:hover{background:#FAFCFC;box-shadow:0 10px 26px -20px rgba(10,65,73,.5);z-index:1}
  .asc.off{opacity:.6}
  /* Colonne de gauche : grande photo ronde, puis trois compteurs */
  .asc-l{display:flex;flex-direction:column;align-items:center;gap:14px;flex:none;width:104px;
    border-right:1px solid var(--line);padding-right:20px}
  .asc-av{position:relative;width:92px;height:92px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
    background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;font-size:32px;font-weight:900}
  .asc-av img{width:100%;height:100%;object-fit:cover;display:block}
  .asc-av.ph{background:var(--surface-2)}
  .asc-dot{position:absolute;right:5px;bottom:5px;width:16px;height:16px;border-radius:50%;
    background:#1E8E5A;border:3px solid var(--surface)}
  .asc-n{display:flex;gap:14px;justify-content:center}
  .asc-n span{display:flex;flex-direction:column;align-items:center;gap:3px}
  .asc-n i{font-style:normal;font-size:14px;line-height:1}
  .asc-n b{font-size:12.5px;font-weight:800;color:var(--ink-soft);letter-spacing:.02em}
  /* Colonne de droite : nom, badge de rôle, filet, description, boutons pleins */
  .asc-r{flex:1;min-width:0;display:flex;flex-direction:column}
  .asc-name{display:flex;align-items:center;gap:9px;font-size:18px;font-weight:900;letter-spacing:-.02em;
    overflow-wrap:anywhere;line-height:1.2}
  .asc-off{font-size:10px;font-weight:900;padding:2px 9px;border-radius:99px;background:#FBEAE8;color:#9C0006}
  .asc-role{align-self:flex-start;margin-top:8px;font-size:11.5px;font-weight:800;padding:4px 12px;border-radius:6px}
  .asc-sep{height:1px;background:var(--line);margin:14px 0 12px}
  .asc-desc{margin:0;font-size:13px;line-height:1.6;color:var(--ink-soft)}
  .asc-desc b{color:var(--ink);font-weight:800}
  .asc-desc .warn{color:#B23B0C;font-weight:800}
  .asc-f{display:flex;gap:9px;flex-wrap:wrap;margin-top:auto;padding-top:16px}
  /* Boutons pleins, sombres, comme sur le modèle */
  .asc-b{padding:9px 16px;border-radius:7px;border:1px solid transparent;cursor:pointer;
    font-size:12.5px;font-weight:800;transition:filter .15s, transform .12s}
  .asc-b.prim{background:#1F3A54;color:#fff;box-shadow:0 6px 14px -8px rgba(31,58,84,.8)}
  .asc-b.prim:hover{filter:brightness(1.15);transform:translateY(-1px)}
  .asc-b.del{background:var(--surface);color:#B23B0C;border-color:rgba(178,59,12,.3)}
  .asc-b.del:hover{background:rgba(178,59,12,.09)}
  @media (prefers-reduced-motion: reduce){ .asc-b:hover{transform:none} }
  @media(max-width:760px){
    .as-grid{grid-template-columns:1fr}
    .asc{gap:14px;padding:16px}
    .asc-l{width:86px;padding-right:14px}
    .asc-av{width:74px;height:74px;font-size:26px}
    .asc-b{flex:1;text-align:center}
  }
  .as-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:15px;position:relative}
  .as-card.inactive{opacity:.6}
  .as-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}
  .as-avatar{width:46px;height:46px;border-radius:50%;flex:none;display:grid;place-items:center;
    background:var(--primary-l);color:var(--primary);font-weight:800;font-size:17px;overflow:hidden}
  .as-avatar img{width:100%;height:100%;object-fit:cover}
  .as-id{min-width:0}
  .as-name{font-weight:800;font-size:15.5px;letter-spacing:-.01em}
  .as-sub{font-size:12px;color:var(--ink-soft);display:flex;gap:8px;flex-wrap:wrap;margin-top:1px}
  .as-role{display:inline-block;font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;margin-top:2px}
  .as-perm-list{display:flex;flex-wrap:wrap;gap:5px;padding-top:11px;border-top:1px solid var(--line)}
  .as-chip{font-size:11px;font-weight:600;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);padding:3px 8px;border-radius:7px}
  .as-act{position:absolute;top:12px;right:12px;display:flex;gap:5px}
  .as-badge-off{font-size:10.5px;font-weight:700;color:#9C0006;background:#FBEAE8;padding:2px 8px;border-radius:999px}
  .as-photo-row{display:flex;align-items:center;gap:13px;margin-bottom:15px}
  .as-avatar-pick .as-avatar{width:54px;height:54px;font-size:20px}
  /* ---------- Mon profil ---------- */
  .mp-card{max-width:660px;padding:20px 22px;border-radius:18px;border:1px solid var(--line);background:var(--surface);
    box-shadow:0 14px 32px -24px rgba(10,65,73,.45)}
  .mpf-h{display:flex;align-items:center;gap:16px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
  .mpf-ph{position:relative;flex:none;width:76px;height:76px;border-radius:22px;overflow:hidden;cursor:pointer;
    display:grid;place-items:center;background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;
    font-size:30px;font-weight:900;box-shadow:0 10px 22px -12px rgba(10,65,73,.7)}
  .mpf-ph img{width:100%;height:100%;object-fit:cover}
  .mpf-cam{position:absolute;right:-2px;bottom:-2px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
    background:#0E5561;border:2px solid var(--surface)}
  .mpf-cam svg{width:14px;height:14px;color:#fff}
  .mpf-id{min-width:0}
  .mpf-id b{display:block;font-size:19px;font-weight:900;letter-spacing:-.02em;overflow-wrap:anywhere}
  .mpf-role{display:inline-block;margin-top:5px;padding:3px 11px;border-radius:99px;font-size:11px;font-weight:900}
  .mpf-id em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700;margin-top:5px}
  .mp-card .grid2{gap:12px;margin-bottom:12px}
  .mpf-lock{display:flex;align-items:flex-start;gap:11px;padding:12px 14px;border-radius:13px;margin-top:4px;
    background:var(--surface-2);border:1px solid var(--line)}
  .mpf-lk{flex:none;font-size:15px}
  .mpf-lock b{font-size:12.5px;font-weight:900}
  .mpf-lock em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);margin-top:3px;line-height:1.5}
  .mpf-err{margin:11px 0 0;min-height:17px;font-size:12.5px;font-weight:800;color:#C0392B}
  .mpf-f{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
  .mpf-f button{flex:1}
  .mc-sheet{max-width:420px}
  @media(max-width:560px){ .mp-card{padding:16px} .mpf-f button{flex:1 1 100%} }
  .perm-sep{grid-column:1/-1;margin:12px 0 4px;padding-top:11px;border-top:1px solid var(--line)}
  .perm-sep b{display:block;font-size:11px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
  .perm-sep em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);margin-top:3px;line-height:1.45}
  .perm-par{background:rgba(14,85,97,.05);border-radius:9px}
  .as-perms{display:grid;grid-template-columns:1fr;gap:7px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px}
  .as-perms label{display:flex;align-items:center;gap:9px;font-size:13.5px;cursor:pointer}
  .as-active{display:flex;align-items:center;gap:9px;font-size:13.5px;margin-bottom:6px}
  @media (min-width:560px){.as-perms{grid-template-columns:1fr 1fr}}
  button{font-family:inherit; cursor:pointer}
  input,select{font-family:inherit; font-size:15px}
  h1,h2,h3{margin:0; letter-spacing:-.02em; font-weight:700}
  ::selection{background:var(--primary-l)}

  /* ---------- Header ---------- */
  .top{
    position:sticky; top:0; z-index:40; background:var(--primary);
    color:#EAF3F4; padding:14px 20px calc(14px + env(safe-area-inset-bottom,0));
    padding-top:calc(14px + env(safe-area-inset-top,0));
    display:flex; align-items:center; gap:20px; flex-wrap:wrap;
    box-shadow:0 6px 20px rgba(10,66,76,.28);
  }
  .brand{display:flex; align-items:center; gap:11px; margin-right:auto}
  .mark{
    width:38px; height:38px; border-radius:10px; flex:none; position:relative;
    background:conic-gradient(from 135deg,#FFC403 0deg 90deg,#FF7900 90deg 180deg,#1AA7EC 180deg 270deg,#1E8E5A 270deg 360deg);
    box-shadow:inset 0 0 0 3px var(--primary), 0 0 0 1px rgba(255,255,255,.15);
  }
  .mark::after{content:""; position:absolute; inset:11px; border-radius:5px; background:#EAF3F4}
  .brand b{font-size:16px; color:#fff; display:block; letter-spacing:-.02em; line-height:1.1}
  .brand span{font-size:11.5px; color:#A9CDD1; letter-spacing:.02em}
  .treso{text-align:right; line-height:1.1}
  .treso .lab{font-size:10.5px; text-transform:uppercase; letter-spacing:.12em; color:#9BC3C8}
  .treso .val{font-size:23px; font-weight:800; color:#fff}
  .clock{font-size:12px; color:#A9CDD1; text-align:right; min-width:120px}
  .btn-new{
    background:#FFC403; color:#3A2B00; border:none; font-weight:700; font-size:14.5px;
    padding:11px 17px; border-radius:11px; display:inline-flex; align-items:center; gap:8px;
    box-shadow:0 4px 14px rgba(255,196,3,.35); transition:transform .12s, box-shadow .12s;
  }
  .btn-new:hover{transform:translateY(-1px); box-shadow:0 6px 18px rgba(255,196,3,.45)}
  .btn-new:active{transform:translateY(0)}
  .btn-new svg{width:17px;height:17px}
  .btn-vers{ width:100%; justify-content:center; background:rgba(255,255,255,.10); color:#EAF3F4; border:1px solid rgba(255,255,255,.22);
    font-weight:700; font-size:13.5px; padding:10px 15px; border-radius:11px; display:inline-flex; align-items:center; gap:8px; cursor:pointer; transition:background .12s, transform .12s }
  .btn-vers:hover{ background:rgba(255,255,255,.18); transform:translateY(-1px) }
  .btn-vers:active{ transform:translateY(0) }
  .btn-vers svg{width:17px;height:17px}
  .dtreso-two{display:grid;grid-template-columns:1fr 1fr;gap:14px;position:relative}
  .dtreso-two.three{grid-template-columns:repeat(3,1fr)}
  /* Chaque trésorerie dans son propre cadre de verre : lisible d'un coup d'œil,
     et le regard ne confond plus les trois chiffres. */
  .dtreso-col{position:relative;padding:12px 15px 11px;border-radius:16px;
    background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);
    transition:background .2s, transform .18s, border-color .2s}
  .dtreso-col:hover{background:rgba(255,255,255,.12);transform:translateY(-2px)}
  /* Un filet coloré en haut de chaque carte : repère instantané */
  .dtreso-col::before{content:"";position:absolute;left:18px;right:18px;top:0;height:3px;border-radius:0 0 3px 3px;
    background:#7FD4C1;opacity:.85}
  .dtreso-col.init::before{background:#FFD98A}
  .dtreso-col.eq::before{background:#B9F6CA}
  .dtreso-col.eq .dtreso-lab{opacity:.95}
  /* ---------- Diagnostic des trésoreries ---------- */
  /* Sélecteur d'entreprise */
  /* Transfert vers une entreprise partenaire */
  .trf-ent{padding:10px 16px 0}
  .trf-ent button{width:100%}
  /* ════════════ FENÊTRE DES TRANSFERTS REÇUS (refonte v412) ════════════
     Lecture de haut en bas, dans l'ordre où le gérant se pose les questions :
       1. QUI m'envoie quoi, et quand ?        → en-tête de carte (pastille + nom)
       2. COMBIEN, et dans quel sens ?         → le montant, coloré selon le sens
       3. QU'EST-CE QUE ÇA CHANGE chez moi ?   → soldes avant → après, calculés
       4. Je décide.                           → Accepter / Refuser (refus en 2 temps)
     Vert = une créance qui vous revient ; ambre = une somme que vous devrez. */
  .ech-sheet{max-width:480px;background:var(--paper)}
  /* En-tête coloré : le bandeau reprend la couleur de l'application */
  .ech-sheet .sheet-h.ech-hero{justify-content:flex-start;gap:13px;padding:20px 20px 18px;border-bottom:0;color:#fff;
    background:radial-gradient(120% 140% at 100% 0%,rgba(255,255,255,.14),transparent 55%),
               linear-gradient(135deg,#0E5561 0%,#137569 100%)}
  .ech-hero-ic{flex:none;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
    background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
  .ech-hero-ic svg{width:24px;height:24px}
  .ech-hero-t{flex:1;min-width:0}
  .ech-hero-t h2{margin:0;font-size:18px;font-weight:900;letter-spacing:-.01em;color:#fff}
  .ech-hero-t p{margin:3px 0 0;font-size:12.5px;font-weight:700;color:rgba(255,255,255,.82)}
  .ech-hero-t p b{color:#fff;font-variant-numeric:tabular-nums}
  .ech-hero .x{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.34);color:#fff}
  .ech-hero .x:hover{background:rgba(255,255,255,.3);color:#fff}
  /* La flèche de retour ajoutée à toutes les fenêtres : translucide sur fond coloré,
     comme sur les autres en-têtes colorés de l'application */
  .ech-hero .sheet-back{background:rgba(255,255,255,.16);color:#fff}
  .ech-hero .sheet-back:hover{background:rgba(255,255,255,.3)}
  .ech-hero-t p .nw{white-space:nowrap}
  @media (max-width:420px){ .ech-hero-t p .nw{display:block} .ech-hero-t p .sep{display:none} }
  .ech-list{padding:16px 16px 6px}
  /* ── Une carte par transfert ── */
  .echc{--ton:#1E8E5A;--ton-bg:rgba(30,142,90,.08);--ton-bd:rgba(30,142,90,.24);
    background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px;margin-bottom:13px;
    box-shadow:0 1px 2px rgba(16,39,46,.04),0 14px 30px -24px rgba(16,39,46,.5);
    animation:echIn .38s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--d,0ms);
    transition:opacity .28s,transform .28s,max-height .32s,margin .32s,padding .32s}
  .echc.out{--ton:#B7791F;--ton-bg:rgba(201,130,10,.09);--ton-bd:rgba(201,130,10,.28)}
  @keyframes echIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
  .echc.part{opacity:0;transform:translateX(24px);overflow:hidden}
  .echc-h{display:flex;align-items:center;gap:11px}
  .echc-av{flex:none;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;
    font-size:13.5px;font-weight:900;letter-spacing:.02em;color:#fff;
    background:linear-gradient(135deg,hsl(var(--h,190) 52% 38%),hsl(calc(var(--h,190) + 28) 55% 46%))}
  .echc-who{min-width:0;flex:1}
  .echc-who b{display:block;font-size:14.5px;font-weight:900;color:var(--ink);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .echc-who span{display:block;font-size:11.5px;font-weight:600;color:var(--ink-soft);margin-top:1px}
  .echc-new{flex:none;font-size:9.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
    padding:4px 7px;border-radius:7px;color:#fff;background:#D92D20}
  /* Le montant : c'est ce qu'on cherche en premier, il occupe la place */
  .echc-amt{margin:13px 0 0;padding:14px 15px;border-radius:15px;background:var(--ton-bg);border:1px solid var(--ton-bd)}
  .echc-lab{display:block;font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .echc-amt strong{display:block;margin-top:3px;font-size:27px;font-weight:900;letter-spacing:-.02em;
    color:var(--ton);font-variant-numeric:tabular-nums;line-height:1.15}
  .echc-dir{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:12.5px;font-weight:800;color:var(--ink)}
  .echc-dir svg{flex:none;width:16px;height:16px;color:var(--ton)}
  .echc-dir b{font-weight:900}
  .echc-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
  .echc-tag{font-size:11px;font-weight:700;color:var(--ink-soft);background:var(--surface-2);
    border:1px solid var(--line);border-radius:8px;padding:3px 8px}
  .echc-tag b{color:var(--ink);font-weight:800}
  /* Ce que change l'acceptation : les soldes, avant → après */
  .echc-eff{margin-top:12px;padding:12px 13px;border-radius:14px;background:var(--surface-2);border:1px dashed var(--line-strong)}
  .echc-effh{font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:7px}
  .echc-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:7px;
    padding:5px 0;font-size:12.5px;font-variant-numeric:tabular-nums}
  .echc-row+.echc-row{border-top:1px solid var(--line)}
  .echc-row .nm{font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .echc-row .av{color:var(--ink-faint);font-weight:700;text-decoration:line-through;text-decoration-color:rgba(0,0,0,.2)}
  .echc-row .fl{color:var(--ink-faint);font-weight:900}
  .echc-row .ap{font-weight:900}
  .echc-row .ap.neg{color:var(--fail)} .echc-row .ap.pos{color:var(--paid)} .echc-row .ap.zero{color:var(--ink-soft)}
  .echc-safe{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:11.5px;font-weight:700;color:var(--ink-soft)}
  .echc-safe svg{flex:none;width:15px;height:15px;color:var(--paid)}
  /* Décision */
  .echc-act{display:flex;gap:9px;margin-top:13px}
  .echc-act button{border-radius:12px;padding:12px 14px;font-size:14px;font-weight:900;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;gap:7px;
    transition:transform .12s,box-shadow .18s,background .18s,border-color .18s,color .18s}
  .echc-act button:active{transform:scale(.97)}
  .echc-act button:disabled{opacity:.6;cursor:default;transform:none}
  .echc-act svg{width:17px;height:17px}
  .echc-no{flex:0 0 auto;background:var(--surface);color:var(--fail);border:1px solid rgba(192,57,43,.35)}
  .echc-no:hover{background:var(--danger-bg);border-color:var(--fail)}
  .echc-ok{flex:1;border:0;color:#fff;background:linear-gradient(135deg,#1E8E5A,#16A36A);
    box-shadow:0 10px 22px -12px rgba(30,142,90,.9)}
  .echc-ok:hover{box-shadow:0 14px 26px -12px rgba(30,142,90,1);transform:translateY(-1px)}
  .echc-ok.done{background:#1E8E5A;box-shadow:none}
  /* Refus en deux temps : on ne refuse pas d'un clic ce qu'un partenaire attend */
  .echc-conf{display:flex;align-items:center;gap:9px;margin-top:13px;padding:10px 11px;border-radius:13px;
    background:var(--danger-bg);border:1px solid rgba(192,57,43,.25);animation:echIn .22s ease both}
  .echc-conf span{flex:1;font-size:12.5px;font-weight:800;color:#8E2A20;line-height:1.35}
  .echc-conf button{border-radius:10px;padding:9px 12px;font-size:13px;font-weight:900;cursor:pointer}
  .echc-conf .keep{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink)}
  .echc-conf .sure{background:var(--fail);border:0;color:#fff}
  /* États vides / erreur */
  .ech-vide{text-align:center;padding:30px 22px 22px}
  .ech-vide-ic{width:74px;height:74px;margin:0 auto 14px;border-radius:24px;display:grid;place-items:center;
    color:#0E5561;background:linear-gradient(135deg,rgba(14,85,97,.10),rgba(19,117,105,.16));
    box-shadow:inset 0 0 0 1px rgba(14,85,97,.14)}
  .ech-vide-ic svg{width:34px;height:34px}
  .ech-vide.err .ech-vide-ic{color:var(--fail);background:var(--danger-bg);box-shadow:inset 0 0 0 1px rgba(192,57,43,.2)}
  .ech-vide b{display:block;font-size:16px;font-weight:900;color:var(--ink)}
  .ech-vide p{margin:6px auto 0;max-width:300px;font-size:12.5px;line-height:1.55;color:var(--ink-soft)}
  .ech-foot{align-items:center}
  .ech-foot .btn-cancel{display:inline-flex;align-items:center;gap:7px}
  .ech-foot .btn-cancel svg{width:15px;height:15px}
  .ech-foot .btn-cancel.spin svg{animation:hsSpin .9s linear infinite}
  .ech-foot .grow{flex:1}
  @media (max-width:420px){ .echc-amt strong{font-size:23px} .echc-row{grid-template-columns:minmax(0,1fr) auto; row-gap:0}
    .echc-row .av,.echc-row .fl{display:none} }
  @media (prefers-reduced-motion: reduce){
    .echc,.echc-conf{animation:none} .echc{transition:none} .echc-ok:hover{transform:none} }
  .org-sheet{max-width:420px}
  .org-i{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;margin-bottom:9px;
    border-radius:15px;border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left}
  .org-i:hover{border-color:rgba(14,85,97,.4);box-shadow:0 12px 26px -18px rgba(10,65,73,.5)}
  .org-i.cur{border-color:#0E5561;background:rgba(14,85,97,.06)}
  .org-av{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
    background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;font-size:17px;font-weight:900}
  .org-t{flex:1;min-width:0}
  .org-t b{display:block;font-size:14px;font-weight:900;overflow-wrap:anywhere}
  .org-t em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:1px}
  .org-tag{flex:none;font-size:9.5px;font-weight:900;padding:3px 9px;border-radius:99px;
    background:#0E5561;color:#fff;text-transform:uppercase;letter-spacing:.05em}
  .org-go{flex:none;font-size:20px;color:var(--ink-soft);opacity:.5}
  .dg-open{margin-left:10px;padding:4px 11px;border-radius:99px;cursor:pointer;
    border:1px solid rgba(14,85,97,.3);background:var(--surface);color:#0E5561;
    font-size:10.5px;font-weight:900;text-transform:none;letter-spacing:0}
  .dg-open:hover{background:rgba(14,85,97,.09)}
  .dg-sheet{max-width:560px}
  .dg-f{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:14px}
  .dg-fl{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
    padding:9px 13px;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:700}
  .dg-fl:last-child{border-bottom:0}
  .dg-fl b{font-variant-numeric:tabular-nums;font-weight:900;white-space:nowrap}
  .dg-fl.tot{background:rgba(14,85,97,.07);font-weight:900}
  .dg-fl.tot.eq{background:rgba(127,212,193,.13)}
  .dg-fl.tot span em{display:block;font-style:normal;font-size:10px;font-weight:700;
    color:var(--ink-soft);margin-top:2px}
  .dg-b{border:1px solid var(--line);border-radius:14px;padding:12px 13px;margin-bottom:11px;
    background:var(--surface)}
  .dg-b h4{margin:0 0 8px;font-size:12.5px;font-weight:900;display:flex;align-items:center;gap:8px}
  .dg-b h4 span{font-size:9.5px;font-weight:900;padding:2px 7px;border-radius:99px;
    background:var(--surface-2);color:var(--ink-soft)}
  .dg-b h4 b{margin-left:auto;font-variant-numeric:tabular-nums}
  .dg-b h4 b.pos{color:#0E7A50} .dg-b h4 b.neg{color:#B23B0C}
  .dg-l{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
    padding:7px 0;border-top:1px solid var(--line);font-size:12px}
  .dg-q{flex:1;min-width:0;font-weight:800}
  .dg-q em{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--ink-soft);margin-top:1px}
  .dg-l b{font-weight:900;font-variant-numeric:tabular-nums;white-space:nowrap}
  .dg-w{font-size:10px;font-weight:800;color:var(--ink-soft);text-align:right}
  .dg-vide,.dg-plus{margin:4px 0 0;font-size:11px;color:var(--ink-soft);font-style:italic}
  .dg-note{margin:0 0 6px;font-size:11px;color:var(--ink-soft);line-height:1.5}
  .dgt-ref{font-size:10px;font-weight:900;padding:1px 6px;border-radius:99px;
    background:rgba(14,85,97,.1);color:#0E5561}
  .dgt-c{font-size:10px;opacity:.8}
  .dgt-p{color:#0E7A50} .dgt-n{color:#B23B0C}
  .dgc-cum{display:block;font-style:normal;font-size:10.5px;font-weight:800;color:var(--ink-soft);margin-top:2px}
  .dgc-a{font-size:10px;font-weight:900;color:#8A5310}
  .dtreso-cap{font-size:11px;font-weight:600;opacity:.72;margin-top:3px;line-height:1.35}
  .dtr-row.tot.eq b{color:#B9F6CA}
  /* Les trois montants montent en place l'un après l'autre au chargement */
  /* Pendant une réception distante, rien ne doit bouger : les montants se mettent à
     jour sans animation et les blocs ne « réapparaissent » pas. */
  .sync-quiet .dtreso-val,.sync-quiet .dtreso-master,.sync-quiet .mphc,.sync-quiet .op-sec,
  .sync-quiet .mp-sec,.sync-quiet .dem-card,.sync-quiet .tls-c,.sync-quiet .qc-i,
  .sync-quiet .mp-caisse{animation:none !important}
  .sync-quiet .sr{opacity:1 !important;transform:none !important}
  .sync-quiet *{transition:none !important}
  .dtreso-col .dtreso-val{animation:dtVal .7s cubic-bezier(.22,.61,.36,1) both}
  .dtreso-col:nth-child(1) .dtreso-val{animation-delay:.05s}
  .dtreso-col:nth-child(2) .dtreso-val{animation-delay:.15s}
  .dtreso-col:nth-child(3) .dtreso-val{animation-delay:.25s}
  @keyframes dtVal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion: reduce){ .dtreso-col .dtreso-val{animation:none} .dtreso-col:hover{transform:none} }
  /* Rien ne dépasse latéralement : les montants se replient au lieu d'élargir la bande. */
  .dash-treso, .dtreso-two, .dtreso-col, .dtreso-master{max-width:100%;min-width:0}
  .dtreso-val, .dtreso-lab, .dtreso-cap, .dtm-val, .dtm-sub{overflow-wrap:anywhere;word-break:break-word}
  .dtreso-col{min-width:0}
  .dtreso-col.alt{opacity:1}   /* plus de séparation par un trait : chaque carte se suffit */
  /* ---------- Point master : cartes de caisses (étape 2) ---------- */
  .mp-caisses{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:11px}
  /* Groupe d'une caisse mère dans le comptage (v366) */
  .mp-grp{border:1px solid var(--line);border-radius:16px;padding:12px 13px;margin-bottom:12px;
    background:var(--surface-2)}
  .mpg-h{display:flex;align-items:center;gap:11px;margin-bottom:10px}
  .mpg-n{flex:1;min-width:0}
  .mpg-n b{display:block;font-size:14px;font-weight:900;letter-spacing:-.01em}
  .mpg-n em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:2px}
  /* Le total attendu : c'est LE chiffre à retrouver en comptant, il doit sauter aux
     yeux. Fond ambré plein, texte foncé, et un TREMBLEMENT court plutôt qu'un
     fondu — l'atténuation rendait le montant moins lisible au moment précis où on le
     lit. Ici l'opacité ne bouge pas du tout. */
  .mpg-att{display:inline-block;font-weight:900;font-size:12.5px;letter-spacing:-.01em;
    padding:3px 9px;border-radius:8px;background:#FFD98A;color:#5A3A05;
    border:1px solid #E8A93C;box-shadow:0 2px 8px -3px rgba(224,138,43,.65);
    animation:mpgAtt 1.1s ease-in-out infinite}
  @keyframes mpgAtt{
    0%,100%{transform:translateX(0) rotate(0)}
    12%{transform:translateX(-2px) rotate(-1.1deg)}
    24%{transform:translateX(2px) rotate(1.1deg)}
    36%{transform:translateX(-1.5px) rotate(-.8deg)}
    48%{transform:translateX(1.5px) rotate(.8deg)}
    60%{transform:translateX(0) rotate(0)}   /* puis repos jusqu'au battement suivant */
  }
  @media (prefers-reduced-motion: reduce){ .mpg-att{animation:none} }
  .mpg-e{flex:none;font-size:11.5px;font-weight:900;padding:4px 10px;border-radius:99px;white-space:nowrap;
    background:var(--surface-2);color:var(--ink-soft)}
  .mpg-e.ok{background:rgba(30,142,90,.12);color:#0E7A50}
  .mpg-e.pos{background:rgba(30,142,90,.12);color:#0E7A50}
  .mpg-e.neg{background:rgba(178,59,12,.12);color:#B23B0C}
  .mp-grp .mp-caisses{margin:0}
  .mp-caisse.sous{background:var(--surface)}
  .mp-caisse{padding:12px 13px;border-radius:14px;border:1px solid var(--line);background:var(--surface-2);
    transition:border-color .18s, box-shadow .18s, background .18s}
  .mp-caisse:focus-within{box-shadow:0 12px 26px -18px rgba(10,65,73,.5)}
  .mp-caisse.ok{border-color:rgba(30,142,90,.32);background:rgba(30,142,90,.05)}
  .mp-caisse.diff{border-color:rgba(224,138,43,.42);background:rgba(224,138,43,.06)}
  .mpc-h{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-width:0}
  .mpc-n{min-width:0}
  .mpc-n b{display:block;font-size:13.5px;font-weight:900;letter-spacing:-.01em;overflow-wrap:anywhere}
  .mpc-n em{display:block;font-style:normal;font-size:10.5px;color:var(--ink-soft);font-weight:700;margin-top:1px}
  .mpc-f{position:relative;display:flex;align-items:center}
  .mpc-f .mpc{width:100%;font-size:18px;font-weight:900;text-align:right;padding-right:52px;
    font-variant-numeric:tabular-nums;border-radius:11px}
  .mpc-cur{position:absolute;right:12px;font-size:10px;font-weight:900;letter-spacing:.05em;color:var(--ink-soft);
    pointer-events:none}
  .mpc-d{margin-top:8px;min-height:16px;font-size:11.5px;font-weight:800}
  .mpc-ok{color:#0E7A50}
  .mpc-ec{color:#7A3B00}
  .mpc-ec.moins{color:#B23B0C}
  @media(max-width:560px){ .mp-caisses{grid-template-columns:1fr} }
  /* ---------- Point master : navigation par étapes ---------- */
  .mp-steps{display:flex;gap:6px;padding:12px clamp(14px,3vw,22px) 0;flex-wrap:wrap}
  .mp-st{flex:1;min-width:56px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 6px;
    border:0;background:transparent;cursor:pointer;border-radius:11px;transition:background .15s}
  .mp-st:hover{background:var(--surface-2)}
  .mp-st span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:900;
    background:var(--surface-2);color:var(--ink-soft);border:1.5px solid var(--line);transition:all .18s}
  .mp-st em{font-style:normal;font-size:9.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;
    color:var(--ink-soft);text-align:center;line-height:1.2}
  .mp-st.on span{background:#0E5561;border-color:#0E5561;color:#fff;transform:scale(1.08);
    box-shadow:0 0 0 4px rgba(14,85,97,.13)}
  .mp-st.on em{color:var(--ink)}
  .mp-st.done span{background:rgba(30,142,90,.14);border-color:rgba(30,142,90,.4);color:#0E7A50}
  /* Le trait qui relie les étapes */
  .mp-steps{position:relative}
  .mp-steps::before{content:"";position:absolute;left:clamp(24px,5vw,36px);right:clamp(24px,5vw,36px);top:26px;
    height:2px;background:var(--line);z-index:0}
  .mp-st{position:relative;z-index:1}
  .mp-f{flex-wrap:wrap}
  .mp-f #mpPrev{flex:none}
  .mp-f #mpCancel{flex:none}
  .mp-f #mpNext,.mp-f #mpSave{flex:1}
  @media(max-width:560px){ .mp-st em{display:none} .mp-steps::before{top:22px} }
  /* ---------- Formulaire du point master ---------- */
  #mpScrim .sheet{max-width:640px}
  .mp-h{background:linear-gradient(135deg,#0F5D6A,#08363D);border-bottom:0}
  .mp-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .mp-ic{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#7FD4C1;
    background:rgba(127,212,193,.16);border:1px solid rgba(127,212,193,.3)}
  .mp-ic svg{width:22px;height:22px}
  .mp-h h2{margin:0;color:#fff;font-size:19px;font-weight:900;letter-spacing:-.02em}
  .mp-h p{margin:2px 0 0;color:#A9CDD1;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
  .mp-h .x{color:#fff}
  .mp-form{display:flex;flex-direction:column;gap:14px}
  /* Chaque étape dans son cadre, numérotée : on sait où l'on en est */
  .mp-sec{padding:15px 16px;border-radius:16px;border:1px solid var(--line);background:var(--surface);
    animation:tlsOpen .3s cubic-bezier(.22,.61,.36,1) both}
  .mp-sec:nth-child(2){animation-delay:.05s}
  .mp-sec:nth-child(3){animation-delay:.1s}
  .mp-sec:nth-child(4){animation-delay:.15s}
  .mp-sec:focus-within{border-color:rgba(14,85,97,.32);box-shadow:0 12px 28px -20px rgba(10,65,73,.5)}
  .mp-sech{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
  .mp-n{flex:none;width:26px;height:26px;border-radius:9px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:12px;font-weight:900}
  .mp-sech b{font-size:14px;font-weight:900;letter-spacing:-.01em}
  /* Étape 1 en lecture seule */
  /* Récapitulatif du comptage, à l'étape de vérification */
  /* Dépenses du jour reprises automatiquement dans le point master */
  .mpda-l{display:flex;flex-direction:column;gap:7px}
  .mpda-i{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:12px;
    border:1px solid var(--line);background:var(--surface)}
  .mpda-p{flex:none;width:34px;height:34px;border-radius:9px;object-fit:cover;background:var(--surface-2)}
  .mpda-p.vide{display:grid;place-items:center;color:var(--ink-soft);font-size:12px}
  .mpda-t{flex:1;min-width:0}
  .mpda-t b{display:block;font-size:13px;font-weight:900;overflow-wrap:anywhere}
  .mpda-t em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:1px}
  .mpda-m{flex:none;font-size:14px;font-weight:900;color:#B23B0C;font-variant-numeric:tabular-nums}
  .mpda-tot{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:10px;
    padding:11px 13px;border-radius:12px;background:rgba(178,59,12,.06);border:1px solid rgba(178,59,12,.22)}
  .mpda-tot span{font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
  .mpda-tot b{font-size:17px;font-weight:900;color:#B23B0C}
  .mpda-i.ancienne{background:rgba(224,138,43,.05);border-color:rgba(224,138,43,.28)}
  .mpda-age{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:99px;font-size:9.5px;
    font-weight:900;background:rgba(224,138,43,.16);color:#8A5310}
  .mpda-part{display:block;font-size:10.5px;font-weight:800;color:#0E7A50;margin-top:2px}
  .mpda-vide{padding:14px;border-radius:12px;border:1px dashed var(--line);background:var(--surface-2);
    font-size:12.5px;font-weight:800;color:var(--ink-soft)}
  .mpda-vide em{display:block;font-style:normal;font-size:11.5px;font-weight:700;margin-top:4px;line-height:1.5}
  .mpda-n{margin:8px 0 0;font-size:11px;color:var(--ink-soft);line-height:1.5}
  /* ═════════ VÉRIFICATION DU POINT MASTER — tout en tableaux (v413) ═════════
     Deux tableaux alignés, qui se lisent de la même façon :
       1. caisse par caisse  → où l'argent manque ou dépasse ;
       2. le décompte total  → attendu et compté COTE À COTE, plus la colonne Écart
                               qui dit quelle ligne fabrique la différence.
     Avant, l'attendu et le compté étaient deux listes empilées : pour comparer deux
     chiffres il fallait les chercher à vingt lignes d'écart. */
  .mpv-head{display:flex;align-items:center;gap:14px;padding:17px 16px}
  .mpv-head b{display:block;font-size:19px;font-weight:900;letter-spacing:-.025em;line-height:1.15}
  .mpv-head p{margin:5px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
  .mpv-head p b{display:inline;font-size:inherit;font-weight:900;color:var(--ink)}
  .mpv-ic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
    font-size:19px;font-weight:900;color:#fff}
  .mpv-head.ok{background:linear-gradient(135deg,rgba(30,142,90,.14),rgba(30,142,90,.05))} .mpv-head.ok .mpv-ic{background:#0E7A50;box-shadow:0 8px 18px -9px rgba(14,122,80,.95)}
  .mpv-head.aj{background:linear-gradient(135deg,rgba(30,142,90,.14),rgba(30,142,90,.05))} .mpv-head.aj .mpv-ic{background:#0E7A50;box-shadow:0 8px 18px -9px rgba(14,122,80,.95)}
  .mpv-head.mq{background:linear-gradient(135deg,rgba(178,59,12,.14),rgba(178,59,12,.05))} .mpv-head.mq .mpv-ic{background:#B23B0C;box-shadow:0 8px 18px -9px rgba(178,59,12,.95)}
  .mpv-head.ok b{color:#0E7A50} .mpv-head.aj b{color:#0E7A50} .mpv-head.mq b{color:#B23B0C}
  /* Le conteneur #mpEffect est partagé avec les aperçus des guichets, teintés en vert.
     Ici la carte porte déjà son propre cadre et sa couleur (verte ou rouge selon le
     résultat) : un cadre vert autour d'un verdict rouge jurait. On le neutralise. */
  #mpEffect{background:none;border:0;padding:0;margin-top:0}
  .mpv{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface);
    box-shadow:0 1px 2px rgba(16,39,46,.04),0 16px 34px -28px rgba(16,39,46,.55)}
  .mpv-t{padding:9px 14px;background:var(--surface-2);border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    font-size:9.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  /* ── Le tableau, commun aux deux usages ── */
  .mpt{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;table-layout:fixed}
  .mpt th,.mpt td{padding:10px 8px;text-align:right;font-size:12.5px;white-space:nowrap}
  .mpt th:first-child,.mpt td:first-child{text-align:left;white-space:normal;padding-left:14px}
  .mpt td:last-child,.mpt th:last-child{padding-right:14px}
  /* Colonnes calées une fois pour toutes : le libellé prend ce qui reste, les trois
     colonnes de chiffres gardent une largeur fixe, sinon la dernière déborde. */
  .mpt col.c-nom{width:auto} .mpt col.c-num{width:22%} .mpt col.c-ec{width:25%}
  .mpt thead th em{display:block;font-style:normal;font-size:8.5px;font-weight:800;
    letter-spacing:.06em;opacity:.75;margin-top:1px}
  .mpt thead th{background:var(--surface-2);border-bottom:1px solid var(--line-strong);
    font-size:9.5px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
  .mpt tbody td{border-bottom:1px solid var(--line);font-weight:800;color:var(--ink)}
  .mpt tbody tr:last-child td{border-bottom:0}
  .mpt .nm{font-weight:900}
  .mpt .nm em{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--ink-soft);
    margin-top:2px;white-space:normal;line-height:1.45}
  .mpt .att{color:var(--ink-soft)}
  .mpt .plus{color:#0E7A50} .mpt .moins{color:#B23B0C}
  /* Ligne de total : c'est le chiffre qu'on cherche, il se détache */
  .mpt tr.tot td{background:rgba(14,85,97,.07);border-top:1px solid var(--line-strong);
    border-bottom:0;font-size:14px;font-weight:900;color:var(--ink)}
  .mpt tr.tot td:first-child{color:var(--ink)}
  /* Pastille d'écart : ✓ quand ça tombe juste, chiffre coloré sinon */
  .mpe{display:inline-block;min-width:34px;padding:3px 8px;border-radius:8px;
    font-size:12px;font-weight:900;font-variant-numeric:tabular-nums}
  .mpe.ok{background:rgba(30,142,90,.12);color:#0E7A50}
  .mpe.pos{background:rgba(30,142,90,.14);color:#0E7A50}
  .mpe.neg{background:rgba(178,59,12,.13);color:#B23B0C}
  .mpt tr.tot .mpe{font-size:13px;padding:4px 9px}
  .mpt tr.diff td{background:rgba(224,138,43,.06)}
  .mpt tr.sous td{font-size:11.5px;font-weight:700;color:var(--ink-soft);background:var(--surface-2)}
  .mpt tr.sous td:first-child{padding-left:26px}
  .mpt tr.sous.diff td{background:rgba(224,138,43,.1)}
  .mpt tr.sous .mpe{font-size:11px;padding:2px 7px}
  .mpv-n{margin:0;padding:11px 14px;border-top:1px solid var(--line);background:var(--surface-2);
    font-size:11px;color:var(--ink-soft);line-height:1.5}
  .mpv-n b{color:var(--ink)}
  /* ── Petites largeurs : quatre colonnes de grands nombres ne tiennent pas côte à
     côte sur un téléphone — les chiffres se chevauchaient et l'écart sortait du
     cadre. Chaque ligne devient donc un petit bloc, où chaque valeur porte son
     étiquette. Même information, toujours lisible. */
  @media (max-width:560px){
    .mpt{display:block;width:100%}
    .mpt tbody,.mpt tfoot,.mpt tr,.mpt td{display:block;width:auto}
    .mpt colgroup,.mpt thead{display:none}
    .mpt tbody tr{border-bottom:1px solid var(--line);padding:4px 0 6px}
    .mpt tbody tr:last-child{border-bottom:0}
    .mpt td{border:0!important;padding:3px 14px;display:flex;align-items:center;
      justify-content:space-between;gap:12px;text-align:right}
    .mpt td:first-child{display:block;text-align:left;padding-top:9px;padding-bottom:4px}
    .mpt td[data-l]::before{content:attr(data-l);flex:none;font-size:10px;font-weight:900;
      letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
    .mpt tr.tot{padding:7px 0 9px;background:rgba(14,85,97,.07);border-top:1px solid var(--line-strong)}
    .mpt tr.tot td{background:none;font-size:13.5px}
    .mpt tr.tot td:first-child{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}
    .mpt tr.sous td:first-child{padding-left:14px}
    .mpt tr.sous td:first-child::after{content:" · sous-caisse";font-size:10px;font-weight:800;opacity:.7}
    .mpe{min-width:0}
  }
  /* Tableau du comptage caisse par caisse : même habillage, encadré à part */
  .mp-recap{border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:13px;background:var(--surface);
    box-shadow:0 1px 2px rgba(16,39,46,.04)}
  .mp-fixe{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
  .mpf-c{padding:11px 13px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
  .mpf-c span{display:block;font-size:9.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
    color:var(--ink-soft)}
  .mpf-c b{display:block;font-size:14.5px;font-weight:900;margin-top:3px;letter-spacing:-.01em}
  .mp-fixe-n{margin:9px 0 0;font-size:11px;color:var(--ink-soft);line-height:1.5}
  .mp-sech em{font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700}
  .mp-sec .field{margin:0}
  .mp-sec .grid2{gap:10px}
  .mp-sec .grid2+.grid2{margin-top:10px}
  /* Dettes : deux colonnes, entrée verte et sortie rouge */
  .mp-duo{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .mp-side{padding:12px 13px;border-radius:13px;border:1px solid var(--line);background:var(--surface-2)}
  .mp-side.in{border-color:rgba(30,142,90,.24);background:rgba(30,142,90,.04)}
  .mp-side.out{border-color:rgba(178,59,12,.2);background:rgba(178,59,12,.04)}
  .mp-cap{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:900;letter-spacing:.07em;
    text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}
  .mp-dot{width:9px;height:9px;border-radius:50%}
  .mp-dot.in{background:#1E8E5A}
  .mp-dot.out{background:#B23B0C}
  .mp-side .op-add{width:100%;margin-top:8px}
  .mp-justif{padding:13px 15px;border-radius:14px;border:1px solid rgba(224,138,43,.4);background:#FDF6EC;margin-top:2px}
  .mp-justif label{color:#7A3B00}
  @media (prefers-reduced-motion: reduce){ .mp-sec{animation:none} }
  @media(max-width:560px){ .mp-duo{grid-template-columns:1fr} .mp-sec{padding:13px 13px} }
  /* Écart et détail des trésoreries, rangés dans la Clôture du jour */
  .clo-treso{margin:14px 0}
  .clo-tbtn{display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:14px 16px;cursor:pointer;
    border-radius:16px;border:1px solid var(--line);background:var(--surface);
    transition:border-color .18s, box-shadow .18s, background .15s}
  .clo-tbtn:hover{background:var(--surface-2);border-color:rgba(14,85,97,.3)}
  .clo-tbtn.on{border-color:rgba(14,85,97,.35);box-shadow:0 12px 26px -18px rgba(10,65,73,.5)}
  .ct-ic{flex:none;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;
    background:rgba(14,85,97,.09);color:#0E5561}
  .ct-ic svg{width:20px;height:20px}
  .ct-t{flex:1;min-width:0}
  .ct-t b{display:block;font-size:14px;font-weight:900;letter-spacing:-.01em}
  .ct-t em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700;margin-top:2px}
  .ct-chev{flex:none;width:17px;height:17px;color:var(--ink-soft);transition:transform .22s}
  .clo-tbtn.on .ct-chev{transform:rotate(180deg)}
  /* Le contenu reprend le fond profond de la bande des trésoreries */
  .clo-tbody{margin-top:10px;padding:16px 18px;border-radius:18px;color:#fff;
    background:linear-gradient(135deg,#12707E 0%, var(--primary) 45%, var(--primary-d,#0a3f48) 100%);
    box-shadow:0 16px 34px -20px rgba(14,85,97,.6);
    animation:tlsOpen .28s cubic-bezier(.22,.61,.36,1) both}
  .clo-tbody .dtreso-gap{margin-top:0}
  @media print{ .clo-tbtn{display:none} .clo-tbody{display:block !important;color:#000;background:none;box-shadow:none} }
  .dtreso-det{margin-top:12px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);
    border-radius:14px;padding:4px 15px 3px;transition:background .2s}
  .dtreso-det:hover{background:rgba(255,255,255,.11)}
  .dtreso-det>summary{cursor:pointer;list-style:none;font-size:12.5px;font-weight:800;padding:7px 0;opacity:.92}
  .dtreso-det>summary::-webkit-details-marker{display:none}
  .dtreso-det>summary::after{content:" ▾";opacity:.7}
  .dtreso-det[open]>summary::after{content:" ▴"}
  .dtreso-rows{padding:2px 0 6px}
  .dtr-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;font-weight:700;padding:5px 0;border-top:1px solid rgba(255,255,255,.14)}
  .dtr-row:first-child{border-top:0}
  .dtr-row.plus b{color:#B9F6CA}
  .dtr-row.minus b{color:#FFCDD2}
  .dtr-row.tot{font-weight:900;font-size:13.5px;border-top:2px solid rgba(255,255,255,.35);margin-top:3px;padding-top:8px}
  .dtr-note{margin:0 0 8px;font-size:11px;font-weight:600;opacity:.75}
  .dtreso-why{display:block;font-size:11px;font-weight:600;opacity:.8;margin-top:2px;line-height:1.4}
  .dtreso-gap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;
    font-size:13px;font-weight:700;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.12);
    border-radius:14px;padding:11px 15px}
  .dtreso-gap.ok{background:rgba(185,246,202,.12);border-color:rgba(185,246,202,.28)}
  .dtreso-remb{background:#FFC403;color:#3A2B00;border:none;font-weight:800;font-size:12.5px;padding:8px 13px;border-radius:10px;cursor:pointer;white-space:nowrap}
  .dtc-eye{margin-left:auto;vertical-align:-3px;width:22px;height:22px;flex:none;display:inline-flex;align-items:center;justify-content:center;
    border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.14);color:inherit;cursor:pointer;padding:0}
  .dtc-eye svg{width:13px;height:13px}
  .dtc-eye:hover{background:rgba(255,255,255,.26)}
  /* Le cadenas rappelle que la trésorerie initiale est figée */
  .ti-lock{margin-left:5px;font-size:10px;opacity:.75;cursor:help}
  /* Alerte : la valeur figée ne correspond plus aux données */
  .ti-fix{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:8px;padding:8px 10px;
    border-radius:10px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28)}
  .ti-fix span{flex:1;min-width:150px;font-size:10.5px;font-weight:700;color:rgba(255,255,255,.92);line-height:1.4}
  .ti-fix b{font-weight:900;color:#fff}
  .ti-fix button{flex:none;padding:6px 13px;border-radius:9px;border:0;cursor:pointer;
    background:#fff;color:#0E5561;font-size:11.5px;font-weight:900}
  .ti-fix button:hover{filter:brightness(.94)}
  /* Trésorerie initiale : teinte ambrée pour la distinguer d'un coup d'œil des deux autres */
  .dtreso-col.init{border-color:rgba(255,214,138,.28);background:rgba(255,214,138,.09)}
  .dtreso-col.eq{border-color:rgba(185,246,202,.24);background:rgba(185,246,202,.07)}
  .dtreso-col.init .dtreso-lab{color:#FFE1A8}
  .dtreso-col.init .dtreso-val{color:#FFD98A}
  .dtreso-col.init .dtc-eye{border-color:rgba(255,217,138,.45);color:#FFD98A}
  .dtreso-eye{position:absolute;top:11px;right:11px;z-index:2;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;transition:background .15s,transform .12s}
  .dtreso-eye:hover{background:rgba(255,255,255,.22);transform:translateY(-1px)}
  .dtreso-eye svg{width:20px;height:20px}
  .dtreso-remb:hover{filter:brightness(1.05)}
  @media(max-width:900px){ .dtreso-two.three{grid-template-columns:1fr 1fr} }
  @media(max-width:900px){ .dtreso-col{padding:14px 15px 13px} .dtreso-val{font-size:34px} }
  @media(max-width:560px){
    .dtreso-two,.dtreso-two.three{grid-template-columns:1fr;gap:10px}
    .dtreso-col{padding:13px 14px 12px}
    .dtreso-col.alt{border-top:0;padding-top:13px}
    .dtreso-val{font-size:30px;margin-top:6px}
    .dash-treso{padding:20px 18px;border-radius:22px}
  }
  .remb-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
  .remb-kpi{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
  .remb-kpi span{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);font-weight:800}
  .remb-kpi b{font-size:16px;color:var(--ink)}
  .remb-kpi.gap{border-color:#F3C0AE;background:#FCE9E2}.remb-kpi.gap b{color:#B23B0C}
  .remb-kpi.ok{border-color:#B7E0C8;background:#E6F4EC}.remb-kpi.ok b{color:#0E6B45}
  .remb-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px}
  .remb-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .remb-info b{font-size:13.5px;color:var(--ink)}
  .remb-info span{font-size:11px;color:var(--ink-soft)}
  .remb-amt{font-weight:800;color:#B23B0C}
  .remb-btn{background:var(--primary);color:#fff;border:none;font-weight:700;font-size:12.5px;padding:8px 12px;border-radius:9px;cursor:pointer;white-space:nowrap}
  .remb-btn:hover{filter:brightness(1.06)}
  .remb-empty{text-align:center;color:#0E6B45;font-weight:700;font-size:13.5px;padding:18px}
  .vers-lab{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:6px 0 8px}
  .vers-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
  .vers-cn{display:flex;align-items:center;gap:7px;min-width:120px;font-weight:700;font-size:13px;color:var(--ink)}
  .vers-row .vers-amt{flex:1;margin:0}
  .grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
  @media(max-width:560px){ .grid3{grid-template-columns:1fr} .vers-cn{min-width:96px} }

  /* ---------- Shell / Sidebar ---------- */
  .shell{display:flex; min-height:100vh; min-height:100dvh}
  /* Colonne de navigation : dégradé profond, séparateurs discrets, repères nets.
     L'objectif est qu'on repère la page active d'un coup d'œil, sans surcharge. */
  /* COLONNE DE NAVIGATION VRAIMENT FIXE.
     Elle était en « sticky » : sur certains navigateurs, un parent avec overflow (posé
     pour empêcher le défilement latéral) annule cet effet et la colonne suivait la page.
     En « fixed » elle est ancrée à la fenêtre, quoi qu'il arrive au reste. Le contenu
     reçoit en contrepartie une marge à gauche de la même largeur. */
  .sidebar{width:252px; flex:none; color:#EAF3F4;
    background:linear-gradient(180deg,#0F5D6A 0%, var(--primary) 46%, #0A4149 100%);
    display:flex; flex-direction:column; gap:14px; padding:18px 14px 16px;
    position:fixed; left:0; top:0; bottom:0; height:100vh; height:100dvh;
    overflow-y:auto; overscroll-behavior:contain; z-index:70;
    border-right:1px solid rgba(255,255,255,.07); box-shadow:1px 0 0 rgba(0,0,0,.12)}
  .content{margin-left:252px}   /* la place laissée par la colonne fixe */
  .sidebar::-webkit-scrollbar{width:6px}
  .sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:99px}
  .side-head{display:flex; align-items:center; gap:11px; padding:2px 6px 12px;
    border-bottom:1px solid rgba(255,255,255,.09)}
  .side-title b{font-size:16px;color:#fff;display:block;line-height:1.1;letter-spacing:-.02em}
  .side-title span{font-size:10.5px;color:#A9CDD1;letter-spacing:.04em}
  .side-treso{background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.09);
    border-radius:14px; padding:12px 14px}
  .side-treso .lab{font-size:9.5px;text-transform:uppercase;letter-spacing:.14em;color:#9BC3C8;font-weight:800}
  .side-treso .val{font-size:22px;font-weight:900;color:#fff;margin-top:3px;letter-spacing:-.02em}
  .side-treso .clock{font-size:11px;color:#9BC3C8;margin-top:5px}
  .sidebar .btn-new{width:100%; justify-content:center}
  /* Intitulé de groupe, pour aérer la liste sans ajouter de traits */
  .side-nav{display:flex; flex-direction:column; gap:3px; margin-top:2px}
  /* Le menu est classé en familles : on repère une page par sa famille, pas en
     parcourant douze lignes identiques. */
  .nav-sec{display:flex;align-items:center;gap:9px;padding:14px 13px 7px;font-size:9.5px;font-weight:800;
    letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.46);position:relative}
  .nav-sec:first-child{padding-top:2px}
  /* Une petite marque avant le titre, et un filet qui s'estompe après */
  .nav-sec::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;background:#7FD4C1;opacity:.65}
  .nav-sec::after{content:"";flex:1;height:1px;
    background:linear-gradient(90deg,rgba(255,255,255,.2),transparent)}
  .tab.navitem{position:relative; display:flex; align-items:center; gap:12px; width:100%; text-align:left;
    padding:10px 13px; border-radius:12px; border:none; background:none;
    color:#BFD6DA; font-size:14px; font-weight:650; white-space:nowrap; overflow:hidden;
    transition:background .18s, color .18s, transform .16s, box-shadow .18s}
  /* L'icône vit dans son propre carré : plus lisible, et elle s'anime seule */
  .tab.navitem .ni{width:18px; height:18px; flex:none; opacity:.72;
    transition:opacity .18s, transform .22s cubic-bezier(.34,1.4,.5,1)}
  /* Une lueur passe sous l'entrée survolée, de gauche à droite */
  .tab.navitem::after{content:"";position:absolute;inset:0;border-radius:12px;pointer-events:none;
    background:linear-gradient(90deg,rgba(127,212,193,.22),transparent 60%);
    opacity:0;transform:translateX(-8px);transition:opacity .2s, transform .25s}
  .tab.navitem:hover::after{opacity:1;transform:none}
  .tab.navitem:hover{background:rgba(255,255,255,.08); color:#fff; transform:translateX(3px)}
  .tab.navitem:hover .ni{opacity:1;transform:scale(1.12) rotate(-4deg)}
  .tab.navitem:active{transform:translateX(3px) scale(.985)}
  .tab.navitem:focus-visible{outline:2px solid rgba(127,212,193,.7); outline-offset:2px}
  /* PAGE ACTIVE : pastille claire, trait vertical vif, léger relief */
  .tab.navitem[aria-selected="true"]{background:linear-gradient(100deg,#fff,#EAF6F5);
    color:var(--primary); font-weight:850;
    box-shadow:0 8px 20px -9px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.9);
    transform:none}
  .tab.navitem[aria-selected="true"]::after{opacity:0}
  .tab.navitem[aria-selected="true"] .ni{opacity:1;color:var(--primary)}
  .tab.navitem[aria-selected="true"]::before{content:"";position:absolute;left:-14px;top:7px;bottom:7px;
    width:4px;border-radius:0 4px 4px 0;background:linear-gradient(180deg,#9BE8D6,#5FC0AA);
    box-shadow:0 0 12px rgba(127,212,193,.75)}
  /* Un point discret marque l'entrée active, à droite */
  .tab.navitem[aria-selected="true"]::marker{content:""}
  @media (prefers-reduced-motion: reduce){
    .tab.navitem,.tab.navitem .ni,.tab.navitem::after{transition:none}
    .tab.navitem:hover{transform:none}
    .tab.navitem:hover .ni{transform:none}
  }
  .side-ver{margin-top:8px;text-align:center;font-size:10px;font-weight:700;letter-spacing:.3px;color:rgba(255,255,255,.4)}
  .side-foot{margin-top:auto; padding-top:12px; border-top:1px solid rgba(255,255,255,.1)}
  .side-user{display:flex;align-items:center;gap:10px;padding:9px 10px;color:#EAF3F4;
    background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:12px;margin-bottom:10px}
  .side-user b{font-size:13px;color:#fff;display:block;line-height:1.15}
  .side-user span span{font-size:11px;color:#9BC3C8}
  /* DÉCONNEXION — volontairement distincte des entrées de navigation.
     Les autres boutons ouvrent une page ; celui-ci ferme la session. Il est donc
     séparé par un filet, teinté de rouge, et n'adopte aucun code visuel du menu
     (pas de pastille active, pas de trait vertical, pas de glissement au survol). */
  .side-foot .btn-logout{position:relative;display:flex;align-items:center;gap:11px;width:100%;
    margin-top:12px;padding:11px 13px;border-radius:12px;font-weight:800;font-size:13px;letter-spacing:.01em;
    background:rgba(214,88,58,.14); border:1px solid rgba(255,150,120,.34); color:#FFC9BA;
    transition:background .16s, border-color .16s, color .16s}
  /* Le filet qui l'isole des entrées de navigation */
  .side-foot .btn-logout::before{content:"";position:absolute;left:6px;right:6px;top:-7px;height:1px;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent)}
  .side-foot .btn-logout:hover{background:rgba(214,88,58,.28);border-color:rgba(255,150,120,.55);color:#fff}
  .side-foot .btn-logout:active{transform:translateY(1px)}
  .lo-ic{flex:none;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;
    background:rgba(255,150,120,.18)}
  .side-foot .btn-logout:hover .lo-ic{background:rgba(255,150,120,.3)}
  .btn-logout svg{width:16px; height:16px}
  .lo-t{flex:1;text-align:left}
  .content{flex:1 1 auto; min-width:0; display:flex; flex-direction:column}
  :root{--stick-top:52px}   /* hauteur de l'en-tête fixe : décalage du contenu et de la bande */
  /* EN-TÊTE VRAIMENT FIXE : même raison que la colonne de navigation — la position
     « collante » était neutralisée par la règle anti-défilement latéral. On l'ancre
     donc à la fenêtre, à droite de la colonne, et on décale le contenu d'autant. */
  .apphead{display:flex; align-items:center; justify-content:space-between; gap:14px;
    padding:12px 22px; border-bottom:1px solid var(--line); background:var(--surface);
    position:fixed; top:0; left:252px; right:0; z-index:45;
    box-shadow:0 1px 0 rgba(10,65,73,.04)}
  .content>main{padding-top:var(--stick-top)}   /* la place laissée par l'en-tête fixe */
  .apphead-title{font-size:20px; font-weight:800; letter-spacing:-.02em; color:var(--ink)}
  .apphead-right{display:flex; align-items:center; gap:18px}
  .sync-dot{width:9px;height:9px;border-radius:50%;background:#1E8E5A;flex:none;box-shadow:0 0 0 3px rgba(30,142,90,.15)}
  .sync-dot.busy{background:#E5A50A;box-shadow:0 0 0 3px rgba(229,165,10,.18);animation:sdPulse 1s infinite}
  .sync-dot.off{background:#9AA7AB;box-shadow:none}
  @keyframes sdPulse{50%{opacity:.35}}
  .head-sync{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);
    color:var(--ink);border-radius:9px;padding:7px 11px;font-size:12px;font-weight:800;cursor:pointer}
  .head-sync svg{width:15px;height:15px;color:#0E5561}
  .head-sync:hover{background:rgba(14,85,97,.08)}
  .head-sync.spin svg{animation:hsSpin .9s linear infinite}
  @keyframes hsSpin{to{transform:rotate(360deg)}}
  @media(max-width:700px){ .head-sync span{display:none} .head-sync{padding:7px 9px} }
  .apphead-date{font-size:12.5px; color:var(--ink-soft); text-transform:capitalize}
  /* Bouton de changement d'entreprise, dans l'en-tête */
  .org-sw{width:30px;height:30px;border-radius:9px;border:1px solid var(--line);cursor:pointer;
    background:var(--surface);color:#0E5561;font-size:14px;font-weight:900;line-height:1}
  .org-sw:hover{background:rgba(14,85,97,.09)}
  .org-sw[hidden]{display:none}
  /* ── Bouton des transferts reçus (v410, icône revue en v411) ────────────────
     L'icône est faite de deux flèches horizontales de sens opposés : une créance
     part d'un côté et revient de l'autre. Elles CLIGNOTENT tant qu'un transfert
     attend une réponse, et la pastille rouge donne le nombre. Au repos, l'icône
     est immobile et de la couleur habituelle de l'en-tête : rien ne bouge pour
     rien. Une seule animation à la fois — le clignotement — pour que l'œil sache
     où regarder. */
  .ech-b{position:relative; overflow:visible; display:inline-flex; align-items:center; justify-content:center}
  .ech-ic{width:18px; height:18px; display:block}
  .ech-badge{position:absolute; top:-7px; right:-7px; min-width:18px; height:18px; padding:0 4px;
    border-radius:9px; background:#D92D20; color:#fff; font-size:10.5px; font-weight:900;
    line-height:18px; text-align:center; letter-spacing:-.2px; pointer-events:none;
    box-shadow:0 0 0 2px var(--surface), 0 1px 3px rgba(0,0,0,.25)}
  .ech-badge[hidden]{display:none}
  .ech-b.on{border-color:#D92D20; color:#D92D20}
  .ech-b.on .ech-ic{animation:echClign 1.1s ease-in-out infinite}
  @keyframes echClign{
    0%,100%{opacity:1}
    50%    {opacity:.12}
  }
  /* Accessibilité : si le poste demande moins d'animation, les flèches restent
     bien visibles au lieu de se figer à moitié effacées. */
  @media (prefers-reduced-motion: reduce){ .ech-b.on .ech-ic{animation:none; opacity:1} }
  .apphead-user{display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--ink)}
  .apphead-user .rl{font-size:11px; color:var(--ink-soft); font-weight:600}
  main{flex:1 0 auto}
  .appfoot{padding:14px 22px; border-top:1px solid var(--line); background:var(--surface-2);
    display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
    font-size:11.5px; color:var(--ink-faint)}
  .appfoot a{color:var(--ink-soft); text-decoration:none}
  .appfoot a:hover{color:var(--primary)}
  @media (max-width:860px){ .apphead{display:none} .appfoot{padding:14px 16px} }
  .mobtop{display:none}
  .sidescrim{display:none}
  /* ---------- Verrouillage ---------- */
  /* ---------- APPARITION AU DÉFILEMENT ---------- */
  .sr{opacity:0;transform:translateY(14px);
    transition:opacity .5s cubic-bezier(.22,.61,.36,1), transform .5s cubic-bezier(.22,.61,.36,1)}
  .sr.sr-in{opacity:1;transform:none}
  /* Filet de sécurité : si l'animation est désactivée, rien ne doit rester caché */
  .sr-off .sr{opacity:1 !important;transform:none !important}
  @media (prefers-reduced-motion: reduce){ .sr{opacity:1 !important;transform:none !important;transition:none} }
  /* Nom de l'entreprise composé lettre par lettre */
  .bl{display:inline-block;opacity:0;filter:blur(6px);transform:translateY(10px) scale(1.08);
    animation:blIn .55s cubic-bezier(.22,.61,.36,1) both}
  .bl-sp{display:inline-block;width:.28em}
  @keyframes blIn{to{opacity:1;filter:blur(0);transform:none}}
  /* Anneau de chargement après un code accepté */
  .lock-load{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:14px;background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
    animation:llFade .25s ease-out both}
  @keyframes llFade{from{opacity:0}to{opacity:1}}
  .ll-ring{width:64px;height:64px}
  .ll-ring svg{width:100%;height:100%;animation:llTurn 1.4s linear infinite}
  .ll-bg{fill:none;stroke:rgba(14,85,97,.14);stroke-width:4}
  .ll-fg{fill:none;stroke:#0E5561;stroke-width:4;stroke-linecap:round;
    stroke-dasharray:132;stroke-dashoffset:100;animation:llDash 1.4s ease-in-out infinite}
  @keyframes llTurn{to{transform:rotate(360deg)}}
  @keyframes llDash{0%{stroke-dashoffset:125}50%{stroke-dashoffset:34}100%{stroke-dashoffset:125}}
  .ll-txt{font-size:13px;font-weight:800;color:#0E5561;letter-spacing:.01em}
  @media (prefers-reduced-motion: reduce){
    .bl{opacity:1;filter:none;transform:none;animation:none}
    .ll-ring svg,.ll-fg{animation:none}
  }

  /* ---------- ÉCRAN DE CONNEXION : vie et réactions ----------
     Tout reste sobre : ce sont des repères visuels, pas de la décoration.
     Chaque animation est coupée si la personne a demandé « moins d'animations ». */
  /* Les deux halos sont portés par l'écran entier (voir .lock::before / ::after) */
  @keyframes lkFloat{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(26px,-30px) scale(1.09)}}
  /* Le cadenas se referme à l'ouverture, puis la pastille pulse doucement */
  /* L'illustration entre en scène, puis lévite doucement pour toujours */
  .lr-art{animation:lkArt 1.1s cubic-bezier(.22,.61,.36,1) .2s both,
                    lkLev 7s ease-in-out 1.4s infinite}
  @keyframes lkArt{from{opacity:0;transform:translateY(26px) scale(.94)}to{opacity:1;transform:none}}
  @keyframes lkLev{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
  /* Logo de l'entreprise : arrivée en douceur */
  /* Logo : arrivée avec un léger rebond, puis halo qui pulse lentement autour */
  #lockMark{position:relative;animation:lkPop .85s cubic-bezier(.34,1.45,.5,1) .1s both}
  #lockMark::after{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;
    border-radius:50%;background:radial-gradient(circle,rgba(127,212,193,.35),transparent 62%);
    animation:lkHalo 4.5s ease-in-out 1s infinite;pointer-events:none}
  @keyframes lkPop{from{opacity:0;transform:scale(.78) translateY(8px)}to{opacity:1;transform:none}}
  @keyframes lkHalo{0%,100%{opacity:.25;transform:scale(.9)}50%{opacity:.6;transform:scale(1.25)}}
  /* Les éléments de la carte se posent l'un après l'autre */
  /* Les éléments de la carte se posent un à un, plus lentement et de plus loin */
  .lock-card > *{animation:lkUpSoft .8s cubic-bezier(.22,.61,.36,1) both}
  .lock-card > *:nth-child(1){animation-delay:.15s}
  .lock-card > *:nth-child(2){animation-delay:.26s}
  .lock-card > *:nth-child(3){animation-delay:.37s}
  .lock-card > *:nth-child(4){animation-delay:.48s}
  .lock-card > *:nth-child(5){animation-delay:.59s}
  .lock-card > *:nth-child(6){animation-delay:.70s}
  .lock-card > *:nth-child(7){animation-delay:.81s}
  @keyframes lkUpSoft{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
  @keyframes lkCard{from{opacity:0;transform:translateY(26px) scale(.98)}to{opacity:1;transform:none}}
  /* Bouton : léger soulèvement au survol, et voyant d'attente pendant la vérification */
  .lock .btn-unlock{position:relative;overflow:hidden}
  /* Un reflet traverse le bouton toutes les 5 secondes : il attire l'œil sans clignoter */
  .lock .btn-unlock::before{content:"";position:absolute;top:0;left:-60%;width:45%;height:100%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);
    transform:skewX(-18deg);animation:lkSheen 5s ease-in-out 1.6s infinite}
  @keyframes lkSheen{0%{left:-60%}22%{left:130%}100%{left:130%}}
  .lock .btn-unlock:hover{transform:translateY(-2px);box-shadow:0 18px 32px -14px rgba(10,65,73,.65)}
  .lock .btn-unlock.busy{pointer-events:none;color:transparent}
  .lock .btn-unlock.busy::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;
    border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:lkSpin .7s linear infinite}
  @keyframes lkSpin{to{transform:rotate(360deg)}}
  /* Code refusé : la carte fait « non », le champ vire au rouge */
  .lock-card.shake{animation:lkShake .4s cubic-bezier(.36,.07,.19,.97)}
  @keyframes lkShake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}
    30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}
  .lock input#lockPin.bad{border-color:#C0392B;box-shadow:0 0 0 3px rgba(192,57,43,.16);background:#FDECEA}
  /* Code accepté : la carte s'efface vers le haut */
  .lock-card.ok{animation:lkOut .32s ease-in forwards}
  @keyframes lkOut{to{opacity:0;transform:translateY(-14px) scale(.98)}}
  /* Empreinte : l'icône respire pour montrer qu'elle attend le doigt */
  .lock .btn-bio svg{animation:lkBreath 2.4s ease-in-out infinite}
  @keyframes lkBreath{0%,100%{opacity:.75}50%{opacity:1}}
  @media (prefers-reduced-motion: reduce){
    .lock,.lock.on,.lock::after,.lock::before,.lr-art,#lockMark,#lockMark::after,.lock-shell,.lock-card,.lock-card > *,
    .lock .btn-bio svg,.lock-card.shake,.lock-card.ok,.lock .btn-unlock::before,
    .lock.on .lr-inner,.lock.on .lr-t,.lock.on .lr-s,.lock.on .lr-pts li,.lr-pts li::before,
    .lock-join-box{animation:none !important}
    /* le voyant d'attente reste tournant : c'est une information, pas une décoration */
    .lock .btn-unlock:hover,.lock .btn-bio:hover,.lock input#lockPin:focus{transform:none}
  }
  /* L'écran de connexion s'anime à l'ouverture, sans attendre de défilement */
  .lock.on .lr-inner{animation:lkIn .95s cubic-bezier(.22,.61,.36,1) .15s both}
  .lock.on .lr-t{animation:lkUpSoft .8s cubic-bezier(.22,.61,.36,1) .35s both}
  .lock.on .lr-s{animation:lkUpSoft .8s cubic-bezier(.22,.61,.36,1) .48s both}
  .lock.on .lr-pts li{animation:lkUp .7s cubic-bezier(.22,.61,.36,1) both}
  .lock.on .lr-pts li:nth-child(1){animation-delay:.62s}
  .lock.on .lr-pts li:nth-child(2){animation-delay:.76s}
  .lock.on .lr-pts li:nth-child(3){animation-delay:.90s}
  /* Les pastilles des arguments pulsent l'une après l'autre, discrètement */
  .lr-pts li::before{animation:lkDot 3.6s ease-in-out infinite}
  .lr-pts li:nth-child(2)::before{animation-delay:.5s}
  .lr-pts li:nth-child(3)::before{animation-delay:1s}
  @keyframes lkDot{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.35);opacity:1}}
  @keyframes lkIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
  @keyframes lkUp{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion: reduce){
    .lock.on .lock-card,.lock.on .lr-inner,.lock.on .lr-pts li{animation:none}
  }

  /* ---------- ÉCRAN DE CONNEXION : deux panneaux ---------- */
  /* UN SEUL FOND CONTINU : la coupure entre les deux moitiés disparaît. Le dégradé et
     les halos appartiennent désormais à l'écran entier ; la carte de saisie flotte
     par-dessus, sans bord ni changement de couleur derrière elle. */
  /* Le fond lui-même respire : un dégradé plus large qui se déplace très lentement
     (40 s par cycle). On ne le « voit » pas bouger, mais l'écran cesse d'être figé. */
  .lock{position:fixed; inset:0; z-index:100; color:var(--ink); display:none; overflow:hidden;
    background:linear-gradient(125deg,#FFFFFF 0%, #F7FAFA 30%, #EFF5F5 55%, #F4FAF9 78%, #FFFFFF 100%);
    background-size:220% 220%; animation:lkBg 40s ease-in-out infinite}
  @keyframes lkBg{0%,100%{background-position:0% 40%}50%{background-position:100% 60%}}
  @keyframes lkFade{from{opacity:0}to{opacity:1}}
  .lock::before{content:"";position:absolute;width:640px;height:640px;border-radius:50%;pointer-events:none;
    background:radial-gradient(circle,rgba(14,85,97,.09),transparent 62%);top:-220px;right:-180px;
    animation:lkFloat 26s ease-in-out infinite reverse}
  .lock::after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;pointer-events:none;
    background:radial-gradient(circle,rgba(127,212,193,.16),transparent 62%);bottom:-200px;left:-150px;
    animation:lkFloat 22s ease-in-out infinite}
  /* Le couple « carte + illustration » est traité comme un seul bloc CENTRÉ sur l'écran,
     au lieu de deux moitiés collées aux bords. Il grandit avec la fenêtre mais s'arrête
     à une largeur confortable pour rester lisible sur un grand écran. */
  .lock.on{animation:lkFade .6s ease-out both;
    display:flex; align-items:center; justify-content:center;
    padding:clamp(16px,4vh,48px) clamp(16px,4vw,56px)}
  /* LE PANNEAU UNIQUE : c'est lui qui porte le fond, le bord et l'ombre. Les deux
     moitiés n'ont plus d'apparence propre — d'où une composition parfaitement uniforme. */
  .lock-shell{position:relative;z-index:1;display:grid;
    grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);
    align-items:stretch; width:min(1060px,100%); border-radius:26px; overflow:hidden;
    background:rgba(255,255,255,.80);border:1px solid rgba(10,65,73,.09);
    -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
    box-shadow:0 34px 80px -34px rgba(10,65,73,.32), 0 2px 8px rgba(10,65,73,.05);
    animation:lkCard .9s cubic-bezier(.22,.61,.36,1) both}
  /* Un filet vertical très pâle, à peine perceptible : il structure sans couper */
  .lock-sep{background:linear-gradient(180deg,transparent,rgba(10,65,73,.10) 18%,rgba(10,65,73,.10) 82%,transparent)}
  .lock-left{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;
    padding:clamp(28px,3.4vw,44px);overflow-y:auto;background:transparent}
  /* Carte translucide : on devine le fond au travers, donc aucune rupture visible */
  /* La carte n'a plus d'apparence propre : elle n'est qu'une zone de contenu
     à l'intérieur du panneau. Plus de bord dans le bord, plus d'ombre sur l'ombre. */
  .lock-card{width:min(420px,100%);text-align:center;color:var(--ink);
    background:transparent;border:0;padding:0;box-shadow:none}
  .lock .mark{width:64px;height:64px}
  #lockMark{display:flex;justify-content:center;margin-bottom:12px}
  /* Panneau de droite : plus aucun fond propre, il partage celui de l'écran */
  .lock-right{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;
    padding:clamp(28px,3.4vw,44px);color:var(--ink);
    background:linear-gradient(160deg,rgba(14,85,97,.05),rgba(127,212,193,.09))}
  .lr-inner{position:relative;max-width:480px;text-align:center}
  .lr-art{width:min(400px,88%);height:auto;display:block;margin:0 auto 26px}
  .lr-t{font-size:clamp(24px,2.4vw,30px);font-weight:900;letter-spacing:-.02em;color:var(--ink)}
  .lr-s{margin-top:8px;font-size:15px;color:var(--ink-soft);font-weight:600}
  .lr-pts{list-style:none;margin:24px 0 0;padding:0;display:inline-flex;flex-direction:column;gap:11px;text-align:left}
  .lr-pts li{position:relative;padding-left:26px;font-size:14px;font-weight:600;color:var(--ink-soft);line-height:1.5}
  .lr-pts li::before{content:"";position:absolute;left:6px;top:8px;width:8px;height:8px;border-radius:50%;background:#0E5561}
  .brandimg{display:inline-flex;border-radius:10px;overflow:hidden;background:#fff;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.15)}
  .brandimg img{width:100%;height:100%;object-fit:contain}
  .lock-brand{font-size:23px;font-weight:900;color:var(--ink);letter-spacing:-.02em}
  .side-reseller{font-size:10.5px;color:#88AEB2;text-align:center;padding:8px 4px 2px;line-height:1.4}
  .side-whats{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin-top:8px;
    background:rgba(37,211,102,.16);border:1px solid rgba(37,211,102,.4);color:#DFF6E7;
    padding:10px;border-radius:10px;font-weight:600;font-size:13.5px;text-decoration:none}
  .side-whats:hover{background:rgba(37,211,102,.28)}
  .side-whats svg{width:17px;height:17px;color:#25D366}
  .icb.wa{color:#1FA855}
  .icb.wa:hover{background:rgba(37,211,102,.14);color:#1FA855}
  .side-reseller a{color:#A9CDD1;text-decoration:none}
  .lock-forgot{display:block;margin:12px auto 0;background:transparent;border:0;color:#0E5561;padding:5px 4px;
    font-weight:800;font-size:12.5px;cursor:pointer;text-decoration:underline;transition:color .15s}
  .lock-forgot:hover{color:#0A4149}
  .lock-join-toggle{margin-top:6px;background:transparent;border:0;color:#0E5561;padding:6px 4px;font-weight:700;font-size:12.5px;cursor:pointer;text-decoration:underline}
  .lock-join-toggle:hover{color:#0A4149}
  .lock-join-box{margin-top:12px;width:100%;text-align:left}
  .lock-join-box textarea{width:100%;resize:vertical;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);padding:10px;font-size:12px;font-family:ui-monospace,Menlo,Consolas,monospace}
  .lock-join-box .join-short{width:100%;margin-bottom:8px;padding:11px 13px;border-radius:11px;border:1px solid var(--line);
    background:#fff;color:var(--ink);font-size:13.5px;letter-spacing:normal;text-align:left}
  .lock-join-box summary{font-size:12px;color:var(--ink-soft);cursor:pointer;margin:4px 0 6px}
  .lock-reseller{margin-top:16px;font-size:11px;color:var(--ink-soft)}  .lock-reseller a{color:#0E5561}
  .lock-ver{position:absolute;top:12px;right:14px;z-index:2;font-size:11px;font-weight:700;color:rgba(10,65,73,.42);letter-spacing:.5px}
  .welcome{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;
    background:radial-gradient(120% 120% at 50% 30%, var(--primary) 0%, var(--primary-d) 70%, #06232a 100%);
    color:#fff;text-align:center;overflow:hidden}
  .welcome.on{display:flex;animation:welIn .5s cubic-bezier(.2,.8,.2,1)}
  .welcome.out{animation:welOut .7s ease forwards}
  @keyframes welIn{from{opacity:0}to{opacity:1}}
  @keyframes welOut{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.04)}}
  /* Deux halos dérivent lentement en fond : l'écran respire au lieu d'être figé */
  .wel-glow{position:absolute;border-radius:50%;pointer-events:none}
  .wel-glow.g1{width:620px;height:620px;top:-200px;right:-180px;
    background:radial-gradient(circle,rgba(127,212,193,.22),transparent 62%);animation:welFloat 13s ease-in-out infinite}
  .wel-glow.g2{width:520px;height:520px;bottom:-190px;left:-160px;
    background:radial-gradient(circle,rgba(18,112,126,.35),transparent 62%);animation:welFloat 17s ease-in-out infinite reverse}
  @keyframes welFloat{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(28px,-26px) scale(1.1)}}
  .wel-inner{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;padding:24px;
    animation:welRise .7s cubic-bezier(.2,.8,.2,1)}
  @keyframes welRise{from{transform:translateY(20px) scale(.95);opacity:0}to{transform:none;opacity:1}}
  /* Le logo arrive avec un rebond, et un anneau se propage autour */
  .wel-mark{position:relative;display:grid;place-items:center;animation:welPop .8s cubic-bezier(.34,1.45,.5,1) both}
  @keyframes welPop{from{opacity:0;transform:scale(.7) translateY(10px)}to{opacity:1;transform:none}}
  .wel-ring{position:absolute;width:84px;height:84px;border-radius:22px;border:2px solid rgba(127,212,193,.55);
    animation:welRing 2.6s cubic-bezier(.22,.61,.36,1) .5s infinite}
  @keyframes welRing{0%{opacity:.8;transform:scale(1)}70%,100%{opacity:0;transform:scale(1.9)}}
  .welcome .mark,.welcome .brandimg{width:84px;height:84px;box-shadow:0 10px 40px rgba(0,0,0,.35)}
  .welcome .brandimg{border-radius:20px}
  .wel-hi{font-size:20px;color:#BFE0E4;font-weight:500;letter-spacing:.01em;margin-top:6px;
    animation:welUp .6s cubic-bezier(.22,.61,.36,1) .34s both}
  @keyframes welUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  /* Le nom se compose lettre par lettre */
  .wel-name{font-size:40px;font-weight:800;letter-spacing:-.02em;line-height:1.05}
  .wel-name .wl{display:inline-block;opacity:0;filter:blur(7px);transform:translateY(12px) scale(1.1);
    background:linear-gradient(180deg,#fff,#CDE9EC);-webkit-background-clip:text;background-clip:text;color:transparent;
    animation:welLetter .55s cubic-bezier(.22,.61,.36,1) both}
  .wel-name .wl-sp{display:inline-block;width:.3em}
  @keyframes welLetter{to{opacity:1;filter:blur(0);transform:none}}
  .wel-sub{font-size:14px;color:#9BC3C8;letter-spacing:.02em;text-transform:uppercase;font-weight:600;
    animation:welUp .6s cubic-bezier(.22,.61,.36,1) .9s both}
  /* Barre de progression : on voit combien de temps il reste avant l'ouverture */
  .wel-bar{width:150px;height:3px;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden;margin-top:6px;
    animation:welUp .5s ease 1.05s both}
  .wel-bar i{display:block;height:100%;width:100%;border-radius:99px;background:linear-gradient(90deg,#7FD4C1,#fff);
    transform-origin:left;animation:welProg 2.2s linear .5s both}
  @keyframes welProg{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  @media (prefers-reduced-motion: reduce){
    .wel-glow,.wel-mark,.wel-ring,.wel-hi,.wel-sub,.wel-bar,.wel-bar i,.wel-name .wl{animation:none}
    .wel-name .wl{opacity:1;filter:none;transform:none}
  }
  @media (max-width:520px){.wel-name{font-size:32px}.welcome .mark,.welcome .brandimg{width:72px;height:72px}}
  .theme-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .theme-swatches{display:flex;gap:8px;flex-wrap:wrap}
  .theme-sw{width:28px;height:28px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--line-strong);cursor:pointer}
  .theme-sw.on{box-shadow:0 0 0 2px var(--ink)}
  .theme-custom{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft)}
  .theme-custom input{width:34px;height:28px;padding:0;border:1px solid var(--line-strong);border-radius:7px;background:none;cursor:pointer}
  /* Assistant de configuration */
  .wiz{position:fixed;inset:0;z-index:110;background:linear-gradient(160deg,var(--primary),var(--primary-d));
    display:none;align-items:center;justify-content:center;padding:20px}
  .wiz.on{display:flex}
  .wiz-card{background:var(--surface);width:100%;max-width:460px;max-height:92vh;overflow:auto;border-radius:20px;
    box-shadow:var(--shadow-lg);padding:24px 24px 18px;animation:rise .3s cubic-bezier(.2,.8,.2,1)}
  .wiz-steps{display:flex;gap:6px;margin-bottom:20px}
  .wiz-dot{flex:1;height:5px;border-radius:3px;background:var(--line)}
  .wiz-dot.on{background:var(--primary)}
  .wiz-body h2{font-size:20px;margin-bottom:4px}
  .wiz-body .wiz-sub{color:var(--ink-soft);font-size:13.5px;margin-bottom:16px}
  .wiz-join{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}
  .wiz-join-toggle{width:100%;background:rgba(14,85,97,.07);border:1px solid var(--line);border-radius:11px;padding:11px 14px;font-weight:800;font-size:13.5px;color:var(--primary);cursor:pointer}
  .wiz-join-toggle:hover{background:rgba(14,85,97,.12)}
  .wiz-join textarea.fld{width:100%;resize:vertical;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
  .wiz-body label.lbl{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:700;margin:12px 0 6px}
  .wiz-body .fld{width:100%}
  .wiz-foot{display:flex;gap:10px;margin-top:20px}
  .wiz-foot .btn-primary{flex:1}
  .wiz-err{margin:8px 0 0}
  .wiz-caisses{display:flex;flex-direction:column;gap:7px}
  .wiz-caisse{display:grid;grid-template-columns:1fr 120px 32px;gap:8px;align-items:center}
  .wiz-logo-row{display:flex;align-items:center;gap:14px;margin-top:6px}
  .lock h2{margin:8px 0 0;font-size:24px;font-weight:900;letter-spacing:-.02em;color:var(--ink)}
  .lock p{color:var(--ink-soft);font-size:14px;margin:6px 0 0;font-weight:600}
  /* Champ du code avec son œil de vérification */
  .lk-field{position:relative;display:flex;align-items:center}
  .lk-eye{position:absolute;right:8px;width:38px;height:38px;border:0;border-radius:11px;cursor:pointer;
    display:grid;place-items:center;background:transparent;color:var(--ink-soft);
    transition:background .15s, color .15s}
  .lk-eye:hover{background:var(--surface-2);color:#0E5561}
  .lk-eye svg{width:20px;height:20px;grid-area:1/1}
  .lk-eye .eye-off{display:none}
  .lk-eye.on{color:#0E5561}
  .lk-eye.on .eye-on{display:none}
  .lk-eye.on .eye-off{display:block}
  .lock input#lockPin{padding-right:52px !important}
  .lock input#lockPin{width:100%;margin-top:20px;text-align:center;font-size:28px;letter-spacing:12px;padding:16px;border-radius:14px;
    border:1px solid var(--line);background:#fff;color:var(--ink);
    transition:border-color .15s, box-shadow .15s, background .15s}
  .lock input#lockPin::placeholder{color:rgba(10,65,73,.3)}
  .lock input#lockPin:focus{outline:none;border-color:#0E5561;box-shadow:0 0 0 4px rgba(14,85,97,.13);background:#fff;
    transform:translateY(-1px)}
  .lock input#lockPin{will-change:transform}
  .btn-bio{display:inline-flex;align-items:center;justify-content:center;gap:9px;margin-top:10px;padding:12px 22px;border-radius:12px;
    border:1px solid var(--line);background:var(--surface);color:#0E5561;font-size:13.5px;font-weight:800;cursor:pointer}
  .lock .btn-bio{width:100%;border-color:var(--line);background:#fff;color:#0E5561;padding:14px 22px;font-size:14px;
    border-radius:14px;transition:background .2s, transform .15s, box-shadow .2s}
  .lock .btn-bio:hover{background:var(--surface-2);transform:translateY(-2px);box-shadow:0 12px 24px -16px rgba(10,65,73,.5)}
  /* Uniformité : mêmes arrondis et mêmes transitions sur tous les éléments de la carte */
  .lock-join-box .join-short, .lock-join-box textarea{border-radius:14px;transition:border-color .2s, box-shadow .2s}
  .lock-join-box .join-short:focus, .lock-join-box textarea:focus{outline:none;border-color:#0E5561;
    box-shadow:0 0 0 4px rgba(14,85,97,.12)}
  .lock-join-toggle{transition:color .2s}
  .lock-join-box{animation:lkUpSoft .55s cubic-bezier(.22,.61,.36,1) both}
  .btn-bio svg{width:22px;height:22px}
  .btn-bio:disabled{opacity:.6}
  .bio-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px}
  .lock .btn-unlock{width:100%;margin-top:16px;background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;border:none;
    font-weight:800;font-size:16px;padding:16px 30px;border-radius:14px;cursor:pointer;
    box-shadow:0 12px 26px -12px rgba(10,65,73,.55);transition:filter .15s, transform .1s}
  .lock .btn-unlock:hover{filter:brightness(1.08)}
  .lock .btn-unlock:active{transform:translateY(1px)}
  .lock .lerr{color:#C0392B;font-size:12.5px;min-height:16px;margin-top:8px;font-weight:700}
  @media (max-width:960px){
    /* Une seule colonne : le panneau garde son apparence, la partie identité disparaît */
    .lock.on{padding:20px}
    .lock-shell{grid-template-columns:minmax(0,1fr);width:min(520px,100%)}
    .lock-right,.lock-sep{display:none}
    .lock-card{width:100%}
  }
  @media (max-width:860px){
    .sidebar{position:fixed; left:0; top:0; bottom:0; width:266px; transform:translateX(-100%);
      transition:transform .25s ease; box-shadow:0 0 44px rgba(0,0,0,.32);
      padding-top:calc(18px + env(safe-area-inset-top,0))}
    .sidebar.open{transform:none}
    .content{margin-left:0}      /* tiroir : le contenu occupe toute la largeur */
    .sidescrim{display:block; position:fixed; inset:0; background:rgba(16,39,46,.5); z-index:60;
      border:none; opacity:0; pointer-events:none; transition:opacity .25s}
    .sidescrim.on{opacity:1; pointer-events:auto}
    :root{--stick-top:calc(60px + env(safe-area-inset-top,0px))}   /* barre mobile */
    /* ⚠ La barre du haut était « collante » : la règle anti-défilement latéral posée
       sur la page annule cet effet sur plusieurs navigateurs, et la barre disparaissait
       en défilant. Elle est désormais FIXÉE à la fenêtre, comme la colonne et l'en-tête
       d'ordinateur. Le contenu reçoit en contrepartie la hauteur correspondante. */
    .mobtop{display:flex; align-items:center; gap:12px; background:var(--primary); color:#fff;
      padding:calc(11px + env(safe-area-inset-top,0)) 16px 11px;
      position:fixed; left:0; right:0; top:0; z-index:60;
      box-shadow:0 4px 14px rgba(10,66,76,.25)}
    :root{--mobtop-h:60px}
    .content>main{padding-top:calc(var(--mobtop-h) + env(safe-area-inset-top,0)) !important}
    .burger{background:rgba(255,255,255,.14); border:none; color:#fff; width:38px; height:38px;
      border-radius:9px; display:grid; place-items:center}
    .burger svg{width:20px; height:20px}
    .mobtop-brand b{font-size:16px; color:#fff}
    .treso-m{margin-left:auto; font-weight:800; font-size:16px; color:#fff}
    main{padding:16px 16px 60px}
    /* La bande des trésoreries se cale sous la barre du haut, pas sous l'en-tête d'ordinateur */
    #view-dashboard .dash-treso{top:calc(var(--mobtop-h) + env(safe-area-inset-top,0))}
    /* Les pastilles d'alerte trouvent leur place dans la barre du haut */
    /* La barre du haut est étroite : le nom se raccourcit, les pastilles se réduisent
       à leur icône et à leur nombre, et rien ne peut être poussé hors de l'écran. */
    .mobtop{flex-wrap:nowrap;overflow:hidden}
    .mobtop-brand{min-width:0;overflow:hidden}
    .mobtop-brand b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34vw}
    .treso-m{margin-left:auto;flex:none;font-size:14px}
    .mobtop .recu-badge,.mobtop .dem-badge{flex:none;margin-left:6px;padding:5px 9px;font-size:11px;gap:5px}
    .mobtop .recu-badge b,.mobtop .dem-badge b{font-size:12px}
    .mobtop .rb-t,.mobtop .db-t{display:none}         /* on garde l'icône et le nombre */
    .mobtop .rb-ic{width:20px;height:20px}
    .mobtop .rb-ic svg{width:12px;height:12px}
    .mobtop .rb-ic i{min-width:14px;height:14px;font-size:9px;top:-3px;right:-4px}
    /* ── Boutons de l'en-tête déplacés dans la barre mobile (v415) ──────────────
       Sous 860 px l'en-tête d'ordinateur est masqué : « Mise à jour données », les
       transferts reçus et le voyant de synchronisation disparaissaient avec lui.
       Ils sont maintenant déplacés ici. Sur ce fond foncé, ils passent en blanc
       translucide. Ce sont les MÊMES boutons, pas des copies. */
    .mobtop .apphead-right{flex:0 0 auto;gap:8px;margin-left:6px}
    .mobtop .apphead-date,.mobtop .apphead-user{display:none}   /* pas la place ici */
    .mobtop .head-sync{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32);
      color:#fff;padding:7px 9px}
    .mobtop .head-sync:hover{background:rgba(255,255,255,.26)}
    .mobtop .head-sync svg{color:#fff}
    .mobtop .head-sync span{display:none}      /* l'icône suffit : la barre est étroite */
    .mobtop .org-sw{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32);color:#fff}
    .mobtop .org-sw:hover{background:rgba(255,255,255,.26)}
    .mobtop .ech-b.on{border-color:#FFC9C2;color:#FFDFDB}
    .mobtop .ech-badge{box-shadow:0 0 0 2px var(--primary),0 1px 3px rgba(0,0,0,.3)}
    .mobtop .sync-dot{box-shadow:0 0 0 3px rgba(255,255,255,.22)}
    /* Ordre des priorités quand la barre est trop étroite : les boutons restent
       entiers (la barre coupe ce qui dépasse, et ils sont à droite), le MONTANT
       reste entier lui aussi — c'est le chiffre qu'on vient chercher — et c'est le
       nom de l'entreprise qui se raccourcit, puis s'efface sur les écrans les plus
       étroits. Il reste lisible dans le menu latéral. */
    .mobtop{gap:10px}
    .mobtop .apphead-right{gap:7px}
    .mobtop-brand{flex:1 1 auto;min-width:0}
    .mobtop-brand b{max-width:none}
    .mobtop.serre .mobtop-brand{display:none}   /* posée par mobtopCaler() */
    .treso-m{flex:0 0 auto;margin-left:auto;white-space:nowrap}
  }

  main{max-width:100%; margin:0 auto; padding:22px 28px 60px}
  .view{display:none; animation:fade .25s ease}
  .view.on{display:block}
  @keyframes fade{from{opacity:0; transform:translateY(4px)}to{opacity:1; transform:none}}
  @media (prefers-reduced-motion:reduce){.view,.btn-new{animation:none;transition:none}}

  .eyebrow{font-size:13px; text-transform:uppercase; letter-spacing:.1em; color:var(--ink); font-weight:800; margin:0 0 12px}

  /* ---------- Stat strip ---------- */
  /* ── BANDE DÉFILANTE DES COMPTEURS (v414 ; deux modes en v417) ─────────────
     Les compteurs étaient des carrés dans une barre à faire glisser à la main :
     au-delà de cinq ou six, les derniers n'étaient jamais lus. Ils passent en bande
     continue — tout finit par passer devant les yeux sans rien toucher.
     DEUX MODES, au choix du gérant, retenu par l'appareil :
       • Automatique : la bande avance seule, s'arrête sous la souris, et se laisse
         pousser à la main — elle reprend sa marche 2,5 s après qu'on l'a lâchée ;
       • Manuel : elle ne bouge que si on la pousse.
     ⚠ Dans les deux cas la bande est une zone défilante ORDINAIRE, et le mouvement
     automatique déplace sa barre de défilement (scrollLeft) au lieu de transformer
     la piste : une piste transformée ignore le doigt, et les deux mouvements se
     combattraient. Le contenu est écrit DEUX fois ; dès qu'on dépasse une copie on
     recule d'une copie, et comme le contenu est identique le saut ne se voit pas. */
  /* Le sélecteur est posé À CÔTÉ de la bande, pas dessus : en la survolant il
     masquerait en permanence un compteur, puisque le contenu défile sous lui. */
  .strip-zone{display:flex;align-items:center;gap:9px;margin-bottom:18px}
  .strip{--g:9px;display:block;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;max-width:100%;
    cursor:grab;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
    scrollbar-width:none;-ms-overflow-style:none;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent);
            mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent)}
  .strip::-webkit-scrollbar{height:0;width:0;display:none}
  .strip:active{cursor:grabbing}
  .strip-track{display:flex;width:max-content;padding:4px 0}
  .strip-run{display:flex;gap:var(--g);padding-right:var(--g);flex:0 0 auto}
  /* Tout tient dans la largeur : rien à faire défiler, ni à la main ni tout seul. */
  .strip.fixe{cursor:default;-webkit-mask-image:none;mask-image:none}
  .strip.fixe .strip-run+.strip-run{display:none}
  /* Dans la bande, un compteur garde sa largeur : il ne s'étire plus pour remplir. */
  .pill{
    flex:1 1 0;min-width:100px;
    position:relative; overflow:hidden; background:var(--surface); border:1px solid var(--line); border-radius:11px;
    padding:8px 10px; box-shadow:0 6px 16px -14px rgba(16,39,46,.38); transition:transform .18s ease, box-shadow .18s ease
  }
  .pill::before{content:""; position:absolute; inset:0; background:var(--c,transparent); opacity:.13; pointer-events:none}
  .pill > *{position:relative}
  .pill:hover{transform:translateY(-2px); box-shadow:0 10px 20px -14px rgba(16,39,46,.46)}
  .pill .k{font-size:9.5px; color:var(--ink); letter-spacing:.02em; font-weight:900; line-height:1.25; display:flex; align-items:center; gap:5px; text-transform:uppercase}
  .pill .k::before{content:""; width:7px;height:7px;border-radius:50%; background:var(--c,var(--ink-faint)); flex:0 0 auto; box-shadow:0 0 7px var(--c,transparent)}
  .pill .v{font-size:16px; font-weight:900; margin-top:3px; letter-spacing:-.02em; color:var(--c,var(--ink));
    text-shadow:0 0 10px color-mix(in srgb, var(--c,#0E5561) 45%, transparent)}
  .strip .pill{flex:0 0 auto;min-width:0;white-space:nowrap}
  .strip .pill:hover{transform:none}
  /* Le sélecteur de mode, posé sur le bord droit de la bande */
  .strip-mode{flex:0 0 auto;
    display:inline-flex;align-items:center;gap:5px;padding:6px 10px;cursor:pointer;
    border:1px solid var(--line);border-radius:999px;background:var(--surface);
    color:var(--ink-soft);font-size:10.5px;font-weight:900;letter-spacing:.04em;
    text-transform:uppercase;box-shadow:0 4px 14px -8px rgba(16,39,46,.6);
    transition:color .15s,border-color .15s,background .15s}
  .strip-mode svg{width:13px;height:13px;flex:none}
  .strip-mode:hover{color:var(--ink);border-color:var(--line-strong);background:var(--surface-2)}
  .strip-mode.auto{color:#0E5561;border-color:rgba(14,85,97,.35)}
  .strip-mode[hidden]{display:none}
  @media (max-width:520px){ .strip-mode .t{display:none} .strip-mode{padding:6px} }
  /* ── Bulle « montant en toutes lettres » (v424) ───────────────────────────
     Posée sous le champ actif, jamais dans le flux : aucune mise en page n'est
     déformée. La petite pointe rattache la bulle à son champ. */
  .enlettres{position:fixed;z-index:95;display:none;max-width:min(340px,86vw);
    padding:8px 12px;border-radius:11px;pointer-events:none;
    background:#10272E;color:#fff;font-size:12.5px;font-weight:800;line-height:1.4;
    letter-spacing:.01em;box-shadow:0 12px 28px -12px rgba(16,39,46,.75);
    opacity:0;transform:translateY(-4px);transition:opacity .13s ease,transform .13s ease}
  .enlettres.on{display:block;opacity:1;transform:none}
  .enlettres i{position:absolute;top:-5px;left:14px;width:10px;height:10px;
    background:#10272E;transform:rotate(45deg);border-radius:2px}
  @media (prefers-reduced-motion: reduce){ .enlettres{transition:none} }
  /* ---------- Caisse cards ---------- */
  .cards{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,auto);grid-auto-columns:minmax(168px,1fr);overflow-x:auto;gap:11px;padding-bottom:6px;scroll-snap-type:x proximity;scrollbar-width:thin;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;max-width:100%}
  .caisse{
    min-width:0;scroll-snap-align:start;
    position:relative; overflow:hidden; background:var(--surface); border:1px solid var(--line); border-radius:13px;
    padding:9px 11px 9px; box-shadow:0 8px 18px -14px rgba(16,39,46,.4);
    transition:transform .18s ease, box-shadow .18s ease;
  }
  .caisse::before{content:""; position:absolute; inset:0; background:var(--c); opacity:.09; pointer-events:none}
  .caisse > *{position:relative}
  .caisse:hover{transform:translateY(-4px); box-shadow:0 22px 38px -16px rgba(16,39,46,.52)}
  .caisse-h{display:flex; align-items:center; gap:7px; margin-bottom:6px}
  .chip{
    display:inline-flex; align-items:center; height:19px; padding:0 8px; border-radius:999px;
    font-size:10.5px; font-weight:700; background:var(--c); color:var(--ct); letter-spacing:.01em; flex:none
  }
  .caisse-name{font-size:11.5px; color:var(--ink-soft); font-weight:600}
  .caisse .bal{font-size:19px; font-weight:900; margin:1px 0 2px; letter-spacing:-.02em}
  .caisse .bal.neg{color:var(--danger)}
  .caisse .flow{font-size:10.5px; color:var(--ink-soft); display:flex; gap:10px; margin-top:6px;
    padding-top:6px; border-top:1px dashed var(--line)}
  .caisse .flow b{font-weight:700; color:var(--ink)}
  .up{color:var(--paid)} .down{color:var(--fail)}
  .caisse.flash{animation:flash 1.1s ease}
  @keyframes flash{0%{box-shadow:0 0 0 0 rgba(14,85,97,.0)}18%{box-shadow:0 0 0 4px rgba(14,85,97,.18)}100%{box-shadow:var(--shadow)}}

  /* ---------- Tableau de bord responsive ---------- */
  .dash-cols{display:contents} /* par défaut : empilement identique à avant */
  /* ORDINATEUR : exploiter la largeur de l'écran */
  @media (min-width:1100px){
    #view-dashboard .dash-treso{padding:20px 26px}
    #view-dashboard .dtreso-lab{font-size:11.5px}
    #view-dashboard .dtreso-val{font-size:36px}
    #view-dashboard .dtreso-sub{font-size:12.5px}
    #view-dashboard .dtm-val{font-size:24px}
    #view-dashboard .dtreso-master{padding:11px 15px}
    /* Empilement simple (et non plus une grille à zones) : c'est ce qui permet à la bande
       des trésoreries de rester COLLÉE EN HAUT pendant le défilement — un élément de grille
       ne peut pas « voyager » hors de sa zone. Les rectangles des caisses gardent leur
       propre rangée pleine largeur ; Dettes et Contrôle passent côte à côte en dessous. */
    #view-dashboard.on{display:flex;flex-direction:column;gap:18px;align-items:stretch}
    #view-dashboard .dash-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
    /* Sur grand écran le tableau de bord est une GRILLE à zones nommées : sans zone déclarée,
       la ligne d'alerte était placée automatiquement n'importe où. La rangée « alert » n'existe
       que lorsqu'il y a un retard (classe posée par le rendu), sinon elle laisserait un vide. */
    #view-dashboard .dash-alert{margin:0}
    /* Bande des trésoreries figée sous l'en-tête : le tableau de bord défile DESSOUS.
       Comme pour l'en-tête, la position collante ne tenait pas ; on la fige à la fenêtre
       et on réserve sa hauteur juste en dessous (variable --treso-h, mesurée à l'écran). */
    #view-dashboard .dash-treso{position:fixed;top:var(--stick-top,52px);left:calc(252px + 22px);right:22px;
      z-index:22;margin:0;
      box-shadow:0 18px 38px -18px rgba(14,85,97,.55), 0 10px 22px -16px rgba(16,39,46,.45)}
    #view-dashboard.on{padding-top:calc(var(--treso-h,150px) + 16px)}
    #view-dashboard .strip{--g:11px;margin-bottom:0}
    #view-dashboard .pill{min-width:112px;padding:9px 11px}
    #view-dashboard .pill .k{font-size:10px}
    #view-dashboard .pill .v{font-size:17px}
    #view-dashboard .eyebrow{margin:0}
    #view-dashboard .cards{gap:12px;grid-auto-columns:minmax(176px,1fr);grid-template-rows:auto}
    /* Les deux colonnes s'étirent à la MÊME hauteur : les diagrammes placés sous les
       dettes comblent le vide au lieu de laisser un blanc face au Contrôle. */
    #view-dashboard #dettes{min-width:0;align-self:stretch;display:flex;flex-direction:column}
    #view-dashboard #controle{min-width:0;margin:0;align-self:stretch;display:flex;flex-direction:column}
    #view-dashboard #controle .panel{margin-top:0}
  }
  /* TRÈS GRAND ÉCRAN */
  @media (min-width:1500px){
    main{padding:26px 40px 70px}
    #view-dashboard .cards{gap:13px;grid-auto-columns:minmax(184px,1fr)}
    #view-dashboard .dtreso-val{font-size:40px}
  }
  /* TÉLÉPHONE : compact, lisible, sans débordement */
  @media (max-width:720px){
    #view-dashboard .dash-treso{padding:20px 18px;border-radius:20px}
    /* Téléphone : bande figée elle aussi, mais en version compacte (le détail dépliable
       et le total master ne suivent pas le défilement, sinon l'écran serait plein). */
    /* overflow:auto autorisait AUSSI le défilement latéral : sur Android, la bande
       glissait sur les côtés. On ne garde que le défilement vertical. */
    #view-dashboard.on{padding-top:0}   /* sur téléphone la bande reste dans le flux */
    #view-dashboard .dash-treso{position:sticky;top:var(--stick-top);left:auto;right:auto;z-index:20;max-height:44vh;
      overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}
    #view-dashboard .dtreso-val{font-size:34px}
    #view-dashboard .strip{--g:7px}
    #view-dashboard .pill{padding:7px 9px;min-width:92px}
    #view-dashboard .pill .v{font-size:14px}
    #view-dashboard .cards{gap:9px;scroll-snap-type:x proximity;grid-auto-columns:min(168px,54vw)}
    #view-dashboard .caisse .bal{font-size:17px}
    #view-dashboard .eyebrow{font-size:11.5px;letter-spacing:.07em}
  }
  @media (max-width:400px){
    #view-dashboard .dtreso-val{font-size:29px}
    #view-dashboard .strip{--g:8px}
  }

  /* ---------- Journal ---------- */
  .filters{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; align-items:center}
  .filters input,.filters select{
    border:1px solid var(--line-strong); background:var(--surface); border-radius:var(--r-sm);
    padding:9px 11px; color:var(--ink); min-width:0
  }
  .filters .search{flex:1; min-width:180px}
  .btn-ghost{background:var(--surface); border:1px solid var(--line-strong); color:var(--ink);
    padding:9px 14px; border-radius:var(--r-sm); font-weight:600; font-size:14px}
  .btn-ghost:hover{border-color:var(--primary); color:var(--primary)}

  .txtable-wrap{overflow:auto;max-height:calc(100dvh - 210px);border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}
  .tx-more{display:flex;justify-content:center;margin:12px 0 4px}
  .btn-more{padding:11px 24px;border:1px solid var(--line);background:var(--surface);color:var(--primary);font-weight:800;border-radius:11px;cursor:pointer;font-size:14px}
  .btn-more:hover{background:var(--surface-2)}
  @media (max-width:720px){
    #txwrap .txtable, #gxTxList .txtable-wrap{overflow:visible;max-height:none;border:none;box-shadow:none;background:none;border-radius:0}
    #txwrap .txtable, #gxTxList .txtable{min-width:0;width:100%;display:block;font-size:13.5px}
    #txwrap .txtable, #gxTxList .txtable thead{display:none}
    #txwrap .txtable, #gxTxList .txtable tbody{display:block;width:100%}
    #txwrap .txtable, #gxTxList .txtable tr.txrow{display:block;border:1px solid var(--line);border-radius:13px;margin-bottom:11px;padding:5px 3px;background:var(--surface);box-shadow:var(--shadow)}
    #txwrap .txtable, #gxTxList .txtable tr.txrow>td{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;row-gap:3px;column-gap:10px;border:none;border-bottom:1px dashed var(--line);padding:8px 11px;text-align:right;min-width:0;overflow-wrap:anywhere}
    #txwrap .txtable, #gxTxList .txtable tr.txrow>td:last-child{border-bottom:none}
    #txwrap .txtable, #gxTxList .txtable tr.txrow>td::before{content:attr(data-label);font-weight:700;color:var(--ink-soft);text-align:left;flex:none;margin-right:auto;font-size:12px;text-transform:uppercase;letter-spacing:.02em}
    /* Anti-chevauchement : les valeurs peuvent passer à la ligne sous le libellé */
    #txwrap .txtable, #gxTxList .txtable td.nowrap{white-space:normal}
    #txwrap .txtable, #gxTxList .txtable .cell-ger{text-align:left;min-width:0}
    #txwrap .txtable, #gxTxList .txtable .cell-ger b{white-space:normal}
    #txwrap .txtable, #gxTxList .txtable .tdtype{max-width:none}
    #txwrap .txtable, #gxTxList .txtable .mp-reg-tag,#txwrap .txtable .pdv-tag,#txwrap .txtable .bord-tag{white-space:normal}
    /* Chaque mouvement (caisse / montant / soldes) occupe sa propre ligne, aligné à droite */
    #txwrap .txtable, #gxTxList .txtable td .mv{flex:1 0 100%;justify-content:flex-end;white-space:normal;min-width:0}
    #txwrap .txtable, #gxTxList .txtable td .mv.start{justify-content:flex-end}
    #txwrap .txtable, #gxTxList .txtable td .mv+.mv{border-top:none;padding-top:0}
    #txwrap .txtable, #gxTxList .txtable tr.txpay{display:block}
    #txwrap .txtable, #gxTxList .txtable tr.txpay>td{display:block;padding:0;border:none}
  }
  .txtable{width:100%;border-collapse:collapse;font-size:13px;min-width:920px}
  .txtable thead th{position:sticky;top:0;z-index:6;background:var(--surface-2);text-align:left;
    font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink);font-weight:800;
    padding:11px 12px;border-bottom:1px solid var(--line);box-shadow:0 1px 0 var(--line);white-space:nowrap}
  .txtable th.ar{text-align:right}
  .txtable td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
  .txtable td.ar{text-align:right}
  .txtable tbody tr.txrow:hover{background:var(--surface-2)}
  .txtable tbody tr.txrow.mp-reg{background:linear-gradient(90deg,rgba(232,163,61,.16),rgba(232,163,61,.03));box-shadow:inset 4px 0 0 #E8A33D}
  .txtable tbody tr.txrow.mp-reg:hover{background:linear-gradient(90deg,rgba(232,163,61,.24),rgba(232,163,61,.07))}
  .mp-reg-tag{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:10.5px;font-weight:800;letter-spacing:.2px;color:#8A5300;background:#FBEBC8;border:1px solid #E7CE93;border-radius:999px;padding:1px 8px;white-space:nowrap}
  .trf-tag{display:inline-flex;align-items:center;gap:4px;margin-top:4px;margin-left:6px;font-size:10.5px;font-weight:800;letter-spacing:.2px;color:#5B4BB6;background:#EDE9FB;border:1px solid #CFC5F2;border-radius:999px;padding:1px 8px;white-space:nowrap}
  .txtable tbody tr.txrow.pdv-row{background:linear-gradient(90deg,rgba(108,74,182,.14),rgba(108,74,182,.03));box-shadow:inset 4px 0 0 #6C4AB6}
  .txtable tbody tr.txrow.pdv-row:hover{background:linear-gradient(90deg,rgba(108,74,182,.22),rgba(108,74,182,.06))}
  .pdv-tag{display:inline-flex;align-items:center;margin-left:6px;font-size:10.5px;font-weight:800;letter-spacing:.4px;color:#fff;background:#6C4AB6;border-radius:999px;padding:1px 8px;white-space:nowrap;vertical-align:middle}
  .bord-tag{display:inline-flex;align-items:center;margin-left:6px;font-size:10.5px;font-weight:800;letter-spacing:.3px;color:#fff;background:#14324A;border-radius:999px;padding:1px 8px;white-space:nowrap;vertical-align:middle}
  .dep-tag{display:inline-flex;align-items:center;margin-left:6px;font-size:10.5px;font-weight:800;letter-spacing:.3px;color:#B23B0C;background:#FCE9E2;border-radius:999px;padding:1px 8px;white-space:nowrap;vertical-align:middle}
  .txtable tbody tr.deprow{background:rgba(178,59,12,.035)}
  .txtable tbody tr.deprow:hover{background:rgba(178,59,12,.07)}
  .txtable tbody tr.regrow{background:rgba(30,142,90,.05);box-shadow:inset 4px 0 0 #1E8E5A}
  .txtable tbody tr.regrow:hover{background:rgba(30,142,90,.09)}
  .reg-tag{display:inline-flex;align-items:center;margin-left:6px;font-size:10.5px;font-weight:800;letter-spacing:.3px;border-radius:999px;padding:1px 8px;white-space:nowrap;vertical-align:middle}
  .txtable .cell-ger{display:flex;align-items:center;gap:8px}
  .txtable .cell-ger b{font-weight:700;display:block;line-height:1.1;white-space:nowrap}
  .txtable .cell-ger span{font-size:11px;color:var(--ink-soft)}
  .txtable .sub2{display:block;font-size:11px;color:var(--ink-soft);margin-top:1px}
  .txtable .sub2.txref{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;color:var(--primary);letter-spacing:.02em;font-size:10.5px}
  .txtable .nowrap{white-space:nowrap}
  .txtable .tdtype{max-width:190px;font-size:12.5px;color:var(--ink-soft)}
  .txtable .mv{display:flex;align-items:center;gap:6px;justify-content:flex-end;white-space:nowrap;padding:2px 0;line-height:1.3}
  .txtable .mv.start{justify-content:flex-start;font-weight:700}
  .txtable .mv+.mv{border-top:1px dashed var(--line)}
  .txtable .up{color:var(--paid)} .txtable .down{color:var(--fail)}
  .txtable .muted{color:var(--ink-faint)}
  .txtable .badge{font-size:10.5px;padding:3px 8px}
  .blink-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#E8590C;
    margin-right:7px;vertical-align:middle;box-shadow:0 0 0 0 rgba(232,89,12,.6);animation:blinkDot 1s infinite}
  @keyframes blinkDot{
    0%{opacity:1;box-shadow:0 0 0 0 rgba(232,89,12,.55)}
    70%{opacity:.35;box-shadow:0 0 0 6px rgba(232,89,12,0)}
    100%{opacity:1;box-shadow:0 0 0 0 rgba(232,89,12,0)}}
  @media (prefers-reduced-motion:reduce){.blink-dot{animation:none;opacity:1}}
  .blink-dot.urgent{width:13px;height:13px;background:#E5091A;margin-right:9px;
    box-shadow:0 0 0 0 rgba(229,9,26,.75);animation:blinkUrgent .55s infinite}
  /* Dette ENTREPRISE (nous devons au client) : violet, seuil 2 h — à ne pas confondre
     avec le rouge des créances clients en retard. */
  .blink-dot.ent{background:#7A3E9D;box-shadow:0 0 0 0 rgba(122,62,157,.6)}
  .blink-dot.ent.urgent{width:13px;height:13px;background:#6A1B9A;margin-right:9px;
    box-shadow:0 0 0 0 rgba(106,27,154,.75);animation:blinkUrgentEnt .7s infinite}
  @keyframes blinkUrgentEnt{
    0%{box-shadow:0 0 0 0 rgba(106,27,154,.75);opacity:1}
    70%{box-shadow:0 0 0 9px rgba(106,27,154,0);opacity:.55}
    100%{box-shadow:0 0 0 0 rgba(106,27,154,0);opacity:1}}
  @media (prefers-reduced-motion:reduce){.blink-dot.ent.urgent{animation:none}}
  .ovd-age.ent{color:#6A1B9A!important}
  /* Alerte des retards : ligne compacte sous les compteurs du tableau de bord */
  .dash-online{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 13px;border-radius:12px;
    background:var(--surface);border:1px solid var(--line);margin-bottom:12px}
  .onl-h{display:flex;align-items:baseline;gap:7px;flex:none}
  .onl-h b{font-size:13px;font-weight:900;color:#0E7A50}
  .onl-h span{font-size:11px;color:var(--ink-soft);font-weight:600}
  .onl-list{display:flex;gap:7px;flex-wrap:wrap;min-width:0}
  .onl-item{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:99px;
    background:rgba(0,0,0,.04);font-size:11.5px;font-weight:800}
  .onl-item i{width:7px;height:7px;border-radius:50%;background:#9AA7AB;flex:none}
  .onl-item.on i{background:#1E8E5A;box-shadow:0 0 0 3px rgba(30,142,90,.18)}
  .onl-item.recent i{background:#E5A50A}
  .onl-item em{font-style:normal;font-weight:600;color:var(--ink-soft);font-size:10.5px}
  .onl-item.off{opacity:.6}
  /* ── Bouton et fenêtre « Appareils des gérants » (v419) ───────────────────── */
  .onl-app{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none;cursor:pointer;
    padding:5px 10px;border-radius:99px;border:1px solid var(--line);background:var(--surface);
    color:#0E5561;font-size:11px;font-weight:900;letter-spacing:.03em;text-transform:uppercase;
    transition:background .15s,border-color .15s}
  .onl-app svg{width:13px;height:13px}
  .onl-app:hover{background:rgba(14,85,97,.08);border-color:rgba(14,85,97,.35)}
  .apd-b{padding:16px 16px 6px;background:var(--paper)}
  .apd-i{display:flex;align-items:center;gap:12px;padding:13px 14px;margin-bottom:11px;
    background:var(--surface);border:1px solid var(--line);border-radius:16px;
    box-shadow:0 1px 2px rgba(16,39,46,.04),0 12px 26px -24px rgba(16,39,46,.5)}
  .apd-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;
    background:rgba(14,85,97,.09);color:#0E5561}
  .apd-ic svg{width:21px;height:21px}
  .apd-i.on .apd-ic{background:rgba(30,142,90,.13);color:#0E7A50}
  .apd-i.off{opacity:.72}
  .apd-c{flex:1;min-width:0}
  .apd-c b{display:flex;align-items:baseline;gap:7px;font-size:14px;font-weight:900;color:var(--ink)}
  .apd-code{font-size:10.5px;font-weight:800;color:var(--ink-soft);background:var(--surface-2);
    border:1px solid var(--line);border-radius:6px;padding:1px 5px}
  .apd-m{margin-top:3px;font-size:12.5px;font-weight:800;color:var(--ink)}
  .apd-m em{font-style:normal;font-weight:700;color:var(--ink-faint)}
  .apd-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
  .apd-tag{font-size:10.5px;font-weight:800;color:var(--ink-soft);background:var(--surface-2);
    border:1px solid var(--line);border-radius:7px;padding:2px 7px}
  .apd-e{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;
    color:var(--ink-soft);white-space:nowrap}
  .apd-e i{width:8px;height:8px;border-radius:50%;background:#9AA7AB;flex:none}
  .apd-i.on .apd-e{color:#0E7A50} .apd-i.on .apd-e i{background:#1E8E5A;box-shadow:0 0 0 3px rgba(30,142,90,.18)}
  .apd-i.recent .apd-e i{background:#E5A50A}
  .ovdr-b{padding:16px 16px 6px;background:var(--paper)}
  .ovdr-img{display:block;width:100%;height:auto;border-radius:14px;border:1px solid var(--line);
    background:#fff;box-shadow:0 12px 30px -22px rgba(16,39,46,.7)}
  .ovdr-a{display:flex;gap:9px;flex-wrap:wrap;margin:13px 0 12px}
  .ovdr-a button{flex:1 1 150px;padding:12px;border-radius:12px;font-size:13.5px;font-weight:900;cursor:pointer}
  .apd-n{margin:2px 0 0;padding:12px 13px;border-radius:13px;background:var(--surface-2);
    border:1px dashed var(--line-strong);font-size:11.5px;line-height:1.6;color:var(--ink-soft)}
  .apd-n b{color:var(--ink)}
  @media (max-width:520px){
    .apd-i{align-items:flex-start;flex-wrap:wrap}
    .apd-e{width:100%;padding-left:54px}
  }
  .dash-alert{margin:0 0 11px}
  .daol{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%;box-sizing:border-box;
    padding:7px 12px;border-radius:11px;cursor:pointer;text-align:left;
    background:#FDECEA;border:1px solid #F1B0A8;font-size:12.5px;color:#B3160C}
  .daol.ent{background:#F3E8FA;border-color:#C9A3DC;color:#5B1780}
  .daol.mix{background:linear-gradient(90deg,#FDECEA 0 55%,#F3E8FA 100%);border-color:#DFA8B6}
  .daol b{font-size:12.5px;font-weight:900}
  .daol-ic{width:22px;height:22px;flex:none;border-radius:6px;background:#E5091A;color:#fff;display:grid;place-items:center;animation:blinkUrgent .7s infinite}
  .daol-ic.ent{background:#6A1B9A;animation:blinkUrgentEnt .8s infinite}
  .daol-ic.mix{animation:blinkMix 1.6s infinite}
  @media (prefers-reduced-motion:reduce){.daol-ic{animation:none}.daol-ic.mix{background:linear-gradient(135deg,#E5091A 0 50%,#6A1B9A 50% 100%)}}
  .daol-ic svg{width:13px;height:13px}
  .daol-cli{font-weight:800;color:#B3160C}
  .daol-ent{font-weight:800;color:#6A1B9A}
  .daol-sep{opacity:.45;font-weight:800}
  .daol-go{margin-left:auto;font-weight:800;opacity:.75;white-space:nowrap}
  @keyframes blinkUrgent{
    0%{opacity:1;transform:scale(1);box-shadow:0 0 0 0 rgba(229,9,26,.75)}
    70%{opacity:.25;transform:scale(1.25);box-shadow:0 0 0 14px rgba(229,9,26,0)}
    100%{opacity:1;transform:scale(1);box-shadow:0 0 0 0 rgba(229,9,26,0)}}
  @media (prefers-reduced-motion:reduce){.blink-dot.urgent{animation:none}}
  .ovd-age{color:#E5091A!important;font-weight:800}
  .tx-overdue{margin-bottom:12px}
  .tx-overdue .ovd-top{display:flex;align-items:center;gap:12px;background:#FDECEA;border:1px solid #F1B0A8;
    border-radius:12px;padding:12px 15px;color:#8A1C10}
  .tx-overdue .ovd-ic{width:36px;height:36px;flex:none;border-radius:9px;background:#E5091A;color:#fff;display:grid;place-items:center;animation:blinkUrgent .7s infinite}
  /* Retards dans un seul sens : la couleur de ce sens. Dans LES DEUX SENS : le triangle
     alterne rouge (créance client) et violet (dette entreprise). */
  .tx-overdue .ovd-ic.ent{background:#6A1B9A;animation:blinkUrgentEnt .8s infinite}
  .tx-overdue .ovd-ic.mix{animation:blinkMix 1.6s infinite}
  @keyframes blinkMix{
    0%{background:#E5091A;box-shadow:0 0 0 0 rgba(229,9,26,.75);opacity:1}
    20%{background:#E5091A;box-shadow:0 0 0 10px rgba(229,9,26,0);opacity:.6}
    40%{background:#E5091A;box-shadow:0 0 0 0 rgba(229,9,26,0);opacity:1}
    50%{background:#6A1B9A;box-shadow:0 0 0 0 rgba(106,27,154,.75);opacity:1}
    70%{background:#6A1B9A;box-shadow:0 0 0 10px rgba(106,27,154,0);opacity:.6}
    90%{background:#6A1B9A;box-shadow:0 0 0 0 rgba(106,27,154,0);opacity:1}
    100%{background:#E5091A;opacity:1}}
  @media (prefers-reduced-motion:reduce){.tx-overdue .ovd-ic.mix{animation:none;background:linear-gradient(135deg,#E5091A 0 50%,#6A1B9A 50% 100%)}}
  .tx-overdue .ovd-top.ent{background:#F3E8FA;border-color:#C9A3DC}
  .tx-overdue .ovd-top.ent .ovd-txt b{color:#5B1780}
  .tx-overdue .ovd-top.ent .ovd-txt span{color:#7A5490}
  .tx-overdue .ovd-top.ent .ovd-btn{background:#6A1B9A}
  .tx-overdue .ovd-top.mix{background:linear-gradient(90deg,#FDECEA 0 55%,#F3E8FA 100%);border-color:#DFA8B6}
  .tx-overdue .ovd-ic svg{width:20px;height:20px}
  .tx-overdue .ovd-txt{display:flex;flex-direction:column;line-height:1.35;min-width:0;flex:1}
  .tx-overdue .ovd-txt b{font-size:15px;color:#B3160C}
  .tx-overdue .ovd-txt span{font-size:12px;color:#A0463C;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tx-overdue .ovd-btn{flex:none;background:#E5091A;color:#fff;border:none;font-weight:700;font-size:13px;padding:9px 14px;border-radius:9px;cursor:pointer;white-space:nowrap}
  .tx-overdue .ovd-btn:hover{background:#C20714}
  .txtable .tdact{white-space:nowrap}
  .txtable td .tx-act2{display:flex;gap:3px;justify-content:flex-end}
  .txtable tr.txpay td{background:var(--surface-2);padding:12px 14px}
  .txc-tag{font-size:9.5px;font-weight:700;color:#0C6B6B;background:#E1F2F1;padding:1px 5px;border-radius:5px}
  #txReceipt{display:none}
  /* REÇU — lisibilité renforcée (v314).
     Le reçu est lu sur papier, souvent imprimé pâle, et par des personnes qui ne le
     relisent pas deux fois : tout y est en NOIR FRANC, sur fond blanc imposé, quel que
     soit le thème de l'application ou de l'appareil. */
  .rcpt{font-family:var(--ff);color:#000;background:#fff;max-width:360px;margin:0 auto;padding:6px;
    position:relative;overflow:hidden;
    print-color-adjust:exact;-webkit-print-color-adjust:exact}
  /* ⚠ Rien n'hérite d'un thème sombre — SAUF le bloc du solde client et les montants
     des caisses, dont la COULEUR PORTE UNE INFORMATION : vert quand l'entreprise doit,
     rouge quand le client doit. Les exclure ici les rendait noirs. */
  .rcpt *:not(.rcpt-solde):not(.rcpt-solde *):not(.mt-in):not(.mt-out):not(.rc-sens):not(.rc-fl){color:inherit}
  .rcpt-wm{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:74%;max-width:300px;opacity:.04;pointer-events:none;z-index:0;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rcpt>*:not(.rcpt-wm){position:relative;z-index:1}
  .rcpt-tel{font-size:12px;font-weight:800;color:#000;margin-top:2px}
  .rcpt-siege{font-size:12px;font-weight:800;color:#000;margin-top:2px}
  .rcpt-head{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:2px solid #111;margin-bottom:12px}
  .rcpt-co{font-size:18px;font-weight:800}
  .rcpt-sub{font-size:12.5px;color:#111;font-weight:800}
  /* Nom du client, mis en évidence en haut du reçu */
  /* Fenêtre de repli du partage */
  .sh-sheet{max-width:460px}
  .sh-b{text-align:center}
  .sh-img{max-width:100%;max-height:52vh;border-radius:12px;border:1px solid var(--line);
    box-shadow:0 12px 28px -18px rgba(10,65,73,.5)}
  .sh-note{margin:12px 0 0;font-size:12px;color:var(--ink-soft);line-height:1.55}
  .sh-f{flex-wrap:wrap;gap:9px}
  .sh-f button{flex:1;min-width:140px}
  /* Le reçu peut porter quatre actions : la ligne s'adapte */
  .recu-f{flex-wrap:wrap;gap:9px}
  .recu-f button{flex:1;min-width:132px}
  .recu-tr{color:#0E5561;border-color:rgba(14,85,97,.35);font-weight:800}
  .recu-tr:hover{background:rgba(14,85,97,.09)}
  .rcpt-cli{display:flex;align-items:center;gap:11px;padding:10px 12px;margin-bottom:12px;
    border:2px solid #000;border-radius:10px;background:#fff;
    print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rc-ini{flex:none;width:38px;height:38px;border-radius:9px;display:grid;place-items:center;overflow:hidden;
    background:#000;color:#fff;font-size:19px;font-weight:900;line-height:1;
    print-color-adjust:exact;-webkit-print-color-adjust:exact}
  /* Photo du client : elle remplace l'initiale, avec un cadre noir pour rester nette
     même sur une impression pâle. */
  .rc-ini.ph{background:#fff;border:2px solid #000}
  .rc-ini.ph img{width:100%;height:100%;object-fit:cover;display:block;
    print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rc-t{min-width:0}
  .rc-t span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#444}
  .rc-t b{display:block;font-size:19px;font-weight:900;line-height:1.15;letter-spacing:-.01em;
    overflow-wrap:anywhere;color:#000}
  .rc-t em{display:block;font-style:normal;font-size:11.5px;font-weight:700;color:#333;margin-top:1px}
  .rcpt-kv{width:100%;font-size:14.5px;margin-bottom:12px;border-collapse:collapse}
  .rcpt-kv td{padding:5px 0;vertical-align:top}
  .rcpt-kv td:first-child{color:#000;width:38%;font-weight:800}
  .rcpt-kv td:last-child{font-weight:900;text-align:right;color:#000}
  .rcpt-caisses{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:12px}
  .rcpt-caisses th{border-bottom:1.5px solid #111;padding:5px 4px;text-align:right;color:#000;font-weight:800}
  .rcpt-caisses th:first-child{text-align:left}
  .rcpt-caisses td{padding:6px 4px;border-bottom:1px solid #999;font-weight:800;color:#000}
  .rcpt-caisses td:first-child{text-align:left}
  /* Logo de la caisse et flèche de sens, sur le reçu imprimé */
  .rc-cw{display:inline-flex;align-items:center;gap:7px;min-width:0}
  .rc-cw b{font-weight:900}
  .rc-cw em{font-style:normal;font-size:11.5px;font-weight:700;color:#333}
  .rc-fl{width:15px;height:15px;flex:none;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rc-fl.in{color:#0b5e30}
  .rc-fl.out{color:#8f1a13}
  .rc-cl{width:20px;height:20px;flex:none;border-radius:5px;object-fit:contain;background:#fff;
    border:1px solid #999;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rc-cl.txt{display:grid;place-items:center;font-size:11px;font-weight:900;color:#000;background:#eee}
  .rcpt-caisses td.mt-in{color:#0b5e30}
  .rcpt-caisses td.mt-out{color:#8f1a13}
  .mt-in{color:#0b5e30;font-weight:900}
  .mt-out{color:#8f1a13;font-weight:900}
  /* Qui reçoit quoi : la mention lève toute ambiguïté sur le sens */
  .rc-sens{display:block;margin-top:2px;margin-left:44px;font-size:9.5px;font-weight:900;
    letter-spacing:.08em;text-transform:uppercase}
  .rc-sens.in{color:#0b5e30}
  .rc-sens.out{color:#8f1a13}
  .rc-tot td{border-top:2px solid #000;border-bottom:0;font-weight:900;padding-top:8px}
  /* À L'IMPRESSION : les navigateurs suppriment les fonds par défaut. Sans cette
     règle, un texte clair posé sur un fond coloré sortait BLANC SUR BLANC. */
  @media print{
    .rcpt,.rcpt *{color:#000 !important;
      print-color-adjust:exact;-webkit-print-color-adjust:exact}
    /* Le solde client et les sens de mouvement gardent leur couleur à l'impression :
       c'est elle qui dit qui doit à qui. */
    .rcpt-solde.pos,.rcpt-solde.pos *{color:#0b5e30 !important}
    .rcpt-solde.neg,.rcpt-solde.neg *{color:#8f1a13 !important}
    .rcpt .mt-in,.rcpt .rc-sens.in,.rcpt .rc-fl.in{color:#0b5e30 !important}
    .rcpt .mt-out,.rcpt .rc-sens.out,.rcpt .rc-fl.out{color:#8f1a13 !important}
    .rcpt{background:#fff !important}
    .rcpt-wm{opacity:.05 !important}
    .rcpt-kv td,.rcpt-caisses td,.rcpt-caisses th{font-weight:800 !important}
    .rcpt-solde{background:#fff !important;border-width:2px !important}
    .rcpt-solde.pos{border-color:#12653a !important}
    .rcpt-solde.neg{border-color:#8f1d16 !important}
  }
  /* ── Bloc « délai de règlement » sur le reçu imprimé (v426) ──
     Encadré noir plein, comme le reste du reçu : il doit rester lisible sur une
     imprimante thermique, qui ne rend ni les gris clairs ni les couleurs. */
  .rcpt-delai{margin:2px 0 10px;border:1.6px solid #000;border-radius:9px;padding:9px 11px}
  .rcd-h{font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}
  .rcd-o{font-size:10.5px;font-weight:600;color:#444;margin-top:2px}
  .rcd-r{display:flex;justify-content:space-between;gap:12px;font-size:12px;margin-top:6px}
  .rcd-r b{font-weight:800;white-space:nowrap}
  .rcd-c{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;font-weight:900;
    margin-top:8px;padding-top:7px;border-top:1.6px solid #000}
  .rcd-c.ok{color:#0b5e30} .rcd-c.wait{color:#8f1a13}
  .rcpt-solde{border-radius:9px;padding:9px 11px;margin:2px 0 10px;border:1.6px solid;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rcpt-solde.pos{background:#e9f7ef;border-color:#1a7f46;color:#12653a}
  .rcpt-solde.neg{background:#fdecea;border-color:#b3261e;color:#8f1d16}
  .rcpt-solde.zero{background:#eef2f3;border-color:#556;color:#111}
  .rcpt-solde-top{display:flex;justify-content:space-between;align-items:baseline;font-weight:800;font-size:15px}
  .rcpt-solde-top b{font-size:19px;font-weight:900;letter-spacing:-.01em}
  .rcpt-solde-note{font-size:11px;margin-top:2px;font-weight:600}
  .rcpt-stamp{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin:2px 0 8px}.rcpt-stamp .rcpt-stamp-lab{font-size:11px;color:#555;font-weight:700}
  .rcpt-merci{text-align:center;font-size:13px;font-weight:900;color:#000;margin-top:10px}
  .rcpt-cons{text-align:center;font-size:10.5px;color:#333;font-weight:700;margin-top:3px}
  .rcpt-stamp svg{width:118px;height:118px;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .rcpt-foot{font-size:11px;color:#3a4a4f;text-align:center;border-top:1px dashed #aaa;padding-top:10px;font-weight:600}
  @media print{
    body.print-receipt .shell,body.print-receipt .welcome,body.print-receipt .lock,body.print-receipt .wiz,body.print-receipt .scrim{display:none!important}
    body.print-receipt #txReceipt{display:block!important}
  }
  @media (max-width:600px){ .txr-caisses{font-size:12px} .txr-caisses th,.txr-caisses td{padding:7px 5px} }
  .gavatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex:none;
    background:var(--primary-l);color:var(--primary);font-weight:800;overflow:hidden;vertical-align:middle}
  .gavatar img{width:100%;height:100%;object-fit:cover}
  .tx{background:var(--surface); border:1px solid var(--line); border-radius:12px;
    padding:10px 13px; box-shadow:var(--shadow); position:relative}
  .tx-line{display:flex; align-items:center; gap:11px; flex-wrap:wrap}
  .tx-op{flex:none}
  .tx-info{flex:1 1 150px; min-width:130px}
  .tx-l1{font-size:13.5px; line-height:1.25; display:flex; align-items:baseline; gap:7px; flex-wrap:wrap}
  .tx-l1 .opn{font-weight:800; color:var(--ink)}
  .tx-when{font-size:11.5px; color:var(--ink-soft)}
  .tx-l2{font-size:11.5px; color:var(--ink-soft); margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .tx-flow{display:flex; align-items:center; gap:7px; flex:none}
  .tx-flow .leg{display:flex; align-items:center; gap:5px}
  .tx-flow .amt{font-size:13.5px; font-weight:800}
  .arrow{color:var(--ink-faint); font-size:16px; line-height:1}
  .badge{font-size:11px; font-weight:700; padding:4px 9px; border-radius:999px; white-space:nowrap; flex:none; margin-left:auto}
  .tx-act2{display:flex; gap:4px; flex:none}
  .up{color:var(--paid)} .down{color:var(--fail)}
  @media (max-width:600px){
    .tx-flow{flex:1 1 100%; order:3; padding-top:8px; border-top:1px solid var(--line)}
    .badge{order:2}
    .tx-act2{order:4; margin-left:auto}
  }
  .solder{margin-top:11px;width:100%;background:#E1F2F1;color:#0C6B6B;border:1px solid #B7E0DE;
    padding:9px;border-radius:9px;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;gap:6px}
  .solder:hover{background:#0F8A8A;color:#fff;border-color:#0F8A8A}
  .solder svg{width:15px;height:15px}
  .payc{margin-top:11px;width:100%;background:#FBEBE1;color:#B23B0C;border:1px solid #F3CBB4;
    padding:9px;border-radius:9px;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;gap:6px}
  .payc:hover{background:#D9480F;color:#fff;border-color:#D9480F}
  .payc svg{width:15px;height:15px}
  .reg{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line)}
  .reg-bar{height:7px;border-radius:4px;background:#EDF1F2;overflow:hidden;margin-bottom:7px}
  .reg-bar span{display:block;height:100%;background:var(--racc,#0E8A5A);border-radius:4px;transition:width .3s}
  .pay-modal{max-width:460px}
  /* ENCAISSEMENT (l'argent entre) : vert. REVERSEMENT (l'argent sort) : violet. */
  .pay-modal.mode-reg .mhead{border-bottom:3px solid #0E8A5A}
  .pay-modal.mode-rev .mhead{border-bottom:3px solid #6A1B9A}
  .pay-modal.mode-rev .pay-bar span{background:#6A1B9A}
  .pay-modal.mode-rev .pay-nums .pay-reste b{color:#6A1B9A}
  .pay-modal.mode-rev #payGo{background:#6A1B9A}
  .pay-head{display:flex;align-items:center;gap:11px}
  .pay-id{display:flex;flex-direction:column;gap:2px;min-width:0}
  .pay-av{flex:none;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:18px;font-weight:900;
    background:#E4F3EB;color:#0E7A50}
  .pay-av.rev{background:#F3E8FA;color:#6A1B9A}
  .pay-from{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:11px;padding:9px 11px;border-radius:10px;
    background:#F7F3FA;border:1px solid #E4D5EE}
  .pf-lab{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#6A1B9A}
  .pf-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--line);
    border-radius:8px;padding:4px 8px;font-size:12px;font-weight:700}
  .pf-note{width:100%;font-size:11px;font-weight:600;color:var(--ink-soft)}
  .pay-head{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;border-bottom:1px solid var(--line)}
  .pay-head b{font-size:17px;font-weight:900}
  .pay-head span{font-size:12px;color:var(--ink-soft)}
  .pay-nums{display:flex;gap:14px;flex-wrap:wrap;margin-top:11px;font-size:12px;font-weight:700;color:var(--ink-soft)}
  .pay-nums b{display:block;font-size:16px;font-weight:900;color:var(--ink)}
  .pay-nums .pay-reste b{color:#0E7A50}
  .pay-bar{height:7px;border-radius:99px;background:rgba(0,0,0,.08);overflow:hidden;margin-top:10px}
  .pay-bar span{display:block;height:100%;background:#0E8A5A;border-radius:99px;transition:width .25s}
  .pay-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
  .pay-chip{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:7px 11px;font-size:12px;font-weight:800;cursor:pointer;color:var(--ink)}
  .pay-chip:hover{background:rgba(14,85,97,.08)}
  .pay-split{margin-top:10px;border:1px dashed var(--line);border-radius:9px;background:transparent;color:#0E5561;
    font-size:12px;font-weight:800;padding:8px 11px;cursor:pointer;width:100%}
  .pay-split:hover{background:rgba(14,85,97,.07)}
  .pay-note{margin:10px 0 0;font-size:11.5px;font-weight:600;line-height:1.5;color:var(--ink-soft)}
  .reg-form.one{display:block}
  .reg-form.one .btn-reg{width:100%;padding:12px}
  .tri-btn{background:#6A1B9A}
  .rech-steps{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:rgba(14,85,97,.07);font-size:12px;font-weight:600;line-height:1.55;color:var(--ink-soft)}
  .rech-steps b{color:var(--ink)}
  .tri{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line)}
  .tri-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
  .tri-h b{font-size:13px;font-weight:900;color:#6A1B9A}
  .tri-h span{font-size:11.5px;font-weight:700;color:var(--ink-soft)}
  .tri-bar span{background:#6A1B9A}
  .tri-wait{margin:6px 0 0;font-size:11.5px;font-weight:600;color:var(--ink-soft)}
  .tri-ok{margin:6px 0 0;font-size:12px;font-weight:800;color:#0E7A50}
  .rev-cta{display:block;margin-top:5px;border:0;border-radius:8px;padding:6px 10px;background:#6A1B9A;color:#fff;
    font-size:11.5px;font-weight:800;cursor:pointer;white-space:nowrap}
  .rev-cta:hover{filter:brightness(1.08)}
  .tri-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:7px;background:#F3E8FA;color:#6A1B9A;font-size:10.5px;font-weight:800;vertical-align:1px}
  .reg-nums{font-size:12.5px;color:var(--ink-soft);margin-bottom:9px}
  .reg-nums b{color:var(--ink);font-weight:700}
  .reg-nums .reg-reste{color:var(--racc,#0E8A5A)}
  .reg-hist{margin-top:10px;border-top:1px dashed var(--line);padding-top:9px}
  .reg-hist-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);margin-bottom:6px}
  .reg-hist-row{display:grid;grid-template-columns:22px 84px 1fr auto;align-items:center;gap:8px;font-size:12.5px;padding:4px 0;border-bottom:1px solid var(--line)}
  .reg-hist-row:last-child{border-bottom:none}
  .reg-hist-row .rh-n{width:20px;height:20px;border-radius:50%;background:var(--surface-2);color:var(--ink-soft);font-size:11px;font-weight:700;display:grid;place-items:center}
  .reg-hist-row .rh-date{color:var(--ink-soft)}
  .reg-hist-row .rh-caisse{display:flex;align-items:center;gap:6px;font-weight:600;min-width:0}
  .reg-hist-row .rh-amt{font-weight:800;color:var(--racc,#0E8A5A);text-align:right}
  .reg-hist-row.comp{background:#EEF3FF}
  .rh-comp{display:inline-block;font-weight:700;color:#3A5BC7;background:#E4EAFF;padding:1px 7px;border-radius:6px;font-size:11.5px}
  .tx-pending{display:flex;flex-direction:column;gap:10px;background:#FFF7E6;border:1px solid #F3D998;
    border-radius:12px;padding:12px 15px;margin-bottom:12px;color:#7A5200}
  .tx-pending .pend-top{display:flex;align-items:center;gap:12px}
  .tx-pending .pend-ic{width:34px;height:34px;flex:none;border-radius:9px;background:#F6C453;color:#5A3D00;display:grid;place-items:center}
  .tx-pending .pend-ic svg{width:19px;height:19px}
  .tx-pending .pend-txt{display:flex;flex-direction:column;line-height:1.35}
  .tx-pending .pend-txt b{font-size:15px;color:#6B4600}
  .tx-pending .pend-txt span{font-size:12px;color:#96702A}
  .pend-owe{border-top:1px dashed #E6C877;padding-top:9px;font-size:12.5px;color:#8A5A00;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
  .pend-owe-h{font-weight:800;color:#B23B0C}
  .pend-owe-item{background:#FBE3D4;border:1px solid #F0C4A6;color:#8A3A0C;padding:2px 9px;border-radius:999px;font-weight:600}
  .pend-owe-item b{font-weight:800}
  .dette-client{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:9px}
  .dette-client.multi{border-color:var(--line-strong)}
  .dette-client-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--line)}
  .dette-client-h .dc-name{font-weight:800;font-size:14px}
  .dette-client-h .dc-tot{display:flex;align-items:center;gap:7px;font-size:12px}
  .dette-client-h .dc-tot b{font-size:15px}
  .dc-badge{background:var(--primary-l);color:var(--primary);font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px}
  .tx-grouped{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:13px 15px;margin-bottom:12px;box-shadow:var(--shadow)}
  .btn-comp{display:inline-flex;align-items:center;gap:8px;margin:0 0 12px;background:var(--surface);
    border:1px solid var(--line-strong);color:var(--primary);font-weight:700;font-size:13px;
    padding:9px 14px;border-radius:10px;cursor:pointer}
  .btn-comp:hover{background:var(--primary-l)}
  .btn-comp svg{width:16px;height:16px}
  .comp-card{border:1px solid var(--line);border-radius:11px;padding:12px 13px;margin-bottom:10px;background:var(--surface-2)}
  .comp-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--line)}
  .comp-h b{font-size:15px;font-weight:800}
  .comp-tot{font-size:12.5px;color:var(--ink-soft)}
  .comp-tot b{color:var(--primary);font-size:14px}
  .comp-sub{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);font-weight:700;margin:8px 0 4px}
  .comp-row{display:grid;grid-template-columns:78px 1fr auto;gap:8px;align-items:center;font-size:12.5px;padding:4px 0;border-bottom:1px solid var(--line)}
  .comp-row:last-child{border-bottom:none}
  .comp-date{color:var(--ink-soft)}
  .comp-desc{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .comp-amt{font-weight:800;color:var(--primary)}
  .comp-legend{display:grid;grid-template-columns:1fr auto auto;gap:10px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);font-weight:700;margin:8px 0 4px;padding-bottom:4px;border-bottom:1px solid var(--line)}
  .comp-legend .ar{text-align:right;min-width:96px}
  .comp-row2{display:grid;grid-template-columns:74px 1fr auto auto;gap:8px 10px;align-items:center;font-size:12.5px;padding:5px 0;border-bottom:1px solid var(--line)}
  .comp-row2 .comp-desc{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .comp-row2 .comp-amt{min-width:96px;text-align:right;color:var(--ink);font-weight:700}
  .comp-row2 .comp-c{min-width:96px;text-align:right;color:#5B4BB6;font-weight:800}
  .comp-caisse{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--bg-soft,#F1F4F3);font-size:11px;font-weight:700;color:var(--ink);vertical-align:middle;white-space:nowrap}
  .comp-net{margin-top:10px;padding:9px 11px;border-radius:9px;font-size:13px;font-weight:600}
  .comp-net.ok{background:#E4F3EB;color:#1E7A50}
  .comp-net.in{background:#E4F3EB;color:#0E7A50}
  .comp-net.out{background:#FBE3D4;color:#8A3A0C}
  .comp-net b{font-weight:800}
  .ctrl-owe{margin-top:12px;border:1px solid #F0C4A6;background:#FFF3EC;border-radius:10px;padding:11px 13px}
  .ctrl-owe-h{font-size:12.5px;font-weight:800;color:#B23B0C;margin-bottom:7px;display:flex;justify-content:space-between;gap:10px;align-items:center}
  .ctrl-owe-tot{color:#B23B0C}
  .reg-form{display:flex;gap:7px;flex-wrap:wrap}
  .reg-form .fld{padding:8px 9px;font-size:13px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2)}
  .reg-caisse{flex:0 0 auto;min-width:94px}
  .reg-amt{flex:1;min-width:88px}
  .btn-reg{background:var(--racc,#0E8A5A);color:#fff;border:none;padding:8px 15px;border-radius:8px;font-weight:700;font-size:13px;white-space:nowrap}
  .btn-reg:hover{filter:brightness(.92)}
  .reg-done{font-size:13px;font-weight:700;color:#1E7A50;text-align:center;padding:2px 0}
  .reg-solde{margin-top:9px;text-align:center;font-weight:800;font-size:14px;color:#1E7A50;
    background:#E4F3EB;border:1px solid #BFE3CD;border-radius:9px;padding:7px;letter-spacing:.02em}
  .dette-block{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
    box-shadow:var(--shadow);padding:6px 16px 12px;margin-bottom:14px}
  .dette-head{display:flex;justify-content:space-between;align-items:center;gap:10px;
    padding:11px 0 9px;margin-bottom:4px;border-bottom:2px solid var(--dc,#0E8A5A);
    font-weight:800;font-size:13.5px;color:var(--dc,#0E8A5A)}
  .dette-head .num{font-size:16px}
  .dette-row{padding:11px 0;border-bottom:1px solid var(--line)}
  .dette-row:last-child{border-bottom:none}
  .dette-main{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}
  .dette-who{font-weight:700;font-size:14px;display:flex;flex-direction:column;gap:2px}
  .dette-amt{text-align:right;display:flex;flex-direction:column;gap:2px}
  .dette-reste{font-size:16px;font-weight:800}
  .dette-sub{font-size:11.5px;color:var(--ink-soft);font-weight:500}
  .dette-bar{height:6px;border-radius:4px;background:#EDF1F2;overflow:hidden}
  .dette-bar span{display:block;height:100%;border-radius:4px;transition:width .3s}
  .ctrl{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 16px 14px}
  .ctrl-top{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
  .ctrl-cell{display:flex;flex-direction:column;gap:3px}
  .ctrl-k{font-size:12.5px;color:var(--ink);font-weight:600}
  .ctrl-v{font-size:18px;font-weight:800}
  .ctrl-ok{font-size:13px;font-weight:600;color:#1E7A50;background:#E4F3EB;border-radius:9px;padding:9px 12px}
  .ctrl-break{display:flex;flex-direction:column;gap:5px;padding:11px 0;border-top:1px solid var(--line);margin-bottom:4px}
  .ctrl-break b{font-weight:800}
  .ctrl-note{font-size:12px;color:var(--ink-soft);margin:6px 0 10px;line-height:1.5}
  .ctrl-list{border-top:1px solid var(--line)}
  .ctrl-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
  .ctrl-row:last-child{border-bottom:none}
  .ctrl-row b{font-size:13.5px;font-weight:700;display:block}
  .ctrl-net{font-size:15px;font-weight:800;white-space:nowrap}
  .ctrl-item{border-bottom:1px solid var(--line)}
  .ctrl-item:last-child{border-bottom:none}
  .ctrl-item .ctrl-row{border-bottom:none;padding-bottom:2px}
  .ctrl-just{display:flex;align-items:center;gap:10px;padding:0 0 9px;flex-wrap:wrap}
  .btn-just{border:1px solid #E7CE93;background:#FBEBC8;color:#8A5300;font-weight:700;font-size:12px;padding:5px 11px;border-radius:8px;cursor:pointer}
  .btn-just:hover{background:#F6DFA6}
  .just-done{font-size:11.5px;color:#0E7A50;font-weight:700}
  .mvj{background:var(--surface);border:1px solid var(--line);border-left:4px solid #E8A33D;border-radius:12px;padding:14px 16px;margin-bottom:14px;box-shadow:var(--shadow)}
  @media (max-width:520px){.ctrl-top{grid-template-columns:1fr;gap:8px}}
  .cl-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}
  .fd-clienthint{font-size:11.5px;color:var(--ink-soft);margin-top:5px}
  .fd-cinfo{margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--bg-soft,#F5F8F7);font-size:12.5px;display:flex;flex-direction:column;gap:5px}
  .fd-cinfo.ok{background:#E9F7EF;border-color:#B7E2C9;color:#12653A}
  .fd-cinfo .fdci-line{display:flex;justify-content:space-between;align-items:center;gap:10px}
  .fd-cinfo .fdci-line b{font-weight:800}
  .fd-cinfo .fdci-line.in b{color:#A61E4D}
  .fd-cinfo .fdci-line.out b{color:#D9480F}
  .fd-cinfo .fdci-comp{margin-top:2px;padding-top:6px;border-top:1px dashed var(--line);color:#5B4BB6;font-weight:700}
  .fd-cinfo .fdci-comp span{font-weight:600;color:var(--ink-soft)}
  @keyframes fdciBlink{0%,100%{background:#B3261E;color:#fff;box-shadow:0 0 0 0 rgba(179,38,30,.55)}50%{background:#7A140F;color:#fff;box-shadow:0 0 0 6px rgba(179,38,30,0)}}
  .fd-cinfo .fdci-amt{display:inline-block;padding:2px 10px;border-radius:8px;font-weight:900;color:#fff;background:#B3261E;animation:fdciBlink .85s ease-in-out infinite}
  @media (prefers-reduced-motion:reduce){ .fd-cinfo .fdci-amt{animation:none;background:#B3261E;color:#fff} }
  .fd-comphint{margin:2px 0 10px;padding:10px 12px;border-radius:10px;background:#FFF4E5;border:1px solid #F3C98B;color:#8A4B08;font-size:12.5px;font-weight:600;line-height:1.45}
  .fd-comphint .fdch-amt{display:inline-block;padding:2px 10px;border-radius:8px;font-weight:900;color:#fff;background:#C24A00;animation:fdchBlink .85s ease-in-out infinite}
  @keyframes fdchBlink{0%,100%{background:#C24A00;box-shadow:0 0 0 0 rgba(194,74,0,.5)}50%{background:#7A2E00;box-shadow:0 0 0 6px rgba(194,74,0,0)}}
  @media (prefers-reduced-motion:reduce){ .fd-comphint .fdch-amt{animation:none} }
  .fd-newclient{margin-top:9px;padding:11px;border:1px dashed var(--line-strong);border-radius:10px;background:var(--surface-2)}
  .cl-search{margin-bottom:14px}
  .gx-gen{background:linear-gradient(135deg,var(--primary),var(--primary-d));color:#fff;border-radius:16px;padding:18px 20px;box-shadow:var(--shadow);margin-bottom:14px}
  .gx-gen-lab{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:#BFE0E4}
  .gx-gen-val{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:3px}
  .gx-gen-sub{font-size:12px;color:#9BC3C8;margin-top:3px}
  .gx-subs{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:16px}
  .gx-sub{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:11px 13px;box-shadow:var(--shadow)}
  .gx-sub.princ{border-color:var(--primary);background:var(--primary-l)}
  .gx-sub-n{font-size:11.5px;font-weight:700;color:var(--ink-soft)}
  .gx-sub-v{font-size:17px;font-weight:800;color:var(--ink)}
  .gx-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}
  .gx-tab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;padding:8px 13px;font-weight:700;font-size:13px;color:var(--ink-soft);cursor:pointer}
  .gx-tab.on{background:var(--primary);border-color:var(--primary);color:#fff}
  .gx-tab-s{font-size:11px;font-weight:600;opacity:.85}
  .gx-moment{font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:999px}
  .gx-moment.matin{background:#FFF3D6;color:#8A6100}
  .gx-moment.soir{background:#E5E1F5;color:#4B3A8A}
  .gx-fgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  @media (min-width:520px){.gx-fgrid{grid-template-columns:1fr 1fr 1fr}}
  .gx-solde-preview{margin-top:12px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;font-size:13px;display:flex;flex-direction:column;gap:3px}
  .gx-dep-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:0 0 12px;padding:11px 14px;border-radius:12px;border:1px dashed #E4B9AB;background:#FCF4F1;color:#B23B0C;font-weight:800;font-size:14px;cursor:pointer;transition:background .12s,transform .12s}
  .gx-dep-btn:hover{background:#FBE9E2;transform:translateY(-1px)}
  .gxd-badge.down{color:#B23B0C}
  .gxdep-list{display:flex;flex-direction:column;gap:7px}
  .gxdep-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
  .gxdep-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .gxdep-info b{font-size:13px;color:var(--ink)}
  .gxdep-info span{font-size:11px;color:var(--ink-soft)}
  .gxdep-amt{color:#B23B0C;font-weight:800;white-space:nowrap}
  .gxdep-empty{color:var(--ink-soft);font-size:13px;padding:8px 2px}
  .gxdep-remb-btn{margin-left:auto;background:#FFC403;color:#3A2B00;border:none;font-weight:800;font-size:12px;padding:5px 11px;border-radius:9px;cursor:pointer;white-space:nowrap}
  .gxdep-remb-btn:hover{filter:brightness(1.05)}
  .gxdep-rem{color:#0E7A50;font-weight:700}
  .gx-jedois{margin-top:10px;padding:11px 12px;border:1px dashed #E4B9AB;background:#FCF4F1;border-radius:11px}
  .gx-jedois.gx-ommedoit{border-color:#B7E0C8;background:#F4FAF6}
  .gx-jedois.gx-ommedoit .gx-jedois-h{color:#0E7A50}
  .gx-jedois.gx-ommedoit .gx-jedois-add{border-color:#1E8E5A;color:#0E7A50}
  .gx-jedois.gx-ommedoit .gx-jedois-add:hover{background:#EAF7F0}
  .gx-jedois.gx-ommedoit .gx-jd-del{color:#0E7A50}
  .gx-jedois.gx-ommedoit .gx-jd-del:hover{background:#EAF7F0}
  .gx-jedois-h{font-size:12px;font-weight:800;color:#B23B0C;margin-bottom:8px}
  .gx-jedois-h .sub2{font-weight:600;color:var(--ink-soft)}
  .gx-jd-row{display:flex;gap:8px;margin-bottom:7px}
  .trreg-row{display:grid;grid-template-columns:1.4fr 1.1fr 1fr 32px;gap:8px;margin-bottom:7px;align-items:center}
  .trreg-row .fld{margin:0}
  .trreg-del{width:32px;height:32px;border:0;border-radius:8px;background:#C0392B14;color:#C0392B;font-size:17px;font-weight:800;cursor:pointer}
  .trreg-add{margin-top:2px}
  .trreg-tot{margin:8px 0 2px;font-size:12.5px;font-weight:800}
  .trreg-tot .bad{color:#C0392B}
  .trreg-tot .ok{color:#0E7A50}
  @media(max-width:560px){ .trreg-row{grid-template-columns:1fr 1fr;grid-template-areas:"c c" "s m" "d d"} .trreg-row .trreg-caisse{grid-area:c} .trreg-row .trreg-sens{grid-area:s} .trreg-row .trreg-amt{grid-area:m} .trreg-row .trreg-del{grid-area:d;width:100%} }
  .gx-jd-row .gx-jd-qui{flex:1;min-width:0}
  .gx-jd-row .gx-jd-amt{width:120px;flex:0 0 auto}
  .gx-jd-del{flex:0 0 auto;width:34px;border:1px solid var(--line);background:var(--surface);border-radius:9px;color:#B23B0C;font-size:18px;font-weight:800;cursor:pointer;line-height:1}
  .gx-jd-del:hover{background:#FCE9E2}
  .gx-jedois-add{background:none;border:1px dashed #D9480F;color:#B23B0C;font-weight:700;font-size:12.5px;padding:7px 12px;border-radius:9px;cursor:pointer}
  .gx-jedois-add:hover{background:#FBE9E2}
  @media(max-width:520px){ .gx-jd-row .gx-jd-amt{width:96px} }
  .gx-solde-preview b{font-size:15px}
  #gxSoldePrev{color:var(--primary)}
  .gx-table th,.gx-table td{font-size:12px;padding:8px 9px}
  .gxp-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
  .gxp-card{border:1px solid var(--line);border-left:5px solid var(--primary);border-radius:15px;background:var(--surface);box-shadow:var(--shadow);padding:14px 16px}
  .gxp-card.ok,.gxp-card.add{border-left-color:#1E8E5A}
  .gxp-card.miss{border-left-color:#C0392B}
  .gxp-card.warn{border-left-color:#B26A00}
  .gxp-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}
  .gxp-oper{display:flex;align-items:center;gap:10px;min-width:0}
  .gxp-oper-t b{display:block;font-size:14.5px;color:var(--ink);line-height:1.15}
  .gxp-oper-t span{font-size:12px;color:var(--ink-faint)}
  .gxp-solde{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 13px;background:var(--surface-2);border-radius:12px;margin-bottom:11px}
  .gxp-solde-lab{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:800}
  .gxp-solde-val{font-size:21px;font-weight:900;color:var(--ink)}
  .gxp-badge{font-size:12px;font-weight:800;padding:6px 12px;border-radius:999px;white-space:nowrap}
  .gxp-badge.ok,.gxp-badge.add{background:#E4F3EB;color:#1E8E5A}
  .gxp-badge.miss{background:#FCEBE9;color:#C0392B}
  .gxp-badge.warn{background:#FFF4E5;color:#B26A00}
  .gxp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(94px,1fr));gap:8px;margin-bottom:11px}
  .gxp-cell{background:var(--surface-2);border-radius:10px;padding:8px 11px;display:flex;flex-direction:column;gap:1px}
  .gxp-cell span{font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);font-weight:800}
  .gxp-cell b{font-size:14px;color:var(--ink)}
  .gxp-cell.pos b{color:#1E8E5A}
  .gxp-cell.neg b{color:#C0392B}
  .gxp-regul{font-size:12.5px;color:var(--ink-soft);background:#FFF9EE;border:1px solid #F0E2C4;border-radius:11px;padding:10px 12px;margin-bottom:11px}
  .gxp-regul .gx-reglist{margin-top:3px;color:var(--ink-soft)}
  .reg-del{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:5px;border:none;border-radius:50%;background:#FCE9E2;color:#B23B0C;font-weight:900;font-size:13px;line-height:1;cursor:pointer;vertical-align:middle}
  .reg-del:hover{background:#F6C9BA}
  .reg-del-all{display:inline-block;margin-top:6px;background:none;border:1px solid #E4B9AB;color:#B23B0C;font-weight:700;font-size:11.5px;padding:4px 9px;border-radius:8px;cursor:pointer}
  .reg-del-all:hover{background:#FCE9E2}
  .gxp-regul .gx-just0{margin-top:4px;font-style:italic;opacity:.85}
  .gxp-actions{display:flex;gap:8px;flex-wrap:wrap}
  .gxp-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:11px;border:1px solid var(--line);background:var(--surface);font-weight:800;font-size:13px;cursor:pointer;color:var(--ink)}
  .gxp-btn svg{width:15px;height:15px}
  .gxp-btn.reg{border-color:var(--primary);color:var(--primary)}
  .gxp-btn.reg:hover{background:var(--primary-l,#e6f0f1)}
  .gxp-btn.del{color:#C0392B;border-color:#f0c9c4}
  .gxp-btn.del:hover{background:#fcecea}
  /* Sous-liste des guichets : alignée sous son entrée, reliée par un filet vertical */
  .gx-nav-list{display:none;flex-direction:column;gap:3px;margin:3px 0 6px 0;padding-left:20px;
    position:relative}
  .gx-nav-list.on::before{content:"";position:absolute;left:9px;top:2px;bottom:2px;width:2px;
    border-radius:2px;background:rgba(255,255,255,.14)}
  .gx-nav-total{margin-left:auto;font-size:11.5px;font-weight:800;color:currentColor;opacity:.9;white-space:nowrap;padding-left:6px}
  .gx-nav-total:empty{display:none}
  .gx-nav-list.on{display:flex}
  .gx-nav-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;
    background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:9px;
    padding:8px 11px;cursor:pointer;color:#D7E6E8;font-size:13px;font-weight:700;
    transition:background .15s,color .15s}
  .gx-nav-item:hover{background:rgba(255,255,255,.13);color:#fff}
  .gx-nav-item.on{background:rgba(255,255,255,.94);border-color:transparent;color:var(--primary);font-weight:800}
  .gx-nav-dot{width:6px;height:6px;border-radius:50%;background:#7FD4C1;opacity:.95;flex:none}
  .gx-nav-item.on .gx-nav-dot{background:var(--primary)}
  .gx-nav-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .gx-nav-empty{font-size:12px;color:var(--nav-ink,#9fb6ba);opacity:.7;padding:6px 10px}
  .gx-picker{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow);margin-bottom:6px}
  .gx-picker-lab{font-size:13px;font-weight:800;color:var(--ink-soft);flex:none}
  .gx-picker .fld{flex:1;font-weight:700}
  .gx-choose{text-align:center;padding:38px 18px;color:var(--ink-faint)}
  .gx-choose svg{width:46px;height:46px;opacity:.5;margin-bottom:10px}
  .gx-choose h3{margin:0 0 4px;color:var(--ink-soft);font-size:16px}
  .gx-choose p{margin:0;font-size:13.5px;max-width:420px;margin-inline:auto}
  .gx-work{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;box-shadow:var(--shadow)}
  .gx-head-btns{display:flex;gap:8px;flex-wrap:wrap}
  .gx-op-wrap{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:12px 14px;margin-bottom:14px;box-shadow:var(--shadow)}
  .gx-op-row{display:flex;align-items:center;gap:12px;padding:10px 2px;border-top:1px solid var(--line);cursor:pointer}
  .gx-op-row:hover{background:rgba(14,85,97,.04)}
  .gx-op-info{flex:1;min-width:0}
  .gx-op-info b{display:block;font-size:13.5px;font-weight:800}
  .gx-op-info span{display:block;font-size:11.5px;color:var(--ink-soft)}
  .gx-op-amt{text-align:right;white-space:nowrap}
  .gx-op-amt b{display:block;font-size:14px;font-weight:900}
  .gx-op-amt b.up{color:#0E7A50}
  .gx-op-amt b.down{color:#B23B0C}
  .gx-op-empty{padding:16px 4px;text-align:center;font-size:13px;color:var(--ink-soft)}
  /* ---------- Trésoreries du guichet ---------- */
  .gxt{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:11px}
  .gxt-c{padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface)}
  .gxt-c span{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:900;letter-spacing:.07em;
    text-transform:uppercase;color:var(--ink-soft)}
  .gxt-c b{display:block;font-size:20px;font-weight:900;margin-top:4px;letter-spacing:-.02em;
    font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .gxt-c em{display:block;font-style:normal;font-size:10.5px;color:var(--ink-soft);margin-top:3px;line-height:1.4}
  .gxt-c.reelle{border-color:rgba(14,85,97,.3);background:rgba(14,85,97,.05)}
  .gxt-c.init{border-color:rgba(224,138,43,.32);background:rgba(224,138,43,.06)}
  .gxt-c.eq{border-color:rgba(127,212,193,.4);background:rgba(127,212,193,.09)}
  .gxt-c.ec.ok b{color:#0E7A50}
  .gxt-c.ec.pos b{color:#0E7A50}
  .gxt-c.ec.neg{border-color:rgba(178,59,12,.3);background:rgba(178,59,12,.05)}
  .gxt-c.ec.neg b{color:#B23B0C}
  .gxt-lock{font-style:normal;font-size:9px;opacity:.8;cursor:help}
  .gxt-det{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:12px;padding-bottom:12px;
    border-bottom:1px solid var(--line);font-size:11.5px;color:var(--ink-soft);font-weight:700}
  .gxt-det b{color:var(--ink);font-weight:900}
  .gxt-det .mq b{color:#B23B0C}
  .gxt-det .aj b{color:#0E7A50}
  .gxt-fig{margin-left:auto;padding:7px 13px;border-radius:10px;border:1px solid var(--line);
    background:var(--surface);color:#0E5561;font-size:11.5px;font-weight:800;cursor:pointer}
  .gxt-fig:hover{background:rgba(14,85,97,.09)}
  @media(max-width:560px){ .gxt-fig{margin-left:0;width:100%} }
  .gx-dash{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);margin-bottom:12px}
  .gx-dash-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:12px}
  .gx-dash-solde{display:flex;flex-direction:column;gap:2px}
  .gx-dash-lab{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-weight:800}
  .gx-dash-val{font-size:28px;font-weight:900;color:var(--ink);letter-spacing:-.02em}
  .gx-dash-eq{font-size:12.5px}
  .gx-dash-init{display:flex;flex-direction:column;gap:3px;min-width:180px}
  .gx-dash-init .fld{max-width:200px}
  .gx-dash-h{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);margin:10px 0 7px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
  /* Tableau de bord guichet — design aéré */
  .gxd{display:flex;flex-direction:column;gap:20px;margin-bottom:16px}
  .gxd-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--primary),var(--primary-d));color:#fff;border-radius:24px;padding:28px 30px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;box-shadow:0 18px 38px -18px rgba(14,85,97,.55)}
  .gxd-hero::after{content:"";position:absolute;right:-40px;top:-60px;width:210px;height:210px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 70%);pointer-events:none}
  .gxd-hero::before{content:"";position:absolute;left:-50px;bottom:-70px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.09),transparent 70%);pointer-events:none}
  .gxd-hero-main,.gxd-hero-init{position:relative;z-index:1}
  .gxd-hero-val{font-size:52px;font-weight:900;letter-spacing:-.02em;line-height:1.02}
  @media(min-width:900px){ .gxd-hero{padding:40px 46px} .gxd-hero-val{font-size:66px} }
  @media(max-width:560px){ .gxd-hero{padding:22px 20px} .gxd-hero-val{font-size:33px} }
  .gxd-hero-main{display:flex;flex-direction:column;gap:7px;min-width:0}
  .gxd-hero-lab{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;opacity:.82}
  .gxd-hero-eq .gx-eq{display:inline-block;background:rgba(255,255,255,.16);color:#fff;padding:4px 12px;border-radius:999px;font-size:12.5px;font-weight:800}
  .gxd-hero-cap{display:block;margin-top:4px;font-size:11.5px;font-weight:700;opacity:.85}
  .gxd-hero-init{display:flex;flex-direction:column;gap:6px;min-width:190px}
  .gxd-hero-initlab{font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:800;opacity:.82}
  .gxd-hero-init .fld{max-width:210px;background:rgba(255,255,255,.95);border:0;font-weight:800;color:var(--ink)}
  .gxd-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
  .gxd-span{grid-column:1/-1}
  .gxd-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px 26px;box-shadow:0 10px 26px -12px rgba(16,39,46,.32)}
  .gxd-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
  .gxd-card-h h3{margin:0;font-size:17.5px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
  .gxd-rep{display:inline-flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:800;color:var(--primary);background:var(--primary-l);border:1px solid var(--line);border-radius:9px;padding:6px 12px;cursor:pointer}
  .gxd-rep:hover{filter:brightness(.97)}
  .gxd-badge{background:#6C4AB6;color:#fff;border-radius:999px;padding:2px 11px;font-size:13px;font-weight:800}
  .gxd-caisses{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
  .gxd-caisse{background:var(--surface-2);border:1px solid var(--line);border-top:5px solid var(--cc);border-radius:14px;padding:20px 18px;display:flex;flex-direction:column;gap:12px}
  .gxd-caisse-top{display:flex;align-items:center;gap:7px}
  .gxd-caisse-dot{width:9px;height:9px;border-radius:50%;background:var(--cc);flex:0 0 auto}
  .gxd-caisse-lab{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);font-weight:800}
  .gxd-caisse-dep{display:block;margin-top:3px;font-size:11px;font-weight:800;color:#C0392B}
  .gxd-mini-sub{display:block;margin-top:3px;font-size:11px;font-weight:700;color:#C0392B;opacity:.85}
  .gxd-toalloc{font-size:11.5px;font-weight:800;color:#8E5A00;background:#FFF3D6;border:1px solid #E5B23A55;border-radius:8px;padding:4px 8px;margin-right:6px}
  .gxd-gap{font-size:11.5px;font-weight:800;color:#C0392B;background:#C0392B14;border:1px solid #C0392B33;border-radius:8px;padding:4px 8px;margin-right:6px}
  .gxd-rep.warn{color:#C0392B;background:#C0392B14;border-color:#C0392B33}
  .gx-dephint{display:block;margin-top:2px;font-size:11.5px;font-weight:700;color:#C0392B}
  .gxd-caisse-val{font-size:26px;font-weight:900;color:var(--ink);letter-spacing:-.01em}
  .gxd-caisse.neg .gxd-caisse-val{color:#C0392B}
  .gxd-act{display:flex;flex-direction:column;gap:9px;margin-bottom:14px}
  .gxd-act-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-radius:11px;background:var(--surface-2);border-left:4px solid var(--line)}
  .gxd-act-lab{font-size:13.5px;font-weight:700;color:var(--ink-soft)}
  .gxd-act-row b{font-size:21px;font-weight:900;color:var(--ink)}
  .gxd-act-row.dep{border-left-color:#1E8E5A}.gxd-act-row.dep b{color:#1E8E5A}
  .gxd-act-row.ret{border-left-color:#C0392B}.gxd-act-row.ret b{color:#C0392B}
  .gxd-act-row.net{border-left-color:var(--primary)}.gxd-act-row.net b{color:var(--primary)}
  .gxd-minis{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .gxd-mini{display:flex;flex-direction:column;gap:6px;border-radius:13px;padding:16px 18px;border:1px solid}
  .gxd-mini.ajout{background:#E7F0FF;border-color:#B8D3FF}
  .gxd-mini.manquant{background:#FDE7E7;border-color:#F3B9B9}
  .gxd-mini-lab{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
  .gxd-mini.ajout .gxd-mini-lab{color:#1D5FD0}
  .gxd-mini.manquant .gxd-mini-lab{color:#C0392B}
  .gxd-mini-val{font-size:24px;font-weight:900}
  .gxd-mini.ajout .gxd-mini-val{color:#1D5FD0}
  .gxd-mini.manquant .gxd-mini-val{color:#C0392B}
  .gxd-pdv{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .gxd-pdv-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 10px;border-radius:13px;background:var(--surface-2);border:1px solid var(--line);border-top:4px solid var(--line)}
  .gxd-pdv-cell b{font-size:32px;font-weight:900;line-height:1}
  .gxd-pdv-cell span{font-size:11px;text-transform:uppercase;letter-spacing:.03em;font-weight:800;color:var(--ink-soft)}
  .gxd-pdv-cell.ok{border-top-color:#1E8E5A}.gxd-pdv-cell.ok b{color:#1E8E5A}
  .gxd-pdv-cell.wait{border-top-color:#C68A00}.gxd-pdv-cell.wait b{color:#946400}
  .gxd-pdv-cell.fail{border-top-color:#C0392B}.gxd-pdv-cell.fail b{color:#C0392B}
  @media(max-width:640px){ .gxd-caisses{grid-template-columns:repeat(3,1fr)} .gxd-hero-val{font-size:32px} .gxd-hero-init{min-width:0;width:100%} .gxd-hero-init .fld{max-width:100%} }
  @media(max-width:640px){ .gxd-caisses{grid-template-columns:repeat(3,1fr)} } @media(max-width:420px){ .gxd-caisses{grid-template-columns:repeat(2,1fr)} .gxd-minis{grid-template-columns:1fr} }
  .gx-rep-btn{text-transform:none;letter-spacing:0;font-size:12px;font-weight:800;color:var(--primary);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:4px 10px;cursor:pointer}
  .gx-rep-btn:hover{background:var(--surface);border-color:var(--primary)}
  .gx-rep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
  .gx-rep-sum{margin-top:12px;padding:10px 12px;background:var(--surface-2);border-radius:9px;font-size:13px;color:var(--ink-soft)}
  .gx-rep-sum b{color:var(--ink)}
  .gx-big-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
  .gx-big-col{display:flex;flex-direction:column;gap:8px}
  .gx-big-btn{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:9px;padding:16px;border-radius:13px;border:none;cursor:pointer;font-size:15.5px;font-weight:800;color:#fff;box-shadow:var(--shadow);transition:transform .15s ease,filter .15s ease}
  .gx-big-btn .gx-big-ic{font-size:19px;line-height:1}
  .gx-big-btn::before{content:"";position:absolute;top:0;left:-70%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-18deg);animation:gxSheen 3.6s ease-in-out infinite;pointer-events:none}
  .gx-big-btn.dep{background:linear-gradient(135deg,#22a768,#12704a);animation:gxGlowDep 2.8s ease-in-out infinite}
  .gx-big-btn.pt{background:linear-gradient(135deg,#7d55d6,#513593);animation:gxGlowPt 2.8s ease-in-out infinite}
  .gx-big-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
  .gx-big-btn:active{transform:translateY(1px)}
  @keyframes gxSheen{0%{left:-70%}55%{left:140%}100%{left:140%}}
  @keyframes gxGlowDep{0%,100%{box-shadow:0 6px 16px -8px rgba(30,142,90,.55)}50%{box-shadow:0 10px 28px -6px rgba(34,167,104,.9),0 0 14px -2px rgba(34,167,104,.55)}}
  @keyframes gxGlowPt{0%,100%{box-shadow:0 6px 16px -8px rgba(108,74,182,.55)}50%{box-shadow:0 10px 28px -6px rgba(125,85,214,.9),0 0 14px -2px rgba(125,85,214,.55)}}
  .gx-sub-btn{position:relative;overflow:hidden;padding:11px;border-radius:11px;border:1.5px solid;background:var(--surface);cursor:pointer;font-size:13.5px;font-weight:800;transition:background .15s ease,box-shadow .15s ease,transform .12s ease}
  .gx-sub-btn::after{content:"";position:absolute;top:0;left:-70%;width:50%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);transform:skewX(-18deg);animation:gxSheen 4.2s ease-in-out infinite;pointer-events:none;opacity:.7}
  .gx-sub-btn.dep{color:#12784e;border-color:#8fd3af;box-shadow:0 0 0 0 rgba(30,142,90,.4);animation:gxPulseDep 2.8s ease-in-out infinite}
  .gx-sub-btn.pt{color:#5A3A9E;border-color:#c3aef0;box-shadow:0 0 0 0 rgba(108,74,182,.4);animation:gxPulsePt 2.8s ease-in-out infinite}
  @keyframes gxPulseDep{0%,100%{box-shadow:0 2px 8px -4px rgba(30,142,90,.35)}50%{box-shadow:0 4px 14px -3px rgba(30,142,90,.55)}}
  @keyframes gxPulsePt{0%,100%{box-shadow:0 2px 8px -4px rgba(108,74,182,.35)}50%{box-shadow:0 4px 14px -3px rgba(108,74,182,.55)}}
  .gx-sub-btn.dep:hover{background:#EAF7F0;transform:translateY(-1px)}
  .gx-sub-btn.pt:hover{background:#F3EEFB;transform:translateY(-1px)}
  .gx-sub-btn:active{transform:translateY(1px)}
  @media(prefers-reduced-motion:reduce){ .gx-big-btn,.gx-big-btn.dep,.gx-big-btn.pt,.gx-sub-btn.dep,.gx-sub-btn.pt{animation:none} .gx-big-btn::before,.gx-sub-btn::after{display:none} }
  .gx-newtx-btn{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:15px;border-radius:13px;border:none;cursor:pointer;font-size:15px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--primary),var(--primary-d,#0a3f48));box-shadow:var(--shadow);margin-bottom:14px}
  .gx-newtx-btn:hover{filter:brightness(1.06)}
  .gx-newtx-btn:active{transform:translateY(1px)}
  .gx-points-h{font-size:14px;font-weight:800;color:var(--ink);margin:4px 0 8px}
  @media(max-width:560px){ .gx-big-actions{grid-template-columns:1fr} .gx-dash-init{min-width:0;width:100%} }
  .gx-op-h{font-size:14px;font-weight:800;color:var(--ink);margin-bottom:10px}
  .gx-op-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
  .gx-op-kpi{background:var(--surface-2);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:1px;border-left:3px solid var(--line)}
  .gx-op-kpi span{font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);font-weight:800}
  .gx-op-kpi b{font-size:15px;color:var(--ink)}
  .gx-op-kpi.dep{border-left-color:#1E8E5A}.gx-op-kpi.dep b{color:#1E8E5A}
  .gx-op-kpi.ret{border-left-color:#C0392B}.gx-op-kpi.ret b{color:#C0392B}
  .gx-op-kpi.net{border-left-color:var(--primary)}
  .gx-pdv-tot{background:#6C4AB6;color:#fff;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:800;margin-left:6px}
  .gx-pdv-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
  .gx-pdv-kpi{background:var(--surface-2);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:1px;border-left:3px solid var(--line)}
  .gx-pdv-kpi span{font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);font-weight:800}
  .gx-pdv-kpi b{font-size:15px;color:var(--ink)}
  .gx-pdv-kpi.ok{border-left-color:#1E8E5A}.gx-pdv-kpi.ok b{color:#1E8E5A}
  .gx-pdv-kpi.wait{border-left-color:#C68A00}.gx-pdv-kpi.wait b{color:#946400}
  .gx-pdv-kpi.fail{border-left-color:#C0392B}.gx-pdv-kpi.fail b{color:#C0392B}
  @media(max-width:560px){ .gx-pdv-sum{grid-template-columns:1fr} }
  .gx-op-list{display:flex;flex-direction:column;gap:7px}
  .gx-op-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;border-left:3px solid #1E8E5A}
  .gx-op-item.ret{border-left-color:#C0392B}
  .gx-op-item.req{border-left-color:#6C4AB6}
  .gx-op-l{display:flex;flex-direction:column;gap:2px;min-width:74px;flex:none}
  .gx-op-badge{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;background:#E4F3EB;color:#1E8E5A;text-align:center}
  .gx-op-badge.ret{background:#FCEBE9;color:#C0392B}
  .gx-op-badge.req{background:#EEE8FA;color:#6C4AB6}
  .gx-op-res{font-size:11px;color:var(--ink-soft);font-weight:700;text-align:center}
  .gx-op-c{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .gx-op-c>b{font-size:15px;color:var(--ink)}
  .gx-op-mv{font-size:11.5px;color:var(--ink-soft)}
  .gx-op-meta{font-size:11px;color:var(--ink-faint)}
  .gx-op-r{display:flex;align-items:center;gap:6px;flex:none}
  .gx-op-st{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft)}
  .gx-op-st.ok{background:#E4F3EB;color:#1E8E5A}.gx-op-st.ko{background:#FCEBE9;color:#C0392B}.gx-op-st.wait{background:#FFF4E5;color:#B26A00}
  .gx-op-empty,.gx-op-more{font-size:12.5px;color:var(--ink-faint);padding:6px 2px}
  .gx-op-tabs{display:flex;gap:8px;margin-bottom:12px}
  .gx-sec-lbl{font-size:11px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;margin:8px 0 5px;padding-left:2px}
  .gx-sec-lbl.out{color:#B23B0C}
  .gx-sec-lbl.in{color:#0E7A50}
  .gx-op-tab{flex:1;padding:11px 6px;border:1px solid var(--line);background:var(--surface);border-radius:10px;font-weight:800;font-size:13px;cursor:pointer;color:var(--ink-soft);line-height:1.15}
  .gx-op-tab.on{background:var(--primary);color:#fff;border-color:var(--primary)}
  .gx-comp{margin-bottom:10px}
  .gx-comp-h{font-size:12px;font-weight:800;color:var(--ink-soft);margin-bottom:6px}
  .gx-comp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
  .gx-comp-cell{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:7px 8px;display:flex;flex-direction:column;gap:1px;text-align:center}
  .gx-comp-cell span{font-size:10.5px;text-transform:uppercase;letter-spacing:.02em;color:var(--ink-faint);font-weight:800}
  .gx-comp-cell b{font-size:13.5px;color:var(--ink)}
  .gx-comp-cell.neg b{color:#C0392B}
  @media(max-width:560px){ .gx-comp-grid{grid-template-columns:repeat(3,1fr)} .gx-op-sum{grid-template-columns:1fr} }
  .gx-work-f{display:flex;flex-direction:column;gap:5px}
  .gx-work-lab{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-weight:700}
  .gx-work-f .fld{max-width:180px}
  .gx-work-info{font-size:13px;color:var(--ink-soft)}
  .gx-work-note{font-size:11px;color:var(--ink-faint);margin-top:2px}
  .gx-eq{font-weight:700}
  .gx-eq.ok{color:#0E7A50}
  .gx-eq.ko{color:#B23B0C}
  .gx-ok{color:#0E7A50!important}
  .gx-ko{color:#C20714!important}
  .gx-justif{font-size:12px;max-width:220px;white-space:normal}
  .gx-tag{font-size:10px;font-weight:800;padding:2px 7px;border-radius:999px;letter-spacing:.03em}
  .gx-tag.ajout{background:#E4F3EB;color:#0E7A50}
  .gx-tag.manquant{background:#FBE3D4;color:#B23B0C}
  .icb.reg{color:#0E7A50}
  .icb.reg:hover{background:#E4F3EB}
  .gx-just0{font-size:11px;color:var(--ink-soft);margin-top:2px}
  .gx-reglist{font-size:11px;color:var(--ink-soft);margin-top:1px}
  /* Analyse de l'écart */
  /* Diagrammes du tableau de bord, sous les dettes : ils équilibrent les deux colonnes */
  .dash-charts{display:flex;flex-direction:column;gap:14px;margin-top:14px}
  .dash-chart{margin:0}
  .dash-chart .chart-title{font-size:13px}
  @media(min-width:1100px){
    /* La colonne de gauche s'étire pour arriver à la hauteur du Contrôle */
    #dettes{display:flex;flex-direction:column}
    .dash-charts{flex:1}
    .dash-chart{flex:1;display:flex;flex-direction:column;justify-content:center}
  }
  /* ---------- Types de client (fiche + formulaire) ---------- */
  .ct-picks{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
  .ct-pick{flex:1;min-width:132px;display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:12px;
    border:1px solid var(--line);background:var(--surface);cursor:pointer;transition:border-color .15s,background .15s}
  .ct-pick:hover{background:var(--surface-2)}
  .ct-pick input{margin-top:2px;accent-color:#0E5561}
  .ct-pick span{font-size:13px;font-weight:800;line-height:1.25}
  .ct-pick em{display:block;font-style:normal;font-size:10.5px;font-weight:600;color:var(--ink-soft);margin-top:2px}
  .ct-pick:has(input:checked){border-color:#0E5561;background:rgba(14,85,97,.07)}
  .ct-pick.dim{opacity:.45}
  .ct-tx{margin-top:10px;display:flex;flex-direction:column;gap:8px}
  .ctx-row{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:9px 11px;border-radius:12px;
    background:var(--surface-2);border:1px solid var(--line)}
  .ctx-c{flex:none;min-width:92px;font-size:12.5px;font-weight:900;letter-spacing:.02em}
  .ctx-row .ct-picks{flex:1;margin-top:0}
  .ctx-row .ct-pick{min-width:120px;padding:8px 10px;background:var(--surface)}
  @media(max-width:560px){ .ctx-row{flex-direction:column;align-items:stretch;gap:7px} }
  /* Photo de client — facultative, jamais imposée */
  /* La photo remplace l'initiale partout où le client apparaît */
  .clx-av.ph,.qc-av.ph{padding:0;overflow:hidden;background:var(--surface-2)}
  .clx-av img,.qc-av img{width:100%;height:100%;object-fit:cover;display:block}
  .clx-av{overflow:hidden}
  .qc-av{overflow:hidden}
  .cl-ph-row{display:flex;align-items:flex-start;gap:14px;margin-bottom:13px}
  .cl-ph{position:relative;flex:none;width:66px;height:66px;border-radius:50%;cursor:pointer;overflow:visible;
    display:grid;place-items:center;background:var(--surface-2);border:2px dashed var(--line);
    transition:border-color .18s, background .18s}
  .cl-ph:hover{border-color:rgba(14,85,97,.45);background:rgba(14,85,97,.06)}
  .cl-ph.has{border-style:solid;border-color:rgba(14,85,97,.3);background:var(--surface)}
  .clp-ini{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;overflow:hidden;
    font-size:24px;font-weight:900;color:#0E5561}
  .clp-ini img{width:100%;height:100%;object-fit:cover;border-radius:50%}
  .clp-cam{position:absolute;right:-2px;bottom:-2px;width:26px;height:26px;border-radius:50%;display:grid;
    place-items:center;background:#0E5561;border:2px solid var(--surface)}
  .clp-cam svg{width:13px;height:13px;color:#fff}
  .cl-ph-t{flex:1;min-width:0}
  .cl-ph-a{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}
  .cl-ph-h{font-size:11px;color:var(--ink-soft);font-weight:700}
  .cl-ph-x{background:transparent;border:0;color:#B23B0C;font-size:11.5px;font-weight:800;cursor:pointer;
    text-decoration:underline;padding:2px}
  .ctc-all{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 11px;margin-bottom:8px;
    border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
  .ctc-all-l{font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
  .ctc-b{padding:6px 12px;border-radius:99px;border:1px solid var(--line);background:var(--surface);cursor:pointer;
    font-size:11.5px;font-weight:800;color:#0E5561;transition:background .15s,border-color .15s,transform .12s}
  .ctc-b:hover{background:rgba(14,85,97,.09);transform:translateY(-1px)}
  .ctc-b.com{color:#0E7A50;border-color:rgba(30,142,90,.35)}
  .ctc-b.com:hover{background:rgba(30,142,90,.11)}
  .ctc-b.clr{color:var(--ink-soft)}
  .ctc-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid var(--line)}
  .ctc-row:last-child{border-bottom:0}
  .ctc-hors{margin:10px 0 0;padding:9px 11px;border-radius:10px;background:var(--surface-2);
    border:1px solid var(--line);font-size:11.5px;color:var(--ink-soft);font-weight:700;line-height:1.45}
  .ctc-caisse{flex:none;min-width:104px;font-size:12.5px;font-weight:900;letter-spacing:.02em}
  .ctc-row .ct-picks{flex:1;margin-top:0}
  .ctc-row .ct-pick{min-width:112px;padding:8px 10px}
  .ct-none span{color:var(--ink-soft)}
  @media(max-width:560px){ .ctc-row{flex-direction:column;align-items:stretch;gap:6px} }
  /* ---------- Volumétrie ---------- */
  .vol-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .vol-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0 0 18px}
  .vol-kpi{padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:var(--surface)}
  .vol-kpi span{display:block;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .vol-kpi b{display:block;font-size:24px;font-weight:900;margin-top:4px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .vol-kpi em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);margin-top:3px}
  .vol-kpi.com{border-color:rgba(30,142,90,.3);background:rgba(30,142,90,.06)}
  .vol-kpi.com b{color:#0E7A50}
  .vol-kpi.nocom{border-color:rgba(14,85,97,.24);background:rgba(14,85,97,.05)}
  .vol-kpi.nc{border-color:rgba(178,59,12,.28);background:rgba(178,59,12,.05)}
  .vol-kpi.nc b{color:#B23B0C}
  .vol-table td.r,.vol-table th.r{text-align:right}
  .vol-table td.com{color:#0E7A50;font-weight:800}
  .vol-tag{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:800}
  .vol-tag.com{background:rgba(30,142,90,.14);color:#0E7A50}
  /* Détail des sous-caisses dans le tableau « Par caisse » */
  .vol-ss-n{display:inline-block;margin-left:8px;font-size:9.5px;font-weight:800;padding:2px 7px;
    border-radius:99px;background:rgba(14,85,97,.1);color:#0E5561;vertical-align:middle}
  .vol-ss td{font-size:11.5px;color:var(--ink-soft);background:var(--surface-2);padding-top:5px;padding-bottom:5px}
  .vol-ss td:first-child{padding-left:22px}
  .vol-tag.nocom{background:rgba(14,85,97,.1);color:#0E5561}
  .vol-bar{display:inline-block;width:56px;height:6px;border-radius:99px;background:rgba(0,0,0,.08);vertical-align:middle;margin-right:6px;overflow:hidden}
  .vol-bar i{display:block;height:100%;background:#1E8E5A}
  .vol-nc td{background:rgba(178,59,12,.06);color:#7A3B00;font-size:12px;font-weight:700}
  /* Filtres, jauges et graphique de la volumétrie */
  .vol-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
  .vol-filters .fld{max-width:230px}
  .vol-kpi.moy{border-color:rgba(108,74,182,.24);background:rgba(108,74,182,.05)}
  .vol-mini{display:block;height:5px;border-radius:99px;background:rgba(0,0,0,.08);margin-top:8px;overflow:hidden}
  .vol-mini i{display:block;height:100%;background:#1E8E5A}
  .vol-mini i.b{background:#0E5561}
  .vol-table .th-sub{display:block;font-size:9.5px;font-weight:700;opacity:.7;text-transform:none;letter-spacing:0}
  .vol-table td.warn{color:#B23B0C;font-weight:800}
  .vol-tot td{background:var(--surface-2);border-top:2px solid var(--line)}
  .vol-dow{font-size:10.5px;color:var(--ink-soft);font-weight:700;text-transform:uppercase}
  /* Clients : liste déroulante + fiche du client choisi */
  .vcl{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:14px 16px 16px}
  .vcl-sel{width:100%;max-width:520px;font-weight:700}
  .vcl-d{margin-top:14px}
  .vcl-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;
    padding-bottom:13px;border-bottom:1px solid var(--line);margin-bottom:14px}
  .vcl-h h3{margin:0;font-size:19px;font-weight:900;letter-spacing:-.02em;overflow-wrap:anywhere}
  .vcl-h p{margin:3px 0 0;font-size:12px;color:var(--ink-soft);font-weight:700}
  .vcl-t{text-align:right}
  .vcl-t span{display:block;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .vcl-t b{display:block;font-size:23px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
  .vcl-t em{display:block;font-style:normal;font-size:11.5px;color:#0E7A50;font-weight:800;margin-top:2px}
  .vcl-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
  .vcl-c{padding:12px 14px;border-radius:13px;border:1px solid var(--line);background:var(--surface-2)}
  .vcl-c.warn{border-color:rgba(178,59,12,.28);background:rgba(178,59,12,.05)}
  .vcl-c>span{display:block;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
  .vcl-c>b{display:block;font-size:19px;font-weight:900;margin-top:3px;font-variant-numeric:tabular-nums}
  .vcl-c>b.com{color:#0E7A50}
  .vcl-c.warn>b{color:#B23B0C}
  .vcl-c>em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);margin-top:4px}
  .vcl-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:13px}
  .vol-bar.wide{display:block;width:100%;height:6px;margin-top:9px}
  .vol-tag.warn{background:rgba(178,59,12,.12);color:#B23B0C}
  @media(max-width:560px){ .vol-filters .fld{max-width:none;flex:1} .vcl-sel{max-width:none} }
  /* Barre de repères ajoutée en tête des listes (historique, clients, dépenses…) */
  .cmd-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
    margin:0 0 12px;padding:9px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
  .cmd-chips{display:flex;gap:8px;flex-wrap:wrap;min-width:0}
  .cmd-chip{display:inline-flex;align-items:baseline;gap:6px;padding:5px 11px;border-radius:99px;
    background:var(--surface);border:1px solid var(--line)}
  .cmd-chip em{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
  .cmd-chip b{font-size:13px;font-weight:900;font-variant-numeric:tabular-nums}
  .cmd-chip.in b{color:#0E7A50}
  .cmd-chip.out b{color:#B23B0C}
  .cmd-acts{display:flex;gap:8px;flex-wrap:wrap}
  .cmd-btn{padding:7px 13px;border-radius:10px;border:1px solid var(--line);background:var(--surface);
    color:#0E5561;font-size:12.5px;font-weight:800;cursor:pointer;transition:background .15s,transform .12s}
  .cmd-btn:hover{background:rgba(14,85,97,.08);transform:translateY(-1px)}
  @media(max-width:560px){ .cmd-bar{flex-direction:column;align-items:stretch} .cmd-acts .cmd-btn{flex:1} }
  /* Résumé compact sur le tableau de bord + accès au détail */
  .sum-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
  .sum-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .sum-i{display:flex;flex-direction:column;gap:3px;min-width:0;padding:10px 12px;border-radius:12px;background:var(--surface-2)}
  .sum-i span{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .sum-i b{font-size:20px;font-weight:900;letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .sum-i.in b{color:#0E7A50}
  .sum-i.out b{color:#B23B0C}
  .sum-more{margin-top:12px;width:100%;padding:11px 14px;border-radius:12px;border:1px solid var(--line);
    background:var(--surface-2);color:#0E5561;font-size:13px;font-weight:800;cursor:pointer;
    transition:background .18s, transform .15s}
  .sum-more:hover{background:rgba(14,85,97,.09);transform:translateY(-1px)}
  .ctrl .sum-more{margin-top:14px}
  /* Onglets de la page Détails */
  .det-tabs{display:flex;gap:8px;padding:0 clamp(14px,3vw,26px) 12px;flex-wrap:wrap}
  .det-tab{padding:10px 16px;border-radius:99px;border:1px solid var(--line);background:var(--surface);
    color:var(--ink-soft);font-size:13px;font-weight:800;cursor:pointer;transition:background .18s,color .18s}
  .det-tab:hover{background:var(--surface-2)}
  .det-tab.on{background:#0E5561;border-color:#0E5561;color:#fff}
  @media(max-width:560px){ .sum-grid{grid-template-columns:1fr} }
  .eca-box{margin-top:10px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
  .eca-h{padding:8px 12px;background:var(--surface-2);font-size:11px;font-weight:900;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--line)}
  .eca-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:7px 12px;
    border-bottom:1px solid var(--line);font-size:12.5px}
  .eca-row span{font-weight:600;min-width:0}
  .eca-row em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:600}
  .eca-row b{font-weight:800;white-space:nowrap}
  .eca-row b.pos{color:#0E7A50}
  .eca-row b.neg{color:#B23B0C}
  .eca-row.mv{cursor:pointer}
  .eca-row.mv:hover{background:rgba(14,85,97,.05)}
  .eca-tot .eca-row{background:rgba(14,85,97,.07);font-weight:900}
  .eca-none{padding:8px 12px;font-size:12px;color:var(--ink-soft)}
  .eca-ok{padding:10px 12px;font-size:12.5px;font-weight:700;color:#0E7A50}
  .eca-warn{padding:11px 12px;font-size:12.5px;line-height:1.55;background:#FDF3E6;color:#7A3B00}
  .eca-warn ol{margin:7px 0 0;padding-left:18px}
  .eca-warn li{margin-bottom:4px}
  .tr-ecart{margin-top:10px;font-size:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .tr-reglist{margin-top:8px}
  .tr-regfold{margin-top:10px;border:1px solid #F0E2C4;background:#FFFDF8;border-radius:12px;overflow:hidden}
  #controle .gx-minis,#controle .tr-ecart,#controle .ctrl-ok{cursor:pointer}
  /* Historique des dépenses : groupes par mois, preuve photo */
  .dep-month{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:18px 2px 9px;padding-bottom:6px;border-bottom:2px solid var(--line);font-weight:900;font-size:13.5px;text-transform:capitalize}
  .dep-month:first-child{margin-top:4px}
  .dep-month-meta{font-weight:600;color:var(--ink-soft);font-size:12px;text-transform:none}
  .dep-proof{width:46px;height:46px;object-fit:cover;border-radius:9px;border:1px solid var(--line);cursor:zoom-in;flex:none;box-shadow:0 4px 10px -6px rgba(16,39,46,.4)}
  .proof-pick{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
  .proof-preview{position:relative;display:inline-flex;margin-left:2px}
  .proof-preview img{width:46px;height:46px;object-fit:cover;border-radius:9px;border:1px solid var(--line);box-shadow:0 4px 10px -6px rgba(16,39,46,.4)}
  .proof-x{position:absolute;top:-7px;right:-7px;width:20px;height:20px;border-radius:50%;border:none;background:#B8362E;color:#fff;font-size:11px;font-weight:900;cursor:pointer;line-height:1;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.3)}
  .proofview{position:fixed;inset:0;z-index:4200;background:rgba(8,20,24,.92);display:flex;align-items:center;justify-content:center;padding:22px;cursor:zoom-out;animation:fade .18s ease}
  .proofview img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.55)}
  /* Page plein écran : historique des régularisations */
  .regpage{position:fixed;inset:0;z-index:4000;background:var(--bg,#F2F6F7);display:flex;flex-direction:column;animation:fade .2s ease}
  .regpage-head{display:flex;align-items:center;gap:12px;padding:calc(14px + env(safe-area-inset-top,0)) 18px 14px;background:var(--primary);color:#fff;box-shadow:0 4px 14px rgba(10,66,76,.25)}
  .regpage-back{background:rgba(255,255,255,.16);border:none;color:#fff;width:38px;height:38px;border-radius:10px;font-size:19px;font-weight:900;cursor:pointer;flex:none}
  .regpage-back:hover{background:rgba(255,255,255,.26)}
  .regpage-title{font-size:17px;font-weight:900;line-height:1.2}
  .regpage-sub{font-size:12px;opacity:.88;margin-top:2px}
  .regpage-body{flex:1;overflow:auto;padding:18px;width:100%;max-width:860px;margin:0 auto;box-sizing:border-box}
  .regpage-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:6px 12px}
  .regpage-body .tr-regrow{padding:10px 4px}
  .tr-regdel{margin-left:auto;flex:0 0 auto;width:24px;height:24px;border:none;border-radius:50%;background:#FCE9E2;color:#B23B0C;font-weight:900;font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
  .tr-regdel:hover{background:#F6C9BA}
  .tr-regdel-all{margin-left:auto;background:#FCE9E2;border:1px solid #E4B9AB;color:#B23B0C;font-weight:800;font-size:12.5px;padding:8px 13px;border-radius:10px;cursor:pointer;white-space:nowrap}
  .tr-regdel-all:hover{background:#F6C9BA}
  .tr-regfold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 13px;font-size:13px;font-weight:700;color:var(--ink);user-select:none}
  .tr-regfold>summary::-webkit-details-marker{display:none}
  .tr-regfold>summary:hover{background:#FFF9EE}
  .tr-regfold-meta{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--ink-soft);font-size:12px}
  .tr-regfold-cnt{background:#F0E2C4;color:#7A5B12;border-radius:999px;padding:1px 8px;font-weight:800;font-size:11px}
  .tr-regfold-chev{transition:transform .18s ease;flex:0 0 auto}
  .tr-regfold[open] .tr-regfold-chev{transform:rotate(180deg)}
  .tr-regfold-body{padding:2px 13px 11px;border-top:1px solid #F5EBD6}
  .tr-regrow{display:flex;align-items:baseline;gap:8px;padding:7px 0;border-bottom:1px dashed #EEE3CB;font-size:12.5px}
  .tr-regrow:last-child{border-bottom:0}
  .tr-regrow.latest{background:#FCF6E7;margin:0 -13px;padding-left:13px;padding-right:13px;border-radius:6px}
  .tr-regrow-n{flex:0 0 auto;width:22px;height:22px;border-radius:6px;background:var(--primary);color:#fff;font-weight:800;font-size:11px;display:flex;align-items:center;justify-content:center}
  .tr-regrow.latest .tr-regrow-n{background:#C58A12}
  .tr-regrow-mont{font-weight:800;color:var(--ink)}
  .tr-regrow-meta{color:var(--ink-soft);font-size:11.5px}
  .tr-regrow-badge{font-size:10px;font-weight:800;color:#C58A12;background:#FBEFCF;border-radius:999px;padding:1px 7px;margin-left:auto;flex:0 0 auto}
  #actBtn,#selBtn{display:inline-flex;align-items:center;gap:6px}
  #selBtn.on{color:#fff;background:#C0392B;border-color:#C0392B}
  .sel-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0 0;padding:10px 14px;background:#C0392B10;border:1px solid #C0392B33;border-radius:12px}
  .selb-lab{font-size:13px;font-weight:800;color:#8E2A1E}
  .mp-du{color:#1E8E5A}
  .mp-je{color:#C0392B}
  .mp-det-sub{display:block;font-size:10.5px;font-weight:600;color:var(--ink-soft);text-transform:none;letter-spacing:0}
  .join-short{width:100%;box-sizing:border-box;padding:11px 13px;border:1px solid rgba(255,255,255,.35);border-radius:11px;background:rgba(255,255,255,.12);color:#fff;font-size:14.5px;font-weight:700;margin-bottom:8px}
  .join-short::placeholder{color:rgba(255,255,255,.65);font-weight:600}
  .join-sql{display:block;width:100%;margin-top:8px;padding:9px;border:1px solid rgba(255,255,255,.35);border-radius:10px;background:rgba(255,255,255,.12);color:#fff;font-size:12.5px;font-weight:800;cursor:pointer}
  .join-diag{display:block;margin-top:8px;padding:8px 10px;border-radius:9px;background:rgba(0,0,0,.18);font-size:11.5px;font-weight:600;line-height:1.5;white-space:pre-wrap;text-align:left;opacity:.95}
  .join-long>summary{cursor:pointer;font-size:12px;font-weight:700;opacity:.8;margin-bottom:6px}
  .txmenu-trace{padding:9px 14px;border-bottom:1px solid var(--line);background:rgba(14,85,97,.05)}
  .txmenu-trace-t{display:block;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:6px}
  .txt-step{display:flex;align-items:flex-start;gap:8px;padding:3px 0}
  .txt-n{flex:0 0 auto;width:17px;height:17px;border-radius:50%;background:#0E5561;color:#fff;font-size:10px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
  .txt-step b{display:block;font-size:12.5px;font-weight:800;line-height:1.25}
  .txt-step span{display:block;font-size:11px;font-weight:600;color:var(--ink-soft);line-height:1.4}
  .fdci-solde{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:8px 10px;border-radius:9px;margin-bottom:6px;
    background:rgba(14,85,97,.07);font-size:12px;font-weight:700}
  .fdci-solde b{font-size:15px;font-weight:900}
  .fdci-solde em{font-style:normal;font-size:11px;font-weight:600;color:var(--ink-soft);width:100%}
  .fdci-solde.pos b{color:#B23B0C}
  .fdci-solde.neg b{color:#0E7A50}
  .fdci-delay{margin-top:6px;font-size:12px;font-weight:700;color:#0E5561;background:rgba(14,85,97,.07);border-radius:9px;padding:7px 10px;line-height:1.45}
  .fdci-delay span{font-weight:600;opacity:.8}
  .fdci-delay.slow{color:#8E5A00;background:#FFF3D6}
  .fdci-delay.none{color:var(--ink-soft);background:rgba(0,0,0,.05)}
  .fdci-delay.pending{color:#B23B0C;background:#FCE9E2}
  /* « au-delà de son habitude » : une remarque, pas une donnée — elle se distingue
     de l'instant de départ, qui est un fait vérifiable sur la transaction. */
  .fdci-delay em{font-style:normal;font-weight:800;opacity:.85}
  .fdci-delay em::before{content:"· "}
  .tx-chain{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin-top:5px;cursor:help}
  .txc-step{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;color:#0E5561;background:#DFF1F4;border-radius:7px;padding:2px 6px;white-space:nowrap}
  .txc-step b{font-size:9px;font-weight:900;color:#fff;background:#0E5561;border-radius:50%;width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center}
  .txc-arrow{font-size:10px;font-weight:800;color:var(--ink-soft)}
  /* ---------- Choix rapide du client ---------- */
  #qcScrim .sheet{animation:qcIn .3s cubic-bezier(.22,.61,.36,1) both}
  @keyframes qcIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
  .qc-sheet{max-width:520px}
  /* En-tête coloré : on sait tout de suite ce qu'on nous demande */
  .qc-h{background:linear-gradient(135deg,#0F5D6A,#0A4149);border-bottom:0}
  .qc-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .qc-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:20px;
    background:rgba(255,255,255,.18)}
  .qc-h h2{margin:0;color:#fff;font-size:19px;font-weight:900;letter-spacing:-.02em}
  .qc-h p{margin:2px 0 0;color:#A9CDD1;font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .qc-h .x{color:#fff}
  .qc-body{padding-top:16px}
  /* Le champ, mis en scène : loupe à gauche, rappel de touche à droite */
  .qc-field{position:relative;display:flex;align-items:center}
  .qc-loupe{position:absolute;left:15px;width:19px;height:19px;color:var(--ink-soft);pointer-events:none}
  .qc-in{width:100%;font-size:17px;font-weight:800;padding:16px 78px 16px 44px;border-radius:14px;
    border:1.5px solid var(--line);transition:border-color .16s, box-shadow .16s, background .16s}
  .qc-in:focus{outline:none;border-color:#0E5561;box-shadow:0 0 0 4px rgba(14,85,97,.13);background:#fff}
  .qc-kbd{position:absolute;right:13px;font-size:10px;font-weight:800;letter-spacing:.04em;color:var(--ink-soft);
    background:var(--surface-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:7px;padding:4px 8px}
  .qc-list{margin-top:14px;display:flex;flex-direction:column;gap:7px;max-height:min(48vh,360px);overflow-y:auto;
    padding:2px}
  /* Chaque proposition arrive en cascade */
  .qc-i{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;border-radius:14px;
    border:1px solid var(--line);background:var(--surface);cursor:pointer;
    transition:background .15s,border-color .15s,transform .13s,box-shadow .15s;
    animation:qcUp .3s cubic-bezier(.22,.61,.36,1) both;animation-delay:var(--d,0ms)}
  @keyframes qcUp{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
  .qc-i:hover{background:var(--surface-2);transform:translateX(3px);box-shadow:0 10px 22px -16px rgba(10,65,73,.5)}
  /* Le premier est visiblement celui que touche « Entrée » */
  .qc-i.first{border-color:#0E5561;background:rgba(14,85,97,.07);box-shadow:0 0 0 3px rgba(14,85,97,.09)}
  .qc-i.first .qc-av{background:#0E5561;color:#fff}
  .qc-i.first .qc-go{color:#0E5561;opacity:1}
  .qc-i.qc-new{border-style:dashed}
  .qc-av{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;
    background:var(--surface-2);color:#0E5561;font-size:15px;font-weight:900}
  .qc-av.plus{background:rgba(14,85,97,.1);font-size:20px}
  .qc-n{flex:1;min-width:0}
  .qc-n b{display:block;font-size:14.5px;font-weight:900;overflow-wrap:anywhere;line-height:1.25}
  .qc-n em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:700;margin-top:1px}
  .qc-tags{display:flex;gap:4px;flex:none}
  .qc-tag{font-size:9.5px;font-weight:800;padding:3px 7px;border-radius:99px;background:rgba(14,85,97,.1);color:#0E5561}
  .qc-tag.com{background:rgba(30,142,90,.14);color:#0E7A50}
  .qc-s{flex:none;font-size:11.5px;font-weight:900;white-space:nowrap;padding:4px 9px;border-radius:99px}
  .qc-s.in{color:#0E7A50;background:rgba(30,142,90,.11)}
  .qc-s.out{color:#B23B0C;background:rgba(178,59,12,.1)}
  .qc-go{flex:none;width:17px;height:17px;color:var(--ink-soft);opacity:.5;transition:opacity .15s,transform .15s}
  .qc-i:hover .qc-go{opacity:1;transform:translateX(2px)}
  .qc-empty{padding:22px 4px;text-align:center;font-size:12.5px;color:var(--ink-soft)}
  .qc-note{margin:13px 0 0;font-size:11.5px;color:var(--ink-soft);text-align:center}
  .qc-note b{color:var(--ink);font-weight:900}
  #qcScrim #qcGo{flex:1}
  @media (prefers-reduced-motion: reduce){ #qcScrim .sheet,.qc-i{animation:none} .qc-i:hover{transform:none} }
  @media(max-width:560px){ .qc-in{font-size:16px;padding-right:16px} .qc-kbd{display:none} .qc-tags{display:none} }
  /* ---------- Étape 2 : caisses et montants ---------- */
  #qmScrim .sheet{animation:qcIn .3s cubic-bezier(.22,.61,.36,1) both}
  .qm-sheet{max-width:560px}
  .qm-h{background:linear-gradient(135deg,#0F5D6A,#0A4149);border-bottom:0}
  .qm-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .qm-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:21px;
    background:rgba(255,255,255,.18);color:#fff}
  .qm-h h2{margin:0;color:#fff;font-size:19px;font-weight:900;letter-spacing:-.02em}
  .qm-h p{margin:2px 0 0;color:#A9CDD1;font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .qm-h .x{color:#fff}
  .qm-body{padding-top:18px}
  /* Deux blocs francs : ce qui sort en rouge tuilé, ce qui entre en vert */
  .qm-side{position:relative;padding:15px 16px;border-radius:17px;border:1px solid var(--line);background:var(--surface);
    transition:border-color .18s, box-shadow .18s;animation:qcUp .34s cubic-bezier(.22,.61,.36,1) both}
  .qm-side.in{animation-delay:.07s}
  /* Un liseré épais sur le bord gauche marque le sens */
  .qm-side::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:0 4px 4px 0}
  .qm-side.out{border-color:rgba(178,59,12,.2);background:linear-gradient(135deg,rgba(178,59,12,.05),transparent 60%)}
  .qm-side.out::before{background:linear-gradient(180deg,#E4572E,#B23B0C)}
  .qm-side.in{border-color:rgba(30,142,90,.22);background:linear-gradient(135deg,rgba(30,142,90,.05),transparent 60%)}
  .qm-side.in::before{background:linear-gradient(180deg,#2FAF6E,#0E7A50)}
  .qm-side:focus-within{box-shadow:0 12px 30px -18px rgba(10,65,73,.55)}
  .qm-side.out:focus-within{border-color:rgba(178,59,12,.42)}
  .qm-side.in:focus-within{border-color:rgba(30,142,90,.45)}
  /* Intitulé avec sa flèche */
  .qm-cap{display:flex;align-items:center;gap:11px;margin-bottom:12px}
  .qm-fl{flex:none;width:34px;height:34px;border-radius:11px;display:grid;place-items:center}
  .qm-fl svg{width:18px;height:18px}
  .qm-side.out .qm-fl{background:rgba(178,59,12,.12);color:#B23B0C}
  .qm-side.in .qm-fl{background:rgba(30,142,90,.13);color:#0E7A50}
  .qm-capt b{display:block;font-size:14px;font-weight:900;letter-spacing:-.01em}
  .qm-capt em{display:block;font-style:normal;font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:1px}
  .qm-row{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:10px}
  .qm-row .fld{padding:13px 14px;border-radius:12px;font-weight:700}
  /* Le montant, mis en avant avec sa devise */
  /* Seconde liste : la sous-caisse, dans la fenêtre « caisses et montants » */
  /* Rappel du total de la caisse mère, sous celui de la sous-caisse */
  /* ---------- Fenêtre de choix d'une sous-caisse ---------- */
  .sc-sheet{max-width:440px}
  .sc-b{display:flex;flex-direction:column;gap:11px;padding-top:15px}
  /* Chaque sous-caisse : pastille, nom, part, montant — et une flèche d'appel */
  .sc-i{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:5px 13px;align-items:center;
    padding:15px 44px 15px 15px;border-radius:17px;border:1px solid var(--line);background:var(--surface);
    cursor:pointer;text-align:left;overflow:hidden;
    transition:border-color .18s, box-shadow .18s, transform .16s, background .18s;
    animation:scIn .34s cubic-bezier(.22,.61,.36,1) both; animation-delay:var(--d,0ms)}
  @keyframes scIn{from{opacity:0;transform:translateY(9px) scale(.985)}to{opacity:1;transform:none}}
  .sc-i::after{content:"";position:absolute;inset:0;border-radius:17px;pointer-events:none;
    background:linear-gradient(100deg,rgba(127,212,193,.2),transparent 62%);opacity:0;transition:opacity .2s}
  .sc-i:hover::after{opacity:1}
  .sc-i:hover{border-color:rgba(14,85,97,.42);box-shadow:0 16px 32px -20px rgba(10,65,73,.6);transform:translateY(-2px)}
  .sc-i:active{transform:translateY(-1px) scale(.99)}
  .sc-i:focus-visible{outline:2px solid rgba(14,85,97,.6);outline-offset:2px}
  .sc-i.sel{border-color:#0E5561;background:linear-gradient(120deg,rgba(14,85,97,.09),rgba(127,212,193,.07))}
  .sc-i.vide{background:rgba(178,59,12,.035);border-color:rgba(178,59,12,.22)}
  /* Pastille avec l'initiale distinctive de la sous-caisse */
  .sc-av{grid-row:1/3;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;
    background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;font-size:19px;font-weight:900;
    box-shadow:0 8px 18px -11px rgba(10,65,73,.85)}
  .sc-i.vide .sc-av{background:linear-gradient(135deg,#C4552B,#8F2E10)}
  .sc-t{min-width:0}
  .sc-t b{display:block;font-size:14.5px;font-weight:900;letter-spacing:-.01em;overflow-wrap:anywhere;line-height:1.2}
  .sc-t em{display:block;font-style:normal;font-size:11px;font-weight:700;color:var(--ink-soft);margin-top:2px}
  .sc-r{text-align:right;white-space:nowrap}
  .sc-v{display:block;font-size:18px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
  .sc-cur{display:block;font-size:9px;font-weight:900;letter-spacing:.08em;color:var(--ink-soft);margin-top:1px}
  .sc-i.vide .sc-v{color:#B23B0C}
  .sc-bar{grid-column:2/-1;height:5px;border-radius:99px;background:rgba(0,0,0,.07);overflow:hidden;margin-top:3px}
  .sc-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#7FD4C1,#0E5561);
    transition:width .4s cubic-bezier(.22,.61,.36,1)}
  .sc-i.vide .sc-bar i{background:#B23B0C}
  .sc-tag{position:absolute;top:11px;right:34px;font-size:9px;font-weight:900;letter-spacing:.06em;
    text-transform:uppercase;padding:3px 8px;border-radius:99px;background:#0E5561;color:#fff}
  .sc-w{grid-column:2/-1;font-size:10.5px;font-weight:800;color:#B23B0C;margin-top:2px}
  .sc-go{position:absolute;right:15px;top:50%;transform:translateY(-50%);font-size:22px;font-weight:300;
    color:var(--ink-soft);opacity:.45;transition:opacity .18s, transform .18s}
  .sc-i:hover .sc-go{opacity:1;transform:translateY(-50%) translateX(3px);color:#0E5561}
  .sc-note{margin:4px 0 0;text-align:center;font-size:11px;color:var(--ink-soft);line-height:1.5}
  .sc-note b{color:var(--ink);font-weight:800}
  @media (prefers-reduced-motion: reduce){
    .sc-i{animation:none} .sc-i:hover{transform:none} .sc-bar i{transition:none}
  }
  @media(max-width:560px){
    .sc-i{padding:13px 38px 13px 13px;gap:4px 11px}
    .sc-av{width:38px;height:38px;font-size:16px}
    .sc-v{font-size:16px}
  }
  .qs-mere{display:flex;align-items:center;gap:6px;margin-top:4px;padding-left:2px;
    font-size:10.5px;font-weight:700;opacity:.72}
  .qs-mc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .qs-mv{font-variant-numeric:tabular-nums;font-weight:800}
  .qs-mv.fin{font-weight:900}
  .qs-ma{opacity:.6}
  .qm-sous{margin-top:7px;border-radius:11px;font-weight:800;
    border-color:rgba(14,85,97,.35);background:rgba(14,85,97,.06)}
  .qm-amtw{position:relative;display:flex;align-items:center}
  .qm-amt{width:100%;font-size:21px;font-weight:900;text-align:right;font-variant-numeric:tabular-nums;
    padding-right:54px !important}
  .qm-cur{position:absolute;right:13px;font-size:10.5px;font-weight:900;letter-spacing:.06em;color:var(--ink-soft);
    pointer-events:none}
  .qm-side.out .qm-amt:focus{border-color:#B23B0C;box-shadow:0 0 0 4px rgba(178,59,12,.13)}
  .qm-side.in .qm-amt:focus{border-color:#0E7A50;box-shadow:0 0 0 4px rgba(30,142,90,.14)}
  /* Rappel du total de la caisse mère, sous le solde de la sous-caisse (v359) */
  .mv-mere{display:block;font-style:normal;font-size:9.5px;font-weight:700;opacity:.6;margin-top:1px;
    font-variant-numeric:tabular-nums}
  /* Solde avant → après */
  .qm-solde{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:11px;min-height:20px;font-size:12px}
  .qs-c{font-weight:900;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);
    background:var(--surface-2);padding:3px 9px;border-radius:99px}
  .qs-v{font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink-soft)}
  .qs-v.fin{color:var(--ink);font-weight:900}
  .qs-v.fin.neg{color:#B23B0C}
  .qs-a{color:var(--ink-soft);font-weight:900}
  .qm-warn{font-size:10.5px;font-weight:900;color:#fff;background:#B23B0C;padding:3px 9px;border-radius:99px}
  /* Bouton d'inversion, posé entre les deux blocs */
  .qm-swap{display:flex;justify-content:center;margin:-13px 0;position:relative;z-index:2}
  .qm-swap button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);
    color:#0E5561;cursor:pointer;display:grid;place-items:center;
    box-shadow:0 6px 16px -6px rgba(10,65,73,.45);transition:transform .25s, background .15s, color .15s}
  .qm-swap button svg{width:19px;height:19px}
  .qm-swap button:hover{background:#0E5561;color:#fff;transform:rotate(180deg) scale(1.06)}
  /* Verdict d'équilibre */
  .qm-eq{display:flex;align-items:center;gap:10px;margin-top:15px;padding:12px 14px;border-radius:13px;
    font-size:12.5px;font-weight:700;animation:qcUp .3s cubic-bezier(.22,.61,.36,1) both}
  .qm-eq b{font-weight:900}
  .qe-ic{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900}
  .qm-eq.ok{background:linear-gradient(135deg,rgba(30,142,90,.13),rgba(30,142,90,.06));color:#0E7A50;
    border:1px solid rgba(30,142,90,.25)}
  .qm-eq.ok .qe-ic{background:#0E7A50;color:#fff}
  .qm-eq.diff{background:linear-gradient(135deg,#FDF3E6,#FCF7EF);color:#7A3B00;border:1px solid #F0C68A}
  .qm-eq.diff .qe-ic{background:#E08A2B;color:#fff}
  .qm-err{margin:12px 0 0;font-size:12.5px;font-weight:800;color:#C0392B;min-height:16px}
  #qmScrim #qmGo{flex:1}
  @media (prefers-reduced-motion: reduce){
    #qmScrim .sheet,.qm-side,.qm-eq{animation:none}
    .qm-swap button:hover{transform:none}
  }
  @media(max-width:560px){
    .qm-row{grid-template-columns:1fr}
    .qm-amt{text-align:left;padding-right:54px !important}
  }
  /* ---------- Proposition de reçu après une action sur un solde client ---------- */
  .recu-sheet{max-width:520px}
  #recuScrim .sheet-h{background:linear-gradient(135deg,#0F5D6A,#0A4149);border-bottom:0}
  #recuScrim .sheet-h h2{color:#fff;font-size:16px}
  #recuScrim .sheet-h .x{color:#fff}
  .rc-hero{border-radius:16px;padding:16px;text-align:center;margin-bottom:14px;
    background:linear-gradient(160deg,rgba(14,85,97,.07),rgba(127,212,193,.13));border:1px solid rgba(14,85,97,.16)}
  .rc-lab{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
  .rc-amt{font-size:30px;font-weight:900;letter-spacing:-.02em;margin:4px 0 2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .rc-cli{font-size:13px;font-weight:800;color:var(--ink-soft);overflow-wrap:anywhere}
  .rc-rows{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
  .rc-r{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 13px;
    border-bottom:1px solid var(--line);font-size:12.5px}
  .rc-r:last-child{border-bottom:0}
  .rc-r span{color:var(--ink-soft);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
  .rc-r b{font-weight:900;text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .rc-r.ok b{color:#0E7A50}
  .rc-r.warn b{color:#B23B0C}
  .rc-r.tot{background:var(--surface-2)}
  .rc-r.tot b{font-size:14px}
  /* ---------- Reçu à envoyer : une invitation, pas une alarme ----------
     L'ambre attire l'œil sans crier au danger — le rouge est réservé aux vraies
     anomalies (manquants, caisse négative). Ici, il s'agit d'un geste à faire. */
  .rc-attente{display:inline-flex;align-items:center;gap:7px;margin-top:5px;padding:5px 12px 5px 9px;
    border-radius:99px;cursor:pointer;white-space:nowrap;position:relative;overflow:hidden;
    background:linear-gradient(135deg,#FFB020,#F08A24);color:#3A2400;border:0;
    box-shadow:0 4px 14px -6px rgba(240,138,36,.75);
    animation:rcGlow 2.2s ease-in-out infinite}
  .rc-attente svg{width:13px;height:13px;flex:none}
  .rc-attente b{font-size:11px;font-weight:900;letter-spacing:.01em}
  .rc-attente em{font-style:normal;font-size:9.5px;font-weight:800;opacity:.72;text-transform:uppercase;letter-spacing:.06em}
  /* Un reflet traverse la pastille : on la remarque sans qu'elle clignote */
  .rc-attente::after{content:"";position:absolute;top:0;left:-70%;width:45%;height:100%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);
    transform:skewX(-18deg);animation:rcSheen 3.4s ease-in-out infinite}
  .rc-attente:hover{filter:brightness(1.07);transform:translateY(-1px);animation:none}
  .rc-attente:hover::after{animation:none}
  @keyframes rcGlow{
    0%,100%{box-shadow:0 4px 14px -6px rgba(240,138,36,.75)}
    50%{box-shadow:0 6px 20px -5px rgba(240,138,36,.95)}
  }
  @keyframes rcSheen{0%{left:-70%}28%{left:130%}100%{left:130%}}
  /* Pastille de l'en-tête : même famille, plus affirmée */
  .recu-badge{display:inline-flex;align-items:center;gap:9px;padding:7px 15px 7px 8px;border-radius:99px;cursor:pointer;
    border:0;background:linear-gradient(135deg,#FFB020,#EF7F1F);color:#3A2400;
    font-size:12px;font-weight:800;white-space:nowrap;position:relative;overflow:hidden;
    box-shadow:0 6px 18px -8px rgba(239,127,31,.8);transition:filter .15s, transform .15s;
    animation:rcGlow 2.2s ease-in-out infinite}
  .recu-badge::after{content:"";position:absolute;top:0;left:-70%;width:40%;height:100%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);
    transform:skewX(-18deg);animation:rcSheen 3.4s ease-in-out infinite}
  .recu-badge:hover{filter:brightness(1.07);transform:translateY(-1px);animation:none}
  .recu-badge:hover::after{animation:none}
  .rb-ic{position:relative;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;
    background:rgba(255,255,255,.4);flex:none}
  .rb-ic svg{width:14px;height:14px}
  .rb-ic i{position:absolute;top:-4px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:99px;
    background:#3A2400;color:#FFD98A;font-style:normal;font-size:10.5px;font-weight:900;
    display:inline-flex;align-items:center;justify-content:center}
  .rb-t{font-weight:900;letter-spacing:.01em}
  @media (prefers-reduced-motion: reduce){
    .rc-attente,.recu-badge{animation:none}
    .rc-attente::after,.recu-badge::after{display:none}
  }
  @media(max-width:860px){
    .recu-badge{padding:6px 12px 6px 7px;font-size:11px;gap:7px}
    .rb-ic{width:23px;height:23px}
    .rc-attente em{display:none}
  }
  /* Numéro du reçu dans la journée, pour ce client — visible UNIQUEMENT sur le reçu */
  .rcpt-num td{background:#f4f8f9}
  .rcpt-num td b{font-size:1.05em}
  .rc-r.num b{color:#0E5561}
  /* Confirmation après envoi de la demande */
  #demOkScrim .sheet{animation:qcIn .28s cubic-bezier(.22,.61,.36,1) both;max-width:400px}
  .demok{text-align:center;padding-top:26px}
  .dk-ic{width:56px;height:56px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;
    background:rgba(30,142,90,.13);color:#0E7A50;font-size:28px;font-weight:900;
    animation:welPop .6s cubic-bezier(.34,1.45,.5,1) both}
  .demok h3{margin:0 0 8px;font-size:19px;font-weight:900;letter-spacing:-.02em}
  .demok p{margin:0;font-size:13px;color:var(--ink-soft);line-height:1.55}
  .dk-mail{margin:12px 0;padding:10px 14px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line);
    font-size:13.5px;font-weight:900;color:#0E5561;overflow-wrap:anywhere}
  .dk-note{margin-top:12px !important;font-size:12px !important}
  #demOkScrim #demOkBtn{flex:1}
  /* ⚠ L'écran de connexion est en couche 100 : les fenêtres ouvertes DEPUIS cet écran
     doivent passer AU-DESSUS, sinon elles s'affichent derrière et se mélangent à la
     saisie du code. Elles sont donc élevées au-delà. */
  #demScrim, #demOkScrim{z-index:130}
  /* ---------- Demande de réinitialisation ---------- */
  #demScrim .sheet,#demsScrim .sheet{animation:qcIn .28s cubic-bezier(.22,.61,.36,1) both}
  .dem-sheet{max-width:480px}
  .dems-sheet{max-width:560px}
  .dem-h{background:linear-gradient(135deg,#0F5D6A,#08363D);border-bottom:0}
  .dem-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .dem-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#7FD4C1;
    font-size:20px;background:rgba(127,212,193,.16);border:1px solid rgba(127,212,193,.3)}
  .dem-ic svg{width:21px;height:21px}
  .dem-h h2{margin:0;color:#fff;font-size:18px;font-weight:900;letter-spacing:-.02em}
  .dem-h p{margin:2px 0 0;color:#A9CDD1;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
  .dem-h .x{color:#fff}
  .dem-body{padding-top:16px}
  .dem-lead{margin:0 0 14px;font-size:13px;line-height:1.55;color:var(--ink-soft);text-align:center}
  /* Deux blocs, deux questions */
  .dem-card{padding:14px 15px;border-radius:16px;border:1px solid var(--line);background:var(--surface);margin-bottom:12px;
    transition:border-color .18s, box-shadow .18s;animation:tlsOpen .3s cubic-bezier(.22,.61,.36,1) both}
  .dem-card:nth-of-type(2){animation-delay:.06s}
  .dem-card:focus-within{border-color:rgba(14,85,97,.32);box-shadow:0 12px 28px -20px rgba(10,65,73,.5)}
  .dc-cap{display:flex;align-items:center;gap:9px;margin-bottom:11px;font-size:13px;font-weight:900;letter-spacing:-.01em}
  .dc-num{flex:none;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:11.5px;font-weight:900}
  /* Chaque champ avec son icône */
  .dem-f{position:relative;display:flex;align-items:center;margin-bottom:9px}
  .dem-f:last-child{margin-bottom:0}
  .dem-fi{position:absolute;left:13px;width:18px;height:18px;display:grid;place-items:center;
    color:var(--ink-soft);font-size:13px;font-weight:900;pointer-events:none}
  .dem-fi svg{width:17px;height:17px}
  .dem-f .fld{width:100%;padding:13px 14px 13px 40px;border-radius:12px;font-weight:700;
    transition:border-color .16s, box-shadow .16s}
  .dem-f .fld:focus{outline:none;border-color:#0E5561;box-shadow:0 0 0 4px rgba(14,85,97,.12)}
  .dem-card .grid2{gap:9px}
  .dem-note{width:100%;margin-top:9px;border-radius:12px;padding:11px 13px}
  /* Les trois temps, en frise horizontale */
  .dem-flow{display:flex;align-items:center;gap:6px;margin-top:14px;padding:13px 12px;border-radius:14px;
    background:linear-gradient(135deg,rgba(14,85,97,.07),rgba(127,212,193,.09));border:1px solid rgba(14,85,97,.16)}
  .df-s{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
    font-size:10.5px;font-weight:700;color:var(--ink-soft);line-height:1.3}
  .df-s b{display:block;font-weight:900;color:var(--ink);font-size:11px}
  .df-s span{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:11.5px;font-weight:900;box-shadow:0 4px 10px -5px rgba(10,65,73,.8)}
  .df-l{flex:none;width:16px;height:2px;border-radius:2px;background:rgba(14,85,97,.22);margin-top:-14px}
  @media(max-width:560px){
    .dem-flow{flex-direction:column;align-items:stretch;gap:9px}
    .df-s{flex-direction:row;text-align:left;gap:10px}
    .df-l{display:none}
  }
  .dem-hint{margin:5px 0 0;font-size:11.5px;font-weight:700;min-height:15px}
  .dem-hint.ok{color:#0E7A50}
  .dem-hint.warn{color:#7A3B00}
  .dc-tel{margin:8px 0 0;font-size:12px;color:var(--ink-soft);font-weight:700}
  .dc-warn{margin:9px 0 0;padding:8px 11px;border-radius:10px;background:#FDF3E6;border:1px solid #F0C68A;
    font-size:11.5px;font-weight:800;color:#7A3B00;line-height:1.45}
  .dem-err{margin:12px 0 0;min-height:17px;font-size:12.5px;font-weight:800;color:#C0392B;text-align:center}
  /* Pastille du propriétaire */
  .dem-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:99px;cursor:pointer;
    border:0;background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;font-size:12px;font-weight:800;
    white-space:nowrap;box-shadow:0 6px 16px -8px rgba(10,65,73,.8);transition:filter .15s,transform .15s}
  .dem-badge:hover{filter:brightness(1.1);transform:translateY(-1px)}
  .dem-badge b{font-size:13px;font-weight:900}
  .db-ic{font-size:13px;line-height:1}
  /* Une carte par demande */
  .dem-c{padding:14px 15px;border-radius:15px;border:1px solid var(--line);background:var(--surface);margin-bottom:11px}
  .dem-c:last-child{margin-bottom:0}
  .dc-h{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
  .dc-n{flex:1;min-width:0}
  .dc-n b{display:block;font-size:14px;font-weight:900;overflow-wrap:anywhere}
  .dc-n em{display:block;font-style:normal;font-size:11.5px;color:#0E5561;font-weight:700;overflow-wrap:anywhere}
  .dc-t{font-size:10.5px;color:var(--ink-soft);font-weight:700;white-space:nowrap}
  .dc-note{margin:10px 0 0;font-size:12px;color:var(--ink-soft);font-style:italic}
  .dc-f{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;margin-top:12px}
  .dc-pin{font-size:15px;font-weight:800;letter-spacing:2px}
  .dc-skip{margin-top:9px;background:transparent;border:0;color:var(--ink-soft);font-size:11.5px;font-weight:700;
    cursor:pointer;text-decoration:underline;padding:2px}
  .dc-skip:hover{color:#B23B0C}
  .dem-vide{padding:22px 4px;text-align:center;font-size:13px;color:var(--ink-soft)}
  @media(max-width:560px){ .dc-f{grid-template-columns:1fr} }
  /* ---------- Code oublié ---------- */
  #oubliScrim .sheet{animation:qcIn .28s cubic-bezier(.22,.61,.36,1) both}
  .oub-sheet{max-width:520px}
  .oub-h{background:linear-gradient(135deg,#0F5D6A,#08363D);border-bottom:0}
  .oub-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .oub-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#7FD4C1;
    background:rgba(127,212,193,.16);border:1px solid rgba(127,212,193,.3)}
  .oub-ic svg{width:21px;height:21px}
  .oub-h h2{margin:0;color:#fff;font-size:18px;font-weight:900;letter-spacing:-.02em}
  .oub-h p{margin:2px 0 0;color:#A9CDD1;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
  .oub-h .x{color:#fff}
  .oub-way{margin-top:14px;padding:14px 15px;border-radius:15px;border:1px solid var(--line);background:var(--surface)}
  .oub-way.alt{background:var(--surface-2)}
  .ow-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
  .ow-n{flex:none;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:11.5px;font-weight:900}
  .ow-h b{font-size:13.5px;font-weight:900}
  .ow-p{margin:0 0 10px;font-size:12px;color:var(--ink-soft);line-height:1.5}
  .ow-none{margin:0;font-size:12px;color:#B23B0C;font-weight:800}
  .ow-go{width:100%;margin-top:4px}
  .oub-way .field{margin:0 0 9px}
  .oub-err{margin:12px 0 0;min-height:17px;font-size:12.5px;font-weight:800;color:#C0392B;text-align:center}
  /* ---------- Confirmation par code ---------- */
  #pwdScrim .sheet{animation:qcIn .28s cubic-bezier(.22,.61,.36,1) both}
  .pwd-sheet{max-width:440px}
  /* En-tête profond : c'est un contrôle, pas une alerte — d'où le vert de la marque */
  .pwd-h{background:linear-gradient(135deg,#0F5D6A,#08363D);border-bottom:0}
  .pwd-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .pwd-ic{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#7FD4C1;
    background:rgba(127,212,193,.16);border:1px solid rgba(127,212,193,.3)}
  .pwd-ic svg{width:22px;height:22px}
  .pwd-h h2{margin:0;color:#fff;font-size:17.5px;font-weight:900;letter-spacing:-.02em}
  .pwd-h p{margin:2px 0 0;color:#A9CDD1;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
  .pwd-h .x{color:#fff}
  .pwd-body{padding-top:18px;text-align:center}
  .pwd-detail{font-size:13.5px;line-height:1.55;padding:13px 15px;border-radius:13px;text-align:left;
    background:linear-gradient(135deg,rgba(14,85,97,.06),transparent 65%);border:1px solid var(--line);margin-bottom:16px}
  .neg-val{color:#B23B0C;font-weight:900;font-size:16px}
  .pwd-sub{display:block;margin-top:3px;font-size:11.5px;color:var(--ink-soft);font-weight:700}
  .pwd-who{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:var(--ink-soft);
    margin-bottom:12px;padding:5px 13px 5px 5px;border-radius:99px;background:var(--surface-2);border:1px solid var(--line)}
  .pwd-who b{color:var(--ink);font-weight:900}
  /* Champ invisible par-dessus les points : la frappe est masquée mais visible */
  .pwd-field{position:relative;height:62px;margin:0 auto;max-width:250px}
  .pwd-in{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:text;z-index:2;border:0;background:transparent}
  .pwd-dots{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;
    border-radius:15px;border:1.5px solid var(--line);background:var(--surface-2);transition:border-color .16s, box-shadow .16s}
  .pwd-field:focus-within .pwd-dots{border-color:#0E5561;box-shadow:0 0 0 4px rgba(14,85,97,.13);background:#fff}
  .pwd-dots span{width:13px;height:13px;border-radius:50%;background:transparent;border:2px solid rgba(10,65,73,.28);
    transition:background .16s, transform .16s, border-color .16s}
  .pwd-dots span.on{background:#0E5561;border-color:#0E5561;transform:scale(1.12)}
  #pwdScrim .sheet.shake .pwd-dots{border-color:#C0392B;box-shadow:0 0 0 4px rgba(192,57,43,.14)}
  #pwdScrim .sheet.shake .pwd-dots span{border-color:rgba(192,57,43,.45)}
  .pwd-err{margin:11px 0 0;min-height:17px;font-size:12.5px;font-weight:800;color:#C0392B}
  .pwd-note{display:flex;align-items:center;justify-content:center;gap:6px;margin:14px 0 0;font-size:11px;
    color:var(--ink-soft);font-weight:700}
  .pwd-note svg{width:13px;height:13px;flex:none;color:#0E7A50}
  #pwdScrim .sheet.shake{animation:lkShake .4s cubic-bezier(.36,.07,.19,.97)}
  #pwdScrim #pwdOk{flex:1;background:linear-gradient(135deg,#0F5D6A,#0A4149);border:0;
    box-shadow:0 10px 22px -12px rgba(10,65,73,.7)}
  #pwdScrim #pwdOk:hover{filter:brightness(1.08)}
  #pwdScrim #pwdCancel{border-color:var(--line)}
  @media (prefers-reduced-motion: reduce){ #pwdScrim .sheet{animation:none} }
  .rc-tag{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:99px;font-size:10.5px;font-weight:800;
    background:rgba(30,142,90,.13);color:#0E7A50;white-space:nowrap}
  .rc-tag.multi{background:rgba(14,85,97,.13);color:#0E5561}
  .txmenu-recu{padding:9px 14px;margin:0 0 4px;font-size:12px;font-weight:700;color:#0E7A50;background:rgba(30,142,90,.09)}
  .txmenu-recu.none{color:var(--ink-soft);background:var(--surface-2)}
  .rc-deja{margin-top:11px;padding:9px 12px;border-radius:10px;font-size:12px;font-weight:700;
    background:rgba(14,85,97,.08);color:#0E5561}
  .rc-note{margin:12px 0 0;font-size:11.5px;color:var(--ink-soft);line-height:1.5}
  #recuScrim .sheet-f{gap:9px;flex-wrap:wrap}
  #recuScrim #recuSkip{flex:none}
  #recuScrim #recuPrint{flex:1;border-color:#0E5561;color:#0E5561;font-weight:800}
  #recuScrim #recuShare{flex:1.4}
  @media(max-width:560px){ #recuScrim .sheet-f{flex-direction:column-reverse} #recuScrim #recuSkip,#recuScrim #recuPrint,#recuScrim #recuShare{flex:1;width:100%} }
  /* ---------- Approbation : trésorerie initiale ---------- */
  .gin-sheet{max-width:560px}
  #ginScrim .sheet-h{background:linear-gradient(135deg,#0F5D6A,#0A4149);border-bottom:0}
  #ginScrim .sheet-h h2{color:#fff;font-size:16px}
  #ginScrim .sheet-h .x{color:#fff}
  /* Le cœur du message : avant → après, et l'écart en grand */
  .gin-hero{position:relative;overflow:hidden;border-radius:16px;padding:18px 16px 16px;text-align:center;margin-bottom:14px;
    background:linear-gradient(160deg,rgba(14,85,97,.08),rgba(127,212,193,.14));border:1px solid rgba(14,85,97,.16);
    animation:ginPop .45s cubic-bezier(.22,.61,.36,1) both}
  @keyframes ginPop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
  .gin-lab{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
  .gin-flow{display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,22px);margin-top:10px;flex-wrap:wrap}
  .gin-av,.gin-ap{display:flex;flex-direction:column;gap:2px;min-width:0}
  .gin-av em,.gin-ap em{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
  .gin-av b{font-size:clamp(15px,2.4vw,19px);font-weight:800;color:var(--ink-soft);text-decoration:line-through;text-decoration-thickness:1px;opacity:.75}
  .gin-ap b{font-size:clamp(18px,3vw,24px);font-weight:900;color:var(--ink)}
  .gin-ar{font-size:20px;font-weight:900;color:#0E5561;animation:ginArrow 1.8s ease-in-out infinite}
  @keyframes ginArrow{0%,100%{transform:translateX(0);opacity:.7}50%{transform:translateX(5px);opacity:1}}
  .gin-delta{margin-top:10px;display:inline-block;padding:6px 15px;border-radius:99px;font-size:15px;font-weight:900;letter-spacing:-.01em}
  .gin-hero.up .gin-delta{background:#0E7A50;color:#fff}
  .gin-hero.down .gin-delta{background:#B23B0C;color:#fff}
  /* Cause réelle du changement */
  .gin-why{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;margin-bottom:12px;
    background:var(--surface-2);border:1px solid var(--line);font-size:13px;line-height:1.5}
  .gw-ic{flex:none;font-size:15px;line-height:1.3}
  .gw-body{flex:1;min-width:0}
  .gw-h{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:5px}
  .gw-h+.gw-list{margin-top:0}
  .gw-list{margin:0 0 2px;padding-left:17px}
  .gw-list li{font-size:12.5px;font-weight:600;line-height:1.5;margin-bottom:3px;overflow-wrap:anywhere}
  .gw-list.post li{color:var(--ink-soft);font-weight:700}
  .gw-list.post em{font-style:normal;color:var(--ink-soft);opacity:.85;font-weight:600}
  .gw-list.post{margin-top:2px}
  .gw-body .gw-h+.gw-list+.gw-h{margin-top:9px}
  .gw-none{margin:0;font-size:12.5px;color:var(--ink-soft)}
  .gin-note{margin:0 0 14px;font-size:12.5px;color:var(--ink-soft);line-height:1.55}
  /* Les deux issues, décrites côte à côte */
  .gin-out{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .go-i{padding:11px 13px;border-radius:12px;border:1px solid var(--line);background:var(--surface)}
  .go-i b{display:block;font-size:12.5px;font-weight:900;margin-bottom:3px}
  .go-i em{font-style:normal;font-size:11.5px;color:var(--ink-soft);line-height:1.5;display:block}
  .go-i.no{border-color:rgba(14,85,97,.28)}
  .go-i.no b{color:#0E5561}
  .go-i.yes{border-color:rgba(178,59,12,.28);background:rgba(178,59,12,.04)}
  .go-i.yes b{color:#B23B0C}
  #ginScrim .sheet-f{gap:10px}
  #ginScrim #ginNo{flex:1;border-color:#0E5561;color:#0E5561;font-weight:800}
  #ginScrim #ginYes{flex:1;background:#B23B0C;border-color:#B23B0C}
  @media(max-width:560px){
    .gin-out{grid-template-columns:1fr}
    #ginScrim .sheet-f{flex-direction:column-reverse}
    .gin-ar{transform:rotate(90deg)}
  }
  @media (prefers-reduced-motion: reduce){ .gin-hero,.gin-ar{animation:none} }

  /* ---------- Alerte de double saisie ---------- */
  .dup-sheet{max-width:540px}
  #dupScrim .sheet-h{background:linear-gradient(135deg,#B23B0C,#D35400);border-bottom:0}
  #dupScrim .sheet-h h2{color:#fff;font-size:16px}
  #dupScrim .sheet-h .x{color:#fff}
  /* Ce que le gérant s'apprête à enregistrer : montant en grand, sans ambiguïté */
  .dup-hero{border-radius:14px;padding:14px 16px;text-align:center;margin-bottom:13px;
    background:rgba(178,59,12,.07);border:1px solid rgba(178,59,12,.2)}
  .dup-hero-t{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
  .dup-hero-amt{font-size:32px;font-weight:900;letter-spacing:-.02em;margin:3px 0 2px;overflow-wrap:anywhere}
  .dup-hero.out .dup-hero-amt{color:#B23B0C}
  .dup-hero.in .dup-hero-amt{color:#0E7A50}
  .dup-hero-s{font-size:12.5px;font-weight:700;color:var(--ink-soft);overflow-wrap:anywhere}
  /* Le message d'avertissement */
  .dup-warn{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:12px;margin-bottom:13px;
    background:#FDF3E6;border:1px solid #F0C68A;font-size:13px;line-height:1.5;color:#7A3B00}
  .dw-ic{flex:none;font-size:17px;line-height:1.2}
  /* La transaction déjà en base */
  .dup-exist{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
  .de-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 13px;
    background:var(--surface-2);border-bottom:1px solid var(--line)}
  .de-tag{font-size:10.5px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#B23B0C}
  .de-ref{font-size:12px;font-weight:800;color:var(--ink-soft)}
  .de-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
  .de-i{background:var(--surface);padding:9px 13px;min-width:0}
  .de-i span{display:block;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .de-i b{display:block;font-size:13.5px;font-weight:800;margin-top:2px;overflow-wrap:anywhere}
  .de-by{display:flex;align-items:center;gap:9px;padding:10px 13px;border-top:1px solid var(--line);
    font-size:12.5px;color:var(--ink-soft);background:var(--surface-2)}
  .de-by b{color:var(--ink)}
  .dup-note{margin:12px 0 0;font-size:12px;color:var(--ink-soft);line-height:1.5}
  /* Les deux issues, clairement distinctes */
  #dupScrim .sheet-f{gap:10px}
  #dupScrim #dupCancel{flex:1;border-color:#0E5561;color:#0E5561;font-weight:800}
  #dupScrim #dupGo{flex:1;background:#B23B0C;border-color:#B23B0C}
  @media(max-width:560px){
    .de-grid{grid-template-columns:1fr}
    .dup-hero-amt{font-size:27px}
    #dupScrim .sheet-f{flex-direction:column-reverse}
  }
  .auto-ro{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;
    margin:0 0 12px;padding:9px 12px;border-radius:10px;background:rgba(14,85,97,.06);
    font-size:12.5px;font-weight:800;color:var(--ink)}
  .auto-ro em{font-style:normal;font-size:11px;font-weight:600;color:var(--ink-soft)}
  .fd-auto{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;margin-bottom:11px;
    padding:9px 12px;border:1px dashed var(--line);border-radius:10px;background:rgba(14,85,97,.05);
    font-size:12.5px;font-weight:800;color:var(--ink);cursor:pointer;text-align:left}
  .fd-auto em{font-style:normal;font-size:11.5px;font-weight:800;color:#0E5561;white-space:nowrap}
  .fd-auto:hover{background:rgba(14,85,97,.09)}
  .fd-auto.ro{cursor:default;border-style:solid}
  .fd-auto.ro:hover{background:rgba(14,85,97,.05)}
  .fd-auto.ro em{color:var(--ink-soft);font-weight:600}
  .mod-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:7px;background:#FFF3D6;color:#8E5A00;font-size:10.5px;font-weight:800;vertical-align:1px}
  .fd-nocash{margin:8px 0 0;padding:9px 11px;border-radius:10px;background:#FFF3D6;border:1px solid #E5B23A55;font-size:11.5px;font-weight:600;line-height:1.5;color:#7A5200}
  .rep-toggle{float:right;border:0;border-radius:8px;padding:4px 9px;background:rgba(0,0,0,.07);color:inherit;font-size:11px;font-weight:800;cursor:pointer}
  .rep-toggle.on{background:#0E5561;color:#fff}
  .rep-wrap{margin-top:2px}
  .rep-row{display:grid;grid-template-columns:1.5fr 1fr 32px;gap:8px;margin-bottom:7px;align-items:center}
  .rep-row .fld{margin:0}
  .rep-del{width:32px;height:32px;border:0;border-radius:8px;background:#C0392B14;color:#C0392B;font-size:17px;font-weight:800;cursor:pointer}
  .rep-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
  .rep-add{border:0;border-radius:9px;padding:7px 12px;background:rgba(0,0,0,.07);font-size:12px;font-weight:800;cursor:pointer}
  .rep-tot{font-size:12.5px;font-weight:800}
  @media(max-width:560px){ .rep-row{grid-template-columns:1fr 1fr;grid-template-areas:"c c" "m d"} .rep-row .rep-caisse{grid-area:c} .rep-row .rep-amt{grid-area:m} .rep-row .rep-del{grid-area:d;width:100%} }
  .cl-dup{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:10px 13px;border-radius:12px;background:#FFF3D6;border:1px solid #E5B23A55;font-size:12.5px;font-weight:700;color:#7A5200}
  .cl-dup-btn{border:0;border-radius:9px;padding:7px 12px;background:#7A5200;color:#fff;font-size:12px;font-weight:800;cursor:pointer}
  .led-gap{display:inline-block;margin-left:6px;font-size:11.5px;font-weight:800;color:#C0392B;background:#C0392B14;border-radius:7px;padding:2px 7px}
  .trgrow>td{background:#DFF1F408}
  .ouv-tag{display:inline-block;font-size:10.5px;font-weight:800;color:#8E5A00;background:#FFF3D6;border-radius:6px;padding:1px 6px}
  .selb-sub{font-weight:600;opacity:.75;font-size:11.5px;display:block}
  .selb-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .selb-del{font-size:12.5px;font-weight:800;color:#fff;background:#C0392B;border:0;border-radius:9px;padding:8px 13px;cursor:pointer}
  .selb-del[disabled]{opacity:.45;cursor:not-allowed}
  .txtable th.selcol,.txtable td.selcol{width:38px;text-align:center;padding-left:10px;padding-right:0}
  .txtable td.selcol input,.txtable th.selcol input{width:17px;height:17px;accent-color:#C0392B;cursor:pointer}
  .txrow.selrow>td{background:#C0392B12}
  @media(max-width:720px){ #txwrap .txtable td.selcol,#txwrap .txtable th.selcol{width:auto;text-align:left} #txwrap .txtable td.selcol:empty{display:none} }
  .act-day{margin-bottom:14px}
  .act-day-h{font-size:12px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin:4px 0 8px}
  .act-row{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-left-width:4px;border-radius:11px;background:#fff;margin-bottom:8px}
  .act-ico{font-size:17px;width:26px;text-align:center;flex:0 0 auto}
  .act-main{min-width:0;flex:1}
  .act-lab{font-size:13.5px;font-weight:700;color:var(--ink)}
  .act-meta{font-size:12px;color:var(--ink-soft);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .act-meta2{font-size:11px;color:var(--ink-soft);opacity:.85;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .act-right{display:flex;align-items:center;gap:8px;flex:0 0 auto}
  .act-amt{font-size:14px;font-weight:800;color:var(--ink);white-space:nowrap}
  .act-amt.in{color:#1E8E5A} .act-amt.out{color:#C0392B}
  .act-del{border:0;background:#FBEAE8;color:#C0392B;border-radius:8px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}
  .act-del:hover{background:#F6D3CE}
  .act-auto{font-size:10px;font-weight:800;color:#3A54C4;background:#E8ECFB;border-radius:999px;padding:2px 7px}
  .dette-fold{margin-top:22px;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}
  .dette-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 15px;user-select:none}
  .dette-fold>summary::-webkit-details-marker{display:none}
  .dette-fold>summary:hover{background:var(--surface-2)}
  .dette-fold-title{font-size:14px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px}
  .dette-fold-cnt{background:var(--primary);color:#fff;border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:800}
  .dette-fold-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
  .dette-fold-chip{font-size:11.5px;font-weight:800;border-radius:999px;padding:3px 10px;white-space:nowrap}
  .dette-fold-chip.in{color:#0E7A50;background:#E4F3EB}
  .dette-fold-chip.out{color:#B23B0C;background:#FCE9E2}
  .dette-fold-chev{transition:transform .18s ease;flex:0 0 auto;color:var(--ink-soft)}
  .dette-fold[open] .dette-fold-chev{transform:rotate(180deg)}
  .dette-fold-body{padding:0 15px 14px}
  .act-cash{border-left-color:#1E8E5A}
  .act-cashin{border-left-color:#0F8A8A}
  .act-pay{border-left-color:#D9480F}
  .act-credit{border-left-color:#A61E4D}
  .act-owe{border-left-color:#B23B0C}
  .act-wait{border-left-color:#C68A00}
  .act-comp{border-left-color:#3A54C4}
  .act-fail{border-left-color:#C0392B}
  .act-fail .act-lab{color:#C0392B}
  .btn-treg{border:0;background:var(--primary);color:#fff;font-weight:700;font-size:12px;padding:6px 12px;border-radius:8px;cursor:pointer}
  .btn-treg:hover{background:var(--primary-d)}
  .master-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
  .master-head .btn-treg{margin-top:22px}
  /* ---------- Historique des points master ---------- */
  .mph-recap{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:11px;margin-bottom:14px}
  .mphc{padding:13px 15px;border-radius:15px;border:1px solid var(--line);background:var(--surface);
    animation:tlsOpen .3s cubic-bezier(.22,.61,.36,1) both}
  .mphc:nth-child(2){animation-delay:.05s}
  .mphc:nth-child(3){animation-delay:.1s}
  .mphc:nth-child(4){animation-delay:.15s}
  .mphc span{display:block;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .mphc b{display:block;font-size:23px;font-weight:900;margin-top:4px;letter-spacing:-.02em;
    font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .mphc em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);margin-top:3px}
  .mphc.aj{border-color:rgba(30,142,90,.28);background:rgba(30,142,90,.05)}
  .mphc.aj b{color:#0E7A50}
  .mphc.mq{border-color:rgba(178,59,12,.26);background:rgba(178,59,12,.05)}
  .mphc.mq b{color:#B23B0C}
  .mphc.du b{color:#0E7A50}
  .mphc.je b{color:#B23B0C}
  /* Chaque ligne porte son état : un liseré à gauche suffit à le lire */
  .mph-row td:first-child{position:relative}
  .mph-row td:first-child::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0}
  .mph-row.conforme td:first-child::before{background:#1E8E5A}
  .mph-row.regul td:first-child::before{background:#2FAF6E}
  .mph-row.regul-part td:first-child::before{background:#E08A2B}
  .mph-row.ecart td:first-child::before{background:#B23B0C}
  .mph-row:hover td{background:var(--surface-2)}
  .mph-row.ecart:hover td{background:rgba(178,59,12,.05)}
  .mph-vide{padding:34px 20px;text-align:center;border-radius:16px;border:1px dashed var(--line);background:var(--surface-2)}
  .mphv-ic{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 12px;border-radius:16px;
    background:rgba(14,85,97,.08);color:#0E5561}
  .mphv-ic svg{width:26px;height:26px}
  .mph-vide h3{margin:0 0 6px;font-size:16px;font-weight:900}
  .mph-vide p{margin:0 auto;max-width:430px;font-size:12.5px;color:var(--ink-soft);line-height:1.6}
  .mphv-cta{display:inline-block;margin-top:12px;padding:6px 13px;border-radius:99px;font-size:11.5px;font-weight:800;
    background:rgba(14,85,97,.09);color:#0E5561}
  @media (prefers-reduced-motion: reduce){ .mphc{animation:none} }
  .mp-recap{display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:12.5px;margin:4px 0 12px;color:var(--ink-soft)}
  .mp-recap-a{color:#1D4ED8;font-weight:600}
  .mp-recap-m{color:#B23B0C;font-weight:600}
  .mp-bilan{flex:1 1 100%;margin-top:4px}
  .mpb-empty{font-size:12.5px;color:var(--ink-soft,#667085);background:var(--card,#fff);border:1px dashed var(--line,#e6e9ee);border-radius:12px;padding:10px 14px}
  .mpb-h{font-weight:800;font-size:14.5px;color:var(--ink);margin-bottom:8px;display:flex;align-items:baseline;gap:8px}
  .mpb-sub{font-size:11.5px;color:var(--ink-soft,#8a94a6);font-weight:500}
  .mp-bilan{background:var(--card,#fff);border:1px solid var(--line,#e6e9ee);border-radius:14px;padding:12px 14px}
  .mpb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
  .mpb-cell{display:flex;flex-direction:column;gap:3px;padding:8px 10px;background:var(--bg-soft,#f7f8fa);border-radius:10px}
  .mpb-k{font-size:11.5px;color:var(--ink-soft,#667085);font-weight:600}
  .mpb-v{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
  .mpb-ok{color:#0E7A50;font-weight:700;font-size:13px}
  .stat-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
  .stat-kpi{background:var(--card,#fff);border:1px solid var(--line,#e6e9ee);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}
  .stat-kpi-k{font-size:12px;color:var(--ink-soft,#667085);font-weight:600}
  .stat-kpi-v{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
  .chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .chart-panel{background:var(--card,#fff);border:1px solid var(--line,#e6e9ee);border-radius:16px;padding:16px 16px 10px;min-width:0}
  .chart-panel.wide{grid-column:1 / -1}
  .chart-title{font-weight:700;font-size:14px;margin-bottom:8px;display:flex;align-items:baseline;gap:8px}
  .chart-sub{font-size:12px;color:var(--ink-soft,#667085);font-weight:500}
  .chart{width:100%;height:auto;display:block}
  .chart .ax{fill:var(--ink-soft,#8a94a6);font-size:10px}
  .chart .axv{fill:var(--ink,#33415c);font-size:10px;font-weight:700}
  .donut-wrap{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
  .donut{width:170px;height:170px;flex:0 0 auto}
  .donut .dn-n{fill:var(--ink,#1e293b);font-size:26px;font-weight:800}
  .donut .dn-l{fill:var(--ink-soft,#8a94a6);font-size:11px}
  .donut-lg{flex:1;min-width:160px;display:flex;flex-direction:column;gap:6px}
  .lg{display:flex;align-items:center;gap:8px;font-size:12.5px}
  .lg-d{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
  .lg-t{flex:1;color:var(--ink,#33415c)}
  .lg-v{color:var(--ink-soft,#667085);font-variant-numeric:tabular-nums}
  @media(max-width:860px){.chart-grid{grid-template-columns:1fr}.chart-panel.wide{grid-column:auto}}
  .gx-reg-info{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:14px;line-height:1.5;margin-bottom:6px}
  .gx-reg-effect{margin-top:6px;padding:9px 11px;background:#E4F3EB;border:1px solid #B8E0C8;border-radius:9px;font-size:13px}
  /* Écart hors clients en attente d'approbation */
  /* D'où viennent les écarts */
  .ec-src{margin:10px 0;border:1px solid var(--line);border-radius:13px;background:var(--surface);overflow:hidden}
  .ec-src>summary{cursor:pointer;list-style:none;padding:11px 14px;font-size:12.5px;font-weight:800;color:#0E5561}
  .ec-src>summary::-webkit-details-marker{display:none}
  .ec-src>summary::after{content:" ▾";opacity:.6}
  .ec-src[open]>summary::after{content:" ▴"}
  .ec-src-b{padding:0 14px 14px}
  .ec-s{padding:10px 0;border-top:1px dashed var(--line)}
  .ec-s-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
  .ec-s-h b{font-size:13px;font-weight:900}
  .ec-s-h span{font-size:11px;font-weight:800;color:var(--ink-soft);background:var(--surface-2);padding:2px 8px;border-radius:99px}
  .ec-s-v{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px;font-size:12.5px;font-weight:900}
  .ec-s-v .in{color:#0E7A50}
  .ec-s-v .out{color:#B23B0C}
  .ec-s p{margin:4px 0 0;font-size:11.5px;color:var(--ink-soft);line-height:1.5}
  .ec-raz{margin-top:12px;width:100%;padding:10px;border-radius:11px;border:1px solid rgba(178,59,12,.32);
    background:var(--surface);color:#B23B0C;font-size:12.5px;font-weight:800;cursor:pointer}
  .ec-raz:hover{background:rgba(178,59,12,.09)}
  /* Avertissement : aucune protection active */
  .acc-alerte{display:flex;align-items:flex-start;gap:13px;flex-wrap:wrap;margin-bottom:16px;
    padding:15px 17px;border-radius:16px;border:1px solid rgba(178,59,12,.32);
    background:linear-gradient(135deg,rgba(178,59,12,.09),rgba(224,138,43,.07))}
  .aa-ic{font-size:22px;line-height:1.1}
  .acc-alerte b{display:block;font-size:14px;font-weight:900;color:#B23B0C}
  .acc-alerte em{display:block;font-style:normal;font-size:12.5px;color:var(--ink-soft);margin-top:4px;line-height:1.55}
  .acc-alerte>div{flex:1;min-width:220px}
  .aa-b{flex:none;padding:10px 16px;border-radius:11px;border:0;background:#B23B0C;color:#fff;
    font-size:12.5px;font-weight:800;cursor:pointer;box-shadow:0 8px 18px -10px rgba(178,59,12,.8)}
  .aa-b:hover{filter:brightness(1.1)}
  .hors-att{margin:10px 0;padding:13px 15px;border-radius:15px;border:1px solid #F0C68A;background:#FDF6EC}
  .hors-att.mq{border-color:rgba(178,59,12,.3);background:rgba(178,59,12,.05)}
  .ha-h{display:flex;align-items:flex-start;gap:11px}
  .ha-ic{flex:none;font-size:18px;line-height:1.2}
  .ha-h b{font-size:13.5px;font-weight:900}
  .ha-h em{display:block;font-style:normal;font-size:12px;color:var(--ink-soft);margin-top:3px;line-height:1.55}
  .ha-h em b{color:var(--ink)}
  .ha-f{display:flex;gap:9px;flex-wrap:wrap;margin-top:11px}
  .ha-note{flex:1;min-width:170px;border-radius:11px}
  .ha-go{flex:none;border-radius:11px}
  .gx-minis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:-4px 0 14px}
  .gx-mini{display:flex;flex-direction:column;gap:2px;border-radius:11px;padding:10px 13px;border:1px solid}
  .gx-mini.ajout{background:#E7F0FF;border-color:#B8D3FF}
  .gx-mini.manquant{background:#FDE7E7;border-color:#F3B9B9}
  .gx-mini-lab{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
  .gx-mini.ajout .gx-mini-lab{color:#1D5FD0}
  .gx-mini.manquant .gx-mini-lab{color:#C0392B}
  .gx-mini-val{font-size:19px;font-weight:800}
  .gx-mini.ajout .gx-mini-val{color:#1D5FD0}
  .gx-mini.manquant .gx-mini-val{color:#C0392B}
  .gx-caissiere{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 14px;margin-bottom:12px;box-shadow:var(--shadow)}
  .gx-caissiere-av{flex:none}
  .gx-caissiere-n{font-weight:800;font-size:15px}
  .gx-caissiere-r{font-size:12px;color:var(--ink-soft)}
  .gx-caissiere-tag{margin-left:auto;background:#E4F3EB;color:#0E7A50;font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px}
  .gx-caissiere.off{color:var(--ink-soft);font-size:13px;display:block}
  .gx-oper-fixed{display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 10px}
  .gx-oper-fixed b{font-size:14px}
  .gx-oper-role{display:block;font-size:11px;color:var(--ink-soft)}
  .gx-oper-cell{display:flex;align-items:center;gap:7px;white-space:nowrap}
  .cl-search .fld{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:10px 12px;background:var(--surface)}
  .cl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
  /* Base clients : style répertoire de contacts */
  /* ---------- Base clients en cartes ---------- */
  .clc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:13px;margin-bottom:16px}
  .clc{display:flex;gap:14px;padding:15px;border-radius:17px;border:1px solid var(--line);background:var(--surface);
    cursor:pointer;transition:border-color .18s, box-shadow .18s, transform .16s}
  .clc:hover{border-color:rgba(14,85,97,.3);box-shadow:0 14px 30px -20px rgba(10,65,73,.55);transform:translateY(-2px)}
  /* Colonne de gauche : la photo, comme dans un annuaire */
  .clc-l{display:flex;flex-direction:column;align-items:center;gap:7px;flex:none}
  .clc-av{width:74px;height:74px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
    background:var(--av,#0E5561);color:#fff;font-size:26px;font-weight:900;
    box-shadow:0 8px 18px -10px rgba(10,65,73,.6)}
  .clc-av img{width:100%;height:100%;object-fit:cover;display:block}
  .clc-av.ph{background:var(--surface-2)}
  .clc-ops{font-size:10.5px;font-weight:800;color:var(--ink-soft);background:var(--surface-2);
    padding:2px 9px;border-radius:99px;white-space:nowrap}
  /* Colonne de droite : identité, solde, caisses, actions */
  .clc-r{flex:1;min-width:0;display:flex;flex-direction:column}
  .clc-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}
  .clc-id{min-width:0}
  .clc-id b{display:block;font-size:15.5px;font-weight:900;letter-spacing:-.01em;overflow-wrap:anywhere;line-height:1.2}
  .clc-id em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700;margin-top:2px}
  .clc-sold{flex:none;font-size:11px;font-weight:900;padding:4px 10px;border-radius:99px;white-space:nowrap}
  .clc-sold.ok{background:var(--surface-2);color:var(--ink-soft)}
  .clc-sold.out{background:rgba(178,59,12,.11);color:#B23B0C}
  .clc-sold.in{background:rgba(30,142,90,.12);color:#0E7A50}
  .clc-meta{margin-top:8px;font-size:12px;color:var(--ink-soft);font-weight:700}
  .clc-m.vide{opacity:.6;font-style:italic}
  .clc-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}
  .clc-tag{font-size:9.5px;font-weight:800;letter-spacing:.04em;padding:3px 8px;border-radius:99px;
    background:rgba(14,85,97,.09);color:#0E5561}
  .clc-tag.com{background:rgba(30,142,90,.13);color:#0E7A50}
  .clc-tag.vide{background:transparent;border:1px dashed var(--line);color:var(--ink-soft);font-style:italic}
  /* Actions, révélées au survol sur ordinateur, toujours visibles au doigt */
  .clc-f{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:12px}
  .clc-b{padding:7px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);
    color:#0E5561;font-size:11.5px;font-weight:800;cursor:pointer;transition:background .15s,transform .12s}
  .clc-b:hover{background:rgba(14,85,97,.09);transform:translateY(-1px)}
  .clc-b.del{color:#B23B0C;border-color:rgba(178,59,12,.25)}
  .clc-b.del:hover{background:rgba(178,59,12,.1)}
  @media (prefers-reduced-motion: reduce){ .clc:hover,.clc-b:hover{transform:none} }
  @media(max-width:560px){
    .clc-grid{grid-template-columns:1fr}
    .clc{gap:11px;padding:13px}
    .clc-av{width:58px;height:58px;font-size:21px}
    .clc-b{flex:1;text-align:center}
  }
  .clx-count{font-size:12px;color:var(--ink-soft);margin:2px 2px 8px;font-weight:700}
  .clx-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
  .clx-letter{position:sticky;top:0;z-index:2;background:var(--primary-l);color:var(--primary);font-weight:900;font-size:12px;padding:5px 16px;letter-spacing:.1em}
  .clx-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px dashed var(--line);transition:background .15s ease}
  .clx-row:hover{background:rgba(14,85,97,.05)}
  .clx-letter+.clx-row{border-top:none}
  .clx-av{width:42px;height:42px;flex:none;border-radius:12px;display:grid;place-items:center;color:#fff;font-weight:900;font-size:14.5px;letter-spacing:.02em;background:var(--av,#0E5561);box-shadow:0 5px 12px -6px var(--av,#0E5561)}
  .clx-main{flex:1;min-width:0}
  .clx-name{font-weight:800;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .clx-meta{font-size:11.5px;color:var(--ink-soft);display:flex;gap:12px;flex-wrap:wrap;margin-top:2px}
  .clx-ops{background:var(--primary-l);color:var(--primary);font-size:10.5px;font-weight:800;border-radius:999px;padding:3px 9px;white-space:nowrap}
  .clx-right{display:flex;align-items:center;gap:7px;flex:none}
  @media (max-width:520px){ .clx-av{width:37px;height:37px;font-size:13px;border-radius:10px} .clx-meta{gap:8px} .clx-row{padding:10px 12px} }
  .cl-card{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:13px}
  .cl-av{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--primary-l);color:var(--primary);font-weight:800;font-size:17px}
  .cl-id{flex:1;min-width:0}
  .cl-name{font-weight:800;font-size:15px;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .cl-meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--ink-soft);margin-top:2px}
  .cl-act{display:flex;gap:4px;flex:none}
  .cl-lbl{display:block;font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink);font-weight:800;margin-bottom:6px}
  .cl-head .fld{border:1px solid var(--line-strong);border-radius:9px;padding:9px 11px;background:var(--surface)}
  .cl-title{font-size:19px;font-weight:800;letter-spacing:-.02em;margin-bottom:14px}
  .cl-table{width:100%;border-collapse:collapse;font-size:14px}
  .cl-table th{background:var(--primary);color:#fff;font-weight:800;font-size:13px;text-align:right;padding:11px 14px}
  .cl-table th:first-child{text-align:left;border-radius:0}
  .cl-table td{padding:11px 14px;text-align:right;border-bottom:1px solid var(--line)}
  .cl-table td.cl-c{text-align:left;font-weight:700}
  .cl-cwrap{display:inline-flex;align-items:center;gap:8px}
  .cl-table .cl-fin{font-weight:800}
  .cl-table .cl-fin.neg{color:var(--danger)}
  .cl-table tfoot td{background:var(--primary-l);font-weight:800;border-top:2px solid var(--primary);border-bottom:none;font-size:14.5px}
  .cl-table tfoot td:first-child{text-align:left}
  .cl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:6px}
  .cl-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 13px;box-shadow:var(--shadow)}
  .cl-k{display:block;font-size:11.5px;color:var(--ink-soft);margin-bottom:3px}
  .cl-v{font-size:17px;font-weight:800}
  .cl-ger{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
  .cl-ger:last-child{border-bottom:none}
  .mp-dethint{margin:4px 0 8px;padding:8px 11px;border-radius:10px;background:rgba(14,85,97,.07);font-size:11.5px;font-weight:600;line-height:1.5;color:var(--ink-soft)}
  .mp-dethint b{color:var(--ink);font-weight:800}
  .rst-grid{display:grid;gap:2px}
  .rst-item{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:10px;cursor:pointer}
  .rst-item:hover{background:rgba(14,85,97,.05)}
  .rst-item input{margin-top:2px;width:17px;height:17px;accent-color:#C0392B;flex:none}
  .rst-item b{display:block;font-size:13.5px;font-weight:800}
  .rst-item em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);margin-top:1px}
  .rst-item.cloud{margin-top:8px;background:#C0392B0D;border:1px solid #C0392B33}
  .rst-keep{margin:10px 0 0;padding:9px 11px;border-radius:10px;background:rgba(14,85,97,.07);font-size:11.5px;font-weight:600;line-height:1.5;color:var(--ink-soft)}
  .rst-keep b{color:var(--ink)}
  .btn-ghost.danger{color:#C0392B;border-color:#C0392B44}
  .btn-ghost.danger:hover{background:#C0392B12}
  /* ---------- PARAMÈTRES : en-tête, navigation latérale, colonne de contenu ---------- */
  .par-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
  .par-title{margin:0;font-size:26px;font-weight:900;letter-spacing:-.02em}
  .par-sub{margin:3px 0 0;font-size:13px;color:var(--ink-soft);font-weight:600}
  .par-search{flex:1;min-width:220px;max-width:380px}
  .par-layout{display:grid;grid-template-columns:264px 1fr;gap:20px;align-items:start}
  .par-nav{position:sticky;top:var(--stick-top,56px);display:flex;flex-direction:column;gap:4px;
    padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:16px}
  .par-chip{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:0;border-radius:11px;
    padding:10px 11px;background:transparent;color:var(--ink);cursor:pointer;transition:background .12s}
  .par-chip:hover{background:rgba(14,85,97,.07)}
  .par-chip.on{background:#0E5561;color:#fff}
  .pc-ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:15px;
    background:rgba(14,85,97,.1)}
  .par-chip.on .pc-ic{background:rgba(255,255,255,.18)}
  .pc-txt{flex:1;min-width:0}
  .pc-txt b{display:block;font-size:13.5px;font-weight:800;line-height:1.25}
  .pc-txt em{display:block;font-style:normal;font-size:11px;font-weight:600;opacity:.72;line-height:1.35;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pc-n{flex:none;min-width:22px;height:20px;padding:0 6px;border-radius:99px;background:rgba(0,0,0,.07);
    font-size:11px;font-weight:900;display:inline-flex;align-items:center;justify-content:center}
  .par-chip.on .pc-n{background:rgba(255,255,255,.22);color:#fff}
  .par-main{display:flex;flex-direction:column;gap:16px;min-width:0}
  .par-main .panel{margin:0}
  .par-main .panel.par-hide{display:none !important}
  .par-none{padding:26px 4px;text-align:center;font-size:13px;color:var(--ink-soft)}
  @media(max-width:900px){
    .par-layout{grid-template-columns:1fr}
    .par-nav{position:static;flex-direction:row;overflow-x:auto;gap:6px;padding:6px;
      overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
    .par-chip{flex:0 0 auto;width:auto}
    .pc-txt em{display:none}
    .pc-txt b{white-space:nowrap}
    .par-search{max-width:none}
  }
  /* ---------- DISCUSSION D'ÉQUIPE ---------- */
  .chat-box{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
  .chat-list{height:min(58vh,520px);overflow-y:auto;overflow-x:hidden;padding:14px;display:flex;flex-direction:column;gap:10px;
    overscroll-behavior:contain;touch-action:pan-y}
  .chat-msg{display:flex;align-items:flex-end;gap:8px}
  .chat-msg.me{flex-direction:row-reverse}
  .chat-msg .gavatar{flex:none;align-self:flex-end;margin-bottom:2px}
  .chat-av-sp{flex:none;width:34px}
  .chat-msg.suite{margin-top:-6px}
  .chat-b{max-width:78%;padding:8px 12px;border-radius:14px;background:var(--surface-2);border:1px solid var(--line)}
  .chat-msg.me .chat-b{background:#0E5561;border-color:#0E5561;color:#fff}
  .chat-who{display:block;font-size:11px;font-weight:900;color:#0E5561;margin-bottom:2px}
  .chat-txt{font-size:14px;font-weight:600;line-height:1.45;overflow-wrap:anywhere}
  .chat-h{display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:10.5px;font-weight:700;opacity:.75;margin-top:3px}
  /* Barre d'outils, recherche et réunions */
  .chat-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px;border-bottom:1px solid var(--line);background:var(--surface)}
  .chat-find{flex:1;min-width:160px}
  /* Séparateur de jour */
  .chat-day{display:flex;align-items:center;justify-content:center;margin:6px 0 2px}
  .chat-day span{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);
    background:rgba(0,0,0,.05);padding:3px 11px;border-radius:99px}
  /* Citation d'un message */
  .chat-rep{display:block;margin:0 0 5px;padding:5px 9px;border-left:3px solid currentColor;border-radius:7px;
    background:rgba(0,0,0,.06);cursor:pointer;opacity:.9}
  .chat-rep b{display:block;font-size:11px;font-weight:900}
  .chat-rep em{font-style:normal;font-size:11.5px;opacity:.85;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .chat-msg.flash .chat-b{animation:msgFlash 1.2s ease-out}
  @keyframes msgFlash{0%{box-shadow:0 0 0 3px rgba(14,85,97,.45)}100%{box-shadow:none}}
  .chat-replybar{display:flex;align-items:center;gap:9px;padding:8px 10px;border-top:1px solid var(--line);background:var(--surface-2)}
  .crb-l{width:3px;align-self:stretch;border-radius:3px;background:#0E5561;flex:none}
  .crb-t{flex:1;min-width:0}
  .crb-t b{display:block;font-size:11.5px;font-weight:900;color:#0E5561}
  .crb-t em{font-style:normal;font-size:11.5px;color:var(--ink-soft);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .crb-x{border:0;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:var(--ink-soft)}
  /* Réactions */
  .chat-rx{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;align-items:center}
  .chat-rx-i{font-size:11.5px;font-weight:800;padding:2px 7px;border-radius:99px;background:rgba(0,0,0,.07);cursor:pointer}
  .chat-rx-i.mine{background:#0E5561;color:#fff}
  .chat-msg.me .chat-rx-i{background:rgba(255,255,255,.2)}
  .chat-msg.me .chat-rx-i.mine{background:#fff;color:#0E5561}
  .chat-rx-add{font-size:13px;opacity:.55;cursor:pointer;padding:0 3px}
  .chat-rx-add:hover{opacity:1}
  .chat-rxpop{position:absolute;z-index:130;display:flex;gap:2px;padding:5px;border-radius:99px;
    background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 24px -10px rgba(0,0,0,.4)}
  .chat-rxpop button{border:0;background:transparent;font-size:18px;cursor:pointer;padding:3px 5px;border-radius:50%}
  .chat-rxpop button:hover{background:rgba(0,0,0,.07)}
  /* Réunion et fichier */
  /* Appel entrant : bandeau au premier plan, sur tous les écrans */
  .call-in{position:fixed;left:0;right:0;top:0;z-index:140;display:flex;justify-content:center;padding:10px 12px;
    padding-top:calc(10px + env(safe-area-inset-top,0px));pointer-events:none}
  .ci-card{pointer-events:auto;display:flex;align-items:center;gap:13px;width:min(560px,100%);
    padding:12px 15px;border-radius:16px;color:#fff;background:linear-gradient(135deg,#6C4AB6,#8E44AD);
    box-shadow:0 16px 40px -14px rgba(0,0,0,.6);animation:ciIn .25s ease-out}
  .call-in.aud .ci-card{background:linear-gradient(135deg,#0E5561,#137f92)}
  @keyframes ciIn{from{transform:translateY(-14px);opacity:0}to{transform:none;opacity:1}}
  .ci-ic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:21px;
    background:rgba(255,255,255,.2);animation:ciRing 1.1s infinite}
  @keyframes ciRing{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}
  .ci-t{flex:1;min-width:0}
  .ci-t b{display:block;font-size:14.5px;font-weight:900;line-height:1.2}
  .ci-t em{font-style:normal;font-size:11.5px;opacity:.85}
  .ci-btns{display:flex;gap:8px;flex:none}
  .ci-no,.ci-yes{border:0;border-radius:99px;padding:9px 15px;font-size:13px;font-weight:800;cursor:pointer}
  .ci-no{background:rgba(255,255,255,.18);color:#fff}
  .ci-yes{background:#fff;color:#6C4AB6}
  .call-in.aud .ci-yes{color:#0E5561}
  @media(max-width:560px){
    .ci-card{flex-wrap:wrap}
    .ci-btns{width:100%}
    .ci-no,.ci-yes{flex:1}
  }
  /* Carte « demande de code » dans la discussion */
  .chat-pwd{padding:11px 13px;border-radius:13px;background:rgba(14,85,97,.08);border:1px solid rgba(14,85,97,.25)}
  .chat-pwd.done{background:var(--surface-2);border-color:var(--line);opacity:.85}
  .cp-h{display:flex;align-items:center;gap:10px}
  .cp-ic{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:15px;
    background:rgba(14,85,97,.14)}
  .cp-t b{display:block;font-size:13.5px;font-weight:900}
  .cp-t em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700}
  .cp-m{margin-top:9px;font-size:12px;font-weight:800;color:#0E5561;overflow-wrap:anywhere}
  .cp-n{margin-top:6px;font-size:11.5px;color:var(--ink-soft);font-style:italic}
  .cp-go{margin-top:10px;width:100%;padding:10px 13px;border-radius:11px;border:0;cursor:pointer;
    background:linear-gradient(135deg,#0F5D6A,#0A4149);color:#fff;font-size:12.5px;font-weight:900;
    box-shadow:0 8px 18px -10px rgba(10,65,73,.8);transition:filter .15s,transform .13s}
  .cp-go:hover{filter:brightness(1.1);transform:translateY(-1px)}
  .cp-ok{margin-top:9px;font-size:12px;font-weight:800;color:#0E7A50}
  .cp-att{margin-top:9px;font-size:11.5px;font-weight:700;color:var(--ink-soft)}
  .chat-call{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;padding:9px 11px;border-radius:11px;
    background:rgba(14,85,97,.1);border:1px solid rgba(14,85,97,.25);min-width:220px}
  .chat-call.vid{background:rgba(108,74,182,.12);border-color:rgba(108,74,182,.3)}
  .cc-ic{font-size:20px;flex:none}
  .cc-t{flex:1;min-width:0}
  .cc-t b{display:block;font-size:13px;font-weight:900}
  .cc-t em{font-style:normal;font-size:11px;opacity:.75}
  .cc-go{flex:none;font-size:11.5px;font-weight:900;padding:5px 10px;border-radius:99px;background:#0E5561;color:#fff}
  .chat-call.vid .cc-go{background:#6C4AB6}
  .chat-file{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;padding:8px 10px;border-radius:10px;
    background:rgba(0,0,0,.05);min-width:200px}
  .cf-ic{font-size:18px;flex:none}
  .cf-t b{display:block;font-size:12.5px;font-weight:800;overflow-wrap:anywhere}
  .cf-t em{font-style:normal;font-size:11px;opacity:.7}
  .chat-ed{font-style:normal;font-size:10px;font-weight:700;opacity:.65;margin-right:2px}
  .chat-del{border:0;background:transparent;color:inherit;font-size:13px;font-weight:900;line-height:1;cursor:pointer;opacity:.75;padding:0 2px}
  .chat-del:hover{opacity:1;color:#C0392B}
  .chat-ico{color:#0E5561}
  .chat-img{display:block;max-width:230px;max-height:280px;width:auto;border-radius:10px;cursor:zoom-in}
  .chat-lb{position:fixed;inset:0;z-index:120;background:rgba(8,20,24,.92);display:grid;place-items:center;padding:20px}
  .chat-lb img{max-width:96vw;max-height:88vh;border-radius:12px}
  .chat-lb-x{position:absolute;top:14px;right:16px;width:40px;height:40px;border:0;border-radius:50%;
    background:rgba(255,255,255,.15);color:#fff;font-size:24px;cursor:pointer}
  .chat-audio{width:230px;max-width:100%;height:38px;vertical-align:middle}
  .chat-dur{font-size:11px;font-weight:700;opacity:.75;margin-left:6px}
  .chat-exp{font-style:normal;font-size:12.5px;opacity:.7}
  .chat-compose{display:flex;gap:8px;align-items:center;padding:10px;border-top:1px solid var(--line);background:var(--surface)}
  .chat-input{flex:1;min-width:0}
  .chat-mic{flex:none;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--surface);
    color:#0E5561;display:grid;place-items:center;cursor:pointer}
  .chat-mic svg{width:19px;height:19px}
  .chat-mic.rec{background:#C0392B;border-color:#C0392B;color:#fff;animation:micPulse 1s infinite}
  @keyframes micPulse{50%{opacity:.6}}
  .chat-rec{margin:0;padding:8px 12px;background:#FDECEA;color:#B23B0C;font-size:12px;font-weight:800}
  .nav-badge{margin-left:auto;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:#C0392B;color:#fff;
    font-size:11px;font-weight:900;display:inline-flex;align-items:center;justify-content:center}
  /* Notification des messages non lus sur le tableau de bord */
  .dash-chat{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:12px;padding:10px 13px;
    border-radius:12px;border:1px solid #0E556133;background:linear-gradient(135deg,#0E55610F,#137f9212);cursor:pointer}
  .dch-ic{position:relative;flex:none;width:38px;height:38px;border-radius:11px;background:#0E5561;color:#fff;display:grid;place-items:center}
  .dch-ic svg{width:19px;height:19px}
  .dch-ic b{position:absolute;top:-5px;right:-5px;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:#C0392B;
    color:#fff;font-size:11px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--paper)}
  .dch-txt{flex:1;min-width:0}
  .dch-txt b{display:block;font-size:13.5px;font-weight:900}
  .dch-txt span{display:block;font-size:11.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dch-go{flex:none;font-size:12px;font-weight:800;color:#0E5561}
  @media(max-width:560px){
    .chat-list{height:min(62vh,480px);padding:11px}
    .chat-b{max-width:86%}
    .chat-img,.chat-audio{max-width:190px;width:190px}
    .dch-go{display:none}
  }
  .aud-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
  .aud-who{flex:none;min-width:44px;padding:3px 8px;border-radius:8px;background:rgba(14,85,97,.1);color:#0E5561;font-size:11px;font-weight:900;text-align:center}
  .aud-txt{flex:1;min-width:0}
  .aud-txt b{display:block;font-size:13px;font-weight:800;line-height:1.3}
  .aud-txt span{display:block;font-size:11px;color:var(--ink-soft)}
  .aud-when{flex:none;text-align:right;font-size:11px;font-weight:700;color:var(--ink-soft);white-space:nowrap}
  .aud-when span{display:block;font-weight:900;color:var(--ink)}
  .trash-count{font-size:11.5px;font-weight:800;color:var(--ink-soft);background:rgba(0,0,0,.06);border-radius:8px;padding:2px 8px;margin-left:8px;vertical-align:middle}
  .trash-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);flex-wrap:wrap}
  .trash-kind{flex:none;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:3px 8px;border-radius:7px;background:#DFF1F4;color:#0E5561}
  .trash-kind.dep{background:#FCE9E2;color:#B23B0C}
  .trash-kind.trg{background:#F3E8FA;color:#6A1B9A}
  .trash-kind.reg{background:#E4F3EB;color:#0E7A50}
  .trash-txt{flex:1;min-width:150px}
  .trash-txt b{display:block;font-size:13px;font-weight:800}
  .trash-txt span{display:block;font-size:11px;color:var(--ink-soft)}
  .trash-amt{font-size:13.5px;font-weight:900;white-space:nowrap}
  .trash-btns{display:flex;gap:6px}
  .trash-restore{border:0;border-radius:8px;padding:7px 11px;background:#0E5561;color:#fff;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}
  .trash-del{border:0;border-radius:8px;padding:7px 10px;background:#C0392B14;color:#C0392B;font-size:13px;font-weight:900;cursor:pointer}
  .clc{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:4px 14px 12px;margin-bottom:16px;box-shadow:var(--shadow)}
  .clc-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 0 8px}
  .clc-h b{font-size:15px;font-weight:900}
  .clc-h span{font-size:12px;font-weight:700;color:var(--ink-soft)}
  .clc-row{display:flex;align-items:flex-start;gap:11px;padding:10px 0;border-top:1px solid var(--line)}
  .clc-ic{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900;color:#fff;margin-top:1px}
  .clc-row.ok .clc-ic{background:#0E7A50}
  .clc-row.ko .clc-ic{background:#C0392B}
  .clc-txt{flex:1;min-width:0}
  .clc-txt b{display:block;font-size:13.5px;font-weight:800;line-height:1.3}
  .clc-row.ko .clc-txt b{color:#B3160C}
  .clc-txt span{display:block;font-size:12px;color:var(--ink-soft);line-height:1.45;margin-top:2px}
  .clc-btn{flex:none;align-self:center;border:0;border-radius:9px;padding:8px 12px;background:#0E5561;color:#fff;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}
  .clc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:2px solid var(--line);margin-top:4px;padding-top:11px}
  .clc-eq{font-size:12.5px;font-weight:700;color:var(--ink-soft)}
  .clc-eq b{color:var(--ink)}
  .clc-close{border:0;border-radius:10px;padding:10px 16px;background:#0E7A50;color:#fff;font-size:13px;font-weight:800;cursor:pointer}
  .clc-close[disabled]{background:var(--line);color:var(--ink-soft);cursor:default}
  @media print{ .clc-btn,.clc-close{display:none} }
  .cl-sign{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:26px;padding-top:16px;border-top:1px dashed var(--line-strong);font-size:13px;color:var(--ink-soft)}
  @media print{
    .sidebar,.mobtop,.sidescrim,#clPrint,.cl-head .cl-lbl{display:none!important}
    .view{display:none!important}
    #view-cloture{display:block!important}
    #clDate{border:none;padding:0;font-size:13px;pointer-events:none}
    body{background:#fff;font-size:12px}
    main{padding:0;max-width:none}
    .panel,.cl-stat{box-shadow:none;break-inside:avoid}
    .eyebrow{margin-top:14px}
  }
  .tx-act{position:absolute; top:11px; right:13px; display:none; gap:4px}
  .tx:hover .tx-act, .tx:focus-within .tx-act{display:flex}
  .icb{width:29px;height:29px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);
    display:grid;place-items:center;color:var(--ink-soft)}
  .icb:hover{color:var(--primary);border-color:var(--primary)}
  .icb.del:hover{color:var(--danger);border-color:var(--danger)}
  .icb svg{width:15px;height:15px}

  /* ---------- Settings ---------- */
  .panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
    padding:18px 18px 20px; box-shadow:var(--shadow); margin-bottom:18px}
  .panel h3{font-size:15px; margin-bottom:3px}
  .panel .sub{font-size:12.5px; color:var(--ink-soft); margin-bottom:15px}
  .row{display:grid; gap:9px; align-items:center; margin-bottom:9px}
  .row.caisse-row{grid-template-columns:1fr 160px 36px}
  .row.ger-row{grid-template-columns:110px 1fr 36px}
  .row.simple-row{grid-template-columns:1fr 90px 36px}
  .fld{border:1px solid var(--line-strong); border-radius:8px; padding:9px 11px; background:var(--surface-2); width:100%}
  .fld:focus{outline:2px solid var(--primary-l); border-color:var(--primary)}
  .swatch{width:16px;height:16px;border-radius:5px;flex:none;border:1px solid rgba(0,0,0,.08)}
  .chk{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-soft);justify-content:center}
  .rm{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-faint);display:grid;place-items:center}
  .rm:hover{color:var(--danger);border-color:var(--danger)}
  .add-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}
  .add-row .fld{flex:1;min-width:120px;width:auto}
  .btn-add{background:var(--primary);color:#fff;border:none;padding:9px 15px;border-radius:8px;font-weight:600;font-size:14px}
  .btn-add:hover{background:var(--primary-d)}
  .datatools{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
  /* Essai du rappel de volume */
  .vr-test{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px}
  .vr-etat{font-size:11.5px;font-weight:800;color:var(--ink-soft)}
  .vr-prev{margin-top:12px;padding:14px 16px;border-radius:15px;border:1px solid var(--line);
    background:var(--surface-2);max-width:420px}
  .vr-prev[hidden]{display:none}
  .vrp-h{display:flex;align-items:center;gap:10px}
  .vrp-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
    background:rgba(14,85,97,.12);font-size:16px}
  .vrp-t{font-size:13.5px;font-weight:900;letter-spacing:-.01em}
  .vrp-b{margin-top:9px;display:flex;gap:14px;flex-wrap:wrap}
  .vrp-c{display:flex;flex-direction:column}
  .vrp-c span{font-size:9.5px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
  .vrp-c b{font-size:15px;font-weight:900;font-variant-numeric:tabular-nums}
  .vrp-n{margin:9px 0 0;font-size:10.5px;color:var(--ink-soft);font-style:italic}
  .ej-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:6px}
  @media (min-width:640px){.ej-grid{grid-template-columns:1fr 1fr 1fr}}
  .ej-status{font-size:12.5px;color:var(--ink-soft)}
  .ej-status.ok{color:#0E7A50;font-weight:600}
  .ej-status.err{color:#B23B0C;font-weight:600}
  .btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid #F0C7C2;padding:9px 15px;border-radius:8px;font-weight:600;font-size:14px}
  .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-weight:700;margin-bottom:8px}
  .head-lbl{display:grid;gap:9px;font-size:11px;color:var(--ink-faint);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}

  /* ---------- Empty ---------- */
  .empty{text-align:center;padding:54px 20px;color:var(--ink-soft)}
  .empty svg{width:44px;height:44px;color:var(--line-strong);margin-bottom:12px}
  .empty h3{color:var(--ink);font-size:16px;margin-bottom:6px}

  /* ---------- Modal ---------- */
  /* z-index 75 : AU-DESSUS du tiroir de navigation (70) — un formulaire ne doit jamais
     se retrouver derrière la barre latérale sur mobile ; les toasts (80) restent visibles */
  .scrim{position:fixed;inset:0;background:rgba(16,39,46,.5);backdrop-filter:blur(3px);
    z-index:75;display:none;align-items:flex-end;justify-content:center}
  .scrim.on{display:flex}
  .sheet{background:var(--surface);width:100%;max-width:560px;max-height:92vh;overflow:auto;
    border-radius:20px 20px 0 0;box-shadow:var(--shadow-lg);animation:rise .28s cubic-bezier(.2,.8,.2,1)}
  @keyframes rise{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
  @media (min-width:620px){.scrim{align-items:center}.sheet{border-radius:20px}}
  /* Flèche de retour en tête de fenêtre */
  .sheet-back{flex:none;width:34px;height:34px;margin-right:2px;border:0;border-radius:11px;cursor:pointer;
    display:grid;place-items:center;background:rgba(0,0,0,.06);color:inherit;
    transition:background .15s, transform .13s}
  .sheet-back svg{width:19px;height:19px}
  .sheet-back:hover{background:rgba(0,0,0,.12);transform:translateX(-2px)}
  /* Sur les en-têtes colorés, le bouton reste lisible */
  .qc-h .sheet-back,.qm-h .sheet-back,.pwd-h .sheet-back,.gin-sheet .sheet-h .sheet-back,
  #dupScrim .sheet-h .sheet-back,#recuScrim .sheet-h .sheet-back{background:rgba(255,255,255,.18);color:#fff}
  .qc-h .sheet-back:hover,.qm-h .sheet-back:hover,.pwd-h .sheet-back:hover,
  .gin-sheet .sheet-h .sheet-back:hover,#dupScrim .sheet-h .sheet-back:hover,
  #recuScrim .sheet-h .sheet-back:hover{background:rgba(255,255,255,.3)}
  .sheet-h.has-back{display:flex;align-items:center;gap:10px}
  @media (prefers-reduced-motion: reduce){ .sheet-back:hover{transform:none} }
  .sheet-h{position:sticky;top:0;background:var(--surface);padding:18px 22px 14px;border-bottom:1px solid var(--line);
    display:flex;align-items:center;justify-content:space-between;z-index:2}
  .sheet-h h2{font-size:17px}
  .x{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);
    color:var(--ink-soft);font-size:19px;line-height:1;cursor:pointer;flex:none;
    display:inline-flex;align-items:center;justify-content:center;
    transition:background .15s,color .15s,border-color .15s,transform .12s}
  .x:hover{color:var(--ink);background:var(--surface-2);transform:scale(1.06)}
  .x:active{transform:scale(.94)}
  /* ⚠ Sur un en-tête coloré, le bouton gardait le fond blanc du thème clair ET une
     couleur de texte blanche : il devenait invisible. On lui donne ici un fond
     translucide et un bord clair, une fois pour toutes les fenêtres concernées. */
  .op-h .x,.qc-h .x,.qm-h .x,.pwd-h .x,.dem-h .x,.mp-h .x,
  #recuScrim .sheet-h .x,#ginScrim .sheet-h .x,#dupScrim .sheet-h .x{
    background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.34);color:#fff}
  .op-h .x:hover,.qc-h .x:hover,.qm-h .x:hover,.pwd-h .x:hover,.dem-h .x:hover,.mp-h .x:hover,
  #recuScrim .sheet-h .x:hover,#ginScrim .sheet-h .x:hover,#dupScrim .sheet-h .x:hover{
    background:rgba(255,255,255,.3);color:#fff}
  .form{padding:18px 22px 8px}
  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
  .field{margin-bottom:13px}
  .field label{display:block;font-size:13.5px;font-weight:700;color:var(--ink);margin-bottom:5px}
  .field label .req{color:var(--fail)}
  .exchange{position:relative;z-index:0;overflow:hidden;background:var(--line);border:none;border-radius:12px;padding:14px;margin-bottom:13px}
  .exchange::before{content:"";position:absolute;z-index:-2;left:-50%;top:-50%;width:200%;height:200%;background:conic-gradient(from 0deg, transparent 0 66%, var(--exc,#0E5561) 82%, #fff 90%, var(--exc,#0E5561) 96%, transparent 100%);animation:exSpin 2.8s linear infinite}
  .exchange::after{content:"";position:absolute;z-index:-1;inset:2px;border-radius:10px;background:var(--surface-2)}
  .exchange.out{--exc:#C0392B}
  .exchange.in{--exc:#1E8E5A}
  @keyframes exSpin{to{transform:rotate(1turn)}}
  @media(prefers-reduced-motion:reduce){ .exchange::before{display:none} }
  .exchange .cap{font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:700;margin-bottom:9px}
  .cap.in{color:var(--paid); animation:capBlinkIn 1.1s ease-in-out infinite}
  .cap.out{color:var(--fail); animation:capBlinkOut 1.1s ease-in-out infinite}
  @keyframes capBlinkOut{0%,42%{text-shadow:0 0 13px rgba(192,57,43,.9), 0 0 22px rgba(192,57,43,.5)} 58%,100%{text-shadow:0 0 0 rgba(192,57,43,0)}}
  @keyframes capBlinkIn{0%,42%{text-shadow:0 0 13px rgba(30,142,90,.9), 0 0 22px rgba(30,142,90,.5)} 58%,100%{text-shadow:0 0 0 rgba(30,142,90,0)}}
  @media(prefers-reduced-motion:reduce){ .cap.out, .cap.in{animation:none} }
  .err{color:var(--fail);font-size:12.5px;margin:2px 22px 0;min-height:0}
  .sheet-f{position:sticky;bottom:0;background:var(--surface);padding:14px 22px calc(16px + env(safe-area-inset-bottom,0));
    border-top:1px solid var(--line);display:flex;gap:10px}
  .btn-primary{flex:1;background:var(--primary);color:#fff;border:none;padding:13px;border-radius:11px;font-weight:700;font-size:15px}
  .btn-primary:hover{background:var(--primary-d)}
  .btn-cancel{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);padding:13px 20px;border-radius:11px;font-weight:600}

  /* ---------- Toast + banner ---------- */
  .toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
  .toast{background:var(--ink);color:#fff;padding:11px 18px;border-radius:11px;font-size:14px;font-weight:600;box-shadow:var(--shadow-lg);animation:rise .2s ease}
  .toast.ok{background:var(--paid)} .toast.bad{background:var(--danger)}
  .banner{background:#FFF6E0;border-bottom:1px solid #F0DFA8;color:#7A5A00;font-size:12.5px;padding:9px 20px;text-align:center}

  :focus-visible{outline:2px solid var(--primary);outline-offset:1px;border-radius:4px}
  @media (max-width:520px){
    .treso .val{font-size:20px}.clock{display:none}
    .row.caisse-row{grid-template-columns:1fr 120px 34px}
    .grid2{grid-template-columns:1fr}
  }
  .wa-badge{display:inline-flex;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#25D366;color:#063;font-size:10px;font-weight:800;align-items:center;justify-content:center;vertical-align:middle;margin-left:4px}
  .wa-empty{max-width:560px;margin:40px auto;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px}
  .wa-empty h3{margin:0 0 8px;color:var(--ink)} .wa-empty p{color:var(--ink-soft);margin:0 0 16px}
  .wa-wrap{display:grid;grid-template-columns:300px 1fr;gap:14px;height:calc(100dvh - 200px);min-height:420px}
  .wa-list{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:auto;display:flex;flex-direction:column}
  .wa-list-h{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-weight:800;color:var(--ink);position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--line)}
  .wa-conv{display:flex;align-items:center;gap:10px;padding:11px 14px;border:none;border-bottom:1px solid var(--line);background:none;cursor:pointer;text-align:left;width:100%}
  .wa-conv:hover{background:var(--surface-2)} .wa-conv.on{background:#e7f7ee}
  .wa-av{width:36px;height:36px;border-radius:50%;background:#25D366;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
  .wa-cv-main{display:flex;flex-direction:column;min-width:0} .wa-cv-main b{color:var(--ink);font-size:14px}
  .wa-cv-last{color:var(--ink-soft);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .wa-none{padding:18px;color:var(--ink-soft);font-size:13px}
  .wa-thread{background:var(--surface);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;overflow:hidden}
  .wa-thread-h{padding:12px 14px;border-bottom:1px solid var(--line);font-size:15px;color:var(--ink)}
  .wa-scroll{flex:1;overflow:auto;padding:14px;background:#f5f3ee;display:flex;flex-direction:column;gap:8px}
  .wa-msg{display:flex} .wa-msg.out{justify-content:flex-end}
  .wa-bubble{max-width:75%;padding:8px 11px;border-radius:12px;font-size:13.5px;line-height:1.35;background:#fff;border:1px solid var(--line);color:var(--ink);white-space:pre-wrap;word-break:break-word}
  .wa-msg.out .wa-bubble{background:#dcf8c6;border-color:#c6ecb0}
  .wa-time{display:block;font-size:10px;color:var(--ink-faint);margin-top:3px;text-align:right}
  .wa-compose{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
  .wa-compose .fld{flex:1}
  .wa-hint{padding:6px 12px 10px;font-size:11px;color:var(--ink-faint)}
  @media (max-width:820px){ .wa-wrap{grid-template-columns:1fr;height:auto} .wa-list{max-height:240px} .wa-thread{height:60dvh} }
  .fab-stack{position:fixed;right:22px;bottom:22px;z-index:120;display:flex;flex-direction:column;gap:13px;align-items:flex-end}
  .fab{position:relative;display:inline-flex;align-items:center;height:56px;width:56px;border-radius:30px;text-decoration:none;overflow:hidden;box-shadow:0 8px 22px rgba(0,0,0,.22),0 2px 6px rgba(0,0,0,.14);transition:width .28s cubic-bezier(.4,0,.2,1),box-shadow .2s,transform .2s}
  .fab .fab-ic{flex:0 0 56px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:15px;letter-spacing:.4px}
  .fab .fab-ic svg{width:27px;height:27px}
  .fab .fab-favi{width:30px;height:30px;border-radius:7px;background:#fff;padding:3px;object-fit:contain;box-shadow:0 1px 2px rgba(0,0,0,.18)}
  .fab .fab-label{white-space:nowrap;font-weight:800;font-size:14px;opacity:0;max-width:0;transition:opacity .2s,max-width .28s,padding .28s;padding:0}
  .fab:hover{width:168px;transform:translateY(-1px);box-shadow:0 13px 30px rgba(0,0,0,.3),0 3px 8px rgba(0,0,0,.18)}
  .fab:hover .fab-label{opacity:1;max-width:118px;padding-right:20px}
  .fab-wa{background:linear-gradient(135deg,#25D366,#128C7E);color:#fff}
  .fab-more{display:flex;flex-direction:column;gap:10px;align-items:flex-end}
  /* Simple chevron, sans pastille ni fond : juste une flèche au-dessus de WhatsApp. */
  .fab-arrow{align-self:flex-end;margin:-2px 12px -2px 0;padding:2px;border:0;background:transparent;color:#0E5561;cursor:pointer;line-height:0}
  .fab-arrow svg{width:26px;height:26px;transition:transform .2s;filter:drop-shadow(0 1px 2px rgba(16,39,46,.35))}
  .fab-arrow.open svg{transform:rotate(180deg)}
  .fab-arrow:hover svg{opacity:.75}
  .fab-rech{background:linear-gradient(135deg,#6A1B9A,#8E44AD);color:#fff}
  .fab-chat{background:linear-gradient(135deg,#0E5561,#137f92);color:#fff}
  .fab-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;
    background:#C0392B;color:#fff;font-size:10.5px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;
    border:2px solid var(--paper)}
  .fab-chat .fab-ic{position:relative;overflow:visible}
  /* Un message non lu se voit même quand la liste est repliée */
  .fab-arrow.has-msg::after{content:"";position:absolute;margin-left:-6px;margin-top:-2px;width:9px;height:9px;border-radius:50%;
    background:#C0392B;border:2px solid var(--paper)}
  .fab-arrow{position:relative}
  .fab-dash{background:linear-gradient(135deg,#0E5561,#127b8c);color:#fff}
  /* Sur le tableau de bord, le bouton reste VISIBLE mais s'efface visuellement :
     on ne cherche pas un bouton disparu, et il sert alors à revenir en haut. */
  .fab-dash.is-current{background:linear-gradient(135deg,#5b7a80,#7d979c);opacity:.85}
  .fab-eco{background:linear-gradient(135deg,#0A4EA0,#0C93C7);color:#fff}
  .fab-tx{background:linear-gradient(135deg,#FFC403,#F59E0B);color:#3A2B00;border:none;cursor:pointer}
  .fab-tx:hover{width:220px}
  .fab-tx:hover .fab-label{max-width:172px}
  .fab-gxop{background:linear-gradient(135deg,#22a768,#12704a);color:#fff;border:none;cursor:pointer}
  .fab-gxpt{background:linear-gradient(135deg,#7d55d6,#513593);color:#fff;border:none;cursor:pointer}
  .fab-gxop:hover,.fab-gxpt:hover{width:210px}
  .fab-gxop:hover .fab-label,.fab-gxpt:hover .fab-label{max-width:162px}
  .fab-ring{position:absolute;inset:0;border-radius:30px;box-shadow:0 0 0 0 rgba(37,211,102,.55);animation:waPulse 2.4s ease-out infinite;pointer-events:none}
  @keyframes waPulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.5)}70%{box-shadow:0 0 0 15px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
  @media (max-width:860px){ .fab-stack{right:16px;bottom:78px} }
  @media (prefers-reduced-motion:reduce){ .fab-ring{animation:none} }
  @media print{ .fab-stack{display:none!important} }
  .dep-summary{margin-bottom:14px}
  .dep-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
  .dep-kpi{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:12px 14px;box-shadow:var(--shadow);border-left:4px solid var(--primary)}
  .dep-kpi.warn{border-left-color:#B26A00}
  .dep-kpi.ok{border-left-color:#1E8E5A}
  .dep-kpi-lab{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);font-weight:800}
  .dep-kpi-val{font-size:21px;font-weight:900;color:var(--ink)}
  .dep-bycat{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
  .dep-cat-chip{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12.5px}
  .dep-cat-chip b{color:var(--ink)}
  /* ---------- Formulaire de dépense (v370) ---------- */
  .dpn-head{display:flex;align-items:flex-start;gap:13px;margin-bottom:15px}
  .dpn-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;
    background:rgba(178,59,12,.1);color:#B23B0C}
  .dpn-ic svg{width:21px;height:21px}
  .dpn-head h3{margin:0}
  .dpn-head .sub{margin:3px 0 0}
  .dpn-amtbox{padding:16px 18px;border-radius:17px;margin-bottom:12px;
    background:linear-gradient(135deg,rgba(178,59,12,.07),rgba(224,138,43,.06));
    border:1px solid rgba(178,59,12,.2)}
  .dpn-lab{display:block;font-size:11px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;
    color:var(--ink-soft);margin-bottom:7px}
  .dpn-amtw{position:relative;display:flex;align-items:center}
  .dpn-amt{width:100%;font-size:30px;font-weight:900;text-align:right;padding:14px 74px 14px 16px;
    border-radius:14px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
  .dpn-amt:focus{border-color:#B23B0C;box-shadow:0 0 0 4px rgba(178,59,12,.12);outline:none}
  .dpn-cur{position:absolute;right:17px;font-size:12px;font-weight:900;letter-spacing:.06em;
    color:var(--ink-soft);pointer-events:none}
  .dpn-from{display:flex;align-items:center;gap:10px;margin-top:11px;flex-wrap:wrap}
  .dpn-fl{font-size:11.5px;font-weight:800;color:var(--ink-soft);white-space:nowrap}
  .dpn-from select{flex:1;min-width:150px;border-radius:11px;font-weight:800}
  .dpn-after{margin-top:9px;font-size:12px;font-weight:800;color:var(--ink-soft)}
  .dpn-after:empty{display:none}
  .dpn-after b{font-variant-numeric:tabular-nums}
  .dpn-after .neg{color:#B23B0C}
  .dpn-card{padding:15px 16px;border-radius:16px;border:1px solid var(--line);background:var(--surface);
    margin-bottom:11px;transition:border-color .18s, box-shadow .18s}
  .dpn-card:focus-within{border-color:rgba(14,85,97,.3);box-shadow:0 12px 26px -20px rgba(10,65,73,.45)}
  .dpn-ct{display:flex;align-items:center;gap:9px;margin-bottom:11px;font-size:13px;font-weight:900}
  .dpn-n{flex:none;width:23px;height:23px;border-radius:7px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:11px;font-weight:900}
  .dpn-plus{border:1px solid var(--line);border-radius:16px;background:var(--surface);margin-bottom:11px;overflow:hidden}
  .dpn-plus>summary{display:flex;align-items:center;gap:9px;list-style:none;cursor:pointer;
    padding:14px 16px;font-size:13px;font-weight:900}
  .dpn-plus>summary::-webkit-details-marker{display:none}
  .dpn-plus>summary em{font-style:normal;font-size:10.5px;font-weight:700;color:var(--ink-soft)}
  .dpn-plus>summary::after{content:"▾";margin-left:auto;opacity:.55}
  .dpn-plus[open]>summary::after{content:"▴"}
  .dpn-plus-b{padding:0 16px 15px}
  .dpn-remb{display:flex;align-items:center;gap:12px;padding:13px 15px;border-radius:15px;cursor:pointer;
    border:1px solid var(--line);background:var(--surface-2);margin-bottom:13px;position:relative;
    transition:border-color .18s,background .18s}
  .dpn-remb input{position:absolute;opacity:0;width:0;height:0}
  .dpn-sw{flex:none;width:42px;height:24px;border-radius:99px;background:rgba(0,0,0,.16);position:relative;
    transition:background .2s}
  .dpn-sw::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;
    background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.25);transition:transform .2s}
  .dpn-remb input:checked ~ .dpn-sw{background:#0E7A50}
  .dpn-remb input:checked ~ .dpn-sw::after{transform:translateX(18px)}
  .dpn-rt b{display:block;font-size:13px;font-weight:900}
  .dpn-rt em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);margin-top:2px}
  .dpn-go{width:100%;padding:14px;border-radius:13px;font-size:14px;font-weight:900;
    box-shadow:0 12px 26px -13px rgba(10,65,73,.8)}
  @media(max-width:560px){ .dpn-amt{font-size:24px;padding-right:64px} }
  .dep-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .dep-remb-chk{display:flex;gap:9px;align-items:flex-start;margin:6px 0 4px;font-size:13px;color:var(--ink-soft);cursor:pointer}
  .dep-remb-chk input{margin-top:3px}
  .dep-form-actions{margin-top:10px}
  .dep-card{background:var(--surface);border:1px solid var(--line);border-left:4px solid #B23B0C;border-radius:13px;padding:13px 15px;box-shadow:var(--shadow);margin-bottom:10px}
  .dep-card.arm{border-left-color:#B26A00}
  .dep-card.rem{border-left-color:#1E8E5A}
  .dep-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
  .dep-card-lib{font-size:15px;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .dep-card-meta{font-size:12.5px;color:var(--ink-soft);margin-top:3px}
  .dep-card-note{font-size:12px;color:var(--ink-faint);margin-top:2px;font-style:italic}
  .dep-cat-tag{display:inline-block;background:var(--surface-2);border-radius:6px;padding:1px 8px;font-weight:700;color:var(--ink-soft)}
  .dep-card-right{display:flex;align-items:center;gap:8px;flex:none}
  .dep-card-mont{font-size:17px;font-weight:900;color:#B23B0C;white-space:nowrap}
  .dep-badge{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft)}
  .dep-badge.warn{background:#FFF4E5;color:#B26A00}
  .dep-badge.ok{background:#E4F3EB;color:#1E8E5A}
  .dep-remb{margin-top:11px;padding-top:11px;border-top:1px dashed var(--line)}
  .dep-remb.light{background:#F4FAF6;border:1px solid #D8ECDF;border-radius:10px;padding:9px 11px;margin-top:10px}
  .dep-remb-line{display:flex;justify-content:space-between;font-size:13px;padding:2px 0;color:var(--ink-soft)}
  .dep-remb-line b{color:var(--ink)}
  .dep-remb-bar{height:7px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin:6px 0}
  .dep-remb-bar>div{height:100%;background:#1E8E5A;border-radius:999px}
  .dep-remb-hist{font-size:12px;color:var(--ink-soft);padding:1px 0}
  .dep-remb-add{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
  .dep-remb-add .remb-amt{max-width:130px}
  .dep-remb-done{margin-top:6px;color:#1E8E5A;font-weight:800;font-size:13px}
  /* BANDE DES TRÉSORERIES — pièce maîtresse du tableau de bord.
     Dégradé plus profond, liseré clair en haut (effet de relief), ombre travaillée. */
  .dash-treso{position:relative;overflow:hidden;color:#fff;border-radius:22px;padding:18px 22px;margin-bottom:16px;
    background:linear-gradient(135deg,#12707E 0%, var(--primary) 45%, var(--primary-d,#0a3f48) 100%);
    box-shadow:0 22px 46px -20px rgba(14,85,97,.6), 0 4px 14px -8px rgba(16,39,46,.5),
               inset 0 1px 0 rgba(255,255,255,.14)}
  .dash-treso::after{content:"";position:absolute;right:-40px;top:-60px;width:210px;height:210px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 70%);pointer-events:none}
  .dash-treso::before{content:"";position:absolute;left:-50px;bottom:-70px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.09),transparent 70%);pointer-events:none}
  .caisse-h{position:relative}
  .caisse-recharge{position:absolute;top:-4px;right:-4px;width:26px;height:26px;border-radius:50%;border:none;background:rgba(255,255,255,.85);color:var(--c,#0E5561);font-size:18px;font-weight:900;line-height:1;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.2)}
  .caisse-recharge:hover{background:#fff}
  .caisse.low{outline:2px solid #E24B4A;outline-offset:-2px}
  /* Détail des sous-caisses, dans la carte de leur mère */
  /* Bouton de transfert interne, sur la carte de la caisse */
  .sscs-tr{margin-top:9px;width:100%;padding:6px 10px;border-radius:9px;cursor:pointer;
    border:1px solid rgba(255,255,255,.32);background:rgba(255,255,255,.14);color:inherit;
    font-size:10.5px;font-weight:800;letter-spacing:.02em}
  .sscs-tr:hover{background:rgba(255,255,255,.28)}
  /* Fenêtre de transfert entre sous-caisses */
  .tsc-sheet{max-width:420px}
  .tsc-b{padding-top:15px}
  .tsc-l{display:flex;flex-direction:column;gap:5px}
  .tsc-lab{font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
  .tsc-lab.out{color:#B23B0C}
  .tsc-lab.in{color:#0E7A50}
  .tsc-fl{display:flex;justify-content:center;margin:8px 0}
  .tsc-fl button{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
    background:var(--surface);cursor:pointer;font-size:15px;color:#0E5561}
  .tsc-fl button:hover{background:rgba(14,85,97,.09)}
  .tsc-amtw{position:relative;display:flex;align-items:center;margin-top:14px}
  .tsc-amt{width:100%;font-size:22px;font-weight:900;text-align:right;padding:14px 62px 14px 14px;
    border-radius:13px;font-variant-numeric:tabular-nums}
  .tsc-cur{position:absolute;right:15px;font-size:11px;font-weight:900;letter-spacing:.06em;
    color:var(--ink-soft);pointer-events:none}
  .tsc-prev{margin-top:12px;display:flex;flex-direction:column;gap:6px}
  .tsc-prev:empty{display:none}
  .tsc-p{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:9px 12px;
    border-radius:11px;font-size:12px;font-weight:700}
  .tsc-p.out{background:rgba(178,59,12,.07)}
  .tsc-p.in{background:rgba(30,142,90,.08)}
  .tsc-p b{font-weight:800;font-variant-numeric:tabular-nums}
  .tsc-p em{font-style:normal;font-weight:900}
  .tsc-p em.neg{color:#B23B0C}
  .tsc-note{margin:12px 0 0;padding:10px 12px;border-radius:11px;background:var(--surface-2);
    border:1px solid var(--line);font-size:11.5px;color:var(--ink-soft);line-height:1.55}
  .tsc-note b{color:var(--ink);font-weight:800}
  .sscs{margin-top:9px;padding-top:8px;border-top:1px solid rgba(255,255,255,.22);display:flex;flex-direction:column;gap:4px}
  .sscs-l{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700}
  .sscs-l span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}
  .sscs-l b{font-weight:900;font-variant-numeric:tabular-nums}
  .sscs-l.bas b{opacity:.6}
  .sscs-p{flex:none;width:20px;height:20px;border-radius:6px;border:1px solid rgba(255,255,255,.35);
    background:rgba(255,255,255,.16);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0}
  .sscs-p:hover{background:rgba(255,255,255,.3)}
  .caisse-warn{margin-top:6px;font-size:11px;font-weight:800;color:#fff;background:#C0392B;border-radius:7px;padding:3px 8px;text-align:center}
  .selpop{position:fixed;z-index:5000;background:var(--surface,#fff);border:1px solid var(--line,#d9e2e4);border-radius:12px;box-shadow:0 12px 34px rgba(0,0,0,.20);padding:8px;max-width:calc(100vw - 16px)}.selpop-search{width:100%;padding:9px 11px;border:1px solid var(--line,#d9e2e4);border-radius:9px;font-size:14px;outline:none;margin-bottom:6px;box-sizing:border-box;background:var(--surface,#fff);color:var(--ink,#10272E)}
  .selpop-search:focus{border-color:var(--primary)}
  .selpop-list{max-height:240px;overflow-y:auto}
  .selpop-opt{padding:9px 11px;border-radius:8px;cursor:pointer;font-size:14px;color:var(--ink,#10272E);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .selpop-opt:hover{background:var(--surface-2,#eef4f5)}
  .selpop-opt.on{background:var(--primary);color:#fff;font-weight:700}
  .selpop-opt.dis{opacity:.5;cursor:default}
  .selpop-empty{padding:10px 11px;color:var(--ink-faint,#88a);font-size:13px}
  .tx-hint{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-faint,#7a9198);margin:0 0 10px;padding:0 2px;font-weight:600}
  .tx-hint svg{width:15px;height:15px;flex:none;color:var(--primary)}
  .txrow{cursor:pointer}
  .txmenu-scrim{position:fixed;inset:0;background:rgba(6,20,24,.5);z-index:6000;display:flex;align-items:center;justify-content:center;padding:20px;animation:txmFade .14s ease}
  .txmenu{background:var(--surface,#fff);border-radius:16px;width:100%;max-width:340px;box-shadow:0 22px 54px rgba(0,0,0,.34);padding:8px;animation:txmPop .16s ease}
  .txmenu-h{padding:10px 12px 12px;border-bottom:1px solid var(--line,#e2ebed);margin-bottom:6px}
  .txmenu-h b{display:block;font-size:16px;color:var(--ink,#10272E)}
  .txmenu-h span{font-size:12px;color:var(--ink-faint,#88a)}
  .txmenu-item{display:flex;align-items:center;gap:13px;width:100%;padding:13px 12px;border:none;background:none;border-radius:11px;cursor:pointer;font-size:15px;font-weight:700;color:var(--ink,#10272E);text-align:left}
  .txmenu-item:hover{background:var(--surface-2,#eef4f5)}
  .txmenu-item svg{width:21px;height:21px;flex:none;color:var(--primary)}
  .txmenu-item.danger,.txmenu-item.danger svg{color:#b3261e}
  .txmenu-cancel{justify-content:center;color:var(--ink-soft,#5a6b70);font-weight:800;margin-top:4px;border-top:1px solid var(--line,#eef1f2);border-radius:0}
  @keyframes txmFade{from{opacity:0}to{opacity:1}}
  @keyframes txmPop{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
  .dtreso-lab{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:.11em;
    text-transform:uppercase;opacity:.82;position:relative}
  .dtreso-val{font-size:31px;font-weight:900;line-height:1.05;margin-top:5px;letter-spacing:-.025em;position:relative;
    font-variant-numeric:tabular-nums;text-shadow:0 2px 12px rgba(0,0,0,.18)}
  .dtreso-sub{font-size:12px;opacity:.82;margin-top:6px;position:relative}
  /* Total des caisses du master : bandeau bien lisible plutôt qu'une petite ligne grise */
  .dtreso-master{display:flex;align-items:center;gap:11px;margin-top:10px;padding:10px 14px;position:relative;
    transition:background .2s, transform .18s;
    background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:14px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
  .dtm-ic{flex:none;width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.22);display:grid;place-items:center}
  .dtm-ic svg{width:21px;height:21px}
  .dtm-txt{display:flex;flex-direction:column;min-width:0;flex:1}
  .dtm-lab{font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;opacity:.92}
  .dtm-sub{font-size:11.5px;font-weight:600;opacity:.78;margin-top:2px}
  .dtm-val{font-size:21px;font-weight:900;letter-spacing:-.01em;white-space:nowrap;font-variant-numeric:tabular-nums}
  .dtreso-master:hover{background:rgba(255,255,255,.16);transform:translateY(-1px)}
  @media(max-width:560px){ .dtreso-master{flex-wrap:wrap} .dtm-val{width:100%;text-align:right;font-size:24px} }
  .txmode{display:flex;gap:8px;padding:2px 20px 10px}.txmode-btn{flex:1;padding:10px 12px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);font-weight:800;font-size:13px;letter-spacing:.02em;border-radius:11px;cursor:pointer;transition:all .15s}
  .txmode-btn:hover{border-color:var(--primary-l,#3a8a97)}
  .txmode-btn.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 3px 10px rgba(14,85,97,.28)}
  .txmode-btn.on[data-mode="pdv"]{background:#6C4AB6;border-color:#6C4AB6;box-shadow:0 3px 10px rgba(108,74,182,.3)}
  #sheetTitle.pdv{color:#6C4AB6}
  .sheet.sheet-lg{max-width:620px}
  /* ---------- Caisses & soldes de départ ---------- */
  .cs-head{display:flex;align-items:flex-start;gap:13px;margin-bottom:14px}
  .cs-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;
    background:rgba(14,85,97,.09);color:#0E5561}
  .cs-ic svg{width:21px;height:21px}
  .cs-head h3{margin:0}
  .cs-head .sub{margin:3px 0 0}
  /* Ligne d'ajout : elle se distingue des caisses existantes */
  /* Chaque caisse : une ligne-carte, avec sa part de la trésorerie */
  .cs-row{align-items:center;gap:10px;padding:9px 11px;border-radius:13px;border:1px solid transparent;
    transition:background .16s, border-color .16s, transform .14s}
  .cs-row:hover{background:var(--surface-2);border-color:var(--line);transform:translateX(2px)}
  .cs-row:focus-within{background:var(--surface-2);border-color:rgba(14,85,97,.3)}
  .cs-row.hors{opacity:.92}
  .cs-n{display:flex;align-items:center;gap:9px;min-width:0;position:relative}
  .cs-n .fld{flex:1;min-width:0;border:0;background:transparent;font-weight:800;padding-left:2px}
  .cs-n .fld:disabled{color:var(--ink);opacity:1}
  .cs-row:focus-within .cs-n .fld{background:var(--surface);border:1px solid var(--line)}
  /* Barre discrète de la part du total, sous le nom */
  .cs-part{position:absolute;left:44px;right:6px;bottom:-3px;height:3px;border-radius:99px;
    background:rgba(0,0,0,.06);overflow:hidden}
  .cs-part i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#7FD4C1,#0E5561)}
  .cs-row .cs-amt{width:auto}
  .cs-row .cs-amt .fld{border:0;background:transparent;font-size:15px}
  .cs-row:focus-within .cs-amt .fld{background:var(--surface);border:1px solid var(--line)}
  .cs-row .rm{opacity:.35;transition:opacity .15s, color .15s}
  .cs-row:hover .rm{opacity:1;color:#B23B0C}
  /* Total sous la liste */
  .cs-tot{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:10px;
    padding:11px 13px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
  .cs-tot:empty{display:none}
  .cs-tot span{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
  .cs-tot b{font-size:18px;font-weight:900;font-variant-numeric:tabular-nums}
  .cs-vide{padding:20px;text-align:center;border-radius:13px;border:1px dashed var(--line);background:var(--surface-2)}
  .cs-vide b{display:block;font-size:14px;font-weight:900}
  .cs-vide em{display:block;font-style:normal;font-size:12px;color:var(--ink-soft);margin-top:4px}
  @media (prefers-reduced-motion: reduce){ .cs-row:hover{transform:none} }
  /* Sous-caisses : la ligne est décalée et marquée */
  /* Bouton de dépliage des sous-caisses */
  /* Seconde liste : la sous-caisse à impacter */
  .fd-sous{margin-top:6px;border-radius:10px;font-weight:800;
    border-color:rgba(14,85,97,.35);background:rgba(14,85,97,.05)}
  .cs-toggle{display:flex;align-items:center;gap:8px;width:100%;margin:2px 0 6px;padding:8px 12px;
    border-radius:11px;border:1px dashed var(--line);background:var(--surface-2);cursor:pointer;
    font-size:11.5px;font-weight:800;color:#0E5561;text-align:left}
  .cs-toggle:hover{background:rgba(14,85,97,.07);border-color:rgba(14,85,97,.3)}
  .cs-toggle em{flex:1;min-width:0;font-style:normal;font-size:10.5px;font-weight:700;color:var(--ink-soft);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .cs-tg-ic{display:inline-block;transition:transform .18s}
  .cs-toggle.ouv .cs-tg-ic{transform:rotate(90deg)}
  .cs-enf{margin:0 0 10px 22px;padding-left:12px;border-left:2px solid var(--line)}
  .cs-row.sous{position:relative}
  .cs-act{display:flex;align-items:center;gap:6px}
  .cs-sub{padding:5px 10px;border-radius:8px;border:1px dashed rgba(14,85,97,.35);background:transparent;
    color:#0E5561;font-size:10.5px;font-weight:800;cursor:pointer;white-space:nowrap;opacity:.75}
  .cs-sub:hover{background:rgba(14,85,97,.08);opacity:1}
  .cs-somme{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:1px}
  .cs-somme b{font-size:15px;font-weight:900}
  .cs-somme em{font-style:normal;font-size:9.5px;color:var(--ink-soft);font-weight:700}
  .cs-somme .cs-cur{position:static;order:-1}
  .cs-add{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:12px;padding:11px 13px;
    border-radius:14px;border:1px dashed rgba(14,85,97,.32);background:rgba(14,85,97,.04);
    transition:border-color .18s, background .18s}
  .cs-add:focus-within{border-style:solid;border-color:rgba(14,85,97,.45);background:rgba(14,85,97,.06)}
  .cs-plus{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:18px;font-weight:900;line-height:1}
  .cs-add .fld{flex:1;min-width:130px;border-radius:11px}
  .cs-amt{position:relative;display:flex;align-items:center;flex:none;width:168px}
  .cs-amt .fld{width:100%;text-align:right;padding-right:50px;font-weight:900;font-variant-numeric:tabular-nums}
  .cs-cur{position:absolute;right:12px;font-size:10px;font-weight:900;letter-spacing:.05em;color:var(--ink-soft);
    pointer-events:none}
  .cs-add .btn-add{flex:none}
  /* Passerelle vers la trésorerie de départ */
  .cs-open{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px;padding:14px 16px;
    border-radius:15px;border:1px solid rgba(14,85,97,.18);
    background:linear-gradient(135deg,rgba(14,85,97,.07),rgba(127,212,193,.09))}
  .cs-open-t{flex:1;min-width:220px}
  .cs-open-t b{display:block;font-size:13.5px;font-weight:900}
  .cs-open-t em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-soft);margin-top:3px;line-height:1.5}
  .cs-open-b{flex:none;width:auto;padding:11px 18px;border-radius:12px;
    box-shadow:0 10px 22px -12px rgba(10,65,73,.7)}
  @media(max-width:560px){
    .cs-amt{width:100%}
    .cs-add .btn-add,.cs-open-b{width:100%}
  }
  /* ---------- Trésorerie de départ ---------- */
  #openingScrim .sheet{animation:qcIn .3s cubic-bezier(.22,.61,.36,1) both}
  .op-h{background:linear-gradient(135deg,#0F5D6A,#08363D);border-bottom:0;
    display:flex;align-items:center;justify-content:space-between;gap:12px}
  .op-hh{display:flex;align-items:center;gap:13px;min-width:0}
  .op-ic{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#7FD4C1;
    background:rgba(127,212,193,.16);border:1px solid rgba(127,212,193,.3)}
  .op-ic svg{width:22px;height:22px}
  .op-h h3{margin:0;color:#fff;font-size:19px;font-weight:900;letter-spacing:-.02em}
  .op-h p{margin:2px 0 0;color:#A9CDD1;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
  .op-h .x{color:#fff}
  .op-b{padding-top:16px}
  /* Le préambule, lisible sans être bavard */
  .op-lead{padding:13px 15px;border-radius:14px;margin-bottom:14px;
    background:linear-gradient(135deg,rgba(14,85,97,.07),rgba(127,212,193,.08));border:1px solid rgba(14,85,97,.16)}
  .op-lead p{margin:0;font-size:12.5px;line-height:1.55}
  .op-lead-2{margin-top:7px !important;color:var(--ink-soft);font-size:11.5px !important}
  /* Sections numérotées, avec un liseré de sens */
  .op-sec{position:relative;padding:15px 16px;border-radius:16px;border:1px solid var(--line);background:var(--surface);
    margin-bottom:12px;transition:border-color .18s, box-shadow .18s;
    animation:tlsOpen .3s cubic-bezier(.22,.61,.36,1) both}
  .op-sec:nth-of-type(2){animation-delay:.05s}
  .op-sec:nth-of-type(3){animation-delay:.1s}
  .op-sec:nth-of-type(4){animation-delay:.15s}
  .op-sec:focus-within{border-color:rgba(14,85,97,.32);box-shadow:0 12px 28px -20px rgba(10,65,73,.5)}
  .op-sec::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;
    background:rgba(14,85,97,.22)}
  .op-sec.op-in::before{background:linear-gradient(180deg,#2FAF6E,#0E7A50)}
  .op-sec.op-out::before{background:linear-gradient(180deg,#E4572E,#B23B0C)}
  .op-sec-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:11px}
  .op-n{flex:none;width:25px;height:25px;border-radius:8px;display:grid;place-items:center;
    background:#0E5561;color:#fff;font-size:11.5px;font-weight:900}
  .op-sec-h b{font-size:14px;font-weight:900;letter-spacing:-.01em}
  .op-sec-h em{font-style:normal;font-size:11.5px;color:var(--ink-soft);font-weight:700}
  .op-in .op-n{background:#0E7A50}
  .op-out .op-n{background:#B23B0C}
  /* Les deux écarts, côte à côte */
  .op-duo{display:grid;grid-template-columns:1fr 1fr;gap:11px}
  .op-ecc{padding:12px 13px;border-radius:13px;border:1px solid var(--line);background:var(--surface-2)}
  .op-ecc.in{border-color:rgba(30,142,90,.26);background:rgba(30,142,90,.05)}
  .op-ecc.out{border-color:rgba(178,59,12,.22);background:rgba(178,59,12,.05)}
  .oe-cap{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:900}
  .oe-cap i{width:9px;height:9px;border-radius:50%}
  .op-ecc.in .oe-cap i{background:#1E8E5A}
  .op-ecc.out .oe-cap i{background:#B23B0C}
  .op-ecc em{display:block;font-style:normal;font-size:11px;color:var(--ink-soft);font-weight:700;margin:2px 0 9px}
  .oe-f{position:relative;display:flex;align-items:center}
  .oe-f .fld{width:100%;font-size:17px;font-weight:900;text-align:right;padding-right:52px;
    font-variant-numeric:tabular-nums;border-radius:11px}
  .oe-cur{position:absolute;right:12px;font-size:10px;font-weight:900;letter-spacing:.05em;color:var(--ink-soft);
    pointer-events:none}
  .op-ecc.in .fld:focus{border-color:#0E7A50;box-shadow:0 0 0 3px rgba(30,142,90,.14)}
  .op-ecc.out .fld:focus{border-color:#B23B0C;box-shadow:0 0 0 3px rgba(178,59,12,.13)}
  @media (prefers-reduced-motion: reduce){ #openingScrim .sheet,.op-sec{animation:none} }
  @media(max-width:560px){ .op-duo{grid-template-columns:1fr} }
  .op-ec label{font-weight:800}
  .op-ec.in label{color:#0E7A50}
  .op-ec.out label{color:#B23B0C}
  .op-ec.in .fld:focus{border-color:#0E7A50;box-shadow:0 0 0 3px rgba(30,142,90,.14)}
  .op-ec.out .fld:focus{border-color:#B23B0C;box-shadow:0 0 0 3px rgba(178,59,12,.13)}
  .op-sec{margin:14px 0;padding:12px 0;border-top:1px solid var(--line)}
  .op-sec-h{font-size:13.5px;margin-bottom:8px}
  .op-row{display:grid;grid-template-columns:1fr 130px 34px;gap:8px;align-items:center;margin-bottom:8px}
  .op-row .op-newnom{grid-column:1/2}
  .op-del{width:34px;height:34px;border:1px solid var(--line);background:var(--surface-2);border-radius:9px;color:#B23B0C;font-size:18px;font-weight:800;cursor:pointer;line-height:1}
  .op-add{background:rgba(14,85,97,.08);border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-weight:700;font-size:12.5px;color:var(--primary);cursor:pointer}
  .op-add:hover{background:rgba(14,85,97,.14)}
  .op-gx{border:1px solid var(--line);border-radius:11px;padding:12px;margin-bottom:10px;background:var(--surface-2)}
  .op-gx-nom{font-weight:800;font-size:13px;margin-bottom:8px;color:var(--primary)}
  .mp-dep-row{display:grid;grid-template-columns:1fr 110px 110px 40px 34px;gap:7px;align-items:center;margin-bottom:8px}
  .mp-dep-cam{display:inline-flex;align-items:center;justify-content:center;width:40px;height:38px;border:1px solid var(--line);background:var(--surface-2);border-radius:9px;cursor:pointer;font-size:18px}
  .mp-dep-thumb{width:38px;height:38px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
  .mp-dep-del{width:34px;height:34px;border:1px solid var(--line);background:var(--surface-2);border-radius:9px;color:#B23B0C;font-size:18px;font-weight:800;cursor:pointer;line-height:1}
  @media(max-width:560px){ .mp-dep-row{grid-template-columns:1fr 1fr;gap:6px} .mp-dep-row .mp-dep-motif{grid-column:1/3} }
