
/* Bricogestion — charte : sidebar claire, accent #0066FF, aucun aplat bleu nuit.
   Mono-thème assumé, la charte est claire. */
html,body{min-height:100%}
:root{
  --nuit:#0B1F3B; --accent:#0066FF; --bleu2:#60A5FA;
  --fond:#F4F6F9; --vert:#10B981; --gris:#E5E7EB;
  --blanc:#FFFFFF; --texte:#334155; --doux:#64748B;
  --actif:#EAF2FF; --rouge:#DC2626; --orange:#D97706;
  --rouge-f:#FEF2F2; --orange-f:#FFFBEB; --vert-f:#ECFDF5;
  --r:8px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--fond);color:var(--texte);
     font:400 14px/1.55 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
     -webkit-font-smoothing:antialiased}
h1,h2,h3{color:var(--nuit);margin:0;text-wrap:balance}
h1{font-size:22px;font-weight:600;letter-spacing:-.01em}
h2{font-size:16px;font-weight:600}
a{color:var(--accent)}
.num{text-align:right;font-variant-numeric:tabular-nums}
.doux{color:var(--doux)}

/* ---------- ossature ---------- */
.app{display:grid;grid-template-columns:216px 1fr;min-height:100vh}
.rail{background:var(--blanc);border-right:1px solid var(--gris);
      padding:20px 12px;display:flex;flex-direction:column;gap:22px}
.marque{display:flex;align-items:center;gap:9px;padding:0 8px;
        font-weight:700;font-size:16px;color:var(--nuit);letter-spacing:-.02em}
.nav{display:flex;flex-direction:column;gap:2px}
.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r);
       color:var(--texte);text-decoration:none;font-size:13.5px;font-weight:500}
.nav a:hover{background:#F8FAFC}
.nav a[aria-current]{background:var(--actif);color:var(--accent);font-weight:600}
.nav svg{width:17px;height:17px;flex:none;stroke:#94A3B8;stroke-width:1.6;fill:none;
         stroke-linecap:round;stroke-linejoin:round}
.nav a[aria-current] svg{stroke:var(--accent)}
/* Sous-entrées du rail : décalées sous leur parent, sans icône. Le trait
   vertical rattache le groupe sans ajouter de cadre. La classe s'appelle
   sous-lien et non « sous » : .sous existait déjà (étiquettes en capitales). */
.sous-nav{display:flex;flex-direction:column;gap:1px;margin:1px 0 3px 19px;
          padding-left:11px;border-left:1px solid var(--gris)}
.nav a.sous-lien{padding:6px 10px;font-size:13px;font-weight:500;color:var(--doux)}
.nav a.sous-lien:hover{background:#F8FAFC;color:var(--texte)}
.nav a.sous-lien[aria-current]{background:var(--actif);color:var(--accent);font-weight:600}
/* Le parent d'une sous-entrée ouverte : marqué, moins que l'entrée même. */
.nav a.parent-actif{color:var(--accent);font-weight:600}
.nav a.parent-actif svg{stroke:var(--accent)}
.qui{margin-top:auto;display:flex;align-items:center;gap:9px;padding:8px 10px;
     border-top:1px solid var(--gris);padding-top:14px}
.pastille{width:28px;height:28px;border-radius:50%;background:var(--actif);color:var(--accent);
          display:grid;place-items:center;font-size:11px;font-weight:600;flex:none}

.page{padding:22px 26px 56px;min-width:0}
.tete{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.tete p{margin:3px 0 0;font-size:13px;color:var(--doux)}
.onglets{display:flex;gap:3px;flex-wrap:wrap;margin:18px 0 22px;
         border-bottom:1px solid var(--gris);padding-bottom:0}
/* Sans !important, display:flex l'emporte sur l'attribut hidden. */
.onglets[hidden]{display:none!important}
.onglets button{background:none;border:0;border-bottom:2px solid transparent;
                padding:8px 12px;font:inherit;font-size:13.5px;font-weight:500;
                color:var(--doux);cursor:pointer;margin-bottom:-1px}
.onglets button[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.onglets button:hover{color:var(--nuit)}

/* ---------- tuiles ---------- */
.tuiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));margin-bottom:26px}
.tuile{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:13px 15px}
.tuile .lab{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--doux)}
.tuile .val{font-size:23px;font-weight:600;color:var(--nuit);margin-top:5px;
            font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.tuile .sub{font-size:12px;color:var(--doux);margin-top:2px}

section.pave{margin-bottom:30px}
.pave header{margin-bottom:11px}
.pave header p{margin:2px 0 0;font-size:12.5px;color:var(--doux);max-width:66ch}
.sous{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
      color:var(--doux);margin:14px 0 8px}

/* ---------- cartes fournisseur ---------- */
.cartes{display:grid;gap:11px;grid-template-columns:repeat(auto-fill,minmax(282px,1fr))}
.carte{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:13px 15px;
       text-align:left;font:inherit;color:inherit;cursor:pointer;display:block;width:100%}
.carte:hover{border-color:var(--bleu2)}
.carte:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.carte.entrepot{border-left:3px solid var(--accent)}
.carte .h{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.carte .nom{font-weight:600;color:var(--nuit);font-size:14px}
.carte .mt{font-weight:600;color:var(--nuit);font-variant-numeric:tabular-nums;white-space:nowrap}
.jauge{height:4px;background:var(--gris);border-radius:2px;margin:10px 0 8px;overflow:hidden}
.jauge i{display:block;height:100%;background:var(--accent);border-radius:2px}
.jauge i.court{background:var(--orange)}
.meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--doux)}
.meta b{font-weight:500;color:var(--texte);font-variant-numeric:tabular-nums}

.puce{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;
      padding:2px 7px;border-radius:5px;white-space:nowrap}
.puce.rupt{background:var(--rouge-f);color:var(--rouge)}
.puce.att{background:var(--orange-f);color:var(--orange)}
.puce.ok{background:var(--vert-f);color:var(--vert)}
.puce.neutre{background:#F1F5F9;color:var(--doux)}
.pt{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

/* ---------- présaisons ---------- */
.saisons{display:grid;gap:5px}
.saison{display:grid;grid-template-columns:86px 1fr auto;gap:12px;align-items:baseline;
        background:var(--blanc);border:1px solid var(--gris);border-left-width:3px;
        border-radius:8px;padding:9px 13px}
.saison .d{font-weight:600;font-size:12.5px}
.saison .f{color:var(--nuit);font-weight:500}
.saison .r{font-size:12px;color:var(--doux)}
.saison .ca{font-size:12.5px;color:var(--doux);font-variant-numeric:tabular-nums;white-space:nowrap}
.saison.rouge{border-left-color:var(--rouge);background:var(--rouge-f)}
.saison.rouge .d{color:var(--rouge)}
.saison.orange{border-left-color:var(--orange);background:var(--orange-f)}
.saison.orange .d{color:var(--orange)}
.saison.vert{border-left-color:var(--vert);background:var(--vert-f)}
.saison.vert .d{color:var(--vert)}

/* ---------- tableaux ---------- */
/* overflow:hidden sur le cadre annulait le position:sticky de l'en-tête — un
   ancêtre qui masque le dépassement casse le collage. Le défilement, et donc le
   collage, se font maintenant dans .defil, qui a sa propre hauteur. */
.cadre{background:var(--blanc);border:1px solid var(--gris);border-radius:10px}
.defil{overflow:auto;max-height:72vh;-webkit-overflow-scrolling:touch;border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:8px 11px;border-bottom:1px solid var(--gris);white-space:nowrap;text-align:left}
thead th{position:sticky;top:0;background:#F8FAFC;font-size:11px;font-weight:600;
         letter-spacing:.04em;text-transform:uppercase;color:var(--doux);z-index:2;
         box-shadow:inset 0 -1px 0 var(--gris)}
thead th.tri{cursor:pointer;user-select:none}
thead th.tri:hover{color:var(--nuit)}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#F8FAFC}
td.lib{white-space:normal;min-width:15rem;color:var(--nuit);font-weight:500}
td.seq{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:var(--doux)}
.lien{background:none;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;font-weight:500}

.qte{width:56px;padding:4px 7px;border:1px solid var(--gris);border-radius:6px;
     font:inherit;font-size:13px;text-align:right;color:var(--nuit);background:var(--blanc);
     font-variant-numeric:tabular-nums}
.qte:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
.qte.modif{border-color:var(--accent);background:var(--actif);font-weight:600}
td.prop{color:var(--doux);font-variant-numeric:tabular-nums;text-align:right}

.histo{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.histo.v{background:var(--vert)} .histo.o{background:var(--orange)}
.histo.r{background:var(--rouge)} .histo.n{background:var(--gris)}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r);
     border:1px solid transparent;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.btn.prim{background:var(--accent);color:#fff}
.btn.prim:hover{background:#0052CC}
.btn.sec{background:var(--blanc);color:var(--accent);border-color:#BFDBFE}
.btn.sec:hover{background:var(--actif)}
.btn svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.7;fill:none;
         stroke-linecap:round;stroke-linejoin:round}

/* ---------- survol stats ---------- */
.bulle{position:fixed;z-index:50;background:var(--blanc);border:1px solid var(--gris);
       border-radius:10px;padding:12px 14px;box-shadow:0 8px 24px rgba(11,31,59,.12);
       font-size:12px;pointer-events:none;display:none}
.bulle h4{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--nuit)}
.bulle .duo{display:flex;gap:20px}
.bulle table{font-size:11.5px;width:auto}
.bulle th,.bulle td{padding:2px 8px 2px 0;border:0;white-space:nowrap}
.bulle th{position:static;background:none;text-transform:none;letter-spacing:0;font-size:11px}

.vide{padding:22px;text-align:center;color:var(--doux);font-size:13px}
.note{font-size:12px;color:var(--doux);margin-top:9px}
.bandeau{background:var(--actif);border:1px solid #BFDBFE;border-radius:10px;
         padding:11px 14px;font-size:12.5px;color:var(--nuit);margin-bottom:20px}
.bandeau b{font-weight:600}
.bandeau.panne{background:var(--rouge-f);border-color:#FECACA;color:var(--rouge)}
.bandeau[hidden]{display:none!important}

@media(max-width:860px){
  .app{grid-template-columns:1fr}
  .rail{flex-direction:row;align-items:center;gap:14px;overflow-x:auto;
        border-right:0;border-bottom:1px solid var(--gris);padding:12px 16px}
  .nav{flex-direction:row}.nav a span{display:none}.qui{margin:0;border:0;padding-top:8px}
  /* En rail horizontal, le sous-menu garde son texte et reste en ligne après
     l'icône de son groupe ; il défile avec le rail. */
  .sous-nav{flex-direction:row;margin:0 2px 0 4px;padding:0 0 0 8px}
  .nav a.sous-lien{font-size:12px;padding:5px 9px;white-space:nowrap}
  .page{padding:18px 16px 48px}
  .saison{grid-template-columns:76px 1fr}.saison .ca{grid-column:2}
}


/* --- ajouts de l'écran réel ------------------------------------------- */
.modale{position:fixed;inset:0;background:rgba(11,31,59,.35);display:grid;
        place-items:center;padding:16px;z-index:40}
.modale[hidden]{display:none!important}
.boite{background:var(--blanc);border-radius:12px;padding:20px 22px;width:100%;
       max-width:560px;max-height:82vh;overflow:auto;
       box-shadow:0 16px 48px rgba(11,31,59,.18)}
.boite h3{margin:0 0 4px;font-size:16px;color:var(--nuit)}
.boite p.aide{margin-bottom:14px}
.boite label{display:block;font-size:12px;color:var(--doux);margin-bottom:12px}
.boite input[type=text],.boite input[type=number],.boite textarea{
  display:block;width:100%;margin-top:4px;padding:8px 10px;font:inherit;font-size:14px;
  color:var(--nuit);background:var(--fond);border:1px solid var(--gris);border-radius:8px}
.boite textarea{min-height:64px;resize:vertical}
.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}
.resultats{border:1px solid var(--gris);border-radius:8px;max-height:230px;
           overflow:auto;margin-bottom:12px}
.resultats button{display:block;width:100%;text-align:left;border:0;background:none;
                  font:inherit;font-size:13px;padding:8px 11px;cursor:pointer;
                  border-bottom:1px solid var(--gris)}
.resultats button:last-child{border-bottom:0}
.resultats button:hover{background:var(--actif)}
.resultats .r2{color:var(--doux);font-size:12px}
tr.modifiee td{background:#F7FBFF}
tr.supprimee td{opacity:.45;text-decoration:line-through}
tr.ajoutee td{background:var(--vert-f)}
.motif{font-size:11.5px;color:var(--doux);font-style:italic}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
       background:var(--nuit);color:#fff;padding:10px 16px;border-radius:8px;
       font-size:13px;z-index:60;box-shadow:0 8px 24px rgba(11,31,59,.25)}
.toast[hidden]{display:none!important}
@media (prefers-reduced-motion:no-preference){.toast{animation:monte .18s ease-out}}
@keyframes monte{from{opacity:0;transform:translate(-50%,8px)}}

/* --- tri des colonnes -------------------------------------------------- */
thead th.tri::after{content:"";display:inline-block;width:0;height:0;margin-left:5px;
  border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-bottom:4px solid var(--gris);vertical-align:1px}
thead th.tri[data-sens="desc"]::after{border-bottom:0;border-top:4px solid var(--accent)}
thead th.tri[data-sens="asc"]::after{border-bottom-color:var(--accent)}
thead th.tri[data-sens]{color:var(--nuit)}

/* ---- rapprochement avec une proposition CGI --------------------------- */
.rapprochement{background:var(--blanc);border:1px solid var(--gris);
  border-radius:12px;padding:16px 18px;margin-bottom:16px}
.rapprochement .tuiles{margin-bottom:12px}
.rapprochement .tuile{background:var(--fond);border-color:transparent}
.rapprochement .tuile .val{font-size:19px}
.cgi-actions{display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap}
.bascule{display:inline-flex;align-items:center;gap:8px;font-size:13px;
  color:var(--texte);cursor:pointer;user-select:none}
.bascule input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
.rapprochement .note{margin:12px 0 0}

/* Quantité proposée par CGI : cliquable, colorée selon l'écart au retenu. */
.cgi-qte{font:inherit;font-weight:600;font-variant-numeric:tabular-nums;
  border:1px solid transparent;border-radius:6px;padding:2px 7px;cursor:pointer;
  background:#F1F5F9;color:var(--texte)}
.cgi-qte:hover{border-color:var(--accent);color:var(--accent)}
.cgi-qte:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cgi-qte.egal{background:var(--vert-f);color:var(--vert)}
.cgi-qte.plus{background:var(--orange-f);color:var(--orange)}
.cgi-qte.moins{background:#F1F5F9;color:var(--doux)}

.score{display:inline-block;min-width:30px;font-size:11.5px;font-weight:600;
  font-variant-numeric:tabular-nums;border-radius:20px;padding:2px 8px}
.score.fort{background:var(--rouge-f);color:var(--rouge)}
.score.moyen{background:var(--orange-f);color:var(--orange)}
.score.faible{background:#F1F5F9;color:var(--doux)}

/* Ligne que seul CGI propose : elle n'est pas encore dans la commande. */
tr.cgi td{background:#FFFDF5}
tr.cgi td:first-child{box-shadow:inset 3px 0 0 var(--orange)}

/* ---- page de connexion ------------------------------------------------
   Seule page visible depuis Internet : sobre, à la charte, et muette sur
   l'entreprise comme sur ce que l'outil contient. */
.connexion{min-height:100vh;display:grid;place-items:center;
  padding:32px 20px;background:var(--fond)}
.connexion[hidden]{display:none!important}

.carte-connexion{width:100%;max-width:372px;
  background:var(--blanc);border:1px solid var(--gris);border-radius:14px;
  padding:34px 30px 30px;box-shadow:0 1px 2px rgba(11,31,59,.04),
  0 12px 32px -12px rgba(11,31,59,.12)}

.logo-connexion{display:flex;align-items:center;justify-content:center;gap:11px;
  font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--nuit)}
.logo-connexion svg{flex:none}
.carte-connexion .sous-titre{margin:7px 0 26px;text-align:center;
  font-size:12.5px;color:var(--doux);letter-spacing:.02em}

.carte-connexion label{display:block;margin-bottom:6px;
  font-size:12.5px;font-weight:600;color:var(--nuit)}
.carte-connexion input{width:100%;margin-bottom:16px;padding:10px 12px;
  font:inherit;font-size:14px;color:var(--texte);background:var(--blanc);
  border:1px solid var(--gris);border-radius:var(--r);transition:border-color .12s}
.carte-connexion input:hover{border-color:#CBD5E1}
.carte-connexion input:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--actif)}

#b-connexion{width:100%;margin-top:6px;padding:11px 16px;font:inherit;
  font-size:14px;font-weight:600;color:var(--blanc);background:var(--accent);
  border:0;border-radius:var(--r);cursor:pointer;transition:background .12s}
#b-connexion:hover{background:#0055DB}
#b-connexion:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#b-connexion:disabled{background:var(--bleu2);cursor:default}

.carte-connexion .erreur{margin:14px 0 0;padding:9px 12px;border-radius:var(--r);
  background:var(--rouge-f);color:var(--rouge);font-size:12.5px;text-align:center}
.carte-connexion .erreur[hidden]{display:none!important}


@media (max-width:420px){
  .carte-connexion{padding:28px 22px 24px;border-radius:12px}
}

/* ---- colonnes figées et défilement latéral ----------------------------
   Le tableau compte vingt-quatre colonnes : sur un 16 pouces, la référence
   disparaît avant qu'on atteigne les quantités. Réf., EAN et Libellé restent
   donc collés à gauche pendant le défilement horizontal, comme l'en-tête reste
   collé en haut. Les largeurs sont fixes : une colonne collante dont la largeur
   dépend du contenu se décale d'une ligne à l'autre. */
.defil-fige table{table-layout:auto}
.defil-fige .fige{position:sticky;background:var(--blanc);z-index:1}
.defil-fige thead .fige{z-index:3}
.defil-fige .f1{left:0;width:86px;min-width:86px}
.defil-fige .f2{left:86px;width:122px;min-width:122px}
.defil-fige .f3{left:208px;width:236px;min-width:236px;max-width:236px}
.defil-fige .f3::after{content:"";position:absolute;top:0;right:0;bottom:-1px;width:1px;
  background:var(--gris);box-shadow:6px 0 8px -6px rgba(11,31,59,.18)}
.defil-fige thead .fige{background:#F8FAFC}
/* La ligne survolée doit rester lisible sous les colonnes collantes, qui ont
   leur propre fond opaque et masqueraient sinon le survol. */
.defil-fige tbody tr:hover .fige{background:#F8FAFC}
.defil-fige tbody tr.cgi .fige{background:#FFFDF5}
.defil-fige tbody tr.modifiee .fige{background:#F7FBFF}
.defil-fige tbody tr.ajoutee .fige{background:var(--vert-f)}
.defil-fige td.f3{white-space:normal}

/* Ascenseur horizontal toujours visible : sous Windows il n'apparaît qu'au
   survol, et on ne devine pas qu'il reste des colonnes à droite. */
.defil{scrollbar-width:thin;scrollbar-color:#CBD5E1 transparent}
.defil::-webkit-scrollbar{width:11px;height:11px}
.defil::-webkit-scrollbar-track{background:#F1F5F9;border-radius:7px}
.defil::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:7px;
  border:2px solid #F1F5F9}
.defil::-webkit-scrollbar-thumb:hover{background:#94A3B8}
.defil::-webkit-scrollbar-corner{background:#F1F5F9}

/* Mini de présentation : le nôtre, puis celui que CGI applique à la place. */
.mini-ecart{font-variant-numeric:tabular-nums;color:var(--nuit)}
.mini-ecart em{font-style:normal;font-weight:600;color:var(--orange)}

/* Seuil de score : le champ vit dans le libellé de la case à cocher. */
.bascule input[type=number]{width:54px;padding:3px 6px;font:inherit;font-size:12.5px;
  text-align:right;border:1px solid var(--gris);border-radius:6px;background:var(--blanc);
  color:var(--nuit);font-variant-numeric:tabular-nums}
.bascule input[type=number]:disabled{background:#F1F5F9;color:#94A3B8}
.cgi-actions{gap:10px 22px}

/* ---- filtre par famille ------------------------------------------------ */
.barre-filtre{display:flex;align-items:center;gap:10px;margin:0 0 20px}
.barre-filtre label{font-size:12.5px;font-weight:600;color:var(--nuit)}
.barre-filtre select{padding:7px 11px;font:inherit;font-size:13px;color:var(--texte);
  background:var(--blanc);border:1px solid var(--gris);border-radius:var(--r);
  cursor:pointer;min-width:190px}
.barre-filtre select:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--actif)}
.barre-filtre .note{margin:0;font-size:12px}

/* Une puce qui se clique doit se voir comme telle. */
.puce.cliquable{border:0;font:inherit;font-size:11.5px;font-weight:600;cursor:pointer}
.puce.cliquable:hover{filter:brightness(.94)}
.lien.cliquable{font-variant-numeric:tabular-nums;text-decoration:underline;
  text-decoration-style:dotted;text-underline-offset:2px}

/* ---- offres d'un article ----------------------------------------------- */
#t-offres tr.ici td{background:var(--actif)}

/* ---- ventes mois par mois ---------------------------------------------- */
.graphe{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;align-items:end;
  height:168px;margin:18px 0 6px;padding:0 2px}
.graphe .barre{display:flex;flex-direction:column;align-items:center;
  justify-content:flex-end;height:100%;gap:4px}
.graphe .v{font-size:11px;font-weight:600;color:var(--nuit);
  font-variant-numeric:tabular-nums;min-height:14px}
.graphe .b{width:100%;max-width:34px;background:var(--accent);border-radius:3px 3px 0 0;
  min-height:2px}
.graphe .barre:hover .b{background:var(--nuit)}
.graphe .m{font-size:10.5px;color:var(--doux);text-transform:lowercase}

/* ---- rapprochement des totaux (leçon Odace, 22/09) --------------------- */
.alerte-totaux{margin:0 0 12px;padding:10px 14px;border-radius:10px;
  font-size:13px;font-weight:600}
.alerte-totaux.ok{background:var(--vert-f);color:var(--vert);
  border:1px solid #A7F3D0}
.alerte-totaux.ko{background:var(--rouge-f);color:var(--rouge);
  border:1px solid #FECACA}
.alerte-totaux[hidden]{display:none!important}

/* ---- bascule entre deux vues (commandes CGI / bricogestion) ------------ */
.bascule-vues{display:inline-flex;border:1px solid var(--gris);
  border-radius:var(--r);overflow:hidden;background:var(--blanc)}
.bascule-vues button{border:0;background:none;font:inherit;font-size:13px;
  font-weight:500;padding:7px 14px;cursor:pointer;color:var(--doux)}
.bascule-vues button+button{border-left:1px solid var(--gris)}
.bascule-vues button.actif{background:var(--actif);color:var(--accent);
  font-weight:600}

/* ---- lisibilité des tableaux (demandes du 22/09) -----------------------
   Entête plus affirmée, et un zébrage une ligne sur deux, très neutre. Les
   lignes déjà teintées (cgi, modifiée, ajoutée) gardent leur couleur. */
thead th{background:#EEF2F7;color:#3B4A63}
.defil-fige thead .fige{background:#EEF2F7}
tbody tr:nth-child(even):not(.cgi):not(.modifiee):not(.ajoutee):not(.supprimee) td{
  background:#FAFBFD}
.defil-fige tbody tr:nth-child(even):not(.cgi):not(.modifiee):not(.ajoutee):not(.supprimee) .fige{
  background:#FAFBFD}
tbody tr:hover:not(.cgi):not(.modifiee):not(.ajoutee) td{background:#F1F5F9}
.defil-fige tbody tr:hover:not(.cgi):not(.modifiee):not(.ajoutee) .fige{background:#F1F5F9}

/* ---- choix de la colonne des quantités --------------------------------- */
.choix-quantites{display:inline-flex;flex-wrap:wrap;gap:7px;align-items:center;
  margin-top:7px}
.choix-quantites .puce{font-size:12px;padding:4px 10px}

/* ---- stock bien identifiable (demande C-b du 21/09, renforcé le 23/09 :
   le gras seul ne sautait pas aux yeux — la colonne entière porte désormais
   un fond bleuté, zébrage compris, et le chiffre est plus grand) ---------- */
#t-lignes td.stk, #t-lignes tbody tr:nth-child(even) td.stk{
  font-weight:700;color:var(--nuit);background:#E8F0FE;font-size:13.5px}
#t-lignes tbody tr:hover td.stk{background:#DCE8FC}
#t-lignes thead th[data-c="stock"]{background:#DDE9FB;color:var(--nuit)}

/* ---- colonne commentaire ----------------------------------------------- */
td.comm{text-align:center;padding-left:4px;padding-right:4px}
.bulle-comm{border:0;background:none;cursor:pointer;font-size:13px;
  color:#CBD5E1;padding:2px 4px;border-radius:6px;line-height:1}
.bulle-comm:hover{background:var(--actif);color:var(--accent)}
.bulle-comm.plein{color:var(--accent);font-size:13px}

/* ---- motifs standardisés ----------------------------------------------- */
.motifs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.motif-choix{display:inline-flex;align-items:center;gap:0;cursor:pointer;margin:0}
.motif-choix input{position:absolute;opacity:0;pointer-events:none}
.motif-choix span{display:inline-block;padding:6px 12px;border:1px solid var(--gris);
  border-radius:18px;font-size:12.5px;font-weight:500;color:var(--texte);
  background:var(--blanc);transition:all .1s}
.motif-choix:hover span{border-color:var(--bleu2)}
.motif-choix input:checked+span{background:var(--actif);border-color:var(--accent);
  color:var(--accent);font-weight:600}

/* ---- création d'articles depuis un BL ---------------------------------- */
.crea-champs{display:flex;gap:10px;margin-top:6px;font-size:11.5px;color:var(--doux)}
.crea-champs label{display:inline-flex;align-items:center;gap:5px;margin:0;font-weight:500}
.crea-champs input{width:86px;padding:3px 7px;font:inherit;font-size:12px;
  border:1px solid var(--orange);border-radius:6px;background:var(--blanc);
  color:var(--nuit);font-variant-numeric:tabular-nums}
tr.cgi .crea-champs input{background:#fff}

/* ---- ajustement automatique pour un 16 pouces --------------------------
   Sur un portable, la place manque en largeur : la typo du tableau descend
   d'un cran et les cellules se resserrent, automatiquement, dès que la
   fenêtre passe sous 1600 px. Rien à régler à la main. */
@media (max-width:1600px){
  table{font-size:12px}
  th,td{padding:6px 7px}
  td.seq{font-size:10.5px}
  .qte{width:50px;padding:3px 5px;font-size:12px}
  td.lib{min-width:12rem}
  .defil-fige .f1{width:74px;min-width:74px}
  .defil-fige .f2{left:74px;width:110px;min-width:110px}
  .defil-fige .f3{left:184px;width:200px;min-width:200px;max-width:200px}
}
@media (max-width:1360px){
  table{font-size:11.5px}
  th,td{padding:5px 6px}
  .defil-fige .f2{display:none}          /* l'EAN cède en premier : la Réf. suffit */
  .defil-fige .f3{left:74px}
}

/* ---- présaisons en pavés (refonte du 23/09) ----------------------------- */
.ps-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:10px;margin:10px 0 6px}
.ps-carte{display:flex;flex-direction:column;gap:3px;text-align:left;
  padding:12px 14px;background:var(--blanc);border:1px solid var(--gris);
  border-left-width:4px;border-radius:var(--r);cursor:pointer;font:inherit;
  transition:box-shadow .12s,border-color .12s}
.ps-carte:hover{border-color:var(--accent);
  box-shadow:0 8px 20px -10px rgba(11,31,59,.25)}
.ps-carte.rouge{border-left-color:var(--rouge)}
.ps-carte.orange{border-left-color:var(--orange)}
.ps-carte.vert{border-left-color:var(--vert)}
.ps-delai{font-size:10.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.5px}
.ps-delai.rouge{color:var(--rouge)}
.ps-delai.orange{color:var(--orange)}
.ps-delai.vert{color:var(--vert)}
.ps-nom{font-weight:600;color:var(--nuit);font-size:14px}
.ps-rayon{font-size:11.5px;color:#94A3B8}
.ps-ca{font-size:13px;font-weight:600;margin-top:2px}

/* ---- recherche d'un fournisseur ---------------------------------------- */
.chercheur{position:relative;flex:0 1 320px;min-width:220px}
.chercheur input{width:100%;padding:7px 11px;font:inherit;font-size:13px;
  color:var(--texte);background:var(--blanc);border:1px solid var(--gris);
  border-radius:var(--r)}
.chercheur input:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--actif)}
/* filtre en liste déroulante (statut des commandes CGI…) : même peau que la
   recherche, pour que la barre reste d'un seul tenant */
.barre-filtre select.filtre{padding:7px 10px;font:inherit;font-size:13px;
  color:var(--texte);background:var(--blanc);border:1px solid var(--gris);
  border-radius:var(--r)}
.barre-filtre select.filtre:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--actif)}
.chercheur .resultats{position:absolute;top:calc(100% + 4px);left:0;right:0;
  z-index:30;background:var(--blanc);border:1px solid var(--gris);
  border-radius:10px;box-shadow:0 12px 28px -8px rgba(11,31,59,.18);
  max-height:320px;overflow:auto;margin:0}

/* ---- gestion magasin : revue de planogramme ---------------------------- */
/* L'arbre rayon -> famille -> planos : replié par défaut, vingt rayons ne
   tiennent pas à l'écran dépliés. */
.rayon-plano{border:1px solid var(--gris);border-radius:10px;background:var(--blanc);
  margin-bottom:8px;overflow:hidden}
.rayon-plano>summary{padding:11px 15px;cursor:pointer;font-weight:600;
  color:var(--nuit);font-size:13.5px;list-style:none;user-select:none}
.rayon-plano>summary::-webkit-details-marker{display:none}
.rayon-plano>summary::before{content:"▸";display:inline-block;width:14px;
  color:var(--doux);transition:transform .12s}
.rayon-plano[open]>summary::before{transform:rotate(90deg)}
.rayon-plano[open]>summary{border-bottom:1px solid var(--gris);background:#F8FAFC}
.famille-plano{padding:4px 15px 14px}
.famille-plano .sous{margin:12px 0 8px}

/* Le bandeau des travées retenues : ce que l'écran a supposé, dit en clair. */
#pl-bandeau-travees{margin:12px 0 18px}

/* Les rangs : trois colonnes, le rang au milieu pour qu'il s'aligne à l'œil
   d'une ligne à l'autre. */
.rang-ligne{display:grid;grid-template-columns:minmax(180px,1.2fr) 90px 1fr;
  gap:12px;align-items:baseline;padding:9px 12px;border-radius:8px;
  border-left:3px solid var(--gris);background:var(--blanc);margin-bottom:5px}
.rang-ligne.rang-magasin{border-left-color:var(--accent);background:var(--actif)}
.rang-quoi{font-weight:600;color:var(--nuit);font-size:13px}
.rang-quoi .doux{font-weight:400;font-size:12px;margin-left:6px}
.rang-val{font-size:15px;font-variant-numeric:tabular-nums;color:var(--nuit)}
.rang-plus{font-size:12px;color:var(--doux)}
.rang-plus .vert{color:var(--vert)} .rang-plus .rouge{color:var(--rouge)}

/* Une quantité annualisée est une projection, pas un relevé : elle se
   distingue du chiffre brut pour qu'on ne la lise pas comme une vente. */
#t-pl-lignes td.pondere{color:var(--accent);font-weight:600}
#t-pl-lignes td.pondere::after{content:" ~";color:var(--bleu2)}

/* La colonne de lecture porte une phrase entière : sans limite, elle pousse
   le tableau hors écran. */
#t-pl-lignes .puce{max-width:34ch;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;display:inline-block;vertical-align:middle}

/* EAN, ANPF et libellé restent visibles au défilement horizontal (demande
   du 23/09) : ce sont les trois repères devant le rayon. Des colonnes
   figées côte à côte exigent des largeurs fixes, sinon la deuxième ne sait
   pas où se coller ; le libellé trop long se coupe et s'affiche en entier
   au survol. Règle commune aux deux tableaux de la gestion magasin. */
.fige3 :is(th,td):nth-child(-n+3){position:sticky;z-index:1;background:var(--blanc);
  box-sizing:border-box}
.fige3 :is(th,td):nth-child(1){left:0;width:120px;min-width:120px;max-width:120px}
.fige3 :is(th,td):nth-child(2){left:120px;width:86px;min-width:86px;max-width:86px}
.fige3 :is(th,td):nth-child(3){left:206px;width:250px;min-width:250px;max-width:250px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  box-shadow:inset -1px 0 0 var(--gris)}
.fige3 thead th:nth-child(-n+3){z-index:3;background:#EEF2F7}
.fige3 tbody tr:nth-child(even) td:nth-child(-n+3){background:#FAFBFD}
.fige3 tbody tr:hover td:nth-child(-n+3){background:#F1F5F9}
/* Sur téléphone, 456 px figés dépasseraient l'écran et plus rien ne défilerait :
   seul l'EAN reste figé, les deux autres colonnes reprennent leur place. */
@media(max-width:860px){
  .fige3 :is(th,td):nth-child(2),.fige3 :is(th,td):nth-child(3){position:static}
  .fige3 :is(th,td):nth-child(3){width:auto;min-width:12rem;max-width:18rem}
}

.mois-bloc{margin-bottom:10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mois-bloc b{font-size:12.5px;color:var(--nuit);margin-right:6px}

/* Le graphe des ventes mensuelles, repris de l'écran des propositions. */
#g-pl-ventes{display:block;height:auto;padding:10px 0 0;margin-bottom:10px}
#g-pl-ventes .barre{flex:1;display:flex;flex-direction:column;
  justify-content:flex-end;height:100%;text-align:center}
#g-pl-ventes .barre i{display:block;background:var(--accent);border-radius:3px 3px 0 0;
  min-height:2px}
#g-pl-ventes .barre span{font-size:10px;color:var(--doux);margin-top:4px}

/* Les entrées de menu sans module derrière : visibles, mais pas ouvertes. */
.nav a.a-venir{color:#94A3B8}
.nav a.a-venir svg{stroke:#CBD5E1}

/* Le rail en barre horizontale (mobile) portait déjà overflow-x:auto, sans
   effet : une cellule de grille garde min-width:auto et s'élargit au lieu de
   rogner, si bien que c'était la PAGE qui débordait. Même famille de défaut
   sur la barre de filtres, un flex sans flex-wrap. Les deux préexistaient à
   ce module ; la neuvième entrée de menu les a seulement rendus visibles. */
@media(max-width:860px){
  .rail{min-width:0}
  .barre-filtre{flex-wrap:wrap}
  .barre-filtre select{min-width:0;flex:1 1 150px}
  .chercheur,.barre-filtre input[type=search]{max-width:100%}
  .rang-ligne{grid-template-columns:1fr auto}
  .rang-plus{grid-column:1/-1}
}

/* Depuis v25, « stock » veut dire stock VENTE. L'exposition se lit à côté,
   en plus petit : elle occupe le linéaire sans être vendable, et une
   référence à stock vente nul peut donc être bel et bien en rayon. */
#t-pl-lignes .expo{color:var(--orange);font-size:11px;font-weight:600}

/* Le scan : une ligne par fichier, l'état en tête pour se lire en diagonale. */
#pl-scan-bandeau{margin:0 0 18px}
.scan-ligne{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:10px;
  align-items:baseline;padding:4px 0;font-size:12.5px}
.scan-nom{color:var(--nuit);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:860px){
  .scan-ligne{grid-template-columns:100px minmax(0,1fr)}
  .scan-ligne .doux{grid-column:2}
}

/* L'analyse linéaire : mêmes trois colonnes figées (règle .fige3 plus haut).
   La séquence vient désormais après le libellé (demande du 23/09). */
.autres-sig{font-size:11.5px;color:var(--doux);border-bottom:1px dotted currentColor;
  cursor:help;white-space:nowrap}
#t-li-lignes .puce,#t-li-lignes .expo{max-width:32ch;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}
#t-li-lignes .expo{color:var(--orange);font-size:11px;font-weight:600;max-width:none}
#li-filtres{flex-wrap:wrap}

/* Les filières : une carte cliquable par canal, la conseillée mise en avant
   et celles qu'on ne peut pas commander visiblement éteintes. */
.filiere{display:flex;gap:11px;align-items:flex-start;padding:11px 13px;
  border:1px solid var(--gris);border-radius:10px;margin-bottom:7px;
  cursor:pointer;background:var(--blanc)}
.filiere:hover{border-color:var(--bleu2)}
.filiere input{margin:3px 0 0;accent-color:var(--accent);flex:none}
.filiere.conseillee{border-color:var(--accent);background:var(--actif)}
.filiere.morte{opacity:.55;cursor:not-allowed}
.fil-corps{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}
.fil-h{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;font-size:13.5px;
  color:var(--nuit)}
.fil-h .doux{font-size:12px}
.fil-chiffres{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;
  color:var(--doux)}
.fil-chiffres b{color:var(--texte);font-variant-numeric:tabular-nums}
/* Le coût réel est le chiffre qui décide : il doit se lire avant le PA. */
.fil-cout{display:inline-flex;align-items:center;gap:6px;color:var(--texte);
  font-weight:600}
.fil-cout b{font-size:13px}
/* Un colisage qui dort au-delà du plafond d'écoulement du moteur. */
.fil-lent{color:var(--rouge);font-weight:600}
.fil-pourquoi{font-size:12px;color:var(--nuit);font-style:italic}
#m-fil-etat{margin:0 0 14px}

/* L'ancienneté de la dernière vente : la couleur dit l'urgence sans lire. */
td.orange{color:var(--orange);font-weight:600}
td.rouge{color:var(--rouge);font-weight:600}

/* ======================================================================
   v35 — lisibilité (23/09) : menu repliable, tableaux resserrés, ce qui
   compte mis en valeur.
   ====================================================================== */

/* --- menu latéral repliable ------------------------------------------- */
.app{transition:grid-template-columns .18s ease}
.rail{position:sticky;top:0;height:100vh;box-sizing:border-box;overflow-y:auto}
.marque{position:relative}
.rail-bascule{margin-left:auto;width:26px;height:26px;display:inline-grid;place-items:center;
  border:1px solid var(--gris);border-radius:6px;background:var(--blanc);cursor:pointer;
  color:var(--doux);flex:none}
.rail-bascule:hover{background:#F8FAFC;color:var(--nuit)}
.rail-bascule svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.8;fill:none;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}
.app.replie{grid-template-columns:60px 1fr}
.app.replie .rail{padding:16px 8px;overflow:visible}
.app.replie .marque{flex-direction:column;gap:10px;padding:0}
.app.replie .marque-nom,.app.replie .nav a > span,.app.replie .qui-nom{display:none}
.app.replie .rail-bascule{margin:0}
.app.replie .rail-bascule svg{transform:rotate(180deg)}
.app.replie .nav a{justify-content:center;padding:9px 0}
.app.replie .qui{justify-content:center;padding:10px 0 0}
/* Replié, les sous-entrées s'ouvrent au survol de leur parent, en bulle. */
.app.replie .sous-nav{display:none;position:absolute;left:52px;margin:-40px 0 0;
  background:var(--blanc);border:1px solid var(--gris);border-radius:var(--r);
  box-shadow:0 8px 24px rgba(15,23,42,.12);padding:6px;z-index:30;min-width:190px}
.app.replie .nav a:hover + .sous-nav,.app.replie .sous-nav:hover{display:flex}
@media(max-width:860px){.rail-bascule{display:none}.rail{position:static;height:auto}}

/* --- tableaux resserrés ------------------------------------------------ */
.btn.petit{padding:5px 11px;font-size:12.5px}
table.compact{font-size:12.5px}
table.compact :is(th,td){padding:6px 8px}
table.compact thead th{white-space:normal;line-height:1.25;vertical-align:bottom;
  font-size:10.5px;letter-spacing:.03em}
table.compact td.court{max-width:9rem;overflow:hidden;text-overflow:ellipsis}
table.compact th.etroit,table.compact td.centre{text-align:center;width:34px;padding-left:4px;padding-right:4px}
table.compact td.fort,table.compact th.fort{font-weight:600;color:var(--nuit)}
table.compact thead th.fort{color:var(--nuit)}
table.compact td.empile{line-height:1.3;white-space:nowrap}
table.compact td.empile div{font-size:11px}
table.compact td.lecture,table.compact td.signal{white-space:nowrap}
.fige3.compact :is(th,td):nth-child(1){width:108px;min-width:108px;max-width:108px}
.fige3.compact :is(th,td):nth-child(2){left:108px;width:70px;min-width:70px;max-width:70px}
.fige3.compact :is(th,td):nth-child(3){left:178px;width:230px;min-width:230px;max-width:230px}
.coche{font-weight:700;font-size:13px}
.coche.oui{color:var(--vert)} .coche.non{color:var(--rouge)}
#t-pl-lignes td.pondere,#t-li-lignes td.pondere{color:var(--accent)}
#t-li-lignes td.pondere::after{content:" ~";color:var(--bleu2)}
td .vert,.vert{color:var(--vert)} td .rouge,.rouge{color:var(--rouge)}
td.orange{color:var(--orange)} td.rouge{color:var(--rouge)}

/* La perf face au réseau : le vrai taux, et une couleur pour le lire vite. */
.perf{display:inline-block;min-width:52px;text-align:right;padding:2px 7px;border-radius:5px;
  font-weight:700;font-variant-numeric:tabular-nums;font-size:12px}
.perf.perf-r{background:var(--rouge-f);color:var(--rouge)}
.perf.perf-o{background:var(--orange-f);color:var(--orange)}
.perf.perf-n{background:#F1F5F9;color:var(--texte)}
.perf.perf-v1{background:var(--vert-f);color:#059669}
.perf.perf-v2{background:#D1FAE5;color:#047857}

/* Onglets : les quatre catégories, un séparateur, puis les vues transverses. */
.bascule-vues .sep-vues{width:6px;background:#F1F5F9;border-left:1px solid var(--gris)}
.bascule-vues .sep-vues+button{border-left:1px solid var(--gris)}

/* Stock réel saisi pendant l'analyse d'un linéaire */
.releve{display:inline-flex;align-items:center;gap:5px;justify-content:flex-end}
.releve .qte{width:52px;text-align:right}
.ecart-releve{min-width:28px;font-size:11.5px;font-weight:700;text-align:left}

/* Où je me situe dans le réseau : un tableau plutôt que des lignes libres */
.t-rangs tr.niv-magasin td{background:var(--actif)}
.t-rangs tr.niv-plano td{background:#F8FAFC;font-weight:600}
.t-rangs td.lib{min-width:14rem}
.detail-ca{margin-top:10px;font-size:12.5px}
.detail-ca summary{cursor:pointer;color:var(--texte)}
.detail-ca table{margin-top:8px;width:auto;min-width:520px;background:var(--blanc);
  border:1px solid var(--gris);border-radius:8px}

/* v36 — filtres du détail fournisseur */
.filtres-detail{margin:0 0 10px;flex-wrap:wrap;gap:8px 10px}
.bascule-vues.petites button{font-size:12.5px;padding:5px 10px}
.bascule-vues.petites button b{font-weight:600;color:var(--doux);margin-left:3px}
.bascule-vues.petites button.actif b{color:var(--accent)}
.repere-base{font-size:10px;margin-left:2px}
.repere-base.vert{color:var(--vert)} .repere-base.orange{color:var(--orange)}

/* ---------- v37 : barre d'appel, fiche article, changements, accès ---------- */
.barre-appel{position:sticky;top:0;z-index:35;margin:-22px -26px 14px;padding:10px 26px;
  background:rgba(244,246,249,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--gris)}
.barre-appel[hidden]{display:none}
.chercheur.appel{display:block;max-width:760px;flex:none}
.chercheur.appel svg{position:absolute;left:11px;top:50%;width:16px;height:16px;
  transform:translateY(-50%);fill:none;stroke:var(--doux);stroke-width:1.8;stroke-linecap:round}
.chercheur.appel input{padding:9px 12px 9px 34px;font-size:14px}
.chercheur .resultats .type-res{font-size:10.5px;font-weight:600;text-transform:uppercase;
  letter-spacing:.05em;color:var(--accent);margin-right:4px}
@media (max-width:760px){.barre-appel{margin:-18px -16px 12px;padding:8px 16px}}

td.appelable{cursor:pointer}
td.appelable:hover{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:2px}

.boite.boite-fiche{max-width:1120px;max-height:90vh;padding:18px 20px}
.fiche{display:flex;flex-direction:column;gap:14px}
.fiche-tete{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:14px 16px}
.fiche-tete h2{font-size:19px}
.fiche-codes,.fiche-chemin{margin:4px 0 0;font-size:13px}
.fiche-chemin{color:var(--doux)}
.fiche-puces{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.fiche-cats{display:flex;gap:8px;align-items:flex-start}
.cat-fiche{display:flex;flex-direction:column;align-items:center;min-width:62px;padding:6px 8px;
  border:1px solid var(--gris);border-radius:8px;font-size:10.5px;color:var(--doux);
  text-transform:uppercase;letter-spacing:.04em}
.cat-fiche b{font-size:20px;color:var(--nuit);letter-spacing:0}
.fiche-grille{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.fiche-grille.deux{grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}
@media (max-width:760px){.fiche-grille.deux{grid-template-columns:1fr}}
.carte-fiche{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;
  padding:13px 15px;min-width:0}
.carte-fiche h3{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
  color:var(--doux);margin:0 0 8px}
.carte-fiche .note{font-size:12px;margin:8px 0 0}
.kv{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:13px;
  border-bottom:1px dashed var(--gris)}
.kv:last-of-type{border-bottom:0}
.kv span{color:var(--doux)}
.kv b{color:var(--nuit);font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.kv b .doux{font-weight:400;white-space:nowrap}
.stk-fiche{background:var(--actif);padding:0 6px;border-radius:4px}
.minis-fiche{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:10px}
.minis-fiche label,.boite .minis-fiche label{display:inline-block;font-size:12px;color:var(--doux);margin:0}
.minis-fiche input,.boite .minis-fiche input[type=number]{display:block;width:92px;margin-top:3px;padding:6px 8px;font:inherit;
  border:1px solid var(--gris);border-radius:8px;background:var(--fond)}
.minis-fiche input:disabled{opacity:.7}
.plano-fiche{margin:0 0 5px;font-size:13px}
.puce.seq{font-family:ui-monospace,Menlo,monospace;font-weight:500}
.ventes-fiche{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;align-items:start}
@media (max-width:900px){.ventes-fiche{grid-template-columns:1fr}}
.graphe-fiche{width:100%;height:auto;display:block}
.graphe-fiche .gb{fill:var(--accent);opacity:.85}
.graphe-fiche .gv{font-size:10px;fill:var(--nuit);text-anchor:middle;font-weight:600}
.graphe-fiche .gm{font-size:10px;fill:var(--doux);text-anchor:middle}
.graphe-fiche .ga{font-size:9.5px;fill:var(--doux);text-anchor:end}
.graphe-fiche .gg{stroke:var(--gris);stroke-width:1}
.graphe-fiche polyline{fill:none;stroke-width:2}
.graphe-fiche .gt{stroke:var(--orange);fill:none}
.graphe-fiche circle.gt{fill:var(--orange);stroke:none}
.graphe-fiche .gs{stroke:var(--vert);fill:none;stroke-dasharray:5 3}
.graphe-fiche circle.gs{fill:var(--vert);stroke:none}
.legende{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--doux);margin-top:4px}
.legende i{display:inline-block;width:14px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}
.legende .lg-b{background:var(--accent)}
.legende .lg-t{background:var(--orange);height:3px}
.legende .lg-s{background:var(--vert);height:3px}
.carte-fiche table{width:100%}
.carte-fiche tr.conseil td{background:var(--vert-f)}
.coms-fiche{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}
.com-fiche{background:var(--fond);border-radius:8px;padding:7px 10px;font-size:13px}
.com-fiche p{margin:0 0 3px;white-space:pre-wrap}
.com-fiche span{font-size:11.5px}
.com-saisie{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
.com-saisie textarea{flex:1;font:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--gris);
  border-radius:8px;background:var(--fond);resize:vertical;min-height:40px}

.tuile-btn{text-align:left;font:inherit;cursor:pointer}
.tuile-btn:hover{border-color:var(--accent)}
#vue-changements .barre-filtre input[type=date],#vue-changements .barre-filtre select,
#vue-changements .barre-filtre input[type=search]{padding:7px 10px;font:inherit;font-size:13px;
  border:1px solid var(--gris);border-radius:var(--r);background:var(--blanc);color:var(--texte)}

.form-compte{display:grid;gap:10px 14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  align-items:end}
.form-compte label{font-size:12px;color:var(--doux);margin:0}
.form-compte input:not([type=checkbox]),.form-compte select{display:block;width:100%;margin-top:4px;
  padding:8px 10px;font:inherit;font-size:14px;color:var(--nuit);background:var(--fond);
  border:1px solid var(--gris);border-radius:8px}
.coche-ligne{display:flex!important;align-items:center;gap:7px;font-size:13px!important;
  color:var(--texte)!important;margin:0 0 6px!important}
.droits{display:grid;gap:10px;grid-template-columns:1fr;margin-bottom:10px}
.droits fieldset{border:1px solid var(--gris);border-radius:8px;padding:8px 12px;margin:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));column-gap:14px}
.droits legend{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
  color:var(--doux);padding:0 4px}

/* ---------- v41 : mises à jour ---------- */
.maj-op{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:12px 14px;margin-top:12px}
.maj-op ol{margin:8px 0 0;padding-left:20px;font-size:13px}
.maj-op .rouge,.maj-op li.rouge{color:var(--rouge)}
.maj-carte{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.maj-carte.doux{opacity:.75}
.maj-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.maj-journal{margin:6px 0;font-size:13px;color:var(--texte)}
.maj-carte table{margin:8px 0}
#vue-maj code{background:var(--fond);padding:1px 5px;border-radius:4px}
.tuile-argent .sous-val{font-size:12px;font-weight:500;color:var(--doux)}
.tuile-argent .sub b.vert{color:var(--vert)}.tuile-argent .sub b.rouge{color:var(--rouge)}
#vue-maj .btn[hidden]{display:none}
.ajout-travee{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:-4px 0 10px}
.boite .ajout-travee label{margin:0}
.boite .ajout-travee input{width:120px}

/* ---------- v42 : face au format S ---------- */
.face-format{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.face-format h3{font-size:15px;margin:0 0 6px}
.face-format h3 .doux{font-weight:400;font-size:12.5px}
.verdict-format{font-size:14px;margin:0 0 10px;color:var(--nuit)}
.verdict-format b.vert,.t-face b.vert{color:var(--vert)}.verdict-format b.rouge,.t-face b.rouge{color:var(--rouge)}
.face-grille{display:grid;grid-template-columns:minmax(440px,.9fr) minmax(0,1.3fr);gap:22px;align-items:start}
.t-face td,.t-face th{white-space:nowrap}
@media (max-width:1000px){.face-grille{grid-template-columns:1fr}}
.t-face{width:100%}
#f-remarque textarea{display:block;width:100%;margin-top:4px;padding:8px 10px;font:inherit;font-size:14px;
  border:1px solid var(--gris);border-radius:8px;background:var(--fond);resize:vertical}
.rq-texte{white-space:pre-wrap;max-width:560px}
.rq-reponse{color:var(--doux);font-size:12.5px;margin-top:3px}
.ligne-argent{grid-column:1/-1;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}

/* ---------- v45 : comptabilité ---------- */
.compta-bloc{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:12px 14px;margin-top:12px}
.compta-bloc h3{font-size:14px;margin:0 0 6px}
.compta-bloc h3.rouge{color:var(--rouge)}
.modop{padding-left:20px;font-size:14px}
.modop li{margin-bottom:12px}
.modop img{display:block;max-width:100%;margin-top:6px;border:1px solid var(--gris);border-radius:6px}
#compta-telecharger[hidden]{display:none}
.compte-saisie{display:flex!important;justify-content:space-between;align-items:center;gap:12px;
  font-size:13px!important;color:var(--texte)!important}
.boite .compte-saisie input{width:130px;display:inline-block;margin:0}
.compte-saisie input.invalide{border-color:var(--rouge)}

/* --- Aide CGI (v47) --- */
.aide-cherche{display:flex;gap:8px;margin-bottom:6px}
.aide-cherche input{flex:1;font:inherit;font-size:15px;padding:11px 14px;border:1px solid var(--gris);border-radius:10px;min-width:0}
.aide-rub{margin:14px 0}
.aide-rub h3{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--doux);margin:0 0 6px}
.aide-doc-lien{display:block;background:none;border:0;padding:5px 0;font:inherit;font-weight:600;color:var(--accent);cursor:pointer;text-align:left}
.aide-res{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:10px 14px;margin:10px 0}
.aide-res-tete{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.aide-section{display:block;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--gris);padding:8px 0;font:inherit;font-size:13.5px;cursor:pointer;color:inherit}
.aide-section:hover{background:#F8FAFC}
.aide-extrait{display:block;color:var(--doux);font-size:12.5px;margin-top:2px}
.aide-extrait mark,.aide-contenu mark{background:#FEF3C7;color:inherit;padding:0 1px;border-radius:2px}
.aide-contenu{max-width:900px;line-height:1.55;font-size:14px}
.aide-contenu h2,.aide-contenu h3{margin:18px 0 6px;color:var(--nuit)}
.aide-contenu img{max-width:100%;height:auto;border:1px solid var(--gris);border-radius:6px;margin:6px 0;display:block}
.aide-contenu table{border-collapse:collapse;margin:8px 0;font-size:13px}
.aide-contenu td{border:1px solid var(--gris);padding:4px 8px;vertical-align:top}
.aide-contenu p{margin:4px 0}
.aide-contenu p.puce::before{content:"• ";color:var(--doux)}
.aide-sec{scroll-margin-top:70px;border-radius:8px;transition:background .6s}
.aide-sec.vise{background:#EFF6FF}

/* --- v50 : Aide CGI (mode opératoire, matrices, assistant) --- */
.btn-mop,.btn-mat{display:inline-flex;align-items:center;gap:7px}
.ico-pdf,.ico-xls{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.03em;color:#fff;
  background:#D93025;border-radius:3px;padding:2px 4px;line-height:1.2}
.ico-xls{background:#1D6F42}
.btn-mat{font-size:12.5px;padding:5px 10px;margin:2px 0}
.aide-mat-res{margin:8px 0;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#aide-matrices-doc{display:inline-flex;flex-wrap:wrap;gap:6px}
.aide-ia{margin:6px 0 10px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.aide-ia-reponse{flex-basis:100%;background:#F5F9FF;border:1px solid #CFE0FF;border-radius:10px;padding:12px 14px;
  font-size:14px;line-height:1.55}
.ia-src{font-size:inherit}
.aide-contenu img.page-pdf{max-width:820px;width:100%}
.texte-pdf summary{cursor:pointer;color:var(--doux);font-size:12px;margin:2px 0 8px}
/* --- v50 : Administratif → Clients --- */
.bandeau.alerte-forte{background:#FDECEA;border-color:#F5C2BE;color:#9B1C12;font-weight:700;font-size:14px}
.fa-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px;margin:10px 0}
.fa-grille label,.fa-notes{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--doux)}
.fa-grille label.large{grid-column:1/-1}
.fa-grille input,.fa-grille textarea,.fa-notes textarea,.fa-lignes input,.fa-lignes select{font:inherit;font-size:13px;
  padding:7px 9px;border:1px solid var(--gris);border-radius:8px;color:var(--nuit);background:var(--blanc)}
.fa-lignes input.num{text-align:right}
.fa-notes{margin:10px 0}
.fa-totaux{font-size:14px;color:var(--nuit)}
/* v50 : un bouton caché reste caché, partout (le display des .btn l emportait sur hidden) */
.btn[hidden],.btn-mop[hidden]{display:none!important}

/* --- v52 : pilotage tarifaire --- */
.grille .defil{max-height:70vh}
.grille table{font-size:12px}
.grille :is(th,td){padding:5px 7px;white-space:nowrap}
.grille thead tr.filtres th{padding:3px 4px;background:#F8FAFC;position:sticky;top:34px;z-index:2}
.grille thead tr.titres th{position:sticky;top:0;z-index:2;background:#F1F5F9;cursor:pointer}
.grille thead tr.titres th[data-sens=asc] .lab::after{content:" ▲";font-size:9px}
.grille thead tr.titres th[data-sens=desc] .lab::after{content:" ▼";font-size:9px}
.grille thead input{width:100%;min-width:52px;font:inherit;font-size:11px;padding:3px 5px;border:1px solid var(--gris);border-radius:5px}
.grille td.num,.grille th.num{text-align:right}
.grille td.lib{white-space:normal;min-width:220px;max-width:320px}
.grille td.flags{white-space:normal;min-width:180px;font-size:11px;color:var(--doux)}
.grille input.pvdef{width:72px;text-align:right;font:inherit;font-size:12px;padding:3px 5px;border:1px solid #F5D66B;background:#FFFBEA;border-radius:5px}
.grille input.pvdef.saisi{border-color:#0066FF;background:#EEF4FF;font-weight:600}
.grille .pied{display:flex;gap:12px;align-items:center;padding:8px 2px;font-size:12px;color:var(--doux)}
.coef-r{background:#FDECEA;color:#9B1C12}.coef-o{background:#FFF4E5;color:#8A4B00}.coef-b{background:#EAF2FF;color:#0B4DB8}
.tp-deux{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.tp-regles{font-size:13px;line-height:1.55;color:var(--nuit);margin:0;padding-left:18px}
.tp-ds{display:inline-flex;gap:8px;align-items:center}

/* --- v53 : journal des ventes --- */
#t-ca-journal td.meteo{white-space:nowrap;font-size:12px}
#t-ca-journal td.ctx{white-space:normal;min-width:160px;font-size:11.5px;line-height:1.7}
#t-ca-journal td.ctx .puce{font-size:11px;margin:1px 2px 1px 0;display:inline-block}
#t-ca-journal tr.jour-ferie td{background:#FFFBEA}
#t-ca-journal input.ca-com{min-width:180px;font:inherit;font-size:12px;padding:4px 7px;border:1px solid var(--gris);border-radius:6px}
.ctx-titre{display:block;font-size:12.5px;font-weight:400;color:var(--doux);margin-top:3px}

/* ---------- v55 : grilles larges (vues, compact, colonnes collées, fiche prix) ---------- */
.g-outils{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 8px}
.g-outils .seg{display:inline-flex;border:1px solid var(--gris);border-radius:8px;overflow:hidden;background:var(--blanc)}
.g-outils .seg button{font:inherit;font-size:12px;border:0;border-right:1px solid var(--gris);background:none;padding:5px 11px;cursor:pointer;color:var(--texte)}
.g-outils .seg button:last-child{border-right:0}
.g-outils .seg button.on{background:var(--actif);color:var(--accent);font-weight:600}
.g-outils details{position:relative}
.g-outils summary{list-style:none;cursor:pointer;font-size:12px;border:1px solid var(--gris);border-radius:8px;padding:5px 11px;background:var(--blanc)}
.g-outils summary::-webkit-details-marker{display:none}
.g-outils summary::after{content:" ▾";font-size:10px;color:var(--doux)}
.g-cols-liste,.g-leg>div{position:absolute;z-index:20;top:calc(100% + 4px);left:0;background:var(--blanc);border:1px solid var(--gris);
  border-radius:10px;box-shadow:0 12px 30px rgba(11,31,59,.14);padding:12px 14px;display:flex;gap:18px;flex-wrap:wrap;width:min(760px,90vw)}
.g-cols-liste fieldset{border:0;margin:0;padding:0;min-width:150px}
.g-cols-liste legend{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--doux);margin-bottom:4px}
.g-cols-liste label{display:flex;gap:6px;align-items:center;font-size:12px;padding:1px 0;white-space:nowrap}
.g-leg>div{display:block;width:min(560px,90vw);left:auto;right:0}
.g-leg .leg{display:inline-flex;align-items:center;gap:5px;font-size:12px;margin:0 14px 6px 0}
.g-leg p{margin:6px 0 0;font-size:12px}
.g-compact{font-size:12px;display:inline-flex;gap:5px;align-items:center;color:var(--doux)}

.grille.compact table{font-size:11.5px}
.grille.compact :is(th,td){padding:3px 6px}
.grille.compact thead tr.titres th{font-size:10px;letter-spacing:.02em}
.grille.compact td.lib{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px;min-width:200px}
.grille.compact td.flags{white-space:nowrap;min-width:0}
.grille.compact input.pvdef{padding:1px 5px;font-size:11.5px;width:66px}
.grille .defil{max-height:calc(100vh - 290px);min-height:300px}

.grille .fg,.grille .fd{position:sticky;z-index:1;background:var(--blanc)}
.grille .fg{left:0;box-shadow:inset -1px 0 0 var(--gris),6px 0 8px -6px rgba(11,31,59,.18)}
.grille .fd{right:0;box-shadow:inset 1px 0 0 var(--gris),-6px 0 8px -6px rgba(11,31,59,.18)}
.grille thead tr:is(.titres,.filtres) th:is(.fg,.fd){z-index:4}
.grille thead tr.titres th:is(.fg,.fd){background:#F1F5F9}
.grille thead tr.filtres th:is(.fg,.fd){background:#F8FAFC}
.grille tbody tr:hover :is(.fg,.fd){background:#F8FAFC}
.grille tbody tr[data-i]{cursor:default}
#g-tp-tarifs tbody tr[data-i]{cursor:pointer}
.grille tbody tr.sel,.grille tbody tr.sel :is(.fg,.fd){background:#EAF2FF}

.pas{display:inline-block;min-width:20px;text-align:center;font-size:10px;font-weight:600;line-height:16px;padding:0 4px;
  border-radius:4px;margin-right:3px;background:#F1F5F9;color:#475569;border:1px solid #E2E8F0}
.pas.info{background:#EAF2FF;color:#0B4DB8;border-color:#CFE0FF}
.pas.bon{background:var(--vert-f);color:#047857;border-color:#BBF0D8}
.pas.alerte{background:#FDECEA;color:#9B1C12;border-color:#F8CFCB}
.pas.saisi{background:#EEF4FF;color:#0066FF;border-color:#0066FF}

#vue-tp-tarifs.volet-ouvert{padding-right:436px}
.tp-volet{position:fixed;top:0;right:0;bottom:0;width:420px;background:var(--blanc);border-left:1px solid var(--gris);
  box-shadow:-12px 0 30px rgba(11,31,59,.10);z-index:36;overflow:auto;padding:18px 20px 24px;font-size:13px}
.tp-volet header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:12px}
.tp-volet header h2{font-size:15px;margin:2px 0}
.tp-volet header .doux{font-size:12px}
.tp-volet .fermer{border:0;background:none;font-size:18px;cursor:pointer;color:var(--doux);line-height:1}
.tp-prix{display:flex;align-items:stretch;gap:6px;background:var(--fond);border-radius:10px;padding:10px}
.tp-prix>div{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.tp-prix>div.fl{flex:0 0 auto;justify-content:center;color:var(--doux)}
.tp-prix span{font-size:11px;color:var(--doux);text-transform:uppercase;letter-spacing:.04em}
.tp-prix b{font-size:16px;color:var(--nuit)}
.tp-prix small{font-size:11px;color:var(--doux)}
.tp-prix input.pvdef{width:84px;text-align:right;font:inherit;font-size:15px;font-weight:600;padding:2px 6px;border:1px solid #F5D66B;background:#FFFBEA;border-radius:6px}
.tp-prix input.pvdef.saisi{border-color:#0066FF;background:#EEF4FF}
.tp-volet .methode{margin:12px 0 6px}
.tp-flags{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12px}
.tp-volet section{margin-top:14px}
.tp-volet h3{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--doux);margin:0 0 6px;font-weight:600}
.tp-volet dl{display:grid;grid-template-columns:1fr auto;gap:3px 12px;margin:0}
.tp-volet dt{color:var(--doux)}
.tp-volet dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;color:var(--nuit)}
.tp-volet footer{margin-top:18px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;font-size:12px}
@media (max-width:1100px){#vue-tp-tarifs.volet-ouvert{padding-right:0}.tp-volet{width:min(420px,100vw)}}
.grille .pied .orange{color:var(--orange)}

/* v55 : sous-menus du rail en accordéon (rail déplié ; replié = bulle au survol, inchangé) */
.app:not(.replie) .sous-nav:not(.ouvert){display:none}
.nav a.groupe .chevron{margin-left:auto;font-style:normal;font-size:15px;line-height:1;color:#94A3B8;
  width:18px;height:18px;display:grid;place-items:center;border-radius:4px;transition:transform .15s}
.nav a.groupe .chevron:hover{background:var(--gris);color:var(--nuit)}
.nav a.groupe.deplie .chevron{transform:rotate(90deg)}
.app.replie .nav a .chevron{display:none}

/* v56 : la largeur d'une colonne vient de son contenu ; l'en-tête passe à la ligne (demande du 26/09) */
.grille thead tr.titres th{white-space:normal;vertical-align:bottom;line-height:1.2}
.grille thead tr.titres th .lab{display:block;width:min-content;min-width:100%}
.grille thead tr.titres th.num .lab{margin-left:auto;text-align:right}
.grille thead input{min-width:40px}

/* v56 : fenêtres — « Fermer » collé en haut à droite pendant le défilement */
.boite{--pad-y:20px;--pad-x:22px}
.boite.boite-fiche{--pad-y:18px;--pad-x:20px}
.boite-bandeau{position:sticky;top:calc(-1 * var(--pad-y));z-index:6;height:0;display:flex;justify-content:flex-end;
  margin:calc(-1 * var(--pad-y)) calc(-1 * var(--pad-x)) var(--pad-y) 0;pointer-events:none}
.boite-fermer{pointer-events:auto;margin:6px 8px 0 0;height:28px;font:inherit;font-size:12.5px;font-weight:600;color:var(--nuit);
  background:var(--blanc);border:1px solid var(--gris);border-radius:14px;padding:0 12px;cursor:pointer;
  box-shadow:0 2px 8px rgba(11,31,59,.12)}
.boite-fermer:hover{background:#F8FAFC}

/* v56 : pilotage tarifaire */
.tp-alerte{border:1px solid #F8CFCB;background:#FDECEA;border-left:5px solid var(--rouge);border-radius:10px;
  padding:12px 16px;margin:0 0 16px;color:#7A1A12}
.tp-alerte header{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.tp-alerte header b{font-size:15px;color:#9B1C12}
.tp-alerte header span{font-size:12.5px}
.tp-alerte-liste{display:flex;flex-wrap:wrap;gap:6px}
.tp-alerte-lin{font:inherit;font-size:12.5px;background:var(--blanc);border:1px solid #F1B5AF;border-radius:8px;
  padding:4px 10px;cursor:pointer;color:#7A1A12;display:inline-flex;gap:6px;align-items:baseline}
.tp-alerte-lin:hover{border-color:var(--rouge)}
.tp-alerte-lin small{color:var(--doux);font-size:11px}
.lin-chips{display:flex;flex-wrap:wrap;gap:3px;align-items:center;min-width:260px;max-width:520px;white-space:normal}
.lin-plus{display:contents}.lin-plus[hidden]{display:none}
.lin-voir{cursor:pointer;background:var(--blanc);color:var(--accent);border-color:var(--gris);font:inherit;font-size:11px;font-weight:600}
.lin-chips small{margin-left:4px;font-size:10.5px}
.lin-chip{display:inline-block;font-size:11px;font-weight:600;line-height:18px;padding:0 6px;border-radius:5px;
  background:#FFF4E5;color:#8A4B00;border:1px solid #F5D6A8;text-decoration:none;white-space:nowrap}
.lin-chip.valide{background:var(--vert-f);color:#047857;border-color:#BBF0D8}
a.lin-chip:hover{filter:brightness(.96);text-decoration:underline}
.info[data-aide]{position:relative;cursor:help;border-bottom:1px dotted #CBD5E1}
.info[data-aide]:hover::after{content:attr(data-aide);position:absolute;left:0;top:calc(100% + 6px);z-index:15;
  background:var(--nuit);color:#fff;font-size:12px;font-weight:400;line-height:1.4;padding:7px 10px;border-radius:7px;
  width:max-content;max-width:380px;white-space:normal;box-shadow:0 8px 24px rgba(11,31,59,.25)}
.grille td .lib-l{font-weight:500;color:var(--nuit);overflow:hidden;text-overflow:ellipsis}
.grille td .lib-s,.tp-lin-art .lib-s{font-size:10.5px;color:var(--doux);overflow:hidden;text-overflow:ellipsis;line-height:1.25}
.grille.compact td.lib{max-width:280px}
.tp-choix{flex-wrap:wrap;gap:12px;align-items:center}
.tp-choix label{font-size:12px;color:var(--doux);display:inline-flex;gap:6px;align-items:center}
.tp-choix select{font:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--gris);border-radius:7px;background:var(--blanc);max-width:320px}
#vue-tp-lineaires.volet-ouvert{padding-right:436px}
.tp-lin-art{margin-top:14px;width:100%;table-layout:fixed;font-size:12px}
.tp-lin-art :is(th,td){padding:5px 4px}
.tp-lin-art td:first-child{white-space:normal}
.tp-lin-art .lib-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-lin-art .lib-p{margin-top:2px}
.tp-lin-art td{vertical-align:top}
.tp-lin-art td.fort{font-weight:700;color:var(--accent)}
.grille td.orange{color:var(--orange);font-weight:600}
@media (max-width:1100px){#vue-tp-lineaires.volet-ouvert{padding-right:0}}

/* v57 : écran de commande — libellé + réf./EAN, tri sur les trois, gratuits, PA saisi, compact */
#t-lignes .th-lib .tri{cursor:pointer}
#t-lignes .th-lib .tri-sous{display:block;font-size:10px;font-weight:500;margin-top:2px}
#t-lignes .th-lib span.tri::after{content:"";display:inline-block;width:0;height:0;margin-left:4px;
  border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:4px solid var(--gris);vertical-align:1px}
#t-lignes .th-lib span.tri[data-sens="desc"]::after{border-bottom:0;border-top:4px solid var(--accent)}
#t-lignes .th-lib span.tri[data-sens="asc"]::after{border-bottom-color:var(--accent)}
#t-lignes .th-lib span.tri[data-sens]{color:var(--nuit)}
#t-lignes .f1{left:0;width:auto;min-width:230px;max-width:320px;white-space:normal}
#t-lignes .f1::after{content:"";position:absolute;top:0;right:0;bottom:-1px;width:1px;
  background:var(--gris);box-shadow:6px 0 8px -6px rgba(11,31,59,.18)}
#t-lignes td.lib .lib-s{font-size:11px;color:var(--doux);font-variant-numeric:tabular-nums;margin-top:1px}
#t-lignes thead th{white-space:normal;vertical-align:bottom;line-height:1.2}
#t-lignes thead th .lab{display:block;width:min-content;min-width:100%}
#t-lignes thead th.num .lab{margin-left:auto;text-align:right}
#t-lignes .grat,#t-lignes .pa{width:52px;padding:4px 6px;border:1px solid var(--gris);border-radius:6px;font:inherit;
  font-size:12.5px;text-align:right;font-variant-numeric:tabular-nums;background:var(--blanc)}
#t-lignes .pa{width:64px}
#t-lignes .grat.modif,#t-lignes .pa.modif{border-color:#0B8F5A;background:var(--vert-f);font-weight:600}
#t-lignes.cde-compact{font-size:12px}
#t-lignes.cde-compact :is(th,td){padding:4px 6px}
#t-lignes.cde-compact thead th{font-size:10px;letter-spacing:.02em}
#t-lignes.cde-compact .qte{width:50px;padding:2px 5px}
#t-lignes.cde-compact .grat{width:44px;padding:2px 5px}
#t-lignes.cde-compact .pa{width:58px;padding:2px 5px}
#t-lignes.cde-compact .puce{font-size:10.5px;padding:0 5px}
.d-outils{display:inline-flex;gap:10px;align-items:center;margin:0 0 0 auto}
.d-outils .g-cols-liste{left:auto;right:0;width:min(420px,90vw)}
.d-outils .g-cols-liste fieldset{columns:2}
.fiche-cats .fiche-panier{margin-top:10px;white-space:nowrap}
.fiche-cats{flex-wrap:wrap;justify-content:flex-end;max-width:280px}

/* v58 : étiquettes prix */
.et-actions{flex-wrap:wrap;gap:10px;align-items:center}
.et-actions select,.et-tete select,.et-champ input{font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--gris);border-radius:7px;background:var(--blanc)}
.et-tete{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0 12px}
.et-nom{font:inherit;font-size:17px;font-weight:600;color:var(--nuit);border:1px solid transparent;border-radius:7px;padding:5px 8px;min-width:260px;flex:1 1 260px;background:transparent}
.et-nom:hover,.et-nom:focus{border-color:var(--gris);background:var(--blanc)}
.et-champ{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;color:var(--doux)}
.et-bip{background:var(--blanc);border:2px solid var(--accent);border-radius:12px;padding:10px;margin-bottom:10px}
.et-bip input{width:100%;font:inherit;font-size:22px;font-weight:600;padding:10px 12px;border:1px solid var(--gris);border-radius:8px;letter-spacing:.03em}
.et-retour-bip{min-height:10px}
/* v60 : suggestions de la zone de bip */
.et-bip{position:relative}
.et-sugg{list-style:none;margin:4px 0 0;padding:0;position:absolute;left:10px;right:10px;z-index:30;background:var(--blanc);
  border:1px solid var(--gris);border-radius:10px;box-shadow:0 10px 28px rgba(11,31,59,.14);max-height:min(60vh,460px);overflow:auto}
.et-sugg li{display:grid;grid-template-columns:1fr auto;gap:0 12px;padding:8px 12px;border-bottom:1px solid var(--fond);cursor:pointer}
.et-sugg li .lib-s{grid-column:1;font-size:11.5px;color:var(--doux)}
.et-sugg li .et-sugg-prix{grid-column:2;grid-row:1 / span 2;align-self:center;color:#E12E3F;white-space:nowrap}
.et-sugg li.sans-prix .et-sugg-prix{color:var(--doux);font-weight:500}
.et-sugg li:hover,.et-sugg li.sel{background:#EEF4FF}
.et-ok{margin-top:8px;padding:8px 10px;border-radius:8px;background:var(--vert-f);display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.et-ok.ko{background:#FDECEA;color:#9B1C12}
.et-prix{font-weight:800;color:#E12E3F;font-size:17px;white-space:nowrap}
.et-prix sup{font-size:10px;font-weight:700;margin-left:2px}
#t-et-lignes td{vertical-align:top;white-space:normal}
#t-et-lignes .lib-s{font-size:11px;color:var(--doux)}
.et-alerte{font-size:11px;margin-top:2px}
/* v59 : correction manuelle d'une ligne */
.et-modifie{display:inline-block;font-size:10.5px;font-weight:600;color:#B45309;background:#FEF3C7;border-radius:4px;padding:0 5px;margin-left:4px;vertical-align:middle}
#t-et-lignes td.et-actions{white-space:nowrap;text-align:right}
#t-et-lignes td.et-actions .lien{margin-left:6px}
#m-et-modif label{display:flex;flex-direction:column;gap:3px;margin-top:10px}
#m-et-modif label input{font:inherit;padding:6px 8px;border:1px solid var(--gris);border-radius:6px}
#m-et-modif small{display:block;margin-top:2px;font-size:11px}
.et-ex{width:56px;font:inherit;padding:4px 6px;border:1px solid var(--gris);border-radius:6px;text-align:right}
#t-et-lignes select{font:inherit;font-size:12px;padding:3px 4px;border:1px solid var(--gris);border-radius:6px;max-width:170px}
#t-et-listes tr.cliquable{cursor:pointer}
#t-et-listes tr.cliquable:hover td{background:#F8FAFC}
.et-mode{font-size:13px;line-height:1.6;margin:10px 0 0;padding-left:20px}
#m-et-coller-texte{width:100%;font:inherit;font-family:ui-monospace,monospace;font-size:13px}
.boite select{font:inherit;padding:6px 8px;border:1px solid var(--gris);border-radius:7px;width:100%}
@media (max-width:700px){               /* PDA Zebra : l'essentiel, gros, la zone de bip en tête */
  #et-vue-liste:not([hidden]){display:flex;flex-direction:column}
  #et-vue-liste .et-bip{order:-1;position:sticky;top:0;z-index:5}
  #et-vue-liste #et-retour{order:-2;margin-bottom:6px}
  .et-col-large{display:none}
  #t-et-lignes :is(th,td){padding:6px 5px}
  #t-et-lignes .et-prix{font-size:15px}
  #t-et-lignes td .doux{font-size:10.5px}
  .et-ex{width:44px}
  .et-tete .btn{flex:1 1 45%}
  .et-nom{font-size:15px}
  #t-et-lignes{font-size:13px}
}
/* v60 : case « Compact » automatique sur les tableaux larges (app.js compactAuto) */
.compact-barre{display:flex;justify-content:flex-end;margin:0 0 4px}
table.t-serre{font-size:11.5px}
table.t-serre :is(th,td){padding:3px 6px}
table.t-serre thead th{font-size:10px;letter-spacing:.02em;white-space:normal;line-height:1.2;vertical-align:bottom}
table.t-serre input:not([type=checkbox]),table.t-serre select{font-size:11.5px;padding:1px 4px}
/* v62 : affiches (60×80 traceur, thématiques tout format) et photos */
.et-photo{display:flex;align-items:center;gap:8px;margin-top:4px}
.et-vignette{width:44px;height:44px;object-fit:contain;border:1px solid var(--gris);border-radius:6px;background:#fff}
.aff-grille{display:grid;grid-template-columns:minmax(320px,1fr) minmax(420px,1.25fr);gap:16px;align-items:start}
@media (max-width:1100px){.aff-grille{grid-template-columns:1fr}}
#t-aff tbody tr{cursor:pointer}
#t-aff tbody tr.sel{background:#EEF4FF}
.aff-form{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin-bottom:10px}
.aff-form label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--doux)}
.aff-form :is(input,select,textarea){font:inherit;font-size:14px;color:var(--nuit);padding:6px 8px;border:1px solid var(--gris);border-radius:6px}
.aff-form .aff-l2{grid-column:1 / -1}
.aff-calcul{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;background:var(--fond);border-radius:8px;padding:6px 8px}
.aff-calcul :is(input,select){font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--gris);border-radius:6px}
.aff-calcul #aff-src-nomenc{min-width:220px}
.aff-inline{flex-direction:row!important;align-items:center;gap:4px}
.aff-photo{display:flex;align-items:center;gap:10px}
.aff-photo img{width:64px;height:64px;object-fit:contain;border:1px solid var(--gris);border-radius:6px;background:#fff}
.aff-apercu{border:1px solid var(--gris);border-radius:10px;overflow:hidden;background:#525659}
.aff-apercu img{display:block;max-width:100%;max-height:78vh;margin:12px auto;box-shadow:0 4px 18px rgba(0,0,0,.35);background:#fff}
.ph-zone{border:2px dashed var(--gris);border-radius:10px;padding:18px;text-align:center;color:var(--doux);cursor:text;margin:8px 0}
.ph-zone:focus{outline:none;border-color:var(--accent);background:#F5F9FF}
.ph-apercu{display:block;max-width:100%;max-height:40vh;margin:8px auto;border:1px solid var(--gris);border-radius:8px}
.ph-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ph-actions label.btn{cursor:pointer}
.aff-grille > section{min-width:0}
#t-aff td .lib-s{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v63 : ligne ajoutée par un bip « besoin linéaire » de l'appli */
.puce.besoin{background:#E0F2FE;color:#075985;font-weight:700}
/* v64 : listes d'articles */
.la-sugg{list-style:none;margin:6px 0 0;padding:0}
.la-sugg li{padding:7px 10px;border:1px solid var(--gris);border-radius:8px;margin-bottom:4px;background:#fff;cursor:pointer}
.la-sugg li:hover{background:#EEF4FF}
#t-la-lignes input.la-qte{width:84px;text-align:right;font:inherit;padding:3px 6px;border:1px solid var(--gris);border-radius:6px}
#t-la-lignes input.la-com{width:100%;min-width:160px;font:inherit;padding:3px 6px;border:1px solid var(--gris);border-radius:6px}
#t-la-listes tr.cliquable{cursor:pointer}
/* v65 : retour à l'appli depuis le site complet, sur mobile */
.vers-appli{position:fixed;right:12px;bottom:12px;z-index:90;border:0;border-radius:24px;padding:10px 16px;background:#0B1F3B;color:#fff;
  font:inherit;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.vers-appli[hidden]{display:none}
/* v66 : fichier de l'enseigne non reçu / incomplet */
.alerte-flux{background:#FDECEE;color:#9F1239;border:1px solid #F7C4CC;border-radius:10px;padding:10px 14px;margin:10px 0;font-weight:600}
.alerte-flux[hidden]{display:none}

/* v69 : fiches produits */
.et-fiche{margin-top:4px;font-size:12.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.et-fiche select{min-width:280px;max-width:420px;width:auto;font-size:12.5px}
.fp-art{border:1px solid var(--gris);border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--blanc)}
.fp-tete{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.fp-pv{margin-left:auto;color:var(--rouge)}
.fp-vignettes{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}
.fp-v{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11.5px;color:var(--doux);text-decoration:none}
.fp-v img{height:120px;border:1px solid var(--gris);border-radius:4px;background:#fff}
.fp-v:hover img{border-color:var(--accent)}
#fp-q{min-width:340px;font:inherit;padding:8px 10px;border:1px solid var(--gris);border-radius:8px}

/* v70 : prix modifiable sur la ligne d'étiquette */
.et-prix-in{width:78px;text-align:right;font:inherit;font-weight:700;color:var(--rouge);padding:4px 6px;border:1px solid var(--gris);border-radius:6px}
.et-prix-in.modifie{border-color:var(--orange);background:var(--orange-f)}

/* v71 : étiquettes promo */
.et-promo-barre{flex-wrap:wrap;gap:10px;margin:8px 0}
.et-prix-in.barre{color:var(--doux);text-decoration:line-through;font-weight:600}
.et-remise{display:inline-block;background:var(--rouge);color:#fff;border-radius:4px;padding:1px 5px;font-size:12px}
.et-promo-barre[hidden]{display:none}

/* v73 : remise exceptionnelle — taux et couverture maxi côte à côte */
.remise-champs{display:flex;gap:14px;flex-wrap:wrap}
.remise-champs label{flex:1 1 160px}

/* ---- v74 : écran CA comparable — carte du jour, top 10, rayons, 7 jours, budget ---- */
.ca-tete{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ca-tete h2{margin:0;font-size:17px;color:var(--nuit)}
.ca-tete-d{display:flex;gap:10px;align-items:center}
.ca-tete-d select{font:inherit;font-size:13px;padding:3px 6px;border:1px solid var(--gris);border-radius:6px}
.ca-ctx{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12.5px}
.ca-hero .ca-tete h2{font-size:20px}
.ca-hero-g{display:grid;grid-template-columns:minmax(230px,1.1fr) 3fr;gap:20px;align-items:stretch}
.ca-grand{border-right:1px solid var(--gris);padding-right:20px;display:flex;flex-direction:column;gap:6px}
.ca-grand small,.ca-kpi small{color:var(--doux);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}
.ca-grand .val{font-size:44px;font-weight:800;line-height:1.05;color:var(--nuit);margin:2px 0 6px}
.ca-chip{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13px;padding:5px 10px;border-radius:8px;background:var(--fond)}
.ca-chip>b{white-space:nowrap}
.ca-droite{display:flex;flex-direction:column;gap:12px}
.ca-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ca-kpi{border:1px solid var(--gris);border-radius:12px;padding:12px 14px;background:var(--blanc)}
.ca-kpi .v{font-size:25px;font-weight:800;margin:4px 0;color:var(--nuit)}
.ca-kpi .e{font-size:12.5px;color:var(--doux);line-height:1.5}
.ca-barre{height:6px;border-radius:4px;background:var(--gris);margin-top:9px;position:relative}
.ca-barre i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:var(--orange)}
.ca-barre i.ok{background:var(--vert)}
.ca-barre u{position:absolute;left:80%;top:-3px;bottom:-3px;width:2px;background:var(--nuit)}
.ca-com-jour{display:flex!important;gap:10px;align-items:center;margin:0}
.ca-com-jour input{flex:1;font:inherit;padding:9px 12px;border:1px dashed #B8C2D1;border-radius:10px;background:#FBFCFE}
.ca-cumuls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:12.5px}
.ca-duo{display:grid;grid-template-columns:1.15fr 1fr;gap:16px;align-items:stretch}
.ca-duo>.pave{margin-bottom:16px}
table.ca-top td,table.ca-ray td{vertical-align:middle}
table.ca-top td .doux{font-size:11.5px;margin-left:4px}
.ca-rang{display:inline-flex;width:22px;height:22px;border-radius:50%;background:var(--fond);align-items:center;justify-content:center;font-weight:700;font-size:12px}
.ca-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;background:var(--fond);color:var(--doux)}
.ca-mini{height:4px;background:var(--fond);border-radius:3px;position:relative;margin-top:4px;min-width:90px}
.ca-mini i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:3px}
.ca-mini u{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--doux)}
.ca-jours7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) minmax(0,1.1fr);gap:10px}
.ca-j7{border:1px solid var(--gris);border-radius:12px;padding:10px 12px;background:var(--blanc);display:flex;flex-direction:column;gap:3px;min-width:0}
.ca-j7.auj{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.ca-j7 .d{font-weight:700;color:var(--nuit)}.ca-j7 .d small{color:var(--doux);font-weight:400}
.ca-j7 .o{font-size:20px;font-weight:800;color:var(--nuit)}
.ca-j7 .c,.ca-j7 .b{font-size:12px;color:var(--doux)}
.ca-j7 .b{color:var(--accent);font-weight:600}
.ca-j7 .ctx{font-size:11px}
.ca-j7 .ca-add{font-size:12px;text-align:left;margin-top:auto}
.ca-note{font:inherit;font-size:12px;text-align:left;background:#FFF7E0;border:0;border-radius:6px;padding:3px 6px;margin-top:auto;cursor:pointer;color:var(--texte);overflow:hidden;text-overflow:ellipsis}
.ca-com-edit{font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--accent);border-radius:6px;margin-top:auto;width:100%}
.ca-j7.tot{background:var(--actif);border-color:var(--actif)}
details.ca-plie{margin-top:10px}
details.ca-plie>summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:13.5px;padding:4px 0}
.bu-reglages{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:16px;align-items:start;margin:10px 0}
.bu-reglages select{display:block;margin-top:4px;font:inherit;padding:6px 8px;border:1px solid var(--gris);border-radius:6px}
.bu-meth{border:1px solid var(--gris);border-radius:10px;padding:8px 14px}
.bu-meth legend{font-size:12px;color:var(--doux)}
tr.total td{border-top:2px solid var(--gris);font-weight:600}
@media (max-width:1180px){.ca-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ca-jours7{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:900px){.ca-hero-g,.ca-duo,.bu-reglages{grid-template-columns:1fr}.ca-grand{border-right:0;padding-right:0}
  .ca-jours7{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v74 : profils */
#t-profils td.centre,#t-profils th.centre{text-align:center}
#t-profils tr.pr-groupe td{background:var(--fond);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--doux)}
.coche-ligne.exc,.exc{color:var(--orange)!important;font-weight:600}
.coche-ligne.exc input{accent-color:var(--orange)}
ul.pr-rapport{margin:6px 0 12px;padding-left:18px;font-size:13px;line-height:1.7}
/* v75 : nouvelle ligne de recherche en bas d'une liste (Entrée sur la dernière ligne) */
tr.nav-nouvelle td{background:var(--actif);padding:6px 8px}
.nav-chercher{position:relative;display:flex;align-items:center;gap:8px}
.nav-chercher .nav-plus{color:var(--accent);font-weight:700}
.nav-chercher input{flex:1;max-width:520px;font:inherit;padding:6px 10px;border:1px solid var(--accent);border-radius:6px;background:#fff}
.nav-chercher .nav-retour{font-size:12.5px}
ul.nav-sugg{position:absolute;left:24px;top:100%;z-index:30;list-style:none;margin:2px 0 0;padding:0;background:#fff;border:1px solid var(--gris);
  border-radius:8px;box-shadow:0 6px 20px rgba(15,23,42,.12);width:min(620px,90%);max-height:320px;overflow:auto}
ul.nav-sugg li{display:flex;justify-content:space-between;gap:12px;padding:7px 10px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--fond)}
ul.nav-sugg li.sel,ul.nav-sugg li:hover{background:var(--actif)}
/* v76 : sélecteur de période sur la carte du jour */
.ca-per{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px}
.ca-seg{display:inline-flex;border:1px solid var(--gris);border-radius:8px;overflow:hidden}
.ca-seg button{font:inherit;font-size:13px;border:0;background:var(--blanc);padding:5px 12px;cursor:pointer;color:var(--texte)}
.ca-seg button+button{border-left:1px solid var(--gris)}
.ca-seg button.on{background:var(--actif);color:var(--accent);font-weight:700}
.ca-nav{font:inherit;border:1px solid var(--gris);background:var(--blanc);border-radius:6px;padding:4px 8px;cursor:pointer;color:var(--doux)}
.ca-per input,.ca-per select{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--gris);border-radius:6px}
.ca-comp{font-size:12px;color:var(--doux);margin:2px 0 0}
#ca-top-note:empty{display:none}

/* ---------- Administratif → Caisse (v78) ---------- */
.cai-mois{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.cai-mois-l{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;font-size:13px}
.cai-mois-nav{display:inline-flex;align-items:center;gap:8px}.cai-mois-nav b{color:var(--nuit);min-width:120px;text-align:center}
.cai-mois-nav .lien{font-size:18px;line-height:1;padding:0 4px}
.cai-leg{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--doux)}
.cai-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.cai-jours{display:grid;grid-template-columns:repeat(31,minmax(0,1fr));gap:3px}
.cai-j{height:36px;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:600 11px/1.1 inherit;
  cursor:pointer;border:1px solid transparent;color:var(--nuit);background:#F1F5F9;padding:0;position:relative}
.cai-j small{font-size:9px;font-weight:500;color:var(--doux)}
.cai-j.s-ok,.cai-leg i.s-ok{background:var(--vert-f);color:#047857}
.cai-j.s-ecart,.cai-leg i.s-ecart{background:var(--orange-f);color:#92400E}
.cai-j.s-attente,.cai-leg i.s-attente{background:#EEF4FF;color:#1D4ED8}
.cai-j.s-bloque,.cai-leg i.s-bloque{background:var(--rouge-f);color:var(--rouge)}
.cai-j.s-vide,.cai-leg i.s-vide{background:#F1F5F9;color:#94A3B8}
.cai-j.sel{border-color:var(--accent);box-shadow:0 0 0 2px #0066FF33}
.cai-j.tr::after{content:"";position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:#64748B}
.cai-jour{display:flex;align-items:center;gap:10px;background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:10px 14px;margin-bottom:14px;flex-wrap:wrap}
.cai-fl{border:1px solid var(--gris);background:#fff;border-radius:6px;width:30px;height:30px;cursor:pointer;color:var(--doux)}
.cai-date{font-size:17px;font-weight:600;color:var(--nuit);min-width:210px}
.cai-qui{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:13px}
.cai-qui select{border:1px solid var(--gris);border-radius:6px;padding:5px 8px;background:#fff;font:inherit}
.cai-av{width:28px;height:28px;border-radius:50%;background:var(--actif);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700}
.cai-grille{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}
.cai-cartes{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cai-carte{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:14px 16px}
.cai-carte.large{grid-column:1/-1}
.cai-carte h3{font-size:14.5px;display:flex;align-items:center;gap:8px;margin:0 0 10px;color:var(--nuit)}
.cai-ico{width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-size:14px}
.cai-champ{display:grid;grid-template-columns:1fr 130px;align-items:center;gap:8px;padding:5px 0;border-top:1px dashed #EEF2F7;font-size:13px}
.cai-carte > .cai-champ:first-of-type,.cai-carte h3 + .cai-champ{border-top:0}
.cai-champ input,.cai-champ select{width:100%;border:1px solid #CBD5E1;border-radius:6px;padding:6px 9px;font:inherit;color:var(--nuit);background:#fff}
.cai-champ input.cai-n{text-align:right;font-variant-numeric:tabular-nums}
.cai-champ input:focus,.cai-champ select:focus,.cai-tuile input:focus,#cai-comm:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0066FF22;background:#FAFCFF}
.cai-calc{text-align:right;padding:6px 9px;color:var(--nuit);font-variant-numeric:tabular-nums;background:#F8FAFC;border-radius:6px}
.cai-lie{text-align:right;padding:6px 9px;color:var(--accent);font:600 13px inherit;font-variant-numeric:tabular-nums;background:var(--actif);border:0;border-radius:6px;cursor:pointer}
.cai-tuiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:8px}
.cai-tuile{border:1px solid var(--gris);border-radius:8px;padding:8px 10px;background:#FAFBFD;display:block}
.cai-tuile span{display:block;font-size:12px;color:var(--doux);margin-bottom:3px}
.cai-tuile input{width:100%;border:1px solid #CBD5E1;border-radius:6px;padding:5px 8px;text-align:right;font:inherit;font-variant-numeric:tabular-nums}
.cai-tuile.rempli{background:var(--actif);border-color:#BFD6FF}
.cai-tot{display:flex;justify-content:space-between;margin-top:10px;font-weight:600;color:var(--nuit)}
.cai-autres{margin-top:8px}.cai-autres summary{cursor:pointer;color:var(--accent);font-size:13px;font-weight:500}
.cai-autres-g{display:grid;grid-template-columns:1fr 1fr;column-gap:24px;margin-top:6px}
.cai-autres-g .cai-champ{grid-template-columns:1fr 170px}
.cai-cote{position:sticky;top:12px;display:flex;flex-direction:column;gap:14px}
.cai-cl{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 0;border-top:1px solid #F1F5F9;font-size:13px}
.cai-cl:first-child{border-top:0}
.cai-cl > span:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.cai-pa{display:inline-flex;width:18px;height:18px;border-radius:50%;align-items:center;justify-content:center;font-size:11px;font-style:normal;margin-right:6px}
.cai-pa.v{background:var(--vert-f);color:#047857}.cai-pa.r{background:var(--rouge-f);color:var(--rouge)}.cai-pa.n{background:#F1F5F9;color:var(--doux)}
.cai-gros{font-size:24px;font-weight:700;color:var(--nuit);font-variant-numeric:tabular-nums}
#cai-comm{width:100%;border:1px solid #CBD5E1;border-radius:6px;padding:7px 9px;font:inherit;resize:vertical;margin-bottom:10px}
.cai-enr{width:100%;justify-content:center}
.rouge-bord{border-color:var(--rouge)!important;background:var(--rouge-f)!important}
.cai-note-rep{background:#FFFBEA;border-radius:6px;padding:5px 8px}
.orange{color:var(--orange)}
/* règlements */
.cai-saisie{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;background:var(--blanc);
  border:1px solid var(--gris);border-radius:10px;padding:12px}
.cai-saisie label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;font-weight:600;color:var(--doux);position:relative;flex:0 1 112px;min-width:92px}
.cai-saisie label.large{flex:1 1 200px}
.cai-saisie label.cai-cpt{flex:0 1 118px}
.cai-saisie label:has([type=date]){flex:0 1 145px}
.cai-saisie .btn{flex:0 0 auto}
.cai-saisie input,.cai-saisie select{border:1px solid #CBD5E1;border-radius:6px;padding:6px 8px;font:400 13px inherit;color:var(--nuit);background:#fff;min-width:0}
.cai-saisie input:focus,.cai-saisie select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0066FF22}
.cai-saisie [data-f=compte]{text-transform:uppercase;font-weight:600}
.cai-sugg{position:absolute;top:100%;left:0;z-index:30;min-width:340px;max-height:280px;overflow:auto;margin:2px 0 0;padding:4px;list-style:none;
  background:#fff;border:1px solid var(--gris);border-radius:8px;box-shadow:0 8px 24px #0B1F3B1F;font-weight:400;color:var(--texte)}
.cai-sugg li{padding:6px 8px;border-radius:6px;cursor:pointer;display:grid;grid-template-columns:86px 1fr auto;gap:8px;font-size:13px;align-items:baseline}
.cai-sugg li .doux{white-space:nowrap;font-size:12px}
.cai-sugg li.sel,.cai-sugg li:hover{background:var(--actif)}
.cai-sugg li b{color:var(--nuit);min-width:78px}
#t-cai-regl input,#t-cai-regl select{border:1px solid transparent;background:transparent;border-radius:5px;padding:4px 6px;font:inherit;color:inherit}
#t-cai-regl input:hover,#t-cai-regl select:hover{border-color:#E2E8F0}
#t-cai-regl input:focus,#t-cai-regl select:focus{outline:none;border-color:var(--accent);background:#fff}
#t-cai-regl tr.cai-drive td{background:#FCFCFD}
tr.cai-err td{background:var(--rouge-f)!important}
.lien.arme{color:#fff;background:var(--rouge);border-radius:5px;padding:2px 6px}
/* CGI */
.cai-cgi-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.cai-cgi-j{display:flex;align-items:center;gap:5px;background:var(--blanc);border:1px solid var(--gris);border-radius:8px;padding:6px 8px;font-size:12.5px}
.cai-cgi-j b{color:var(--nuit);min-width:18px}.cai-cgi-j small{color:var(--doux);min-width:16px}
@media (max-width:1000px){.cai-grille{grid-template-columns:1fr}.cai-cote{position:static}}
@media (max-width:700px){.cai-cartes{grid-template-columns:1fr}.cai-jours{grid-template-columns:repeat(11,minmax(0,1fr))}
  .cai-autres-g{grid-template-columns:1fr}.cai-champ{grid-template-columns:1fr 120px}.cai-saisie label.large{grid-column:auto}}

/* ---------- Fournisseurs → Décomptes DZB (v79) ---------- */
#t-dzb-frs td.dzb-cpt{position:relative}
#t-dzb-frs tr.dzb-ok td:first-child{box-shadow:inset 3px 0 0 var(--vert)}
#t-dzb-frs .cai-sugg{min-width:380px}

/* v80 : remplacements */
.tuile-btn.actif{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.form-rempl label{display:block;font-weight:600;font-size:13px;margin-top:10px}
.form-rempl input{display:block;width:100%;margin-top:4px;box-sizing:border-box}
.form-rempl .note{margin:4px 0 0;min-height:1.2em}
.note.orange{color:var(--orange)}
.remplace-bloc{margin:6px 0 2px;padding:7px 9px;border:2px solid var(--orange);border-radius:8px;
  background:var(--orange-f);font-size:12.5px;line-height:1.45;color:var(--nuit);white-space:normal}
.alerte-flux.cliquable{cursor:pointer}
tr.ligne-critique td{background:#FDECEE}
.bandeau-rempl{margin:0 0 10px;padding:9px 12px;border-radius:8px;font-size:13.5px;line-height:1.45}
.bandeau-rempl.rouge{background:#FDECEE;border:1px solid var(--rouge);color:var(--rouge)}
.bandeau-rempl.orange{background:var(--orange-f);border:1px solid var(--orange);color:var(--nuit)}
.pied-bl{margin:10px 2px 0;font-size:14px}
input.qte.negatif{color:var(--rouge);font-weight:700;border-color:var(--rouge)}

/* v83 : suite caisse */
.dn-lots{margin-top:8px}
.ce-valeurs{display:contents}
.cai-saisie label.ce-v{flex:0 1 72px;min-width:64px}
.cf-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:10px 0}
.cf-bloc{background:var(--blanc);border:1px solid var(--gris);border-radius:10px;padding:10px 12px}
.cf-bloc h3{margin:0 0 8px;font-size:13px}
.cf-l{display:grid;grid-template-columns:1fr 80px;align-items:center;gap:8px;font-size:13px;margin:3px 0}
.cf-l input{border:1px solid #CBD5E1;border-radius:6px;padding:5px 7px;font:inherit;text-align:right}
.tuile .val.rouge{color:var(--rouge)}.tuile .val.vert{color:var(--vert)}
label.case{display:inline-flex;align-items:center;gap:5px;font-size:13px}

/* v84 : campagne de règlement, alerte « déjà généré » (DZB et campagne) */
.alerte-deja{border-color:var(--rouge);background:var(--rouge-f)}
.camp-gen{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}
.camp-carte h3{font-size:15px}
#t-camp-hist tr.cliquable{cursor:pointer}
#t-camp-hist tr.camp-detail>td{background:#F8FAFC;padding:6px 18px}
#t-camp input.num,#t-camp-manu input.num{text-align:right}
.tuile.alerte{border-color:var(--rouge)}
.tuile.alerte .val{color:var(--rouge)}

/* v85 : détail des factures d'un fournisseur (campagne de règlement) */
#t-camp tr.cliquable{cursor:pointer}
#t-camp tr.camp-fac>td{background:#F8FAFC;padding:6px 18px 10px 32px}
.camp-factures{width:auto;min-width:60%}
.camp-factures td,.camp-factures th{font-size:12px}
#t-camp-hist details summary{cursor:pointer;font-size:12px;color:var(--bleu,#2563eb)}

/* v86 : bandeau du site de démonstration */
.bandeau-demo{position:sticky;top:0;z-index:1000;background:#B45309;color:#fff;text-align:center;
  font-weight:700;font-size:13px;padding:6px 12px;letter-spacing:.02em}

/* v87 : mise à jour du mini depuis le motif */
.motif-mini{display:flex;align-items:center;gap:8px;margin:10px 0;padding:8px 10px;border-radius:8px;
  background:var(--orange-f);font-size:13px}
.motif-mini input{width:auto}
.motif-mini[hidden]{display:none}

/* v88 : fiches modules et descriptif de page */
.b-descriptif{white-space:nowrap;font-size:12.5px;padding:6px 10px}
.fm-cols{display:grid;grid-template-columns:300px 1fr;gap:16px;margin-top:12px;align-items:start}
.fm-arbre{border:1px solid var(--gris);border-radius:10px;padding:8px;max-height:75vh;overflow:auto;background:var(--blanc)}
.fm-groupe-titre{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--doux);margin:10px 6px 4px}
.fm-page summary{list-style:none;cursor:pointer}
.fm-page summary::-webkit-details-marker{display:none}
.fm-noeud{display:block;width:100%;text-align:left;border:0;background:none;font:inherit;padding:5px 8px;border-radius:6px;cursor:pointer}
.fm-noeud.page{font-weight:700}
.fm-noeud.onglet{padding-left:22px;font-size:13px}
.fm-noeud:hover{background:var(--actif)}
.fm-noeud.actif{background:var(--actif);color:var(--nuit);box-shadow:inset 3px 0 0 var(--bleu,#2563eb)}
.fm-detail{border:1px solid var(--gris);border-radius:10px;padding:14px 18px;background:var(--blanc);min-height:300px}
.fm-detail h3,#m-descriptif h3{font-size:13.5px;margin:14px 0 4px;color:var(--nuit)}
.fm-detail ul,#m-descriptif ul{margin:2px 0 6px 18px;padding:0}
.fm-detail li,#m-descriptif li{margin:2px 0;font-size:13.5px}
.fm-titre{margin:0 0 6px}
.fm-mop li{margin-bottom:8px}
.fm-mop li.cible{background:var(--orange-f);border-radius:6px}
.fm-captures{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}
.fm-captures figure{margin:0;position:relative;max-width:420px}
.fm-captures img{max-width:420px;max-height:300px;border:1px solid var(--gris);border-radius:6px;display:block}
.fm-captures figcaption{font-size:11.5px;color:var(--doux)}
.fm-captures button{position:absolute;top:2px;right:4px;background:var(--blanc)}
.fm-encarts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid var(--gris)}
.fm-encarts textarea{width:100%;font:inherit;font-size:13px}
.fm-encarts p{grid-column:1/-1;margin:0}
.fm-rq li{margin:4px 0}
#m-descriptif .boite{max-width:860px;width:min(860px,94vw)}
@media (max-width:900px){.fm-cols{grid-template-columns:1fr}.fm-encarts{grid-template-columns:1fr}}
.fm-groupe{border-top:1px solid var(--gris);padding-top:4px;margin-top:4px}
.fm-groupe:first-child{border-top:0}
