/* ============================================================
   Analyses — popup carousel + dataviz des vues de diagnostic
   Réutilise les variables :root de pilotage-shared.css
   Préfixes : apop- (coquille popup) · an- (atomes de vue)
   ============================================================ */
:root{
  --an-blue:#3a7bd5; --an-blue2:#2a5db0; --an-violet:#7a5cd0;
  --an-green:#1d9e75; --an-red:#e2615f;
  /* accents TEXTE teal de marque → suivent --brand-strong (contraste sécurisé par thème) */
  --an-teal:var(--brand-strong); --txt-teal:var(--brand-strong); --txt-teal2:var(--brand-strong);
}

/* ════════════ MARQUE (white-label) — l'accent de l'interface SUIT la palette sélectionnée ════════════
   --brand  = 1ʳᵉ couleur du thème (palette[0] = --mud-palette-primary, posé par RefreshPalette) ;
   --brand2 = 2ᵉ couleur (palette[1] = --mud-palette-secondary).
   --brand-strong / --brand2-strong = accents TEXTE/CTA à contraste SÉCURISÉ (éclaircis en sombre,
   assombris en clair) → restent lisibles quelle que soit la couleur choisie par le cabinet.
   ⚠️ Le SÉMANTIQUE (succès vert / danger rouge / warning ambre) ne suit PAS la marque. */
:root{
  --brand: var(--mud-palette-primary, #00b1cf);
  --brand2: var(--mud-palette-secondary, #44C1A3);
  --brand3: var(--mud-palette-info, #3498DB);
  --brand-strong: color-mix(in srgb, var(--brand) 84%, #ffffff);
  --brand2-strong: color-mix(in srgb, var(--brand2) 84%, #ffffff);
  --brand3-strong: color-mix(in srgb, var(--brand3) 84%, #ffffff);
  /* Surface des MODAUX = surface neutre + soupçon de marque (auto-flip : --surf-3 ET --brand suivent thème+palette).
     Subtil (8%) — chaleur de marque cohérente sur tout le parcours, sans alourdir. */
  --modal-surf: color-mix(in srgb, var(--brand) 8%, var(--surf-3));
}
html[data-theme="light"]{
  --brand-strong: color-mix(in srgb, var(--brand) 72%, #052430);
  --brand2-strong: color-mix(in srgb, var(--brand2) 72%, #052430);
  --brand3-strong: color-mix(in srgb, var(--brand3) 72%, #052430);
}

/* ════════════════════════════════════════════════════════════════
   THÈME clair / sombre — UNE variable par couleur source.
   :root = SOMBRE (valeurs identiques à l'existant → aucune régression).
   html[data-theme="light"] = contreparties claires.
   Posé par le bouton ☀️/🌙 (MainLayout) + restauré au chargement.
   ════════════════════════════════════════════════════════════════ */
:root{
  /* ombres : dark = noir plein ; light = slate doux (couleur + multiplicateur d'opacité) */
  --shadow-col:0,0,0; --shadow-mul:1;
  /* lueurs teal/cyan (box-shadow) : pleines en sombre, atténuées en clair */
  --glow-mul:1;
  /* textes d'état (ambre/rouge) : vifs en sombre, approfondis en clair (AA sur blanc) */
  --st-amber:#fbbf24; --st-pink:#fb7185; --st-red:#f87171;
  /* ══ PALETTE-AWARE (subtil) : chaque surface/texte = teinte d'origine + soupçon de --brand.
     Défaut teal ≈ inchangé (brand teal mixé dans du navy teal) ; les autres palettes teintent tout l'écran.
     Les % ci-dessous sont l'INTENSITÉ, ajustables ici. Alpha préservé via color-mix(base, transparent). ══ */
  --tint-navy:  color-mix(in srgb, var(--brand) 12%, #0d2938);   /* base --nv*   (navy translucide) */
  --tint-app:   color-mix(in srgb, var(--brand) 12%, #071d28);   /* base --sa*/--surfA* (fond app alpha) */
  --tint-glass: color-mix(in srgb, var(--brand) 11%, #0d222e);   /* base --gl*   (glass) */
  --tint-gd:    color-mix(in srgb, var(--brand) 11%, #091821);   /* base --gd*   (glass sombre) */
  /* navy translucide (cartes Overview & vues) */
  --nv20:color-mix(in srgb,var(--tint-navy) 20%,transparent); --nv25:color-mix(in srgb,var(--tint-navy) 25%,transparent); --nv28:color-mix(in srgb,var(--tint-navy) 28%,transparent); --nv35:color-mix(in srgb,var(--tint-navy) 35%,transparent); --nv50:color-mix(in srgb,var(--tint-navy) 50%,transparent); --nv60:color-mix(in srgb,var(--tint-navy) 60%,transparent); --nv85:color-mix(in srgb,var(--tint-navy) 85%,transparent); --nv92:color-mix(in srgb,var(--tint-navy) 92%,transparent);
  /* textes brillants (soupçon de marque) */
  --tx1:color-mix(in srgb,var(--brand) 8%,#eafdff); --tx2:color-mix(in srgb,var(--brand) 8%,#cfe8ee); --tx3:color-mix(in srgb,var(--brand) 8%,#eaf6f9); --tx4:color-mix(in srgb,var(--brand) 8%,#cfe3ec); --tx5:color-mix(in srgb,var(--brand) 8%,#dceaf1); --tx6:color-mix(in srgb,var(--brand) 8%,#cfe0e6); --tx7:color-mix(in srgb,var(--brand) 8%,#eef2f4);
  /* --tx8 = accent TEXTE de marque (boutons/badges/liens/?) → SUIT la palette via --brand-strong (était #9be6f4 teal figé). */
  --tx8:var(--brand-strong);
  /* textes sourds */
  --mut1:color-mix(in srgb,var(--brand) 8%,#8FA8B5); --mut2:color-mix(in srgb,var(--brand) 8%,#9fb4c0); --mut3:color-mix(in srgb,var(--brand) 8%,#7e96a3); --mut4:color-mix(in srgb,var(--brand) 8%,#9fb2bd); --mut5:color-mix(in srgb,var(--brand) 8%,#8aa1ac); --mut6:color-mix(in srgb,var(--brand) 8%,#7e95a3);
  /* surfaces */
  --surf-app:color-mix(in srgb,var(--brand) 10%,#071D28); --surf-1:color-mix(in srgb,var(--brand) 10%,#06141d); --surf-1b:color-mix(in srgb,var(--brand) 10%,#091f2b); --surf-2:color-mix(in srgb,var(--brand) 10%,#102733); --surf-3:color-mix(in srgb,var(--brand) 10%,#0c2230); --surf-pop:color-mix(in srgb,var(--brand) 10%,rgba(13,34,46,.98));
  /* surfaces propres aux sous-composants */
  --c1:color-mix(in srgb,var(--brand) 10%,#06222c); --c2:color-mix(in srgb,var(--brand) 10%,#04141a); --c3:color-mix(in srgb,var(--brand) 10%,#0c1c25); --c4:color-mix(in srgb,var(--brand) 10%,#0b1f29); --c5:color-mix(in srgb,var(--brand) 10%,#081a24);
  /* texte slate (hub & co) */
  --sl1:color-mix(in srgb,var(--brand) 8%,#94a3b8); --sl2:color-mix(in srgb,var(--brand) 8%,#cbd5e1); --sl3:color-mix(in srgb,var(--brand) 8%,#f1f5f9); --sl4:color-mix(in srgb,var(--brand) 8%,#e2e8f0); --sl5:color-mix(in srgb,var(--brand) 8%,#64748b);
  /* surfaces semi-transparentes (fond app en alpha) */
  --surfA:color-mix(in srgb,var(--tint-app) 98%,transparent); --surfA7:color-mix(in srgb,var(--tint-app) 70%,transparent); --surfA5:color-mix(in srgb,var(--tint-app) 50%,transparent);
  --sa0:color-mix(in srgb,var(--tint-app) 0%,transparent); --sa40:color-mix(in srgb,var(--tint-app) 40%,transparent); --sa42:color-mix(in srgb,var(--tint-app) 42%,transparent); --sa45:color-mix(in srgb,var(--tint-app) 45%,transparent); --sa46:color-mix(in srgb,var(--tint-app) 46%,transparent); --sa60:color-mix(in srgb,var(--tint-app) 60%,transparent); --sa75:color-mix(in srgb,var(--tint-app) 75%,transparent); --sa85:color-mix(in srgb,var(--tint-app) 85%,transparent); --sa95:color-mix(in srgb,var(--tint-app) 95%,transparent); --sa100:var(--tint-app);
  /* backdrops modaux (neutres — pas de teinte) */
  --bd62:rgba(3,12,18,.62); --bd72:rgba(3,12,18,.72); --bd74:rgba(3,12,18,.74);
  /* surfaces hexes diverses (sous-composants) */
  --hx1:color-mix(in srgb,var(--brand) 10%,#0b1220); --hx2:color-mix(in srgb,var(--brand) 10%,#0a1a23); --hx3:color-mix(in srgb,var(--brand) 10%,#0a161d); --hx4:color-mix(in srgb,var(--brand) 10%,#06222b); --hx5:color-mix(in srgb,var(--brand) 2%,#060d14); --hx6:color-mix(in srgb,var(--brand) 10%,#052b27);
  /* dégradés de carte */
  --grad-card1:linear-gradient(180deg,color-mix(in srgb,var(--brand) 10%,#0f2a39),color-mix(in srgb,var(--brand) 10%,#0b1d29)); --grad-card2:linear-gradient(180deg,color-mix(in srgb,var(--brand) 10%,#0d2330),color-mix(in srgb,var(--brand) 10%,#0a1b25));
  /* panneaux « glass » sombres (toasts, bannières, flyouts) + hexes surfaces */
  --gl97:color-mix(in srgb,var(--tint-glass) 97%,transparent); --gl92:color-mix(in srgb,var(--tint-glass) 92%,transparent); --gl90:color-mix(in srgb,var(--tint-glass) 90%,transparent); --gl80:color-mix(in srgb,var(--tint-glass) 80%,transparent); --gl60:color-mix(in srgb,var(--tint-glass) 60%,transparent); --gl20:color-mix(in srgb,var(--tint-glass) 20%,transparent);
  --gd97:color-mix(in srgb,var(--tint-gd) 97%,transparent); --gd84:color-mix(in srgb,var(--tint-gd) 84%,transparent); --gd80:color-mix(in srgb,var(--tint-gd) 80%,transparent);
  --dh1:color-mix(in srgb,var(--brand) 10%,#081d28); --dh2:color-mix(in srgb,var(--brand) 10%,#0a1c27); --dh3:color-mix(in srgb,var(--brand) 10%,#0d2230); --dh4:color-mix(in srgb,var(--brand) 10%,#0f2734); --dh5:color-mix(in srgb,var(--brand) 10%,#08171f); --dh6:color-mix(in srgb,var(--brand) 10%,#0c1320); --dh7:color-mix(in srgb,var(--brand) 10%,#171a2e);
  /* textes brillants froids (headings) */
  --tb1:color-mix(in srgb,var(--brand) 8%,#eef4f7); --tb2:color-mix(in srgb,var(--brand) 8%,#eef7fa); --tb3:color-mix(in srgb,var(--brand) 8%,#e8edf5); --tb4:color-mix(in srgb,var(--brand) 8%,#e6eef2); --tb5:color-mix(in srgb,var(--brand) 8%,#f3fbfd);
  /* fonds sombres résiduels (panneaux/lignes) */
  --dk1:color-mix(in srgb,var(--brand) 10%,#0f1217); --dk2:color-mix(in srgb,var(--brand) 10%,#1c1f26); --dk3:color-mix(in srgb,var(--brand) 10%,#12151b); --dk4:color-mix(in srgb,var(--brand) 10%,#0e2735); --dk5:color-mix(in srgb,var(--brand) 10%,#0d3a4a); --dk6:color-mix(in srgb,var(--brand) 10%,#16313e); --dk7:color-mix(in srgb,var(--brand) 10%,#143a3a); --dk8:color-mix(in srgb,var(--brand) 10%,#0f1c22); --dk9:color-mix(in srgb,var(--brand) 10%,#0c3340); --dk10:color-mix(in srgb,var(--brand) 10%,#0c2531);
  /* overlays / bordures (blanc-alpha sur sombre) */
  --o2:rgba(255,255,255,.02); --o3:rgba(255,255,255,.03); --o4:rgba(255,255,255,.04); --o5:rgba(255,255,255,.05);
  --o6:rgba(255,255,255,.06); --o7:rgba(255,255,255,.07); --o8:rgba(255,255,255,.08); --o9:rgba(255,255,255,.09);
  --o10:rgba(255,255,255,.1); --o12:rgba(255,255,255,.12); --o14:rgba(255,255,255,.14); --o16:rgba(255,255,255,.16);
  --o18:rgba(255,255,255,.18); --o22:rgba(255,255,255,.22);
}
html[data-theme="light"]{
  /* ombres douces & froides (slate), opacité réduite → rendu « pro » sur fond clair */
  --shadow-col:30,41,59; --shadow-mul:.3;
  --glow-mul:.5;
  --st-amber:#b45309; --st-pink:#be123c; --st-red:#dc2626;
  /* accents TEXTE approfondis sur blanc (AA) — cyan/teal-green ; les FONDS/bordures teal restent inchangés */
  /* teal texte de marque : --brand-strong porte déjà la version claire (color-mix assombri) → on s'appuie dessus */
  --an-teal:var(--brand-strong); --txt-teal:var(--brand-strong); --txt-teal2:var(--brand-strong);
  /* ══ PALETTE-AWARE (subtil) — clair : bases blanches + soupçon de --brand (6%). Alpha préservé. ══ */
  --tint-navy:  color-mix(in srgb, var(--brand) 6%, #ffffff);
  --tint-app:   color-mix(in srgb, var(--brand) 6%, #ffffff);
  --tint-glass: color-mix(in srgb, var(--brand) 6%, #ffffff);
  --tint-gd:    color-mix(in srgb, var(--brand) 6%, #f7fafc);
  --nv20:color-mix(in srgb,var(--tint-navy) 60%,transparent); --nv25:color-mix(in srgb,var(--tint-navy) 62%,transparent); --nv28:color-mix(in srgb,var(--tint-navy) 65%,transparent); --nv35:color-mix(in srgb,var(--tint-navy) 70%,transparent); --nv50:color-mix(in srgb,var(--tint-navy) 78%,transparent); --nv60:color-mix(in srgb,var(--tint-navy) 85%,transparent); --nv85:color-mix(in srgb,var(--tint-navy) 92%,transparent); --nv92:color-mix(in srgb,var(--tint-navy) 95%,transparent);
  --tx1:color-mix(in srgb,var(--brand) 6%,#15252e); --tx2:color-mix(in srgb,var(--brand) 6%,#1d2f37); --tx3:color-mix(in srgb,var(--brand) 6%,#1d2f37); --tx4:color-mix(in srgb,var(--brand) 6%,#26383f); --tx5:color-mix(in srgb,var(--brand) 6%,#26383f); --tx6:color-mix(in srgb,var(--brand) 6%,#2b3d45); --tx7:color-mix(in srgb,var(--brand) 6%,#1d2f37); --tx8:var(--brand-strong);
  --mut1:color-mix(in srgb,var(--brand) 6%,#586a73); --mut2:color-mix(in srgb,var(--brand) 6%,#586a73); --mut3:color-mix(in srgb,var(--brand) 6%,#66757d); --mut4:color-mix(in srgb,var(--brand) 6%,#5d6d76); --mut5:color-mix(in srgb,var(--brand) 6%,#63717a); --mut6:color-mix(in srgb,var(--brand) 6%,#66757d);
  --surf-app:color-mix(in srgb,var(--brand) 6%,#eef1f5); --surf-1:color-mix(in srgb,var(--brand) 6%,#ffffff); --surf-1b:color-mix(in srgb,var(--brand) 6%,#f6f9fb); --surf-2:color-mix(in srgb,var(--brand) 6%,#f1f5f7); --surf-3:color-mix(in srgb,var(--brand) 6%,#eaf1f4); --surf-pop:color-mix(in srgb,var(--brand) 6%,rgba(255,255,255,.98));
  --c1:color-mix(in srgb,var(--brand) 6%,#eef3f6); --c2:color-mix(in srgb,var(--brand) 6%,#f0f3f6); --c3:color-mix(in srgb,var(--brand) 6%,#f2f5f7); --c4:color-mix(in srgb,var(--brand) 6%,#eff4f6); --c5:color-mix(in srgb,var(--brand) 6%,#f0f4f6);
  /* panneaux/bordures generiques (modal tarifs, cartes) : bd1 = bordure, laissée neutre */
  --bg1:color-mix(in srgb,var(--brand) 6%,#eef3f7); --bg2:color-mix(in srgb,var(--brand) 6%,#e6edf2); --bd1:#dbe5ec;
  --sl1:color-mix(in srgb,var(--brand) 6%,#5b6b7a); --sl2:color-mix(in srgb,var(--brand) 6%,#3a4a5a); --sl3:color-mix(in srgb,var(--brand) 6%,#18222c); --sl4:color-mix(in srgb,var(--brand) 6%,#28384a); --sl5:color-mix(in srgb,var(--brand) 6%,#677580);
  --surfA:color-mix(in srgb,var(--tint-app) 98%,transparent); --surfA7:color-mix(in srgb,var(--tint-app) 72%,transparent); --surfA5:color-mix(in srgb,var(--tint-app) 55%,transparent);
  --sa0:color-mix(in srgb,var(--tint-app) 0%,transparent); --sa40:color-mix(in srgb,var(--tint-app) 50%,transparent); --sa42:color-mix(in srgb,var(--tint-app) 55%,transparent); --sa45:color-mix(in srgb,var(--tint-app) 58%,transparent); --sa46:color-mix(in srgb,var(--tint-app) 60%,transparent); --sa60:color-mix(in srgb,var(--tint-app) 72%,transparent); --sa75:color-mix(in srgb,var(--tint-app) 82%,transparent); --sa85:color-mix(in srgb,var(--tint-app) 90%,transparent); --sa95:color-mix(in srgb,var(--tint-app) 96%,transparent); --sa100:var(--tint-app);
  --bd62:rgba(15,23,32,.4); --bd72:rgba(15,23,32,.45); --bd74:rgba(15,23,32,.46);
  --grad-card1:linear-gradient(180deg,color-mix(in srgb,var(--brand) 6%,#f5f9fc),color-mix(in srgb,var(--brand) 6%,#eaf1f6)); --grad-card2:linear-gradient(180deg,color-mix(in srgb,var(--brand) 6%,#f3f7fb),color-mix(in srgb,var(--brand) 6%,#e9f0f5));
  --tb1:color-mix(in srgb,var(--brand) 6%,#16242c); --tb2:color-mix(in srgb,var(--brand) 6%,#16242c); --tb3:color-mix(in srgb,var(--brand) 6%,#1a2733); --tb4:color-mix(in srgb,var(--brand) 6%,#1d2f37); --tb5:color-mix(in srgb,var(--brand) 6%,#15252e);
  --dk1:color-mix(in srgb,var(--brand) 6%,#eef1f4); --dk2:color-mix(in srgb,var(--brand) 6%,#eceef2); --dk3:color-mix(in srgb,var(--brand) 6%,#eef0f3); --dk4:color-mix(in srgb,var(--brand) 6%,#eef3f6); --dk5:color-mix(in srgb,var(--brand) 6%,#e8f1f4); --dk6:color-mix(in srgb,var(--brand) 6%,#e8eef2); --dk7:color-mix(in srgb,var(--brand) 6%,#e6f2ee); --dk8:color-mix(in srgb,var(--brand) 6%,#eef2f5); --dk9:color-mix(in srgb,var(--brand) 6%,#e9f1f4); --dk10:color-mix(in srgb,var(--brand) 6%,#eef3f6);
  --gl97:color-mix(in srgb,var(--tint-glass) 97%,transparent); --gl92:color-mix(in srgb,var(--tint-glass) 95%,transparent); --gl90:color-mix(in srgb,var(--tint-glass) 93%,transparent); --gl80:color-mix(in srgb,var(--tint-glass) 86%,transparent); --gl60:color-mix(in srgb,var(--tint-glass) 70%,transparent); --gl20:rgba(0,0,0,.05);
  --gd97:color-mix(in srgb,var(--tint-gd) 97%,transparent); --gd84:color-mix(in srgb,var(--tint-gd) 88%,transparent); --gd80:color-mix(in srgb,var(--tint-gd) 85%,transparent);
  --dh1:color-mix(in srgb,var(--brand) 6%,#eef3f6); --dh2:color-mix(in srgb,var(--brand) 6%,#eef3f6); --dh3:color-mix(in srgb,var(--brand) 6%,#eef3f6); --dh4:color-mix(in srgb,var(--brand) 6%,#f1f5f8); --dh5:color-mix(in srgb,var(--brand) 6%,#eef2f5); --dh6:color-mix(in srgb,var(--brand) 6%,#eef1f4); --dh7:color-mix(in srgb,var(--brand) 6%,#eceef6);
  --hx1:color-mix(in srgb,var(--brand) 6%,#eef1f4); --hx2:color-mix(in srgb,var(--brand) 6%,#eef3f5); --hx3:color-mix(in srgb,var(--brand) 6%,#eff2f5); --hx4:color-mix(in srgb,var(--brand) 6%,#eef3f6); --hx5:color-mix(in srgb,var(--brand) 6%,#eef1f4); --hx6:color-mix(in srgb,var(--brand) 6%,#eef4f2);
  /* overlays inversés en noir-alpha */
  --o2:rgba(0,0,0,.025); --o3:rgba(0,0,0,.035); --o4:rgba(0,0,0,.045); --o5:rgba(0,0,0,.05);
  --o6:rgba(0,0,0,.06); --o7:rgba(0,0,0,.07); --o8:rgba(0,0,0,.08); --o9:rgba(0,0,0,.09);
  --o10:rgba(0,0,0,.1); --o12:rgba(0,0,0,.11); --o14:rgba(0,0,0,.12); --o16:rgba(0,0,0,.13);
  --o18:rgba(0,0,0,.14); --o22:rgba(0,0,0,.16);
}

/* ---------- POPUP SHELL ---------- */
.apop-backdrop{position:fixed;inset:0;z-index:1400;background:rgba(3,12,18,.62);
  backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}
.apop{position:relative;width:min(880px,96vw);height:min(720px,90dvh);
  background:linear-gradient(160deg,var(--surf-1),var(--surf-1b));border:1px solid var(--o8);
  border-radius:16px;box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));overflow:hidden}
/* Light : la bordure EXT des coques (carrousel des vues + hub IntentPopup) à --o8 (noir 8%) était quasi invisible
   sur fond clair → liseré net via --color-border-strong (renforcé). Dark inchangé. */
html[data-theme="light"] .apop, html[data-theme="light"] .intent-popup{border-color:var(--color-border-strong)}
.apop-header{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;gap:8px;padding:8px 14px;
  border-bottom:1px solid var(--o8);
  background:var(--o5);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);
  box-shadow:inset 0 1px 0 var(--o6)}
.apop-spacer{width:30px;flex-shrink:0}
.apop-exercice{width:90px;flex-shrink:0}
.apop-exercice .custom-dropdown{width:100%}
.apop-exercice .custom-dropdown-trigger{padding-top:5px;padding-bottom:5px;min-width:0}
.apop-exercice .custom-dropdown-menu{min-width:0}

/* ---------- FOOTER + EXPORT ---------- */
.apop-footer{position:absolute;bottom:0;left:0;right:0;z-index:3;display:flex;justify-content:center;gap:10px;flex-wrap:wrap;padding:3px 12px;
  border-top:1px solid var(--o8);background:var(--o5);
  backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);
  box-shadow:inset 0 -1px 0 var(--o6)}
.apop-export-btn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-family:var(--font-family);
  font-size:12px;font-weight:600;color:#fff;background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 22%, transparent),rgba(58,123,213,.18));
  border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:8px;padding:5px 15px;transition:.15s}

/* Modal de composition du dossier PDF (sélection des vues) */
.cex-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:rgba(3,12,18,.55);backdrop-filter:blur(3px)}
/* Backdrop du modal d'options PARTAGÉ (ReportExportModal) — réutilise le look .cex-modal mais doit passer AU-DESSUS
   des overlays de rapport (AnalysesPopup = z-index 1400) puisqu'il est ouvert PAR-DESSUS eux. */
.rex-backdrop{position:fixed;inset:0;z-index:1600;display:flex;align-items:center;justify-content:center;
  background:rgba(3,12,18,.55);backdrop-filter:blur(3px)}
.rex-modal{width:min(440px,94%);overflow-y:auto}   /* contenu plus haut (format+fond+qualité+palette+ancre) → scroll si écran court */
.cex-bg-btn.rex-off{opacity:.5;pointer-events:none}

/* ─── Éditeur d'annotations (ReportAnnotateEditor) : aperçu page-par-page + zones de commentaire ─── */
.rae-overlay{position:fixed;inset:0;z-index:1700;display:flex;flex-direction:column;background:rgba(6,15,21,.8);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);touch-action:none}
/* Barre d'outils COMPACTE (vise une seule ligne) : gap/padding réduits, séparateurs entre groupes. wrap = filet sur écrans étroits (pas d'overflow → préserve les popovers ancrés). */
.rae-bar{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 11px;
  background:var(--modal-surf);border-bottom:1px solid var(--o12);font-family:var(--font-family)}
.rae-title{font-size:13px;font-weight:700;color:var(--tx1);white-space:nowrap;margin-right:2px}
.rae-nav{display:inline-flex;align-items:center;gap:3px}
.rae-undo{display:inline-flex;align-items:center;gap:3px}
.rae-step{display:none}   /* fil d'Ariane « Options › Composition › PDF » masqué pour tenir sur une ligne */
.rae-step b{color:var(--brand);font-weight:800}
/* Bande de pages (bas de l'éditeur) : navigation + réordonnancement. */
.rae-strip{flex:0 0 auto;display:flex;align-items:center;gap:6px;overflow-x:auto;overflow-y:hidden;padding:12px 12px 9px;background:var(--modal-surf);border-top:1px solid var(--o12)}
.rae-strip-chip{flex:0 0 auto;position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:48px;padding:5px 8px;border:1px solid var(--o12);border-radius:8px;background:var(--o4);color:var(--tx2);cursor:grab;font-family:var(--font-family);
  transition:transform .15s cubic-bezier(.2,.8,.3,1),box-shadow .15s ease,opacity .15s ease,border-color .12s ease,margin .15s ease}
.rae-strip-chip:hover{border-color:color-mix(in srgb,var(--brand) 50%,transparent);transform:translateY(-2px)}
.rae-strip-chip.cur{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 16%,var(--o4));color:var(--tx1)}
/* Chip TIRÉ : « soulevé » (échelle + ombre + liseré pointillé brand) ; les autres s'estompent. */
.rae-strip.dragging .rae-strip-chip:not(.drag){opacity:.55}
.rae-strip-chip.drag,.rae-strip-chip.drag:hover{opacity:1;cursor:grabbing;z-index:5;border-style:dashed;border-color:var(--brand);
  background:color-mix(in srgb,var(--brand) 24%,var(--o4));color:var(--tx1);transform:translateY(-6px) scale(1.08) rotate(-2.5deg);
  box-shadow:0 10px 22px rgba(0,0,0,.45)}
/* Cible de dépôt : barre d'insertion animée à gauche du chip survolé + petit décalage pour « ouvrir » l'emplacement. */
.rae-strip-chip.over{margin-left:12px}
.rae-strip-chip.over::before{content:"";position:absolute;left:-8px;top:3px;bottom:3px;width:3px;border-radius:2px;
  background:var(--brand);box-shadow:0 0 7px var(--brand);animation:rae-strip-ins .7s ease-in-out infinite}
@keyframes rae-strip-ins{0%,100%{opacity:.45;transform:scaleY(.8)}50%{opacity:1;transform:scaleY(1)}}
.rae-strip-ic{font-size:14px;line-height:1}
.rae-strip-n{font-size:9.5px;font-weight:700}
.rae-strip-b{position:absolute;top:-5px;right:-5px;font-size:8.5px;font-weight:800;color:var(--surf-1);background:var(--brand);border-radius:8px;padding:0 4px}
html[data-theme="light"] .rae-strip-b{color:#fff}
.rae-navbtn{width:24px;height:24px;border-radius:6px;border:1px solid var(--o12);background:var(--o5);color:var(--tx2);
  cursor:pointer;font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.rae-navbtn:hover:not(:disabled){color:var(--tx1);border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.rae-navbtn:disabled{opacity:.4;cursor:not-allowed}
.rae-pageno{font-size:11.5px;font-weight:600;color:var(--tx2);min-width:54px;text-align:center;white-space:nowrap}
.rae-pagettl{font-size:12px;color:var(--mut1);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rae-addbtn{font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--tx8);cursor:pointer;white-space:nowrap;
  background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 38%, transparent);
  border-radius:7px;padding:5px 9px}
.rae-addbtn:hover{background:color-mix(in srgb, var(--brand) 20%, transparent);color:var(--tx1)}
.rae-spacer{flex:1 1 auto;min-width:6px}
.rae-cancel{font-family:var(--font-family);font-size:12px;color:var(--sl1);background:transparent;border:1px solid var(--o14);
  border-radius:7px;padding:6px 10px;cursor:pointer;white-space:nowrap}
.rae-cancel:hover{color:var(--sl2)}
.rae-gen{font-family:var(--font-family);font-size:12px;font-weight:600;color:var(--surf-1);background:var(--brand);
  border:none;border-radius:7px;padding:6px 12px;cursor:pointer;white-space:nowrap}
.rae-gen:hover{background:#5bd3b5}
html[data-theme="light"] .rae-gen{color:#fff}
.rae-body{flex:1 1 auto;display:flex;min-height:0;overflow:hidden;position:relative}
/* Page CENTRÉE (h. et v.) quand elle tient ; `safe center` = ne rogne PAS le débordement quand on zoome → bord atteignable au scroll/pan.
   (fallback `center` d'abord pour les navigateurs sans `safe`.) */
.rae-stage{flex:1 1 auto;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;
  align-items:safe center;justify-content:safe center;gap:10px;padding:18px}
/* Pan : quand l'aperçu est zoomé (> 100 %), glisser le fond de page déplace la vue. */
.rae-stage.rae-pannable .rae-page{cursor:grab}
.rae-stage.rae-panning{cursor:grabbing}
.rae-stage.rae-panning .rae-page{cursor:grabbing}
.rae-dragcatch.rae-panning{cursor:grabbing}
/* Multi-vue : pages de front (page active éditable + aperçus lecture seule). */
.rae-stage.rae-multi{flex-direction:row;align-items:flex-start;justify-content:safe center;flex-wrap:nowrap;gap:14px}
.rae-stage.rae-multi .rae-hint{display:none}
.rae-prevpage{cursor:pointer;opacity:.94;flex:0 0 auto;transition:opacity .15s,transform .15s,box-shadow .15s}
.rae-prevpage *{pointer-events:none}
.rae-prevpage:hover{opacity:1;transform:translateY(-2px);box-shadow:0 22px 60px rgba(0,0,0,.6),0 0 0 2px var(--brand)}
.rae-prevpage .rae-ztext{white-space:pre-wrap;overflow:hidden}
.rae-prev-veil{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:flex-end;padding:8px}
.rae-prev-edit{font-size:11px;font-weight:800;color:#fff;background:rgba(0,0,0,.55);border-radius:999px;padding:3px 9px;opacity:0;transition:opacity .15s}
.rae-prevpage:hover .rae-prev-edit{opacity:1}
/* ── Contrôles SEGMENTÉS (zoom stepper + multi-vue) : track unifié, segments sans bordure, pas d'espaces ── */
.rae-seg{display:inline-flex;align-items:center;gap:2px;padding:2px;background:var(--o4);border:1px solid var(--o10);border-radius:9px}
.rae-seg .rae-navbtn{width:auto;min-width:24px;height:22px;padding:0 6px;border:none;background:transparent;border-radius:6px;
  color:var(--tx2);font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s,transform .08s}
.rae-seg .rae-navbtn:hover:not(:disabled){background:var(--o10);color:var(--tx1)}
.rae-seg .rae-navbtn:active:not(:disabled){transform:scale(.92)}
.rae-seg .rae-navbtn:disabled{opacity:.35;cursor:not-allowed}
/* Zoom : libellé central (largeur stable, chiffres tabulaires) */
.rae-zoomseg .rae-zoomlbl{min-width:48px;font-size:11.5px;font-weight:700;color:var(--tx1);font-variant-numeric:tabular-nums;letter-spacing:.01em}
/* Multi-vue : segment ACTIF plein marque (mini-pages) */
.rae-multiseg .rae-navbtn svg{display:block;height:13px;width:auto}
.rae-multiseg .rae-navbtn svg rect{fill:none;stroke:currentColor;stroke-width:1.5}
.rae-multiseg .rae-navbtn.on{background:var(--brand);color:#fff;box-shadow:0 1px 5px color-mix(in srgb,var(--brand) 45%,transparent)}
.rae-multiseg .rae-navbtn.on:hover{background:var(--brand);color:#fff}
.rae-multiseg .rae-navbtn.on svg rect{fill:rgba(255,255,255,.30);stroke:#fff}
/* Palette de blocs (compositeur) : vignettes capturées des blocs d'analyse, à gauche du stage. */
.rae-palette{overflow-y:auto;background:var(--surf-1);border-right:1px solid var(--o10);padding:10px;font-family:var(--font-family)}
.rae-palette-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;font-weight:700;color:var(--tx1);margin-bottom:8px}
.rae-pal-add{font-size:11px;font-weight:700;color:var(--surf-1);background:var(--brand);border:none;border-radius:7px;padding:4px 9px;cursor:pointer;white-space:nowrap}
.rae-pal-add:hover:not(:disabled){background:#5bd3b5}
.rae-pal-add:disabled{opacity:.4;cursor:default}
html[data-theme="light"] .rae-pal-add{color:#fff}
.rae-palette-loading{font-size:11px;color:var(--mut1);font-style:italic;margin-bottom:8px}
/* Recherche dans la palette. */
.rae-pal-search{display:flex;align-items:center;gap:4px;margin-bottom:8px}
.rae-pal-q{flex:1 1 auto;min-width:0;background:var(--o4);border:1px solid var(--o12);border-radius:7px;padding:5px 8px;color:var(--tx1);font-size:11.5px;font-family:var(--font-family)}
.rae-pal-q:focus{border-color:var(--brand);outline:none}
.rae-pal-qx{flex:0 0 auto;background:none;border:1px solid var(--o10);border-radius:7px;color:var(--mut1);padding:4px 7px;cursor:pointer;font-size:11px}
.rae-pal-qx:hover{border-color:var(--brand);color:var(--tx1)}
.rae-pal-group{margin-bottom:6px}
.rae-pal-grouphead{display:flex;align-items:center;gap:6px;width:100%;font-family:var(--font-family);font-size:10.5px;font-weight:700;color:var(--mut1);text-transform:uppercase;letter-spacing:.4px;background:none;border:none;padding:6px 2px 4px;margin:0;cursor:pointer;text-align:left}
.rae-pal-grouphead:hover{color:var(--tx2)}
.rae-pal-caret{font-size:9px;width:10px;flex:0 0 auto}
.rae-pal-gname{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rae-pal-gsel{flex:0 0 auto;font-size:9.5px;font-weight:800;color:var(--surf-1);background:var(--brand);border-radius:9px;padding:1px 6px;letter-spacing:0}
html[data-theme="light"] .rae-pal-gsel{color:#fff}
.rae-pal-count{flex:0 0 auto;font-size:9.5px;font-weight:700;color:var(--mut1);background:var(--o8);border-radius:9px;padding:1px 6px;letter-spacing:0}
.rae-pal-item{display:flex;flex-direction:column;gap:4px;margin-bottom:7px;border:1px solid var(--o10);border-radius:10px;padding:6px;background:var(--o4);cursor:pointer;transition:border-color .12s,background .12s}
.rae-pal-item:hover{border-color:color-mix(in srgb,var(--brand) 50%,transparent)}
.rae-pal-item.sel{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 16%,var(--o4))}
.rae-pal-thumb{position:relative}
.rae-pal-item img{width:100%;height:auto;display:block;border-radius:6px;background:transparent}
.rae-pal-ph{height:50px;display:flex;align-items:center;justify-content:center;color:var(--mut1);font-size:13px;background:var(--o2);border-radius:6px}
/* Pied : pastille (pill) de sélection alignée avec la légende + badge d'usage. */
.rae-pal-foot{display:flex;align-items:center;gap:6px}
.rae-pal-pill{flex:0 0 auto;width:16px;height:16px;border-radius:999px;border:1.5px solid var(--o16);background:var(--surf-2);
  display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;line-height:1;transition:background .12s,border-color .12s}
.rae-pal-item.sel .rae-pal-pill{background:var(--brand);border-color:var(--brand)}
.rae-pal-lbl{flex:1 1 auto;font-size:11px;color:var(--tx1);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rae-pal-uses{flex:0 0 auto;font-size:9px;font-weight:800;color:var(--surf-1);background:var(--brand);border-radius:8px;padding:1px 5px}
html[data-theme="light"] .rae-pal-uses{color:#fff}
.rae-pal-pages{font-size:9px;color:var(--mut1);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:22px}
/* Fantôme de drag-and-drop (bloc tiré de la palette vers la page). */
.rae-palghost{position:fixed;z-index:2000;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:3px;width:118px;padding:5px;background:var(--modal-surf,var(--surf-2));border:1px solid var(--brand);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.45);opacity:.93}
.rae-palghost img{width:100%;height:auto;display:block;border-radius:4px;background:transparent}
.rae-palghost span{font-size:10px;font-weight:700;color:var(--brand)}
/* Splitter de la palette : réutilise le look .fintree-splitter (poignée à grip + états hover/active). */
/* Bloc déposé (compositeur) : même manipulation que la vue ; bouton retirer en rouge. */
.rae-itembox:hover{outline-color:color-mix(in srgb,var(--brand) 75%,transparent)}
.rae-imgctr.danger:hover{background:#e5484d}
/* Item encore en aperçu DÉMO (pas les vraies données) : liseré pointillé + badge ; « 👁 » pour basculer en réel. */
.rae-itembox.demo{outline:1px dashed color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:2px}
.rae-itembox.sel{outline:2px solid var(--brand);outline-offset:2px}
/* Bloc en cours de capture HD (drop sans aperçu démo) : placeholder + spinner. */
.rae-item-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:90px;padding:18px;cursor:move;
  background:var(--o4);border:1px dashed color-mix(in srgb,var(--brand) 45%,transparent);border-radius:6px;color:var(--tx2);font-size:11px;font-weight:700}
.rae-itemtag{position:absolute;left:4px;bottom:4px;font-size:9px;font-weight:700;letter-spacing:.3px;color:#fff;background:rgba(10,28,38,.72);border-radius:5px;padding:1px 6px;pointer-events:none;text-transform:uppercase}
/* Barre d'alignement de la multi-sélection (réutilise .rae-stylebar). */
.rae-itembar{justify-content:flex-start}
.rae-itembar-lbl{font-size:11px;font-weight:700;color:var(--tx1);padding:0 4px;white-space:nowrap}
/* Barre d'édition de la couverture : champs texte (titre/société/exercice/sous-titre). */
.rae-covbar{flex-wrap:wrap}
/* Colonne GAUCHE de la barre couverture : libellé « Couverture » + bouton Fond EMPILÉS verticalement. order:-1 la place en
   tête (elle est en dernier dans le DOM pour ne pas déplacer le gros popover Fond). Divider à droite = filet façon .rae-stylesep. */
.rae-cov-left{order:-1;display:flex;flex-direction:column;align-items:flex-start;gap:7px;align-self:stretch;justify-content:center;padding-right:12px;margin-right:4px;border-right:1px solid var(--o12)}
.rae-cov-left .rae-itembar-lbl{padding:0}
/* Le bouton Fond est désormais à GAUCHE → son popover ouvre vers la DROITE (sinon, avec right:0, il sortait par la gauche). */
.rae-cov-left .rae-tpl-pop{right:auto;left:0}
/* Barre de règle conditionnelle (couleur d'une boîte selon un seuil sur un chiffre du dossier). */
.rae-condbar{flex-wrap:wrap;gap:6px}
.rae-condbar .rae-cov-in{flex:0 1 auto;min-width:70px}
.rae-cond-state{font-size:10px;font-weight:800;color:var(--mut1)}
.rae-cov-in{flex:1 1 150px;min-width:0;background:var(--o4);border:1px solid var(--o12);border-radius:7px;padding:5px 8px;color:var(--tx1);font-size:12px;font-family:var(--font-family)}
.rae-cov-in-sm{flex:0 1 110px}
.rae-cov-in-wide{flex:2 1 220px}
.rae-cov-in:focus{border-color:var(--brand);outline:none}
/* Champ couverture LABELLISÉ (sous-titre au-dessus de l'input/combo). Le champ porte le flex ; l'input le remplit. */
.rae-covbar{align-items:flex-end}
.rae-cov-field{display:flex;flex-direction:column;gap:3px;flex:1 1 150px;min-width:0}
.rae-cov-field:has(.rae-cov-in-sm){flex:0 1 110px}
.rae-cov-field:has(.rae-cov-in-wide){flex:2 1 220px}
.rae-cov-field .rae-cov-in{width:100%;flex:none}
.rae-cov-field .custom-dropdown,.rae-cov-field .custom-dropdown-trigger{width:100%}
.rae-cov-flbl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--mut1);padding-left:2px}
/* Objet-GROUPE : cadre englobant (n'intercepte pas les clics) + poignée de resize proportionnel. */
.rae-groupbox{position:absolute;border:1.5px solid var(--brand);border-radius:4px;pointer-events:none;z-index:6;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--brand) 22%,transparent)}
.rae-groupresize{position:absolute;right:-8px;bottom:-8px;width:18px;height:18px;cursor:nwse-resize;pointer-events:auto;
  background:var(--brand);border:2px solid #fff;border-radius:50%;box-shadow:0 1px 5px rgba(0,0,0,.5);touch-action:none}
/* Guides d'alignement (magnétisme) pendant le drag. */
.rae-guide{position:absolute;z-index:7;pointer-events:none;background:var(--brand);box-shadow:0 0 4px var(--brand)}
.rae-guide-v{top:0;bottom:0;width:1px;margin-left:-0.5px}
.rae-guide-h{left:0;right:0;height:1px;margin-top:-0.5px}
/* Rectangle de sélection lasso. */
.rae-lasso{position:absolute;z-index:8;pointer-events:none;border:1px dashed var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border-radius:2px}
/* Export PNG : on masque tout le chrome d'édition pour une capture propre. */
.rae-page.rae-exporting .rae-imgtools,
.rae-page.rae-exporting .rae-rs,
.rae-page.rae-exporting .rae-imgresize,
.rae-page.rae-exporting .rae-zhead,
.rae-page.rae-exporting .rae-zresize,
.rae-page.rae-exporting .rae-guide,
.rae-page.rae-exporting .rae-groupbox,
.rae-page.rae-exporting .rae-itemtag,
.rae-page.rae-exporting .rae-imggrip,
.rae-page.rae-exporting .rae-logogrip{display:none !important}
.rae-page.rae-exporting .rae-itembox,.rae-page.rae-exporting .rae-imgbox{outline:none !important}
/* Capture du FOND pour le PPTX riche : on masque le TEXTE éditable (commentaires, titres, page de garde, sections) — il sera
   reposé en zones de texte ÉDITABLES par-dessus le fond. visibility:hidden conserve le layout → measureTexts mesure le rect
   exact alors même que le texte est absent du PNG capturé (même rendu pour mesure + capture). */
.rae-page.rae-pptxcap [data-pptxtext]{visibility:hidden !important}
/* Palette « Éléments » : titre / filet / page / image. */
.rae-pal-elems{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.rae-pal-elem{flex:1 1 auto;font-size:10.5px;font-weight:700;color:var(--tx2);background:var(--o4);border:1px solid var(--o10);border-radius:7px;padding:5px 6px;cursor:pointer;text-align:center;font-family:var(--font-family);white-space:nowrap;transition:transform .1s,border-color .12s,color .12s,background .12s}
.rae-pal-elem:hover{border-color:var(--brand);color:var(--tx1);background:color-mix(in srgb,var(--brand) 8%,var(--o4));transform:translateY(-1px)}
/* Bouton VEDETTE : tableau financier — élément phare, ressort des autres (tuile icône + titre + sous-titre + ★). */
.rae-pal-feat{display:flex;align-items:center;gap:10px;width:100%;margin-bottom:8px;padding:9px 11px;cursor:pointer;text-align:left;font-family:var(--font-family);
  background:color-mix(in srgb,var(--brand) 14%,var(--o4));border:1px solid color-mix(in srgb,var(--brand) 55%,transparent);border-radius:10px;transition:transform .14s,box-shadow .14s,background .14s}
.rae-pal-feat:hover{background:color-mix(in srgb,var(--brand) 22%,var(--o4));transform:translateY(-1px);box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 28%,transparent)}
.rae-pal-feat-ic{flex:0 0 auto;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:color-mix(in srgb,var(--brand) 24%,transparent);font-size:16px;line-height:1}
.rae-pal-feat-tx{display:flex;flex-direction:column;gap:1px;line-height:1.15;flex:1 1 auto;min-width:0}
.rae-pal-feat-tx b{font-size:12px;font-weight:800;color:var(--tx1)}
.rae-pal-feat-tx small{font-size:9.5px;font-weight:600;color:var(--brand);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rae-pal-feat-tag{flex:0 0 auto;font-size:12px;color:var(--brand)}
.rae-pal-elem-file{display:inline-flex;align-items:center;justify-content:center}
/* Boutons « Synthèse IA » (palette + barre de style) : accent de marque. */
.rae-pal-elem-ai{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 45%,transparent);font-weight:800}
.rae-pal-elem-ai:hover:not(:disabled){background:var(--brand);color:#fff}
.rae-pal-elem-ai:disabled{opacity:.6;cursor:wait}
.rae-styb-ai{color:var(--brand);font-weight:800}
.rae-styb-ai:disabled{opacity:.6;cursor:wait}
/* Titre de section (sans boîte) + séparateur. */
.rae-zheading{font-weight:800 !important;background:transparent !important;border:none !important;resize:none;letter-spacing:.2px;padding:2px 4px !important}
.rae-divline{position:absolute;left:0;right:0;top:50%;height:2px;border-radius:2px;transform:translateY(-50%)}
/* Champs dynamiques + snippets (palette). */
.rae-pal-merge{margin:0 0 8px}
.rae-pal-merge-lbl{display:block;font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--mut1);margin-bottom:4px}
.rae-pal-merge-row{display:flex;flex-wrap:wrap;gap:4px}
.rae-pal-mf{font-size:10px;font-weight:700;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand) 35%,transparent);border-radius:6px;padding:3px 6px;cursor:pointer;font-family:var(--font-family)}
.rae-pal-mf:hover{background:var(--brand);color:#fff}
.rae-pal-mf.sel{background:var(--brand);color:#fff;border-color:var(--brand)}
/* Bouton chiffre/raccourci avec VALEUR en lecture directe (count-up animé au switch de période/filtre). */
.rae-pal-fig{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;line-height:1.15;padding:4px 8px}
.rae-pal-fig .rae-fig-k{font-size:9.5px;font-weight:800;letter-spacing:.02em}
.rae-pal-fig .rae-fig-val{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tx1);min-height:1em}
.rae-pal-fig:hover .rae-fig-val,.rae-pal-fig.sel .rae-fig-val{color:#fff}
.rae-pal-perrow{align-items:center;margin-top:7px;gap:6px;margin-bottom:5px}
.rae-pal-perlbl{margin:0}
.rae-pal-copyrow{align-items:center;margin-top:7px;gap:6px}
.rae-merge-ok{font-size:10px;font-weight:800;color:#22c55e}
/* CustomDropdown compacts dans les barres de l'éditeur (sinon min-width:130px trop large). */
.rae-condbar .custom-dropdown-trigger,.rae-kpi-edit .custom-dropdown-trigger,.rae-pal-perrow .custom-dropdown-trigger{min-width:0;padding:4px 8px;font-size:11px;border-radius:7px}
.rae-kpi-edit .custom-dropdown{width:100%;margin-bottom:4px}
.rae-pal-perselect{font-size:10px;font-weight:700;color:var(--tx1);background:var(--o4);border:1px solid var(--o12);border-radius:6px;padding:2px 4px;margin-left:4px;font-family:var(--font-family)}
.rae-pal-snip{font-size:10px;font-weight:700;color:var(--tx2);background:var(--o4);border:1px solid var(--o10);border-radius:6px;padding:3px 7px;cursor:pointer;font-family:var(--font-family)}
.rae-pal-snip:hover{border-color:var(--brand);color:var(--tx1)}
/* Bouton CTA (zone) : pastille pleine, label centré ; inputs label/url en édition. */
.rae-zbtn{flex:1 1 auto;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#fff;font-weight:800;font-size:inherit;text-align:center;padding:6px 10px;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.rae-zbtn-in{margin-bottom:4px;font-size:11px}
.rae-zbtn-link{width:100%;margin-bottom:5px;font-size:10.5px;font-weight:700;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand) 38%,transparent);border-radius:7px;padding:5px 8px;cursor:pointer;font-family:var(--font-family)}
.rae-zbtn-link:hover:not(:disabled){background:var(--brand);color:#fff}
.rae-zbtn-link:disabled{opacity:.6;cursor:wait}
/* Badge de score (zone) : pastille bordée + nombre + libellé. */
.rae-zscore{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2.5px solid;border-radius:14px;background:color-mix(in srgb,var(--surf-2) 88%,transparent)}
.rae-zscore-v{font-weight:800;line-height:1}
.rae-zscore-l{font-size:9px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;opacity:.75;margin-top:2px}
/* Bloc KPI : carte valeur + variation + sparkline (chiffres du dossier). */
.rae-kpi-edit{display:flex;flex-direction:column;gap:4px;margin-bottom:5px}
.rae-kpi{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:8px 12px;min-height:0}
.rae-kpi-lbl{font-size:11px;font-weight:700;color:var(--tx2);line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rae-kpi-val{font-size:22px;font-weight:800;line-height:1.05}
.rae-kpi-var{font-size:11px;font-weight:800;line-height:1}
.rae-kpi-var.up{color:#22c55e}.rae-kpi-var.down{color:#ef4444}
.rae-kpi-vs{font-weight:600;color:var(--mut1)}
.rae-kpi-spark{width:100%;height:26px;margin-top:4px;overflow:visible}
.rae-kpi-spark polyline{fill:none;stroke-width:1.6;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.rae-kpi-spark polyline.rae-spark-prev{stroke-dasharray:3 2.4;opacity:.8}
/* ── Tableau financier configurable du composeur (zone "table") — palette-aware, fonds capture-safe (pas de color-mix critique) ── */
/* font-size posée INLINE (= 11px × Scale du redimensionnement) ; toutes les dimensions internes en EM → le tableau
   scale UNIFORMÉMENT avec sa largeur (police + paddings + sparkline), comme un objet image. */
.frt{border-radius:3px;overflow:hidden;font-family:var(--font-family,inherit);font-size:11px;line-height:1.3;width:100%;box-sizing:border-box}
.frt-light{background:#fff;color:#1c2834;--frt-line:#e6ebf0;--frt-zebra:#f5f8fa;--frt-tot:#eef3f6;--frt-mut:#6e7d8c;--frt-neg:#c0512a}
.frt-dark{background:#0c1f2a;color:#e4ecf0;--frt-line:#21323d;--frt-zebra:#11242f;--frt-tot:#162c38;--frt-mut:#8fa8b5;--frt-neg:#f0997b}
.frt-empty{padding:1.6em;text-align:center;font-style:italic;color:#8aa0ad;border:1px dashed #cdd8df;border-radius:10px}
.frt-head{display:flex;justify-content:space-between;align-items:center;gap:.7em;padding:.72em 1.1em;background:var(--brand);color:#fff}
.frt-head-t{font-size:1.1em;font-weight:700}
.frt-head-u{font-size:.9em;opacity:.88;font-weight:600;white-space:nowrap}
/* Layout AUTO : libellé (1ʳᵉ col) absorbe l'espace ; années/TCAM/%CA/sparkline = largeur du CONTENU (capées par leur valeur). */
.frt-table{width:100%;border-collapse:collapse;table-layout:auto}
.frt-h{padding:.55em;font-weight:700;color:var(--frt-mut);font-size:.9em;border-bottom:1px solid var(--frt-line);white-space:nowrap}
.frt-hl{text-align:left;padding-left:.9em;width:100%;white-space:normal}.frt-hr{text-align:right}.frt-hc{text-align:center}
.frt-h.frt-prev{color:var(--brand)}
.frt-row>td{padding:.36em .55em;border-bottom:1px solid var(--frt-line)}
.frt-lbl{text-align:left;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Chevron expand/collapse (lecture interactive) */
.frt-toggle-slot{display:inline-flex;width:1.15em;align-items:center;justify-content:center;vertical-align:middle;flex:0 0 auto}
.frt-toggle{border:none;background:transparent;color:var(--brand,#00B1CF);cursor:pointer;font-size:.78em;line-height:1;padding:0;width:1em;height:1em;transition:opacity .12s}
.frt-toggle:hover{opacity:.6}
.frt-val{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.frt-val.frt-prev{color:var(--brand)}
/* Valeurs NÉGATIVES des agrégats en corail (tous styles, togglable) — prime sur le teal prévi. */
.frt td.frt-neg{color:var(--frt-neg)}
.frt-cagr,.frt-kpi{font-weight:700}
.frt-title>.frt-lbl{font-weight:700;text-transform:uppercase;font-size:.9em;letter-spacing:.02em}
.frt-total>td{font-weight:800;border-top:1.5px solid var(--brand);background:var(--frt-tot)}
.frt-stmt>td{padding:.55em .9em;font-weight:800;font-size:.9em;text-transform:uppercase;letter-spacing:.04em;color:var(--brand);background:var(--frt-zebra);border-bottom:1px solid var(--frt-line)}
/* Ligne d'espacement entre états (transparente, sans bordure). */
.frt-spacer>td{height:1.3em;padding:0;background:transparent;border:none}
.frt-spark{text-align:center;padding:.18em .55em;white-space:nowrap}
.frt-spark svg{width:4.9em;height:1.45em;display:inline-block;overflow:visible}
.frt-spk{fill:none;stroke:var(--brand);stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.frt-spk-prev{stroke-dasharray:3 2;opacity:.8}
/* ── STYLES de tableau (sélectionnables, live preview) — "classique" = base ci-dessus ── */
/* Minimal : titre sobre + filet marque, pas de bordures de ligne, aéré. */
.frt-style-minimal .frt-head{background:transparent;border-bottom:2px solid var(--brand);padding-bottom:.5em}
.frt-style-minimal .frt-head-t{color:var(--brand)}
.frt-style-minimal .frt-head-u{color:var(--frt-mut)}
.frt-style-minimal .frt-row>td{border-bottom:none}
.frt-style-minimal .frt-h{border-bottom:1px solid var(--frt-line)}
.frt-style-minimal .frt-total>td{background:transparent;border-top:1px solid var(--brand)}
.frt-style-minimal .frt-stmt>td{background:transparent;border-bottom:none}
/* Lignes : grille complète (toutes les cellules bordées). */
.frt-style-lignes .frt-table{border:1px solid var(--frt-line)}
.frt-style-lignes .frt-h,.frt-style-lignes .frt-row>td{border:1px solid var(--frt-line)}
/* Rayé : zébrures sur les lignes de corps (totaux/sections gardent leur fond). */
.frt-style-raye .frt-row>td{border-bottom:none}
.frt-style-raye tbody tr.frt-row:nth-of-type(odd)>td{background:var(--frt-zebra)}
/* FinTree : look « pilotage » — bandeau Historique/Prévisionnel, sobre, dense, totaux soulignés, taux muets, prévi en teal. */
.frt-style-fintree .frt-head{background:transparent;border-bottom:1px solid var(--frt-line)}
.frt-style-fintree .frt-head-t{color:var(--brand)}
.frt-style-fintree .frt-head-u{color:var(--frt-mut)}
.frt-style-fintree .frt-h{text-transform:none}
.frt-style-fintree .frt-row>td{border-bottom:none;padding-top:.3em;padding-bottom:.3em}
/* Sous-totaux (Marge brute, BFR…) : tint discret + bord gauche 2px sur la cellule libellé. */
.frt-style-fintree .frt-sub>td{font-weight:600;background:var(--frt-zebra)}
.frt-style-fintree .frt-sub>td:first-child{border-left:2px solid var(--brand)}
/* Totaux MAJEURS (CA, EBE, REX, RN, ACTIF/PASSIF NET, flux) : tint + filet supérieur + bord gauche 3px (libellé). */
.frt-style-fintree .frt-major>td{font-weight:700;background:var(--frt-tot);border-top:1px solid var(--brand)}
.frt-style-fintree .frt-major>td:first-child{border-left:3px solid var(--brand)}
.frt-style-fintree .frt-stmt>td{background:var(--frt-zebra);color:var(--brand)}
.frt-style-fintree .frt-pctrow>td{font-size:.84em;color:var(--brand);opacity:.82}
.frt-style-fintree .frt-pctrow .frt-lbl{padding-left:1.5em}
/* Barres de % (style FinTree) : valeur + barre fine sous la valeur, largeur = ratio, couleur par seuil. */
.frt-style-fintree .frt-pct-v{display:block;text-align:right;line-height:1.1}
.frt-style-fintree .frt-pct-bar{display:block;height:3px;margin-top:2px;border-radius:2px;background:var(--frt-zebra);overflow:hidden}
.frt-style-fintree .frt-pct-fill{display:block;height:100%;border-radius:2px;min-width:1px}
/* Zone "table" dans l'éditeur : hauteur PILOTÉE PAR LE CONTENU (width-driven) + host capturable + panneau de config flottant */
.rae-zone-table{height:auto!important;min-height:40px;overflow:visible}
.frt-host{width:100%}
/* Zone "chart" : hauteur FIXE (HFrac via style inline, ≠ table) → le SfChart remplit le conteneur. */
.crb-wrap{width:100%;height:100%;min-height:120px}
.crb-host{width:100%;height:100%}
.crb-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:120px;font-size:12px;color:var(--mut2);border:1px dashed var(--o16);border-radius:8px;text-align:center;padding:8px}
.frt-cfg{position:absolute;left:0;bottom:calc(100% + 6px);z-index:24;display:flex;flex-direction:column;gap:6px;min-width:280px;max-width:440px;padding:9px 11px;background:#0f2734;color:#e4ecf0;border:1px solid rgba(255,255,255,.13);border-radius:11px;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.frt-cfg.frt-cfg-below{bottom:auto;top:calc(100% + 6px)}   /* (hérité) zone près du haut → panneau SOUS la zone */
/* Barre de config DOCKÉE en haut du canevas (ancrée à .rae-body) → visible quelle que soit la taille/position du tableau. */
.frt-cfg.frt-cfg-dock{position:absolute;top:0;right:0;bottom:auto;left:0;transform:none;z-index:45;
  flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 12px;min-width:0;max-width:none;padding:5px 13px;
  background:#07151c;border-color:rgba(255,255,255,.08);border-radius:0 0 12px 12px;border-top:none;
  box-shadow:0 8px 24px rgba(0,0,0,.5)}   /* fond PLUS FONCÉ ; s'étend sur toute la zone preview (left posé inline = fin de palette) */
/* Version COMPACTE de la barre dockée (libellés/chips/dropdowns/valeurs resserrés). */
.frt-cfg-dock .frt-cfg-grp{gap:5px}
.frt-cfg-dock .frt-cfg-ttl{font-size:11px;padding-right:4px}
.frt-cfg-dock .frt-cfg-lbl{font-size:8.5px}
.frt-cfg-dock .frt-chip{padding:2px 8px;font-size:10px}
.frt-cfg-dock .frt-cfg-step .frt-chip{padding:2px 7px;min-width:22px}
.frt-cfg-dock .frt-cfg-val{font-size:10px;min-width:16px}
.frt-cfg-dock .custom-dropdown-trigger{padding:2px 7px;font-size:10px}
.frt-cfg-grp{display:inline-flex;align-items:center;gap:6px}
.frt-cfg-ttl{font-size:12px;font-weight:800;color:#fff;padding-right:6px;border-right:1px solid rgba(255,255,255,.16);white-space:nowrap}
.frt-cfg-step{gap:4px}
.frt-cfg-step .frt-chip{padding:4px 8px;min-width:26px}
.frt-cfg-val{font-size:11px;font-weight:700;color:#fff;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}
.frt-cfg-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.frt-cfg-lbl{font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#8fa8b5}
.frt-cfg-sep{color:#8fa8b5;font-weight:700}
.frt-chip{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.05);color:#cfe0e8;cursor:pointer;transition:all .12s}
.frt-chip:hover{background:rgba(255,255,255,.12)}
.frt-chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.frt-cfg .custom-dropdown-trigger{min-width:0;padding:4px 8px;font-size:11px;border-radius:7px}
/* Champ texte dans le dock sombre (ex. titre du graphique). */
.frt-cfg-in{width:150px;max-width:42vw;padding:4px 8px;font-size:11px;border-radius:7px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#e4ecf0;outline:none}
.frt-cfg-in:focus{border-color:var(--brand)}
.frt-cfg-in::placeholder{color:#7f97a4}
/* Sélecteur de couleur (palette du cabinet) — swatches dans le dock chart. */
.crb-swatches{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap}
.crb-sw{width:16px;height:16px;border-radius:4px;border:1px solid rgba(255,255,255,.25);cursor:pointer;padding:0;font-size:8px;font-weight:700;color:#cfe0e8;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:box-shadow .1s}
.crb-sw-auto{background:rgba(255,255,255,.06)}
.crb-sw.on{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.55)}
/* Ligne de série dans le dock : enroule, séparateur léger. */
.frt-cfg-serieshd{justify-content:space-between}
.crb-series{flex-wrap:wrap;gap:5px;padding:5px 0;border-top:1px dashed rgba(255,255,255,.12)}
.crb-series .custom-dropdown-trigger{min-width:0;font-size:10px;padding:3px 7px}
.crb-rm{padding:2px 8px}
.frt-caphost{position:fixed;left:-99999px;top:0;pointer-events:none;opacity:1}
.rae-kpi-empty{align-items:center;justify-content:center;color:var(--mut1);font-size:11px;font-weight:700;font-style:italic}
/* Tableau comparatif N/N-1. */
.rae-cmp{width:100%;border-collapse:collapse;line-height:1.25}
.rae-cmp th{font-size:.85em;font-weight:800;text-align:right;padding:2px 6px 4px;border-bottom:1.5px solid currentColor;opacity:.85;white-space:nowrap}
.rae-cmp td{padding:3px 6px;text-align:right;font-weight:700;white-space:nowrap}
.rae-cmp td.rae-cmp-lbl{text-align:left;font-weight:600;width:40%}
.rae-cmp tbody tr+tr td{border-top:1px solid rgba(127,127,127,.18)}
.rae-cmp td.up{color:#22c55e}.rae-cmp td.down{color:#ef4444}
/* Page de SECTION (intercalaire) : grand titre centré. */
.rae-section{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:8% 10%;text-align:center}
.rae-section-title{font-size:5cqh;font-weight:800;border:none;background:transparent;text-align:center;width:100%;outline:none;font-family:var(--font-family);border-bottom:2px solid var(--brand);padding-bottom:8px}
.rae-dark .rae-section-title{color:#fff}.rae-light .rae-section-title{color:#1c2836}
.rae-section-sub{font-size:1.8cqh;border:none;background:transparent;text-align:center;width:100%;outline:none;font-family:var(--font-family);color:var(--mut1)}
/* SOMMAIRE (table des matières) — aperçu éditeur ; le PDF rend les liens internes cliquables. */
.rae-toc{position:absolute;inset:0;display:flex;flex-direction:column;gap:1.2cqh;padding:9% 11% 7%;font-family:var(--font-family)}
.rae-toc-title{font-size:3.4cqh;font-weight:800;border-bottom:2px solid var(--brand);padding-bottom:6px;margin-bottom:1cqh}
.rae-dark .rae-toc-title{color:#fff}.rae-light .rae-toc-title{color:#1c2836}
.rae-toc-row{display:flex;align-items:baseline;gap:6px;font-size:2cqh}
.rae-dark .rae-toc-row{color:#dfe9f0}.rae-light .rae-toc-row{color:#28303a}
.rae-toc-row-t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rae-toc-row-dots{flex:1;border-bottom:1.5px dotted var(--mut1);transform:translateY(-3px);opacity:.6}
.rae-toc-row-n{font-weight:700;color:var(--brand);min-width:1.6em;text-align:right}
.rae-toc-empty{font-size:1.7cqh;color:var(--mut1);line-height:1.5;background:rgba(127,127,127,.07);border:1px dashed var(--mut1);border-radius:8px;padding:10px 12px}
.rae-toc-note{margin-top:auto;font-size:1.4cqh;color:var(--mut1);opacity:.85}
/* Filigrane diagonal (toutes pages). */
/* Calques d'IMAGE de fond FLOUTÉE (le flou ne touche que l'image, pas le contenu). Inset négatif = le flou déborde et est rogné. */
.rae-bgimg{position:absolute;inset:-24px;z-index:0;background-size:cover;background-position:center;pointer-events:none}
/* Image de COUVERTURE recadrable (object-fit:cover + object-position + scale) — géométrie identique au canvas PDF. */
.rae-bgimg-el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none;display:block}
.rae-bgveil{position:absolute;inset:0;z-index:0;pointer-events:none}
.rae-watermark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1;
  font-size:13cqh;font-weight:800;color:rgba(140,140,140,.10);transform:rotate(-35deg);white-space:nowrap;overflow:hidden;letter-spacing:2px}
/* En-tête maître. */
.rae-rhead{position:absolute;top:1.4%;right:6.7%;left:6.7%;text-align:right;font-size:1.05cqh;pointer-events:none}
.rae-dark .rae-rhead{color:#6b8a9a}.rae-light .rae-rhead{color:#96a3b0}
/* En-tête de SECTION (rappel du chapitre courant) : titre accent à gauche + filet sous toute la largeur ; en-tête global éventuel à droite. */
.rae-sechead{position:absolute;top:1.6%;left:6.7%;right:6.7%;display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  padding-bottom:.5cqh;border-bottom:1px solid color-mix(in srgb,var(--brand) 45%,transparent);pointer-events:none}
.rae-sechead-t{font-size:1.35cqh;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rae-sechead-r{font-size:1.02cqh;font-weight:600;white-space:nowrap;flex:0 0 auto}
.rae-dark .rae-sechead-r{color:#6b8a9a}.rae-light .rae-sechead-r{color:#96a3b0}
.rae-fond-sep{height:1px;background:var(--o10);margin:8px 0}
.rae-fond-chk{cursor:pointer;gap:6px;font-size:11px;color:var(--tx1)}
/* Modèles (templates) : popover sous le bouton de la barre. */
.rae-tpl-wrap{position:relative;display:inline-flex}
.rae-tpl-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:60;width:240px;max-height:50vh;overflow:auto;
  background:var(--modal-surf,var(--surf-2));border:1px solid var(--o14);border-radius:10px;padding:34px 8px 8px;
  box-shadow:0 14px 40px rgba(0,0,0,.45);font-family:var(--font-family)}
/* Cockpit ApexCharts (Overview) : bandeau KPI sous le titre du chart (tendance · runway · seuil). */
.ovx-kpis{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px}
.ovx-kpi{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--mut1,#8a9fab);background:rgba(255,255,255,.05);border:0.5px solid rgba(255,255,255,.08);padding:3px 10px;border-radius:20px;white-space:nowrap}
html[data-theme="light"] .ovx-kpi{background:rgba(15,30,45,.04);border-color:rgba(15,30,45,.1)}
.ovx-kpi.ovx-trend{font-weight:500}
.ovx-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex:0 0 auto}
.ovx-dot-run{background:var(--brand,#00B1CF)}
.ovx-dot-seuil{background:#F0997B}
/* Popover « Nouveau rapport » : warning soft (sauver le brouillon en IndexedDB / repartir à neuf / annuler). Pas de ✕ → padding normal. */
.rae-new-pop{width:286px;padding:13px}
.rae-new-q{font-size:13px;font-weight:700;color:var(--tx1);margin-bottom:4px}
.rae-new-sub{font-size:11px;color:var(--mut1);line-height:1.45;margin-bottom:11px}
.rae-new-acts{display:flex;flex-direction:column;gap:6px}
.rae-new-acts button{padding:8px 11px;border-radius:8px;border:1px solid var(--o12);font-size:12px;font-family:var(--font-family);cursor:pointer;text-align:left;transition:background .12s,border-color .12s,color .12s}
.rae-new-save{background:color-mix(in srgb,var(--brand) 16%,transparent);border-color:color-mix(in srgb,var(--brand) 42%,transparent) !important;color:var(--tx1);font-weight:600}
.rae-new-save:hover{background:color-mix(in srgb,var(--brand) 26%,transparent)}
.rae-new-disc{background:var(--o4);color:var(--tx1)}
.rae-new-disc:hover{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.rae-new-cancel{background:transparent;border-color:transparent !important;color:var(--mut1)}
.rae-new-cancel:hover{color:var(--tx1)}
/* Bouton ✕ de fermeture des popovers (Modèles / Fond / Rapport). */
.rae-pop-x{position:absolute;top:6px;right:6px;z-index:3;box-sizing:border-box;flex:0 0 auto;
  width:24px;height:24px;min-width:0;padding:0;display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:none;border-radius:50%;color:var(--mut1);cursor:pointer;
  font-size:13px;line-height:1;-webkit-appearance:none;appearance:none;transition:background .12s ease,color .12s ease}
.rae-pop-x:hover{background:color-mix(in srgb,#e5484d 18%,transparent);color:#e5484d}
.rae-pop-x:active{transform:scale(.9)}
/* ── Cropper de l'image de couverture ── */
.rae-crop-back{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.rae-crop-card{position:relative;width:min(440px,92vw);max-height:92vh;overflow:auto;background:var(--modal-surf,var(--surf-2));border:1px solid var(--o14);
  border-radius:14px;padding:14px;box-shadow:0 24px 70px rgba(0,0,0,.5);font-family:var(--font-family)}
.rae-crop-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;color:var(--tx1);margin-bottom:10px}
.rae-crop-head .rae-pop-x{position:static}
.rae-crop-frame{position:relative;width:100%;max-height:60vh;margin:0 auto;overflow:hidden;border-radius:10px;border:1px solid var(--o12);
  background:#0b1620;cursor:grab;touch-action:none;user-select:none}
.rae-crop-frame:active{cursor:grabbing}
.rae-crop-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
/* Grille tiers (repère de cadrage). */
.rae-crop-grid{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.28) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.28) 1px,transparent 1px);
  background-size:33.33% 33.33%;background-position:center;opacity:.5}
.rae-crop-ctrls{display:flex;align-items:center;gap:10px;margin-top:12px}
.rae-crop-ctrls input[type=range]{flex:1 1 auto}
.rae-crop-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
.rae-crop-hint{font-size:11px;color:var(--mut1)}
.rae-tpl-save{display:flex;gap:6px;margin-bottom:8px}
.rae-tpl-input{flex:1 1 auto;min-width:0;background:var(--o4);border:1px solid var(--o12);border-radius:7px;
  padding:5px 8px;color:var(--tx1);font-size:12px;font-family:var(--font-family)}
.rae-tpl-empty{font-size:11px;color:var(--mut1);font-style:italic;padding:4px 2px}
.rae-tpl-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}
.rae-tpl-load{flex:1 1 auto;text-align:left;background:var(--o4);border:1px solid var(--o10);border-radius:7px;
  padding:5px 8px;color:var(--tx1);font-size:12px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-family)}
.rae-tpl-load:hover{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,var(--o4))}
.rae-tpl-del{flex:0 0 auto;background:none;border:1px solid var(--o10);border-radius:7px;color:var(--mut1);padding:5px 8px;cursor:pointer;font-size:11px}
.rae-tpl-del:hover{border-color:#e5484d;color:#e5484d}
/* Import + boutons-icône (export/publier) + section bibliothèque cabinet. */
.rae-tpl-imp{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;background:var(--o4);border:1px solid var(--o12);border-radius:7px;color:var(--tx2);padding:5px 8px;cursor:pointer;font-size:12px}
.rae-tpl-imp:hover{border-color:var(--brand);color:var(--tx1)}
.rae-tpl-mini{flex:0 0 auto;background:none;border:1px solid var(--o10);border-radius:7px;color:var(--mut1);padding:5px 7px;cursor:pointer;font-size:11px}
.rae-tpl-mini:hover{border-color:var(--brand);color:var(--tx1)}
/* Confirmation inline d'écrasement d'un modèle par le brouillon en cours. */
.rae-tpl-row.confirm{background:color-mix(in srgb,var(--brand) 10%,transparent);border-radius:7px;padding:3px 4px}
.rae-tpl-confirm{flex:1 1 auto;font-size:11px;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rae-tpl-ok{color:#16a34a;font-weight:800}
.rae-tpl-ok:hover{border-color:#16a34a;color:#16a34a}
.rae-tpl-sep{height:1px;background:var(--o12);margin:9px 0 7px}
.rae-tpl-grp{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--brand);margin-bottom:6px}
/* Popover « Fond » PREMIUM : header titré + dropzone + contrôle couleur/dégradé à pastilles + grille de presets. */
.rae-bg-pop{width:256px;padding:0;overflow:hidden;max-height:none}
.rae-fond-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px 10px;
  border-bottom:1px solid var(--o10);background:color-mix(in srgb,var(--brand) 8%,transparent)}
.rae-fond-head .rae-pop-x{position:static;top:auto;right:auto}
.rae-fond-title{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;color:var(--tx1);letter-spacing:.01em}
.rae-fond-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent)}
.rae-fond-body{padding:11px 13px 13px;max-height:64vh;overflow-y:auto}
.rae-fond-note{margin:0 0 12px;font-size:10.5px;line-height:1.5;color:var(--mut1)}
.rae-fond-note b{color:var(--tx2);font-weight:800}
.rae-fond-note-sm{margin:7px 0 0}
/* Libellé de section avec filet */
.rae-fond-divlbl{display:flex;align-items:center;gap:9px;margin:13px 0 9px;font-size:9.5px;font-weight:800;
  text-transform:uppercase;letter-spacing:.06em;color:var(--mut1)}
.rae-fond-divlbl::after{content:"";flex:1 1 auto;height:1px;background:var(--o10)}
/* Dropzone d'import */
.rae-fond-drop{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1.5px dashed var(--o14);border-radius:11px;
  background:var(--o4);cursor:pointer;transition:border-color .14s,background .14s}
.rae-fond-drop:hover{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 9%,var(--o4))}
.rae-fond-drop-ic{flex:0 0 auto;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:9px;
  background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand);font-size:17px;font-weight:800;line-height:1}
.rae-fond-drop-tx{display:flex;flex-direction:column;gap:1px;line-height:1.2}
.rae-fond-drop-tx b{font-size:11.5px;font-weight:800;color:var(--tx1)}
.rae-fond-drop-tx small{font-size:9.5px;color:var(--mut1);letter-spacing:.04em}
/* Carte « image importée » */
.rae-fond-imgcard{display:flex;align-items:center;gap:10px;padding:7px 8px;border:1px solid var(--o12);border-radius:11px;background:var(--o4);margin-bottom:9px}
.rae-fond-imgthumb{flex:0 0 auto;width:42px;height:30px;border-radius:7px;border:1px solid var(--o12);background-size:cover;background-position:center}
.rae-fond-imgname{flex:1 1 auto;font-size:11px;font-weight:700;color:var(--tx1)}
/* Contrôle couleur / dégradé (pastilles) */
.rae-fond-fill{display:flex;align-items:center;gap:9px}
.rae-fond-color{flex:0 0 auto;width:40px;height:34px;padding:0;border:1px solid var(--o14);border-radius:9px;background:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;transition:transform .12s,border-color .12s}
.rae-fond-color:hover:not(:disabled){transform:scale(1.05);border-color:var(--brand)}
.rae-fond-color:disabled{opacity:.35;cursor:not-allowed}
.rae-fond-color::-webkit-color-swatch-wrapper{padding:0}
.rae-fond-color::-webkit-color-swatch{border:none;border-radius:8px}
.rae-fond-color::-moz-color-swatch{border:none;border-radius:8px}
.rae-fond-arrow{flex:0 0 auto;color:var(--mut1);font-weight:800;font-size:13px}
.rae-fond-fill-actions{margin-left:auto;display:flex;gap:5px}
/* Boutons-icône (reset/retrait) ronds et discrets */
.rae-fond-iconbtn{flex:0 0 auto;width:27px;height:27px;display:inline-flex;align-items:center;justify-content:center;padding:0;
  background:var(--o4);border:1px solid var(--o10);border-radius:8px;color:var(--mut1);font-size:12px;cursor:pointer;transition:all .12s}
.rae-fond-iconbtn:hover{border-color:var(--brand);color:var(--tx1);background:color-mix(in srgb,var(--brand) 10%,var(--o4))}
.rae-fond-iconbtn:active{transform:scale(.92)}
/* Ligne d'action secondaire (recadrer…) */
.rae-bg-pop .rae-fond-srow{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.rae-bg-pop .rae-fond-srow .rae-fond-imgbtn{flex:1 1 auto}
.rae-bg-pop .rae-fond-row{margin-bottom:9px}
/* Grille de presets premium */
.rae-bg-pop .rae-fond-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:11px}
.rae-bg-pop .rae-fond-sw{width:auto;height:31px;border-radius:8px;border:1px solid var(--o12);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);transition:transform .12s,box-shadow .12s,border-color .12s}
.rae-bg-pop .rae-fond-sw:hover{transform:translateY(-2px) scale(1.04);border-color:var(--brand)}
.rae-bg-pop .rae-fond-sw.on{box-shadow:0 0 0 2px var(--modal-surf,var(--surf-2)),0 0 0 4px var(--brand)}
.rae-fond-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.rae-fond-lbl{flex:0 0 56px;font-size:11px;font-weight:700;color:var(--tx2)}
.rae-fond-row input[type=color]{width:32px;height:24px;padding:0;border:1px solid var(--o12);border-radius:6px;background:none;cursor:pointer}
.rae-fond-row input[type=range]{flex:1 1 auto;min-width:0;accent-color:var(--brand)}
.rae-fond-val{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--tx2);min-width:30px;text-align:right}
.rae-fond-x{flex:0 0 auto;background:none;border:1px solid var(--o10);border-radius:6px;color:var(--mut1);padding:3px 7px;cursor:pointer;font-size:11px}
.rae-fond-x:hover{border-color:var(--brand);color:var(--tx1)}
.rae-fond-presets{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.rae-fond-sw{width:26px;height:26px;border:1px solid var(--o14);border-radius:6px;cursor:pointer;padding:0}
.rae-fond-sw:hover{border-color:var(--brand);transform:scale(1.08)}
.rae-fond-imgbtn{flex:1 1 auto;font-size:11px;font-weight:700;color:var(--tx1);background:var(--o4);border:1px solid var(--o12);border-radius:7px;padding:5px 8px;cursor:pointer;text-align:center}
.rae-fond-imgbtn:hover{border-color:var(--brand)}
/* Portée du fond : tout le rapport vs page courante. */
.rae-fond-scope{display:flex;align-items:center;gap:4px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--o10);flex-wrap:wrap}
.rae-fond-seg{flex:1 1 0;font-size:10.5px;font-weight:700;color:var(--tx2);background:var(--o4);border:1px solid var(--o10);border-radius:7px;padding:4px 6px;cursor:pointer;white-space:nowrap}
.rae-fond-seg.on{background:var(--brand);border-color:var(--brand);color:#fff}
.rae-fond-seg:disabled{opacity:.4;cursor:not-allowed}
/* Picker de templates dans le modal d'options (Composer) : cartes avec mini-aperçu A4. */
/* Tuiles COMPACTES horizontales (mini-mockup réduit à gauche + nom/pages à droite) → peu de hauteur. Grille auto-fit. */
.rex-tpl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:7px;max-height:196px;overflow:auto;padding:2px}
/* Carte = GRILLE [mockup | info] → l'info (nom puis nb pages) est garantie en COLONNE (chip SOUS le nom). */
.rex-tpl-card{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:9px;width:auto;padding:6px 9px;border:1px solid var(--o12);border-radius:9px;background:var(--o4);cursor:pointer;text-align:left;transition:border-color .12s,background .12s,transform .12s}
.rex-tpl-card:hover{border-color:color-mix(in srgb,var(--brand) 55%,transparent)}
.rex-tpl-card.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,var(--o4))}
.rex-tpl-card svg{grid-column:1;width:30px;height:auto;display:block;border-radius:3px}
.rex-tpl-blank{grid-column:1;width:30px;aspect-ratio:60/84;display:flex;align-items:center;justify-content:center;background:var(--surf-2);border:1px dashed var(--o14);border-radius:3px;color:var(--mut1);font-size:16px}
.rex-tpl-info{grid-column:2;display:flex;flex-direction:column;gap:3px;min-width:0;align-items:flex-start}
.rex-tpl-name{font-size:11px;font-weight:600;color:var(--tx1);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.rex-tpl-pages{font-size:8.5px;font-weight:700;color:var(--mut1);background:var(--o6);border-radius:999px;padding:1px 7px;line-height:1.3;white-space:nowrap;flex:0 0 auto}
.rex-tpl-card.on .rex-tpl-pages{color:var(--brand-strong)}
/* Modèles CRÉÉS (vos modèles) en VEDETTE : intitulé + grandes cartes (aperçu plus grand, teinte marque, nom plus fort). */
.rex-tpl-herolbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--brand);margin:2px 2px 6px}
.rex-tpl-herolbl.rex-tpl-herolbl-sub{color:var(--mut1);margin-top:11px}
.rex-tpl-heros{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.rex-tpl-card.rex-tpl-hero{grid-template-columns:48px 1fr;padding:9px 11px;border-color:color-mix(in srgb,var(--brand) 42%,var(--o12));background:color-mix(in srgb,var(--brand) 9%,var(--o4))}
.rex-tpl-card.rex-tpl-hero svg{width:48px}
.rex-tpl-card.rex-tpl-hero .rex-tpl-name{font-size:12.5px;font-weight:800}
/* Page A4 (ratio + dimension + FOND posés inline selon orientation/option). container-type → unités cqh/cqw pour
   dimensionner la page de garde proportionnellement à la page (comme les pt du PDF). */
.rae-page{position:relative;border-radius:4px;box-shadow:0 18px 50px rgba(0,0,0,.5);flex-shrink:0;
  max-width:96vw;max-height:84vh;overflow:visible;container-type:size;font-family:var(--font-family)}
/* Page active = overflow VISIBLE (les blocs/zones + panneaux flottants peuvent déborder du cadre, façon PowerPoint).
   Aperçus multi-vue et export PNG restent clippés au cadre (cohérent avec les bornes de la page PDF). */
.rae-page.rae-prevpage,.rae-page.rae-exporting{overflow:hidden}
/* Le FOND (image floutée + voile) est clippé au cadre par ce calque, même quand la page déborde. */
.rae-bgclip{position:absolute;inset:0;z-index:0;overflow:hidden;border-radius:4px;pointer-events:none}
/* Animation de changement de page : glissement + fondu, sens donné par _navDir (suivant = depuis la droite, précédent = depuis la gauche). */
@keyframes rae-pg-right{from{opacity:0;transform:translateX(34px)}to{opacity:1;transform:translateX(0)}}
@keyframes rae-pg-left{from{opacity:0;transform:translateX(-34px)}to{opacity:1;transform:translateX(0)}}
.rae-page.rae-in-right{animation:rae-pg-right .24s cubic-bezier(.22,.61,.36,1)}
.rae-page.rae-in-left{animation:rae-pg-left .24s cubic-bezier(.22,.61,.36,1)}
@media (prefers-reduced-motion:reduce){.rae-page.rae-in-right,.rae-page.rae-in-left{animation:none}}
/* Zone de contenu = page − marges (inset posé inline en %, identique aux marges du PDF) ; la vue y est centrée/ajustée. */
.rae-content{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;line-height:0}
.rae-img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;user-select:none;-webkit-user-drag:none}
/* Vue MANIPULABLE : boîte positionnée en % de page, image pleine largeur (hauteur auto = aspect préservé). */
.rae-imgbox{position:absolute;line-height:0;cursor:move}
.rae-imgEl{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.rae-imgbox:hover{outline:1px dashed color-mix(in srgb, var(--brand) 65%, transparent);outline-offset:2px}
/* Menu contextuel de la shape : barre flottante AU-DESSUS de la shape (ne masque plus le contenu), avec petit ergot. */
.rae-imgtools{position:absolute;left:0;bottom:100%;margin-bottom:6px;display:flex;align-items:center;gap:2px;opacity:0;transition:opacity .12s;line-height:1;
  background:rgba(10,28,38,.94);padding:3px 5px;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.5);z-index:6;white-space:nowrap}
.rae-imgtools::after{content:"";position:absolute;left:13px;top:100%;border:5px solid transparent;border-top-color:rgba(10,28,38,.94)}
.rae-imgbox:hover .rae-imgtools{opacity:1}
.rae-imgbox:hover{z-index:12}
.rae-imggrip{font-size:12px;color:#fff;background:transparent;border-radius:5px;padding:2px 5px;cursor:move}
.rae-imgctr{font-size:12px;color:#fff;background:transparent;border:none;border-radius:5px;padding:2px 5px;cursor:pointer;line-height:1}
.rae-imgctr:hover,.rae-imggrip:hover{background:var(--brand)}
.rae-imgresize{position:absolute;right:-5px;bottom:-5px;width:16px;height:16px;cursor:nwse-resize;
  background:var(--brand);border:2px solid #fff;border-radius:50%;opacity:0;transition:opacity .12s;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.rae-imgbox:hover .rae-imgresize{opacity:1}
/* Poignées de resize aux 4 coins (blocs déposés) — coin opposé fixe, aspect verrouillé. */
.rae-rs{position:absolute;width:14px;height:14px;background:var(--brand);border:2px solid #fff;border-radius:50%;opacity:0;transition:opacity .12s;box-shadow:0 1px 4px rgba(0,0,0,.4);z-index:3;touch-action:none}
.rae-itembox:hover .rae-rs{opacity:1}
.rae-rs-tl{left:-7px;top:-7px;cursor:nwse-resize}
.rae-rs-tr{right:-7px;top:-7px;cursor:nesw-resize}
.rae-rs-bl{left:-7px;bottom:-7px;cursor:nesw-resize}
.rae-rs-br{right:-7px;bottom:-7px;cursor:nwse-resize}
/* Page de garde (réplique de AnalysesPdfService) : bandeau teal, logo, titre/société/exercice/sous-titre. */
.rae-tealbar{position:absolute;top:0;left:0;right:0;height:0.6cqh;background:var(--brand)}
.rae-coverlogo{position:absolute;top:4.3%;left:6.7%;max-height:5.2cqh;max-width:30%;width:auto;height:auto}
.rae-covertitle{position:absolute;top:30%;left:6.7%;right:6.7%;font-size:3.3cqh;font-weight:800;line-height:1.12}
.rae-covercompany{position:absolute;top:36%;left:6.7%;right:6.7%;font-size:1.8cqh;font-weight:700;color:var(--brand-strong)}
.rae-coverexo{position:absolute;top:39.8%;left:6.7%;right:6.7%;font-size:1.3cqh}
.rae-coversub{position:absolute;top:44%;left:6.7%;right:6.7%;font-size:1.3cqh;line-height:1.3}
.rae-dark .rae-covertitle{color:#fff}
.rae-light .rae-covertitle{color:#1c2836}
.rae-dark .rae-coverexo,.rae-dark .rae-coversub{color:#8fa8b5}
.rae-light .rae-coverexo,.rae-light .rae-coversub{color:#6e7d8c}
/* ── Galerie de DESIGNS de page de garde (.cov-*) — repositionne/restyle les éléments de couverture (l'accent suit --brand). ── */
/* Bandeau : bloc de marque plein cadre derrière le titre (titre blanc dessus). */
.cov-bandeau .rae-tealbar{top:26%;height:21%;background:var(--brand)}
/* Bandeau semi-transparent (effet verre) quand une image de fond est chargée sur la page de garde → l'image transparaît. */
.cov-bandeau.cov-hasbg .rae-tealbar{background:color-mix(in srgb, var(--brand) 80%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.cov-bandeau .rae-covertitle{top:30%;color:#fff !important}
.cov-bandeau .rae-covercompany{top:37.5%;color:rgba(255,255,255,.92) !important}
.cov-bandeau .rae-coverexo{top:49.5%}
.cov-bandeau .rae-coversub{top:53.5%}
/* Minimal : pas de bandeau, titre centré + court filet d'accent. */
.cov-minimal .rae-tealbar{top:45.5%;left:42%;right:42%;height:0.45cqh;border-radius:2px}
.cov-minimal .rae-covertitle{top:37%;text-align:center;font-size:3.6cqh}
.cov-minimal .rae-covercompany{top:48%;text-align:center}
.cov-minimal .rae-coverexo{top:52%;text-align:center}
.cov-minimal .rae-coversub{top:56%;text-align:center}
/* Latéral : bande verticale de marque à gauche, bloc titre décalé. */
.cov-lateral .rae-tealbar{top:0;bottom:0;left:0;right:auto;width:1.8cqw;height:auto}
.cov-lateral .rae-coverlogo{left:9%}
.cov-lateral .rae-covertitle{left:9%;top:33%}
.cov-lateral .rae-covercompany{left:9%;top:39%}
.cov-lateral .rae-coverexo{left:9%;top:42.8%}
.cov-lateral .rae-coversub{left:9%;top:47%}
/* Diagonale : bande de marque oblique en tête, titre dessous. */
.cov-diagonale .rae-tealbar{top:0;left:0;right:0;height:24%;clip-path:polygon(0 0,100% 0,100% 58%,0 100%)}
.cov-diagonale .rae-covertitle{top:50%}
.cov-diagonale .rae-covercompany{top:56.5%}
.cov-diagonale .rae-coverexo{top:60.5%}
.cov-diagonale .rae-coversub{top:64.5%}
/* Plein cadre photo : l'image de fond remplit la page ; voile sombre en bas + titre blanc dessus. */
.cov-pleincadre .rae-tealbar{top:auto;bottom:0;left:0;right:0;height:44%;background:linear-gradient(transparent,rgba(0,0,0,.66))}
.cov-pleincadre .rae-covertitle{top:auto;bottom:18%;color:#fff !important}
.cov-pleincadre .rae-covercompany{top:auto;bottom:14%;color:rgba(255,255,255,.92) !important}
.cov-pleincadre .rae-coverexo{top:auto;bottom:10.5%;color:rgba(255,255,255,.85) !important}
.cov-pleincadre .rae-coversub{top:auto;bottom:6.5%;color:rgba(255,255,255,.8) !important}
/* Ruban latéral : panneau de marque vertical à gauche (logo dessus), bloc titre décalé à droite. */
.cov-ruban .rae-tealbar{top:0;bottom:0;left:0;right:auto;width:27%;height:auto}
.cov-ruban .rae-coverlogo{left:4%;top:5%}
.cov-ruban .rae-covertitle{left:34%;right:6.7%;top:40%}
.cov-ruban .rae-covercompany{left:34%;right:6.7%;top:46.5%}
.cov-ruban .rae-coverexo{left:34%;right:6.7%;top:50.5%}
.cov-ruban .rae-coversub{left:34%;right:6.7%;top:54.5%}
/* Angles : équerres d'accent en coins opposés (pseudo-éléments), titre centré. */
.cov-angles .rae-tealbar{top:0;left:0;right:0;bottom:0;height:auto;background:transparent;pointer-events:none}
.cov-angles .rae-tealbar::before{content:"";position:absolute;top:6%;left:5%;width:10%;height:7%;border-top:0.5cqh solid var(--brand);border-left:0.5cqh solid var(--brand)}
.cov-angles .rae-tealbar::after{content:"";position:absolute;bottom:6%;right:5%;width:10%;height:7%;border-bottom:0.5cqh solid var(--brand);border-right:0.5cqh solid var(--brand)}
.cov-angles .rae-covertitle{top:42%;text-align:center}
.cov-angles .rae-covercompany{top:48.5%;text-align:center}
.cov-angles .rae-coverexo{top:52.5%;text-align:center}
.cov-angles .rae-coversub{top:56.5%;text-align:center}
/* Pied de page : bandeau de marque en bas, titre en haut, sous-titre blanc sur le bandeau. */
.cov-pied .rae-tealbar{top:auto;bottom:0;left:0;right:0;height:18%}
.cov-pied .rae-covertitle{top:16%}
.cov-pied .rae-covercompany{top:23%}
.cov-pied .rae-coverexo{top:27%}
.cov-pied .rae-coversub{top:auto;bottom:6.5%;color:#fff !important}
/* Sélecteur de design dans la barre couverture. */
.rae-coverpick{font-size:11px;font-weight:700;color:var(--tx2);background:var(--o4);border:1px solid var(--o10);border-radius:7px;padding:4px 9px;cursor:pointer;font-family:var(--font-family)}
.rae-coverpick:hover{border-color:var(--brand);color:var(--tx1)}
.rae-coverpick.on{background:var(--brand);border-color:var(--brand);color:#fff}
/* Pied de page (visuel) : société · exercice à gauche, n° de page à droite. */
.rae-foot{position:absolute;left:6.7%;right:6.7%;bottom:2.6%;display:flex;justify-content:space-between;
  gap:8px;font-size:1.05cqh;pointer-events:none}
.rae-dark .rae-foot{color:#6b8a9a}
.rae-light .rae-foot{color:#96a3b0}
.rae-zone{position:absolute;display:flex;flex-direction:column;min-width:60px;min-height:34px;overflow:hidden;
  background:rgba(252,253,254,.97);border:1px solid #d6dde5;border-radius:8px;
  box-shadow:inset 3px 0 0 var(--brand),0 3px 12px rgba(0,0,0,.2)}   /* liseré d'accent + ombre (aperçu du style PDF) */
.rae-zone.active{border-color:#0AACA5;box-shadow:0 0 0 2px rgba(10,172,165,.35),0 3px 10px rgba(0,0,0,.18);overflow:visible}   /* visible → les 8 poignées de resize (débordent de -6px) ne sont pas coupées */
/* Zone MULTI-sélectionnée (Shift-clic, mixable avec les blocs-image) → même liseré que .rae-itembox.sel pour cohérence visuelle. */
.rae-zone.selm{outline:2px solid var(--brand);outline-offset:2px}
/* En-tête de zone : fond MARQUÉ + dérivé de la palette SECONDAIRE (--brand2) + theme-aware (sur la page .rae-dark/.rae-light). */
.rae-zhead{flex:0 0 auto;display:flex;align-items:center;gap:4px;height:18px;padding:0 4px;cursor:move;
  background:color-mix(in srgb, var(--brand2, var(--brand)) 26%, transparent);
  border-bottom:1px solid color-mix(in srgb, var(--brand2, var(--brand)) 48%, transparent);user-select:none;touch-action:none}
.rae-dark .rae-zhead{color:#eaf2f6}
.rae-light .rae-zhead{color:#16242e}
.rae-zgrip{font-size:11px;color:inherit;opacity:.6;margin-right:auto;line-height:1}
/* En-tête de zone-TABLEAU : combo de scénario à gauche (après la poignée) → on neutralise le margin-right:auto de la
   poignée et on le reporte sur la combo (qui pousse les boutons d'action à droite). En-tête un peu plus haut pour la dropdown. */
.rae-zone-table .rae-zhead{height:auto;min-height:24px}
.rae-zone-table .rae-zgrip{margin-right:6px}
.rae-zscenario{margin-right:auto;display:inline-flex;align-items:center;min-width:0}
.rae-zscenario .custom-dropdown-trigger{min-width:0;padding:3px 8px;font-size:11px;border-radius:7px}
.rae-zsize,.rae-zdel{border:none;background:transparent;cursor:pointer;font-size:11px;line-height:1;padding:0 3px;color:inherit;opacity:.8;font-weight:700}
.rae-zsize:hover,.rae-zdel:hover{opacity:1}
.rae-zdel:hover{color:#e11d48;opacity:1}
.rae-zai{color:var(--brand);white-space:nowrap}
.rae-zai:disabled{opacity:.5;cursor:default}
/* Badge « commentaire auto » (read-only, réactualisé au stress). */
.rae-zauto{font-size:9px;font-weight:800;letter-spacing:.02em;color:var(--brand);background:color-mix(in srgb,var(--brand) 16%,transparent);border-radius:999px;padding:1px 6px;white-space:nowrap}
/* Badge transitoire « ✓ à jour » : pop à l'apparition puis léger fondu (la zone est retirée du DOM après ~2,6 s côté C#). */
.rae-zupd{font-size:9px;font-weight:800;color:#fff;background:#16a34a;border-radius:999px;padding:1px 6px;white-space:nowrap;animation:rae-zupd-in .28s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes rae-zupd-in{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.12)}100%{opacity:1;transform:scale(1)}}
.rae-ztext{flex:1 1 auto;width:100%;box-sizing:border-box;border:none;outline:none;resize:none;background:transparent;
  padding:4px 7px 4px 11px;color:#1f2937;font-family:var(--font-family);line-height:1.35;overflow:auto}
/* Rendu LECTURE SEULE de la zone (texte enrichi inline : **gras** *italique* [lien](url)) — affiché quand la zone n'est pas en édition. */
.rae-ztext-view{cursor:text;white-space:pre-wrap;word-break:break-word}
.rae-ztext-view a{color:var(--brand);text-decoration:underline}
.rae-zt-ph{opacity:.45;font-weight:400;font-style:normal}
/* Boutons gras/italique/lien (apparaissent pendant l'édition d'une zone). */
.rae-zbi{font-size:11px;min-width:15px}
.rae-zbi b,.rae-zbi i{pointer-events:none}
.rae-zresize{position:absolute;right:0;bottom:0;width:14px;height:14px;cursor:nwse-resize;
  background:linear-gradient(135deg,transparent 50%,#9aa6b2 50%,#9aa6b2 70%,transparent 70%)}
/* Poignées de redimensionnement TOTAL (8 directions) d'un shape sélectionné (charts, commentaires…). */
.rae-rsz{position:absolute;width:11px;height:11px;background:#fff;border:1.5px solid var(--brand);border-radius:2px;z-index:14;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.rae-rsz-nw{left:-6px;top:-6px;cursor:nwse-resize}
.rae-rsz-n {left:50%;top:-6px;transform:translateX(-50%);cursor:ns-resize}
.rae-rsz-ne{right:-6px;top:-6px;cursor:nesw-resize}
.rae-rsz-e {right:-6px;top:50%;transform:translateY(-50%);cursor:ew-resize}
.rae-rsz-se{right:-6px;bottom:-6px;cursor:nwse-resize}
.rae-rsz-s {left:50%;bottom:-6px;transform:translateX(-50%);cursor:ns-resize}
.rae-rsz-sw{left:-6px;bottom:-6px;cursor:nesw-resize}
.rae-rsz-w {left:-6px;top:50%;transform:translateY(-50%);cursor:ew-resize}
.rae-hint{font-size:11.5px;color:var(--sl1);text-align:center;max-width:640px;margin:0}
/* Overlay plein écran qui capte les pointermove PENDANT un geste (drag/resize). DOIT être AU-DESSUS de tout le chrome
   de l'éditeur (poignées rae-rsz z14, dock frt-cfg z24, zones…) sinon dès que le curseur survole un élément de z
   supérieur, OnMove ne tire plus et pointerleave coupe le geste → resize saccadé/« en plusieurs fois ». z élevé = il
   reste seul sous le curseur tant que le geste dure (il n'existe que pendant le geste, donc ne bloque rien sinon). */
.rae-dragcatch{position:fixed;inset:0;z-index:1000;cursor:grabbing;touch-action:none}
/* Gestion de pages : réordonner / copier-coller / ajouter / supprimer. */
.rae-pageops{display:inline-flex;align-items:center;gap:2px;padding-left:6px;margin-left:0;border-left:1px solid var(--o10)}
.rae-opbtn{min-width:24px;height:24px;border-radius:6px;border:1px solid var(--o12);background:var(--o5);color:var(--tx2);
  cursor:pointer;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;font-family:var(--font-family)}
.rae-opbtn:hover:not(:disabled){color:var(--tx1);border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.rae-opbtn:disabled{opacity:.35;cursor:not-allowed}
.rae-opbtn.danger:hover:not(:disabled){color:#fff;background:var(--st-pink);border-color:var(--st-pink)}
/* Indicateur de re-capture des blocs en cours (après un stress GLOBAL) : ↻ qui tourne, non cliquable. */
.rae-recap{cursor:default;color:var(--brand-strong);border-color:color-mix(in srgb,var(--brand) 45%,transparent);animation:rae-recap-spin 1s linear infinite}
@keyframes rae-recap-spin{to{transform:rotate(360deg)}}
/* Placeholder de page vierge (ajoutée). */
.rae-blank{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.5cqh;font-style:italic;opacity:.4}
.rae-dark .rae-blank{color:#cfe0e6}
.rae-light .rae-blank{color:#6e7d8c}
/* Barre de STYLE contextuelle (commentaire sélectionné) : presets, titre, puces, alignement, couleurs, bordure. */
.rae-stylebar{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 16px;
  background:var(--surf-2);border-bottom:1px solid var(--o10);font-family:var(--font-family)}
.rae-presets{display:inline-flex;gap:4px}
.rae-preset{font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;border-radius:6px;padding:3px 9px;
  border:1px solid var(--o12);background:var(--o4);border-left:3px solid var(--pc)}
.rae-preset:hover{color:var(--tx1)}
.rae-preset.on{background:color-mix(in srgb,var(--pc) 16%,transparent);border-color:var(--pc);color:var(--tx1)}
.rae-stylesep{width:1px;height:18px;background:var(--o12)}
.rae-styb{min-width:26px;height:26px;border-radius:6px;border:1px solid var(--o12);background:var(--o4);color:var(--tx2);
  cursor:pointer;font-size:12px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;font-family:var(--font-family)}
.rae-styb:hover{color:var(--tx1);border-color:color-mix(in srgb,var(--brand) 50%,transparent)}
.rae-styb.on{background:color-mix(in srgb,var(--brand) 16%,transparent);border-color:var(--brand);color:var(--tx1)}
.rae-stycol{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--mut1);cursor:pointer}
.rae-stycol input[type=color]{width:24px;height:22px;border:1px solid var(--o12);border-radius:5px;background:none;padding:0;cursor:pointer}
/* Titre (gras) optionnel dans la zone de commentaire */
.rae-ztitle{width:100%;box-sizing:border-box;border:none;outline:none;background:transparent;font-weight:700;
  padding:3px 7px 0 11px;font-family:var(--font-family);font-size:13px}
/* Logo de couverture déplaçable (même mécanique que la vue) */
.rae-logobox{position:absolute;line-height:0;cursor:move}
.rae-logobox img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.rae-logobox:hover{outline:1px dashed color-mix(in srgb,var(--brand) 65%,transparent);outline-offset:2px}
.rae-logogrip{position:absolute;top:-2px;left:-2px;opacity:0;transition:opacity .12s}
.rae-logobox:hover .rae-logogrip{opacity:1}
/* ─── Tooltip data-tip : rendu UNIQUEMENT par le JS .iku-tip (portail <body>, position:fixed → jamais rogné).
       L'ancien tooltip CSS ::after est RETIRÉ : il DOUBLONNAIT le JS (double bulle hors conteneurs clippés, ex. recap-bar).
       Les classes de variante (tip-up/tip-wrap/tip-right/tip-bl) restent inoffensives — le positionnement est géré par le JS. ─── */
[data-tip]{position:relative}
/* Tooltip moderne pour les POIGNÉES de redimensionnement : les splitters occupent déjà ::before/::after
   (rail + pastille), donc on passe par un enfant <span class="resize-tip"> stylé à l'identique de [data-tip].
   Apparaît à droite de la poignée, centré verticalement (aligné sur la pastille), avec flèche pointant vers la poignée. */
.aim-splitter .resize-tip,.fintree-splitter .resize-tip{
  position:absolute;left:calc(100% + 11px);top:50%;transform:translateY(-50%) translateX(-4px);
  background:var(--surf-pop);color:var(--tb4);font-size:11px;font-weight:500;font-family:var(--font-family);
  line-height:1;letter-spacing:.2px;padding:6px 9px;border-radius:7px;white-space:nowrap;
  border:1px solid var(--o12);box-shadow:0 8px 24px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));
  z-index:320;pointer-events:none;opacity:0;transition:opacity .14s ease,transform .14s ease;transition-delay:0s}
.aim-splitter .resize-tip::before,.fintree-splitter .resize-tip::before{
  content:"";position:absolute;right:100%;top:50%;transform:translateY(-50%);
  border:5px solid transparent;border-right-color:var(--surf-pop)}
.aim-splitter:hover .resize-tip,.fintree-splitter:hover .resize-tip{
  opacity:1;transform:translateY(-50%) translateX(0);transition-delay:.35s}
/* pendant le drag (pointer pressé) ou panneau en cours de resize → on masque le hint pour ne pas gêner */
.aim-splitter:active .resize-tip,.fintree-splitter:active .resize-tip,.fintree-splitter.active .resize-tip{opacity:0 !important;transition-delay:0s}

/* Harness DEV : test équilibre bilan */
.baltest-panel{position:fixed;left:14px;bottom:14px;z-index:1395;width:auto;max-height:50dvh;overflow:auto;
  background:rgba(10,28,38,.97);border:1px solid var(--o14);border-radius:10px;padding:10px;
  font-family:var(--font-family);font-size:11px;color:var(--tx2);box-shadow:0 12px 40px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));
  user-select:text;-webkit-user-select:text}
.baltest-panel *{user-select:text;-webkit-user-select:text}
.baltest-up[type=button]{cursor:pointer}
.baltest-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700;color:#fff;margin-bottom:8px}
.baltest-up{cursor:pointer;font-size:11px;font-weight:600;color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:7px;padding:4px 9px;position:relative;overflow:hidden;white-space:nowrap}
.baltest-up input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.baltest-row {
    padding: 4px 6px;
    border-radius: 6px;
    border-left: 3px solid transparent;
    line-height: 1.35;
    white-space: normal;
    overflow-wrap: anywhere;
    margin: 2px 0px;
}
.baltest-row.ok{border-left-color:var(--txt-teal);background:color-mix(in srgb, var(--brand) 8%, transparent)}
.baltest-row.ko{border-left-color:#F09595;background:rgba(240,149,149,.08);color:#fff}
.baltest-prog{height:5px;border-radius:3px;background:var(--o10);overflow:hidden;margin:2px 0 6px}
.baltest-prog-bar{height:100%;background:linear-gradient(90deg,var(--brand),var(--brand));border-radius:3px;transition:width .2s ease}
.baltest-status{color:var(--tx8);font-style:italic;border-left-color:transparent}

.fin-combined{display:flex;flex-direction:column;gap:16px}
.fin-combined .an-wrap{margin:0}
.fin-combined .an-head{margin-bottom:6px}
.fin-combined .an-desc{display:none}
.cex-modal{width:min(720px,94%);max-height:82%;display:flex;flex-direction:column;background:rgba(10,28,38,.98);
  border:1px solid var(--o12);border-radius:14px;box-shadow:0 20px 60px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));padding:16px;font-family:var(--font-family)}
.cex-head{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:600;color:#fff}
/* Modal options rapport : en-tête COLLANT (reste visible pendant le scroll du contenu). */
.rex-modal .cex-head{position:sticky;top:0;z-index:3;background:rgba(10,28,38,.98);padding-bottom:8px}
html[data-theme="light"] .rex-modal .cex-head{background:var(--modal-surf)}
.cex-x{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:15px}
.cex-x:hover{color:#fff}
.cex-sub{font-size:11.5px;color:var(--color-text-muted);margin:4px 0 10px}
.cex-orient{display:flex;align-items:center;gap:10px;margin:0 0 10px;flex-wrap:wrap}
.cex-orient-lbl{font-size:11.5px;font-weight:600;color:var(--tx2)}
.cex-seg-grp{display:inline-flex;border:1px solid var(--o14);border-radius:8px;overflow:hidden}
.cex-seg{cursor:pointer;font-family:var(--font-family);font-size:11.5px;font-weight:600;padding:5px 12px;border:none;background:transparent;color:var(--color-text-muted)}
.cex-seg:hover:not(:disabled){color:#fff;background:var(--o5)}
.cex-seg.on{background:color-mix(in srgb, var(--brand) 22%, transparent);color:#fff}
.cex-seg:disabled{cursor:not-allowed;opacity:.6}
.cex-orient-hint{font-size:10.5px;color:var(--color-text-muted);font-style:italic;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cex-bg{display:flex;align-items:center;gap:10px;margin:0 0 10px;flex-wrap:wrap}
.cex-file-hidden{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}
.cex-bg-btn{cursor:pointer;font-size:11.5px;font-weight:600;padding:5px 12px;border:1px solid var(--o14);border-radius:8px;background:transparent;color:var(--tx2)}
.cex-bg-btn:hover{color:#fff;background:var(--o5)}
.cex-bg-thumb{width:46px;height:30px;object-fit:cover;border-radius:5px;border:1px solid var(--o18);flex-shrink:0}
.cex-tools{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.cex-link{background:none;border:none;color:var(--tx8);cursor:pointer;font-size:12px;font-weight:600;padding:0}
.cex-link:hover{color:#fff}
.cex-count{margin-left:auto;font-size:11px;color:var(--color-text-muted)}
.cex-list{flex:1;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:2px 16px;padding:4px 0;
  border-top:1px solid var(--o6);border-bottom:1px solid var(--o6);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 12px,#000 calc(100% - 14px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 12px,#000 calc(100% - 14px),transparent 100%)}
@media(max-width:640px){.cex-modal{width:min(440px,94%)} .cex-list{grid-template-columns:1fr}}
.cex-row{display:flex;align-items:center;gap:9px;padding:7px 6px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--tb4)}
.cex-row:hover{background:var(--o4)}
.cex-row.off{opacity:.45;cursor:not-allowed}
.cex-row.off:hover{background:none}
.cex-row.off input{cursor:not-allowed}
.cex-na{font-size:10px;font-style:italic;color:var(--color-text-muted);white-space:nowrap}
.cex-row input{width:16px;height:16px;accent-color:var(--an-teal);cursor:pointer;flex-shrink:0}
.cex-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cex-tag{font-size:9px;font-weight:700;color:var(--tx8);border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:5px;padding:1px 6px}
.cex-err{margin-top:10px;font-size:11.5px;color:#F09595;background:rgba(240,149,149,.08);border:1px solid rgba(240,149,149,.3);border-radius:8px;padding:7px 10px}
.cex-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}
.cex-cancel{cursor:pointer;font-size:12.5px;border-radius:8px;padding:8px 14px;border:1px solid var(--o14);
  background:transparent;color:var(--color-text-secondary)}
.cex-cancel:hover:not(:disabled){color:#fff}
.cex-gen{cursor:pointer;font-size:12.5px;font-weight:600;border-radius:8px;padding:8px 16px;
  display:inline-flex;align-items:center;gap:8px;
  border:1px solid color-mix(in srgb, var(--brand) 50%, transparent);background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 25%, transparent),rgba(58,123,213,.2));color:#fff}
.cex-gen[disabled]:has(.apop-spin){opacity:1}  /* en cours d'export : spinner pleinement visible */
.cex-gen:hover:not(:disabled){background:color-mix(in srgb, var(--brand) 32%, transparent)}
.cex-gen:disabled,.cex-cancel:disabled,.cex-x:disabled{opacity:.45;cursor:not-allowed}
/* LIGHT : ce modal « Composer le dossier PDF » a été figé pour le SOMBRE (fond navy + textes #fff). Les variables
   texte (--tb4, --tx2…) flippent déjà en clair, mais elles tombaient sur le fond navy CODÉ EN DUR → illisibles.
   On repasse en clair le fond (surface modale neutre) + les seuls textes #fff. Mode sombre INCHANGÉ. */
html[data-theme="light"] .cex-modal{background:var(--modal-surf)}
html[data-theme="light"] .cex-head{color:var(--tx1)}
html[data-theme="light"] .cex-x:hover,
html[data-theme="light"] .cex-seg:hover:not(:disabled),
html[data-theme="light"] .cex-bg-btn:hover,
html[data-theme="light"] .cex-link:hover,
html[data-theme="light"] .cex-cancel:hover:not(:disabled){color:var(--tx1)}
html[data-theme="light"] .cex-seg.on,
html[data-theme="light"] .cex-gen{color:var(--brand-strong)}
html[data-theme="light"] .cex-gen .apop-spin{border-color:color-mix(in srgb, var(--brand) 28%, transparent);border-top-color:var(--brand-strong)}

/* ════════ Modal « Options du rapport PDF » — design premium (scopé .rex-modal, n'affecte PAS la cession) ════════ */
.rex-modal{width:min(680px,94%);max-height:88vh;padding:0;overflow:hidden;border-radius:16px;display:flex;flex-direction:column}
.rex-modal .rex-body{flex:1 1 auto;overflow-y:auto;padding:16px 18px 8px}
/* En-tête MARQUÉ : bandeau dégradé marque + badge icône + filet d'accent. */
.rex-modal .cex-head.rex-headbar{position:static;display:flex;align-items:center;gap:12px;margin:0;padding:14px 16px;font-size:initial;
  background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 17%,var(--modal-surf,#0a1c26)),var(--modal-surf,#0a1c26));
  border-bottom:1px solid color-mix(in srgb,var(--brand) 38%,var(--o12))}
.rex-head-ic{flex:0 0 auto;width:38px;height:38px;display:flex;align-items:center;justify-content:center;font-size:19px;border-radius:11px;
  background:color-mix(in srgb,var(--brand) 22%,transparent);border:1px solid color-mix(in srgb,var(--brand) 45%,transparent);
  box-shadow:0 2px 12px color-mix(in srgb,var(--brand) 28%,transparent)}
.rex-head-txt{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}
.rex-head-title{font-size:16px;font-weight:800;color:#fff;letter-spacing:.2px;line-height:1.2}
html[data-theme="light"] .rex-head-title{color:var(--tx1)}
.rex-head-sub{font-size:11px;color:var(--mut1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rex-modal .cex-x.rex-x{flex:0 0 auto;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;
  background:var(--o6);border:1px solid var(--o12);color:var(--mut1);font-size:13px;padding:0;transition:background .12s,color .12s,border-color .12s}
.rex-modal .cex-x.rex-x:hover{background:color-mix(in srgb,#e5484d 18%,transparent);color:#e5484d;border-color:transparent}
/* Lignes d'option en CARTES (label gras à gauche · contrôle · indice à droite). */
.rex-modal .cex-orient,.rex-modal .cex-bg{align-items:center;gap:12px;margin:0 0 9px;padding:10px 12px;border-radius:11px;
  background:var(--o4);border:1px solid var(--o10);transition:border-color .12s}
.rex-modal .cex-orient:hover,.rex-modal .cex-bg:hover{border-color:color-mix(in srgb,var(--brand) 30%,var(--o12))}
.rex-modal .cex-orient-lbl{flex:0 0 62px;font-size:12px;font-weight:700;color:var(--tx1);display:flex;align-items:center;gap:6px}
.rex-modal .cex-orient-hint{margin-left:auto;text-align:right;flex:0 1 auto}
.rex-opt-count{font-size:9.5px;font-weight:800;color:var(--brand);background:color-mix(in srgb,var(--brand) 16%,transparent);border-radius:999px;padding:1px 7px}
/* Carte « Modèle » : pleine largeur, picker dessous. */
.rex-modal .rex-opt-tpl{flex-direction:column;align-items:stretch;gap:9px}
.rex-modal .rex-opt-tpl .cex-orient-lbl{flex:none}
.rex-modal .rex-opt-tpl .cex-orient-hint{margin-left:0;text-align:left}
/* GRILLE 2 colonnes des réglages (Format · Fond · Qualité · Palette). Carte = 2 lignes : [titre · légende inline] puis [contrôle]. */
.rex-modal .rex-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:9px}
.rex-modal .rex-grid .cex-orient,.rex-modal .rex-grid .cex-bg{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"lbl hint" "ctrl ctrl";align-items:center;gap:6px 8px;margin:0}
.rex-modal .rex-grid .cex-orient-lbl{grid-area:lbl;flex:none}
.rex-modal .rex-grid .cex-orient-hint{grid-area:hint;margin:0;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2;font-size:10px;font-style:italic}
.rex-modal .rex-grid .cex-seg-grp,.rex-modal .rex-grid .cex-bg-btn{grid-area:ctrl;justify-self:start}
@media(max-width:560px){.rex-modal .rex-grid{grid-template-columns:1fr}}
/* Pastilles segmentées plus nettes (piste + pilule active pleine marque). */
.rex-modal .cex-seg-grp{border-radius:9px;background:var(--o4);padding:2px;gap:2px;border-color:var(--o12)}
.rex-modal .cex-seg{border-radius:7px;padding:6px 13px}
.rex-modal .cex-seg.on{background:var(--brand);color:#fff;box-shadow:0 2px 8px color-mix(in srgb,var(--brand) 40%,transparent)}
html[data-theme="light"] .rex-modal .cex-seg.on{color:#fff}
.rex-modal .cex-bg-btn{border-radius:9px;padding:7px 13px}
/* Footer MARQUÉ : barre dégradée + filet accent + CTA proéminent (dégradé + halo). */
.rex-modal .cex-foot.rex-foot{margin:0;padding:12px 16px;gap:10px;align-items:center;
  background:linear-gradient(0deg,color-mix(in srgb,var(--brand) 10%,var(--modal-surf,#0a1c26)),var(--modal-surf,#0a1c26));
  border-top:1px solid color-mix(in srgb,var(--brand) 32%,var(--o12))}
.rex-modal .cex-foot.rex-foot .cex-cancel{margin-right:auto}
.rex-modal .cex-gen.rex-gen{padding:10px 20px;font-size:13px;font-weight:800;border:none;color:#fff;
  background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 55%,#000));
  box-shadow:0 4px 16px color-mix(in srgb,var(--brand) 45%,transparent)}
.rex-modal .cex-gen.rex-gen:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px);background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 55%,#000))}
html[data-theme="light"] .rex-modal .cex-gen.rex-gen{color:#fff}
/* Cartes de template : survol soulevé + coche de sélection. */
.rex-tpl-card{position:relative;transition:transform .14s ease,border-color .12s,background .12s,box-shadow .14s}
.rex-tpl-card:hover{transform:translateY(-3px);box-shadow:0 8px 18px rgba(0,0,0,.35)}
.rex-tpl-card.on{box-shadow:0 0 0 2px var(--brand) inset}
.rex-tpl-card.on::after{content:"✓";position:absolute;top:5px;right:5px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;color:#fff;background:var(--brand);border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.45)}
.apop-export-btn:hover:not(:disabled){border-color:color-mix(in srgb, var(--brand) 70%, transparent);transform:translateY(-1px)}
.apop-export-btn:disabled{opacity:.7;cursor:default}
.apop-spin{width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;
  display:inline-block;animation:apop-spin .7s linear infinite}
@keyframes apop-spin{to{transform:rotate(360deg)}}
/* LIGHT : le fond du bouton export est un dégradé de marque TRANSLUCIDE → texte/spinner blancs illisibles sur fond
   clair. On repasse le texte (et le spinner) en couleur de marque foncée. Mode sombre INCHANGÉ. */
html[data-theme="light"] .apop-export-btn{color:var(--brand-strong)}
html[data-theme="light"] .apop-export-btn .apop-spin{border-color:color-mix(in srgb, var(--brand) 28%, transparent);border-top-color:var(--brand-strong)}

/* ---------- HOST DE CAPTURE (off-screen) ---------- */
/* Largeur du host de capture (PARTAGÉ analyses + cession) : 1100px = largeur « desktop » → les vues adoptent leur
   mise en page LARGE (comme à l'écran) au lieu de s'empiler (920px déclenchait des breakpoints étroits → captures
   hautes/étroites = letterbox dans le PDF). Capture à scale 2 → PNG ~2200px, sous le plafond canvas (MAXDIM 4096). */
.an-capture-host{position:fixed;left:-10000px;top:0;width:1100px;z-index:-1;background:var(--dh1)}
.an-capture-page{width:1100px;padding:26px 30px;background:transparent}
/* Capture = état final figé : pas d'animation/transition (sinon barres encore invisibles au moment du shot) */
.an-capture-host *,.an-capture-host *::before,.an-capture-host *::after{
  animation:none !important;transition:none !important}
.an-capture-host .an-wf2 .seg{opacity:1 !important;transform:none !important}

/* ---------- M&A : table éditable (EBITDA normalisé / hypothèses) ---------- */
.an-mtable{display:flex;flex-direction:column;gap:6px;margin:10px auto 0;width:fit-content;max-width:100%;
  padding:2px 28px 2px 12px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  /* Centré si plus étroit que le popup (sinon scroll). Le PADDING sert de zone de fondu : le fondu (léger à gauche,
     marqué à droite) s'applique sur le padding vide → libellés et dernière colonne restent NETS quand ça tient,
     et estompe le contenu quand on scrolle (cession / financement / analyses). */
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 28px),transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 28px),transparent 100%)}
.an-mtable .an-mrow{min-width:max-content}   /* le tableau scrolle horizontalement plutôt que de déborder le popup */
.an-mrow{display:flex;gap:8px;align-items:center}
.an-mrow .lbl{flex:0 0 218px;min-width:218px;max-width:218px;font-size:12px;color:var(--color-text-secondary)}
.an-mrow .lbl-txt{font-weight:700;color:#fff}
.an-mrow .yr{flex:0 0 88px;min-width:88px;max-width:88px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}
.an-mrow .yr2{flex:0 0 130px}
.an-mrow .rm{width:24px;flex-shrink:0;text-align:center}
.an-mrow.head{font-size:10px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}
.an-mrow.head .yr{color:var(--color-text-muted)}
.an-mrow.ebe .yr{color:var(--color-text-primary);font-weight:600}
.an-mrow.norm{border-top:1px solid var(--color-border-strong);padding-top:8px;margin-top:2px}
.an-mrow.norm .yr{color:var(--tx8);font-weight:700;font-size:13px}
.an-mrow.marg .lbl,.an-mrow.marg .yr{font-size:11px;color:var(--color-text-dim)}

/* ── Échéancier de prêt enrichi : chip année + barre annuité (intérêts/capital) + trait restant dû.
   Couleurs catégorielles palette-aware (intérêts=brand2 / capital=brand) ; pistes via overlays --o* (theme-aware). ── */
.pret-sched-legend{display:flex;align-items:center;gap:14px;margin:12px 0 8px;font-size:11px;color:var(--color-text-secondary);flex-wrap:wrap}
.pret-leg{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.pret-leg-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.pret-leg-dot.int{background:var(--brand2,#44C1A3)}
.pret-leg-dot.cap{background:var(--brand)}
.pret-leg-hint{color:var(--color-text-muted);font-size:10.5px}
.pret-sched{display:flex;flex-direction:column;gap:3px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.pret-srow{display:flex;align-items:center;gap:12px;min-width:max-content;padding:7px 10px;border-radius:9px;transition:background .12s}
.pret-srow:not(.head):nth-child(odd){background:var(--o2)}
.pret-srow:not(.head):hover{background:var(--o4)}
.pret-srow.head{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);padding-bottom:0}
.pret-srow.head .c-num{color:var(--color-text-muted);font-weight:400}
.pret-srow .c-yr{flex:0 0 64px}
.pret-srow .c-split{flex:1 1 210px;min-width:140px;display:flex;align-items:center}
.pret-srow .c-num{flex:0 0 92px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:var(--color-text-secondary);display:inline-flex;align-items:center;justify-content:flex-end;gap:6px}
.pret-srow .c-num.strong{color:var(--tx1);font-weight:700}
.pret-srow .c-bal{flex:0 0 150px;display:flex;align-items:center;gap:9px;justify-content:flex-end}
.pret-chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 26%, transparent)}
.pret-d{width:8px;height:8px;border-radius:2px;flex:0 0 auto}
.pret-d.int{background:var(--brand2,#44C1A3)}
.pret-d.cap{background:var(--brand)}
.pret-split{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--o4);min-width:6px}
.pret-split .seg{height:100%}
.pret-split .seg.int{background:var(--brand2,#44C1A3)}
.pret-split .seg.cap{background:var(--brand)}
.pret-bal-track{flex:1 1 auto;height:5px;border-radius:999px;background:var(--o4);overflow:hidden;min-width:44px}
.pret-bal-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--brand) 50%,transparent),var(--brand))}
.pret-bal-num{flex:0 0 auto;font-size:12px;font-variant-numeric:tabular-nums;color:var(--color-text-secondary);min-width:54px;text-align:right}
.an-minput{width:100%;min-width:0;background:var(--color-bg-input);border:1px solid var(--color-border-strong);color:#fff;
  border-radius:6px;padding:5px 8px;font-size:12px;font-family:var(--font-family)}
.an-minput.num{text-align:right;font-variant-numeric:tabular-nums}
.an-minput:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 60%, transparent)}

/* ---------- NumberStepper : flèches stylées, spinners natifs masqués ---------- */
.num-stepper{position:relative;display:block}
.num-stepper-input{width:100%;box-sizing:border-box;padding-right:18px}
/* intégration dans les wrappers Pilotage (input + unité €) */
.form-input-wrapper .num-stepper,
.inline-input-wrapper .num-stepper,
.financing-seuil-wrapper .num-stepper{flex:1 1 auto;min-width:0}
.num-stepper.is-disabled{opacity:.55}
.num-stepper.is-disabled .num-stepper-btns{display:none}
/* masque les spinners natifs (webkit + firefox) */
.num-stepper-input::-webkit-outer-spin-button,
.num-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.num-stepper-input[type=number]{-moz-appearance:textfield;appearance:textfield}
.num-stepper-btns{position:absolute;right:3px;top:1px;bottom:1px;display:flex;flex-direction:column;
  justify-content:center;gap:1px;opacity:0;transition:opacity .12s}
.num-stepper:hover .num-stepper-btns,.num-stepper:focus-within .num-stepper-btns{opacity:1}
.num-stepper-btns button{width:14px;height:10px;display:flex;align-items:center;justify-content:center;
  border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;padding:0;border-radius:2px;transition:.1s}
.num-stepper-btns button:hover{color:var(--an-teal);background:color-mix(in srgb, var(--brand) 14%, transparent)}
.num-stepper-btns svg{display:block}
.an-mrm{width:22px;height:22px;border-radius:6px;border:1px solid var(--color-border-strong);background:transparent;
  color:var(--color-text-muted);cursor:pointer;font-size:11px;line-height:1}
.an-mrm:hover{color:var(--color-danger);border-color:var(--color-danger)}
.an-madd{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px dashed var(--color-border-strong);
  color:var(--color-text-secondary);border-radius:7px;padding:5px 12px;font-size:12px;cursor:pointer;font-family:var(--font-family)}
.an-madd:hover{border-color:color-mix(in srgb, var(--brand) 50%, transparent);color:#fff}
.an-madd.applied{border-style:solid;border-color:rgba(93,202,165,.5);color:#5DCAA5;background:rgba(93,202,165,.10)}
/* Badge « ? » des lignes hypothèse/retraitement dans l'arbre (tooltip = Commentaire) */
.hyp-badge{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex-shrink:0;
  border-radius:50%;border:1px solid color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 16%, transparent);color:var(--tx8);
  font-size:9px;font-weight:700;cursor:help;margin-left:1px;line-height:1}
/* Drapeau « hypothèse de travail » dans la colonne libellé de l'arbre */
.hyp-flag{flex-shrink:0;color:var(--an-teal);font-size:11px;margin-right:3px;line-height:1}
/* Badge transparence IA : ligne/hypothèse générée par l'IA (à valider) */
.hyp-ai{flex-shrink:0;font-size:10px;margin-right:3px;line-height:1;opacity:.9;filter:saturate(1.2)}
/* Indicateur sur une ligne parente contenant des hypothèses (à déplier) */
.hyp-parent-ind{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;flex-shrink:0;
  border-radius:50%;background:color-mix(in srgb, var(--brand) 16%, transparent);border:1px solid color-mix(in srgb, var(--brand) 45%, transparent);color:var(--tx8);
  font-size:9px;margin-left:1px;line-height:1;cursor:help}
/* Tooltip du « ? » de l'arbre — aligné sur le style des tooltips (.intent-tip) */
.mud-tooltip.hyp-mud-tip{
  background:linear-gradient(160deg,rgba(10,34,46,.98),rgba(7,23,34,.99)) !important;
  border:1px solid color-mix(in srgb, var(--brand) 30%, transparent) !important;border-radius:10px !important;
  color:var(--color-text-secondary,#bcd) !important;font-size:11.5px !important;font-weight:400 !important;
  line-height:1.55 !important;max-width:260px !important;padding:11px 13px !important;text-align:left !important;
  box-shadow:0 14px 34px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul))) !important;
  backdrop-filter:blur(10px) saturate(150%);-webkit-backdrop-filter:blur(10px) saturate(150%)}
.mud-tooltip.hyp-mud-tip .mud-tooltip-arrow{color:rgba(10,34,46,.98) !important}
/* ─── Mode clair : tooltips (le JS .iku-tip est thémé plus bas ; ici le MudTooltip custom) ─── */
html[data-theme="light"] .mud-tooltip.hyp-mud-tip{
  background:linear-gradient(160deg,rgba(255,255,255,.98),rgba(247,250,252,.99)) !important;
  box-shadow:0 14px 34px rgba(15,30,45,.16) !important}
html[data-theme="light"] .mud-tooltip.hyp-mud-tip .mud-tooltip-arrow{color:rgba(255,255,255,.98) !important}
/* Les MudTooltip qui enrobent des boutons du header Pilotage ne doivent pas casser le flex (wrapper = inline-flex serré) */
.fintree-head .mud-tooltip-root,.fintree-scen .mud-tooltip-root,.fintree-modetoggle .mud-tooltip-root{display:inline-flex !important;align-items:center}

/* ─────────────────────────────────────────────────────────────────────────────
   Snackbars MudBlazor fondus dans le thème de l'app : dark-glass + accent cyan
   (même langage que .hyp-mud-tip). On remplace le fond plein vif des « filled »
   par un dégradé sombre flouté + une barre d'accent gauche selon la sévérité.
   Structure : .mud-snackbar.mud-snackbar-surface.mud-alert-filled-{severity}.
   ───────────────────────────────────────────────────────────────────────────── */
.mud-snackbar.mud-snackbar-surface{
  background:linear-gradient(160deg,rgba(10,34,46,.97),rgba(7,23,34,.99)) !important;
  color:#dceaf0 !important;
  border:1px solid color-mix(in srgb, var(--brand) 22%, transparent) !important;
  border-left:3px solid color-mix(in srgb, var(--brand) 90%, transparent) !important;
  border-radius:12px !important;
  box-shadow:0 16px 38px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul))) !important;
  backdrop-filter:blur(10px) saturate(150%);-webkit-backdrop-filter:blur(10px) saturate(150%);
  padding:11px 14px !important;min-width:280px;
}
/* Barre d'accent gauche + teinte d'icône par sévérité */
.mud-snackbar.mud-alert-filled-success{border-left-color:var(--txt-teal) !important}
.mud-snackbar.mud-alert-filled-info,
.mud-snackbar.mud-alert-filled-normal,
.mud-snackbar.mud-alert-filled-primary{border-left-color:var(--an-teal) !important}
.mud-snackbar.mud-alert-filled-warning{border-left-color:var(--st-amber) !important}
.mud-snackbar.mud-alert-filled-error{border-left-color:var(--st-pink) !important}

.mud-snackbar .mud-snackbar-icon{opacity:.95}
.mud-snackbar.mud-alert-filled-success .mud-snackbar-icon{color:var(--txt-teal) !important}
.mud-snackbar.mud-alert-filled-info .mud-snackbar-icon,
.mud-snackbar.mud-alert-filled-normal .mud-snackbar-icon,
.mud-snackbar.mud-alert-filled-primary .mud-snackbar-icon{color:#46d3e6 !important}
.mud-snackbar.mud-alert-filled-warning .mud-snackbar-icon{color:var(--st-amber) !important}
.mud-snackbar.mud-alert-filled-error .mud-snackbar-icon{color:var(--st-pink) !important}

/* Message + boutons (action / fermer) */
.mud-snackbar .mud-snackbar-content-message{color:#e7f2f6 !important;font-size:13px;font-weight:500;line-height:1.42}
.mud-snackbar .mud-snackbar-content-action .mud-button-root,
.mud-snackbar .mud-snackbar-content-action .mud-icon-button,
.mud-snackbar .mud-snackbar-content-action button{color:rgba(255,255,255,.55) !important;background:transparent !important}
.mud-snackbar .mud-snackbar-content-action .mud-button-root:hover,
.mud-snackbar .mud-snackbar-content-action .mud-icon-button:hover,
.mud-snackbar .mud-snackbar-content-action button:hover{color:#fff !important;background:var(--o8) !important}

/* ─────────────────────────────────────────────────────────────────────────────
   Skeleton DevExpress (placeholders rendus pendant la virtualisation des COLONNES
   du FinTree) : par défaut ils gonflent la hauteur des lignes le temps que les
   colonnes hors-écran se rendent. On les COMPRESSE (padding/marge à 0 + barre
   basse) pour rester sur la hauteur de ligne compacte. Transitoire → zéro impact data.
   Scope : grilles CustomFinTree (.myGrid / .myDarkGrid) + le FinTree de FinTreePopup (.ftree-rb).
   ───────────────────────────────────────────────────────────────────────────── */
.myGrid .dxbl-skeleton-item,.myDarkGrid .dxbl-skeleton-item,.ftree-rb .dxbl-skeleton-item,
.myGrid .dxbl-vert-skeleton-items-container,.myDarkGrid .dxbl-vert-skeleton-items-container,.ftree-rb .dxbl-vert-skeleton-items-container{
  padding-top:0 !important;padding-bottom:0 !important;
  margin-top:0 !important;margin-bottom:0 !important;
  min-height:0 !important;line-height:var(--dxbl-grid-line-height,18px) !important;
}
/* La « barre » animée du skeleton (string/number/date/bool) : hauteur réduite, centrée, pas de marge verticale. */
.myGrid [class*="dxbl-skeleton-string"],.myGrid [class*="dxbl-skeleton-number"],.myGrid .dxbl-skeleton-date,.myGrid .dxbl-skeleton-bool,
.myDarkGrid [class*="dxbl-skeleton-string"],.myDarkGrid [class*="dxbl-skeleton-number"],.myDarkGrid .dxbl-skeleton-date,.myDarkGrid .dxbl-skeleton-bool,
.ftree-rb [class*="dxbl-skeleton-string"],.ftree-rb [class*="dxbl-skeleton-number"],.ftree-rb .dxbl-skeleton-date,.ftree-rb .dxbl-skeleton-bool{
  height:9px !important;min-height:0 !important;max-height:9px !important;
  margin-top:0 !important;margin-bottom:0 !important;align-self:center !important;
}

/* ─────────────────────────────────────────────────────────────────────────────
   Colonne « poignée de drag » du FinTree (RowDragAnchorCell, visible quand le mode
   réorganisation est ON). Par défaut DevExpress lui pose un strip GRIS (--mud-palette-
   background-gray) qui jure avec l'arbre transparent. On la fond dans le thème :
   transparent + grip discret qui s'allume en accent au survol. Largeur FIXE 24px,
   SYNCHRONISÉE avec DragColPx (CustomFinTree) qui décale le splitter de redimensionnement.
   ───────────────────────────────────────────────────────────────────────────── */
/* On NE force PAS la largeur de la colonne drag via le <col> : quand le drag est OFF, le 1er <col> = CustomPCG
   (la colonne libellé) → ça cassait sa largeur. Largeur naturelle DevExpress. Occultation du bleed au scroll
   (colonne FIGÉE à gauche) : fond transparent + backdrop-filter (frosted, comme une colonne figée) → les
   colonnes qui défilent dessous sont floutées au lieu de transparaître nettement. */
.ftree-rb.dxbl-grid .dxbl-grid-table .dxbl-grid-row-drag-anchor-cell{
  padding:0 !important;background:transparent !important;border:0 !important;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  text-align:center;vertical-align:middle;
  color:rgba(255,255,255,.36) !important;transition:color .12s ease}
/* On MASQUE le glyphe carré par défaut de DevExpress et on dessine un grip NET : 2 colonnes × 3 points ronds,
   via un MASQUE SVG (cercles crisp) teinté en currentColor → gris au repos, accent cyan au survol de la ligne.
   (PAS de display:flex sur le <td> : ça le sortirait du layout de table et l'icône disparaîtrait.) */
.ftree-rb.dxbl-grid .dxbl-grid-table .dxbl-grid-row-drag-anchor-cell>.dxbl-image{display:none !important}
.ftree-rb.dxbl-grid .dxbl-grid-table .dxbl-grid-row-drag-anchor-cell::before{
  content:"";display:inline-block;width:6px;height:14px;vertical-align:middle;background-color:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 14'%3E%3Cg fill='%23fff'%3E%3Ccircle cx='1.5' cy='3' r='1.15'/%3E%3Ccircle cx='4.5' cy='3' r='1.15'/%3E%3Ccircle cx='1.5' cy='7' r='1.15'/%3E%3Ccircle cx='4.5' cy='7' r='1.15'/%3E%3Ccircle cx='1.5' cy='11' r='1.15'/%3E%3Ccircle cx='4.5' cy='11' r='1.15'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 14'%3E%3Cg fill='%23fff'%3E%3Ccircle cx='1.5' cy='3' r='1.15'/%3E%3Ccircle cx='4.5' cy='3' r='1.15'/%3E%3Ccircle cx='1.5' cy='7' r='1.15'/%3E%3Ccircle cx='4.5' cy='7' r='1.15'/%3E%3Ccircle cx='1.5' cy='11' r='1.15'/%3E%3Ccircle cx='4.5' cy='11' r='1.15'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
.ftree-rb.dxbl-grid .dxbl-grid-table>tbody>tr:hover .dxbl-grid-row-drag-anchor-cell{
  color:var(--ftree-accent,var(--brand)) !important}
/* Lignes non-draggables (.hideDrag) : pas de strip gris, et pas de grip du tout. */
.ftree-rb .hideDrag .dxbl-grid-row-drag-anchor-cell{
  background:transparent !important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:0 !important;cursor:default !important}
.ftree-rb .hideDrag .dxbl-grid-row-drag-anchor-cell>.dxbl-image,
.ftree-rb .hideDrag .dxbl-grid-row-drag-anchor-cell::before{display:none !important}
.an-madd .add-icon{color:var(--an-teal);font-weight:700}
.an-kpi .val .an-select{margin-left:8px}
.an-kpi .val .custom-dropdown{min-width:112px}
/* Inputs (NumberStepper) dans les cartes KPI : compacts, alignés à droite — pas de champ trop large */
.an-kpi .val{flex-wrap:wrap}
.an-kpi .val .num-stepper{flex:0 0 96px;width:96px;margin-left:auto}
.an-kpi .val .num-stepper .an-minput{font-size:14px;padding:4px 6px;text-align:right}
.an-kpi .l{min-width:0}

/* Bouton « Préparer ma cession » (variante violette) */
.intent-cession-btn{background:linear-gradient(100deg,rgba(122,92,208,.16),color-mix(in srgb, var(--brand) 10%, transparent));border-color:rgba(122,92,208,.30)}
.intent-cession-btn:hover{border-color:rgba(122,92,208,.6)}
.intent-cession-btn .intent-analyses-btn-cta{color:#b7a3ef}
/* Bouton « Financement / Banking » (variante bleu/teal) */
.intent-banking-btn{background:linear-gradient(100deg,rgba(58,123,213,.16),color-mix(in srgb, var(--brand) 10%, transparent));border-color:rgba(58,123,213,.30)}
.intent-banking-btn:hover{border-color:rgba(58,123,213,.6)}
.intent-banking-btn .intent-analyses-btn-cta{color:#7fb0ef}
.apop-tabs{flex:1;display:flex;align-items:center;justify-content:center;gap:14px}
.apop-arrow{width:30px;height:30px;border-radius:50%;border:1px solid var(--color-border-strong);
  background:var(--color-bg-input);color:var(--color-text-secondary);font-size:15px;cursor:pointer;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;transition:.15s}
.apop-arrow:hover{border-color:color-mix(in srgb, var(--brand) 50%, transparent);color:#fff}
.apop-titleblock{width:240px;flex-shrink:0;text-align:center}
.apop-title{font-size:14px;font-weight:600;color:var(--color-text-primary);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.apop-dots{display:flex;gap:6px;justify-content:center;margin-top:6px}
.apop-dot{width:6px;height:6px;border-radius:50%;background:var(--o18);transition:.2s}
.apop-dot.active{background:var(--an-teal);width:18px;border-radius:3px}
.apop-close{width:30px;height:30px;border-radius:50%;border:1px solid var(--color-border-strong);
  background:var(--color-bg-input);color:var(--color-text-muted);font-size:13px;cursor:pointer;flex-shrink:0}
.apop-close:hover{color:#fff;border-color:var(--color-danger)}
/* Light UNIQUEMENT : le hover forçait color:#fff sur le fond d'input CLAIR (var(--color-bg-input)) → texte blanc
   invisible (lisible en dark car l'input y est sombre). En clair → texte contrasté (brand-strong / danger) +
   léger fond teinté pour une vraie affordance. Dark inchangé. Couvre les 3 popups (Analyses/Financement/Cession). */
html[data-theme="light"] .apop-arrow:hover{color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 12%, var(--color-bg-input))}
html[data-theme="light"] .apop-close:hover{color:var(--color-danger);background:color-mix(in srgb, var(--color-danger) 10%, var(--color-bg-input))}
.apop-subbar{flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:8px;
  padding:7px 18px;border-bottom:1px solid var(--o5);background:var(--o2)}
.apop-subbar-label{font-size:11px;color:var(--color-text-muted)}
.apop-content{position:absolute;inset:0;overflow-y:auto;padding:54px 20px 40px}

/* ---------- ATOMES DE VUE ---------- */
.an-wrap{display:flex;flex-direction:column;gap:14px}
/* Groupe de blocs COMPOSITE (data-blk="synthese") : conteneur transparent qui préserve l'espacement vertical de .an-wrap
   (sinon le gap:14px sauterait à l'intérieur du wrapper). Sert à capturer/cloner plusieurs cartes comme UN bloc cohérent. */
.an-blk-group{display:flex;flex-direction:column;gap:14px}
/* Bloc signature « Évolution de la trésorerie » (ApexCharts) réutilisable dans le rapport dynamique. */
.rpt-treso-block{background:var(--surf-2,#13212e);border:1px solid var(--o8,rgba(255,255,255,.08));border-radius:14px;padding:16px 18px}
[data-theme=light] .rpt-treso-block{background:#fff;border-color:rgba(10,40,56,.08)}
.rpt-treso-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px}
.rpt-treso-title{font-size:15px;font-weight:800;color:var(--tx1,#eaf2f5)}
.rpt-treso-cash{font-size:13px;font-weight:700;color:var(--brand,#00B1CF)}
.rpt-treso-canvas{width:100%;height:340px}
.rpt-treso-canvas-wrap{width:100%}
/* Mode Fill : courbe tréso LIVE qui remplit son slot (vue auteur du rapport) — la hauteur vient du slot */
.rpt-treso-fill{height:100%;display:flex;flex-direction:column;padding:10px 12px}
/* Wrap = SEULE boîte qui prend l'espace libre de la colonne flex (flex:1 1 0, bornée par le slot) ; le canvas du chart
   est ÉPINGLÉ en absolute inset:0 dedans → l'SVG d'ApexCharts ne peut PAS regonfler le conteneur (sa hauteur ne dépend
   QUE du slot, jamais du contenu). Coupe à la racine la boucle ResizeObserver « croissance continue au resize ». */
.rpt-treso-fill .rpt-treso-canvas-wrap{flex:1 1 0;min-height:0;position:relative;overflow:hidden}
.rpt-treso-fill .rpt-treso-canvas{position:absolute;inset:0;width:auto;height:auto;min-height:0}
/* Bloc signature « Hypothèses retenues par catégorie » */
.rpt-hyp-block,.rpt-wacc-block{background:var(--surf-2,#13212e);border:1px solid var(--o8,rgba(255,255,255,.08));border-radius:14px;padding:16px 18px}
[data-theme=light] .rpt-hyp-block,[data-theme=light] .rpt-wacc-block{background:#fff;border-color:rgba(10,40,56,.08)}
.rpt-hyp-title,.rpt-wacc-title{font-size:15px;font-weight:800;color:var(--tx1,#eaf2f5);margin-bottom:10px}
.rpt-hyp-empty,.rpt-wacc-empty{font-size:13px;color:var(--mut2,#8aa3ad);font-style:italic}
.rpt-hyp-group{margin-bottom:10px}
.rpt-hyp-grouph{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--mut1,#9bb3bd);margin-bottom:5px}
.rpt-hyp-ic{font-size:13px}
.rpt-hyp-item{display:flex;align-items:flex-start;gap:8px;padding:4px 0 4px 4px}
.rpt-hyp-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--brand,#00B1CF);margin-top:7px}
.rpt-hyp-txt{flex:1 1 auto;min-width:0}
.rpt-hyp-desc{font-size:13px;font-weight:600;color:var(--tx1,#eaf2f5)}
.rpt-hyp-ai{font-size:11px;margin-left:4px}
.rpt-hyp-detail{font-size:11.5px;color:var(--mut1,#9bb3bd);margin-top:1px}
/* Bloc signature « Détail du WACC » */
.rpt-wacc-table{width:100%;border-collapse:collapse;font-size:13px}
.rpt-wacc-table td{padding:6px 4px;border-bottom:1px solid var(--o8,rgba(255,255,255,.06))}
.rpt-wacc-lbl{color:var(--mut1,#9bb3bd)}
.rpt-wacc-val{text-align:right;font-weight:600;color:var(--tx1,#eaf2f5);white-space:nowrap}
.rpt-wacc-sub td{font-weight:700}
.rpt-wacc-sub .rpt-wacc-lbl,.rpt-wacc-sub .rpt-wacc-val{color:var(--brand-strong,#00B1CF)}
.rpt-wacc-total td{font-weight:800;border-top:2px solid color-mix(in srgb,var(--brand,#00B1CF) 45%,transparent);border-bottom:none;font-size:14px}
.rpt-wacc-total .rpt-wacc-val{color:var(--brand,#00B1CF)}
.an-head .an-title{font-size:18px;font-weight:600;margin:0}
.an-head .an-desc{font-size:12.5px;color:var(--color-text-muted);margin:3px 0 0}
.an-card{background:var(--color-bg-card-soft);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:16px 18px}
.an-card-title{font-size:13px;font-weight:500;margin:0 0 2px}
.an-card-sub{font-size:11px;color:var(--color-text-muted)}
.an-grid{display:grid;gap:10px}
/* Grilles KPI responsives au CONTENEUR (popup), pas au viewport : auto-fit → se replient quand le popup est étroit
   (tablette / mobile), donc plus de débordement. Sur grand popup, les N items remplissent comme repeat(N,1fr). */
.an-grid[style*="repeat(4"]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr)) !important}
.an-grid[style*="repeat(3"]{grid-template-columns:repeat(auto-fit,minmax(152px,1fr)) !important}
.an-grid[style*="repeat(2"]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr)) !important}
.an-grid > *{min-width:0}
.an-muted{color:var(--color-text-muted)} .an-dim{color:var(--color-text-dim)}
.an-pos{color:var(--brand-strong)} .an-neg{color:var(--color-danger)}  /* white-label : « positif » = marque ; « négatif » = danger fixe */
.an-hero{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.an-lbl{font-size:11px;letter-spacing:1.1px;text-transform:uppercase;color:var(--color-text-muted)}
.an-big{font-size:34px;font-weight:700;line-height:1.05;margin-top:4px}
.an-big small{font-size:17px;color:var(--color-text-muted);font-weight:600}
.an-tag{font-size:12px;padding:5px 11px;border-radius:999px;font-weight:600}
.an-tag.ok{background:color-mix(in srgb, var(--brand) 12%, transparent);color:var(--brand-strong)}
.an-tag.ko{background:var(--color-danger-bg);color:var(--color-danger)}
.an-tag.mid{background:var(--warn-bg,rgba(245,158,11,.08));color:#E9B872}
.an-metric{background:var(--color-bg-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:11px 13px}
.an-metric .k{font-size:11px;color:var(--color-text-muted)}
.an-metric .v{font-size:19px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.an-metric .v small{font-size:11px;color:var(--color-text-muted);font-weight:600}
.an-metric .m{font-size:11px;color:var(--color-text-dim);margin-top:2px}
.an-metric .trend{font-size:11px;font-weight:600;margin-top:4px}
.an-info{display:flex;gap:9px;align-items:flex-start;background:rgba(143,168,181,.05);
  border:1px solid rgba(143,168,181,.1);border-radius:var(--radius-md);padding:9px 13px;font-size:12px;color:var(--color-text-muted);line-height:1.5}
.an-lever{display:flex;gap:9px;align-items:flex-start;background:var(--warn-bg,rgba(245,158,11,.06));
  border:1px solid var(--warn-bd,rgba(245,158,11,.15));border-radius:var(--radius-md);padding:9px 13px;font-size:12px;color:var(--color-text-secondary);line-height:1.5}
.an-lever b,.an-info b{color:#fff}
.an-badge{font-size:10px;color:var(--color-text-dim);text-align:center}
.an-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
.an-legend{display:flex;gap:14px;font-size:11px;color:var(--color-text-muted);margin-top:9px;flex-wrap:wrap}

/* ---------- WATERFALL ---------- */
.an-wf{display:flex;align-items:flex-end;gap:8px;height:200px;margin-top:10px;padding-top:18px}
.an-wf .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.an-wf .bar{width:100%;max-width:96px;border-radius:5px 5px 0 0;position:relative}
.an-wf .amt{position:absolute;top:-17px;left:-4px;right:-4px;text-align:center;font-size:11.5px;font-weight:700;white-space:nowrap}
.an-wf .cap{font-size:10px;color:var(--color-text-muted);margin-top:8px;text-align:center;line-height:1.25}
.an-wf .cap b{color:#fff}
.an-wf .op{align-self:center;color:var(--color-text-dim);font-size:17px;padding-bottom:74px}
.bar-cli{background:linear-gradient(180deg,var(--brand),color-mix(in srgb, var(--brand) 70%, #000000))}
.bar-sto{background:linear-gradient(180deg,var(--brand2),color-mix(in srgb, var(--brand2) 70%, #000000))}
.bar-fou{background:linear-gradient(180deg,var(--brand3),color-mix(in srgb, var(--brand3) 70%, #000000))}
.bar-det{background:linear-gradient(180deg,color-mix(in srgb, var(--brand3) 70%, #ffffff),color-mix(in srgb, var(--brand3) 55%, #000000))}
.bar-net{background:linear-gradient(180deg,var(--brand),color-mix(in srgb, var(--brand) 70%, #000000))}
.bar-ded{background:linear-gradient(180deg,rgba(226,75,74,.55),rgba(226,75,74,.30))}
.bar-res{background:linear-gradient(180deg,var(--an-green),#157a59)}

/* ---------- WATERFALL FLOTTANT (barres au niveau cumulé) ---------- */
.an-wf2{display:flex;align-items:flex-end;gap:6px;margin-top:12px}
.an-wf2 .col{flex:1;display:flex;flex-direction:column;min-width:0}
.an-wf2 .plot{position:relative;height:170px;width:100%}
.an-wf2 .seg{position:absolute;left:12%;right:12%;border-radius:3px;min-height:2px;
  border:1px solid var(--o10);box-shadow:inset 0 1px 0 var(--o12);
  transition:bottom .55s cubic-bezier(.34,1.2,.4,1),height .55s cubic-bezier(.34,1.2,.4,1);
  animation:an-rise .5s ease both}
/* Barres translucides (effet verre) */
.an-wf2 .seg.bar-cli{background:linear-gradient(180deg,color-mix(in srgb, var(--brand) 60%, transparent),color-mix(in srgb, var(--brand) 32%, transparent))}
.an-wf2 .seg.bar-sto{background:linear-gradient(180deg,color-mix(in srgb, var(--brand2) 60%, transparent),color-mix(in srgb, var(--brand2) 32%, transparent))}
.an-wf2 .seg.bar-fou{background:linear-gradient(180deg,color-mix(in srgb, var(--brand3) 58%, transparent),color-mix(in srgb, var(--brand3) 32%, transparent))}
.an-wf2 .seg.bar-det{background:linear-gradient(180deg,color-mix(in srgb, color-mix(in srgb, var(--brand3) 70%, #ffffff) 58%, transparent),color-mix(in srgb, color-mix(in srgb, var(--brand3) 70%, #ffffff) 32%, transparent))}
.an-wf2 .seg.bar-net{background:linear-gradient(180deg,color-mix(in srgb, var(--brand) 66%, transparent),color-mix(in srgb, var(--brand) 38%, transparent))}
.an-wf2 .seg .amt{position:absolute;top:-16px;left:-8px;right:-8px;text-align:center;font-size:11px;font-weight:700;white-space:nowrap;
  transition:opacity .3s}
.an-wf2 .cap{font-size:10px;color:var(--color-text-muted);margin-top:8px;text-align:center;line-height:1.25}
.an-wf2 .cap b{color:#fff}
/* Light : emphases (b), labels de grille et inputs étaient en #fff — OK sur fond sombre, illisibles sur surface
   claire. Override scopé au thème clair → le rendu sombre reste strictement identique. Touche TOUTES les vues
   d'analyse (.an-* partagés : EBITDA normalisé, santé, net vendeur, décotes…). */
html[data-theme="light"] .an-lever b,
html[data-theme="light"] .an-info b,
html[data-theme="light"] .an-wf .cap b,
html[data-theme="light"] .an-wf2 .cap b,
html[data-theme="light"] .an-mrow .lbl-txt,
html[data-theme="light"] .an-minput,
html[data-theme="light"] .an-madd:hover{color:var(--color-text-primary,#10243a)}
.an-wf2 .opcol{align-self:center;color:var(--color-text-dim);font-size:16px;padding-bottom:36px;flex:0 0 auto}
@keyframes an-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.an-wf2 .col:nth-child(1) .seg{animation-delay:.04s}
.an-wf2 .col:nth-child(3) .seg{animation-delay:.13s}
.an-wf2 .col:nth-child(5) .seg{animation-delay:.22s}
.an-wf2 .col:nth-child(7) .seg{animation-delay:.31s}
.an-wf2 .col:nth-child(9) .seg{animation-delay:.40s}

/* ---------- BREAK-EVEN BAR + SPLIT ---------- */
.an-be{position:relative;height:50px;border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg-input);margin-top:6px}
.an-be .loss{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,rgba(226,75,74,.34),rgba(226,75,74,.16))}
.an-be .profit{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,rgba(29,158,117,.30),rgba(29,158,117,.14))}
.an-be .marker{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--an-teal);box-shadow:0 0 8px color-mix(in srgb, var(--brand) calc(80% * var(--glow-mul)), transparent)}
.an-be .marker .flag{position:absolute;top:-20px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:600;color:var(--an-teal)}
.an-be .ca{position:absolute;top:0;bottom:0;width:2px;background:#fff;opacity:.85}
.an-scale{display:flex;justify-content:space-between;font-size:10px;color:var(--color-text-dim);margin-top:6px}
.an-split{height:26px;border-radius:var(--radius-sm);overflow:hidden;display:flex;margin-top:6px}
.an-split span{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff}
.an-split .fix{background:linear-gradient(90deg,var(--an-blue),var(--an-blue2))}
.an-split .var{background:linear-gradient(90deg,var(--an-green),#157a59)}
/* Jauges animées (point mort) : la barre seuil et le split glissent vers leurs valeurs */
.an-be .loss,.an-be .profit,.an-be .marker,.an-split span{
  transition:width .55s cubic-bezier(.34,1.1,.4,1),left .55s cubic-bezier(.34,1.1,.4,1)}
.an-be{will-change:contents}

/* ---------- LISTES (charges / clients) ---------- */
.an-rows{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.an-row{display:grid;grid-template-columns:200px 1fr 78px 64px;align-items:center;gap:10px}
.an-row .lab{font-size:12px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-track{height:17px;background:var(--color-bg-input);border-radius:4px;overflow:hidden}
.an-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,color-mix(in srgb, var(--brand) 72%, transparent),rgba(0,131,160,.5))}
.an-fill.up{background:linear-gradient(90deg,rgba(240,149,149,.78),rgba(200,95,95,.5))}
.an-amt2{font-size:12px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.an-yoy{font-size:11px;font-weight:600;text-align:right}

/* ---------- TABLEAU CHECKBOX (charges variables) ---------- */
.an-tbl{display:flex;flex-direction:column;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);overflow:hidden auto;max-height:206px;margin-top:8px}
.an-tbl .tr{display:grid;grid-template-columns:28px 1fr 90px;align-items:center;gap:8px;padding:7px 12px;border-top:1px solid var(--color-border-subtle);font-size:12px}
.an-tbl .tr:first-child{border-top:none}
.an-tbl .tr.head{position:sticky;top:0;z-index:1;background:var(--dk10);color:var(--color-text-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.5px}
.an-tbl .tr.on{background:rgba(29,158,117,.06)}
.an-tbl input[type=checkbox]{width:15px;height:15px;accent-color:var(--an-green);cursor:pointer}
.an-tbl .amt{text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}

/* ---------- SANTÉ ---------- */
.an-kpi{background:var(--color-bg-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);
  padding:11px 13px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.an-kpi .l{font-size:12px;color:var(--color-text-secondary)} .an-kpi .l small{display:block;color:var(--color-text-dim);font-size:10px;margin-top:2px}
.an-kpi .val{font-size:17px;font-weight:700;white-space:nowrap;display:flex;align-items:center;gap:8px}
.an-pill{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px}
.an-pill.ok{background:color-mix(in srgb, var(--brand) 12%, transparent);color:var(--brand-strong)}
.an-pill.mid{background:var(--warn-bg,rgba(245,158,11,.08));color:#E9B872}
.an-pill.ko{background:var(--color-danger-bg);color:var(--color-danger)}
.an-ring{width:104px;height:104px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:conic-gradient(var(--color-success) calc(var(--p,80)*1%),var(--o7) 0)}
.an-ring .in{width:80px;height:80px;border-radius:50%;background:var(--dh2);display:flex;flex-direction:column;align-items:center;justify-content:center}
.an-ring .n{font-size:26px;font-weight:700}.an-ring .l{font-size:10px;color:var(--color-text-muted)}
.an-ring-svg{flex-shrink:0}

/* ---------- SELECT (combobox année) ---------- */
.an-select{background:var(--color-bg-input);border:1px solid var(--color-border-strong);color:var(--color-text-primary);
  padding:6px 10px;border-radius:var(--radius-sm);font-size:12px;font-family:var(--font-family);cursor:pointer}

/* ---------- BOUTON DÉCLENCHEUR (sous les bannières FecLoader) ---------- */
.intent-card-banner-ratio{color:var(--color-success,#5DCAA5);font-weight:600}

/* ---------- FinTreePopup (états financiers global) + FAB ---------- */
/* FAB « sombre élevé » extensible (icône seule au repos → révèle le label au hover) */
/* FAB « Synthèse PDF » dans le Pilotage (FinTreePopup) — au-dessus de la modale (z>1400), génère/enregistre le PDF
   de l'état courant. Rendu GLASSMORPHISM : verre teinté teal, flou d'arrière-plan, liseré lumineux. */
.fintree-synthfab{position:fixed;left:20px;bottom:20px;z-index:1402;display:inline-flex;align-items:center;gap:9px;
  padding:11px 18px;font-family:var(--font-family);font-size:13px;font-weight:700;color:#eafffb;letter-spacing:.01em;
  background:linear-gradient(135deg, color-mix(in srgb, var(--brand) 30%, transparent) 0%, color-mix(in srgb, var(--brand) 16%, transparent) 55%, rgba(7,29,40,.30) 100%);
  -webkit-backdrop-filter:blur(16px) saturate(1.7);backdrop-filter:blur(16px) saturate(1.7);
  border:1px solid var(--o22);border-radius:999px;
  box-shadow:0 10px 30px rgba(6,40,44,.45), 0 2px 8px color-mix(in srgb, var(--brand) calc(25% * var(--glow-mul)), transparent), inset 0 1px 0 rgba(255,255,255,.28);
  cursor:pointer;transition:transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease}
.fintree-synthfab:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.34);
  background:linear-gradient(135deg, color-mix(in srgb, var(--brand) 42%, transparent) 0%, color-mix(in srgb, var(--brand) 24%, transparent) 55%, rgba(7,29,40,.30) 100%);
  box-shadow:0 16px 42px color-mix(in srgb, var(--brand) calc(42% * var(--glow-mul)), transparent), 0 3px 10px color-mix(in srgb, var(--brand) calc(30% * var(--glow-mul)), transparent), inset 0 1px 0 rgba(255,255,255,.4)}
.fintree-synthfab:active{transform:translateY(0)}
.fintree-synthfab-ic{font-size:15px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}

/* FAB « Mettre à jour l'exercice » — synthèse provisoire rechargée (verre ambré, même emplacement que la synthèse) */
.fintree-updfab{position:fixed;left:20px;bottom:20px;z-index:1402;display:inline-flex;align-items:center;gap:9px;
  padding:11px 18px;font-family:var(--font-family);font-size:13px;font-weight:700;color:#fff7e6;letter-spacing:.01em;
  background:linear-gradient(135deg, rgba(245,158,11,.32) 0%, rgba(234,179,8,.18) 55%, rgba(7,29,40,.30) 100%);
  -webkit-backdrop-filter:blur(16px) saturate(1.7);backdrop-filter:blur(16px) saturate(1.7);
  border:1px solid var(--o22);border-radius:999px;
  box-shadow:0 10px 30px rgba(40,28,6,.45), 0 2px 8px rgba(234,179,8,.25), inset 0 1px 0 rgba(255,255,255,.28);
  cursor:pointer;transition:transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease}
.fintree-updfab:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.34);
  background:linear-gradient(135deg, rgba(245,158,11,.44) 0%, rgba(234,179,8,.26) 55%, rgba(7,29,40,.30) 100%);
  box-shadow:0 16px 42px rgba(234,179,8,.42), 0 3px 10px rgba(234,179,8,.3), inset 0 1px 0 rgba(255,255,255,.4)}
.fintree-updfab:active{transform:translateY(0)}
.fintree-updfab-ic{font-size:15px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
/* Mode clair : FABs glass synthèse (teal) & update (ambre) — texte quasi-blanc, stop sombre rgba(7,29,40,.30) et ombre noire codés en dur */
html[data-theme="light"] .fintree-synthfab{color:var(--brand-strong);
  background:linear-gradient(135deg, color-mix(in srgb, var(--brand) 18%, #ffffff) 0%, color-mix(in srgb, var(--brand) 9%, #ffffff) 60%, #ffffff 100%);
  border-color:color-mix(in srgb, var(--brand) 32%, transparent);
  box-shadow:0 10px 30px color-mix(in srgb, var(--brand) calc(20% * var(--glow-mul)), transparent), 0 2px 8px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.9)}
html[data-theme="light"] .fintree-synthfab:hover{
  background:linear-gradient(135deg, color-mix(in srgb, var(--brand) 42%, transparent) 0%, color-mix(in srgb, var(--brand) 22%, transparent) 55%, rgba(255,255,255,.5) 100%);
  box-shadow:0 16px 42px color-mix(in srgb, var(--brand) calc(30% * var(--glow-mul)), transparent), inset 0 1px 0 rgba(255,255,255,.8)}
html[data-theme="light"] .fintree-updfab{color:#6b4a10;
  background:linear-gradient(135deg, rgba(245,158,11,.30) 0%, rgba(234,179,8,.16) 55%, rgba(255,255,255,.55) 100%);
  box-shadow:0 10px 30px rgba(234,179,8,.2), 0 2px 8px rgba(234,179,8,.16), inset 0 1px 0 rgba(255,255,255,.7)}
html[data-theme="light"] .fintree-updfab:hover{
  background:linear-gradient(135deg, rgba(245,158,11,.42) 0%, rgba(234,179,8,.24) 55%, rgba(255,255,255,.5) 100%);
  box-shadow:0 16px 42px rgba(234,179,8,.3), inset 0 1px 0 rgba(255,255,255,.8)}

.fintree-fab{position:relative;height:46px;/* enfant du stack .fab-stack-r → positionnement délégué au conteneur */
  display:flex;align-items:center;gap:0;overflow:hidden;cursor:pointer;padding:0 12px;
  border-radius:13px;border:1px solid var(--o6);
  background:linear-gradient(145deg,var(--surf-3),#071722);color:var(--an-teal,var(--brand));
  box-shadow:6px 6px 16px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul))),-4px -4px 12px var(--o3);
  transition:padding .28s cubic-bezier(.34,1.1,.4,1),gap .28s,color .2s,box-shadow .2s,transform .2s}
.fintree-fab svg{flex-shrink:0}
.fintree-fab-label{max-width:0;opacity:0;white-space:nowrap;font-size:13px;font-weight:600;color:#fff;
  overflow:hidden;transition:max-width .28s cubic-bezier(.34,1.1,.4,1),opacity .24s}
.fintree-fab:hover{color:#fff;gap:10px;transform:translateY(-2px);
  box-shadow:0 12px 30px color-mix(in srgb, var(--brand) calc(30% * var(--glow-mul)), transparent),inset 0 0 0 1px color-mix(in srgb, var(--brand) calc(40% * var(--glow-mul)), transparent)}
.fintree-fab:hover .fintree-fab-label{max-width:220px;opacity:1}
/* Mode clair : FAB Pilotage (le stop #071722, le label #fff et l'ombre noire sont codés en dur) */
html[data-theme="light"] .fintree-fab{
  background:linear-gradient(145deg,var(--surf-3),#e2eaf1);
  box-shadow:5px 5px 16px rgba(15,30,45,.14),-4px -4px 12px rgba(255,255,255,.75)}
html[data-theme="light"] .fintree-fab-label{color:var(--color-text-primary)}
html[data-theme="light"] .fintree-fab:hover{color:var(--brand-strong);
  box-shadow:0 12px 30px color-mix(in srgb, var(--brand) calc(22% * var(--glow-mul)), transparent),inset 0 0 0 1px color-mix(in srgb, var(--brand) calc(35% * var(--glow-mul)), transparent)}
/* FAB Stress-test (variant de .fintree-fab) : icône emoji + état actif ambre quand le flyout est ouvert. */
.stress-fab .stress-fab-ico{font-size:20px;line-height:1;flex-shrink:0}
.stress-fab.on .fintree-fab-label{max-width:220px;opacity:1;color:#fbbf24}
.stress-fab.on{box-shadow:0 12px 30px rgba(245,158,11,calc(.3 * var(--glow-mul))),inset 0 0 0 1px rgba(245,158,11,.45)}

/* ---------- Mobile : header popup compact (titre masqué → close accessible) ---------- */
@media(max-width:640px){
  .apop-header{gap:6px;padding:10px 10px}
  .apop-exercice{width:82px}
  .apop-tabs{gap:8px;flex:1;min-width:0}
  .apop-titleblock{width:auto;flex:0 1 auto;min-width:0}
  .apop-titleblock .apop-title{display:none}     /* titre supprimé sur mobile */
  .apop-close{margin-left:auto}                   /* le close reste à droite, toujours visible */
  /* FinTreePopup : header épuré sur mobile — chip d'équilibre masqué (visible en bas via « Check Actif = Passif »),
     boutons ＋/－/Excel réduits à leur icône, actions ré-alignées à droite. */
  .fintree-head{gap:6px;padding:5px 10px}
  .fintree-title{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .fintree-chip-eq{display:none !important}                 /* statut bilan : masqué (redondant avec le Check en bas) */
  .fintree-firstaction{margin-left:auto}                    /* ré-aligne les actions à droite (le chip portait margin-left:auto) */
  .fintree-head .addyr-lbl{display:none}                    /* ＋ exercice → ＋ seul */
  .fintree-addyr{padding:5px 9px}
  .fintree-export span{display:none}                        /* Excel → icône seule */
  .fintree-export{padding:5px 9px;gap:0}
  /* Header MINIMUM exploitable mobile : on ne garde que titre · ＋exercice · toggle ⚙/🎯 · ✕.
     Secondaires masqués (Excel, − exercice, palette, badge « ? ») pour que le toggle + fermeture restent atteignables. */
  .fintree-head .hyp-badge{display:none}
  .fintree-delyr{display:none}
  .fintree-export{display:none}
  .fintree-palette{display:none !important}
  /* Scénarios : header épuré → combo + bouton HUB ⚖ (compare/crée/renomme/supprime tout depuis la modal). */
  .fintree-scen{margin-left:4px;gap:3px}
  .fintree-scen-dd{width:92px}
  .fintree-scen-dd .custom-dropdown-trigger{padding:6px 8px;font-size:11px;gap:4px}
  .fintree-scen-hub-badge{top:-4px;right:-4px;min-width:14px;height:14px;font-size:8px}
  .fintree-modetoggle button{padding:5px 9px}              /* toggle compact (icônes seules, labels déjà masqués) */
  /* Mobile : popups quasi pleine largeur + dvh */
  .apop-backdrop{padding:6px}
  .apop{width:calc(100vw - 12px);max-width:none;height:95dvh}
  .fintree-backdrop{padding:0}
  /* Tables éditables (EBITDA normalisé / Net vendeur) : scroll horizontal interne,
     colonnes à largeur fixe pour rester alignées entre les lignes (sinon débordement hors popup). */
  .apop-content{overflow-x:hidden}
  .an-mtable{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .an-mrow{min-width:max-content}
  .an-mrow .lbl{flex:0 0 128px;min-width:128px;max-width:128px;overflow:hidden}
  .an-mrow .yr{flex:0 0 56px;min-width:56px;max-width:56px}
  .an-mrow .yr2{flex:0 0 104px;max-width:104px}
  .an-mrow .rm{flex:0 0 24px}
  .an-minput{font-size:11px;padding:4px 6px}
  /* bouton « Ajouter » : wrap dans la colonne pour ne pas élargir la ligne (sinon scroll vers du vide) */
  .an-madd{white-space:normal;font-size:11px;padding:5px 8px;max-width:100%}
}
.fintree-backdrop{position:fixed;inset:0;z-index:1400;background:rgba(3,12,18,.62);
  display:flex;align-items:center;justify-content:center;padding:0px}

/* Barres de % : couleur pilotée par la palette active (var --ftree-bar = Layout.CurrentPalette[x]),
   donc mise à jour automatique au switch de palette — pas de teinte figée. */
.ftree-pct .mud-progress-linear-bar{background-color:var(--ftree-bar) !important}

/* Flag de retraitement de pilotage (ajustement marge/éco, impact délais BFR) — teal, distinct du flag hypothèse. */
.hyp-parent-ind.adj-ind{color:var(--an-teal) !important}

/* En-têtes du tableau financier (bande « Historique/Prévisionnel » + ligne des années/mois) :
   lignes compactées — padding vertical des <th> réduit + line-height resserrée. */
.myDarkGrid .dxbl-grid-table>thead th,
.myGrid .dxbl-grid-table>thead th{padding-top:2px !important;padding-bottom:2px !important}
.myDarkGrid .dxbl-grid-header-content,
.myGrid .dxbl-grid-header-content{line-height:1.2 !important}

/* En-tête de mois PRÉVISIONNEL (atterrissage du provisoire + horizon projeté) : petite flèche teal de projection
   devant le libellé (qui reste clair) + teinte de fond posée sur la cellule (voile renforcé via CustomizeElement). */
.ftree-mhdr{display:flex;align-items:center;justify-content:flex-end;gap:4px;width:100%}
.ftree-mlabel{display:inline-block}
.ftree-mprev-ic{width:11px;height:11px;flex:0 0 auto;stroke:var(--mud-palette-primary)}
/* Barres % compactes : barre fine + petit espace au-dessus (séparation de la valeur du dessus). */
.ftree-bar-tight{height:3px !important;margin:1px 0 1px 0 !important}
/* Lignes porteuses d'une barre : padding vertical des cellules réduit à 0 pour compenser la barre. */
td.barrow,.barrow{--dxbl-grid-cell-padding-y:0px;padding-top:0 !important;padding-bottom:0 !important}

/* Cellule %Mb ÉDITABLE (taux de marge brute cible, prévisionnel) — rendu en CHIP discret (pas un input qui
   dénote vs l'historique read-only) : petite pastille arrondie teintée, éditable au clic. */
.margin-edit-wrap{display:flex;align-items:center;justify-content:flex-end}
.margin-edit-cell{max-width:46px;background:transparent !important;border:none !important;box-shadow:none !important}
.margin-edit-cell .dxbl-textbox,.margin-edit-cell.dxbl-textbox{background:transparent !important;border:none !important;box-shadow:none !important;min-height:0 !important;min-width:0 !important}
.margin-edit-cell input{font-size:9px !important;font-weight:600 !important;text-align:center !important;padding:0 6px !important;height:17px !important;line-height:14px !important;
    color:var(--tx2) !important;background:color-mix(in srgb, var(--brand) 16%, transparent) !important;border:1px solid color-mix(in srgb, var(--brand) 32%, transparent) !important;border-radius:5px !important;}
.margin-edit-cell input:hover{background:color-mix(in srgb, var(--brand) 26%, transparent) !important;color:#fff !important}
.margin-edit-cell input:focus{background:color-mix(in srgb, var(--brand) 30%, transparent) !important;border-color:var(--an-teal) !important;color:#fff !important;outline:none !important}

/* StyledFinTree — survol de ligne (hors lignes vertes/highlight) + ombre douce du bord de la colonne figée */
.ftree-rb.dxbl-grid .dxbl-grid-table>tbody>tr:hover>td:not(.ftree-strong){
  background-color:var(--o5) !important}
.ftree-rb.dxbl-grid .dxbl-grid-table>tbody>tr>td.dxbl-grid-last-fixed-left-cell{
  box-shadow:7px 0 9px -7px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)))}

/* Poignée de redimensionnement de la colonne libellé (CustomPCG) de l'arbre financier stylé.
   Posée en overlay sur la bordure droite de CustomPCG (left = largeur courante). Comme la grille est en
   table-layout:fixed, les colonnes data sans largeur se répartissent l'espace restant à parts égales.
   (Le wrapper porte position:relative en inline quand le resize est actif ; sinon display:contents.) */
.ftree-col-handle{position:absolute;top:0;bottom:0;width:14px;transform:translateX(-50%);z-index:7;
  cursor:col-resize;touch-action:none;display:flex;align-items:center;justify-content:center}
/* Rail vertical : quasi invisible au repos (la bordure adoucie de CustomPCG fait le séparateur), teal à l'interaction. */
.ftree-col-rail{position:absolute;top:3px;bottom:3px;left:50%;transform:translateX(-50%);
  width:2px;border-radius:2px;background:var(--o4);pointer-events:none;
  transition:background .16s,width .16s,box-shadow .16s}
.ftree-col-handle:hover .ftree-col-rail{background:var(--mud-palette-primary);width:3px;box-shadow:0 0 9px color-mix(in srgb,var(--mud-palette-primary) 40%,transparent)}
.ftree-col-handle.dragging .ftree-col-rail{background:var(--mud-palette-primary);width:3px;box-shadow:0 0 13px color-mix(in srgb,var(--mud-palette-primary) 60%,transparent)}
/* Poignée à grip pointillé (centrée) : révélée au survol → affordance claire « glissable ». */
.ftree-col-grip{position:relative;z-index:1;width:7px;height:34px;border-radius:7px;pointer-events:none;
  background-color:rgba(13,34,46,.96);border:1px solid var(--o16);
  background-image:radial-gradient(rgba(255,255,255,.55) 1px,transparent 1.4px);
  background-size:3px 6px;background-position:center;background-repeat:repeat-y;
  box-shadow:0 1px 6px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));opacity:0;transform:scale(.85);
  transition:opacity .16s,transform .16s,border-color .16s,box-shadow .16s,background-color .16s}
.ftree-col-handle:hover .ftree-col-grip{opacity:.92;transform:scale(1);border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
.ftree-col-handle.dragging .ftree-col-grip{opacity:1;transform:scale(1);border-color:var(--mud-palette-primary);
  background-color:color-mix(in srgb,var(--mud-palette-primary) 18%,transparent);box-shadow:0 0 14px color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
/* Tooltip moderne (data-tip) : le handle étant pleine hauteur, on ancre la bulle près du HAUT (sinon elle
   tomberait en bas de grille) et on masque la flèche (rien au-dessus vers quoi pointer). */
.ftree-col-handle[data-tip]::after{top:30px;bottom:auto;text-align:center;
  transform:translateX(-50%) translateY(-3px)}
.ftree-col-handle[data-tip]:hover::after{transform:translateX(-50%) translateY(0)}
.ftree-col-handle[data-tip]::before{display:none}
.ftree-col-overlay{position:fixed;inset:0;z-index:40;cursor:col-resize}

/* Hypothèse désactivée : on grise le CONTENU de la cellule (opacity sur l'enfant), PAS la cellule elle-même.
   Sur la colonne figée (CustomPCG sticky), une opacity sur la cellule créerait un stacking context translucide
   → le contenu des colonnes défilant dessous transparaîtrait. La cellule garde donc son fond opaque + son z-index. */
.hyp-off>*{opacity:.4}

.fintree-modal{position:relative;width:100vw;height:100dvh;
  /* Palette-aware : base quasi-noire (profondeur) teintée par var(--brand), teinte décroissante
     de haut en bas (concentrée sous la source radiale), stop du bas pur near-black = ancre sombre.
     Défaut teal ≈ l'ancien navy-teal ; palette violette → modal violet sombre, etc. */
  background:radial-gradient(130% 90% at 50% -10%,
    color-mix(in srgb, var(--brand) 15%, #0a1a22) 0%,
    color-mix(in srgb, var(--brand) 8%, #08151c) 38%,
    color-mix(in srgb, var(--brand) 3%, #051016) 70%,
    #030d15 100%);
  border:1px solid var(--o8);
  border-radius:4px;box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));overflow:hidden}
html[data-theme="light"] .fintree-modal{background:radial-gradient(130% 90% at 50% -10%, color-mix(in srgb, var(--brand) 6%, #f4f8fb) 0%, color-mix(in srgb, var(--brand) 4%, #eef3f7) 40%, color-mix(in srgb, var(--brand) 3%, #e8eff4) 72%, color-mix(in srgb, var(--brand) 2%, #e2eaf1) 100%)}
.fintree-head{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;gap:4px;padding:6px;
  border-bottom:1px solid var(--o8);
  box-shadow:inset 0 1px 0 var(--o6)}
/* Spacer : pousse le bouton ✕ à l'extrême droite (les contrôles s'alignent à gauche). */
.fintree-head-spacer{flex:1 1 auto;min-width:8px}
.fintree-title{font-size:14px;font-weight:600;color:#fff}
html[data-theme="light"] .fintree-title{color:var(--color-text-primary,#10243a)}
/* Light : les :hover qui forçaient color:#fff sur un fond translucide clair du header
   (toggle Hypothèses/Simuler, Analyste, boutons scénario, chips/upload de la diffbar)
   rendaient le texte invisible au survol → on les ramène à un texte foncé lisible. */
html[data-theme="light"] .fintree-modetoggle button:hover,
html[data-theme="light"] .fintree-analystebtn:hover,
html[data-theme="light"] .fintree-scen-btn:hover,
html[data-theme="light"] .fintree-diffbar .diffbar-chip:hover:not(:disabled),
html[data-theme="light"] .diffbar-chip:hover:not(:disabled),
html[data-theme="light"] .diffbar-upload:hover{color:var(--color-text-primary,#10243a)}
.fintree-prev{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-muted,var(--mut1));cursor:pointer}
.fintree-prev input{accent-color:var(--an-teal);cursor:pointer}
.fintree-export{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-family:var(--font-family);
  font-size:12px;font-weight:600;color:#fff;background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 22%, transparent),rgba(58,123,213,.18));
  border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:8px;padding:5px 12px;transition:.15s}
.fintree-export:hover:not(:disabled){border-color:color-mix(in srgb, var(--brand) 70%, transparent);transform:translateY(-1px)}
.fintree-export:disabled{opacity:.7;cursor:default}
/* Export Excel VERROUILLÉ (upsell : « débloquez pour exporter ») — atténué + indice premium ambre au survol,
   distinct du gradient cyan de la version débloquée. Le clic ouvre l'UnlockModal (pas un export). */
.fintree-export.locked{background:var(--o4);border-color:var(--o16);color:var(--tx1)}
.fintree-export.locked:hover:not(:disabled){border-color:rgba(251,191,36,.6);color:#fff;transform:translateY(-1px)}
.fintree-export-lock{font-size:11px;line-height:1}
/* Toggle Hypothèses / Simuler dans le HEADER (segmented control, ouvre le panneau dans le mode choisi) */
.fintree-modetoggle{display:inline-flex;gap:2px;background:var(--o5);
  border:1px solid var(--o12);border-radius:8px;padding:2px}
.fintree-modetoggle button{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-family);
  font-size:12px;font-weight:600;color:var(--color-text-secondary,var(--mut1));background:transparent;border:none;border-radius:6px;padding:5px 11px;transition:.15s}
.fintree-modetoggle button:hover{color:#fff}
.fintree-modetoggle button.on{background:color-mix(in srgb, var(--brand) 85%, transparent);color:#fff}
.fintree-modetoggle .fmt-ic{font-size:13px;line-height:1}
/* Bouton Analyste IA AUTONOME (hors toggle) — accent violet pour le distinguer */
.fintree-analystebtn{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-family);
  font-size:12px;font-weight:600;color:var(--color-text-secondary,var(--mut1));
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 11px;transition:.15s}
.fintree-analystebtn:hover{color:#fff;border-color:rgba(167,139,250,.55);background:rgba(167,139,250,.14)}
.fintree-analystebtn .fmt-ic{font-size:13px;line-height:1}
/* Variante icône seule (Analyste / Partager) : carré compact, le MudTooltip porte le libellé. */
.fintree-analystebtn-ico{padding:6px 9px;gap:0}
.fintree-analystebtn-ico .fmt-ic{font-size:15px}
/* Bouton « réorganiser les lignes » (D&D) compact, dans le header de la colonne PCG */
.fintree-dragbtn-hdr{display:inline-flex;align-items:center;justify-content:center;height:20px;width:22px;padding:0;flex:0 0 auto;
  border:1px solid var(--o14);border-radius:6px;background:var(--o4);color:var(--tx8);cursor:pointer;transition:.13s}
.fintree-dragbtn-hdr:hover:not(:disabled),.fintree-dragbtn-hdr.on{border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent);color:#22d3ee}
.fintree-dragbtn-hdr:disabled{opacity:.4;cursor:not-allowed}

/* ═══════════════ MULTI-SCÉNARIO : switcher header + dialog + comparaison ═══════════════ */
.fintree-scen{display:inline-flex;align-items:center;gap:4px;margin-left:6px}
.fintree-scen-dd{width:auto; max-width:152px}
.fintree-scen-dd .custom-dropdown,.fintree-scen-dd .custom-dropdown-trigger{width:100%}
/* le conteneur .fintree-scen-dd pilote la largeur — sinon le min-width:130px du trigger déborde (header serré) */
.fintree-scen-dd .custom-dropdown-trigger{min-width:0}
/* Bouton HUB scénarios (⚖) avec badge du nombre de scénarios */
.fintree-scen-cmp{position:relative}
.fintree-scen-hub-ic{font-size:14px;line-height:1}
.fintree-scen-hub-badge{position:absolute;top:-5px;right:-5px;min-width:15px;height:15px;padding:0 3px;
  display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;line-height:1;
  color:#04222b;background:var(--brand);border:1px solid #0b1d29;border-radius:999px;box-shadow:0 1px 3px rgba(var(--shadow-col),calc(.4 * var(--shadow-mul)))}
.scen-dlg-combo{width:100%}
.scen-dlg-combo .custom-dropdown,.scen-dlg-combo .custom-dropdown-trigger{width:100%}
.fintree-scen-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 auto;
  cursor:pointer;font-size:13px;line-height:1;color:var(--tx8);background:color-mix(in srgb, var(--brand) 10%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:7px;transition:.13s}
.fintree-scen-btn:hover{color:#fff;background:color-mix(in srgb, var(--brand) 22%, transparent);border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
.fintree-scen-del:hover{color:#fff;background:rgba(240,149,149,.2);border-color:rgba(240,149,149,.6)}
/* Sélecteur d'axe analytique (header) : ventile l'arbre à la volée. */
.fintree-ana-axis{height:28px;flex:0 0 auto;cursor:pointer;font-size:12px;font-weight:600;color:var(--tx8);
  background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);
  border-radius:7px;padding:0 6px;outline:none;max-width:140px}
.fintree-ana-axis:hover{border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
/* Toggle « Vue comparaison » actif */
.fintree-diff-btn.on{color:#06222c;background:var(--mud-palette-primary);border-color:var(--mud-palette-primary)}
.fintree-diff-btn.on:hover{filter:brightness(1.06);background:var(--mud-palette-primary)}
/* Barre de contrôle de la vue diff (au-dessus du tableau) */
.diffbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;
  border-bottom:1px solid var(--o7);background:var(--o2)}
.diffbar-modes{display:inline-flex;gap:6px}
/* Sélecteur d'état (Résultat · Bilan · Flux) poussé à droite de la diffbar */
.diffbar-stmt{display:inline-flex;gap:6px;margin-left:auto}
.diffbar-chip{font-family:var(--font-family);font-size:12px;font-weight:600;color:var(--mut4);cursor:pointer;
  background:var(--o4);border:1px solid var(--o10);border-radius:999px;padding:5px 12px;transition:.13s}
.diffbar-chip:hover:not(:disabled){background:var(--o7);color:#fff}
.diffbar-chip.on{background:color-mix(in srgb,var(--mud-palette-primary) 22%,transparent);border-color:var(--mud-palette-primary);color:#fff}
.diffbar-chip:disabled{opacity:.4;cursor:not-allowed}
.diffbar-combo{display:inline-flex;align-items:center;gap:6px}
/* Combos « exercice » (libellés courts type « 2021 ») : rétrécis */
.diffbar-combo-yr .custom-dropdown{width:auto}
.diffbar-combo-yr .custom-dropdown-trigger{min-width:62px;width:auto}
.diffbar-lbl{font-size:11.5px;color:var(--mut4);white-space:nowrap}
.diffbar-warn{color:#f3c98b}
/* Bouton upload .ski/PDF (mode Snapshots) */
.diffbar-upload{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--tx8);cursor:pointer;
  background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:8px;padding:5px 12px;transition:.13s;white-space:nowrap}
.diffbar-upload:hover{color:#fff;background:color-mix(in srgb, var(--brand) 22%, transparent);border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
/* En-tête de la colonne libellé de DiffView : toggle K€/% + pill « A → B » (A/B aux couleurs de leurs colonnes) */
.diffhdr{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:nowrap;padding:0 2px}
.diffhdr-pair{display:inline-flex;align-items:center;gap:6px;flex:0 1 auto;min-width:0;
  padding:2px 10px;border-radius:999px;background:var(--o5);border:1px solid var(--o10)}
.diffhdr-tok{font-size:11px;font-weight:700;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:88px}
.diffhdr-arrow{font-size:11px;font-weight:700;color:#7f95a2;flex:0 0 auto;line-height:1}

/* Dialog « Nouveau scénario » / « Renommer » — réutilise .fintree-dlg, mais aligné à gauche */
.scen-dlg{width:min(440px,92%);text-align:left;padding:18px}
.scen-dlg-head{display:flex;align-items:center;margin-bottom:6px}
.scen-dlg-title{font-size:15px;font-weight:700;color:#fff}
.scen-dlg-x{margin-left:auto;background:none;border:0;color:#7c8aa0;font-size:15px;cursor:pointer;line-height:1;padding:2px 4px}
.scen-dlg-x:hover{color:var(--tx1)}
.scen-dlg-lbl{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--mut1);margin:13px 0 5px}
.scen-dlg-hint{text-transform:none;letter-spacing:0;font-weight:500;color:#6c8492}
.scen-dlg-input{width:100%;box-sizing:border-box;font-family:var(--font-family);font-size:13px;color:var(--tx1);
  background:var(--o5);border:1px solid var(--o14);border-radius:9px;padding:9px 11px;outline:none}
.scen-dlg-input:focus{border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.scen-dlg-combo{width:100%}
.scen-dlg-warn{margin-top:14px;font-size:11.5px;line-height:1.5;color:#f3c98b;
  background:rgba(240,180,90,.08);border:1px solid rgba(240,180,90,.28);border-radius:9px;padding:9px 11px}
.scen-dlg-warn b{color:#ffd9a0;font-weight:700}
.scen-dlg-presets{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.scen-preset{display:flex;flex-direction:column;align-items:flex-start;gap:1px;cursor:pointer;text-align:left;
  font-family:var(--font-family);background:var(--o4);border:1px solid var(--o12);
  border-radius:10px;padding:9px 11px;transition:.13s}
.scen-preset:hover{border-color:color-mix(in srgb, var(--brand) 45%, transparent);background:color-mix(in srgb, var(--brand) 7%, transparent)}
.scen-preset.on{border-color:color-mix(in srgb, var(--brand) 85%, transparent);background:color-mix(in srgb, var(--brand) 14%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--brand) calc(40% * var(--glow-mul)), transparent) inset}
.scen-preset-ic{font-size:15px;line-height:1.25}
.scen-preset-lbl{font-size:12.5px;font-weight:700;color:var(--tx1)}
.scen-preset-sub{font-size:10.5px;color:var(--mut1)}
.scen-dlg-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.scen-dlg-cancel{cursor:pointer;font-family:var(--font-family);font-size:12.5px;font-weight:600;color:var(--mut1);
  background:var(--o5);border:1px solid var(--o12);border-radius:9px;padding:8px 16px}
.scen-dlg-cancel:hover{color:#fff;border-color:rgba(255,255,255,.25)}
.scen-dlg-ok{display:inline-flex;align-items:center;justify-content:center;min-width:130px;min-height:35px;cursor:pointer;
  font-family:var(--font-family);font-size:12.5px;font-weight:700;color:#fff;
  background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 34%, transparent),rgba(58,123,213,.28));border:1px solid color-mix(in srgb, var(--brand) 55%, transparent);
  border-radius:9px;padding:8px 18px}
.scen-dlg-ok:hover:not(:disabled){background:color-mix(in srgb, var(--brand) 45%, transparent)}
.scen-dlg-ok:disabled{opacity:.5;cursor:not-allowed}
/* Variante destructive (suppression de scénario) */
.scen-dlg-ok.scen-dlg-danger{background:linear-gradient(100deg,rgba(229,72,77,.34),rgba(192,57,43,.30));border-color:rgba(229,72,77,.55)}
.scen-dlg-ok.scen-dlg-danger:hover:not(:disabled){background:rgba(229,72,77,.48)}
.scen-dlg-confirm{margin:6px 0 0;font-family:var(--font-family);font-size:13px;line-height:1.5;color:#cdd9e0}
.scen-dlg-confirm b{color:#fff}
.scen-dlg-confirm-sub{font-size:11.5px;color:var(--mut1)}

/* ═══════════════ Builder « Développement » (new business) ═══════════════ */
.dev-modal-backdrop{position:fixed;inset:0;z-index:4000;background:rgba(3,12,18,.62);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:24px;animation:devFade .15s ease-out}
@keyframes devFade{from{opacity:0}to{opacity:1}}
.dev-modal{width:min(640px,96vw);max-height:92vh;display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--surf-3),#081a24);border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);
  border-radius:16px;box-shadow:0 24px 70px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));overflow:hidden;font-family:var(--font-family)}
/* Light : 2ᵉ stop navy CODÉ EN DUR (#081a24) → modal gris→navy boueux. Surfaces claires qui flippent. Dark inchangé. */
html[data-theme="light"] .dev-modal{background:linear-gradient(180deg,var(--surf-1b),var(--surf-2))}
/* Light : sections/select/foot du dev-modal en navy CODÉ EN DUR (rgba(7,29,40,…)/rgba(0,0,0,…)) → blocs gris
   boueux + titre de section #dbe9f0 (clair) illisible sur clair. Surfaces/textes qui flippent. Dark inchangé. */
html[data-theme="light"] .dev-sec{background:var(--surf-2);border-color:var(--color-border-light)}
html[data-theme="light"] .dev-sec-t{color:var(--color-text-primary)}
html[data-theme="light"] .dev-select{background:var(--surf-1);color:var(--color-text-primary)}
html[data-theme="light"] .dev-modal-foot{background:var(--surf-2)}
html[data-theme="light"] .dev-modal-x:hover{color:var(--color-text-primary)}
html[data-theme="light"] .dev-sec-hint,
html[data-theme="light"] .dev-unit,
html[data-theme="light"] .dev-empty,
html[data-theme="light"] .dev-cost-del,
html[data-theme="light"] .dev-modal-x{color:var(--color-text-muted)}
/* Light : titres/valeurs/inputs des flyouts (finmod) + table scénarios étaient en #fff → illisibles sur leurs
   surfaces claires translucides (le fond, lui, flippe déjà). Dark inchangé. */
html[data-theme="light"] .finmod-title,
html[data-theme="light"] .finmod-text,
html[data-theme="light"] .finmod-inp input,
html[data-theme="light"] .scen-dlg-title,
html[data-theme="light"] .scen-cmp-table tbody td.is-cur,
html[data-theme="light"] .scen-cmp-table thead th.is-cur{color:var(--color-text-primary,#10243a)}
/* Light : flyouts finmod (flux tréso, etc.) → fond glass var(--gl20)+backdrop-blur captent le BLEU derrière
   (glass boueux/saturé) + #fff codés en dur. Fond clair OPAQUE (plus de capture) + textes/boutons qui flippent. Dark inchangé. */
html[data-theme="light"] .finmod{background:linear-gradient(180deg,var(--surf-1b),var(--surf-2));border-color:var(--color-border-medium);backdrop-filter:none}
html[data-theme="light"] .finmod-x:hover,
html[data-theme="light"] .finmod-btn:hover,
html[data-theme="light"] .finmod-remove:hover{color:var(--color-text-primary)}
html[data-theme="light"] .finmod-inp .finmod-spin input{color:var(--color-text-primary) !important}
html[data-theme="light"] .finmod-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
html[data-theme="light"] .finmod-btn.primary:hover{background:var(--brand-strong)}
.dev-modal-head{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--o7)}
.dev-modal-title{font-size:17px;font-weight:800;color:var(--tx1);letter-spacing:-.01em}
.dev-modal-sub{font-size:11px;font-weight:600;color:var(--txt-teal);background:color-mix(in srgb, var(--brand) 12%, transparent);padding:2px 8px;border-radius:99px;margin-left:6px}
.dev-modal-x{margin-left:auto;background:none;border:0;color:#7e97a4;font-size:16px;cursor:pointer;padding:2px 6px;border-radius:6px}
.dev-modal-x:hover{color:#fff;background:var(--o7)}
.dev-modal-body{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}

.dev-master{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:12px;border:1px solid var(--o9);background:rgba(255,255,255,.025)}
.dev-master.on{border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 8%, transparent)}
.dev-master-txt{display:flex;flex-direction:column}
.dev-master-txt b{font-size:14px;color:var(--tx1)}
.dev-master-txt span{font-size:11.5px;color:var(--mut1)}
.dev-switch{position:relative;display:inline-block;width:46px;height:26px;flex-shrink:0;cursor:pointer}
.dev-switch input{opacity:0;width:0;height:0;position:absolute}
.dev-switch-track{position:absolute;inset:0;border-radius:99px;background:var(--o16);transition:.18s}
.dev-switch-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.18s}
.dev-switch input:checked + .dev-switch-track{background:linear-gradient(100deg,var(--brand),var(--brand))}
.dev-switch input:checked + .dev-switch-track .dev-switch-knob{transform:translateX(20px)}

.dev-sec{display:flex;flex-direction:column;gap:9px;padding:13px 14px;border-radius:12px;border:1px solid var(--o7);background:rgba(7,29,40,.4)}
.dev-sec-h{display:flex;align-items:center;gap:10px}
.dev-sec-t{font-size:13px;font-weight:700;color:#dbe9f0}
.dev-sec-hint{font-size:11px;font-weight:500;color:#7e97a4;margin-left:6px}
.dev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.dev-cell{display:flex;flex-direction:column;gap:4px}
.dev-cell-inline{flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap}
.dev-cell-l{font-size:11px;color:var(--mut1);font-weight:600}
.dev-inp-wrap{position:relative;display:flex;align-items:center}
.dev-inp{width:100%;font-family:var(--font-family);font-size:13px;color:var(--tx1);background:var(--o4);
  border:1px solid var(--o12);border-radius:8px;padding:7px 44px 7px 10px;outline:none}
.dev-inp:focus{border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.dev-unit{position:absolute;right:9px;font-size:10.5px;color:#7e97a4;pointer-events:none}
.dev-mb-note{font-size:11.5px;color:var(--mut1)}

.dev-mens{display:inline-flex;border:1px solid var(--o12);border-radius:8px;overflow:hidden;margin-left:auto}
.dev-mens-b{font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--mut1);background:none;border:0;padding:5px 10px;cursor:pointer}
.dev-mens-b.on{color:var(--mud-palette-tertiary-text);background:linear-gradient(100deg,var(--brand),var(--brand))}

.dev-cost{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:10px;border:1px solid var(--o8);background:var(--o2)}
.dev-cost-h{display:flex;align-items:center;gap:8px}
.dev-select{font-family:var(--font-family);font-size:12.5px;font-weight:600;color:var(--tx1);background:rgba(7,29,40,.8);
  border:1px solid var(--o14);border-radius:8px;padding:6px 9px;cursor:pointer}
.dev-cost-del{background:none;border:0;color:#7e97a4;font-size:13px;cursor:pointer;padding:3px 5px;border-radius:6px}
.dev-cost-del:hover{color:#e5484d;background:rgba(229,72,77,.12)}
.dev-empty{margin:0;font-size:12px;color:#7e97a4;line-height:1.45}
.dev-add{align-self:flex-start;font-family:var(--font-family);font-size:12px;font-weight:600;color:var(--mut2);
  background:rgba(255,255,255,.035);border:1px dashed color-mix(in srgb, var(--brand) 40%, transparent);border-radius:8px;padding:7px 13px;cursor:pointer}
.dev-add:hover{color:var(--tx1);border-color:color-mix(in srgb, var(--brand) 70%, transparent);background:color-mix(in srgb, var(--brand) 7%, transparent)}

.dev-chk{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12px;color:var(--mut2);cursor:pointer}
.dev-chk input{accent-color:var(--txt-teal)}
.dev-capex{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}

.dev-modal-foot{display:flex;align-items:center;gap:8px;padding:14px 18px;border-top:1px solid var(--o7);background:rgba(0,0,0,.18)}
.dev-foot-spacer{flex:1}
.dev-btn-del{font-family:var(--font-family);font-size:12.5px;font-weight:600;color:#e5848a;background:rgba(229,72,77,.1);
  border:1px solid rgba(229,72,77,.3);border-radius:9px;padding:8px 14px;cursor:pointer}
.dev-btn-del:hover:not(:disabled){background:rgba(229,72,77,.2);color:#fff}
.dev-btn-cancel{font-family:var(--font-family);font-size:12.5px;font-weight:600;color:var(--mut1);background:var(--o5);
  border:1px solid var(--o12);border-radius:9px;padding:8px 16px;cursor:pointer}
.dev-btn-cancel:hover:not(:disabled){color:#fff;border-color:rgba(255,255,255,.25)}
.dev-btn-ok{font-family:var(--font-family);font-size:12.5px;font-weight:700;color:#06222c;min-width:120px;
  background:linear-gradient(100deg,var(--brand),var(--brand));border:0;border-radius:9px;padding:8px 18px;cursor:pointer}
.dev-btn-ok:hover:not(:disabled){filter:brightness(1.08)}
.dev-btn-del:disabled,.dev-btn-cancel:disabled,.dev-btn-ok:disabled{opacity:.55;cursor:not-allowed}

/* « Depuis une idée » (IA → DevConfig) */
.dev-ai{background:color-mix(in srgb,var(--brand) 5%,transparent);border:.5px solid color-mix(in srgb,var(--brand) 16%,transparent);border-radius:10px;padding:11px 12px}
.dev-ai-row{display:flex;gap:8px;align-items:center;margin-top:8px}
.dev-ai-in{flex:1 1 auto;min-width:0}
.dev-btn-ai{flex:0 0 auto;font-family:var(--font-family);font-size:12.5px;font-weight:700;color:var(--brand);background:transparent;
  border:1px solid color-mix(in srgb,var(--brand) 45%,transparent);border-radius:9px;padding:7px 14px;cursor:pointer;white-space:nowrap}
.dev-btn-ai:hover:not(:disabled){background:color-mix(in srgb,var(--brand) 12%,transparent)}
.dev-btn-ai:disabled{opacity:.5;cursor:not-allowed}
.dev-ai-cta{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:5px}   /* bouton Générer + badge coût crédits empilés */
.dev-ai-msg{margin-top:8px;font-size:12px;color:var(--brand);background:color-mix(in srgb,var(--brand) 9%,transparent);border-radius:7px;padding:7px 9px}

/* ═══════════ Comparaison des scénarios (modal fusionné : indicateurs clés + matrice d'hypothèses) ═══════════ */
.scen-cmp-backdrop{align-items:center}
/* Les dialogs scénario (nouveau / renommer / supprimer) s'ouvrent PAR-DESSUS le hub comparaison (z 60).
   Sélecteur composé (0,2,0) → l'emporte sur .fintree-dlg-backdrop{z-index:60} défini plus bas dans le fichier. */
.fintree-dlg-backdrop.scen-dlg-over{z-index:70}
.scen-cmp{width:min(860px,94%);max-height:90%;display:flex;flex-direction:column;overflow:hidden;
  background:var(--grad-card1);border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);border-radius:18px;
  box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.65 * var(--shadow-mul)));font-family:var(--font-family)}
.scen-cmp-head{display:flex;align-items:center;gap:10px;padding:11px 18px;
  border-bottom:1px solid var(--o8);background:linear-gradient(90deg,color-mix(in srgb, var(--brand) 12%, transparent),transparent 70%)}
.scen-cmp-title{font-size:13px;font-weight:700;color:var(--tx1);letter-spacing:-.01em;margin-right:auto}
/* Les MudTooltip (stress-test, export, nouveau scénario) ne doivent pas casser la rangée flex de l'en-tête. */
.scen-cmp-head .mud-tooltip-root{display:inline-flex;align-items:center}
/* Bouton « Nouveau scénario » (fusion création + comparaison dans le hub) */
.scen-cmp-newbtn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-family:var(--font-family);font-size:11px;font-weight:700;color:#04222b;
  background:linear-gradient(180deg,#5fe0c0,#34b89c);border:0;border-radius:8px;padding:5px 11px;
  box-shadow:0 4px 14px rgba(52,184,156,.32);transition:transform .12s,box-shadow .12s,filter .12s}
.scen-cmp-newbtn:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(52,184,156,.45);filter:brightness(1.05)}
.scen-cmp-newbtn.locked{background:var(--o8);color:var(--mut2);box-shadow:none}
.scen-cmp-newbtn-ic{font-size:12px;line-height:1}
/* Bouton « Exporter le comparatif » (ghost, à côté de Nouveau scénario) */
.scen-cmp-exp{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-family);
  font-size:11px;font-weight:700;color:var(--tx2);background:var(--o5);border:1px solid var(--o14);
  border-radius:8px;padding:5px 11px;transition:.13s}
.scen-cmp-exp:hover{color:#fff;background:color-mix(in srgb,var(--mud-palette-tertiary) 16%,transparent);border-color:color-mix(in srgb,var(--mud-palette-tertiary) 45%,transparent)}
/* #1 Stress-test express : bouton + mini-menu de sévérité dans le hub scénarios */
.scen-cmp-stress{position:relative;flex:0 0 auto}
.scen-cmp-stressbtn{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-family);
  font-size:11px;font-weight:700;color:#fcd9b0;background:rgba(251,146,60,.12);border:1px solid rgba(251,146,60,.35);
  border-radius:8px;padding:5px 11px;transition:.13s}
.scen-cmp-stressbtn:hover{color:#fff;background:rgba(251,146,60,.22);border-color:rgba(251,146,60,.55)}
.scen-cmp-stressbtn:disabled{opacity:.6;cursor:default}
.scen-cmp-stress-car{font-size:9px;opacity:.8;transition:transform .14s}
.scen-cmp-stress.open .scen-cmp-stress-car{transform:rotate(180deg)}
.scen-cmp-stress-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:5;min-width:184px;
  background:var(--dk8);border:1px solid var(--o14);border-radius:10px;padding:6px;
  box-shadow:0 12px 30px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)))}
.scen-cmp-stress-hd{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
  color:var(--mut1);padding:4px 8px 6px}
.scen-cmp-stress-opt{display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;text-align:left;
  background:transparent;border:0;border-radius:7px;padding:7px 8px;color:var(--tx7);font-size:12px;transition:.1s}
.scen-cmp-stress-opt:hover{background:rgba(251,146,60,.16)}
.scen-cmp-stress-ic{font-size:14px}
.scen-cmp-stress-lbl{flex:1;font-weight:600}
.scen-cmp-stress-val{font-size:11px;font-weight:700;color:#fb923c}
/* Actions par colonne dans l'en-tête du tableau d'indicateurs : activer · renommer · supprimer */
.scen-cmp-colh{text-align:center !important;vertical-align:top;padding-top:5px !important;padding-bottom:4px !important}
.scen-cmp-colname{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.scen-cmp-colacts{display:inline-flex;align-items:center;justify-content:center;gap:3px;margin-top:3px}
.scen-cmp-colacts .mud-tooltip-root{display:inline-flex;align-items:center}   /* les MudTooltip ne cassent pas la rangée flex */
.scen-cmp-colbtn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;
  cursor:pointer;font-size:9px;line-height:1;color:var(--tx8);background:var(--o5);
  border:1px solid var(--o12);border-radius:5px;transition:.12s}
.scen-cmp-colbtn:hover{color:#fff;background:color-mix(in srgb, var(--brand) 25%, transparent);border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
.scen-cmp-colbtn.act{color:var(--mut6)}
.scen-cmp-colbtn.act:hover{color:var(--txt-teal);border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:color-mix(in srgb, var(--brand) 18%, transparent)}
.scen-cmp-colbtn.del:hover{color:#fff;background:rgba(240,149,149,.22);border-color:rgba(240,149,149,.6)}
.scen-cmp-colcur{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:8px;color:var(--txt-teal)}

/* ── Table des indicateurs (fine) ── */
.scen-cmp-tablewrap{overflow:auto;padding:8px 16px 2px}
.scen-cmp-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:11px;
  border:1px solid var(--o12);border-radius:11px}
.scen-cmp-table thead th:not(.scen-cmp-metric){width:150px}   /* colonnes scénario à largeur fixe (alignées avec la matrice) */
.scen-cmp-table th,.scen-cmp-table td{padding:3px 12px;text-align:right;white-space:nowrap}
.scen-cmp-table thead th{position:sticky;top:0;z-index:1;background:var(--dk4);color:var(--tx8);font-weight:600;font-size:9px;
  text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--o14)}
.scen-cmp-table thead th:first-child{border-top-left-radius:11px}
.scen-cmp-table thead th:last-child{border-top-right-radius:11px}
.scen-cmp-table th+th,.scen-cmp-table td+td{border-left:1px solid var(--o5)}
.scen-cmp-table tbody td{color:var(--tx1);font-weight:500;font-variant-numeric:tabular-nums;border-bottom:1px solid var(--o5)}
.scen-cmp-table tbody tr:nth-child(even) td{background:var(--o2)}
.scen-cmp-table .scen-cmp-metric{text-align:left;color:var(--mut2);font-weight:400;font-variant-numeric:normal}
.scen-cmp-table tbody td.is-cur{background:color-mix(in srgb, var(--brand) 7%, transparent);color:#fff}
.scen-cmp-table thead th.is-cur{background:var(--dk5);color:#fff;box-shadow:inset 0 2px 0 var(--brand)}   /* OPAQUE → pas de bleed des lignes au scroll */
/* Cadre du tableau KPI : coins bas arrondis + la bordure du tableau fait le bas (pas de filet de la dernière ligne) */
.scen-cmp-table tbody tr:last-child td{border-bottom:0}
.scen-cmp-table tbody tr:last-child td:first-child{border-bottom-left-radius:11px}
.scen-cmp-table tbody tr:last-child td:last-child{border-bottom-right-radius:11px}

/* ── Section hypothèses ── */
.scen-cmp-hyps{padding:2px 16px 4px}
.scen-cmp-hypbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 6px}
.scen-cmp-subttl{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mut6);margin:0}
.cmp-difftoggle{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--mut2);cursor:pointer;user-select:none;
  background:var(--o4);border:1px solid var(--o10);border-radius:8px;padding:3px 8px;transition:border-color .13s}
.cmp-difftoggle:hover{border-color:color-mix(in srgb, var(--brand) 45%, transparent)}
.cmp-difftoggle input{accent-color:var(--an-teal);cursor:pointer;margin:0}

/* ── Matrice des hypothèses (fine) ── */
.cmp-matrixwrap{max-height:300px;overflow:auto;border:1px solid var(--o8);border-radius:12px}
.hypsynth-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:10.5px}
.hypsynth-table thead th:not(.hypsynth-rowhead){width:150px}   /* colonnes scénario à largeur fixe (alignées avec la table indicateurs) */
.hypsynth-table th,.hypsynth-table td{padding:3px 10px;text-align:center;vertical-align:middle}
.hypsynth-table thead th{position:sticky;top:0;z-index:2;background:var(--dk4);color:var(--tx8);font-weight:600;font-size:9px;
  border-bottom:1px solid var(--o14)}
.hypsynth-table thead th.is-cur{background:var(--dk5);color:#fff;box-shadow:inset 0 2px 0 var(--brand)}   /* OPAQUE */
.hypsynth-table td.is-cur{background:color-mix(in srgb, var(--brand) 6%, transparent)}
.hypsynth-table td+td,.hypsynth-table th+th{border-left:1px solid var(--o5)}
.hypsynth-table tbody tr:not(.hypsynth-grouprow) td{border-bottom:1px solid var(--o5)}
.hypsynth-scenname{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;font-size:10.5px;font-weight:600;color:var(--tx1)}
.hypsynth-count{display:block;font-size:8.5px;font-weight:600;color:var(--mut6);text-transform:none}
.hypsynth-rowhead{text-align:left!important;color:#dbe9f0;font-weight:400;position:sticky;left:0;z-index:1;background:var(--dh3);white-space:normal;line-height:1.2}
html[data-theme="light"] .hypsynth-rowhead{color:var(--tx1)}   /* clair : #dbe9f0 (texte sombre-mode) invisible sur fond clair → texte principal */
.hypsynth-table thead .hypsynth-rowhead{background:var(--dk4);color:var(--mut6);z-index:3}
.hypsynth-grouprow td{text-align:left;background:var(--dk9);color:var(--tx8);font-weight:700;font-size:9px;
  text-transform:uppercase;letter-spacing:.05em;padding:3px 10px;border-bottom:1px solid var(--o6)}
.hypsynth-groupic{margin-right:6px;opacity:.9}
.hypsynth-mark{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;font-size:9px;font-weight:800}
.hypsynth-mark.on{color:var(--surf-1);background:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb, var(--brand) 16%, transparent)}
.hypsynth-mark.off{color:var(--mut1);background:var(--o6);border:1px solid var(--o16)}
.hypsynth-absent{color:#4a5a66;font-size:12px}
.hypsynth-detail{display:block;font-size:8.5px;color:var(--mut6);margin-top:1px;line-height:1.2;white-space:normal}
.hypsynth-empty{text-align:center!important;color:#6c8492;font-style:italic;padding:22px!important}
.hypsynth-diff td{background:rgba(167,139,250,.06)}
.hypsynth-diff .hypsynth-rowhead{background:var(--dh7)}
.hypsynth-diff td.is-cur{background:rgba(167,139,250,.11)}

/* ── Pied + légende + marqueurs ▲▼ des métriques ── */
.scen-cmp-foot{display:flex;align-items:center;gap:14px;justify-content:space-between;padding:9px 18px;border-top:1px solid var(--o8)}
.hypsynth-legend{font-size:9.5px;color:var(--mut6);display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap}
.hypsynth-legend .hypsynth-mark{width:14px;height:14px;font-size:8px;box-shadow:none}
.cmp-mark{font-size:8px;margin-left:5px;vertical-align:middle}
.cmp-mark.hi{color:var(--txt-teal)}
.cmp-mark.lo{color:var(--st-pink)}

/* ═══════════════ Harmonisation GLOBALE des MudToggleGroup → look « segmented » de l'app (sombre + teal var(--brand)) ═══════════════
   analyses.css est chargé APRÈS MudBlazor.min.css → ces règles gagnent (+ !important pour battre les styles inline calculés). */
.mud-toggle-group{
  background:var(--o5)!important;
  border:1px solid var(--o12)!important;
  border-radius:8px!important;
  padding:2px!important;
  gap:2px;
  align-items:stretch;
  overflow:hidden;
}
.mud-toggle-group > .mud-toggle-item{
  background:transparent!important;
  color:var(--color-text-secondary,var(--mut1))!important;
  border:0!important;
  border-radius:6px!important;
  margin:0!important;                 /* annule le margin-left:-1px des variantes outlined */
  padding:2px 11px!important;
  min-height:0!important;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-family);
  font-size:11px!important;
  font-weight:600!important;
  letter-spacing:0!important;
  text-transform:none!important;
  transition:background .13s,color .13s;
}
.mud-toggle-group > .mud-toggle-item .mud-button-label{min-height:0!important;line-height:1.2}
.mud-toggle-group > .mud-toggle-item.mud-toggle-item-delimiter{border-left:0!important}   /* pas de séparateur (look pilule) */
.mud-toggle-group > .mud-toggle-item:hover{color:var(--tx2)!important;background:var(--o5)!important}
.mud-toggle-group > .mud-toggle-item.mud-toggle-item-selected{
  background:color-mix(in srgb, var(--brand) 85%, transparent)!important;   /* teal var(--brand), accent unique quel que soit le Color= du composant */
  color:#fff!important;
  font-weight:700!important;
}
.mud-toggle-group > .mud-toggle-item.mud-toggle-item-selected .mud-icon-root{color:#fff!important}
/* En-tête du panneau latéral : rappel du mode courant (le toggle est dans le header) + fermeture */
.side-modebar{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.side-modebar-title{flex:1 1 auto;font-size:12px;font-weight:700;color:var(--tx2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-modebar-x{flex:0 0 auto;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:13px;color:var(--color-text-muted,var(--mut1));background:var(--o5);
  border:1px solid var(--o12);border-radius:7px;transition:.13s}
.side-modebar-x:hover{color:#fff;border-color:#F09595;background:rgba(240,149,149,.12)}
/* Bouton « Valo » du modebar (mobile uniquement) */
.side-valo-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-family:var(--font-family);
  font-size:11px;font-weight:700;color:var(--tx8);background:color-mix(in srgb, var(--brand) 16%, transparent);border:1px solid color-mix(in srgb, var(--brand) 42%, transparent);
  border-radius:7px;padding:4px 9px;transition:.13s}
.side-valo-btn:hover{background:color-mix(in srgb, var(--brand) 26%, transparent);color:#fff}
/* Flyout Valorisation (mobile) — fixé AU-DESSUS de l'arbre */
.valo-fly-backdrop{position:fixed;inset:0;z-index:3001;background:rgba(3,12,18,.45)}
.valo-fly{position:fixed;top:54px;left:12px;right:12px;z-index:3002;background:var(--dh4);
  border:1px solid var(--o14);border-radius:14px;box-shadow:0 18px 50px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));
  padding:14px 16px;font-family:var(--font-family);animation:dropdown-fade-in .14s ease-out}
.valo-fly-head{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;color:#fff;margin-bottom:10px}
.valo-fly-x{background:none;border:none;color:var(--color-text-muted,var(--mut1));cursor:pointer;font-size:14px}
.valo-fly-x:hover{color:#fff}
.valo-fly-hero{text-align:center;padding:4px 0 12px;border-bottom:1px solid var(--o8);margin-bottom:12px}
.valo-fly-num{font-weight:800;color:#fff;font-size:34px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.valo-fly-num small{font-size:.42em;font-weight:600;color:var(--tx8);margin-left:5px}
.valo-fly-cap{font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted,var(--mut1));margin-top:7px}
.valo-fly-rows{display:flex;flex-direction:column;gap:8px}
.valo-fly-row{display:flex;align-items:center;gap:8px;cursor:pointer;font-family:var(--font-family);font-size:13px;color:var(--tx2);
  background:var(--o4);border:1px solid var(--o10);border-radius:10px;padding:9px 12px;transition:.12s}
.valo-fly-row:hover{background:color-mix(in srgb, var(--brand) 10%, transparent)}
.valo-fly-row .dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.valo-fly-row .dot.dcf{background:var(--brand)}
.valo-fly-row .dot.mult{background:#3a7bd5}
.valo-fly-lbl{flex:1 1 auto;font-weight:600}
.valo-fly-row b{color:#fff;font-weight:700;font-variant-numeric:tabular-nums}
.valo-fly-row b.na{color:var(--color-text-muted,var(--mut1));font-weight:600}
.valo-fly-cog{flex:0 0 auto;color:var(--color-text-muted,var(--mut1));font-size:13px}
.sim-intro{font-size:11px;color:var(--color-text-muted,var(--mut1));line-height:1.4;margin-bottom:12px}
.sim-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.sim-card{display:flex;flex-flow:row wrap;align-items:center;column-gap:8px;row-gap:3px;text-align:left;cursor:pointer;
  font-family:var(--font-family);background:var(--o4);border:1px solid var(--o10);
  border-radius:10px;padding:10px 11px;transition:.13s}
.sim-card:hover{background:color-mix(in srgb, var(--brand) 12%, transparent);border-color:color-mix(in srgb, var(--brand) 50%, transparent);transform:translateY(-1px)}
.sim-card .sim-ic{font-size:18px;line-height:1;margin:0;flex:0 0 auto}
.sim-card .sim-t{flex:1 1 auto;font-size:12px;font-weight:700;color:var(--tx3)}
.sim-card .sim-d{flex-basis:100%;font-size:10px;color:var(--color-text-muted,var(--mut1))}
@media(max-width:520px){.sim-grid{grid-template-columns:1fr}}

/* ═══════════════ Panneau « 🤖 Analyste » (analyses IA concurrentes) ═══════════════ */
.ai-intro{font-size:11px;color:var(--color-text-muted,var(--mut1));line-height:1.4;margin-bottom:10px}
.ai-intro b{color:var(--tx2);font-weight:700}
/* Config moteur + modèle (segmented) */
.ai-config{display:flex;flex-direction:column;gap:7px;margin-bottom:12px}
.ai-cfg-row{display:flex;align-items:center;gap:8px}
.ai-cfg-lbl{flex:0 0 76px;white-space:nowrap;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted,var(--mut1));font-weight:700}
.ai-cfg-val{font-size:11px;font-weight:600;color:var(--tx8)}
.ai-seg{display:inline-flex;gap:2px;background:var(--o5);border:1px solid var(--o10);border-radius:8px;padding:2px}
.ai-seg button{font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:transparent;border:0;border-radius:6px;padding:4px 11px;cursor:pointer;transition:.13s}
.ai-seg button:hover{color:var(--tx2)}
.ai-seg button.on{color:var(--surf-1);background:var(--brand);font-weight:700}
/* Paywall : badge quota IA gratuites */
.ai-quota{font-size:11px;font-weight:700;color:var(--surf-1);background:var(--brand);border-radius:7px;padding:3px 9px;letter-spacing:.01em}
.ai-quota.empty{color:#fff;background:#b4533f}
/* Ollama actif : badge « illimité & gratuit » (local) */
.ai-quota.ollama-free{background:linear-gradient(90deg,#5fe0c0,#34b89c);box-shadow:0 0 10px rgba(95,224,192,.35);cursor:default}
/* Sélecteur de modèle Ollama (CustomDropdown) — occupe la largeur restante de la ligne config */
.ai-model-dd{flex:1 1 auto;min-width:0}
.ai-model-dd .custom-dropdown,.ai-model-dd .custom-dropdown-trigger{width:100%;min-width:0}
.ai-model-dd .custom-dropdown-trigger{padding:4px 9px;font-size:11px}
/* Spinner des blocs en cours de stream — teinté palette */
.ai-run-spin{width:12px;height:12px;border-color:color-mix(in srgb,var(--mud-palette-tertiary) 28%,transparent);border-top-color:var(--mud-palette-tertiary)}

/* ─── Chip « utilisateur connecté » sticky sur toute l'app (MainLayout) ───
   z-index sous les modals (3200) → visible en usage normal, masqué proprement quand une modal s'ouvre. */
.app-userchip{position:fixed;left:12px;bottom:12px;z-index:900;display:inline-flex;align-items:center;gap:7px;
  padding:5px 11px 5px 9px;border-radius:999px;font-family:var(--font-family);font-size:11px;font-weight:600;
  color:#cbe9e0;background:rgba(10,24,34,.74);border:1px solid color-mix(in srgb,var(--mud-palette-tertiary) 32%,transparent);
  box-shadow:0 6px 20px rgba(var(--shadow-col),calc(.4 * var(--shadow-mul)));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  max-width:42vw;cursor:default;animation:app-userchip-in .25s ease}
/* Accueil (pas de dossier) : coins bas pris par les FAB → on bascule en HAUT-DROITE. */
.app-userchip.on-home{left:auto;bottom:auto;top:12px;right:12px;animation:app-userchip-in-top .25s ease}
/* Variante MINIMALE « ● Connecté » : largeur au contenu (email + plan dans le tooltip). */
.app-userchip-min{max-width:max-content}
@keyframes app-userchip-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes app-userchip-in-top{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.app-userchip-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--mud-palette-tertiary);
  box-shadow:0 0 7px color-mix(in srgb,var(--mud-palette-tertiary) 70%,transparent);animation:app-userchip-pulse 2.4s ease-in-out infinite}
@keyframes app-userchip-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.app-userchip-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.app-userchip-plan{flex:0 0 auto;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  color:#04222b;background:var(--mud-palette-tertiary);border-radius:999px;padding:1px 6px}
@media (max-width:640px){
  .app-userchip{font-size:10px;left:8px;bottom:8px;max-width:60vw}
  .app-userchip.on-home{left:auto;bottom:auto;top:8px;right:8px}
}
/* Bouton « retour accueil » (icône maison) — hub d'exploration uniquement, coin HAUT-GAUCHE (libre). */
.intent-home-btn{position:fixed;top:12px;left:12px;z-index:900;width:36px;height:36px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#cbe9e0;
  background:rgba(10,24,34,.74);border:1px solid color-mix(in srgb,var(--mud-palette-tertiary) 32%,transparent);
  box-shadow:0 6px 20px rgba(var(--shadow-col),calc(.4 * var(--shadow-mul)));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:.14s}
.intent-home-btn:hover{color:#fff;background:rgba(10,24,34,.92);transform:translateY(-1px);
  border-color:color-mix(in srgb,var(--mud-palette-tertiary) 60%,transparent)}
@media (max-width:640px){ .intent-home-btn{top:8px;left:8px;width:32px;height:32px} }

/* ─── Confirmation magic-link (onglet ouvert par le lien) ─── */
.ml-magic-backdrop{position:fixed;inset:0;z-index:4200;display:flex;align-items:center;justify-content:center;
  background:rgba(3,7,12,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:20px}
.ml-magic{width:min(420px,94vw);text-align:center;font-family:var(--font-family);
  background:var(--grad-card1);border:1px solid color-mix(in srgb,var(--mud-palette-tertiary) 30%,transparent);
  border-radius:18px;box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.65 * var(--shadow-mul)));padding:30px 28px 26px;animation:app-userchip-in .25s ease}
.ml-magic-ic{width:54px;height:54px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;
  font-size:26px;font-weight:800;color:#04222b;border-radius:50%;
  background:var(--mud-palette-tertiary);box-shadow:0 0 28px color-mix(in srgb,var(--mud-palette-tertiary) 45%,transparent)}
.ml-magic-t{font-size:18px;font-weight:700;color:var(--tx1);letter-spacing:-.01em;margin-bottom:8px}
.ml-magic-d{font-size:13px;line-height:1.6;color:#bcd2dc;margin-bottom:20px}
.ml-magic-btn{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-family:var(--font-family);
  font-size:13px;font-weight:700;color:#04222b;background:linear-gradient(180deg,#5fe0c0,#34b89c);border:0;border-radius:10px;
  padding:10px 22px;box-shadow:0 4px 14px color-mix(in srgb,var(--mud-palette-tertiary) 32%,transparent);transition:transform .12s,filter .12s}
.ml-magic-btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.ai-unlock-link{margin-left:auto;font-family:var(--font-family);font-size:10.5px;font-weight:700;color:var(--tx8);
  background:transparent;border:0;cursor:pointer;padding:0}
.ai-unlock-link:hover{color:var(--tx1);text-decoration:underline}
/* Paywall : bandeau upsell (quota épuisé) */
.ai-upsell{margin:-4px 0 12px;background:linear-gradient(135deg,color-mix(in srgb, var(--brand) 10%, transparent),color-mix(in srgb, var(--brand) 10%, transparent));
  border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:11px;padding:11px 12px}
.ai-upsell-t{font-size:12.5px;font-weight:700;color:var(--tx1);margin-bottom:3px}
.ai-upsell-d{font-size:11px;color:var(--mut2);line-height:1.5;margin-bottom:9px}
.ai-upsell-d b{color:var(--tx2)}
.ai-upsell-btn{font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);
  background:linear-gradient(135deg,var(--brand),var(--brand));border:0;border-radius:8px;padding:7px 14px;cursor:pointer;transition:.13s}
.ai-upsell-btn:disabled{opacity:.6;cursor:default}
.ai-upsell-btn:not(:disabled):hover{transform:translateY(-1px)}
/* Paywall : modale de déblocage (Stripe Embedded) */
.unlock-backdrop{position:fixed;inset:0;background:rgba(2,12,18,.66);backdrop-filter:blur(3px);z-index:100000}
.unlock-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100001;
  width:min(460px,calc(100vw - 28px));max-height:90vh;overflow:auto;background:var(--surf-3);
  border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);border-radius:18px;padding:22px;box-shadow:0 28px 70px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));font-family:var(--font-family)}
.unlock-x{position:absolute;top:12px;right:14px;background:none;border:0;color:#7c8aa0;font-size:16px;cursor:pointer}
.unlock-x:hover{color:var(--tx1)}
.unlock-title{margin:0 0 6px;font-size:17px;font-weight:800;color:var(--tx1)}
.unlock-sub{margin:0 0 16px;font-size:12.5px;color:var(--mut2);line-height:1.5}
.unlock-sub b{color:var(--tx2)}
.unlock-plans{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.unlock-plan{display:flex;flex-direction:column;gap:2px;text-align:left;width:100%;
  background:var(--o4);border:1.5px solid var(--o12);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.13s}
.unlock-plan:hover{border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.unlock-plan.on{border-color:var(--txt-teal);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.unlock-plan-t{font-size:13.5px;font-weight:700;color:var(--tx1)}
.unlock-plan-d{font-size:11px;color:var(--mut2)}
.unlock-go{width:100%;font-family:var(--font-family);font-size:13px;font-weight:700;color:var(--surf-1);
  background:linear-gradient(135deg,var(--brand),var(--brand));border:0;border-radius:11px;padding:11px;cursor:pointer;transition:.13s}
.unlock-go:disabled{opacity:.6;cursor:default}
.unlock-go:not(:disabled):hover{transform:translateY(-1px)}
.unlock-secure{margin:10px 0 0;text-align:center;font-size:11px;color:#64748b}
.unlock-guide{margin:14px 0 0;padding:11px 13px;background:var(--o3);border:1px solid var(--o8);border-radius:10px}
.unlock-guide-t{font-size:11.5px;font-weight:700;color:var(--tx2);margin-bottom:6px}
.unlock-guide-l{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}
.unlock-guide-l li{font-size:11px;color:var(--mut2);line-height:1.45}
.unlock-guide-l b{color:var(--tx2)}
/* ── Redesign 2 colonnes (paywall dossier) : options à gauche + détail de la sélection à droite.
   Smallscreen : la colonne droite passe EN BAS (flex-direction:column). ── */
.unlock-modal:not(.checkout){width:min(780px,calc(100vw - 28px))}
/* Mode RDV : modal élargi pour donner de l'air au Calendly (moins cramé horizontalement). */
.unlock-modal.unlock-rdv:not(.checkout){width:min(940px,calc(100vw - 28px))}
.unlock-body{display:flex;gap:18px;align-items:flex-start}
.unlock-left{flex:0 0 286px;display:flex;flex-direction:column;min-width:0}
.unlock-left .unlock-go{margin-top:12px}
.unlock-plan-rdv.on{border-color:#a78bfa !important;background:rgba(167,139,250,.12) !important}
.unlock-secure-rdv{color:var(--mut2) !important}
/* Conteneur du Calendly inline (mode RDV) — hauteur explicite (Calendly lit la hauteur du parent) suffisante
   pour afficher logo + event + calendrier SANS scroll interne ; le modal scrolle (overflow) sur très petit écran. */
.unlock-cal{height:min(800px,calc(90vh - 140px));min-height:600px;min-width:300px;border-radius:8px;overflow:hidden}
.unlock-cal iframe{width:100% !important;height:100% !important;border:0}
.unlock-right{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:11px;
  padding:14px;background:rgba(255,255,255,.025);border:1px solid var(--o7);border-radius:12px}
.unlock-detail-h{font-size:11px;font-weight:800;color:var(--tx8);text-transform:uppercase;letter-spacing:.05em;margin:0 0 2px}
.unlock-feat{display:flex;flex-direction:column;gap:2px}
.unlock-feat-t{font-size:12.5px;font-weight:700;color:var(--tx1)}
.unlock-feat-d{font-size:11px;color:var(--mut2);line-height:1.45}
.unlock-feat-d b{color:var(--tx2)}
.unlock-feat-d i{color:#7c8aa0;font-style:normal}
.unlock-right .unlock-guide{margin-top:2px}
/* Bouton « Voir un exemple » (démo full-features, nouvel onglet) dans le détail déblocage. */
.unlock-demo{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;flex-wrap:wrap;
  padding:8px 12px;margin:2px 0 4px;border:1px solid color-mix(in srgb, var(--brand) 45%, transparent);border-radius:9px;
  background:color-mix(in srgb, var(--brand) 8%, transparent);color:var(--tx8);font-family:var(--font-family);font-size:12.5px;font-weight:700;
  cursor:pointer;transition:.15s}
.unlock-demo:hover{background:color-mix(in srgb, var(--brand) 16%, transparent);border-color:color-mix(in srgb, var(--brand) 70%, transparent);transform:translateY(-1px)}
.unlock-demo-sub{font-weight:500;font-size:10.5px;color:#7c9aa6}
@media(max-width:720px){
  .unlock-body{flex-direction:column;gap:12px}
  .unlock-left{flex:none}
}
/* Connecteurs comptables — modal (Pro, découvrable) */
.cm-backdrop{position:fixed;inset:0;background:rgba(2,12,18,.62);backdrop-filter:blur(2px);z-index:9000}
.cm-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9001;
  width:min(760px,calc(100vw - 32px));max-height:88vh;overflow:auto;background:var(--surf-3);
  border:1px solid var(--o10);border-radius:16px;box-shadow:0 24px 60px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));font-family:var(--font-family)}
.cm-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--o7)}
.cm-title{font-size:14px;font-weight:700;color:var(--tx1)}
.cm-pro{font-size:9px;font-weight:800;letter-spacing:.06em;color:var(--surf-1);background:linear-gradient(135deg,var(--brand),var(--brand));border-radius:5px;padding:2px 7px}
.cm-x{margin-left:auto;background:none;border:0;color:#7c8aa0;font-size:15px;cursor:pointer}
.cm-x:hover{color:var(--tx1)}
.cm-body{padding:16px}
.cm-lock{text-align:center;padding:18px 14px}
.cm-lock-t{font-size:14px;font-weight:800;color:var(--tx1);margin-bottom:8px}
.cm-lock-d{font-size:12.5px;color:var(--mut2);line-height:1.5;max-width:520px;margin:0 auto 12px}
.cm-lock-d b{color:var(--tx2)}
.cm-lock-l{display:inline-flex;flex-direction:column;gap:5px;text-align:left;margin:0 0 16px;padding:0;list-style:none}
.cm-lock-l li{font-size:12px;color:var(--mut2);padding-left:18px;position:relative}
.cm-lock-l li::before{content:"\2713";position:absolute;left:0;color:var(--txt-teal);font-weight:800}
.cm-lock-btn{font-family:var(--font-family);font-size:13px;font-weight:700;color:var(--surf-1);
  background:linear-gradient(135deg,var(--brand),var(--brand));border:0;border-radius:10px;padding:10px 22px;cursor:pointer;transition:.13s}
.cm-lock-btn:hover{transform:translateY(-1px)}
.unlock-err{margin:8px 0 0;font-size:12px;color:#fb9b86}
.unlock-stripe{min-height:280px;margin-top:6px}
/* ── Mode paiement : le widget Stripe (Embedded Checkout) est une IFRAME cross-origin → on ne peut
   styler QUE le conteneur. On passe la modale en plein cadre (padding 0) pour que SON border-radius
   CLIPPE les coins du widget : fini les coins carrés blancs + la marge sombre qui dénotaient.
   L'intérieur (fond blanc, couleurs des champs, logo) se règle dans Stripe Dashboard → Branding. ── */
.unlock-modal.checkout{padding:0;overflow:hidden}
.unlock-modal.checkout .unlock-title{margin:0;padding:17px 46px 14px 20px;font-size:15px;
  border-bottom:1px solid var(--o6)}
.unlock-modal.checkout .unlock-x{top:15px;right:16px;z-index:3;color:var(--mut2)}
.unlock-modal.checkout .unlock-stripe{min-height:300px;max-height:calc(90vh - 56px);overflow:auto;margin:0}
.unlock-modal.checkout .unlock-secure,
.unlock-modal.checkout .unlock-err{margin:12px 18px 16px}
/* Paywall : ruban lecture seule dans l'Overview (IntentPopup) */
.io-ro-ribbon{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;
  margin:0 16px 4px;padding:9px 14px;border-radius:10px;
  background:linear-gradient(135deg,rgba(180,83,63,.18),rgba(251,191,114,.12));
  border:1px solid rgba(251,191,114,.35)}
.io-ro-txt{font-size:12.5px;color:#fbe3c2}
.io-ro-txt b{color:#fff}
.io-ro-btn{font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--surf-1);
  background:linear-gradient(135deg,var(--brand),var(--brand));border:0;border-radius:8px;padding:7px 14px;cursor:pointer;transition:.13s}
.io-ro-btn:hover{transform:translateY(-1px)}
/* Paywall : lecture seule (snapshot rechargé non débloqué) */
.ro-banner{display:flex;align-items:center;gap:6px;justify-content:center;flex-wrap:wrap;
  font-size:11px;color:#fbbf72;background:rgba(180,83,63,.12);border:1px solid rgba(251,191,114,.30);
  border-radius:8px;padding:6px 10px;margin:8px 0}
.ro-banner-link{font-family:var(--font-family);font-size:11px;font-weight:700;color:var(--tx8);background:none;border:0;cursor:pointer;text-decoration:underline;padding:0}
.ro-banner-link:hover{color:var(--tx1)}
.ro-lock{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:26px 18px}
.ro-lock-ic{font-size:30px;opacity:.85}
.ro-lock-t{font-size:14px;font-weight:800;color:var(--tx1)}
.ro-lock-d{font-size:12px;color:var(--mut2);line-height:1.5;max-width:260px}
.ro-lock-btn{margin-top:6px;font-family:var(--font-family);font-size:12.5px;font-weight:700;color:var(--surf-1);
  background:linear-gradient(135deg,var(--brand),var(--brand));border:0;border-radius:10px;padding:9px 18px;cursor:pointer;transition:.13s}
.ro-lock-btn:hover{transform:translateY(-1px)}
/* Lecture seule : l'onglet Synthèse reste consultable → bouton secondaire teal renvoyant vers la Synthèse. */
.ro-lock-tour{margin-top:10px;font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--tx8);background:color-mix(in srgb, var(--brand) 10%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:10px;padding:8px 16px;cursor:pointer;transition:.13s}
.ro-lock-tour:hover{background:color-mix(in srgb, var(--brand) 20%, transparent);color:var(--tx1);transform:translateY(-1px)}
/* Question libre */
.ai-custom{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.ai-custom-input{font-family:var(--font-family);font-size:12px;color:var(--tx3);line-height:1.45;resize:vertical;min-height:42px;
  background:var(--o4);border:1px solid var(--o10);border-radius:9px;padding:8px 10px}
.ai-custom-input::placeholder{color:var(--color-text-muted,var(--mut1))}
.ai-custom-input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.ai-custom-go{align-self:flex-end;font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:6px 14px;cursor:pointer;transition:.13s}
.ai-custom-go:hover:not(:disabled){background:#5bd3b5;transform:translateY(-1px)}
.ai-custom-go:disabled{opacity:.35;cursor:not-allowed}
/* #4 Explique une ligne : picker de ligne + bouton dans le panneau Analyste */
.ai-explain{display:flex;flex-direction:column;gap:6px;margin:-4px 0 14px}
.ai-explain-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--mut1)}
.ai-explain-row{display:flex;align-items:stretch;gap:8px}
.ai-explain-dd{flex:1;min-width:0}
.ai-explain-go{flex:0 0 auto;font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:6px 14px;cursor:pointer;transition:.13s}
.ai-explain-go:hover:not(:disabled){background:#5bd3b5;transform:translateY(-1px)}
.ai-explain-go:disabled{opacity:.35;cursor:not-allowed}
/* Contexte d'activité (optionnel, repliable) */
.ai-ctx{margin-bottom:12px;border:1px solid var(--o9);border-radius:9px;background:var(--o2);overflow:hidden}
.ai-ctx.open{border-color:color-mix(in srgb, var(--brand) 30%, transparent)}
.ai-ctx-toggle{display:flex;align-items:center;gap:7px;width:100%;text-align:left;cursor:pointer;font-family:var(--font-family);
  font-size:11.5px;font-weight:600;color:var(--tx2);background:transparent;border:0;padding:8px 11px;transition:.12s}
.ai-ctx-toggle:hover{background:var(--o3)}
.ai-ctx-caret{flex:0 0 auto;font-size:9px;color:var(--color-text-muted,var(--mut1))}
.ai-ctx-on{margin-left:auto;font-size:9px;font-weight:700;color:var(--txt-teal)}
.ai-ctx-body{display:flex;flex-direction:column;gap:8px;padding:4px 11px 11px}
.ai-ctx-hint{font-size:10px;line-height:1.4;color:var(--color-text-muted,var(--mut1))}
.ai-ctx-hint b{color:#ffd66b;font-weight:700}
.ai-ctx-dd{flex:1 1 auto;min-width:0}
.ai-ctx-input{font-family:var(--font-family);font-size:11.5px;color:var(--tx3);line-height:1.45;resize:vertical;min-height:54px;
  background:var(--o4);border:1px solid var(--o10);border-radius:8px;padding:7px 9px}
.ai-ctx-input::placeholder{color:var(--color-text-muted,var(--mut1))}
.ai-ctx-input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.ai-ctx-flags{display:flex;flex-direction:column;gap:5px}
.ai-ctx-flags label{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--tx2);cursor:pointer}
.ai-ctx-flags input{accent-color:var(--an-teal);width:14px;height:14px;cursor:pointer}
/* Catégories + grille de presets */
.ai-cat{display:flex;align-items:center;gap:8px;margin:12px 0 6px}
.ai-cat-lbl{flex:1 1 auto;font-size:10.5px;font-weight:700;color:var(--tx2);letter-spacing:.02em}
.ai-cat-all{flex:0 0 auto;font-family:var(--font-family);font-size:9.5px;font-weight:700;color:var(--tx8);
  background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:7px;padding:2px 9px;cursor:pointer;transition:.13s}
.ai-cat-all:hover{background:color-mix(in srgb, var(--brand) 22%, transparent);color:var(--tx1)}
.ai-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
/* le wrapper MudTooltip est l'enfant direct de la grille → forcer block/100% (comme .synth-kpi-grid) */
.ai-grid > *{display:block;width:100%;min-width:0}
.ai-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;cursor:pointer;width:100%;height:100%;
  font-family:var(--font-family);background:var(--o4);border:1px solid var(--o10);
  border-radius:10px;padding:9px 10px;transition:.13s;min-height:0}
.ai-card:hover{background:color-mix(in srgb, var(--brand) 12%, transparent);border-color:color-mix(in srgb, var(--brand) 50%, transparent);transform:translateY(-1px)}
.ai-card .ai-card-t{font-size:12px;font-weight:700;color:var(--tx3);line-height:1.2}
.ai-card .ai-card-d{font-size:9.5px;color:var(--color-text-muted,var(--mut1));line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ai-card-foot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:4px;width:100%}
.ai-card-cost{font-size:9.5px;font-weight:700;color:#ffd66b;font-variant-numeric:tabular-nums}
.ai-card-cost.local{color:var(--txt-teal)}
.ai-card-cached{font-size:9px;font-weight:600;color:var(--txt-teal)}
/* Analyse déjà lancée (présente dans le panneau de droite) → carte désactivée, anti-doublon. */
.ai-card:disabled{cursor:default}
.ai-card.is-active{opacity:.6;background:color-mix(in srgb, var(--brand) 7%, transparent);border-color:color-mix(in srgb, var(--brand) 28%, transparent)}
.ai-card.is-active:hover{transform:none;background:color-mix(in srgb, var(--brand) 7%, transparent);border-color:color-mix(in srgb, var(--brand) 28%, transparent)}
.ai-card-active{font-size:9px;font-weight:700;color:var(--brand-strong)}
.ai-card-data{margin-left:auto;font-size:11px;line-height:1;opacity:.55;cursor:pointer;transition:.12s;padding:1px 2px;border-radius:5px}
.ai-card-data:hover{opacity:1;background:color-mix(in srgb, var(--brand) 18%, transparent)}
@media(max-width:520px){.ai-grid{grid-template-columns:1fr}}
/* Runs (analyses lancées) */
.ai-runs-head{font-size:10.5px;font-weight:700;color:var(--tx2);letter-spacing:.02em;margin:16px 0 6px;
  padding-top:10px;border-top:1px solid var(--o8)}
.ai-run{background:var(--o3);border:1px solid var(--o10);border-radius:10px;margin-bottom:8px;overflow:hidden}
.ai-run.open{border-color:color-mix(in srgb, var(--brand) 35%, transparent)}
.ai-run-head{display:flex;align-items:center;gap:7px;cursor:pointer;padding:8px 10px;user-select:none}
.ai-run-head:hover{background:var(--o3)}
.ai-run-ic{flex:0 0 auto;font-size:12px}
.ai-run-t{flex:1 1 auto;font-size:12px;font-weight:700;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-run-tag{flex:0 0 auto;font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--txt-teal);background:color-mix(in srgb, var(--brand) 14%, transparent);border-radius:5px;padding:1px 5px}
.ai-run-model{flex:0 0 auto;font-size:9px;font-weight:600;color:var(--color-text-muted,var(--mut1))}
.ai-run-x{flex:0 0 auto;font-size:11px;color:var(--color-text-muted,var(--mut1));cursor:pointer;padding:0 3px;border-radius:4px;transition:.12s}
.ai-run-x:hover{color:#ff6b6b;background:rgba(255,107,107,.12)}
.ai-run-caret{flex:0 0 auto;font-size:9px;color:var(--color-text-muted,var(--mut1))}
.ai-run-body{border-top:1px solid var(--o7);padding:2px 4px}
/* MarkdownStreamer embarqué dans une carte run → pas de scroll interne (le panneau scrolle) */
.ai-run-body .my-style{height:auto!important;padding:.4rem .6rem!important;overflow:visible!important}
.ai-run-body .my-style h1{font-size:16px;margin:14px 0 8px}
.ai-run-body .my-style h2,.ai-run-body .my-style h3{font-size:14px;margin:14px 0 7px}
.ai-run-body .my-style p,.ai-run-body .my-style li{font-size:12.5px;line-height:1.55}
/* Carte preset : tooltip MudBlazor */
.ai-tip{max-width:260px;text-align:left;font-size:11.5px;line-height:1.45}
/* Bouton « Voir les analyses » (modal réduit) */
.ai-reopen{width:100%;margin-top:14px;font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:9px;padding:9px 12px;cursor:pointer;transition:.13s}
.ai-reopen:hover{background:#5bd3b5;transform:translateY(-1px)}

/* ═══════════════ Modal Analyste IA (AnalysteIaModal, hébergé FecLoader) — cartes 1/4 à gauche · runs expandables à droite ═══════════════ */
.aim-backdrop{position:fixed;inset:0;background:rgba(3,7,12,.5);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:3200}
/* Glassmorphism léger : fond translucide + flou d'arrière-plan + liseré clair interne */
.aim-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:94vw;max-width:1480px;height:90vh;max-height:940px;
  display:flex;flex-direction:column;
  background:linear-gradient(180deg,rgba(16,42,57,.82),rgba(10,24,34,.6));
  backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);
  border:1px solid var(--o12);border-radius:18px;
  box-shadow:0 28px 90px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul))),inset 0 1px 0 var(--o7);z-index:3201;overflow:hidden}
.aim-hidden{display:none!important}
/* Light : le shell glass SOMBRE du modal Analyste → glass CLAIR (sinon tout le modal reste sombre en clair).
   Le contenu interne (.ai-*) utilise déjà des vars qui flippent → il suit une fois le fond éclairci. */
html[data-theme="light"] .aim-modal{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(244,248,251,.82))}
html[data-theme="light"] .aim-sub,html[data-theme="light"] .aim-empty{color:var(--mut2)}
/* Light : petits accents or/teal du catalogue (crédit, ✦ haute-valeur, ✓ affichée, coût cumulé) assombris pour rester lisibles sur cartes claires. */
html[data-theme="light"] .ai-card-cost,html[data-theme="light"] .ai-card-hv,html[data-theme="light"] .aim-cost{color:#a87a16}
/* Header DENSE + bandeau glass teal */
.aim-head{display:flex;align-items:center;gap:9px;padding:9px 16px;flex:0 0 auto;
  border-bottom:1px solid var(--o8);background:linear-gradient(90deg,color-mix(in srgb, var(--brand) 12%, transparent),transparent 72%)}
.aim-title{font-size:14.5px;font-weight:800;color:var(--tx1);flex:0 0 auto;letter-spacing:-.01em}
.aim-sub{font-size:11.5px;color:#8aa0ad;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aim-count{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);padding:2px 8px;border-radius:999px}
.aim-cost{flex:0 0 auto;font-size:10.5px;font-weight:700;color:#fcd34d;background:rgba(252,211,77,.10);border:1px solid rgba(252,211,77,.28);padding:2px 8px;border-radius:999px}
.aim-clear,.aim-x{flex:0 0 auto;background:rgba(148,163,184,.08);border:1px solid rgba(148,163,184,.18);color:var(--tx1);border-radius:8px;padding:4px 9px;font-size:11.5px;font-weight:600;cursor:pointer;transition:.13s}
.aim-clear:hover,.aim-x:hover{background:rgba(148,163,184,.16);border-color:rgba(148,163,184,.3)}
.aim-grid{flex:1 1 auto;display:grid;grid-template-columns:var(--aim-col,minmax(220px,26%)) 12px 1fr;min-height:0}
/* Splitter HOMOGÉNÉISÉ avec FinTreePopup : rail fin + poignée à grip pointillé, accent var(--mud-palette-primary) */
.aim-splitter{cursor:col-resize;position:relative;z-index:5;touch-action:none;display:flex;align-items:center;justify-content:center}
.aim-splitter::before{content:"";position:absolute;top:8px;bottom:8px;left:50%;transform:translateX(-50%);width:2px;border-radius:2px;background:var(--o9);transition:background .18s,width .18s,box-shadow .18s}
.aim-splitter::after{content:"";position:relative;z-index:1;width:7px;height:40px;border-radius:7px;
  background-color:rgba(13,34,46,.96);border:1px solid var(--o16);
  background-image:radial-gradient(rgba(255,255,255,.5) 1px,transparent 1.4px);
  background-size:3px 6px;background-position:center;background-repeat:repeat-y;
  box-shadow:0 1px 5px rgba(var(--shadow-col),calc(.45 * var(--shadow-mul)));opacity:.72;transition:opacity .18s,border-color .18s,box-shadow .18s}
.aim-splitter:hover::before{background:var(--mud-palette-primary);width:3px;box-shadow:0 0 8px color-mix(in srgb,var(--mud-palette-primary) 35%,transparent)}
.aim-splitter:hover::after{opacity:1;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--mud-palette-primary) 40%,transparent)}
/* Colonne gauche = conteneur flex : zone scrollable + barre de question ÉPINGLÉE en bas (hors scroll). */
.aim-left{display:flex;flex-direction:column;min-height:0}
.aim-left-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.ai-custom-pinned{flex:0 0 auto;margin-bottom:0;padding:10px 16px;border-top:1px solid var(--o8);}
/* Runs en GRILLE 2 colonnes (écran large) : ~4 blocs visibles d'un coup, scroll vertical au-delà.
   align-content/align-items:start → les cartes gardent leur hauteur naturelle (pas d'étirement). */
.aim-right{overflow-y:auto;padding:14px 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  align-content:start;align-items:start;gap:12px}
.aim-right.is-empty{display:flex;align-items:center;justify-content:center}   /* état vide → centré */
.aim-right .ai-run{margin-bottom:0;align-self:start;display:flex;flex-direction:column;min-width:0}
.aim-right .ai-run:only-child{grid-column:1 / -1}   /* une analyse seule → pleine largeur */
/* Corps d'analyse plafonné via un conteneur de défilement DÉDIÉ (.ai-run-scroll), qu'on maîtrise
   entièrement — au lieu de plafonner .my-style (dont MarkdownStreamer fixe height/overflow EN INLINE,
   ce qui défaisait le cap). Le markdown défile DEDANS, la carte ne déborde plus sur ses voisines, et
   la barre « Affiner » reste HORS du scroll (sous lui). */
/* Carte BORNÉE (max-height) + flex-colonne : tête fixe · corps qui défile · footer fixe.
   .ai-run a overflow:hidden → AUCUN débordement possible sur les cartes voisines, quoi qu'il arrive. */
.aim-right .ai-run.open{max-height:min(48vh,460px)}
.aim-right .ai-run.open .ai-run-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden}
.aim-right .ai-run.open .ai-run-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.aim-right .ai-run.open .ai-run-scroll .my-style{max-height:none !important;height:auto !important;overflow:visible !important}
.aim-right .ai-run.open .ai-followup,
.aim-right .ai-run.open .ai-run-retry{flex:0 0 auto}
.aim-empty{margin:auto;text-align:center;max-width:380px;padding:36px 20px;color:#8aa0ad}
.aim-empty-ic{font-size:42px;opacity:.45;margin-bottom:10px}
.aim-empty-t{font-size:16px;font-weight:700;color:var(--tx1);margin-bottom:6px}
.aim-empty-d{font-size:13px;line-height:1.55}
@media (max-width:880px){
  .aim-modal{width:97vw;height:94vh}
  /* Grille empilée : catalogue (haut, hauteur pilotée par --aim-row) · SPLITTER 12px · runs (bas). */
  .aim-grid{grid-template-columns:1fr!important;grid-template-rows:var(--aim-row,42%) 12px minmax(0,1fr)}
  /* Splitter HORIZONTAL (row-resize), même style que le vertical mais en travers. */
  .aim-splitter{display:flex!important;cursor:row-resize}
  .aim-splitter::before{top:50%;bottom:auto;left:8px;right:8px;width:auto;height:2px;transform:translateY(-50%)}  /* rail horizontal */
  .aim-splitter::after{width:42px;height:7px}                                                                     /* poignée horizontale */
  .aim-splitter:hover::before{width:auto;height:3px}                                                              /* épaississement en hauteur au survol */
  /* Tooltip moderne : au-dessus du splitter, centré, flèche pointant vers le bas. */
  .aim-splitter .resize-tip{left:50%;right:auto;top:auto;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(3px)}
  .aim-splitter .resize-tip::before{left:50%;right:auto;top:100%;bottom:auto;transform:translateX(-50%);border-right-color:transparent;border-top-color:var(--surf-pop)}
  .aim-splitter:hover .resize-tip{transform:translateX(-50%) translateY(0)}
  .aim-left{border-bottom:1px solid var(--o8)}
  .aim-right{grid-template-columns:1fr}                  /* mobile : une seule colonne */
  .aim-right .ai-run.open{max-height:62vh}               /* carte un peu plus haute en 1 colonne */
}
/* Entrée dédiée « Analyste IA » dans la grille d'intentions (FecLoader) */
.intent-analyste-row{width:100%;max-width:1100px;margin-top:-12px}
.intent-analyste-banner{width:100%;--card-glow:rgba(167,139,250,.16)}

/* ═══════════════ Flyout « Analyste IA » — DRAGGABLE, au-dessus du FinTreePopup ═══════════════ */
/* Centré à l'ouverture via translateX(-50%) ; le drag (startFlyoutDrag) neutralise le transform et pilote en left/top. */
.ai-fly{position:fixed;z-index:3100;left:50%;top:6vh;transform:translateX(-50%);
  display:flex;flex-direction:column;width:min(820px,94vw);max-height:86vh;
  background:var(--grad-card2);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);border-radius:14px;
  box-shadow:0 24px 64px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));overflow:hidden}
.ai-fly.ai-fly-hidden{display:none}
.ai-fly-head{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--o8);
  background:color-mix(in srgb, var(--brand) 7%, transparent);cursor:move;user-select:none;touch-action:none}
.ai-fly-grip{flex:0 0 auto;color:var(--color-text-muted,var(--mut1));font-size:13px;letter-spacing:-1px}
.ai-modal-title{font-size:15px;font-weight:700;color:var(--tx3);letter-spacing:-.01em}
.ai-modal-count{font-size:11px;font-weight:600;color:var(--txt-teal)}
.ai-modal-cost{font-size:10px;font-weight:700;color:#ffd66b;background:rgba(255,214,107,.12);border-radius:6px;padding:2px 7px}
.ai-modal-clear{margin-left:auto;font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:var(--o4);border:1px solid var(--o10);border-radius:8px;padding:5px 10px;cursor:pointer;transition:.12s}
.ai-modal-clear:hover{color:#ff8a8a;border-color:rgba(255,107,107,.45);background:rgba(255,107,107,.10)}
.ai-modal-x{font-family:var(--font-family);font-size:13px;color:var(--color-text-muted,var(--mut1));background:var(--o4);
  border:1px solid var(--o10);border-radius:8px;width:30px;height:30px;cursor:pointer;transition:.12s}
.ai-modal-x:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.ai-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px 16px}
/* dans le flyout les runs sont déroulés par défaut et un peu plus aérés */
.ai-modal-body .ai-run{background:rgba(255,255,255,.025);margin-bottom:12px}
.ai-modal-body .ai-run-body .my-style h1{font-size:18px}
.ai-modal-body .ai-run-body .my-style h2,.ai-modal-body .ai-run-body .my-style h3{font-size:15px}
.ai-modal-body .ai-run-body .my-style p,.ai-modal-body .ai-run-body .my-style li{font-size:13px;line-height:1.6}
@media(max-width:760px){
  .ai-fly{left:0;top:0;transform:none;width:100vw;max-height:100vh;height:100dvh;border-radius:0;border:0}
  .ai-fly-head{cursor:default}
}

/* ── Aperçu « données envoyées » (clic 🔎 d'une carte) ── */
.ai-data-backdrop{position:fixed;inset:0;z-index:3200;background:rgba(3,12,18,.55)}
.ai-data-fly{position:fixed;z-index:3201;left:50%;top:8vh;transform:translateX(-50%);
  display:flex;flex-direction:column;width:min(440px,92vw);max-height:80vh;
  background:var(--grad-card2);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);border-radius:13px;
  box-shadow:0 24px 64px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));overflow:hidden}
.ai-data-head{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--o8)}
.ai-data-title{flex:1 1 auto;font-size:13px;font-weight:700;color:var(--tx3)}
.ai-data-x{flex:0 0 auto;font-size:13px;color:var(--color-text-muted,var(--mut1));background:var(--o4);
  border:1px solid var(--o10);border-radius:7px;width:28px;height:28px;cursor:pointer;transition:.12s}
.ai-data-x:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.ai-data-sub{padding:8px 14px 4px;font-size:10.5px;color:var(--color-text-muted,var(--mut1))}
.ai-data-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:4px 14px 12px}
.ai-data-row{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid var(--o6)}
.ai-data-k{flex:0 1 auto;font-size:10.5px;color:var(--tx8)}
.ai-data-v{flex:0 0 auto;font-size:10px;text-align:right;color:var(--tx3);font-variant-numeric:tabular-nums}
.ai-data-empty{font-size:11.5px;color:var(--color-text-muted,var(--mut1));padding:14px 2px;text-align:center}

/* ── Carte « forte valeur » : badge ✦ + liseré ── */
.ai-card.hv{border-color:rgba(255,214,107,.40)}
.ai-card.hv:hover{border-color:rgba(255,214,107,.65);background:rgba(255,214,107,.10)}
.ai-card-hv{color:#ffd66b;font-size:10px}

/* ── Affinage après analyse (chat de suivi) sous un run terminé ── */
.ai-followup{display:flex;gap:6px;align-items:center;margin:8px 4px 4px;padding-top:8px;border-top:1px solid var(--o7)}
.ai-followup-input{flex:1 1 auto;min-width:0;font-family:var(--font-family);font-size:11.5px;color:var(--tx3);
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 9px}
.ai-followup-input::placeholder{color:var(--color-text-muted,var(--mut1))}
.ai-followup-input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.ai-followup-go{flex:0 0 auto;font-family:var(--font-family);font-size:11px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:6px 12px;cursor:pointer;transition:.13s}
.ai-followup-go:hover:not(:disabled){background:#5bd3b5}
.ai-followup-go:disabled{opacity:.35;cursor:not-allowed}
/* Footer toujours affiché mais inactif pendant le streaming (cartes homogènes). */
.ai-followup-input:disabled{opacity:.45;cursor:not-allowed}
.ai-followup.is-streaming{opacity:.65}
/* Bandeau « Réessayer » quand la génération a échoué (service IA indisponible…). */
.ai-run-retry{display:flex;align-items:center;gap:10px;margin:8px 4px 4px;padding-top:8px;
  border-top:1px solid var(--o7)}
.ai-run-retry-msg{flex:1 1 auto;min-width:0;font-size:11px;color:#f0b9b9}
.ai-run-retry-btn{flex:0 0 auto;font-family:var(--font-family);font-size:11px;font-weight:700;cursor:pointer;
  color:var(--tx1);background:color-mix(in srgb, var(--brand) 18%, transparent);border:1px solid color-mix(in srgb, var(--brand) 50%, transparent);border-radius:8px;padding:5px 12px;transition:.13s}
.ai-run-retry-btn:hover{background:color-mix(in srgb, var(--brand) 30%, transparent);transform:translateY(-1px)}

/* ── Cadrage avant lancement (intake) — flyout centré ── */
.intake-fly{position:fixed;z-index:3201;left:50%;top:8vh;transform:translateX(-50%);
  display:flex;flex-direction:column;width:min(460px,92vw);max-height:84vh;
  background:var(--grad-card2);border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:14px;
  box-shadow:0 24px 64px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));overflow:hidden}
.intake-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:10px 16px;display:flex;flex-direction:column;gap:14px}
.intake-q{display:flex;flex-direction:column;gap:6px}
.intake-lbl{font-size:12px;font-weight:700;color:var(--tx3)}
.intake-optional{font-size:10px;font-weight:500;color:var(--color-text-muted,var(--mut1))}
.intake-opts{display:flex;flex-wrap:wrap;gap:6px}
.intake-opt{font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:var(--o4);border:1px solid var(--o12);border-radius:8px;padding:5px 11px;cursor:pointer;transition:.12s}
.intake-opt:hover{color:var(--tx2);border-color:color-mix(in srgb, var(--brand) 45%, transparent)}
.intake-opt.on{color:var(--surf-1);background:var(--brand);border-color:transparent;font-weight:700}
.intake-foot{display:flex;gap:8px;justify-content:flex-end;padding:11px 16px;border-top:1px solid var(--o8)}
.intake-skip{font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:7px 13px;cursor:pointer;transition:.12s}
.intake-skip:hover{color:var(--tx2);border-color:color-mix(in srgb, var(--brand) 45%, transparent)}
.intake-go{font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:7px 15px;cursor:pointer;transition:.13s}
.intake-go:hover{background:#5bd3b5;transform:translateY(-1px)}

/* ═══════════════ Coffre de clés des connecteurs (overlay MainLayout) ═══════════════ */
.kv-backdrop{position:fixed;inset:0;z-index:5000;background:rgba(3,12,18,.66);backdrop-filter:blur(2px)}
.kv-panel{position:fixed;z-index:5001;left:50%;top:6vh;transform:translateX(-50%);
  display:flex;flex-direction:column;width:min(520px,94vw);max-height:88vh;
  background:var(--grad-card2);border:1px solid color-mix(in srgb, var(--brand) 32%, transparent);border-radius:16px;
  box-shadow:0 24px 64px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));overflow:hidden;font-family:var(--font-family)}
.kv-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--o8);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.kv-title{flex:1 1 auto;font-size:15px;font-weight:700;color:var(--tx3)}
.kv-x{flex:0 0 auto;font-size:13px;color:var(--color-text-muted,var(--mut1));background:var(--o4);
  border:1px solid var(--o10);border-radius:8px;width:30px;height:30px;cursor:pointer;transition:.12s}
.kv-x:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.kv-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.kv-warn{font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.82);background:var(--o4);
  border:1px solid var(--o10);border-radius:10px;padding:9px 11px}
.kv-warn b{color:var(--tx2)}
.kv-warn-amber{background:rgba(255,180,90,.08);border-color:rgba(255,180,90,.35)}
.kv-warn-amber b{color:#ffd66b}
.kv-row{display:flex;gap:8px;align-items:center}
.kv-input{flex:1 1 auto;min-width:0;font-family:var(--font-family);font-size:12px;color:var(--tx3);
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:7px 10px}
.kv-input::placeholder{color:var(--color-text-muted,var(--mut1))}
.kv-input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.kv-area{resize:vertical;line-height:1.4;font-family:var(--font-family)}
.kv-go{flex:0 0 auto;font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:7px 14px;cursor:pointer;transition:.13s}
.kv-go:hover:not(:disabled){background:#27c6e2;transform:translateY(-1px)}
.kv-go:disabled{opacity:.4;cursor:not-allowed}
.kv-err{font-size:11.5px;font-weight:600;color:#ff9b9b}
.kv-ok{font-size:11.5px;font-weight:600;color:#3dd7b0}
.kv-import-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:4px}
.kv-muted{font-size:11px;color:var(--color-text-muted,var(--mut1))}
.kv-ghost{font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:var(--o4);border:1px solid var(--o12);border-radius:8px;padding:6px 11px;cursor:pointer;transition:.12s}
.kv-ghost:hover{color:var(--tx2);border-color:color-mix(in srgb, var(--brand) 45%, transparent);background:color-mix(in srgb, var(--brand) 8%, transparent)}
.kv-ghost.danger:hover{color:#ff8a8a;border-color:rgba(255,107,107,.45);background:rgba(255,107,107,.10)}
/* Carte connecteur */
.kv-card{background:var(--o3);border:1px solid var(--o10);border-radius:11px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.kv-card-info{background:color-mix(in srgb, var(--brand) 5%, transparent);border-color:color-mix(in srgb, var(--brand) 22%, transparent)}
.kv-card-h{display:flex;align-items:center;gap:9px}
.kv-card-t{flex:1 1 auto;font-size:12.5px;font-weight:700;color:var(--tx3)}
.kv-card-q{flex:0 0 auto;width:18px;height:18px;line-height:1;font-size:11px;font-weight:700;color:var(--tx8);cursor:pointer;
  background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:50%;padding:0;transition:.12s}
.kv-card-q:hover{background:color-mix(in srgb, var(--brand) 28%, transparent);color:var(--tx1)}
.kv-logo{height:18px;width:auto}
.kv-logo-txt{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:20px;padding:0 6px;
  font-size:10px;font-weight:800;color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);border-radius:6px}
.kv-badge{flex:0 0 auto;font-size:9px;font-weight:700;color:var(--color-text-muted,var(--mut1));
  background:var(--o5);border-radius:99px;padding:2px 8px}
.kv-badge.on{color:#3dd7b0;background:rgba(61,215,176,.14)}
.kv-badge.info{color:var(--tx8);background:color-mix(in srgb, var(--brand) 14%, transparent)}
.kv-field{display:flex;flex-direction:column;gap:3px}
.kv-field label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted,var(--mut1))}
.kv-note{font-size:11px;line-height:1.45;color:var(--color-text-muted,var(--mut1))}
.kv-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:4px;border-top:1px solid var(--o8);margin-top:2px}
.kv-spacer{flex:1 1 auto}
/* Guides « comment obtenir mes accès » (accordéon) */
.kv-guides{border:1px solid var(--o10);border-radius:10px;background:var(--o2);overflow:hidden}
.kv-guides-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;cursor:pointer;
  font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--tx2);background:transparent;border:0;padding:9px 12px;transition:.12s}
.kv-guides-toggle:hover{background:var(--o3)}
.kv-guides-body{padding:2px 8px 8px;display:flex;flex-direction:column;gap:4px}
.kv-guide-item{border-top:1px solid var(--o6)}
.kv-guide-head{display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;text-align:left;font-family:var(--font-family);
  background:transparent;border:0;padding:7px 4px;transition:.12s}
.kv-guide-head:hover{color:#fff}
.kv-guide-title{flex:1 1 auto;font-size:11.5px;font-weight:700;color:var(--tx3)}
.kv-guide-auth{flex:0 0 auto;font-size:9px;font-weight:600;color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);border-radius:5px;padding:1px 6px}
.kv-guide-caret{flex:0 0 auto;font-size:9px;color:var(--color-text-muted,var(--mut1))}
.kv-guide-steps{margin:2px 0 6px;padding-left:22px;display:flex;flex-direction:column;gap:4px}
.kv-guide-steps li{font-size:11px;line-height:1.45;color:rgba(255,255,255,.82)}
.kv-guide-doc{display:inline-block;margin:0 0 6px 6px;font-size:11px;font-weight:600;color:var(--txt-teal);text-decoration:none}
.kv-guide-doc:hover{text-decoration:underline}

/* ── Catalogue d'API (composant ConnectorGuide) : grille de tuiles → détail au clic ── */
.apicat{border:1px solid var(--o10);border-radius:10px;background:var(--o2);overflow:hidden}
.apicat-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;cursor:pointer;
  font-family:var(--font-family);font-size:12px;font-weight:700;color:var(--tx2);background:color-mix(in srgb, var(--brand) 6%, transparent);border:0;padding:9px 12px;transition:.12s}
.apicat-toggle:hover{background:color-mix(in srgb, var(--brand) 12%, transparent)}
.apicat-caret{flex:0 0 auto;font-size:9px;color:var(--color-text-muted,var(--mut1))}
.apicat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;padding:8px}
.apicat-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;cursor:pointer;
  font-family:var(--font-family);background:var(--o4);border:1px solid var(--o10);border-radius:9px;padding:8px 10px;transition:.13s}
.apicat-tile:hover{background:color-mix(in srgb, var(--brand) 10%, transparent);border-color:color-mix(in srgb, var(--brand) 45%, transparent);transform:translateY(-1px)}
.apicat-tile.on{background:color-mix(in srgb, var(--brand) 16%, transparent);border-color:color-mix(in srgb, var(--brand) 70%, transparent)}
.apicat-name{font-size:12px;font-weight:700;color:var(--tx3)}
.apicat-ok{font-size:10px;color:#3dd7b0}
.apicat-status{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#3dd7b0;background:rgba(61,215,176,.14);border-radius:5px;padding:1px 6px;margin-top:2px}
.apicat-auth{font-size:9px;font-weight:600;color:var(--color-text-muted,var(--mut1))}
.apicat-tile.on .apicat-auth{color:var(--tx8)}
.apicat-detail{margin:0 8px 8px;padding:10px 12px;background:color-mix(in srgb, var(--brand) 5%, transparent);border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);border-radius:9px}
.apicat-detail-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.apicat-detail-t{flex:1 1 auto;font-size:12.5px;font-weight:700;color:var(--tx3)}
.apicat-hint{margin:0 8px 8px;font-size:11px;color:var(--color-text-muted,var(--mut1));font-style:italic}
/* Bandeau coffre (déverrouillage + actions) */
.apicat-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px;border-bottom:1px solid var(--o7)}
.apicat-lock{font-size:11px;font-weight:700;color:var(--color-text-muted,var(--mut1))}
.apicat-lock.ok{color:#3dd7b0}
.apicat-spacer{flex:1 1 auto}
.apicat-pass{flex:1 1 140px;min-width:0;font-family:var(--font-family);font-size:12px;color:var(--tx3);
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 9px}
.apicat-pass:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.apicat-unlock{flex:0 0 auto;font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);
  background:var(--brand);border:0;border-radius:8px;padding:6px 12px;cursor:pointer;transition:.13s}
.apicat-unlock:hover:not(:disabled){background:#27c6e2}
.apicat-unlock:disabled{opacity:.4;cursor:not-allowed}
.apicat-mini{flex:0 0 auto;font-size:13px;color:var(--color-text-muted,var(--mut1));background:var(--o4);
  border:1px solid var(--o10);border-radius:7px;width:28px;height:28px;cursor:pointer;transition:.12s}
.apicat-mini:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.apicat-err{margin:6px 8px 0;font-size:11.5px;font-weight:600;color:#ff9b9b}
/* Formulaire de saisie (détail) */
.apicat-note{margin-top:8px;font-size:11.5px;line-height:1.45;color:var(--color-text-muted,var(--mut1))}
.apicat-form{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--o7)}
.apicat-req{color:#ff9b9b}
.apicat-input-wrap{position:relative;display:flex;align-items:center}
.apicat-input-wrap .kv-input{flex:1 1 auto;padding-right:30px}
.apicat-eye{position:absolute;right:4px;font-size:12px;background:transparent;border:0;cursor:pointer;opacity:.55;padding:2px 4px}
.apicat-eye:hover{opacity:1}
.apicat-form-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}
.apicat-msg{font-size:11.5px;font-weight:600;color:#3dd7b0}
@media(max-width:520px){.apicat-grid{grid-template-columns:1fr}}
@media(max-width:760px){.kv-panel{left:0;top:0;transform:none;width:100vw;max-height:100vh;height:100dvh;border-radius:0;border:0}}

.fintree-addyr{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-family:var(--font-family);
  font-size:11.5px;font-weight:600;color:var(--tx8);background:color-mix(in srgb, var(--brand) 10%, transparent);
  border:1px dashed color-mix(in srgb, var(--brand) 45%, transparent);border-radius:8px;padding:4px 11px;min-height:28px;transition:.15s}
.fintree-addyr:hover:not(:disabled){color:#fff;background:color-mix(in srgb, var(--brand) 20%, transparent);border-style:solid}
.fintree-addyr:disabled{opacity:.45;cursor:not-allowed}
.fintree-addyr.locked{color:#fbbf72;background:rgba(180,83,63,.10);border-color:rgba(251,191,114,.4)}
.fintree-addyr.locked:hover{color:#fff;background:rgba(251,191,114,.18);border-style:solid}
.fintree-delyr{color:#F0A595;background:rgba(240,149,149,.08);border-color:rgba(240,149,149,.4)}
.fintree-delyr:hover:not(:disabled){color:#fff;background:rgba(240,149,149,.2);border-color:rgba(240,149,149,.7)}

/* Badge de statut « Bilans équilibrés » : icône cercle ✓ / ✗ + fond teinté + bordure (vert OK / rouge écart). */
.fintree-eq{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;
  font-family:var(--font-family);font-size:11.5px;font-weight:600;white-space:nowrap;line-height:1;
  border:1px solid transparent;transition:.15s}
.fintree-eq svg{width:14px;height:14px;flex-shrink:0}
.fintree-eq.ok{color:#3dd7b0;background:rgba(61,215,176,.12);border-color:rgba(61,215,176,.38)}
.fintree-eq.ko{color:#F0A595;background:rgba(240,149,149,.13);border-color:rgba(240,149,149,.45);
  animation:fintree-eq-alert 1.8s ease-in-out infinite}
/* Déséquilibre Actif/Passif : halo rouge qui pulse pour attirer l'œil (signal fort, non bloquant). */
@keyframes fintree-eq-alert{
  0%,100%{box-shadow:0 0 0 0 rgba(240,149,149,0)}
  50%{box-shadow:0 0 0 4px rgba(240,149,149,.20)}
}
@media(prefers-reduced-motion:reduce){.fintree-eq.ko{animation:none}}

/* Chip « équilibré / non équilibré » posé sur la LIGNE « Check Actif = Passif » de l'arbre (miroir du chip du header). */
.bal-chip{display:inline-flex;align-items:center;flex:0 0 auto;font-family:var(--font-family);font-size:9px;font-weight:700;
  letter-spacing:.02em;line-height:1;border-radius:999px;padding:3px 8px;white-space:nowrap;margin-left:6px}
.bal-chip.ok{color:#3dd7b0;background:rgba(61,215,176,.14);border:1px solid rgba(61,215,176,.40)}
.bal-chip.ko{color:#F0A595;background:rgba(240,149,149,.15);border:1px solid rgba(240,149,149,.55);cursor:pointer;
  animation:fintree-eq-alert 1.8s ease-in-out infinite}
.bal-chip.ko:hover{background:rgba(240,149,149,.30);color:#ffd6cc}
@media(prefers-reduced-motion:reduce){.bal-chip.ko{animation:none}}

/* Clic sur une hypothèse (onglet Suivi) → « spotlight » : la ligne s'allume net, TIENT ~0,8 s (le temps que le scroll
   l'amène à l'écran) PUIS s'éteint en douceur. box-shadow INSET (overlay teinté) → visible quel que soit le fond.
   Floor statique = filet de sécurité si l'animation ne joue pas (cellules DevExpress re-rendues). */
/* Overlay via background-IMAGE (dégradé teal plein) : se pose PAR-DESSUS le background-color opaque de la cellule
   → couvre TOUTES les colonnes (historique + prévi + CustomPCG) SANS rendre le sticky translucide (pas de bleed). */
/* Couleur = primary de la palette à 0,5 (Layout.CurrentPaletteTransp[0], posée en var inline --ftree-accent par
   CustomFinTree). Fallback teal si la var n'est pas dispo. La transparence 0,5 est déjà incluse dans la couleur. */
.ftree-focus{
  --ftree-hl:var(--ftree-accent, color-mix(in srgb, var(--brand) 50%, transparent));
  background-image:linear-gradient(var(--ftree-hl),var(--ftree-hl)) !important;   /* floor */
  animation:ftree-focus-spot 2s ease-out forwards;
}
@keyframes ftree-focus-spot{
  0%   {background-image:linear-gradient(var(--ftree-hl),var(--ftree-hl)) !important}
  40%  {background-image:linear-gradient(var(--ftree-hl),var(--ftree-hl)) !important}   /* plateau ~0,8 s : couvre le scroll */
  100% {background-image:linear-gradient(transparent,transparent) !important}
}
@media(prefers-reduced-motion:reduce){
  .ftree-focus{animation:none;background-image:linear-gradient(var(--ftree-hl),var(--ftree-hl)) !important}
}
/* Mode CELLULE (focus depuis un KPI / radar / runway) : la ligne reçoit un tint léger STATIQUE (pas le spotlight animé),
   pour que la cellule visée ressorte sans conflit ni repaint en boucle. */
.ftree-focus-soft{
  background-image:linear-gradient(color-mix(in srgb, var(--brand) 14%, transparent),color-mix(in srgb, var(--brand) 14%, transparent)) !important;
}
/* Cellule précisément ciblée : fond plus marqué + anneau cyan ARRONDI (via ::after car outline ne supporte pas le
   border-radius cross-browser). Statique → retiré au clear, aucune animation en boucle. */
.ftree-focus-cell{
  position:relative;
  border-radius:3px !important;                       /* le fond se clippe arrondi (background-clip border-box) → corners en accord avec l'anneau */
  background-image:linear-gradient(color-mix(in srgb, var(--brand) 40%, transparent),color-mix(in srgb, var(--brand) 40%, transparent)) !important;
}
.ftree-focus-cell::after{
  content:"";position:absolute;inset:0;border:2px solid var(--tx8);border-radius:3px;
  pointer-events:none;z-index:3;
  animation:ftree-cell-pulse .8s ease-in-out 2;       /* 2 respirations bornées (anneau + glow inset) puis statique */
}
@keyframes ftree-cell-pulse{
  0%,100%{border-color:var(--tx8);box-shadow:inset 0 0 0 0 rgba(155,230,244,0)}
  50%    {border-color:#cdeff7;box-shadow:inset 0 0 10px 1px rgba(155,230,244,.5)}
}
@media(prefers-reduced-motion:reduce){.ftree-focus-cell::after{animation:none}}
/* Libellé d'hypothèse cliquable (renvoie à la ligne du tableau). */
.hyp-txt-link{cursor:pointer;transition:color .12s}
.hyp-txt-link:hover b{color:var(--tx8);text-decoration:underline}

/* Onglet Synthèse : cartes KPI dirigeant cliquables (clic → spotlight de la ligne dans le tableau). */
/* Barre haut d'onglet Synthèse : titre + combo de sélection de l'année des KPI. */
/* Titre de catégorie Synthèse : même look que .hyp-cat mais SANS le trait (qui ferait doublon avec la bordure des cartes). */
.synth-cat{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#7fb0ef;margin:11px 2px 5px}
.synth-cat:first-of-type{margin-top:2px}
/* Hint « cliquez un indicateur… » inline à côté du 1er titre de catégorie (casse normale, discret). */
.synth-cat-hint{text-transform:none;letter-spacing:0;font-weight:400;font-size:9.5px;color:var(--color-text-muted,var(--mut1));margin-left:9px}
.synth-bar{display:flex;align-items:center;gap:8px;margin:0 2px 6px}
.synth-bar-lbl{font-size:11.5px;font-weight:600;color:var(--tx2)}
.synth-bar-dd{margin-left:auto;min-width:0}
.synth-bar-dd .custom-dropdown,.synth-bar-dd .custom-dropdown-trigger{min-width:104px;width:100%}
/* Ligne « Secteur » : la combo remplit la largeur restante (nom long → ellipsis). */
.synth-bar-sector{margin-bottom:5px}
.synth-bar-sector .synth-bar-dd{flex:1 1 auto;margin-left:8px}
.synth-bar-sector .synth-bar-dd .custom-dropdown,.synth-bar-sector .synth-bar-dd .custom-dropdown-trigger{min-width:0}
.synth-intro{font-size:10px;line-height:1.35;color:var(--color-text-muted,var(--mut1));margin:0 2px 8px}
/* Tooltips .hyp-mud-tip (MudTooltip) AU-DESSUS de la modale Pilotage (fintree-backdrop = z-index 1400). */
.mud-popover:has(.hyp-mud-tip){z-index:5600 !important}
.synth-tip{text-align:left;max-width:240px;line-height:1.5}

/* Grille responsive : 2 colonnes si le panneau est assez large (≥ ~285px), 1 sinon. S'adapte au resize du panneau. */
.synth-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:5px;margin-bottom:4px}
/* Chaque wrapper MudTooltip = item de grille bloc pleine largeur (sinon il se réduit au contenu et casse les colonnes). */
.synth-kpi-grid > *{display:block;width:100%;min-width:0}
.synth-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:0;width:100%;text-align:left;cursor:pointer;
  background:var(--o3);border:1px solid var(--o7);border-radius:8px;padding:6px 9px;
  font-family:var(--font-family);transition:background .12s,border-color .12s,transform .08s}
.synth-kpi:hover{background:color-mix(in srgb, var(--brand) 8%, transparent);border-color:color-mix(in srgb, var(--brand) 30%, transparent)}
.synth-kpi:active{transform:scale(.995)}
.synth-kpi-lbl{font-size:10px;color:var(--tx2);font-weight:600;line-height:1.25}
.synth-kpi-toggle{display:inline-flex;align-items:center;gap:5px;line-height:1.25}
.synth-kpi-toggle-opt{font-size:10px;font-weight:600;color:#6f93a3;cursor:pointer;transition:color .12s}
.synth-kpi-toggle-opt:hover{color:#9fc4d2}
.synth-kpi-toggle-opt.active{color:var(--tx2);font-weight:700}
.synth-kpi-toggle-sep{font-size:10px;color:#5a7480;user-select:none}
.synth-kpi-val{font-size:14.5px;font-weight:700;color:var(--tb2);line-height:1.2}
.synth-kpi-sub{font-size:9.5px;display:flex;gap:4px;align-items:center;flex-wrap:wrap;margin-top:1px}
.synth-kpi-sub .up{color:#3dd7b0;font-weight:600}
.synth-kpi-sub .down{color:#F0A595;font-weight:600}
.synth-kpi-tcam{color:var(--color-text-muted,var(--mut1))}
/* Ligne benchmark sectoriel : pastille verte/rouge (au-dessus/sous la médiane, polarité gérée) + texte discret. */
.synth-kpi-bench{display:flex;align-items:center;gap:5px;font-size:9.5px;margin-top:3px;padding-top:3px;
  border-top:1px solid var(--o5);color:#aebfca;font-variant-numeric:tabular-nums}
.synth-kpi-bench::before{content:"";width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--mut1)}
.synth-kpi-bench.ok::before{background:#3dd7b0;box-shadow:0 0 5px rgba(61,215,176,.6)}
.synth-kpi-bench.ko::before{background:#F0A595;box-shadow:0 0 5px rgba(240,165,149,.6)}
/* Carte sans médiane sectorielle (Résultat net, Trésorerie, Flux) : ligne n/a atténuée → cartes harmonisées. */
.synth-kpi-bench.na{color:#6f8694;font-style:italic}
.synth-kpi-bench.na::before{background:#52687a;box-shadow:none}

/* ── Cash runway : bandeau trésorerie (le BANDEAU n'est plus cliquable ; seuls les MONTANTS — stats + chip — focusent). ── */
.runway{width:100%;display:block;text-align:left;font-family:var(--font-family);
  margin:2px 0 8px;padding:5px 10px;border-radius:10px;background:var(--o3);
  border:1px solid var(--o8);border-left-width:3px}
.runway-s0{border-left-color:#3dd7b0}
.runway-s1{border-left-color:#f0c14b}
.runway-s2{border-left-color:#F0A595;background:rgba(240,165,149,.06)}
.runway-top{display:flex;align-items:center;gap:6px 10px;margin-bottom:5px;flex-wrap:wrap}
/* Cluster droit de la ligne de titre : alerte « tenue » + seuil de trésorerie, inline avec le titre (wrap si étroit). */
.runway-top-right{margin-left:auto;display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}
.runway-top-right .runway-chip-wrap{margin-left:0}
.runway-ico{font-size:9px;line-height:1;flex:0 0 auto}
.runway-head{font-size:11px;font-weight:600;color:var(--tb3);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto;min-width:0}
/* Creux mensuel inline avec le titre : mini-légende + chip cliquable (N mois si négatif, sinon montant du creux). */
.runway-chip-wrap{flex:0 0 auto;margin-left:auto;display:inline-flex;align-items:center;gap:5px}
.runway-chip-lbl{font-size:8px;text-transform:uppercase;letter-spacing:.4px;font-weight:700;color:var(--color-text-muted,var(--mut1));white-space:nowrap}
.runway-chip{flex:0 0 auto;font-family:var(--font-family);font-size:11px;font-weight:700;color:var(--tx8);background:color-mix(in srgb, var(--brand) 16%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 32%, transparent);border-radius:999px;padding:1px 8px;white-space:nowrap;font-variant-numeric:tabular-nums;cursor:pointer;transition:.12s}
.runway-chip:hover{background:color-mix(in srgb, var(--brand) 28%, transparent);border-color:color-mix(in srgb, var(--brand) 55%, transparent)}
.runway-chip.danger{color:#F0A595;background:rgba(240,165,149,.14);border-color:rgba(240,165,149,.4)}
.runway-chip.danger:hover{background:rgba(240,165,149,.26);border-color:rgba(240,165,149,.6)}
/* Stats runway annuelles : 3 boutons CÔTE À CÔTE (1 ligne → carte basse), légende INLINE à droite du montant. */
.runway-stats{display:flex;flex-direction:row;gap:5px}
.runway-stat{flex:1 1 0;min-width:0;display:flex;flex-direction:row;align-items:baseline;gap:5px;
  padding:3px 8px;background:var(--o3);border:none;border-radius:6px;cursor:pointer;
  font-family:var(--font-family);transition:background .12s;text-align:left}
.runway-stat:hover{background:color-mix(in srgb, var(--brand) 12%, transparent)}
.runway-stat b{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--tb2);font-variant-numeric:tabular-nums;white-space:nowrap}
.runway-stat small{flex:1 1 auto;min-width:0;font-size:9.5px;color:var(--color-text-muted,var(--mut1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.runway-s2 .runway-trough b{color:#F0A595}
.runway-s1 .runway-trough b{color:#f0c14b}
/* Objectif de trésorerie (seuil de sécurité) */
.runway-floor{display:flex;align-items:center;gap:7px;margin-top:7px;padding-top:7px;border-top:1px solid var(--o6)}
/* Seuil inline (déplacé dans la ligne de titre) : pas de filet/marge du dessus, champ compact à largeur fixe. */
.runway-floor-inline{margin-top:0;padding-top:0;border-top:0;gap:5px;flex:0 0 auto}
.runway-floor-inline .runway-floor-in{flex:0 0 auto;width:84px;text-align:right}
.runway-floor-lbl{flex:0 0 auto;font-size:10px;font-weight:600;color:var(--color-text-muted,var(--mut1));cursor:help}
.runway-floor-in{flex:1 1 auto;min-width:0;width:100%;background:var(--o5);border:1px solid var(--o12);
  border-radius:7px;color:var(--tb2);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;
  padding:2px 8px;outline:none;transition:border-color .13s}
.runway-floor-in:focus{border-color:color-mix(in srgb,var(--mud-palette-tertiary) 55%,transparent)}
.runway-floor-in::-webkit-outer-spin-button,.runway-floor-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.runway-floor-unit{flex:0 0 auto;font-size:11px;color:var(--color-text-muted,var(--mut1))}
.runway-floor-state{flex:0 0 auto;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:999px}
.runway-floor-state.ok{color:var(--surf-1);background:var(--brand)}
.runway-floor-state.breach{color:#fff;background:#d98b5f}

/* ── Radar d'alertes (en tête de l'onglet Synthèse) : liste de points d'attention, clic → focus ligne. ── */
/* ═══════════════ Repères : navigation « clic → cellule » (recherche, radar cash, anomalies, visite) ═══════════════ */
.reperes{margin:0 0 10px}
.reperes-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#7fb0ef;margin:10px 1px 5px}
/* Recherche « aller à » */
.nav-go{position:relative;margin-bottom:8px}
.nav-go-input{width:100%;font-family:var(--font-family);font-size:12px;color:var(--tx3);
  background:var(--o5);border:1px solid var(--o12);border-radius:9px;padding:7px 10px}
.nav-go-input::placeholder{color:var(--color-text-muted,var(--mut1))}
.nav-go-input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 55%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.nav-go-empty{font-size:11px;color:var(--color-text-muted,var(--mut1));padding:6px 4px}
.nav-go-list{display:flex;flex-direction:column;gap:2px;margin-top:4px;max-height:200px;overflow-y:auto}
.nav-go-item{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer;
  font-family:var(--font-family);font-size:11.5px;color:var(--tx3);background:var(--o3);
  border:1px solid var(--o8);border-radius:7px;padding:5px 9px;transition:.12s}
.nav-go-item:hover{background:color-mix(in srgb, var(--brand) 14%, transparent);border-color:color-mix(in srgb, var(--brand) 45%, transparent)}
.nav-go-item small{color:var(--color-text-muted,var(--mut1));font-size:9px}
/* Radar cash (3 chips) */
.cash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.cash-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;cursor:pointer;
  font-family:var(--font-family);background:var(--o4);border:1px solid var(--o10);
  border-radius:9px;padding:7px 8px;transition:.13s}
.cash-chip:hover{transform:translateY(-1px)}
.cash-chip-t{font-size:9px;font-weight:600;color:var(--color-text-muted,var(--mut1));line-height:1.15}
.cash-chip-v{font-size:12px;font-weight:800;color:var(--tx3);font-variant-numeric:tabular-nums;line-height:1.1}
.cash-chip.cash-s0{border-color:rgba(61,215,176,.35)}
.cash-chip.cash-s0 .cash-chip-v{color:#3dd7b0}
.cash-chip.cash-s0:hover{background:rgba(61,215,176,.12)}
.cash-chip.cash-s1{border-color:rgba(255,180,90,.40)}
.cash-chip.cash-s1 .cash-chip-v{color:#ffc37a}
.cash-chip.cash-s1:hover{background:rgba(255,180,90,.12)}
.cash-chip.cash-s2{border-color:rgba(240,149,149,.50)}
.cash-chip.cash-s2 .cash-chip-v{color:#ff9b9b}
.cash-chip.cash-s2:hover{background:rgba(240,149,149,.14)}
@media(max-width:520px){.cash-grid{grid-template-columns:1fr}}
/* Anomalies */
.anom-list{display:flex;flex-direction:column;gap:3px}
.anom-item{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;text-align:left;
  font-family:var(--font-family);background:var(--o3);border:1px solid var(--o8);
  border-radius:7px;padding:5px 9px;transition:.12s}
.anom-item:hover{background:rgba(255,180,90,.10);border-color:rgba(255,180,90,.40)}
.anom-txt{display:flex;flex-direction:column;min-width:0}
.anom-txt b{font-size:11.5px;font-weight:700;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.anom-txt small{font-size:9px;color:var(--color-text-muted,var(--mut1))}
.anom-pct{flex:0 0 auto;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
.anom-pct.up{color:#3dd7b0}
.anom-pct.down{color:#ff9b9b}
/* Bouton visite guidée */
.tour-launch{display:flex;align-items:center;gap:11px;width:100%;margin-top:12px;cursor:pointer;text-align:left;
  font-family:var(--font-family);padding:11px 13px;border-radius:12px;color:var(--tx1);
  background:linear-gradient(135deg,color-mix(in srgb, var(--brand) 16%, transparent),color-mix(in srgb, var(--brand) 12%, transparent));
  border:1px solid color-mix(in srgb, var(--brand) 32%, transparent);transition:transform .14s,border-color .14s,box-shadow .14s}
.tour-launch:hover{transform:translateY(-1px);border-color:color-mix(in srgb, var(--brand) 60%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--brand) calc(18% * var(--glow-mul)), transparent)}
.tour-launch-ic{flex:0 0 auto;font-size:20px;line-height:1;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--brand) 45%, transparent))}
.tour-launch-body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}
.tour-launch-t{font-size:12.5px;font-weight:700;color:var(--tx1);line-height:1.2}
.tour-launch-sub{font-size:10px;color:#8fb3bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tour-launch-arrow{flex:0 0 auto;font-size:20px;font-weight:700;color:var(--txt-teal);transition:transform .14s}
.tour-launch:hover .tour-launch-arrow{transform:translateX(3px)}
/* Carte de narration de la visite guidée (flottante, bas-centre) */
.tour-card{position:fixed;z-index:2400;left:50%;bottom:24px;transform:translateX(-50%);width:min(520px,92vw);
  background:var(--grad-card2);border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);border-radius:14px;
  box-shadow:0 20px 56px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));padding:13px 15px}
.tour-head{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.tour-step{flex:0 0 auto;font-size:10px;font-weight:800;color:var(--surf-1);background:var(--brand);border-radius:99px;padding:2px 9px}
.tour-phase{flex:0 0 auto;font-size:10px;font-weight:700;border-radius:99px;padding:2px 9px;white-space:nowrap}
.tour-phase.is-hist{color:var(--tx8);background:color-mix(in srgb, var(--brand) 14%, transparent);border:1px solid color-mix(in srgb, var(--brand) 40%, transparent)}
.tour-phase.is-budget{color:#fcd34d;background:rgba(252,211,77,.13);border:1px solid rgba(252,211,77,.42)}
.tour-phase.is-prev{color:var(--brand-strong);background:rgba(167,139,250,.14);border:1px solid rgba(167,139,250,.45)}
.tour-title{flex:1 1 auto;font-size:13px;font-weight:700;color:var(--tx3)}
.tour-x{flex:0 0 auto;font-size:12px;color:var(--color-text-muted,var(--mut1));background:var(--o4);
  border:1px solid var(--o10);border-radius:7px;width:26px;height:26px;cursor:pointer;transition:.12s}
.tour-x:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.tour-narration{font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.88);margin-bottom:10px}
.tour-nav{display:flex;gap:8px;justify-content:flex-end}
.tour-btn{font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--color-text-muted,var(--mut1));
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 14px;cursor:pointer;transition:.12s}
.tour-btn:hover:not(:disabled){color:var(--tx2);border-color:color-mix(in srgb, var(--brand) 45%, transparent)}
.tour-btn:disabled{opacity:.4;cursor:not-allowed}
.tour-btn.primary{color:var(--surf-1);background:var(--brand);border-color:transparent}
.tour-btn.primary:hover{background:#5bd3b5;color:var(--surf-1)}
@media(max-width:760px){.tour-card{bottom:8px;width:96vw}}

.radar{margin:0 0 10px;padding:8px 9px;border-radius:9px;background:rgba(255,255,255,.025);border:1px solid var(--o7)}
.radar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#7fb0ef;margin:0 1px 6px}
.radar-gear{flex:0 0 auto;font-family:var(--font-family);font-size:9px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--mut1);background:var(--o4);border:1px solid var(--o10);border-radius:6px;padding:2px 7px;cursor:pointer;transition:.12s}
.radar-gear:hover{color:var(--tx2);background:var(--o8)}
.radar-gear.on{color:#0b1620;background:#7fb0ef;border-color:#7fb0ef}
.radar-ok{font-size:11px;color:#3dd7b0;padding:2px}
.radar-item{width:100%;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;font-family:var(--font-family);
  background:var(--o3);border:1px solid var(--o7);border-left-width:3px;border-radius:7px;
  padding:6px 8px;margin-bottom:5px;transition:background .12s,border-color .12s}
.radar-item:last-child{margin-bottom:0}
.radar-item:hover{background:color-mix(in srgb, var(--brand) 8%, transparent)}
.radar-s2{border-left-color:#F0A595}
.radar-s1{border-left-color:#f0c14b}
.radar-s0{border-left-color:#7fb0ef}
.radar-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--mut1)}
.radar-s2 .radar-dot{background:#F0A595;box-shadow:0 0 5px rgba(240,165,149,.6)}
.radar-s1 .radar-dot{background:#f0c14b;box-shadow:0 0 5px rgba(240,193,75,.6)}
.radar-s0 .radar-dot{background:#7fb0ef}
.radar-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.radar-txt b{font-size:11px;font-weight:600;color:var(--tb3);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radar-txt small{font-size:9px;color:var(--color-text-muted,var(--mut1));line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radar-go{flex:0 0 auto;color:var(--mut1);font-size:12px;opacity:.6}
.radar-item:hover .radar-go{opacity:1;color:var(--tx8)}

/* ── Gestionnaire de règles du radar : flyout finmod DRAGGABLE au root du popup (descopé du side panel). ── */
.finmod-rules{width:420px;max-width:calc(100vw - 24px);max-height:calc(100vh - 80px);display:flex;flex-direction:column;
  background:var(--dh4);backdrop-filter:none}            /* OPAQUE + SANS blur → drag fluide (le blur du .finmod se re-calcule à chaque frame) */
.finmod-rules-body{flex:1 1 auto;min-height:0;overflow-y:auto;margin-top:9px;padding-right:2px;
  /* fondu haut/bas au scroll */
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 10px,#000 calc(100% - 12px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 10px,#000 calc(100% - 12px),transparent 100%)}
.rrule{display:flex;align-items:center;gap:7px;padding:4px 2px;border-radius:6px}
.rrule.off{opacity:.45}
.rrule-tog{flex:0 0 auto;width:24px;height:14px;border-radius:999px;border:1px solid var(--o18);background:var(--o6);position:relative;cursor:pointer;padding:0;transition:.15s}
.rrule-tog::after{content:"";position:absolute;top:1px;left:1px;width:10px;height:10px;border-radius:50%;background:var(--mut1);transition:.15s}
.rrule-tog.on{background:color-mix(in srgb, var(--brand) 35%, transparent);border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.rrule-tog.on::after{left:11px;background:var(--brand)}
.rrule-sev{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#7fb0ef}
.rrule-s2{background:#F0A595}
.rrule-s1{background:#f0c14b}
.rrule-s0{background:#7fb0ef}
.rrule-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}
.rrule-txt b{font-size:10.5px;font-weight:600;color:var(--tb3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rrule-txt small{font-size:8.5px;color:var(--color-text-muted,var(--mut1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rrule-del{flex:0 0 auto;background:none;border:none;color:#F0A595;font-size:14px;line-height:1;cursor:pointer;padding:0 3px;opacity:.65;transition:.12s}
.rrule-del:hover{opacity:1;transform:scale(1.15)}

.rules-add{margin-top:8px;padding-top:8px;border-top:1px dashed var(--o10);display:flex;flex-direction:column;gap:6px}
.rules-row.rflex{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rseg{display:inline-flex;gap:2px;background:var(--o5);border:1px solid var(--o10);border-radius:7px;padding:2px}
.rseg-b{font-family:var(--font-family);font-size:10px;font-weight:600;color:var(--mut1);background:transparent;border:none;border-radius:5px;padding:2px 8px;cursor:pointer;transition:.12s;white-space:nowrap}
.rseg-b:hover{color:var(--tx2)}
.rseg-b.on{color:var(--mud-palette-tertiary-text);background:var(--brand)}
.rsegsev .rs0.on{background:#7fb0ef}
.rsegsev .rs1.on{background:#f0c14b}
.rsegsev .rs2.on{background:#F0A595}
.rnum{flex:1 1 60px;min-width:0;background:var(--o6);border:1px solid var(--o16);border-radius:7px;color:#fff;font-family:var(--font-family);font-size:12px;font-weight:600;padding:4px 8px;text-align:right;font-variant-numeric:tabular-nums}
.rnum:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.runit{flex:0 0 auto;font-size:10px;color:var(--color-text-muted,var(--mut1))}
.rscope{flex:1 1 130px;min-width:0}
.rscope .custom-dropdown,.rscope .custom-dropdown-trigger{width:100%;min-width:0}
.rlabel{width:100%;background:var(--o6);border:1px solid var(--o16);border-radius:7px;color:#fff;font-family:var(--font-family);font-size:11px;padding:5px 9px}
.rlabel:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.rlabel::placeholder{color:#5a7480}
.rules-foot{justify-content:space-between}
.rules-addbtn{flex:1 1 auto;font-family:var(--font-family);font-size:11px;font-weight:600;color:#0b1620;background:linear-gradient(100deg,var(--brand),var(--brand));border:none;border-radius:7px;padding:6px 8px;cursor:pointer;transition:.12s}
.rules-addbtn:hover{filter:brightness(1.08)}
.rules-reset{flex:0 0 auto;font-family:var(--font-family);font-size:10px;color:var(--mut1);background:var(--o4);border:1px solid var(--o10);border-radius:7px;padding:6px 9px;cursor:pointer}
.rules-reset:hover{color:var(--tx2);background:var(--o8)}
.rrule-edit{flex:0 0 auto;background:none;border:none;color:var(--mut1);font-size:12px;line-height:1;cursor:pointer;padding:0 2px;opacity:.7;transition:.12s}
.rrule-edit:hover{opacity:1;color:var(--tx8);transform:scale(1.12)}
.rrule.editing{background:color-mix(in srgb, var(--brand) 10%, transparent);outline:1px solid color-mix(in srgb, var(--brand) 30%, transparent)}
.rules-form-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#7fb0ef;margin:0 1px 7px}
.rules-preview{font-size:10px;padding:6px 8px;border-radius:7px;margin:2px 0;background:var(--o4);color:var(--color-text-muted,var(--mut1));border:1px solid var(--o8);line-height:1.35}
.rules-preview.fires{color:#3dd7b0;background:rgba(61,215,176,.08);border-color:rgba(61,215,176,.25)}

/* Dialogue "horizon max" */
.fintree-dlg-backdrop{position:absolute;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.45);backdrop-filter:blur(2px)}
.fintree-dlg{width:min(380px,90%);background:rgba(13,34,46,.99);border:1px solid var(--o12);
  border-radius:14px;box-shadow:0 20px 60px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));padding:22px;text-align:center;font-family:var(--font-family)}
.fintree-dlg-icon{font-size:30px;margin-bottom:6px}
.fintree-dlg-title{font-size:15px;font-weight:700;color:#fff;margin-bottom:8px}
.fintree-dlg-text{font-size:12.5px;color:var(--color-text-muted,var(--mut1));line-height:1.5;margin-bottom:16px}
.fintree-dlg-ok{cursor:pointer;font-family:var(--font-family);font-size:12.5px;font-weight:600;color:#fff;
  background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 30%, transparent),rgba(58,123,213,.24));border:1px solid color-mix(in srgb, var(--brand) 50%, transparent);
  border-radius:9px;padding:8px 22px}
.fintree-dlg-ok:hover{background:color-mix(in srgb, var(--brand) 40%, transparent)}
.fintree-close{width:30px;height:30px;border-radius:50%;border:1px solid var(--o10);
  background:var(--color-bg-input);color:var(--mut1);cursor:pointer;flex-shrink:0;font-size:13px}
.fintree-close:hover{color:#fff;border-color:#F09595}
html[data-theme="light"] .fintree-close:hover{color:#c0473f}
.fintree-body{position:absolute;inset:0;padding:45px 0 0;display:flex;flex-direction:row;min-height:0}
.fintree-tree{flex:1 1 auto;min-width:0;min-height:0;overflow:auto}
/* Mode comparaison (DiffView) : colonne flex → la barre de diff reste fixe en haut et la grille remplit toute la
   hauteur restante (au lieu d'un max-height:80vh viewport qui laissait du vide et débordait sur le side-panel). */
.fintree-tree-diff{display:flex;flex-direction:column;overflow:hidden}
.fintree-tree-diff > .diffbar{flex:0 0 auto}
.fintree-tree-diff > .diffview-wrap{flex:1 1 0;min-height:0}
.diffview-wrap{position:relative;width:100%;min-height:0;overflow:auto}
/* Panneau LATÉRAL de pilotage des hypothèses */
.fintree-side{flex:0 0 320px;max-width:min(900px,50vw);overflow:hidden;border-left:1px solid var(--o10);
  background:transparent;backdrop-filter:blur(8px);padding:10px 12px 12px;
  display:flex;flex-direction:column}
/* Light : le rgba(6,20,29,.05) vire au gris → dégradé sobre teinté de la couleur de marque, fondu vers transparent. */
html[data-theme="light"] .fintree-side{background:white}
/* zone hypothèses scrollable ; le graphe reste épinglé en bas (hauteur fixe) */
.fintree-side-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin:0 -12px;padding:2px 12px;
  /* fondu haut/bas : le contenu s'estompe aux bords du scroll au lieu d'être coupé net */
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%)}
.fintree-body.side-closed .fintree-side{display:none}                 /* desktop : replié → arbre pleine largeur */
/* Poignée verticale de redimensionnement table / panneau */
.fintree-splitter{flex:0 0 12px;align-self:stretch;cursor:col-resize;position:relative;z-index:5;touch-action:none;
  display:flex;align-items:center;justify-content:center}
/* rail vertical pleine hauteur */
.fintree-splitter::before{content:"";position:absolute;top:6px;bottom:6px;left:50%;transform:translateX(-50%);
  width:2px;border-radius:2px;background:var(--o9);transition:background .18s,width .18s,box-shadow .18s}
/* poignée centrale à grip pointillé */
.fintree-splitter::after{content:"";position:relative;z-index:1;width:7px;height:40px;border-radius:7px;
  background-color:rgba(13,34,46,.96);border:1px solid var(--o16);
  background-image:radial-gradient(rgba(255,255,255,.5) 1px,transparent 1.4px);
  background-size:3px 6px;background-position:center;background-repeat:repeat-y;
  box-shadow:0 1px 5px rgba(var(--shadow-col),calc(.45 * var(--shadow-mul)));opacity:.72;transition:opacity .18s,border-color .18s,box-shadow .18s,background-color .18s}
.fintree-splitter:hover::before,.fintree-splitter.active::before{background:var(--mud-palette-primary);width:3px;box-shadow:0 0 8px color-mix(in srgb,var(--mud-palette-primary) 35%,transparent)}
.fintree-splitter:hover::after{opacity:1;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--mud-palette-primary) 40%,transparent)}
.fintree-splitter.active::after{opacity:1;border-color:var(--mud-palette-primary);background-color:color-mix(in srgb,var(--mud-palette-primary) 16%,transparent);box-shadow:0 0 14px color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
.fintree-body.side-closed .fintree-splitter{display:none}             /* panneau replié → pas de poignée */
.fintree-resize-overlay{position:fixed;inset:0;z-index:40;cursor:col-resize;touch-action:none}
/* (mobile : la poignée devient HORIZONTALE — voir le bloc split @media(max-width:760px) plus bas) */
/* Mode « Piloter » : panneau élargi pour accueillir les formulaires des vues */
/* Panel uniforme 320px sur desktop quel que soit l'onglet (plus d'élargissement spécifique Piloter).
   is-pilot ne reste utile qu'au mobile (full-width, plus bas). */

/* Déclencheur 📊 dans la cellule de ligne (variation/inflation) */
.finmod-trigger{margin-left:3px;flex-shrink:0;cursor:pointer;background:none;border:none;padding:0 1px;
  display:inline-flex;align-items:center;color:var(--color-text-muted,var(--mut1));opacity:.5;
  transition:opacity .15s,color .15s,transform .1s}
.finmod-trigger:hover{opacity:1;color:var(--tx8);transform:scale(1.12)}
.finmod-trigger.on{opacity:1;color:var(--an-teal)}
.finmod-trigger svg{display:block}

/* Toggle compact « Topline custom ⇄ Comptable » posé dans la ligne CA de l'arbre. Hauteur réduite → la row ne grandit pas. */
.ca-topsw{position:relative;display:inline-flex;align-items:stretch;flex-shrink:0;margin-left:8px;height:15px;
  border-radius:999px;background:color-mix(in srgb,var(--an-teal) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--an-teal) 28%,transparent);cursor:pointer;overflow:hidden;
  font-size:8.5px;font-weight:800;letter-spacing:.02em;line-height:1;user-select:none}
.ca-topsw-opt{position:relative;z-index:1;flex:1 1 0;display:flex;align-items:center;justify-content:center;
  min-width:32px;padding:0 6px;white-space:nowrap;color:var(--mut1);transition:color .18s}
.ca-topsw-knob{position:absolute;top:1px;bottom:1px;left:1px;width:calc(50% - 1px);border-radius:999px;
  background:var(--an-teal);box-shadow:0 1px 3px color-mix(in srgb,var(--an-teal) 40%,transparent);transition:transform .18s ease}
.ca-topsw.on .ca-topsw-knob{transform:translateX(100%)}
.ca-topsw-opt:nth-child(1){color:#062028}
.ca-topsw-opt:nth-child(2){color:var(--mut1)}
.ca-topsw.on .ca-topsw-opt:nth-child(1){color:var(--mut1)}
.ca-topsw.on .ca-topsw-opt:nth-child(2){color:#062028}
.ca-topsw:hover{filter:brightness(1.06)}

/* Popover épuré variation/inflation */
.finmod-backdrop{position:fixed;inset:0;z-index:3000}
.finmod {
    position: fixed;
    z-index: 3001;
    width: 258px;
    background: var(--gl20);
    border: 1px solid var(--o14);
    backdrop-filter: blur(25px) contrast(1.2);
    border-radius: 12px;
    box-shadow: 0 18px 50px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));
    padding: 12px;
    font-family: var(--font-family);
    animation: dropdown-fade-in .14s ease-out
}
.finmod-head{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:move;touch-action:none;user-select:none}
.finmod-title{font-size:12.5px;font-weight:700;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finmod-x{background:none;border:none;color:var(--color-text-muted,var(--mut1));cursor:pointer;font-size:13px;flex-shrink:0}
.finmod-x:hover{color:#fff}
.finmod-sub{font-size:10px;color:var(--color-text-muted,var(--mut1));margin:3px 0 10px;line-height:1.35}
.finmod-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.finmod-lbl{font-size:11.5px;color:var(--tx2)}
.finmod-inp{display:inline-flex;align-items:center;gap:4px;background:var(--o6);
  border:1px solid var(--o16);border-radius:8px;padding:3px 9px}
.finmod-inp input{width:48px;background:transparent;border:none;color:#fff;font-family:var(--font-family);
  font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.finmod-inp input:focus{outline:none}
.finmod-inp input::-webkit-outer-spin-button,.finmod-inp input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.finmod-inp span{font-size:11px;color:var(--color-text-muted,var(--mut1))}
.finmod-actions{display:flex;gap:7px}
.finmod-btn{flex:1;cursor:pointer;font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--tx2);
  background:var(--o5);border:1px solid var(--o14);border-radius:8px;padding:7px 8px;transition:.15s}
.finmod-btn:hover{color:#fff;background:var(--o10)}
.finmod-btn.primary{color:#fff;background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 30%, transparent),rgba(58,123,213,.24));border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.finmod-btn.primary:hover{background:color-mix(in srgb, var(--brand) 40%, transparent)}
.finmod-remove{width:100%;margin-top:9px;cursor:pointer;font-family:var(--font-family);font-size:11px;font-weight:600;
  color:#F0A595;background:rgba(240,149,149,.08);border:1px solid rgba(240,149,149,.35);border-radius:8px;padding:6px}
.finmod-remove:hover{color:#fff;background:rgba(240,149,149,.2)}

/* Flyout « flux ponctuel » : compact, contrôles PLEINE LARGEUR (on supprime les écarts entre éléments). */
.finmod-flux{width:256px}
.finmod-flux .finmod-row{margin-bottom:8px}
.finmod-dd{flex:1 1 auto;min-width:0}                       /* le dropdown mois occupe la largeur restante */
.finmod-dd .custom-dropdown,.finmod-dd .custom-dropdown-trigger{width:100%;min-width:0}   /* le dropdown REMPLIT la ligne */
.finmod-flux .finmod-inp{flex:1 1 auto;justify-content:flex-end}                          /* le champ montant REMPLIT la ligne */
/* DxSpinEdit fondu dans la pastille .finmod-inp (aucun chrome DevExpress), remplit le champ. */
.finmod-inp .finmod-spin,.finmod-inp .finmod-spin.dxbl-textbox{background:transparent !important;border:none !important;
  box-shadow:none !important;min-height:0 !important;min-width:0 !important;flex:1 1 auto;width:auto}
.finmod-inp .finmod-spin input{background:transparent !important;border:none !important;color:#fff !important;
  font-weight:600 !important;text-align:right !important;font-size:13px !important;padding:0 !important;
  font-variant-numeric:tabular-nums}
.finmod-inp .finmod-spin input:focus{outline:none !important;box-shadow:none !important}
/* Chip exercice à droite du dropdown mois. */
.finmod-chip{flex:0 0 auto;font-size:10.5px;font-weight:600;color:var(--tx2);background:color-mix(in srgb, var(--brand) 16%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 32%, transparent);border-radius:999px;padding:2px 9px;white-space:nowrap;line-height:1.5}
/* Liste des saisies (hypothèses de flux ponctuel) du poste, dans le flyout : toggle + suppression. */
.finmod-list{margin-top:11px;padding-top:9px;border-top:1px solid var(--o10);
  display:flex;flex-direction:column;gap:5px;max-height:168px;overflow-y:auto}
.finmod-list-head{font-size:9.5px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;
  color:var(--color-text-muted,var(--mut1));margin-bottom:1px}
.finmod-list-item{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--tx2);
  background:var(--o4);border:1px solid var(--o10);border-radius:8px;padding:5px 8px}
.finmod-list-item.off{opacity:.55}
.finmod-list-item.off .finmod-list-lbl{text-decoration:line-through}
.finmod-list-lbl{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.finmod-list-del{flex:0 0 auto;cursor:pointer;background:none;border:none;color:#F0A595;font-size:13px;
  line-height:1;padding:0 2px;opacity:.7;transition:opacity .15s,transform .1s}
.finmod-list-del:hover{opacity:1;transform:scale(1.15)}

/* Flyout CapEx : embarque InvestissementsView (CapexOnly). Plus large, corps scrollable, vue resserrée. */
.finmod-pilot{width:380px;max-width:calc(100vw - 24px)}
.finmod-pilot-body{max-height:min(64vh,460px);overflow-y:auto;overflow-x:hidden;margin:6px -4px -2px;padding:6px 4px 8px;
  /* fondu haut/bas au scroll, comme le panneau pilotage du side panel (.fintree-side-scroll) */
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%)}
/* On supprime le « carte dans carte » (le flyout EST déjà la carte) et on resserre. */
.finmod-pilot .view-content-wrapper{gap:0}
.finmod-pilot .section-block{background:transparent;border:none;border-radius:0;padding:0;gap:10px}
.finmod-pilot .section-block-header{display:none}                  /* en-tête de section = doublon de l'en-tête du flyout */
.finmod-pilot .total-row{display:none}                             /* « Total CapEx actif… » masqué dans le flyout */
/* Bouton « Ajouter » : forcer le teal de l'app (une règle .btn-primary du thème le rendait violet). */
.finmod-pilot .btn-primary{background:var(--color-teal) !important;border-color:var(--color-teal) !important;color:#071d28 !important}
.finmod-pilot .btn-primary:hover:not(:disabled){background:var(--color-teal-bright) !important}

/* Flyout « Équipes & rémunération » : 2 sections repliables (Embauches / Rémunération) → on RÉ-AFFICHE
   leurs en-têtes cliquables (la règle .finmod-pilot .section-block-header{display:none} les masquait,
   rendant le contenu repliable inaccessible → flyout vide). */
.finmod-equipes .section-block-header{display:flex !important}
.finmod-equipes .section-block{gap:6px}

/* Flyout pilotage (Croissance / Marge) : presets compacts — la grille de 5-6 cartes (emoji + libellé + valeur)
   déborde du flyout étroit → on n'affiche QUE la valeur (% ou pt) sous forme de chips qui s'enroulent. */
.finmod-pilot .choice-grid-presets{display:flex !important;flex-wrap:wrap;gap:6px}
.finmod-pilot .choice-grid-presets .choice-card{flex:0 0 auto;min-width:0;min-height:0;padding:7px 12px;flex-direction:row;align-items:center;gap:0}
.finmod-pilot .choice-grid-presets .choice-emoji,
.finmod-pilot .choice-grid-presets .choice-label{display:none}
.finmod-pilot .choice-grid-presets .choice-value{font-size:13px;font-weight:700;margin:0}
/* Carte « Personnalisé » : on garde l'input % (pas de valeur figée), juste l'emoji/label masqués. */
.finmod-pilot .choice-grid-presets .choice-card--custom{padding:3px 8px}

/* Flyout « Nouvel emprunt » : plusieurs champs, contrôles pleine largeur + segmenté type. */
.finmod-loan{width:304px}
.finmod-loan .finmod-row{margin-bottom:8px}
.finmod-loan .finmod-inp{flex:1 1 auto;justify-content:flex-end}
.finmod-loan .finmod-inp input{flex:1 1 auto;width:auto;min-width:0;text-align:right}
.finmod-loan .finmod-inp .finmod-text{text-align:left}

/* Bouton ⚙ sur les pills DCF / Mult. du dumbbell valo → ouvre le flyout de paramètres. */
.leg-cog{margin-left:5px;background:none;border:none;color:var(--mut1);cursor:pointer;font-size:11px;line-height:1;padding:0 1px;opacity:.65;transition:opacity .12s,color .12s}
.leg-cog:hover{opacity:1;color:var(--tx8)}

/* Flyouts valo (DCF / Multiples). Le flyout multiples empile label + SfSlider pleine largeur (tooltip slider en « Always » → marge haute). */
.finmod-valo{width:328px}
.finmod-valomult{width:340px}

/* Flyout DCF : WACC + g + 🧮 sur UNE seule ligne, les deux inputs de MÊME largeur, sans flèches (ShowSpinButtons retiré). */
.finmod-dcf .finmod-dcf-row{display:flex;align-items:center;gap:8px;margin-bottom:0}
.finmod-dcf .finmod-dcf-row .finmod-lbl{flex:0 0 auto;font-size:11.5px}
.finmod-dcf .finmod-inp-eq{flex:0 0 78px;width:78px;justify-content:flex-end}
.finmod-dcf .finmod-chip-btn{margin-left:auto;cursor:pointer;font-size:13px;padding:2px 8px;line-height:1.2}

/* Flyout « Calculateur de WACC » (recréé en local dans FinTreePopup). */
.finmod-wacc{width:340px;max-width:calc(100vw - 20px)}
.finmod-wacc-combo{margin:2px 0 7px}
.finmod-wacc-combo .custom-dropdown{display:block;width:100%}
.finmod-wacc-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 12px;margin:2px 0}
.finmod-wparam{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}
.finmod-wparam .finmod-lbl{font-size:10px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.finmod-wparam .finmod-inp{flex:0 0 58px;width:58px;justify-content:flex-end;padding:2px 7px}
.finmod-wres{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;padding-top:8px;border-top:1px solid var(--o10)}
.finmod-wres-eq{font-size:10px;color:var(--color-text-muted,var(--mut1))}
.finmod-wres-eq b{color:var(--tx2);font-weight:700}
.finmod-wres-wacc{font-size:12.5px;font-weight:700;color:var(--tx8);background:color-mix(in srgb, var(--brand) 16%, transparent);border:1px solid color-mix(in srgb, var(--brand) 34%, transparent);border-radius:999px;padding:3px 11px;white-space:nowrap}
.finmod-slider{display:flex;flex-direction:column;gap:2px;margin:16px 2px 8px}
.finmod-slider .finmod-lbl{font-size:11px}
.finmod-slider .e-control.e-slider-container,.finmod-slider .e-slider-container{width:100%}

/* Sliders « Multiples sectoriels » : on réutilise tel quel le look SF-MODERN de ValoLight
   (wrapper .sf-modern + --sf-accent sur chaque .finmod-slider, CssClass="vl-sf-slider") → styles dans site.css. */
.finmod-text{background:transparent;border:none;color:#fff;font-family:var(--font-family);font-size:12.5px;font-weight:600}
.finmod-text:focus{outline:none}
.finmod-seg{display:inline-flex;gap:3px;flex:0 0 auto;background:var(--o5);
  border:1px solid var(--o12);border-radius:8px;padding:2px}
.finmod-seg button{cursor:pointer;font-family:var(--font-family);font-size:10.5px;font-weight:600;
  color:var(--color-text-muted,var(--mut1));background:transparent;border:none;border-radius:6px;padding:4px 8px;
  transition:background .15s,color .15s}
.finmod-seg button:hover{color:#fff}
.finmod-seg button.on{color:#fff;background:color-mix(in srgb, var(--brand) 28%, transparent)}

/* Mini-graphe d'évolution annuelle en bas du panneau hypothèses */
.hyp-chart{flex:0 0 auto;margin-top:0;padding-top:10px;border-top:0}
/* Splitter : handle pour replier/déplier le carousel (graphique + valo) → libère le contenu du haut */
.hyp-split{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:7px;position:relative;cursor:pointer;
  height:14px;margin-top:8px;color:#7c97a4;user-select:none;border-top:1px solid var(--o8);transition:.15s}
.hyp-split:hover{color:var(--tx2)}
.hyp-split-grip{position:absolute;top:-2px;left:50%;transform:translateX(-50%);width:36px;height:3px;border-radius:2px;background:var(--o16);transition:.15s}
.hyp-split:hover .hyp-split-grip{background:color-mix(in srgb, var(--brand) 60%, transparent);width:50px}
.hyp-split-arrow{font-size:8px;line-height:1;opacity:.85}
.hyp-split.collapsed{height:30px;margin-top:8px;border:1px solid var(--o8);border-radius:9px;background:var(--o3);gap:8px}
.hyp-split.collapsed:hover{border-color:color-mix(in srgb, var(--brand) 40%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.hyp-split-lbl{font-size:11px;font-weight:600}

/* ─── Palette personnalisée : bouton + popover (header FinTreePopup) + éditeur réutilisable ─── */
.fintree-palbtn{height:28px;width:30px;border:1px solid var(--o12);border-radius:7px;background:var(--o4);
  cursor:pointer;font-size:14px;line-height:1;transition:.13s}
.fintree-palbtn:hover,.fintree-palbtn.on{border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 10%, transparent)}
/* Toggle « réorganiser les lignes » (glisser-déposer) — icône grip 6 points ; cyan quand actif, atténué si bloqué (multi-scénarios). */
.fintree-dragbtn{display:inline-flex;align-items:center;justify-content:center;color:rgba(255,255,255,.6)}
.fintree-dragbtn:hover:not(:disabled),.fintree-dragbtn.on{color:#22d3ee}
.fintree-dragbtn:disabled{opacity:.4;cursor:not-allowed}

/* Palette : pastilles (presets du combo) + bouton 🎨 (éditeur custom) FUSIONNÉS dans l'edit-box du DxComboBox.
   Le 🎨 vit à droite des pastilles, séparé d'un filet ; clic = éditeur custom (stopPropagation → pas le dropdown). */
.fintree-pal-edit{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:100%}
/* Le data-tip « Palette personnalisée » du 🎨 ne doit pas être rogné par l'éditbox du DxComboBox. */
.fintree-palette .dxbl-edit-input-container,.fintree-palette .dxbl-text-edit,.fintree-pal-edit{overflow:visible}
.fintree-pal-swatches{display:grid;grid-template-columns:repeat(3,8px);grid-auto-rows:8px;gap:2px;align-content:center;flex:0 0 auto}
.fintree-pal-sw{width:8px;height:8px;border-radius:2px;display:block}
.fintree-pal-edit-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:24px;height:24px;padding:0;border:0;border-left:1px solid var(--o12);
  background:transparent;cursor:pointer;font-size:13px;line-height:1;border-radius:0 5px 5px 0;transition:background .13s}
.fintree-pal-edit-btn:hover{background:color-mix(in srgb, var(--brand) 12%, transparent)}
.fintree-pal-edit-btn.on{background:color-mix(in srgb, var(--brand) 20%, transparent)}
/* Variante AUTONOME (la combo a été supprimée) : bouton icône rond, cohérent avec les autres du header. */
.fintree-pal-edit-solo{width:30px;height:28px;border:1px solid color-mix(in srgb, var(--brand) 35%, transparent);border-radius:7px;
  background:color-mix(in srgb, var(--brand) 10%, transparent);font-size:15px;color:var(--tx8)}
.fintree-pal-edit-solo:hover{background:color-mix(in srgb, var(--brand) 22%, transparent);border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
.fintree-pal-edit-solo.on{background:color-mix(in srgb, var(--brand) 22%, transparent);border-color:color-mix(in srgb, var(--brand) 70%, transparent)}
/* Pop en 3 zones : header (titre+✕) FIXE, body (éditeur palette) SCROLLABLE, footer (thème+densité) FIXE. */
.fintree-pal-pop{position:fixed;top:56px;right:18px;z-index:5001;max-height:min(82vh,680px);
  display:flex;flex-direction:column;overflow:hidden;
  background:transparent;border:1px solid var(--o14);border-radius:14px;box-shadow:0 22px 56px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));padding:8px;backdrop-filter:blur(20px)}
.fintree-pal-head{display:flex;align-items:center;gap:8px;margin:-2px -2px 10px;padding:2px 2px 9px;cursor:move;flex:0 0 auto;
  border-bottom:1px solid var(--o8);user-select:none;touch-action:none}
/* Zone scrollable (entre header fixe et footer fixe). min-height:0 = indispensable pour que le flex enfant scrolle. */
.fintree-pal-body{flex:1 1 auto;min-height:0;overflow-y:auto;margin:0 -6px;padding:0 6px;
  /* Fondu de scroll : le contenu s'estompe sur ~16px en haut/bas → affordance « il y a plus à défiler ». */
  -webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%);
  mask-image:linear-gradient(to bottom, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%)}
.fintree-pal-head:active{cursor:grabbing}
.fintree-pal-title{font-size:12.5px;font-weight:700;color:var(--tx1)}
.fintree-pal-x{margin-left:auto;background:none;border:0;color:#7c8aa0;font-size:14px;cursor:pointer;line-height:1;padding:2px 4px}
.fintree-pal-x:hover{color:var(--tx1)}
.pal-ed{font-family:var(--font-family)}
.pal-ed-title{font-size:12.5px;font-weight:700;color:var(--tx1);margin-bottom:8px}
/* Galerie de thèmes prédéfinis (premium) — 1 clic applique les 6 couleurs */
.pal-ed-presets-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:0 0 5px}
.pal-ed-presets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:12px}
.pal-ed-preset{display:flex;align-items:center;gap:8px;text-align:left;background:var(--o3);border:1px solid var(--o7);border-radius:8px;padding:6px 9px;cursor:pointer;transition:.13s}
.pal-ed-preset:hover{background:color-mix(in srgb, var(--brand) 8%, transparent);border-color:color-mix(in srgb, var(--brand) 35%, transparent);transform:translateY(-1px)}
.pal-ed-preset.on{border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.pal-ed-preset-sw{display:inline-flex;gap:2px;flex:0 0 auto}
.pal-ed-preset-sw span{width:9px;height:16px;border-radius:2px;display:inline-block}
.pal-ed-preset-name{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:600;color:var(--tx1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pal-ed-swatches{display:flex;gap:7px;margin-bottom:11px}
.pal-ed-sw{flex:1 1 0}
/* Swatch arrondi, la couleur REMPLIT la pastille (suppression du cadre blanc natif du sélecteur). */
.pal-ed-sw input[type=color]{width:100%;height:38px;border:1px solid var(--o16);border-radius:10px;background:transparent;cursor:pointer;padding:0;overflow:hidden;transition:border-color .13s,transform .1s}
.pal-ed-sw input[type=color]:hover{border-color:color-mix(in srgb, var(--brand) 55%, transparent);transform:translateY(-1px)}
.pal-ed-sw input[type=color]::-webkit-color-swatch-wrapper{padding:0;border-radius:9px}
.pal-ed-sw input[type=color]::-webkit-color-swatch{border:none;border-radius:9px}
.pal-ed-sw input[type=color]::-moz-color-swatch{border:none;border-radius:9px}
.pal-ed-actions{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.pal-ed-apply{flex:0 0 auto;font-family:var(--font-family);font-size:11.5px;font-weight:700;color:var(--surf-1);background:var(--brand);border:0;border-radius:7px;padding:7px 12px;cursor:pointer}
.pal-ed-apply:hover{background:#5bd3b5}
.pal-ed-name{flex:1 1 auto;min-width:0;font-family:var(--font-family);font-size:11.5px;color:var(--tx1);background:var(--o4);border:1px solid var(--o12);border-radius:7px;padding:6px 9px}
.pal-ed-name::placeholder{color:#64748b}
.pal-ed-save{flex:0 0 auto;font-size:13px;background:var(--o5);border:1px solid var(--o12);border-radius:7px;padding:5px 8px;cursor:pointer}
.pal-ed-save:disabled{opacity:.45;cursor:not-allowed}
.pal-ed-msg{font-size:11px;color:var(--tx8);margin-bottom:6px}
/* Upsell « Créez un accès » quand l'enregistrement de palette est gaté (anonyme) — couleurs de marque. */
.pal-ed-gate{display:flex;flex-direction:column;gap:2px;align-items:flex-start;width:100%;text-align:left;cursor:pointer;
  font-family:var(--font-family);font-size:12px;font-weight:600;color:var(--brand-strong);
  background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);
  border-radius:9px;padding:9px 11px;transition:background .15s ease}
.pal-ed-gate:hover{background:color-mix(in srgb, var(--brand) 16%, transparent)}
.pal-ed-gate-main{font-size:12.5px;font-weight:600;line-height:1.3}
.pal-ed-gate-sub{font-size:10.5px;font-weight:500;color:var(--color-text-muted);line-height:1.35}
/* Gate marque blanche (couleurs sur-mesure) — séparé des thèmes prédéfinis. */
.pal-ed-wlgate{margin-top:8px}
/* Garde-fou contraste (couleur principale extrême) — ambre sémantique, theme-aware. */
.pal-ed-warn{font-size:10.5px;line-height:1.35;color:var(--st-amber);background:color-mix(in srgb, var(--st-amber) 12%, transparent);border:1px solid color-mix(in srgb, var(--st-amber) 28%, transparent);border-radius:7px;padding:5px 9px;margin:6px 0}
/* Sélecteur de POLICE de l'app (PaletteEditor) : chips dans leur police + upload « maison ». */
.pal-ed-fonts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.pal-ed-font{border:1px solid var(--o7);background:var(--o3);color:var(--tx2,#c8d3da);border-radius:8px;padding:6px 11px;font-size:12.5px;font-weight:700;cursor:pointer;transition:.13s}
.pal-ed-font:hover{border-color:color-mix(in srgb,var(--brand) 45%,transparent)}
.pal-ed-font.on{border-color:var(--brand);color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent)}
.pal-ed-font.maison{border-style:dashed}
.pal-ed-fontgate{margin:2px 0 8px}
/* Police : dropdown + upload maison + reset sur UNE ligne (nowrap) ; le dropdown grandit, le reste à sa taille. */
.pal-ed-fontrow{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;margin-bottom:4px}
.pal-ed-fontrow .custom-dropdown{flex:1 1 auto;min-width:0}
.pal-ed-fontup{position:relative;flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;border:1px dashed color-mix(in srgb,var(--brand) 40%,var(--o7));border-radius:8px;padding:7px 11px;font-size:11.5px;font-weight:700;color:var(--tx2,#c8d3da);cursor:pointer}
.pal-ed-fontup:hover{border-color:var(--brand)}
.pal-ed-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.pal-ed-fontreset{flex:0 0 auto;white-space:nowrap;border:none;background:transparent;color:#9aa7b0;font-size:11px;font-weight:700;cursor:pointer;padding:2px 4px}
.pal-ed-fontreset:hover{color:var(--brand)}
.pal-ed-listlbl{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:8px 0 4px}
.pal-ed-list{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}
.pal-ed-item{display:flex;align-items:center;gap:4px}
.pal-ed-item-apply{flex:1 1 auto;display:flex;align-items:center;gap:8px;text-align:left;background:var(--o3);border:1px solid var(--o7);border-radius:7px;padding:5px 8px;cursor:pointer}
.pal-ed-item-apply:hover{background:color-mix(in srgb, var(--brand) 8%, transparent);border-color:color-mix(in srgb, var(--brand) 35%, transparent)}
.pal-ed-item-sw{display:inline-flex;gap:2px;flex:0 0 auto}
.pal-ed-item-sw span{width:8px;height:14px;border-radius:2px;display:inline-block}
.pal-ed-item-name{font-size:11.5px;color:var(--tx1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Contrôle de densité (segmented Confort / Compact) dans le pop Apparence */
.appx-density{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid var(--o7)}
.appx-density-lbl{font-size:11.5px;font-weight:700;color:var(--tx1)}
.appx-density-seg{display:inline-flex;gap:2px;background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:2px}
/* Densité dans le header du pop Apparence (sans légende) : poussée à droite, à côté du toggle thème. */
.appx-head-density{margin-left:auto;flex:0 0 auto}
.appx-head-density button{font-size:10.5px;padding:3px 8px}
/* Quick-actions palette du pop Apparence (🎲 Aléatoire · ↺ Défaut · 🎨 Depuis mon logo). */
.appx-pal-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.appx-pal-act{flex:1 1 auto;font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--tx2);background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 8px;cursor:pointer;white-space:nowrap;text-align:center;transition:background .14s,color .14s,border-color .14s}
.appx-pal-act:hover{color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 10%, transparent);border-color:color-mix(in srgb, var(--brand) 30%, transparent)}
/* Réglage live de l'ancre « depuis mon logo » : 6 pastilles = la palette générée, cliquer = y poser la couleur du logo */
.appx-logograd{margin-top:10px;padding-top:10px;border-top:1px solid var(--o7)}
.appx-logograd-lbl{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--tx2);margin-bottom:7px}
.appx-logograd-pos{font-size:10px;font-weight:600;color:var(--mut1)}
.appx-logograd-sw{display:flex;gap:6px}
.appx-logograd-chip{flex:1 1 0;height:30px;border-radius:7px;border:1px solid var(--o12);cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .12s,box-shadow .12s}
.appx-logograd-chip:hover{transform:translateY(-1px)}
.appx-logograd-chip.anchor{box-shadow:0 0 0 2px var(--surf-3),0 0 0 4px var(--brand-strong)}
/* Dans le modal rapport : pastilles plus FINES + barre d'actions (varier). */
.rex-modal .appx-logograd-sw{gap:5px}
.rex-modal .appx-logograd-chip{height:20px;border-radius:6px}
.rex-logograd-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rex-rand-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;font-family:var(--font-family);font-size:11px;font-weight:600;
  padding:4px 10px;border-radius:7px;border:1px solid var(--o14);background:var(--o4);color:var(--tx2);cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.rex-rand-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--brand) 55%,transparent);color:var(--tx1);background:var(--o6)}
.rex-rand-btn:disabled{opacity:.5;cursor:not-allowed}
.appx-logograd-mark{font-size:9px;line-height:1;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.65);pointer-events:none}
.appx-logograd-hint{font-size:10px;color:var(--mut1);margin-top:6px;line-height:1.35}
.appx-density-seg button{font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--color-text-secondary,var(--mut1));background:transparent;border:0;border-radius:6px;padding:5px 12px;cursor:pointer;transition:.13s}
.appx-density-seg button.on{background:color-mix(in srgb, var(--brand) 85%, transparent);color:#fff}
/* Préférences sur UNE ligne (Thème + Densité côte à côte) — compact ; wrap propre si trop étroit */
.appx-prefs{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:12px;padding-top:11px;border-top:1px solid var(--o7);flex:0 0 auto}
.appx-pref{display:inline-flex;align-items:center;gap:7px;min-width:0}
.appx-prefs-lbl{font-size:11px;font-weight:700;color:var(--tx1);white-space:nowrap}
.appx-seg-sm button{padding:4px 9px;font-size:10.5px}
/* Bouton thème icône (☀️/🌙) — dans le HEADER de la pop Apparence, à côté du titre (rond compact). */
.appx-theme-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:13px;line-height:1;cursor:pointer;color:var(--color-text-secondary);background:var(--o6);border:1px solid var(--o12);border-radius:999px;transition:.14s}
.appx-theme-btn:hover{background:var(--o12);color:var(--color-text-primary);transform:translateY(-1px)}
/* ═══════════════════ DENSITÉ COMPACTE (data-density=compact) — pousse au MAX ═══════════════════
   Resserre : (1) la GRILLE FinTree DevExpress = le gros levier (padding/line-height/font des cellules,
   battus au !important car CustomizeElement pose le font-size inline), (2) les cartes, (3) les panneaux
   & en-têtes. Sombre/clair indépendants (n'agit que sur les espacements). */

/* (1) Grille FinTree — lignes plus serrées + police d'un cran (override de l'inline CustomizeElement) */
html[data-density="compact"] .myGrid .dxbl-grid-table>tbody td,
html[data-density="compact"] .myDarkGrid .dxbl-grid-table>tbody td,
html[data-density="compact"] .ftree-rb .dxbl-grid-table>tbody td{
    padding-top:0 !important;padding-bottom:0 !important;
    --dxbl-grid-cell-padding-y:0px;
    --dxbl-grid-font-size:0.54rem !important;
    line-height:1.12 !important;
}
html[data-density="compact"] .myGrid .dxbl-grid-table>thead th,
html[data-density="compact"] .myDarkGrid .dxbl-grid-table>thead th,
html[data-density="compact"] .ftree-rb .dxbl-grid-table>thead th{padding-top:0 !important;padding-bottom:0 !important}

/* (2) Surfaces « cartes » */
html[data-density="compact"] .intent-cards{gap:10px}
html[data-density="compact"] .intent-card{padding:13px;min-height:198px}
html[data-density="compact"] .overview-grid{gap:9px}
html[data-density="compact"] .overview-card{padding:10px}
html[data-density="compact"] .overview-chart-card{padding:14px 12px 6px}
html[data-density="compact"] .vcre-panel{padding:9px 11px}
html[data-density="compact"] .entry-card{padding:9px 11px}
html[data-density="compact"] .kpi-card{padding:7px}
html[data-density="compact"] .kpi-row,
html[data-density="compact"] .kpi-list{gap:7px}
html[data-density="compact"] .kpi-secondary{padding:7px 12px}

/* (3) Panneaux, en-têtes & cartes de pilotage */
html[data-density="compact"] .period-col,
html[data-density="compact"] .period-content{gap:7px}
html[data-density="compact"] .period-header{padding:4px 10px}
html[data-density="compact"] .fintree-head{padding:4px 10px}
html[data-density="compact"] .sim-grid{gap:6px}
html[data-density="compact"] .sim-card{padding:7px 9px}
html[data-density="compact"] .hyp-panel{padding:6px 10px}
.pal-ed-item-del{flex:0 0 auto;background:none;border:0;color:#64748b;font-size:12px;cursor:pointer;padding:2px 6px}
.pal-ed-item-del:hover{color:#fb9b86}
/* Zone de slide du carousel (Évolution ⟷ Valo) : hauteur réservée COMMUNE → pas de saut au switch d'onglet.
   = hauteur du slide le plus haut (Valo ≈ 172px) ; le chart Évolution (150px) y est centré. */
/* Hauteur FIXE → la slide « Évolution » (chart + strip mensuel) a la même hauteur que la slide « Valo » (pas de saut au switch). */
.hyp-chart-body{height:188px;display:flex;flex-direction:column;justify-content:center}
.hyp-chart-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;row-gap:6px;margin-bottom:6px}
.hyp-chart-title{font-size:11.5px;font-weight:600;color:var(--tx2)}
/* Carousel évolution / valo */
.hyp-carousel-tabs{display:inline-flex;gap:2px;background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:2px}
.hyp-carousel-tabs button{cursor:pointer;font-family:var(--font-family);font-size:11px;font-weight:600;color:var(--color-text-muted,var(--mut1));
  background:transparent;border:none;border-radius:6px;padding:4px 10px;transition:.15s}
.hyp-carousel-tabs button:hover{color:#fff}
.hyp-carousel-tabs button.on{background:var(--o16);color:#fff;box-shadow:inset 0 0 0 1px var(--o10)}

/* Synthèse valo : chiffre en gros, légende en petit */
.hyp-valo{display:flex;flex-direction:column;gap:9px;padding:6px 0 2px}
.hyp-valo-hero{text-align:center;padding:6px 0 10px;border-bottom:1px solid var(--o7)}
.hyp-valo-num{font-weight:800;color:#fff;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.5px;
  font-size:38px;display:inline-block}
.hyp-valo-num small{font-size:.4em;font-weight:600;color:var(--tx8);margin-left:5px;letter-spacing:0}
.hyp-valo-cap{font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted,var(--mut1));margin-top:7px}
/* léger flash cyan pendant que le compteur défile (classe posée par JS) */
.hyp-valo-num.counting>span{color:var(--tx8);transition:color .3s}

/* Dumbbell DCF ●———● Multiples */
.hyp-db{padding:16px 6px 2px}
.hyp-db-track{position:relative;height:16px;margin:0 0 11px}
.hyp-db-track::before{content:"";position:absolute;top:50%;left:8%;right:8%;height:2px;transform:translateY(-50%);
  background:var(--o10);border-radius:2px}
.hyp-db-bar{position:absolute;top:50%;height:3px;transform:translateY(-50%);border-radius:3px;
  background:linear-gradient(90deg,var(--brand),#3a7bd5);
  transition:left .5s cubic-bezier(.2,.8,.2,1),width .5s cubic-bezier(.2,.8,.2,1)}
.hyp-db-dot{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);
  border:2px solid #0a1c24;box-shadow:0 0 0 1px var(--o18);transition:left .5s cubic-bezier(.2,.8,.2,1)}
.hyp-db-dot.dcf{background:var(--brand)}
.hyp-db-dot.mult{background:#3a7bd5}
.hyp-db-dot.off{background:transparent;border-color:rgba(255,255,255,.3);box-shadow:none}
.hyp-db-legend{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--color-text-muted,var(--mut1))}
/* chips DCF / Multiples */
.hyp-db-legend .leg{display:inline-flex;align-items:center;gap:6px;
  background:var(--o4);border:1px solid var(--o12);border-radius:999px;padding:4px 10px}
/* Ordre des pills (réordonnées selon DCF vs Mult.) — piloté par classe (≠ inline style) pour ne pas écraser le transform du FLIP JS. */
.hyp-db-legend .leg-ord1{order:1}
.hyp-db-legend .leg-ord2{order:2}
.hyp-db-legend .leg.dcf{border-color:color-mix(in srgb, var(--brand) 40%, transparent)}
.hyp-db-legend .leg.mult{border-color:rgba(58,123,213,.45)}
.hyp-db-legend b{color:#fff;font-weight:700}
.hyp-db-legend b.na{color:var(--color-text-muted,var(--mut1));font-weight:600}
.hyp-db-legend .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.hyp-db-legend .dot.dcf{background:var(--brand)}
.hyp-db-legend .dot.mult{background:#3a7bd5}
.hyp-db-note{font-size:10px;font-style:italic;color:var(--color-text-muted,var(--mut1));text-align:center;margin-top:9px;min-height:14px}
/* Light : polices héritées du dark (#fff) illisibles sur fond clair — gros chiffre valo retenue, valeurs des pills
   DCF/Mult., et toggles (Évolution/Valo, An/Mois) en hover + actif (blanc sur gris pâle). Dark inchangé. */
html[data-theme="light"] .hyp-valo-num{color:var(--color-text-primary)}
html[data-theme="light"] .hyp-db-legend b{color:var(--color-text-primary)}
html[data-theme="light"] .hyp-carousel-tabs button:hover,
html[data-theme="light"] .hyp-chart-mode button:hover{color:var(--tx1)}
html[data-theme="light"] .hyp-carousel-tabs button.on,
html[data-theme="light"] .hyp-chart-mode button.on{color:var(--tx1)}

/* Groupe d'actions à droite de l'en-tête (switch An/Mois + refresh + dropdown agrégat) : packé serré, poussé à droite. */
.hyp-chart-actions{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap;row-gap:6px}
.hyp-chart-dd{flex:0 1 auto;min-width:0}
.hyp-chart-dd .custom-dropdown,.hyp-chart-dd .custom-dropdown-trigger{min-width:96px;padding:4px 10px;font-size:11px}
/* Switch An / Mois du graphe (TOGGLE → état actif NEUTRE, pour le distinguer des filtres teal). */
.hyp-chart-mode{flex:0 0 auto;display:inline-flex;gap:2px;background:var(--o5);
  border:1px solid var(--o12);border-radius:7px;padding:2px}
.hyp-chart-mode button{cursor:pointer;font-family:var(--font-family);font-size:10px;font-weight:600;
  color:var(--color-text-muted,var(--mut1));background:transparent;border:none;border-radius:5px;padding:2px 7px;transition:.12s}
.hyp-chart-mode button:hover{color:#fff}
.hyp-chart-mode button.on{background:var(--o16);color:#fff;box-shadow:inset 0 0 0 1px var(--o10)}
/* Bouton « recharger le graphe » (recrée le canvas + contexte WebGL si l'affichage devient anormal). */
.hyp-chart-refresh{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;color:var(--color-text-muted,var(--mut1));background:var(--o5);
  border:1px solid var(--o12);border-radius:7px;cursor:pointer;transition:.12s}
.hyp-chart-refresh:hover{color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);border-color:color-mix(in srgb, var(--brand) 30%, transparent)}
.hyp-chart-refresh:active svg{transform:rotate(-180deg);transition:transform .3s ease}
/* le sens d'ouverture (haut/bas) et la position sont gérés par le portal JS (dropdownPortal) */
/* flex:1 → le canvas remplit la hauteur restante du body (réduit en mensuel pour laisser la place au strip) */
.hyp-chart-canvas{flex:1 1 auto;min-height:0;width:100%}
.hyp-chart-apex{width:100%;height:100%}/* hôte ApexCharts (ex-CartesianChart du carousel) → remplit le canvas */
.hyp-chart-empty{font-size:11px;color:var(--color-text-muted);font-style:italic;padding:14px 0;text-align:center}
/* Strip de zoom mensuel (DxRangeSelector) sous le graphe LiveCharts */
.hyp-chart-range{flex:0 0 auto;width:100%;margin-top:1px;padding-top:1px;display:flex;align-items:center;gap:6px}
/* Combo « exercice » à gauche du strip mensuel (scope le selector sur l'exercice).
   La ligne d'échelle du selector est plus basse que son centre (les slider-markers occupent le haut)
   → on descend la combo de ~8px pour aligner son centre sur la LIGNE plutôt que sur tout le selector. */
.hyp-range-scope{flex:0 0 auto;transform:translateY(8px)}
.hyp-range-scope .custom-dropdown,.hyp-range-scope .custom-dropdown-trigger{min-width:84px;padding:4px 8px;font-size:11px}
.hyp-range-sel{flex:1 1 auto;min-width:0}
.hyp-chart-range-cap{display:flex;align-items:center;justify-content:center;gap:6px;font-size:10px;
  color:var(--color-text-muted,var(--mut1));margin-bottom:2px}
.hyp-chart-range-cap b{color:var(--tx2);font-weight:600}
.hyp-chart-range-cap span{opacity:.55}
/* fond transparent pour s'intégrer au panneau sombre (le composant rend un SVG) */
.hyp-chart-range .dxbl-range-selector,
.hyp-chart-range .dxrs,
.hyp-chart-range svg{background:transparent !important}

/* Onglets Piloter / Suivi */
.pilot-tabs{display:flex;gap:6px;margin-bottom:10px}
/* Onglets remontés dans la barre d'en-tête (remplacent le titre) : remplissent la largeur dispo, pas de marge basse. */
.side-modebar .pilot-tabs{flex:1 1 auto;margin-bottom:0;min-width:0}
.pilot-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;
  font-family:var(--font-family);font-size:11.5px;font-weight:600;color:var(--color-text-secondary);
  background:var(--o5);border:1px solid var(--o12);border-radius:8px;padding:6px 8px;transition:.15s}
.pilot-tab:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.pilot-tab.on{color:var(--tx8);border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 14%, transparent)}
.pilot-tab:disabled,.pilot-tab.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
/* Navigation entre vues (icônes) */
.pilot-nav{display:flex;gap:4px;overflow-x:auto;margin-bottom:10px;padding-bottom:4px}
.pilot-nav-btn{flex:0 0 auto;display:inline-flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;
  font-family:var(--font-family);font-size:10px;font-weight:600;color:var(--color-text-muted);
  background:transparent;border:1px solid transparent;border-radius:8px;padding:6px 9px;transition:.12s;min-width:56px}
.pilot-nav-btn:hover{color:#d9e4ea;background:var(--o4)}
.pilot-nav-btn.on{color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);border-color:color-mix(in srgb, var(--brand) 40%, transparent)}
.pilot-nav-ico{font-size:16px;line-height:1}
.pilot-view{min-width:0;max-width:100%;overflow-x:hidden}
.pilot-suivi-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:11px;font-weight:700;color:var(--tx2);margin-bottom:6px}
/* Les vues de pilotage sont dimensionnées pour ~700px (Overview) ; dans le panneau
   étroit (430px) les media-queries viewport ne s'appliquent pas et les grilles
   débordent. On contraint ici (scopé au panneau) sans toucher au layout large. */
.fintree-side .pilot-view .choice-grid{grid-template-columns:repeat(auto-fill,minmax(94px,1fr)) !important;gap:6px}
.fintree-side .pilot-view .choice-grid-augm{grid-template-columns:repeat(2,minmax(0,1fr)) !important}   /* 4 col fixes → 2 */
.fintree-side .pilot-view .fin-loans{grid-template-columns:1fr !important}                              /* minmax(330px) → 1 col */
/* Panneau étroit : libellé masqué (cf. .cv-compact) → presets EN LIGNE (emoji + valeur côte à côte), pills plus compactes verticalement. */
.fintree-side .pilot-view .choice-card{min-width:0;overflow:hidden;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:6px;text-align:center;padding:6px 8px}
.fintree-side .pilot-view .choice-emoji{font-size:16px;line-height:1}
.fintree-side .pilot-view .choice-label{min-width:0;width:100%;overflow-wrap:normal;word-break:normal;hyphens:auto;line-height:1.15;font-size:10.5px}
.fintree-side .pilot-view .choice-value{min-width:0;white-space:nowrap;overflow:visible;text-overflow:clip;font-size:10.5px}
.fintree-side .pilot-view .choice-card--custom .choice-label{flex:0 0 auto}
.fintree-side .pilot-view .form-row-double,
.fintree-side .pilot-view .duration-buttons,
.fintree-side .pilot-view .yr-pill,
.fintree-side .pilot-view .items-list{flex-wrap:wrap}
.fintree-side .pilot-view .form-half{min-width:0;flex:1 1 90px}                                          /* 140px → shrink possible côte à côte */
.fintree-side .pilot-view .yr-seg{min-width:0}

@media(max-width:760px){
  /* SPLIT EMPILÉ (plus d'overlay) : arbre en haut, panneau en bas ~40vh. Le focus déclenché depuis le panneau
     reste visible dans l'arbre au-dessus. Le carousel (graphe) est masqué pour laisser la place aux formulaires. */
  .fintree-body{flex-direction:column}
  .fintree-tree{flex:1 1 auto;min-height:0}                 /* arbre = hauteur restante (~60vh) */
  .fintree-side{position:static;flex:0 0 40vh;height:40vh;max-height:none;width:100%;max-width:none;
    border-left:none;border-top:1px solid var(--o14);box-shadow:0 -8px 24px rgba(var(--shadow-col),calc(.45 * var(--shadow-mul)));
    background:rgba(7,18,26,.985);backdrop-filter:none;transform:none}
  .fintree-body.side-closed .fintree-side{display:none}     /* panneau replié → arbre pleine hauteur */
  .fintree-side.is-pilot{width:100%;max-width:none}
  .hyp-chart{display:none}                                   /* carousel masqué sur mobile (place aux formulaires) */
  /* Poignée HORIZONTALE entre l'arbre et le panneau → resize de la hauteur du panneau (tirer ↑ = panneau plus grand). */
  .fintree-splitter{display:flex !important;flex:0 0 16px;width:100%;height:16px;align-self:auto;cursor:row-resize}
  .fintree-splitter::before{top:50%;bottom:auto;left:8px;right:8px;width:auto;height:2px;transform:translateY(-50%)}
  .fintree-splitter::after{width:42px;height:7px}
}

/* Carousel (en-tête) sur petit écran : les actions (An/Mois · refresh · combo) ne tiennent pas à côté des onglets
   → on les pose proprement sur LEUR propre ligne, alignées à gauche (au lieu d'un wrap déséquilibré à droite). */
@media(max-width:520px){
  .hyp-chart-actions{margin-left:0;flex-basis:100%;justify-content:flex-start}
  .hyp-chart-dd{flex:0 0 auto}
}

/* Bouton « Hypothèses » (toggle du panneau / drawer) */
.fintree-side-btn{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-family);
  font-size:12px;font-weight:600;color:var(--color-text-secondary);background:var(--o5);
  border:1px solid var(--o12);border-radius:8px;padding:5px 10px;transition:.15s}
.fintree-side-btn:hover{color:#fff;border-color:color-mix(in srgb, var(--brand) 50%, transparent)}
.fintree-side-btn.on{color:var(--tx8);border-color:color-mix(in srgb, var(--brand) 50%, transparent);background:color-mix(in srgb, var(--brand) 14%, transparent)}
@media(max-width:640px){.fintree-side-btn-lbl{display:none}}
.hyp-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:12px;font-weight:700;color:var(--tx2);margin-bottom:8px;position:sticky;top:-10px;z-index:1;
  background:var(--dh5);padding:6px 0}
.hyp-cat{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#7fb0ef;
  margin:10px 0 2px;padding-bottom:2px;border-bottom:1px solid var(--o7)}
.hyp-info{opacity:1}.hyp-info .hyp-txt b{color:var(--tx8)}
.hyp-empty{font-size:11.5px;color:var(--mut1);line-height:1.5;padding:4px 0}
.hyp-item{display:flex;align-items:center;gap:10px;padding:6px 6px;border-radius:8px;transition:.12s}
.hyp-item:hover{background:var(--o4)}
.hyp-item.off{opacity:.5}
.hyp-ico{font-size:15px;flex-shrink:0;width:20px;text-align:center}
.hyp-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.hyp-txt b{font-size:12.5px;font-weight:600;color:var(--tx7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hyp-txt small{font-size:10.5px;color:var(--mut1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hyp-remove{flex-shrink:0;width:24px;height:24px;border-radius:6px;border:1px solid var(--color-border-strong);
  background:transparent;color:var(--color-text-muted);cursor:pointer;font-size:12px}
.hyp-remove:hover{color:var(--color-danger);border-color:var(--color-danger)}
/* Interrupteur on/off */
/* Toggle compact pour activer/désactiver une hypothèse directement dans le tableau financier */
.fin-hyp-sw{position:relative;display:inline-block;width:26px;height:14px;flex-shrink:0;cursor:pointer;vertical-align:middle}
.fin-hyp-sw input{opacity:0;width:0;height:0;position:absolute}
.fin-hyp-sl{position:absolute;inset:0;border-radius:999px;background:var(--o18);transition:.16s}
.fin-hyp-sl::before{content:"";position:absolute;left:2px;top:2px;width:10px;height:10px;border-radius:50%;background:#c4d2da;transition:.16s}
.fin-hyp-sw input:checked + .fin-hyp-sl{background:color-mix(in srgb, var(--brand) 60%, transparent)}
.fin-hyp-sw input:checked + .fin-hyp-sl::before{transform:translateX(12px);background:#fff}

.hyp-toggle{position:relative;display:inline-block;width:36px;height:20px;flex-shrink:0;cursor:pointer}
.hyp-toggle input{opacity:0;width:0;height:0;position:absolute}
.hyp-slider{position:absolute;inset:0;border-radius:999px;background:var(--o14);transition:.18s}
.hyp-slider::before{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;
  background:#cfd8dc;transition:.18s}
.hyp-toggle input:checked + .hyp-slider{background:color-mix(in srgb, var(--brand) 55%, transparent)}
.hyp-toggle input:checked + .hyp-slider::before{transform:translateX(16px);background:#fff}

/* ── #9 Frise des hypothèses (Suivi) : timeline read-only par exercice projeté ── */
.hyp-frise{margin:2px 0 12px;border:1px solid var(--o8);border-radius:10px;
  background:var(--o2);overflow:hidden}
.hyp-frise-head{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;
  background:transparent;border:0;cursor:pointer;color:var(--tx7);text-align:left}
.hyp-frise-head:hover{background:var(--o4)}
.hyp-frise-title{font-size:12px;font-weight:700}
.hyp-frise-sub{font-size:10px;color:var(--mut1);margin-left:auto}
.hyp-frise-arrow{font-size:10px;color:var(--mut1);width:12px;text-align:center;flex-shrink:0}
.hyp-frise-grid{display:flex;flex-direction:column;gap:5px;padding:4px 10px 10px}
.hyp-frise-axis{display:flex;align-items:flex-end;gap:8px}
.hyp-frise-col{font-size:9.5px;color:var(--mut1);text-align:center;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;padding-bottom:3px;
  border-bottom:1px solid var(--o7)}
.hyp-frise-row{display:flex;align-items:center;gap:8px}
.hyp-frise-lbl{flex:0 0 22px;width:22px;text-align:center;font-size:14px;line-height:1}
.hyp-txt-link.hyp-frise-lbl{cursor:pointer}
.hyp-frise-track{flex:1;min-width:0;display:grid;grid-template-columns:repeat(var(--cols,1),1fr);
  gap:3px;align-items:center}
.hyp-frise-axis-track{align-items:end}
.hyp-frise-bar{height:18px;border-radius:5px;display:flex;align-items:center;padding:0 8px;
  font-size:10px;font-weight:600;color:#0c1418;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;cursor:default;min-width:0}
.hyp-frise-bar.spanning{background-image:repeating-linear-gradient(45deg,var(--o16) 0 6px,transparent 6px 12px)}
.hyp-frise-g0{background:#34d399}  /* Croissance */
.hyp-frise-g1{background:#60a5fa}  /* RH */
.hyp-frise-g2{background:#fbbf24}  /* CapEx */
.hyp-frise-g3{background:#f472b6}  /* Marketing */
.hyp-frise-g4{background:#a78bfa}  /* Financement */
.hyp-frise-g5{background:#facc15}  /* Dividendes */
.hyp-frise-g6{background:#22d3ee}  /* Flux ponctuels */

/* ── #7 Playbooks : scénarios stratégiques 1-clic (Suivi) ── */
.hyp-playbooks{margin:2px 0 12px}
.hyp-playbooks-hd{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:700;color:var(--tx7);margin-bottom:7px}
.hyp-playbooks-hd small{font-size:10px;font-weight:400;color:var(--mut1)}
.hyp-playbooks-row{display:flex;gap:8px;flex-wrap:wrap}
/* Les boutons sont enrobés dans un MudTooltip (.mud-tooltip-root) → c'est LUI le flex-item : il porte le flex:1. */
.hyp-playbooks-row > .mud-tooltip-root{flex:1 1 0;min-width:96px;display:flex}
.hyp-playbooks-row .hyp-playbook{width:100%}
.hyp-playbook{flex:1 1 0;min-width:96px;display:flex;align-items:center;gap:8px;cursor:pointer;text-align:left;
  background:var(--o3);border:1px solid var(--o10);border-radius:10px;padding:8px 10px;transition:.13s}
.hyp-playbook:hover:not(:disabled){background:color-mix(in srgb,var(--mud-palette-tertiary) 12%,transparent);
  border-color:color-mix(in srgb,var(--mud-palette-tertiary) 45%,transparent);transform:translateY(-1px)}
.hyp-playbook:disabled{opacity:.5;cursor:default}
.hyp-playbook-ic{font-size:17px;line-height:1;flex-shrink:0}
.hyp-playbook-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.hyp-playbook-txt b{font-size:11.5px;font-weight:700;color:var(--tx7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hyp-playbook-txt small{font-size:10px;color:var(--mut1);white-space:nowrap}

/* ── #6 Annotations : notes libres par hypothèse (Suivi) ── */
.hyp-item-wrap{display:flex;flex-direction:column}
.hyp-note-btn{flex-shrink:0;width:24px;height:22px;border-radius:6px;border:1px solid transparent;
  background:transparent;cursor:pointer;font-size:12px;opacity:.45;transition:.12s;line-height:1}
.hyp-item-wrap:hover .hyp-note-btn{opacity:.85}
.hyp-note-btn:hover{opacity:1;background:var(--o6)}
.hyp-note-btn.has{opacity:1;filter:none}
.hyp-note-view{font-size:10.5px;color:#c9b072;background:rgba(250,204,21,.07);
  border-left:2px solid rgba(250,204,21,.5);border-radius:0 6px 6px 0;
  padding:4px 8px;margin:1px 6px 4px 30px;cursor:pointer;line-height:1.4;
  white-space:pre-wrap;word-break:break-word}
.hyp-note-view:hover{background:rgba(250,204,21,.12)}
.hyp-note-edit{margin:2px 6px 6px 30px;display:flex;flex-direction:column;gap:6px}
.hyp-note-area{width:100%;resize:vertical;min-height:40px;font:inherit;font-size:11.5px;
  color:var(--tx7);background:var(--o4);border:1px solid var(--o14);
  border-radius:7px;padding:6px 8px;line-height:1.4}
.hyp-note-area:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:var(--o6)}
.hyp-note-actions{display:flex;gap:6px;justify-content:flex-end}
.hyp-note-save,.hyp-note-cancel{font-size:11px;font-weight:600;padding:4px 12px;border-radius:6px;cursor:pointer;border:1px solid}
.hyp-note-save{background:color-mix(in srgb, var(--brand) 18%, transparent);border-color:color-mix(in srgb, var(--brand) 50%, transparent);color:var(--tx8)}
.hyp-note-save:hover{background:color-mix(in srgb, var(--brand) 30%, transparent)}
.hyp-note-cancel{background:transparent;border-color:var(--o14);color:var(--mut1)}
.hyp-note-cancel:hover{color:var(--tx7);border-color:rgba(255,255,255,.3)}

/* ── #8 Diff visuel : marqueur d'hypothèse divergente entre scénarios ── */
.hyp-diff{flex-shrink:0;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:5px;font-size:11px;font-weight:800;cursor:default;line-height:1}
.hyp-diff-only{background:rgba(167,139,250,.16);color:var(--brand-strong);border:1px solid rgba(167,139,250,.4)}
.hyp-diff-vary{background:rgba(251,191,36,.16);color:#fcd34d;border:1px solid rgba(251,191,36,.4)}

/* ── #2 Impact chiffré mesuré : bouton + chip de résultat (Suivi) ── */
.hyp-impact-btn{flex-shrink:0;width:24px;height:22px;border-radius:6px;border:1px solid transparent;
  background:transparent;cursor:pointer;font-size:12px;opacity:.45;transition:.12s;line-height:1}
.hyp-item-wrap:hover .hyp-impact-btn{opacity:.85}
.hyp-impact-btn:hover{opacity:1;background:var(--o6)}
.hyp-impact-btn.done{opacity:1}
.hyp-impact-btn:disabled{cursor:default}
.hyp-impact{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:1px 6px 5px 30px}
.hyp-impact-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;
  color:var(--mut1);background:var(--o5);border-radius:5px;padding:2px 6px}
.hyp-impact-kpi{font-size:10.5px;font-weight:700;border-radius:5px;padding:2px 7px;
  border:1px solid transparent}
.hyp-impact-kpi.pos{color:#5fe0c0;background:rgba(52,184,156,.12);border-color:rgba(52,184,156,.3)}
.hyp-impact-kpi.neg{color:#f0a3a3;background:rgba(220,90,90,.12);border-color:rgba(220,90,90,.3)}

/* Toolbar du StyledFinTree (toggle unité + annuel/mensuel) */
.sft-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:4px 4px 12px;margin-bottom:6px;border-bottom:1px solid var(--o6)}
.sft-toolbar-title{font-size:13px;font-weight:600;color:#fff}
.sft-toolbar-controls{display:flex;align-items:center;gap:10px}

/* ============================================================
   Scrollbars invisibles dans FecLoader + popups + sous-composants
   (le scroll reste fonctionnel, seule la barre est masquée)
   ============================================================ */
.fec-loader, .fec-loader *,
.fec-content, .fec-content *,
.fec-overlay, .fec-overlay *,
.apop, .apop *,
.fintree-modal, .fintree-modal *,
.intent-popup-backdrop, .intent-popup-backdrop * {
    scrollbar-width: none;        /* Firefox */
    -ms-overflow-style: none;     /* IE / vieux Edge */
}
.fec-loader::-webkit-scrollbar, .fec-loader *::-webkit-scrollbar,
.fec-content::-webkit-scrollbar, .fec-content *::-webkit-scrollbar,
.fec-overlay::-webkit-scrollbar, .fec-overlay *::-webkit-scrollbar,
.apop::-webkit-scrollbar, .apop *::-webkit-scrollbar,
.fintree-modal::-webkit-scrollbar, .fintree-modal *::-webkit-scrollbar,
.intent-popup-backdrop::-webkit-scrollbar, .intent-popup-backdrop *::-webkit-scrollbar {
    width: 0;
    height: 0;
    display: none;
}

/* ============================================================
   Scrollbars THÉMATISÉES (défaut global) — couleur du thème (tertiary) + transparence.
   Style discret : piste invisible, pouce teal translucide qui s'opacifie au survol.
   Les conteneurs « invisibles » ci-dessus l'emportent (sélecteurs plus spécifiques) → inchangés.
   ============================================================ */
* {
    scrollbar-width: thin;                                                          /* Firefox */
    scrollbar-color: color-mix(in srgb, var(--mud-palette-primary) 45%, transparent) transparent;
}
*::-webkit-scrollbar { width: 7px; height: 7px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--mud-palette-primary) 40%, transparent);
    border-radius: 999px;
    border: 1.5px solid transparent;        /* marge → pouce affiné, piste « respirante » */
    background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--mud-palette-primary) 64%, transparent);
    background-clip: padding-box;
}
*::-webkit-scrollbar-corner { background: transparent; }
/* Sélection de texte teintée marque (les 2 thèmes) — touche de finition */
::selection { background: color-mix(in srgb, var(--mud-palette-primary) 26%, transparent); }
::-moz-selection { background: color-mix(in srgb, var(--mud-palette-primary) 26%, transparent); }
/* Icône SVG du toggle thème (soleil/lune line) — hérite la couleur du bouton (currentColor) */
.theme-ico { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; display: block; flex: 0 0 auto; }

/* ─── Finitions « pro » (les 2 thèmes sauf indication) ─── */
/* Focus CLAVIER uniquement : anneau teal cohérent (accessibilité), pas à la souris.
   tabindex="0" SEULEMENT (pas [tabindex] global) → exclut les conteneurs tabindex="-1"
   focalisés PAR PROGRAMME au chargement (sinon un cadre teal apparaît autour du contenu/titre). */
button:focus-visible, a:focus-visible, [role="button"]:focus-visible, [tabindex="0"]:focus-visible,
input:focus-visible, select:focus-visible, .custom-dropdown-trigger:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--mud-palette-primary) 75%, transparent);
    outline-offset: 2px;
}
/* Scrollbar neutre en mode clair (le teal global est trop tape-à-l'œil sur blanc) */
html[data-theme="light"] *::-webkit-scrollbar-thumb { background: rgba(15, 30, 45, .22); }
html[data-theme="light"] *::-webkit-scrollbar-thumb:hover { background: rgba(15, 30, 45, .34); }
/* Glows : pas de halo teal autour des gros chiffres hero sur blanc (override global > <style> inline) */
html[data-theme="light"] .tcl-hero-amount,
html[data-theme="light"] .rl-hero-amount,
html[data-theme="light"] .vl3-hero-amount,
html[data-theme="light"] .anafi-launch-title { text-shadow: none; }
/* Profondeur : cartes Overview translucides → hairline + élévation douce sur le fond off-white */
html[data-theme="light"] .overview-card,
html[data-theme="light"] .overview-chart-card {
    border-color: rgba(15, 30, 45, .08);
    box-shadow: 0 1px 3px rgba(15, 30, 45, .05), 0 10px 26px rgba(15, 30, 45, .05);
}
/* Profondeur : cartes plates (hub, RhDashboard) — ombre douce AJOUTÉE en clair (en sombre elles restent plates, inchangées) */
html[data-theme="light"] .intent-card,
html[data-theme="light"] .intent-card-banner,
html[data-theme="light"] .rhd-card {
    box-shadow: 0 1px 3px rgba(15, 30, 45, .05), 0 8px 22px rgba(15, 30, 45, .05);
}

/* Ciblage EXPLICITE des conteneurs scrollables de l'Analyste IA : le sélecteur universel
   « *::-webkit-scrollbar » est ignoré par certains navigateurs → on garantit le thème ici. */
.ai-run-scroll, .aim-right, .aim-left-scroll, .ai-run-body {
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--mud-palette-primary) 45%, transparent) transparent;
}
.ai-run-scroll::-webkit-scrollbar, .aim-right::-webkit-scrollbar, .aim-left-scroll::-webkit-scrollbar, .ai-run-body::-webkit-scrollbar { width: 6px; height: 6px; }
.ai-run-scroll::-webkit-scrollbar-track, .aim-right::-webkit-scrollbar-track, .aim-left-scroll::-webkit-scrollbar-track, .ai-run-body::-webkit-scrollbar-track { background: transparent; }
.ai-run-scroll::-webkit-scrollbar-thumb, .aim-right::-webkit-scrollbar-thumb, .aim-left-scroll::-webkit-scrollbar-thumb, .ai-run-body::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--mud-palette-primary) 42%, transparent);
    border-radius: 999px;
}
.ai-run-scroll::-webkit-scrollbar-thumb:hover, .aim-right::-webkit-scrollbar-thumb:hover, .aim-left-scroll::-webkit-scrollbar-thumb:hover, .ai-run-body::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--mud-palette-primary) 65%, transparent);
}

/* Rangée 2 colonnes (comme .intent-banners-row) pour Analyses + Cession */
/* margin-top négatif pour contrer le gap:20px de .intent-zone (réduit l'écart bannières ↔ analyses) */
.intent-analyses-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%;max-width:1100px;margin-top:-12px}
.intent-analyses-row .intent-analyses-btn{margin-top:0;max-width:none}
@media(max-width:640px){.intent-analyses-row{grid-template-columns:1fr}}

.intent-analyses-btn{position:relative;display:flex;align-items:center;gap:12px;width:100%;max-width:1100px;box-sizing:border-box;
  text-align:left;cursor:pointer;
  background:linear-gradient(100deg,color-mix(in srgb, var(--brand) 12%, transparent),rgba(58,123,213,.10));
  border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);border-radius:12px;padding:12px 16px;margin-top:8px;
  color:var(--color-text-primary);font-family:var(--font-family);transition:.15s}
.intent-analyses-btn:hover{border-color:color-mix(in srgb, var(--brand) 55%, transparent);transform:translateY(-1px)}
.intent-analyses-btn-icon{font-size:20px;flex-shrink:0}
.intent-analyses-btn-text{flex:1;font-size:14px;font-weight:600;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.intent-analyses-btn-sub{font-size:11.5px;font-weight:400;color:var(--color-text-muted)}
.intent-analyses-btn-cta{font-size:12.5px;font-weight:600;color:var(--an-teal);white-space:nowrap;flex-shrink:0}

/* Chip « N vues » + « ? » côte à côte */
.intent-chip-row{display:flex;align-items:center;gap:7px}
.intent-views-chip{font-size:10.5px;font-weight:600;color:var(--tx8);background:color-mix(in srgb, var(--brand) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 32%, transparent);border-radius:999px;padding:2px 9px;line-height:1.5}
.intent-banking-btn .intent-views-chip{color:#7fb0ef;background:rgba(58,123,213,.14);border-color:rgba(58,123,213,.32)}
.intent-cession-btn .intent-views-chip{color:#b7a3ef;background:rgba(122,92,208,.14);border-color:rgba(122,92,208,.32)}

/* Icône « ? » (à côté du chip) — le tooltip est désormais un MudTooltip stylisé (.hyp-mud-tip, Placement.Top),
   qui s'affiche EN HAUT et au-dessus de tout (popover hors overflow). L'ancien .intent-tip CSS (en bas) est retiré. */
.intent-help{display:inline-flex;width:17px;height:17px;border-radius:50%;flex-shrink:0;
  border:1px solid var(--o22);background:var(--o5);color:var(--color-text-muted);
  font-size:10.5px;font-weight:700;align-items:center;justify-content:center;cursor:help;transition:.15s}
.intent-help:hover,.intent-help:focus{color:#fff;border-color:color-mix(in srgb, var(--brand) 60%, transparent);background:color-mix(in srgb, var(--brand) 18%, transparent);outline:none}
/* Les MudTooltip injectés DANS le flux (chip row des cards analyses / sous-texte de la card relance)
   ne doivent pas casser l'alignement inline du wrapper .mud-tooltip-root. */
.intent-chip-row .mud-tooltip-root{display:inline-flex;align-items:center}
.intent-card-banner-sub .mud-tooltip-root{display:inline}

@media(max-width:680px){
  .an-wf{height:170px}
  .an-row{grid-template-columns:120px 1fr 64px 52px}
  .an-big{font-size:28px}
}

/* ── Compte léger (magic-link) — AccountModal ─────────────────────────────── */
.acct-backdrop{position:fixed;inset:0;z-index:5690;background:rgba(4,14,20,.62);backdrop-filter:blur(3px)}
.acct-modal{position:fixed;z-index:5700;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(420px,92vw);box-sizing:border-box;
  background:radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--brand) 10%, var(--surf-3)) 0%, var(--surf-3) 68%);
  border:1px solid var(--o9);border-radius:16px;padding:26px 26px 20px;
  box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));color:#dceaf0;text-align:left}
.acct-x{position:absolute;top:12px;right:14px;background:none;border:0;color:#6e8696;font-size:16px;cursor:pointer;line-height:1;padding:4px}
.acct-x:hover{color:var(--tx4)}
.acct-sent-ic{font-size:34px;margin-bottom:6px}
.acct-title{font-size:19px;font-weight:800;color:var(--tx1);margin:0 0 6px}
.acct-sub{font-size:13.5px;line-height:1.55;color:var(--mut2);margin:0 0 16px}
.acct-in{width:100%;box-sizing:border-box;margin-bottom:10px;padding:11px 13px;
  background:color-mix(in srgb, var(--brand) 14%, #06141d);border:1px solid var(--o12);border-radius:10px;
  color:var(--tx1);font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s}
.acct-in::placeholder{color:#5c7787}
.acct-in:focus{border-color:var(--txt-teal);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent)}
.acct-err{color:#ff9a8a;font-size:12.5px;margin:2px 0 10px}
.acct-go{width:100%;margin-top:6px;padding:12px 16px;border:0;border-radius:10px;
  background:var(--brand);color:var(--surf-1);font-weight:700;font-size:14px;cursor:pointer;transition:filter .15s,opacity .15s}
.acct-go:hover:not(:disabled){filter:brightness(1.06)}
.acct-go:disabled{opacity:.5;cursor:not-allowed}
.acct-go-ghost{background:transparent;border:1px solid var(--o16);color:#bcd3de;font-weight:600;margin-top:14px}
.acct-go-ghost:hover:not(:disabled){background:var(--o5);filter:none}
.acct-fine{font-size:11px;color:#64748b;margin:11px 0 0;text-align:center}
.acct-skip{display:block;margin:12px auto 0;background:none;border:0;color:var(--mut6);font-size:12.5px;cursor:pointer;padding:4px}
.acct-skip:hover{color:var(--tx4);text-decoration:underline}
/* Incentive « 40 crédits IKU offerts » dans le modal de capture email */
.acct-perk{display:flex;align-items:center;gap:9px;margin:0 0 15px;padding:10px 12px;border-radius:10px;
  background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);color:var(--tx4);font-size:13px}
.acct-perk b{color:var(--tx1)}
.acct-perk-ic{color:var(--txt-teal);font-size:15px;flex:0 0 auto}
/* Light : AccountModal — la carte flippe (var(--surf-3)) mais inputs/CTA/textes codés en dur
   restaient sombres ou clairs (illisibles) sur la carte claire. */
html[data-theme="light"] .acct-modal{color:var(--color-text-primary,#10243a)}
html[data-theme="light"] .acct-in{background:#fff;border-color:#d0d9e2;color:var(--color-text-primary,#10243a)}
html[data-theme="light"] .acct-in::placeholder{color:#94a3b8}
html[data-theme="light"] .acct-go{color:#06222b}
html[data-theme="light"] .acct-go-ghost{color:var(--color-text-secondary,#3a5563)}
html[data-theme="light"] .acct-err{color:#dc2626}
/* Chip année (dernier exercice chargé) à droite de la valeur top clients */
.intent-card-data-valrow{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}
.intent-year-chip{flex:0 0 auto;font-size:11px;font-weight:700;color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);padding:2px 9px;border-radius:999px;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.5}
/* Toggle des 3 derniers exercices dans la card « Mon portefeuille clients » (switch ⇒ recalcule la card). */
.intent-year-toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:999px;background:color-mix(in srgb, var(--brand) 6%, transparent);border:1px solid color-mix(in srgb, var(--brand) 20%, transparent)}
.intent-year-opt{font-size:10.5px;font-weight:700;color:color-mix(in srgb, var(--brand) 50%, #8aa0ad);padding:2px 8px;border-radius:999px;cursor:pointer;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.5;transition:color .12s,background .12s}
.intent-year-opt:hover{color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 12%, transparent)}
.intent-year-opt.on{color:#fff;background:var(--brand);box-shadow:0 1px 6px color-mix(in srgb, var(--brand) calc(40% * var(--glow-mul)), transparent)}
/* Exercice EN COURS (provisoire / atterrissage) : teinte ambre → relève du prévisionnel, données partielles. */
.intent-year-opt.prov{color:#e9b96b}
.intent-year-opt.prov:hover{color:#fbe0a6;background:rgba(234,179,8,.12)}
.intent-year-opt.prov.on{color:#3a2a08;background:#f1c45f;box-shadow:0 1px 6px rgba(234,179,8,.45)}
/* « ? » d'aide « atterrissage » dans le contexte de la card top-clients (évite de pousser une 2e ligne). */
.intent-prov-help{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:5px;border-radius:50%;font-size:9px;font-weight:800;line-height:1;color:#e9b96b;background:rgba(234,179,8,.14);border:1px solid rgba(234,179,8,.42);cursor:help;vertical-align:middle}
.intent-prov-help:hover{color:#fbe0a6;background:rgba(234,179,8,.22)}
/* Mini-chart concentration clients (intent card) — Top 5/10/20 cumulés */
.intent-conc{display:flex;flex-direction:column;gap:10px;margin:6px 0 2px;width:100%;align-self:stretch}
.intent-conc-row{display:flex;align-items:center;gap:10px;font-size:11px;line-height:1;width:100%}
.intent-conc-lbl{flex:0 0 42px;color:var(--mut2);font-weight:600}
.intent-conc-track{position:relative;flex:1;height:9px;border-radius:5px;background:rgba(148,163,184,.22);overflow:hidden;box-shadow:inset 0 0 0 1px rgba(148,163,184,.10)}
/* Marqueur de PROJECTION (N+1) sur la barre : fine ligne verticale subtile « voici où ça va ». */
.intent-conc-tick{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:rgba(255,255,255,.55);box-shadow:0 0 4px rgba(255,255,255,.45);border-radius:1px;pointer-events:none}
.intent-conc-fill{height:100%;border-radius:5px;min-width:4px;background:linear-gradient(90deg, var(--brand), color-mix(in srgb, var(--brand) 60%, #ffffff));box-shadow:0 0 8px color-mix(in srgb, var(--brand) calc(45% * var(--glow-mul)), transparent);transition:width .6s ease}
/* Couleurs distinctes par strate (Top 5 / 10 / 20) : teal → indigo → violet (gradation lisible de la concentration). */
/* Multi-palette : Top 5 = palette[0] (--brand), Top 10 = palette[1] (--brand2), Top 20 = palette[2] (--brand3).
   Chaque barre = sa couleur → version éclaircie (color-mix +#fff). 3 teintes distinctes qui suivent la palette. */
.intent-conc-fill-5{background:linear-gradient(90deg, var(--brand), color-mix(in srgb, var(--brand) 60%, #ffffff));box-shadow:0 0 8px color-mix(in srgb, var(--brand) calc(45% * var(--glow-mul)), transparent)}
.intent-conc-fill-10{background:linear-gradient(90deg, var(--brand2), color-mix(in srgb, var(--brand2) 60%, #ffffff));box-shadow:0 0 8px color-mix(in srgb, var(--brand2) 42%, transparent)}
.intent-conc-fill-20{background:linear-gradient(90deg, var(--brand3), color-mix(in srgb, var(--brand3) 60%, #ffffff));box-shadow:0 0 8px color-mix(in srgb, var(--brand3) 42%, transparent)}
.intent-conc-val{flex:0 0 34px;text-align:right;font-weight:700;color:var(--tx1);font-variant-numeric:tabular-nums}
/* Valeur PROJETÉE (N+1) à droite du % actuel : subtile, colorée par sens (baisse=vert / hausse=ambre / stable=gris). */
.intent-conc-fc{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;cursor:help;opacity:.9}
.intent-conc-fc.fc-down{color:#34d399}
.intent-conc-fc.fc-up{color:var(--st-amber)}
.intent-conc-fc.fc-flat{color:#80949f}
/* Tunnel Inflow — bandeau de marque partenaire (pill haut-centre sur la page d'atterrissage du prospect). */
.inflow-brandbar{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:1400;display:inline-flex;align-items:center;gap:11px;
  max-width:min(92vw,520px);padding:8px 16px;border-radius:999px;background:var(--gl92);backdrop-filter:blur(10px) saturate(160%);
  border:1px solid color-mix(in srgb, var(--mud-palette-primary) 28%, var(--o10));box-shadow:0 10px 28px rgba(var(--shadow-col),calc(.4 * var(--shadow-mul)))}
.inflow-brandbar-logo{height:30px;max-width:150px;object-fit:contain;flex:0 0 auto}
.inflow-brandbar-badge{font-size:22px;flex:0 0 auto}
.inflow-brandbar-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.inflow-brandbar-name{font-size:13.5px;font-weight:800;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inflow-brandbar-base{font-size:11px;color:var(--mut2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Tunnel Inflow — bandeau GATE (pré-gate) : barre fixe basse « débloquez tout par email ». */
.inflow-gate-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:1400;display:flex;align-items:center;gap:18px;
  max-width:min(94vw,720px);padding:12px 14px 12px 20px;border-radius:16px;background:linear-gradient(135deg,var(--gl97),var(--gd97));
  border:1px solid color-mix(in srgb, var(--mud-palette-primary) 38%, var(--o12));box-shadow:0 18px 48px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)))}
.inflow-gate-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.inflow-gate-txt b{font-size:14px;color:var(--tx1)}
.inflow-gate-txt span{font-size:11.5px;color:var(--mut2)}
.inflow-gate-cta{flex:0 0 auto;cursor:pointer;font-size:13px;font-weight:800;color:#04141a;white-space:nowrap;
  background:var(--mud-palette-primary);border:none;border-radius:999px;padding:10px 18px;transition:filter .14s,transform .14s}
.inflow-gate-cta:hover{filter:brightness(1.08);transform:translateY(-1px)}
@media(max-width:560px){.inflow-gate-bar{flex-direction:column;align-items:stretch;gap:10px;left:8px;right:8px;transform:none;max-width:none}.inflow-gate-cta{width:100%}}

/* COACH onboarding (démo / 3 premières fois) : pulse d'attention sur les cartes + carte pilotage mise en avant + bandeau d'aide. */
@keyframes coach-bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-3px)}}
/* PAS de pulse ANIMÉ sur les cartes : `animation:coach-pulse` écrasait l'`intentCardFadeIn` de base → au retrait de
   `coach-on` (clic « J'ai compris ») la propriété `animation` rebasculait sur le fade-in qui se relançait (cartes qui
   disparaissent/réapparaissent). On ne touche plus à `animation` ; repère STATIQUE (anneau + halo, transitionné en
   douceur via le `transition:all` de la carte) sur la carte pilotage + le flag.
   overflow:visible → le flag (top:-14px) n'est PAS rogné par l'overflow:hidden de base de la carte. */
.coach-on .intent-card.coach-hero{position:relative;overflow:visible;box-shadow:0 0 0 2px color-mix(in srgb, var(--mud-palette-primary) 48%, transparent),0 0 28px color-mix(in srgb, var(--mud-palette-primary) 24%, transparent)}
.coach-flag{position:absolute;top:-14px;left:50%;transform:translateX(-50%);z-index:6;white-space:nowrap;
  font-size:11px;font-weight:800;color:#04141a;background:var(--mud-palette-primary);border-radius:999px;padding:4px 12px;
  box-shadow:0 6px 18px color-mix(in srgb, var(--mud-palette-primary) 40%, transparent);animation:coach-bob 1.5s ease-in-out infinite;pointer-events:none}
.coach-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:1390;display:flex;align-items:center;gap:14px;
  max-width:min(94vw,640px);padding:11px 14px 11px 18px;border-radius:16px;
  background:linear-gradient(135deg,var(--gl97),var(--gd97));
  /* Verre dépoli : le bandeau non-modal flotte au-dessus des cartes du bas → on floute ce qui transparaît pour un rendu net. */
  backdrop-filter:blur(16px) saturate(1.35);-webkit-backdrop-filter:blur(16px) saturate(1.35);
  border:1px solid color-mix(in srgb, var(--mud-palette-primary) 34%, var(--o12));box-shadow:0 16px 44px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)))}
.coach-bar-ic{font-size:22px;flex:0 0 auto}
.coach-bar-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.coach-bar-txt b{font-size:13.5px;color:var(--tx1)}
.coach-bar-txt span{font-size:11.5px;color:var(--mut2)}
.coach-bar-txt span b{color:var(--tx6);font-size:inherit}
.coach-bar-ok{flex:0 0 auto;cursor:pointer;font-size:12px;font-weight:700;color:var(--tx6);background:var(--o6);border:1px solid var(--o16);border-radius:999px;padding:7px 14px;transition:.14s}
.coach-bar-ok:hover{color:#fff;background:var(--o12)}
.coach-bar-ghost{flex:0 0 auto;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--mut2);background:transparent;border:1px solid transparent;border-radius:999px;padding:7px 10px;transition:.14s}
.coach-bar-ghost:hover{color:var(--tx1);background:var(--o6)}
/* Dans le pilotage : le bandeau passe AU-DESSUS du popup FinTreePopup (modals ≤ 5600 ; portail dropdown = 6000). */
.coach-bar-over{z-index:5800;border-color:color-mix(in srgb, var(--mud-palette-primary) 48%, var(--o12))}
@media(max-width:560px){.coach-bar{flex-direction:column;align-items:stretch;left:8px;right:8px;transform:none;max-width:none}.coach-bar-ok,.coach-bar-ghost{width:100%}}
@media (prefers-reduced-motion:reduce){.coach-flag{animation:none}}

/* ════════════════════════ VISITE GUIDÉE (tour interactif) ════════════════════════ */
/* Surbrillance de la cible via OUTLINE (suit le border-radius propre de l'élément, NON rognée par overflow:hidden,
   visible aussi dans les popups) + halo statique. AUCUNE `animation` sur la cible → zéro conflit avec ses transitions. */
.tour-glow{outline:3px solid #f59e0b !important;outline-offset:3px;
  box-shadow:0 0 0 5px rgba(245,158,11,.18),0 12px 36px rgba(245,158,11,.28) !important;position:relative;z-index:5}
/* Flèche IntentPopup en mode visite : pulse d'appel (un bouton tolère l'animation, pas de fade d'entrée à écraser). */
.intent-popup-arrow.tour-arrow-live{animation:tourArrowPulse 1.2s ease-in-out infinite;border-color:#f59e0b !important;color:#fff !important}
@keyframes tourArrowPulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.55)}70%{box-shadow:0 0 0 11px rgba(245,158,11,0)}}

/* Bandeau guide en bas (synchronisé avec l'étape : dots de progression + n°, texte, Précédent/Suivant). */
/* Bandeau de visite guidée : 3 rangées EMPILÉES (en-tête / narration pleine largeur / actions).
   La narration n'est plus jamais compressée par les boutons → fini le « un mot par ligne ». */
.tour-bar {
    position: fixed;
    left: 50%;
    bottom: 18px;
    transform: translateX(-50%);
    z-index: 1395;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 9px;
    width: min(94vw, 760px);
    padding: 13px 17px 14px;
    border-radius: 18px;
    background: linear-gradient(135deg, var(--gl60), var(--gd80));
    border: 1px solid color-mix(in srgb, var(--mud-palette-primary) 36%, rgba(255, 255, 255, .12));
    box-shadow: 0 20px 56px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)));
    backdrop-filter: blur(25px) contrast(.8);
}
/* Au-dessus des popups (aperçu IntentPopup / pilotage FinTreePopup ≤ 5600 ; portail dropdown 6000). */
.tour-bar-over{z-index:5900;border-color:#f59e0b}
/* Rangée 1 : badge n° + titre + pager à gauche ; thème + croix poussés à droite par le spacer. */
.tour-bar-head{display:flex;align-items:center;gap:10px}
.tour-bar-step{flex:0 0 auto;font-size:16px;font-weight:800;color:#f59e0b;font-variant-numeric:tabular-nums;line-height:1}
.tour-bar-step small{font-size:10.5px;color:var(--mut3);font-weight:600}
.tour-bar-title{font-size:14.5px;font-weight:800;color:var(--tx1);letter-spacing:-.01em;line-height:1.15;white-space:nowrap}
.tour-bar-progress{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.tour-dot{width:7px;height:7px;border-radius:50%;background:var(--o16);transition:.2s}
.tour-dot.done{background:color-mix(in srgb, var(--mud-palette-primary) 60%, transparent)}
.tour-dot.on{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.18);transform:scale(1.25)}
.tour-bar-spacer{flex:1 1 auto;min-width:6px}
.tour-theme-btn,.tour-bar-close{flex:0 0 auto;cursor:pointer;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:.15s}
.tour-theme-btn{background:var(--o6);border:1px solid var(--o14);color:var(--mut2)}
.tour-theme-btn:hover{color:var(--tx1);background:var(--o12);border-color:var(--o22)}
.tour-bar-close{color:var(--mut3);font-size:13px;line-height:1;background:var(--o5);border:1px solid var(--o12)}
.tour-bar-close:hover{color:#fff;background:var(--o12);border-color:var(--o22)}
/* Rangée 2 : narration pleine largeur. */
.tour-bar-txt{font-size:12px;color:var(--mut2);line-height:1.5}
.tour-bar-txt b{color:#ffe2b0;font-weight:700}
/* Rangée 3 : zone d'actions démo (gauche) + navigation (droite). */
.tour-bar-foot{display:flex;align-items:center;gap:10px}
.tour-bar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.gtour-btn{cursor:pointer;font-size:12px;font-weight:700;border-radius:999px;padding:8px 15px;transition:.14s;white-space:nowrap;border:1px solid transparent}
.gtour-btn.ghost{color:var(--tx6);background:var(--o6);border-color:var(--o16)}
.gtour-btn.ghost:hover{color:#fff;background:var(--o12)}
.gtour-btn.primary{color:#04141a;background:#f59e0b;box-shadow:0 6px 18px rgba(245,158,11,.32)}
.gtour-btn.primary:hover{background:#fbbf24}
/* Visite guidée : zone d'actions interactives (choc CA, client/secteur suivant, lancer le diagnostic). */
.tour-demo{display:flex;align-items:center;gap:7px;flex:1 1 auto;flex-wrap:wrap;min-width:0}
.tour-demo-lbl{font-size:10px;font-weight:800;color:var(--mut3);text-transform:uppercase;letter-spacing:.05em}
.tour-demo-btn{cursor:pointer;font-size:11.5px;font-weight:700;white-space:nowrap;border-radius:999px;padding:6px 12px;transition:.14s;color:var(--tx1);background:var(--o6);border:1px solid var(--o16)}
.tour-demo-btn:hover{background:var(--o12);border-color:var(--o22);transform:translateY(-1px)}
.tour-demo-btn.up{color:#5DCAA5;border-color:rgba(93,202,165,.42);background:rgba(93,202,165,.12)}
.tour-demo-btn.up:hover{background:rgba(93,202,165,.2)}
.tour-demo-btn.down{color:#F09595;border-color:rgba(240,149,149,.42);background:rgba(240,149,149,.12)}
.tour-demo-btn.down:hover{background:rgba(240,149,149,.2)}
.tour-demo-btn.ghost{padding:6px 10px;color:var(--mut2)}
/* Badge du niveau de choc CA cumulé (ex. « +30 % »). */
.tour-demo-level{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;padding:4px 9px;border-radius:999px;white-space:nowrap}
.tour-demo-level.up{color:#5DCAA5;background:rgba(93,202,165,.16);border:1px solid rgba(93,202,165,.4)}
.tour-demo-level.down{color:#F09595;background:rgba(240,149,149,.16);border:1px solid rgba(240,149,149,.4)}
.tour-demo-btn.run{color:#04141a;background:#f59e0b;border-color:#f59e0b;box-shadow:0 4px 14px rgba(245,158,11,.3)}
.tour-demo-btn.run:hover{background:#fbbf24;transform:translateY(-1px)}
@media(max-width:620px){.tour-bar{left:8px;right:8px;transform:none;width:auto}
  .tour-bar-title{white-space:normal}
  .tour-bar-foot{flex-wrap:wrap}
  .tour-demo{flex:1 1 100%}
  .tour-bar-actions{flex:1 1 auto;justify-content:flex-end}}
@media (prefers-reduced-motion:reduce){.tour-demo-btn:hover,.tour-demo-btn.run:hover{transform:none}}
@media (prefers-reduced-motion:reduce){.intent-popup-arrow.tour-arrow-live{animation:none}.tour-dot.on{box-shadow:none}}

/* Bouton « Visite guidée » du bandeau hub (recap-bar). */
.recap-tour-btn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px;font-weight:600;
  color:#cfe7ef;background:var(--o5);border:1px solid var(--o14);border-radius:999px;padding:7px 14px;transition:.14s}
.recap-tour-btn:hover{color:#fff;background:color-mix(in srgb, var(--mud-palette-primary) 22%, var(--o5));border-color:color-mix(in srgb, var(--mud-palette-primary) 50%, transparent)}
/* Light : le #fff du hover était illisible sur le fond teal pâle → texte foncé (override plus spécifique, gagne quel que soit l'ordre de chargement vs la règle de FecLoader). */
html[data-theme="light"] .recap-tour-btn:hover{color:var(--tx1)}
.recap-tour-ic{font-size:14px}
@media(max-width:560px){.recap-tour-lbl{display:none}.recap-tour-btn{padding:7px 10px}}

/* ── Modal de CHOIX du format de livrable (parcours live vs rapport dynamique) ── */
.share-kind-back{position:fixed;inset:0;z-index:4260;background:rgba(6,12,18,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:3vmin}
.share-kind-modal{width:min(940px,96vw);background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.12));border-radius:16px;padding:20px 22px;box-shadow:0 36px 80px -28px rgba(0,0,0,.7)}
[data-theme=light] .share-kind-modal{background:#fff}
.share-kind-h{display:flex;align-items:center;justify-content:space-between;font-size:17px;font-weight:800;color:var(--tx1,#e8eef2)}
.share-kind-x{border:none;background:transparent;color:var(--mut2,#9aa7b0);font-size:16px;cursor:pointer}
.share-kind-sub{margin:6px 0 14px;font-size:12.5px;color:var(--mut1,#9bb3bd);line-height:1.5}
.share-kind-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}
/* --kc = couleur d'identité de la carte (posée en inline : brand pour le live, violet pour le rapport) */
.share-kind-card{display:flex;flex-direction:column;gap:7px;text-align:left;padding:16px 18px;border-radius:14px;cursor:pointer;color:inherit;transition:.14s;
  background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 5%,transparent);border:1px solid color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 24%,transparent)}
.share-kind-card:hover:not(:disabled){background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 12%,transparent);border-color:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 50%,transparent);transform:translateY(-2px)}
.share-kind-card:disabled{opacity:.5;cursor:default}
.share-kind-reco{box-shadow:0 0 0 1px color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 32%,transparent)}
/* En-tête de carte : icône À GAUCHE + à sa droite le titre et le badge (libellé du format) EMPILÉS. */
.share-kind-head{display:flex;flex-direction:row;align-items:center;gap:12px;margin-bottom:2px}
.share-kind-ic{flex-shrink:0;width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:25px;line-height:1;
  background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 14%,transparent);border:1px solid color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 30%,transparent)}
.share-kind-titlewrap{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.share-kind-t{font-size:16px;font-weight:800;color:var(--tx1,#e8eef2);display:flex;align-items:center;gap:7px}
.share-kind-badge{font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--kc,var(--brand,#00B1CF));border-radius:99px;padding:3px 9px;white-space:nowrap}
.share-kind-when{font-size:11.5px;line-height:1.45;color:var(--tx2,#c8d3da);background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 9%,transparent);border-left:2px solid var(--kc,var(--brand,#00B1CF));padding:6px 9px;border-radius:0 7px 7px 0}
.share-kind-when b{color:var(--kc,var(--brand,#00B1CF))}
.share-kind-d{font-size:12px;line-height:1.5;color:var(--tx2,#c8d3da)}
.share-kind-pts{margin:2px 0 0;padding-left:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;align-items:start;font-size:11.5px;line-height:1.35;color:var(--mut1,#9bb3bd)}
.share-kind-pts b{color:var(--tx1,#e8eef2)}
.share-kind-pts i{color:var(--mut2,#9aa7b0);font-style:italic}
/* « Idéal pour » : libellé AU-DESSUS, puis rangée de chips sur UNE seule ligne (jamais de retour à la ligne).
   La rangée défile horizontalement en sécurité si jamais ça déborde (scrollbar masquée). */
.share-kind-who{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-top:auto;padding-top:10px;border-top:1px solid var(--o8,rgba(255,255,255,.1))}
.share-kind-wholbl{font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--mut2,#9aa7b0)}
.share-kind-chiprow{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.share-kind-chiprow::-webkit-scrollbar{display:none}
.share-kind-chip{flex-shrink:0;font-size:10px;font-weight:700;color:var(--tx2,#c8d3da);background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 10%,transparent);border:1px solid color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 28%,transparent);border-radius:99px;padding:3px 7px;white-space:nowrap}
.share-kind-chip.is-act{cursor:pointer;transition:.12s}
.share-kind-chip.is-act:hover{color:var(--kc,var(--brand,#00B1CF));background:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 20%,transparent);border-color:color-mix(in srgb,var(--kc,var(--brand,#00B1CF)) 55%,transparent);transform:translateY(-1px)}
.share-kind-chip.is-act:focus-visible{outline:2px solid var(--kc,var(--brand,#00B1CF));outline-offset:1px}
.share-kind-go{margin-top:10px;font-size:12.5px;font-weight:800;color:var(--kc,var(--brand,#00B1CF))}
@media(max-width:680px){.share-kind-cards{grid-template-columns:1fr}.share-kind-pts{grid-template-columns:1fr}}

/* DÉMO — modal de choix de parcours (Visite rapide / Visite expert), affiché à la révélation des chiffres d'exemple. */
.demo-choice-backdrop{position:fixed;inset:0;z-index:6000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(6,12,18,.62);backdrop-filter:blur(6px);animation:dcFade .2s ease}
.demo-choice{position:relative;width:min(94vw,620px);padding:30px 28px 22px;border-radius:22px;background:linear-gradient(135deg,var(--gl60),var(--gd80));border:1px solid color-mix(in srgb,var(--mud-palette-primary) 34%,rgba(255,255,255,.12));box-shadow:0 30px 80px rgba(var(--shadow-col),calc(.6*var(--shadow-mul)));backdrop-filter:blur(28px) contrast(.85);text-align:center;animation:dcPop .25s cubic-bezier(.2,.9,.3,1.2)}
.demo-choice-close{position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--mut3);font-size:13px;background:var(--o5);border:1px solid var(--o12);transition:.14s}
.demo-choice-close:hover{color:#fff;background:var(--o12);border-color:var(--o22)}
.demo-choice-eyebrow{font-size:11px;font-weight:700;letter-spacing:.04em;color:color-mix(in srgb,var(--mud-palette-primary) 70%,var(--tx1))}
.demo-choice-title{margin:8px 0 20px;font-size:21px;font-weight:800;color:var(--tx1);letter-spacing:-.01em;line-height:1.2}
.demo-choice-cards{display:flex;gap:14px;text-align:left}
.demo-choice-card{position:relative;flex:1 1 0;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:18px 16px 16px;border-radius:16px;background:var(--o6);border:1px solid var(--o14);transition:.16s}
.demo-choice-card:hover{transform:translateY(-2px);background:var(--o12);border-color:var(--o22)}
.demo-choice-card.primary{border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent);background:color-mix(in srgb,var(--mud-palette-primary) 12%,var(--o6))}
.demo-choice-card.primary:hover{background:color-mix(in srgb,var(--mud-palette-primary) 18%,var(--o6))}
.dcc-ico{font-size:26px;line-height:1}
.dcc-title{font-size:15px;font-weight:800;color:var(--tx1)}
.dcc-desc{font-size:12px;line-height:1.5;color:var(--mut2)}
.dcc-badge{position:absolute;top:-9px;right:12px;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#04141a;background:#f59e0b;border-radius:999px;padding:3px 9px;box-shadow:0 4px 12px rgba(245,158,11,.35)}
.demo-choice-skip{margin-top:18px;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--mut2);background:none;border:none;transition:.14s}
.demo-choice-skip:hover{color:var(--tx1)}
@keyframes dcFade{from{opacity:0}to{opacity:1}}
@keyframes dcPop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:560px){.demo-choice-cards{flex-direction:column}}
@media (prefers-reduced-motion:reduce){.demo-choice-backdrop,.demo-choice{animation:none}.demo-choice-card:hover{transform:none}}

/* ── StressTestPanel (composant réutilisable : CA / marge / BFR) — mode docké OU flyout draggable ── */
.stresspanel{display:flex;flex-direction:column}
.stresspanel-dock{background:var(--o4);border:1px solid var(--o12);border-radius:14px;padding:12px}
.stresspanel-flyout{position:fixed;top:84px;right:24px;width:248px;z-index:6200;border-radius:14px;padding:0 0 12px;background:linear-gradient(135deg,var(--gl60),var(--gd80));border:1px solid color-mix(in srgb,var(--mud-palette-primary) 30%,rgba(255,255,255,.12));box-shadow:0 24px 64px rgba(var(--shadow-col),calc(.55*var(--shadow-mul)));backdrop-filter:blur(26px) contrast(.85)}
.stresspanel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;cursor:move;border-bottom:1px solid var(--o12);touch-action:none}
.stresspanel-title{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:800;color:var(--tx1)}
.sp-dock-title{padding:0 2px 12px}
.sp-ico{font-size:14px}
.stresspanel-close{cursor:pointer;width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--mut3);font-size:12px;background:var(--o5);border:1px solid var(--o12);transition:.14s}
.stresspanel-close:hover{color:#fff;background:var(--o12);border-color:var(--o22)}
.stresspanel-flyout .stresspanel-body{padding:12px 12px 0}
.stresspanel-body{display:flex;flex-direction:column;gap:13px}
.sp-section{display:flex;flex-direction:column;gap:7px}
.sp-lbl{font-size:10px;font-weight:800;color:var(--mut3);text-transform:uppercase;letter-spacing:.05em}
.sp-row2{display:flex;gap:7px}
.sp-btn{flex:1;cursor:pointer;text-align:center;font-size:12px;font-weight:700;border-radius:9px;padding:8px 0;transition:.14s;border:1px solid var(--o16);background:var(--o6);color:var(--tx1);white-space:nowrap}
.sp-btn:hover{transform:translateY(-1px)}
.sp-btn:disabled{opacity:.32;cursor:not-allowed;transform:none;pointer-events:none}   /* butée atteinte (CA ±, marge ±) → bouton grisé, clic neutralisé */
.sp-btn.up{color:#5DCAA5;border-color:rgba(93,202,165,.42);background:rgba(93,202,165,.12)}
.sp-btn.up:hover{background:rgba(93,202,165,.2)}
.sp-btn.down{color:#F09595;border-color:rgba(240,149,149,.42);background:rgba(240,149,149,.12)}
.sp-btn.down:hover{background:rgba(240,149,149,.2)}
/* Toggle « Figer le taux de marge brute » (sous les boutons CA) : switch compact aligné à gauche. */
.sp-toggle{display:flex;align-items:center;gap:8px;cursor:pointer;margin-top:3px;user-select:none}
.sp-toggle input{position:absolute;opacity:0;width:0;height:0}
.sp-toggle-track{flex:0 0 auto;position:relative;width:32px;height:18px;border-radius:9px;background:var(--o16);border:1px solid var(--o22);transition:.16s}
.sp-toggle-knob{position:absolute;top:1px;left:1px;width:14px;height:14px;border-radius:50%;background:var(--mut2,#9aa7b2);transition:.16s}
.sp-toggle input:checked + .sp-toggle-track{background:color-mix(in srgb,var(--brand) 55%,transparent);border-color:var(--brand)}
.sp-toggle input:checked + .sp-toggle-track .sp-toggle-knob{left:15px;background:#fff}
.sp-toggle input:focus-visible + .sp-toggle-track{outline:2px solid var(--brand);outline-offset:2px}
.sp-toggle-lbl{font-size:11.5px;font-weight:600;color:var(--mut2)}
.stresspanel-compact .sp-toggle-lbl{font-size:11px}
.sp-bfr{display:flex;flex-direction:column;gap:6px}
.sp-bfr-row{display:flex;align-items:center;gap:6px}
.sp-bfr-name{flex:1;min-width:0;font-size:12px;color:var(--mut2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-step{flex:0 0 auto;cursor:pointer;width:28px;height:28px;border-radius:8px;font-size:14px;font-weight:700;line-height:1;color:var(--tx1);background:var(--o6);border:1px solid var(--o16);transition:.14s}
.sp-step:hover{background:var(--o12);border-color:var(--o22);transform:translateY(-1px)}
/* Combo « Scénario piloté » en tête du panel (= scénario impacté par le stress) — pleine largeur + séparateur. */
.sp-scenario{padding-bottom:11px;border-bottom:1px solid var(--o12)}
.sp-scenario .custom-dropdown{width:100%}
.sp-scenario .custom-dropdown-trigger{min-width:0;width:100%;padding:6px 10px;font-size:11.5px;border-radius:8px}
.stresspanel-compact .sp-scenario{padding-bottom:9px}
.stresspanel-compact .sp-scenario .custom-dropdown-trigger{padding:5px 8px;font-size:11px}
@media (prefers-reduced-motion:reduce){.sp-btn:hover,.sp-step:hover{transform:none}}
/* Version COMPACTE (param Compact) : libellés courts + paddings réduits (flyout FAB / espaces serrés). */
.stresspanel-compact.stresspanel-flyout{width:208px}
.stresspanel-compact.stresspanel-dock{padding:10px}
.stresspanel-compact .stresspanel-body{gap:9px}
.stresspanel-compact.stresspanel-flyout .stresspanel-body{padding:10px 10px 0}
.stresspanel-compact .stresspanel-head{padding:8px 10px}
.stresspanel-compact .stresspanel-title{font-size:11.5px}
.stresspanel-compact .sp-section{gap:5px}
.stresspanel-compact .sp-lbl{font-size:9px}
.stresspanel-compact .sp-row2{gap:5px}
.stresspanel-compact .sp-btn{font-size:11px;padding:6px 0;border-radius:7px}
.stresspanel-compact .sp-bfr{gap:4px}
.stresspanel-compact .sp-bfr-name{font-size:11px}
.stresspanel-compact .sp-step{width:24px;height:24px;font-size:13px;border-radius:6px}

/* Strate top-clients : mode COURBES (barre + % blanc) OU mode DÉTAIL (valeurs € labellisées), via toggle.
   HAUTEUR FIGÉE + contenu centré → la carte ne se redimensionne JAMAIS quand on bascule Courbes ⇄ Détail. */
.intent-conc-strate{display:flex;flex-direction:column;justify-content:center;height:13px}
/* Toggle Courbes ⇄ Détail */
.intent-conc-toggle-row{display:flex;justify-content:flex-end;margin:2px 0 6px}
.intent-conc-toggle{cursor:pointer;font-size:10.5px;font-weight:700;color:var(--tx8);background:color-mix(in srgb, var(--brand) 12%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);border-radius:999px;padding:3px 11px;transition:background .14s,color .14s}
.intent-conc-toggle:hover{background:color-mix(in srgb, var(--brand) 22%, transparent);color:#fff}
.intent-conc-toggle:disabled{opacity:.4;cursor:default;pointer-events:none}
/* Qualificatif + toggle Courbes ⇄ Détail SUR LA MÊME LIGNE (toggle calé à droite). */
.intent-card-qualrow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0}
.intent-card-qualrow .intent-card-qualifier{flex:1 1 auto;min-width:0}
.intent-card-qualrow .intent-conc-toggle{flex:0 0 auto}
/* Mode DÉTAIL : UNE seule ligne, sans retour (libellé · valeur % · → 12m valeur · croissance calée à droite). */
.intent-conc-detail{display:flex;align-items:baseline;flex-wrap:nowrap;white-space:nowrap;gap:0 7px;font-size:10.5px;line-height:1;color:var(--mut5)}
.intent-conc-dlbl{flex:0 0 auto;color:var(--tx6);font-weight:700}
.intent-conc-dca{flex:0 0 auto}
.intent-conc-dca b,.intent-conc-dntm b{color:var(--tx1);font-weight:800;font-variant-numeric:tabular-nums}
.intent-conc-dpct{color:#7e98a3}
.intent-conc-dntm{flex:0 0 auto;color:#87a0ab}
.intent-conc-darr{color:#5d7682}
.intent-conc-dgr{flex:0 0 auto;margin-left:auto;padding-left:6px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.intent-conc-dgr.tcv-up{color:#34d399}
.intent-conc-dgr.tcv-down{color:var(--st-red)}
/* Barre horizontale de valo (intent card) — remplissage jusqu'à la médiane + curseur */
.intent-vbar{width:100%;align-self:stretch;margin:6px 0 2px}
.intent-vbar-head{text-align:center;margin-bottom:6px;line-height:1.15}
.intent-vbar-val{display:block;font-size:15px;font-weight:800;color:var(--tx1);font-variant-numeric:tabular-nums}
.intent-vbar-sub{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.04em;color:#8aa0ad;margin-top:1px}
.intent-vbar-track{position:relative;width:100%;height:8px;border-radius:5px;background:rgba(148,163,184,.20);box-shadow:inset 0 0 0 1px rgba(148,163,184,.10)}
.intent-vbar-band{position:absolute;top:0;height:100%;border-radius:5px;min-width:6px;background:linear-gradient(90deg, var(--brand), var(--brand3));box-shadow:0 0 8px color-mix(in srgb, var(--brand3) 38%, transparent);transition:left .4s cubic-bezier(.4,0,.2,1),width .4s cubic-bezier(.4,0,.2,1)}
.intent-vbar-cursor{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:var(--dh6);border:2.5px solid var(--brand);transform:translate(-50%,-50%);box-shadow:0 0 6px color-mix(in srgb, var(--brand) 55%, transparent);transition:left .4s cubic-bezier(.4,0,.2,1)}
.intent-vbar-ends{display:flex;justify-content:space-between;margin-top:5px;font-size:9px;font-weight:600;color:var(--mut6);font-variant-numeric:tabular-nums}
/* Combobox secteur sous la jauge (carte valo) — CustomDropdown, recalcule fourchette + médiane via multiples EBITDA */
/* Combo secteur + toggle VE/VT + « ? » SUR UNE LIGNE : nowrap + combo cappé (texte tronqué). Wrap rétabli en petit écran. */
.intent-valo-sector-wrap{align-self:stretch;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:nowrap;margin:0}
.intent-valo-sector-wrap .custom-dropdown{flex:0 1 auto;width:auto;min-width:0;max-width:150px}
.intent-valo-sector-wrap .custom-dropdown-trigger{min-width:0;padding:5px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media(max-width:640px){
    .intent-valo-sector-wrap{flex-wrap:wrap}
    .intent-valo-sector-wrap .custom-dropdown{max-width:230px}
}
/* Toggle VE/VT (valeur d'entreprise / des titres) — segmented, à droite de la combo secteur. */
.intent-valo-vevt{flex:0 0 auto;display:inline-flex;border:1px solid var(--o15,rgba(255,255,255,.16));border-radius:9px;overflow:hidden}
.intent-valo-vevt-opt{appearance:none;border:0;background:transparent;color:var(--mut2,#8aa0ad);font-size:11px;font-weight:700;letter-spacing:.03em;padding:5px 12px;cursor:pointer;line-height:1.4;transition:background .15s,color .15s}
.intent-valo-vevt-opt:hover{color:var(--tx1,#e4ecf0)}
.intent-valo-vevt-opt.active{background:var(--brand);color:#fff}
/* « ? » d'aide à côté du toggle VT (tooltip global data-tip). */
.intent-valo-help{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--o22,rgba(255,255,255,.22));color:var(--mut2,#8aa0ad);font-size:10px;font-weight:700;cursor:help;user-select:none;line-height:1}
.intent-valo-help:hover{color:var(--tx1,#e4ecf0);border-color:var(--brand)}
/* Badge teaser IA (exploration anonyme : 3 offertes par email) */
.ai-quota.teaser{color:#9fd0c4;background:color-mix(in srgb, var(--brand) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600}
/* Teaser IA unifié (MarkdownStreamer : Expert, Inflow, Cession, AnafiLight…) */
.md-teaser{margin:8px 0 14px;padding:18px 16px;text-align:center;border-radius:12px;
  background:color-mix(in srgb, var(--brand) 8%, transparent);border:1px dashed color-mix(in srgb, var(--brand) 35%, transparent)}
.md-teaser-ic{font-size:26px}
.md-teaser-t{font-size:15px;font-weight:700;color:var(--tx1);margin:6px 0 2px}
.md-teaser-d{font-size:12.5px;color:var(--mut2);margin:0 0 12px}
.md-teaser-btn{background:var(--brand);color:var(--surf-1);border:0;border-radius:9px;padding:9px 18px;font-weight:700;font-size:13px;cursor:pointer}
.md-teaser-btn:hover{filter:brightness(1.06)}
/* Pack de crédits IA (UnlockModal mode "pack") */
.unlock-pack{text-align:center;padding:10px 4px 4px}
.unlock-pack-ic{font-size:34px}
.unlock-pack-t{font-size:17px;font-weight:800;color:var(--tx1);margin:6px 0 6px}
.unlock-pack-d{font-size:13px;line-height:1.5;color:var(--mut2);margin:0 auto 16px;max-width:340px}
/* Actions de l'upsell IA (Débloquer / Crédits) */
.ai-upsell-actions{display:flex;gap:8px;flex-wrap:wrap}
.ai-upsell-btn.ghost{background:transparent;border:1px solid color-mix(in srgb, var(--brand) 40%, transparent);color:#9fd0c4}
.ai-upsell-btn.ghost:hover{background:color-mix(in srgb, var(--brand) 10%, transparent)}
/* Bandeau « connecté » (modal Mes sauvegardes) */
.bk-acct-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin:0 0 14px;padding:8px 12px;border-radius:10px;font-size:12.5px;color:var(--tx4);
  background:color-mix(in srgb, var(--brand) 8%, transparent);border:1px solid color-mix(in srgb, var(--brand) 25%, transparent)}
.bk-acct-em b{color:var(--tx1)}
.bk-acct-out{background:none;border:0;color:#8aa0ad;font-size:12px;cursor:pointer;text-decoration:underline;padding:2px 4px}
.bk-acct-out:hover{color:var(--tx4)}

/* ───────────────────────── Liens partagés (magic-link client) ───────────────────────── */
/* Overlay anti-flash : couvre l'accueil FecLoader pendant l'ouverture d'un lien partagé */
.share-open-overlay{position:fixed;inset:0;z-index:6000;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1200px 600px at 50% 0%,color-mix(in srgb, var(--brand) 14%, transparent),transparent 60%),#14171d}
.share-open-card{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:24px}
.share-open-spinner{width:46px;height:46px;border-radius:50%;border:3px solid var(--o12);
  border-top-color:var(--mud-palette-primary);animation:share-open-spin .8s linear infinite}
@keyframes share-open-spin{to{transform:rotate(360deg)}}
.share-open-title{font-size:16px;font-weight:700;color:#fff}
.share-open-sub{font-size:12.5px;color:var(--mut4)}
/* Carte d'accueil (message de l'émetteur) avant chargement de l'analyse partagée */
.share-intro-card{width:min(500px,calc(100vw - 36px));display:flex;flex-direction:column;align-items:center;gap:12px;
  text-align:center;padding:30px 30px 22px;border-radius:20px;position:relative;overflow:hidden;
  background:linear-gradient(180deg,rgba(28,33,42,.96),rgba(18,22,29,.98));
  border:1px solid var(--o9);
  box-shadow:0 30px 90px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul))),inset 0 1px 0 var(--o6);
  animation:share-intro-in .42s cubic-bezier(.16,.8,.3,1) both}
.share-intro-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,transparent,var(--mud-palette-primary),transparent);opacity:.9}
@keyframes share-intro-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.share-intro-badge{width:62px;height:62px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--mud-palette-primary) 35%,transparent),var(--o4));
  border:1px solid color-mix(in srgb,var(--mud-palette-primary) 40%,transparent);
  box-shadow:0 0 0 6px color-mix(in srgb,var(--mud-palette-primary) 8%,transparent)}
.share-intro-badge span{font-size:30px;line-height:1}
.share-intro-logo{max-width:180px;max-height:70px;object-fit:contain;border-radius:8px;margin-bottom:2px}
.share-intro-title{font-size:18px;font-weight:800;color:#fff;letter-spacing:-.01em;margin-top:2px}
.share-intro-sub{font-size:12px;color:#8fa6b2;margin-top:-4px}
.share-intro-msg{font-size:14px;line-height:1.6;color:#e7eef3;white-space:pre-wrap;max-height:38vh;overflow-y:auto;
  width:100%;margin-top:6px;background:rgba(255,255,255,.035);border:1px solid var(--o6);
  border-left:3px solid color-mix(in srgb,var(--mud-palette-primary) 70%,transparent);
  border-radius:0 12px 12px 0;padding:13px 16px;text-align:left}
.share-intro-btn{margin-top:8px;border:0;border-radius:12px;cursor:pointer;font-size:14.5px;font-weight:700;
  display:inline-flex;align-items:center;gap:9px;padding:12px 26px;color:#06222a;
  background:linear-gradient(180deg,color-mix(in srgb,var(--mud-palette-primary) 92%,white),var(--mud-palette-primary));
  box-shadow:0 8px 22px color-mix(in srgb,var(--mud-palette-primary) 35%,transparent);transition:.16s}
.share-intro-btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px color-mix(in srgb,var(--mud-palette-primary) 45%,transparent)}
.share-intro-arrow{transition:transform .16s}
.share-intro-btn:hover .share-intro-arrow{transform:translateX(3px)}
.share-intro-foot{font-size:10.5px;color:#6f8593;margin-top:4px;letter-spacing:.02em}
/* Écran mot de passe (lien protégé) */
.share-pw-input{width:100%;max-width:280px;margin-top:4px;text-align:center;letter-spacing:.06em;font-size:15px;
  background:var(--dk1);border:1px solid var(--o14);border-radius:10px;color:var(--tb1);padding:11px 14px}
.share-pw-input:focus{outline:none;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
.share-pw-err{font-size:12.5px;color:#ffb3a3}
.share-gate-msg{width:100%;max-width:300px;margin-top:6px;box-sizing:border-box;resize:vertical;min-height:46px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:#e8eef2;border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}
.share-gate-msg:focus{outline:none;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
.share-gate-link{margin-top:8px;border:none;background:transparent;color:#8fa6b2;font-size:12px;cursor:pointer;text-decoration:underline}
.share-gate-link:disabled{opacity:.5;cursor:default}
/* Écran « accès suspendu » (destinataire d'un lien bloqué temporairement) */
.share-blocked-badge span{filter:saturate(1.1)}
.share-blocked-card .share-intro-badge{background:rgba(240,160,32,.16);border-color:rgba(240,160,32,.4)}
.share-blocked-reason{width:100%;max-width:340px;box-sizing:border-box;margin:12px auto 4px;text-align:left;background:rgba(240,160,32,.08);border:1px solid rgba(240,160,32,.3);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.share-blocked-reason .sbr-lbl{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#e0a23a}
.share-blocked-reason .sbr-txt{font-size:13px;color:#e8eef2;line-height:1.4}
/* Champ mot de passe dans la modal Créer */
.sharelink-pw-row{display:flex;gap:8px;align-items:center}
.sharelink-pw-input{flex:1;background:var(--dk3);border:1px solid var(--o12);border-radius:8px;
  color:var(--tb1);padding:7px 10px;font-size:13px;letter-spacing:.04em}
.sharelink-pw-input:focus{outline:none;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
/* Bannière d'erreur d'ouverture d'un lien (invalide/expiré/révoqué) */
.share-link-error{display:flex;align-items:flex-start;gap:10px;max-width:680px;margin:14px auto 0;
  padding:12px 14px;border-radius:12px;background:rgba(253,115,88,.10);border:1px solid rgba(253,115,88,.35);color:#ffd9cf}
.share-link-error .sle-ic{font-size:20px;line-height:1.2}
.share-link-error .sle-title{font-weight:700;font-size:13px;color:#fff;margin-bottom:2px}
.share-link-error .sle-msg{font-size:12.5px;opacity:.92}
.share-link-error .sle-x{margin-left:auto;background:none;border:0;color:#ffd9cf;cursor:pointer;font-size:14px}

/* Modal d'émission / gestion */
.sharelink-backdrop{position:fixed;inset:0;background:rgba(8,12,16,.62);z-index:4300;backdrop-filter:blur(2px)}
.sharelink-modal{position:fixed;z-index:4301;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(560px,calc(100vw - 32px));max-height:88vh;overflow:hidden;display:flex;flex-direction:column;
  background:var(--dk2);border:1px solid var(--o10);border-radius:16px;box-shadow:0 24px 70px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)))}
/* onglet « Créer » = modal large 2 colonnes (moins de scroll vertical) */
.sharelink-modal.wide{width:min(880px,calc(100vw - 32px))}
.sharelink-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.sharelink-cols.solo{grid-template-columns:1fr;max-width:560px;margin:0 auto}   /* rapport dynamique : seule la colonne perso & envoi */
.sharelink-report-note{background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);
  border-radius:10px;padding:10px 13px;font-size:13px;line-height:1.45;margin-bottom:14px;color:var(--tx2)}
.sharelink-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.sharelink-col .sharelink-section-lbl{padding-bottom:8px;border-bottom:1px solid var(--o7);margin-bottom:2px}
.sharelink-subgrp{font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:#6f8593;font-weight:700;
  margin-top:6px;display:flex;align-items:baseline;gap:8px}
.sharelink-subhint{text-transform:none;letter-spacing:0;font-weight:500;color:#5d7280;font-size:10px}
@media(max-width:760px){.sharelink-cols{grid-template-columns:1fr;gap:12px}}
/* en-tête FIXE */
.sharelink-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--o8)}
.sharelink-title{font-weight:700;font-size:14.5px;color:var(--tx1,#fff)}
.sharelink-x{margin-left:auto;background:none;border:0;color:var(--mut4);cursor:pointer;font-size:15px}
.sharelink-x:hover{color:var(--tx1,#fff)}
/* onglets FIXES */
.sharelink-tabs{flex:0 0 auto;display:flex;gap:6px;padding:10px 16px 0;border-bottom:1px solid var(--o6)}
.sharelink-tabs button{flex:0 0 auto;padding:7px 12px;border-radius:9px 9px 0 0;border:0;cursor:pointer;
  background:transparent;color:var(--mut4);font-size:12.5px;font-weight:600}
.sharelink-tabs button.on{background:var(--o6);color:var(--tx1,#fff);border-bottom:2px solid var(--mud-palette-primary)}
/* corps SCROLLABLE (min-height:0 obligatoire pour qu'un enfant flex scrolle) */
.sharelink-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px}
/* pied FIXE (Fermer / Générer | Rafraîchir) */
.sharelink-foot{flex:0 0 auto;display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;
  border-top:1px solid var(--o8);background:var(--dk2)}
.sharelink-section-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#7f95a2;font-weight:700}
.sharelink-opt{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--tx2,#dbe6ec);cursor:pointer;
  padding:8px 10px;border-radius:9px;background:var(--o3);border:1px solid var(--o6);transition:background .13s,border-color .13s}
.sharelink-opt:hover{background:var(--o5)}
.sharelink-opt.on{background:color-mix(in srgb,var(--mud-palette-primary) 8%,transparent);border-color:color-mix(in srgb,var(--mud-palette-primary) 28%,transparent)}
.sharelink-opt.forced{opacity:.85;cursor:default}
/* Checkbox moderne (custom) : carré arrondi, coche dessinée, accent teal — remplace le rendu natif. */
.sharelink-opt input[type="checkbox"]{appearance:none;-webkit-appearance:none;margin:0;flex:0 0 auto;
  width:19px;height:19px;border:1.5px solid var(--o22);border-radius:6px;background:var(--o4);
  cursor:pointer;position:relative;transition:background .15s,border-color .15s,box-shadow .15s}
.sharelink-opt input[type="checkbox"]:hover{border-color:color-mix(in srgb,var(--mud-palette-primary) 50%,transparent);background:var(--o8)}
.sharelink-opt input[type="checkbox"]:checked{background:var(--mud-palette-primary);border-color:var(--mud-palette-primary)}
.sharelink-opt input[type="checkbox"]:checked::after{content:"";position:absolute;left:6px;top:2.5px;width:5px;height:9px;
  border:solid var(--surf-1);border-width:0 2.2px 2.2px 0;transform:rotate(45deg)}
.sharelink-opt input[type="checkbox"]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--mud-palette-primary) 28%,transparent)}
.sharelink-grid2 .sharelink-opt input[type="checkbox"]{width:17px;height:17px}
.sharelink-grid2 .sharelink-opt input[type="checkbox"]:checked::after{left:5.2px;top:2px;height:8px}
.sharelink-opt>span:last-child{min-width:0}
.sharelink-opt b{color:var(--tx1,#fff)}   /* INLINE : un <b> au milieu d'une phrase (palette, mot de passe…) ne doit pas casser la ligne ; theme-aware (lisible en clair) */
.sharelink-opt small{display:block;font-size:10.5px;color:#8aa0ac;font-weight:500;line-height:1.35;margin-top:1px}   /* le sous-titre (block) suffit à empiler titre/sous-titre des options structurées */
.sharelink-opt-ic{flex:0 0 auto;width:22px;text-align:center;font-size:16px;line-height:1}
.sharelink-tag{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:6px;color:var(--mud-palette-primary);
  background:color-mix(in srgb,var(--mud-palette-primary) 16%,transparent)}
/* Bloc/intent masqué dans un lien partagé (droits ShareRights) */
.intent-hidden{display:none !important}
.sharelink-grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sharelink-grid2 .sharelink-opt{padding:7px 9px;font-size:12px;gap:7px}
.sharelink-grid2 .sharelink-opt-ic{width:18px;font-size:14px}
@media(max-width:520px){.sharelink-grid2{grid-template-columns:1fr}}
/* Budget dynamique de scénarios créables par le lecteur (stepper) */
.sharelink-budget{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:1px 0 2px 30px;
  padding:7px 11px;border-radius:9px;background:var(--o3);border:1px dashed var(--o12)}
.sharelink-budget-lbl{font-size:11.5px;color:var(--mut4)}
.sharelink-stepper{display:inline-flex;align-items:stretch;flex:0 0 auto}
.sharelink-stepper button{width:26px;height:26px;border:1px solid var(--o14);background:var(--dk3);
  color:var(--tb1,#dbe6ec);font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.sharelink-stepper button:first-child{border-radius:7px 0 0 7px}
.sharelink-stepper button:last-child{border-radius:0 7px 7px 0}
.sharelink-stepper button:hover:not(:disabled){background:color-mix(in srgb, var(--brand) 14%, transparent);border-color:color-mix(in srgb, var(--brand) 32%, transparent)}
.sharelink-stepper button:disabled{opacity:.4;cursor:default}
.sharelink-stepper-v{min-width:36px;height:26px;display:flex;align-items:center;justify-content:center;
  font-size:13.5px;font-weight:700;color:var(--tx1,#fff);background:var(--dk3);border-top:1px solid var(--o14);border-bottom:1px solid var(--o14)}
/* Upload logo client */
.sharelink-logo-row{display:flex;align-items:center;gap:12px}
.sharelink-logo-preview{flex:0 0 auto;width:96px;height:58px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  background:var(--dk1);border:1px solid var(--o12);overflow:hidden;padding:9px;box-sizing:border-box}
.sharelink-logo-preview img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.sharelink-logo-ph{font-size:10px;color:#6f8593}
.sharelink-logo-actions{flex:1 1 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sharelink-logo-btn{cursor:pointer;display:inline-flex;align-items:center}
.sharelink-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}
.sharelink-field{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--mut4)}
.sharelink-field.grow{flex:1 1 220px}
/* Input libellé aligné visuellement sur la combo « Validité » (CustomDropdown) : même fond, bord, padding, taille. */
.sharelink-field select,.sharelink-field input{background:var(--dk3);border:1px solid var(--o10);
  border-radius:8px;color:var(--tb1);padding:6px 12px;font-size:12px;font-family:inherit;box-sizing:border-box}
.sharelink-field input{width:100%}
.sharelink-field input:focus{outline:none;border-color:color-mix(in srgb, var(--brand) 45%, transparent);background:color-mix(in srgb, var(--brand) 6%, transparent)}
.sharelink-field input::placeholder{color:#6f8593}
.sharelink-intro-input{width:100%;background:var(--dk3);border:1px solid var(--o12);border-radius:8px;
  color:var(--tb1);padding:8px 10px;font-size:13px;line-height:1.45;resize:vertical;min-height:54px;font-family:inherit}
.sharelink-intro-input:focus{outline:none;border-color:color-mix(in srgb,var(--mud-palette-primary) 55%,transparent)}
.sharelink-field-hint{font-size:10.5px;color:#7f95a2;line-height:1.4}
.sharelink-note{font-size:11.5px;line-height:1.5;color:var(--mut4);background:var(--o3);
  border:1px solid var(--o7);border-radius:9px;padding:9px 11px}
.sharelink-note b{color:var(--tx1,#dbe6ec)}
/* White-listing d'ouverture — sélecteur (création) + demandes d'accès (Mes liens) */
.sharelink-gate{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--tx2,#dbe6ec);flex-wrap:wrap}
.sharelink-gate-lbl{font-weight:600;color:var(--tx2,#dbe6ec)}
.sharelink-gate-sel{flex:1 1 200px;min-width:0;box-sizing:border-box;border:1px solid var(--o7);background:var(--o3);color:var(--tx2,#dbe6ec);border-radius:8px;padding:6px 9px;font-family:inherit;font-size:12.5px;cursor:pointer}
.sharelink-gate-wl{width:100%;box-sizing:border-box;resize:vertical;min-height:44px;border:1px solid var(--o7);background:var(--o3);color:var(--tx1,#e8eef2);border-radius:8px;padding:7px 10px;font-family:inherit;font-size:12.5px}
.sl-gate-box{margin-top:8px;border-top:1px solid var(--o8);padding-top:8px}
.sl-gate-lvl{font-size:11.5px;font-weight:700;color:var(--mud-palette-primary,#00B1CF)}
.sl-gate-reqs-h{margin-top:6px;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--mut4)}
.sl-gate-req{display:flex;align-items:center;gap:7px;margin-top:5px;font-size:12px;color:var(--tx2,#dbe6ec)}
.sl-gate-req-mail{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.sl-gate-req-msg{cursor:help;opacity:.7}
.sl-gate-sp{flex:1 1 auto}
.sl-gate-deny{color:#e0726b !important;border-color:color-mix(in srgb,#e0726b 40%,transparent) !important}
.sharelink-note.warn{color:#ffe2b0;background:rgba(243,156,18,.10);border-color:rgba(243,156,18,.32)}
.sharelink-note.err{color:#ffd9cf;background:rgba(253,115,88,.10);border-color:rgba(253,115,88,.35)}
.sharelink-result{border:1px solid color-mix(in srgb,var(--mud-palette-primary) 35%,transparent);
  background:color-mix(in srgb,var(--mud-palette-primary) 8%,transparent);border-radius:11px;padding:11px 12px}
.sharelink-result-lbl{font-size:12.5px;font-weight:600;color:var(--tx1);margin-bottom:8px}
.sharelink-url-row{display:flex;gap:8px}
.sharelink-url-row input{flex:1;background:var(--dk1);border:1px solid var(--o14);border-radius:8px;
  color:var(--tx4);padding:7px 9px;font-size:12px;font-family:monospace}
.sharelink-copy{flex:0 0 auto;border:0;border-radius:8px;cursor:pointer;padding:0 12px;font-size:12.5px;font-weight:600;
  background:var(--mud-palette-primary);color:#08222a}
.sharelink-copy.ghost{background:transparent;border:1px solid color-mix(in srgb,var(--mud-palette-primary) 45%,transparent);
  color:var(--mud-palette-primary);padding:6px 12px}
.sharelink-msg-lbl{margin-top:11px;font-size:12px;font-weight:600;color:var(--tx4);display:flex;align-items:center;justify-content:space-between;gap:8px}
.sharelink-msg-tabs{display:inline-flex;border:1px solid var(--o12);border-radius:8px;overflow:hidden}
.sharelink-msg-tabs button{border:none;background:transparent;color:var(--tx4);font-size:11px;font-weight:700;padding:4px 11px;cursor:pointer;transition:.12s}
.sharelink-msg-tabs button.on{background:var(--brand);color:#04222b}
.sharelink-msg-tag{font-size:10.5px;font-weight:700;color:var(--brand);background:color-mix(in srgb,var(--brand) 13%,transparent);border-radius:6px;padding:2px 8px;white-space:nowrap}
.sharelink-msg{width:100%;margin-top:6px;background:var(--dk1);border:1px solid var(--o12);border-radius:8px;
  color:var(--tx4);padding:9px 11px;font-size:12px;line-height:1.5;resize:vertical;font-family:inherit}
/* Aperçu de l'email HTML stylisé (rendu réel ; l'email porte ses propres couleurs claires) */
.sharelink-msg-preview{margin-top:6px;max-height:340px;overflow:auto;border:1px solid var(--o12);border-radius:10px}
.sharelink-msg-preview a{pointer-events:none;cursor:default}   /* aperçu : le bouton n'est pas cliquable (évite de quitter l'app) */
.sharelink-msg-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:6px;flex-wrap:wrap}
.sharelink-msg-hint{flex:1 1 auto;font-size:10.5px;color:var(--tx6,var(--mut1));line-height:1.4}
.sharelink-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
.sharelink-btn{padding:8px 14px;border-radius:9px;border:1px solid var(--o14);cursor:pointer;
  font-size:13px;font-weight:600;background:var(--o5);color:var(--tx2,#dbe6ec);
  display:inline-flex;align-items:center;justify-content:center;gap:7px}
.sharelink-spin{width:13px;height:13px;flex:0 0 auto;border-radius:50%;border:2px solid rgba(8,34,42,.3);
  border-top-color:#08222a;display:inline-block;animation:sharelink-spin .7s linear infinite}
@keyframes sharelink-spin{to{transform:rotate(360deg)}}
.sharelink-btn.ghost{background:transparent}
.sharelink-btn.primary{background:var(--mud-palette-primary);border-color:var(--mud-palette-primary);color:#08222a}
.sharelink-btn.danger{background:rgba(253,115,88,.14);border-color:rgba(253,115,88,.55);color:#ffb3a3}
.sharelink-btn.danger:hover:not(:disabled){background:#fd7358;border-color:#fd7358;color:#1c1f26}
.sharelink-btn:disabled{opacity:.5;cursor:not-allowed}

/* ── Confirmation de révocation (overlay par-dessus la modal des liens) ── */
.sharelink-confirm-backdrop{position:fixed;inset:0;z-index:4100;background:rgba(8,12,16,.66);
  backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:18px;
  animation:sl-confirm-fade .12s ease-out}
.sharelink-confirm{width:min(380px,calc(100vw - 36px));background:var(--dk2);border:1px solid var(--o12);
  border-radius:16px;box-shadow:0 24px 70px rgba(var(--shadow-col),calc(.6 * var(--shadow-mul)));padding:20px 20px 16px;text-align:center;
  animation:sl-confirm-pop .14s ease-out}
.sharelink-confirm-ic{font-size:26px;line-height:1;margin-bottom:8px}
.sharelink-confirm-title{font-size:15px;font-weight:700;color:#eef6fa;margin-bottom:7px}
.sharelink-confirm-msg{font-size:12.5px;line-height:1.5;color:var(--mut4);margin-bottom:16px}
.sharelink-confirm-msg b{color:#dbe9f0;font-weight:600}
.sharelink-confirm-actions{display:flex;gap:10px;justify-content:center}
.sharelink-confirm-actions .sharelink-btn{min-width:104px}
@keyframes sl-confirm-fade{from{opacity:0}to{opacity:1}}
@keyframes sl-confirm-pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}

/* ══ Quick wins UX (sûrs, objectifs, réversibles) ══════════════════════════════════════════════════ */

/* 1) Respect de « réduire les animations » (OS/navigateur) : accessibilité (vestibulaire) + confort. N'affecte
   QUE les utilisateurs qui l'ont activé ; pour tous les autres, zéro changement. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* 2) Anneau de focus CLAVIER (`:focus-visible` → jamais à la souris) sur les boutons custom ajoutés cette session.
   Améliore la navigation au clavier sans toucher au rendu souris. `:where()` = spécificité 0 (jamais intrusif). */
:where(.sharelink-btn, .recap-pilot, .recap-share-btn, .recap-upd-btn, .lc-gl-loss-btn,
       .ro-lock-btn, .ro-lock-tour, .share-intro-btn):focus-visible {
  outline: 2px solid var(--mud-palette-primary, #00b1cf);
  outline-offset: 2px;
  border-radius: 8px;
}

/* ── Perte de contexte WebGL (LiveCharts/Skia) ──────────────────────────────
   Overlay opaque thémé qui COUVRE le canvas blanc + le message d'erreur Skia
   (peint en haut à gauche) le temps que le contexte se restaure. Injecté par
   js/livecharts-recovery.js sur 'webglcontextlost', retiré sur 'restored'.
   Couleurs via --mud-palette-* → s'adapte automatiquement clair/sombre. */
.lc-gl-loss{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;
  background:var(--mud-palette-surface,#1e1e26);border-radius:inherit;animation:lc-gl-fade .12s ease-out}
.lc-gl-loss-box{display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;padding:6px}
.lc-gl-loss-row{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;
  letter-spacing:.02em;color:var(--mud-palette-text-secondary,#9aa)}
.lc-gl-loss-spin{width:13px;height:13px;flex:0 0 auto;border-radius:50%;
  border:2px solid var(--mud-palette-lines-default,var(--o18));
  border-top-color:var(--mud-palette-primary,#00b1cf);animation:lc-gl-spin .7s linear infinite}
.lc-gl-loss-btn{font:500 12px/1 inherit;color:var(--mud-palette-primary,#00b1cf);cursor:pointer;
  background:transparent;border:1px solid var(--mud-palette-primary,#00b1cf);border-radius:7px;
  padding:5px 14px;transition:background .15s,color .15s}
.lc-gl-loss-btn:hover{background:var(--mud-palette-primary,#00b1cf);color:var(--mud-palette-surface,#08222a)}
.lc-gl-loss.is-compact{font-size:0}
@keyframes lc-gl-spin{to{transform:rotate(360deg)}}
@keyframes lc-gl-fade{from{opacity:0}to{opacity:1}}
/* Liste « Mes liens » */
/* La LISTE est le scroller : elle porte le FONDU haut+bas (le visiteur voit qu'elle défile sous le dashboard).
   Base = standalone (hauteur bornée 46vh) ; dans le hub elle REMPLIT l'espace restant (override ci-dessous). */
.sharelink-list{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;overflow-x:hidden;padding:6px 2px;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%)}
/* Hub « Mes analyses » : le dashboard est fixe, la liste remplit la hauteur restante (un seul scroll). */
.bk-tabpanel .sharelink-list{flex:1 1 auto;min-height:0;max-height:none}
.sharelink-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;
  background:var(--o3);border:1px solid var(--o7)}
.sharelink-item.dead{opacity:.55}
/* « Nouveautés » émetteur : lien avec ouverture/question depuis la dernière visite */
.sharelink-item.sl-item-new{border-color:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 50%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 28%,transparent)}
.sl-new-dot{font-size:12px}
.sl-new-banner{font-size:12px;color:var(--tb1);background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 12%,transparent);border:1px solid color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 30%,transparent);border-radius:9px;padding:8px 11px;margin-bottom:8px}
.sharelink-item-main{min-width:0;flex:1}
.sharelink-item-title{font-size:13px;font-weight:600;color:var(--tb1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sharelink-item-meta{font-size:11px;color:#8aa0ad;margin-top:2px}
.sharelink-item-opens{font-size:10.5px;margin-top:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sl-open-yes{color:var(--txt-teal2);font-weight:600}
.sl-open-no{color:#6f8593}
.sl-open-city{color:var(--mut4);font-weight:600}
.sl-readtime{color:var(--txt-teal2);font-weight:600;cursor:help}
.sl-spark.sl-spark-mini{width:88px;height:18px;flex:0 0 auto}

/* Score de « chaleur » du lead — badge par lien */
.sl-heat{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;padding:2px 9px;border-radius:99px;cursor:help;white-space:nowrap}
.sl-heat-cold{background:rgba(120,140,155,.16);color:#8aa0ad;border:1px solid rgba(120,140,155,.3)}
.sl-heat-mild{background:rgba(95,180,210,.14);color:#5fb4d2;border:1px solid rgba(95,180,210,.32)}
.sl-heat-warm{background:rgba(240,170,90,.16);color:#f0aa5a;border:1px solid rgba(240,170,90,.34)}
.sl-heat-hot{background:rgba(240,110,95,.18);color:#f06e5f;border:1px solid rgba(240,110,95,.4)}
/* Réactions du client (tally) */
.sl-react-box{margin-top:8px;border-top:1px solid var(--o8);padding-top:8px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.sl-react-lbl{font-size:11.5px;font-weight:700;color:var(--mut4)}
.sl-react-chip{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--txt-teal2);background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 9%,transparent);border:1px solid color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 26%,transparent);border-radius:99px;padding:2px 9px}

/* Signaux DATAPACK (page de triage) : conversion d'un acquéreur (intérêt / NDA / demande d'IM) */
.sl-deal-box{margin-top:8px;border-top:1px solid var(--o8);padding-top:8px;display:flex;flex-direction:column;gap:5px}
.sl-deal-lbl{font-size:11.5px;font-weight:800;color:var(--mud-palette-primary,#00B1CF)}
.sl-deal-row{font-size:12.5px;font-weight:600;color:var(--txt-teal1,#e8eef2);background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 7%,transparent);border-left:3px solid color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 50%,transparent);border-radius:0 7px 7px 0;padding:6px 10px}
.sl-deal-row.hot{border-left-color:#e0863b;background:color-mix(in srgb,#e0863b 11%,transparent);font-weight:800}

/* Heatmap d'engagement de lecture (parcours live) : temps par étape */
.sl-eng-box{margin-top:8px;border-top:1px solid var(--o8);padding-top:8px}
.sl-eng-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 32%,transparent);background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 8%,transparent);color:var(--txt-teal2);border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;padding:5px 10px}
.sl-eng-toggle:hover{background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 15%,transparent)}
.sl-eng-chev{color:var(--mut2,#9aa7b0);font-size:10px}
.sl-eng-rows{display:flex;flex-direction:column;gap:5px;margin-top:9px}
.sl-eng-row{display:flex;align-items:center;gap:9px}
.sl-eng-step{flex:0 0 64px;font-size:11.5px;color:var(--mut1,#9bb3bd)}
.sl-eng-bar-wrap{flex:1 1 auto;height:9px;border-radius:5px;background:var(--o8);overflow:hidden}
.sl-eng-bar{display:block;height:100%;border-radius:5px;background:color-mix(in srgb,var(--mud-palette-primary,#00B1CF) 55%,transparent);transition:width .3s}
.sl-eng-bar.top{background:var(--mud-palette-primary,#00B1CF)}
.sl-eng-time{flex:0 0 52px;text-align:right;font-size:11.5px;font-weight:600;color:var(--txt-teal2)}
.sl-eng-foot{margin-top:8px;font-size:11.5px;color:var(--mut1,#9bb3bd)}

/* Inbox Q&A d'un lien (rapport dynamique) */
.sl-qa-box{margin-top:8px;border-top:1px solid var(--o8);padding-top:8px}
.sl-qa-toggle{border:1px solid var(--o14);background:transparent;color:var(--txt-teal2);border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;padding:5px 10px}
.sl-qa-toggle:hover{background:var(--o6)}
.sl-qa-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.sl-qa-row{background:var(--o4);border:1px solid var(--o8);border-radius:9px;padding:8px 10px;display:flex;flex-direction:column;gap:5px}
.sl-qa-qline{font-size:13px}
.sl-qa-slide{display:inline-block;background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--txt-teal2);font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;margin-right:6px}
.sl-qa-pin{display:inline-block;margin-right:4px;font-size:12px}
.sl-qa-urg-pill{display:inline-block;margin-left:8px;font-size:11px;font-weight:700;padding:1px 8px;border-radius:20px;background:color-mix(in srgb,#e5484d 18%,transparent);color:#e5484d}
.sl-qa-acts{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.sl-qa-act{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;text-decoration:none;cursor:pointer;border-radius:8px;padding:5px 11px;border:1px solid var(--o14);background:transparent;color:var(--txt-teal2)}
.sl-qa-act:hover{background:var(--o6)}
.sl-qa-act.primary{border-color:color-mix(in srgb,var(--brand) 55%,transparent);background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand-strong)}
.sl-qa-act:disabled{opacity:.55;cursor:default}
.sl-qa-u{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:20px;margin-right:6px}
.sl-qa-u.urg{background:color-mix(in srgb,#e5484d 18%,transparent);color:#e5484d}
.sl-qa-u.imp{background:color-mix(in srgb,#e9a01e 20%,transparent);color:#c98a16}
.sl-qa-archnote{display:flex;align-items:center;gap:5px;margin-top:9px;font-size:11px;color:var(--mut2)}
/* Lanceur 1-clic de la démo Q&A (page autonome wwwroot/demo/qa-dashboard.html, nouvel onglet) */
.sl-demobtn{display:flex;align-items:center;gap:12px;text-decoration:none;margin-bottom:12px;padding:11px 13px;border-radius:12px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 12%,transparent),color-mix(in srgb,var(--brand) 5%,transparent));
  border:1px solid color-mix(in srgb,var(--brand) 36%,transparent);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}
.sl-demobtn:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--brand) 58%,transparent);box-shadow:0 12px 28px -18px color-mix(in srgb,var(--brand) 80%,transparent)}
.sl-demobtn-ic{flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;background:color-mix(in srgb,var(--brand) 20%,transparent)}
.sl-demobtn-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.sl-demobtn-tx b{font-size:13px;font-weight:700;color:var(--txt-1,var(--tx1))}
.sl-demobtn-tx small{font-size:11px;color:var(--mut2)}
.sl-demobtn-go{flex:0 0 auto;font-size:16px;font-weight:900;color:var(--brand-strong)}
/* Coffre de clés (cross-device, zero-knowledge) */
.sl-vault{border:1px solid var(--o10);border-radius:12px;margin-bottom:12px;overflow:hidden;background:var(--surf-2)}
.sl-vault-h{display:flex;align-items:center;gap:11px;padding:11px 13px;cursor:pointer}
.sl-vault-h:hover{background:var(--o4)}
.sl-vault-ic{flex:0 0 auto;font-size:18px}
.sl-vault-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.sl-vault-tx b{font-size:13px;font-weight:700;color:var(--txt-1,var(--tx1))}
.sl-vault-tx small{font-size:11px;color:var(--mut2)}
.sl-vault-chev{flex:0 0 auto;font-size:12px;color:var(--mut2)}
.sl-vault-body{padding:0 13px 13px;border-top:1px solid var(--o8)}
.sl-vault-p{font-size:12px;color:var(--mut2);margin:10px 0 8px;line-height:1.5}
.sl-vault-p b{color:var(--txt-1,var(--tx1));font-weight:700}
.sl-vault-ok{font-size:12.5px;color:var(--txt-teal2);margin-top:10px}
.sl-vault-row{display:flex;gap:7px;flex-wrap:wrap}
.sl-vault-row input{flex:1 1 130px;min-width:0;background:var(--surf-1);border:1px solid var(--o14);color:inherit;border-radius:8px;padding:7px 10px;font-size:12.5px;outline:none}
.sl-vault-row input:focus{border-color:color-mix(in srgb,var(--brand) 55%,transparent)}
.sl-vault-go{flex:0 0 auto;background:var(--brand);color:#fff;border:none;border-radius:8px;padding:7px 14px;cursor:pointer;font-weight:700;font-size:12.5px}
.sl-vault-go:disabled{opacity:.5;cursor:default}
.sl-vault-err{font-size:11.5px;color:#f08a8a;margin-top:8px}
.sl-vault-msg{font-size:11.5px;color:var(--txt-teal2);margin-top:8px}
.sl-keymiss{display:inline-flex;align-items:center;font-size:11px;color:var(--mut2);background:var(--o6);border:1px solid var(--o10);border-radius:8px;padding:5px 9px}
/* Suspension temporaire d'un lien (réversible) — émetteur */
.sharelink-badge.blk{background:rgba(240,160,32,.16);border:1px solid rgba(240,160,32,.4);color:#e0a23a}
.sl-blockbtn{color:#e0a23a !important;border-color:rgba(240,160,32,.4) !important}
.sl-blockbtn:hover:not(:disabled){background:rgba(240,160,32,.12) !important}
.sl-unblock{color:var(--txt-teal2,#34c0a0) !important;border-color:color-mix(in srgb,var(--txt-teal2,#34c0a0) 45%,transparent) !important}
.sl-unblock:hover:not(:disabled){background:color-mix(in srgb,var(--txt-teal2,#34c0a0) 12%,transparent) !important}
.sl-block-form{margin-top:9px;background:rgba(240,160,32,.07);border:1px solid rgba(240,160,32,.28);border-radius:11px;padding:11px 12px;display:flex;flex-direction:column;gap:8px}
.sl-block-h{font-size:11.5px;color:var(--tx2,#c2cdd6);line-height:1.45}
.sl-block-sel,.sl-block-input{width:100%;box-sizing:border-box;background:var(--surf-1);border:1px solid var(--o14);color:inherit;border-radius:8px;padding:7px 10px;font-size:12.5px;outline:none}
.sl-block-sel:focus,.sl-block-input:focus{border-color:rgba(240,160,32,.55)}
.sl-block-acts{display:flex;gap:7px;justify-content:flex-end}
.sl-block-go{color:#fff !important;background:#e0a23a !important;border-color:#e0a23a !important;font-weight:700}
.sl-block-go:disabled{opacity:.5}
.sl-block-note{margin-top:8px;font-size:11.5px;color:#e0a23a;background:rgba(240,160,32,.08);border:1px solid rgba(240,160,32,.26);border-radius:9px;padding:7px 10px;line-height:1.45}
.sl-qa-aline{font-size:12px;color:var(--mut2);padding-left:6px}
.sl-qa-answer{display:flex;gap:6px}
.sl-qa-answer input{flex:1 1 auto;background:var(--surf-1);border:1px solid var(--o14);color:inherit;border-radius:8px;padding:6px 9px;font-size:12px;outline:none}
.sl-qa-answer button{flex:0 0 auto;background:var(--brand);color:#fff;border:none;border-radius:8px;padding:6px 12px;cursor:pointer;font-weight:700;font-size:12px}
.sl-qa-answer button:disabled{opacity:.5;cursor:default}
/* Mini-dashboard de suivi des liens partagés (en tête de « Mes liens ») */
/* Onglet « Mes liens partagés » : dashboard FIXE + COMPACT, liste scrollable masquée. `.sl-manage` reste
   `display:contents` (neutre — ses enfants dashboard+liste sont promus dans `.sharelink-body`, le vrai
   conteneur flex) → ne casse PAS le modal standalone ; le remplissage de hauteur est scopé au hub plus bas
   (`.bk-tabpanel .sharelink-list`). Les blocs du dashboard sont flex:0, la liste prend l'espace restant. */
.sl-manage{display:contents}
.sl-dash{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:5px}
.sl-dash-tile{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:5px 9px;border-radius:9px;
  background:var(--o3);border:1px solid var(--o7)}
.sl-dash-ic{font-size:12px;opacity:.9;line-height:1}
/* Jauge en arc (donut SVG) pour les tuiles qui portent un ratio : valeur au centre, arc = proportion. */
.sl-dash-ring{position:relative;width:29px;height:29px;flex:0 0 auto;margin:0 0 1px}
.sl-dash-ring svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.sl-dash-ring-bg{fill:none;stroke:var(--o10);stroke-width:3.5}
.sl-dash-ring-fg{fill:none;stroke:var(--mud-palette-primary);stroke-width:3.5;stroke-linecap:round;transition:stroke-dasharray .5s ease}
.sl-dash-ring-v{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:var(--tx1);line-height:1;font-variant-numeric:tabular-nums}
.sl-dash-ring-v.pct{font-size:9px}
.sl-dash-v{font-size:15px;font-weight:800;color:var(--tx1);line-height:1.1;font-variant-numeric:tabular-nums}
.sl-dash-v-sm{font-size:12.5px;font-weight:700}
.sl-dash-l{font-size:9px;color:#8ea6b3;line-height:1.25}
.sl-dash-top{flex:0 0 auto;font-size:10.5px;color:#b9ccd6;margin:0 0 5px;padding:4px 9px;border-radius:8px;
  background:color-mix(in srgb,var(--mud-palette-primary) 9%,transparent);
  border:1px solid color-mix(in srgb,var(--mud-palette-primary) 22%,transparent)}
.sl-dash-top b{color:#fff;font-weight:700}
@media(max-width:520px){.sl-dash{grid-template-columns:repeat(2,1fr)}}
/* Tracking : courbe temporelle (30 j) + répartition géo */
.sl-track{flex:0 0 auto;display:grid;grid-template-columns:1.5fr 1fr;gap:6px;margin-bottom:5px}
.sl-trend,.sl-geo{padding:6px 9px;border-radius:9px;background:var(--o3);border:1px solid var(--o7)}
.sl-trend-head{display:flex;justify-content:space-between;align-items:baseline;font-size:10px;color:#8ea6b3;margin-bottom:3px}
.sl-trend-head b{font-size:14px;color:var(--tx1);font-weight:800;font-variant-numeric:tabular-nums}
/* Wrapper du sparkline = ancre du tooltip stylé (data-tip). Agrégé : bloc pleine largeur ; mini : inline,
   dimensionné par le SVG (88px). line-height:0 évite l'espace fantôme sous le SVG inline. */
.sl-spark-wrap{position:relative;display:block;width:100%;line-height:0}
.sl-spark-wrap-mini{display:inline-block;width:auto;flex:0 0 auto;vertical-align:middle}
.sl-spark{display:block;width:100%;height:26px}
.sl-spark-bar{fill:var(--mud-palette-primary);opacity:.85}
.sl-spark-bar:hover{opacity:1}
.sl-spark-axis{stroke:var(--o10);stroke-width:1}
.sl-geo-head{font-size:10px;color:#8ea6b3;margin-bottom:4px}
.sl-geo-rows{display:flex;flex-direction:column;gap:3px}
.sl-geo-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;font-size:11px}
.sl-geo-name{color:#cfe0e8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.sl-geo-bar-wrap{height:6px;border-radius:4px;background:var(--o6);overflow:hidden}
.sl-geo-bar{display:block;height:100%;border-radius:4px;background:var(--mud-palette-primary);min-width:3px}
.sl-geo-cnt{color:var(--tx1);font-weight:700;font-variant-numeric:tabular-nums;min-width:18px;text-align:right}
@media(max-width:560px){.sl-track{grid-template-columns:1fr}}
/* ── Modal « Accès espace pro » (CabinetUnlockModal) — langage modal maison (cf. upd-/bk-/recv-) ── */
.cabu-backdrop{position:fixed;inset:0;z-index:5400;background:rgba(3,12,18,.62);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:16px}
.cabu-modal{width:min(400px,calc(100vw - 32px));max-height:90vh;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(180deg,var(--surf-3),#081a24);border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);
  border-radius:16px;box-shadow:0 24px 70px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)))}
.cabu-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--o7)}
.cabu-title{font-size:15px;font-weight:800;color:var(--tx1)}
.cabu-x{margin-left:auto;background:none;border:0;color:#7e97a4;font-size:15px;cursor:pointer;padding:2px 6px;border-radius:6px}
.cabu-x:hover{color:#fff;background:var(--o7)}
.cabu-body{padding:16px 18px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}
.cabu-intro{margin:0;font-size:12.5px;line-height:1.55;color:var(--mut2)}
.cabu-steps{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:11.5px;line-height:1.5;color:#8ea6b3}
.cabu-steps b{color:#cfe8e2;font-weight:600}
.cabu-field{display:flex;flex-direction:column;gap:5px}
.cabu-field label{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6fb6ab}
.cabu-field input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:13px;color:#fff;outline:none;
  background:color-mix(in srgb, var(--brand) 6%, transparent);border:1px solid color-mix(in srgb, var(--brand) 20%, transparent);border-radius:8px;transition:border-color .2s}
.cabu-field input:focus{border-color:color-mix(in srgb, var(--brand) 60%, transparent)}
.cabu-field input.err{border-color:rgba(229,72,77,.55)}
.cabu-input-wrap{position:relative}
.cabu-input-wrap input{padding-right:38px}
.cabu-input-wrap svg{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--mut2);opacity:.45;pointer-events:none}
.cabu-err{font-size:11.5px;color:#f3b0b2}
.cabu-foot{flex:0 0 auto;display:flex;justify-content:flex-end;gap:10px;padding:13px 18px;border-top:1px solid var(--o7)}
.cabu-cancel{font-family:var(--font-family);font-size:12.5px;font-weight:600;color:var(--mut1);background:var(--o5);
  border:1px solid var(--o12);border-radius:9px;padding:8px 16px;cursor:pointer;transition:.14s}
.cabu-cancel:hover{color:#fff}
.cabu-go{font-family:var(--font-family);font-size:12.5px;font-weight:700;color:#06222b;background:var(--mud-palette-primary);
  border:0;border-radius:9px;padding:8px 18px;cursor:pointer;transition:.14s}
.cabu-go:hover:not(:disabled){filter:brightness(1.07);transform:translateY(-1px)}
.cabu-go:disabled{opacity:.45;cursor:not-allowed}
/* Light : la carte finissait sur un bleu nuit CODÉ EN DUR (#081a24) → bas sombre, et les textes clairs
   (steps #8ea6b3 / b #cfe8e2 / input #fff) illisibles sur le haut clair. On rétablit une carte claire +
   des textes contrastés (les inputs « marchaient » seulement car posés sur la portion sombre du dégradé). */
html[data-theme="light"] .cabu-modal{background:linear-gradient(180deg,var(--surf-1),var(--surf-3))}
html[data-theme="light"] .cabu-steps{color:var(--sl2)}
html[data-theme="light"] .cabu-steps b{color:var(--brand-strong)}
html[data-theme="light"] .cabu-field input{color:var(--tx1)}
html[data-theme="light"] .cabu-err{color:var(--color-danger,#c0392b)}
html[data-theme="light"] .cabu-x:hover{color:var(--tx1)}
html[data-theme="light"] .cabu-cancel:hover{color:var(--tx1)}
.sharelink-badge{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:6px}
.sharelink-badge.ok{color:var(--txt-teal2);background:color-mix(in srgb, var(--brand) 14%, transparent)}
.sharelink-badge.rev{color:#ffb3a3;background:rgba(253,115,88,.15)}
.sharelink-badge.exp{color:#c9b27a;background:rgba(243,156,18,.13)}
/* « Tester » rendu en <a target="_blank"> (ouverture fiable) mais stylé comme un bouton */
.sharelink-test-a{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.sharelink-item-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.sharelink-mini{flex:0 0 auto;border:1px solid color-mix(in srgb,var(--mud-palette-primary) 40%,transparent);
  background:color-mix(in srgb,var(--mud-palette-primary) 12%,transparent);color:var(--tx1);border-radius:8px;
  padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:.13s}
.sharelink-mini:hover{background:color-mix(in srgb,var(--mud-palette-primary) 24%,transparent)}
.sharelink-revoke{flex:0 0 auto;border:1px solid rgba(253,115,88,.35);background:transparent;color:#ffb3a3;
  border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer}
.sharelink-revoke:hover:not(:disabled){background:rgba(253,115,88,.12)}
.sharelink-revoke:disabled{opacity:.5;cursor:not-allowed}

/* ════════════════ ARBITRAGE RÉMUNÉRATION DIRIGEANT (salaire vs dividendes) ════════════════ */
.remun-arb-backdrop{position:fixed;inset:0;background:rgba(2,12,18,.32);backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px);z-index:5200}
.remun-arb-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:5210;width:min(96vw,1200px);max-height:92dvh;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(135deg,var(--gl80),rgba(10,26,35,.84));backdrop-filter:blur(22px) saturate(1.18);-webkit-backdrop-filter:blur(22px) saturate(1.18);
  border:1px solid color-mix(in srgb,var(--mud-palette-tertiary) 26%,var(--o12));border-radius:18px;box-shadow:0 26px 70px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)))}
/* Light : le 2ᵉ stop du dégradé était un navy CODÉ EN DUR (ne flippe pas) → modal blanc→navy boueux. Tokens --gl* (qui flippent) → frosted blanc propre. Dark inchangé. */
html[data-theme="light"] .remun-arb-modal{background:linear-gradient(135deg,var(--gl90),var(--gl80))}
/* Light : barre d'onglets en noir .18 (gris boueux) + hover #fff / actif var(--brand-strong) peu contrastés + spread-ctrl #bcd0db pâle. Dark inchangé. */
html[data-theme="light"] .remun-arb-tabs{background:var(--o4)}
html[data-theme="light"] .remun-arb-tabs button:hover{color:var(--color-text-primary)}
html[data-theme="light"] .remun-arb-tabs button.on{color:var(--brand-strong)}
html[data-theme="light"] .remun-arb-spread-ctrl{color:var(--color-text-secondary)}
/* Light : cartes de groupe (drivers) en gradient --o3 (noir-alpha faible) → aspect « washed » gris sur le modal clair.
   On pose une surface claire nette + une bordure définie pour des cartes franches. Dark inchangé. */
html[data-theme="light"] .remun-arb-group{background:var(--surf-1);border-color:var(--color-border-medium)}
/* Light : track du segmented (.remun-arb-seg) en noir .22 → gris « cheap ». Track gris clair propre (façon iOS) ;
   la pastille active (var(--mud-palette-tertiary)) et la bordure flippent déjà. Hover lisible. Dark inchangé. */
html[data-theme="light"] .remun-arb-seg{background:var(--surf-2)}
html[data-theme="light"] .remun-arb-seg button:hover{color:var(--color-text-primary)}
.remun-arb-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 20px;border-bottom:1px solid var(--o8);background:var(--o2)}
/* overflow-x:hidden EXPLICITE : sinon overflow-y:auto fait calculer overflow-x à `auto` → barre de scroll horizontale
   parasite + contenu rogné/décalé à gauche. Les éléments réellement larges (grille « Affiner », table détail) ont
   LEUR PROPRE overflow-x:auto interne → ils scrollent dans leur boîte sans décaler tout le modal. */
.remun-arb-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 20px}
.remun-arb-yr-sub{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:2px}
.remun-arb-filldown{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:18px;cursor:pointer;color:var(--mut3);background:var(--o4);border:1px solid var(--o10);border-radius:6px;transition:.12s}
.remun-arb-filldown:hover{color:#fff;background:color-mix(in srgb,var(--mud-palette-tertiary) 30%,var(--o4));border-color:color-mix(in srgb,var(--mud-palette-tertiary) 45%,transparent)}
.remun-arb-head-txt h3{margin:0;font-size:17px;color:var(--tx1);font-weight:600}
.remun-arb-head-txt p{margin:2px 0 0;font-size:12px;color:var(--mut2)}
.remun-arb-head-txt p b{color:var(--tx6)}
.remun-arb-head-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.remun-arb-master{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12px;font-weight:600;color:var(--mut2);background:var(--o4);border:1px solid var(--o12);border-radius:999px;padding:5px 12px}
.remun-arb-master.on{color:#0d9e75;border-color:color-mix(in srgb,#0d9e75 50%,transparent)}
.remun-arb-master-track{width:30px;height:17px;border-radius:999px;background:var(--o16);position:relative;flex:0 0 auto;transition:.15s}
.remun-arb-master.on .remun-arb-master-track{background:#0d9e75}
.remun-arb-master-thumb{position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#fff;transition:.15s}
.remun-arb-master.on .remun-arb-master-thumb{left:15px}
.remun-arb-close{cursor:pointer;background:none;border:none;color:var(--mut3);font-size:16px;line-height:1;padding:4px}
.remun-arb-close:hover{color:#fff}
.remun-arb-pdf{cursor:pointer;background:var(--o5);border:1px solid var(--o14);color:var(--tx4);
  font-size:12px;font-weight:600;padding:7px 13px;border-radius:9px;white-space:nowrap;transition:.15s}
.remun-arb-pdf:hover:not(:disabled){background:color-mix(in srgb, var(--brand) 14%, transparent);border-color:color-mix(in srgb, var(--brand) 35%, transparent);color:var(--brand-strong)}
.remun-arb-pdf:disabled{opacity:.5;cursor:default}
/* ── Responsive petit écran : header qui WRAP (le ✕ n'est jamais coupé), sous-titre masqué, paddings réduits, champs empilés ── */
@media(max-width:640px){
  .remun-arb-head{flex-wrap:wrap;gap:10px;padding:13px 14px}
  .remun-arb-head-txt h3{font-size:15.5px}
  .remun-arb-head-txt p{display:none}                                  /* sous-titre masqué → gain vertical */
  .remun-arb-head-actions{order:2;width:100%;justify-content:flex-end;flex-wrap:wrap}
  .remun-arb-scroll{padding:14px 14px}
}
.remun-arb-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:10px}
.remun-arb-kpi{background:var(--o3);border:1px solid var(--o8);border-radius:12px;padding:10px 13px;display:flex;flex-direction:column;gap:2px}
.remun-arb-kpi.ok{border-color:color-mix(in srgb,#0d9e75 40%,transparent)}
.remun-arb-kpi.danger{border-color:color-mix(in srgb,#f87171 45%,transparent);background:rgba(248,113,113,.06)}
.remun-arb-kpi-lbl{font-size:11px;color:var(--mut5)}
.remun-arb-kpi-val{font-size:19px;font-weight:600;color:var(--tx1);font-variant-numeric:tabular-nums}
.remun-arb-kpi-val.accent{color:var(--brand-strong)}
.remun-arb-kpi-sub{font-size:10.5px;color:var(--mut3)}
.remun-arb-kpi-sub.up{color:#34d399}.remun-arb-kpi-sub.down{color:var(--st-red)}
.remun-arb-body{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:18px}
@media(max-width:820px){.remun-arb-body{grid-template-columns:1fr}}
.remun-arb-inputs{display:flex;flex-direction:column;gap:12px;min-width:0}
.remun-arb-base{display:flex;flex-direction:column;gap:4px}
.remun-arb-base label{font-size:11px;color:var(--mut2);font-weight:600}
.remun-arb-base-row{display:flex;align-items:center;gap:6px}
.remun-arb-base small{font-size:10px;color:var(--mut3);line-height:1.4}
.remun-arb-table-head{display:grid;grid-template-columns:54px 1fr 1fr;gap:8px;font-size:10.5px;color:var(--mut3);text-transform:uppercase;letter-spacing:.04em;padding:0 2px;margin-top:4px}
.remun-arb-yr{display:grid;grid-template-columns:54px 1fr 1fr;gap:8px;align-items:center;padding:5px 2px;border-top:1px solid var(--o6)}
.remun-arb-yr-lbl{font-size:12px;color:var(--tx6);font-weight:600}
.remun-arb-yr-cell{display:flex;flex-direction:column;gap:2px;min-width:0}
.remun-arb-delta{font-size:10px;font-variant-numeric:tabular-nums;color:var(--mut3)}
.remun-arb-delta.up{color:#34d399}.remun-arb-delta.down{color:var(--st-amber)}
.remun-arb-cap{font-size:9.5px;color:var(--mut3)}
.remun-arb-fisc{display:flex;flex-direction:column;gap:6px;margin-top:6px;padding-top:10px;border-top:1px solid var(--o8)}
.remun-arb-fisc label{font-size:11px;color:var(--mut2);font-weight:600}
.remun-arb-fisc-opts{display:flex;gap:6px}
.remun-arb-fisc-opts button{flex:1;cursor:pointer;font-size:11px;font-weight:600;color:var(--mut2);background:var(--o4);border:1px solid var(--o12);border-radius:8px;padding:6px 8px}
.remun-arb-fisc-opts button.on{color:#0d141a;background:var(--mud-palette-tertiary);border-color:transparent}
.remun-arb-parts{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--mut2)}
.remun-arb-num{max-width:120px}.remun-arb-num-sm{max-width:64px}
.remun-arb-chart-wrap{display:flex;flex-direction:column;gap:8px;min-width:0}
.remun-arb-chart-head{display:flex;gap:16px;flex-wrap:wrap}
.remun-arb-legend{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--mut2)}
.remun-arb-legend .leg{width:14px;height:3px;border-radius:2px;display:inline-block}
.remun-arb-legend .leg.base{background:#94a3b8}.remun-arb-legend .leg.live{background:var(--brand)}
.remun-arb-legend.danger{color:#f43f5e}
.remun-arb-legend .leg.danger{width:10px;height:10px;border-radius:50%;background:#f43f5e;border:1.5px solid #fff;box-shadow:0 0 0 2px rgba(244,63,94,.18)}
.remun-arb-chart{height:300px;width:100%}
.remun-arb-chart-foot{font-size:10px;color:var(--mut3);margin:0}
.remun-arb-chart-foot.warn{color:#f43f5e}

/* ── Détail année par année : rémunération nette du dirigeant (sous le chart) ── */
.remun-arb-detail{margin-top:16px;background:linear-gradient(160deg,rgba(255,255,255,.022),rgba(255,255,255,.005));
  border:1px solid var(--o6);border-radius:16px;padding:14px 16px}
.remun-arb-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.remun-arb-detail-head h4{margin:0;font-size:13px;font-weight:600;color:var(--tx5);letter-spacing:.01em}
.remun-arb-detail-mode{font-size:10.5px;font-weight:600;letter-spacing:.03em;padding:3px 10px;border-radius:999px;white-space:nowrap}
.remun-arb-detail-mode.pfu{color:var(--brand-strong);background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent)}
.remun-arb-detail-mode.bareme{color:#fbbf77;background:rgba(251,146,60,.12);border:1px solid rgba(251,146,60,.3)}
.remun-arb-detail-scroll{overflow-x:auto}
.remun-arb-detail-tbl{width:100%;border-collapse:collapse;font-size:12px;min-width:560px}
/* Petit écran : la table se dimensionne sur SON CONTENU (max-content) au lieu d'être étirée à min-width:560px →
   la plage de scroll horizontal colle exactement au contenu (sinon on scrolle dans du vide après la dernière colonne). */
@media(max-width:600px){.remun-arb-detail-tbl{width:max-content;min-width:0}}
.remun-arb-detail-tbl th,.remun-arb-detail-tbl td{padding:7px 12px;text-align:right;white-space:nowrap}
.remun-arb-detail-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut5);font-weight:600;
  border-bottom:1px solid var(--o10)}
.remun-arb-detail-tbl td{color:#c4d6df;border-bottom:1px solid rgba(255,255,255,.045);font-variant-numeric:tabular-nums}
/* Colonne EXERCICE FIGÉE : z-index:2 OBLIGATOIRE (sinon les cellules scrollées, plus loin dans le DOM, se peignent
   PAR-DESSUS la cellule figée → ghosting) + fond OPAQUE sur toutes les variantes (header inclus) pour masquer le scroll. */
.remun-arb-detail-tbl .rad-yr{text-align:left;color:var(--mut2);font-weight:600;position:sticky;left:0;z-index:2;background:var(--surf-2)}
.remun-arb-detail-tbl th.rad-yr{background:var(--surf-2)}
.remun-arb-detail-tbl .rad-tax{color:#f0a98c}
.remun-arb-detail-tbl .rad-net{color:var(--brand-strong);font-weight:700}
.remun-arb-detail-tbl tbody tr:hover td{background:rgba(255,255,255,.025)}
.remun-arb-detail-tbl tbody tr:hover .rad-yr{background:var(--dk6)}
.remun-arb-detail-tbl tr.rad-exit td{background:color-mix(in srgb, var(--brand) 7%, transparent)}
.remun-arb-detail-tbl tr.rad-exit .rad-yr{background:var(--dk7);color:#9af0d6}
.remun-arb-detail-tbl tr.rad-post td{opacity:.42}
/* La cellule figée NE doit PAS hériter de l'opacity:.42 (sinon translucide → ghosting au scroll) :
   on la garde opaque (opacity:1) et on rend le grisé visuel via la COULEUR du texte. */
.remun-arb-detail-tbl tr.rad-post .rad-yr{opacity:1;color:#5f7480}
.remun-arb-detail-tbl tfoot td{padding-top:9px;border-top:1px solid var(--o16);border-bottom:none;
  font-weight:700;color:var(--tx5);background:rgba(255,255,255,.015)}
.remun-arb-detail-tbl tfoot .rad-yr{background:var(--surf-2);color:var(--tx4)}
.remun-arb-detail-tbl tfoot .rad-net{color:#7ef0cf}
.remun-arb-detail-foot{font-size:10px;color:var(--mut3);margin:9px 0 0;line-height:1.5}
/* data-bars subtiles : barre fine ancrée à droite, proportionnelle au max de la colonne (--bar = largeur, --barcol = couleur) */
.remun-arb-detail-tbl td.rad-bar{position:relative}
.remun-arb-detail-tbl td.rad-bar::after{content:"";position:absolute;bottom:3px;right:12px;height:2px;border-radius:2px;
  width:var(--bar,0);max-width:calc(100% - 24px);background:var(--barcol,rgba(255,255,255,.3));opacity:.75;pointer-events:none}
/* pastille « ? » : détail du calcul d'impôt par tranche au survol (title) */
.remun-arb-detail-tbl .rad-info{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-left:6px;
  border:1px solid var(--o22);border-radius:50%;font-size:8px;font-weight:700;color:var(--mut5);cursor:help;
  vertical-align:middle;transition:.14s;white-space:pre-line}
.remun-arb-detail-tbl .rad-info:hover{color:#06141a;background:var(--mud-palette-tertiary);border-color:var(--mud-palette-tertiary)}

/* ── Inputs (NumberStepper) dark-themés dans le modal d'arbitrage ── */
.remun-arb-modal .num-stepper{display:inline-flex;align-items:stretch;width:100%;max-width:150px;height:34px;background:var(--o5);
  border:1px solid var(--o14);border-radius:9px;overflow:hidden;transition:border-color .14s,background .14s}
.remun-arb-modal .num-stepper:focus-within{border-color:color-mix(in srgb,var(--mud-palette-tertiary) 60%,transparent);background:var(--o8)}
.remun-arb-modal .num-stepper.is-disabled{opacity:.4}
.remun-arb-modal .num-stepper-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--tx1);font-size:13.5px;font-weight:600;
  font-variant-numeric:tabular-nums;padding:0 10px;-moz-appearance:textfield}
.remun-arb-modal .num-stepper-input::-webkit-outer-spin-button,.remun-arb-modal .num-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.remun-arb-modal .num-stepper-btns{display:flex;flex-direction:column;flex:0 0 auto;border-left:1px solid var(--o10)}
.remun-arb-modal .num-stepper-btns button{flex:1;display:flex;align-items:center;justify-content:center;width:22px;background:var(--o3);border:none;color:var(--mut2);cursor:pointer;padding:0;transition:.12s}
.remun-arb-modal .num-stepper-btns button:hover{background:color-mix(in srgb,var(--mud-palette-tertiary) 25%,var(--o3));color:#fff}
.remun-arb-modal .num-stepper-up{border-bottom:1px solid var(--o8)}
/* le max-width est porté par le wrapper, pas l'input */
.remun-arb-num,.remun-arb-num-sm{max-width:none !important}
.remun-arb-parts .num-stepper{max-width:78px}
.remun-arb-base-row .num-stepper{max-width:150px}
/* Lignes par année : alternance subtile + sous-libellés alignés */
.remun-arb-yr:nth-child(even of .remun-arb-yr){background:var(--o2)}
.remun-arb-yr{border-radius:7px;padding:7px 6px}
.remun-arb-delta,.remun-arb-cap{padding-left:2px}

/* ── Layout v2 : années en colonnes (2 lignes salaire/dividende) + chart pleine largeur ── */
/* (.remun-arb-topbar : voir la définition « 3 GROUPES » plus bas, qui fait autorité) */
.remun-arb-grid{display:grid;gap:10px;align-items:center;margin-bottom:18px;overflow-x:auto}
.remun-arb-grid .num-stepper{max-width:none}
.rag-yr{text-align:center;font-size:13px;font-weight:700;color:var(--tx6);padding-bottom:3px;border-bottom:1px solid var(--o8)}
.rag-rowlbl{display:flex;flex-direction:column;gap:1px}
.rag-rowlbl span{font-size:12.5px;color:var(--tx1);font-weight:600}
.rag-rowlbl small{font-size:10px;color:var(--mut3)}
.rag-cell{display:flex;flex-direction:column;gap:2px;min-width:0}
.remun-arb-chart{height:240px;width:100%}   /* placé juste sous les drivers → plus compact pour rester visible sans scroller */

/* ── Cellule inline : input + Δ/max + flèche sur UNE ligne ── */
.rag-cell{flex-direction:row !important}
.remun-arb-grid .rag-cell .num-stepper{flex:1 1 auto;min-width:0;max-width:none}
.rag-cell .remun-arb-delta,.rag-cell .remun-arb-cap{flex:0 0 auto;white-space:nowrap;font-size:10px;line-height:1.1}
.rag-cell .remun-arb-filldown{flex:0 0 auto}
.remun-arb-grid .rag-cell{align-items:center;gap:7px}

/* ── Dividende : input € (flex) + input % (RN N-1) synchronisés ── */
.remun-arb-pctwrap{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px}
.remun-arb-grid .rag-cell .remun-arb-pctwrap .num-stepper{flex:0 0 auto;width:56px;max-width:56px}
.remun-arb-pct-suffix{flex:0 0 auto;font-size:11px;color:var(--mut2);font-weight:600}
.remun-arb-divglobal label{white-space:nowrap}

/* ════════ ARBITRAGE — refonte « moderne » (override) ════════ */
/* KPI : cartes en dégradé, filet teal en haut, icône-filigrane, glow sur la valeur accent, hover. */
.remun-arb-kpis{gap:12px}
.remun-arb-kpi{position:relative;overflow:hidden;background:linear-gradient(155deg,rgba(255,255,255,.055),rgba(255,255,255,.016));
  border:1px solid var(--o9);border-radius:15px;padding:13px 16px;transition:transform .16s,border-color .16s}
.remun-arb-kpi:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.17)}
/* (Accent teal en haut RETIRÉ : rejeté — le dégradé clipé au coin arrondi donnait une bordure épaisse qui s'arrêtait au milieu.) */
/* Ligne d'en-tête = libellé + icône en VRAIS éléments flex (l'icône ne peut plus chevaucher le libellé long,
   contrairement à l'ancien ::before en position:absolute qui retombait sur la fin du texte). */
.remun-arb-kpi-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.remun-arb-kpi-ico{flex:0 0 auto;font-size:15px;line-height:1.25;opacity:.5}
.remun-arb-kpi-lbl{font-size:11px;letter-spacing:.02em}
.remun-arb-kpi-val{font-size:21px;letter-spacing:-.02em;margin-top:1px}
.remun-arb-kpi-val.range{font-size:16px;letter-spacing:0}   /* fourchette « X – Y » : plus petit pour tenir */
.remun-arb-kpi-val.accent{color:var(--brand-strong);text-shadow:0 0 18px color-mix(in srgb, var(--brand) 40%, transparent)}
/* contrôle global de la largeur de fourchette (toujours visible, sous les KPI) */
.remun-arb-spread-ctrl{display:inline-flex;align-items:center;gap:7px;margin:0;padding:5px 14px;font-size:11.5px;color:#bcd0db;
  background:color-mix(in srgb, var(--brand) 6%, transparent);border:1px solid color-mix(in srgb, var(--brand) 18%, transparent);border-radius:11px;width:max-content;max-width:100%;flex-wrap:wrap}
.remun-arb-modal .remun-arb-spread-ctrl .num-stepper{width:62px;height:30px}
.remun-arb-spread-hint{font-size:10px;color:var(--mut3);font-style:italic}

/* ── Onglet Méthode & limites (FAQ experts) ── */
.remun-arb-faq{display:flex;flex-direction:column;gap:10px;margin:0 0 6px}
.raq-intro{margin:0 0 4px;font-size:12.5px;color:#bcd0db;line-height:1.55}
.raq-item{background:rgba(255,255,255,.022);border:1px solid var(--o6);border-radius:12px;padding:0 14px}
.raq-item>summary{list-style:none;cursor:pointer;padding:12px 0;font-size:13px;font-weight:600;color:var(--tx5);display:flex;align-items:center;gap:8px}
.raq-item>summary::-webkit-details-marker{display:none}
.raq-item>summary::before{content:"▸";color:var(--mud-palette-tertiary);font-size:12px;transition:transform .15s}
.raq-item[open]>summary::before{transform:rotate(90deg)}
.raq-item>summary:hover{color:#fff}
.raq-item p,.raq-item ul{margin:0 0 13px;font-size:12px;color:var(--mut2);line-height:1.6}
.raq-item ul{padding-left:18px;display:flex;flex-direction:column;gap:5px}
.raq-item b{color:var(--tx4);font-weight:600}
.raq-cta{display:flex;gap:12px;margin-top:4px;padding:14px 16px;border-radius:13px;
  background:linear-gradient(120deg,color-mix(in srgb, var(--brand) 10%, transparent),rgba(255,255,255,.015));border:1px solid color-mix(in srgb, var(--brand) 25%, transparent)}
.raq-cta-ico{font-size:22px;flex:0 0 auto;line-height:1.2}
.raq-cta div{font-size:12px;color:var(--tx4);line-height:1.55}
.raq-cta b{color:var(--tx1)}

/* ── Tooltip moderne global (window.__ikuTipInit dans app.js) ── */
/* Surface FROSTÉE (backdrop-blur) + bordure teintée PALETTE (--brand) + entrée « pop » (slide + fade). Sans flèche
   (look épuré). 100% tokens thème (--surf-pop / --tx5 / --shadow-col flippent) → light/dark auto, aucun override dédié.
   .below = bulle sous la cible (posée par le JS) → on inverse le sens du slide. .show = état visible (toggle JS). */
.iku-tip{position:fixed;z-index:99999;max-width:300px;padding:9px 13px;border-radius:11px;display:none;   /* AU-DESSUS de tout (ex. flyout stress z6200) : un tooltip doit toujours surpasser son déclencheur */
  background:color-mix(in srgb, var(--surf-pop) 82%, transparent);
  -webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);
  border:1px solid color-mix(in srgb, var(--brand) 30%, var(--o12));color:var(--tx5);
  font-size:11.5px;font-weight:500;line-height:1.5;white-space:pre-line;letter-spacing:.005em;
  box-shadow:0 14px 38px rgba(var(--shadow-col),calc(.5 * var(--shadow-mul)));
  pointer-events:none;opacity:0;transform:translateY(5px);transition:opacity .15s ease,transform .16s cubic-bezier(.22,.61,.36,1)}
.iku-tip.below{transform:translateY(-5px)}
.iku-tip.show{opacity:1;transform:translateY(0)}
.remun-arb-kpi.ok{background:linear-gradient(155deg,rgba(13,158,117,.15),rgba(13,158,117,.03))}
.remun-arb-kpi.danger{background:linear-gradient(155deg,rgba(248,113,113,.17),rgba(248,113,113,.04))}

/* Grille + chart : conteneurs « cartes » douces (la top-bar porte ses propres cartes-groupes). */
.remun-arb-grid{background:linear-gradient(160deg,rgba(255,255,255,.024),rgba(255,255,255,.006));border:1px solid var(--o6);border-radius:16px;padding:14px 16px;row-gap:13px}
.remun-arb-chart-wrap{background:linear-gradient(160deg,rgba(255,255,255,.022),rgba(255,255,255,.005));border:1px solid var(--o6);border-radius:16px;padding:14px 16px 8px}

/* En-têtes d'année en pills teal. */
.rag-yr{background:rgba(45,224,196,.07);border:1px solid rgba(45,224,196,.17);border-bottom:1px solid rgba(45,224,196,.17);border-radius:9px;padding:5px 0;color:#5fe3cc;font-size:13px;font-weight:700;letter-spacing:.02em}

/* Libellés de lignes : badge tinté (salaire = bleu, dividende = teal). */
.rag-rowlbl{padding:8px 11px;border-radius:11px}
.rag-rowlbl span{font-size:13px}
.rag-rowlbl-sal{background:linear-gradient(135deg,rgba(96,165,250,.12),rgba(96,165,250,.02));border:1px solid rgba(96,165,250,.16)}
.rag-rowlbl-div{background:linear-gradient(135deg,color-mix(in srgb, var(--brand) 12%, transparent),color-mix(in srgb, var(--brand) 2%, transparent));border:1px solid color-mix(in srgb, var(--brand) 16%, transparent)}

/* Inputs : anneau teal au focus + coins plus doux. */
.remun-arb-modal .num-stepper{border-radius:10px}
.remun-arb-modal .num-stepper:focus-within{box-shadow:0 0 0 3px color-mix(in srgb,var(--mud-palette-tertiary) 22%,transparent)}
/* Toggle « simulation active » : glow quand actif. */
.remun-arb-master.on{box-shadow:0 0 0 1px color-mix(in srgb,#0d9e75 40%,transparent),0 4px 16px rgba(13,158,117,.18)}

/* ── Barre de paramètres : 4 GROUPES (Salaire / Dividende / Statut / Cadre) — corps sur UNE ligne, compact ── */
.remun-arb-topbar{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin-bottom:14px;padding:0;background:none;border:none}
.remun-arb-group{flex:1 1 220px;display:flex;flex-direction:column;gap:8px;padding:9px 14px 11px;
  background:linear-gradient(160deg,var(--o3),rgba(255,255,255,.008));border:1px solid var(--o7);border-radius:13px}
.remun-arb-group-hd{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--mut5)}
/* corps = rangée compacte, mais WRAP autorisé : un groupe à 3 champs (Cadre & sortie) déborderait sinon
   (libellés `nowrap` larges type « ANNÉE DE SORTIE ») → les champs passent à la ligne au lieu d'être rognés. */
.remun-arb-group-body{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.remun-arb-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.remun-arb-field-lbl{display:flex;align-items:baseline;gap:5px;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut2);font-weight:600;white-space:nowrap}
.remun-arb-field-lbl small{font-size:9px;letter-spacing:0;text-transform:none;color:#6b8089;font-weight:500}
.remun-arb-field-ctrl{display:flex;align-items:center;gap:6px}
.remun-arb-unit{font-size:10.5px;color:var(--mut3);line-height:1.15;white-space:nowrap}
.remun-arb-field-off{opacity:.45}   /* capital social non pertinent hors TNS */
/* steppers : largeurs compactes pour tenir sur une ligne (l'ancien !important max-width:none laisse passer width) */
.remun-arb-modal .remun-arb-group .num-stepper{height:32px;width:118px}
.remun-arb-modal .remun-arb-group .remun-arb-num-sm{width:60px}
.remun-arb-exit{min-width:116px}
/* « Cadre & sortie » : Parts + Année sur 1 ligne, Plancher dessous → 2 lignes comme les autres blocs */
.remun-arb-cadre-body{flex-direction:column;align-items:stretch;gap:10px}
.remun-arb-field-pair{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.remun-arb-field-pair .remun-arb-field{flex:0 0 auto}
/* Cadre & sortie : PARTS + ANNÉE DE SORTIE sur UNE ligne (ne wrappent plus dans la largeur étroite du groupe).
   PARTS reste compact ; l'année remplit le reste et rétrécit si besoin. */
.remun-arb-cadre-body .remun-arb-field-pair{flex-wrap:nowrap}
.remun-arb-cadre-body .remun-arb-field-pair > .remun-arb-field:last-child{flex:1 1 0;min-width:0}
.remun-arb-cadre-body .remun-arb-exit{min-width:0;max-width:none}
.remun-arb-cadre-body .remun-arb-exit .custom-dropdown,
.remun-arb-cadre-body .remun-arb-exit .custom-dropdown-trigger{width:100%}
/* champ « driver » (Nouveau salaire / Dividende global) : libellé + input teintés teal, sans carte flottante */
.remun-arb-field-accent .remun-arb-field-lbl{color:var(--brand-strong)}
.remun-arb-field-accent .num-stepper{border-color:color-mix(in srgb, var(--brand) 42%, transparent);background:color-mix(in srgb, var(--brand) 7%, transparent)}
.remun-arb-field-accent .num-stepper:focus-within{border-color:var(--mud-palette-tertiary);background:color-mix(in srgb, var(--brand) 12%, transparent)}
/* flèche « actuel → nouveau » */
.remun-arb-arrow{align-self:flex-end;margin-bottom:6px;color:#4f6976;font-size:17px;line-height:1;flex:0 0 auto}
/* segmented PFU / Barème / Assimilé-TNS / objectif */
.remun-arb-seg{display:inline-flex;width:max-content;background:rgba(0,0,0,.22);border:1px solid var(--o10);border-radius:9px;padding:3px;gap:2px}
.remun-arb-seg button{border:none;background:transparent;color:var(--mut2);font-size:11px;font-weight:600;padding:6px 11px;border-radius:7px;cursor:pointer;transition:.15s;white-space:nowrap}
.remun-arb-seg button:hover{color:#fff}
.remun-arb-seg button.on{background:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text);box-shadow:0 2px 8px rgba(var(--shadow-col),calc(.28 * var(--shadow-mul)))}
@media(max-width:1080px){.remun-arb-group{flex:1 1 46%}}
@media(max-width:680px){.remun-arb-group{flex:1 1 100%}}

/* ── Barre Optimum-finder : objectif + bouton de recherche + résultat ── */
.remun-arb-optbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:14px;padding:10px 16px;
  background:linear-gradient(120deg,color-mix(in srgb, var(--brand) 7%, transparent),rgba(255,255,255,.012));border:1px solid color-mix(in srgb, var(--brand) 20%, transparent);border-radius:13px}
.remun-arb-opt-obj{display:flex;align-items:center;gap:9px}
.remun-arb-opt-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mut2);white-space:nowrap}
.remun-arb-opt-go{border:none;border-radius:9px;padding:8px 16px;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;
  background:var(--mud-palette-tertiary);color:#06141a;box-shadow:0 3px 12px color-mix(in srgb, var(--brand) calc(25% * var(--glow-mul)), transparent);transition:transform .14s,box-shadow .14s,opacity .14s}
.remun-arb-opt-go:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 16px color-mix(in srgb, var(--brand) calc(34% * var(--glow-mul)), transparent)}
.remun-arb-opt-go:disabled{opacity:.5;cursor:default}
.remun-arb-opt-res{font-size:12px;font-weight:600;color:var(--brand-strong);line-height:1.35;flex:1 1 160px}
.remun-arb-opt-res.warn{color:#fbbf77}
/* valo normalisée : checkbox + salaire de marché */
.remun-arb-opt-norm{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:#bcd0db;cursor:pointer;white-space:nowrap}
.remun-arb-opt-norm input{width:15px;height:15px;accent-color:var(--mud-palette-tertiary);cursor:pointer}
.remun-arb-opt-marche{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--mut2);white-space:nowrap}
.remun-arb-modal .remun-arb-opt-marche .num-stepper{width:108px;height:30px}
.remun-arb-opt-auto{font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand-strong);
  background:color-mix(in srgb, var(--brand) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);border-radius:999px;padding:2px 7px}
@media(max-width:680px){.remun-arb-optbar{flex-direction:column;align-items:stretch}}

/* ── Courbe objectif vs salaire ── */
.remun-arb-curve-wrap{display:flex;flex-direction:column;gap:7px;margin-bottom:14px;padding:13px 16px 9px;
  background:linear-gradient(160deg,rgba(255,255,255,.022),rgba(255,255,255,.005));border:1px solid var(--o6);border-radius:16px}
.remun-arb-curve-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.remun-arb-curve-title{font-size:12.5px;font-weight:600;color:var(--tx5)}
.remun-arb-curve-legend{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;color:var(--mut5)}
.remun-arb-curve-legend .cdot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-left:6px}
.remun-arb-curve-legend .cdot.cur{background:#60a5fa;box-shadow:0 0 0 2px rgba(255,255,255,.5)}
.remun-arb-curve-legend .cdot.opt{background:#facc15;box-shadow:0 0 0 2px rgba(6,20,26,.6)}
.remun-arb-curve-legend .cbar{width:2px;height:11px;display:inline-block;margin-left:8px;vertical-align:middle;border-radius:1px}
.remun-arb-curve-legend .cbar.t30{background:#fbb03b}.remun-arb-curve-legend .cbar.t41{background:#f87171}
.remun-arb-curve{height:210px;width:100%}
.remun-arb-curve-foot{font-size:10px;color:var(--mut3);margin:0;line-height:1.45}

/* ── Hypothèses avancées (forfaits sociaux) ── */
.remun-arb-advanced{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 22px;margin-bottom:14px;padding:13px 16px;
  background:var(--o2);border:1px solid var(--o6);border-radius:13px}
.remun-arb-advanced .remun-arb-field{flex:0 0 auto}
.remun-arb-modal .remun-arb-advanced .num-stepper{width:84px;height:30px}
.remun-arb-modal .remun-arb-advanced .remun-arb-num{width:118px}
.remun-arb-advanced-foot{flex:1 1 100%;font-size:10px;color:var(--mut3);margin:0}
.remun-arb-adv-grp{flex:1 1 100%;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--mut3);margin-top:2px}
.remun-arb-adv-check{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#bcd0db;cursor:pointer;white-space:nowrap;align-self:center}
.remun-arb-adv-check input{width:14px;height:14px;accent-color:var(--mud-palette-tertiary);cursor:pointer}

/* ── Phrase de synthèse (sous les KPI) ── */
.remun-arb-synthese{margin:0 0 10px;padding:11px 16px;font-size:13.5px;font-weight:600;line-height:1.4;color:var(--tx5);
  background:linear-gradient(120deg,color-mix(in srgb, var(--brand) 10%, transparent),rgba(255,255,255,.015));border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);
  border-left:3px solid var(--mud-palette-tertiary);border-radius:11px}
.remun-arb-synthese.warn{background:linear-gradient(120deg,rgba(251,146,60,.1),rgba(255,255,255,.015));border-color:rgba(251,146,60,.28);border-left-color:#fbbf77}

/* ── Onglets Pilotage / Optimisation / Détail ── */
.rag-hide{display:none!important}
/* Barre onglets + réglage fourchette de valo sur la MÊME ligne (onglets à gauche, fourchette poussée à droite). */
/* align-items:stretch → les deux pilules (onglets / fourchette) ont EXACTEMENT la même hauteur (celle du plus grand contenu, ici réduit). */
.remun-arb-toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:10px 18px;flex-wrap:wrap;margin-bottom:10px}
.remun-arb-tabs{display:flex;align-items:center;gap:6px;padding:3px;width:max-content;
  background:rgba(0,0,0,.18);border:1px solid var(--o7);border-radius:12px}
.remun-arb-tabs button{border:none;background:transparent;color:var(--mut2);font-size:12.5px;font-weight:600;padding:6px 15px;border-radius:9px;cursor:pointer;transition:.15s;white-space:nowrap}
.remun-arb-tabs button:hover{color:#fff}
.remun-arb-tabs button.on{background:color-mix(in srgb, var(--brand) 16%, transparent);color:var(--brand-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--brand) calc(30% * var(--glow-mul)), transparent)}
@media(max-width:680px){.remun-arb-tabs{flex:1 1 100%;width:auto}.remun-arb-tabs button{flex:1;padding:8px 6px;font-size:11.5px}
  .remun-arb-toolbar .remun-arb-spread-ctrl{width:100%;justify-content:flex-start}}

/* ── Comparatif Aujourd'hui / Votre scénario / Optimum ── */
.remun-arb-compare{margin:0 0 14px;padding:6px 8px;background:linear-gradient(160deg,rgba(255,255,255,.024),rgba(255,255,255,.006));
  border:1px solid var(--o7);border-radius:14px}
.rac-row{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;align-items:center;gap:8px;padding:6px 10px}
.rac-row .rac-lbl{text-align:left;font-size:11px;color:var(--mut2);font-weight:600}
.rac-row span:not(.rac-lbl){text-align:right;font-size:11.5px;color:#c4d6df;font-variant-numeric:tabular-nums;white-space:nowrap}
.rac-lbl small{font-size:9px;color:#6b8089;font-weight:500;margin-left:4px}
.rac-head{border-bottom:1px solid var(--o10)}
.rac-head span{font-size:10px!important;text-transform:uppercase;letter-spacing:.05em;color:var(--mut5);font-weight:700}
.rac-opt{color:var(--brand-strong)!important;font-weight:700}
.rac-row:not(.rac-head):not(.rac-total):nth-child(even){background:rgba(255,255,255,.016);border-radius:7px}
.rac-total{border-top:1px solid var(--o14);margin-top:2px}
.rac-total span{font-weight:700;color:var(--tx5);font-size:12px}
.rac-total .rac-opt{color:#7ef0cf!important}
.rac-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 10px 5px}
.rac-gain{font-size:11.5px;color:var(--mut2)}
.rac-gain b.up{color:var(--brand-strong)}.rac-gain b.down{color:#f0a98c}
.rac-apply{border:none;border-radius:9px;padding:7px 15px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;
  background:var(--mud-palette-tertiary);color:#06141a;box-shadow:0 3px 12px color-mix(in srgb, var(--brand) calc(25% * var(--glow-mul)), transparent);transition:transform .14s,box-shadow .14s,opacity .14s}
.rac-apply:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 16px color-mix(in srgb, var(--brand) calc(34% * var(--glow-mul)), transparent)}
.rac-apply:disabled{opacity:.5;cursor:default}
@media(max-width:680px){.rac-row{gap:4px;padding:5px 6px}.rac-row span:not(.rac-lbl){font-size:11px}.rac-total span{font-size:12px}}
/* Petit écran : les fourchettes (nowrap) ne rentrent pas en 4 colonnes → le comparatif scrolle horizontalement en interne
   (ses lignes gardent un min-width lisible) plutôt que d'être rognées par l'overflow-x:hidden du modal. */
@media(max-width:520px){.remun-arb-compare{overflow-x:auto}.rac-row,.rac-foot{min-width:430px}}

/* ── Dumbbell : fourchette de patrimoine net fiscal par scénario (valeur ± X %) ── */
.remun-arb-dumbbell{margin:0 0 14px;padding:13px 16px 9px;background:linear-gradient(160deg,rgba(255,255,255,.024),rgba(255,255,255,.006));
  border:1px solid var(--o6);border-radius:14px}
.rdb-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.rdb-title{font-size:12.5px;font-weight:600;color:var(--tx5)}
.rdb-spread{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--mut2);white-space:nowrap}
.remun-arb-modal .rdb-spread .num-stepper{width:62px;height:30px}
.rdb-row{display:grid;grid-template-columns:108px 1fr 92px;align-items:center;gap:12px;padding:7px 0}
.rdb-lbl{font-size:11.5px;color:var(--mut2);font-weight:600;white-space:nowrap}
.rdb-track{position:relative;height:14px}
.rdb-track::before{content:"";position:absolute;top:50%;left:0;right:0;height:2px;transform:translateY(-50%);background:var(--o7);border-radius:2px}
.rdb-bar{position:absolute;top:50%;height:6px;transform:translateY(-50%);border-radius:4px;min-width:2px}
.rdb-dot{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px rgba(6,20,26,.55)}
.rdb-val{font-size:12.5px;font-weight:700;color:var(--tx5);text-align:right;font-variant-numeric:tabular-nums}
.rdb-today .rdb-bar{background:rgba(148,163,184,.4)}.rdb-today .rdb-dot{background:#94a3b8}
.rdb-now .rdb-bar{background:rgba(96,165,250,.45)}.rdb-now .rdb-dot{background:#60a5fa}
.rdb-opt .rdb-bar{background:color-mix(in srgb, var(--brand) 50%, transparent)}.rdb-opt .rdb-dot{background:var(--mud-palette-tertiary)}
.rdb-opt .rdb-lbl,.rdb-opt .rdb-val{color:var(--brand-strong)}
.rdb-foot{font-size:10px;color:var(--mut3);margin:6px 0 0;line-height:1.45}
/* toggle PFU/Barème dans l'en-tête de la table de détail */
.remun-arb-detail-seg button{padding:5px 11px;font-size:11px}

/* ── Bouton « Affiner année par année » : pilule pleine largeur qui déplie la grille détaillée ── */
.remun-arb-expand{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;margin-bottom:14px;
  padding:10px 16px;background:var(--o3);border:1px solid var(--o8);
  border-radius:12px;color:#bcd0db;font-size:12.5px;font-weight:600;letter-spacing:.01em;
  cursor:pointer;transition:background .15s,border-color .15s}
.remun-arb-expand:hover{background:rgba(255,255,255,.055);border-color:color-mix(in srgb, var(--brand) 35%, transparent)}
.remun-arb-expand.open{background:linear-gradient(135deg,color-mix(in srgb, var(--brand) 10%, transparent),transparent);border-color:color-mix(in srgb, var(--brand) 32%, transparent)}
.remun-arb-expand-chev{color:var(--mut3);transition:transform .2s ease;flex:0 0 auto}
.remun-arb-expand.open .remun-arb-expand-chev{transform:rotate(180deg);color:var(--mud-palette-tertiary)}
.remun-arb-expand-lbl{flex:1 1 auto;text-align:left}
.remun-arb-expand-hint{font-size:10.5px;font-weight:500;color:#6b8089;text-transform:uppercase;letter-spacing:.05em}

/* ── Grille : plus COMPACTE + 1re colonne (libellés) FIXE au scroll horizontal ── */
.remun-arb-grid{position:relative;padding:10px 12px;gap:8px;row-gap:9px}
.remun-arb-modal .num-stepper{height:30px}
.remun-arb-modal .num-stepper-input{font-size:12px;padding:0 8px}
.remun-arb-grid .rag-cell{gap:5px}
.remun-arb-grid .rag-cell .remun-arb-pctwrap .num-stepper{width:46px;max-width:46px}
.rag-cell .remun-arb-delta,.rag-cell .remun-arb-cap,.remun-arb-pct-suffix{font-size:9.5px}
.remun-arb-filldown{width:20px;height:17px}
.rag-yr{padding:4px 0;font-size:12px}
.rag-rowlbl{padding:6px 9px}
.rag-rowlbl span{font-size:12px}
.rag-rowlbl small{font-size:9px}
/* 1re colonne figée : sticky left:0 + fond opaque pour masquer les colonnes qui défilent dessous */
.rag-corner,.rag-rowlbl{position:sticky;left:0;z-index:3;background:var(--surf-2);border-right:1px solid var(--o8)}
.rag-rowlbl{box-shadow:6px 0 12px -7px rgba(var(--shadow-col),calc(.55 * var(--shadow-mul)))}
.rag-rowlbl-sal{background:linear-gradient(135deg,rgba(96,165,250,.16),var(--surf-2) 58%)}
.rag-rowlbl-div{background:linear-gradient(135deg,color-mix(in srgb, var(--brand) 16%, transparent),var(--surf-2) 58%)}
.rag-rowlbl-max{background:linear-gradient(135deg,rgba(251,176,59,.16),var(--surf-2) 58%)}

/* ── Ligne « Capacité max » : chip salaire max + bouton « appliquer le max » ── */
.rag-cell.rag-max{flex-direction:column !important;align-items:flex-start !important;gap:5px;justify-content:center}
.rag-max-val{font-size:11px;color:var(--mut2);cursor:help;white-space:nowrap}
.rag-max-val b{color:#fbbf77;font-weight:700;font-variant-numeric:tabular-nums}
.rag-max-apply{border:1px solid rgba(251,176,59,.32);background:rgba(251,176,59,.1);color:#fbbf77;
  font-size:10px;font-weight:700;padding:4px 9px;border-radius:7px;cursor:pointer;white-space:nowrap;transition:.14s}
.rag-max-apply:hover{background:rgba(251,176,59,.2);border-color:rgba(251,176,59,.5)}

/* ── € plus petits + « Salaire cible » sur une ligne (rangées de même hauteur) ── */
.rag-rowlbl span{white-space:nowrap}
.remun-arb-grid{align-items:center}
.remun-arb-grid .rag-sal > .num-stepper{max-width:132px}
.remun-arb-grid .rag-div > .num-stepper{flex:0 0 auto;width:92px;max-width:92px}
.remun-arb-grid .rag-div .remun-arb-pctwrap .num-stepper{width:44px;max-width:44px}

/* ═══════════════════════════════════════════════════════════════════════════════════════════
   RAPPORT DYNAMIQUE « slides à slots » — VIEWER (.srv-*) + renderer de slot (.slv-*)
   ═══════════════════════════════════════════════════════════════════════════════════════════ */

/* ── Viewer : plein écran, parcours d'une slide à la fois ── */
.srv-root{position:fixed;inset:0;z-index:4000;display:flex;flex-direction:column;
  background:var(--surf-1,#0e1620);color:var(--tx1,#e8eef2);outline:none;font-family:system-ui,sans-serif}
.srv-bar{display:flex;align-items:center;gap:11px;padding:11px 18px;border-bottom:1px solid var(--o8,rgba(255,255,255,.07));flex:0 0 auto;
  background:linear-gradient(180deg,color-mix(in srgb,var(--brand,#00B1CF) 5%,transparent),transparent)}
.srv-bar-title{font-weight:800;font-size:15px;letter-spacing:.1px;display:inline-flex;align-items:center;gap:9px}
.srv-bar-title::before{content:"";width:4px;height:18px;border-radius:3px;background:var(--brand,#00B1CF);flex:0 0 auto}
.srv-bar-count{font-size:11px;font-weight:700;color:var(--mut2,#9aa7b0);font-variant-numeric:tabular-nums;
  background:var(--o7,rgba(255,255,255,.06));border:1px solid var(--o8,rgba(255,255,255,.1));border-radius:999px;padding:3px 10px}
.srv-bar-sp{flex:1 1 auto}
.srv-x{border:1px solid var(--o8,rgba(255,255,255,.12));background:transparent;color:inherit;width:32px;height:32px;
  border-radius:9px;cursor:pointer;font-size:14px;transition:.14s;display:inline-flex;align-items:center;justify-content:center}
.srv-x:hover{background:var(--o8,rgba(255,255,255,.08));border-color:color-mix(in srgb,var(--brand,#00B1CF) 50%,transparent)}
.srv-x.ok{color:#34d399;border-color:color-mix(in srgb,#34d399 55%,transparent)}
/* Indice clavier/swipe : pilule discrète sous la barre, s'estompe après quelques secondes. */
.srv-keyhint{align-self:center;margin:8px auto -4px;padding:5px 13px;border-radius:999px;font-size:11px;font-weight:600;
  color:var(--mut2,#9aa7b0);background:var(--o4,rgba(255,255,255,.05));border:1px solid var(--o8,rgba(255,255,255,.1));
  animation:srvHintFade .4s ease,srvHintOut .6s ease 3.6s forwards}
@@keyframes srvHintFade{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@@keyframes srvHintOut{to{opacity:0}}
/* Notes du présentateur (émetteur uniquement) : bande ambre discrète en bas du parcours. */
.srv-notes{flex:0 0 auto;margin:0 18px 12px;padding:9px 14px;border-radius:10px;font-size:12.5px;line-height:1.5;
  color:var(--tx1,#eaf2f5);background:color-mix(in srgb,#eab308 10%,var(--o4,rgba(255,255,255,.05)));
  border:1px solid color-mix(in srgb,#eab308 30%,transparent);max-height:22vh;overflow-y:auto}
.srv-notes-h{display:block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#eab308;margin-bottom:3px}
.srv-notes p{margin:0;white-space:pre-wrap}
.srv-notes-empty{opacity:.55;font-style:italic}

.srv-stagewrap{flex:1 1 auto;display:flex;align-items:center;justify-content:center;gap:14px;padding:22px 18px;min-height:0}
.srv-stage{position:relative;width:min(100%,calc((100vh - 154px) * 16 / 9));aspect-ratio:16/9;
  background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.08));border-radius:16px;overflow:hidden;
  box-shadow:0 30px 80px -28px rgba(0,0,0,.62),0 2px 10px -4px rgba(0,0,0,.3);container-type:inline-size}
html[data-theme="light"] .srv-stage{box-shadow:0 24px 60px -28px rgba(20,40,55,.34),0 1px 4px rgba(20,40,55,.08)}
/* Transition de slide (alternance de nom d'animation → redéclenche à chaque changement, sans remonter les composants) */
.srv-stage[data-anim]{animation:srvFade .34s ease}
.srv-stage[data-anim="1"]{animation-name:srvFadeB}
@keyframes srvFade{from{opacity:.2;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes srvFadeB{from{opacity:.2;transform:translateY(6px)}to{opacity:1;transform:none}}
/* Barre de progression du parcours */
.srv-progress{flex:0 0 auto;height:3px;background:var(--o8,rgba(255,255,255,.08))}
.srv-progress-fill{height:100%;background:var(--brand,#00B1CF);transition:width .35s ease;border-radius:0 2px 2px 0}

/* Cover RAPPORT-ONLY : masque tout le hub FecLoader (le viewer verrouillé z-4000 se pose au-dessus) */
.report-only-cover{position:fixed;inset:0;z-index:3900;background:var(--surf-app,#071D28);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:16px;color:var(--mut2,#9aa7b0)}
.roc-spin{width:34px;height:34px;border:3px solid var(--o8,rgba(255,255,255,.2));border-top-color:var(--brand,#00B1CF);border-radius:50%;animation:slv-spin .8s linear infinite}
.roc-txt{font-size:14px;font-weight:600}

/* Slot positionné en % par la disposition */
.srv-slot{position:absolute;overflow:hidden}

/* Bandeau de titre de slide */
.srv-heading{position:absolute;left:4%;top:2.5%;right:4%;height:9%;display:flex;align-items:baseline;gap:12px}
.srv-heading-t{font-size:clamp(15px,2.4cqw,26px);font-weight:800;letter-spacing:.2px;color:var(--brand,#00B1CF)}
.srv-heading-s{font-size:clamp(11px,1.3cqw,15px);color:var(--mut2,#9aa7b0)}

/* Page de garde */
.srv-cover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.4cqw;padding:9%;text-align:center;
  background:radial-gradient(130% 120% at 50% -10%,color-mix(in srgb,var(--brand) 18%,transparent),transparent 58%),
             linear-gradient(180deg,transparent,color-mix(in srgb,var(--brand) 5%,transparent))}
.srv-cover-logo{max-height:13%;max-width:38%;object-fit:contain;margin-bottom:1.2cqw}
.srv-cover-title{font-size:clamp(22px,4.6cqw,54px);font-weight:900;line-height:1.05;letter-spacing:-.6px;max-width:88%}
/* Ligne d'accent sous le titre = touche premium */
.srv-cover-title::after{content:"";display:block;width:clamp(40px,6cqw,72px);height:4px;border-radius:3px;margin:2.4cqw auto 0;
  background:linear-gradient(90deg,var(--brand,#00B1CF),color-mix(in srgb,var(--brand,#00B1CF) 35%,transparent))}
.srv-cover-sub{font-size:clamp(13px,1.95cqw,22px);color:var(--mut2,#9aa7b0);max-width:74%;line-height:1.4;font-weight:500}
.srv-cover-foot{position:absolute;bottom:6%;font-size:clamp(10px,1.2cqw,14px);color:var(--mut2,#9aa7b0);opacity:.8}

/* ── Styles de PAGE DE GARDE (galerie, parité avec l'éditeur PDF). L'accent suit --brand. S'applique au viewer (.srv-cover) ET à l'éditeur (.srb-cover). ──
   classic = base ci-dessus (centré) — aucune surcharge nécessaire. */
/* Bandeau d'accent derrière le titre */
.srv-cover.cov-bandeau::before,.srb-cover.cov-bandeau::before{content:"";position:absolute;left:0;right:0;top:36%;height:26%;z-index:0;
  background:linear-gradient(90deg,color-mix(in srgb,var(--brand) 26%,transparent),color-mix(in srgb,var(--brand) 6%,transparent))}
.srv-cover.cov-bandeau>*,.srb-cover.cov-bandeau>*{position:relative;z-index:1}
.srv-cover.cov-bandeau .srv-cover-title::after{display:none}
/* Épuré : pas de fond, titre plus léger, filet fin */
.srv-cover.cov-minimal,.srb-cover.cov-minimal{background:none;gap:1.4cqw}
.srv-cover.cov-minimal .srv-cover-logo,.srb-cover.cov-minimal .srb-cover-logo{max-height:8%;opacity:.85}
.srv-cover.cov-minimal .srv-cover-title{font-weight:800;letter-spacing:-.2px}
.srv-cover.cov-minimal .srv-cover-title::after{width:clamp(26px,3.2cqw,40px);height:2px;margin-top:1.6cqw}
.srv-cover.cov-minimal .srv-cover-sub{font-weight:400}
/* Barre latérale gauche + texte aligné à gauche */
.srv-cover.cov-lateral,.srb-cover.cov-lateral{align-items:flex-start;text-align:left;padding-left:13%}
.srv-cover.cov-lateral::before,.srb-cover.cov-lateral::before{content:"";position:absolute;left:0;top:0;bottom:0;width:1.8cqw;background:var(--brand)}
.srv-cover.cov-lateral .srv-cover-title::after{margin-left:0;margin-right:auto}
.srv-cover.cov-lateral .srv-cover-foot{left:13%}
.srb-cover.cov-lateral .srb-cover-title-in,.srb-cover.cov-lateral .srb-cover-sub-in{text-align:left;width:74%}
/* Diagonale : bandeau d'accent incliné en haut, contenu poussé sous le bandeau */
.srv-cover.cov-diagonale,.srb-cover.cov-diagonale{justify-content:flex-start;padding-top:30%}
.srv-cover.cov-diagonale::before,.srb-cover.cov-diagonale::before{content:"";position:absolute;left:0;right:0;top:0;height:24%;
  background:linear-gradient(90deg,var(--brand),color-mix(in srgb,var(--brand) 55%,transparent));clip-path:polygon(0 0,100% 0,100% 60%,0 100%)}
/* Ruban : large bande latérale gauche, contenu décalé à droite */
.srv-cover.cov-ruban,.srb-cover.cov-ruban{align-items:flex-start;text-align:left;padding-left:34%}
.srv-cover.cov-ruban::before,.srb-cover.cov-ruban::before{content:"";position:absolute;left:0;top:0;bottom:0;width:27%;background:var(--brand)}
.srv-cover.cov-ruban .srv-cover-title::after{margin-left:0;margin-right:auto}
.srv-cover.cov-ruban .srv-cover-foot{left:34%}
.srb-cover.cov-ruban .srb-cover-title-in,.srb-cover.cov-ruban .srb-cover-sub-in{text-align:left;width:60%}
/* Cadre d'angles décoratifs (centré) */
.srv-cover.cov-angles::before,.srb-cover.cov-angles::before{content:"";position:absolute;top:6%;left:5%;width:11%;height:8%;border-top:3px solid var(--brand);border-left:3px solid var(--brand)}
.srv-cover.cov-angles::after,.srb-cover.cov-angles::after{content:"";position:absolute;bottom:6%;right:5%;width:11%;height:8%;border-bottom:3px solid var(--brand);border-right:3px solid var(--brand)}
/* Bandeau d'accent en pied (titre poussé en haut) */
.srv-cover.cov-pied,.srb-cover.cov-pied{justify-content:flex-start;padding-top:15%}
.srv-cover.cov-pied::before,.srb-cover.cov-pied::before{content:"";position:absolute;left:0;right:0;bottom:0;height:14%;
  background:linear-gradient(90deg,var(--brand),color-mix(in srgb,var(--brand) 45%,transparent))}
.srv-cover.cov-pied .srv-cover-foot{color:#fff;opacity:.95;bottom:5%}
.srb-cover.cov-pied .srb-cover-foot-in{color:#fff;opacity:.95}

/* Flèches de navigation */
.srv-nav{flex:0 0 auto;width:48px;height:48px;border-radius:50%;border:1px solid var(--o8,rgba(255,255,255,.14));
  background:var(--surf-2,#16212e);color:var(--tx2,#c8d3da);font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:transform .14s ease,background .14s ease,box-shadow .14s ease,color .14s ease,border-color .14s ease;text-decoration:none;
  box-shadow:0 4px 14px -6px rgba(0,0,0,.4)}
.srv-nav:hover:not(:disabled){background:var(--brand,#00B1CF);color:#fff;border-color:transparent;transform:scale(1.08);box-shadow:0 8px 22px -8px color-mix(in srgb,var(--brand,#00B1CF) 70%,transparent)}
.srv-nav:disabled{opacity:.22;cursor:default;box-shadow:none}
.srv-nav svg{width:21px;height:21px;display:block}
.srv-cta-side{background:var(--brand,#00B1CF);color:#fff;border-color:transparent;box-shadow:0 8px 22px -8px color-mix(in srgb,var(--brand,#00B1CF) 70%,transparent)}

/* Pied : préc/suiv + pastilles + CTA */
.srv-foot{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:11px 18px;border-top:1px solid var(--o8,rgba(255,255,255,.07))}
.srv-foot-btn{border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:inherit;padding:9px 16px;border-radius:10px;
  cursor:pointer;font-size:13px;font-weight:600;transition:.14s}
.srv-foot-btn:hover:not(:disabled){background:var(--o8,rgba(255,255,255,.08));border-color:color-mix(in srgb,var(--brand,#00B1CF) 45%,transparent)}
.srv-foot-btn:disabled{opacity:.3;cursor:default}
/* Retour rapide au sommaire */
.srv-foot-toc{color:var(--mut2,#9aa7b0);padding-inline:13px}
.srv-foot-toc:hover:not(:disabled){color:var(--brand,#00B1CF)}
/* « Suivant » = action primaire (brand) pour guider le parcours */
.srv-foot-next{margin-left:auto;background:var(--brand,#00B1CF);color:#fff;border-color:transparent;
  box-shadow:0 6px 16px -8px color-mix(in srgb,var(--brand,#00B1CF) 75%,transparent)}
.srv-foot-next:hover:not(:disabled){background:var(--brand,#00B1CF);filter:brightness(1.08);transform:translateY(-1px)}
.srv-foot-next:disabled{background:transparent;color:inherit;box-shadow:none}
.srv-dots{flex:1 1 auto;display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap}
.srv-dot{width:8px;height:8px;border-radius:50%;border:none;background:var(--o8,rgba(255,255,255,.24));cursor:pointer;padding:0;transition:.18s ease}
.srv-dot:hover{transform:scale(1.3);background:color-mix(in srgb,var(--brand,#00B1CF) 55%,var(--o8,rgba(255,255,255,.24)))}
.srv-dot.on{background:var(--brand,#00B1CF);width:24px;border-radius:5px}
.srv-foot-cta{margin-left:auto;background:var(--brand,#00B1CF);color:#fff;padding:9px 18px;border-radius:10px;font-weight:700;
  font-size:13px;text-decoration:none;transition:.14s}
.srv-foot-cta:hover{filter:brightness(1.08);transform:translateY(-1px)}

/* ── Q&A lecteur (panneau latéral) ── */
.srv-qa{position:absolute;top:54px;right:14px;bottom:64px;width:min(360px,84vw);z-index:10;display:flex;flex-direction:column;
  background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.12));border-radius:14px;overflow:hidden;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.6)}
.srv-qa-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--o8,rgba(255,255,255,.08));font-weight:800;font-size:13px}
.srv-qa-x{border:none;background:transparent;color:var(--mut2,#9aa7b0);cursor:pointer;font-size:13px}
.srv-qa-thread{flex:1 1 auto;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.srv-qa-empty{font-size:12px;color:var(--mut2,#9aa7b0);font-style:italic;line-height:1.5}
.srv-qa-msg{display:flex;flex-direction:column;gap:5px}
.srv-qa-q{background:color-mix(in srgb,var(--brand) 14%,transparent);border-radius:10px 10px 10px 3px;padding:8px 11px;font-size:13px;align-self:flex-start;max-width:92%}
.srv-qa-a{background:var(--o8,rgba(255,255,255,.06));border-radius:10px 10px 3px 10px;padding:8px 11px;font-size:13px;align-self:flex-end;max-width:92%}
.srv-qa-pending{font-size:11px;color:var(--mut2,#9aa7b0);font-style:italic;align-self:flex-end}
.srv-qa-compose{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--o8,rgba(255,255,255,.08))}
.srv-qa-compose textarea{flex:1 1 auto;resize:none;background:var(--surf-1,#0e1620);border:1px solid var(--o8,rgba(255,255,255,.14));color:inherit;border-radius:9px;padding:8px;font-size:13px;outline:none;font-family:inherit}
.srv-qa-send{flex:0 0 auto;align-self:flex-end;background:var(--brand,#00B1CF);color:#fff;border:none;border-radius:9px;padding:9px 12px;cursor:pointer;font-weight:700;font-size:12px}
.srv-qa-send:disabled{opacity:.45;cursor:default}
/* Q&A asynchrone (PDF porteur, 0 cloud) : badge page, bouton répondre, bouton « enregistrer & renvoyer », confirmation */
.srv-qa-pg{font-size:9.5px;font-weight:700;color:var(--brand,#00B1CF);opacity:.8;margin-left:4px}
.srv-qa-reply{align-self:flex-start;background:transparent;border:1px solid var(--o8,rgba(255,255,255,.18));color:var(--mut2,#9aa7b0);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:600;cursor:pointer;margin-top:2px}
.srv-qa-reply:hover{color:var(--brand,#00B1CF);border-color:var(--brand,#00B1CF)}
.srv-qa-save{margin:0 12px 12px;background:var(--brand,#00B1CF);color:#fff;border:none;border-radius:10px;padding:10px;cursor:pointer;font-weight:800;font-size:12.5px}
.srv-qa-save:disabled{opacity:.55;cursor:default}
.srv-qa-saved{margin:0 12px 12px;font-size:11px;color:#34c759;line-height:1.4}
/* PDF porteur 0 cloud — émetteur : bouton flottant « Reprendre le Q&A » (visible quand la liseuse est fermée) */
.carrier-reopen{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:9000;background:var(--brand,#00B1CF);color:#04222a;border:none;border-radius:999px;padding:10px 18px;font-weight:800;font-size:13px;cursor:pointer;box-shadow:0 12px 34px -8px rgba(0,0,0,.5)}
.carrier-reopen:hover{filter:brightness(1.07)}

/* ── Renderer de slot : le contenu remplit la boîte ── */
.slv-content{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}
.slv-content > *{min-height:0}
.slv-chart{width:100%;height:100%;overflow:hidden}
.slv-table{width:100%;height:100%;overflow:auto}
.slv-img,.slv-block-img{width:100%;height:100%;object-fit:contain;display:block}
.slv-empty-data{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--mut2,#9aa7b0);
  font-size:12px;font-style:italic;border:1px dashed var(--o8,rgba(255,255,255,.16));border-radius:10px;text-align:center;padding:8px}

/* KPI */
.slv-kpi{display:flex;flex-direction:column;justify-content:center;gap:4px;height:100%;padding:6%}
.slv-kpi-lbl{font-size:clamp(10px,1.1cqw,13px);color:var(--mut2,#9aa7b0);font-weight:600}
.slv-kpi-val{font-size:clamp(20px,3.4cqw,40px);font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.slv-kpi-var{font-size:clamp(10px,1.2cqw,14px);font-weight:700}
.slv-kpi-var.up{color:#5DCAA5}.slv-kpi-var.down{color:#F0997B}
.slv-kpi-vs{color:var(--mut2,#9aa7b0);font-weight:500;font-size:.85em}
.slv-kpi-spark{width:100%;height:26px;margin-top:4px}
.slv-kpi-spark polyline{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}
.slv-spark-prev{stroke-dasharray:3 3;opacity:.6}

/* Texte / commentaire */
.slv-text{height:100%;box-sizing:border-box;padding:5% 6%;border-radius:10px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.slv-text-title{font-size:clamp(13px,1.7cqw,20px);font-weight:800;color:var(--brand,#00B1CF)}
.slv-text-body{font-size:clamp(11px,1.25cqw,15px);line-height:1.5}
.slv-text-bullets{margin:0;padding-left:1.2em;font-size:clamp(11px,1.25cqw,15px);line-height:1.5}
.slv-text-bullets li{margin:2px 0}

/* Chargement datablock */
.slv-block-load{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.slv-block-load-ov{position:absolute;inset:0}
.slv-spin{width:24px;height:24px;border:3px solid var(--o8,rgba(255,255,255,.2));border-top-color:var(--brand,#00B1CF);
  border-radius:50%;animation:slv-spin .8s linear infinite}
@keyframes slv-spin{to{transform:rotate(360deg)}}

/* Bloc d'analyse en attente d'aperçu (builder) : rendu à la demande → non bloquant tant qu'on n'a pas cliqué */
.slv-block-pick{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:100%;height:100%;
  padding:10px;text-align:center;border:1px dashed color-mix(in srgb,var(--brand,#00B1CF) 35%,transparent);border-radius:10px;
  background:color-mix(in srgb,var(--brand,#00B1CF) 4%,transparent)}
.slv-block-pick-lbl{font-size:12px;font-weight:600;color:var(--mut1,#9bb3bd);line-height:1.3}
.slv-block-pick-btn{border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 45%,transparent);background:transparent;
  color:var(--brand,#00B1CF);border-radius:8px;font-size:12px;font-weight:700;padding:6px 13px;cursor:pointer;transition:.12s}
.slv-block-pick-btn:hover{background:color-mix(in srgb,var(--brand,#00B1CF) 12%,transparent)}
/* Datablock LIVE (clone du nœud data-blk mis à l'échelle) */
.slv-block-livewrap{position:relative;width:100%;height:100%;overflow:hidden}
.slv-block-live{position:absolute;inset:0;overflow:hidden}

@media (max-width:760px){
  .srv-stage{width:100%}
  .srv-nav{width:38px;height:38px;font-size:22px}
  .srv-dots{display:none}
}

/* ═══════════════════════════════════════════════════════════════════════════════════════════
   RAPPORT DYNAMIQUE — BUILDER (.srb-*)
   ═══════════════════════════════════════════════════════════════════════════════════════════ */
.srb-root{position:fixed;inset:0;z-index:4050;display:flex;flex-direction:column;background:var(--surf-1,#0e1620);color:var(--tx1,#e8eef2);font-family:system-ui,sans-serif}
.srb-top{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--o8,rgba(255,255,255,.08));flex:0 0 auto}
.srb-top-ico{font-size:18px}
.srb-title-in{font-size:15px;font-weight:800;background:transparent;border:none;border-bottom:1.5px solid transparent;color:inherit;padding:4px 2px;min-width:180px;outline:none}
.srb-title-in:focus{border-bottom-color:var(--brand,#00B1CF)}
.srb-sub-in{font-size:12px;background:transparent;border:none;border-bottom:1px solid var(--o8,rgba(255,255,255,.12));color:var(--mut2,#9aa7b0);padding:4px 2px;min-width:160px;outline:none}
.srb-sub-in:focus{border-bottom-color:var(--brand,#00B1CF)}
.srb-top-sp{flex:1 1 auto}
.srb-btn{border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:inherit;padding:7px 13px;border-radius:9px;cursor:pointer;font-size:13px;font-weight:600;transition:.14s;white-space:nowrap}
.srb-btn:hover:not(:disabled){background:var(--o8,rgba(255,255,255,.08))}
.srb-btn:disabled{opacity:.4;cursor:default}
.srb-btn-pub{background:var(--brand,#00B1CF);color:#fff;border-color:transparent}
.srb-btn-pub:hover:not(:disabled){filter:brightness(1.08)}
.srb-x{border:1px solid var(--o8,rgba(255,255,255,.12));background:transparent;color:inherit;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:14px;transition:.14s}
.srb-x:hover{background:var(--o8,rgba(255,255,255,.08))}

.srb-body{flex:1 1 auto;display:flex;min-height:0}

/* Rail des slides */
.srb-rail{flex:0 0 196px;display:flex;flex-direction:column;gap:8px;padding:12px;overflow-y:auto;border-right:1px solid var(--o8,rgba(255,255,255,.08));background:var(--surf-2,#16212e)}
.srb-thumb{display:grid;grid-template-columns:auto 44px 1fr;grid-template-rows:auto auto;gap:2px 8px;align-items:center;padding:8px;border-radius:10px;border:1px solid var(--o8,rgba(255,255,255,.1));cursor:pointer;transition:.14s;position:relative}
.srb-thumb:hover{background:var(--o8,rgba(255,255,255,.05))}
.srb-thumb.on{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 10%,transparent)}
.srb-thumb-n{font-size:11px;font-weight:800;color:var(--mut2,#9aa7b0)}
.srb-thumb-mini{color:var(--brand,#00B1CF);display:flex}
.srb-thumb-lbl{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srb-thumb-acts{grid-column:1/-1;display:flex;gap:3px;margin-top:2px;opacity:0;transition:.14s}
.srb-thumb:hover .srb-thumb-acts,.srb-thumb.on .srb-thumb-acts{opacity:1}
.srb-thumb-acts button{flex:1;border:1px solid var(--o8,rgba(255,255,255,.12));background:transparent;color:var(--mut2,#9aa7b0);border-radius:6px;cursor:pointer;font-size:11px;padding:3px 0;transition:.12s}
.srb-thumb-acts button:hover:not(:disabled){background:var(--brand,#00B1CF);color:#fff;border-color:transparent}
.srb-thumb-acts button:disabled{opacity:.3;cursor:default}
.srb-addslide{border:1.5px dashed var(--o8,rgba(255,255,255,.22));background:transparent;color:var(--brand,#00B1CF);padding:10px;border-radius:10px;cursor:pointer;font-size:12px;font-weight:700;transition:.14s}
.srb-addslide:hover{background:color-mix(in srgb,var(--brand) 10%,transparent);border-color:var(--brand,#00B1CF)}

/* Scène */
.srb-canvaswrap{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;padding:14px;gap:10px;align-items:center}
.srb-layoutbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%}
.srb-lb-lbl{font-size:12px;color:var(--mut2,#9aa7b0);font-weight:600;margin-right:4px}
.srb-lb-chip{border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:var(--brand,#00B1CF);border-radius:8px;cursor:pointer;padding:4px 6px;display:flex;transition:.14s}
.srb-lb-chip:hover{background:var(--o8,rgba(255,255,255,.06))}
.srb-lb-chip.on{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 14%,transparent)}
.srb-stage{position:relative;width:min(100%,calc((100vh - 200px) * 16 / 9));aspect-ratio:16/9;background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.1));border-radius:14px;overflow:hidden;container-type:inline-size;box-shadow:0 20px 50px -22px rgba(0,0,0,.55)}
.srb-noslide{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--mut2,#9aa7b0);text-align:center}
.srb-noslide-ico{font-size:42px}

/* Slot dans le builder */
.srb-slot{position:absolute;border-radius:8px;overflow:hidden;transition:box-shadow .14s}
.srb-slot.empty{border:1.5px dashed var(--o8,rgba(255,255,255,.26));cursor:pointer;display:flex;align-items:center;justify-content:center}
.srb-slot.empty:hover{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 8%,transparent)}
.srb-slot.sel{box-shadow:0 0 0 2px var(--brand,#00B1CF)}
.srb-slot:not(.empty){cursor:pointer}
.srb-slot-add{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--mut2,#9aa7b0);pointer-events:none}
.srb-plus{font-size:clamp(20px,3cqw,34px);font-weight:300;color:var(--brand,#00B1CF)}
.srb-slot-hint{font-size:clamp(9px,1cqw,12px)}
.srb-slot-over{position:absolute;top:4px;right:4px;display:flex;gap:3px;opacity:0;transition:.14s;z-index:6}
.srb-slot:hover .srb-slot-over{opacity:1}
.srb-slot-over button{width:24px;height:24px;border:none;border-radius:6px;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;font-size:12px;transition:.12s}
.srb-slot-over button:hover{background:var(--brand,#00B1CF)}
/* ✕ supprimer une ZONE VIDE (au survol) — retire le slot de la slide (≠ « vider » un slot rempli). */
.srb-slot-rm{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:6px;border:1px solid var(--o10,rgba(255,255,255,.18));background:rgba(0,0,0,.5);color:var(--mut2,#9aa7b0);cursor:pointer;font-size:11px;line-height:1;opacity:0;transition:.12s;z-index:7;pointer-events:auto}
.srb-slot.empty:hover .srb-slot-rm{opacity:1}
.srb-slot-rm:hover{background:var(--st-red,#ef4444);color:#fff;border-color:transparent}
/* Poignées déplacer (✥, coin haut-gauche) + redimensionner (coin bas-droit) — au survol du slot */
.srb-slot-move{position:absolute;top:4px;left:4px;width:22px;height:22px;border-radius:6px;background:rgba(0,0,0,.55);color:#fff;
  display:flex;align-items:center;justify-content:center;cursor:move;font-size:12px;opacity:0;transition:.12s;touch-action:none;z-index:6}
.srb-slot:hover .srb-slot-move{opacity:1}
.srb-slot-move:hover{background:var(--brand,#00B1CF)}
.srb-slot-rz{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;opacity:0;transition:.12s;touch-action:none;z-index:6;
  background:linear-gradient(135deg,transparent 45%,var(--brand,#00B1CF) 45%);border-bottom-right-radius:8px}
.srb-slot:hover .srb-slot-rz{opacity:.95}
.srb-slot.moved{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 45%,transparent)}
.srb-slot.sel{box-shadow:0 0 0 2px var(--brand,#00B1CF)}
.srb-slot.grouped{outline:1px dashed color-mix(in srgb,var(--brand) 55%,transparent);outline-offset:-1px}

/* Panneau alignement (multi-sélection) */
.srb-align-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.srb-align-btn{border:1px solid var(--o8,rgba(255,255,255,.16));background:var(--surf-1,#0e1620);color:inherit;border-radius:8px;cursor:pointer;font-size:16px;padding:8px 0;transition:.12s}
.srb-align-btn:hover{background:var(--brand,#00B1CF);color:#fff;border-color:transparent}
.srb-import-err{font-size:12px;color:#F0997B;margin:6px 0 0}
/* Host d'export PDF : hors-écran mais layouté (html2canvas), taille fixe 1280×720 */
.srb-exporthost{position:fixed;left:-99999px;top:0;z-index:-1;pointer-events:none}
.srb-export-stage{position:relative;width:1280px;height:720px;overflow:hidden;background:var(--surf-2,#16212e);container-type:inline-size}

/* Bandeau titre éditable + cover éditable */
.srb-heading{position:absolute;left:4%;top:2.5%;right:4%;height:8%}
.srb-heading-in{width:100%;background:transparent;border:none;border-bottom:1px dashed transparent;color:var(--brand,#00B1CF);font-size:clamp(14px,2.2cqw,22px);font-weight:800;outline:none}
.srb-heading-in:focus,.srb-heading-in:hover{border-bottom-color:var(--o8,rgba(255,255,255,.2))}
.srb-cover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:8%;text-align:center}
.srb-cover-logo{max-height:13%;max-width:40%;object-fit:contain}
.srb-cover-title-in{width:80%;text-align:center;background:transparent;border:none;border-bottom:1px dashed var(--o8,rgba(255,255,255,.2));color:inherit;font-size:clamp(20px,4cqw,40px);font-weight:900;outline:none}
.srb-cover-sub-in{width:70%;text-align:center;background:transparent;border:none;border-bottom:1px dashed var(--o8,rgba(255,255,255,.16));color:var(--mut2,#9aa7b0);font-size:clamp(12px,1.8cqw,18px);outline:none}
.srb-cover-foot-in{position:absolute;bottom:6%;width:60%;text-align:center;background:transparent;border:none;color:var(--mut2,#9aa7b0);font-size:clamp(10px,1.2cqw,13px);outline:none;opacity:.8}

/* Panneau config */
.srb-cfg{flex:0 0 270px;display:flex;flex-direction:column;gap:10px;padding:14px;overflow-y:auto;border-left:1px solid var(--o8,rgba(255,255,255,.08));background:var(--surf-2,#16212e)}
.srb-cfg-h{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:800}
.srb-cfg-x{border:none;background:transparent;color:var(--mut2,#9aa7b0);cursor:pointer;font-size:13px}
.srb-cfg-sub{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--mut2,#9aa7b0);margin-top:6px}
.srb-cfg-hint{font-size:11px;color:var(--mut2,#9aa7b0);font-style:italic;margin:2px 0}
.srb-fld{display:flex;flex-direction:column;gap:4px;font-size:12px}
.srb-fld > span{color:var(--mut2,#9aa7b0);font-weight:600}
/* Notes du présentateur (éditeur) : textarea pleine largeur. */
.srb-notes-in{width:100%;resize:vertical;min-height:54px;font:inherit;font-size:12px;border-radius:8px;padding:7px 9px;
  background:var(--color-bg-input,rgba(255,255,255,.04));border:1px solid var(--o10,rgba(255,255,255,.16));color:inherit}
.srb-fld-tag{margin-left:6px;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand,#00B1CF) 14%,transparent);border-radius:5px;padding:1px 5px;vertical-align:middle}
.srb-fld input[type=text],.srb-fld input:not([type]),.srb-fld select,.srb-fld textarea{background:var(--surf-1,#0e1620);border:1px solid var(--o8,rgba(255,255,255,.14));color:inherit;border-radius:8px;padding:7px 9px;font-size:12px;outline:none;font-family:inherit}
.srb-fld input:focus,.srb-fld select:focus,.srb-fld textarea:focus{border-color:var(--brand,#00B1CF)}
.srb-fld input[type=color]{width:46px;height:30px;padding:0;cursor:pointer;border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:8px;background:var(--surf-1,#0e1620)}
.srb-fld input[type=color]::-webkit-color-swatch-wrapper{padding:2px}
.srb-fld input[type=color]::-webkit-color-swatch{border:none;border-radius:6px}
.srb-fld input[type=color]::-moz-color-swatch{border:none;border-radius:6px}
.srb-fld-row{flex-direction:row;align-items:center;gap:8px}
.srb-fld-row input[type=checkbox]{accent-color:var(--brand,#00B1CF);width:16px;height:16px}
.srb-mini{border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:var(--mut2,#9aa7b0);border-radius:7px;cursor:pointer;font-size:11px;padding:5px 8px}

/* Bloc Accent (surcharge) — contrôle soigné : swatch arrondi propre + valeur hex + pastille Auto */
.srb-accent{display:flex;align-items:center;gap:11px;padding:9px 10px;border:1px solid var(--o8,rgba(255,255,255,.12));border-radius:11px;background:var(--surf-1,#0e1620)}
.srb-accent-sw{flex:0 0 auto;position:relative;width:34px;height:34px;border-radius:9px;overflow:hidden;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),0 1px 3px rgba(0,0,0,.25)}
.srb-accent-sw input[type=color]{position:absolute;top:-25%;left:-25%;width:150%;height:150%;padding:0;border:none;margin:0;cursor:pointer;background:transparent}
.srb-accent-sw input[type=color]::-webkit-color-swatch-wrapper{padding:0}
.srb-accent-sw input[type=color]::-webkit-color-swatch{border:none}
.srb-accent-sw input[type=color]::-moz-color-swatch{border:none}
.srb-accent-meta{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}
.srb-accent-lbl{font-size:11px;font-weight:700;color:var(--mut2,#9aa7b0)}
.srb-accent-val{font-size:12px;font-weight:700;letter-spacing:.4px;font-family:ui-monospace,"SFMono-Regular",Menlo,monospace;color:var(--tx1,#e8eef2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srb-accent-auto{flex:0 0 auto;border:1px solid var(--o8,rgba(255,255,255,.16));background:transparent;color:var(--mut2,#9aa7b0);border-radius:999px;cursor:pointer;font-size:11px;font-weight:700;padding:6px 13px;transition:all .15s ease}
.srb-accent-auto:hover{border-color:var(--brand,#00B1CF);color:var(--tx1,#e8eef2)}
.srb-accent-auto.on{background:color-mix(in srgb,var(--brand,#00B1CF) 15%,transparent);border-color:color-mix(in srgb,var(--brand,#00B1CF) 55%,transparent);color:var(--brand,#00B1CF);cursor:default}
/* Boutons de rédaction auto (blocs texte du rapport dynamique) */
.srb-ai-roles{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.srb-ai-role{display:inline-flex;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 38%,transparent);
  background:color-mix(in srgb,var(--brand,#00B1CF) 9%,transparent);color:var(--brand,#00B1CF);
  border-radius:999px;padding:5px 11px;font-size:11.5px;font-weight:700;cursor:pointer;transition:background .14s,transform .14s,opacity .14s}
.srb-ai-role:hover:not(:disabled){background:color-mix(in srgb,var(--brand,#00B1CF) 18%,transparent);transform:translateY(-1px)}
.srb-ai-role.busy{opacity:.7}
.srb-ai-role:disabled{opacity:.5;cursor:default;transform:none}
.srb-yearrange{display:flex;align-items:center;gap:6px}
.srb-yearrange .custom-dropdown{flex:1 1 0;min-width:0}
.srb-yearrange-sep{flex:0 0 auto;color:var(--mut2,#9aa7b0);font-weight:700}
.srb-fontval{min-width:22px;text-align:center;font-weight:700;font-size:12px;color:var(--tx1,#e8eef2)}
/* Rail repliable + splitter du panneau de droite + bouton « ajouter un bloc » */
.srb-railtoggle{flex:0 0 auto;width:28px;height:28px;border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:var(--tx2,#c8d3da);border-radius:8px;cursor:pointer;font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.srb-railtoggle:hover{background:var(--o7,rgba(255,255,255,.08));color:var(--tx1,#e8eef2)}
.srb-rail.collapsed{display:none}
.srb-splitter{flex:0 0 6px;align-self:stretch;cursor:col-resize;background:transparent;position:relative}
.srb-splitter::before{content:"";position:absolute;top:0;bottom:0;left:2px;right:2px;border-radius:2px;background:var(--o8,rgba(255,255,255,.1));transition:background .14s}
.srb-splitter:hover::before,.srb-splitter.active::before{background:var(--brand,#00B1CF)}
.srb-resize-scrim{position:fixed;inset:0;z-index:9999;cursor:col-resize}
.srb-lb-addblk{flex:0 0 auto;border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 40%,transparent);background:color-mix(in srgb,var(--brand,#00B1CF) 10%,transparent);color:var(--brand,#00B1CF);border-radius:8px;padding:5px 11px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .14s}
.srb-lb-addblk:hover:not(:disabled){background:color-mix(in srgb,var(--brand,#00B1CF) 18%,transparent)}
.srb-lb-addblk:disabled{opacity:.4;cursor:default;pointer-events:none}
/* Dropdown des dispositions dans la barre : largeur fixe → la barre tient sur 1 ligne, pager stable d'une slide à l'autre. */
.srb-lb-dd{flex:0 0 auto;min-width:190px}
.srb-lb-dd .custom-dropdown{display:block;width:100%}
.srb-stage:focus,.srb-stage:focus-visible{outline:none}
.srb-cfg-imgprev{width:100%;max-height:120px;object-fit:contain;border-radius:8px;border:1px solid var(--o8,rgba(255,255,255,.1))}
.srb-chiprow{display:flex;gap:6px;flex-wrap:wrap}
.srb-chip{border:1px solid var(--o8,rgba(255,255,255,.16));background:transparent;color:inherit;border-radius:8px;cursor:pointer;font-size:11px;font-weight:600;padding:5px 10px;transition:.12s}
.srb-chip:hover{background:var(--o8,rgba(255,255,255,.06))}
.srb-chip.on{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand,#00B1CF)}
/* Multi-séries du chart builder : chip de suppression (rouge) + pastilles de couleur par série. */
.srb-chip-rm{border-color:color-mix(in srgb,var(--st-red,#ef4444) 45%,transparent);color:var(--st-red,#ef4444)}
.srb-chip-rm:hover{background:color-mix(in srgb,var(--st-red,#ef4444) 14%,transparent)}
.srb-series-pick{flex:1 1 auto;min-width:120px}
.srb-series-pick .custom-dropdown{display:block;width:100%}
.srb-series-sws{align-items:center}
/* Pastilles couleur des SÉRIES de graphique (classe .srb-cw, ≠ .srb-sw des swatches de palette → plus de collision). */
.srb-cw{width:22px;height:22px;border-radius:6px;border:1px solid var(--o10,rgba(255,255,255,.18));cursor:pointer;padding:0;transition:.12s}
.srb-cw:hover{transform:scale(1.08)}
.srb-cw.on{box-shadow:0 0 0 2px var(--surf-2,#16212e),0 0 0 4px var(--brand,#00B1CF)}
.srb-cw-auto{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--mut2,#9aa7b0);font-size:11px;font-weight:800}
.srb-cw-auto.on{color:var(--brand,#00B1CF);border-color:var(--brand,#00B1CF)}

/* Modales picker + galerie */
.srb-modal-back{position:fixed;inset:0;z-index:4100;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(2px)}
.srb-picker,.srb-gallery{background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.12));border-radius:16px;padding:20px;max-width:640px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 30px 70px -20px rgba(0,0,0,.6)}
.srb-picker-h{font-size:16px;font-weight:800;margin-bottom:14px}
.srb-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
/* Modal « Partager » (lien interactif / PDF porteur) */
.srb-share{background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.12));border-radius:16px;padding:20px;max-width:680px;width:100%;box-shadow:0 30px 70px -20px rgba(0,0,0,.6)}
[data-theme=light] .srb-share{background:#fff}
.srb-share-h{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:800;margin-bottom:6px}
.srb-share-opts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 6px}
.srb-share-card{display:flex;flex-direction:column;gap:6px;text-align:left;padding:14px;border-radius:12px;cursor:pointer;
  background:color-mix(in srgb,var(--brand,#00B1CF) 5%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 22%,transparent);color:inherit;transition:.12s}
.srb-share-card:hover:not(:disabled){background:color-mix(in srgb,var(--brand,#00B1CF) 12%,transparent);border-color:color-mix(in srgb,var(--brand,#00B1CF) 45%,transparent)}
.srb-share-card:disabled{opacity:.6;cursor:default}
.srb-share-ic{font-size:22px;line-height:1}
.srb-share-t{font-size:14px;font-weight:800}
.srb-share-d{font-size:11.5px;color:var(--mut1,#9bb3bd);line-height:1.4}
.srb-share-busy{font-size:11px;font-weight:700;color:var(--brand,#00B1CF)}
.srb-share-opt{margin-top:4px;font-size:12px}
@@media (max-width:520px){.srb-share-opts{grid-template-columns:1fr}}

/* ── Options du PDF complet (logo inséré, palette/accent, version claire/sombre) ── */
.srb-pdfopts{margin-top:14px;padding-top:14px;border-top:1px solid var(--o8,rgba(255,255,255,.12));display:flex;flex-direction:column;gap:10px}
.srb-pdfopts-h{font-size:13px;font-weight:800}
.srb-pdfopts-sub{font-weight:500;color:var(--mut1,#9bb3bd);font-size:11.5px}
.srb-pdfopt{display:flex;align-items:center;gap:10px}
.srb-pdfopt-lbl{flex:0 0 110px;font-size:12px;font-weight:600;color:var(--tx2,#c8d3da)}
.srb-pdfopt-ctl{flex:1 1 auto;display:flex;align-items:center;gap:8px;min-width:0}
.srb-pdfopt-ctl > .custom-dropdown{flex:1 1 auto;min-width:0}
.srb-pdfopt-logo{display:inline-flex;align-items:center;justify-content:center;width:64px;height:30px;border-radius:7px;overflow:hidden;
  border:1px solid var(--o8,rgba(255,255,255,.16));background:var(--surf-1,#0e1620);flex:0 0 auto}
.srb-pdfopt-logo img{max-width:100%;max-height:100%;object-fit:contain}
.srb-pdfopt-logo-ph{font-size:10px;color:var(--mut2,#9aa7b0)}
.srb-pdfopt-up{position:relative;overflow:hidden;cursor:pointer}
.srb-pdfopt-up input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.srb-pdfopt-acc{width:22px;height:22px;border-radius:6px;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
.srb-seg{display:inline-flex;border:1px solid var(--o8,rgba(255,255,255,.16));border-radius:8px;overflow:hidden}
.srb-seg-b{border:none;background:transparent;color:var(--tx2,#c8d3da);font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer;transition:.12s}
.srb-seg-b:hover{background:var(--o8,rgba(255,255,255,.06))}
.srb-seg-b.on{background:var(--brand,#00B1CF);color:#fff}
.srb-pdfopt-go{align-self:flex-end;margin-top:2px}
.srb-pick-card{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;border:1px solid var(--o8,rgba(255,255,255,.12));background:var(--surf-1,#0e1620);border-radius:12px;padding:14px;cursor:pointer;transition:.14s}
.srb-pick-card:hover{border-color:var(--brand,#00B1CF);transform:translateY(-2px);background:color-mix(in srgb,var(--brand) 8%,var(--surf-1,#0e1620))}
.srb-pick-ico{font-size:24px}
.srb-pick-lbl{font-size:13px;font-weight:800}
.srb-pick-desc{font-size:11px;color:var(--mut2,#9aa7b0);line-height:1.3}
.srb-gal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.srb-gal-card{display:flex;flex-direction:column;gap:8px;align-items:center;border:1px solid var(--o8,rgba(255,255,255,.12));background:var(--surf-1,#0e1620);border-radius:12px;padding:14px 10px;cursor:pointer;transition:.14s;color:var(--tx1,#e8eef2)}
.srb-gal-card:hover{border-color:var(--brand,#00B1CF);transform:translateY(-2px)}
.srb-gal-mini{color:var(--brand,#00B1CF);display:flex}
.srb-gal-lbl{font-size:11px;font-weight:700;text-align:center}

@media (max-width:900px){
  .srb-rail{flex-basis:140px}
  .srb-cfg{flex-basis:220px}
}

/* ═══════════════════════════════════════════════════════════════════════════════════════════
   RAPPORT DYNAMIQUE — masque, slides spéciales, palette, modèles (viewer .srv-* + builder .srb-*)
   ═══════════════════════════════════════════════════════════════════════════════════════════ */

/* Liseré d'accent (bord gauche) */
.srv-edge,.srb-edge{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--brand,#00B1CF);z-index:2}

/* ── Couche MASQUE partagée (SlideMasterChrome) : image de fond, voile, filigrane, traits, logo, pied ── */
.smc-bg,.smc-veil,.smc-watermark,.smc-decor,.smc-logo,.smc-footer,.smc-edge{pointer-events:none}   /* affichage : ne bloque jamais les clics du contenu */
.smc-bg{position:absolute;inset:0;background-size:cover;background-position:center;z-index:0}
.smc-veil{position:absolute;inset:0;background:#0b1119;z-index:0}
.smc-watermark{position:absolute;left:50%;top:50%;white-space:nowrap;font-weight:900;letter-spacing:.06em;text-transform:uppercase;
  font-size:14cqw;color:var(--brand,#00B1CF);pointer-events:none;z-index:0}
.smc-edge{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--brand,#00B1CF);z-index:2}
.smc-decor{position:absolute;z-index:1;border-radius:2px}
.smc-logo{position:absolute;object-fit:contain;z-index:3;max-width:40%}
.smc-corner-tl{top:3%;left:3%}.smc-corner-tr{top:3%;right:3%}.smc-corner-bl{bottom:6%;left:3%}.smc-corner-br{bottom:6%;right:3%}
.smc-footer{position:absolute;left:4%;right:4%;bottom:1.5%;height:4%;display:flex;align-items:center;justify-content:space-between;
  font-size:clamp(8px,1cqw,11px);color:var(--mut2,#9aa7b0);z-index:3}
.smc-footer-txt{opacity:.85}.smc-footer-num{font-variant-numeric:tabular-nums;opacity:.85}

/* Logo en coin (masque) */
.srv-logo-corner{position:absolute;max-height:9%;max-width:18%;object-fit:contain;opacity:.92;z-index:3}
.srv-corner-tl{top:3%;left:3%}.srv-corner-tr{top:3%;right:3%}.srv-corner-bl{bottom:5%;left:3%}.srv-corner-br{bottom:5%;right:3%}

/* Pied de page (masque) */
.srv-footer-master{position:absolute;left:4%;right:4%;bottom:1.5%;height:4%;display:flex;align-items:center;justify-content:space-between;
  font-size:clamp(8px,1cqw,11px);color:var(--mut2,#9aa7b0)}
.srv-footer-txt{opacity:.85}.srv-footer-num{font-variant-numeric:tabular-nums;opacity:.85}

/* Styles de titre (masque) */
.srv-h-bar .srv-heading-t,.srb-heading.srv-h-bar .srb-heading-in{padding-left:12px;border-left:4px solid var(--brand,#00B1CF)}
.srv-h-underline{border-bottom:2px solid color-mix(in srgb,var(--brand) 60%,transparent);padding-bottom:4px}
.srv-h-side .srv-heading-t,.srb-heading.srv-h-side .srb-heading-in{color:var(--brand,#00B1CF)}
.srv-h-plain .srv-heading-t{color:inherit}

/* ══ SKINS DE TEMPLATE (design systems) — classe `skin-{x}` sur le stage (viewer/builder/export). Redéfinissent typo+en-têtes+KPI+texte
      pour que chaque modèle ait une IDENTITÉ FORTE (≠ juste un style de titre). streamline = base (aucune règle). ══ */
/* CORPORATE — institutionnel : titres SERIF sobres en encre, KPI serif, libellés capitales espacées */
.skin-corporate .srv-heading-t,.skin-corporate .srb-heading-in{font-family:Georgia,'Times New Roman',serif;font-weight:700;letter-spacing:0;color:var(--tx1,#e8eef2)}
.skin-corporate .srv-cover-title,.skin-corporate .srb-cover-title-in{font-family:Georgia,'Times New Roman',serif;font-weight:700;letter-spacing:-.2px}
.skin-corporate .srv-section-title,.skin-corporate .srb-section-title-in{font-family:Georgia,'Times New Roman',serif;font-weight:700}
.skin-corporate .slv-kpi-lbl{text-transform:uppercase;letter-spacing:1px;font-size:clamp(9px,1cqw,12px)}
.skin-corporate .slv-kpi-val{font-family:Georgia,'Times New Roman',serif;font-weight:700}
.skin-corporate .slv-text-title{font-family:Georgia,'Times New Roman',serif;color:var(--tx1,#e8eef2)}
.skin-corporate .slv-text-body,.skin-corporate .slv-text-bullets{line-height:1.55}

/* ÉPURÉ — minimaliste : titres FINS en capitales très espacées, plus d'air, KPI légers */
.skin-epure .srv-heading-t,.skin-epure .srb-heading-in{font-weight:300;letter-spacing:2.5px;text-transform:uppercase;font-size:clamp(12px,1.9cqw,20px);color:var(--tx2,#c8d3da)}
.skin-epure .srv-cover-title,.skin-epure .srb-cover-title-in{font-weight:300;letter-spacing:3px;text-transform:uppercase}
.skin-epure .srv-section-title,.skin-epure .srb-section-title-in{font-weight:300;letter-spacing:2px;text-transform:uppercase}
.skin-epure .slv-kpi-lbl{text-transform:uppercase;letter-spacing:1.5px;font-weight:500}
.skin-epure .slv-kpi-val{font-weight:600}
.skin-epure .slv-text-title{font-weight:600;letter-spacing:.5px;text-transform:uppercase;font-size:clamp(11px,1.4cqw,16px)}
.skin-epure .slv-text-body,.skin-epure .slv-text-bullets{font-weight:400;line-height:1.7}
.skin-epure .slv-text{padding:6% 7%}

/* ÉDITORIAL — magazine : GROS titres serif contrastés, chiffres serif imposants, corps serif */
.skin-editorial .srv-heading-t,.skin-editorial .srb-heading-in{font-family:Georgia,'Times New Roman',serif;font-weight:900;letter-spacing:-.6px;font-size:clamp(18px,3.2cqw,36px);color:var(--tx1,#e8eef2);line-height:1.04}
.skin-editorial .srv-cover-title,.skin-editorial .srb-cover-title-in{font-family:Georgia,'Times New Roman',serif;font-weight:900;letter-spacing:-1px;font-size:clamp(26px,5.4cqw,64px)}
.skin-editorial .srv-section-title,.skin-editorial .srb-section-title-in{font-family:Georgia,'Times New Roman',serif;font-weight:900}
.skin-editorial .slv-kpi-val{font-family:Georgia,'Times New Roman',serif;font-weight:900;font-size:clamp(24px,4cqw,48px)}
.skin-editorial .slv-text-title{font-family:Georgia,'Times New Roman',serif;font-weight:900;color:var(--tx1,#e8eef2);font-size:clamp(14px,2cqw,24px)}
.skin-editorial .slv-text-body,.skin-editorial .slv-text-bullets{font-family:Georgia,'Times New Roman',serif;font-size:clamp(12px,1.4cqw,17px);line-height:1.6}

/* AUDACIEUX — affirmé : titres CAPITALES sur BLOC d'accent plein, KPI accent gras, libellés capitales */
.skin-audacieux .srv-heading-t,.skin-audacieux .srb-heading-in{font-weight:900;text-transform:uppercase;letter-spacing:.4px;color:#fff;background:var(--brand,#00B1CF);padding:.16em .55em;border-radius:6px;line-height:1.18}
.skin-audacieux .srv-h-bar .srv-heading-t,.skin-audacieux .srb-heading.srv-h-bar .srb-heading-in{border-left:none;padding-left:.55em}
.skin-audacieux .srv-cover-title,.skin-audacieux .srb-cover-title-in{font-weight:900;text-transform:uppercase;letter-spacing:.5px}
.skin-audacieux .srv-section-title,.skin-audacieux .srb-section-title-in{font-weight:900;text-transform:uppercase;letter-spacing:.5px}
.skin-audacieux .slv-kpi-val{font-weight:900;color:var(--brand,#00B1CF)}
.skin-audacieux .slv-kpi-lbl{text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.skin-audacieux .slv-text-title{text-transform:uppercase;letter-spacing:.4px;font-weight:900}

/* Le skin imprègne AUSSI les tableaux (élément dominant) — libellés/en-têtes seulement ; CHIFFRES gardés en sans (alignement/lisibilité). */
.skin-corporate .frt-lbl,.skin-corporate .frt-head-t,.skin-corporate .frt-stmt,
.skin-editorial .frt-lbl,.skin-editorial .frt-head-t,.skin-editorial .frt-stmt{font-family:Georgia,'Times New Roman',serif}
.skin-editorial .frt-head-t{font-weight:900}
.skin-epure .frt-h{font-weight:500;letter-spacing:.8px;text-transform:uppercase}
.skin-epure .frt-lbl{font-weight:400}
.skin-audacieux .frt-h{font-weight:900;text-transform:uppercase;letter-spacing:.3px}
.skin-audacieux .frt-total .frt-lbl{font-weight:900;text-transform:uppercase;letter-spacing:.2px}

/* Slide SECTION (intercalaire) */
.srv-section,.srb-section{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:0 9%}
.srv-section-bar,.srb-section-bar{width:64px;height:6px;border-radius:3px;background:var(--brand,#00B1CF);margin-bottom:6px}
.srv-section-title{font-size:clamp(24px,4.6cqw,46px);font-weight:900;line-height:1.05}
.srv-section-sub{font-size:clamp(13px,1.8cqw,20px);color:var(--mut2,#9aa7b0)}
.srb-section-title-in{background:transparent;border:none;border-bottom:1px dashed var(--o8,rgba(255,255,255,.2));color:inherit;font-size:clamp(22px,4.4cqw,42px);font-weight:900;outline:none;width:90%}
.srb-section-sub-in{background:transparent;border:none;border-bottom:1px dashed var(--o8,rgba(255,255,255,.16));color:var(--mut2,#9aa7b0);font-size:clamp(12px,1.7cqw,18px);outline:none;width:70%}

/* Slide SOMMAIRE (toc) */
.srv-toc,.srb-toc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:10px;padding:6% 9%;text-align:left;overflow:hidden}
.srv-toc-title,.srb-toc-title-in{font-size:clamp(20px,3.4cqw,34px);font-weight:900;color:var(--brand,#00B1CF)}
.srb-toc-title-in{background:transparent;border:none;border-bottom:1px dashed var(--o8,rgba(255,255,255,.2));outline:none;width:60%}
/* flex:1 + overflow-y:auto → un sommaire long DÉFILE dans la slide au lieu de déborder (≠ capture figée : c'est interactif). */
.srv-toc-list,.srb-toc-list{list-style:none;margin:0;padding:2px 8px 2px 0;width:100%;display:flex;flex-direction:column;align-items:stretch;gap:clamp(3px,0.8cqw,10px);flex:1 1 auto;min-height:0;overflow-y:auto;counter-reset:none}
.srv-toc-list li,.srb-toc-list li{width:100%}
.srv-toc-item{display:flex;align-items:center;justify-content:flex-start;gap:14px;width:100%;background:transparent;border:none;border-bottom:1px solid var(--o8,rgba(255,255,255,.1));color:inherit;cursor:pointer;padding:clamp(4px,1cqw,10px) 4px;text-align:left;transition:.12s;font-size:clamp(12px,1.6cqw,19px)}
.srv-toc-item:hover{color:var(--brand,#00B1CF);padding-left:10px}
.srb-toc-list li{display:flex;align-items:center;justify-content:flex-start;gap:14px;border-bottom:1px solid var(--o8,rgba(255,255,255,.1));padding:clamp(4px,1cqw,10px) 4px;font-size:clamp(12px,1.6cqw,19px)}
.srv-toc-num{flex:0 0 auto;width:clamp(22px,2.6cqw,34px);height:clamp(22px,2.6cqw,34px);border-radius:50%;background:color-mix(in srgb,var(--brand) 18%,transparent);color:var(--brand,#00B1CF);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.7em}
.srv-toc-lbl{font-weight:600}

/* Switcher de palette (builder) */
/* ── Combo palette riche (swatches inline) ── */
.srb-pal-combo{position:relative}
.srb-pal-cur{display:flex;align-items:center;gap:8px;width:100%;border:1px solid var(--o8,rgba(255,255,255,.16));background:var(--surf-1,#0e1620);color:inherit;border-radius:9px;cursor:pointer;padding:7px 10px;transition:.12s}
.srb-pal-cur:hover{border-color:var(--brand,#00B1CF)}
.srb-pal-sws{display:flex;gap:3px}
.srb-sw{width:13px;height:13px;border-radius:3px;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.srb-pal-name{font-size:12px;font-weight:600}
.srb-pal-chev{margin-left:auto;font-size:10px;color:var(--mut2,#9aa7b0);transition:.12s}
.srb-pal-combo.open .srb-pal-chev{transform:rotate(180deg)}
.srb-pal-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.16));border-radius:10px;
  box-shadow:0 18px 40px -16px rgba(0,0,0,.6);padding:4px;max-height:280px;overflow-y:auto}
.srb-pal-opt{display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:8px;width:100%;border:none;background:transparent;color:inherit;border-radius:7px;cursor:pointer;padding:8px 10px;transition:.1s}
.srb-pal-opt .srb-pal-sws{flex:0 0 auto}
.srb-pal-opt .srb-pal-name{flex:1 1 auto;text-align:left}
.srb-pal-opt:hover{background:var(--o8,rgba(255,255,255,.06))}
.srb-pal-opt.on{background:color-mix(in srgb,var(--brand) 14%,transparent)}
.srb-mask-btn{width:100%;margin-top:4px;justify-content:center}

/* ── Galerie de STYLES DE TEMPLATE (skins en 1 clic) ── */
.srb-tplstyle-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}
.srb-tplstyle{display:flex;flex-direction:column;gap:5px;padding:6px;border:1px solid var(--o8,rgba(255,255,255,.14));background:var(--surf-1,#0e1620);
  border-radius:9px;cursor:pointer;transition:.12s;color:inherit;text-align:center}
.srb-tplstyle:hover{border-color:var(--brand,#00B1CF);transform:translateY(-1px)}
.srb-tplstyle.on{border-color:var(--brand,#00B1CF);box-shadow:0 0 0 1px var(--brand,#00B1CF),0 8px 18px -10px color-mix(in srgb,var(--brand) 60%,transparent)}
.srb-tplstyle-pv{display:block;border-radius:5px;overflow:hidden;line-height:0}
.srb-tplstyle-pv svg{width:100%;height:auto;display:block}
.srb-tplstyle-lbl{font-size:11px;font-weight:700;letter-spacing:.1px}
.srb-tplstyle.on .srb-tplstyle-lbl{color:var(--brand,#00B1CF)}

/* ── Pager éditeur + barre de disposition ── */
.srb-lb-sp{flex:1 1 auto}
.srb-lb-masque{color:var(--brand,#00B1CF);font-weight:700}
.srb-pager{display:flex;align-items:center;gap:6px;flex:0 0 auto;margin-right:2px}
/* inline-flex + centrage : sinon le glyphe ‹/› flotte en haut du bouton (mal aligné avec « 16/41 »). */
.srb-pager-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;padding:0;border:1px solid var(--o8,rgba(255,255,255,.16));background:transparent;color:inherit;border-radius:8px;cursor:pointer;font-size:17px;line-height:1;transition:.12s}
.srb-pager-btn:hover:not(:disabled){background:var(--brand,#00B1CF);color:#fff;border-color:transparent}
.srb-pager-btn:disabled{opacity:.3;cursor:default}
.srb-pager-lbl{font-size:12px;font-variant-numeric:tabular-nums;color:var(--mut2,#9aa7b0);min-width:46px;text-align:center}

/* ── Thumbnail : actions derrière un menu ⋯ (anti-clic accidentel) ── */
.srb-thumb-more{position:absolute;top:6px;right:6px;width:24px;height:22px;border:1px solid var(--o8,rgba(255,255,255,.12));background:var(--surf-1,#0e1620);color:var(--mut2,#9aa7b0);border-radius:6px;cursor:pointer;font-size:13px;line-height:1;opacity:0;transition:.12s;padding:0}
.srb-thumb:hover .srb-thumb-more,.srb-thumb.on .srb-thumb-more{opacity:1}
.srb-thumb-more:hover{background:var(--brand,#00B1CF);color:#fff;border-color:transparent}
.srb-thumb-menu{position:absolute;top:30px;right:6px;z-index:40;display:flex;flex-direction:column;gap:1px;background:var(--surf-2,#16212e);border:1px solid var(--o8,rgba(255,255,255,.16));border-radius:9px;padding:4px;box-shadow:0 16px 36px -14px rgba(0,0,0,.6);min-width:128px}
.srb-thumb-menu button{display:flex;align-items:center;gap:6px;border:none;background:transparent;color:inherit;border-radius:6px;cursor:pointer;font-size:12px;padding:7px 9px;text-align:left;transition:.1s;white-space:nowrap}
.srb-thumb-menu button:hover:not(:disabled){background:var(--o8,rgba(255,255,255,.07))}
.srb-thumb-menu button:disabled{opacity:.35;cursor:default}
.srb-thumb-del{color:#F0997B}
.srb-thumb-del:hover{background:rgba(240,153,123,.14) !important}

/* ── Mode masque : neutralise le contenu, poignées draggables ── */
.srb-stage.masque .srb-slot,.srb-stage.masque .srb-heading,.srb-stage.masque .srb-cover,.srb-stage.masque .srb-section,.srb-stage.masque .srb-toc{pointer-events:none}
.srb-mhandle{position:absolute;z-index:6;border:1.5px dashed var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 12%,transparent);border-radius:6px;cursor:move;
  display:flex;align-items:center;justify-content:center;color:var(--brand,#00B1CF);font-size:14px;min-width:14px;min-height:14px;touch-action:none}
.srb-mhandle:hover{background:color-mix(in srgb,var(--brand) 22%,transparent)}
.srb-mhandle-x{position:absolute;top:-9px;right:-9px;width:18px;height:18px;border:none;border-radius:50%;background:#F0997B;color:#fff;cursor:pointer;font-size:10px;line-height:1;display:flex;align-items:center;justify-content:center}

/* ── Décorations : ligne de réglage dans le panneau masque ── */
.srb-decor-row{display:flex;align-items:center;gap:6px;padding:4px 0}
.srb-decor-lbl{font-size:11px;color:var(--mut2,#9aa7b0);flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srb-decor-row input[type=color]{width:30px;height:24px;padding:1px;border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:6px;cursor:pointer;flex:0 0 auto}
.srb-decor-row input[type=range]{width:70px;flex:0 0 auto}
.srb-decor-del{flex:0 0 auto;padding:4px 7px}

/* ── Panneau MASQUE : sections en cartes (plus pro / moderne) ── */
.srb-mask{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.srb-mgroup{background:color-mix(in srgb,var(--brand,#00B1CF) 3.5%,transparent);border:.5px solid var(--o8,rgba(255,255,255,.09));border-radius:12px;padding:11px 12px 12px;display:flex;flex-direction:column;gap:9px}
[data-theme=light] .srb-mgroup{background:color-mix(in srgb,var(--brand,#00B1CF) 4%,#fff);border-color:rgba(10,40,56,.08)}
.srb-mgroup-h{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--mut1,#9bb3bd);margin:0}
.srb-mgroup-ic{font-size:13px;line-height:1;filter:saturate(.9)}
/* Pastille de couleur ronde (swatch) — remplace le carré natif terne */
.srb-color-row{display:flex;align-items:center;gap:8px}
.srb-color{-webkit-appearance:none;appearance:none;width:30px;height:30px;padding:0;border:none;border-radius:50%;cursor:pointer;background:transparent;flex:0 0 auto;box-shadow:0 0 0 1px var(--o8,rgba(255,255,255,.18)),0 1px 4px rgba(0,0,0,.25)}
.srb-color::-webkit-color-swatch-wrapper{padding:0}
.srb-color::-webkit-color-swatch{border:none;border-radius:50%}
.srb-color::-moz-color-swatch{border:none;border-radius:50%}
/* Sliders du masque : piste fine + pouce à la marque */
.srb-mgroup input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:3px;background:var(--o8,rgba(255,255,255,.14));outline:none;cursor:pointer}
.srb-mgroup input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--brand,#00B1CF);border:2px solid var(--surface,#0e2531);box-shadow:0 1px 3px rgba(0,0,0,.35);cursor:pointer}
.srb-mgroup input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--brand,#00B1CF);border:2px solid var(--surface,#0e2531);cursor:pointer}
.srb-mgroup .srb-decor-row{background:var(--surf-1,rgba(255,255,255,.03));border:.5px solid var(--o8,rgba(255,255,255,.08));border-radius:8px;padding:6px 8px;gap:8px}
.srb-mgroup .srb-decor-row input[type=color]{width:26px;height:22px;border-radius:50%;border:none;box-shadow:0 0 0 1px var(--o8,rgba(255,255,255,.18))}

.srb-palrow{display:flex;flex-direction:column;gap:6px}
.srb-pal{display:flex;align-items:center;gap:6px;border:1px solid var(--o8,rgba(255,255,255,.14));background:transparent;color:inherit;border-radius:9px;cursor:pointer;padding:7px 9px;transition:.12s}
.srb-pal:hover{background:var(--o8,rgba(255,255,255,.05))}
.srb-pal.on{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand) 10%,transparent)}
.srb-pal-sw{width:14px;height:14px;border-radius:4px;flex:0 0 auto}
.srb-pal-cab{font-size:14px}
.srb-pal-lbl{font-size:12px;font-weight:600;margin-left:auto}

/* Catégories galerie + cartes modèles */
.srb-gal-cat{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--mut2,#9aa7b0);margin:14px 0 6px}
.srb-gal-cat:first-child{margin-top:0}
.srb-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:10px}
.srb-tpl-card{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;border:1px solid var(--o8,rgba(255,255,255,.12));background:var(--surf-1,#0e1620);border-radius:14px;padding:16px;cursor:pointer;transition:.14s}
.srb-tpl-card:hover{border-color:var(--brand,#00B1CF);transform:translateY(-2px);background:color-mix(in srgb,var(--brand) 7%,var(--surf-1,#0e1620))}
.srb-tpl-ico{font-size:28px}
.srb-tpl-name{font-size:14px;font-weight:800}
.srb-tpl-desc{font-size:11px;color:var(--mut2,#9aa7b0);line-height:1.35}
.srb-tpl-card{position:relative}
.srb-tpl-del{position:absolute;top:6px;right:6px;font-size:12px;opacity:0;transition:.12s;border-radius:6px;padding:2px 5px}
.srb-tpl-card:hover .srb-tpl-del{opacity:.85}
.srb-tpl-del:hover{background:rgba(240,153,123,.18)}
.srb-savetpl-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.srb-noslide-acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

/* ── Assistant d'import à mapping de colonnes (FecColumnMapperModal) ── */
.fec-maptrigger{display:inline-flex;align-items:center;gap:8px;margin:10px auto 0;padding:7px 14px;border:1px dashed var(--o8,rgba(255,255,255,.14));
  border-radius:10px;background:transparent;color:var(--tx3,#9bb3bd);font-size:12.5px;cursor:pointer;transition:all .15s}
.fec-maptrigger:hover{border-color:var(--brand,#00b1cf);color:var(--tx1,#e8eef2);background:color-mix(in srgb,var(--brand,#00b1cf) 6%,transparent)}
.fec-maptrigger-ic{font-size:14px}
.fec-maptrigger b{color:var(--brand,#00b1cf)}

/* « Pas de FEC ? » — accès au teaser 100% saisi à la main (chemin Dealiku/publication). Carte cliquable, plus présente que maptrigger. */
.fec-nofec{display:flex;align-items:center;gap:13px;width:100%;max-width:480px;margin:14px auto 0;padding:13px 16px;text-align:left;
  border:1px solid color-mix(in srgb,var(--brand,#00b1cf) 32%,transparent);border-radius:14px;cursor:pointer;transition:all .16s ease;
  background:linear-gradient(135deg,color-mix(in srgb,var(--brand,#00b1cf) 9%,transparent),color-mix(in srgb,var(--brand,#00b1cf) 3%,transparent))}
.fec-nofec:hover{border-color:var(--brand,#00b1cf);transform:translateY(-1px);
  box-shadow:0 6px 22px -10px color-mix(in srgb,var(--brand,#00b1cf) 55%,transparent)}
.fec-nofec-ic{flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;font-size:19px;border-radius:10px;
  background:color-mix(in srgb,var(--brand,#00b1cf) 16%,transparent)}
.fec-nofec-tx{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--tx2,#c8d3da);line-height:1.4}
.fec-nofec-tx b{color:var(--tx1,#e8eef2);font-weight:700}
.fec-nofec-tx small{font-size:11px;color:var(--tx3,#9bb3bd);line-height:1.35}

.fcm-modal{width:min(980px,96vw)}
.fcm-intro{margin:0 0 14px;font-size:12.5px;line-height:1.55;color:var(--tx3,#9bb3bd)}
.fcm-intro code{background:var(--o7,rgba(255,255,255,.08));padding:1px 5px;border-radius:5px;font-size:11.5px}
.fcm-drop{display:flex;flex-direction:column;align-items:center;gap:10px;padding:34px 18px;border:1.5px dashed var(--o8,rgba(255,255,255,.16));border-radius:14px;text-align:center}
.fcm-drop-ic{font-size:34px;opacity:.8}
.fcm-drop-lbl{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;color:var(--tx2,#c8d3da);cursor:pointer}
.fcm-err{color:#F0997B;font-size:12px;margin-top:6px}
.fcm-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.fcm-file{font-size:12.5px;color:var(--tx2,#c8d3da)}
.fcm-link{background:none;border:0;color:var(--brand,#00b1cf);font-size:12px;cursor:pointer;padding:2px 4px;text-decoration:underline}
.fcm-opts{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;background:var(--surf-1,rgba(255,255,255,.03));border-radius:10px}
.fcm-opt{display:flex;flex-direction:column;gap:4px}
.fcm-opt label{font-size:11px;color:var(--tx3,#9bb3bd);font-weight:600}
.fcm-opt-chk{justify-content:center}
.fcm-opt-chk label{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--tx2,#c8d3da)}
.fcm-opt select{background:var(--surf-2,#16212c);color:var(--tx1,#e8eef2);border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:8px;padding:6px 8px;font-size:12.5px}
.fcm-map{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:8px}
.fcm-map th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--tx4,#7c8aa0);padding:4px 8px;border-bottom:1px solid var(--o8,rgba(255,255,255,.12))}
.fcm-map td{padding:5px 8px;border-bottom:1px solid var(--o7,rgba(255,255,255,.06));vertical-align:middle}
.fcm-map tr.req td{background:color-mix(in srgb,var(--brand,#00b1cf) 4%,transparent)}
.fcm-fld{color:var(--tx1,#e8eef2);font-weight:600}
.fcm-badge-req{margin-left:7px;font-size:9.5px;color:#F0997B;border:1px solid rgba(240,153,123,.4);border-radius:5px;padding:0 5px;vertical-align:middle}
.fcm-badge-rec{margin-left:7px;font-size:9.5px;color:var(--tx4,#7c8aa0);border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:5px;padding:0 5px;vertical-align:middle}
.fcm-map select{width:100%;background:var(--surf-2,#16212c);color:var(--tx1,#e8eef2);border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:7px;padding:5px 7px;font-size:12px}
.fcm-map select.miss{border-color:#F0997B}
.fcm-prev{color:var(--tx4,#7c8aa0);font-style:italic;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fcm-report{margin:12px 0;padding:10px 14px;border-radius:10px;font-size:12.5px;border:1px solid var(--o8,rgba(255,255,255,.12))}
.fcm-report.ok{background:rgba(93,202,165,.10);border-color:rgba(93,202,165,.35)}
.fcm-report.warn{background:rgba(240,153,123,.10);border-color:rgba(240,153,123,.35)}
.fcm-report-row{display:flex;gap:18px;flex-wrap:wrap;align-items:center;color:var(--tx2,#c8d3da)}
.fcm-bal-ok{color:#5DCAA5;font-weight:700}
.fcm-bal-ko{color:#F0997B;font-weight:700}
.fcm-warn-line{margin-top:5px;font-size:11.5px;color:var(--tx3,#9bb3bd)}
.fcm-missing{margin:10px 0;font-size:12px;color:#F0997B}
.fcm-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--o8,rgba(255,255,255,.12))}
.fcm-profiles{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fcm-profiles select{background:var(--surf-2,#16212c);color:var(--tx1,#e8eef2);border:1px solid var(--o8,rgba(255,255,255,.14));border-radius:8px;padding:6px 8px;font-size:12px}
.fcm-actions-main{display:flex;gap:8px}
.fcm-btn{padding:8px 16px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--o8,rgba(255,255,255,.16));background:transparent;color:var(--tx2,#c8d3da)}
.fcm-btn.ghost:hover{border-color:var(--tx3,#9bb3bd);color:var(--tx1,#e8eef2)}
.fcm-btn.primary{background:var(--brand,#00b1cf);border-color:var(--brand,#00b1cf);color:#04222b}
.fcm-btn.primary:hover{filter:brightness(1.08)}
.fcm-btn:disabled{opacity:.45;cursor:not-allowed}

/* ── FinTreeSynthView : vue de parcours « FinTree + synthèse » (KPIs budget + visite guidée + graphe) ── */
/* Hauteur BORNÉE au viewport (l'hôte .tvv-viewinner est en margin:auto → pas de height% exploitable) : la vue tient
   entièrement à l'écran et c'est le TABLEAU qui défile en interne (→ scroll-to-cell de la visite guidée fonctionne). */
.fts-wrap{display:flex;gap:16px;align-items:stretch;width:100%;height:calc(100dvh - 128px);max-height:calc(100dvh - 128px);min-height:360px}
.fts-tree{flex:1 1 auto;min-width:0;min-height:0;overflow:auto;border-radius:12px}
.fts-side{flex:0 0 384px;max-width:384px;display:flex;flex-direction:column;gap:9px;min-height:0;overflow:hidden;
          background:var(--surf-1,rgba(255,255,255,.02));border:1px solid var(--o8,rgba(255,255,255,.10));
          border-radius:14px;padding:12px 12px 10px}
.fts-side-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:9px}
.fts-side-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fts-side-lbl{font-size:13px;font-weight:700;color:var(--tx1)}
.fts-side-dd{min-width:128px}
.fts-tour-launch{margin-top:2px}
.fts-cat{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut1,#8fa8b3);font-weight:700;margin:8px 0 1px}

/* carte « étape » de la visite guidée (remplace les KPIs pendant la visite) */
.fts-tour{display:flex;flex-direction:column;gap:8px;padding:13px;border-radius:13px;
          background:color-mix(in srgb, var(--brand) 9%, var(--surf-2,#16212c));
          border:1px solid color-mix(in srgb, var(--brand) 38%, transparent);
          box-shadow:0 8px 24px color-mix(in srgb, var(--brand) calc(15% * var(--glow-mul,1)), transparent)}
.fts-tour-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fts-tour-phase{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--txt-teal,var(--brand))}
.fts-tour-step{font-size:10.5px;font-weight:700;color:var(--mut1,#8fa8b3)}
.fts-tour-title{font-size:16px;font-weight:800;color:var(--tx1);line-height:1.18}
.fts-tour-narr{font-size:12.5px;line-height:1.5;color:var(--tx2,#c8d3da)}
.fts-tour-nav{display:flex;align-items:center;gap:7px;margin-top:3px}
.fts-tour-btn{flex:1 1 auto;padding:8px 10px;border-radius:9px;font-size:12px;font-weight:700;cursor:pointer;
              border:1px solid var(--o12,rgba(255,255,255,.16));background:transparent;color:var(--tx2,#c8d3da);transition:all .12s}
.fts-tour-btn:hover:not(:disabled){border-color:var(--brand);color:var(--tx1)}
.fts-tour-btn:disabled{opacity:.4;cursor:not-allowed}
.fts-tour-end{flex:0 0 auto;color:var(--mut1,#8fa8b3)}
.fts-tour-next{background:var(--brand,#00b1cf);border-color:var(--brand,#00b1cf);color:#04222b}
.fts-tour-next:hover{filter:brightness(1.08);color:#04222b!important}

/* graphe d'évolution épinglé EN HAUT du panneau, hauteur figée (hors zone scrollable → stable au changement d'étape) */
.fts-chart{flex:0 0 auto;margin-bottom:10px;border-bottom:1px solid var(--o12,rgba(255,255,255,.12));padding-bottom:10px}
.fts-chart-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px}
.fts-chart-title{font-size:12px;font-weight:700;color:var(--tx1)}
.fts-chart-title small{font-size:10px;font-weight:600;color:var(--mut1,#8fa8b3)}
.fts-chart-dd{min-width:150px}
.fts-chart-canvas{height:212px;width:100%;overflow:hidden}

@media (max-width:900px){
  /* Mobile : on empile et on laisse la page défiler (le tableau garde son propre scroll borné à 52vh). */
  .fts-wrap{flex-direction:column;height:auto;max-height:none}
  .fts-side{flex:0 0 auto;max-width:none;width:100%;overflow:visible}
  .fts-side-scroll{overflow:visible}
  .fts-tree{max-height:52vh;flex:0 0 auto}
  .fts-chart-canvas{height:190px}
}

/* ── FinTreeDiffView : comparaison figée de 2 exercices (HTML léger, parcours) ── */
.ftd{width:100%;max-width:780px;margin:0 auto;font-size:13px}
.ftd-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px;flex-wrap:wrap}
.ftd-h-t{font-size:15.5px;font-weight:800;color:var(--tx1,#e8eef2)}
.ftd-h-t small{font-size:11px;font-weight:600;color:var(--mut1,#8fa8b3)}
.ftd-pick{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mut1,#8fa8b3)}
.ftd-pick select{background:var(--surf-2,#16212e);color:var(--tx1,#e8eef2);border:1px solid var(--o12,rgba(255,255,255,.16));border-radius:7px;padding:4px 7px;font-size:12px;cursor:pointer}
.ftd-scroll{overflow:auto;border-radius:13px;border:1px solid var(--o8,rgba(255,255,255,.10))}
.ftd-table{width:100%;border-collapse:collapse}
.ftd-table th,.ftd-table td{padding:7px 12px;text-align:right;white-space:nowrap}
.ftd-table th{font-size:11px;font-weight:700;color:var(--mut1,#8fa8b3);border-bottom:1px solid var(--o12,rgba(255,255,255,.14))}
.ftd-l{text-align:left!important;width:42%}
.ftd-sec td{text-align:left!important;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:800;color:var(--brand,#00b1cf);padding-top:12px;padding-bottom:4px}
.ftd-row td{border-bottom:1px solid var(--o6,rgba(255,255,255,.06));color:var(--tx2,#c8d3da)}
.ftd-row .ftd-l{color:var(--tx1,#e8eef2)}
.ftd-major{font-weight:800}
.ftd-major td{background:color-mix(in srgb,var(--brand,#00b1cf) 8%,transparent)}
.ftd-major .ftd-l,.ftd-major .ftd-r{color:var(--tx1,#e8eef2)}
.ftd-sub{font-weight:700}
.ftd-pctrow{font-style:italic;opacity:.85}
.ftd-pos{color:#2bb673}
.ftd-neg{color:#e0726b}
.ftd-pctcol{width:90px}
.ftd-pcttxt{font-weight:700;font-size:11.5px}
.ftd-pcttxt.pos{color:#2bb673}
.ftd-pcttxt.neg{color:#e0726b}
.ftd-pcttxt.mut{opacity:.5;color:var(--mut1,#8fa8b3)}
.ftd-track{display:block;height:3px;border-radius:2px;background:var(--o8,rgba(255,255,255,.10));margin-top:2px;overflow:hidden}
.ftd-fill{display:block;height:100%}
.ftd-fill.pos{background:#2bb673}
.ftd-fill.neg{background:#e0726b}
.ftd-light .ftd-track{background:rgba(15,30,45,.10)}

/* ── ChartExploreView : explorateur de graphique (agrégat + annuel/mensuel + range + KPIs) ── */
.cev-wrap{width:100%;max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.cev-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cev-dd{min-width:190px}
.cev-modetoggle{display:inline-flex;border:1px solid var(--o12,rgba(255,255,255,.16));border-radius:9px;overflow:hidden}
.cev-modetoggle button{border:none;background:transparent;color:var(--tx2,#c8d3da);font-size:12px;font-weight:700;padding:7px 14px;cursor:pointer;transition:.12s}
.cev-modetoggle button.on{background:var(--brand,#00b1cf);color:#04222b}
.cev-modetoggle button:disabled{opacity:.4;cursor:not-allowed}
.cev-defnote{font-size:11px;color:var(--mut1,#8fa8b3);font-style:italic}
.cev-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px}
.cev-kpi{display:flex;flex-direction:column;gap:2px;padding:12px 13px;border:1px solid var(--o8,rgba(255,255,255,.10));background:var(--surf-2,#16212e);border-radius:13px}
.cev-kpi-hero{background:color-mix(in srgb,var(--brand,#00b1cf) 10%,var(--surf-2,#16212e));border-color:color-mix(in srgb,var(--brand,#00b1cf) 32%,transparent)}
.cev-kpi-lbl{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--mut1,#8fa8b3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cev-kpi-val{font-size:17px;font-weight:800;color:var(--tx1,#e8eef2);line-height:1.15}
.cev-kpi-sub{font-size:10.5px;color:var(--mut2,#9aa7b0)}
.cev-chart{height:300px;width:100%}
.cev-range{display:flex;flex-direction:column;gap:7px;padding:11px 13px;border:1px solid var(--o8,rgba(255,255,255,.10));background:var(--surf-1,rgba(255,255,255,.02));border-radius:12px}
.cev-range-row{display:flex;align-items:center;gap:11px}
.cev-range-cap{flex:0 0 42px;font-size:11px;font-weight:700;color:var(--mut1,#8fa8b3)}
.cev-range-row input[type=range]{flex:1 1 auto;min-width:0;accent-color:var(--brand,#00b1cf);cursor:pointer;height:4px}
.cev-range-val{flex:0 0 auto;min-width:64px;text-align:right;font-size:12px;font-weight:700;color:var(--tx1,#e8eef2)}
@media (max-width:760px){ .cev-chart{height:240px} }

/* ── Cell-highlighting du tableau HTML (FinTreeReportTable) : visite guidée + clic KPI ── */
.frt-hl-row > .frt-lbl{box-shadow:inset 3px 0 0 0 var(--brand)}
.frt-hl-row{background:color-mix(in srgb, var(--brand) 11%, transparent)!important}
.frt-hl-cell{outline:2px solid var(--brand);outline-offset:-2px;border-radius:4px;font-weight:800!important;
  background:color-mix(in srgb, var(--brand) 22%, transparent)!important;scroll-margin:48px}
.frt-flash{animation:frtFlash .95s ease-out 1}
@keyframes frtFlash{
  0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--brand) 65%, transparent)}
  70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--brand) 0%, transparent)}
  100%{box-shadow:0 0 0 0 transparent}
}
