/* ==========================================================================
   Rentablis — Design System « Enterprise SaaS »
   Jetons centralisés (couleurs, espacements, rayons, ombres, typographie) puis composants.
   Toutes les pages utilisent ces classes : modifier un jeton change toute l'application.
   Les variables Bootstrap 5.3 sont surchargées ici, sans compilation.
   Le mode sombre est préparé ([data-theme="dark"]) mais pas activé.
   ========================================================================== */

/* Inter (police variable, installée localement — licence SIL OFL, voir vendor/inter/LICENSE.txt) */
@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../vendor/inter/inter-latin-wght-normal.woff2") format("woff2-variations"), url("../vendor/inter/inter-latin-wght-normal.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../vendor/inter/inter-latin-ext-wght-normal.woff2") format("woff2-variations"), url("../vendor/inter/inter-latin-ext-wght-normal.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- 1. Jetons ---------- */
:root {
    /* Couleurs de marque et de texte */
    --color-primary: #1D4ED8;
    --color-primary-hover: #1E40AF;
    --color-primary-active: #1E3A8A;
    --color-primary-soft: #EFF4FF;
    --color-primary-soft-2: #DBE6FE;
    --color-navy: #0F172A;
    --color-navy-2: #1E293B;
    --color-navy-text: #CBD5E1;
    --color-navy-muted: #7C8BA5;
    --color-background: #F8FAFC;
    --color-surface: #FFFFFF;
    --color-surface-2: #F8FAFC;
    --color-surface-hover: #F1F5F9;
    --color-border: #E2E8F0;
    --color-border-strong: #CBD5E1;
    --color-text: #172033;
    --color-text-secondary: #64748B;
    --color-text-tertiary: #7C8BA5;
    /* Couleurs d'état (texte / fond clair / bordure) */
    --color-success: #16A34A; --color-success-text: #15803D; --color-success-soft: #ECFDF3; --color-success-border: #BBF7D0;
    --color-warning: #D97706; --color-warning-text: #B45309; --color-warning-soft: #FFF7ED; --color-warning-border: #FED7AA;
    --color-danger: #DC2626;  --color-danger-text: #B91C1C;  --color-danger-soft: #FEF2F2;  --color-danger-border: #FECACA;
    --color-info: #2563EB;    --color-info-text: #1D4ED8;    --color-info-soft: #EFF6FF;    --color-info-border: #BFDBFE;
    --color-neutral-soft: #F1F5F9; --color-neutral-text: #475569;
    --color-accent: #C98A16;

    /* Espacements (échelle de 4 px) */
    --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;

    /* Rayons */
    --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px; --radius-pill: 999px;

    /* Ombres (très légères : composants enterprise) */
    --shadow-xs: 0 1px 1px rgba(15, 23, 42, .03);
    --shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);
    --shadow-md: 0 4px 12px rgba(15, 23, 42, .08), 0 1px 3px rgba(15, 23, 42, .06);
    --shadow-lg: 0 12px 32px rgba(15, 23, 42, .14);
    --focus-ring: 0 0 0 3px rgba(29, 78, 216, .18);

    /* Typographie */
    --font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    --font-size-2xs: 11px; --font-size-xs: 12px; --font-size-sm: 13px; --font-size-md: 14px;
    --font-size-lg: 16px; --font-size-xl: 18px; --font-size-2xl: 22px; --font-size-3xl: 26px;

    /* Dimensions */
    --control-height: 36px; --control-height-sm: 30px; --topbar-height: 56px; --sidebar-width: 240px;
    --transition: 150ms ease;

    /* Alias historiques (utilisés dans des vues et styles en ligne) */
    --rb-ink: var(--color-navy);
    --rb-ink-2: var(--color-navy-2);
    --rb-ink-text: var(--color-navy-text);
    --rb-primary: var(--color-primary);
    --rb-primary-hover: var(--color-primary-hover);
    --rb-primary-soft: var(--color-primary-soft);
    --rb-accent: var(--color-accent);
    --rb-bg: var(--color-background);
    --rb-surface: var(--color-surface);
    --rb-border: var(--color-border);
    --rb-text: var(--color-text);
    --rb-muted: var(--color-text-secondary);
    --rb-radius: var(--radius-md);
    --rb-sidebar-w: var(--sidebar-width);
    --rb-chart-1: var(--color-primary);
    --rb-chart-2: var(--color-accent);

    /* Bootstrap */
    --bs-body-font-family: var(--font-sans);
    --bs-body-font-size: var(--font-size-md);
    --bs-body-line-height: 1.5;
    --bs-body-color: var(--color-text);
    --bs-body-bg: var(--color-background);
    --bs-border-color: var(--color-border);
    --bs-border-radius: var(--radius-md);
    --bs-border-radius-sm: var(--radius-sm);
    --bs-border-radius-lg: var(--radius-lg);
    --bs-primary: var(--color-primary);
    --bs-primary-rgb: 29, 78, 216;
    --bs-success-rgb: 22, 163, 74;
    --bs-warning-rgb: 217, 119, 6;
    --bs-danger-rgb: 220, 38, 38;
    --bs-info-rgb: 37, 99, 235;
    --bs-link-color: var(--color-primary);
    --bs-link-color-rgb: 29, 78, 216;
    --bs-link-hover-color: var(--color-primary-hover);
    --bs-link-hover-color-rgb: 30, 64, 175;
    --bs-secondary-color: var(--color-text-secondary);
    --bs-tertiary-color: var(--color-text-tertiary);
    --bs-emphasis-color: var(--color-text);
    --bs-heading-color: var(--color-text);
    --bs-secondary-bg: var(--color-surface-2);
    --bs-tertiary-bg: var(--color-surface-hover);
    --bs-focus-ring-color: rgba(29, 78, 216, .18);
}

/* Mode sombre préparé (non activé) : il suffira de poser data-theme="dark" sur <html>. */
[data-theme="dark"] {
    --color-background: #0B1120; --color-surface: #111827; --color-surface-2: #0F172A; --color-surface-hover: #1E293B;
    --color-border: #1F2A3C; --color-border-strong: #334155; --color-text: #E2E8F0; --color-text-secondary: #94A3B8;
    --color-text-tertiary: #64748B; --color-primary-soft: #172554; --color-primary-soft-2: #1E3A8A;
    --color-neutral-soft: #1E293B; --color-neutral-text: #CBD5E1;
}

/* ---------- 2. Base ---------- */
html { -webkit-text-size-adjust: 100%; }
body { font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; letter-spacing: -.003em; }
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-weight: 600; letter-spacing: -.012em; color: var(--color-text); }
h1, .h1 { font-size: var(--font-size-2xl); } h2, .h2 { font-size: var(--font-size-xl); } h3, .h3 { font-size: var(--font-size-lg); }
h4, .h4 { font-size: 15px; } h5, .h5 { font-size: var(--font-size-md); } h6, .h6 { font-size: var(--font-size-sm); }
.h6 { font-size: var(--font-size-sm); }
a { text-decoration: none; transition: color var(--transition); }
a:hover { text-decoration: underline; text-underline-offset: 2px; }
.btn:hover, .dropdown-item:hover, .rb-nav-link:hover, .nav-link:hover, .page-link:hover, .rb-block-head:hover, .rb-notif-item:hover { text-decoration: none; }
small, .small { font-size: var(--font-size-xs); }
.text-body-secondary, .text-muted { color: var(--color-text-secondary) !important; }
.fw-semibold { font-weight: 600 !important; }
hr { border-color: var(--color-border); opacity: 1; }
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
::selection { background: var(--color-primary-soft-2); }
.num, .rb-amount { font-variant-numeric: tabular-nums; }
.num { text-align: right; white-space: nowrap; }
.mono, code, kbd { font-family: var(--font-mono); font-size: 12px; }
code { color: var(--color-text); background: var(--color-surface-hover); padding: 1px 5px; border-radius: 4px; }

/* ---------- 3. Boutons ---------- */
.btn {
    --bs-btn-font-size: var(--font-size-sm); --bs-btn-font-weight: 500; --bs-btn-line-height: 1.25;
    --bs-btn-padding-y: 8px; --bs-btn-padding-x: 14px; --bs-btn-border-radius: var(--radius-md);
    min-height: var(--control-height); display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
    white-space: nowrap;
}
.btn i, .btn .bi { font-size: 14px; line-height: 1; }
.btn .me-1, .btn .me-2 { margin-right: 0 !important; }
.btn-sm { --bs-btn-padding-y: 5px; --bs-btn-padding-x: 10px; --bs-btn-font-size: 12.5px; --bs-btn-border-radius: var(--radius-sm); min-height: var(--control-height-sm); }
.btn-lg { --bs-btn-padding-y: 10px; --bs-btn-padding-x: 18px; --bs-btn-font-size: var(--font-size-md); min-height: 40px; }
.btn:focus-visible { box-shadow: var(--focus-ring); outline: 0; }
.btn-primary {
    --bs-btn-bg: var(--color-primary); --bs-btn-border-color: var(--color-primary);
    --bs-btn-hover-bg: var(--color-primary-hover); --bs-btn-hover-border-color: var(--color-primary-hover);
    --bs-btn-active-bg: var(--color-primary-active); --bs-btn-active-border-color: var(--color-primary-active);
    --bs-btn-disabled-bg: var(--color-primary); --bs-btn-disabled-border-color: var(--color-primary);
    box-shadow: 0 1px 2px rgba(29, 78, 216, .25), inset 0 1px 0 rgba(255, 255, 255, .08);
}
/* Secondaire : blanc bordé (btn-light et btn-outline-secondary) */
.btn-light, .btn-outline-secondary, .btn-secondary {
    --bs-btn-color: var(--color-text); --bs-btn-bg: var(--color-surface); --bs-btn-border-color: var(--color-border-strong);
    --bs-btn-hover-color: var(--color-text); --bs-btn-hover-bg: var(--color-surface-hover); --bs-btn-hover-border-color: var(--color-border-strong);
    --bs-btn-active-color: var(--color-text); --bs-btn-active-bg: #E2E8F0; --bs-btn-active-border-color: var(--color-border-strong);
    --bs-btn-disabled-color: var(--color-text-tertiary); --bs-btn-disabled-bg: var(--color-surface); --bs-btn-disabled-border-color: var(--color-border);
    box-shadow: var(--shadow-xs);
}
.btn-light i, .btn-outline-secondary i { color: var(--color-text-secondary); }
.btn-outline-primary {
    --bs-btn-color: var(--color-primary); --bs-btn-border-color: var(--color-primary-soft-2); --bs-btn-bg: var(--color-surface);
    --bs-btn-hover-color: var(--color-primary-hover); --bs-btn-hover-bg: var(--color-primary-soft); --bs-btn-hover-border-color: #BFD0FB;
    --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--color-primary); --bs-btn-active-border-color: var(--color-primary);
}
.btn-success { --bs-btn-bg: #15803D; --bs-btn-border-color: #15803D; --bs-btn-hover-bg: #166534; --bs-btn-hover-border-color: #166534; --bs-btn-active-bg: #14532D; --bs-btn-disabled-bg: #15803D; --bs-btn-disabled-border-color: #15803D; }
.btn-danger { --bs-btn-bg: var(--color-danger); --bs-btn-border-color: var(--color-danger); --bs-btn-hover-bg: #B91C1C; --bs-btn-hover-border-color: #B91C1C; }
.btn-warning { --bs-btn-color: #fff; --bs-btn-bg: #B45309; --bs-btn-border-color: #B45309; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #92400E; --bs-btn-hover-border-color: #92400E; --bs-btn-active-color: #fff; --bs-btn-active-bg: #78350F; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #B45309; --bs-btn-disabled-border-color: #B45309; }
.btn-outline-danger {
    --bs-btn-color: var(--color-danger-text); --bs-btn-border-color: var(--color-danger-border); --bs-btn-bg: var(--color-surface);
    --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--color-danger); --bs-btn-hover-border-color: var(--color-danger);
}
.btn-outline-success { --bs-btn-color: var(--color-success-text); --bs-btn-border-color: var(--color-success-border); --bs-btn-hover-bg: var(--color-success); --bs-btn-hover-border-color: var(--color-success); }
.btn-outline-warning { --bs-btn-color: var(--color-warning-text); --bs-btn-border-color: var(--color-warning-border); --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--color-warning); --bs-btn-hover-border-color: var(--color-warning); }
.btn-link { --bs-btn-color: var(--color-primary); --bs-btn-hover-color: var(--color-primary-hover); min-height: 0; }
.btn-ghost { --bs-btn-color: var(--color-text-secondary); --bs-btn-bg: transparent; --bs-btn-border-color: transparent; --bs-btn-hover-bg: var(--color-surface-hover); --bs-btn-hover-color: var(--color-text); }
.btn-group > .btn { min-height: var(--control-height); }
.btn-close { width: .75em; height: .75em; opacity: .45; }

/* ---------- 4. Formulaires ---------- */
.form-label { font-size: var(--font-size-xs); font-weight: 500; color: var(--color-text); margin-bottom: 5px; }
.form-text { font-size: var(--font-size-xs); color: var(--color-text-secondary); margin-top: 4px; }
.form-control, .form-select {
    font-size: var(--font-size-sm); min-height: var(--control-height); padding: 7px 11px; line-height: 1.4;
    color: var(--color-text); background-color: var(--color-surface); border: 1px solid var(--color-border-strong);
    border-radius: var(--radius-md); box-shadow: var(--shadow-xs); transition: border-color var(--transition), box-shadow var(--transition);
}
.form-select { padding-right: 32px; background-position: right 10px center; background-size: 14px 10px; }
.form-control::placeholder { color: var(--color-text-tertiary); }
.form-control:hover, .form-select:hover { border-color: #A8B6CA; }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: var(--color-primary); box-shadow: var(--focus-ring); }
.form-control:disabled, .form-select:disabled, .form-control[readonly] { background-color: var(--color-surface-2); color: var(--color-text-secondary); }
.form-control-sm, .form-select-sm { min-height: var(--control-height-sm); padding-top: 4px; padding-bottom: 4px; font-size: 12.5px; border-radius: var(--radius-sm); }
textarea.form-control { min-height: 72px; }
.form-control[type="file"] { padding: 5px 8px; }
.form-check { font-size: var(--font-size-sm); min-height: 20px; margin-bottom: 4px; }
.form-check-input { width: 15px; height: 15px; margin-top: .2em; border-color: var(--color-border-strong); }
.form-check-input:checked { background-color: var(--color-primary); border-color: var(--color-primary); }
.form-switch .form-check-input { width: 28px; }
.input-group-text { font-size: var(--font-size-sm); background: var(--color-surface-2); border-color: var(--color-border-strong); color: var(--color-text-secondary); }
.invalid-feedback { font-size: var(--font-size-xs); }
.form-control.is-invalid, .form-select.is-invalid { border-color: var(--color-danger); }
.mb-3:has(> .form-label) { margin-bottom: 14px !important; }
fieldset legend { font-size: var(--font-size-sm); font-weight: 600; }

/* ---------- 5. Tableaux ---------- */
.table {
    --bs-table-bg: transparent; --bs-table-color: var(--color-text); --bs-table-border-color: var(--color-border);
    --bs-table-hover-bg: var(--color-surface-2); --bs-table-striped-bg: var(--color-surface-2);
    margin-bottom: 0; font-size: var(--font-size-sm);
}
.table > thead th, .table > thead td {
    font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-secondary);
    background: var(--color-surface-2); border-bottom: 1px solid var(--color-border); white-space: nowrap;
}
.table > :not(caption) > * > * { padding: 9px 12px; vertical-align: middle; border-bottom-color: #EDF2F7; }
.table-sm > :not(caption) > * > * { padding: 7px 10px; }
.table > tbody > tr:last-child > * { border-bottom: 0; }
.table-hover > tbody > tr { transition: background-color var(--transition); }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: #F5F8FD; }
.table > tfoot > tr > * { background: var(--color-surface-2); font-weight: 600; border-top: 1px solid var(--color-border); border-bottom: 0; }
.table a:not(.btn) { font-weight: 500; }
.table .small, .table small { color: var(--color-text-secondary); }
.table-light { --bs-table-bg: var(--color-surface-2); }
.table-warning { --bs-table-bg: var(--color-warning-soft); }
.table-danger { --bs-table-bg: var(--color-danger-soft); }
.table-success { --bs-table-bg: var(--color-success-soft); }
.rb-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.rb-table-wrap > .table { min-width: 560px; }

/* ---------- 6. Badges et statuts ---------- */
.rb-status {
    display: inline-flex; align-items: center; gap: 5px; font-size: var(--font-size-2xs); font-weight: 600; line-height: 16px;
    padding: 2px 8px; border-radius: var(--radius-pill); white-space: nowrap; border: 1px solid transparent; letter-spacing: .01em;
}
.rb-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: none; }
.rb-status.is-success { background: var(--color-success-soft); color: var(--color-success-text); border-color: var(--color-success-border); }
.rb-status.is-muted { background: var(--color-neutral-soft); color: var(--color-neutral-text); border-color: var(--color-border); }
.rb-status.is-warning { background: var(--color-warning-soft); color: var(--color-warning-text); border-color: var(--color-warning-border); }
.rb-status.is-danger { background: var(--color-danger-soft); color: var(--color-danger-text); border-color: var(--color-danger-border); }
.rb-status.is-info { background: var(--color-info-soft); color: var(--color-info-text); border-color: var(--color-info-border); }
.badge { font-size: var(--font-size-2xs); font-weight: 600; padding: 3px 7px; border-radius: var(--radius-sm); letter-spacing: .01em; }
.badge.rounded-pill { border-radius: var(--radius-pill) !important; }
.text-bg-light { background: var(--color-neutral-soft) !important; color: var(--color-neutral-text) !important; border: 1px solid var(--color-border); }
.text-bg-secondary { background: #E2E8F0 !important; color: #334155 !important; }
.text-bg-success { background: var(--color-success-soft) !important; color: var(--color-success-text) !important; border: 1px solid var(--color-success-border); }
.text-bg-warning { background: var(--color-warning-soft) !important; color: var(--color-warning-text) !important; border: 1px solid var(--color-warning-border); }
.text-bg-danger { background: var(--color-danger-soft) !important; color: var(--color-danger-text) !important; border: 1px solid var(--color-danger-border); }
.text-bg-info { background: var(--color-info-soft) !important; color: var(--color-info-text) !important; border: 1px solid var(--color-info-border); }
.text-bg-primary { background: var(--color-primary) !important; color: #fff !important; }
.text-success { color: var(--color-success-text) !important; }
.text-danger { color: var(--color-danger-text) !important; }
.text-warning { color: var(--color-warning-text) !important; }
.text-primary { color: var(--color-primary) !important; }

/* ---------- 7. Alertes, notifications, menus, modales ---------- */
.alert { font-size: var(--font-size-sm); padding: 10px 14px; border-radius: var(--radius-md); border: 1px solid transparent; margin-bottom: var(--space-4); }
.alert-success { background: var(--color-success-soft); color: #14532D; border-color: var(--color-success-border); }
.alert-warning { background: var(--color-warning-soft); color: #7C2D12; border-color: var(--color-warning-border); }
.alert-danger { background: var(--color-danger-soft); color: #7F1D1D; border-color: var(--color-danger-border); }
.alert-info { background: var(--color-info-soft); color: #1E3A8A; border-color: var(--color-info-border); }
.alert-light, .alert-secondary { background: var(--color-surface-2); color: var(--color-text); border-color: var(--color-border); }
.alert .bi { font-size: 15px; }
.alert-link { font-weight: 600; }
.rb-flash { box-shadow: var(--shadow-xs); animation: rb-fade-in 200ms ease; }
.dropdown-menu {
    --bs-dropdown-font-size: var(--font-size-sm); --bs-dropdown-border-color: var(--color-border); --bs-dropdown-border-radius: var(--radius-lg);
    --bs-dropdown-link-hover-bg: var(--color-surface-hover); --bs-dropdown-link-active-bg: var(--color-primary);
    --bs-dropdown-item-padding-y: 6px; --bs-dropdown-item-padding-x: 12px; --bs-dropdown-padding-y: 6px;
    box-shadow: var(--shadow-md); animation: rb-fade-in 120ms ease;
}
.dropdown-menu .dropdown-item { border-radius: var(--radius-sm); margin: 0 6px; width: auto; }
.dropdown-menu .dropdown-item i { color: var(--color-text-secondary); }
.dropdown-header { font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-tertiary); }
.dropdown-divider { border-color: var(--color-border); margin: 6px 0; }
.modal { --bs-modal-border-radius: var(--radius-lg); --bs-modal-border-color: var(--color-border); --bs-modal-header-padding: 14px 18px; --bs-modal-padding: 18px; }
.modal-content { box-shadow: var(--shadow-lg); }
.modal-title { font-size: var(--font-size-lg); font-weight: 600; }
.modal-footer { background: var(--color-surface-2); border-top-color: var(--color-border); }
.tooltip { --bs-tooltip-font-size: var(--font-size-xs); --bs-tooltip-bg: var(--color-navy); --bs-tooltip-border-radius: var(--radius-sm); }
.popover { --bs-popover-font-size: var(--font-size-sm); --bs-popover-border-color: var(--color-border); box-shadow: var(--shadow-md); }
.toast { font-size: var(--font-size-sm); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
@keyframes rb-fade-in { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: none; } }

/* ---------- 8. Navigation secondaire : onglets, pastilles, fil d'Ariane, pagination ---------- */
.nav-tabs { --bs-nav-tabs-border-color: var(--color-border); gap: 2px; border-bottom: 1px solid var(--color-border); }
.nav-tabs .nav-link {
    font-size: var(--font-size-sm); font-weight: 500; color: var(--color-text-secondary); border: 0; border-bottom: 2px solid transparent;
    border-radius: 0; padding: 8px 12px; margin-bottom: -1px; transition: color var(--transition), border-color var(--transition);
}
.nav-tabs .nav-link:hover { color: var(--color-text); border-bottom-color: var(--color-border-strong); }
.nav-tabs .nav-link.active { color: var(--color-primary); background: transparent; border-bottom-color: var(--color-primary); }
.nav-pills .nav-link { font-size: var(--font-size-sm); font-weight: 500; color: var(--color-text-secondary); border-radius: var(--radius-md); padding: 6px 12px; }
.nav-pills .nav-link:hover { background: var(--color-surface-hover); color: var(--color-text); }
.nav-pills .nav-link.active { background: var(--color-primary-soft); color: var(--color-primary); }
.breadcrumb { --bs-breadcrumb-divider-color: var(--color-text-tertiary); --bs-breadcrumb-item-active-color: var(--color-text-secondary); font-size: var(--font-size-xs); margin-bottom: 4px; }
.breadcrumb a { color: var(--color-text-secondary); }
.breadcrumb a:hover { color: var(--color-primary); }
.pagination { --bs-pagination-font-size: var(--font-size-sm); --bs-pagination-padding-y: 4px; --bs-pagination-padding-x: 10px; --bs-pagination-border-color: var(--color-border); --bs-pagination-color: var(--color-text); --bs-pagination-hover-bg: var(--color-surface-hover); gap: 4px; }
.pagination .page-link { border-radius: var(--radius-sm) !important; min-width: 30px; text-align: center; }
.page-link { color: var(--color-text); }
.active > .page-link, .page-link.active { background-color: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.list-group { --bs-list-group-border-color: var(--color-border); --bs-list-group-item-padding-y: 9px; --bs-list-group-item-padding-x: 14px; font-size: var(--font-size-sm); }
.list-group-item-action:hover { background: var(--color-surface-2); }
.progress { --bs-progress-height: 6px; --bs-progress-bg: #E2E8F0; --bs-progress-bar-bg: var(--color-primary); border-radius: var(--radius-pill); }
.accordion { --bs-accordion-border-color: var(--color-border); --bs-accordion-btn-padding-y: 10px; --bs-accordion-active-bg: var(--color-primary-soft); --bs-accordion-active-color: var(--color-primary); }
.accordion-button { font-size: var(--font-size-sm); font-weight: 600; }

/* ---------- 9. Structure : menu latéral ---------- */
.rb-skip { position: absolute; left: 1rem; top: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; }
.rb-app { min-height: 100vh; }
.rb-sidebar {
    position: fixed; inset: 0 auto 0 0; width: var(--sidebar-width); background: var(--color-navy);
    color: var(--color-navy-text); display: flex; flex-direction: column; z-index: 1040; transition: transform 200ms ease;
    border-right: 1px solid rgba(255, 255, 255, .04);
}
.rb-brand { display: flex; align-items: center; justify-content: space-between; height: var(--topbar-height); padding: 0 16px; border-bottom: 1px solid rgba(255, 255, 255, .06); }
.rb-brand-link { display: flex; align-items: center; gap: 10px; text-decoration: none; color: #fff; }
.rb-brand-link:hover { text-decoration: none; color: #fff; }
.rb-brand-text { font-weight: 650; font-size: 15px; letter-spacing: -.01em; }
.rb-logo {
    width: 28px; height: 28px; border-radius: 7px; display: inline-grid; place-items: center;
    background: linear-gradient(140deg, #3B82F6 0%, var(--color-primary) 60%, #1E3A8A 100%); color: #fff; font-weight: 700; font-size: 14px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255, 255, 255, .18);
}
.rb-sidebar-close { color: var(--color-navy-text); min-height: 0; }
.rb-nav { flex: 1; overflow-y: auto; padding: 8px 10px 16px; scrollbar-width: thin; scrollbar-color: #334155 transparent; }
.rb-nav-group {
    font-size: 10.5px; text-transform: uppercase; letter-spacing: .09em; color: var(--color-navy-muted);
    padding: 16px 10px 6px; font-weight: 600;
}
.rb-nav-link {
    position: relative; display: flex; align-items: center; gap: 10px; padding: 6px 10px; min-height: 32px; border-radius: var(--radius-sm);
    color: var(--color-navy-text); text-decoration: none; font-size: 13px; font-weight: 450; margin-bottom: 1px;
    transition: background-color var(--transition), color var(--transition);
}
.rb-nav-link i { font-size: 15px; width: 16px; text-align: center; opacity: .75; transition: opacity var(--transition); }
.rb-nav-link:hover { background: rgba(255, 255, 255, .06); color: #fff; text-decoration: none; }
.rb-nav-link:hover i { opacity: 1; }
.rb-nav-link.is-active { background: rgba(59, 130, 246, .16); color: #fff; font-weight: 550; }
.rb-nav-link.is-active::before { content: ""; position: absolute; left: -10px; top: 6px; bottom: 6px; width: 3px; border-radius: 0 3px 3px 0; background: #60A5FA; }
.rb-nav-link.is-active i { opacity: 1; color: #93C5FD; }
.rb-nav-link.is-soon { opacity: .45; cursor: default; }
.rb-nav-link.is-soon:hover { background: none; color: var(--color-navy-text); }
.rb-soon { margin-left: auto; font-size: 10px; border: 1px solid #334155; border-radius: 4px; padding: 0 4px; }
.rb-sidebar-footer { padding: 12px 16px; font-size: var(--font-size-xs); color: var(--color-navy-muted); border-top: 1px solid rgba(255, 255, 255, .06); display: flex; align-items: center; gap: 8px; }
.rb-sidebar-footer::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #22C55E; box-shadow: 0 0 0 3px rgba(34, 197, 94, .15); flex: none; }
.rb-nav-parent .rb-nav-caret { font-size: 10px; width: auto; transition: transform var(--transition); opacity: .6; }
.rb-nav-parent:not(.collapsed) .rb-nav-caret { transform: rotate(90deg); }
.rb-nav-child { padding-left: 36px; font-size: 12.5px; min-height: 29px; }
.rb-nav-subgroup { padding: 8px 10px 3px 36px; font-size: 10px; text-transform: uppercase; letter-spacing: .07em; color: var(--color-navy-muted); }

/* ---------- 10. Structure : barre du haut et contenu ---------- */
.rb-main { margin-left: var(--sidebar-width); min-height: 100vh; display: flex; flex-direction: column; }
.rb-topbar {
    position: sticky; top: 0; z-index: 1030; display: flex; align-items: center; gap: 12px;
    height: var(--topbar-height); padding: 0 24px; background: rgba(255, 255, 255, .88); backdrop-filter: saturate(180%) blur(8px);
    border-bottom: 1px solid var(--color-border);
}
.rb-search { position: relative; flex: 1; max-width: 440px; }
.rb-search > i { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--color-text-tertiary); font-size: 13px; pointer-events: none; }
.rb-search input.form-control {
    padding-left: 32px; padding-right: 58px; background: var(--color-surface-2); border-color: var(--color-border); box-shadow: none;
    min-height: 34px; font-size: var(--font-size-sm); border-radius: var(--radius-md);
}
.rb-search input.form-control:focus { background: var(--color-surface); border-color: var(--color-primary); box-shadow: var(--focus-ring); }
.rb-search kbd {
    position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: var(--color-surface);
    color: var(--color-text-secondary); border: 1px solid var(--color-border); box-shadow: 0 1px 0 var(--color-border); font-size: 10.5px; padding: 1px 5px; border-radius: 4px;
    font-family: var(--font-sans);
}
.rb-topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.rb-topbar-actions > .dropdown > .btn-light, .rb-topbar .btn-light.position-relative { border-color: transparent; box-shadow: none; background: transparent; min-width: 34px; }
.rb-topbar-actions > .dropdown > .btn-light:hover { background: var(--color-surface-hover); }
.rb-agency-label { color: var(--color-text-secondary); font-size: var(--font-size-xs); padding: 5px 10px; border: 1px solid var(--color-border); border-radius: var(--radius-pill); background: var(--color-surface); }
.rb-user-btn { display: flex; align-items: center; gap: 8px; border: 0; padding: 3px 6px; border-radius: var(--radius-md); font-size: var(--font-size-sm); min-height: 0; }
.rb-user-btn:hover { background: var(--color-surface-hover); }
.rb-user-btn .small { font-size: var(--font-size-2xs); }
.rb-avatar {
    width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(140deg, #DBEAFE, #BFDBFE); color: var(--color-primary-active);
    display: inline-grid; place-items: center; font-weight: 650; font-size: 11.5px; letter-spacing: .02em;
}
.rb-content { padding: 20px 24px 32px; max-width: 1560px; width: 100%; }
.rb-page-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 16px; margin-bottom: 18px; }
.rb-page-title { font-size: var(--font-size-2xl); font-weight: 650; margin: 0; letter-spacing: -.02em; line-height: 1.25; }
.rb-page-subtitle { color: var(--color-text-secondary); margin: 3px 0 0; font-size: var(--font-size-sm); }
.rb-page-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.rb-page-actions > form { margin: 0; }
.rb-backdrop { display: none; }

/* ---------- 11. Cartes et blocs ---------- */
.rb-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.rb-card > .rb-table-wrap:last-child, .rb-card > .list-group:last-child { border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.rb-card-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--color-border); min-height: 48px; }
.rb-card-title { font-size: var(--font-size-md); font-weight: 600; margin: 0; letter-spacing: -.005em; display: flex; align-items: center; gap: 6px; }
.rb-card-title .bi { color: var(--color-text-secondary); font-size: 15px; }
.rb-card-title .badge { font-size: 10.5px; }
.rb-card-body { padding: 16px; }
.rb-card-footer { padding: 10px 16px; border-top: 1px solid var(--color-border); background: var(--color-surface-2); border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.rb-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 16px; border-bottom: 1px solid var(--color-border); background: var(--color-surface-2); }
.rb-filters .form-control, .rb-filters .form-select { max-width: 240px; min-height: 32px; font-size: 12.5px; }
.rb-filters .btn { min-height: 32px; }
.rb-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; border-top: 1px solid var(--color-border); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rb-empty { text-align: center; padding: 36px 16px; color: var(--color-text-secondary); font-size: var(--font-size-sm); }
.rb-empty i { font-size: 26px; display: block; margin-bottom: 8px; opacity: .45; }

/* Indicateurs */
.rb-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr)); gap: 12px; margin-bottom: 20px; }
.rb-kpi { min-width: 0; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 14px 16px; box-shadow: var(--shadow-sm); transition: border-color var(--transition), box-shadow var(--transition); }
.rb-kpi:hover { border-color: var(--color-border-strong); }
.rb-kpi-label { color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 500; display: flex; align-items: center; gap: 6px; }
.rb-kpi-label .bi { font-size: 13px; }
.rb-kpi-value { font-size: var(--font-size-2xl); font-weight: 650; margin-top: 4px; font-variant-numeric: tabular-nums; letter-spacing: -.02em; line-height: 1.2; }
.rb-kpi-note { font-size: var(--font-size-xs); color: var(--color-text-secondary); margin-top: 2px; }
.rb-mini-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(118px, 100%), 1fr)); gap: 10px; margin-bottom: 16px; }
.rb-mini-kpi { min-width: 0; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 10px 12px; box-shadow: var(--shadow-xs); }
.rb-mini-kpi .label { font-size: var(--font-size-2xs); color: var(--color-text-secondary); font-weight: 500; text-transform: uppercase; letter-spacing: .04em; }
.rb-mini-kpi .value { font-size: var(--font-size-lg); font-weight: 650; font-variant-numeric: tabular-nums; letter-spacing: -.01em; margin-top: 2px; }

/* Listes de définitions (fiches) : libellé discret à gauche, valeur à droite */
.rb-dl { display: grid; grid-template-columns: minmax(130px, 36%) 1fr; gap: 0; margin: 0; font-size: var(--font-size-sm); }
.rb-dl dt, .rb-dl dd { padding: 7px 0; border-bottom: 1px solid #F1F5F9; margin: 0; }
.rb-dl dt { color: var(--color-text-secondary); font-weight: 450; padding-right: 12px; }
.rb-dl dd { color: var(--color-text); font-weight: 500; min-width: 0; overflow-wrap: anywhere; }
.rb-dl dt:nth-last-of-type(1), .rb-dl dd:last-of-type { border-bottom: 0; }

/* Titres de section dans les cartes */
.rb-section-title { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-secondary); font-weight: 600; margin: 18px 0 8px; }
.rb-section-title:first-child { margin-top: 0; }

.rb-checklist { list-style: none; padding: 0; margin: 0; }
.rb-checklist li { display: flex; align-items: center; gap: 10px; padding: 9px 16px; border-bottom: 1px solid var(--color-border); font-size: var(--font-size-sm); }
.rb-checklist li:last-child { border-bottom: 0; }
.rb-checklist .bi-check-circle-fill { color: var(--color-success); }
.rb-checklist .bi-circle { color: var(--color-border-strong); }
.rb-checklist .is-done span { color: var(--color-text-secondary); text-decoration: line-through; }

.rb-roadmap { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.rb-roadmap-item { border: 1px dashed var(--color-border-strong); border-radius: var(--radius-md); padding: 10px 12px; background: var(--color-surface-2); }
.rb-roadmap-item strong { display: block; font-size: var(--font-size-sm); }
.rb-roadmap-item span { font-size: var(--font-size-xs); color: var(--color-text-secondary); }

.rb-matrix th.module { background: var(--color-surface-2); font-weight: 600; }
.rb-matrix td { text-align: center; }
.rb-matrix td:first-child, .rb-matrix th:first-child { text-align: left; }
.rb-diff { font-size: var(--font-size-xs); }
.rb-diff td { vertical-align: top; }
.rb-diff .old { background: var(--color-danger-soft); }
.rb-diff .new { background: var(--color-info-soft); }
.rb-qr { width: 196px; height: 196px; padding: 8px; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.rb-secret { letter-spacing: .12em; word-break: break-all; }

/* Fiches : en-tête d'entité, galeries, timeline */
.rb-entity-head { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.rb-entity-icon { width: 40px; height: 40px; border-radius: var(--radius-md); background: var(--color-primary-soft); color: var(--color-primary); display: grid; place-items: center; font-size: 18px; flex: none; }
.rb-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.rb-gallery a { display: block; aspect-ratio: 4 / 3; border-radius: var(--radius-sm); overflow: hidden; border: 1px solid var(--color-border); background: var(--color-surface-hover); }
.rb-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform 200ms ease; }
.rb-gallery a:hover img { transform: scale(1.03); }
.rb-share-total { font-variant-numeric: tabular-nums; font-weight: 600; }
.rb-share-total.is-ok { color: var(--color-success-text); }
.rb-share-total.is-bad { color: var(--color-danger-text); }
.rb-feature-list { display: flex; flex-wrap: wrap; gap: 6px; }
.rb-feature-list span { background: var(--color-neutral-soft); color: var(--color-neutral-text); border-radius: var(--radius-pill); padding: 2px 9px; font-size: var(--font-size-xs); }
.rb-checkgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 4px 12px; }
.rb-timeline { list-style: none; padding: 0; margin: 0; }
.rb-timeline li { padding: 7px 0 7px 16px; border-left: 2px solid var(--color-border); position: relative; font-size: var(--font-size-xs); }
.rb-timeline li::before { content: ""; position: absolute; left: -5px; top: 12px; width: 8px; height: 8px; border-radius: 50%; background: var(--color-primary); box-shadow: 0 0 0 3px var(--color-surface); }
.rb-masked { font-family: var(--font-mono); letter-spacing: .05em; }

/* Notifications */
.rb-badge {
    position: absolute; top: 1px; right: 1px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px;
    background: var(--color-danger); color: #fff; font-size: 10px; font-weight: 700; line-height: 16px; text-align: center; box-shadow: 0 0 0 2px #fff;
}
.rb-notif-menu { width: 360px; max-width: 92vw; overflow: hidden; }
.rb-notif-item { display: block; padding: 9px 14px; border-bottom: 1px solid var(--color-border); text-decoration: none; color: var(--color-text); transition: background-color var(--transition); }
.rb-notif-item:hover { background: var(--color-surface-2); }
.rb-notif-item.is-unread { background: var(--color-primary-soft); box-shadow: inset 3px 0 0 var(--color-primary); }
.rb-notif-title { display: block; font-size: var(--font-size-sm); }
.rb-notif-meta { display: block; font-size: var(--font-size-2xs); color: var(--color-text-secondary); margin-top: 1px; }

/* ---------- 12. Authentification et erreurs ---------- */
.rb-auth { min-height: 100vh; background: var(--color-background); }
.rb-auth-panel { display: grid; grid-template-columns: minmax(360px, 42%) 1fr; min-height: 100vh; }
.rb-auth-aside {
    background: radial-gradient(120% 90% at 0% 0%, #1E3A8A 0%, var(--color-navy) 62%);
    color: var(--color-navy-text); padding: 40px; display: flex; flex-direction: column; justify-content: space-between;
}
.rb-auth-brand { display: flex; align-items: center; gap: 10px; font-weight: 650; font-size: 17px; color: inherit; }
.rb-auth-main .rb-auth-brand { color: var(--color-text); }
.rb-auth-tagline { font-size: 26px; line-height: 1.25; font-weight: 600; color: #fff; max-width: 24ch; letter-spacing: -.02em; }
.rb-auth-points { list-style: none; padding: 0; margin: 24px 0 0; font-size: var(--font-size-sm); }
.rb-auth-points li { display: flex; gap: 10px; margin-bottom: 10px; }
.rb-auth-points i { color: #60A5FA; }
.rb-auth-main { display: grid; place-items: center; padding: 32px 16px; }
.rb-auth-card { width: 100%; max-width: 380px; }
.rb-error-page { min-height: 100vh; display: grid; place-items: center; padding: 16px; }
.rb-error-card { text-align: center; max-width: 560px; }
.rb-error-code { font-size: 56px; font-weight: 700; color: var(--color-primary); line-height: 1; margin-bottom: 8px; letter-spacing: -.03em; }
.rb-debug { text-align: left; margin-top: 24px; background: var(--color-navy); color: #E2E8F0; padding: 16px; border-radius: var(--radius-md); font-size: var(--font-size-xs); max-height: 50vh; overflow: auto; }

/* ---------- 13. Portails propriétaire / locataire ---------- */
.rb-portal { background: var(--color-background); min-height: 100vh; display: flex; flex-direction: column; }
.rb-portal-bar { background: var(--color-navy); color: #fff; position: sticky; top: 0; z-index: 1020; }
.rb-portal-bar > .container-lg:first-child { padding-top: 10px; padding-bottom: 6px; }
.rb-portal-brand { display: flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; min-width: 0; }
.rb-portal-brand:hover { color: #fff; text-decoration: none; }
.rb-portal-user { color: #fff; border: 1px solid rgba(255, 255, 255, .25); max-width: 60vw; overflow: hidden; text-overflow: ellipsis; }
.rb-portal-user:hover, .rb-portal-user:focus, .rb-portal-user.show { color: #fff; background: rgba(255, 255, 255, .1); }
.rb-portal-nav { display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; }
.rb-portal-nav::-webkit-scrollbar { display: none; }
.rb-portal-nav a { display: inline-flex; align-items: center; gap: 6px; padding: 9px 12px; color: var(--color-navy-text); text-decoration: none; white-space: nowrap; border-bottom: 2px solid transparent; font-weight: 500; font-size: var(--font-size-sm); }
.rb-portal-nav a:hover { color: #fff; text-decoration: none; }
.rb-portal-nav a.is-active { color: #fff; border-bottom-color: #60A5FA; }
.rb-portal-main { flex: 1; padding-top: 20px; padding-bottom: 32px; }
.rb-portal-footer { font-size: var(--font-size-xs); color: var(--color-text-secondary); padding-bottom: 24px; }
.rb-portal-hero { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin-bottom: 20px; }
.rb-portal-hero .rb-mini-kpi .value { font-size: var(--font-size-xl); }
.rb-portal-hero .rb-mini-kpi.is-alert { border-color: var(--color-danger-border); background: var(--color-danger-soft); }
.rb-portal-hero .rb-mini-kpi.is-good { border-color: var(--color-success-border); background: var(--color-success-soft); }
.rb-portal-list { list-style: none; margin: 0; padding: 0; }
.rb-portal-list > li { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-top: 1px solid var(--color-border); font-size: var(--font-size-sm); }
.rb-portal-list > li:first-child { border-top: 0; }
.rb-portal-list .grow { flex: 1; min-width: 0; }
.rb-portal-list .meta { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rb-amount { white-space: nowrap; }
@media (max-width: 575.98px) {
    .rb-portal-main .table { font-size: var(--font-size-xs); }
    .rb-portal-hide-sm { display: none; }
}

/* ---------- 14. Modules particuliers ---------- */
/* Boîte WhatsApp */
.rb-wa-thread { background: #EFEAE2; padding: 16px; max-height: 60vh; min-height: 240px; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; }
.rb-wa-msg { max-width: 78%; display: flex; flex-direction: column; }
.rb-wa-msg.is-in { align-self: flex-start; }
.rb-wa-msg.is-out { align-self: flex-end; align-items: flex-end; }
.rb-wa-bubble { background: #fff; border-radius: 10px; padding: 7px 11px; box-shadow: 0 1px 1px rgba(0, 0, 0, .08); white-space: normal; word-wrap: break-word; font-size: var(--font-size-sm); }
.rb-wa-msg.is-out .rb-wa-bubble { background: #D9FDD3; }
.rb-wa-meta { font-size: var(--font-size-2xs); color: var(--color-text-secondary); margin-top: 2px; }
/* Graphiques SVG */
.rb-chart { width: 100%; height: auto; max-height: 280px; display: block; }
.rb-chart-grid { stroke: #EEF2F7; stroke-width: 1; }
.rb-chart-axis { font-size: 11px; fill: var(--color-text-secondary); font-family: inherit; }
.rb-report-card { transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition); }
.rb-report-card:hover { border-color: #BFD0FB; box-shadow: var(--shadow-md); }
.rb-trend-up { color: var(--color-success-text); }
.rb-trend-down { color: var(--color-danger-text); }
@media print { .rb-chart-grid { stroke: #ccc; } }
/* Assistant IA */
.rb-ai-thread { max-height: 62vh; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; }
.rb-ai-q { align-self: flex-end; background: var(--color-primary-soft); border-radius: 12px 12px 3px 12px; padding: 8px 12px; max-width: 85%; font-size: var(--font-size-sm); }
.rb-ai-a { align-self: flex-start; background: #fff; border: 1px solid var(--color-border); border-radius: 12px 12px 12px 3px; padding: 10px 13px; max-width: 95%; font-size: var(--font-size-sm); }
/* Éditeur de documents */
.rb-editor-area { min-height: 420px; max-height: 70vh; overflow-y: auto; background: #fff; color: #1d2733; padding: 24px 28px; line-height: 1.55; }
.rb-editor-area h1 { font-size: 1.3rem; text-align: center; margin: .6rem 0 1rem; }
.rb-editor-area h3 { font-size: 1rem; margin: 1rem 0 .4rem; }
.rb-editor-area table { width: 100%; }
.rb-editor-area td { vertical-align: top; padding: 4px 8px; }
.rp-generated h1 { font-size: 18px; text-align: center; margin: 6px 0 16px; }
.rp-generated h3 { font-size: 14px; margin: 14px 0 6px; }
.rp-generated table { width: 100%; margin-top: 24px; }
.rp-generated td { vertical-align: top; width: 50%; padding-bottom: 60px; }
.rp-generated hr { border: 0; border-top: 2px dashed #bbb; margin: 28px 0; }
/* Vue Immobilier Loyer : listes Propriétaire / Locataire en haut */
.rb-work-context { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 0 1 460px; padding: 6px 0; }
.rb-work-row { display: flex; align-items: center; gap: 6px; margin: 0; }
.rb-work-row label { width: 84px; flex: none; text-align: right; font-size: var(--font-size-xs); color: var(--color-text-secondary); margin: 0; }
.rb-work-row select, .rb-work-row input { flex: 1; min-width: 0; min-height: 26px; height: 26px; padding-top: 1px; padding-bottom: 1px; font-size: 12.5px; }
.rb-topbar:has(.rb-work-context) { height: auto; min-height: var(--topbar-height); }
.rb-search.rb-search-compact { max-width: 300px; min-width: 160px; }
/* Vue Immobilier Loyer : les listes Propriétaire / Locataire priment ; l'agence et le nom passent dans les menus. */
@media (max-width: 1399.98px) {
    .rb-topbar:has(.rb-work-context) .rb-agency-label,
    .rb-topbar:has(.rb-work-context) .rb-user-btn > .d-md-inline { display: none !important; }
}
/* Icônes d'action des listes et légende */
.rb-row-icons { white-space: nowrap; }
.rb-row-icons a, .rb-row-icons button { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; padding: 0; border: 0; background: none; color: var(--color-text-secondary); border-radius: var(--radius-sm); font-size: 14px; transition: background-color var(--transition), color var(--transition); }
.rb-row-icons a:hover, .rb-row-icons button:hover { background: var(--color-surface-hover); color: var(--color-text); text-decoration: none; }
.rb-row-icons .is-pay { color: var(--color-success); }
.rb-row-icons .is-late { color: var(--color-danger); }
.rb-row-icons .is-sent { color: var(--color-success); }
.rb-legend { margin: 16px auto; max-width: 720px; border: 1px dashed var(--color-border-strong); border-radius: var(--radius-md); padding: 8px 12px; font-size: var(--font-size-xs); color: var(--color-text-secondary); display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 2px 12px; }
.rb-legend strong { grid-column: 1 / -1; color: var(--color-text); }
.rb-legend i { width: 1.2rem; display: inline-block; text-align: center; }
.rb-occupancy { width: 104px; height: 104px; border-radius: 50%; display: grid; place-items: center; background: conic-gradient(var(--color-primary) calc(var(--rb-pct) * 1%), #E2E8F0 0); }
.rb-occupancy > div { width: 86px; height: 86px; border-radius: 50%; background: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.1; }
.rb-occupancy small { font-size: var(--font-size-2xs); color: var(--color-text-secondary); text-align: center; }
.rb-occupancy strong { font-size: var(--font-size-lg); }
.rb-block { border-bottom: 1px solid var(--color-border); }
.rb-block:last-child { border-bottom: 0; }
.rb-block-head { display: block; padding: 9px 16px; font-weight: 600; color: inherit; text-decoration: none; font-size: var(--font-size-sm); transition: background-color var(--transition); }
.rb-block-head:hover { background: var(--color-surface-2); }

/* ---------- 15. Utilitaires ---------- */
.rb-muted { color: var(--color-text-secondary); }
.rb-divider { height: 1px; background: var(--color-border); margin: 12px 0; }
.card { --bs-card-border-color: var(--color-border); --bs-card-border-radius: var(--radius-lg); --bs-card-cap-bg: var(--color-surface-2); box-shadow: var(--shadow-sm); }
.border, .border-top, .border-bottom, .border-start, .border-end { border-color: var(--color-border) !important; }
.bg-light { background-color: var(--color-surface-2) !important; }
.shadow-sm { box-shadow: var(--shadow-sm) !important; }
.rounded { border-radius: var(--radius-md) !important; }
.fs-5 { font-size: 16px !important; } .fs-4 { font-size: 18px !important; } .fs-3 { font-size: 22px !important; }

/* ---------- 16. Responsive ---------- */
@media (max-width: 1199.98px) {
    .rb-content { padding: 16px 20px 28px; }
}
@media (max-width: 991.98px) {
    .rb-sidebar { transform: translateX(-100%); box-shadow: var(--shadow-lg); }
    .rb-sidebar.is-open { transform: none; }
    .rb-sidebar.is-open + .rb-backdrop { display: block; position: fixed; inset: 0; background: rgba(15, 23, 42, .45); z-index: 1035; backdrop-filter: blur(1px); }
    .rb-main { margin-left: 0; }
    .rb-topbar { padding: 0 12px; }
    .rb-content { padding: 14px 14px 24px; }
    .rb-search kbd { display: none; }
    .rb-auth-panel { grid-template-columns: 1fr; }
    .rb-auth-aside { display: none; }
    .rb-work-context { flex: 1 1 auto; }
    .rb-work-row label { width: auto; }
}
@media (max-width: 575.98px) {
    .rb-search { display: none; }
    /* Téléphone (DG, 10/10/2026) : les listes Propriétaire / Locataire passent sur une seconde ligne, sous les boutons. */
    .rb-topbar:has(.rb-work-context) { flex-wrap: wrap; row-gap: 0; padding-top: 6px; padding-bottom: 2px; }
    .rb-topbar:has(.rb-work-context) .rb-work-context { order: 99; flex: 1 1 100%; padding: 2px 0 4px; }
    .rb-page-title { font-size: 19px; }
    .rb-dl { grid-template-columns: 1fr; }
    .rb-dl dt { border-bottom: 0; padding-bottom: 0; }
    .rb-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .rb-kpi { padding: 12px; }
    .rb-kpi-value { font-size: 16px; overflow-wrap: break-word; }
    .rb-mini-kpi .value { overflow-wrap: break-word; }
}
@media (max-width: 419.98px) {
    .rb-kpis { grid-template-columns: minmax(0, 1fr); }
    .rb-kpi-value { font-size: 18px; }
    .rb-page-actions .btn { min-height: 34px; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- 17. Structure : menu réduit, création rapide, palette de commandes ---------- */
.rb-sidebar-collapse { color: var(--color-navy-muted); min-height: 0; padding: 4px 6px; border: 0; }
.rb-sidebar-collapse:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.rb-quick-btn { min-width: 34px; }
@media (min-width: 992px) {
    .rb-collapsed { --sidebar-width: 64px; }
    .rb-sidebar, .rb-main { transition: width 180ms ease, margin-left 180ms ease; }
    .rb-collapsed .rb-sidebar { overflow: hidden; }
    .rb-collapsed .rb-brand { padding: 0 18px; }
    .rb-collapsed .rb-brand-text, .rb-collapsed .rb-nav-link > span, .rb-collapsed .rb-nav-caret, .rb-collapsed .rb-soon,
    .rb-collapsed .rb-nav-group, .rb-collapsed .rb-sidebar-footer { visibility: hidden; }
    .rb-collapsed .rb-nav-group { height: 12px; padding: 0; }
    .rb-collapsed .rb-nav .collapse, .rb-collapsed .rb-nav .collapsing { display: none; }
    .rb-collapsed .rb-sidebar-collapse { position: absolute; left: 64px; top: 14px; opacity: 0; }
    /* Survol : le menu se déploie par-dessus le contenu, sans décaler la page. */
    .rb-collapsed .rb-sidebar:hover, .rb-collapsed .rb-sidebar:focus-within { width: 240px; box-shadow: var(--shadow-lg); }
    .rb-collapsed .rb-sidebar:hover .rb-brand-text, .rb-collapsed .rb-sidebar:hover .rb-nav-link > span, .rb-collapsed .rb-sidebar:hover .rb-nav-caret,
    .rb-collapsed .rb-sidebar:hover .rb-soon, .rb-collapsed .rb-sidebar:hover .rb-nav-group, .rb-collapsed .rb-sidebar:hover .rb-sidebar-footer,
    .rb-collapsed .rb-sidebar:focus-within .rb-brand-text, .rb-collapsed .rb-sidebar:focus-within .rb-nav-link > span,
    .rb-collapsed .rb-sidebar:focus-within .rb-nav-group { visibility: visible; }
    .rb-collapsed .rb-sidebar:hover .rb-nav-group, .rb-collapsed .rb-sidebar:focus-within .rb-nav-group { height: auto; padding: 16px 10px 6px; }
    .rb-collapsed .rb-sidebar:hover .rb-nav .collapse.show, .rb-collapsed .rb-sidebar:focus-within .rb-nav .collapse.show { display: block; }
    .rb-collapsed .rb-sidebar:hover .rb-brand { padding: 0 16px; }
    .rb-collapsed .rb-sidebar:hover .rb-sidebar-collapse { position: static; opacity: 1; }
}

.rb-palette .modal-dialog { max-width: 620px; margin-top: 12vh; }
.rb-palette .modal-content { overflow: hidden; border: 1px solid var(--color-border); }
.rb-palette-search { display: flex; align-items: center; gap: 10px; padding: 0 16px; border-bottom: 1px solid var(--color-border); }
.rb-palette-search > i { color: var(--color-text-tertiary); font-size: 16px; }
.rb-palette-input { flex: 1; border: 0; outline: 0; height: 52px; font-size: 15px; color: var(--color-text); background: transparent; min-width: 0; }
.rb-palette-input::placeholder { color: var(--color-text-tertiary); }
.rb-palette kbd { font-family: var(--font-sans); font-size: 10.5px; color: var(--color-text-secondary); background: var(--color-surface-2); border: 1px solid var(--color-border); box-shadow: 0 1px 0 var(--color-border); border-radius: 4px; padding: 1px 5px; margin-right: 2px; }
.rb-palette-list { max-height: min(56vh, 460px); overflow-y: auto; padding: 6px 8px 8px; }
.rb-palette-group { font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; color: var(--color-text-tertiary); padding: 10px 10px 4px; }
.rb-palette-item { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--radius-md); color: var(--color-text); font-size: var(--font-size-sm); min-height: 38px; }
.rb-palette-item:hover { text-decoration: none; color: var(--color-text); }
.rb-palette-item > i { font-size: 15px; color: var(--color-text-secondary); width: 18px; text-align: center; flex: none; }
.rb-palette-item.is-active { background: var(--color-primary-soft); color: var(--color-primary-active); }
.rb-palette-item.is-active > i { color: var(--color-primary); }
.rb-palette-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; font-weight: 500; }
.rb-palette-meta { margin-left: auto; font-size: var(--font-size-xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 45%; flex: none; padding-left: 12px; }
.rb-palette-status { padding: 14px 10px; font-size: var(--font-size-sm); color: var(--color-text-secondary); text-align: center; }
.rb-palette-footer { display: flex; gap: 16px; align-items: center; padding: 8px 16px; border-top: 1px solid var(--color-border); background: var(--color-surface-2); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rb-search input[readonly] { cursor: pointer; }
@media (max-width: 575.98px) {
    .rb-palette .modal-dialog { margin: 8px; }
    .rb-palette-meta { display: none; }
}

/* ---------- 18. Tableau de bord ---------- */
.rb-kpis-main { grid-template-columns: repeat(auto-fit, minmax(min(190px, 100%), 1fr)); gap: 16px; margin-bottom: 16px; }
a.rb-kpi { text-decoration: none; }
a.rb-kpi:hover { text-decoration: none; border-color: #BFD0FB; box-shadow: var(--shadow-md); }
.rb-kpi-main { padding: 16px 18px; display: flex; flex-direction: column; }
.rb-kpi-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.rb-kpi-main .rb-kpi-label { font-size: var(--font-size-sm); }
.rb-kpi-main .rb-kpi-value { font-size: clamp(19px, 1.75vw, 24px); margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rb-kpi-main .rb-kpi-note { margin-top: 4px; }
.rb-kpi-icon { width: 34px; height: 34px; border-radius: var(--radius-md); display: grid; place-items: center; font-size: 16px; flex: none; }
.rb-kpi-icon.is-primary, .rb-queue-icon.is-info { background: var(--color-primary-soft); color: var(--color-primary); }
.rb-kpi-icon.is-success { background: var(--color-success-soft); color: var(--color-success); }
.rb-kpi-icon.is-danger, .rb-queue-icon.is-danger { background: var(--color-danger-soft); color: var(--color-danger); }
.rb-kpi-icon.is-warning, .rb-queue-icon.is-warning { background: var(--color-warning-soft); color: var(--color-warning); }
.rb-kpi-icon.is-info { background: var(--color-info-soft); color: var(--color-info); }
.rb-kpi-progress { height: 6px; border-radius: var(--radius-pill); background: #E2E8F0; overflow: hidden; margin-top: 10px; }
.rb-kpi-progress > span { display: block; height: 100%; background: var(--color-primary); border-radius: inherit; }

.rb-statbar { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr)); padding: 0; overflow: hidden; }
.rb-stat { display: flex; flex-direction: column; gap: 2px; padding: 12px 16px; color: var(--color-text); text-decoration: none; border-right: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); margin: 0 -1px -1px 0; min-width: 0; transition: background-color var(--transition); }
a.rb-stat:hover { background: var(--color-surface-2); text-decoration: none; color: var(--color-text); }
.rb-stat-label { font-size: var(--font-size-xs); color: var(--color-text-secondary); font-weight: 500; display: flex; align-items: center; gap: 6px; }
.rb-stat-label .bi { font-size: 13px; }
.rb-stat-value { font-size: var(--font-size-xl); font-weight: 650; letter-spacing: -.01em; font-variant-numeric: tabular-nums; line-height: 1.3; }
.rb-stat-value .rb-status { font-size: var(--font-size-xs); vertical-align: middle; }
.rb-stat-note { font-size: var(--font-size-2xs); color: var(--color-text-secondary); line-height: 1.35; }

.rb-queue .list-group-item { padding-top: 8px; padding-bottom: 8px; }
.rb-queue-icon { width: 28px; height: 28px; border-radius: var(--radius-sm); display: grid; place-items: center; font-size: 14px; flex: none; }
.rb-queue-count { min-width: 26px; padding: 1px 8px; border-radius: var(--radius-pill); font-size: var(--font-size-xs); font-weight: 650; text-align: center; font-variant-numeric: tabular-nums; }
.rb-queue-count.is-danger { background: var(--color-danger-soft); color: var(--color-danger-text); }
.rb-queue-count.is-warning { background: var(--color-warning-soft); color: var(--color-warning-text); }
.rb-queue-count.is-info { background: var(--color-neutral-soft); color: var(--color-neutral-text); }
@media (max-width: 575.98px) {
    .rb-kpis-main { grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .rb-kpi-main .rb-kpi-value { font-size: 20px; }
    .rb-statbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rb-stat-note { display: none; }
}

/* ---------- 19. Listes ---------- */
.rb-filters input[type="search"] {
    flex: 1 1 220px; max-width: 340px; padding-right: 30px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%2394A3B8' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85zm-5.242.656a5 5 0 1 1 0-10 5 5 0 0 1 0 10'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 10px center; background-size: 13px;
}
.rb-filters .form-select { width: auto; max-width: 220px; }
.rb-filters .input-group { width: auto; }
.rb-filters-reset { color: var(--color-text-secondary); --bs-btn-color: var(--color-text-secondary); font-weight: 500; }
.rb-filters-reset:hover { color: var(--color-danger-text); }
tr.rb-row-link { cursor: pointer; }
tr.rb-row-link:hover > td a.fw-semibold { color: var(--color-primary-hover); }
.rb-card > .rb-filters:first-child { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.rb-card > .rb-table-wrap > .table > thead th:first-child, .rb-card > .rb-table-wrap > .table > tbody td:first-child { padding-left: 16px; }
.rb-card > .rb-table-wrap > .table > thead th:last-child, .rb-card > .rb-table-wrap > .table > tbody td:last-child { padding-right: 16px; }
.rb-pagination .pagination { margin: 0; }
@media (max-width: 575.98px) {
    .rb-filters { padding: 10px 12px; }
    .rb-filters > input, .rb-filters > .form-select, .rb-filters > .form-control, .rb-filters > div:not(.input-group) { max-width: none; flex: 1 1 100%; min-width: 0; width: 100%; }
    .rb-filters > .input-group { flex: 1 1 100%; max-width: none !important; flex-wrap: nowrap; }
    .rb-filters .form-select, .rb-filters > div .form-control { max-width: 100%; }
    .rb-pagination { justify-content: center; }
}
.rb-actions-more { display: none; }
@media (max-width: 767.98px) {
    .rb-actions-more { display: block; }
    .rb-page-actions > .rb-action-secondary { display: none; }
    .rb-page-header { align-items: flex-start; }
}

/* ---------- 20. Formulaires ---------- */
.rb-card-body > .rb-section-title:not(:first-child) { border-top: 1px solid var(--color-border); padding-top: 18px; margin-top: 8px; }
.rb-section-title { display: flex; align-items: center; gap: 8px; }
.form-label .text-danger { color: var(--color-danger) !important; font-weight: 600; }
.invalid-feedback { display: flex; align-items: flex-start; gap: 4px; color: var(--color-danger-text); }
.form-control.is-invalid, .form-select.is-invalid { background-image: none; padding-right: 11px; box-shadow: 0 0 0 3px rgba(220, 38, 38, .10); }
.form-select.is-invalid { padding-right: 32px; background-image: var(--bs-form-select-bg-img); }
.form-check-label { color: var(--color-text); }
.form-switch .form-check-input { cursor: pointer; }
/* Barre d'enregistrement collante en bas de l'écran pendant la saisie. */
.rb-form-actions {
    position: sticky; bottom: 12px; z-index: 20; flex-wrap: wrap; align-items: center;
    background: rgba(255, 255, 255, .94); backdrop-filter: blur(6px); border: 1px solid var(--color-border);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 10px 12px; margin-top: 4px;
}
.rb-form-actions > .btn-primary { min-width: 120px; }
@media (max-width: 1199.98px) {
    .rb-form-actions { position: fixed; left: 12px; right: 12px; bottom: 12px; margin: 0; }
    .has-form-actions .rb-content { padding-bottom: 88px; }
}
@media (min-width: 992px) and (max-width: 1199.98px) {
    .rb-form-actions { left: calc(var(--sidebar-width) + 16px); right: 20px; }
}
@media (max-width: 575.98px) {
    .rb-form-actions { bottom: 8px; left: 8px; right: 8px; }
    .rb-form-actions > .btn { flex: 1 1 auto; }
}

/* ---------- 21. Tableaux : en-tête collant sur les longues listes ---------- */
.rb-table-wrap.is-static { overflow: visible; }
.rb-table-wrap.is-static > .table > thead > tr > th { position: sticky; top: var(--topbar-height); z-index: 2; box-shadow: inset 0 -1px 0 var(--color-border); }
.rb-topbar:has(.rb-work-context) ~ .rb-content .rb-table-wrap.is-static > .table > thead > tr > th { top: 68px; }
.rb-table-wrap[style*="max-height"] > .table > thead > tr > th { position: sticky; top: 0; z-index: 2; box-shadow: inset 0 -1px 0 var(--color-border); }
@media print { .rb-table-wrap.is-static > .table > thead > tr > th { position: static; } }

/* ---------- 22. Fiches : bande de synthèse ---------- */
.rb-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr)); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; }
.rb-summary-item { display: flex; flex-direction: column; gap: 3px; padding: 12px 16px; border-right: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); margin: 0 -1px -1px 0; min-width: 0; }
.rb-summary-label { font-size: var(--font-size-2xs); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-secondary); }
.rb-summary-value { font-size: 15px; font-weight: 600; color: var(--color-text); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.rb-summary-value a { color: var(--color-primary); }
.rb-summary-note { display: block; font-size: var(--font-size-xs); font-weight: 500; color: var(--color-text-secondary); }
@media (max-width: 575.98px) { .rb-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- 23. Téléphone : lignes de tableau en fiches ---------- */
@media (max-width: 575.98px) {
    .rb-table-wrap.has-stack { overflow: visible; }
    .rb-table-wrap.has-stack > .table { min-width: 0; }
    .table.rb-stack > thead { display: none; }
    .table.rb-stack, .table.rb-stack > tbody, .table.rb-stack > tbody > tr, .table.rb-stack > tbody > tr > td { display: block; width: 100%; }
    .table.rb-stack > tbody > tr { padding: 10px 14px; border-bottom: 1px solid var(--color-border); }
    .table.rb-stack > tbody > tr:last-child { border-bottom: 0; }
    .table.rb-stack > tbody > tr > td { border: 0; padding: 2px 0 !important; text-align: left; white-space: normal; }
    .table.rb-stack > tbody > tr > td[data-label] { display: flex; justify-content: space-between; gap: 12px; font-size: var(--font-size-sm); }
    .table.rb-stack > tbody > tr > td[data-label]::before { content: attr(data-label); color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 500; flex: none; max-width: 45%; }
    .table.rb-stack > tbody > tr > td[data-label] > .rb-cell-value { text-align: right; min-width: 0; overflow-wrap: anywhere; }
    .table.rb-stack > tbody > tr > td.num { text-align: right; }
    .table.rb-stack > tbody > tr > td.rb-cell-primary { font-size: var(--font-size-md); padding-bottom: 6px !important; }
    .table.rb-stack > tbody > tr > td.rb-cell-actions { order: 99; padding-top: 6px !important; }
    .table.rb-stack > tbody > tr > td.rb-cell-empty { display: none; }
    .table.rb-stack > tbody > tr { display: flex; flex-direction: column; }
    .table.rb-stack > tfoot { display: block; }
    .table.rb-stack > tfoot > tr { display: flex; flex-wrap: wrap; justify-content: space-between; padding: 8px 14px; }
    .table.rb-stack > tfoot > tr > * { border: 0; padding: 0 !important; background: none; }
}

.rb-cell-value { display: contents; }
@media (max-width: 575.98px) { .table.rb-stack .rb-cell-value { display: block; } }

/* ---------- 24. Deux colonnes dès 1080 px (portables à 125 % : ~1150 px utiles, menu latéral compris) ---------- */
@media (min-width: 1080px) and (max-width: 1199.98px) {
    .rb-content > .row > .col-xl-4, .rb-content > form > .row > .col-xl-4 { flex: 0 0 auto; width: 36%; }
    .rb-content > .row > .col-xl-8, .rb-content > form > .row > .col-xl-8 { flex: 0 0 auto; width: 64%; }
    .rb-content > .row > .col-xl-5, .rb-content > form > .row > .col-xl-5 { flex: 0 0 auto; width: 41.666%; }
    .rb-content > .row > .col-xl-7, .rb-content > form > .row > .col-xl-7 { flex: 0 0 auto; width: 58.333%; }
    .rb-content > .row > .order-xl-1 { order: 1 !important; }
    .rb-content > .row > .order-xl-2 { order: 2 !important; }
    .rb-form-actions { position: sticky; left: auto; right: auto; bottom: 12px; margin-top: 4px; }
    .has-form-actions .rb-content { padding-bottom: 28px; }
}
@media (min-width: 1080px) {
    .rb-statbar { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); grid-template-columns: none; }
    .rb-stat { padding: 12px 14px; }
}
/* Écrans moyens : cellules un peu plus serrées pour que les listes chargées tiennent sans défilement horizontal. */
@media (max-width: 1399.98px) {
    .table > :not(caption) > * > * { padding-left: 8px; padding-right: 8px; }
    .rb-card > .rb-table-wrap > .table > thead th:first-child, .rb-card > .rb-table-wrap > .table > tbody td:first-child { padding-left: 12px; }
    .rb-card > .rb-table-wrap > .table > thead th:last-child, .rb-card > .rb-table-wrap > .table > tbody td:last-child { padding-right: 12px; }
    .rb-row-icons a, .rb-row-icons button { width: 24px; height: 26px; }
    .table > thead th { letter-spacing: .02em; }
    .table .rb-status { padding: 2px 7px; white-space: normal; border-radius: var(--radius-sm); line-height: 15px; }
    .table .rb-status::before { display: none; }
}

/* « Ajout rapide d'un paiement » : fenêtre de l'ancien logiciel (tableau de bord). */
.qp-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 1080; display: flex; align-items: flex-start; justify-content: center; padding-top: 40px; }
.qp-box { position: relative; background: #fff; width: 580px; max-width: calc(100% - 32px); max-height: 80vh; overflow-y: auto; padding: 10px 14px; border-radius: 3px; box-shadow: 0 2px 12px rgba(0,0,0,.4); font-family: Verdana, sans-serif; font-size: 14px; color: #000; }
.qp-x { position: absolute; top: -2px; right: 2px; border: 0; background: none; font-size: 20px; line-height: 1; color: #555; }
.qp-title { display: inline-block; background: #0CC27E; color: #fff; font-weight: bold; font-size: 14px; padding: 8px 12px; border-radius: 3px; margin: 2px 0 14px; }
.qp-link { color: #0000EE; cursor: pointer; }
.qp-small { display: inline-block; font-size: 10px; margin-left: 10px; }
.qp-badge { display: inline-block; margin: 4px 0 0 10px; font-weight: bold; font-size: 12px; color: #fff; padding: 2px 8px; border-radius: 3px; }
.qp-badge[hidden] { display: none; }
.qp-badge-ok { background: #0CC27E; }
.qp-badge-late { background: #FF586B; }
.qp-amount { width: 100px; display: inline; margin: 5px; }
.qp-orig { width: 120px; margin: 10px; display: inline; }
.qp-mode { width: 120px; margin-left: 10px; display: inline-block; }
.qp-date { display: inline-block; }
.qp-encours { height: 200px; overflow-y: auto; margin-top: 10px; text-align: center; }
.qp-table { margin: 10px auto 0; border-collapse: collapse; text-align: left; }
.qp-table td { padding: 2px 6px; font-size: 12px; }
.qp-table .qp-cell { font-size: 10px; }
.qp-note { font-size: 10px; line-height: 12px; text-align: center; }
.qp-loading { text-align: center; padding: 40px; color: #888; }
/* Message de l'ajout rapide en tête de « Loyers et paiements ». */
.qp-message { border: 1px solid #2196F3; background: #EAF4FE; color: #0b3c6e; padding: 8px 12px; border-radius: 3px; margin-bottom: 12px; font-size: 14px; }
.qp-message.is-error { border-color: rgb(255,122,78); background: #FFF1EC; color: #8a2a0a; }

/* Tableau de bord « Immobilier Loyer » (vue classique). */
.il-dashboard { font-family: Verdana, sans-serif; font-size: 13px; max-width: 1100px; }
.il-welcome { font-weight: bold; color: #555; font-size: 15px; margin: 4px 0 10px; }
.il-message { border: 1px solid #2196F3; background: #EAF4FE; color: #0b3c6e; padding: 8px 12px; border-radius: 3px; margin-bottom: 10px; }
.il-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-bottom: 12px; }
.il-actions br { flex-basis: 100%; height: 0; }
.il-accordion { border: 1px solid #e3e3e3; border-radius: 4px; background: #fff; }
.il-panel + .il-panel { border-top: 1px solid #e3e3e3; }
.il-panel-head { display: block; padding: 9px 14px; background: #f5f5f5; color: #333; font-weight: 600; text-decoration: none; }
.il-panel-head:hover { background: #eee; color: #000; }
.il-panel-body { padding: 12px 14px; }
.il-pill { display: inline-block; min-width: 20px; padding: 1px 7px; border-radius: 10px; color: #fff; font-weight: bold; text-align: center; font-size: 12px; }
.il-pill-danger { background: #FF586B; }
.il-pill-primary { background: #1E88E5; }
.il-count { font-size: 15px; font-weight: bold; color: #555; margin: 4px 0; }
.il-chart-title { font-weight: bold; font-size: 13px; }
.il-chart-sub { font-size: 11px; color: #555; }
.il-chart { width: 100%; height: auto; }
.il-chart-grid { stroke: #e5e5e5; stroke-width: 1; }
.il-chart-axis { font-size: 9px; fill: #444; font-family: Verdana, sans-serif; }
.il-chart-legend { font-size: 10px; fill: #333; font-family: Verdana, sans-serif; }
/* Info-bulle des graphiques, comme ApexCharts (thème clair) de l'ancien tableau de bord. */
.il-chart-cross { stroke: #b6b6b6; stroke-width: 1; stroke-dasharray: 3 3; pointer-events: none; }
.il-tip { position: absolute; z-index: 20; pointer-events: none; background: rgba(255,255,255,.96); border: 1px solid #e3e3e3; border-radius: 5px; box-shadow: 2px 2px 6px -4px #999; font: 12px Helvetica, Arial, sans-serif; color: #373d3f; white-space: nowrap; overflow: hidden; }
.il-tip-title { background: #eceff1; border-bottom: 1px solid #ddd; padding: 6px; margin-bottom: 4px; }
.il-tip-row { display: flex; align-items: center; padding: 0 10px 4px; }
.il-tip-row b { font-weight: 600; margin-left: 4px; }
.il-tip-marker { width: 12px; height: 12px; border-radius: 50%; margin-right: 10px; flex: none; }
.il-tip-x { position: absolute; z-index: 20; pointer-events: none; background: #eceff1; border: 1px solid #90a4ae; border-radius: 2px; padding: 4px 8px; font: 12px Helvetica, Arial, sans-serif; color: #373d3f; white-space: nowrap; }
.il-gauge { width: 110px; height: 110px; border-radius: 50%; display: grid; place-items: center; background: conic-gradient(#1E88E5 calc(var(--pct) * 1%), #E3F2FD 0); margin-top: 8px; }
.il-gauge > div { width: 94px; height: 94px; border-radius: 50%; background: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.1; }
.il-gauge small { font-size: 10px; color: #333; font-weight: bold; }
.il-gauge strong { font-size: 16px; margin-top: 4px; }
.il-link, .il-link-btn { color: #0000EE; text-decoration: none; cursor: pointer; }
.il-link-btn { background: none; border: 0; padding: 0; }
.il-link:hover, .il-link-btn:hover { text-decoration: underline; }
.il-small { font-size: 11px; }
.il-dun { margin: 6px 0; }
.il-table td { padding: 3px 8px; vertical-align: top; }
.il-memo { resize: none; font-family: Verdana, sans-serif; font-size: 12px; }
.il-modal { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 1080; display: flex; align-items: flex-start; justify-content: center; padding-top: 60px; }
.il-modal[hidden] { display: none; }
.il-modal-box { background: #fff; width: 600px; max-width: calc(100% - 32px); padding: 14px 18px; border-radius: 3px; font-family: Verdana, sans-serif; font-size: 13px; box-shadow: 0 2px 12px rgba(0,0,0,.4); }
.il-modal-title { font-weight: bold; color: #555; font-size: 15px; text-align: center; margin-bottom: 10px; }
/* Aide (Vue Immobilier Loyer) */
.rb-help h2 { font-size: 1.35rem; margin-top: .5rem; }
.rb-help h3 { font-size: 1.1rem; margin-top: 1.4rem; padding-top: .6rem; border-top: 1px solid var(--color-border, #e5e7eb); }
.rb-help mark { background: #fde68a; padding: 0; }
.rb-help mark.is-current { background: #f59e0b; }

/* Tout document imprimé depuis l'application sort en A4, comme l'ancien logiciel. */
@media print { @page { size: A4 portrait; } }
/* Listes « Propriétaire / Locataire » du haut (menu classique) : comme le Select2 (thème bootstrap4) de l'ancien logiciel. */
.rb-combo { position: relative; flex: 1 1 auto; min-width: 0; }
.rb-combo-box { display: flex; align-items: center; width: 100%; min-height: calc(1.5em + .5rem + 2px); padding: .25rem 1.75rem .25rem .5rem; font-size: .875rem; text-align: left; color: #212529; background: #fff; border: 1px solid #ced4da; border-radius: .25rem; position: relative; cursor: pointer; }
.rb-combo-box::after { content: ""; position: absolute; right: .6rem; top: 50%; margin-top: -2px; border: 4px solid transparent; border-top-color: #555; border-bottom: 0; }
.rb-combo.is-open .rb-combo-box { border-color: #80bdff; box-shadow: 0 0 0 .2rem rgba(0,123,255,.25); border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.rb-combo.is-open .rb-combo-box::after { border-top: 0; border-bottom: 4px solid #555; }
.rb-combo-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rb-combo-panel { position: absolute; left: 0; right: 0; top: 100%; z-index: 1060; background: #fff; border: 1px solid #80bdff; border-top: 0; border-radius: 0 0 .25rem .25rem; box-shadow: 0 .25rem .5rem rgba(0,0,0,.1); padding: 4px; }
.rb-combo-search { width: 100%; padding: .25rem .5rem; font-size: .875rem; border: 1px solid #ced4da; border-radius: .2rem; outline: none; }
.rb-combo-search:focus { border-color: #80bdff; }
.rb-combo-list { list-style: none; margin: 4px 0 0; padding: 0; max-height: 230px; overflow-y: auto; font-size: .875rem; }
.rb-combo-list li { padding: 4px 8px; cursor: pointer; line-height: 1.3; }
.rb-combo-list li.is-selected { background: #e9ecef; }
.rb-combo-list li.is-active { background: #007bff; color: #fff; }
.rb-combo-list li.rb-combo-empty { cursor: default; color: #6c757d; }
.rb-work-row .rb-combo-box { height: 26px; min-height: 26px; padding-top: 1px; padding-bottom: 1px; font-size: 12.5px; }
.rb-work-row .rb-combo-search, .rb-work-row .rb-combo-list { font-size: 12.5px; }
/* « Ajout rapide d'honoraires de location » : présentation de l'ancien index_ajout_honoraires (TinyBox 700 × 480, Verdana 16 px). */
.qp-box.qp-box-letting { width: 700px; min-height: 480px; font-size: 16px; font-family: Verdana, 'Segoe UI', Roboto, sans-serif; font-weight: 300; }
.qp-letting-title { margin: 10px 0 6px; text-align: center; color: #2388ed; font-weight: bold; font-size: 16px; font-family: Verdana, Arial, Helvetica, sans-serif; }
.qp-letting-intro { font-size: 13.33px; text-align: center; margin-bottom: 6px; }
.qp-letting-center { text-align: center; }
.qp-letting-select { max-width: 70%; min-width: 60%; height: 32px; padding: 2px 8px; font-size: 16px; font-weight: 500; border: 1px solid #ced4da; border-radius: 4px; background: #fff; }
.qp-letting-local { text-align: left; min-height: 30px; padding-top: 5px; }
.qp-letting-local p { margin: 2px; }
.qp-letting-fields { text-align: left; min-height: 140px; visibility: hidden; }
.qp-letting-fields.is-shown { visibility: visible; }
.qp-letting-fields table { margin: 0 auto 0 0; }
.qp-letting-fields td { padding: 3px 4px; vertical-align: middle; }
.qp-letting-fields td.qp-l { text-align: right; width: 196px; }
.qp-letting .qp-in { display: inline-block; width: 100px; height: 31px; padding: 2px 8px; font-size: 16px; font-weight: 500; border: 1px solid #ced4da; border-radius: 4px; }
.qp-letting .qp-hint { font-size: 10px; }
.qp-letting-formula { font-size: 13.33px; margin-top: 20px; }
.qp-letting-actions { text-align: right; margin-top: 20px; }
.qp-letting-submit { font-weight: bold; margin-right: 10px; }
.qp-letting-note { font-size: 10px; line-height: 1.2em; text-align: center; }
.qp-letting b { font-weight: bold; }

/* Dates très éloignées (comme l'ancien logiciel). */
input[type="date"].rb-date-far { color: blue; }
input[type="date"].rb-date-very-far { border-color: blue; }
input[type="date"].rb-date-bad { color: red; border-color: red; }

/* Champ « Rattacher à » d'une tâche (comme « Lié à » d'EspoCRM) */
.rb-parent { position: relative; }
.rb-parent-type { max-width: 9.5rem; flex: 0 0 auto; }
.rb-parent-menu { position: absolute; left: 0; right: 0; z-index: 1050; max-height: 16rem; overflow-y: auto; margin-top: 2px; }
.rb-parent-tag { display: inline-block; width: .6rem; height: .6rem; border-radius: 2px; margin-right: .3rem; vertical-align: baseline; background: #6c757d; }
.rb-parent-property { background: #2e7d32; }
.rb-parent-unit { background: #00897b; }
.rb-parent-lease { background: #1565c0; }
.rb-parent-tenant { background: #ef6c00; }
.rb-parent-owner { background: #6a1b9a; }
.rb-parent-mandate { background: #ad1457; }

/* Icônes d'action des lignes de liste (Ouvrir, Modifier, Supprimer / Annuler), comme Immobilier Loyer. */
.rb-row-actions { display: inline-flex; gap: 2px; white-space: nowrap; }
.rb-row-action { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 24px; padding: 0; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--color-primary, #2f5d8a); text-decoration: none; font-size: 13px; cursor: pointer; }
.rb-row-action:hover { background: var(--color-neutral-soft, #eef1f4); border-color: var(--color-border, #d5dbe1); }
.rb-row-action.is-danger { color: var(--color-danger-text, #b42318); }
.rb-row-action.is-locked { color: var(--color-neutral-text, #8a94a0); cursor: help; }
td.rb-actions-cell, th.rb-actions-cell { width: 1%; text-align: right; white-space: nowrap; }

/* Kanban des tâches (comme EspoCRM) : une colonne par état, cartes à glisser. */
.rb-kanban { display: grid; grid-template-columns: repeat(5, minmax(180px, 1fr)); gap: 10px; padding: 12px; overflow-x: auto; }
.rb-kanban-col { background: var(--color-neutral-soft, #f3f5f7); border-radius: 6px; padding: 8px; min-height: 160px; }
.rb-kanban-col.is-over { outline: 2px dashed var(--color-primary, #2f5d8a); }
.rb-kanban-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.rb-kanban-card { background: var(--color-surface, #fff); border: 1px solid var(--color-border, #d5dbe1); border-radius: 6px; padding: 8px; margin-bottom: 8px; cursor: grab; font-size: 13px; }
.rb-kanban-card.is-dragging { opacity: .5; }
.rb-task-table td { vertical-align: top; }
/* Description d'une tâche : retours à la ligne gardés, longues adresses coupées (jamais de débordement). */
.rb-task-desc { white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; }

/* Champ modifiable sur place (état d'une tâche, façon EspoCRM, DG 11/10/2026) : crayon discret, net au survol. */
.rb-inline-field .rb-inline-edit { color: var(--color-text-tertiary); opacity: .55; line-height: 1; }
.rb-inline-field:hover .rb-inline-edit, .rb-inline-field .rb-inline-edit:focus { opacity: 1; color: var(--color-primary); }
