.kgi-list-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem;
    border-bottom: 1px solid var(--color-border);
    background: var(--kgi-list-toolbar-bg);
}

.kgi-list-search {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-width: min(100%, 20rem);
    color: var(--color-text-muted);
}

.kgi-list-search input {
    width: 100%;
    min-height: 2.25rem;
    padding: .45rem .7rem;
    border: 1px solid var(--color-border);
    border-radius: .35rem;
    color: var(--color-text-dark);
    background: var(--color-bg-card);
}

.kgi-list-search input:focus {
    outline: 2px solid var(--color-primary-focus-rgba);
    border-color: var(--color-primary);
}

.kgi-list-filters {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .45rem;
    flex: 1;
}

.kgi-list-actions {
    display: flex;
    align-items: center;
    gap: .4rem;
    white-space: nowrap;
}

.kgi-list-filter,
.kgi-list-date-filter input,
.kgi-list-amount-filter input {
    min-height: 2.25rem;
    padding: .4rem .55rem;
    border: 1px solid var(--color-border, #d9dee8);
    border-radius: .35rem;
    color: var(--color-text-dark, #1f2937);
    background: var(--color-bg-card, #fff);
    font-size: .8rem;
}

.kgi-list-date-filter,
.kgi-list-amount-filter {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    color: var(--color-text-muted, #667085);
    font-size: .75rem;
}

.kgi-list-amount-filter input { width: 5.2rem; }

.kgi-list-count {
    color: var(--color-text-muted, #667085);
    font-size: .82rem;
    white-space: nowrap;
}

.kgi-list-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .7rem;
    padding: .8rem 1rem;
    color: var(--color-text-muted, #667085);
    font-size: .82rem;
}

.kgi-list-pagination:empty { display: none; }

.kgi-sortable { cursor: pointer; user-select: none; }
.kgi-sortable::after { content: ' ↕'; opacity: .45; font-size: .75em; }
.kgi-sortable[data-sort="asc"]::after { content: ' ↑'; opacity: 1; }
.kgi-sortable[data-sort="desc"]::after { content: ' ↓'; opacity: 1; }

.kgi-form-validated input:invalid,
.kgi-form-validated select:invalid,
.kgi-form-validated textarea:invalid {
    border-color: var(--color-alert-danger-text, #b42318);
    box-shadow: 0 0 0 3px var(--color-alert-danger-bg, rgba(180, 35, 24, .12));
}

.form-progress {
    display: flex;
    gap: .35rem;
    margin: 0 0 1.25rem;
    overflow-x: auto;
}

.form-progress-step {
    flex: 1 0 auto;
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .55rem .75rem;
    border-bottom: 3px solid var(--color-border, #d9dee8);
    color: var(--color-text-muted, #667085);
    font-size: .8rem;
    font-weight: 600;
    text-align: center;
}

.form-progress-step.is-active {
    border-color: var(--color-primary, #1b61d3);
    color: var(--color-primary, #1b61d3);
}

.kgi-form-summary {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-content: center;
    gap: 1rem;
    padding: 1.5rem;
    background: rgba(15, 23, 42, .45);
}

.kgi-form-summary[hidden] { display: none; }
.kgi-form-summary h2,
.kgi-form-summary dl { margin: 0; }
.kgi-form-summary > * { background: var(--color-bg-card, #fff); padding: .85rem 1rem; }
.kgi-form-summary dl { display: grid; gap: .55rem; min-width: min(34rem, 90vw); }
.kgi-form-summary dl div { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--color-border, #d9dee8); }
.kgi-form-summary dt { font-weight: 600; }
.kgi-form-summary dd { margin: 0; text-align: right; }

.notification-center { max-width: 1100px; margin: 0 auto; }
.notification-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.notification-list { display: grid; gap: .75rem; }
.notification-group { display: grid; gap: .65rem; padding: .85rem; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--surface-default); }
.notification-group > h2 { display: flex; align-items: center; gap: .5rem; margin: 0; color: var(--color-text-dark); font: 800 .86rem/1.2 var(--font-family-base); letter-spacing: .08em; text-transform: uppercase; }
.notification-group-danger { border-color: var(--color-alert-danger-border); }
.notification-group-warning { border-color: var(--color-alert-warning-border); }
.notification-group-success { border-color: var(--color-alert-success-border); }
.notification-item { display: flex; align-items: flex-start; gap: 1rem; padding: 1rem; border: 1px solid var(--color-border); border-left: 4px solid var(--color-primary); border-radius: var(--radius-md); background: var(--color-bg-card); }
.notification-item.is-unread { box-shadow: 0 0 0 2px var(--color-primary-focus-rgba); }
.notification-success { border-left-color: var(--color-alert-success-text); }
.notification-warning { border-left-color: var(--color-secondary); }
.notification-danger { border-left-color: var(--color-alert-danger-text); }
.notification-icon { color: var(--color-primary); padding-top: .15rem; }
.notification-danger .notification-icon { color: var(--color-alert-danger-text); }
.notification-content { flex: 1; min-width: 0; }
.notification-content h2,
.notification-content h3 { font: 700 .95rem/1.3 var(--font-family-base); margin: 0 0 .25rem; color: var(--color-text-dark); }
.notification-content p { margin: 0 0 .35rem; color: var(--color-text-muted); font-size: .86rem; }
.notification-content time { color: var(--color-text-muted); font-size: .75rem; }
.notification-read-state { display: inline-flex; margin-left: .5rem; padding: .12rem .4rem; color: var(--color-text-muted); border: 1px solid var(--color-border); border-radius: 999px; font-size: .68rem; font-weight: 700; }
.notification-read-state.is-unread { color: var(--color-alert-danger-text); background: var(--color-alert-danger-bg); border-color: var(--color-alert-danger-border); }
.notification-actions { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: flex-end; }
.notification-empty { padding: 3rem 1rem; text-align: center; color: var(--color-text-muted); border: 1px dashed var(--color-border); border-radius: var(--radius-md); }
.notification-empty svg { width: 32px; height: 32px; margin-bottom: .5rem; }
.notification-empty h2 { font: 700 1rem var(--font-family-base); color: var(--color-text-dark); }
.kgi-loading-indicator { display: inline-block; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: kgi-spin .7s linear infinite; }
@keyframes kgi-spin { to { transform: rotate(360deg); } }
.system-error-page { max-width: 640px; margin: 8vh auto; padding: 2.5rem; text-align: center; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-bg-card); box-shadow: var(--shadow-sm); }
.system-error-code { display: block; color: var(--color-primary); font: 700 3rem/1 var(--font-family-display); margin-bottom: 1rem; }
.system-error-page h1 { margin-bottom: .75rem; color: var(--color-text-dark); }
.system-error-page p { margin-bottom: 1.5rem; color: var(--color-text-muted); }
@media (max-width: 700px) { .notification-header, .notification-item { flex-direction: column; align-items: stretch; } .notification-actions { justify-content: flex-start; } }

@media (max-width: 640px) {
    .kgi-list-toolbar { align-items: stretch; flex-direction: column; }
    .kgi-list-search { min-width: 100%; }
    .kgi-list-actions { justify-content: flex-end; }
    .kgi-list-count { align-self: flex-end; }
}

@media print {
    body:has(.kgi-print-target) * { visibility: hidden !important; }
    .kgi-print-target, .kgi-print-target * { visibility: visible !important; }
    .kgi-print-target { position: absolute; inset: 0; width: 100%; }
}
/* KGI ERP — shared tokens and components. Loaded after module styles. */
:root {
    color-scheme: light;
    --color-white: #ffffff;
    --color-primary: #1b61d3;
    --color-primary-hover: #164da8;
    --color-secondary: #375778;
    --color-primary-dark: #164da8;
    --red-color-primary: #b80d2a;
    --color-primary-focus-rgba: rgb(27 97 211 / 15%);
    --color-success: #157347;
    --color-danger: #b42338;
    --color-warning: #855400;
    --color-info: #175da8;
    --color-bg-main: #f3f6fb;
    --color-bg-card: #ffffff;
    --color-text-dark: #172b46;
    --color-text-muted: #52647a;
    --color-text-soft: #43566e;
    --color-border: #d7e0ec;
    --surface-subtle: #edf2f8;
    --surface-panel: var(--color-bg-card);
    --surface-panel-strong: var(--color-bg-card);
    --surface-glass-border: var(--color-border);
    --surface-overlay: rgb(6 18 36 / 65%);
    --color-on-primary: var(--color-white);
    --color-accent-blue: var(--color-primary);
    --color-accent-blue-soft: rgb(27 97 211 / 12%);
    --color-alert-success-bg: #eaf6ee;
    --color-alert-success-text: #126139;
    --color-alert-success-border: #abd5bc;
    --color-alert-danger-bg: #fff0f2;
    --color-alert-danger-text: #a51d32;
    --color-alert-danger-border: #f0b6c0;
    --color-alert-warning-bg: #fff5dc;
    --color-alert-warning-text: #795000;
    --color-alert-warning-border: #e7cd89;
    --color-alert-info-bg: #ebf3ff;
    --color-alert-info-text: #195496;
    --color-alert-info-border: #b4cdef;
    --color-status-success-bg: var(--color-alert-success-bg);
    --color-status-success-border: var(--color-alert-success-border);
    --color-status-danger-bg: var(--color-alert-danger-bg);
    --color-status-danger-border: var(--color-alert-danger-border);
    --color-badge-bg: var(--color-alert-info-bg);
    --color-badge-border: var(--color-alert-info-border);
    --surface-canvas: var(--color-bg-main);
    --surface-default: var(--color-bg-card);
    --surface-raised: #ffffff;
    --surface-critical: #fff7f8;
    --surface-inset: var(--surface-subtle);
    --text-primary: var(--color-text-dark);
    --text-secondary: var(--color-text-muted);
    --text-tertiary: var(--color-text-soft);
    --text-inverse: var(--color-on-primary);
    --border-subtle: var(--color-border);
    --border-strong: #b9c7d8;
    --border-critical: var(--color-alert-danger-border);
    --focus-color: var(--color-primary);
    --focus-shadow: var(--focus-ring);
    --status-success-bg: var(--color-alert-success-bg);
    --status-success-text: var(--color-alert-success-text);
    --status-success-border: var(--color-alert-success-border);
    --status-warning-bg: var(--color-alert-warning-bg);
    --status-warning-text: var(--color-alert-warning-text);
    --status-warning-border: var(--color-alert-warning-border);
    --status-danger-bg: var(--color-alert-danger-bg);
    --status-danger-text: var(--color-alert-danger-text);
    --status-danger-border: var(--color-alert-danger-border);
    --status-info-bg: var(--color-alert-info-bg);
    --status-info-text: var(--color-alert-info-text);
    --status-info-border: var(--color-alert-info-border);
    --elevation-flat: none;
    --elevation-raised: var(--shadow-sm);
    --elevation-overlay: var(--shadow-md);
    --density-comfortable: 1;
    --density-compact: .875;
    --control-height-sm: 36px;
    --control-height-md: 42px;
    --control-height-lg: 48px;
    --control-height-icon: 44px;
    --control-padding-x: 1rem;
    --content-max-width: 1440px;
    --content-readable-width: 72ch;
    --grid-unit: 8px;
    --numeric-negative: var(--color-alert-danger-text);
    --numeric-zero: var(--color-text-muted);
    --numeric-positive: var(--color-alert-success-text);
    --color-primary-light: var(--color-accent-blue-soft);
    --color-primary-border: var(--color-alert-info-border);
    --color-danger-bg: var(--color-alert-danger-bg);
    --color-danger-hover: #92192b;
    --color-dropdown-toggle: var(--color-primary);
    --color-red-color-primary: var(--red-color-primary);
    --color-shadow-sm-1: rgb(23 43 70 / 8%);
    --color-shadow-sm-2: rgb(23 43 70 / 4%);
    --color-shadow-md-1: rgb(23 43 70 / 14%);
    --color-status-warning-bg: var(--color-alert-warning-bg);
    --color-status-warning-border: var(--color-alert-warning-border);
    --color-success-bg: var(--color-alert-success-bg);
    --color-warning-bg: var(--color-alert-warning-bg);
    --color-warning-dark: var(--color-alert-warning-text);
    --font-family-mono: 'Cascadia Mono', 'Consolas', monospace;
    --font-mono: var(--font-family-mono);
    --radius-full: 999px;
    --color-logout-hover-bg: var(--color-alert-danger-bg);
    --color-logout-hover-border: var(--color-alert-danger-border);
    --sidebar-surface: linear-gradient(158deg, #1558c2 0%, var(--color-primary) 28%, var(--color-primary) 62%, var(--color-secondary) 118%);
    --sidebar-surface-glow: radial-gradient(circle at 22% 8%, rgb(59 130 246 / 48%), transparent 34%), radial-gradient(circle at 112% 78%, rgb(59 130 246 / 26%), transparent 38%), linear-gradient(180deg, rgb(0 0 110 / 18%), transparent 52%);
    --sidebar-surface-sheen: linear-gradient(115deg, transparent 0%, rgb(255 255 255 / 10%) 28%, transparent 48%);
    --sidebar-item-bg: rgb(255 255 255 / 8%);
    --sidebar-item-bg-hover: rgb(255 255 255 / 14%);
    --sidebar-item-border: rgb(255 255 255 / 10%);
    --sidebar-item-active: rgb(255 255 255 / 18%);
    --sidebar-text-soft: rgb(255 255 255 / 96%);
    --sidebar-text-muted: rgb(255 255 255 / 84%);
    --sidebar-shadow: 22px 0 70px rgb(0 0 110 / 22%);
    --font-family-display: var(--font-family-base);
    --font-family-base: 'Montserrat', 'Segoe UI', sans-serif;
    --spacing-xs: .25rem;
    --spacing-sm: .5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 16px;
    --motion-feedback: 120ms ease-out;
    --motion-transition: 180ms ease;
    --motion-emphasis: 240ms cubic-bezier(.2, .8, .2, 1);
    --motion-page: 220ms cubic-bezier(.2, .8, .2, 1);
    --transition-fast: all var(--motion-feedback);
    --transition-base: var(--motion-transition);
    --shadow-sm: 0 2px 6px rgb(23 43 70 / 4%);
    --shadow-md: 0 8px 28px rgb(23 43 70 / 7%);
    --focus-ring: 0 0 0 4px var(--color-primary-focus-rgba);
    --kgi-list-toolbar-bg: var(--color-bg-card);
}
:root[data-theme="dark"] {
    color-scheme: dark;
    --sidebar-surface: linear-gradient(158deg, #132c53, #173d72);
    --color-primary: #91baff;
    --color-primary-hover: #b7d1ff;
    --color-secondary: #a8bed8;
    --color-accent-blue: #91baff;
    --color-success: #7ed6a6;
    --color-danger: #ffa6b3;
    --color-warning: #f2cf77;
    --color-info: #9ac7ff;
    --color-bg-main: #101a29;
    --color-bg-card: #19273a;
    --color-text-dark: #e6edf7;
    --color-text-muted: #b0bfd1;
    --color-text-soft: #c0cede;
    --color-border: #3a4b62;
    --surface-subtle: #223249;
    --color-alert-success-bg: #173c30;
    --color-alert-success-text: #9de4ba;
    --color-alert-success-border: #376b51;
    --color-alert-danger-bg: #462535;
    --color-alert-danger-text: #ffb6c3;
    --color-alert-danger-border: #815062;
    --color-alert-warning-bg: #403720;
    --color-alert-warning-text: #f5d891;
    --color-alert-warning-border: #7b6941;
    --color-alert-info-bg: #213957;
    --color-alert-info-text: #afd1ff;
    --color-alert-info-border: #4b6b91;
    --color-primary-focus-rgba: rgb(145 186 255 / 25%);
    --surface-raised: #1d2e44;
    --surface-critical: #3c2431;
    --border-strong: #5a6c83;
}
[hidden] { display: none !important; }
html,
body { max-width: 100%; overflow-wrap: anywhere; }
body { line-height: 1.6; }
body,
.erp-main { overflow-x: clip; }
@keyframes kgi-page-reveal { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes kgi-content-enter { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
@keyframes kgi-success-pulse { 0% { box-shadow: 0 0 0 0 var(--color-alert-success-bg); } 100% { box-shadow: 0 0 0 .45rem transparent; } }
.erp-main > * { animation: kgi-page-reveal var(--motion-page) both; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-family-display); line-height: 1.3; }
h1 { font-size: clamp(1.45rem, 2.4vw, 2.1rem); letter-spacing: 0; }
button, input, select, textarea { font-family: inherit; }
:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
.kgi-focus-scope :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible,
body :is(a, button, input, select, textarea, summary, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible { outline: 3px solid var(--focus-color); outline-offset: 3px; box-shadow: var(--focus-shadow); }
.kgi-overflow-guard { max-width: 100%; min-width: 0; overflow-wrap: anywhere; }
.kgi-no-page-overflow { overflow-x: clip; }
.kgi-scroll-area { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
.kgi-sr-announcer { position: fixed; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.kgi-truncate { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kgi-icon-align { display: inline-flex; align-items: center; gap: .45rem; }
.kgi-baseline-number { font-variant-numeric: tabular-nums; line-height: 1; }
.skip-link { position: fixed; top: -100px; left: 1rem; z-index: 1000; padding: .75rem 1rem; background: var(--color-bg-card); color: var(--color-primary); border-radius: var(--radius-md); }
.skip-link:focus { top: 1rem; }
.erp-container { grid-template-columns: 280px minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); height: 100dvh; background: var(--color-bg-main); }
.erp-main { min-width: 0; padding: clamp(1rem, 2.5vw, 2.5rem); background: var(--color-bg-main); }
.erp-main::before { display: none; }
.erp-topbar { background: var(--color-bg-card); min-height: 76px; overflow: visible; border-color: var(--color-border); box-shadow: var(--shadow-sm); }
.topbar-wrapper { padding: 1rem 1.5rem; gap: 1rem; flex-wrap: wrap; }
.topbar-context { flex: 1 0 180px; min-width: 180px; font-size: .9rem; }
.topbar-user-menu { flex-wrap: wrap; }
.user-name, .user-role-badge, body .btn-logout { background: var(--surface-subtle); border-color: var(--color-border); box-shadow: none; }
.sidebar-logo { object-fit: contain; }
.sidebar-toggle { display: none !important; }
.theme-control { display: inline-flex; align-items: center; gap: .5rem; color: var(--color-text-muted); font-size: .75rem; }
.theme-control select { width: auto; min-height: 36px; padding: .35rem .5rem; font-size: .8rem; }
.erp-main :is(.card, .kgi-card, .kpi-card, .stat-card, .modal-card, .modal-content) {
    background: var(--color-bg-card); color: var(--color-text-dark); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
}
.erp-main .card-header { background: var(--surface-subtle); padding: 1rem 1.25rem; border-bottom: 1px solid var(--color-border); }
.erp-main .card-body { padding: 1.25rem; }
.erp-main .card-body.p-0 { padding: 0; }
.erp-main .card-title { font-size: 1rem; color: var(--color-text-dark); }
.kgi-dashboard-shell { display: grid; gap: 1.25rem; }
.kgi-page-header,
.page-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: clamp(1.25rem, 2vw, 2rem); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: linear-gradient(115deg, var(--color-bg-card), var(--surface-subtle)); }
.kgi-page-header__content,
.page-header .header-titles { display: grid; gap: .4rem; min-width: min(100%, 18rem); }
.kgi-page-header__actions,
.page-header .header-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .75rem; }
.kgi-page-header .page-title,
.page-header .page-title { margin: 0; color: var(--color-text-dark); }
.kgi-page-header .page-subtitle,
.page-header .page-subtitle { max-width: 72ch; margin: 0; color: var(--color-text-muted); }
.kgi-card, .erp-main :is(.card, .kgi-card, .kpi-card, .stat-card, .modal-card, .modal-content) {
    background: var(--color-bg-card); color: var(--color-text-dark); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
}
.kgi-card,
.kgi-panel,
.kgi-surface {
    background: var(--surface-default);
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-lg);
    box-shadow: var(--elevation-raised);
    transition: border-color var(--motion-transition), box-shadow var(--motion-transition), background-color var(--motion-transition);
}
.kgi-card--simple,
.kgi-surface--simple { box-shadow: var(--elevation-flat); }
.kgi-card--structure,
.kgi-panel--structure { background: var(--surface-raised); border-color: var(--border-strong); }
.kgi-card--critical,
.kgi-panel--critical { background: var(--surface-critical); border-color: var(--border-critical); }
.kgi-card__header,
.kgi-card .kgi-card-header, .card-header { background: var(--surface-subtle); }
.kgi-card__header,
.kgi-card-header,
.kgi-panel__header { padding: 1rem 1.25rem; border-bottom: 1px solid var(--border-subtle); }
.kgi-card__body,
.kgi-card .kgi-card-body, .card-body { padding: 1.25rem; }
.kgi-card__footer,
.kgi-panel__footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--spacing-sm); padding: 1rem 1.25rem; border-top: 1px solid var(--border-subtle); }
.kgi-metric { display: grid; gap: .45rem; }
.kgi-metric-value { font-size: clamp(1.3rem, 1.9vw, 1.8rem); font-weight: 700; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.kgi-metric-label { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 700; }
.kgi-badge,
.kgi-status-badge, body :is(.badge, .status-badge, .status-tag, .badge-role, .badge-filiale) {
    display: inline-flex; align-items: center; gap: .35rem; padding: .35rem .65rem; border-radius: 999px; font-size: .75rem; font-weight: 600; line-height: 1.4; white-space: normal; box-shadow: none;
    background: var(--surface-subtle); color: var(--color-text-soft); border: 1px solid var(--color-border);
}
.kgi-badge--success { background: var(--status-success-bg); color: var(--status-success-text); border-color: var(--status-success-border); }
.kgi-badge--warning { background: var(--status-warning-bg); color: var(--status-warning-text); border-color: var(--status-warning-border); }
.kgi-badge--danger { background: var(--status-danger-bg); color: var(--status-danger-text); border-color: var(--status-danger-border); }
.kgi-badge--info { background: var(--status-info-bg); color: var(--status-info-text); border-color: var(--status-info-border); }
.kgi-button, .btn-kgi, body :is(.btn, .btn-primary, .btn-action, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline, .btn-profile, .btn-logout) {
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: var(--control-height-md); padding: .65rem 1rem; border: 1px solid transparent; border-radius: var(--radius-md); font: 600 .85rem/1.25 var(--font-family-base); text-decoration: none; cursor: pointer; box-shadow: none; transition: background-color var(--motion-feedback), border-color var(--motion-feedback), color var(--motion-feedback), transform var(--motion-feedback), box-shadow var(--motion-feedback), opacity var(--motion-feedback);
}
.kgi-button--primary,
.btn-kgi-primary { background: var(--color-primary); color: var(--color-on-primary); border-color: var(--color-primary); }
.kgi-button--secondary,
.btn-kgi-secondary { background: var(--surface-default); color: var(--color-primary); border-color: var(--border-subtle); }
.kgi-button--quiet,
.btn-kgi-outline { background: transparent; color: var(--color-primary); border-color: transparent; }
.kgi-button--danger { background: var(--color-danger); color: var(--color-on-primary); border-color: var(--color-danger); }
.kgi-button--success { background: var(--color-success); color: var(--color-on-primary); border-color: var(--color-success); }
.kgi-button--sm { min-height: var(--control-height-sm); padding: .45rem .75rem; font-size: .78rem; }
.kgi-button--md { min-height: var(--control-height-md); }
.kgi-button--lg { min-height: var(--control-height-lg); padding: .8rem 1.15rem; font-size: .92rem; }
.kgi-button--icon-only { inline-size: var(--control-height-icon); min-inline-size: var(--control-height-icon); min-height: var(--control-height-icon); padding: 0; }
.kgi-button--icon-only > svg,
.kgi-button--icon-only > i svg { width: 18px; height: 18px; }
.kgi-button:active,
body :is(.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline):active,
.kgi-button[aria-pressed="true"],
body .btn[aria-pressed="true"] { transform: translateY(1px); }
.kgi-button.is-loading,
body .btn.is-loading { cursor: progress; opacity: .82; }
.kgi-button.is-success,
body .btn.is-success { border-color: var(--color-alert-success-border); animation: kgi-success-pulse var(--motion-emphasis); }
.kgi-button > svg,
.kgi-button > i,
body .btn > svg,
body .btn > i { flex: 0 0 auto; width: 1.1em; height: 1.1em; }
.erp-main :is(.header-actions, .form-actions, .card-actions) { display: flex; gap: .75rem; flex-wrap: wrap; }
.erp-main :is(.kpi-value, .amount, .cell-montant, .kgi-value, .kgi-money) { font-variant-numeric: tabular-nums; }
body :is(.btn, .btn-primary, .btn-action, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline, .btn-profile, .btn-logout) {
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 42px; padding: .65rem 1rem; border: 1px solid transparent; border-radius: var(--radius-md); font: 600 .85rem/1.25 var(--font-family-base); text-decoration: none; cursor: pointer; box-shadow: none;
}
.btn-icon,
.btn-icon-only {
    display: inline-grid;
    flex: 0 0 42px;
    width: 42px;
    min-width: 42px;
    height: 42px;
    min-height: 42px;
    place-items: center;
    padding: 0;
}
.btn-icon > svg,
.btn-icon-only > svg { width: 18px; height: 18px; }
[data-tooltip] { position: relative; }
[data-tooltip]::after { position: absolute; z-index: 100; bottom: calc(100% + .5rem); left: 50%; width: max-content; max-width: 16rem; padding: .4rem .55rem; color: var(--color-on-primary); background: var(--color-text-dark); border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); content: attr(data-tooltip); font-size: .72rem; font-weight: 600; line-height: 1.2; opacity: 0; pointer-events: none; transform: translate(-50%, .25rem); transition: opacity var(--transition-base), transform var(--transition-base); }
[data-tooltip]:hover::after,
[data-tooltip]:focus-visible::after { opacity: 1; transform: translate(-50%, 0); }
.kgi-term { color: var(--color-primary); text-decoration: underline dotted; text-underline-offset: .18em; cursor: help; }
/* Important here bridges earlier global/module rules that also use important. */
body :is(.btn-primary, .btn-action, .btn-profile) { background: var(--color-primary) !important; color: var(--color-on-primary) !important; }
body .btn-success { background: var(--color-success) !important; color: var(--color-on-primary) !important; }
body .btn-danger { background: var(--color-danger) !important; color: var(--color-on-primary) !important; }
body .btn-warning { background: var(--color-alert-warning-border) !important; color: var(--color-alert-warning-text) !important; }
body :is(.btn-secondary, .btn-secondary-sm, .btn-action-secondary, .btn-outline, .btn-outline-secondary) { background: var(--color-bg-card) !important; color: var(--color-primary) !important; border-color: var(--color-border) !important; }
body :is(.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger):hover { filter: brightness(.94); transform: none; box-shadow: var(--shadow-sm); }
body :is(button, .btn):disabled, body .btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; transform: none; }
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea, .form-control, .form-select) {
    max-width: 100%; min-height: 42px; padding: .6rem .75rem; background: var(--color-bg-card); color: var(--color-text-dark); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: none; font-size: .9rem;
}
body :is(input, select, textarea):focus { background: var(--color-bg-card); color: var(--color-text-dark); border-color: var(--color-primary); box-shadow: var(--focus-ring); }
body :is(input[type="checkbox"], input[type="radio"]) { width: 1.15rem; height: 1.15rem; min-height: 0; padding: 0; accent-color: var(--color-primary); }
body :is(input, select, textarea):disabled { background: var(--surface-subtle); cursor: not-allowed; }
body [aria-invalid="true"] { border-color: var(--color-danger); }
.form-group label, .filter-label { color: var(--color-text-dark); font-weight: 600; }
.helptext, .help-text, .form-text { color: var(--color-text-muted); font-size: .8rem; }
.errorlist, .form-error, .error-text { color: var(--color-danger); font-size: .85rem; }
.errorlist { padding-left: 1.25rem; }
.kgi-form-error-summary { margin-bottom: var(--spacing-lg); padding: var(--spacing-md); color: var(--color-alert-danger-text); border: 1px solid var(--color-alert-danger-border); border-radius: var(--radius-md); background: var(--color-alert-danger-bg); }
.kgi-form-error-summary p { margin: 0 0 var(--spacing-sm); font-weight: 700; }
.kgi-form-error-summary ul { display: grid; gap: var(--spacing-xs); margin: 0; padding-left: var(--spacing-lg); }
.kgi-form-error-summary a { color: inherit; }
body :is(.badge, .status-badge, .status-tag, .badge-role, .badge-filiale) {
    display: inline-flex; align-items: center; gap: .35rem; padding: .35rem .65rem; border-radius: 999px; font-size: .75rem; font-weight: 600; line-height: 1.4; white-space: normal; box-shadow: none;
    background: var(--surface-subtle); color: var(--color-text-soft); border: 1px solid var(--color-border);
}
body :is(.badge-success, .badge-valide, .badge-cloture, .badge-approved, .status-tag.active), body :is(.alert-success, .message-alert.success) { background: var(--color-alert-success-bg); color: var(--color-alert-success-text); border-color: var(--color-alert-success-border); }
body :is(.badge-danger, .badge-rejete, .badge-rejected, .status-tag.inactive), body :is(.alert-danger, .alert-error, .message-alert.error, .message-alert.danger) { background: var(--color-alert-danger-bg); color: var(--color-alert-danger-text); border-color: var(--color-alert-danger-border); }
body :is(.badge-warning, .badge-en_attente, .badge-pending), body :is(.alert-warning, .message-alert.warning) { background: var(--color-alert-warning-bg); color: var(--color-alert-warning-text); border-color: var(--color-alert-warning-border); }
body :is(.badge-info, .badge-verif_superviseur, .badge-ctrl_financier), body :is(.alert-info, .message-alert.info) { background: var(--color-alert-info-bg); color: var(--color-alert-info-text); border-color: var(--color-alert-info-border); }
body :is(.status-BROUILLON, .status-brouillon, .status-EN_ATTENTE, .status-en_attente, .badge-en-attente, .badge-pending) { background: var(--color-alert-warning-bg); color: var(--color-alert-warning-text); border-color: var(--color-alert-warning-border); }
body :is(.status-APPROUVE, .status-approuve, .status-VALIDE, .status-valide, .status-CLOTURE, .status-cloture, .badge-actif) { background: var(--color-alert-success-bg); color: var(--color-alert-success-text); border-color: var(--color-alert-success-border); }
body :is(.status-REJETE, .status-rejete, .status-RETARD, .status-retard) { background: var(--color-alert-danger-bg); color: var(--color-alert-danger-text); border-color: var(--color-alert-danger-border); }
body :is(.alert, .message-alert) { padding: 1rem 1.25rem; border-width: 1px; border-style: solid; border-radius: var(--radius-md); box-shadow: none; font-weight: 500; }
.kgi-alert { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .75rem; align-items: flex-start; margin-bottom: var(--spacing-md); }
.kgi-alert > svg,
.kgi-alert > i { margin-top: .15rem; }
.kgi-alert__content { min-width: 0; }
.kgi-alert__content strong { display: block; margin-bottom: .15rem; }
.kgi-alert--inline { margin: .5rem 0; padding: .7rem .85rem; font-size: .85rem; }
.kgi-alert--banner { margin: 0 0 var(--spacing-lg); border-radius: var(--radius-lg); }
.kgi-alert--info { color: var(--color-alert-info-text); background: var(--color-alert-info-bg); border-color: var(--color-alert-info-border); }
.kgi-alert--success { color: var(--color-alert-success-text); background: var(--color-alert-success-bg); border-color: var(--color-alert-success-border); }
.kgi-alert--warning { color: var(--color-alert-warning-text); background: var(--color-alert-warning-bg); border-color: var(--color-alert-warning-border); }
.kgi-alert--danger { color: var(--color-alert-danger-text); background: var(--color-alert-danger-bg); border-color: var(--color-alert-danger-border); }
.kgi-toast-region { position: fixed; right: 1rem; bottom: 1rem; z-index: 1200; display: grid; gap: .65rem; width: min(26rem, calc(100vw - 2rem)); pointer-events: none; }
.kgi-toast { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .7rem; align-items: start; padding: .9rem 1rem; pointer-events: auto; background: var(--color-bg-card); color: var(--color-text-dark); border: 1px solid var(--color-border); border-left: 4px solid var(--color-primary); border-radius: var(--radius-md); box-shadow: var(--shadow-md); }
.kgi-toast { animation: kgi-content-enter var(--motion-emphasis) both; }
.kgi-toast--success { border-left-color: var(--color-success); }
.kgi-toast--warning { border-left-color: var(--color-warning); }
.kgi-toast--danger { border-left-color: var(--color-danger); }
.kgi-toast p { margin: 0; color: var(--color-text-muted); font-size: .82rem; }
.kgi-toast button { min-width: var(--control-height-sm); min-height: var(--control-height-sm); padding: 0; }
body .text-warning { color: var(--color-warning) !important; }
body .text-muted { color: var(--color-text-muted) !important; }
.erp-main :is(.table-responsive, .kgi-table-scroll) { width: 100%; max-width: 100%; overflow-x: auto; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.erp-main table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.erp-main table thead th { position: sticky; top: 0; z-index: 1; padding: .85rem 1rem !important; background: var(--surface-subtle) !important; color: var(--color-text-soft); border-bottom: 1px solid var(--color-border); text-align: left; font-size: .75rem; font-weight: 700; }
.erp-main table tbody td { padding: .85rem 1rem !important; background: var(--color-bg-card); color: var(--color-text-dark); border-bottom: 1px solid var(--color-border) !important; }
.erp-main :is(.amount, .cell-montant, .amount-value, [data-amount]) { font-variant-numeric: tabular-nums; text-align: right; }
.erp-main table tbody tr:hover td { background: var(--surface-subtle); }
.erp-main table tbody tr { transition: background-color var(--motion-feedback); }
.erp-main table tbody tr.is-updated td { animation: kgi-success-pulse var(--motion-emphasis); }
.kgi-table { width: 100%; border-collapse: collapse; font-size: .85rem; color: var(--text-primary); }
.kgi-table caption { padding: var(--spacing-sm) 0; color: var(--text-secondary); text-align: left; }
.kgi-table th,
.kgi-table td { padding: .85rem 1rem; border-bottom: 1px solid var(--border-subtle); }
.kgi-table th { background: var(--surface-inset); color: var(--text-tertiary); font-size: .75rem; font-weight: 700; text-align: left; }
.kgi-table .is-numeric,
.kgi-table [data-type="currency"] { font-variant-numeric: tabular-nums; text-align: right; }
.kgi-table th[aria-sort] { color: var(--color-primary); }
.kgi-table tr.is-selected td { background: var(--color-accent-blue-soft); }
.kgi-table-select { width: 1%; text-align: center; }
.kgi-table-empty { padding: var(--spacing-xl) !important; text-align: center; color: var(--color-text-muted); }
.kgi-table-priority { font-weight: 800; color: var(--color-text-dark); }
.kgi-layout { width: min(100%, var(--content-max-width)); margin-inline: auto; display: grid; gap: calc(var(--grid-unit) * 3); }
.kgi-stack { display: grid; gap: var(--spacing-md); }
.kgi-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-sm); }
.kgi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--spacing-md); }
.kgi-readable { max-width: var(--content-readable-width); }
[data-density="compact"] { --density-comfortable: var(--density-compact); }
[data-density="compact"] :is(.kgi-button, .btn, input, select, textarea) { min-height: var(--control-height-sm); padding-block: .45rem; }
.kgi-value { font-variant-numeric: tabular-nums; }
.kgi-money { white-space: nowrap; font-variant-numeric: tabular-nums; line-height: 1; }
.kgi-value-negative { color: var(--numeric-negative); }
.kgi-value-zero,
.kgi-value-missing,
.kgi-value-na { color: var(--numeric-zero); }
.kgi-value-positive { color: var(--numeric-positive); }
.kgi-skeleton { position: relative; min-height: 1rem; overflow: hidden; border-radius: var(--radius-sm); background: var(--surface-inset); color: transparent; }
.kgi-skeleton--title { width: min(18rem, 70%); height: 1.25rem; }
.kgi-skeleton--line { width: 100%; height: .9rem; }
.kgi-skeleton--line:nth-child(3n) { width: 74%; }
.kgi-skeleton--kpi { width: 10rem; height: 2rem; }
.kgi-skeleton--table-row { display: block; height: 2.75rem; }
.kgi-skeleton-zone { display: grid; gap: .75rem; padding: var(--spacing-md); }
.kgi-skeleton::after { position: absolute; inset: 0; content: ''; background: linear-gradient(90deg, transparent, rgb(255 255 255 / 45%), transparent); transform: translateX(-100%); animation: kgi-skeleton 1.2s ease-in-out infinite; }
@keyframes kgi-skeleton { to { transform: translateX(100%); } }
.kgi-stepper { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: .5rem; margin: 0; padding: 0; list-style: none; }
.kgi-stepper__item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .65rem; align-items: start; padding: .8rem; color: var(--color-text-muted); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg-card); }
.kgi-stepper__marker { display: grid; width: 1.8rem; height: 1.8rem; place-items: center; color: var(--color-text-muted); border: 1px solid var(--color-border); border-radius: 999px; font-size: .78rem; font-weight: 800; }
.kgi-stepper__content { display: grid; gap: .15rem; min-width: 0; }
.kgi-stepper__content strong { color: var(--color-text-dark); }
.kgi-stepper__content small { color: var(--color-text-muted); }
.kgi-stepper__item.is-active { color: var(--color-primary); border-color: var(--color-primary); box-shadow: var(--focus-ring); }
.kgi-stepper__item.is-complete .kgi-stepper__marker { color: var(--color-on-primary); background: var(--color-success); border-color: var(--color-success); }
.kgi-stepper__item { transition: border-color var(--motion-transition), color var(--motion-transition), box-shadow var(--motion-transition); }
.kgi-drawer { width: min(36rem, calc(100vw - 2rem)); max-width: 100%; max-height: 100dvh; margin: 0 0 0 auto; padding: 0; color: var(--color-text-dark); background: var(--color-bg-card); border: 0; border-left: 1px solid var(--color-border); box-shadow: var(--shadow-md); }
.kgi-drawer[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.kgi-drawer[open],
dialog.kgi-modal[open],
dialog.kgi-confirmation-dialog[open] { animation: kgi-content-enter var(--motion-emphasis) both; }
.kgi-drawer::backdrop { background: var(--surface-overlay); }
.kgi-drawer__header,
.kgi-drawer__body,
.kgi-drawer__footer { padding: var(--spacing-lg); }
.kgi-drawer__header { display: flex; justify-content: space-between; gap: var(--spacing-md); border-bottom: 1px solid var(--color-border); }
.kgi-drawer__body { overflow-y: auto; }
.kgi-detail-panel { display: grid; gap: var(--spacing-md); padding: var(--spacing-lg); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-bg-card); }
.kgi-detail-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .75rem; margin: 0; }
.kgi-detail-list div { padding: .75rem; background: var(--surface-subtle); border-radius: var(--radius-md); }
.kgi-detail-list dt { color: var(--color-text-muted); font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.kgi-detail-list dd { margin: .15rem 0 0; color: var(--color-text-dark); font-weight: 700; }

/* Shared business component contract. Legacy aliases resolve to the same tokens. */
body :is(.btn-sm, .btn-kgi-sm, .btn-secondary-sm) {
    min-height: 42px;
    padding: .55rem .75rem;
    font-size: .78rem;
}
body :is(.btn-block, .btn-kgi-block) { width: 100%; }
body :is(.btn-icon, .btn-icon-only)[aria-label] { position: relative; }
body :is(.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline):focus-visible {
    outline: 3px solid var(--color-primary);
    outline-offset: 3px;
}

body .breadcrumbs a,
body .sidebar-nav .nav-link,
body .btn-action-text,
body .btn-print {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
}

body :is(input[type="checkbox"], input[type="radio"]) {
    width: var(--control-height-icon);
    min-width: var(--control-height-icon);
    height: var(--control-height-icon);
    min-height: var(--control-height-icon);
}

.kgi-field { display: grid; gap: var(--spacing-xs); }
.kgi-field > label { color: var(--color-text-dark); font-weight: 600; }
.kgi-required { color: var(--color-danger); }
.kgi-field-help { color: var(--color-text-muted); font-size: .8rem; }
.kgi-field-error { display: block; color: var(--color-alert-danger-text); font-size: .8rem; font-weight: 600; }
.kgi-field.has-error :is(input, select, textarea) { border-color: var(--color-alert-danger-text); }
.kgi-field-hint { display: inline-flex; align-items: center; gap: .3rem; color: var(--color-text-muted); font-size: .75rem; }
.kgi-form-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--spacing-sm); margin-top: var(--spacing-lg); }
.kgi-form-dirty-note { display: none; color: var(--color-alert-warning-text); font-size: .8rem; }
form[data-dirty="true"] .kgi-form-dirty-note { display: block; }
body .kgi-field :is(input, select, textarea)[aria-invalid="true"] {
    border-color: var(--color-alert-danger-text);
    box-shadow: 0 0 0 3px var(--color-alert-danger-bg);
}
.kgi-form-error-summary { scroll-margin-top: 1rem; }

body :is(.alert, .alert-kgi, .message-alert) {
    display: block;
    margin-bottom: var(--spacing-md);
}
body :is(.alert-info, .alert-kgi-info, .message-alert.info) { background: var(--color-alert-info-bg); color: var(--color-alert-info-text); border-color: var(--color-alert-info-border); }
body :is(.alert-success, .alert-kgi-success, .message-alert.success) { background: var(--color-alert-success-bg); color: var(--color-alert-success-text); border-color: var(--color-alert-success-border); }
body :is(.alert-warning, .alert-kgi-warning, .message-alert.warning) { background: var(--color-alert-warning-bg); color: var(--color-alert-warning-text); border-color: var(--color-alert-warning-border); }
body :is(.alert-danger, .alert-kgi-danger, .message-alert.error, .message-alert.danger) { background: var(--color-alert-danger-bg); color: var(--color-alert-danger-text); border-color: var(--color-alert-danger-border); }

body :is(.empty-state, .empty-state-card, .notification-empty) { min-height: 8rem; }
.kgi-loading { display: inline-flex; align-items: center; gap: var(--spacing-sm); color: var(--color-text-muted); }
.kgi-loading[aria-busy="true"] { cursor: progress; }
.kgi-loading-block { display: grid; min-height: 8rem; place-items: center; padding: var(--spacing-lg); }

dialog.kgi-modal[open], dialog.kgi-confirmation-dialog[open] { display: grid; }
dialog :is(.modal-header, .modal-body, .modal-footer) { min-width: 0; }
dialog form[method="dialog"] { margin: 0; }
.kgi-list-pagination [aria-current="page"] { font-weight: 700; }
.kgi-table-scroll:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    .erp-main > *,
    .kgi-toast,
    .kgi-drawer[open],
    dialog.kgi-modal[open],
    dialog.kgi-confirmation-dialog[open] { animation: none !important; transform: none !important; }
}

@media (prefers-contrast: more) {
    :root {
        --color-border: currentColor;
        --color-primary-focus-rgba: currentColor;
    }

    body :is(button, input, select, textarea, a, summary):focus-visible {
        outline: 4px solid currentColor;
        outline-offset: 4px;
    }

    body :is(.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline),
    body :is(input, select, textarea),
    body :is(.badge, .status-badge, .status-tag, .alert, .message-alert) {
        border-width: 2px;
    }

    body :is(.badge, .status-badge, .status-tag) {
        font-weight: 800;
    }
}

@media (forced-colors: active) {
    :root {
        --color-bg-main: Canvas;
        --color-bg-card: Canvas;
        --color-text-dark: CanvasText;
        --color-text-muted: CanvasText;
        --color-text-soft: CanvasText;
        --color-border: ButtonBorder;
        --color-primary: LinkText;
        --color-on-primary: ButtonText;
        --surface-subtle: Canvas;
        --surface-default: Canvas;
        --surface-critical: Canvas;
        --focus-color: Highlight;
        --focus-shadow: none;
    }

    * { forced-color-adjust: auto; }
    body :is(a, button, input, select, textarea, summary, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible { outline: 3px solid Highlight; outline-offset: 4px; box-shadow: none; }
    body :is(.kgi-button, .btn, .kgi-card, .card, .kgi-badge, .status-badge, .alert, .kgi-alert, .kgi-toast, .kgi-drawer, .kgi-modal) { border: 1px solid ButtonBorder; box-shadow: none !important; }
}
.pagination { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0; list-style: none; }
.pagination :is(a, .page-link, [aria-current="page"]) { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; min-height: 42px; padding: .5rem .75rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg-card); color: var(--color-primary); text-decoration: none; }
.pagination :is([aria-current="page"], .active .page-link) { background: var(--color-primary); color: var(--color-on-primary); border-color: var(--color-primary); }
.pagination :is(.disabled, [aria-disabled="true"]) { color: var(--color-text-muted); opacity: .65; }
.kgi-menu { padding: .5rem; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.kgi-menu summary { padding: .5rem; cursor: pointer; font-weight: 600; }
.kgi-menu a { display: block; padding: .65rem; color: var(--color-primary); border-radius: var(--radius-sm); }
.kgi-menu a:hover { background: var(--surface-subtle); }
dialog.kgi-modal, .modal-card, .modal-content { width: min(560px, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); overflow-y: auto; margin: auto; padding: 0; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-bg-card); color: var(--color-text-dark); box-shadow: var(--shadow-md); }
dialog.kgi-modal::backdrop, .modal-overlay { background: rgb(6 18 36 / 65%); backdrop-filter: blur(4px); }
.kgi-modal :is(.modal-header, .modal-body, .modal-footer), .modal-card :is(.modal-header, .modal-body, .modal-footer) { padding: 1.25rem; }
.kgi-modal .modal-footer { display: flex; justify-content: flex-end; gap: .75rem; border-top: 1px solid var(--color-border); }
.kgi-confirmation-dialog { width: min(30rem, calc(100% - 2rem)); padding: 0; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-bg-card); color: var(--color-text-dark); box-shadow: var(--shadow-md); }
.kgi-confirmation-dialog::backdrop { background: var(--surface-overlay); backdrop-filter: blur(4px); }
.kgi-confirmation-dialog form { display: grid; gap: var(--spacing-lg); padding: var(--spacing-lg); }
.kgi-confirmation-dialog h2 { font-size: 1.15rem; }
.kgi-confirmation-dialog p { color: var(--color-text-muted); }
.kgi-confirmation-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--spacing-sm); }
.empty-state, .empty-row td, .table-empty td { padding: var(--spacing-xl) var(--spacing-md) !important; color: var(--color-text-muted); text-align: center; }
.dashboard-eyebrow { color: var(--color-primary); font-size: .72rem; letter-spacing: .15em; font-weight: 700; text-transform: uppercase; margin-bottom: .65rem; }
.erp-main .dashboard-container { padding: 0; min-height: 0; background: transparent; }
.erp-main .dashboard-header { padding: clamp(1.25rem, 2.5vw, 2rem); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: linear-gradient(115deg, var(--color-bg-card), var(--surface-subtle)); margin-bottom: 1.5rem; }
.erp-main .dashboard-header .page-title { font-size: clamp(1.4rem, 2.3vw, 2rem); color: var(--color-text-dark); letter-spacing: -.035em; }
.dashboard-container .header-titles { flex: 1 1 320px; }
.dashboard-container .page-subtitle { max-width: 65ch; margin-top: .65rem; }
.dashboard-container .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dashboard-container .kpi-card { position: relative; border-left: 4px solid var(--color-primary); }
.dashboard-container .kpi-success { border-left-color: var(--color-success); }
.dashboard-container .kpi-warning { border-left-color: var(--color-warning); }
.dashboard-container .kpi-body { align-items: flex-start; gap: 1rem; }
.dashboard-container .kpi-body > .kpi-info { min-width: 0; }
.dashboard-container .kpi-value { font-size: clamp(1.3rem, 2vw, 1.85rem); overflow-wrap: anywhere; margin: .65rem 0; letter-spacing: -.03em; }
.dashboard-container .kpi-icon-wrapper { padding: .65rem; background: var(--surface-subtle); border-radius: var(--radius-md); color: var(--color-primary); }
.dashboard-container svg { width: 20px; height: 20px; flex-shrink: 0; }
.dashboard-container .card { margin-bottom: 1.5rem; }
.dashboard-container .kpi-card { margin-bottom: 0; }
.dashboard-container .bg-dark-header { background: var(--surface-subtle); }
.dashboard-container .card-title.text-white { color: var(--color-text-dark); }
.entity-balances { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 1rem; }
.entity-balance { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem; padding: 1rem; background: var(--surface-subtle); border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.entity-balance small { display: block; color: var(--color-text-muted); margin-bottom: .35rem; }
.entity-balance strong { font-variant-numeric: tabular-nums; }
.entity-balance .text-end { text-align: right; }
.dashboard-container .nav-tile { align-items: flex-start; gap: .75rem; border-radius: var(--radius-md); background: var(--color-bg-card); }
.dashboard-container .nav-tile-title { text-align: left; font-weight: 600; }
:root[data-theme="dark"] .erp-main :is(.user-info-badge span, .bg-light, .kpi-card, .stat-card, .filter-card, .form-section) { background: var(--color-bg-card); color: var(--color-text-dark); border-color: var(--color-border); }
:root[data-theme="dark"] :is(.auth-body, .login-panel, .login-panel__inner, .input-shell) { background: var(--color-bg-main); color: var(--color-text-dark); }
:root[data-theme="dark"] :is(.login-header h2, .login-header p, .login-form label, .login-kicker, .error-subtext) { color: var(--color-text-dark); }
.auth-body > .theme-control { position: fixed; top: 1rem; right: 1rem; z-index: 20; padding: .4rem .65rem; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.auth-body { overflow: auto; }
.auth-shell { min-height: 100dvh; height: auto; overflow: clip; }
.auth-shell .login-panel { min-height: 100dvh; padding-top: 5rem; padding-bottom: 2rem; overflow: visible; }
.auth-body .login-form .input-shell .form-input { padding-left: 3rem; padding-right: 3.25rem; background: var(--color-bg-card); color: var(--color-text-dark); }
:root[data-theme="dark"] .mobile-brand .brand-logo { filter: none; }
body .status-EN_ATTENTE { background: var(--color-alert-warning-bg); color: var(--color-alert-warning-text); border-color: var(--color-alert-warning-border); }
body .status-APPROUVE { background: var(--color-alert-success-bg); color: var(--color-alert-success-text); border-color: var(--color-alert-success-border); }
body .status-REJETE { background: var(--color-alert-danger-bg); color: var(--color-alert-danger-text); border-color: var(--color-alert-danger-border); }
body .status-dot { background: currentColor; }
.erp-main :is(.rule-box, .doc-card, .carte-sidebar, .doc-info-box) { background: var(--color-bg-card); border-color: var(--color-border); color: var(--color-text-dark); }
body .btn-kgi-primary { background: var(--color-primary); color: var(--color-on-primary); }
.pagination-container .step-links { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .5rem; }
:root[data-theme="dark"] { --auth-ink: var(--color-text-dark); --auth-muted: var(--color-text-muted); --auth-line: var(--color-border); --auth-blue: #1b61d3; --auth-navy: #1b61d3; }
@media (min-width: 1600px) { .dashboard-container .kpi-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 1200px) { .topbar-context { flex-basis: 100%; } .topbar-user-menu { justify-content: flex-start; } }
@media (max-width: 980px) {
    .erp-container { height: auto; min-height: 100dvh; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr; grid-template-areas: 'topbar' 'sidebar' 'main'; }
    .erp-sidebar { max-height: 65dvh; }
    .erp-main { overflow: visible; }
    .erp-topbar { min-height: 0; }
    .topbar-wrapper { flex-direction: row; align-items: center; justify-content: flex-start; padding: .75rem 1rem; }
    .topbar-context { flex-basis: auto; }
    .has-interface-js .sidebar-toggle { display: inline-flex !important; }
    .topbar-user-menu { width: 100%; }
    .dashboard-container .header-titles { flex-basis: auto; }
}
@media (max-width: 600px) {
    .erp-main { padding: 1rem; }
    .topbar-context { display: none; }
    .theme-control { margin-left: auto; }
    .topbar-user-menu { gap: .5rem; }
    .user-name { max-width: 100%; white-space: normal; }
    .dashboard-container :is(.kpi-grid, .primary-menus, .secondary-menus) { grid-template-columns: minmax(0, 1fr); }
    .dashboard-container .header-actions { width: 100%; }
    .dashboard-container .header-actions > a { flex: 1 1 100%; }
    .erp-main :is(.page-header, .dash-header) { flex-wrap: wrap; gap: 1rem; }
    .erp-main :is(input, select, textarea) { font-size: 16px; }
    .kgi-table--mobile-cards,
    .kgi-table--mobile-cards thead,
    .kgi-table--mobile-cards tbody,
    .kgi-table--mobile-cards tr,
    .kgi-table--mobile-cards th,
    .kgi-table--mobile-cards td { display: block; }
    .kgi-table--mobile-cards thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
    .kgi-table--mobile-cards tr { margin: 0 0 var(--spacing-md); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg-card); overflow: hidden; }
    .kgi-table--mobile-cards td { display: grid; grid-template-columns: minmax(7rem, 42%) minmax(0, 1fr); gap: .75rem; padding: .75rem 1rem !important; text-align: right; }
    .kgi-table--mobile-cards td::before { content: attr(data-label); color: var(--color-text-muted); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-align: left; text-transform: uppercase; }
    .kgi-table--mobile-cards td:empty { display: none; }
}
@media (max-width: 390px) {
    .erp-main { padding: .75rem; }
    .kgi-card__header,
    .kgi-card__body,
    .kgi-panel__header,
    .kgi-panel__footer { padding: .9rem; }
    .kgi-button,
    body :is(.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-warning, .btn-outline) { width: 100%; }
    .kgi-button--icon-only,
    body :is(.btn-icon, .btn-icon-only) { width: var(--control-height-icon); }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
@media print {
    .erp-sidebar, .erp-topbar, .skip-link, .theme-control { display: none !important; }
    .erp-container { display: block; height: auto; }
    .erp-main { overflow: visible; padding: 0; background: white; color: black; }
}
