/*
 * zSMS — palette & typographie de l'espace customers.
 * Surcharge d'AdminLTE 3.2 / Bootstrap 4.6 (dist/css/adminlte.min.css), chargée
 * après lui : mêmes classes, même spécificité pour la plupart des règles — l'ordre
 * de chargement suffit à gagner la cascade. Quelques sélecteurs de structure très
 * imbriqués (sidebar/brand-link sur layout-navbar-fixed) nécessitent !important car
 * AdminLTE les compile avec une spécificité plus élevée que ce fichier ne peut
 * raisonnablement reproduire sans dupliquer toute sa chaîne de sélecteurs.
 * Reprend la palette de la page de connexion (login.php) pour une identité cohérente.
 */

/* ===================== Polices (auto-hébergées) ===================== */
@font-face {
  font-family: 'Space Grotesk';
  font-weight: 500 700;
  font-display: swap;
  src: url('../fonts/space-grotesk.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-weight: 400 600;
  font-display: swap;
  src: url('../fonts/ibm-plex-sans.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-500.woff2') format('woff2');
}

/* ===================== Tokens ===================== */
:root {
  --zsms-bg: #EEF2FA;
  --zsms-surface: #FFFFFF;
  --zsms-surface-2: #F2F5FB;
  --zsms-border: rgba(18, 26, 46, 0.12);
  --zsms-border-soft: rgba(18, 26, 46, 0.08);

  --zsms-ink: #121A2E;
  --zsms-ink-muted: #5B6780;
  --zsms-ink-faint: #8B93A8;

  --zsms-sidebar-bg: #10182B;
  --zsms-sidebar-bg-2: #182338;
  --zsms-sidebar-text: #C3CBE0;
  --zsms-sidebar-text-muted: #8A96B5;

  --zsms-primary: #1E9E6B;
  --zsms-primary-hover: #17835A;
  --zsms-primary-soft: rgba(30, 158, 107, 0.12);

  --zsms-success: #1E9E6B;
  --zsms-success-hover: #17835A;

  --zsms-info: #2C6FE0;
  --zsms-info-hover: #2258B8;

  --zsms-warning: #EFA33B;
  --zsms-warning-hover: #DB8E24;
  --zsms-warning-text: #5C3B00;

  --zsms-danger: #D6455A;
  --zsms-danger-hover: #B93A4C;

  --zsms-secondary: #5B6780;
  --zsms-secondary-hover: #48526A;

  --zsms-dark: #121A2E;
  --zsms-dark-hover: #0B1120;
  --zsms-light: #F2F5FB;
  --zsms-light-hover: #E4E9F4;
}

/* ===================== Typographie ===================== */
body {
  font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background-color: var(--zsms-bg);
  color: var(--zsms-ink);
}
h1, h2, h3, .brand-text, .card-title {
  font-family: 'Space Grotesk', 'IBM Plex Sans', sans-serif;
  font-weight: 700;
  letter-spacing: -0.01em;
}
code, kbd, pre, .text-monospace,
table.dataTable td.text-right,
.table td[data-col="amount"], .table td[data-col="credit"] {
  font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
}
a { color: var(--zsms-primary); }
a:hover, a:focus { color: var(--zsms-primary-hover); }
::selection { background: var(--zsms-primary-soft); }

:focus-visible {
  outline: 2px solid var(--zsms-info);
  outline-offset: 2px;
}

/* ===================== Structure : content, cards ===================== */
.content-wrapper { background-color: var(--zsms-bg); }

.card {
  border: 1px solid var(--zsms-border-soft);
  box-shadow: 0 1px 2px rgba(18, 26, 46, 0.04), 0 8px 20px -12px rgba(18, 26, 46, 0.12);
}
.card-header {
  background-color: transparent;
  border-bottom: 1px solid var(--zsms-border-soft);
}
.card-primary:not(.card-outline) > .card-header {
  background-color: var(--zsms-primary);
  color: #fff;
}
.card-primary.card-outline { border-top: 3px solid var(--zsms-primary); }
.card-danger:not(.card-outline) > .card-header { background-color: var(--zsms-danger); color: #fff; }
.card-danger.card-outline { border-top: 3px solid var(--zsms-danger); }
.card-warning:not(.card-outline) > .card-header { background-color: var(--zsms-warning); color: var(--zsms-warning-text); }
.card-warning.card-outline { border-top: 3px solid var(--zsms-warning); }
.card-info:not(.card-outline) > .card-header { background-color: var(--zsms-info); color: #fff; }
.card-info.card-outline { border-top: 3px solid var(--zsms-info); }
.card-success:not(.card-outline) > .card-header { background-color: var(--zsms-success); color: #fff; }
.card-success.card-outline { border-top: 3px solid var(--zsms-success); }

.small-box { box-shadow: 0 1px 2px rgba(18, 26, 46, 0.04), 0 8px 20px -12px rgba(18, 26, 46, 0.12); }

/* ===================== Navbar (top) ===================== */
.navbar-white { background-color: var(--zsms-surface); border-bottom: 1px solid var(--zsms-border-soft); }
.navbar-light .navbar-nav .nav-link { color: var(--zsms-ink); }
.navbar-light .navbar-nav .nav-link:hover,
.navbar-light .navbar-nav .nav-link:focus { color: var(--zsms-primary); }
.navbar-light .navbar-nav .nav-link .text-info { color: var(--zsms-info) !important; }

/* ===================== Sidebar ===================== */
[class*="sidebar-dark-"] { background-color: var(--zsms-sidebar-bg) !important; }
.main-sidebar { border-right: 1px solid rgba(255, 255, 255, 0.06); }

.wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]),
.dark-mode .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) {
  background-color: var(--zsms-sidebar-bg-2) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
}
.brand-text { color: #fff; }
.brand-text b { color: var(--zsms-success); }

[class*="sidebar-dark-"] .sidebar a { color: var(--zsms-sidebar-text); }
[class*="sidebar-dark-"] .user-panel a { color: #fff; }
[class*="sidebar-dark-"] .nav-header { color: var(--zsms-sidebar-text-muted); }

.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link:hover,
.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link:focus {
  background-color: rgba(255, 255, 255, 0.06);
  color: #fff;
}
.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link.active,
.sidebar-light-primary .nav-sidebar > .nav-item > .nav-link.active {
  background-color: var(--zsms-primary);
  color: #fff;
  box-shadow: none;
}
[class*="sidebar-dark-"] .nav-treeview > .nav-item > .nav-link.active,
[class*="sidebar-dark-"] .nav-treeview > .nav-item > .nav-link.active:hover,
[class*="sidebar-dark-"] .nav-treeview > .nav-item > .nav-link.active:focus {
  background-color: rgba(255, 255, 255, 0.94);
  color: var(--zsms-sidebar-bg);
}
.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle { background: rgba(255, 255, 255, 0.2); }

/* ===================== Boutons ===================== */
.btn { border-radius: 8px; font-weight: 500; }

.btn-primary, .btn-success {
  background-color: var(--zsms-primary);
  border-color: var(--zsms-primary);
  color: #fff;
}
.btn-primary:hover, .btn-success:hover,
.btn-primary:focus, .btn-success:focus,
.btn-primary:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled):active,
.show > .btn-primary.dropdown-toggle, .show > .btn-success.dropdown-toggle {
  background-color: var(--zsms-primary-hover);
  border-color: var(--zsms-primary-hover);
  color: #fff;
}
.btn-outline-primary, .btn-outline-success { color: var(--zsms-primary); border-color: var(--zsms-primary); }
.btn-outline-primary:hover, .btn-outline-success:hover,
.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-primary); border-color: var(--zsms-primary); color: #fff;
}

.btn-danger {
  background-color: var(--zsms-danger);
  border-color: var(--zsms-danger);
}
.btn-danger:hover, .btn-danger:focus,
.btn-danger:not(:disabled):not(.disabled):active,
.show > .btn-danger.dropdown-toggle {
  background-color: var(--zsms-danger-hover);
  border-color: var(--zsms-danger-hover);
}
.btn-outline-danger { color: var(--zsms-danger); border-color: var(--zsms-danger); }
.btn-outline-danger:hover, .btn-outline-danger:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-danger); border-color: var(--zsms-danger); color: #fff;
}

.btn-warning {
  background-color: var(--zsms-warning);
  border-color: var(--zsms-warning);
  color: var(--zsms-warning-text);
}
.btn-warning:hover, .btn-warning:focus,
.btn-warning:not(:disabled):not(.disabled):active,
.show > .btn-warning.dropdown-toggle {
  background-color: var(--zsms-warning-hover);
  border-color: var(--zsms-warning-hover);
  color: var(--zsms-warning-text);
}
.btn-outline-warning { color: var(--zsms-warning-hover); border-color: var(--zsms-warning); }
.btn-outline-warning:hover, .btn-outline-warning:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-warning); border-color: var(--zsms-warning); color: var(--zsms-warning-text);
}

.btn-info {
  background-color: var(--zsms-info);
  border-color: var(--zsms-info);
}
.btn-info:hover, .btn-info:focus,
.btn-info:not(:disabled):not(.disabled):active,
.show > .btn-info.dropdown-toggle {
  background-color: var(--zsms-info-hover);
  border-color: var(--zsms-info-hover);
}
.btn-outline-info { color: var(--zsms-info); border-color: var(--zsms-info); }
.btn-outline-info:hover, .btn-outline-info:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-info); border-color: var(--zsms-info); color: #fff;
}

.btn-secondary {
  background-color: var(--zsms-secondary);
  border-color: var(--zsms-secondary);
}
.btn-secondary:hover, .btn-secondary:focus,
.btn-secondary:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-secondary-hover);
  border-color: var(--zsms-secondary-hover);
}

.btn-dark { background-color: var(--zsms-dark); border-color: var(--zsms-dark); }
.btn-dark:hover, .btn-dark:focus, .btn-dark:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-dark-hover); border-color: var(--zsms-dark-hover);
}

.btn-light { background-color: var(--zsms-light); border-color: var(--zsms-border); color: var(--zsms-ink); }
.btn-light:hover, .btn-light:focus, .btn-light:not(:disabled):not(.disabled):active {
  background-color: var(--zsms-light-hover); border-color: var(--zsms-border); color: var(--zsms-ink);
}

.btn-link { color: var(--zsms-primary); }
.btn-link:hover { color: var(--zsms-primary-hover); }

/* ===================== Couleurs utilitaires (bg-*, text-*) ===================== */
.bg-primary, .bg-success { background-color: var(--zsms-primary) !important; color: #fff; }
.bg-danger { background-color: var(--zsms-danger) !important; color: #fff; }
.bg-warning { background-color: var(--zsms-warning) !important; color: var(--zsms-warning-text); }
.bg-info { background-color: var(--zsms-info) !important; color: #fff; }
.bg-secondary { background-color: var(--zsms-secondary) !important; color: #fff; }
.bg-dark { background-color: var(--zsms-dark) !important; color: #fff; }
.bg-light { background-color: var(--zsms-light) !important; color: var(--zsms-ink); }

.text-primary, .text-success { color: var(--zsms-primary) !important; }
.text-danger { color: var(--zsms-danger) !important; }
.text-warning { color: var(--zsms-warning-hover) !important; }
.text-info { color: var(--zsms-info) !important; }
.text-secondary { color: var(--zsms-secondary) !important; }
.text-dark { color: var(--zsms-dark) !important; }
.text-muted { color: var(--zsms-ink-faint) !important; }

/* ===================== Badges ===================== */
.badge-primary, .badge-success { background-color: var(--zsms-primary); color: #fff; }
.badge-danger { background-color: var(--zsms-danger); color: #fff; }
.badge-warning { background-color: var(--zsms-warning); color: var(--zsms-warning-text); }
.badge-info { background-color: var(--zsms-info); color: #fff; }
.badge-secondary { background-color: var(--zsms-secondary); color: #fff; }
.badge-dark { background-color: var(--zsms-dark); color: #fff; }
.badge-light { background-color: var(--zsms-light); color: var(--zsms-ink); }

/* ===================== Formulaires ===================== */
.form-control { border-color: var(--zsms-border); }
.form-control:focus {
  border-color: var(--zsms-info);
  box-shadow: 0 0 0 3px rgba(44, 111, 224, 0.16);
}
.custom-control-input:checked ~ .custom-control-label::before {
  border-color: var(--zsms-primary);
  background-color: var(--zsms-primary);
}
.custom-control-input:focus ~ .custom-control-label::before {
  box-shadow: 0 0 0 3px rgba(44, 111, 224, 0.16);
}
.custom-switch.custom-switch-on-primary .custom-control-input:checked ~ .custom-control-label::before,
.custom-switch.custom-switch-on-success .custom-control-input:checked ~ .custom-control-label::before {
  background-color: var(--zsms-primary);
  border-color: var(--zsms-primary-hover);
}
.custom-switch.custom-switch-on-danger .custom-control-input:checked ~ .custom-control-label::before {
  background-color: var(--zsms-danger);
  border-color: var(--zsms-danger-hover);
}
.custom-select:focus { border-color: var(--zsms-info); box-shadow: 0 0 0 3px rgba(44, 111, 224, 0.16); }

/* Select2 (thème bootstrap4) */
.select2-container--bootstrap4.select2-container--focus .select2-selection,
.select2-container--bootstrap4.select2-container--open .select2-selection {
  border-color: var(--zsms-info) !important;
  box-shadow: 0 0 0 3px rgba(44, 111, 224, 0.16) !important;
}
.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected] {
  background-color: var(--zsms-primary) !important;
}
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
  background-color: var(--zsms-primary-soft);
  border-color: var(--zsms-primary);
  color: var(--zsms-primary-hover);
}

/* ===================== Tables & pagination ===================== */
.table thead th { border-bottom-color: var(--zsms-border); color: var(--zsms-ink-muted); font-weight: 600; }
.table td, .table th { border-top-color: var(--zsms-border-soft); }
.table-hover tbody tr:hover { background-color: var(--zsms-surface-2); }
.table-striped tbody tr:nth-of-type(odd) { background-color: var(--zsms-surface-2); }

.page-item.active .page-link { background-color: var(--zsms-primary); border-color: var(--zsms-primary); }
.page-link { color: var(--zsms-primary); }
.page-link:hover { color: var(--zsms-primary-hover); }
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: var(--zsms-primary) !important;
  border-color: var(--zsms-primary) !important;
  color: #fff !important;
}

/* ===================== Onglets & progression ===================== */
.nav-tabs .nav-link.active { border-top: 2px solid var(--zsms-primary); }
.nav-pills .nav-link.active { background-color: var(--zsms-primary); }
.progress-bar { background-color: var(--zsms-primary); }

/* ===================== SweetAlert2 ===================== */
.swal2-styled.swal2-confirm { background-color: var(--zsms-primary) !important; }
.swal2-styled.swal2-confirm:focus { box-shadow: 0 0 0 3px rgba(30, 158, 107, 0.3) !important; }
.swal2-styled.swal2-cancel { background-color: var(--zsms-secondary) !important; }
.swal2-styled.swal2-deny { background-color: var(--zsms-danger) !important; }
.swal2-icon.swal2-success [class^='swal2-success-line'] { background-color: var(--zsms-primary) !important; }
.swal2-icon.swal2-success .swal2-success-ring { border-color: rgba(30, 158, 107, 0.3) !important; }
.swal2-icon.swal2-error { border-color: var(--zsms-danger) !important; }
.swal2-icon.swal2-error [class^='swal2-x-mark-line'] { background-color: var(--zsms-danger) !important; }
.swal2-icon.swal2-warning { border-color: var(--zsms-warning) !important; color: var(--zsms-warning-hover) !important; }
.swal2-timer-progress-bar { background: var(--zsms-primary) !important; }

/* ===================== Footer ===================== */
.main-footer { background-color: var(--zsms-surface); border-top: 1px solid var(--zsms-border-soft); color: var(--zsms-ink-muted); }
.main-footer a { color: var(--zsms-primary); }
