/* ======================================================================
   NEXUS PREMIUM — Kit graphique global (Apple / Air France La Première)
   ======================================================================
   Référence visuelle : page « Développement Commercial » / Vue globale.
   Charte CEO (mai 2026) : Teal + Obsidian + Cormorant Garamond + Montserrat.
   Toutes les pages héritent de ces utilitaires .nx-* — zéro divergence.
   ====================================================================== */

/* ─── Variables locales : finesse / espacement / motion premium ───────── */
:root {
  --nx-line: rgba(255, 255, 255, 0.06);
  --nx-line-strong: rgba(255, 255, 255, 0.10);
  --nx-track: rgba(255, 255, 255, 0.04);
  --nx-elevate: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 8px 24px rgba(0, 0, 0, 0.18);
  --nx-elevate-hover: 0 1px 0 rgba(255, 255, 255, 0.04) inset, 0 14px 36px rgba(0, 0, 0, 0.28);
  --nx-radius-xs: 4px;
  --nx-radius-sm: 8px;
  --nx-radius-md: 12px;
  --nx-radius-lg: 16px;
  --nx-radius-pill: 999px;
  --nx-ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --nx-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --nx-dur-fast: 180ms;
  --nx-dur: 260ms;
  --nx-dur-slow: 420ms;
}
[data-theme="light"] {
  --nx-line: rgba(11, 13, 13, 0.08);
  --nx-line-strong: rgba(11, 13, 13, 0.14);
  --nx-track: rgba(11, 13, 13, 0.05);
  --nx-elevate: 0 1px 0 rgba(255, 255, 255, 0.4) inset, 0 8px 24px rgba(11, 13, 13, 0.06);
  --nx-elevate-hover: 0 1px 0 rgba(255, 255, 255, 0.5) inset, 0 14px 36px rgba(11, 13, 13, 0.10);
}

/* ─── Typographie premium (Apple / La Première) ──────────────────────── */
.nx-display     { font-family: 'Cormorant Garamond', serif; font-weight: 600; letter-spacing: -0.01em; }
.nx-serif       { font-family: 'Cormorant Garamond', serif; }
.nx-sans        { font-family: 'Montserrat', sans-serif; }
.nx-eyebrow     { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--txm); }
.nx-h1          { font-family: 'Cormorant Garamond', serif; font-size: 38px; font-weight: 600; line-height: 1.1; letter-spacing: -0.015em; color: var(--txt); }
.nx-h2          { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 600; line-height: 1.15; letter-spacing: -0.01em; color: var(--txt); }
.nx-h3          { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 600; line-height: 1.2; color: var(--txt); }
.nx-h4          { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--txt); }
.nx-lead        { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; color: var(--txm); line-height: 1.55; }
.nx-body        { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 400; line-height: 1.55; color: var(--txt); }
.nx-caption     { font-family: 'Montserrat', sans-serif; font-size: 11px; color: var(--txm); }
.nx-mono        { font-family: 'Montserrat', sans-serif; font-variant-numeric: tabular-nums; }

/* ─── Montants tabulaires (lisibilité chiffre par chiffre) ───────────────
   RÈGLE CEO (mai 2026) :
   - Cormorant Garamond  → titres, eyebrow, KPI isolés grand format, dates
                            highlightées (cf. capture « 20 mai 2026 »).
   - Montserrat tabular  → MONTANTS en tableau/liste/colonne (lignes de
                            virements, listes de paiements, colonnes
                            facturation), IBAN, hash, n° techniques.
   Utiliser systématiquement .nx-amount sur les TD/SPAN de montants
   répétés (3 lignes ou plus alignées). */
.nx-amount {
  font-family: 'Outfit', sans-serif;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1, "lnum" 1;
  letter-spacing: 0;
  font-weight: 300;
  color: var(--txt);
  white-space: nowrap;
}
.nx-amount--sm     { font-size: 13px; }
.nx-amount--md     { font-size: 14px; }
.nx-amount--lg     { font-size: 17px; font-weight: 300; }
.nx-amount--strong { font-weight: 400; color: var(--txt); }
.nx-amount--gold   { color: var(--gold); font-weight: 300; }
.nx-amount--teal   { color: var(--teal); font-weight: 300; }
.nx-amount--muted  { color: var(--txm); font-weight: 300; }

/* ─── Panneaux & sections ────────────────────────────────────────────── */
.nx-panel {
  background: var(--s1);
  border: 1px solid var(--nx-line);
  border-top: 1px solid rgba(34, 118, 102, 0.35);
  border-radius: var(--nx-radius-md);
  padding: 28px 32px;
  margin: 16px 0;
  position: relative;
  box-shadow: var(--nx-elevate);
  transition: box-shadow var(--nx-dur) var(--nx-ease);
}
.nx-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 80px;
  background: linear-gradient(180deg, rgba(34, 118, 102, 0.05), transparent);
  border-radius: var(--nx-radius-md) var(--nx-radius-md) 0 0;
  pointer-events: none;
}
.nx-panel:hover { box-shadow: var(--nx-elevate-hover); }
.nx-panel--flat { border-top-color: var(--nx-line); box-shadow: none; padding: 20px 24px; }
.nx-panel--flat::before { display: none; }
.nx-panel--inset { background: var(--s2); border-color: var(--nx-line); padding: 20px 24px; }
.nx-panel--inset::before { display: none; }

.nx-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 24px; position: relative; z-index: 1; }
.nx-panel-title { display: flex; align-items: center; gap: 12px; font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 600; color: var(--txt); letter-spacing: -0.01em; }
.nx-panel-title-icon { color: var(--teal); opacity: 0.85; display: inline-flex; }
.nx-panel-actions { display: flex; align-items: center; gap: 8px; }

.nx-section { padding: 24px 32px; position: relative; }
.nx-section + .nx-section { border-top: 1px solid var(--nx-line); }

/* ─── KPI Cards (gabarit "Vue globale" promu en standard) ────────────── */
.nx-kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 14px;
  position: relative;
  z-index: 1;
}
.nx-kpi-grid--tight { gap: 10px; }
.nx-kpi-grid--lg { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }

.nx-kpi {
  position: relative;
  background: var(--s2);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius-sm);
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow: hidden;
  transition: transform var(--nx-dur) var(--nx-ease), border-color var(--nx-dur) var(--nx-ease), box-shadow var(--nx-dur) var(--nx-ease);
}
.nx-kpi::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--teal) 50%, transparent 100%);
  opacity: 0.55;
}
.nx-kpi:hover {
  transform: translateY(-2px);
  border-color: var(--nx-line-strong);
  box-shadow: 0 12px 32px rgba(34, 118, 102, 0.08);
}
.nx-kpi-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.nx-kpi-icon {
  width: 32px; height: 32px;
  border-radius: var(--nx-radius-xs);
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(34, 118, 102, 0.08);
  color: var(--teal);
  opacity: 0.85;
}
.nx-kpi-label {
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txm);
  line-height: 1.25;
}
.nx-kpi-value {
  font-family: 'Cormorant Garamond', serif;
  font-size: 38px;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--txt);
  font-variant-numeric: tabular-nums;
}
.nx-kpi-value--sm { font-size: 28px; }
.nx-kpi-value--xs { font-size: 22px; }
.nx-kpi-sub {
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  color: var(--txm);
  font-weight: 400;
}
.nx-kpi-trend { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; }
.nx-kpi-trend--up   { color: var(--grn); }
.nx-kpi-trend--down { color: var(--red); }
.nx-kpi-trend--flat { color: var(--txm); }

.nx-kpi--teal  { }
.nx-kpi--teal  .nx-kpi-value { color: var(--teal); }
.nx-kpi--gold  .nx-kpi-icon  { background: rgba(201, 168, 76, 0.10); color: var(--gold); }
.nx-kpi--gold  .nx-kpi-value { color: var(--gold); }
.nx-kpi--gold::before        { background: linear-gradient(90deg, transparent 0%, var(--gold) 50%, transparent 100%); }
.nx-kpi--rose  .nx-kpi-value { color: #f43f5e; }
.nx-kpi--rose::before        { background: linear-gradient(90deg, transparent 0%, #f43f5e 50%, transparent 100%); }
.nx-kpi--success .nx-kpi-value { color: var(--grn); }
.nx-kpi--success::before     { background: linear-gradient(90deg, transparent 0%, var(--grn) 50%, transparent 100%); }
.nx-kpi--danger  .nx-kpi-value { color: var(--red); }
.nx-kpi--danger::before      { background: linear-gradient(90deg, transparent 0%, var(--red) 50%, transparent 100%); }
.nx-kpi--muted .nx-kpi-value { color: var(--txm); }
.nx-kpi--ghost { background: transparent; border-color: var(--nx-line); }

.nx-kpi-chip {
  align-self: flex-start;
  display: inline-flex; align-items: center;
  padding: 3px 10px;
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--teal);
  background: rgba(34, 118, 102, 0.10);
  border: 1px solid rgba(34, 118, 102, 0.18);
  border-radius: var(--nx-radius-pill);
}
.nx-kpi-chip--gold { color: var(--gold); background: rgba(201, 168, 76, 0.10); border-color: rgba(201, 168, 76, 0.20); }
.nx-kpi-chip--rose { color: #f43f5e; background: rgba(244, 63, 94, 0.10); border-color: rgba(244, 63, 94, 0.20); }

/* ─── Barres horizontales (Pipeline / Secteur — référence visuelle) ──── */
.nx-bars {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.nx-bars--tight { gap: 10px; }
.nx-bar-row {
  display: grid;
  grid-template-columns: minmax(120px, 180px) 1fr auto;
  align-items: center;
  gap: 14px;
}
.nx-bar-label {
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 400;
  color: var(--txm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.nx-bar-track {
  position: relative;
  height: 6px;
  background: var(--nx-track);
  border-radius: var(--nx-radius-pill);
  overflow: hidden;
}
.nx-bar-fill {
  position: absolute;
  inset: 0 auto 0 0;
  height: 100%;
  width: var(--nx-bar-w, 0%);
  background: linear-gradient(90deg, var(--teal), var(--tl));
  border-radius: var(--nx-radius-pill);
  transition: width var(--nx-dur-slow) var(--nx-ease-out);
}
.nx-bar-value {
  font-family: 'Cormorant Garamond', serif;
  font-size: 18px;
  font-weight: 600;
  color: var(--txt);
  font-variant-numeric: tabular-nums;
  text-align: right;
  min-width: 48px;
}
.nx-bar-row--gold .nx-bar-fill   { background: linear-gradient(90deg, var(--gold), var(--gl)); }
.nx-bar-row--rose .nx-bar-fill   { background: linear-gradient(90deg, #be2c45, #f43f5e); }
.nx-bar-row--muted .nx-bar-fill  { background: linear-gradient(90deg, var(--s4), var(--txd)); }
.nx-bar-row--success .nx-bar-fill { background: linear-gradient(90deg, var(--grn), #3ad17b); }

/* Variante compacte (sidebar / mini-widgets) */
.nx-bars--mini .nx-bar-row { grid-template-columns: 1fr auto; gap: 8px; }
.nx-bars--mini .nx-bar-label { font-size: 11px; }
.nx-bars--mini .nx-bar-track { height: 4px; }
.nx-bars--mini .nx-bar-value { font-size: 13px; min-width: 36px; }
.nx-bars--mini .nx-bar-row > .nx-bar-track { grid-column: 1 / -1; order: 3; }

/* ─── Chips & badges premium ─────────────────────────────────────────── */
.nx-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 500;
  color: var(--txt);
  background: var(--s2);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius-pill);
  transition: border-color var(--nx-dur-fast) var(--nx-ease), color var(--nx-dur-fast) var(--nx-ease);
}
.nx-chip:hover { border-color: var(--nx-line-strong); }
.nx-chip--teal  { color: var(--teal); background: rgba(34, 118, 102, 0.08); border-color: rgba(34, 118, 102, 0.18); }
.nx-chip--gold  { color: var(--gold); background: rgba(201, 168, 76, 0.08); border-color: rgba(201, 168, 76, 0.18); }
.nx-chip--rose  { color: #f43f5e; background: rgba(244, 63, 94, 0.08); border-color: rgba(244, 63, 94, 0.18); }
.nx-chip--ghost { background: transparent; }
.nx-chip-dot {
  width: 6px; height: 6px; border-radius: 50%; background: currentColor;
}

/* ─── Boutons premium ────────────────────────────────────────────────── */
.nx-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 10px 18px;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--txt);
  background: var(--s2);
  border: 1px solid var(--nx-line-strong);
  border-radius: var(--nx-radius-xs);
  cursor: pointer;
  transition: transform var(--nx-dur-fast) var(--nx-ease), border-color var(--nx-dur-fast) var(--nx-ease), background var(--nx-dur-fast) var(--nx-ease);
}
.nx-btn:hover { transform: translateY(-1px); border-color: rgba(34, 118, 102, 0.45); }
.nx-btn:active { transform: translateY(0); }
.nx-btn:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(34, 118, 102, 0.25); }
.nx-btn--primary { color: #fff; background: var(--teal); border-color: var(--teal); }
.nx-btn--primary:hover { background: var(--tl); border-color: var(--tl); }
.nx-btn--gold { color: var(--obs); background: var(--gold); border-color: var(--gold); }
.nx-btn--gold:hover { background: var(--gl); border-color: var(--gl); }
.nx-btn--ghost { background: transparent; }
.nx-btn--sm { padding: 6px 12px; font-size: 11px; }
.nx-btn--lg { padding: 14px 24px; font-size: 13px; }
.nx-btn--icon { padding: 8px; }

/* ─── Tableaux premium ───────────────────────────────────────────────── */
.nx-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
}
.nx-table thead th {
  padding: 14px 16px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txm);
  text-align: left;
  border-bottom: 1px solid var(--nx-line-strong);
  background: transparent;
}
.nx-table tbody td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--nx-line);
  color: var(--txt);
  vertical-align: middle;
}
.nx-table tbody tr { transition: background var(--nx-dur-fast) var(--nx-ease); }
.nx-table tbody tr:hover { background: rgba(34, 118, 102, 0.04); }
.nx-table tbody tr:last-child td { border-bottom: none; }
.nx-table .nx-td-num { font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 300; font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1, "lnum" 1; letter-spacing: 0; }
.nx-table .nx-td-num--strong { font-weight: 400; }
.nx-table .nx-td-num--gold { color: var(--gold); font-weight: 300; }
.nx-table .nx-td-right { text-align: right; }

/* ─── Lignes & séparateurs ───────────────────────────────────────────── */
.nx-hr { border: none; height: 1px; background: var(--nx-line); margin: 24px 0; }
.nx-hr--strong { background: var(--nx-line-strong); }
.nx-divider { height: 1px; background: linear-gradient(90deg, transparent, var(--nx-line-strong), transparent); margin: 20px 0; }

/* ─── Tabs premium ───────────────────────────────────────────────────── */
.nx-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--nx-line);
  margin-bottom: 24px;
  position: relative;
}
.nx-tab {
  position: relative;
  padding: 12px 18px;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--txm);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: color var(--nx-dur-fast) var(--nx-ease);
}
.nx-tab::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 18px; right: 18px;
  height: 1px;
  background: var(--teal);
  transform: scaleX(0);
  transition: transform var(--nx-dur) var(--nx-ease);
  transform-origin: center;
}
.nx-tab:hover { color: var(--txt); }
.nx-tab.is-active { color: var(--txt); font-weight: 600; }
.nx-tab.is-active::after { transform: scaleX(1); }

/* ─── Inputs premium ─────────────────────────────────────────────────── */
.nx-input,
.nx-select,
.nx-textarea {
  width: 100%;
  padding: 10px 14px;
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 400;
  color: var(--txt);
  background: var(--s2);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius-xs);
  transition: border-color var(--nx-dur-fast) var(--nx-ease), box-shadow var(--nx-dur-fast) var(--nx-ease);
}
.nx-input:focus,
.nx-select:focus,
.nx-textarea:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(34, 118, 102, 0.15);
}
.nx-input::placeholder,
.nx-textarea::placeholder { color: var(--txd); }
.nx-field-label {
  display: block;
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txm);
  margin-bottom: 6px;
}

/* ─── NxAutocomplete (remplace <select> partout) ─────────────────────── */
.nx-autocomplete { position: relative; width: 100%; }
.nx-autocomplete__control {
  position: relative;
  display: flex; align-items: center;
  background: var(--s2);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius-xs);
  transition: border-color var(--nx-dur-fast) var(--nx-ease), box-shadow var(--nx-dur-fast) var(--nx-ease);
  cursor: text;
}
.nx-autocomplete.is-open .nx-autocomplete__control,
.nx-autocomplete__control:focus-within {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(34, 118, 102, 0.15);
}
.nx-autocomplete.is-disabled .nx-autocomplete__control {
  opacity: 0.55; cursor: not-allowed;
}
.nx-autocomplete__input {
  flex: 1; min-width: 0;
  padding: 10px 14px;
  padding-right: 32px;
  background: transparent;
  border: 0; outline: none;
  font-family: 'Montserrat', sans-serif;
  font-size: 13px; font-weight: 400;
  color: var(--txt);
}
.nx-autocomplete__input::placeholder { color: var(--txd); }
.nx-autocomplete--sm .nx-autocomplete__input { padding: 7px 10px; padding-right: 28px; font-size: 12px; }
.nx-autocomplete__caret {
  position: absolute; right: 12px; top: 50%;
  width: 8px; height: 8px;
  border-right: 1.5px solid var(--txm);
  border-bottom: 1.5px solid var(--txm);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
  transition: transform var(--nx-dur-fast) var(--nx-ease);
}
.nx-autocomplete.is-open .nx-autocomplete__caret {
  transform: translateY(-30%) rotate(-135deg);
}
.nx-autocomplete__clear {
  position: absolute; right: 30px; top: 50%;
  transform: translateY(-50%);
  width: 18px; height: 18px;
  display: flex; align-items: center; justify-content: center;
  background: transparent; border: 0;
  color: var(--txm);
  font-size: 16px; line-height: 1;
  cursor: pointer;
  border-radius: 50%;
  transition: background var(--nx-dur-fast) var(--nx-ease), color var(--nx-dur-fast) var(--nx-ease);
}
.nx-autocomplete__clear:hover { background: rgba(255,255,255,0.06); color: var(--txt); }
.nx-autocomplete__panel {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0;
  z-index: 50;
  max-height: 280px; overflow-y: auto;
  background: var(--obs, #0b0d0d);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius-xs);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.45);
  padding: 4px;
  animation: nxAutoFade .14s var(--nx-ease);
}
@keyframes nxAutoFade {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.nx-autocomplete__opt {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 9px 12px;
  border-radius: 4px;
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  color: var(--txt);
  cursor: pointer;
  transition: background var(--nx-dur-fast) var(--nx-ease), color var(--nx-dur-fast) var(--nx-ease);
}
.nx-autocomplete__opt.is-active,
.nx-autocomplete__opt:hover {
  background: rgba(34, 118, 102, 0.14);
  color: var(--txt);
}
.nx-autocomplete__opt.is-selected {
  color: var(--teal);
}
.nx-autocomplete__opt.is-disabled {
  opacity: 0.45; cursor: not-allowed;
}
.nx-autocomplete__opt--empty {
  font-style: italic;
  color: var(--txm);
  border-bottom: 1px solid var(--nx-line);
  border-radius: 4px 4px 0 0;
  margin-bottom: 2px;
}
.nx-autocomplete__opt-hint {
  font-size: 11px;
  color: var(--txm);
  letter-spacing: 0.02em;
}
.nx-autocomplete__none {
  padding: 12px;
  text-align: center;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 14px;
  color: var(--txm);
}

/* ─── États vides premium ────────────────────────────────────────────── */
.nx-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px 24px;
  text-align: center;
  gap: 12px;
}
.nx-empty-icon { color: var(--txd); opacity: 0.7; }
.nx-empty-title { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 17px; color: var(--txm); }
.nx-empty-text  { font-family: 'Montserrat', sans-serif; font-size: 12px; color: var(--txd); max-width: 360px; line-height: 1.5; }

/* ─── Skeleton premium ───────────────────────────────────────────────── */
@keyframes nx-skeleton-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.nx-skeleton {
  background: linear-gradient(90deg, var(--s2) 0%, var(--s3) 50%, var(--s2) 100%);
  background-size: 200% 100%;
  animation: nx-skeleton-shimmer 1.8s var(--nx-ease) infinite;
  border-radius: var(--nx-radius-xs);
}
.nx-skeleton--text  { height: 12px; width: 80%; }
.nx-skeleton--title { height: 28px; width: 60%; }
.nx-skeleton--kpi   { height: 110px; border-radius: var(--nx-radius-sm); }
.nx-skeleton--bar   { height: 6px; }

/* ─── Charts conteneurs (Chart.js minimaliste) ───────────────────────── */
.nx-chart-wrap {
  position: relative;
  width: 100%;
  height: 220px;
}
.nx-chart-wrap--lg { height: 320px; }
.nx-chart-wrap--xl { height: 420px; }
.nx-chart-legend {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.nx-chart-legend-item { display: inline-flex; align-items: center; gap: 6px; font-family: 'Montserrat', sans-serif; font-size: 11px; color: var(--txm); }
.nx-chart-legend-dot  { width: 8px; height: 2px; border-radius: 2px; }

/* ─── Mini-stat ─────────────────────────────────────────────────────── */
.nx-stat {
  display: flex; align-items: baseline; gap: 8px;
  font-family: 'Cormorant Garamond', serif;
}
.nx-stat-val { font-size: 28px; font-weight: 600; color: var(--txt); font-variant-numeric: tabular-nums; }
.nx-stat-unit { font-size: 14px; color: var(--txm); }

/* ─── Avatar premium (Air France La Première) ────────────────────────── */
.nx-avatar {
  position: relative;
  width: 36px; height: 36px;
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  color: #e8d9a8;
  background: linear-gradient(135deg, #2b8576 0%, #1c5a4f 50%, #0e302a 100%);
  border: 1px solid rgba(201, 168, 76, 0.30);
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.10);
  overflow: hidden;
}
.nx-avatar--lg { width: 56px; height: 56px; font-size: 18px; }
.nx-avatar--sm { width: 28px; height: 28px; font-size: 11px; }
.nx-avatar img { width: 100%; height: 100%; object-fit: cover; }

/* ─── Hero header de page ───────────────────────────────────────────── */
.nx-page-hero {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
  padding: 32px 32px 24px;
  border-bottom: 1px solid var(--nx-line);
}
.nx-page-eyebrow { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--teal); margin-bottom: 6px; }
.nx-page-title   { font-family: 'Cormorant Garamond', serif; font-size: 42px; font-weight: 600; line-height: 1.05; letter-spacing: -0.015em; color: var(--txt); }
.nx-page-subtitle { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; color: var(--txm); margin-top: 6px; }

/* ─── Conteneurs / wrappers ─────────────────────────────────────────── */
.nx-wrap   { max-width: 1440px; margin: 0 auto; padding: 0 32px; }
.nx-wrap-sm { max-width: 960px; margin: 0 auto; padding: 0 24px; }
.nx-stack-8  { display: flex; flex-direction: column; gap: 8px; }
.nx-stack-12 { display: flex; flex-direction: column; gap: 12px; }
.nx-stack-16 { display: flex; flex-direction: column; gap: 16px; }
.nx-stack-24 { display: flex; flex-direction: column; gap: 24px; }
.nx-row-8    { display: flex; align-items: center; gap: 8px; }
.nx-row-12   { display: flex; align-items: center; gap: 12px; }
.nx-row-16   { display: flex; align-items: center; gap: 16px; }
.nx-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.nx-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.nx-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 900px) {
  .nx-grid-2, .nx-grid-3, .nx-grid-4 { grid-template-columns: 1fr; }
  .nx-page-hero { padding: 24px 20px; }
  .nx-page-title { font-size: 32px; }
  .nx-panel { padding: 20px; }
}

/* ─── Motion utilities ──────────────────────────────────────────────── */
@keyframes nx-fade-up {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.nx-fade-in { animation: nx-fade-up var(--nx-dur-slow) var(--nx-ease-out) both; }
.nx-fade-in-delay-1 { animation-delay: 60ms; }
.nx-fade-in-delay-2 { animation-delay: 120ms; }
.nx-fade-in-delay-3 { animation-delay: 180ms; }
.nx-fade-in-delay-4 { animation-delay: 240ms; }

/* Pulse bar (utilise par bandeau "Preparation IA..." dans NDF) :
   barre teal qui pulse en opacite tant que l'OCR n'a pas demarre,
   signale visuellement l'attente sans afficher de pourcentage. */
@keyframes nx-pulse-bar {
  0%, 100% { opacity: .35; }
  50%      { opacity: .85; }
}

/* Dots animees (utilise par "Preparation IA...") :
   les 3 points apparaissent en sequence, effet ressenti "qqch travaille". */
@keyframes nx-dots-fade {
  0%, 20%   { opacity: .2; }
  50%       { opacity: 1; }
  80%, 100% { opacity: .2; }
}
.nx-dots {
  display: inline-block;
  animation: nx-dots-fade 1.4s ease-in-out infinite;
}

/* ─── Couleurs sémantiques utilitaires ──────────────────────────────── */
.nx-text-teal { color: var(--teal); }
.nx-text-gold { color: var(--gold); }
.nx-text-rose { color: #f43f5e; }
.nx-text-grn  { color: var(--grn); }
.nx-text-red  { color: var(--red); }
.nx-text-mut  { color: var(--txm); }
.nx-text-dim  { color: var(--txd); }

/* ─── Scrollbar premium (webkit) ────────────────────────────────────── */
.nx-scroll::-webkit-scrollbar { width: 8px; height: 8px; }
.nx-scroll::-webkit-scrollbar-track { background: transparent; }
.nx-scroll::-webkit-scrollbar-thumb { background: rgba(34, 118, 102, 0.25); border-radius: 4px; }
.nx-scroll::-webkit-scrollbar-thumb:hover { background: rgba(34, 118, 102, 0.45); }

/* ════════════════════════════════════════════════════════════════════════
   SPLIT-VIEW MODAL + VIEWER PJ (clone du pattern compta valide par le CEO)
   Usage : NDF detail, Paiement detail, et tout autre module qui veut
   afficher l'apercu d'une PJ a droite avec animation au lieu d'une modale
   plein ecran.
   
   Comportement :
   - Overlay <teleport to="body"> qui contient les 2 panneaux
   - Panneau gauche (drawer) : 90% / 1100px max par defaut
   - Panneau droit (viewer) : invisible par defaut
   - Quand on ouvre une PJ : drawer rétrécit à 44% (640px max), viewer
     glisse depuis la droite (transition .35s cubic-bezier conforme charte)
   - Fermeture viewer : drawer reprend sa largeur initiale
   
   Classes :
   .nx-split-overlay         : overlay racine, flex container des 2 panneaux
   .nx-split-overlay.split   : modifier quand viewer ouvert (padding reduit + gap)
   .nx-split-drawer-panel    : panneau gauche (contenu detail)
   .nx-split-drawer-panel.compact : variante quand viewer ouvert (44%)
   .nx-split-viewer-panel    : panneau droit (preview PJ)
   .nx-split-viewer-bar      : barre titre + actions (download / external / close)
   .nx-split-viewer-frame    : conteneur iframe/img du preview
   
   Transitions Vue :
   <transition name="nx-slide-right"> autour du viewer-panel
   ════════════════════════════════════════════════════════════════════════ */
.nx-split-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.78);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  display: flex; align-items: stretch; justify-content: center;
  gap: 16px; z-index: 1000;
  padding: 5vh 24px;
  transition: padding .35s ease;
}
.nx-split-overlay.split { padding: 3vh 16px; gap: 16px; }
.nx-split-overlay.viewerOnly { padding: 3vh 16px; }

/* Panneau gauche : largeur dynamique selon split */
.nx-split-drawer-panel {
  background: var(--obs, #0b0d0d);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 12px;
  width: 90%; max-width: 1100px;
  max-height: 90vh; overflow-y: auto;
  box-shadow: 0 24px 64px rgba(0,0,0,.5);
  transition: max-width .35s cubic-bezier(.22,.61,.36,1),
              flex-basis .35s cubic-bezier(.22,.61,.36,1),
              padding .35s ease;
}
.nx-split-overlay.split .nx-split-drawer-panel {
  flex: 0 0 44%; max-width: 640px; width: auto;
}

/* Panneau droit : viewer PJ */
.nx-split-viewer-panel {
  background: var(--obs, #0b0d0d);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 12px;
  flex: 1; min-width: 0;
  display: flex; flex-direction: column;
  overflow: hidden;
  box-shadow: 0 24px 64px rgba(0,0,0,.6);
  max-height: 90vh;
}
.nx-split-overlay.viewerOnly .nx-split-viewer-panel { max-width: 1280px; width: 100%; }

.nx-split-viewer-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 16px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.02);
  flex-shrink: 0;
}
.nx-split-viewer-bar h3 {
  margin: 0; flex: 1;
  font-family: 'Cormorant Garamond', serif;
  color: var(--gold);
  font-size: 16px; font-weight: 600;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.nx-split-viewer-frame {
  flex: 1; overflow: hidden; background: #1a1c1c;
}
.nx-split-viewer-frame iframe {
  width: 100%; height: 100%; border: 0; display: block; background: #fff;
}
.nx-split-viewer-frame img {
  width: 100%; height: 100%; object-fit: contain; display: block;
}

/* Boutons header viewer (download, external, close) */
.nx-split-viewer-bar .nx-split-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 10px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 6px;
  color: var(--txm, #9ca3af);
  font-size: 11px; font-weight: 600;
  cursor: pointer; text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
}
.nx-split-viewer-bar .nx-split-btn:hover {
  background: rgba(34,118,102,.12);
  border-color: var(--teal, #227666);
  color: var(--teal, #227666);
}
.nx-split-viewer-bar .nx-split-btn--close:hover {
  background: rgba(244,63,94,.12);
  border-color: #f43f5e;
  color: #f43f5e;
}

/* Animations Vue */
.nx-slide-right-enter-active,
.nx-slide-right-leave-active { transition: transform .4s cubic-bezier(.22,.61,.36,1), opacity .3s ease; }
.nx-slide-right-enter-from,
.nx-slide-right-leave-to     { transform: translateX(80px); opacity: 0; }

/* ──────────────────────────────────────────────────────────────────
   NxSourcingActions — Sources externes (X-Ray LinkedIn + jobboards)
   ────────────────────────────────────────────────────────────────── */
.nx-sourcing {
  background: rgba(255,255,255,.015);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 8px;
  padding: 16px 18px;
  display: flex; flex-direction: column; gap: 14px;
  transition: border-color .25s cubic-bezier(.25,.46,.45,.94);
}
.nx-sourcing--compact {
  padding: 10px 12px;
  background: transparent;
  border: none;
  gap: 10px;
}
.nx-sourcing:hover { border-color: rgba(255,255,255,.09); }

.nx-sourcing__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
}
.nx-sourcing__head.is-toggle { cursor: pointer; user-select: none; }
.nx-sourcing__head-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.nx-sourcing__eyebrow {
  font-family: 'Montserrat', sans-serif;
  font-size: 10px; font-weight: 500;
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--teal, #227666);
}
.nx-sourcing__title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 18px; font-weight: 500;
  color: var(--txt, #e6e7e7);
  letter-spacing: .005em;
}
.nx-sourcing__toggle {
  background: transparent; border: 1px solid rgba(255,255,255,.08);
  width: 28px; height: 28px; border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--txm, #9aa3a3);
  cursor: pointer;
  transition: background .2s, color .2s, border-color .2s;
}
.nx-sourcing__toggle:hover {
  background: rgba(34,118,102,.1);
  border-color: rgba(34,118,102,.4);
  color: var(--teal, #227666);
}

.nx-sourcing__body { display: flex; flex-direction: column; gap: 14px; }

/* Requête booléenne */
.nx-sourcing__query {
  display: flex; align-items: stretch; gap: 8px;
  background: rgba(0,0,0,.25);
  border: 1px solid rgba(255,255,255,.05);
  border-radius: 6px;
  padding: 8px 10px;
}
.nx-sourcing__query-code {
  flex: 1; min-width: 0;
  font-family: 'JetBrains Mono', 'Menlo', monospace;
  font-size: 11.5px; line-height: 1.5;
  color: var(--gold, #c9a84c);
  background: transparent;
  white-space: pre-wrap; word-break: break-word;
  max-height: 80px; overflow-y: auto;
  scrollbar-width: thin;
}
.nx-sourcing__copy {
  flex-shrink: 0;
  display: inline-flex; align-items: center; gap: 5px;
  background: transparent;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 5px;
  padding: 4px 10px;
  font-family: 'Montserrat', sans-serif;
  font-size: 10.5px; font-weight: 500;
  color: var(--txm, #9aa3a3);
  cursor: pointer;
  transition: background .2s, color .2s, border-color .2s;
  align-self: center;
}
.nx-sourcing__copy:hover {
  background: rgba(34,118,102,.1);
  border-color: rgba(34,118,102,.4);
  color: var(--teal, #227666);
}
.nx-sourcing__copy-ico { width: 12px; height: 12px; flex-shrink: 0; stroke-width: 1.5; }

/* Groupes */
.nx-sourcing__group { display: flex; flex-direction: column; gap: 8px; }
.nx-sourcing__group-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 10px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .12em;
  color: var(--txm, #9aa3a3);
}
.nx-sourcing__actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* Boutons */
.nx-sourcing__btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 7px 12px;
  max-width: 100%; min-width: 0;
  background: transparent;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11.5px; font-weight: 500;
  color: var(--txt, #d6dada);
  text-decoration: none;
  cursor: pointer;
  transition: background .2s cubic-bezier(.25,.46,.45,.94),
              border-color .2s, color .2s, transform .2s;
}
.nx-sourcing__btn:hover {
  background: rgba(34,118,102,.1);
  border-color: rgba(34,118,102,.5);
  color: var(--teal, #227666);
  transform: translateY(-1px);
}
.nx-sourcing__btn.is-disabled { opacity: .35; pointer-events: none; }
.nx-sourcing__btn-ico { width: 14px; height: 14px; flex-shrink: 0; stroke-width: 1.5; }
.nx-sourcing__btn-lbl { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.nx-sourcing__btn-ext { width: 11px; height: 11px; flex-shrink: 0; opacity: .5; stroke-width: 1.5; }
.nx-sourcing__btn-tag {
  font-size: 9px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .06em;
  background: rgba(255,255,255,.08);
  border-radius: 10px;
  padding: 2px 6px;
  color: inherit; opacity: .8;
  flex-shrink: 0;
}

/* Bouton primaire (Google X-Ray) — styling distinctif teal, taille naturelle */
.nx-sourcing__btn--primary {
  background: var(--teal, #227666);
  border-color: var(--teal, #227666);
  color: #fff;
}
.nx-sourcing__btn--primary:hover {
  background: #2a8c79;
  border-color: #2a8c79;
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 16px -8px rgba(34,118,102,.6);
}
.nx-sourcing__btn--primary .nx-sourcing__btn-tag {
  background: rgba(255,255,255,.18);
  color: #fff;
}

/* Bouton ghost (jobboards veille marché) */
.nx-sourcing__btn--ghost {
  background: transparent;
  border-color: rgba(255,255,255,.06);
  color: var(--txm, #9aa3a3);
}
.nx-sourcing__btn--ghost:hover {
  background: rgba(201,168,76,.08);
  border-color: rgba(201,168,76,.3);
  color: var(--gold, #c9a84c);
}

/* Hint italique Cormorant */
.nx-sourcing__hint {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 12.5px;
  color: var(--txm, #9aa3a3);
  margin: 0;
  padding-top: 4px;
  border-top: 1px solid rgba(255,255,255,.04);
  line-height: 1.5;
}

/* Layout compact (sans titres de groupe, sans hint) */
.nx-sourcing--compact .nx-sourcing__group-title { display: none; }
.nx-sourcing--compact .nx-sourcing__actions { gap: 6px; }
.nx-sourcing--compact .nx-sourcing__btn {
  padding: 5px 10px;
  font-size: 11px;
}

/* ======================================================================
   NX-BREADCRUMB — Fil d'Ariane Odoo-style (charte CEO mai 2026)
   ======================================================================
   Position : juste au-dessus du <nx-page-hero>. 28px de hauteur, ligne
   fine. Séparateur chevron SVG 1.5px. Segment actif en Cormorant italique
   gold (non cliquable, aria-current="page"). Segment Section cliquable
   avec popover des modules frères.
   ====================================================================== */
.nx-breadcrumb {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 28px;
  margin-bottom: 20px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  user-select: none;
  flex-wrap: wrap;
  /* CRITIQUE : flex-shrink:0 obligatoire — sinon dans un parent flex column
     + overflow:hidden (cas Clients/Paiements/Missions), le composant est
     compressé à 0px et devient invisible. Bug détecté 2026-05-25. */
  flex-shrink: 0;
}

/* Variante sticky pour pages longues (Comptabilité, Reporting) */
.nx-breadcrumb--sticky {
  position: sticky;
  top: 0;
  z-index: 6;
  background: rgba(11, 13, 13, 0.88);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  margin: -16px -24px 20px -24px;
  padding: 14px 24px;
  border-bottom: 1px solid var(--nx-line);
}
[data-theme="light"] .nx-breadcrumb--sticky {
  background: rgba(247, 247, 245, 0.92);
}

/* Icône maison */
.nx-bc-home {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: var(--nx-radius-xs);
  color: var(--txm);
  cursor: pointer;
  text-decoration: none;
  transition: color var(--nx-dur) var(--nx-ease),
              background var(--nx-dur) var(--nx-ease);
}
.nx-bc-home:hover { color: var(--teal); background: rgba(34, 118, 102, 0.08); }
.nx-bc-home svg   { width: 14px; height: 14px; stroke-width: 1.5; }

/* Séparateur chevron */
.nx-bc-sep {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--txm);
  opacity: 0.45;
}
.nx-bc-sep svg { width: 10px; height: 10px; stroke-width: 1.5; }

/* Segment intermédiaire cliquable (Module, Élément parent) */
.nx-bc-segment {
  color: var(--txm);
  cursor: pointer;
  padding: 4px 2px;
  position: relative;
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--nx-dur) var(--nx-ease);
}
.nx-bc-segment::after {
  content: '';
  position: absolute;
  left: 2px;
  right: 2px;
  bottom: 2px;
  height: 1px;
  background: var(--teal);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--nx-dur) var(--nx-ease);
}
.nx-bc-segment:hover { color: var(--txt); }
.nx-bc-segment:hover::after { transform: scaleX(1); }
.nx-bc-segment--passive { cursor: default; }
.nx-bc-segment--passive:hover::after { transform: scaleX(0); }
.nx-bc-segment--passive:hover { color: var(--txm); }

/* Segment Section avec popover (modules frères) */
.nx-bc-section {
  color: var(--txm);
  cursor: pointer;
  padding: 4px 18px 4px 2px;
  position: relative;
  white-space: nowrap;
  transition: color var(--nx-dur) var(--nx-ease);
}
.nx-bc-section::after {
  content: '';
  position: absolute;
  left: 2px;
  right: 18px;
  bottom: 2px;
  height: 1px;
  background: var(--teal);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--nx-dur) var(--nx-ease);
}
/* Caret indiquant le popover */
.nx-bc-section::before {
  content: '';
  position: absolute;
  right: 4px;
  top: 50%;
  width: 6px;
  height: 6px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-70%) rotate(45deg);
  opacity: 0.45;
  transition: opacity var(--nx-dur) var(--nx-ease),
              transform var(--nx-dur) var(--nx-ease);
}
.nx-bc-section:hover,
.nx-bc-section.is-open { color: var(--txt); }
.nx-bc-section:hover::after,
.nx-bc-section.is-open::after { transform: scaleX(1); }
.nx-bc-section:hover::before,
.nx-bc-section.is-open::before {
  opacity: 0.9;
  transform: translateY(-30%) rotate(45deg);
}

/* Popover modules frères */
.nx-bc-popover {
  position: absolute;
  top: calc(100% + 8px);
  left: -12px;
  min-width: 220px;
  max-width: calc(100vw - 24px);
  background: var(--s2, #181c1c);
  border: 1px solid var(--nx-line-strong);
  border-radius: var(--nx-radius-sm);
  padding: 6px 0;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.40);
  z-index: 60;
  animation: nxBcPopIn 200ms var(--nx-ease-out);
}
/* C7 : variante flip — popover ancré à droite quand il déborde */
.nx-bc-popover--flip {
  left: auto;
  right: -12px;
}
/* Theme light — fond + bordure adaptés */
[data-theme="light"] .nx-bc-popover {
  background: #ffffff;
  border-color: var(--nx-line-strong);
  box-shadow: 0 12px 32px rgba(11, 13, 13, 0.12);
}
@keyframes nxBcPopIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.nx-bc-popover-item {
  display: block;
  padding: 8px 16px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.06em;
  text-transform: none;
  color: var(--txm);
  cursor: pointer;
  text-decoration: none;
  transition: background 150ms, color 150ms;
}
.nx-bc-popover-item:hover {
  background: rgba(34, 118, 102, 0.10);
  color: var(--teal);
}
.nx-bc-popover-item.is-active {
  color: var(--gold);
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 13px;
  letter-spacing: 0;
}

/* Segment actif (dernier — page courante) */
.nx-bc-current {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 15px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--gold);
  padding: 0 2px;
  white-space: nowrap;
}

/* Lot 5 : bouton collapse "…" cliquable (mobile + fils longs) */
.nx-bc-collapse {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--nx-line);
  color: var(--txm);
  cursor: pointer;
  padding: 2px 8px;
  border-radius: var(--nx-radius-xs);
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.06em;
  transition: background var(--nx-dur) var(--nx-ease),
              color var(--nx-dur) var(--nx-ease),
              border-color var(--nx-dur) var(--nx-ease);
}
.nx-bc-collapse:hover {
  background: rgba(34, 118, 102, 0.10);
  color: var(--teal);
  border-color: var(--teal);
}
[data-theme="light"] .nx-bc-collapse {
  background: rgba(11, 13, 13, 0.04);
}

/* Lot 5 : theme light complet pour popover-item / segments — éviter illisibilité gold sur fond clair */
[data-theme="light"] .nx-bc-popover-item:hover {
  background: rgba(34, 118, 102, 0.08);
}
[data-theme="light"] .nx-bc-current {
  /* Gold reste lisible sur fond clair grâce au contraste — pas d'override */
}

/* Responsive — fils longs collapse automatique côté Vue (cf. props maxItems) */
@media (max-width: 720px) {
  .nx-breadcrumb { font-size: 10px; gap: 6px; }
  .nx-bc-current { font-size: 13px; }
  .nx-bc-segment, .nx-bc-section { padding: 2px; }
  .nx-bc-popover { min-width: 180px; }
}
