/* SEN-SmartCommune — Thème Sénégal clair
   Couche 100% visuelle : aucune logique métier, aucun JS métier, aucun flux online/offline. */
:root,
html[data-bs-theme="light"],
html[data-bs-theme="dark"]{
  --sn-green:#00853f;
  --sn-green-ui:#00a651;
  --sn-green-deep:#006b35;
  --sn-green-soft:#eaf7ef;
  --sn-green-soft-2:#f4fbf6;
  --sn-yellow:#f3d21b;
  --sn-yellow-soft:#fff7c7;
  --sn-red:#d71920;
  --sn-red-soft:#fff0f1;
  --sn-ink:#173126;
  --sn-muted:#66786f;
  --sn-border:#d7e6dc;
  --sn-border-strong:#bfd7c7;
  --sn-surface:#ffffff;
  --sn-page:#f7fbf8;
  --sn-shadow:0 10px 28px rgba(24,68,43,.08);
  --sn-shadow-lg:0 18px 46px rgba(24,68,43,.11);

  --brand:var(--sn-green-ui) !important;
  --brand-2:var(--sn-yellow) !important;
  --ink:var(--sn-ink) !important;
  --glass:rgba(255,255,255,.88) !important;
  --glass-stroke:var(--sn-border) !important;
  --shadow-soft:var(--sn-shadow) !important;
  --ring:0 0 0 .2rem rgba(0,166,81,.14) !important;

  --bs-body-color:var(--sn-ink);
  --bs-body-color-rgb:23,49,38;
  --bs-body-bg:var(--sn-page);
  --bs-body-bg-rgb:247,251,248;
  --bs-emphasis-color:#10291d;
  --bs-secondary-color:#66786f;
  --bs-tertiary-color:#7e8f86;
  --bs-secondary-bg:#eef6f1;
  --bs-tertiary-bg:#f5faf7;
  --bs-border-color:var(--sn-border);
  --bs-border-color-translucent:rgba(25,91,54,.12);
  --bs-primary:var(--sn-green-ui);
  --bs-primary-rgb:0,166,81;
  --bs-success:#12834a;
  --bs-success-rgb:18,131,74;
  --bs-warning:var(--sn-yellow);
  --bs-warning-rgb:243,210,27;
  --bs-danger:var(--sn-red);
  --bs-danger-rgb:215,25,32;
  --bs-link-color:var(--sn-green-deep);
  --bs-link-hover-color:#004f28;
  --bs-focus-ring-color:rgba(0,166,81,.18);
  color-scheme:light !important;
}

html[data-bs-theme="dark"],
html[data-bs-theme="light"]{color-scheme:light !important;}

html,
html body,
html[data-bs-theme="dark"] body,
html[data-bs-theme="light"] body{
  background-color:var(--sn-page) !important;
  background-image:
    radial-gradient(980px 520px at 2% -8%,rgba(0,166,81,.105),transparent 67%),
    radial-gradient(760px 430px at 94% -3%,rgba(243,210,27,.105),transparent 67%),
    radial-gradient(740px 430px at 98% 106%,rgba(215,25,32,.045),transparent 69%),
    linear-gradient(180deg,#fbfefc 0%,#f7fbf8 56%,#f4faf6 100%) !important;
  color:var(--sn-ink) !important;
  background-attachment:fixed !important;
}

/* L'interface est désormais volontairement claire et Sénégal : pas de bascule sombre. */
.js-theme-toggle,
#btnThemeToggle,
.theme-pill{display:none !important;}

/* ===== En-têtes / navigation ===== */
html body .navbar-glass,
html[data-bs-theme] body .navbar-glass,
html body .main-top-nav,
html[data-bs-theme] body .main-top-nav{
  background:rgba(255,255,255,.95) !important;
  color:var(--sn-ink) !important;
  border-bottom:1px solid var(--sn-border) !important;
  box-shadow:0 7px 24px rgba(28,73,47,.075) !important;
  backdrop-filter:blur(12px);
}
.navbar-glass{position:relative;}
.navbar-glass::before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--sn-green) 0 33.333%,var(--sn-yellow) 33.333% 66.666%,var(--sn-red) 66.666% 100%);
  pointer-events:none;
}
html body .navbar .navbar-brand,
html body .navbar .navbar-brand strong,
html body .navbar .nav-link,
html body .navbar .dropdown-toggle{
  color:var(--sn-ink) !important;
}
html body .navbar .navbar-brand small,
html body .navbar .navbar-brand .text-muted{color:var(--sn-muted) !important;}
html body .navbar .nav-link:hover,
html body .navbar .nav-link:focus{color:var(--sn-green-deep) !important;}
html body .navbar-dark .navbar-toggler,
html body .navbar .navbar-toggler,
html body .navbar .btn-user-mini{
  background:#fff !important;
  border:1px solid var(--sn-border-strong) !important;
  color:var(--sn-green-deep) !important;
  box-shadow:0 4px 12px rgba(30,82,49,.07) !important;
}
html body .navbar-dark .navbar-toggler-icon,
html body .navbar .navbar-toggler-icon{filter:invert(1) grayscale(1) brightness(.38) !important;}
html body .nav-btn,
html[data-bs-theme] body .nav-btn{
  background:#fff !important;
  color:#264437 !important;
  border-color:var(--sn-border-strong) !important;
  box-shadow:none !important;
}
html body .nav-btn:hover{background:var(--sn-green-soft-2) !important;border-color:#9dc9ad !important;color:var(--sn-green-deep) !important;}
html body .nav-btn.active{
  background:var(--sn-green-soft) !important;
  border-color:#80bc96 !important;
  color:var(--sn-green-deep) !important;
  box-shadow:inset 0 -2px 0 var(--sn-green-ui) !important;
}
html body .bottom-nav,
html[data-bs-theme] body .bottom-nav{
  background:rgba(255,255,255,.96) !important;
  border-top:1px solid var(--sn-border) !important;
  box-shadow:0 -7px 24px rgba(28,73,47,.07) !important;
}
html body .bottom-nav .nav-link{color:#5d7468 !important;}
html body .bottom-nav .nav-link.active{color:var(--sn-green-deep) !important;}

/* ===== Surfaces : cartes, panneaux, modals, dropdowns ===== */
html body .surface,
html body .card-min,
html body .card:not(.bg-transparent),
html body .modal-content,
html body .offcanvas,
html body .accordion-item,
html body .list-group-item,
html body .toast{
  background:var(--sn-surface) !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-border) !important;
  box-shadow:var(--sn-shadow) !important;
}
html body .surface,
html body .card-min,
html body .card:not(.bg-transparent){border-radius:16px;}
html body .surface:hover,
html body .card-min:hover{
  border-color:#a8d0b7 !important;
  box-shadow:var(--sn-shadow-lg) !important;
}
html body .modal-header,
html body .modal-footer,
html body .card-header,
html body .card-footer{
  background:#fbfefc !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-border) !important;
}
html body .dropdown-menu,
html body .rcv-action-dropdown .dropdown-menu,
html body .rcv-permission-user-menu{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border:1px solid var(--sn-border) !important;
  box-shadow:0 16px 38px rgba(28,73,47,.14) !important;
}
html body .dropdown-item,
html body .rcv-action-dropdown .dropdown-item{
  color:#274639 !important;
  background:transparent !important;
}
html body .dropdown-item:hover,
html body .dropdown-item:focus,
html body .rcv-action-dropdown .dropdown-item:hover,
html body .rcv-action-dropdown .dropdown-item:focus,
html body .rcv-permission-user-menu .form-check:hover{
  background:var(--sn-green-soft) !important;
  color:var(--sn-green-deep) !important;
}
html body .dropdown-item.active,
html body .dropdown-item:active{background:var(--sn-green-ui) !important;color:#fff !important;}
html body .dropdown-divider{border-color:var(--sn-border) !important;}
html body .btn-close{filter:none !important;opacity:.62;}

/* ===== Formulaires ===== */
html body .form-label,
html body label{color:#29483a;}
html body .form-control,
html body .form-select,
html body textarea.form-control,
html body .input-group-text,
html body .form-control-plaintext{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
  box-shadow:none !important;
  color-scheme:light !important;
}
html body .form-control::placeholder,
html body textarea.form-control::placeholder{color:#91a198 !important;opacity:1 !important;}
html body .form-control:focus,
html body .form-select:focus,
html body textarea.form-control:focus{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-green-ui) !important;
  box-shadow:0 0 0 .2rem rgba(0,166,81,.12) !important;
}
html body .form-control:disabled,
html body .form-select:disabled,
html body .form-control[readonly]{background:#f0f6f2 !important;color:#73847b !important;}
html body .form-select option,
html body select option{background:#fff !important;color:var(--sn-ink) !important;}
html body .input-group-text{background:#f0f8f3 !important;color:#3f6551 !important;}
html body .form-check-input{background-color:#fff;border-color:#a9c7b4;}
html body .form-check-input:checked{background-color:var(--sn-green-ui) !important;border-color:var(--sn-green-ui) !important;}
html body .form-check-input:focus{border-color:var(--sn-green-ui) !important;box-shadow:0 0 0 .2rem rgba(0,166,81,.12) !important;}

/* Neutralise les reliquats Bootstrap sombres dans le thème Sénégal clair. */
html body .bg-dark-subtle,
html[data-bs-theme] body .bg-dark-subtle{
  background:#f6fbf7 !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-border) !important;
}

/* Choices / Select2-like controls. Specificity volontairement forte pour neutraliser les anciens thèmes sombres locaux. */
html[data-bs-theme] body .choices__inner,
html[data-bs-theme] body #modalCollectNew .choices__inner,
html[data-bs-theme] body .choices__input,
html[data-bs-theme] body #modalCollectNew .choices__input{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
  box-shadow:none !important;
}
html[data-bs-theme] body .choices__list--dropdown,
html[data-bs-theme] body .choices__list[aria-expanded],
html[data-bs-theme] body #modalCollectNew .choices__list--dropdown,
html[data-bs-theme] body #modalCollectNew .choices__list[aria-expanded]{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
  box-shadow:0 14px 30px rgba(28,73,47,.12) !important;
}
html[data-bs-theme] body .choices__item,
html[data-bs-theme] body #modalCollectNew .choices__list--dropdown .choices__item{color:var(--sn-ink) !important;}
html[data-bs-theme] body .choices__item--selectable.is-highlighted,
html[data-bs-theme] body #modalCollectNew .choices__list--dropdown .choices__item--selectable.is-highlighted{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
html[data-bs-theme] body .choices__placeholder,
html[data-bs-theme] body #modalCollectNew .choices__placeholder{color:#8a9c92 !important;opacity:1 !important;}
html[data-bs-theme] body .choices[data-type*=select-one]::after,
html[data-bs-theme] body #modalCollectNew .choices[data-type*=select-one]::after{filter:none !important;opacity:.55 !important;}

/* ===== Boutons ===== */
html body .btn-primary,
html body .btn-brand,
html body .btn-cityzen{
  --bs-btn-bg:var(--sn-green-ui);
  --bs-btn-border-color:var(--sn-green-ui);
  --bs-btn-hover-bg:var(--sn-green-deep);
  --bs-btn-hover-border-color:var(--sn-green-deep);
  --bs-btn-active-bg:#005c2d;
  --bs-btn-active-border-color:#005c2d;
  --bs-btn-color:#fff;
  --bs-btn-hover-color:#fff;
  --bs-btn-focus-shadow-rgb:0,166,81;
  box-shadow:0 7px 17px rgba(0,133,63,.15);
}
html body .btn-outline-primary{
  --bs-btn-color:var(--sn-green-deep);
  --bs-btn-border-color:#79b991;
  --bs-btn-hover-bg:var(--sn-green-ui);
  --bs-btn-hover-border-color:var(--sn-green-ui);
  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:var(--sn-green-deep);
  --bs-btn-active-border-color:var(--sn-green-deep);
}
html body .btn-warning{
  --bs-btn-bg:var(--sn-yellow);
  --bs-btn-border-color:#d9b900;
  --bs-btn-color:#3c3400;
  --bs-btn-hover-bg:#e3c213;
  --bs-btn-hover-border-color:#cdae00;
  --bs-btn-hover-color:#302900;
}
html body .btn-danger{
  --bs-btn-bg:var(--sn-red);
  --bs-btn-border-color:var(--sn-red);
  --bs-btn-hover-bg:#b9141a;
  --bs-btn-hover-border-color:#b9141a;
}
html body .btn-secondary{
  --bs-btn-bg:#edf4ef;
  --bs-btn-border-color:#cbded2;
  --bs-btn-color:#365344;
  --bs-btn-hover-bg:#dfece3;
  --bs-btn-hover-border-color:#b8d0c0;
  --bs-btn-hover-color:#244332;
}
html body .btn-light{--bs-btn-bg:#fff;--bs-btn-border-color:#d4e3d8;--bs-btn-color:#31513f;}
html body .btn-ghost,
html[data-bs-theme] body .btn-ghost{
  background:#fff !important;
  border:1px solid var(--sn-border-strong) !important;
  color:#31513f !important;
}
html body .btn-ghost:hover{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;border-color:#a1c9af !important;}

/* ===== Tableaux / pagination / DataTables ===== */
html body .table{
  --bs-table-color:var(--sn-ink);
  --bs-table-bg:#fff;
  --bs-table-border-color:#dce9e0;
  --bs-table-striped-bg:#f7fbf8;
  --bs-table-striped-color:var(--sn-ink);
  --bs-table-hover-bg:#eff8f2;
  --bs-table-hover-color:var(--sn-ink);
  color:var(--sn-ink) !important;
  border-color:#dce9e0 !important;
}
html body .table thead th,
html body .table thead td{
  background:#eaf6ee !important;
  color:#245238 !important;
  border-bottom-color:#bed8c7 !important;
  font-weight:750;
}
html body .table tbody td,
html body .table tbody th{border-color:#e2ece5;}
html body .dataTables_wrapper,
html body .dt-container{color:var(--sn-ink) !important;}
html body .dataTables_wrapper .dataTables_length select,
html body .dataTables_wrapper .dt-length select,
html body .dt-container .dt-length select,
html body .sc-card-accordion .dataTables_length select,
html body .sc-card-accordion .dt-length select{
  color-scheme:light !important;
  background:#fff !important;
  color:var(--sn-ink) !important;
  border:1px solid #cbded2 !important;
}
html body .dataTables_wrapper .dataTables_length select option,
html body .dataTables_wrapper .dt-length select option,
html body .dt-container .dt-length select option,
html body .sc-card-accordion .dataTables_length select option,
html body .sc-card-accordion .dt-length select option{background:#fff !important;color:var(--sn-ink) !important;}
html body .pagination .page-link{
  background:#fff !important;
  color:var(--sn-green-deep) !important;
  border-color:#d4e4d9 !important;
}
html body .pagination .page-link:hover{background:var(--sn-green-soft) !important;border-color:#abd0b8 !important;}
html body .pagination .page-item.active .page-link,
html body .dataTables_wrapper .pagination .page-item.active .page-link{
  background:var(--sn-green-ui) !important;
  border-color:var(--sn-green-ui) !important;
  color:#fff !important;
  box-shadow:0 5px 14px rgba(0,133,63,.15);
}
html body .pagination .page-item.disabled .page-link{background:#f5f8f6 !important;color:#9ca9a2 !important;}

/* ===== Accordéons / onglets / listes ===== */
html body .accordion-button,
html body .portfolio-accordion .accordion-button{
  background:#fff !important;
  color:#274b38 !important;
  border-color:var(--sn-border) !important;
  box-shadow:none !important;
}
html body .accordion-button:not(.collapsed),
html body .portfolio-accordion .accordion-button:not(.collapsed){background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
html body .accordion-button::after,
html body .portfolio-accordion .accordion-button::after{filter:none !important;}
html body .accordion-body,
html body .portfolio-accordion .accordion-body{background:#fff !important;color:var(--sn-ink) !important;}
html body .nav-tabs{border-bottom-color:#cfe1d5 !important;}
html body .nav-tabs .nav-link{color:#5c7567 !important;border-color:transparent;}
html body .nav-tabs .nav-link:hover{color:var(--sn-green-deep) !important;background:#f2f9f4 !important;}
html body .nav-tabs .nav-link.active,
html body .rcv-archive-tab .nav-link.active{background:#fff !important;color:var(--sn-green-deep) !important;border-color:#bcd9c6 #bcd9c6 #fff !important;box-shadow:inset 0 3px 0 var(--sn-green-ui);}
html body .rcv-archive-tab .nav-link{color:#61786b !important;}

/* ===== Petits composants / statuts ===== */
html body .badge.text-bg-primary,
html body .text-bg-primary{background:var(--sn-green-ui) !important;color:#fff !important;}
html body .badge.text-bg-dark,
html body .text-bg-dark,
html body .bg-dark{background:#e9f4ed !important;color:#28513b !important;}
html body .text-warning{color:#987d00 !important;}
html body .text-danger{color:#b9151b !important;}
html body .text-success{color:#087c3b !important;}
html body .rcv-action-dropdown .dropdown-item.text-warning{color:#8c7300 !important;}
html body .rcv-action-dropdown .dropdown-item.text-danger{color:#b9151b !important;}
html body hr{border-color:#dce8df;opacity:1;}
html body code{color:#9b2d53;background:#fff4f7;padding:.12rem .28rem;border-radius:.28rem;}
html body pre{background:#f4f8f5 !important;color:#254434 !important;border:1px solid #d7e6dc !important;}

/* Les anciens textes forcés clairs redeviennent lisibles sur les surfaces désormais blanches. */
html body .surface .text-light:not(.badge):not(.btn),
html body .surface .text-white:not(.badge):not(.btn),
html body .card .text-light:not(.badge):not(.btn),
html body .card .text-white:not(.badge):not(.btn),
html body .modal-content .text-light:not(.badge):not(.btn),
html body .modal-content .text-white:not(.badge):not(.btn),
html body .dropdown-menu .text-light:not(.badge):not(.btn),
html body .dropdown-menu .text-white:not(.badge):not(.btn),
html body .rcv-modal-object strong{color:var(--sn-ink) !important;}
html body .rcv-modal-object,
html body .rcv-rule-label{color:#6f8278 !important;}
html body .rcv-rule-card{background:#fff !important;border-color:var(--sn-border) !important;}
html body .rcv-formula{background:#f1f9f4 !important;border-color:#b8ddc5 !important;}
html body .rcv-step{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}

/* ===== Navigation latérale municipale ===== */
@media (min-width:992px){
  html.sc-nav-side .sc-side-nav,
  html[data-bs-theme="dark"].sc-nav-side .sc-side-nav,
  html[data-bs-theme="light"].sc-nav-side .sc-side-nav{
    background:#fff !important;
    color:var(--sn-ink) !important;
    border-right:1px solid var(--sn-border) !important;
    box-shadow:10px 0 30px rgba(28,73,47,.075) !important;
  }
  .sc-side-nav .sc-side-brand{border-bottom-color:var(--sn-border) !important;}
  .sc-side-nav .sc-side-link,
  .sc-side-nav .sc-side-toggle{color:#385748 !important;}
  .sc-side-nav .sc-side-link:hover,
  .sc-side-nav .sc-side-toggle:hover,
  .sc-side-nav .sc-side-link.active,
  .sc-side-nav .sc-side-toggle.active{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
}

/* ===== SuperAdmin ===== */
body:has(.sa-sidebar){background:var(--sn-page) !important;color:var(--sn-ink) !important;}
.sa-sidebar{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-right:1px solid var(--sn-border) !important;
  box-shadow:10px 0 30px rgba(28,73,47,.08) !important;
}
.sa-side-logo{background:#fff !important;border-color:var(--sn-border) !important;}
.sa-side-brand strong,
.sa-side-brand span,
.sa-sidebar .text-white{color:var(--sn-ink) !important;}
.sa-side-nav .nav-link{color:#4d685a !important;border-color:transparent !important;}
.sa-side-nav .nav-link:hover{color:var(--sn-green-deep) !important;background:#f2f9f4 !important;border-color:#d6e9dc !important;}
.sa-side-nav .nav-link.active{color:var(--sn-green-deep) !important;background:linear-gradient(90deg,#e7f6ec,#fff8c8) !important;border-color:#bbd9c5 !important;box-shadow:inset 4px 0 0 var(--sn-green-ui) !important;}
.sa-side-nav .nav-link.active i{color:var(--sn-green-ui) !important;}
.sa-side-sep{background:var(--sn-border) !important;}
.sa-side-profile{background:#fbfefc !important;border-top-color:var(--sn-border) !important;}
.sa-profile-card{background:#fff !important;color:var(--sn-ink) !important;border-color:var(--sn-border) !important;}
.sa-profile-card:hover{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
.sa-profile-card .avatar{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
.sa-mobilebar{background:#fff !important;color:var(--sn-ink) !important;border-bottom-color:var(--sn-border) !important;box-shadow:0 7px 24px rgba(28,73,47,.08) !important;}
.sa-mobilebar .navbar-brand{color:var(--sn-ink) !important;}
.sa-offcanvas{background:#fff !important;color:var(--sn-ink) !important;}
.sa-offcanvas .list-group-item{background:#fff !important;color:#3f5c4d !important;border-color:var(--sn-border) !important;}
.sa-offcanvas .list-group-item.active{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;border-color:#bcd8c5 !important;}

/* Accent drapeau discret dans les marques. */
.navbar-brand::after,
.sa-side-brand::after{
  content:"";
  display:inline-block;
  width:31px;
  height:3px;
  margin-left:.38rem;
  border-radius:999px;
  background:linear-gradient(90deg,var(--sn-green) 0 33.333%,var(--sn-yellow) 33.333% 66.666%,var(--sn-red) 66.666% 100%);
  vertical-align:middle;
}

/* ===== CityZen ===== */
.cityzen-body{
  --cz-blue:var(--sn-green-ui) !important;
  --cz-blue-dark:var(--sn-green-deep) !important;
  --cz-blue-soft:var(--sn-green-soft) !important;
  --cz-border:var(--sn-border) !important;
  --cz-bg:var(--sn-page) !important;
  --cz-shadow:var(--sn-shadow) !important;
  background:var(--sn-page) !important;
  color:var(--sn-ink) !important;
}
.cityzen-body .cz-navbar{background:#fff !important;border-bottom-color:var(--sn-border) !important;box-shadow:0 7px 24px rgba(28,73,47,.07) !important;}
.cityzen-body .cz-hero{
  background:
    radial-gradient(420px 220px at 96% 0%,rgba(243,210,27,.28),transparent 68%),
    radial-gradient(360px 220px at 104% 108%,rgba(215,25,32,.14),transparent 70%),
    linear-gradient(135deg,#00853f,#00a651 76%,#078844) !important;
  color:#fff !important;
  box-shadow:0 18px 40px rgba(0,133,63,.18) !important;
}
.cityzen-body .cz-hero .text-muted,
.cityzen-body .cz-hero p{color:rgba(255,255,255,.86) !important;}
.cityzen-body .cz-action-card{background:#fff !important;border-color:var(--sn-border) !important;}
.cityzen-body .cz-action-card:hover,
.cityzen-body .cz-action-card:focus-visible{border-color:#9dccae !important;box-shadow:var(--sn-shadow-lg) !important;}

/* ===== Responsive / confort ===== */
@media (max-width:991.98px){
  html body .navbar .nav-mobile-palette{display:none !important;}
  html body .navbar-glass{background:rgba(255,255,255,.98) !important;}
}
@media (max-width:576px){
  html body{background-attachment:scroll !important;}
  html body .surface:hover,
  html body .card-min:hover{transform:none !important;}
  html body .modal-content{border-radius:14px !important;}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto !important;transition-duration:.01ms !important;animation-duration:.01ms !important;animation-iteration-count:1 !important;}
}

/* ===== Rattrapages ciblés des anciens styles sombres de pages ===== */
html body .btn-outline-light{
  --bs-btn-color:var(--sn-green-deep);
  --bs-btn-border-color:#a8cbb4;
  --bs-btn-hover-bg:var(--sn-green-ui);
  --bs-btn-hover-border-color:var(--sn-green-ui);
  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:var(--sn-green-deep);
  --bs-btn-active-border-color:var(--sn-green-deep);
  color:var(--sn-green-deep) !important;
  border-color:#a8cbb4 !important;
}
html body .btn-outline-light:hover{background:var(--sn-green-ui) !important;color:#fff !important;border-color:var(--sn-green-ui) !important;}
html body .btn-brand,
html body .btn-primary{background:var(--sn-green-ui) !important;border-color:var(--sn-green-ui) !important;color:#fff !important;}
html body .btn-brand:hover,
html body .btn-primary:hover{background:var(--sn-green-deep) !important;border-color:var(--sn-green-deep) !important;}
html body .text-info{color:var(--sn-green-deep) !important;}
html body .border-info{border-color:#9fceb0 !important;}
html body .bg-info{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
html body .text-bg-info{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}

html body .revenue-switch,
html body .revenue-nature-switch,
html body .settings-hub-hero{
  background:linear-gradient(135deg,#fff,#f1faf4) !important;
  border-color:#c5dfce !important;
  color:var(--sn-ink) !important;
  box-shadow:var(--sn-shadow) !important;
}
html body .settings-hub-card{
  background:#fff !important;
  border-color:var(--sn-border) !important;
  color:var(--sn-ink) !important;
  box-shadow:var(--sn-shadow) !important;
}
html body .settings-hub-card:hover{
  background:linear-gradient(135deg,#f0faf3,#fffbea) !important;
  border-color:#9ac9aa !important;
  color:var(--sn-green-deep) !important;
  box-shadow:var(--sn-shadow-lg) !important;
}
html body .settings-hub-card .text-white,
html body .settings-hub-hero .text-white{color:var(--sn-ink) !important;}
html body .settings-section-title i{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}

html body .revenue-settings .form-control,
html body .revenue-settings .form-select,
html body .revenue-nature-switch .form-select{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
}
html body .revenue-settings .form-control:focus,
html body .revenue-settings .form-select:focus{background:#fff !important;color:var(--sn-ink) !important;border-color:var(--sn-green-ui) !important;box-shadow:0 0 0 .2rem rgba(0,166,81,.12) !important;}

html body .settings-page .choices__inner,
html body .settings-page .choices__list--dropdown,
html body .settings-page .choices__list[aria-expanded],
html body .settings-page .choices__input,
html body .revenue-settings .choices__inner,
html body .revenue-settings .choices__list--dropdown,
html body .revenue-settings .choices__list[aria-expanded],
html body .revenue-settings .choices__input{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
}
html body .settings-page .choices__item--choice,
html body .revenue-settings .choices__item--choice{background:#fff !important;color:var(--sn-ink) !important;}
html body .settings-page .choices__item--choice.is-highlighted,
html body .revenue-settings .choices__item--choice.is-highlighted{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
html body .settings-page .choices__placeholder,
html body .revenue-settings .choices__placeholder{color:#8a9c92 !important;}

html body .sc-static-length,
html body select.sc-static-length{
  color-scheme:light !important;
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:#cbded2 !important;
}
html body .sc-static-length option,
html body select.sc-static-length option{background:#fff !important;color:var(--sn-ink) !important;}

html body .rcv-card-mode tr,
html body .catalog-card-mode tr{
  background:#fff !important;
  border-color:var(--sn-border) !important;
  box-shadow:0 8px 22px rgba(28,73,47,.06);
}
html body .scope-pill{background:var(--sn-green-soft) !important;border-color:#b9d9c4 !important;color:var(--sn-green-deep) !important;}

html body .fr-revenue-accordion .accordion-item{background:#fff !important;border-color:var(--sn-border) !important;}
html body .fr-revenue-accordion .accordion-button,
html body .fr-revenue-accordion .accordion-button:not(.collapsed){background:#fff !important;color:var(--sn-green-deep) !important;}
html body .fr-revenue-accordion .accordion-button:not(.collapsed){background:var(--sn-green-soft) !important;}
html body .fr-revenue-accordion .accordion-button::after{filter:none !important;}
html body .fr-revenue-accordion .accordion-body{background:#fff !important;color:var(--sn-ink) !important;}
html body .fr-drop{background:#fff !important;border-color:#9dceb0 !important;}
html body .fr-drop.is-over{background:var(--sn-green-soft) !important;border-color:var(--sn-green-ui) !important;}
html body .fr-metric{background:#fff !important;border-color:var(--sn-border) !important;}

html body .dtr-drop,
html body .dtr-card,
html body .dtr-preview{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-border) !important;
}
html body .dtr-drop{border-color:#9acaaa !important;}
html body .dtr-drop.is-over{background:var(--sn-green-soft) !important;border-color:var(--sn-green-ui) !important;}
html body .dtr-file-name,
html body .dtr-source-note{color:#64796e !important;}
html body .dtr-step-num{background:var(--sn-green-soft) !important;border-color:#b8d9c3 !important;color:var(--sn-green-deep) !important;}
html body .choices__list--single .choices__item{color:var(--sn-ink) !important;}
html body .choices__list--dropdown .choices__list,
html body .choices__list[aria-expanded] .choices__list,
html body .choices__list--dropdown .choices__item,
html body .choices__list[aria-expanded] .choices__item{background:#fff !important;color:var(--sn-ink) !important;}
html body .choices__list--dropdown .choices__item--selectable.is-highlighted,
html body .choices__list[aria-expanded] .choices__item--selectable.is-highlighted{background:var(--sn-green-soft) !important;color:var(--sn-green-deep) !important;}
html body .choices__list--dropdown .choices__item.is-selected,
html body .choices__list[aria-expanded] .choices__item.is-selected{background:#e4f4e9 !important;color:var(--sn-green-deep) !important;}
html body .choices.is-disabled .choices__inner{background:#f1f5f2 !important;color:#7d8d84 !important;}

html body #ticketModal .modal-content,
html body #ticketModal .modal-header,
html body #ticketModal .modal-body,
html body #ticketModal .modal-footer{
  background:#fff !important;
  color:var(--sn-ink) !important;
  border-color:var(--sn-border) !important;
}
html body #ticketModal .modal-content{box-shadow:var(--sn-shadow-lg) !important;}

html body .report-html table tbody tr:nth-child(even) td{background:#f8fcf9 !important;}
html body .report-html table tbody tr:hover td{background:#eef8f1 !important;}
html body .report-html table tfoot td,
html body .report-html table tfoot th,
html body .report-html table tbody tr.report-total-row td{
  background:linear-gradient(90deg,#e6f5eb,#fff8c8) !important;
  color:#1f5d39 !important;
  border-color:#c2ddcb !important;
}

html body .legend-drop{background:#fff !important;border-color:var(--sn-border) !important;}

/* Cartes : fond d'attente clair. Les tuiles, marqueurs et couleurs métier restent intacts. */
html body #terrMapShell,
html body #terrMapShell.is-fullscreen,
html body #terrMapShell.is-fullscreen .terr-map-toolbar,
html body .rcv-map-shell,
html body .rcv-map-shell.is-fullscreen,
html body #infraMap,
html body #infraMapAll,
html body #localitesMap,
html body #locMap,
html body #dashMap{
  background:#eaf4ed !important;
}

/* Icônes de champs date/heure cohérentes avec le thème clair. */
html body input[type="date"],
html body input[type="time"],
html body input[type="datetime-local"]{color-scheme:light !important;}
html body input[type="date"]::-webkit-calendar-picker-indicator,
html body input[type="time"]::-webkit-calendar-picker-indicator,
html body input[type="datetime-local"]::-webkit-calendar-picker-indicator{filter:none !important;opacity:.72;}


/* ===== 2026-09-17 · Habillage Sénégal vivant (visuel uniquement) =====
   Ce bloc remplace le fond neutre par le décor validé, sans toucher à la logique métier. */
html,
html body,
html[data-bs-theme="dark"] body,
html[data-bs-theme="light"] body{
  background-color:#fffaf0 !important;
  background-image:url("../img/senegal-vivid-bg.png") !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  background-attachment:fixed !important;
  color:var(--sn-ink) !important;
}

/* Les barres laissent respirer le décor tout en conservant une lecture nette. */
html body .navbar-glass,
html[data-bs-theme] body .navbar-glass{
  background:rgba(255,253,246,.86) !important;
  border-bottom:1px solid rgba(67,126,89,.22) !important;
  box-shadow:0 8px 24px rgba(59,91,65,.10) !important;
  backdrop-filter:blur(15px) saturate(1.12);
}
html body .main-top-nav,
html[data-bs-theme] body .main-top-nav{
  background:rgba(248,253,249,.83) !important;
  border-bottom:1px solid rgba(80,132,98,.20) !important;
  box-shadow:0 5px 18px rgba(46,83,57,.075) !important;
  backdrop-filter:blur(14px) saturate(1.08);
}
html body .surface,
html body .card-min,
html body .card:not(.bg-transparent),
html body .modal-content,
html body .offcanvas,
html body .accordion-item,
html body .list-group-item,
html body .toast{
  background:rgba(255,255,255,.94) !important;
  border-color:rgba(171,204,182,.72) !important;
  box-shadow:0 12px 32px rgba(52,91,63,.11) !important;
}
html body .surface:hover,
html body .card-min:hover{
  box-shadow:0 18px 42px rgba(52,91,63,.14) !important;
}

/* Mode municipal horizontal : pilules blanches, actives vert Sénégal. */
html body .main-top-nav .nav-btn,
html[data-bs-theme] body .main-top-nav .nav-btn{
  background:rgba(255,255,255,.92) !important;
  color:#173c2c !important;
  border-color:#bfd7c7 !important;
  box-shadow:0 3px 10px rgba(48,93,63,.06) !important;
}
html body .main-top-nav .nav-btn:hover{
  background:#f2fbf5 !important;
  color:#006b35 !important;
  border-color:#8fc8a3 !important;
}
html body .main-top-nav .nav-btn.active{
  background:linear-gradient(135deg,#e7f8ed,#fff9cf) !important;
  color:#006b35 !important;
  border-color:#32ad68 !important;
  box-shadow:0 0 0 2px rgba(0,166,81,.08),0 5px 15px rgba(0,133,63,.10) !important;
}

/* Mode municipal latéral : même identité graphique, adaptée au panneau étroit. */
@media (min-width:992px){
  html.sc-nav-side body{
    background-position:calc(50% + 143px) top !important;
  }
  html.sc-nav-side .sc-side-nav,
  html[data-bs-theme="dark"].sc-nav-side .sc-side-nav,
  html[data-bs-theme="light"].sc-nav-side .sc-side-nav{
    position:fixed;
    background:
      linear-gradient(180deg,rgba(255,255,255,.97),rgba(251,255,249,.96)),
      url("../img/senegal-vivid-bg.png") left top/auto 100% no-repeat !important;
    border-right:1px solid #bfd8c8 !important;
    box-shadow:12px 0 34px rgba(49,91,61,.11) !important;
  }
  .sc-side-nav::before{
    content:"";
    position:absolute;
    left:0;right:0;top:0;height:5px;
    background:linear-gradient(90deg,#00853f 0 33.333%,#f3d21b 33.333% 66.666%,#d71920 66.666% 100%);
    z-index:2;
    pointer-events:none;
  }
  .sc-side-nav .sc-side-brand,
  .sc-side-nav .sc-side-scroll{position:relative;z-index:3;}
  .sc-side-nav .sc-side-link,
  .sc-side-nav .sc-side-toggle{
    color:#244936 !important;
    border:1px solid transparent !important;
  }
  .sc-side-nav .sc-side-link:hover,
  .sc-side-nav .sc-side-toggle:hover{
    background:rgba(234,248,239,.94) !important;
    border-color:#d1e6d8 !important;
  }
  .sc-side-nav .sc-side-link.active,
  .sc-side-nav .sc-side-toggle.active{
    background:linear-gradient(90deg,#e4f7ea,#fff8cd) !important;
    color:#006b35 !important;
    border-color:#b7d8c2 !important;
    box-shadow:inset 4px 0 0 #00a651 !important;
  }
}

/* SuperAdmin : la navigation latérale reçoit le même langage visuel. */
body:has(.sa-sidebar),
html body:has(.sa-sidebar){
  background-color:#fffaf0 !important;
  background-image:url("../img/senegal-vivid-bg.png") !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  background-attachment:fixed !important;
}
.sa-sidebar{
  position:fixed;
  background:
    linear-gradient(180deg,rgba(255,255,255,.97),rgba(251,255,249,.96)),
    url("../img/senegal-vivid-bg.png") left top/auto 100% no-repeat !important;
  border-right-color:#bfd8c8 !important;
  box-shadow:12px 0 34px rgba(49,91,61,.11) !important;
}
.sa-sidebar::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;height:5px;
  background:linear-gradient(90deg,#00853f 0 33.333%,#f3d21b 33.333% 66.666%,#d71920 66.666% 100%);
  z-index:4;
  pointer-events:none;
}
.sa-sidebar > *{position:relative;z-index:5;}

/* CityZen garde son langage propre mais partage le décor sénégalais. */
html body.cityzen-body{
  background-color:#fffaf0 !important;
  background-image:url("../img/senegal-vivid-bg.png") !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  background-attachment:fixed !important;
}
.cityzen-body .cz-navbar{
  background:rgba(255,255,255,.90) !important;
  backdrop-filter:blur(14px) saturate(1.08);
}

/* Mobile : décor recentré et allégé pour éviter que les couleurs ne mangent le texte. */
@media (max-width:991.98px){
  html,
  html body,
  html[data-bs-theme="dark"] body,
  html[data-bs-theme="light"] body,
  html body.cityzen-body,
  html body:has(.sa-sidebar){
    background-position:center top !important;
    background-size:auto 1120px !important;
    background-attachment:scroll !important;
  }
  html body .navbar-glass,
  html[data-bs-theme] body .navbar-glass,
  html body .main-top-nav,
  html[data-bs-theme] body .main-top-nav{
    background:rgba(255,255,255,.94) !important;
  }
}

/* ===== 2026-09-17 · V4 — lisibilité renforcée + décor Sénégal validé =====
   Couche strictement visuelle : aucune logique métier, réseau ou offline. */
:root,
html[data-bs-theme="light"],
html[data-bs-theme="dark"]{
  --sn-panel:rgba(255,255,255,.965);
  --sn-panel-soft:rgba(255,255,255,.91);
  --sn-panel-border:#9fc3aa;
  --sn-panel-border-strong:#79aa8a;
  --sn-control-border:#9bbda6;
  --sn-control-shadow:0 5px 15px rgba(38,82,52,.10);
  --sn-section-shadow:0 14px 34px rgba(35,78,48,.13);
}

/* Le visuel validé reste lisible même sur les grands écrans et les longues pages. */
html,
html body,
html[data-bs-theme="dark"] body,
html[data-bs-theme="light"] body,
html body.cityzen-body,
html body:has(.sa-sidebar){
  background-image:url("../img/senegal-vivid-bg.png") !important;
  background-color:#fff8e7 !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  background-attachment:fixed !important;
}

/* Sections : légère transparence conservée, mais bordures et séparation nettement visibles. */
html body .surface,
html body .card-min,
html body .card:not(.bg-transparent),
html body .cz-surface,
html body .cz-action-card,
html body .agenda-toolbar-card,
html body .agenda-card,
html body .admin-card,
html body .card-main,
html body .builder-panel,
html body .settings-panel,
html body .settings-hub-card,
html body .settings-hub-hero,
html body .panel,
html body .form-section,
html body .special-page-box,
html body .accounting-section,
html body .tab-pane-card,
html body .scope-box,
html body .receipt-group-card,
html body .rcv-card,
html body .rcv-title-card,
html body .graph-card,
html body .field-card,
html body .legend-panel,
html body .dtr-panel,
html body .dtr-card,
html body .report-card,
html body .ps-form-card,
html body .preview-card,
html body .participant-box,
html body .overlap-party-card,
html body .module-card,
html body .message-box,
html body .json-import-box,
html body .filter-panel,
html body .digital-card,
html body .definition-box,
html body .collect-page-box,
html body .collect-form-card,
html body .asp-card,
html body .users-filterbar,
html body .cm-filters,
html body .terr-map-filters{
  background:var(--sn-panel) !important;
  border:1.5px solid var(--sn-panel-border) !important;
  box-shadow:var(--sn-section-shadow) !important;
  color:var(--sn-ink) !important;
}

/* Les petites zones de filtre/outil restent plus légères, sans se fondre dans le décor. */
html body .toolbar,
html body .report-toolbar,
html body .cm-toolbar,
html body .table-toolbar,
html body .terr-map-toolbar,
html body .rcv-map-toolbar,
html body .asp-map-toolbar,
html body .accounting-mode-toolbar{
  background:rgba(250,254,251,.94) !important;
  border-color:#aac9b4 !important;
}

/* Agenda : neutralise les anciens fonds très transparents définis dans la page elle-même. */
html body .agenda-toolbar-card,
html body .agenda-card{
  border-radius:18px !important;
}
html body .agenda-toolbar-card{
  background:rgba(249,253,250,.97) !important;
}
html body .agenda-card{
  background:rgba(255,255,255,.975) !important;
}
html body .agenda-card .fc,
html body .agenda-card #calendar{
  color:#183126 !important;
}
html body .agenda-card .fc .fc-scrollgrid,
html body .agenda-card .fc-theme-standard td,
html body .agenda-card .fc-theme-standard th{
  border-color:#cfddd3 !important;
}
html body .agenda-card .fc .fc-col-header-cell{
  background:#f1f7f3 !important;
}
html body .agenda-card .fc .fc-daygrid-day,
html body .agenda-card .fc .fc-timegrid-col{
  background:rgba(255,255,255,.88) !important;
}

/* Boutons : plus de boutons "fantômes" qui se perdent dans le background. */
html body .btn-outline-light,
html body .btn-outline-secondary,
html body .btn-outline-primary,
html body .btn-outline-success,
html body .btn-light,
html body .btn-ghost,
html body .main-top-nav .nav-btn,
html[data-bs-theme] body .main-top-nav .nav-btn{
  background:#fff !important;
  opacity:1 !important;
  border-width:1.25px !important;
  border-color:var(--sn-control-border) !important;
  box-shadow:var(--sn-control-shadow) !important;
}
html body .btn-outline-light,
html body .btn-outline-secondary,
html body .btn-light,
html body .btn-ghost{
  color:#244536 !important;
}
html body .btn-outline-light:hover,
html body .btn-outline-secondary:hover,
html body .btn-outline-primary:hover,
html body .btn-outline-success:hover,
html body .btn-ghost:hover{
  background:#eaf7ef !important;
  color:#006b35 !important;
  border-color:#69aa7e !important;
}
html body .btn-brand,
html body .btn-primary,
html body .btn-success,
html body .btn-cityzen{
  opacity:1 !important;
  box-shadow:0 7px 18px rgba(0,133,63,.18) !important;
}
html body .btn:disabled,
html body .btn.disabled{
  opacity:.62 !important;
}

/* FullCalendar : états suffisamment opaques et bien contrastés. */
html body .fc .fc-button-primary{
  background:#23384c !important;
  border-color:#23384c !important;
  color:#fff !important;
  opacity:1 !important;
  box-shadow:0 4px 12px rgba(24,49,38,.14) !important;
}
html body .fc .fc-button-primary:hover{
  background:#172a3b !important;
  border-color:#172a3b !important;
}
html body .fc .fc-button-primary:not(:disabled).fc-button-active,
html body .fc .fc-button-primary:not(:disabled):active{
  background:#0d6efd !important;
  border-color:#0d6efd !important;
}

/* Formulaires : contours un cran plus visibles pour les pages très graphiques. */
html body .form-control,
html body .form-select,
html body textarea.form-control,
html body .input-group-text{
  border-color:#a9c7b4 !important;
  border-width:1.25px !important;
  background:#fff !important;
}
html body .form-control:focus,
html body .form-select:focus,
html body textarea.form-control:focus{
  border-color:#00a651 !important;
  box-shadow:0 0 0 .2rem rgba(0,166,81,.13),0 4px 12px rgba(0,133,63,.08) !important;
}

/* Dropdowns / popovers au-dessus du décor. */
html body .dropdown-menu,
html body .popover,
html body .offcanvas,
html body .modal-content{
  background:rgba(255,255,255,.985) !important;
  border:1.5px solid var(--sn-panel-border) !important;
  box-shadow:0 18px 44px rgba(35,78,48,.16) !important;
}

/* Navigation latérale municipale et SuperAdmin : panneau franc, pas de transparence excessive. */
@media (min-width:992px){
  html.sc-nav-side .sc-side-nav,
  html[data-bs-theme="dark"].sc-nav-side .sc-side-nav,
  html[data-bs-theme="light"].sc-nav-side .sc-side-nav,
  html body .sa-sidebar{
    background:
      linear-gradient(180deg,rgba(255,255,255,.985),rgba(249,253,250,.975)),
      url("../img/senegal-vivid-bg.png") left top/auto 100% no-repeat !important;
    border-right:1.5px solid #91bda0 !important;
    box-shadow:12px 0 34px rgba(38,82,52,.14) !important;
  }
}

@media (max-width:991.98px){
  html,
  html body,
  html[data-bs-theme="dark"] body,
  html[data-bs-theme="light"] body,
  html body.cityzen-body,
  html body:has(.sa-sidebar){
    background-image:url("../img/senegal-vivid-bg.png") !important;
    background-size:auto 1120px !important;
    background-position:center top !important;
    background-attachment:scroll !important;
  }
}
