

:root {

  --font-body:    'Segoe UI', 'Segoe UI Variable', system-ui, -apple-system, sans-serif;
  --font-display: var(--font-body);
  --font-num:     var(--font-body);

  --ink:           #3A3F44;
  --ink-soft:      #5E6368;
  --ink-muted:     #6E7379;
  --surface:       #FFFFFF;
  --surface-alt:   #FAFBFC;
  --surface-sunk:  #E9EBEF;
  --border:        #E3E5EA;
  --border-strong: #CFD3DB;

  --accent:       #DFB9A4;
  --accent-hover: #CFA48D;
  --accent-press: #BF9078;
  --accent-ink:   #4A3428;   
  --accent-pale:  #F6EAE2;
  --accent-line:  #B98565;   
  --accent-text:  #A9714F;   
  --accent-grad:  none;

  --brand:       var(--accent);
  --brand-hover: var(--accent-hover);
  --brand-press: var(--accent-press);
  --brand-pale:  var(--accent-pale);
  --brand-text:  var(--accent-text);
  --accent-soft: var(--accent-line);

  --neutral-warm:      #E7DED3;
  --neutral-warm-line: #D6C7B6;
  --neutral-warm-text: #6B563F;
  --copper:       var(--accent-line);
  --copper-hover: var(--accent-press);
  --copper-pale:  var(--neutral-warm);
  --copper-text:  var(--accent-text);

  --focus-ring: var(--ink);

  
  --navy:        var(--ink);
  --navy-soft:   var(--ink-soft);
  --navy-pale:   var(--surface-alt);
  --grey-bg:     var(--surface-alt);
  --grey-card:   var(--surface);
  --grey-border: var(--border);
  --grey-mid:    var(--ink-muted);
  --grey-txt:    var(--ink-muted);
  --ocre:        var(--ink-soft);
  --ocre-pale:   var(--surface-alt);
  --ocre-mid:    var(--ink-muted);
  --sienna:      var(--ink);
  --sienna-pale: var(--surface-alt);
  --blue-light:  var(--ink-muted);
  --blue-pale:   var(--surface-alt);

  
  --ok:          #3E6149;
  --ok-pale:     #DEE9E0;
  --bad:         #7C463C;
  --bad-pale:    #F0DCD8;
  --neutral:     #5E6368;
  --neutral-pale:#E9EBEF;

  --success:     var(--ok);
  --success-pale:var(--ok-pale);
  --red:         var(--bad);
  --red-pale:    var(--bad-pale);
  --warn:        #6E5A2E;
  --warn-pale:   #F0E7D3;


  --ink-solid: #3A3F44;
  --ok-solid:  #3E6149;
  --red-solid: #7C463C;

  
  --radius-sm:  4px;   
  --radius-md:  5px;   
  --radius-lg:  6px;   
  --radius-xl:  8px;   
  --radius-2xl: 10px;  

  --shadow-sm: 0 1px 3px rgba(58,63,68,.08);
  --shadow-md: 0 6px 20px rgba(58,63,68,.08);
  --shadow-lg: 0 16px 40px rgba(58,63,68,.10);
  --shadow-nav: none;

  
  --icon-stroke: 2.5;
  --icon-xs: 14px;  
  --icon-sm: 16px;  
  --icon-md: 20px;  
  --icon-lg: 24px;  

  --accent-text-warm: var(--ink);
}

:root[data-theme="dark"] {
  --ink:           #E9EAEC;
  --ink-soft:      #C3C6CB;
  --ink-muted:     #9498A0;
  --surface:       #1C1E21;
  --surface-alt:   #26292D;
  --surface-sunk:  #2E3136;
  --border:        #34373C;
  --border-strong: #464A51;

  --accent:       #DFB9A4;
  --accent-hover: #E8C7B4;
  --accent-press: #CFA48D;
  --accent-ink:   #2A1D16;
  --accent-pale:  #3A2E28;
  --accent-line:  #C99977;
  --accent-text:  #E3A57D;
  --accent-grad:  none;

  --neutral-warm:      #3D3229;
  --neutral-warm-line: #544435;
  --neutral-warm-text: #E8C9A8;

  --ok:          #7FBF98;
  --ok-pale:     #1E3328;
  --bad:         #E08A79;
  --bad-pale:    #3A2420;
  --neutral:     #A8ACB1;
  --neutral-pale:#2C2F33;

  --warn:        #D9B872;
  --warn-pale:   #3A3020;

  --shadow-sm: 0 1px 3px rgba(0,0,0,.4);
  --shadow-md: 0 6px 20px rgba(0,0,0,.45);
  --shadow-lg: 0 16px 40px rgba(0,0,0,.5);
}

html, body, input, select, textarea, button { font-family: var(--font-body); }

.amount, .money, td.num, .ref {
  font-family: var(--font-num); font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1; letter-spacing:0;
}

a               { color: var(--accent-text); text-underline-offset: 2px; }
a:hover         { color: var(--ink); }
::selection     { background: var(--neutral-warm); color: var(--ink); }

* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:var(--font-body); background:var(--surface); color:var(--ink); min-height:100vh; font-size:14px; line-height:1.55; -webkit-font-smoothing:antialiased; transition:background .2s ease, color .2s ease; }

h1, h2, h3, .modal-top h2, .section-head h2, .sc-head h2, .section-title,
.t-name, .u-name, .tenant-name, .bc-name, .rev-tenant {
  font-family: var(--font-display);
}

.kpi-val, .t-total, .m-total, .h-amount, .modal-amount-value, .loyer-chip,
.t-loyer, .stat-card .s-val, .bar-val, .rev-data-val, .dash-alert-count,
.day-input {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
}

.btn, .badge, .role-chip, .date-tab, .month-chip, .modal-amount-label,
.rev-count, .bc-count, .toggle-btn, .form-group label, .dash-activity-title,
.history-table th, .period-label, .batch-section-title, .filter-label,
.t-table th, .m-table th {
  font-family: var(--font-body);
}

:focus-visible { outline:2px solid var(--accent); outline-offset:2px; border-radius:4px; }

.sidebar {
  position:fixed; top:0; left:0; bottom:0; width:248px; z-index:200;
  background:var(--surface); border-right:1px solid var(--border);
  display:flex; flex-direction:column;
  font-family:'Segoe UI', system-ui, -apple-system, sans-serif;
}
.sidebar-brand { display:flex; align-items:center; gap:12px; padding:18px 20px; }
.brand-mark { width:42px; height:42px; flex-shrink:0; border-radius:var(--radius-sm); }
.sidebar-brand-text { display:flex; flex-direction:column; line-height:1.3; }
.sidebar-brand-name { font-size:19px; font-weight:800; color:var(--ink); letter-spacing:-.2px; }
.sidebar-brand-tag { font-size:12.5px; font-weight:600; color:var(--grey-txt); }

.sidebar-links { flex:1; overflow-y:auto; padding:10px 12px; display:flex; flex-direction:column; gap:2px; }
.sidebar-links a {
  display:flex; align-items:center; gap:10px;
  color:var(--grey-txt); text-decoration:none; font-size:13.5px; font-weight:600;
  padding:10px 12px; border-radius:0 var(--radius-md) var(--radius-md) 0;
  border-left:3px solid transparent; transition:background .15s, color .15s, border-color .15s;
}
.sidebar-links a:hover { background:var(--surface-alt); color:var(--ink); }
.sidebar-links a.active { background:var(--neutral-warm); color:var(--neutral-warm-text); border-left-color:var(--neutral-warm-text); font-weight:700; }
.sidebar-links a .icon { flex-shrink:0; }
.nav-badge {
  margin-left:auto; background:var(--red-solid); color:#fff; font-size:11px; font-weight:700;
  line-height:1; min-width:18px; height:18px; border-radius:var(--radius-sm);
  display:inline-flex; align-items:center; justify-content:center; padding:0 5px;
}

.session-icon-btn {
  display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
  border-radius:var(--radius-lg); border:1px solid var(--border); background:var(--surface);
  color:var(--ink-soft); cursor:pointer; text-decoration:none; flex-shrink:0;
  transition:background .15s, color .15s;
}
.session-icon-btn:hover { background:var(--surface-alt); color:var(--ink); }

.theme-icon-dark { display:none; }
:root[data-theme="dark"] .theme-icon-light { display:none; }
:root[data-theme="dark"] .theme-icon-dark { display:inline-flex; }

.session-avatar-link { display:inline-flex; text-decoration:none; flex-shrink:0; }
.session-avatar {
  width:34px; height:34px; border-radius:var(--radius-xl); display:flex; align-items:center;
  justify-content:center; font-family:var(--font-display); font-size:13px; font-weight:700;
  color:var(--ink); background:var(--surface-alt); border:1px solid var(--border); flex-shrink:0;
}
.session-avatar.admin   { background:var(--accent-pale); color:var(--accent-text); border-color:rgba(185,133,101,.25); }
.session-avatar.lecteur { color:var(--grey-txt); }
.session-avatar-img { width:100%; height:100%; object-fit:cover; border-radius:inherit; }

.sidebar-session { padding:14px 12px 16px; border-top:1px solid var(--border); }
.sidebar-session-label {
  display:block; font-size:11px; font-weight:700; color:var(--grey-txt);
  text-transform:uppercase; letter-spacing:.7px; padding:0 4px 10px;
}
.sidebar-session-user {
  display:flex; align-items:center; gap:10px; padding:6px 4px; margin-bottom:8px;
  border-radius:var(--radius-md); text-decoration:none; transition:background .15s;
}
.sidebar-session-user:hover { background:var(--surface-alt); }
.sidebar-session-name {
  flex:1; min-width:0; font-size:13px; font-weight:700; color:var(--ink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sidebar-session-actions { display:flex; gap:8px; padding:0 4px; }

.icon { flex-shrink:0; stroke-width:var(--icon-stroke); vertical-align:-3px; }
.icon-xs { width:var(--icon-xs); height:var(--icon-xs); }
.icon-sm { width:var(--icon-sm); height:var(--icon-sm); }
.icon-md { width:var(--icon-md); height:var(--icon-md); }
.icon-lg { width:var(--icon-lg); height:var(--icon-lg); }

.mobile-topbar-toggle {
  display:none;
  position:fixed; top:12px; left:12px; z-index:210;
  flex-direction:column; justify-content:center; align-items:center; gap:4px;
  width:44px; height:44px; padding:8px;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm);
  cursor:pointer; box-shadow:var(--shadow-sm);
}
.mobile-topbar-toggle span { display:block; height:2px; width:20px; background:var(--ink); border-radius:2px; transition:transform .18s, opacity .18s; }
.mobile-topbar-toggle[aria-expanded="true"] span:nth-child(1) { transform:translateY(6px) rotate(45deg); }
.mobile-topbar-toggle[aria-expanded="true"] span:nth-child(2) { opacity:0; }
.mobile-topbar-toggle[aria-expanded="true"] span:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }
.sidebar-scrim { display:none; position:fixed; inset:0; background:rgba(58,63,68,.4); z-index:199; }

.impersonation-banner {
  display:flex; align-items:center; justify-content:center; gap:16px; flex-wrap:wrap;
  padding:10px 16px; background:var(--warn-pale); color:var(--warn);
  border-bottom:1px solid rgba(110,90,46,.3); font-size:13px; font-weight:600; text-align:center;
}
.impersonation-banner form { margin:0; }
body.impersonating .sidebar { top:42px; }
body.impersonating .mobile-topbar-toggle { top:54px; }

@media (max-width:860px) {
  .mobile-topbar-toggle { display:flex; }
  .sidebar {
    transform:translateX(-100%); transition:transform .2s ease;
    box-shadow:var(--shadow-lg); top:0; height:100vh; width:264px;
  }
  .sidebar.open { transform:translateX(0); }
  .sidebar-scrim.open { display:block; }
  .sidebar-brand { padding-top:60px; }
  body.impersonating .sidebar { height:calc(100vh - 42px); }
}

.main-area { margin-left:248px; }

.container { max-width:1800px; margin:0 auto; padding:32px 40px 48px; }
@media (max-width:860px) { .main-area { margin-left:0; } .container { padding:68px 24px 48px; } }
@media (max-width:600px) { .container { padding:68px 16px 36px; } }

.page-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:26px; flex-wrap:wrap; gap:12px; }
.page-header h1 { font-size:25px; font-weight:700; color:var(--ink); letter-spacing:-.5px; margin-bottom:4px; }
.page-header h1 em { font-style:normal; font-weight:700; color:var(--ink); }
.page-header p { color:var(--grey-txt); font-size:13.5px; }
.dash-greeting { color:var(--accent-text); font-size:14px; font-weight:700; margin-bottom:2px; }

.alert-banner {
  text-decoration:none; display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--warn-pale); border:1.5px solid rgba(110,90,46,.25); border-left:4px solid var(--warn);
  border-radius:var(--radius-md); padding:14px 20px; margin-bottom:24px; cursor:pointer; flex-wrap:wrap;
}
.alert-banner-main { display:flex; align-items:center; gap:12px; }
.alert-banner-icon { color:var(--warn); }
.alert-banner-title { font-weight:800; font-size:14px; color:var(--ink); }
.alert-banner-sub { font-size:12.5px; color:var(--grey-txt); margin-top:2px; }
.alert-banner-cta { font-size:13px; font-weight:700; color:var(--warn); white-space:nowrap; }

.flash { padding:12px 16px; border-radius:var(--radius-md); margin-bottom:18px; font-size:13.5px; font-weight:600; display:flex; align-items:center; gap:8px; }
.flash-success { background:var(--success-pale); color:var(--success); border:1px solid rgba(62,97,73,.2); }
.flash-error   { background:var(--red-pale); color:var(--red); border:1px solid rgba(124,70,60,.2); }
.flash-info    { background:var(--navy-pale); color:var(--navy-soft); border:1px solid rgba(58,63,68,.15); }

.btn {
  display:inline-flex; align-items:center; gap:6px; border:none; border-radius:999px;
  padding:10px 20px; font-size:13px; font-weight:600; font-family:var(--font-body); cursor:pointer;
  transition:background .15s, box-shadow .15s, transform .1s, border-color .15s, color .15s;
  text-decoration:none; letter-spacing:.1px; box-shadow:var(--shadow-sm);
}
.btn:active { transform:scale(.97); }
.btn-primary { background:var(--surface); color:var(--ink); border:1.5px solid var(--border-strong); }
.btn-primary:hover { border-color:var(--ink); background:var(--surface-alt); }
.btn-ocre { background:var(--ocre); color:#fff; }
.btn-ocre:hover { background:var(--ink-soft); box-shadow:var(--shadow-sm); }
.btn-success { background:var(--ok-solid); color:#fff; }
.btn-success:hover { background:#128a3e; box-shadow:var(--shadow-sm); }
.btn-outline { background:var(--surface); color:var(--ink); border:1.5px solid var(--border-strong); }
.btn-outline:hover { border-color:var(--ink); background:var(--surface-alt); }
.btn-danger { background:transparent; color:var(--red); border:1.5px solid rgba(124,70,60,.25); }
.btn-danger:hover { background:var(--red-pale); border-color:var(--red); }
.btn-ghost { background:var(--surface-alt); color:var(--grey-txt); border:1px solid var(--border); }
.btn-ghost:hover { background:var(--border); color:var(--ink); }
.btn-filter { background:var(--ink-solid); color:#fff; }
.btn-filter:hover { background:var(--ink-soft); }
.btn-sm { padding:7px 15px; font-size:12px; }
.btn-lg { padding:15px 28px; font-size:14.5px; gap:9px; }
.btn:disabled { opacity:.45; cursor:not-allowed; transform:none; }

.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.form-group { display:flex; flex-direction:column; gap:6px; }
.form-group.full { grid-column:1/-1; }
.form-group label { font-family:var(--font-body); font-size:11px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.7px; }
.form-group input, .form-group select {
  border:1.5px solid var(--grey-border); border-radius:var(--radius-sm);
  padding:10px 13px; font-size:14px; font-family:var(--font-body); font-weight:500;
  background:var(--grey-bg); color:var(--ink); width:100%;
  transition:border-color .15s, box-shadow .15s; outline:none;
}
.form-group input:focus, .form-group select:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(185,133,101,.15); background:var(--grey-card); }
.form-group input[type="password"] { letter-spacing:3px; }
.form-group textarea {
  border:1.5px solid var(--grey-border); border-radius:var(--radius-sm);
  padding:10px 13px; font-size:14px; font-family:var(--font-body); font-weight:500;
  background:var(--grey-bg); color:var(--ink); width:100%; resize:vertical;
  transition:border-color .15s, box-shadow .15s; outline:none;
}
.form-group textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(185,133,101,.15); background:var(--grey-card); }
.hint { font-size:11.5px; color:var(--grey-txt); margin-top:3px; line-height:1.5; }
.form-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:20px; padding-top:16px; border-top:1px solid var(--grey-border); }
.check-row { display:flex; align-items:center; gap:10px; }
.check-row input { width:17px; height:17px; accent-color:var(--ocre); cursor:pointer; }
.check-row label { font-family:var(--font-body); font-size:14px; font-weight:500; color:var(--ink); text-transform:none; letter-spacing:0; cursor:pointer; }
.pw-strength { height:4px; border-radius:2px; margin-top:6px; transition:all .3s; background:var(--grey-border); }
.pw-weak   { background:var(--red); width:33%; }
.pw-medium { background:var(--warn); width:66%; }
.pw-strong { background:var(--success); width:100%; }

@media (max-width:600px) {
  .form-grid { grid-template-columns:1fr; }
}

.modal-overlay { display:none; position:fixed; inset:0; background:rgba(15,19,32,.55); z-index:500; align-items:center; justify-content:center; backdrop-filter:blur(4px); padding:16px; }
.modal-overlay.open { display:flex; }
.modal { background:var(--grey-card); border-radius:var(--radius-xl); width:520px; max-width:100%; max-height:90vh; overflow-y:auto; box-shadow:var(--shadow-lg); animation:popIn .18s ease; }
@keyframes popIn { from{opacity:0;transform:scale(.97) translateY(4px)} to{opacity:1;transform:scale(1) translateY(0)} }
.modal-top { background:var(--surface-alt); border-bottom:1px solid var(--border); padding:22px 28px 18px; }
.modal-top h2 { font-size:18px; font-weight:700; color:var(--ink); letter-spacing:-.3px; margin-bottom:3px; display:flex; align-items:center; gap:8px; }
.modal-top .modal-sub { font-size:13px; color:var(--grey-txt); }
.modal-body { padding:22px 28px 26px; }
@media (max-width:480px) {
  .modal-top { padding:18px 20px 16px; }
  .modal-body { padding:18px 20px 22px; }
}

.modal-amount-block { background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-md); padding:14px 18px; display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; gap:10px; flex-wrap:wrap; }
.modal-amount-label { font-size:11px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.8px; }
.modal-amount-value { font-size:28px; font-weight:800; color:var(--ink); letter-spacing:-.5px; }
.modal-check { display:flex; align-items:center; gap:12px; padding:13px 16px; background:var(--surface-alt); border:1.5px solid var(--border); border-radius:var(--radius-md); margin-bottom:22px; cursor:pointer; }
.modal-check input { width:17px; height:17px; cursor:pointer; accent-color:var(--ink); flex-shrink:0; }
.modal-check label { font-size:13.5px; font-weight:600; color:var(--ink); cursor:pointer; flex:1; }
.modal-actions { display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap; }

.toast-container { position:fixed; bottom:20px; right:20px; left:20px; z-index:9999; display:flex; flex-direction:column; align-items:flex-end; gap:8px; pointer-events:none; }
.toast { pointer-events:auto; padding:13px 20px; border-radius:var(--radius-md); font-size:13.5px; font-weight:600; box-shadow:var(--shadow-lg); animation:slideUp .25s ease; display:flex; align-items:center; gap:10px; max-width:360px; width:100%; }
.toast-success { background:var(--ink-solid); color:#fff; border-left:4px solid var(--ocre); }
.toast-error { background:var(--surface); color:var(--sienna); border:1px solid var(--sienna-pale); border-left:4px solid var(--sienna); }
@keyframes slideUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }

.table-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }
table { width:100%; border-collapse:collapse; }

.list-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); }

.detail-section { padding:20px; border-top:1px solid var(--border); }
.detail-section:first-child { border-top:none; }
.detail-section h3 { font-size:13px; font-weight:700; color:var(--ink); margin:0 0 14px; text-transform:uppercase; letter-spacing:.6px; }
.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:12px; }
.photo-thumb { position:relative; border-radius:var(--radius-sm); overflow:hidden; aspect-ratio:4/3; border:1px solid var(--border); background:var(--surface-alt); }
.photo-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.photo-thumb form { position:absolute; top:6px; right:6px; margin:0; }
.photo-thumb .btn-danger {
  width:26px; height:26px; padding:0; border-radius:50%;
  background:var(--red-solid); color:#fff; border:2px solid var(--surface);
  display:flex; align-items:center; justify-content:center; box-shadow:var(--shadow-md);
}
.photo-thumb .btn-danger:hover { opacity:.85; background:var(--red-solid); }
.photo-thumb img.photo-zoomable { cursor:zoom-in; transition:filter .15s; }
.photo-thumb img.photo-zoomable:hover { filter:brightness(.92); }

.lightbox-content { position:relative; max-width:92vw; max-height:92vh; }
.lightbox-content img { display:block; max-width:92vw; max-height:92vh; object-fit:contain; border-radius:var(--radius-md); box-shadow:var(--shadow-lg); }
.lightbox-close {
  position:absolute; top:-14px; right:-14px; width:32px; height:32px; border-radius:50%;
  background:var(--ink-solid); color:#fff; border:2px solid var(--surface); cursor:pointer;
  display:flex; align-items:center; justify-content:center; padding:0;
}
.lightbox-close:hover { opacity:.85; }
.tag-row { display:flex; flex-wrap:wrap; gap:8px; }
.tag-pill { display:inline-flex; align-items:center; gap:8px; background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-md); padding:5px 6px 5px 12px; font-size:12.5px; font-weight:600; color:var(--ink); }
.tag-pill form { margin:0; }
.tag-pill .btn-icon-sm { background:none; border:none; color:var(--grey-txt); cursor:pointer; padding:2px; display:flex; }
.tag-pill .btn-icon-sm:hover { color:var(--red); }
.tenant-row, .user-row {
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 22px; border-bottom:1px solid var(--border); transition:background .15s;
  gap:14px; flex-wrap:wrap;
}
.tenant-row:last-child, .user-row:last-child { border-bottom:none; }
.tenant-row:hover, .user-row:hover { background:var(--surface-alt); }

.group-header {
  display:flex; align-items:center; justify-content:space-between;
  background:var(--surface-alt); color:var(--ink); font-weight:700; font-size:12.5px;
  padding:10px 22px; border-bottom:1px solid var(--border);
  text-transform:uppercase; letter-spacing:.4px;
}
.group-header:first-child { border-top:none; }
.group-count { font-family:var(--font-body); font-weight:600; color:var(--grey-txt); text-transform:none; letter-spacing:0; font-size:12px; }

.t-avatar, .u-avatar { width:38px; height:38px; border-radius:var(--radius-xl); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:13px; font-weight:700; color:var(--ink); flex-shrink:0; margin-right:14px; background:var(--surface-alt); border:1px solid var(--border); }
.u-avatar.admin    { background:var(--accent-pale); color:var(--accent-text); border-color:rgba(185,133,101,.25); }
.u-avatar.bailleur { background:var(--surface-alt); color:var(--ink); }
.u-avatar.lecteur  { background:var(--surface-alt); color:var(--grey-txt); }
.t-info-wrap, .u-info-wrap { display:flex; align-items:center; flex:1; min-width:0; }
.t-name, .u-name { font-weight:700; font-size:14.5px; color:var(--ink); margin-bottom:3px; }
.t-meta, .u-meta { font-size:12px; color:var(--grey-txt); line-height:1.6; }
.t-loyer { background:var(--surface-alt); color:var(--ink); padding:4px 12px; border-radius:var(--radius-sm); font-size:12.5px; font-weight:700; border:1px solid var(--border); white-space:nowrap; }
.inactive-badge, .inactive-chip { background:var(--red-pale); color:var(--red); padding:2px 9px; border-radius:var(--radius-sm); font-size:11px; font-weight:700; border:1px solid rgba(124,70,60,.2); margin-left:8px; }
.t-actions, .u-actions { display:flex; gap:8px; flex-shrink:0; }
.receipt-form { display:flex; align-items:center; gap:6px; }
.receipt-form select { border:1.5px solid var(--border); border-radius:var(--radius-sm); padding:6px 8px; font-size:12px; font-family:var(--font-body); font-weight:600; background:var(--surface-alt); color:var(--ink); outline:none; }
.receipt-form select:focus { border-color:var(--accent); }

.role-chip { padding:4px 12px; border-radius:var(--radius-sm); font-size:12px; font-weight:600; }
.role-admin    { background:var(--accent-pale); color:var(--accent-text); border:1px solid rgba(185,133,101,.3); }
.role-bailleur { background:var(--surface-alt); color:var(--ink); border:1px solid var(--border); }
.role-lecteur  { background:var(--surface-alt); color:var(--grey-txt); border:1px solid var(--border); }

@media (max-width:640px) {
  .tenant-row, .user-row { flex-direction:column; align-items:stretch; padding:16px 18px; }
  .group-header { padding:10px 18px; }
  .t-info-wrap, .u-info-wrap { width:100%; }
  .t-loyer { align-self:flex-start; }
  .t-actions, .u-actions { width:100%; }
  .t-actions .btn, .u-actions .btn, .t-actions form, .u-actions form { flex:1; }
  .t-actions form button, .u-actions form button { width:100%; }
}

.empty-state { text-align:center; padding:52px 24px; color:var(--grey-txt); font-size:14px; }
.empty-state a { color:var(--accent-text); font-weight:700; text-decoration:none; }
.empty-icon { font-size:40px; margin-bottom:12px; }
.empty-state-icon {
  width:52px; height:52px; margin:0 auto 16px; border-radius:var(--radius-xl);
  background:var(--surface-alt); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center; color:var(--grey-mid);
}
.empty-state-title { font-weight:700; color:var(--ink); font-size:14.5px; margin-bottom:4px; }
.empty-state-sub { font-size:13px; color:var(--grey-txt); }

.info-box {
  background:var(--surface-alt); border:1px solid var(--border);
  border-left:4px solid var(--ink-soft); border-radius:var(--radius-md);
  padding:14px 18px; font-size:13px; color:var(--ink-soft); line-height:1.7;
  margin-bottom:22px; display:flex; gap:12px; align-items:flex-start;
}
.info-box .icon { font-size:18px; flex-shrink:0; margin-top:1px; }
.info-box a { color:var(--ink); font-weight:700; }
.info-box.warn {
  background:var(--warn-pale); border-color:rgba(110,90,46,.25);
  border-left-color:var(--warn); color:#8a5a0a; display:block;
}

.section { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); margin-bottom:18px; }
.section-head { background:var(--surface-alt); padding:14px 22px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--border); }
.section-head .s-icon { font-size:17px; }
.section-head h2 { font-size:14px; font-weight:700; color:var(--ink); letter-spacing:-.1px; }
.section-body { padding:20px 22px; }
.save-bar { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-2xl); padding:16px 22px; display:flex; justify-content:flex-end; align-items:center; gap:12px; flex-wrap:wrap; box-shadow:var(--shadow-sm); }
.save-hint { font-size:12.5px; color:var(--grey-txt); }

.dash-alert-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:16px; }
.dash-alert-card { background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; }
.dash-alert-count { font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:28px; font-weight:800; color:var(--ink); line-height:1; }
.dash-alert-label { font-size:12.5px; color:var(--grey-txt); margin-top:6px; font-weight:600; }
.dash-alert-items { margin-top:12px; padding-top:12px; border-top:1px solid var(--border); font-size:12.5px; color:var(--ink-soft); line-height:1.9; }
.dash-alert-link { display:inline-block; margin-top:12px; font-size:12.5px; font-weight:700; color:var(--accent-text); text-decoration:none; }
.dash-activity-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:24px; }
.dash-activity-title { font-family:var(--font-body); font-size:12.5px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.6px; margin-bottom:10px; }

.bailleurs-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:16px; margin-bottom:28px; }
.bailleur-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .15s, box-shadow .15s; }
.bailleur-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
.bc-top { background:transparent; padding:20px 20px 2px; display:flex; align-items:center; justify-content:space-between; }
.bc-avatar { width:42px; height:42px; background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-xl); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:15px; font-weight:700; color:var(--ink); }
.bc-count { background:var(--surface-alt); color:var(--ink); border:1px solid var(--border); padding:4px 12px; border-radius:var(--radius-sm); font-size:12px; font-weight:700; }
.bc-body { padding:14px 20px 20px; }
.bc-name { font-size:15.5px; font-weight:700; color:var(--ink); margin-bottom:6px; }
.bc-meta { font-size:12px; color:var(--grey-txt); line-height:1.7; }
.bc-meta .addr { color:var(--ink-soft); font-weight:600; font-size:12.5px; }
.bc-divider { border:none; border-top:1px solid var(--border); margin:12px 0; }
.bc-actions { display:flex; gap:8px; }

.tenants-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:16px; margin-bottom:40px; }
.tenant-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-2xl); overflow:hidden; transition:transform .15s, box-shadow .15s; box-shadow:var(--shadow-sm); }
.tenant-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
.card-header-band { background:transparent; padding:20px 20px 2px; display:flex; align-items:center; justify-content:space-between; }
.tenant-avatar { width:42px; height:42px; background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-xl); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:14px; font-weight:700; color:var(--ink); letter-spacing:-.3px; }
.loyer-chip { background:var(--surface-alt); color:var(--ink); padding:5px 13px; border-radius:var(--radius-sm); font-size:13px; font-weight:700; letter-spacing:-.1px; border:1px solid var(--border); }
.card-body { padding:14px 20px 20px; }
.tenant-name { font-size:15.5px; font-weight:700; color:var(--ink); margin-bottom:6px; letter-spacing:-.2px; }
.tenant-meta { font-size:12px; color:var(--grey-txt); line-height:1.7; }
.tenant-meta .addr { color:var(--ink-soft); font-weight:600; font-size:12.5px; }
.card-divider { border:none; border-top:1px solid var(--border); margin:12px 0; }
.dashboard-divider { border:none; border-top:1px solid var(--border); margin:26px 0; }
.btn-generate {
  
  width:100%; background:var(--accent-pale); color:var(--ink);
  border:1.5px solid var(--accent-line); border-radius:999px; padding:11px 16px; font-size:13.5px; font-weight:600;
  font-family:var(--font-body); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:8px;
  transition:background .18s, box-shadow .18s, transform .1s; letter-spacing:.1px;
}
.btn-generate:hover { background:var(--accent-soft); box-shadow:var(--shadow-sm); }
.btn-generate:active { transform:scale(.98); }

.rev-section-title { font-family:var(--font-display); font-size:16px; font-weight:700; color:var(--navy); margin-bottom:14px; padding-bottom:8px; border-bottom:2px solid var(--grey-border); display:flex; align-items:center; gap:10px; }
.rev-count { background:var(--ink-solid); color:#fff; padding:2px 10px; border-radius:var(--radius-sm); font-size:12px; font-weight:700; }
.rev-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; margin-bottom:36px; }
.rev-card { background:var(--grey-card); border:1px solid var(--grey-border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); transition:box-shadow .18s; }
.rev-card:hover { box-shadow:var(--shadow-md); }
.rev-card-top { padding:14px 18px 12px; display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.rev-card-top.attente { background:var(--warn-pale); border-bottom:1px solid rgba(110,90,46,.2); }
.rev-card-top.validee { background:var(--success-pale); border-bottom:1px solid rgba(62,97,73,.15); }
.rev-card-top.rejetee { background:var(--surface-alt); border-bottom:1px solid var(--border); }
.rev-tenant { font-size:15px; font-weight:700; color:var(--navy); margin-bottom:2px; }
.rev-addr { font-size:12px; color:var(--grey-txt); }
.badge-statut { padding:4px 12px; border-radius:var(--radius-sm); font-size:11.5px; font-weight:700; white-space:nowrap; }
.badge-attente { background:var(--warn-pale); color:var(--warn); border:1px solid rgba(110,90,46,.3); }
.badge-validee { background:var(--success-pale); color:var(--success); border:1px solid rgba(62,97,73,.2); }
.badge-rejetee { background:var(--surface-alt); color:var(--grey-mid); border:1px solid var(--border); }
.rev-body { padding:14px 18px 16px; }
.rev-grid-data { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px; }
.rev-data-label { font-size:10.5px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.8px; margin-bottom:3px; }
.rev-data-val { font-size:14px; font-weight:700; color:var(--navy); }
.rev-data-val.nouveau { color:var(--success); font-size:16px; }
.rev-data-val.missing { color:var(--grey-mid); font-style:italic; font-weight:400; font-size:12px; }
.rev-data-val.diff { font-size:12px; color:var(--success); font-weight:600; }
.rev-anniv { display:flex; align-items:center; gap:8px; background:var(--navy-pale); border-radius:var(--radius-sm); padding:8px 12px; margin-bottom:14px; font-size:12.5px; color:var(--navy-soft); font-weight:600; flex-wrap:wrap; }
.rev-anniv .urgent { color:var(--red); }
.rev-actions { display:flex; gap:8px; flex-wrap:wrap; }
.rev-actions form { flex:1; min-width:120px; }

.section-header { display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap; }
.section-title { font-size:17px; font-weight:700; color:var(--navy); letter-spacing:-.3px; }
.section-count { background:var(--navy-pale); color:var(--navy-soft); padding:2px 11px; border-radius:var(--radius-sm); font-size:12px; font-weight:700; border:1px solid rgba(58,63,68,.12); }
.history-wrap { background:var(--grey-card); border:1px solid var(--grey-border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); }
.history-table thead { background:var(--navy-pale); border-bottom:2px solid var(--grey-border); }
.history-table th { text-align:left; padding:11px 16px; font-family:var(--font-body); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--navy-soft); white-space:nowrap; }
.history-table td { padding:13px 16px; font-size:13px; border-bottom:1px solid var(--grey-border); vertical-align:middle; }
.history-table tr:last-child td { border-bottom:none; }
.history-table tbody tr:hover td { background:var(--grey-bg); }

table th.num, table td.num { text-align:right; }
.h-name { font-weight:700; color:var(--navy); font-size:13px; white-space:nowrap; }
.h-addr { font-size:11.5px; color:var(--grey-txt); margin-top:2px; }
.h-period { display:inline-block; background:var(--ocre-pale); color:var(--sienna); padding:4px 11px; border-radius:var(--radius-sm); font-size:12px; font-weight:700; border:1px solid rgba(94,99,104,.2); white-space:nowrap; }
.h-amount { font-weight:700; font-size:14px; color:var(--navy); white-space:nowrap; }
.h-datetime { line-height:1.6; white-space:nowrap; }
.h-date { font-size:12.5px; font-weight:700; color:var(--navy); }
.h-time { font-size:12px; font-weight:600; color:var(--ocre); }
.h-time-missing { font-size:11px; color:var(--grey-mid); font-style:italic; }
.badge { display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:var(--radius-sm); font-size:12px; font-weight:700; white-space:nowrap; }
.badge-sent { background:var(--success-pale); color:var(--success); }
.badge-local { background:var(--grey-bg); color:var(--grey-txt); border:1px solid var(--grey-border); }
.badge-auto { background:var(--neutral-warm); color:var(--neutral-warm-text); margin-left:6px; }
.badge-prorata { background:var(--neutral-warm); color:var(--neutral-warm-text); margin-left:6px; }
.action-btns { display:flex; gap:6px; }

.batch-section { margin-bottom:18px; }
.batch-section-title { font-family:var(--font-body); font-size:11px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.8px; margin-bottom:10px; }
.months-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.month-chip { display:flex; align-items:center; justify-content:center; padding:7px 4px; border-radius:var(--radius-sm); cursor:pointer; border:1.5px solid var(--grey-border); font-size:12px; font-weight:700; color:var(--grey-txt); background:var(--grey-bg); transition:all .15s; user-select:none; }
.month-chip.checked { background:var(--navy-pale); color:var(--navy); border-color:var(--blue-light); }
.month-chip input { display:none; }
.batch-toggle { display:flex; gap:6px; margin-bottom:10px; }
.toggle-btn { font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px; border:1px solid var(--grey-border); background:var(--grey-bg); color:var(--grey-txt); cursor:pointer; }
.toggle-btn:hover { background:var(--grey-border); }
.date-mode-tabs { display:flex; gap:0; margin-bottom:12px; border:1.5px solid var(--grey-border); border-radius:var(--radius-sm); overflow:hidden; }
.date-tab { flex:1; padding:8px; text-align:center; font-size:12.5px; font-weight:700; color:var(--grey-txt); background:var(--grey-bg); cursor:pointer; border:none; transition:all .15s; }
.date-tab.active { background:var(--ink-solid); color:#fff; }
.date-tab-content { display:none; }
.date-tab-content.active { display:block; }
.progress-bar-wrap { background:var(--grey-border); border-radius:6px; height:8px; margin:10px 0; overflow:hidden; }
.progress-bar-fill { height:100%; background:linear-gradient(90deg,var(--blue-light),var(--navy)); border-radius:6px; width:0%; transition:width .3s; }
.batch-log { max-height:140px; overflow-y:auto; font-size:12px; background:var(--grey-bg); border-radius:var(--radius-sm); padding:10px 12px; border:1px solid var(--grey-border); line-height:1.8; }
.log-ok   { color:var(--success); }
.log-err  { color:var(--red); }
.log-info { color:var(--grey-txt); }
.tenant-select { border:1.5px solid var(--grey-border); border-radius:var(--radius-sm); padding:8px 12px; font-size:13.5px; font-family:var(--font-body); font-weight:600; background:var(--grey-bg); color:var(--navy); width:100%; outline:none; }
.tenant-select:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(185,133,101,.15); }
.day-input { border:1.5px solid var(--grey-border); border-radius:var(--radius-sm); padding:8px 12px; font-size:14px; font-family:var(--font-num); font-variant-numeric:tabular-nums; font-weight:700; background:var(--grey-bg); color:var(--navy); width:80px; outline:none; text-align:center; }
.day-input:focus { border-color:var(--blue-light); }

@media (max-width:420px) {
  .months-grid { grid-template-columns:repeat(3,1fr); }
}

.dashboard-actions { display:flex; gap:14px; margin-bottom:26px; flex-wrap:wrap; }

.tunnel-steps { display:flex; gap:4px; margin-bottom:20px; border-bottom:1px solid var(--border); padding-bottom:14px; }
.tunnel-step { flex:1; text-align:center; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--ink-muted); padding-bottom:8px; border-bottom:2px solid transparent; }
.tunnel-step.active { color:var(--accent-text); border-color:var(--accent-line); }
.tunnel-panel { display:none; }
.tunnel-panel.active { display:block; }

.tenant-pick-list { max-height:280px; overflow-y:auto; display:flex; flex-direction:column; gap:6px; border:1px solid var(--border); border-radius:var(--radius-md); padding:8px; background:var(--surface-alt); }
.tenant-pick-row { display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:var(--radius-sm); cursor:pointer; background:var(--surface); border:1.5px solid transparent; transition:border-color .15s, background .15s; }
.tenant-pick-row:has(input:checked) { border-color:var(--accent-line); background:var(--accent-pale); }
.tenant-pick-row input { width:16px; height:16px; accent-color:var(--accent-line); cursor:pointer; flex-shrink:0; }
.tenant-pick-name { font-size:13.5px; font-weight:700; color:var(--ink); }
.tenant-pick-meta { font-size:11.5px; color:var(--grey-txt); margin-top:1px; }
.ta-status-badge { display:flex; align-items:center; gap:5px; font-size:11px; font-weight:700; color:var(--neutral-warm-text); background:var(--neutral-warm); border-radius:var(--radius-sm); padding:4px 8px; white-space:nowrap; }
.ta-disable-btn { border:none; background:none; color:var(--neutral-warm-text); font-size:14px; line-height:1; cursor:pointer; padding:0 0 0 2px; font-weight:700; }
.ta-disable-btn:hover { color:var(--red); }

.calendar-day-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.calendar-day { border:1.5px solid var(--grey-border); border-radius:var(--radius-sm); background:var(--grey-bg); color:var(--grey-txt); font-size:12.5px; font-weight:700; padding:8px 0; cursor:pointer; transition:all .15s; }
.calendar-day:hover { border-color:var(--accent-line); }
.calendar-day.selected { background:var(--accent); color:var(--accent-ink); border-color:var(--accent-line); }

.stats-row { display:flex; gap:14px; margin-bottom:28px; flex-wrap:wrap; }
.stat-card { background:var(--grey-card); border:1px solid var(--grey-border); border-radius:var(--radius-2xl); padding:16px 20px; flex:1; min-width:160px; box-shadow:var(--shadow-sm); }
.stat-card .s-val { font-size:27px; font-weight:800; color:var(--navy); letter-spacing:-1px; }
.stat-card .s-label { font-size:12px; font-weight:600; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.8px; margin-top:4px; }
.stat-card.warn .s-val { color:var(--warn); }
.stat-card.ok .s-val { color:var(--success); }

.filter-bar { background:var(--grey-card); border:1px solid var(--grey-border); border-radius:var(--radius-md); padding:14px 20px; display:flex; align-items:center; gap:14px; margin-bottom:28px; flex-wrap:wrap; box-shadow:var(--shadow-sm); }
.filter-label { font-family:var(--font-body); font-size:11px; font-weight:700; color:var(--grey-txt); text-transform:uppercase; letter-spacing:1px; white-space:nowrap; }
.filter-bar select { border:1.5px solid var(--grey-border); border-radius:var(--radius-sm); padding:7px 12px; font-size:13.5px; font-family:var(--font-body); font-weight:600; background:var(--grey-bg); color:var(--navy); cursor:pointer; transition:border-color .15s; outline:none; }
.filter-bar select:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(185,133,101,.15); }
.filter-sep { width:1px; height:24px; background:var(--grey-border); }

.kpi-row { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:16px; margin-bottom:32px; }
.kpi-card { background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-2xl); padding:20px 22px; position:relative; overflow:hidden; transition:background .2s, border-color .2s; }
.kpi-icon { color:var(--grey-txt); margin-bottom:10px; transition:color .2s; }
.kpi-val { font-size:29px; font-weight:800; letter-spacing:-1px; color:var(--ink); line-height:1; margin-bottom:6px; transition:color .2s; }
.kpi-label { font-size:12px; font-weight:600; color:var(--grey-txt); text-transform:uppercase; letter-spacing:.8px; transition:color .2s; }

.kpi-card:hover { background:var(--neutral-warm); border-color:var(--neutral-warm-line); }
.kpi-card:hover .kpi-icon, .kpi-card:hover .kpi-val, .kpi-card:hover .kpi-label { color:var(--neutral-warm-text); }

.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:24px; }
@media (max-width:800px) { .grid-2 { grid-template-columns:1fr; } }

.section-card { background:var(--grey-card); border:1px solid var(--grey-border); border-radius:var(--radius-2xl); overflow:hidden; box-shadow:var(--shadow-sm); }
.section-card.full { grid-column:1/-1; }
.sc-head { background:var(--navy-pale); padding:14px 20px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--grey-border); }
.sc-head h2 { font-size:14px; font-weight:700; color:var(--navy); }
.sc-body { padding:20px; }

.chart-bars { display:flex; align-items:flex-end; gap:6px; height:180px; padding:0 4px; }
.bar-col { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; min-width:0; }
.bar-outer { width:100%; background:var(--surface-alt); border-radius:8px 8px 0 0; position:relative; overflow:hidden; }

.bar-fill { position:absolute; bottom:0; left:0; right:0; background:var(--grey-mid); border-radius:8px 8px 0 0; transition:height .6s cubic-bezier(.4,0,.2,1); }
.bar-fill.active { background:var(--ink); }
.bar-val { font-size:10px; font-weight:700; color:var(--navy); white-space:nowrap; }
.bar-label { font-size:10px; font-weight:600; color:var(--grey-txt); white-space:nowrap; }
.bar-nb { font-size:9px; color:var(--grey-mid); }
.chart-legend { display:flex; gap:16px; margin-top:14px; justify-content:center; flex-wrap:wrap; }
.legend-item { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--grey-txt); font-weight:600; }
.legend-dot { width:10px; height:10px; border-radius:3px; }

.t-table th, .m-table th { text-align:left; padding:9px 14px; font-family:var(--font-body); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--grey-txt); border-bottom:2px solid var(--grey-border); white-space:nowrap; }
.t-table td, .m-table td { padding:12px 14px; font-size:13px; border-bottom:1px solid var(--grey-border); vertical-align:middle; }
.t-table tr:last-child td, .m-table tr:last-child td { border-bottom:none; }
.t-table tr:hover td { background:var(--grey-bg); }
.t-name { font-weight:700; color:var(--navy); white-space:nowrap; }
.t-total, .m-total { font-weight:700; font-size:15px; color:var(--navy); white-space:nowrap; }
.t-bar-wrap { width:120px; height:6px; background:var(--grey-bg); border-radius:4px; overflow:hidden; }
.t-bar-fill { height:100%; background:linear-gradient(90deg,var(--blue-light),var(--navy)); border-radius:4px; }
.taux-chip { display:inline-block; padding:3px 10px; border-radius:var(--radius-sm); font-size:11.5px; font-weight:700; white-space:nowrap; }
.taux-full  { background:var(--success-pale); color:var(--success); }
.taux-part  { background:var(--ocre-pale); color:var(--sienna); }
.taux-none  { background:var(--grey-bg); color:var(--grey-mid); border:1px solid var(--grey-border); }
.m-table .best td { background:var(--surface-alt); }
.m-table tr:hover td { background:var(--neutral-warm); }
.m-table tr:hover .m-name { color:var(--neutral-warm-text); }
.m-name { font-weight:700; color:var(--navy); white-space:nowrap; transition:color .15s; }
.m-zero { color:var(--grey-mid); font-style:italic; }
