/**
 * MoonProd CRM — intégration Dashtrans CRM Premium v1.6.
 *
 * Ce fichier est la couche d'adaptation locale. Les fichiers Dashtrans
 * `crm-premium.css` et `pace.min.css` restent copiés tels quels afin que la
 * référence amont soit diffable. Les règles ci-dessous traitent uniquement
 * les contraintes du CRM : thème bg-theme1, contraste, loaders contextuels,
 * compatibilité avec les anciennes classes et sidebar fixe.
 */

:root {
  --crm-secondary-text: rgba(248, 251, 255, .86);
  --crm-subtle-text: rgba(248, 251, 255, .78);
  --crm-surface-contrast: rgba(5, 14, 23, .46);
  --crm-surface-contrast-strong: rgba(5, 14, 23, .62);
}

/* -------------------------------------------------------------------------
   Thème officiel : bg-theme1
   ------------------------------------------------------------------------- */
body.crm-app.bg-theme1 {
  color: var(--crm-text);
}

/* bg-theme1 est plus lumineux que l'ancien thème 2. Les surfaces métier sont
   donc légèrement densifiées pour maintenir un contraste stable quel que soit
   l'endroit du dégradé situé derrière la carte. */
body.crm-app.bg-theme1 .card:not(.crm-card),
body.crm-app.bg-theme1 .modal-content,
body.crm-app.bg-theme1 .dropdown-menu,
body.crm-app.bg-theme1 .accordion-item,
body.crm-app.bg-theme1 .list-group-item {
  border-color: rgba(255, 255, 255, .13);
}

body.crm-app.bg-theme1 .card:not(.crm-card) {
  background-color: var(--crm-surface-contrast);
  backdrop-filter: blur(10px) saturate(112%);
  -webkit-backdrop-filter: blur(10px) saturate(112%);
}

/* Les cartes Premium amont utilisent un voile blanc très léger, adapté à un
   fond sombre. Sur la zone claire de bg-theme1 ce voile réduit trop le
   contraste : la couche MoonProd passe donc les surfaces Premium en verre
   sombre tout en conservant les bordures/lueurs du kit v1.2. */
body.crm-app.bg-theme1 .crm-card,
body.crm-app.bg-theme1 .crm-surface {
  background: linear-gradient(145deg, rgba(5,14,23,.56), rgba(5,14,23,.40));
}

/* La sidebar-header doit rester attachée au viewport. Ne JAMAIS remettre un
   filter/backdrop-filter/transform sur .sidebar-wrapper : cela recréerait un
   containing block et décalerait le header fixe de 60px. */
body.crm-app .sidebar-wrapper {
  filter: none !important;
  transform: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
body.crm-app .sidebar-header {
  top: 0 !important;
}

/* -------------------------------------------------------------------------
   Texte secondaire lisible — remplace l'usage propriétaire de .text-muted.
   ------------------------------------------------------------------------- */
.crm-text-secondary {
  color: var(--crm-secondary-text) !important;
}
.crm-text-subtle {
  color: var(--crm-subtle-text) !important;
}
.crm-text-strong {
  color: var(--crm-text) !important;
}

/* Compatibilité défensive pour les plugins/vendor qui produisent encore les
   classes Bootstrap. Le code MoonProd ne doit plus les utiliser directement. */
body.crm-app .text-muted,
body.crm-app .text-white-50 {
  color: var(--crm-secondary-text) !important;
}

body.crm-app .form-text,
body.crm-app .help-block {
  color: var(--crm-secondary-text);
}

/* -------------------------------------------------------------------------
   Invoice Pulse — variantes contextuelles du loader officiel v1.2.
   ------------------------------------------------------------------------- */
.crm-loader-mini {
  --loader-w: 16px;
  --loader-h: 20px;
  position: relative;
  display: inline-block;
  width: var(--loader-w);
  height: var(--loader-h);
  flex: 0 0 var(--loader-w);
  vertical-align: middle;
}
.crm-loader-mini::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid rgba(255,255,255,.46);
  border-radius: 4px 4px 5px 5px;
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.07));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.17), 0 0 9px rgba(91,156,255,.16);
  animation: crm-document-float 1.7s ease-in-out infinite;
}
.crm-loader-mini::after {
  content: "";
  position: absolute;
  left: 4px;
  right: 4px;
  top: 6px;
  height: 8px;
  background:
    linear-gradient(90deg,rgba(110,202,255,.95),rgba(119,126,255,.95)) 0 0 / 72% 1px no-repeat,
    linear-gradient(90deg,rgba(255,255,255,.72),rgba(255,255,255,.20)) 0 4px / 100% 1px no-repeat,
    linear-gradient(90deg,rgba(255,255,255,.52),rgba(255,255,255,.15)) 0 8px / 78% 1px no-repeat;
  animation: crm-invoice-lines 1.55s ease-in-out infinite;
}
.crm-loader-mini-pulse {
  position: absolute;
  right: -3px;
  bottom: -3px;
  width: 8px;
  height: 8px;
  border: 2px solid rgba(10,23,34,.92);
  border-radius: 50%;
  background: var(--crm-success);
  animation: crm-status-pulse 1.35s ease-out infinite;
}

.crm-inline-loader {
  min-height: 92px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 12px;
  color: var(--crm-secondary-text);
  text-align: center;
}
.crm-inline-loader .crm-loader-mini {
  --loader-w: 29px;
  --loader-h: 36px;
}
.crm-inline-loader .crm-loader-mini::before { border-radius: 7px 7px 8px 8px; }
.crm-inline-loader .crm-loader-mini::after {
  left: 7px;
  right: 7px;
  top: 11px;
  height: 14px;
  background:
    linear-gradient(90deg,rgba(110,202,255,.95),rgba(119,126,255,.95)) 0 0 / 72% 2px no-repeat,
    linear-gradient(90deg,rgba(255,255,255,.72),rgba(255,255,255,.20)) 0 6px / 100% 1px no-repeat,
    linear-gradient(90deg,rgba(255,255,255,.52),rgba(255,255,255,.15)) 0 12px / 78% 1px no-repeat;
}
.crm-inline-loader .crm-loader-mini-pulse {
  width: 12px;
  height: 12px;
  right: -5px;
  bottom: -5px;
  border-width: 3px;
}
.crm-inline-loader-label {
  color: var(--crm-secondary-text);
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .02em;
}

.crm-block-overlay {
  position: absolute;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 12px;
  min-height: 84px;
  border-radius: inherit;
  background:
    radial-gradient(circle at 50% 43%, rgba(98,166,255,.11), transparent 14rem),
    rgba(8,18,27,.82) !important;
  backdrop-filter: blur(10px) saturate(116%);
  -webkit-backdrop-filter: blur(10px) saturate(116%);
}
.crm-block-overlay .crm-loader-mini {
  --loader-w: 30px;
  --loader-h: 38px;
}
.crm-block-overlay .crm-loader-label {
  position: static;
  width: auto;
  transform: none;
  color: var(--crm-secondary-text);
  font-size: .7rem;
  letter-spacing: .08em;
}

/* Le loader plein écran de loaders.js utilise exactement le composant v1.2. */
#crmOperationLoader.crm-loader-demo {
  z-index: 999999;
}

/* Pace est un asset CSS amont figé en français. La couche locale traduit
   uniquement son libellé selon la langue serveur sans modifier le fichier
   v1.2 de référence. */
html[lang^="en"] .pace::after {
  content: "Processing";
}
html[lang^="ar"] .pace::after {
  content: "جارٍ المعالجة";
  direction: rtl;
  letter-spacing: 0;
  text-transform: none;
}

/* -------------------------------------------------------------------------
   Progressions Premium — bridge API CRM.loading.progress().
   ------------------------------------------------------------------------- */
.crm-progress-host > .crm-progress {
  margin-bottom: 0;
}
.crm-progress.is-indeterminate .crm-progress-value {
  min-width: 38px;
}

/* Les barres Bootstrap restent supportées pour les plugins tiers, mais les
   écrans CRM doivent utiliser .crm-progress. */
body.crm-app .progress:not(.crm-progress-track) {
  background-color: rgba(5,13,20,.28);
  border: 1px solid rgba(255,255,255,.09);
}

/* -------------------------------------------------------------------------
   Contrastes complémentaires sous bg-theme1
   ------------------------------------------------------------------------- */
body.crm-app.bg-theme1 .table,
body.crm-app.bg-theme1 .table > :not(caption) > * > * {
  color: rgba(255,255,255,.90);
}
body.crm-app.bg-theme1 code {
  color: #c8efff;
}
body.crm-app.bg-theme1 .form-control,
body.crm-app.bg-theme1 .form-select,
body.crm-app.bg-theme1 .input-group-text {
  color: rgba(255,255,255,.92);
}
body.crm-app.bg-theme1 .form-control::placeholder {
  color: rgba(255,255,255,.52) !important;
  opacity: 1 !important;
}

@media (prefers-reduced-motion: reduce) {
  .crm-loader-mini::before,
  .crm-loader-mini::after,
  .crm-loader-mini-pulse {
    animation: none !important;
  }
}

/* -------------------------------------------------------------------------
   Lisibilité renforcée des composants Premium sur le fond bg-theme1.
   La v1.2 amont a été dessinée sur un fond plus sombre : les alphas faibles
   deviennent insuffisants sur les zones cyan du thème 1. On conserve la
   palette, mais on relève uniquement les textes secondaires et aides.
   ------------------------------------------------------------------------- */
body.crm-app.bg-theme1 {
  --crm-muted: var(--crm-secondary-text);
  --crm-subtle: var(--crm-subtle-text);
}
body.crm-app.bg-theme1 .menu-label,
body.crm-app.bg-theme1 .crm-progress-note,
body.crm-app.bg-theme1 .crm-step-label,
body.crm-app.bg-theme1 .crm-table thead th,
body.crm-app.bg-theme1 .crm-tab,
body.crm-app.bg-theme1 .crm-form-label,
body.crm-app.bg-theme1 .crm-command-group,
body.crm-app.bg-theme1 .crm-command-key,
body.crm-app.bg-theme1 .crm-note,
body.crm-app.bg-theme1 .swal2-html-container,
body.crm-app.bg-theme1 .crm-datatable-host .page-link {
  color: var(--crm-secondary-text) !important;
}
body.crm-app.bg-theme1 .crm-step-date,
body.crm-app.bg-theme1 .crm-search input::placeholder,
body.crm-app.bg-theme1 .crm-input::placeholder,
body.crm-app.bg-theme1 .crm-textarea::placeholder,
body.crm-app.bg-theme1 .crm-command-search kbd {
  color: var(--crm-subtle-text) !important;
}
body.crm-app.bg-theme1 .crm-search i,
body.crm-app.bg-theme1 .crm-command-search i {
  color: rgba(248,251,255,.72) !important;
}
body.crm-app.bg-theme1 .crm-btn:not(.crm-btn-primary):not(.crm-btn-danger),
body.crm-app.bg-theme1 .crm-input,
body.crm-app.bg-theme1 .crm-select,
body.crm-app.bg-theme1 .crm-textarea {
  background-color: rgba(5,14,23,.24);
}
body.crm-app.bg-theme1 .crm-progress-value,
body.crm-app.bg-theme1 .crm-progress-track {
  background-color: rgba(5,14,23,.34);
}

/* -------------------------------------------------------------------------
   V37.4 — harmonisation visuelle bg-theme1 et composants Bootstrap legacy.
   Ces règles restent dans la couche d'intégration : aucun vendor n'est modifié.
   ------------------------------------------------------------------------- */
:root {
  --crm-primary-a: #55c8ff;
  --crm-primary-b: #5d82ff;
  --crm-primary-c: #786fff;
  --crm-primary-text: #f8fbff;
  --crm-control-bg: rgba(5,14,23,.50);
  --crm-control-border: rgba(200,235,255,.26);
}

/* Boutons Bootstrap encore utilisés par le Core : palette alignée sur le kit Premium. */
body.crm-app.bg-theme1 .btn-primary {
  color: var(--crm-primary-text) !important;
  background: linear-gradient(135deg,var(--crm-primary-a),var(--crm-primary-b) 62%,var(--crm-primary-c)) !important;
  border-color: rgba(230,247,255,.42) !important;
  box-shadow: 0 8px 20px rgba(71,125,255,.18), inset 0 1px 0 rgba(255,255,255,.20);
}
body.crm-app.bg-theme1 .btn-primary:hover,
body.crm-app.bg-theme1 .btn-primary:focus,
body.crm-app.bg-theme1 .btn-primary:active,
body.crm-app.bg-theme1 .btn-primary.active {
  color: #fff !important;
  background: linear-gradient(135deg,#6ad0ff,#6f90ff 62%,#897eff) !important;
  border-color: rgba(255,255,255,.54) !important;
  box-shadow: 0 10px 24px rgba(71,125,255,.24), inset 0 1px 0 rgba(255,255,255,.24) !important;
}
body.crm-app.bg-theme1 .btn-primary:disabled,
body.crm-app.bg-theme1 .btn-primary.disabled {
  color: rgba(248,251,255,.56) !important;
  background: rgba(58,105,160,.32) !important;
  border-color: rgba(190,224,255,.16) !important;
  box-shadow: none !important;
  opacity: 1;
}

body.crm-app.bg-theme1 .btn-outline-primary {
  color: #c9efff !important;
  background: rgba(5,14,23,.24) !important;
  border-color: rgba(111,205,255,.58) !important;
}
body.crm-app.bg-theme1 .btn-outline-primary:hover,
body.crm-app.bg-theme1 .btn-outline-primary:focus,
body.crm-app.bg-theme1 .btn-outline-primary:active,
body.crm-app.bg-theme1 .btn-outline-primary.active {
  color: #fff !important;
  background: rgba(70,167,232,.24) !important;
  border-color: rgba(154,225,255,.86) !important;
  box-shadow: 0 0 0 .2rem rgba(88,216,255,.12) !important;
}
body.crm-app.bg-theme1 .btn-outline-primary:disabled,
body.crm-app.bg-theme1 .btn-outline-primary.disabled {
  color: rgba(220,242,255,.45) !important;
  background: rgba(5,14,23,.15) !important;
  border-color: rgba(190,224,255,.18) !important;
  opacity: 1;
}

/* Badges Bootstrap legacy : contraste stable sur les zones cyan ET les cartes sombres. */
body.crm-app.bg-theme1 .bg-light-primary {
  background-color: rgba(17,91,136,.42) !important;
  box-shadow: inset 0 0 0 1px rgba(102,211,255,.22);
}
body.crm-app.bg-theme1 .bg-light-primary.text-primary,
body.crm-app.bg-theme1 .bg-light-primary .text-primary {
  color: #d7f4ff !important;
}
body.crm-app.bg-theme1 .bg-light-secondary {
  background-color: rgba(77,94,115,.42) !important;
  box-shadow: inset 0 0 0 1px rgba(220,235,250,.15);
}
body.crm-app.bg-theme1 .bg-light-secondary.text-secondary,
body.crm-app.bg-theme1 .bg-light-secondary .text-secondary {
  color: #edf4fb !important;
}
body.crm-app.bg-theme1 .rounded-pill.bg-light-success,
body.crm-app.bg-theme1 .badge.bg-light-success {
  background-color: rgba(16,92,72,.46) !important;
  box-shadow: inset 0 0 0 1px rgba(98,220,186,.30);
}
body.crm-app.bg-theme1 .rounded-pill.bg-light-success.text-success,
body.crm-app.bg-theme1 .badge.bg-light-success.text-success {
  color: #9cf2d8 !important;
}

body.crm-app.bg-theme1 .bg-light-info {
  background-color: rgba(18,84,122,.46) !important;
  box-shadow: inset 0 0 0 1px rgba(111,215,255,.25);
}
body.crm-app.bg-theme1 .bg-light-info.text-info,
body.crm-app.bg-theme1 .bg-light-info .text-info {
  color: #b9ecff !important;
}
body.crm-app.bg-theme1 .bg-light-warning {
  background-color: rgba(111,78,16,.46) !important;
  box-shadow: inset 0 0 0 1px rgba(255,211,102,.25);
}
body.crm-app.bg-theme1 .bg-light-warning.text-warning,
body.crm-app.bg-theme1 .bg-light-warning .text-warning {
  color: #ffe08a !important;
}
body.crm-app.bg-theme1 .bg-light-danger {
  background-color: rgba(113,42,55,.46) !important;
  box-shadow: inset 0 0 0 1px rgba(255,133,157,.24);
}
body.crm-app.bg-theme1 .bg-light-danger.text-danger,
body.crm-app.bg-theme1 .bg-light-danger .text-danger {
  color: #ffc0cd !important;
}

/* Contrôles et modales : plus aucun select blanc ni chevron sombre sur bg-theme1. */
body.crm-app.bg-theme1 .modal-content {
  color: var(--crm-text) !important;
  background: linear-gradient(145deg,rgba(8,25,39,.98),rgba(5,16,27,.98)) !important;
  border-color: rgba(190,225,255,.18) !important;
  box-shadow: 0 28px 80px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.06);
}
body.crm-app.bg-theme1 .modal-header,
body.crm-app.bg-theme1 .modal-footer {
  border-color: rgba(255,255,255,.13) !important;
}
body.crm-app.bg-theme1 .modal-title,
body.crm-app.bg-theme1 .modal-body .form-label,
body.crm-app.bg-theme1 .modal-body .form-check-label {
  color: var(--crm-text) !important;
}
body.crm-app.bg-theme1 .form-control,
body.crm-app.bg-theme1 .form-select,
body.crm-app.bg-theme1 .input-group-text {
  background-color: var(--crm-control-bg) !important;
  border-color: var(--crm-control-border) !important;
}
body.crm-app.bg-theme1 .form-select {
  color: #f6fbff !important;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dff5ff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: right .75rem center !important;
  background-size: 16px 12px !important;
}
[dir="rtl"] body.crm-app.bg-theme1 .form-select {
  background-position: left .75rem center !important;
}
body.crm-app.bg-theme1 .form-select:disabled,
body.crm-app.bg-theme1 .form-control:disabled,
body.crm-app.bg-theme1 .form-control[readonly] {
  color: rgba(248,251,255,.68) !important;
  background-color: rgba(255,255,255,.09) !important;
  border-color: rgba(255,255,255,.13) !important;
  opacity: 1;
}
body.crm-app.bg-theme1 .form-select option {
  color: #f8fbff;
  background: #102638;
}

/* Barre Actions groupées : état désactivé volontairement discret mais lisible. */
body.crm-app.bg-theme1 .crm-bulk-action:disabled {
  color: rgba(236,247,255,.54) !important;
  background-color: rgba(8,25,39,.46) !important;
  border-color: rgba(190,224,255,.15) !important;
}
body.crm-app.bg-theme1 .crm-bulk-apply:disabled {
  color: rgba(236,247,255,.48) !important;
  background: rgba(58,105,160,.24) !important;
  border-color: rgba(190,224,255,.14) !important;
}

/* Onglets : ils se replient sur plusieurs lignes au lieu de créer un mini-scroll inutile. */
body.crm-app.bg-theme1 .crm-nav-tabs,
body.crm-app.bg-theme1 .nav-tabs {
  display: flex;
  flex-wrap: wrap !important;
  gap: .3rem;
  overflow: visible !important;
  padding: .2rem;
  border-bottom: 0 !important;
}
body.crm-app.bg-theme1 .nav-tabs .nav-item {
  flex-shrink: 0;
  margin: 0;
}
body.crm-app.bg-theme1 .nav-tabs .nav-link {
  margin: 0 !important;
  padding: .55rem .9rem;
  color: rgba(248,251,255,.78) !important;
  background: rgba(5,14,23,.18);
  border: 1px solid rgba(255,255,255,.10) !important;
  border-radius: .65rem !important;
  line-height: 1.25;
}
body.crm-app.bg-theme1 .nav-tabs .nav-link:hover,
body.crm-app.bg-theme1 .nav-tabs .nav-link:focus {
  color: #fff !important;
  background: rgba(255,255,255,.09);
  border-color: rgba(255,255,255,.20) !important;
}
body.crm-app.bg-theme1 .nav-tabs .nav-link.active {
  color: #fff !important;
  background: linear-gradient(135deg,rgba(85,200,255,.24),rgba(93,130,255,.24)) !important;
  border-color: rgba(154,225,255,.56) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10);
}

/* DataTables : seuls les tableaux défilent horizontalement ; recherche/pagination restent fixes. */
body.crm-app .crm-datatable-scroll {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}
body.crm-app .dataTables_wrapper > .row:first-child {
  align-items: center;
  row-gap: .75rem;
}
body.crm-app .dataTables_wrapper .dataTables_filter {
  text-align: right !important;
}
body.crm-app .dataTables_wrapper .dataTables_filter input {
  max-width: min(100%, 260px);
}
[dir="rtl"] body.crm-app .dataTables_wrapper .dataTables_filter {
  text-align: left !important;
}
@media (max-width: 767.98px) {
  body.crm-app .dataTables_wrapper .dataTables_length,
  body.crm-app .dataTables_wrapper .dataTables_filter,
  body.crm-app .dataTables_wrapper .dataTables_info,
  body.crm-app .dataTables_wrapper .dataTables_paginate {
    text-align: start !important;
  }
  body.crm-app .dataTables_wrapper .dataTables_filter input {
    width: 100%;
    max-width: 100%;
    margin-inline-start: 0;
    margin-top: .35rem;
  }
}

/* Diagnostics Composer : ce résultat textuel doit se replier, pas forcer un scroll horizontal. */
body.crm-app .crm-diagnostics-wrap .table-responsive {
  overflow-x: visible;
}
body.crm-app .crm-diagnostics-wrap table,
body.crm-app .crm-diagnostics-wrap th,
body.crm-app .crm-diagnostics-wrap td {
  white-space: normal !important;
}
body.crm-app .crm-diagnostics-wrap td {
  overflow-wrap: anywhere;
  word-break: break-word;
}
@media (max-width: 767.98px) {
  body.crm-app .crm-diagnostics-wrap .table-responsive {
    overflow-x: auto;
  }
  body.crm-app .crm-diagnostics-wrap table {
    min-width: 620px;
  }
}

/* SweetAlert : l'ancien thème MoonProd avait des sélecteurs plus spécifiques.
   On sur-spécifie ici pour garantir la palette Premium réelle. */
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal {
  color: #f8fbff !important;
  background: linear-gradient(145deg,rgba(8,25,39,.99),rgba(5,16,27,.99)) !important;
  border: 1px solid rgba(190,225,255,.18) !important;
  box-shadow: 0 30px 90px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.06) !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup .swal2-title,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal .swal2-title {
  color: #f8fbff !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup .swal2-html-container,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal .swal2-html-container {
  color: rgba(248,251,255,.82) !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup .btn-mp-primary,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal .swal2-confirm {
  color: #fff !important;
  background: linear-gradient(135deg,var(--crm-primary-a),var(--crm-primary-b) 62%,var(--crm-primary-c)) !important;
  border-color: rgba(230,247,255,.36) !important;
  box-shadow: 0 9px 24px rgba(71,125,255,.22) !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup .btn-light,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal .swal2-cancel {
  color: rgba(248,251,255,.88) !important;
  background: rgba(255,255,255,.08) !important;
  border-color: rgba(255,255,255,.18) !important;
  box-shadow: none !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup .btn-light:hover,
body.crm-app.bg-theme1 .swal2-container .swal2-popup.crm-swal .swal2-cancel:hover {
  color: #fff !important;
  background: rgba(255,255,255,.13) !important;
  border-color: rgba(255,255,255,.26) !important;
}

/* Fermer une modale : Bootstrap 5 dessine l'icône en noir par défaut. */
body.crm-app.bg-theme1 .modal .btn-close {
  filter: invert(1) grayscale(1) brightness(1.75);
  opacity: .78;
}
body.crm-app.bg-theme1 .modal .btn-close:hover,
body.crm-app.bg-theme1 .modal .btn-close:focus {
  opacity: 1;
}

/* -------------------------------------------------------------------------
   V37.6 / Dashtrans CRM Premium v1.6 — tables, skeletons, action column
   ------------------------------------------------------------------------- */

/* Le libelle valide du loader reste court, mais ne doit jamais deborder si
   la police ou le zoom navigateur change. Le message contextuel long reste
   porte par aria-label dans loaders.js. */
body.crm-app .crm-loader-demo .crm-loader-label,
body.crm-app .crm-loader-label {
  width: min(260px, calc(100vw - 48px));
  max-width: calc(100vw - 48px);
  padding-inline: 8px;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.35;
  letter-spacing: .075em;
}

/* Skeleton DataTables central : masque visuellement la table pendant chaque
   requete server-side (initialisation, recherche, filtre, pagination). */
body.crm-app .crm-datatable-scroll {
  position: relative;
}
body.crm-app .crm-datatable-scroll.is-loading {
  min-height: 265px;
}
body.crm-app .crm-datatable-skeleton {
  display: none;
  position: absolute;
  inset: 0;
  z-index: 6;
  overflow: hidden;
  border-radius: 14px;
  background: linear-gradient(145deg, rgba(5,31,52,.985), rgba(3,22,38,.985));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035);
}
body.crm-app .crm-datatable-scroll.is-loading .crm-datatable-skeleton {
  display: block;
}
body.crm-app .crm-datatable-scroll.is-loading > table {
  visibility: hidden;
}
body.crm-app .dataTables_wrapper .dataTables_processing {
  display: none !important;
}
body.crm-app .crm-manual-table-skeleton .crm-skeleton-row {
  grid-template-columns: 42px 1.3fr 1fr .8fr 90px;
}

/* Colonne Actions : variante MoonProd demandee, plus distincte du reste du
   tableau que le bleu upstream v1.5 tout en restant dans bg-theme1. */
body.crm-app.bg-theme1 .crm-datatable-scroll table.crm-sticky-actions th:last-child,
body.crm-app.bg-theme1 .crm-datatable-scroll table.crm-sticky-actions td:last-child {
  background: rgba(9, 48, 78, .975) !important;
  border-inline-start: 1px solid rgba(112, 213, 255, .13) !important;
}
body.crm-app.bg-theme1 .crm-datatable-scroll table.crm-sticky-actions thead th:last-child {
  background: rgba(7, 37, 64, .995) !important;
}
body.crm-app.bg-theme1 .crm-datatable-scroll table.crm-sticky-actions tbody tr:hover td:last-child {
  background: rgba(11, 59, 92, .99) !important;
}

/* Le menu d'actions doit rester lisible sur la colonne sticky. */
body.crm-app.bg-theme1 .crm-table-actions .dropdown-menu.crm-action-menu {
  min-width: 205px;
}
body.crm-app.bg-theme1 .crm-action-menu .dropdown-item:disabled,
body.crm-app.bg-theme1 .crm-action-menu .dropdown-item.disabled {
  color: rgba(221,235,245,.40) !important;
  background: transparent !important;
}

/* Les tabs CRM Premium v1.6 sont la nouvelle primitive canonique. */
body.crm-app.bg-theme1 .crm-tabs {
  max-width: 100%;
  background: rgba(3,24,41,.38);
  border-color: rgba(205,233,252,.13);
}
body.crm-app.bg-theme1 .crm-tab {
  color: #b8ccda;
  text-decoration: none;
  font-weight: 650;
}
body.crm-app.bg-theme1 .crm-tab:hover,
body.crm-app.bg-theme1 .crm-tab:focus {
  color: #effaff;
  background: rgba(255,255,255,.055);
}
body.crm-app.bg-theme1 .crm-tab.is-active {
  color: #fff;
  background: linear-gradient(135deg,rgba(43,142,208,.50),rgba(84,88,194,.42));
  box-shadow: 0 7px 18px rgba(8,35,66,.18), inset 0 1px 0 rgba(255,255,255,.13);
}

@media (max-width: 767.98px) {
  body.crm-app .crm-datatable-scroll.crm-mobile-cards-wrap {
    min-height: 0;
  }
  body.crm-app .crm-datatable-scroll.crm-mobile-cards-wrap.is-loading {
    min-height: 265px;
    overflow: hidden;
  }
  body.crm-app .crm-manual-table-skeleton .crm-skeleton-row,
  body.crm-app .crm-datatable-skeleton .crm-skeleton-row {
    grid-template-columns: 36px 1fr;
  }
  body.crm-app .crm-manual-table-skeleton .crm-skeleton-row > :nth-child(n+3),
  body.crm-app .crm-datatable-skeleton .crm-skeleton-row > :nth-child(n+3) {
    display: none;
  }
}
body.crm-app .crm-datatable-scroll.has-open-action-menu {
  overflow: visible !important;
  position: relative;
  z-index: 8;
}
/* Le dropdown Actions doit passer devant les cellules sticky des lignes suivantes. */
body.crm-app table.crm-sticky-actions tbody tr.crm-action-row-open {
  position: relative;
  z-index: 1080;
}
body.crm-app table.crm-sticky-actions tbody tr.crm-action-row-open > td:last-child,
body.crm-app table.crm-sticky-actions tbody td.crm-action-cell-open {
  z-index: 1090 !important;
}
body.crm-app .crm-table-actions .dropdown.crm-action-menu-open,
body.crm-app .crm-table-actions .dropdown.crm-action-menu-open .crm-action-menu {
  z-index: 1100 !important;
}


/* -------------------------------------------------------------------------
   V1.6 — loader canonique unique / anti-débordement
   ------------------------------------------------------------------------- */
.crm-button-loader-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-width: 1.25rem;
  line-height: 1;
}

body.crm-app button[aria-busy="true"],
body.crm-app .crm-btn[aria-busy="true"] {
  overflow: hidden;
}
body.crm-app button.crm-is-loading[aria-busy="true"],
body.crm-app .btn.crm-is-loading[aria-busy="true"],
body.crm-app .crm-btn.crm-is-loading[aria-busy="true"] {
  opacity: 1 !important;
  filter: none !important;
  cursor: wait !important;
  pointer-events: none !important;
  color: var(--crm-loading-color) !important;
  background: var(--crm-loading-background) !important;
  border-color: var(--crm-loading-border-color) !important;
  box-shadow: var(--crm-loading-box-shadow) !important;
}

/* Le label visuel du loader plein écran reste DANS la carte 156px.
   Le message contextuel long est uniquement dans aria-label. */
body.crm-app #crmOperationLoader .crm-loader-card .crm-loader-label {
  left: 10px;
  right: 10px;
  width: auto;
  max-width: none;
  transform: none;
  padding-inline: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: normal;
  letter-spacing: .075em;
}

body.crm-app .crm-inline-loader-label,
body.crm-app .crm-block-overlay .crm-loader-label {
  position: static;
  width: min(100%, 14rem);
  max-width: 100%;
  padding-inline: .5rem;
  transform: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: normal;
  text-align: center;
  letter-spacing: .045em;
}

html[dir="rtl"] body.crm-app #crmOperationLoader .crm-loader-card .crm-loader-label,
html[dir="rtl"] body.crm-app .crm-inline-loader-label,
html[dir="rtl"] body.crm-app .crm-block-overlay .crm-loader-label {
  letter-spacing: 0;
  text-transform: none;
}

/* -------------------------------------------------------------------------
   V1.16 — menus Actions en portal : aucune mutation de géométrie du tableau
   ------------------------------------------------------------------------- */
body.crm-app .crm-datatable-scroll.has-open-action-menu {
  overflow: auto !important;
  z-index: auto;
}
body.crm-app .crm-action-menu.crm-action-menu-portal {
  position: fixed !important;
  inset: auto !important;
  transform: none !important;
  margin: 0 !important;
  z-index: 11050 !important;
  max-width: min(300px, calc(100vw - 16px));
}
body.crm-app table.crm-sticky-actions tbody tr.crm-action-row-open,
body.crm-app table.crm-sticky-actions tbody tr.crm-action-row-open > td:last-child,
body.crm-app table.crm-sticky-actions tbody td.crm-action-cell-open {
  z-index: auto !important;
}

/* -------------------------------------------------------------------------
   V1.16 — loader canonique : le même libellé complet partout, jamais ellipsé
   ------------------------------------------------------------------------- */
#crmOperationLoader .crm-loader-card {
  width: min(230px, calc(100vw - 32px));
}
#crmOperationLoader .crm-loader-card .crm-loader-label,
.crm-inline-loader-label,
.crm-block-overlay .crm-loader-label {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}
#crmOperationLoader .crm-loader-card .crm-loader-label {
  left: 16px !important;
  right: 16px !important;
  width: auto !important;
  max-width: none !important;
  transform: none !important;
  line-height: 1.35;
}
.crm-inline-loader-label,
.crm-block-overlay .crm-loader-label {
  width: auto !important;
  max-width: min(100%, 20rem) !important;
}

/* -------------------------------------------------------------------------
   V1.19 — lisibilite, contexte marque, DataTables mobile
   ------------------------------------------------------------------------- */

/* Les surfaces fonctionnelles ne doivent plus laisser le degrade de page
   traverser le texte. Le verre reste perceptible sur les bordures/lueurs,
   mais le fond devient suffisamment dense pour garantir la lecture. */
body.crm-app.bg-theme1 .card:not(.crm-card) {
  background-color: rgba(4, 24, 41, .90) !important;
  backdrop-filter: blur(14px) saturate(108%);
  -webkit-backdrop-filter: blur(14px) saturate(108%);
}
body.crm-app.bg-theme1 .crm-card,
body.crm-app.bg-theme1 .crm-surface {
  background: linear-gradient(145deg, rgba(4, 25, 42, .94), rgba(5, 29, 48, .88)) !important;
}
body.crm-app.bg-theme1 .alert {
  background-color: rgba(4, 29, 48, .90) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
body.crm-app.bg-theme1 .crm-datatable-scroll:not(.crm-mobile-cards-wrap) {
  background: rgba(3, 23, 39, .90) !important;
}

/* Selecteur de marque du topbar : select natif (donc clavier/mobile fiable),
   visuellement integre au theme et sans dependance Select2. */
body.crm-app .crm-context-brand-item {
  display: flex;
  align-items: center;
}
body.crm-app .crm-context-brand-select-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  min-height: 42px;
  max-width: 260px;
  margin-inline: .15rem;
  padding-inline: .7rem 1.65rem;
  border: 1px solid rgba(210, 237, 255, .12);
  border-radius: 12px;
  background: rgba(3, 24, 41, .72);
  color: #f4fbff;
}
body.crm-app .crm-context-brand-select-wrap > i {
  flex: 0 0 auto;
  font-size: 1.45rem;
  color: #f4fbff;
}
body.crm-app .crm-context-brand-select-wrap::after {
  content: "\ea4a";
  position: absolute;
  inset-inline-end: .55rem;
  top: 50%;
  transform: translateY(-50%);
  font-family: boxicons !important;
  font-size: 1rem;
  pointer-events: none;
  opacity: .8;
}
body.crm-app .crm-context-brand-select {
  min-width: 0;
  max-width: 205px;
  padding: 0;
  border: 0;
  outline: 0;
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  color: #f4fbff;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  text-overflow: ellipsis;
}
body.crm-app .crm-context-brand-select option {
  color: #f4fbff;
  background: #071f33;
}
body.crm-app .crm-context-brand-select:focus-visible {
  outline: 2px solid rgba(101, 213, 255, .62);
  outline-offset: 4px;
  border-radius: 5px;
}
body.crm-app .crm-context-brand-select:disabled {
  cursor: wait;
  opacity: .6;
}
html[dir="rtl"] body.crm-app .crm-context-brand-select-wrap {
  padding-inline: .7rem 1.65rem;
}

/* Sur mobile on conserve exactement l'empreinte d'une icone du topbar :
   le select natif recouvre l'icone de maniere transparente et reste tappable. */
@media (max-width: 767.98px) {
  body.crm-app .crm-context-brand-select-wrap {
    width: 52px;
    min-width: 52px;
    height: 60px;
    min-height: 60px;
    margin: 0;
    padding: 0;
    justify-content: center;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  body.crm-app .crm-context-brand-select-wrap::after { display: none; }
  body.crm-app .crm-context-brand-select-wrap > i { font-size: 1.55rem; }
  body.crm-app .crm-context-brand-select {
    position: absolute;
    inset: 0;
    width: 100%;
    max-width: none;
    opacity: 0;
    cursor: pointer;
  }
}

/* DataTables mobile : aucun ellipsis/nowrap ne doit survivre dans les cartes. */
@media (max-width: 767.98px) {
  body.crm-app table.crm-mobile-cards tbody tr {
    min-width: 0 !important;
    max-width: 100% !important;
    background: rgba(4, 31, 51, .96) !important;
  }
  body.crm-app table.crm-mobile-cards tbody td {
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }
  body.crm-app table.crm-mobile-cards tbody td > *,
  body.crm-app table.crm-mobile-cards tbody td a,
  body.crm-app table.crm-mobile-cards tbody td code,
  body.crm-app table.crm-mobile-cards tbody td small,
  body.crm-app table.crm-mobile-cards tbody td strong,
  body.crm-app table.crm-mobile-cards tbody td span:not(.crm-status-dot) {
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }

  /* Barre bulk compacte : aucune commande ne doit deborder de la carte. */
  body.crm-app .crm-bulk-toolbar {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px !important;
    width: 100%;
  }
  body.crm-app .crm-bulk-toolbar > .d-flex:first-child,
  body.crm-app .crm-bulk-toolbar .crm-bulk-action {
    grid-column: 1 / -1;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
  }
  body.crm-app .crm-bulk-toolbar .crm-bulk-apply,
  body.crm-app .crm-bulk-toolbar .crm-bulk-clear {
    width: 100%;
    min-width: 0;
    justify-content: center;
    white-space: normal;
  }
}

/* Sur les telephones etroits, label puis valeur : on privilegie la lecture
   plutot qu'une fausse grille a deux colonnes trop serree. */
@media (max-width: 575.98px) {
  body.crm-app table.crm-mobile-cards tbody td {
    display: block !important;
    text-align: start !important;
  }
  body.crm-app table.crm-mobile-cards tbody td::before {
    display: block;
    width: 100%;
    margin-bottom: .35rem;
    text-align: start !important;
  }
  body.crm-app table.crm-mobile-cards tbody td .crm-badge,
  body.crm-app table.crm-mobile-cards tbody td .rounded-pill,
  body.crm-app table.crm-mobile-cards tbody td .crm-status {
    display: inline-flex;
    width: auto;
    max-width: 100%;
    margin-inline-start: 0;
  }
}

/* Notes : l'input readonly du gabarit Dashtrans est mono-ligne par nature.
   Une copie texte repliable devient la representation mobile, et les actions
   passent dans une vraie rangee separee. */
body.crm-app .notes-todo-table .crm-note-title-mobile { display: none; }
body.crm-app .notes-todo-table .crm-note-actions { display: contents; }
@media (max-width: 767.98px) {
  body.crm-app .notes-todo-table .todo-item .input-group {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 8px;
    width: 100%;
    min-width: 0;
  }
  body.crm-app .notes-todo-table .todo-item .input-group > .input-group-text {
    grid-column: 1;
    grid-row: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    min-width: 42px;
    min-height: 42px;
    border-radius: 11px !important;
  }
  body.crm-app .notes-todo-table .todo-item input[type="text"][readonly] {
    display: none !important;
  }
  body.crm-app .notes-todo-table .crm-note-title-mobile {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    align-items: center;
    min-width: 0;
    min-height: 42px;
    padding: .6rem .75rem;
    border: 1px solid rgba(204, 233, 251, .12);
    border-radius: 11px;
    background: rgba(2, 21, 36, .54);
    color: #f3f9fd;
    white-space: normal !important;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  body.crm-app .notes-todo-table .crm-note-actions {
    grid-column: 1 / -1;
    grid-row: 2;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    width: 100%;
    padding-top: 1px;
  }
  body.crm-app .notes-todo-table .crm-note-actions .btn {
    flex: 0 0 42px;
    width: 42px;
    min-width: 42px;
    height: 42px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 11px !important;
  }
}

/* -------------------------------------------------------------------------
   V1.37 — restauration du contrat boutons Premium + segmented controls.
   Les composants Bootstrap legacy restent acceptés, mais leur géométrie ne
   doit plus diverger des .crm-btn ni produire un bouton blanc hors thème.
   ------------------------------------------------------------------------- */
body.crm-app.bg-theme1 .btn:not(.btn-close):not(.page-link) {
  min-height: 38px;
  padding: 8px 13px;
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 650;
  letter-spacing: .005em;
  transition: transform .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease, color .16s ease;
}
body.crm-app.bg-theme1 .btn:not(.btn-close):not(.page-link):hover { transform: translateY(-1px); }
body.crm-app.bg-theme1 .btn:not(.btn-close):not(.page-link):active { transform: translateY(0); }
body.crm-app.bg-theme1 .btn-sm:not(.btn-close) {
  min-height: 34px;
  padding: 7px 10px;
  border-radius: 10px;
  font-size: 11px;
}
body.crm-app.bg-theme1 .btn i { font-size: 16px; line-height: 1; }

body.crm-app.bg-theme1 .btn-light {
  color: rgba(238,248,255,.84) !important;
  background: linear-gradient(145deg,rgba(255,255,255,.085),rgba(255,255,255,.038)) !important;
  border-color: rgba(205,236,255,.18) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.07),0 7px 18px rgba(0,0,0,.08) !important;
}
body.crm-app.bg-theme1 .btn-light:hover,
body.crm-app.bg-theme1 .btn-light:focus,
body.crm-app.bg-theme1 .btn-light:active,
body.crm-app.bg-theme1 .btn-light.active {
  color: #fff !important;
  background: linear-gradient(145deg,rgba(78,164,225,.24),rgba(90,104,222,.17)) !important;
  border-color: rgba(116,207,255,.38) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.11),0 9px 22px rgba(0,0,0,.10) !important;
}

/* Les btn-group de scope (Actifs/Corbeille, etc.) deviennent de vrais
   segmented controls Premium sans couture Bootstrap blanche. */
body.crm-app.bg-theme1 .btn-group {
  gap: 3px;
  padding: 4px;
  border: 1px solid rgba(197,232,255,.15);
  border-radius: 13px;
  background: rgba(5,14,23,.28);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.055);
}
body.crm-app.bg-theme1 .btn-group > .btn:not(.btn-close) {
  min-height: 34px;
  margin: 0 !important;
  padding: 7px 12px;
  border: 0 !important;
  border-radius: 9px !important;
  color: rgba(226,241,251,.70) !important;
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}
body.crm-app.bg-theme1 .btn-group > .btn:not(.btn-close):hover {
  color: #fff !important;
  background: rgba(255,255,255,.07) !important;
}
body.crm-app.bg-theme1 .btn-group > .btn.active:not(.btn-close),
body.crm-app.bg-theme1 .btn-group > .btn[aria-pressed="true"]:not(.btn-close) {
  color: #fff !important;
  background: linear-gradient(135deg,rgba(35,151,217,.34),rgba(82,96,221,.28)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10),0 5px 14px rgba(0,0,0,.10) !important;
}

/* Une recherche métier externe masque visuellement le filtre DataTables
   redondant même avant/pendant un redraw. */
body.crm-app .dataTables_filter.crm-dt-filter-external { display: none !important; }


/* V1.41 — Branding Manager: logos centralisés */
.crm-sidebar-wordmark{display:flex;align-items:center;min-width:0}.crm-sidebar-logo-full{display:block;max-width:154px;max-height:42px;object-fit:contain;object-position:left center}.crm-auth-brand-logo{max-width:min(220px,72vw);height:auto;max-height:88px;object-fit:contain}[dir="rtl"] .crm-sidebar-logo-full{object-position:right center}

/* ========================================================================
   V1.42 — Premium UI CSS polish
   Global Select2, bulk actions, DataTables length control and sidebar density.
   ======================================================================== */

/* Select2 Premium : le contrat visuel vaut désormais partout, pas seulement
   dans les modales. La couche d'intégration est volontairement chargée après
   le CSS vendor afin de conserver crm-premium.css diffable. */
body.crm-app.bg-theme1 .select2-container--bootstrap4,
body.crm-app.bg-theme1 .select2-container--default {
  min-width: 0;
  max-width: 100%;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection,
body.crm-app.bg-theme1 .select2-container--default .select2-selection {
  min-height: 43px !important;
  border: 1px solid rgba(194,229,252,.22) !important;
  border-radius: 12px !important;
  color: #f8fbff !important;
  background: rgba(5,31,51,.88) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035) !important;
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single,
body.crm-app.bg-theme1 .select2-container--default .select2-selection--single {
  display: flex !important;
  align-items: center !important;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered,
body.crm-app.bg-theme1 .select2-container--default .select2-selection--single .select2-selection__rendered {
  min-width: 0;
  min-height: 41px;
  display: flex;
  align-items: center;
  width: 100%;
  padding: 0 2.5rem 0 .85rem !important;
  color: #f8fbff !important;
  line-height: 1.35 !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html[dir="rtl"] body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered,
html[dir="rtl"] body.crm-app.bg-theme1 .select2-container--default .select2-selection--single .select2-selection__rendered {
  padding: 0 .85rem 0 2.5rem !important;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection__placeholder,
body.crm-app.bg-theme1 .select2-container--default .select2-selection__placeholder {
  color: rgba(215,232,244,.54) !important;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow,
body.crm-app.bg-theme1 .select2-container--default .select2-selection--single .select2-selection__arrow {
  top: 50% !important;
  right: .2rem !important;
  width: 2.35rem !important;
  height: auto !important;
  min-height: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transform: translateY(-50%) !important;
}
html[dir="rtl"] body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow,
html[dir="rtl"] body.crm-app.bg-theme1 .select2-container--default .select2-selection--single .select2-selection__arrow {
  right: auto !important;
  left: .2rem !important;
}
body.crm-app.bg-theme1 .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,
body.crm-app.bg-theme1 .select2-container--default .select2-selection--single .select2-selection__arrow b {
  position: static !important;
  margin: 0 !important;
  border-color: #d9f4ff transparent transparent transparent !important;
}
body.crm-app.bg-theme1 .select2-container--focus .select2-selection,
body.crm-app.bg-theme1 .select2-container--open .select2-selection {
  border-color: rgba(98,216,255,.72) !important;
  background: rgba(4,35,58,.98) !important;
  box-shadow: 0 0 0 3px rgba(72,193,244,.12), inset 0 1px 0 rgba(255,255,255,.04) !important;
}
body.crm-app.bg-theme1 .select2-container--disabled .select2-selection {
  color: rgba(224,238,247,.62) !important;
  border-color: rgba(190,224,255,.14) !important;
  background: rgba(8,25,39,.48) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025) !important;
  cursor: not-allowed !important;
  opacity: 1 !important;
}
body.crm-app.bg-theme1 .select2-container--disabled .select2-selection__rendered,
body.crm-app.bg-theme1 .select2-container--disabled .select2-selection__placeholder {
  color: rgba(224,238,247,.58) !important;
}
body.crm-app.bg-theme1 select.form-select-sm + .select2-container .select2-selection,
body.crm-app.bg-theme1 select.crm-bulk-action + .select2-container .select2-selection,
body.crm-app.bg-theme1 .dataTables_length select + .select2-container .select2-selection {
  min-height: 38px !important;
  border-radius: 11px !important;
}
body.crm-app.bg-theme1 select.form-select-sm + .select2-container .select2-selection__rendered,
body.crm-app.bg-theme1 select.crm-bulk-action + .select2-container .select2-selection__rendered,
body.crm-app.bg-theme1 .dataTables_length select + .select2-container .select2-selection__rendered {
  min-height: 36px !important;
  font-size: 12px;
}

/* Actions groupées : une seule ligne compacte sur desktop, sans select 100%
   qui expulse les boutons ; empilement propre sur petits écrans. */
body.crm-app .crm-bulk-toolbar {
  display: grid !important;
  grid-template-columns: minmax(180px, 1fr) minmax(220px, 280px) auto auto;
  align-items: center;
  gap: 10px;
  width: 100%;
}
body.crm-app .crm-bulk-summary {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 9px;
}
body.crm-app .crm-bulk-count {
  min-width: 30px;
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 8px;
  border: 1px solid rgba(94,206,255,.28);
  border-radius: 9px !important;
  color: #dff6ff !important;
  background: rgba(34,143,205,.18) !important;
}
body.crm-app .crm-bulk-action-wrap {
  min-width: 0;
  width: 100%;
}
body.crm-app .crm-bulk-action-wrap > .select2-container {
  width: 100% !important;
}
body.crm-app .crm-bulk-apply,
body.crm-app .crm-bulk-clear {
  white-space: nowrap;
}
body.crm-app.bg-theme1 .crm-bulk-apply:disabled,
body.crm-app.bg-theme1 .crm-bulk-clear:disabled {
  color: rgba(223,239,249,.46) !important;
  border-color: rgba(190,224,255,.12) !important;
  background: rgba(8,28,45,.36) !important;
  box-shadow: none !important;
  transform: none !important;
}

/* DataTables : length/recherche plus cohérents et plus compacts. */
body.crm-app .dataTables_wrapper .dataTables_length label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--crm-secondary-text);
}
body.crm-app .dataTables_wrapper .dataTables_length .select2-container {
  width: 88px !important;
  flex: 0 0 88px;
}
body.crm-app .dataTables_wrapper .dataTables_filter input {
  width: 230px;
  max-width: 100%;
  min-height: 40px;
  margin-inline-start: 8px;
  border-radius: 13px !important;
}

/* Sidebar : le branding reste lisible mais cesse de monopoliser le header. */
body.crm-app .sidebar-header {
  gap: 8px;
  padding-inline: 10px !important;
  border-bottom-color: rgba(205,235,252,.10) !important;
}
body.crm-app .crm-sidebar-compact-brand {
  display: none;
  align-items: center;
  justify-content: center;
}
body.crm-app .sidebar-header .logo-icon {
  width: 28px !important;
  height: 28px;
  flex: 0 0 28px;
  object-fit: contain;
}
body.crm-app .crm-sidebar-wordmark {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 142px;
  overflow: hidden;
}
body.crm-app .crm-sidebar-logo-full {
  width: auto;
  max-width: 142px !important;
  max-height: 34px !important;
  object-fit: contain;
  object-position: left center;
}
html[dir="rtl"] body.crm-app .crm-sidebar-logo-full {
  object-position: right center;
}
body.crm-app .sidebar-header .toggle-icon {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-inline-start: auto !important;
  border-radius: 9px;
  font-size: 20px;
  color: rgba(236,248,255,.86);
}
body.crm-app .sidebar-header .toggle-icon:hover {
  color: #fff;
  background: rgba(255,255,255,.07);
}
body.crm-app .sidebar-wrapper .metismenu {
  padding: 9px 7px 14px;
}
body.crm-app .sidebar-wrapper .metismenu li + li {
  margin-top: 2px;
}
body.crm-app .sidebar-wrapper .metismenu a {
  min-height: 42px;
  margin: 1px 5px;
  padding: 8px 11px;
  border-radius: 11px;
  letter-spacing: .2px;
}
body.crm-app .sidebar-wrapper .metismenu a .parent-icon {
  width: 28px;
  min-width: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 21px;
}
body.crm-app .sidebar-wrapper .metismenu a .menu-title {
  min-width: 0;
  margin-inline-start: 9px;
  margin-left: 9px;
  line-height: 1.28;
}
html[dir="rtl"] body.crm-app .sidebar-wrapper .metismenu a .menu-title {
  margin-left: 0 !important;
  margin-right: 9px !important;
}
body.crm-app .sidebar-wrapper .metismenu .badge {
  margin-inline-start: auto !important;
  padding: 5px 8px;
  font-size: 9px;
  line-height: 1;
  letter-spacing: .03em;
}
body.crm-app .sidebar-wrapper .menu-label {
  margin: 0 5px;
  padding: 14px 7px 5px;
  font-size: 9px;
  line-height: 1.2;
  letter-spacing: .12em;
}
@media screen and (min-width: 1025px) {
  body.crm-app .wrapper.toggled:not(.sidebar-hovered) .crm-sidebar-compact-brand {
    display: flex !important;
  }
  body.crm-app .wrapper.toggled:not(.sidebar-hovered) .crm-sidebar-wordmark {
    display: none !important;
  }
}

@media (max-width: 767.98px) {
  body.crm-app .crm-bulk-toolbar {
    grid-template-columns: 1fr 1fr;
  }
  body.crm-app .crm-bulk-summary,
  body.crm-app .crm-bulk-action-wrap {
    grid-column: 1 / -1;
  }
  body.crm-app .crm-bulk-apply,
  body.crm-app .crm-bulk-clear {
    width: 100%;
  }
  body.crm-app .dataTables_wrapper .dataTables_length label {
    width: 100%;
    flex-wrap: wrap;
  }
  body.crm-app .dataTables_wrapper .dataTables_filter input {
    width: 100%;
    margin-inline-start: 0;
  }
}
@media (max-width: 479.98px) {
  body.crm-app .crm-bulk-toolbar {
    grid-template-columns: 1fr;
  }
  body.crm-app .crm-bulk-summary,
  body.crm-app .crm-bulk-action-wrap,
  body.crm-app .crm-bulk-apply,
  body.crm-app .crm-bulk-clear {
    grid-column: 1;
  }
}


/* V1.71 — sélecteur de marque du topbar via Select2 Premium. */
body.crm-app .crm-context-brand-select-wrap:has(.select2-container)::after { display:none; }
body.crm-app .crm-context-brand-select-wrap .select2-container {
  width:205px !important;
  max-width:205px;
  min-width:120px;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection {
  min-height:34px !important;
  height:34px !important;
  border:0 !important;
  box-shadow:none !important;
  background:transparent !important;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection__rendered {
  height:34px !important;
  line-height:34px !important;
  padding-inline:0 1.5rem !important;
  color:#f4fbff !important;
  font-weight:600;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection__arrow {
  height:34px !important;
  inset-inline-end:0 !important;
}
body.crm-app .crm-context-brand-select-wrap .select2-container--open .select2-selection,
body.crm-app .crm-context-brand-select-wrap .select2-container--focus .select2-selection {
  outline:2px solid rgba(101,213,255,.45) !important;
  outline-offset:2px;
  border-radius:7px !important;
}
@media (max-width:767.98px) {
  body.crm-app .crm-context-brand-select-wrap .select2-container {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    max-width:none !important;
    opacity:0;
  }
}

/* V1.72 — Select2 topbar réellement intégré au composant de contexte. */
body.crm-app .crm-context-brand-select-wrap {
  width: 250px;
  max-width: 250px;
  min-height: 44px;
  margin-inline: .25rem;
  padding: 0 !important;
  gap: 0;
  border: 0 !important;
  border-radius: 13px;
  background: transparent !important;
  overflow: visible;
}
body.crm-app .crm-context-brand-select-wrap > i {
  position: absolute;
  z-index: 3;
  inset-inline-start: .82rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.38rem;
  pointer-events: none;
}
body.crm-app .crm-context-brand-select-wrap .select2-container {
  width: 250px !important;
  max-width: 250px !important;
  min-width: 180px;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection {
  min-height: 44px !important;
  height: 44px !important;
  border: 1px solid rgba(181,224,255,.18) !important;
  border-radius: 13px !important;
  background: rgba(5,28,50,.78) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03) !important;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection__rendered {
  height: 42px !important;
  line-height: 42px !important;
  padding-inline: 3rem 2.2rem !important;
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: .01em;
}
body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection__arrow {
  height: 42px !important;
  width: 2rem !important;
  inset-inline-end: .2rem !important;
}
body.crm-app .crm-context-brand-select-wrap .select2-container--open .select2-selection,
body.crm-app .crm-context-brand-select-wrap .select2-container--focus .select2-selection {
  border-color: rgba(80,191,242,.66) !important;
  outline: 0 !important;
  box-shadow: 0 0 0 3px rgba(46,160,226,.14), inset 0 1px 0 rgba(255,255,255,.04) !important;
}
body.crm-app .crm-context-brand-dropdown-host {
  z-index: 1085;
}
body.crm-app .crm-context-brand-dropdown {
  width: 250px !important;
  margin-top: .35rem;
  overflow: hidden;
  border: 1px solid rgba(94,180,230,.28) !important;
  border-radius: 14px !important;
  background: #061f34 !important;
  box-shadow: 0 18px 44px rgba(0,9,22,.42) !important;
}
body.crm-app .crm-context-brand-dropdown .select2-search--dropdown {
  padding: .7rem !important;
  background: #061f34 !important;
}
body.crm-app .crm-context-brand-dropdown .select2-search__field {
  height: 38px !important;
  padding: .45rem .75rem !important;
  border: 1px solid rgba(126,197,237,.28) !important;
  border-radius: 10px !important;
  background: rgba(3,20,34,.92) !important;
  color: #f3fbff !important;
  font-size: .86rem;
  outline: 0 !important;
}
body.crm-app .crm-context-brand-dropdown .select2-search__field::placeholder {
  color: rgba(213,235,248,.58) !important;
}
body.crm-app .crm-context-brand-dropdown .select2-results__option {
  min-height: 42px;
  display: flex;
  align-items: center;
  padding: .6rem .85rem !important;
  font-size: .92rem;
  font-weight: 600;
}
body.crm-app .crm-context-brand-dropdown .select2-results__option[aria-selected="true"] {
  background: rgba(47,125,194,.28) !important;
}
body.crm-app .crm-context-brand-dropdown .select2-results__option--highlighted[aria-selected] {
  background: linear-gradient(135deg, rgba(38,147,218,.82), rgba(92,82,214,.78)) !important;
}
@media (max-width: 991.98px) {
  body.crm-app .crm-context-brand-select-wrap,
  body.crm-app .crm-context-brand-select-wrap .select2-container {
    width: 205px !important;
    max-width: 205px !important;
  }
}
@media (max-width: 767.98px) {
  body.crm-app .crm-context-brand-select-wrap {
    width: 46px !important;
    min-width: 46px;
    height: 44px;
    overflow: hidden;
    border: 1px solid rgba(181,224,255,.18) !important;
    background: rgba(5,28,50,.78) !important;
  }
  body.crm-app .crm-context-brand-select-wrap > i { inset-inline-start: 50%; transform: translate(-50%,-50%); }
  html[dir="rtl"] body.crm-app .crm-context-brand-select-wrap > i { transform: translate(50%,-50%); }
  body.crm-app .crm-context-brand-select-wrap .select2-container {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    max-width: none !important;
    opacity: 0;
  }
}

/* V1.72 — switch Marque : zone cliquable, état visuel lisible et cohérent. */
body.crm-app .crm-brand-active-switch {
  display: flex;
  align-items: center;
  gap: .8rem;
  min-height: 54px;
  margin-top: .35rem;
  padding: .65rem .8rem;
  border: 1px solid rgba(151,205,236,.18);
  border-radius: 12px;
  background: rgba(4,24,41,.58);
}
body.crm-app .crm-brand-active-switch.form-switch { padding-left: .8rem; }
html[dir="rtl"] body.crm-app .crm-brand-active-switch.form-switch { padding-right: .8rem; }
body.crm-app .crm-brand-active-switch .form-check-input {
  flex: 0 0 auto;
  width: 3rem !important;
  height: 1.55rem !important;
  margin: 0 !important;
  cursor: pointer;
}
body.crm-app .crm-brand-active-switch .form-check-label {
  margin: 0;
  color: #e7f5fd;
  font-weight: 600;
  cursor: pointer;
}

/* V1.73 — topbar marque : réserve une zone fixe pour l’icône afin que le libellé Select2 ne la chevauche jamais. */
@media (min-width: 768px) {
  body.crm-app .crm-context-brand-select-wrap > i {
    inset-inline-start: .85rem;
    width: 2.35rem;
    text-align: center;
  }
  body.crm-app .crm-context-brand-select-wrap .select2-container .select2-selection__rendered {
    padding-inline-start: 4.15rem !important;
    padding-inline-end: 2.2rem !important;
  }
}


/* V1.74 — topbar marque : override à spécificité supérieure au thème Select2 global.
   V1.73 utilisait bien un padding dédié, mais la règle globale bg-theme1 +
   select2-container--* gagnait encore la cascade car elle était plus spécifique
   et également marquée !important. Ce sélecteur cible donc exactement le rendu
   Select2 du topbar et réserve réellement la zone de l’icône. */
@media (min-width: 768px) {
  body.crm-app.bg-theme1 .crm-context-brand-select-wrap .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered,
  body.crm-app.bg-theme1 .crm-context-brand-select-wrap .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding: 0 2.2rem 0 4.15rem !important;
  }
  html[dir="rtl"] body.crm-app.bg-theme1 .crm-context-brand-select-wrap .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered,
  html[dir="rtl"] body.crm-app.bg-theme1 .crm-context-brand-select-wrap .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding: 0 4.15rem 0 2.2rem !important;
  }
}

/* V1.98 — le logo back-office est rendu directement, sans cartouche décoratif. */
body.crm-app .crm-sidebar-wordmark,
body.crm-app .crm-sidebar-compact-brand {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* V1.117 — alertes simples : carte plus équilibrée, action unique centrée.
 * La largeur du bouton reste celle d'une colonne des dialogues à deux actions ;
 * seule sa position change afin d'éviter l'effet « bouton collé à gauche ». */
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert {
  /* Même largeur horizontale que l'alerte existante : le bouton garde donc
     exactement sa taille de colonne, seule la composition verticale est resserrée. */
  width:min(520px,calc(100vw - 28px)) !important;
  max-width:520px !important;
  padding:22px 24px 20px !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert .swal2-icon {
  margin-top:0 !important;
  margin-bottom:1rem !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert .swal2-title {
  max-width:430px;
  margin-inline:auto !important;
  font-size:1.35rem !important;
  line-height:1.35 !important;
  letter-spacing:-.018em !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert .swal2-actions {
  width:100% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:0 !important;
  margin:1.35rem 0 0 !important;
}
body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert .swal2-confirm {
  width:calc((100% - 9px) / 2) !important;
  flex:0 0 calc((100% - 9px) / 2) !important;
  margin:0 !important;
}
@media (max-width:575.98px) {
  body.crm-app.bg-theme1 .swal2-container .mp-swal-popup.mp-swal-alert .swal2-confirm {
    width:100% !important;
    flex-basis:100% !important;
  }
}
