/* ============================================================================
   DOC-V2 — Reskin ISOLÉ de l'écran Bon de Livraison (docs/maquettes/maquette_bl.html)
   ----------------------------------------------------------------------------
   TOUS les sélecteurs sont bornés à .docv2 → aucun autre écran (bons de réception,
   factures, retours, avoirs…) partageant les gabarits doc- / doclist- / fpro- n'est
   affecté. On NE touche PAS app.css ni les classes existantes : on les surcharge
   uniquement à l'intérieur du wrapper .docv2 (spécificité + ordre de chargement).
   Aucune logique, aucun binding, aucun calcul modifié — habillage seul.
   ============================================================================ */

.docv2{
  /* MARQUE */
  --dgs-vert:#0E7A3D; --dgs-vert-hover:#0A6332;
  --dgs-highlight:#E8F5EE; --dgs-survol:#F0FAF4;
  /* NEUTRES */
  --dgs-fond:#F7F9F8; --dgs-surface:#FFFFFF; --dgs-muted:#F9FAFB;
  --dgs-bordure:#E5E7EB; --dgs-bordure-forte:#D5DAE0;
  --dgs-texte:#1F2937; --dgs-texte-2:#6B7280; --dgs-texte-3:#9CA3AF;
  /* FAMILLES DE STATUT */
  --f-succes:#D4F4E2;  --t-succes:#2E7D5B;
  --f-attente:#DCE7F1; --t-attente:#5B8DBF;
  --f-teal:#D0EEEA;    --t-teal:#3A8C82;
  --f-alerte:#FCDADA;  --t-alerte:#CC4646;
  --f-terre:#F5E6D8;   --t-terre:#B75218;
  --f-bronze:#EBD9C2;  --t-bronze:#8C5A28;
  --f-neutre:#E5E7EB;  --t-neutre:#374151;
  --dv-font:Inter,"Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;
  --r-sm:9px; --r-md:11px; --r-lg:14px;
  --sh-sm:0 1px 2px rgba(16,40,28,.05);
  --sh-lg:0 10px 30px rgba(16,40,28,.12);

  font-family:var(--dv-font);
  color:var(--dgs-texte);
}
.docv2 *{box-sizing:border-box}
.docv2 :focus-visible{outline:2px solid var(--dgs-vert);outline-offset:1px}
.docv2 .num,.docv2 .crud-num{font-variant-numeric:tabular-nums}

/* ============ conteneur page ============ */
.docv2 .doc-page{max-width:1600px;margin:0 auto;padding:0}

/* ================= BANDEAU (.hd) — compact, une seule rangée (≤ 56px) ================= */
.docv2 .doc-header{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;
  margin:0 0 10px;padding:8px 16px;background:var(--dgs-surface);
  border:1px solid var(--dgs-bordure);border-left:4px solid var(--dgs-vert);
  border-radius:var(--r-lg);box-shadow:var(--sh-sm);
}
.docv2 .doc-header-main{display:flex;flex-direction:column;gap:0;min-width:0;flex:1 1 auto}
.docv2 .doc-eyebrow{
  font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--dgs-vert);
}
/* titre + badge + traçabilité (« Créé par… · Validé par… ») sur la MÊME ligne */
.docv2 .doc-title-row{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;min-width:0}
.docv2 .doc-title{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--dgs-texte);margin:0}
.docv2 .doc-subtitle{display:none}
/* la ligne de traçabilité + « issu de » (composants partagés) passent inline, en petit */
.docv2 .doc-title-row .trac-ligne{margin-top:0;font-size:11px;color:var(--dgs-texte-3)}

/* badges d'état (draft = terre, valid = succès) */
.docv2 .doc-badge-etat{
  display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;
  padding:4px 12px;border-radius:14px;line-height:1;
}
.docv2 .doc-badge-etat--draft{background:var(--f-terre);color:var(--t-terre)}
.docv2 .doc-badge-etat--draft .doc-dot{width:8px;height:8px;border-radius:50%;background:currentColor}
.docv2 .doc-badge-etat--valid{background:var(--f-succes);color:var(--t-succes)}

.docv2 .doc-header-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ================= BOUTONS ================= */
/* .btn-filtres → .btn (maquette) ; .btn-nouveau → .btn-primary (maquette).
   Restyle AUSSI les boutons des composants partagés (HistoriqueTransfert = btn-filtres). */
.docv2 .btn-filtres,
.docv2 .doc-header-actions .btn-filtres{
  display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;
  border:1px solid var(--dgs-bordure);background:var(--dgs-surface);color:var(--dgs-texte-2);
  border-radius:var(--r-sm);font-size:13px;font-weight:500;cursor:pointer;box-shadow:none;
  transition:background .12s,color .12s,border-color .12s;
}
.docv2 .btn-filtres:hover:not(:disabled){background:var(--dgs-survol);border-color:#C9E7D6;color:var(--dgs-vert)}
.docv2 .btn-filtres:disabled{opacity:.55;cursor:not-allowed}

.docv2 .btn-nouveau{
  display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;
  background:var(--dgs-vert);border:1px solid var(--dgs-vert);color:#fff;
  border-radius:var(--r-sm);font-size:13px;font-weight:500;cursor:pointer;box-shadow:none;
  transition:background .12s,border-color .12s;
}
.docv2 .btn-nouveau:hover:not(:disabled){background:var(--dgs-vert-hover);border-color:var(--dgs-vert-hover);color:#fff}
.docv2 .btn-nouveau:disabled{opacity:.5;cursor:not-allowed}

/* variante « ghost » (Enregistrer, Saisie multiple) — teint vert doux */
.docv2 .btn-ghostv2{
  background:var(--dgs-highlight);border-color:#C9E7D6;color:var(--dgs-vert);
}
.docv2 .btn-ghostv2:hover:not(:disabled){background:#DCF0E5;color:var(--dgs-vert-hover)}

/* boutons secondaires bootstrap dans les modales → neutres cohérents */
.docv2 .btn.btn-secondary{
  background:var(--dgs-surface);border:1px solid var(--dgs-bordure);color:var(--dgs-texte-2);
  border-radius:var(--r-sm);font-weight:500;
}
.docv2 .btn.btn-secondary:hover{background:var(--dgs-survol);border-color:#C9E7D6;color:var(--dgs-vert)}

/* ================= GRILLE DE CARTES ================= */
/* HAUTEUR UNIFORME : les cartes d'une MÊME RANGÉE font toutes la hauteur de la plus
   grande (généralement Totaux). C'est le `stretch` par défaut de la grille qui s'en
   charge — l'ancien `align-items:start` le neutralisait et donnait l'effet d'escalier.
   Il est donc explicite ici pour qu'on ne le re-casse pas par inadvertance.
   Les .doc-card sont enfants DIRECTS de la grille (aucun wrapper) → rien d'autre à faire ;
   l'égalisation vaut par rangée, donc aussi en responsive 2 colonnes. */
.docv2 .doc-cards-row.fpro-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px;align-items:stretch;
}
/* variante 3 colonnes (documents sans carte Logistique, ex. bon de réception) */
.docv2 .doc-cards-row.fpro-grid.doc-cards-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:1200px){.docv2 .doc-cards-row.fpro-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.docv2 .doc-cards-row.fpro-grid{grid-template-columns:1fr}}

/* La carte est une COLONNE flex : étirée par la grille, elle laisse son contenu ancré
   en HAUT (aucun enfant ne grandit) et le vide se forme en bas. Seule la carte Totaux
   déroge, via .doc-tot-body{flex:1} + .doc-tot-rows{margin-top:auto} (bloc des montants
   ancré EN BAS, comme la maquette). Ne pas retirer display:flex/column. */
.docv2 .doc-card.fpro-bloc{
  background:var(--dgs-surface);border:1px solid var(--dgs-bordure);
  border-radius:var(--r-lg);overflow:hidden;display:flex;flex-direction:column;
  box-shadow:var(--sh-sm);padding:0;
}
/* en-tête de carte coloré (.card-hd) */
.docv2 .doc-card .doc-card__head{
  display:flex;align-items:center;gap:7px;
  padding:7px 13px;margin:0;font-size:12px;font-weight:500;text-transform:none;letter-spacing:0;
  border-bottom:1px solid var(--dgs-bordure);
}
.docv2 .doc-card .doc-card__icon{
  width:16px;height:16px;padding:0;background:none!important;border-radius:0;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;color:inherit;
}
.docv2 .doc-card .doc-card__icon svg{width:14px;height:14px}
.docv2 .doc-card .doc-card__title{font-size:12px;font-weight:500;letter-spacing:0;text-transform:none;color:inherit}
/* corps de carte */
.docv2 .doc-card > .fpro-field,
.docv2 .doc-card > .fpro-2col,
.docv2 .doc-card > .fpro-coords,
.docv2 .doc-card > .fpro-kv,
.docv2 .doc-card > .fpro-note,
.docv2 .doc-card > .doc-logfiles{margin-left:13px;margin-right:13px}
/* espacement inter-champs COMPACT et déterministe (annule les marges d'app.css) */
.docv2 .doc-card > *:not(.doc-card__head){margin-top:8px;margin-bottom:0}
.docv2 .doc-card > *:last-child{margin-bottom:9px}

/* couleurs par carte */
.docv2 .doc-card--partenaire-client{border-top:3px solid var(--t-attente)}
.docv2 .doc-card--partenaire-client .doc-card__head{color:var(--t-attente);background:var(--f-attente)}
/* carte partenaire FOURNISSEUR (sans suffixe) — même accent bleu (--t-attente) */
.docv2 .doc-card.fpro-bloc.doc-card--partenaire{border-top:3px solid var(--t-attente)}
.docv2 .doc-card.fpro-bloc.doc-card--partenaire .doc-card__head{color:var(--t-attente);background:var(--f-attente)}
.docv2 .doc-card--document{border-top:3px solid var(--t-neutre)}
.docv2 .doc-card--document .doc-card__head{color:var(--t-neutre);background:var(--f-neutre)}
.docv2 .doc-card--logistique{border-top:3px solid var(--t-teal)}
.docv2 .doc-card--logistique .doc-card__head{color:var(--t-teal);background:var(--f-teal)}
.docv2 .doc-card--totaux{border-top:3px solid var(--dgs-vert)}
.docv2 .doc-card--totaux .doc-card__head{color:var(--t-succes);background:var(--f-succes)}

/* champs */
.docv2 .fpro-field,.docv2 .fpro-2col > div{display:flex;flex-direction:column;gap:3px}
.docv2 .fpro-2col{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.docv2 .doc-card label,
.docv2 .fpro-field label,
.docv2 .fpro-2col label,
.docv2 .doc-mini-lbl{
  font-size:11px;color:var(--dgs-texte-2);font-weight:500;margin:0;text-transform:none;letter-spacing:0;
}
.docv2 .doc-lbl-note{color:var(--dgs-texte-3);font-weight:400;font-size:10.5px}

/* inputs / selects → look maquette (.input / .select), hauteur compacte 31px */
.docv2 .form-control,
.docv2 .form-select{
  height:31px;padding:0 9px;border-radius:var(--r-sm);
  border:1px solid var(--dgs-bordure);background:var(--dgs-surface);color:var(--dgs-texte);
  font-size:13px;width:100%;box-shadow:none;line-height:1.2;
  transition:border-color .12s,box-shadow .12s;
}
.docv2 .form-select{padding-right:26px}
.docv2 .form-control:focus,
.docv2 .form-select:focus{
  border-color:var(--dgs-vert);box-shadow:0 0 0 3px rgba(14,122,61,.12);outline:none;
}
.docv2 .form-control::placeholder{color:var(--dgs-texte-3)}
.docv2 .form-control:disabled,
.docv2 .form-select:disabled,
.docv2 .doc-mono-input:disabled{background:var(--dgs-muted);color:var(--dgs-texte-3);opacity:1}
.docv2 .crud-num{text-align:right}

/* encart coordonnées client (.client-info) — compact */
.docv2 .fpro-coords{
  background:var(--dgs-muted);border-radius:var(--r-md);padding:7px 10px;
  font-size:11.5px;color:var(--dgs-texte-2);line-height:1.45;border-left:3px solid var(--t-attente);
  display:block;
}
.docv2 .fpro-coords > div{display:block;margin:0}
.docv2 .fpro-coords-k{color:var(--dgs-texte);font-weight:500;margin-right:4px}
.docv2 .fpro-coords-v{color:var(--dgs-texte-2)}

/* bloc fichiers dans la carte logistique (esprit .file-row fine) */
.docv2 .doc-logfiles{
  background:var(--dgs-survol);border-radius:var(--r-md);border:1px dashed #BFE3CE;
  padding:7px 10px;font-size:12px;
}
.docv2 .doc-logfiles .doc-vide-note{color:var(--dgs-texte-2);font-size:11px;margin:0}
/* le composant FichiersJoints partagé, rendu compact à l'intérieur de la carte */
.docv2 .doc-logfiles :is(.form-control,.form-control-sm,input[type=file]){height:auto;font-size:11.5px}
.docv2 .doc-logfiles .fj-liste,.docv2 .doc-logfiles ul{margin:0}

/* ================= TOTAUX ================= */
.docv2 .doc-card--totaux .doc-tot-body{
  display:flex;flex-direction:column;flex:1;margin:11px 13px;
}
.docv2 .doc-card--totaux .doc-tot-rows{margin-top:auto}
.docv2 .tot-row{
  display:flex;justify-content:space-between;align-items:center;font-size:13px;
  padding:5px 0;border-bottom:1px dashed var(--dgs-bordure);
}
.docv2 .tot-row span:first-child{color:var(--dgs-texte-2)}
.docv2 .tot-row span:last-child{font-variant-numeric:tabular-nums;color:var(--dgs-texte)}
.docv2 .tot-row.tot-nb{border-bottom:none}
.docv2 .tot-row .tot-red{color:var(--t-alerte)}
.docv2 .tot-ttc{
  display:flex;justify-content:space-between;align-items:baseline;margin-top:8px;
  padding:10px 12px;border-radius:var(--r-md);background:var(--dgs-vert);color:#fff;
}
.docv2 .tot-ttc span:first-child{font-size:12px;font-weight:500;opacity:.85}
.docv2 .tot-ttc span:last-child{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
.docv2 .tot-marge{
  display:flex;justify-content:space-between;align-items:baseline;margin-top:8px;
  padding:8px 12px;border-radius:var(--r-md);border:1px solid var(--dgs-bordure);
  font-size:13px;background:var(--dgs-muted);
}
.docv2 .tot-marge span:first-child{color:var(--dgs-texte-2);font-weight:500}
.docv2 .tot-marge .marge-pos{color:var(--t-succes);font-weight:600;font-variant-numeric:tabular-nums}
.docv2 .tot-marge .marge-neg{color:var(--t-alerte);font-weight:600;font-variant-numeric:tabular-nums}
.docv2 .tot-note{font-size:10.5px;color:var(--dgs-texte-3);margin-top:6px}
.docv2 .doc-tot-regle{
  display:flex;justify-content:space-between;gap:10px;margin-top:8px;padding-top:8px;
  border-top:1px solid var(--dgs-bordure);font-size:12.5px;
}
.docv2 .doc-tot-regle .lbl{color:var(--dgs-texte-2)}
.docv2 .doc-tot-regle .v{font-variant-numeric:tabular-nums;font-weight:500}
.docv2 .doc-tot-regle .doc-red{color:var(--t-alerte)}
.docv2 .doc-tot-regle .doc-green{color:var(--t-succes)}

/* ================= CARTE LIGNES DE PRODUITS ================= */
.docv2 .doc-prod-card.crud-table-card{
  background:var(--dgs-surface);border:1px solid var(--dgs-bordure);border-left:3px solid var(--dgs-vert);
  border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:visible;
}
.docv2 .doc-prod-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:9px 13px;font-size:12px;font-weight:500;color:var(--dgs-vert);
  background:var(--dgs-highlight);border-bottom:1px solid var(--dgs-bordure);
  border-radius:var(--r-lg) var(--r-lg) 0 0;
}
.docv2 .doc-prod-head .left{display:flex;align-items:center;gap:7px}
.docv2 .doc-prod-head .left svg{width:14px;height:14px}
.docv2 .doc-count{
  background:var(--dgs-vert);color:#fff;font-size:11px;font-weight:500;
  padding:1px 8px;border-radius:10px;min-width:22px;text-align:center;
}
.docv2 .doc-prod-head .nb-art{color:var(--dgs-texte-2);font-weight:400}
.docv2 .doc-prod-inner{padding:12px 13px}

/* barre de saisie (toolbar + rangée produit) */
.docv2 .doc-saisie.doc-bande{
  background:var(--dgs-muted);border:1px solid var(--dgs-bordure);border-left:3px solid var(--dgs-vert);
  border-radius:var(--r-md);padding:11px 12px;margin-bottom:10px;
  display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;
}
/* le ProduitPicker (composant partagé) habillé en champ de recherche */
.docv2 .doc-saisie .pp-wrap .form-control{height:34px}
.docv2 .pp-panel{
  border:1px solid var(--dgs-bordure);border-radius:var(--r-md);box-shadow:var(--sh-lg);
  background:var(--dgs-surface);
}
.docv2 .pp-table thead th{
  background:var(--dgs-muted);font-size:11px;text-transform:uppercase;letter-spacing:.02em;
  color:var(--dgs-texte-2);font-weight:500;
}
.docv2 .pp-table tbody tr:hover{background:var(--dgs-survol)}

/* --- Skin docv2 du ProduitPicker : rangées + pastilles de stock (maquette .dropdown/.ditem) --- */
.docv2 .pp-panel-docv2{padding:0;max-height:300px;overflow-y:auto}
.docv2 .pp-panel-docv2 .pp-vide{padding:16px;text-align:center;color:var(--dgs-texte-3);font-size:12.5px}
.docv2 .pp-item{
  display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;
  font-size:12px;cursor:pointer;border-left:3px solid transparent;
  border-bottom:1px solid var(--dgs-bordure);
}
.docv2 .pp-item:last-child{border-bottom:none}
.docv2 .pp-item:hover{background:var(--dgs-survol);border-left-color:var(--dgs-vert)}
.docv2 .pp-item-main{min-width:0}
.docv2 .pp-item-nom{font-weight:500;color:var(--dgs-texte)}
.docv2 .pp-item-ref{font-size:11px;color:var(--dgs-texte-3);margin-top:2px;letter-spacing:.02em}
.docv2 .pp-item-right{display:flex;align-items:center;gap:10px;white-space:nowrap}
.docv2 .pp-item-prix{color:var(--dgs-texte-2);font-variant-numeric:tabular-nums}
/* pastilles de stock */
.docv2 .chip-stock{
  display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:10px;
  font-size:11px;font-weight:500;
}
.docv2 .chip-stock::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.docv2 .chip-stock.s-ok{background:var(--f-succes);color:var(--t-succes)}
.docv2 .chip-stock.s-bas{background:var(--f-bronze);color:var(--t-bronze)}
.docv2 .chip-stock.s-vide{background:var(--f-alerte);color:var(--t-alerte)}

/* --- Skin docv2 du ClientPicker (même famille que le picker produit) --- */
.docv2 .cp-panel{
  background:var(--dgs-surface);border:1px solid var(--dgs-bordure);border-radius:var(--r-md);
  box-shadow:var(--sh-lg);
}
.docv2 .cp-vide{padding:12px;text-align:center;color:var(--dgs-texte-3);font-size:12.5px}
.docv2 .cp-item{
  padding:8px 11px;cursor:pointer;border-left:3px solid transparent;
  border-bottom:1px solid var(--dgs-bordure);
}
.docv2 .cp-item:last-child{border-bottom:none}
.docv2 .cp-item:hover,.docv2 .cp-item.cp-active{background:var(--dgs-survol);border-left-color:var(--dgs-vert)}
.docv2 .cp-item-nom{font-weight:500;color:var(--dgs-texte);font-size:13px}
.docv2 .cp-item-sub{font-size:11px;color:var(--dgs-texte-3);margin-top:2px;letter-spacing:.02em}
/* état « client sélectionné » (nom + croix) */
.docv2 .cp-selected{
  display:flex;align-items:center;gap:8px;height:31px;padding:0 6px 0 10px;
  border:1px solid var(--dgs-bordure);border-radius:var(--r-sm);background:var(--dgs-surface);
}
.docv2 .cp-selected-nom{
  flex:1;min-width:0;font-size:13px;font-weight:500;color:var(--dgs-texte);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.docv2 .cp-clear{
  width:24px;height:24px;border:none;background:transparent;color:var(--dgs-texte-3);
  border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
}
.docv2 .cp-clear:hover{background:var(--f-alerte);color:var(--t-alerte)}
.docv2 .cp-ro{font-size:13px;font-weight:500;color:var(--dgs-texte);padding:6px 0}

/* --- TOAST flottant (message d'info hors flux, auto-disparition ~4 s) --- */
.docv2 .doc-toast{
  position:fixed;top:74px;right:18px;z-index:1000;max-width:360px;
  display:flex;align-items:center;gap:8px;padding:11px 16px;border-radius:var(--r-md);
  background:var(--dgs-texte);color:#fff;font-size:13px;font-weight:500;
  box-shadow:var(--sh-lg);border-left:3px solid var(--dgs-vert);
  animation:docToastIn .28s ease-out;
}
.docv2 .doc-toast svg{color:#7BE0A6;flex-shrink:0}
@keyframes docToastIn{from{transform:translateY(-14px);opacity:0}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){.docv2 .doc-toast{animation:none}}

/* alerte prix minimum (ambre bronze, non bloquante) */
.docv2 .doc-alerte-prixmin{
  margin:0 0 10px;padding:8px 12px;border-radius:var(--r-md);
  background:var(--f-bronze);color:var(--t-bronze);font-size:12.5px;font-weight:500;
  border:1px solid #E0C9A8;
}
.docv2 .doc-cell-prixmin{background:var(--f-bronze);color:var(--t-bronze);border-radius:6px}

/* tableau des lignes (desktop) — style maquette borné à la carte produit */
.docv2 .doc-prod-card .crud-list{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.docv2 .doc-prod-card .crud-list thead th{
  background:var(--dgs-muted);font-size:11px;font-weight:500;color:var(--dgs-texte-2);
  letter-spacing:.02em;text-transform:uppercase;padding:9px 10px;white-space:nowrap;
  border-bottom:1px solid var(--dgs-bordure-forte);box-shadow:none;
}
.docv2 .doc-prod-card .crud-list thead th.crud-num{text-align:right}
.docv2 .doc-prod-card .crud-list tbody td{
  padding:0 10px;height:44px;border-bottom:1px solid var(--dgs-bordure);vertical-align:middle;
  background:var(--dgs-surface);transition:background .1s;color:var(--dgs-texte);
}
.docv2 .doc-prod-card .crud-list tbody tr:hover td{background:var(--dgs-survol)}
.docv2 .doc-prod-card .crud-list tbody tr:focus-within td{background:var(--dgs-highlight)}
.docv2 .doc-prod-card .crud-list tbody tr.doc-ligne-edit td{background:var(--dgs-highlight)}
.docv2 .doc-prod-card .crud-list tbody tr:last-child td{border-bottom:none}
.docv2 .doc-prod-card .crud-list td.doc-rank{
  padding-left:12px;border-left:3px solid transparent;color:var(--dgs-texte-3);
  font-size:11px;font-variant-numeric:tabular-nums;text-align:left;
}
.docv2 .doc-prod-card .crud-list tbody tr:hover td.doc-rank,
.docv2 .doc-prod-card .crud-list tbody tr:focus-within td.doc-rank,
.docv2 .doc-prod-card .crud-list tbody tr.doc-ligne-edit td.doc-rank{border-left-color:var(--dgs-vert)}
.docv2 .doc-prod-card .crud-list .cell-mono{font-variant-numeric:tabular-nums}
.docv2 .doc-prod-card .crud-list .doc-kv-slate{color:var(--dgs-texte-3)}
.docv2 .doc-prod-card .crud-list .doc-kv-marge-pos{color:var(--t-succes);font-weight:600}
.docv2 .doc-prod-card .crud-list .doc-kv-marge-neg{color:var(--t-alerte);font-weight:600}

/* inputs d'édition en place → look .cell (bordure invisible au repos, focus vert) */
.docv2 .doc-prod-card .crud-list .form-control,
.docv2 .doc-prod-card .crud-list .form-select{
  height:32px;border:1px solid var(--dgs-bordure);background:var(--dgs-surface);
  border-radius:var(--r-sm);padding:0 8px;font-size:13px;
}
.docv2 .doc-prod-card .crud-list .form-control:focus,
.docv2 .doc-prod-card .crud-list .form-select:focus{
  border-color:var(--dgs-vert);box-shadow:0 0 0 3px rgba(14,122,61,.12);
}

/* chip TVA */
.docv2 .doc-prod-card .crud-list td .tva-chip,
.docv2 .doc-prod-card .crud-list td .chip{
  display:inline-block;padding:2px 7px;border-radius:10px;font-size:11px;font-weight:500;
  background:var(--dgs-highlight);color:var(--dgs-vert);white-space:nowrap;
}

/* boutons d'action de ligne */
.docv2 .doc-prod-card .crud-list .icon-btn{
  width:28px;height:28px;border:none;background:transparent;border-radius:var(--r-sm);
  color:var(--dgs-texte-3);
}
.docv2 .doc-prod-card .crud-list .icon-btn-edit:hover{background:var(--dgs-highlight);color:var(--dgs-vert)}
.docv2 .doc-prod-card .crud-list .icon-btn-delete:hover{background:var(--f-alerte);color:var(--t-alerte)}

/* pied de tableau (ancien — conservé pour compat, plus rendu sur le BL) */
.docv2 .doc-prod-card .table-foot{
  background:var(--dgs-muted);border-top:1px solid var(--dgs-bordure-forte);
  padding:10px 13px;font-size:12.5px;color:var(--dgs-texte-2);font-variant-numeric:tabular-nums;
  border-radius:0 0 var(--r-lg) var(--r-lg);
}
.docv2 .doc-prod-card .table-foot strong{color:var(--dgs-vert)}

/* ============================================================================
   TABLEAU DES LIGNES v2 (maquette .grid-wrap/table) — édition en place « .cell »
   ============================================================================ */
.docv2 .doc-lignes-v2 tbody td{padding:0 4px;height:44px}
.docv2 .doc-lignes-v2 tbody td.doc-rank{padding-left:12px}
.docv2 .doc-lignes-v2 thead th{padding:9px 8px}
.docv2 .doc-lignes-v2 thead th.doc-th-c{text-align:center}
.docv2 .doc-lignes-v2 td.doc-td-c{text-align:center}
.docv2 .doc-lignes-v2 td.doc-td-act{text-align:center;padding:0 6px}

/* colonne Produit : désignation (.cell.desig) + référence dessous */
.docv2 .doc-lignes-v2 .doc-desig-wrap{display:flex;flex-direction:column;min-width:190px}
.docv2 .doc-lignes-v2 .doc-ligne-ref{font-size:10.5px;color:var(--dgs-texte-3);letter-spacing:.04em;padding-left:9px;margin-top:-2px}
.docv2 .doc-lignes-v2 .cell-ro.desig{font-weight:500;padding:0 8px}

/* .cell : bordure invisible au repos, bordure+fond au survol, focus vert halo */
.docv2 .doc-lignes-v2 .cell{
  width:100%;height:32px;border:1px solid transparent;background:transparent;
  border-radius:var(--r-sm);padding:0 8px;color:var(--dgs-texte);font-size:13px;outline:none;
  transition:border-color .12s,background .12s,box-shadow .12s;
}
.docv2 .doc-lignes-v2 .cell:hover{border-color:var(--dgs-bordure-forte);background:var(--dgs-surface)}
.docv2 .doc-lignes-v2 .cell:focus{border-color:var(--dgs-vert);background:var(--dgs-surface);box-shadow:0 0 0 3px rgba(14,122,61,.12)}
.docv2 .doc-lignes-v2 .cell.num{text-align:right;font-variant-numeric:tabular-nums}
.docv2 .doc-lignes-v2 .cell.desig{font-weight:500}
.docv2 .doc-lignes-v2 select.cell{cursor:pointer;padding:0 4px;text-align:center;text-align-last:center}

/* T8c — cellule Quantité : l'input et, SI le produit se vend au détail, le sélecteur d'unité.
   Sans vente au détail, aucun <select> n'est rendu : la cellule est celle d'avant T8c. */
.docv2 .doc-lignes-v2 .doc-qte-wrap{display:flex;gap:3px;align-items:center}
.docv2 .doc-lignes-v2 .doc-qte-wrap .cell.num{flex:1 1 auto;min-width:0}
.docv2 .doc-lignes-v2 select.cell.sel-unite{flex:0 0 auto;width:56px;font-size:11.5px;color:var(--dgs-texte-2)}
/* suffixe d'unité sur une ligne validée au détail */
.docv2 .doc-lignes-v2 .calc .unite-ro{font-size:11px;color:var(--dgs-texte-3);margin-left:2px}

/* cellules calculées (lecture seule) */
.docv2 .doc-lignes-v2 .calc{padding:0 8px;text-align:right;font-variant-numeric:tabular-nums;color:var(--dgs-texte-2)}
.docv2 .doc-lignes-v2 .calc-strong{padding:0 8px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--dgs-vert)}
.docv2 .doc-lignes-v2 .calc.doc-kv-slate{color:var(--dgs-texte-3);font-weight:400}
.docv2 .doc-lignes-v2 .calc-strong.doc-kv-marge-pos{color:var(--t-succes)}
.docv2 .doc-lignes-v2 .calc-strong.doc-kv-marge-neg{color:var(--t-alerte)}
.docv2 .doc-lignes-v2 .rem-ro{color:var(--dgs-texte-2);font-size:12px}

/* Net HT sous le prix minimum → ambre bronze (comportement inchangé, style seul) */
.docv2 .doc-lignes-v2 .calc.doc-cell-prixmin{background:var(--f-bronze);color:var(--t-bronze);border-radius:6px}

/* corbeille révélée au survol de la rangée (.row-actions) */
.docv2 .doc-lignes-v2 .row-actions{display:flex;justify-content:center;gap:2px;opacity:0;transition:opacity .12s}
.docv2 .doc-lignes-v2 tbody tr:hover .row-actions,
.docv2 .doc-lignes-v2 tbody tr:focus-within .row-actions{opacity:1}
.docv2 .doc-lignes-v2 .row-actions .icon-btn{width:27px;height:27px}

/* pied sticky (tfoot) : TOTAL N LIGNES + sommes Remise / Net HT / Net TTC */
.docv2 .doc-lignes-v2 tfoot td{
  position:sticky;bottom:0;background:var(--dgs-muted);
  border-top:1px solid var(--dgs-bordure-forte);height:42px;padding:0 8px;
  font-variant-numeric:tabular-nums;font-size:13px;
}
.docv2 .doc-lignes-v2 tfoot .doc-foot-lbl{
  font-size:11px;font-weight:500;color:var(--dgs-texte-2);text-transform:uppercase;
  letter-spacing:.02em;padding-left:12px;
}
.docv2 .doc-lignes-v2 tfoot .doc-foot-sum{text-align:right;font-weight:500;color:var(--dgs-texte)}
.docv2 .doc-lignes-v2 tfoot .doc-foot-ttc{font-weight:600;color:var(--dgs-vert)}
.docv2 .doc-lignes-v2 tfoot .doc-foot-sum.doc-kv-marge-pos{color:var(--t-succes)}
.docv2 .doc-lignes-v2 tfoot .doc-foot-sum.doc-kv-marge-neg{color:var(--t-alerte)}

/* ================= ALERTES ================= */
.docv2 .alert-success{
  background:var(--f-succes);border:1px solid #B9E7CC;color:var(--t-succes);
  border-radius:var(--r-md);
}
.docv2 .alert-danger{
  background:var(--f-alerte);border:1px solid #F1C2C2;color:var(--t-alerte);
  border-radius:var(--r-md);
}

/* ================= TRAÇABILITÉ / MENTIONS ================= */
.docv2 .trac-ligne{font-size:11.5px;color:var(--dgs-texte-3);margin-top:2px}
.docv2 .trac-ligne a{color:var(--dgs-vert)}

/* ================= MODALES (Modal partagé) — habillage doux ================= */
.docv2 .fpro-note{font-size:11.5px;color:var(--dgs-texte-2)}

/* ============================================================================
   MOBILE — on conserve la mécanique existante (cartes de ligne, totaux empilés,
   toggle « Plus de détails »). On adapte seulement quelques couleurs aux tokens.
   Le desktop maquette reste borné aux media-queries ci-dessus.
   ============================================================================ */
@media(max-width:768px){
  .docv2 .doc-total-ttc span:last-child{color:var(--dgs-vert)}
  .docv2 .doc-total-row .doc-red{color:var(--t-alerte)}
  .docv2 .doc-total-row .doc-green{color:var(--t-succes)}
  .docv2 .doc-detail-toggle{
    border:1px solid var(--dgs-bordure);background:var(--dgs-muted);border-radius:var(--r-md);
    color:var(--dgs-texte-2);
  }
}
