/* ==========================================================================
   Elysiom Content v2 — harmonisation légère inter-pages
   Charger après sidebar-v2.css.

   PRINCIPE : ce fichier ne redéfinit PAS les composants (cards, champs,
   boutons) que chaque page gère déjà. Il règle uniquement :
     1. Les variables CSS de layout (topbar-height, sidebar-width)
     2. La vieille topbar et sidebar navy (masquées / overridées par esv2)
     3. La typo Manrope uniforme
     4. Le fond de page et la grille layout
     5. Quelques classes utilitaires communes qui manquent sur certaines pages
   ========================================================================== */

/* ---- 1. Variables de layout globales ---- */
:root{
  --topbar-height:56px;
  --sidebar-width:248px;
  --navy:#0f4c5c;
  --navy-2:#1c6a78;
  --cta:#1a7f73;
  --cta-2:#16685f;
  --cta-soft:rgba(26,127,115,.10);
  --red:#d94b63;
  --red-soft:rgba(217,75,99,.10);
  --amber:#d98e2b;
  --amber-soft:rgba(217,142,43,.12);
  --green:#2f9e6f;
  --green-soft:rgba(47,158,111,.12);
  --bg:#eef1f4;
  --card:#fff;
  --text:#123840;
  --text-2:#355058;
  --muted:rgba(18,56,64,.62);
  --muted-2:rgba(18,56,64,.42);
  --line:rgba(18,56,64,.10);
  --line-2:rgba(18,56,64,.18);
  --shadow-sm:0 1px 2px rgba(8,31,37,.05),0 2px 6px rgba(8,31,37,.04);
  --shadow:0 10px 22px rgba(8,31,37,.09);
  --radius:12px;
  --font-ui:"Manrope","Avenir Next","Segoe UI",Arial,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,monospace;
}

/* ---- 2. Typo Manrope uniforme ---- */
html, body{
  font-family:var(--font-ui);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
button, input, select, textarea{ font-family:inherit; }

/* ---- 3. Fond de page ---- */
body{ background:var(--bg); color:var(--text); }

/* ---- 4. Layout grille (sidebar + main) ---- */
.layout{
  display:grid;
  grid-template-columns:var(--sidebar-width) 1fr;
  min-height:calc(100vh - var(--topbar-height));
}

/* ---- 5. Ancienne topbar legacy — réduit à 56px et gradient propre ---- */
/* Sprint BS+1 motif 37 (2026-05-03) — selector enrichi pour exclure aussi
   `.topbar--v2` et `.pe-topbar` (déjà stylées via snav-v2.css + portage-edit-v2.css,
   avec logo 36px et padding 16px choisis par l'utilisateur). Cette règle ne
   s'applique donc qu'aux pages legacy non encore migrées. */
.topbar:not(.esv2-tb):not(.topbar--v2):not(.pe-topbar){
  height:56px;
  background:linear-gradient(90deg,var(--navy),var(--navy-2));
  padding:0 18px;
  box-shadow:0 4px 12px rgba(0,0,0,.10);
  position:sticky;
  top:0;
  z-index:30;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.topbar:not(.esv2-tb):not(.topbar--v2):not(.pe-topbar) .brand-img{ height:28px; width:auto; }

/* ---- 6. Ancienne sidebar navy legacy — masquée si esv2 présent ---- */
/* Idem : on n'écrase pas notre `.snav--v2` (déjà stylée). */
body.esv2-active .sidebar:not(.esv2-side):not(.snav--v2){ display:none !important; }

/* ---- 7. Zone principale de contenu ---- */
.main{ padding:18px 24px 48px; min-width:0; }

/* ---- 8. Breadcrumb (classe commune à toutes les pages) ---- */
.breadcrumb{
  font-size:12px; color:var(--muted);
  display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  margin-bottom:14px;
}
.breadcrumb a{ color:var(--muted); }
.breadcrumb a:hover{ color:var(--text); }
.breadcrumb .sep{ opacity:.4; }
.breadcrumb b, .breadcrumb strong{ color:var(--text); font-weight:700; }

/* ---- 9. Badge utilitaire (absent de certaines pages) ---- */
.badge{
  display:inline-flex; align-items:center; gap:5px;
  height:21px; padding:0 8px; border-radius:999px;
  font-size:10.5px; font-weight:700; border:1px solid transparent;
  white-space:nowrap;
}
.badge .dot{ width:6px; height:6px; border-radius:999px; background:currentColor; }
.badge--green{ background:var(--green-soft); color:#166e4c; border-color:rgba(47,158,111,.22); }
.badge--amber{ background:var(--amber-soft); color:#8a5a10; border-color:rgba(217,142,43,.22); }
.badge--red  { background:var(--red-soft);   color:#9b2334; border-color:rgba(217,75,99,.22); }
.badge--teal { background:var(--cta-soft);   color:var(--cta-2); border-color:rgba(26,127,115,.18); }
.badge--grey { background:rgba(18,56,64,.06);color:var(--muted); border-color:var(--line); }

/* ---- 10. Save pill (état brouillon / enregistrement) ---- */
.save-pill{
  display:inline-flex; align-items:center; gap:6px;
  height:27px; padding:0 10px;
  background:var(--green-soft); color:#166e4c;
  border:1px solid rgba(47,158,111,.25); border-radius:999px;
  font-size:11px; font-weight:700;
}
.save-pill.saving{ background:var(--amber-soft); color:#8a5a10; border-color:rgba(217,142,43,.25); }
.save-pill .sp-dot{ width:6px; height:6px; border-radius:999px; background:currentColor; }
.save-pill.saving .sp-dot{ animation:cv2-pulse 1s infinite; }
@keyframes cv2-pulse{ 0%,100%{opacity:1} 50%{opacity:.3} }

/* ---- 11. Mono ---- */
.mono, code{ font-family:var(--font-mono); }
code{
  font-size:.9em; background:rgba(18,56,64,.06);
  padding:1px 5px; border-radius:4px;
}

/* ---- 12. Divider ---- */
.divider{ height:1px; background:var(--line); margin:16px 0; border:0; }

/* ---- 13. Sticky content bar (barres de filtre en haut du main) ---- */
.sticky-bar{
  position:sticky;
  top:var(--topbar-height);
  z-index:8;
  background:rgba(238,241,244,.94);
  backdrop-filter:blur(10px);
  padding:10px 0;
  margin-bottom:10px;
  display:flex; align-items:center; justify-content:space-between; gap:14px;
}

/* ---- 14. Empty state ---- */
.empty-state{
  padding:40px 20px; text-align:center; color:var(--muted);
  display:flex; flex-direction:column; align-items:center; gap:10px;
}
.empty-state svg{ width:34px; height:34px; opacity:.35; }
.empty-state__title{ font-weight:800; font-size:14px; color:var(--text-2); }
.empty-state__sub{ font-size:12.5px; max-width:360px; line-height:1.5; }

/* ==========================================================================
   16. Table v2 — Modèle commun pour les listes admin
   --------------------------------------------------------------------------
   Sprint BS+1 motif 39 (2026-05-03) — Tableau standardisé pour les listes
   admin (prospects, exploitants, opérations, structures, investisseurs).
   Caractéristiques :
     - Headers visibles : font 800 + uppercase + letter-spacing + fond #f7f8fa
     - En-têtes centrés horizontalement
     - Filter row sous les headers (input par colonne)
     - Sort cliquable via icône ▲▼
     - Compact (lignes 36px, font 12px)
     - Câblé via JS table-v2.js (sort + filter live + persistance localStorage)
   ========================================================================== */

.tbl-v2{
  width:100%;border-collapse:collapse;
  background:var(--card,#fff);
  border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 2px rgba(8,31,37,.05);
  overflow:hidden;
  font-size:12px;
  font-family:var(--font-ui);
}

/* =====================================================================
   Wizard footer — pattern unifié pour les wizards multi-étapes
   (operation-refonte / portage-edit / exploitant-create-v2 / etc.)
   Sprint BS+1 motif 58 (2026-05-05).

   Layout :
     [Annuler] [Précédent]   ............   [Enregistrer brouillon] [Suivant ▶ | Valider ✓]
       └ ghost rouge  └ ghost gris    spacer   └ ghost teal           └ primary teal plein

   Logique :
     - Annuler : sortie sans persister les frappes des 700 dernières ms
       (l'auto-save reste actif). Modale de confirmation si modifications
       non-saved détectées.
     - Précédent : navigation back ; caché à l'étape 1.
     - Enregistrer brouillon : sauvegarde explicite (statut reste BROUILLON).
     - Suivant : navigation forward (étapes < N).
     - Valider : sauvegarde + transition statut → ACTIVE (étape N seulement).

   Le pattern est responsive : sur mobile (max-width 720px), les 4 boutons
   s'empilent verticalement avec les primaires en haut.
   ===================================================================== */
.wizard-footer{
  display:flex;align-items:center;gap:8px;
  padding:14px 18px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:0 1px 2px rgba(8,31,37,.05);
  margin-top:14px;
  font-family:var(--font-ui);
  flex-wrap:wrap;
}
.wizard-footer__step{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:700;color:var(--cta-2);
  letter-spacing:.02em;text-transform:uppercase;
  padding:4px 10px;
  background:rgba(26,127,115,.08);
  border:1px solid rgba(26,127,115,.18);
  border-radius:999px;
  white-space:nowrap;
}
.wizard-footer__title{
  font-size:13px;font-weight:600;color:var(--text-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.wizard-footer__spacer{flex:1 1 auto;min-width:8px;}
.wizard-footer__group{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.wizard-footer__group--left{order:1;}
.wizard-footer__group--right{order:2;margin-left:auto;}

/* Bouton générique du wizard (héritera de la palette globale) */
.wizard-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px;
  font-size:12.5px;font-weight:700;font-family:var(--font-ui);
  border-radius:8px;cursor:pointer;
  transition:background .12s,border-color .12s,color .12s,box-shadow .12s;
  white-space:nowrap;
  line-height:1.2;
  min-height:36px;
  border:1px solid transparent;
  background:transparent;color:var(--text);
}
.wizard-btn:disabled{opacity:.45;cursor:not-allowed;}
.wizard-btn:focus-visible{outline:2px solid var(--cta);outline-offset:2px;}

/* Annuler — ghost rouge subtil (action destructive de sortie) */
.wizard-btn--cancel{
  color:#9b2334;
  background:transparent;
  border-color:rgba(217,75,99,.28);
}
.wizard-btn--cancel:hover:not(:disabled){
  background:rgba(217,75,99,.08);
  border-color:rgba(217,75,99,.55);
  color:#7a1a26;
}

/* Précédent — ghost neutre */
.wizard-btn--prev{
  color:var(--muted);
  background:transparent;
  border-color:var(--line);
}
.wizard-btn--prev:hover:not(:disabled){
  background:rgba(18,56,64,.04);
  border-color:rgba(18,56,64,.18);
  color:var(--text);
}

/* Enregistrer brouillon — ghost teal */
.wizard-btn--draft{
  color:var(--cta-2);
  background:rgba(26,127,115,.06);
  border-color:rgba(26,127,115,.28);
}
.wizard-btn--draft:hover:not(:disabled){
  background:rgba(26,127,115,.12);
  border-color:rgba(26,127,115,.55);
}

/* Suivant / Valider — primary teal plein */
.wizard-btn--primary{
  color:#fff;
  background:var(--cta);
  border-color:var(--cta);
}
.wizard-btn--primary:hover:not(:disabled){
  background:var(--cta-2);
  border-color:var(--cta-2);
  box-shadow:0 2px 8px rgba(26,127,115,.25);
}

.wizard-btn__ico{
  display:inline-flex;align-items:center;justify-content:center;
  width:14px;height:14px;font-size:11px;line-height:1;
}
.wizard-btn__ico svg{width:14px;height:14px;}

/* Mobile : groupes empilés verticalement */
@media (max-width:720px){
  .wizard-footer{flex-direction:column;align-items:stretch;}
  .wizard-footer__group{justify-content:stretch;}
  .wizard-footer__group .wizard-btn{flex:1;justify-content:center;}
  .wizard-footer__spacer{display:none;}
  .wizard-footer__group--right{order:1;}  /* primaires en haut sur mobile */
  .wizard-footer__group--left{order:2;}
}

/* Headers : centrés, gras, fond marqué (motif 39).
   Sprint BS+1 motif 51 (2026-05-04) — harmonisation typographique :
   - Police forcée à var(--font-ui) pour s'aligner sur le reste de l'UI
     (certaines pages héritaient encore de la police inline / unified-all-pages).
   - font-size: 12px uniforme (avant : 11px ; bumpé pour matcher le contenu
     et éviter qu'un th paraisse plus petit que sa cellule sur certains thèmes).
   - font-weight: 800 (gras prononcé, demandé par user).
   - text-align: center + vertical-align: middle (centré dans les 2 axes).
   - !important pour neutraliser les surcharges des feuilles legacy
     (admin-users-profiles.css, validation-review.css, etc.). */
.tbl-v2 thead th{
  background:#f7f8fa;
  padding:10px 8px;
  text-align:center !important;
  vertical-align:middle !important;
  font-family:var(--font-ui) !important;
  font-size:12px !important;
  font-weight:800 !important;
  letter-spacing:.04em;text-transform:uppercase;
  color:var(--text);
  border-bottom:2px solid var(--line);
  position:sticky;top:0;z-index:2;
  user-select:none;
}
.tbl-v2 thead th.tbl-v2__sortable{cursor:pointer;transition:background .12s;}
.tbl-v2 thead th.tbl-v2__sortable:hover{background:rgba(18,56,64,.06);}
.tbl-v2__sort-ico{
  display:inline-block;margin-left:4px;
  font-size:9px;line-height:1;color:var(--muted-2);
  vertical-align:middle;
}
/* Sprint BS+1 motif 50 (2026-05-04) — icône ▲/▼ invisible par défaut.
   Visible uniquement quand la colonne est activement triée. Le span reste
   présent dans le DOM (pour réserver l'espace si besoin) mais sans contenu. */
.tbl-v2 thead th:not(.is-sort-asc):not(.is-sort-desc) .tbl-v2__sort-ico{
  display:none;
}
.tbl-v2 thead th.is-sort-asc .tbl-v2__sort-ico,
.tbl-v2 thead th.is-sort-desc .tbl-v2__sort-ico{color:var(--cta);}
.tbl-v2 thead th.tbl-v2__col-narrow{width:36px;padding:8px 4px;}
.tbl-v2 thead th.tbl-v2__col-actions{width:90px;}

/* Filtre Excel-style : ▼ dans le header → popup checkboxes des valeurs distinctes
   (motif 39 v2) — remplace l'ancienne filter row sous les headers. */
.tbl-v2__filter-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;margin-left:4px;padding:0;
  background:transparent;border:0;border-radius:3px;
  font-size:9px;color:var(--muted-2);cursor:pointer;
  transition:background .12s,color .12s;
  vertical-align:middle;
}
.tbl-v2__filter-btn:hover{background:rgba(18,56,64,.08);color:var(--text);}
.tbl-v2__filter-btn.is-active{color:var(--cta);background:rgba(26,127,115,.12);}
.tbl-v2__filter-btn svg{width:11px;height:11px;}

.tbl-v2__filter-popup{
  position:fixed;z-index:9999;
  min-width:220px;max-width:340px;
  background:#fff;border:1px solid var(--line);
  border-radius:10px;
  box-shadow:0 12px 32px rgba(8,31,37,.18);
  font-family:var(--font-ui);font-size:12px;
  display:flex;flex-direction:column;
  overflow:hidden;
}
.tbl-v2__filter-popup-search{
  padding:8px 10px;border-bottom:1px solid var(--line);
}
.tbl-v2__filter-popup-search input{
  width:100%;height:26px;padding:0 8px;
  border:1px solid var(--line);border-radius:5px;
  font-size:11.5px;font-family:inherit;
}
.tbl-v2__filter-popup-search input:focus{
  outline:none;border-color:var(--cta);
  box-shadow:0 0 0 2px rgba(26,127,115,.12);
}
.tbl-v2__filter-popup-actions{
  display:flex;gap:6px;padding:6px 10px;
  border-bottom:1px solid var(--line);
  background:#fafbfc;
}
.tbl-v2__filter-popup-actions button{
  flex:1;padding:4px 8px;
  background:transparent;border:1px solid var(--line);
  border-radius:5px;font-size:10.5px;font-weight:700;
  color:var(--text-2);cursor:pointer;font-family:inherit;
}
.tbl-v2__filter-popup-actions button:hover{
  background:rgba(18,56,64,.04);color:var(--text);
}
.tbl-v2__filter-popup-list{
  max-height:240px;overflow-y:auto;
  padding:4px 0;
}
.tbl-v2__filter-popup-item{
  display:flex;align-items:center;gap:8px;
  padding:5px 10px;cursor:pointer;
  font-size:11.5px;color:var(--text);
}
.tbl-v2__filter-popup-item:hover{background:rgba(18,56,64,.04);}
.tbl-v2__filter-popup-item input[type="checkbox"]{
  margin:0;flex:0 0 auto;cursor:pointer;
  accent-color:var(--cta);
}
.tbl-v2__filter-popup-item-label{
  flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tbl-v2__filter-popup-item-count{
  font-family:var(--font-mono);font-size:10px;color:var(--muted-2);
}
.tbl-v2__filter-popup-empty{
  padding:14px 10px;text-align:center;color:var(--muted);font-size:11px;font-style:italic;
}
.tbl-v2__filter-popup-foot{
  display:flex;gap:6px;padding:8px 10px;
  border-top:1px solid var(--line);
}
.tbl-v2__filter-popup-foot button{
  flex:1;height:28px;
  border:0;border-radius:6px;
  font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit;
}
.tbl-v2__filter-popup-foot button.is-primary{
  background:var(--cta);color:#fff;
}
.tbl-v2__filter-popup-foot button.is-primary:hover{background:var(--cta-2);}
.tbl-v2__filter-popup-foot button.is-ghost{
  background:transparent;border:1px solid var(--line);color:var(--text-2);
}
.tbl-v2__filter-popup-foot button.is-ghost:hover{background:rgba(18,56,64,.04);}

/* Body : compact, hover, click */
.tbl-v2 tbody td{
  padding:8px 10px;
  border-bottom:1px solid rgba(18,56,64,.05);
  /* Sprint BS+1 motif 49 (2026-05-04) — séparation verticale entre cellules
     pour matcher la séparation horizontale (demande utilisateur). */
  border-right:1px solid rgba(18,56,64,.05);
  height:36px;line-height:1.3;
  vertical-align:middle;
  color:var(--text);
}
.tbl-v2 tbody td:last-child{border-right:0;}
.tbl-v2 tbody tr:last-child td{border-bottom:0;}
/* Sprint BS+1 motif 49 — séparation verticale entre cellules d'en-tête. */
.tbl-v2 thead th{border-right:1px solid var(--line);}
.tbl-v2 thead th:last-child{border-right:0;}
.tbl-v2 tbody tr[data-row-clickable]{cursor:pointer;transition:background .12s;}
.tbl-v2 tbody tr[data-row-clickable]:hover{background:rgba(18,56,64,.03);}
.tbl-v2 tbody tr.is-selected{background:rgba(26,127,115,.06);}

/* Cellules typées */
.tbl-v2__td-ref{font-family:var(--font-mono);font-size:10.5px;color:var(--muted);white-space:nowrap;}
.tbl-v2__td-name{font-weight:700;color:var(--text);}
.tbl-v2__td-mail{font-size:11px;color:var(--text-2);}
.tbl-v2__td-actions{text-align:right;white-space:nowrap;}
.tbl-v2__td-center{text-align:center;}

/* Bouton action de cellule (Ouvrir, Examiner, etc.) */
.tbl-v2__action{
  display:inline-flex;align-items:center;gap:3px;
  padding:3px 9px;border-radius:5px;
  background:var(--cta);color:#fff;
  font-size:11px;font-weight:700;text-decoration:none;
  border:0;cursor:pointer;font-family:inherit;
}
.tbl-v2__action:hover{background:var(--cta-2);}

/* Ligne vide (no rows) */
.tbl-v2__empty-row td{padding:32px 14px;text-align:center;color:var(--muted);font-size:12px;}

/* Pas de scroll vertical par défaut — wrap externe gère */
.tbl-v2-wrap{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 2px rgba(8,31,37,.05);
  overflow:auto;max-height:calc(100vh - 280px);
}
.tbl-v2-wrap .tbl-v2{box-shadow:none;border:0;border-radius:0;}

/* ==========================================================================
   17. Alert banners (absent de certaines pages)
   ========================================================================== */
/* ---- 15. Alert banners (absent de certaines pages) ---- */
.alert{
  display:flex; gap:10px; align-items:flex-start;
  padding:11px 14px; border-radius:10px; font-size:12.5px; line-height:1.5;
}
.alert--info   { background:rgba(14,99,143,.06); border:1px solid rgba(14,99,143,.18); color:#0e4f6f; }
.alert--warn   { background:var(--amber-soft);   border:1px solid rgba(217,142,43,.25); color:#8a5a10; }
.alert--error  { background:var(--red-soft);     border:1px solid rgba(217,75,99,.22);  color:#9b2334; }
.alert--success{ background:var(--green-soft);   border:1px solid rgba(47,158,111,.25); color:#166e4c; }
.alert svg{ flex:0 0 auto; width:15px; height:15px; margin-top:1px; }
.alert b{ font-weight:800; }

/* ==========================================================================
   18. Dialog system — A2Z.ui.confirm / A2Z.ui.alert
   --------------------------------------------------------------------------
   Sprint BS+1 motif 62 (2026-05-05) — Mutualized modal dialog replacing
   native browser confirm()/alert(). Styled to match the design system.
   Rendered by assets/js/modules/ui-dialog.js (loaded globally).
   ========================================================================== */

.a2z-dlg-backdrop{
  position:fixed;inset:0;z-index:99990;
  background:rgba(8,31,37,.45);
  backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;
  animation:a2zDlgFadeIn .15s ease-out;
}
@keyframes a2zDlgFadeIn{ from{opacity:0;} to{opacity:1;} }

.a2z-dlg-card{
  background:#fff;
  border-radius:14px;
  box-shadow:0 20px 60px rgba(8,31,37,.25),0 4px 12px rgba(8,31,37,.08);
  min-width:340px;max-width:480px;width:90vw;
  font-family:var(--font-ui);
  animation:a2zDlgSlideUp .18s ease-out;
  overflow:hidden;
}
@keyframes a2zDlgSlideUp{ from{transform:translateY(12px);opacity:.5;} to{transform:translateY(0);opacity:1;} }

.a2z-dlg-head{
  display:flex;align-items:center;gap:10px;
  padding:18px 22px 0;
}
.a2z-dlg-head__ico{
  width:36px;height:36px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  flex:0 0 auto;font-size:18px;
}
.a2z-dlg-head__ico--warn{background:var(--amber-soft);color:var(--amber);}
.a2z-dlg-head__ico--info{background:rgba(14,99,143,.08);color:#0e638f;}
.a2z-dlg-head__ico--danger{background:var(--red-soft);color:var(--red);}
.a2z-dlg-head__ico--success{background:var(--green-soft);color:var(--green);}
.a2z-dlg-title{
  font-size:15px;font-weight:800;color:var(--text);margin:0;line-height:1.3;
}

.a2z-dlg-body{
  padding:14px 22px 22px;
  font-size:13px;line-height:1.6;color:var(--text-2);
  white-space:pre-line;
}

.a2z-dlg-actions{
  display:flex;align-items:center;justify-content:flex-end;gap:8px;
  padding:0 22px 18px;
}
.a2z-dlg-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:34px;padding:0 18px;
  border:0;border-radius:8px;
  font-size:12.5px;font-weight:700;font-family:var(--font-ui);
  cursor:pointer;transition:background .12s,box-shadow .12s;
}
.a2z-dlg-btn:focus-visible{outline:2px solid var(--cta);outline-offset:2px;}

.a2z-dlg-btn--cancel{
  background:#f2f3f5;color:var(--text-2);
}
.a2z-dlg-btn--cancel:hover{background:#e8eaed;}

.a2z-dlg-btn--ok{
  background:var(--cta);color:#fff;
}
.a2z-dlg-btn--ok:hover{background:var(--cta-2);}

.a2z-dlg-btn--danger{
  background:var(--red);color:#fff;
}
.a2z-dlg-btn--danger:hover{background:#c03e54;}


/* ============================================================
   Brand logo split (motif 64 — 2026-05-05)
   Réutilisable sur les pages avec topbar custom (operation-refonte,
   exploitant-create-v2, portage-edit, parcours-prospect-pp) qui ne
   passent pas par le snav-v2 .brand__logo-split.
   Symbole + wordmark (texte) à 60% pour cohérence avec snav-v2.
   ============================================================ */
.brand-logo-split{
  display:inline-flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
}
.brand-logo-split .brand-logo-symbol{
  height:36px;
  width:auto;
  display:block;
}
.brand-logo-split .brand-logo-wordmark{
  height:26px; /* -40% from horizontal logo (was ~44px) */
  width:auto;
  display:block;
}


/* ============================================================
   page-head-card (motif 65 — 2026-05-05)
   Banner d'en-tête mutualisé : icône à gauche, crumb + titre + meta KPIs
   au centre, actions à droite. Utilisé sur Pipeline, Dashboard, et
   réplique le style des pages "Mes prospects / Mes investisseurs".
   ============================================================ */
.page-head-card{
  background:#fff;
  border:1px solid rgba(11,27,58,.10);
  border-radius:14px;
  box-shadow:0 4px 12px rgba(9,20,41,.05);
  padding:14px 18px;
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.page-head-card__ico{
  width:46px;
  height:46px;
  border-radius:12px;
  background:linear-gradient(135deg, #0b1b3a, #1a7f73);
  color:#fff;
  display:grid;
  place-items:center;
  flex:0 0 auto;
}
.page-head-card__ico svg{ width:22px; height:22px; stroke-width:2; }
.page-head-card__main{ flex:1; min-width:220px; }
.page-head-card__crumb{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:rgba(11,27,58,.55);
  font-weight:700;
  margin-bottom:2px;
}
.page-head-card__title{
  font-size:19px;
  font-weight:800;
  letter-spacing:-.015em;
  color:#0b1b3a;
  margin:0;
  line-height:1.2;
}
.page-head-card__meta{
  display:flex;
  gap:14px;
  flex-wrap:wrap;
  font-size:12px;
  color:rgba(11,27,58,.65);
  margin-top:4px;
}
.page-head-card__meta b{ color:#0b1b3a; font-weight:800; }
.page-head-card__meta-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:3px 10px;
  border-radius:999px;
  background:rgba(26,127,115,.07);
  font-weight:700;
  color:#0b1b3a;
  font-size:11.5px;
}
.page-head-card__meta-pill--amber{ background:rgba(245,158,11,.08); color:#b45309; }
.page-head-card__meta-pill--orange{ background:rgba(234,88,12,.08); color:#9a3412; }
.page-head-card__meta-pill--red{ background:rgba(220,38,38,.07); color:#991b1b; }
.page-head-card__meta-pill--teal{ background:rgba(26,127,115,.08); color:#115e59; }
.page-head-card__right{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}


/* ============================================================
   tbl-v2-light-header-override (motif 68 — 2026-05-06)
   Force le header gris clair des tables tbl-v2 même quand le legacy
   tableEnhancer y a injecté la classe a2z-te-table (qui sinon rend
   un header navy gradient via unified-all-pages.css).
   ============================================================ */
.tbl-v2.a2z-te-table thead th,
.tbl-v2 thead th{
  background:#f7f8fa !important;
  color:rgba(18, 56, 64, 0.72) !important;
  border-bottom:1px solid rgba(18, 56, 64, 0.10) !important;
  border-right:1px solid rgba(18, 56, 64, 0.06) !important;
  border-radius:0 !important;
  font-weight:800 !important;
  font-size:12px !important;
  letter-spacing:.04em !important;
  text-transform:uppercase !important;
}
.tbl-v2.a2z-te-table thead th:last-child,
.tbl-v2 thead th:last-child{
  border-right:0 !important;
}


/* ============================================================
   tbl-v2-uniform-cells (motif 69 — 2026-05-06)
   Police + taille mutualisées pour TOUS les tableaux tbl-v2 du projet
   (CGP, admin, public). Override les variations locales pour un rendu
   uniforme. Headers (thead th) restent inchangés (gras, gris clair).
   ============================================================ */
.tbl-v2 tbody td{
  font-family:'Manrope', system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif !important;
  font-size:12.5px !important;
  font-weight:500 !important;
  color:rgba(11,27,58,.85) !important;
  line-height:1.45 !important;
  padding:10px 14px !important;
}
/* Cellules mono (chiffres, IDs, monnaies) — légèrement plus petit pour
   compenser la largeur naturelle des glyphes mono. */
.tbl-v2 tbody td.cgp-tbl__mono,
.tbl-v2 tbody td.tbl-v2__mono,
.tbl-v2 tbody td .ppls-tbl-id,
.tbl-v2 tbody td .cgp-tbl__id{
  font-family:'JetBrains Mono', ui-monospace, 'SF Mono', Consolas, monospace !important;
  font-size:12px !important;
  font-weight:600 !important;
  letter-spacing:-.01em !important;
  color:rgba(11,27,58,.85) !important;
}
/* Liens et émails dans les cellules — héritent de la même police mais
   restent visuellement liens (couleur teal). */
.tbl-v2 tbody td a{
  font-family:inherit !important;
  font-size:inherit !important;
  font-weight:inherit !important;
}
/* Empty/loading rows — texte centré, plus discret. */
.tbl-v2 tbody td.cgp-tbl__empty,
.tbl-v2 tbody td.ppls-tbl-empty,
.tbl-v2 tbody td.tbl-v2__empty{
  font-style:italic;
  color:rgba(11,27,58,.5) !important;
  text-align:center !important;
  padding:24px 14px !important;
}


/* tbl-v2-name-override (motif 70) — Names in cells should not be bold,
   they should match the rest of the table content. */
.tbl-v2 tbody td .cgp-tbl__name,
.tbl-v2 tbody td .ppls-tbl-name,
.cgp-tbl tbody td .cgp-tbl__name{
  font-weight:500 !important;
  font-size:12.5px !important;
}
