/* ==========================================================================
   CHA Management V4.3 — Design aligné sur Pointage RH
   Chargé APRÈS style.css. Menu bleu marine à rubriques dépliantes, entrée active
   en pastille bleue, cartes arrondies, première carte d'indicateur en bleu marine,
   barre du haut avec rubrique, titre, recherche et date.
   ========================================================================== */

:root{
  --ink:#10244a;
  --slate:#5b6b86;
  --page:#fbfcfe;
  --surface:#ffffff;
  --rule:#e4e9f1;
  --rule-strong:#d3dae6;
  --navy:#0f2a5a;
  --navy-2:#173a73;
  --brand:#1f5bdc;
  --brand-dark:#1a49b3;
  --brand-soft:#e9f0ff;
  --ok:#177a5b;      --ok-soft:#e5f4ee;
  --warn:#8f5b00;    --warn-soft:#fdf3dc;
  --bad:#c42b36;     --bad-soft:#fdecee;
  --r-card:16px; --r-field:10px; --r-chip:7px;

  /* compatibilité avec les anciennes variables */
  --blue:var(--brand); --blue2:var(--brand-dark); --soft:var(--brand-soft);
  --green:var(--ok); --red:var(--bad); --redsoft:var(--bad-soft);
  --amber:var(--warn); --ambersoft:var(--warn-soft);
  --bg:var(--page); --card:var(--surface); --text:var(--ink); --muted:var(--slate); --line:var(--rule);
}

html,body{
  font-family:"Inter","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  font-size:14.5px; line-height:1.5; color:var(--ink); background:var(--page);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{color:var(--ink);letter-spacing:-.01em}
table,.dx-tile .big,.dx-trio b,.dx-chip b,.money{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
a{color:var(--brand)}
.nav a,.btn,.badge,.sidebar a,.topbar a,.pagination a,.dx-box a,a.dx-box,a.dx-tile,.dx-chip{text-decoration:none}
a.dx-tile *{text-decoration:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- Disposition ---------- */
@media(min-width:761px){
  .app{grid-template-columns:296px minmax(0,1fr)}
}

/* ---------- Menu latéral : bleu marine, rubriques à icônes ---------- */
.sidebar,.sidebar-v4{background:var(--navy);border-right:0;color:#d6e0f7}
@media(min-width:761px){
  .sidebar-v4{display:flex;flex-direction:column;overflow:hidden;padding:18px 14px 14px}
  .sidebar-v4 .nav-v4{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 0 8px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}
  .sidebar-v4 .sidebar-user-v4{position:static!important;flex:0 0 auto;margin-top:6px}
}
.brand-v4{display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.12);padding:4px 6px 18px;margin-bottom:12px}
.brand-mark{flex:0 0 auto;display:grid;place-items:center;width:54px;height:54px;background:#fff;color:var(--navy);border-radius:14px;font-weight:800;font-size:15px;letter-spacing:.02em}
.brand-mark img{display:block;width:80%;height:auto}
.brand-v4 .brand-copy{min-width:0}
.brand-v4 .brand-copy strong{display:block;color:#fff;font-size:15px;font-weight:750;letter-spacing:.02em;white-space:nowrap}
.brand-v4 .brand-copy span{display:block;color:#aebfe6;font-size:10px;letter-spacing:.05em;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-menu-close{color:#fff}

.sidebar-v4 .nav-v4{display:flex;flex-direction:column;gap:6px}
.sidebar-v4 details.nav-group{border-radius:16px;margin:0;display:block}
.sidebar-v4 details.nav-group[open]{background:rgba(255,255,255,.07)}
.sidebar-v4 details.nav-group > summary.nav-group-head{
  display:flex;align-items:center;gap:12px;list-style:none;cursor:pointer;user-select:none;
  padding:13px 14px;border-radius:14px;color:#fff;font-size:14.5px;font-weight:650;
}
.sidebar-v4 details.nav-group > summary.nav-group-head::-webkit-details-marker{display:none}
.sidebar-v4 details.nav-group > summary.nav-group-head:hover{background:rgba(255,255,255,.06)}
.sidebar-v4 details.nav-group > summary.nav-group-head:focus-visible{outline-color:#9db9f5}
.nav-group-ico{display:grid;place-items:center;width:22px;height:22px;color:#b9caf0;flex:0 0 auto}
.nav-group-ico svg{width:22px;height:22px;display:block}
.nav-group-label{flex:1;min-width:0}
.sidebar-v4 .nav-chevron{display:grid;place-items:center;width:18px;height:18px;color:#8fa4d4;transform:rotate(-90deg);transition:transform .15s}
.sidebar-v4 .nav-chevron svg{width:18px;height:18px;display:block}
.sidebar-v4 details.nav-group[open] > summary .nav-chevron{transform:rotate(0)}
.sidebar-v4 details.nav-group > .nav-section-links{display:none}
.sidebar-v4 details.nav-group[open] > .nav-section-links{display:grid;gap:3px;margin:0 8px 10px 22px;padding-left:10px;border-left:1px solid rgba(255,255,255,.18)}
.sidebar-v4 .nav-v4 .nav-section-links a{
  position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;
  min-height:40px;padding:9px 10px;border-radius:9px;color:#cdd8f3;font-size:13.5px;font-weight:500;
}
.sidebar-v4 .nav-v4 .nav-section-links a:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar-v4 .nav-v4 .nav-section-links a.active{background:var(--brand);color:#fff;font-weight:650}
.sidebar-v4 .nav-v4 .nav-section-links a.active::before{display:none}
.nav-count{background:#f6a823;color:#3a2600;border-radius:999px;font-weight:750;font-size:12px;padding:1px 9px;min-width:24px;text-align:center}
.sidebar-v4 .nav-v4 .nav-section-links a.mobile-nav-logout{color:#ffd1d4!important;background:rgba(255,255,255,.06)!important}

.sidebar-user-v4{display:flex;align-items:center;gap:12px;border-top:1px solid rgba(255,255,255,.12)!important;padding-top:14px}
.sidebar-avatar{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.14)!important;color:#fff!important;font-weight:700}
.sidebar-user-text{flex:1;min-width:0}
.sidebar-user-v4 strong{display:block;color:#fff;font-size:13.5px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-v4 span{color:#aebfe6!important;font-size:11.5px!important}
.sidebar-user-v4 .sidebar-logout{flex:0 0 auto;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:#cdd8f3;border:1px solid rgba(255,255,255,.18)}
.sidebar-user-v4 .sidebar-logout svg{width:18px;height:18px;display:block}
.sidebar-user-v4 .sidebar-logout:hover{background:rgba(255,255,255,.1);color:#fff}

/* ---------- Barre du haut ---------- */
.topbar{min-height:82px;height:auto;padding:12px 32px;background:var(--surface);border-bottom:1px solid var(--rule);box-shadow:none;gap:20px}
.topbar-left{min-width:0}
.topbar-title{display:flex;flex-direction:column;min-width:0}
.topbar-eyebrow{font-size:12px;font-weight:750;letter-spacing:.09em;text-transform:uppercase;color:var(--brand)}
.topbar-title strong{font-size:24px;line-height:1.2;font-weight:750;letter-spacing:-.015em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{gap:16px}
.top-search{position:relative;display:flex;align-items:center;width:min(340px,30vw);height:46px;background:#f3f6fb;border:1px solid var(--rule);border-radius:12px;padding:0 14px;gap:10px;color:var(--slate)}
.top-search:focus-within{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(31,91,220,.14)}
.top-search svg{width:18px;height:18px;flex:0 0 auto}
.top-search input{flex:1;min-width:0;height:100%;border:0;background:transparent;font:inherit;font-size:15px;color:var(--ink);outline:0;padding:0}
.top-search input::placeholder{color:#7b8aa3}
.top-date{white-space:nowrap;color:var(--slate);font-size:14.5px}
.menu-toggle{background:var(--brand-soft);color:var(--brand-dark);border-radius:10px}
.menu-toggle svg,.mobile-logout-quick svg{width:20px;height:20px;display:block}
.notification-link{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;border-radius:10px;color:var(--slate);background:transparent}
.notification-link:hover{background:#f3f6fb;color:var(--ink)}
.notification-link svg{width:21px;height:21px;display:block}
.notif-badge{background:var(--bad);color:#fff;border-radius:999px;font-size:10.5px;font-weight:700}
.top-role{display:none}

/* ---------- Contenu ---------- */
.content{max-width:1480px;padding:26px 32px 44px}
.hero,.v4-workspace-head{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--rule)}
.hero h1,.v4-workspace-head h1{font-size:24px;line-height:1.2;font-weight:750;margin:0 0 4px}
.hero h1.is-hoisted{display:none}
.hero p,.v4-workspace-head p{color:var(--slate);font-size:14px;margin:0}
.v4-eyebrow{font-size:13px;color:var(--slate);font-weight:500}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:9px 16px;border-radius:var(--r-field);font-size:14px;font-weight:600;line-height:1.2;border:1px solid transparent;transition:background .12s,border-color .12s}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-dark)}
.btn-light{background:var(--brand-soft);color:var(--brand-dark)}
.btn-light:hover{background:#d9e5ff}
.btn-outline{background:#fff;color:var(--ink);border-color:var(--rule-strong)}
.btn-outline:hover{background:#f3f6fb;border-color:#b9c4d8}
.btn-success{background:var(--ok);color:#fff}
.btn-success:hover{background:#126148}
.btn-danger{background:#fff;color:var(--bad);border-color:#efb7bc}
.btn-danger:hover{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn-sm{min-height:34px;padding:6px 12px;font-size:13px}

/* ---------- Cartes ---------- */
.card,.chart-card,.panel{border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);box-shadow:none}
.card-head{padding:16px 22px;background:#fff;border-bottom:1px solid var(--rule);border-radius:var(--r-card) var(--r-card) 0 0}
.card-head h3{font-size:16px;font-weight:700}
.card-body{padding:20px 22px}
.card-body.table-wrap,.table-wrap{padding:0;overflow-x:auto}
.notice{border-left:3px solid var(--brand);background:var(--brand-soft);color:var(--ink);border-radius:var(--r-field);font-size:14px}
.notice.red{border-left-color:var(--bad);background:var(--bad-soft);color:#7a1f26}
.flash{border-radius:var(--r-field);font-size:14px;border:1px solid transparent}
.flash.ok{background:var(--ok-soft);color:#0f5a43;border-color:#bfe1d3}
.flash.error{background:var(--bad-soft);color:#7a1f26;border-color:#f1c9cd}
.danger-zone{border:1px solid #efb7bc;background:#fffafa;border-radius:var(--r-card)}
.danger-zone h3{color:var(--bad);font-size:16px}
.timeline-item{border-left:3px solid var(--brand);background:#f6f8fc;border-radius:var(--r-field)}

/* ---------- Tableaux ---------- */
table{font-size:14px}
th{background:#f6f8fc;color:var(--slate);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:11px 12px;border-bottom:1px solid var(--rule);white-space:nowrap}
td{padding:12px;border-bottom:1px solid #eef1f6;vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:#fafbfe}
td a{color:var(--brand);font-weight:650;text-decoration:none}
td a:hover{text-decoration:underline}
td:first-child a,td:first-child b{white-space:nowrap}
td.nowrap,.nowrap{white-space:nowrap}
.money-alert{color:var(--bad);font-weight:700}
td small,.muted{color:var(--slate)}
tr[data-row-href]{cursor:pointer}
tr[data-row-href]:hover td{background:var(--brand-soft)}
tr[data-row-href]:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.pagination{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px}
.pagination a{min-width:36px;height:36px;display:inline-grid;place-items:center;padding:0 10px;border:1px solid var(--rule-strong);border-radius:var(--r-field);background:#fff;color:var(--ink);font-weight:600}
.pagination a:hover{border-color:var(--brand)}
.pagination a.active{background:var(--brand);border-color:var(--brand);color:#fff}

/* ---------- Statuts ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--r-chip);font-size:12px;font-weight:650;line-height:1.4;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto}
.badge-green{background:var(--ok-soft);color:var(--ok)}
.badge-amber{background:var(--warn-soft);color:var(--warn)}
.badge-red{background:var(--bad-soft);color:var(--bad)}
.badge-blue{background:var(--brand-soft);color:var(--brand-dark)}
.badge-gray{background:#eceff5;color:#4a5a73}
.family-chip{display:inline-block;margin-top:3px;padding:1px 8px;border-radius:var(--r-chip);background:#eceff5;color:#4a5a73;font-size:12px;font-weight:600}

/* ---------- Formulaires ---------- */
.field label{font-size:13px;font-weight:650;color:var(--ink);margin-bottom:6px}
.field input,.field select,.field textarea,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{
  border:1px solid var(--rule-strong);border-radius:var(--r-field);background:#fff;color:var(--ink);font-size:14.5px;
}
.field input:not([type=checkbox]):not([type=radio]):not([type=file]),.field select{height:44px;padding:0 12px}
.field input:hover,.field select:hover,.field textarea:hover{border-color:#a9b8d2}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,91,220,.15)}
.form-section{border-bottom:1px solid var(--rule);padding:22px 24px}
.form-section h3{font-size:16px;font-weight:700;margin:0 0 14px;padding-left:10px;border-left:3px solid var(--brand);line-height:1.3}
.file-box{border:1px dashed var(--rule-strong);background:#f9fbfe;border-radius:var(--r-field)}
.actions{display:flex;gap:8px;flex-wrap:wrap;padding:16px 24px}

/* ---------- Connexion ---------- */
.login-page{background:linear-gradient(160deg,var(--navy) 0%,#17408a 100%);padding:24px}
.login-card{width:min(440px,100%);padding:0 30px 30px;border:0;border-radius:18px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.30)}
.login-card::before{content:"";display:block;height:150px;margin:0 -30px 22px;background:linear-gradient(to top,rgba(15,42,90,.45),rgba(15,42,90,0) 55%),url("/assets/cha_login.jpg") center 30%/cover no-repeat}
.login-brand{margin-bottom:22px}
.login-logo{display:block;width:132px;height:auto;margin:0 auto 8px}
.login-brand h1{font-size:22px;font-weight:750}
.login-brand p{color:var(--slate);margin:2px 0 0}
.login-card .btn-primary{min-height:46px;font-size:15px}
.login-card a{font-weight:600}
.verify-page{background:var(--page)}

.print-logo{display:inline-block;width:84px;height:auto;margin:0 0 4px}
.a4-report header .brand-mark{background:#fff;border:1px solid var(--rule)}

/* ---------- Installation de l'application ---------- */
.sidebar-install{display:flex;align-items:center;gap:10px;margin:8px 0 2px;padding:11px 14px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:rgba(255,255,255,.07);color:#fff;font-size:13.5px;font-weight:650}
.sidebar-install[hidden],.install-login[hidden],[data-install-app][hidden],[data-install-done][hidden],[data-install-todo][hidden]{display:none!important}
.sidebar-install:hover{background:rgba(255,255,255,.14)}
.sidebar-install svg,.install-login svg,.install-actions svg{width:18px;height:18px;flex:0 0 auto}
.install-login{width:100%;margin-top:14px}
.install-page{background:var(--page);min-height:100vh;padding:32px 18px}
.install-wrap{max-width:900px;margin:0 auto;display:grid;gap:18px}
.install-hero{display:flex;gap:26px;align-items:center;background:var(--navy);color:#fff;border-radius:22px;padding:30px 34px}
.install-hero img{flex:0 0 auto;width:124px;height:auto;background:#fff;border-radius:24px;padding:16px}
.install-hero h1{margin:0 0 8px;color:#fff;font-size:28px;font-weight:750}
.install-hero p{margin:0;color:#d3ddf6;font-size:15px}
.install-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}
.install-actions .btn-light{background:rgba(255,255,255,.14);color:#fff}
.install-actions .btn-light:hover{background:rgba(255,255,255,.22)}
.install-state{margin-top:16px!important;font-weight:650;color:#bff0d6!important}
.install-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.platform-card{background:#fff;border:1px solid var(--rule);border-radius:var(--r-card);padding:22px 22px 20px}
.platform-card.is-current{border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,91,220,.12)}
.platform-card h2{margin:0;font-size:19px;font-weight:750}
.platform-sub{margin:2px 0 12px;color:var(--slate);font-size:13px}
.platform-card ol{margin:0;padding-left:20px;display:grid;gap:9px;font-size:14px}
.install-notes{background:#fff;border:1px solid var(--rule);border-radius:var(--r-card);padding:22px 26px}
.install-notes h2{margin:0 0 8px;font-size:19px;font-weight:750}
.install-notes ul{margin:0;padding-left:20px;display:grid;gap:7px;font-size:14px;color:var(--ink)}
@media(max-width:860px){.install-steps{grid-template-columns:minmax(0,1fr)}.install-hero{flex-direction:column;align-items:flex-start;padding:24px}}

/* ---------- Fenêtres en modale ---------- */
.cha-modal{padding:0;border:0;border-radius:18px;width:min(1120px,96vw);height:min(92vh,980px);max-width:none;max-height:none;background:var(--surface);color:var(--ink);box-shadow:0 24px 70px rgba(15,42,90,.45);overflow:hidden}
.cha-modal[open]{display:flex;flex-direction:column}
.cha-modal::backdrop{background:rgba(15,42,90,.55)}
.cha-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px 12px 24px;border-bottom:1px solid var(--rule);background:#fff;flex:0 0 auto}
.cha-modal-head h2{margin:0;font-size:18px;font-weight:750;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cha-modal-close{flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--rule-strong);border-radius:var(--r-field);background:#fff;color:var(--slate);font-size:22px;line-height:1;cursor:pointer}
.cha-modal-close:hover{background:#f3f6fb;color:var(--ink)}
.cha-modal-frame{flex:1 1 auto;width:100%;border:0;background:var(--page)}
html.cha-modal-open{overflow:hidden}
body.is-modal{background:var(--page)}
body.is-modal .sidebar,body.is-modal .topbar,body.is-modal .mobile-nav-backdrop{display:none!important}
body.is-modal .app{display:block}
body.is-modal .content{max-width:none;padding:18px 22px 28px}
body.is-modal .hero{margin-bottom:14px;padding-bottom:12px}
body.is-modal .hero h1{display:none}
body.is-modal [data-modal-hide]{display:none}

/* ---------- V4.5.0 : taille réduite pour toute l'application ---------- */
html,body{font-size:13px}
@media(min-width:761px){.app{grid-template-columns:236px minmax(0,1fr)}.sidebar-v4{padding:12px 10px 10px}}
.brand-v4{padding:2px 4px 12px;margin-bottom:8px;gap:10px}
.brand-mark{width:40px;height:40px;border-radius:11px}
.brand-v4 .brand-copy strong{font-size:13.5px}
.brand-v4 .brand-copy span{font-size:9px}
.sidebar-v4 .nav-v4{gap:3px}
.sidebar-v4 details.nav-group{border-radius:12px}
.sidebar-v4 details.nav-group > summary.nav-group-head{padding:9px 11px;font-size:13px;gap:10px;border-radius:11px}
.nav-group-ico,.nav-group-ico svg{width:18px;height:18px}
.sidebar-v4 .nav-chevron,.sidebar-v4 .nav-chevron svg{width:15px;height:15px}
.sidebar-v4 details.nav-group[open] > .nav-section-links{margin:0 6px 7px 19px;padding-left:8px;gap:1px}
.sidebar-v4 .nav-v4 .nav-section-links a{min-height:31px;padding:6px 9px;font-size:12.5px;border-radius:8px}
.nav-count{font-size:11px;padding:0 7px;min-width:20px}
.sidebar-user-v4{padding-top:10px;gap:10px}
.sidebar-avatar{width:32px;height:32px}
.sidebar-user-v4 strong{font-size:12.5px}
.sidebar-user-v4 span{font-size:10.5px!important}
.sidebar-user-v4 .sidebar-logout{width:32px;height:32px}
.sidebar-install{padding:8px 11px;font-size:12.5px;margin:6px 0 2px}
.topbar{min-height:56px;padding:6px 22px;gap:14px}
.topbar-eyebrow{font-size:10px}
.topbar-title strong{font-size:17px}
.top-search{height:34px;width:min(260px,24vw);border-radius:9px;padding:0 11px}
.top-search input{font-size:13px}
.top-search svg{width:15px;height:15px}
.top-date{font-size:12.5px}
.notification-link{width:34px;height:34px}
.content{padding:14px 22px 22px}
.hero,.v4-workspace-head{margin-bottom:12px;padding-bottom:10px}
.hero h1,.v4-workspace-head h1{font-size:19px}
.hero p,.v4-workspace-head p{font-size:12.5px}
.btn{min-height:32px;padding:5px 12px;font-size:12.5px;border-radius:8px}
.btn-sm{min-height:28px;padding:3px 10px;font-size:12px}
.badge{font-size:11px;padding:2px 8px}
.card,.chart-card{border-radius:12px}
.card-head{padding:10px 16px;border-radius:12px 12px 0 0}
.card-head h3{font-size:14px}
.card-body{padding:14px 16px}
.notice,.flash{font-size:12.5px}
table{font-size:12.5px}
th{padding:7px 10px;font-size:10.5px}
td{padding:8px 10px}
.field label{font-size:12px;margin-bottom:4px}
.field input,.field select,.field textarea,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{font-size:13px;border-radius:8px}
.field input:not([type=checkbox]):not([type=radio]):not([type=file]),.field select{height:34px;padding:0 10px}
.form-section{padding:14px 18px}
.form-section h3{font-size:14px;margin-bottom:10px}
.actions{padding:12px 18px}
.pagination a{min-width:30px;height:30px;font-size:12.5px}
.cha-modal-head{padding:8px 10px 8px 18px}
.cha-modal-head h2{font-size:15px}
.cha-modal-close{width:32px;height:32px}
body.is-modal .content{padding:12px 16px 20px}
.install-hero h1{font-size:24px}
.platform-card ol,.install-notes ul{font-size:13px}

/* ---------- Tableau de bord compact (B : Direction et Mutuelle · C : autres rôles) ---------- */
.dx-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.dx-sel select{height:32px;min-width:170px;padding:0 28px 0 11px;border:1px solid var(--rule-strong);border-radius:9px;background-color:#fff;color:var(--ink);font:inherit;font-size:12.5px;cursor:pointer}
.dx-sel select:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,91,220,.14)}
.dx-link{color:var(--brand);font-weight:650;font-size:12.5px}
.dx-box{display:block;background:#fff;border:1px solid var(--rule);border-radius:12px;color:var(--ink);overflow:hidden}
.dx-gap{margin-top:12px}
.dx-box-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--rule)}
.dx-box-h h2{margin:0;font-size:13.5px;font-weight:700}
.dx-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.dx-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 7px;border:1px solid var(--rule);border-radius:999px;background:#fff;color:var(--ink);font-size:12.5px;font-weight:600}
.dx-chip:hover{border-color:#b9c9ee}
.dx-chip b{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--brand-soft);color:var(--brand-dark);font-size:12px}
.dx-chip.warn b{background:var(--bad-soft);color:var(--bad)}
.dx-kind{display:block;font-size:10.5px;color:var(--slate);margin-top:1px}
.dx-foot{display:flex;flex-wrap:wrap;gap:4px 20px;padding:9px 14px;border-top:1px solid var(--rule);font-size:12.5px;color:var(--slate);background:#fafbfe}
.dx-foot b{color:var(--ink)}
.dx-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:22px 14px;color:var(--slate);font-size:13px}
.dx-empty svg{width:18px;height:18px;color:var(--brand)}
td.num,th.num{text-align:right}
.dx-tiles{display:grid;gap:12px;margin:0 0 12px}
.dx-tiles-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.dx-tiles-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.dx-tile{padding:14px 16px}
a.dx-tile:hover{border-color:#b9c9ee}
.dx-tile.dark{background:var(--navy);border-color:var(--navy);color:#fff}
.dx-tile small{font-size:10.5px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:var(--slate)}
.dx-tile.dark small{color:#bccaee}
.dx-tile .big{font-size:30px;font-weight:750;line-height:1.1;margin:4px 0 2px}
.dx-tile .sub{font-size:12px;color:var(--slate)}
.dx-tile.dark .sub{color:#d3ddf6}
.dx-trio{display:flex;gap:18px;margin-top:6px}
.dx-trio b{display:block;font-size:20px;font-weight:750;line-height:1.2}
.dx-trio span{font-size:11px;color:var(--slate)}
.dx-prog{height:8px;border-radius:9px;background:#e8edf6;margin:8px 0 6px;overflow:hidden}
.dx-prog span{display:block;height:100%;background:var(--brand);border-radius:9px}

/* ---------- V4.5.1 : gestion des utilisateurs ---------- */
.um-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.um-tabs{display:inline-flex;padding:3px;background:#eef2f9;border-radius:10px}
.um-tabs a{padding:5px 14px;border-radius:8px;font-weight:650;color:var(--slate);text-decoration:none}
.um-tabs a.active{background:#fff;color:var(--brand-dark);box-shadow:0 1px 2px rgba(15,42,90,.14)}
.um-mail{display:block;color:var(--slate);font-size:11.5px;font-weight:400;margin-top:1px}
.um-role{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.um-table td:nth-child(3),.um-table td:nth-child(4){white-space:nowrap}
.um-role select{height:30px;min-width:170px;max-width:220px;padding:0 24px 0 9px;border:1px solid var(--rule-strong);border-radius:8px;background-color:#fff;color:var(--ink);font:inherit;font-size:12.5px}
.um-presence{display:block;margin-top:3px;font-size:11.5px;color:var(--slate)}
.um-presence.on{color:var(--ok);font-weight:650}
.um-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:flex-start}
.um-actions form{margin:0}
.row-more{position:relative}
.row-more>summary{list-style:none;cursor:pointer}
.row-more>summary::-webkit-details-marker{display:none}
.row-more>summary::after{content:"▾";margin-left:4px;font-size:10px}
.row-more[open]>summary::after{content:"▴"}
.row-more-body{display:grid;gap:8px;margin-top:8px;padding:10px;border:1px solid var(--rule);border-radius:10px;background:#f8faff;min-width:250px;text-align:left}
.row-more-body .btn{width:100%}
.um-reset{display:flex;gap:6px}
.um-reset input{flex:1;min-width:0;height:30px;padding:0 9px;border:1px solid var(--rule-strong);border-radius:8px;font-size:12.5px}
.um-reset .btn{width:auto}
.um-recent>summary{list-style:none;cursor:pointer;border-bottom:0}
.um-recent>summary::-webkit-details-marker{display:none}
.um-recent[open]>summary{border-bottom:1px solid var(--rule)}
.um-recent>summary h2::before{content:"▸";display:inline-block;margin-right:7px;color:var(--slate);font-size:11px}
.um-recent[open]>summary h2::before{content:"▾"}
.cha-dialog{padding:0;border:0;border-radius:14px;width:min(640px,94vw);max-height:92vh;overflow:auto;background:var(--surface);color:var(--ink);box-shadow:0 24px 70px rgba(15,42,90,.45)}
.cha-dialog::backdrop{background:rgba(15,42,90,.55)}
.cha-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 18px;border-bottom:1px solid var(--rule)}
.cha-dialog-head h2{margin:0;font-size:15px;font-weight:750}
.cha-dialog-body{padding:14px 18px}
.cha-dialog-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 18px;border-top:1px solid var(--rule);background:#fafbfe}
.cha-dialog .field small{display:block;margin-top:3px;font-size:11.5px}
.um-scope{margin:14px 0 0;padding:12px 14px;border:1px solid #c9dcff;border-radius:10px;background:var(--brand-soft)}
.um-scope[hidden]{display:none}
.um-scope legend{padding:0 6px;font-size:12.5px;font-weight:700;color:var(--brand-dark)}
.um-scope p{margin:0 0 8px;font-size:12px}
.um-scope-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.um-all{margin:0 0 8px;font-weight:700}
.um-picks{display:grid;gap:6px}
.um-pick{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--rule-strong);border-radius:8px;background:#fff;font-size:12.5px;cursor:pointer}
.um-pick:hover{border-color:var(--brand)}
.um-pick.is-disabled{background:#eef2f9;color:#8a97ab;cursor:default}
.um-pick.is-disabled:hover{border-color:var(--rule-strong)}
.um-scope textarea{width:100%;margin-top:6px;padding:8px 10px;border:1px solid var(--rule-strong);border-radius:8px;font:inherit;font-size:12.5px;resize:vertical;background:#fff}
.um-scope textarea:disabled{background:#eef2f9;color:#8a97ab}
@media(max-width:760px){.um-scope-grid{grid-template-columns:minmax(0,1fr)}.um-role{flex-wrap:wrap}}

/* ---------- V4.6.0 : rapport des montants approuvés ---------- */
.dx-bar-link{margin-left:auto}
.rp-actions{display:flex;flex-wrap:wrap;gap:8px}
.rp-form{padding:12px 14px;margin:0 0 12px}
.rp-fields{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px}
.rp-fields .field{margin:0;min-width:130px}
.rp-fields .field input,.rp-fields .field select{width:100%}
.rp-or{padding-bottom:9px;color:var(--slate);font-size:12px}
.rp-go{padding-bottom:0}
.rp-hint{margin:10px 0 0;font-size:12px;color:var(--slate)}
.rp-period{margin:0 0 10px;font-size:13px}
.rp-status{min-width:150px}
.rp-note{max-width:260px;color:var(--slate);font-size:12px}
.dx-tiles-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dx-tiles-4 .dx-tile .big{font-size:22px}
.dx-tiles-4 .dx-trio{gap:14px}
.dx-tiles-4 .dx-trio b{font-size:15px}
tr.rp-total td{font-weight:700;background:#f6f8fc}
@media(max-width:1100px){.dx-tiles-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.dx-tiles-4{grid-template-columns:minmax(0,1fr)}.rp-fields .field{min-width:calc(50% - 8px);flex:1}.rp-or{display:none}.dx-bar-link{margin-left:0;width:100%}}

/* ---------- V4.7.0 : reste du mois précédent et report ---------- */
.carry-card{margin:0 0 14px}
.carry-body{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:12px 14px}
.carry-figures{display:flex;flex-wrap:wrap;gap:8px 28px}
.carry-figures small{display:block;font-size:10.5px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:var(--slate)}
.carry-figures b{font-size:16px;font-weight:750}
.carry-figures b.is-neg,.rp-quota b.is-neg{color:var(--bad)}
.carry-action{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12.5px}
.carry-action form{margin:0}
.rp-quota{margin:0 0 12px;padding:9px 14px;border:1px solid var(--rule);border-radius:10px;background:#f6f8fc;font-size:12.5px}
@media(max-width:760px){.carry-figures{gap:8px 18px}.carry-action .btn{width:100%}}

/* ---------- V4.8.1 : rapprochement des montants approuvés ---------- */
.rp-base{min-width:150px}
.rp-rec>summary{list-style:none;cursor:pointer;border-bottom:0}
.rp-rec>summary::-webkit-details-marker{display:none}
.rp-rec[open]>summary{border-bottom:1px solid var(--rule)}
.rp-rec>summary h2::before{content:"▸";display:inline-block;margin-right:7px;color:var(--slate);font-size:11px}
.rp-rec[open]>summary h2::before{content:"▾"}
.rp-rec-body{padding:12px 14px}
.rp-rec-body>p{margin:0 0 10px;font-size:12.5px}
.rp-rec-title{font-weight:700;margin:14px 0 6px!important}
.rp-flag{color:var(--bad);font-weight:700;font-size:12.5px}
.rp-warn{padding:9px 12px;border:1px solid #f0d9a0;border-radius:10px;background:var(--warn-soft);color:#6b4500}

/* ---------- Adaptation ---------- */
@media(max-width:1180px){
  .top-search{width:min(260px,26vw)}
}
@media(max-width:1000px){.top-date{display:none}}
@media(max-width:760px){
  .dx-tiles-3,.dx-tiles-2{grid-template-columns:minmax(0,1fr)}
  .hide-m{display:none}
  .dx-box td,.dx-box th{padding:8px 6px}
  .dx-box td:first-child a{font-size:12px}
  .dx-box thead{display:none}
  .dx-box td:first-child a,.dx-box td:first-child b{white-space:normal;word-break:normal}
  .dx-box .badge{font-size:10.5px;padding:2px 6px;gap:4px}
  .dx-box .btn-sm{padding:3px 8px}
  .dx-sel,.dx-sel select{width:100%}
  .dx-foot{gap:4px 14px}
  .topbar{min-height:66px;padding:10px 14px;gap:10px}
  .topbar-title strong{font-size:19px}
  .top-search,.top-date{display:none}
  .content{padding:16px 14px 32px}
  .mobile-logout-quick{background:var(--bad-soft)!important;color:var(--bad)!important;border-radius:var(--r-field)!important;font-size:inherit!important}
  .hero h1,.v4-workspace-head h1{font-size:21px}
  .login-page{padding:14px}
  .login-card::before{height:120px}
  .cha-modal{width:100vw;height:100dvh;max-height:none;border-radius:0}
  .sidebar-v4{display:block;padding:18px 14px 24px}
  .sidebar-v4 .sidebar-user-v4{margin-top:18px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{
  /* rapports A4 : indicateurs en ligne et tableaux entièrement visibles sur la feuille */
  .report-kpis{grid-template-columns:repeat(5,minmax(0,1fr))!important}
  .report-cost-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .a4-report{overflow:visible!important}
  .a4-report table{width:100%;table-layout:auto;font-size:8.5px}
  .a4-report th,.a4-report td{padding:4px 5px;word-break:normal;overflow-wrap:break-word;white-space:normal}
  .a4-report th{font-size:7.5px;letter-spacing:0;white-space:nowrap}
  .a4-report tr{break-inside:avoid}
  .a4-report thead{display:table-header-group}
  html,body{background:#fff}
  .content{max-width:none;padding:0}
  .badge::before{display:none}
  body.is-modal .content{padding:0}
}
