:root{--primary:#2c3e50;--sidebar:#1d283a;--accent:#2980b9;--bg:#f4f7fb;--border:#d9e2ec;--text:#243447;
--ok:#256029;--warn:#e65100;--bad:#b71c1c}
*{box-sizing:border-box}
body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}
.sidebar{position:fixed;inset:0 auto 0 0;width:255px;background:var(--sidebar);color:#fff;padding:16px 12px;overflow-y:auto;overflow-x:hidden;transition:width .18s ease}
.sidebar-header{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;padding:0 2px}
.sidebar-header-stacked{position:relative;flex-direction:column;padding:4px 2px 0;text-align:center}
.sidebar-header-stacked .sidebar-collapse-btn{position:absolute;top:0;right:2px}
.brand-logo-wrap{width:34px;height:34px;flex:0 0 34px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.sidebar-header-stacked .brand-logo-wrap{width:52px;height:52px;margin:0 auto 8px}
.brand-logo{display:block;width:100%;height:100%;object-fit:contain}
.brand-text{flex:1;min-width:0;overflow:hidden}
.sidebar-header-stacked .brand-text{flex:none;width:100%}
.brand{font-size:15px;font-weight:800;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-sub{margin:0;color:#8fb3d9;font-size:10px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-collapse-btn{flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:#ffffff14;border:1px solid #ffffff26;
  color:#c7dcec;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:transform .18s ease}
.sidebar-collapse-btn:hover{background:#ffffff26;color:#fff}
.brand-divider{border:0;border-top:1px solid #ffffff26;margin:12px 0 10px}
.nav-link{display:flex;align-items:center;color:#c7d4de;text-decoration:none;padding:9px 10px;border-radius:8px;
margin:2px 0;font-weight:500;font-size:13.3px;cursor:pointer;gap:11px;position:relative}
.nav-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-link:hover{background:#ffffff0f;color:#fff}
.nav-link.active{background:#34506e;color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #4C94D8;border-radius:6px;margin-right:4px}
.nav-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex:0 0 18px;
  color:inherit;background:none}
.nav-caret{margin-left:auto;flex:0 0 16px;display:flex;align-items:center;justify-content:center;
  color:#8296a8;transition:transform .15s}
.nav-group.open>.nav-link .nav-caret{transform:rotate(180deg);color:#c7d4de}
.nav-submenu{max-height:0;overflow:hidden;transition:max-height .15s;margin-left:21px;padding-left:14px;border-left:1px solid #ffffff45}
.nav-group.open .nav-submenu{max-height:400px;overflow:visible}
.nav-sub{display:flex;align-items:center;padding:11px 12px;margin:3px 4px 3px 0;font-size:12.8px;font-weight:500;
border-radius:8px;cursor:pointer;color:#aebdc9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-sub:hover{background:#ffffff0f;color:#fff}
.nav-sub.active{background:#34506e;color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #4C94D8;border-radius:6px}
.nav-logout{margin-top:14px;border-top:1px solid #ffffff26;padding-top:14px}

/* ---------- Sidebar repliée ---------- */
body.sidebar-collapsed .sidebar{width:68px}
body.sidebar-collapsed main{margin-left:68px}
body.sidebar-collapsed .brand-text,
body.sidebar-collapsed .nav-label,
body.sidebar-collapsed .nav-caret,
body.sidebar-collapsed .nav-submenu{display:none}
body.sidebar-collapsed .sidebar-header{justify-content:center}
body.sidebar-collapsed .sidebar-header-stacked .sidebar-collapse-btn{position:static;margin:0 auto 8px}
body.sidebar-collapsed .sidebar-header-stacked .brand-logo-wrap{width:36px;height:36px}
body.sidebar-collapsed .sidebar-collapse-btn{transform:rotate(180deg)}
body.sidebar-collapsed .nav-link.active{margin-right:0}
body.sidebar-collapsed .nav-link{justify-content:center;padding:10px 0}
.topbar{position:fixed;top:0;left:255px;right:0;height:60px;background:#fff;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;z-index:40;transition:left .18s ease}
.topbar-title{min-width:0;overflow:hidden}
.topbar-title h1{margin:0;font-size:16px;color:#1a1a2e;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-title p{margin:1px 0 0;font-size:11.5px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.page-actions{display:flex;justify-content:flex-end;gap:10px;margin-bottom:14px}
.params-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.params-search{position:relative;min-width:260px}
.params-search input{padding-left:34px;padding-right:10px}
.params-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#94a3b8;font-size:13px;pointer-events:none;display:flex;align-items:center}
.btn-outline{background:#fff;color:var(--sidebar);border:2px solid var(--sidebar);font-weight:600}
.btn-outline:hover{background:var(--sidebar);color:#fff}
.btn-new{background:var(--sidebar);color:#fff}
.btn-new:hover{background:#4C94D8}
.select-outline{border:1px solid var(--sidebar)}
.params-actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}
.card .pagination{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.listing-toolbar-row{display:flex;align-items:flex-end;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.listing-taux-group{display:flex;flex-direction:column;align-items:center;gap:5px}
.listing-taux-value{font-size:11.5px;color:#64748b;white-space:nowrap}
.section-banner{background:var(--sidebar);color:#fff;padding:11px 16px;border-radius:8px 8px 0 0;
  font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;margin:0}
.section-banner + .table-wrap{border:1px solid var(--border);border-top:0;border-radius:0 0 8px 8px}
/* Compensations EUI, Commissions EUI, Synthèse par entité : tableaux sans arrondi ni bordure */
#page-synthese-globale .section-banner,#page-synthese-commissions .section-banner,#page-synthese-entite .section-banner,
#page-synthese-globale .card,#page-synthese-commissions .card,#page-synthese-entite .card,
#page-synthese-globale .table-wrap,#page-synthese-commissions .table-wrap,#page-synthese-entite .table-wrap,
#page-synthese-globale table,#page-synthese-commissions table,#page-synthese-entite table{
  border-radius:0!important}
#page-synthese-globale .card,#page-synthese-commissions .card,#page-synthese-entite .card,
#page-synthese-globale .table-wrap,#page-synthese-commissions .table-wrap,#page-synthese-entite .table-wrap,
#page-synthese-globale table,#page-synthese-commissions table,#page-synthese-entite table{
  border:0!important;box-shadow:none!important}
.section-title-main{text-align:center;font-size:17px;font-weight:800;color:#1a1a2e;margin:0 0 16px}
.se-toolbar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.se-toolbar .se-select-wrap{flex:0 0 auto;min-width:220px}
/* Liste des entités : largeur ajustée au nom d'entité le plus long */
.se-toolbar #seEntiteSelect{width:auto;max-width:100%;padding-right:30px}
.se-toolbar .se-select-wrap label{margin-bottom:5px}
body.sidebar-collapsed .topbar{left:68px}
body.locked .topbar{display:none}
.topbar-user{display:flex;align-items:center;gap:10px;background:none;border:0;border-radius:10px;padding:6px 10px;cursor:pointer}
.topbar-user:hover{background:#f1f5f9}
.topbar-avatar{width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:var(--sidebar);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}
.topbar-user-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.35}
.topbar-user-name{font-size:13px;font-weight:700;color:#1a2733}
.topbar-user-role{font-size:11.5px;color:#64748b}
.topbar-user-entreprise{font-size:10.5px;color:#94a3b8}
.topbar-user-wrap{position:relative}
.user-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:8px;background:#fff;
  border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px #0000001f;min-width:230px;
  z-index:60;padding:6px}
.user-dropdown.open{display:block}
.user-dropdown-item{padding:9px 12px;border-radius:7px;cursor:pointer;font-size:13px;color:#243447;
  display:flex;align-items:center;gap:9px;white-space:nowrap}
.user-dropdown-item:hover{background:#f1f5f9}
.user-dropdown-item.danger{color:#b71c1c}
.user-dropdown-sep{border:0;border-top:1px solid var(--border);margin:6px 4px}

main{margin-left:255px;padding:82px 22px 50px;max-width:1400px;transition:margin-left .18s ease}
.app-footer{position:fixed;bottom:0;left:255px;right:0;background:#fff;border-top:1px solid var(--border);
  padding:7px 16px;text-align:center;font-size:10.5px;color:#94a3b8;line-height:1.5;z-index:30;transition:left .18s ease}
body.sidebar-collapsed .app-footer{left:68px}
body.locked .app-footer{display:none}
@media print{.app-footer{display:none}}
.page{display:none}.page.active{display:block}
.card{background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 18px #0000000d;padding:18px;margin-bottom:16px}
#page-pays .card,#page-entreprises .card,#page-utilisateurs .card,#page-etats-compensation .card,
#page-listing .card,#page-synthese-globale .card,#page-synthese-commissions .card,#page-synthese-entite .card{
  background:transparent;border:0;box-shadow:none;border-radius:0;padding:0;margin-bottom:0}
/* Dashboard et Maintenance : même fond blanc uni que les autres pages */
#page-dashboard .card,#page-maintenance .card{background:transparent;border:0;box-shadow:none;border-radius:0;padding:0;margin-bottom:22px}
body.flat-bg{background:#fff}
#page-pays th,#page-entreprises th,#page-utilisateurs th,#page-etats-compensation th,
#page-listing th,#page-synthese-globale th,#page-synthese-commissions th,#page-synthese-entite th{background:#fff}
.toolbar{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center}
label{display:block;font-weight:600;margin-bottom:5px;font-size:12.8px}
input,select,textarea{width:100%;padding:8px 10px;border:1px solid #cbd5e1;border-radius:7px;font:inherit;font-size:13px;background:#fff}
input:disabled,select:disabled{background:#f1f5f9;color:#64748b}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 16px}
.full{grid-column:1/-1}
button{border:0;border-radius:7px;padding:8px 14px;font-weight:600;font-size:13px;cursor:pointer}
.primary{background:var(--accent);color:#fff}
.secondary{background:#e8eef5;color:var(--primary)}
.success{background:#16a34a;color:#fff}
.success:hover{background:#128140}
.teal{background:#0d9488;color:#fff}
.teal:hover{background:#0b7c72}
.danger{background:#ffebee;color:#b71c1c}
button:disabled{opacity:.5;cursor:not-allowed}
.message{margin-top:12px;padding:9px 11px;border-radius:7px;display:none;font-size:13px}
.ok{display:block;background:#e8f5e9;color:#256029}
.err{display:block;background:#ffebee;color:#b71c1c}
.info{display:block;background:#e1f0fa;color:#0c5460}
.table-wrap{overflow:auto;max-height:65vh}
#page-listing .table-wrap{max-height:none;overflow-y:visible;overflow-x:hidden}
#page-synthese-globale .table-wrap,
#page-synthese-commissions .table-wrap,
#page-synthese-entite .table-wrap{max-height:none;overflow-y:visible}
#page-synthese-globale .table-wrap,#page-synthese-commissions .table-wrap,#page-synthese-entite .table-wrap{
  max-height:none;overflow:visible}
.sticky-hscroll{position:fixed;left:255px;right:0;overflow-x:auto;overflow-y:hidden;height:16px;background:#fff;
  z-index:35;display:none;border-top:1px solid var(--border);transition:left .18s ease}
body.sidebar-collapsed .sticky-hscroll{left:68px}
body.hscroll-on main{padding-bottom:80px}
.sticky-hscroll.show{display:block}
#listingHScrollInner{height:1px}
/* Tous les tableaux : un texte long ne rallonge pas la colonne, il est coupé
   avec « … » et s'affiche en entier dans une bulle au survol (voir app.js).
   Les états imprimés gardent le texte complet. */
main td{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.print-page td,body.printing-report main td{max-width:none;overflow:visible;text-overflow:clip}
@media print{main td{max-width:none;overflow:visible;text-overflow:clip}}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th,td{text-align:left;border-bottom:1px solid #e5e7eb;padding:7px 9px;vertical-align:top;white-space:nowrap}
#page-etats-compensation td{vertical-align:middle}
th{background:#eef3f8;color:var(--primary);position:sticky;top:0}
.col-right{text-align:right}
.row-total td{font-weight:700;background:#eef3f8}
.row-detail td{font-style:italic;color:#5b6b82}
/* Survol des lignes : même couleur dans tous les tableaux (hors états imprimés) */
main .page tbody tr:hover td,.bulk-table tbody tr:hover td{background:#DAE9F7}
.bulk-table tbody tr.row-selected td{background:#e6f4ea}
.bulk-table tbody tr.row-selected:hover td{background:#d9eedd}
.bulk-table td.cb-col,.bulk-table th.cb-col{width:34px;white-space:nowrap}
.btn-view{background:transparent;color:var(--sidebar);border:1px solid var(--sidebar)}
/* Hauteur de ligne identique dans tous les tableaux (alignée sur le Listing) :
   boutons, icônes et cases à cocher compacts, centrés verticalement. */
.bulk-table td{vertical-align:middle}
td .btn-view{padding:0 9px;font-size:12px;line-height:1.3;border-radius:5px}
/* Icônes, badges et cases à cocher tiennent dans la hauteur d'une ligne de texte :
   les lignes de tous les tableaux ont ainsi la même hauteur que celles du Listing. */
td .btn-icon-dl{padding:0 5px;vertical-align:middle}
td .btn-icon-dl svg{width:16px;height:16px;display:block}
td input[type=checkbox],th input[type=checkbox]{width:auto;padding:0;margin:0;vertical-align:middle}
td .badge{padding:1px 8px;line-height:1.3;vertical-align:middle}
.btn-view:hover{background:#eef1f5}
.bulk-bar{display:none;align-items:center;justify-content:space-between;background:transparent;
  border-bottom:3px solid var(--sidebar);color:var(--text);padding:10px 4px;font-size:13px}
.bulk-bar.show{display:flex}
.bulk-actions{display:flex;gap:8px;align-items:center;position:relative}
.bulk-actions .btn-outline-green{background:#fff;color:#16a34a;border:2px solid #16a34a;font-weight:600;padding:6px 14px}
.bulk-actions .btn-outline-green:hover{background:#16a34a;color:#fff}
.bulk-actions .bulk-delete{background:#fff;color:#dc2626;border:2px solid #dc2626;width:34px;height:34px;padding:0;
  display:flex;align-items:center;justify-content:center;font-size:14px}
.bulk-actions .bulk-delete:hover{background:#dc2626;color:#fff}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600}
.btn-chevron{margin-left:6px;font-size:13px;line-height:1;opacity:.85;vertical-align:-1px}
.dropdown-menu.align-right{left:auto;right:0}
.btn-icon-dl{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--sidebar);padding:4px 8px;line-height:1;border-radius:6px}
.btn-icon-dl:hover{background:#DAE9F7;color:#4C94D8}
.dropdown-wrap{position:relative;display:inline-block}
.dropdown-menu{display:none;position:absolute;top:100%;left:0;margin-top:4px;background:#fff;
  border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f;min-width:130px;z-index:60;padding:6px}
.dropdown-menu.open{display:block}
.dropdown-menu-item{padding:8px 12px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text);white-space:nowrap}
.dropdown-menu-item:hover{background:#f1f5f9}
.badge-super_admin{background:#fde7f3;color:#9d174d}
.badge-admin{background:#ede7f6;color:#4527a0}
.badge-collaborateur{background:#e0f2fe;color:#075985}
.badge-lecture_seule{background:#f1f5f9;color:#64748b}
.badge-actif{background:#e8f5e9;color:#256029}
.badge-bloque{background:#ffebee;color:#b71c1c}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:18px}

/* ---------- Dashboard ---------- */
.db-hero{margin-bottom:26px}
.db-welcome{font-size:26px;font-weight:800;color:var(--sidebar);margin:0 0 4px;letter-spacing:-.2px}
.db-sub{margin:0 0 16px;font-size:12.8px;color:#64748b}
.db-quick{display:flex;gap:12px;flex-wrap:wrap}
.db-quick-btn{display:inline-flex;align-items:center;gap:9px;background:#fff;color:var(--sidebar);
  border:1px solid var(--border);box-shadow:0 1px 3px #0f172a14;padding:9px 14px;font-size:12.8px}
.db-quick-btn:hover{border-color:var(--sidebar);background:#f8fafc}
.db-quick-btn:disabled{opacity:.5;cursor:not-allowed}
.db-quick-btn .btn-chevron{margin-left:0}
/* Menus Exporter de la barre de sélection (bas de page) : ouverture vers le haut, alignés à droite */
.bulk-actions .dropdown-menu{top:auto;bottom:100%;left:auto;right:0;margin:0 0 4px}
.db-quick-btn.db-quick-primary{background:var(--sidebar);color:#fff;border-color:var(--sidebar)}
.db-quick-btn.db-quick-primary:hover{background:#4C94D8;border-color:#4C94D8;color:#fff}
.db-quick-btn.db-quick-danger{background:#dc2626;color:#fff;border-color:#dc2626}
.db-quick-btn.db-quick-danger:hover{background:#b91c1c;border-color:#b91c1c;color:#fff}
/* Boutons des fenêtres modales : même mise en forme que les boutons du Dashboard */
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) button{display:inline-flex;align-items:center;gap:8px;
  border:1px solid var(--border);border-radius:7px;box-shadow:0 1px 3px #0f172a14;padding:9px 16px;font-size:12.8px;font-weight:600}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) :is(.secondary,.btn-outline){background:#fff;color:var(--sidebar)}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) :is(.secondary,.btn-outline):hover{border-color:var(--sidebar);background:#f8fafc}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) :is(.primary,.btn-new){background:var(--sidebar);color:#fff;border-color:var(--sidebar)}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) :is(.primary,.btn-new):hover{background:#4C94D8;border-color:#4C94D8}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) .danger{background:#dc2626;color:#fff;border-color:#dc2626}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) .danger:hover{background:#b91c1c;border-color:#b91c1c}
.modal-overlay :is(.modal-footer,.fiche-actions,.toolbar) button:disabled{opacity:.5;cursor:not-allowed}
.db-section-title{font-size:14.5px;font-weight:700;color:#1a2733;margin:0 0 10px}
.db-box{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px 18px}
.db-kpis{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:26px}
.db-label{font-size:11.5px;color:#64748b;margin-bottom:5px}
.db-big{font-size:24px;font-weight:700;color:#1a2733;margin-bottom:16px;font-variant-numeric:tabular-nums}
.db-val{font-size:14.5px;font-weight:600;color:#1a2733;display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}
.db-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.db-grid4{display:grid;grid-template-columns:1fr 1fr;gap:20px 18px;align-content:center}
.db-chip{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:5px;font-size:12px;font-weight:700}
.db-chip-up{background:#dcfce7;color:#15803d}
.db-chip-down{background:#fee2e2;color:#b91c1c}
.db-todo{display:grid;grid-template-columns:repeat(3,1fr);padding:0;margin-bottom:26px}
.db-todo-item{background:none;border:0;border-left:1px solid var(--border);border-radius:0;text-align:left;
  padding:14px 18px;font-weight:400;cursor:pointer}
.db-todo-item:first-child{border-left:0;border-radius:8px 0 0 8px}
.db-todo-item:last-child{border-radius:0 8px 8px 0}
.db-todo-item:hover{background:#f8fafc}
.db-todo-item .db-val{font-size:13px}
.db-ok{color:#16a34a;font-weight:700}
.db-warn{color:#d97706;font-size:10px}
.db-activity{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.db-act{background:#fff;border:1px solid var(--border);border-radius:8px;padding:24px 22px;display:flex;flex-direction:column;align-items:center;text-align:center}
.db-act-icon{margin-bottom:10px}
.db-act-title{font-size:14px;font-weight:700;color:#1a2733;margin:0 0 8px}
.db-act-body{font-size:12.8px;color:#475569;line-height:1.55;flex:1;width:100%}
.db-act-body p{margin:0 0 4px}
.db-muted{color:#94a3b8;font-size:12px}
.db-list{list-style:none;margin:0 0 6px;padding:0;text-align:left}
.db-list li{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid #eef1f5}
.db-list li:last-child{border-bottom:0}
.db-act-btn{margin-top:16px;width:100%;background:#fff;color:var(--sidebar);border:1px solid var(--sidebar);font-weight:600;padding:7px 12px}
.db-act-btn:hover{background:var(--sidebar);color:#fff}
@media (max-width:1000px){
  .db-kpis,.db-activity{grid-template-columns:1fr}
  .db-todo{grid-template-columns:1fr}
  .db-todo-item{border-left:0;border-top:1px solid var(--border)}
  .db-todo-item:first-child{border-top:0}
}
.kpi-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px 18px;box-shadow:0 4px 18px #0000000d;display:flex;gap:12px;align-items:center}
.kpi-icon{width:46px;height:46px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;flex:0 0 46px}
.kpi-value{font-size:20px;font-weight:700;color:#1a1a2e}
.kpi-label{font-size:11.5px;color:#64748b}
.modal-overlay{position:fixed;inset:0;background:#0f172acc;display:none;align-items:center;justify-content:center;padding:20px;z-index:50}
.modal-overlay.open{display:flex}
.modal{background:#fff;border-radius:12px;max-width:600px;width:100%;max-height:90vh;overflow:auto}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);position:sticky;top:0;background:#fff}
.modal-header h3{margin:0;font-size:15px;color:var(--primary)}
.modal-close{background:none;color:#64748b;font-size:20px;line-height:1;padding:4px 8px}
.modal-body{padding:18px}
.modal-footer{display:flex;gap:10px;justify-content:flex-end;padding:14px 18px;border-top:1px solid var(--border)}
/* Fiches (Voir) : données listées verticalement à gauche, boutons en dessous */
.modal-fiche{max-width:520px}
.fiche{margin:0;display:flex;flex-direction:column}
.fiche-row{display:flex;gap:14px;padding:8px 0;border-bottom:1px solid #eef1f5;font-size:13px}
.fiche-row dt{flex:0 0 130px;color:#64748b;font-weight:600}
.fiche-row dd{margin:0;flex:1;min-width:0;color:var(--text);word-break:break-word}
.fiche-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap;font-size:12.5px;color:#374151}
.pg-left,.pg-right{display:flex;align-items:center;gap:10px}
.pg-group{display:inline-flex;border:1px solid #cbd5e1;border-radius:4px;overflow:hidden;background:#fff}
.pg-group button{border:0;border-left:1px solid #cbd5e1;border-radius:0;background:#fff;color:#374151;
  padding:4px 9px;min-width:28px;font-size:12.5px;font-weight:500;line-height:1.3}
.pg-group > :first-child{border-left:0}
.pg-group button:hover:not(:disabled):not(.active){background:#f1f5f9}
.pg-group button.active{background:var(--sidebar);color:#fff;font-weight:600}
.pg-group button:disabled{color:#b8c2cc;cursor:default;background:#f8fafc}
.pg-group .pg-nav{font-size:15px;padding:2px 9px}
.pg-ellipsis{border-left:1px solid #cbd5e1;padding:4px 7px;color:#94a3b8}
.confirm-modal{max-width:420px}
.confirm-icon{width:64px;height:64px;margin:0 auto 18px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;border:2px solid var(--ok);color:var(--ok)}
.confirm-icon.warn{border-color:var(--warn);color:var(--warn)}
.confirm-icon.danger{border-color:var(--bad);color:var(--bad)}
.confirm-message{font-size:14.5px;color:#243447;font-weight:600;margin:0 0 6px;line-height:1.5}
body.locked .sidebar,body.locked main{display:none!important}
#loginScreen{position:fixed;inset:0;z-index:2000;display:none;background:#fff}
body.locked #loginScreen{display:flex}

.login-split{display:flex;width:100%;height:100%}

/* ---------- Panneau gauche (présentation) ---------- */
.login-left{position:relative;flex:1.15;min-width:0;overflow:hidden;display:flex;align-items:center;
  background:linear-gradient(160deg,#141c29 0%,var(--sidebar) 55%,#26324a 100%);color:#eaf1f7}
.login-blob{position:absolute;border-radius:50%;background:#ffffff10;pointer-events:none}
.login-blob-1{width:230px;height:230px;top:-70px;left:-70px}
.login-blob-2{width:320px;height:320px;bottom:-140px;right:-90px;background:#2980b91a}
.login-left-content{position:relative;z-index:1;padding:56px 60px 56px 100px;max-width:620px}
.login-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 16px;border-radius:999px;
  background:#ffffff14;border:1px solid #ffffff33;color:#bcd6ea;font-size:11px;font-weight:700;
  letter-spacing:.4px;margin-bottom:26px}
.login-hero-title{font-size:34px;line-height:1.22;font-weight:800;color:#fff;margin:0 0 16px}
.login-hero-title span{color:#5aa9dd}
.login-hero-sub{font-size:14px;line-height:1.65;color:#b7c8d4;margin:0 0 30px;max-width:480px}
.login-features{list-style:none;margin:0 0 40px;padding:0;display:flex;flex-direction:column;gap:14px}
.login-features li{display:flex;align-items:center;gap:13px;font-size:13.5px;color:#d9e6ee}
.login-feature-icon{flex:0 0 34px;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;
  justify-content:center;background:#ffffff14;border:1px solid #ffffff26;color:#7fc0ec}

.login-illustration{display:flex;gap:14px;align-items:flex-end}
.login-illu-card{background:#ffffff0f;border:1px solid #ffffff22;border-radius:12px;backdrop-filter:blur(2px)}
.login-illu-bars{display:flex;align-items:flex-end;gap:7px;padding:16px;height:96px;width:150px}
.login-illu-bar{flex:1;border-radius:3px 3px 0 0;background:#ffffff40}
.login-illu-bar-accent{background:#5aa9dd}
.login-illu-lines{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:18px;height:96px;width:110px}
.login-illu-line{display:block;height:6px;border-radius:3px;background:#ffffff33}

/* ---------- Panneau droit (formulaire) ---------- */
.login-right{flex:1;min-width:340px;display:flex;align-items:center;justify-content:center;
  padding:40px;background:#fff}
.login-right-inner{width:100%;max-width:360px;text-align:center}
.login-card-box{padding:36px 32px 30px;margin-bottom:22px}
.login-logo{width:110px;height:110px;margin:0 auto 22px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.login-logo img{display:block;width:100%;height:100%;object-fit:contain}
.login-logo span{width:100%;height:100%;border-radius:12px;background:linear-gradient(135deg,#2980b9,#102a2f);
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;letter-spacing:.5px}
.login-title{font-size:22px;font-weight:800;color:#1a2733;margin:0}
.login-subtitle{color:#64748b;font-size:12.8px;margin:8px 0 26px}
.login-label{display:block;text-align:left;font-size:12.5px;font-weight:600;color:#374151;margin:0 0 6px}
.login-field{display:flex;align-items:stretch;background:#eef1f5;border:1.5px solid #c7d0da;border-radius:8px;
  margin-bottom:16px;overflow:hidden}
.login-field:focus-within{border-color:var(--sidebar);background:#fff;box-shadow:0 0 0 3px #1d283a1f}
.login-field-icon{width:40px;flex:0 0 40px;display:flex;align-items:center;justify-content:center;color:#94a3b8}
.login-field input{border:0;border-radius:0;background:transparent;padding:11px 4px;font-size:14px;flex:1;min-width:0;color:#1a2733}
.login-field input:-webkit-autofill,
.login-field input:-webkit-autofill:hover,
.login-field input:-webkit-autofill:focus{
  -webkit-text-fill-color:#1a2733;transition:background-color 9999s ease-in-out 0s;box-shadow:0 0 0 1000px #eef1f5 inset}
.login-field:focus-within input:-webkit-autofill{box-shadow:0 0 0 1000px #fff inset}
.login-field input:focus{outline:none}
.login-field-toggle{flex:0 0 40px;background:transparent;border:0;color:#94a3b8;display:flex;
  align-items:center;justify-content:center;cursor:pointer;padding:0}
.login-field-toggle:hover{color:#475569}
.login-submit{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;padding:13px;
  background:var(--sidebar);color:#fff;border:0;border-radius:8px;font-weight:700;font-size:14px;cursor:pointer;margin-top:4px}
.login-submit:hover{background:#0c1f27}
.login-submit:disabled{opacity:.6;cursor:not-allowed}
.login-error{display:none;text-align:left;background:#fdecea;color:#b71c1c;padding:10px 12px;border-radius:8px;
  font-size:12.5px;margin-bottom:16px;line-height:1.5}
.login-error.show{display:block}
.login-footer{margin-top:28px;font-size:11px;color:#94a3b8;line-height:1.6}

@media (max-width:900px){
  .login-left{display:none}
  .login-right{flex:1;min-width:0}
}
.hidden{display:none!important}
@media print{.sidebar,.toolbar,.modal-overlay,button{display:none!important}main{margin-left:0}}

/* ---------- Vue d'impression dédiée (rapports) ---------- */
#printArea{display:none}
body.printing-report .sidebar, body.printing-report .topbar, body.printing-report .page-actions,
body.printing-report main > .page, body.printing-report .kpi-grid{display:none!important}
body.printing-report #printArea{display:block!important}
body.printing-report main{margin-left:0;padding:0;max-width:none}
.print-page{max-width:1000px;margin:0 auto;font-family:Arial,sans-serif;color:#000}
.print-header-line{display:flex;justify-content:space-between;font-size:10px;color:#555;margin-bottom:14px}
.print-title{text-align:center;font-size:16px;font-weight:800;text-transform:uppercase;margin:0 0 10px}
.print-taux{text-align:center;font-size:12px;font-weight:700;margin:0 0 18px}
.print-page table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:20px}
.print-page th,.print-page td{border:0;border-bottom:1px solid #ccc;padding:5px 7px}
/* États imprimés : pas d'arrondi sur les bandeaux ni de bordure/quadrillage sur les tableaux
   (seuls les traits de séparation entre les lignes sont conservés, comme à l'écran). */
.print-page .section-banner{border-radius:0}
.print-page table{border:0}
.print-page th{background:#eef3f8}
.print-page .row-total td{font-weight:700;background:#eef3f8}
.print-signatures{display:flex;justify-content:space-between;margin-top:50px;font-size:12px;text-align:center}
.print-signatures div{flex:1}
.print-signatures .sign-line{margin-top:50px;border-top:1px solid #000;padding-top:4px;font-size:10px;color:#666}
@media print{
  body.printing-report .section-banner,body.printing-report .row-total td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  @page{size:A4;margin:12mm}
}


/* ---------- Volet latéral (fiche entreprise) ---------- */
.drawer-overlay{position:fixed;top:0;bottom:0;left:255px;right:0;z-index:45;overflow:hidden;
  background:rgba(15,23,42,0);visibility:hidden;transition:background .25s ease,visibility 0s linear .3s,left .18s ease}
body.sidebar-collapsed .drawer-overlay{left:68px}
.drawer-overlay.open{background:rgba(15,23,42,.28);visibility:visible;transition:background .25s ease,visibility 0s,left .18s ease}
.drawer{position:absolute;top:0;bottom:0;left:0;width:480px;max-width:94%;background:#fff;display:flex;flex-direction:column;
  box-shadow:12px 0 40px rgba(15,23,42,.14);border-radius:0;
  transform:translateX(-102%);transition:transform .3s cubic-bezier(.22,.8,.3,1)}
.drawer-overlay.open .drawer{transform:translateX(0)}
.drawer-head{display:flex;align-items:flex-start;gap:14px;padding:26px 24px 20px;border-bottom:1px solid #e5e7eb}
.drawer-avatar{flex:0 0 46px;height:46px;border-radius:0;background:#DAE9F7;color:var(--sidebar);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;letter-spacing:.5px}
.drawer-titles{flex:1;min-width:0}
.drawer-kicker{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#94a3b8;margin-bottom:3px}
.drawer-titles h3{margin:0;font-size:17px;font-weight:700;color:#1a2733;line-height:1.3;word-break:break-word}
.drawer-sub{font-size:12.5px;color:#64748b;margin-top:3px}
.drawer-close{flex:0 0 auto;background:transparent;border:0;color:#64748b;width:32px;height:32px;padding:0;border-radius:0;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.drawer-close:hover{background:#f1f5f9;color:var(--sidebar)}
.drawer-body{flex:1;overflow-y:auto;padding:18px 24px}
.drawer-body .message{margin-bottom:12px}
.drawer-section-title{font-size:11.5px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.6px;margin:6px 0 4px}
/* Lignes séparées par un trait fin, comme dans les tableaux (pas d'encart) */
.drawer-card{margin:0 0 20px;padding:0}
.drawer-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid #e5e7eb}
.drawer-row-icon{flex:0 0 18px;color:#4C94D8;padding-top:2px;display:flex}
.drawer-row-text{flex:1;min-width:0}
.drawer-row-text dt{font-size:11.5px;color:#94a3b8;margin-bottom:2px}
.drawer-row-text dd{margin:0;font-size:13.2px;color:#1a2733;font-weight:500;word-break:break-word}
.drawer-form{display:flex;flex-direction:column}
.drawer-field{padding:10px 0;border-bottom:1px solid #e5e7eb}
.drawer-field label{display:block;font-size:11.5px;color:#64748b;margin-bottom:5px;font-weight:600}
.drawer-foot{display:flex;gap:8px;flex-wrap:nowrap;align-items:center;padding:16px 24px;border-top:1px solid #e5e7eb;background:#fff}
.drawer-foot .drawer-foot-close{margin-left:auto}
.drawer-foot .db-quick-btn{padding:9px 13px;white-space:nowrap;flex:0 0 auto}
.drawer-hint{font-weight:400;color:#94a3b8}
@media (prefers-reduced-motion:reduce){.drawer,.drawer-overlay{transition:none}}

/* ---------- Page Entreprises : bouton « Accéder » (super administrateur) ---------- */
.ent-actions{display:inline-flex;align-items:center;gap:6px}
.ent-access-btn{display:inline-flex;align-items:center;gap:6px;background:var(--sidebar);color:#fff;
  padding:4px 11px;font-size:12px;border-radius:6px;line-height:1.4}
.ent-access-btn:hover:not(:disabled){background:#4C94D8}
.ent-access-btn.current{background:#e6f4ea;color:var(--ok);opacity:1;cursor:default}
/* Zone super administrateur (aucune entreprise choisie) : menus dédiés ;
   dans une entreprise : menus métier + Paramétrages · Utilisateurs */
body.no-entreprise .nav-business,body.no-entreprise #navGroupParams{display:none!important}
body:not(.no-entreprise) .nav-superzone{display:none!important}
/* Bouton « Retour » (au-dessus de Dashboard, une fois dans une entreprise) */
.nav-back-superadmin{background:#ffffff14;border:1px solid #ffffff26;color:#fff;margin-bottom:10px}
.nav-back-superadmin:hover{background:#4C94D8;border-color:#4C94D8}
body.sidebar-collapsed .nav-back-superadmin{border:0}
/* Liste des super admin : page Utilisateurs sans les colonnes Entreprise / Rôle */
#page-utilisateurs.sa-ctx .col-entreprise{display:none}
/* Dashboard zone super administrateur */
#page-sa-dashboard .card{background:transparent;border:0;box-shadow:none;border-radius:0;padding:0;margin-bottom:0}
#page-sa-dashboard th{background:#fff}
.sa-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:26px}
.sa-kpis .db-big{margin-bottom:0}
@media (max-width:1100px){.sa-kpis{grid-template-columns:repeat(2,1fr)}}
/* Rôle Propriétaire */
.badge-proprietaire{background:#fff4e0;color:#8a4b00}
/* Colonne « Accéder » (icône seule) */
th.col-acceder,td.col-acceder{width:1%;text-align:center}
/* ---------- Anneau de progression (opérations longues) ---------- */
#modalProgress{z-index:3000}
.progress-modal{max-width:360px;width:100%;text-align:center;padding:28px 26px 22px}
.progress-ring{display:block;margin:0 auto 14px}
.progress-ring-track{fill:none;stroke:#e5e7eb;stroke-width:10}
.progress-ring-arc{fill:none;stroke:var(--sidebar);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .35s ease}
.progress-ring-pct{font-size:24px;font-weight:700;fill:var(--sidebar);font-family:Segoe UI,Arial,sans-serif}
.progress-title{margin:0 0 6px;font-size:16px;color:var(--sidebar)}
.progress-step{margin:0 0 12px;font-size:13px;color:#475569;min-height:18px}
.progress-hint{margin:0;font-size:12px;color:#94a3b8}
/* ---------- Squelette des tableaux (chargement) ---------- */
@keyframes skel-shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
.skel-row td{padding:11px 9px!important;border-bottom:1px solid #f1f5f9}
.skel-row:hover td{background:transparent!important}
.skel-bar{display:block;height:11px;border-radius:5px;background:linear-gradient(90deg,#eef2f6 0,#dfe6ee 50%,#eef2f6 100%);
  background-size:800px 100%;animation:skel-shimmer 1.3s linear infinite}
.skel-row td:nth-child(3n+1) .skel-bar{width:70%}
.skel-row td:nth-child(3n+2) .skel-bar{width:90%}
.skel-row td:nth-child(3n) .skel-bar{width:55%}
.skel-block{display:flex;flex-direction:column;gap:12px;padding:18px 0}
/* ---------- Points qui rebondissent (boutons d'action courts) ---------- */
@keyframes btn-dot-bounce{0%,80%,100%{transform:translateY(0);opacity:.35}40%{transform:translateY(-4px);opacity:1}}
.btn-dots{display:inline-flex;align-items:center;gap:3px;margin-left:7px;vertical-align:middle}
.btn-dots i{width:5px;height:5px;border-radius:50%;background:currentColor;display:block;animation:btn-dot-bounce 1s infinite}
.btn-dots i:nth-child(2){animation-delay:.15s}
.btn-dots i:nth-child(3){animation-delay:.3s}
button.is-busy{pointer-events:none;cursor:progress}
