/* =====================================================================
   CMS Apave v2 : couche visuelle « Apave × Google »
   ---------------------------------------------------------------------
   Se pose PAR-DESSUS les feuilles existantes (SB Admin 2 / AdminLTE /
   Bootstrap 4). Aucun identifiant ni classe utilisés par le JavaScript
   n'est renommé : seul l'aspect change. Désactivable par THEME_V2=False.

   Sécurité : aucune ressource externe (polices hébergées sur le serveur),
   aucun JavaScript dans ce fichier, aucune image distante.
   ===================================================================== */

/* ---- Polices locales (Roboto, licence Apache 2.0) ------------------- */
@font-face { font-family: "Roboto"; font-weight: 400; font-display: swap; src: url("polices/roboto-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 500; font-display: swap; src: url("polices/roboto-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 700; font-display: swap; src: url("polices/roboto-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto Mono"; font-weight: 400; font-display: swap; src: url("polices/roboto-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto Mono"; font-weight: 500; font-display: swap; src: url("polices/roboto-mono-latin-500-normal.woff2") format("woff2"); }

/* ---- Jetons ---------------------------------------------------------- */
:root {
  --ap-vert: #54B948;          /* vert Apave (logo) */
  --ap-vert-fonce: #1F6F2A;    /* texte et liens verts : contraste 6,3:1 sur blanc */
  --ap-vert-clair: #E3F4DF;    /* fonds d'état actif */
  --ap-vert-voile: #F3FAF1;
  --ap-encre: #231F20;         /* noir Apave (logo) */
  --ap-texte: #3C4043;         /* gris texte Google */
  --ap-texte-2: #5F6368;
  --ap-trait: #DADCE0;
  --ap-trait-2: #E8EAED;
  --ap-fond: #F6F8F6;
  --ap-surface: #FFFFFF;
  --ap-ambre: #B06000; --ap-ambre-clair: #FEF3E0;
  --ap-rouge: #B3261E; --ap-rouge-clair: #FCE8E6;
  --ap-bleu: #1A73E8;  --ap-bleu-clair: #E8F0FE;
  --ap-rayon: 12px;
  --ap-rayon-l: 20px;
  --ap-ombre-1: 0 1px 2px rgba(35,31,32,.08), 0 1px 3px 1px rgba(35,31,32,.05);
  --ap-ombre-2: 0 2px 6px 2px rgba(35,31,32,.08), 0 1px 2px rgba(35,31,32,.10);
  --ap-police: "Roboto", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  --ap-chiffres: "Roboto Mono", ui-monospace, Consolas, monospace;
  --ap-anim: 160ms cubic-bezier(.2,0,0,1);
}

/* ---- Base ------------------------------------------------------------ */
html { -webkit-text-size-adjust: 100%; }
body, .sidebar, .navbar, .btn, .form-control, .table, .modal, .dropdown-menu, .card, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--ap-police) !important;
}
body { background: var(--ap-fond) !important; color: var(--ap-texte); font-size: 14px; -webkit-font-smoothing: antialiased; }
#content-wrapper, #content, .content-wrapper { background: var(--ap-fond) !important; }
h1, h2, h3, h4, h5, .h1, .h2, .h3, .h4, .h5, .text-gray-800, .text-gray-900 { color: var(--ap-encre) !important; letter-spacing: -.01em; }
.h3.mb-0, h1.h3 { font-weight: 500; font-size: 1.6rem; }
a { color: var(--ap-vert-fonce); }
a:hover { color: var(--ap-encre); }
::selection { background: var(--ap-vert-clair); color: var(--ap-encre); }
:focus-visible { outline: 3px solid var(--ap-vert) !important; outline-offset: 2px; border-radius: 6px; }
.text-primary { color: var(--ap-vert-fonce) !important; }
.bg-primary, .bg-gradient-primary { background: var(--ap-encre) !important; }
.text-xs.text-uppercase, .text-xs.font-weight-bold { letter-spacing: .06em; }
td, .montant, .text-right { font-variant-numeric: tabular-nums; }

/* ---- Barre latérale : noir Apave, repères verts ------------------------ */
.sidebar, .bg-dark-apave, .main-sidebar { background: var(--ap-encre) !important; }
.sidebar .sidebar-brand { height: auto; min-height: 4.5rem; padding: 1rem .9rem; }
.sidebar .sidebar-brand img { max-height: 52px; width: auto !important; max-width: 100%; }
.sidebar hr.sidebar-divider { border-top-color: rgba(255,255,255,.10); margin: .5rem 1rem; }
.sidebar .sidebar-heading { color: rgba(255,255,255,.50) !important; font-size: .68rem; letter-spacing: .12em; padding: .75rem 1.5rem .25rem; }
.sidebar .nav-item .nav-link { margin: 2px .6rem; border-radius: 999px; padding: .7rem 1rem !important; color: rgba(255,255,255,.82) !important; transition: background var(--ap-anim), color var(--ap-anim); font-style: normal !important; }
.sidebar .nav-item .nav-link i { color: rgba(255,255,255,.55) !important; transition: color var(--ap-anim); }
.sidebar .nav-item .nav-link:hover { background: rgba(255,255,255,.07); color: #fff !important; }
.sidebar .nav-item .nav-link:hover i { color: var(--ap-vert) !important; }
.sidebar .nav-item .nav-link { width: auto !important; }
/* Les gabarits marquent tous les éléments « active » : seul l'élément de la page courante
   (repéré par apave-v2.js, classe ap-actif) reçoit l'indicateur vert. */
.sidebar .nav-item.active > .nav-link { background: transparent; font-weight: 400; }
.sidebar .nav-item .nav-link[aria-expanded="true"] { background: rgba(255,255,255,.06); color: #fff !important; }
.sidebar .nav-item.ap-actif > .nav-link { background: rgba(84,185,72,.18) !important; color: #fff !important; font-weight: 500; box-shadow: inset 3px 0 0 var(--ap-vert); }
.sidebar .nav-item.ap-actif > .nav-link i, .sidebar .nav-item .nav-link[aria-expanded="true"] i { color: var(--ap-vert) !important; }
.sidebar .collapse-inner { border-radius: var(--ap-rayon) !important; box-shadow: var(--ap-ombre-2); padding: .4rem 0 !important; }
.sidebar .collapse-inner .collapse-item { border-radius: 999px; margin: 1px .4rem; color: var(--ap-texte) !important; }
.sidebar .collapse-inner .collapse-item:hover { background: var(--ap-vert-voile) !important; }
.sidebar .collapse-inner .collapse-item.active { background: transparent !important; font-weight: 400; }
.sidebar .collapse-inner .collapse-item.ap-actif { background: var(--ap-vert-clair) !important; color: var(--ap-encre) !important; font-weight: 500; }
.sidebar .collapse-inner .collapse-header { color: var(--ap-texte-2); letter-spacing: .08em; }
#sidebarToggle { background: rgba(255,255,255,.08) !important; }
#sidebarToggle:hover { background: rgba(84,185,72,.35) !important; }
.sidebar-card { background: rgba(255,255,255,.05) !important; border-radius: var(--ap-rayon) !important; }

/* ---- Barre du haut ----------------------------------------------------- */
.topbar, .main-header.navbar { background: rgba(255,255,255,.88) !important; backdrop-filter: saturate(1.4) blur(10px); -webkit-backdrop-filter: saturate(1.4) blur(10px); box-shadow: none !important; border-bottom: 1px solid var(--ap-trait-2); position: sticky !important; top: 0; z-index: 1020; }
.topbar .navbar-search .input-group { background: #F1F3F4; border-radius: 999px; overflow: hidden; }
.topbar .navbar-search .form-control, .topbar .navbar-search .bg-light { background: transparent !important; border: 0 !important; box-shadow: none !important; padding-left: 1.1rem; }
.topbar .navbar-search .btn { background: transparent !important; border: 0 !important; color: var(--ap-texte-2) !important; }
.topbar .navbar-search .input-group:focus-within { background: #fff; box-shadow: 0 1px 3px rgba(35,31,32,.2), 0 0 0 2px var(--ap-vert); }
.topbar .nav-item .nav-link { color: var(--ap-texte-2) !important; }
.topbar .topbar-divider { border-right-color: var(--ap-trait-2); }
.img-profile { box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--ap-vert-clair); }
.badge-counter { background: var(--ap-rouge) !important; }

/* ---- Cartes ----------------------------------------------------------- */
.card { border: 1px solid var(--ap-trait-2) !important; border-radius: var(--ap-rayon-l) !important; box-shadow: var(--ap-ombre-1) !important; overflow: visible; }
.card.shadow, .card.shadow-lg { box-shadow: var(--ap-ombre-1) !important; }
.card-header { background: transparent !important; border-bottom: 1px solid var(--ap-trait-2) !important; padding: 1rem 1.25rem !important; border-radius: var(--ap-rayon-l) var(--ap-rayon-l) 0 0 !important; }
.card-header h6, .card-header .m-0.font-weight-bold { color: var(--ap-encre) !important; font-weight: 500 !important; font-size: 1rem; }
.card-body { padding: 1.25rem; }
.card.border-left-primary, .card.border-left-success, .card.border-left-info, .card.border-left-warning, .card.border-left-danger { border-left-width: 1px !important; position: relative; }
.card.border-left-primary::before, .card.border-left-success::before, .card.border-left-info::before, .card.border-left-warning::before, .card.border-left-danger::before { content: ""; position: absolute; left: 14px; top: 14px; bottom: 14px; width: 4px; border-radius: 4px; background: var(--ap-vert); }
.card.border-left-warning::before { background: #F9AB00; }
.card.border-left-danger::before { background: var(--ap-rouge); }
.card.border-left-info::before { background: var(--ap-bleu); }

/* ---- Boutons : vert Apave, texte noir Apave (contraste 7,5:1) ---------- */
.btn { border-radius: 999px !important; font-weight: 500; letter-spacing: .01em; padding: .5rem 1.15rem; transition: box-shadow var(--ap-anim), background var(--ap-anim), transform var(--ap-anim); }
.btn-sm, .btn-group-sm > .btn { padding: .3rem .8rem; }
.btn:active { transform: scale(.98); }
.btn-primary, .btn-success { background: var(--ap-vert) !important; border-color: var(--ap-vert) !important; color: var(--ap-encre) !important; }
.btn-primary:hover, .btn-success:hover { background: #4AA83F !important; box-shadow: var(--ap-ombre-1); color: var(--ap-encre) !important; }
.btn-secondary, .btn-light { background: #fff !important; border: 1px solid var(--ap-trait) !important; color: var(--ap-vert-fonce) !important; }
.btn-secondary:hover, .btn-light:hover { background: var(--ap-vert-voile) !important; }
.btn-info { background: var(--ap-bleu-clair) !important; border-color: transparent !important; color: #174EA6 !important; }
.btn-warning { background: #FEEFC3 !important; border-color: transparent !important; color: #7A4100 !important; }
.btn-danger { background: var(--ap-rouge-clair) !important; border-color: transparent !important; color: var(--ap-rouge) !important; }
.btn-danger:hover { background: var(--ap-rouge) !important; color: #fff !important; }
.btn-dark { background: var(--ap-encre) !important; border-color: var(--ap-encre) !important; color: #fff !important; }
.btn-link { color: var(--ap-vert-fonce) !important; }
.btn-circle { border-radius: 50% !important; padding: 0; }
.btn[disabled], .btn.disabled { opacity: .45; }
.btn.ap-en-cours { pointer-events: none; opacity: .7; }
.btn.ap-en-cours::after { content: ""; display: inline-block; width: 1em; height: 1em; margin-left: .5em; vertical-align: -.15em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: ap-tourne .7s linear infinite; }
@keyframes ap-tourne { to { transform: rotate(360deg); } }

/* ---- Champs ------------------------------------------------------------ */
.form-control, .custom-select, select.form-control, .bootstrap-select > .dropdown-toggle {
  border: 1px solid var(--ap-trait) !important; border-radius: 10px !important; color: var(--ap-encre); min-height: 40px; background-color: #fff;
  transition: border-color var(--ap-anim), box-shadow var(--ap-anim);
}
.form-control:hover { border-color: #BDC1C6 !important; }
.form-control:focus, .custom-select:focus { border-color: var(--ap-vert) !important; box-shadow: 0 0 0 3px rgba(84,185,72,.22) !important; }
.form-control[readonly], .form-control:disabled { background: #F1F3F4 !important; color: var(--ap-texte-2); }
.form-control.is-invalid, .was-validated .form-control:invalid { border-color: var(--ap-rouge) !important; box-shadow: 0 0 0 3px rgba(179,38,30,.15) !important; }
label, .col-form-label { color: var(--ap-texte); font-weight: 500; font-size: .86rem; }
.form-group { margin-bottom: 1.1rem; }
.custom-control-input:checked ~ .custom-control-label::before { background: var(--ap-vert) !important; border-color: var(--ap-vert) !important; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--ap-vert); }
.input-group-text { background: #F1F3F4; border-color: var(--ap-trait); border-radius: 10px; }

/* ---- Tableaux et DataTables ------------------------------------------- */
.table { color: var(--ap-texte); }
.table thead th, .table.dataTable thead th, table.dataTable thead th {
  background: #F8FAF8 !important; color: var(--ap-texte-2) !important; font-weight: 500; font-size: .74rem; text-transform: uppercase; letter-spacing: .06em;
  border-bottom: 1px solid var(--ap-trait) !important; border-top: 0 !important; white-space: nowrap; position: sticky; top: 0; z-index: 1;
}
.table td, .table th { border-color: var(--ap-trait-2) !important; vertical-align: middle; }
.table-bordered, .table-bordered td, .table-bordered th { border-color: var(--ap-trait-2) !important; }
.table-hover tbody tr:hover, table.dataTable tbody tr:hover,
#dataTable tr:hover, #dataTable1 tr:hover, #dataTable2 tr:hover, #dataTable3 tr:hover, #dataTable4 tr:hover, #dataTable5 tr:hover { background: var(--ap-vert-voile) !important; }
#dataTable tr:nth-child(even), #dataTable1 tr:nth-child(even), #dataTable2 tr:nth-child(even), #dataTable3 tr:nth-child(even), #dataTable4 tr:nth-child(even), #dataTable5 tr:nth-child(even) { background: #FAFBFA; }
.table.dataTable, #dataTable, #dataTable1 { font-family: var(--ap-police) !important; }
.table-responsive { border-radius: var(--ap-rayon); }
.dataTables_wrapper .dataTables_filter input { border-radius: 999px !important; padding-left: 1rem; min-width: 220px; }
.dataTables_wrapper .dataTables_length select { border-radius: 10px !important; }
.dataTables_wrapper .dataTables_info { color: var(--ap-texte-2); font-size: .85rem; }
.page-item .page-link { border: 0; border-radius: 999px !important; margin: 0 2px; color: var(--ap-texte); min-width: 36px; text-align: center; }
.page-item.active .page-link { background: var(--ap-vert-clair) !important; color: var(--ap-encre) !important; font-weight: 500; }
.page-item.disabled .page-link { color: #BDC1C6; background: transparent; }
td.dataTables_empty { color: var(--ap-texte-2); padding: 2.5rem !important; background: #fff !important; }
td.dataTables_empty::before { content: ""; display: block; width: 44px; height: 44px; margin: 0 auto .6rem; border-radius: 50%; background: var(--ap-vert-voile) radial-gradient(circle, var(--ap-vert) 0 5px, transparent 6px); }

/* ---- Modales : coins généreux, verre dépoli -------------------------- */
.modal-backdrop.show { opacity: 1 !important; background: rgba(35,31,32,.42) !important; backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.modal-content { border: 0 !important; border-radius: 24px !important; box-shadow: 0 24px 48px -12px rgba(35,31,32,.35) !important; overflow: hidden; }
.modal-header { border-bottom: 1px solid var(--ap-trait-2) !important; padding: 1.15rem 1.5rem !important; background: #fff !important; color: var(--ap-encre) !important; align-items: center; }
.modal-header[class*="bg-"] { background: #fff !important; }
.modal-header .modal-title, .modal-header h5, .modal-header h4 { color: var(--ap-encre) !important; font-weight: 500; font-size: 1.15rem; }
.modal-header::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--ap-vert); margin-right: .75rem; flex: none; }
.modal-header .close { width: 36px; height: 36px; margin: -.25rem -.5rem -.25rem auto; padding: 0 !important; border-radius: 50%; opacity: .7; color: var(--ap-encre); text-shadow: none; }
.modal-header .close:hover { background: #F1F3F4; opacity: 1; }
.modal-body { padding: 1.5rem !important; }
.modal-footer { border-top: 1px solid var(--ap-trait-2) !important; padding: .9rem 1.5rem !important; background: #FAFBFA; gap: .5rem; }
.modal.fade .modal-dialog { transform: translateY(12px) scale(.98); transition: transform 180ms cubic-bezier(.2,0,0,1); }
.modal.show .modal-dialog { transform: none; }
.dropdown-menu { border: 1px solid var(--ap-trait-2) !important; border-radius: var(--ap-rayon) !important; box-shadow: var(--ap-ombre-2) !important; padding: .4rem; }
.dropdown-item { border-radius: 8px; padding: .5rem .8rem; }
.dropdown-item:hover, .dropdown-item:focus { background: var(--ap-vert-voile); color: var(--ap-encre); }

/* ---- États : pastilles et messages ------------------------------------- */
.badge { border-radius: 999px; padding: .35em .75em; font-weight: 500; letter-spacing: .02em; }
.badge-success, .badge-primary { background: var(--ap-vert-clair) !important; color: var(--ap-vert-fonce) !important; }
.badge-warning { background: #FEEFC3 !important; color: #7A4100 !important; }
.badge-danger { background: var(--ap-rouge-clair) !important; color: var(--ap-rouge) !important; }
.badge-info { background: var(--ap-bleu-clair) !important; color: #174EA6 !important; }
.badge-secondary, .badge-light { background: #F1F3F4 !important; color: var(--ap-texte) !important; }
.badge-dark { background: var(--ap-encre) !important; }
[id^="projet-badge-"] { white-space: normal; text-align: left; line-height: 1.35; max-width: 320px; display: inline-block; }
.alert { border: 0; border-radius: var(--ap-rayon); padding: .9rem 1.1rem .9rem 3rem; position: relative; }
.alert::before { position: absolute; left: 1rem; top: .85rem; width: 1.3rem; height: 1.3rem; border-radius: 50%; text-align: center; line-height: 1.3rem; font-weight: 700; font-size: .8rem; }
.alert-success { background: var(--ap-vert-clair); color: #134F1C; } .alert-success::before { content: "✓"; background: var(--ap-vert); color: var(--ap-encre); }
.alert-warning { background: #FEF7E0; color: #7A4100; } .alert-warning::before { content: "!"; background: #F9AB00; color: var(--ap-encre); }
.alert-danger { background: var(--ap-rouge-clair); color: #8C1D18; } .alert-danger::before { content: "!"; background: var(--ap-rouge); color: #fff; }
.alert-info, .alert-primary { background: var(--ap-bleu-clair); color: #174EA6; } .alert-info::before, .alert-primary::before { content: "i"; background: var(--ap-bleu); color: #fff; }
.progress { border-radius: 999px; background: var(--ap-trait-2); }
.progress-bar { background: var(--ap-vert) !important; }

/* ---- Chargement ------------------------------------------------------- */
#ap-barre-chargement { position: fixed; top: 0; left: 0; height: 3px; width: 0; z-index: 2000; background: linear-gradient(90deg, var(--ap-vert), #8FD686); box-shadow: 0 0 8px rgba(84,185,72,.6); transition: width 400ms ease, opacity 300ms ease; opacity: 0; pointer-events: none; }
#ap-barre-chargement.actif { opacity: 1; width: 75%; transition: width 6s cubic-bezier(.1,.6,.2,1); }
#ap-barre-chargement.fini { opacity: 0; width: 100%; transition: width 200ms ease, opacity 400ms ease 200ms; }
.loader-purchase { border-color: var(--ap-trait-2) !important; border-top-color: var(--ap-vert) !important; border-width: 4px !important; }

/* ---- Notifications (toasts) ------------------------------------------- */
#ap-toasts { position: fixed; right: 20px; bottom: 20px; z-index: 2100; display: flex; flex-direction: column; gap: 10px; max-width: min(420px, calc(100vw - 40px)); }
.ap-toast { display: flex; gap: .75rem; align-items: flex-start; background: var(--ap-encre); color: #fff; border-radius: 14px; padding: .85rem 1rem; box-shadow: 0 12px 28px -8px rgba(35,31,32,.5); animation: ap-entree 220ms cubic-bezier(.2,0,0,1); font-size: .92rem; }
.ap-toast .ap-toast-pastille { width: 10px; height: 10px; border-radius: 50%; margin-top: .4rem; flex: none; background: var(--ap-vert); }
.ap-toast.erreur .ap-toast-pastille { background: #F28B82; }
.ap-toast.alerte .ap-toast-pastille { background: #FDD663; }
.ap-toast button { margin-left: auto; background: transparent; border: 0; color: rgba(255,255,255,.7); font-size: 1.2rem; line-height: 1; padding: 0 0 0 .5rem; cursor: pointer; }
@keyframes ap-entree { from { transform: translateY(10px); opacity: 0; } }

/* ---- Palette de commandes (Ctrl+K) ------------------------------------ */
#ap-palette { position: fixed; inset: 0; z-index: 2200; display: none; align-items: flex-start; justify-content: center; padding-top: 12vh; background: rgba(35,31,32,.35); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
#ap-palette.ouverte { display: flex; }
#ap-palette .ap-palette-boite { width: min(640px, calc(100vw - 32px)); background: #fff; border-radius: 20px; box-shadow: 0 24px 60px -12px rgba(35,31,32,.45); overflow: hidden; animation: ap-entree 180ms cubic-bezier(.2,0,0,1); }
#ap-palette input { width: 100%; border: 0; padding: 1.1rem 1.25rem 1.1rem 3.2rem; font-size: 1.05rem; outline: none; color: var(--ap-encre); background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%235F6368' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 1.2rem center; border-bottom: 1px solid var(--ap-trait-2); }
#ap-palette ul { list-style: none; margin: 0; padding: .4rem; max-height: 52vh; overflow: auto; }
#ap-palette li a { display: flex; justify-content: space-between; gap: 1rem; padding: .65rem .9rem; border-radius: 10px; color: var(--ap-encre); text-decoration: none; }
#ap-palette li a small { color: var(--ap-texte-2); }
#ap-palette li.choisi a, #ap-palette li a:hover { background: var(--ap-vert-voile); }
#ap-palette .ap-palette-pied { padding: .55rem 1.1rem; font-size: .78rem; color: var(--ap-texte-2); border-top: 1px solid var(--ap-trait-2); background: #FAFBFA; }
kbd.ap-touche { background: #fff; border: 1px solid var(--ap-trait); border-bottom-width: 2px; border-radius: 6px; color: var(--ap-texte); padding: 0 .35rem; font-family: var(--ap-chiffres); font-size: .75rem; }

/* ---- Voile de confidentialité (inactivité) --------------------------- */
#ap-voile { position: fixed; inset: 0; z-index: 2300; display: none; align-items: center; justify-content: center; flex-direction: column; gap: 1rem; text-align: center; color: #fff; background: rgba(35,31,32,.55); backdrop-filter: blur(18px) saturate(.6); -webkit-backdrop-filter: blur(18px) saturate(.6); cursor: pointer; }
#ap-voile.actif { display: flex; animation: ap-fondu 300ms ease; }
#ap-voile .ap-voile-cercle { width: 88px; height: 88px; border-radius: 50%; background: var(--ap-vert); display: grid; place-items: center; box-shadow: 0 0 0 12px rgba(84,185,72,.18), 0 0 0 26px rgba(84,185,72,.08); }
#ap-voile strong { font-size: 1.35rem; font-weight: 500; }
#ap-voile span { opacity: .8; font-size: .95rem; }
@keyframes ap-fondu { from { opacity: 0; } }

/* ---- Puce de sécurité dans la barre du haut --------------------------- */
.ap-puce-securite { display: inline-flex; align-items: center; gap: .4rem; font-size: .76rem; font-weight: 500; color: var(--ap-vert-fonce); background: var(--ap-vert-clair); border-radius: 999px; padding: .25rem .7rem .25rem .5rem; margin-right: .75rem; white-space: nowrap; }
.ap-puce-securite::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--ap-vert); box-shadow: 0 0 0 3px rgba(84,185,72,.25); }
.ap-puce-securite.partielle { color: #7A4100; background: #FEF3E0; }
.ap-puce-securite.partielle::before { background: #F9AB00; box-shadow: 0 0 0 3px rgba(249,171,0,.25); }

/* ---- Divers ----------------------------------------------------------- */
.scroll-to-top { border-radius: 50% !important; background: var(--ap-encre) !important; }
footer.sticky-footer { background: transparent !important; color: var(--ap-texte-2); }
.nav-tabs { border-bottom-color: var(--ap-trait-2); }
.nav-tabs .nav-link { border: 0; border-bottom: 3px solid transparent; color: var(--ap-texte-2); font-weight: 500; }
.nav-tabs .nav-link.active { color: var(--ap-vert-fonce); border-bottom-color: var(--ap-vert); background: transparent; }
.nav-pills .nav-link.active { background: var(--ap-vert-clair); color: var(--ap-encre); }
hr { border-top-color: var(--ap-trait-2); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #C8CCC8; border-radius: 10px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: #9AA09A; background-clip: padding-box; border: 2px solid transparent; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media print {
  .sidebar, .topbar, #ap-toasts, #ap-palette, #ap-voile, #ap-barre-chargement, .scroll-to-top { display: none !important; }
  body, #content-wrapper { background: #fff !important; }
  .card { box-shadow: none !important; border-color: #ccc !important; }
}

/* ---- Barre latérale AdminLTE (gabarit « WIP Dashboard ») ----------------- */
.main-sidebar, .main-sidebar .sidebar { background: var(--ap-encre) !important; }
.main-sidebar .brand-link, .main-sidebar .user-panel { border-bottom-color: rgba(255,255,255,.10) !important; }
.main-sidebar .user-panel .info a, .main-sidebar .brand-link { color: #fff !important; }
.nav-sidebar .nav-link { border-radius: 999px !important; color: rgba(255,255,255,.82) !important; margin-bottom: 2px; }
.nav-sidebar .nav-link .nav-icon { color: rgba(255,255,255,.55); }
.nav-sidebar .nav-link:hover { background: rgba(255,255,255,.07) !important; color: #fff !important; }
.nav-sidebar > .nav-item > .nav-link.active, .nav-pills.nav-sidebar .nav-link.active,
.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link.active { background: rgba(84,185,72,.18) !important; color: #fff !important; box-shadow: inset 3px 0 0 var(--ap-vert) !important; }
.nav-sidebar > .nav-item > .nav-link.active .nav-icon { color: var(--ap-vert) !important; }
.nav-sidebar .nav-treeview .nav-link.active, .sidebar-dark-primary .nav-treeview > .nav-item > .nav-link.active {
  background: transparent !important; color: var(--ap-vert) !important; box-shadow: none !important; font-weight: 500; }
.nav-sidebar .nav-treeview .nav-link { padding-left: 2.2rem; }
.main-sidebar .form-control-sidebar, .main-sidebar .btn-sidebar { background: rgba(255,255,255,.08) !important; border: 0 !important; color: #fff !important; border-radius: 999px !important; }
.main-sidebar .form-control-sidebar::placeholder { color: rgba(255,255,255,.55); }
.main-header.navbar { min-height: 56px; }
.btn.bg-teal, .bg-teal.btn { background: #fff !important; border: 1px solid var(--ap-trait) !important; color: var(--ap-vert-fonce) !important; }
.card-primary:not(.card-outline) > .card-header, .card-secondary:not(.card-outline) > .card-header { background: transparent !important; color: var(--ap-encre) !important; }
.card-primary:not(.card-outline) > .card-header .card-title, .card-secondary:not(.card-outline) > .card-header .card-title { color: var(--ap-encre) !important; font-weight: 500; }
.content-header h1 { font-weight: 500; letter-spacing: -.01em; }
.breadcrumb { background: transparent; }

/* ---- Pages de gestion (utilisateurs…) ---------------------------------- */
.ap-page .ap-entete { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: .5rem 0 .25rem; }
.ap-page .ap-entete h1 { font-size: 1.75rem; margin: 0; }
.ap-sous-titre { color: var(--ap-texte-2); margin: .25rem 0 0; }
.ap-retour { font-size: .85rem; font-weight: 500; text-decoration: none; display: inline-block; margin-bottom: .35rem; }
.ap-actions-entete { display: flex; gap: .5rem; flex-wrap: wrap; }
.ap-filtres { display: flex; align-items: center; gap: .75rem 1rem; flex-wrap: wrap; padding: 1rem 1.25rem; border-bottom: 1px solid var(--ap-trait-2); }
.ap-recherche { position: relative; flex: 1 1 280px; min-width: 220px; }
.ap-recherche i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--ap-texte-2); }
.ap-recherche .form-control { padding-left: 2.4rem; border-radius: 999px !important; height: 42px; }
.ap-segments { display: inline-flex; background: #F1F3F4; border-radius: 999px; padding: 3px; gap: 2px; }
.ap-segments a { padding: .4rem .9rem; border-radius: 999px; color: var(--ap-texte); font-weight: 500; font-size: .86rem; text-decoration: none; white-space: nowrap; }
.ap-segments a span { display: inline-block; min-width: 1.4em; margin-left: .3rem; padding: 0 .4em; border-radius: 999px; background: rgba(35,31,32,.08); font-size: .75rem; text-align: center; }
.ap-segments a.actif { background: #fff; color: var(--ap-encre); box-shadow: var(--ap-ombre-1); }
.ap-segments a.actif span { background: var(--ap-vert-clair); color: var(--ap-vert-fonce); }
.ap-tri { display: inline-flex; align-items: center; gap: .5rem; margin: 0; font-weight: 400; color: var(--ap-texte-2); font-size: .86rem; }
.ap-tri .custom-select { width: auto; border-radius: 999px !important; height: 38px; }
.ap-table td { padding-top: .8rem; padding-bottom: .8rem; }
.ap-table thead th a { color: inherit; text-decoration: none; }
.ap-table thead th a:hover { color: var(--ap-encre); }
.ap-personne { display: flex; align-items: center; gap: .75rem; }
.ap-personne strong { display: block; color: var(--ap-encre); font-weight: 500; }
.ap-personne small, .ap-contact small { display: block; color: var(--ap-texte-2); }
.ap-avatar { width: 38px; height: 38px; border-radius: 50%; flex: none; display: grid; place-items: center; font-weight: 500; font-size: .85rem; letter-spacing: .02em; background: var(--ap-vert-clair); color: var(--ap-vert-fonce); }
.ap-actions-ligne { white-space: nowrap; }
.ap-actions-ligne form { margin-left: .25rem; }
.ap-vide { text-align: center; color: var(--ap-texte-2); padding: 3rem 1rem !important; }
.ap-pagination { display: flex; justify-content: space-between; align-items: center; padding: .9rem 1.25rem; color: var(--ap-texte-2); font-size: .86rem; border-top: 1px solid var(--ap-trait-2); }
.ap-barre-actions { display: flex; justify-content: flex-end; gap: .5rem; position: sticky; bottom: 0; padding: .9rem 0; background: linear-gradient(transparent, var(--ap-fond) 35%); z-index: 2; }
.ap-note { color: var(--ap-texte-2); font-size: .86rem; background: var(--ap-vert-voile); border-radius: 10px; padding: .6rem .8rem; }
.ap-zone-compte { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.invalid-feedback { font-size: .82rem; }
