/* =====================================================================
   MediCos ERP — Design System
   Clinical-premium: calm navy + pharma teal, airy data-dense surfaces.
   Built on Bootstrap 5.3; tokens below override Bootstrap variables.
   ===================================================================== */

/* ---------- Fonts (self-hosted, works offline) ---------- */
@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/inter/Inter-Regular.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/inter/Inter-Medium.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/inter/Inter-SemiBold.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/inter/Inter-Bold.woff2") format("woff2"); }

/* ---------- Tokens ---------- */
:root {
    --erp-primary: #0e7c86;
    --erp-primary-hover: #0b6670;
    --erp-primary-soft: #e6f4f5;
    --erp-primary-rgb: 14, 124, 134;

    --erp-sidebar-bg: #0b1f2a;
    --erp-sidebar-bg-2: #0f2a38;
    --erp-sidebar-text: #b6c4cf;
    --erp-sidebar-muted: #6f8798;
    --erp-sidebar-active: #ffffff;

    --erp-ink: #0f172a;
    --erp-text: #334155;
    --erp-muted: #64748b;
    --erp-subtle: #94a3b8;
    --erp-border: #e2e8f0;
    --erp-border-strong: #cbd5e1;
    --erp-surface: #ffffff;
    --erp-surface-2: #f8fafc;
    --erp-canvas: #f3f6f9;

    --erp-success: #16a34a;  --erp-success-soft: #e8f6ee;
    --erp-warning: #d97706;  --erp-warning-soft: #fdf3e4;
    --erp-danger:  #dc2626;  --erp-danger-soft:  #fdecec;
    --erp-info:    #2563eb;  --erp-info-soft:    #eaf1fe;
    --erp-neutral-soft: #eef2f6;

    --erp-radius: 10px;
    --erp-radius-sm: 8px;
    --erp-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .04);
    --erp-shadow-lg: 0 10px 30px rgba(15, 23, 42, .10);

    --erp-sidebar-w: 264px;
    --erp-sidebar-w-collapsed: 76px;
    --erp-topbar-h: 64px;

    /* Bootstrap overrides */
    --bs-body-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --bs-body-font-size: .875rem;
    --bs-body-color: var(--erp-text);
    --bs-body-bg: var(--erp-canvas);
    --bs-emphasis-color: var(--erp-ink);
    --bs-heading-color: var(--erp-ink);
    --bs-primary: var(--erp-primary);
    --bs-primary-rgb: var(--erp-primary-rgb);
    --bs-link-color: var(--erp-primary);
    --bs-link-color-rgb: var(--erp-primary-rgb);
    --bs-link-hover-color: var(--erp-primary-hover);
    --bs-border-color: var(--erp-border);
    --bs-border-radius: var(--erp-radius-sm);
    --bs-border-radius-lg: var(--erp-radius);
    --bs-secondary-color: var(--erp-muted);
    --bs-focus-ring-color: rgba(var(--erp-primary-rgb), .25);
}

/* ---------- Base ---------- */
html { -webkit-text-size-adjust: 100%; }
body { font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; letter-spacing: -0.003em; }
h1, h2, h3, h4, h5, h6 { color: var(--erp-ink); font-weight: 600; letter-spacing: -0.015em; }
a { text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 2px; }
.btn:hover, .nav-link:hover, .dropdown-item:hover, .erp-nav-link:hover, .list-group-item:hover { text-decoration: none; }
.tabular { font-variant-numeric: tabular-nums; }
.text-ink { color: var(--erp-ink) !important; }
.text-muted, .text-body-secondary { color: var(--erp-muted) !important; }
.small-caps { font-size: .6875rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--erp-subtle); }
:focus-visible { outline: 2px solid rgba(var(--erp-primary-rgb), .55); outline-offset: 2px; }
::selection { background: rgba(var(--erp-primary-rgb), .18); }
.visually-hidden-focusable:focus { position: fixed !important; top: 8px; left: 8px; z-index: 2000; background: #fff; padding: 8px 12px; border-radius: 6px; box-shadow: var(--erp-shadow-lg); }

/* ---------- Buttons ---------- */
.btn { --bs-btn-font-weight: 500; --bs-btn-padding-y: .5rem; --bs-btn-padding-x: .95rem; --bs-btn-font-size: .875rem; border-radius: var(--erp-radius-sm); display: inline-flex; align-items: center; justify-content: center; gap: .45rem; }
.btn-sm { --bs-btn-padding-y: .3rem; --bs-btn-padding-x: .65rem; --bs-btn-font-size: .8125rem; }
.btn-primary { --bs-btn-bg: var(--erp-primary); --bs-btn-border-color: var(--erp-primary); --bs-btn-hover-bg: var(--erp-primary-hover); --bs-btn-hover-border-color: var(--erp-primary-hover); --bs-btn-active-bg: var(--erp-primary-hover); --bs-btn-active-border-color: var(--erp-primary-hover); --bs-btn-disabled-bg: var(--erp-primary); --bs-btn-disabled-border-color: var(--erp-primary); box-shadow: 0 1px 2px rgba(14, 124, 134, .25); }
.btn-outline-primary { --bs-btn-color: var(--erp-primary); --bs-btn-border-color: rgba(var(--erp-primary-rgb), .45); --bs-btn-hover-bg: var(--erp-primary); --bs-btn-hover-border-color: var(--erp-primary); --bs-btn-active-bg: var(--erp-primary-hover); }
.btn-light { --bs-btn-bg: var(--erp-surface); --bs-btn-border-color: var(--erp-border); --bs-btn-color: var(--erp-ink); --bs-btn-hover-bg: var(--erp-surface-2); --bs-btn-hover-border-color: var(--erp-border-strong); --bs-btn-active-bg: var(--erp-neutral-soft); }
.btn-ghost { --bs-btn-color: var(--erp-muted); --bs-btn-hover-bg: var(--erp-neutral-soft); --bs-btn-hover-color: var(--erp-ink); --bs-btn-border-color: transparent; --bs-btn-hover-border-color: transparent; --bs-btn-active-bg: var(--erp-neutral-soft); }
.btn-soft-danger { --bs-btn-bg: var(--erp-danger-soft); --bs-btn-color: var(--erp-danger); --bs-btn-border-color: transparent; --bs-btn-hover-bg: var(--erp-danger); --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: var(--erp-danger); }
.btn-icon { width: 38px; height: 38px; padding: 0; }
.btn-icon.btn-sm { width: 32px; height: 32px; }
.btn .spinner-border { width: 1rem; height: 1rem; border-width: .15em; }

/* ---------- Forms ---------- */
.form-label { font-weight: 500; color: var(--erp-ink); font-size: .8125rem; margin-bottom: .35rem; }
.form-label .req { color: var(--erp-danger); margin-left: 2px; }
.form-control, .form-select { border-color: var(--erp-border-strong); border-radius: var(--erp-radius-sm); min-height: 40px; font-size: .875rem; color: var(--erp-ink); background-color: #fff; }
.form-control::placeholder { color: var(--erp-subtle); }
.form-control:focus, .form-select:focus { border-color: var(--erp-primary); box-shadow: 0 0 0 .2rem rgba(var(--erp-primary-rgb), .15); }
.form-control.is-invalid, .form-select.is-invalid { border-color: var(--erp-danger); background-image: none; padding-right: .75rem; }
.invalid-feedback { font-size: .78rem; }
.form-text { color: var(--erp-muted); font-size: .78rem; }
.form-check-input { border-color: var(--erp-border-strong); }
.form-check-input:checked { background-color: var(--erp-primary); border-color: var(--erp-primary); }
.form-check-input:focus { box-shadow: 0 0 0 .2rem rgba(var(--erp-primary-rgb), .15); border-color: var(--erp-primary); }
.form-switch .form-check-input { width: 2.4em; height: 1.3em; }
.input-group-text { background: var(--erp-surface-2); border-color: var(--erp-border-strong); color: var(--erp-muted); }
.input-group .btn-light { border-color: var(--erp-border-strong); }
.erp-search { position: relative; }
.erp-search .bi { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--erp-subtle); pointer-events: none; }
.erp-search .form-control { padding-left: 36px; }

.erp-form-section { border-top: 1px solid var(--erp-border); padding-top: 1.25rem; margin-top: 1.25rem; }
.erp-form-section:first-child { border-top: 0; padding-top: 0; margin-top: 0; }
.erp-form-section-title { font-size: .9375rem; font-weight: 600; margin-bottom: .2rem; }
.erp-form-section-desc { color: var(--erp-muted); font-size: .8125rem; margin-bottom: 1rem; }

.erp-password-meter { height: 4px; border-radius: 4px; background: var(--erp-neutral-soft); overflow: hidden; margin-top: .5rem; }
.erp-password-meter > span { display: block; height: 100%; width: 0; background: var(--erp-danger); transition: width .25s ease, background-color .25s ease; }
.erp-password-meter[data-score="2"] > span { width: 50%; background: var(--erp-warning); }
.erp-password-meter[data-score="1"] > span { width: 25%; }
.erp-password-meter[data-score="3"] > span { width: 75%; background: #65a30d; }
.erp-password-meter[data-score="4"] > span { width: 100%; background: var(--erp-success); }

/* Sticky form action bar */
.erp-form-actions { position: sticky; bottom: 0; z-index: 5; display: flex; gap: .5rem; justify-content: flex-end; align-items: center; padding: .85rem 1.25rem; background: rgba(255, 255, 255, .92); backdrop-filter: blur(6px); border-top: 1px solid var(--erp-border); border-radius: 0 0 var(--erp-radius) var(--erp-radius); }

/* ---------- Layout shell ---------- */
.erp-shell { min-height: 100vh; }

.erp-sidebar {
    --bs-offcanvas-width: 288px;
    --bs-offcanvas-bg: var(--erp-sidebar-bg);
    background: linear-gradient(180deg, var(--erp-sidebar-bg) 0%, var(--erp-sidebar-bg-2) 100%);
    color: var(--erp-sidebar-text);
    display: flex; flex-direction: column;
}
@media (min-width: 992px) {
    .erp-sidebar { position: fixed; inset: 0 auto 0 0; width: var(--erp-sidebar-w); z-index: 1030; }
    .erp-main { margin-left: var(--erp-sidebar-w); }
    /* Animate only while the user toggles, never on load or window resize. */
    html.erp-sidebar-anim .erp-sidebar { transition: width .2s ease; }
    html.erp-sidebar-anim .erp-main { transition: margin-left .2s ease; }
    html.erp-sidebar-collapsed .erp-sidebar { width: var(--erp-sidebar-w-collapsed); }
    html.erp-sidebar-collapsed .erp-main { margin-left: var(--erp-sidebar-w-collapsed); }
    html.erp-sidebar-collapsed .erp-sidebar .erp-collapse-hide { display: none !important; }
    html.erp-sidebar-collapsed .erp-nav-link { justify-content: center; padding-left: 0; padding-right: 0; }
    html.erp-sidebar-collapsed .erp-brand { justify-content: center; padding-left: 0; padding-right: 0; }
    html.erp-sidebar-collapsed .erp-nav-group-label { text-align: center; font-size: 0; }
    html.erp-sidebar-collapsed .erp-nav-group-label::after { content: "•••"; font-size: .6rem; letter-spacing: .1em; }
    html.erp-sidebar-collapsed .erp-sidebar-footer { justify-content: center; }
}
.erp-sidebar .offcanvas-header { border-bottom: 1px solid rgba(255, 255, 255, .06); }
.erp-sidebar .btn-close { filter: invert(1) grayscale(1) brightness(1.8); }

.erp-brand { display: flex; align-items: center; gap: .75rem; height: var(--erp-topbar-h); padding: 0 1.25rem; color: #fff; border-bottom: 1px solid rgba(255, 255, 255, .06); flex-shrink: 0; }
.erp-brand:hover { color: #fff; text-decoration: none; }
.erp-brand-mark { width: 36px; height: 36px; border-radius: 10px; flex-shrink: 0; display: grid; place-items: center; background: linear-gradient(135deg, #14a3ad 0%, #0e7c86 55%, #0a5960 100%); color: #fff; font-weight: 700; font-size: .95rem; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.erp-brand-mark img { width: 100%; height: 100%; object-fit: contain; border-radius: 10px; background: #fff; padding: 3px; }
.erp-brand-name { font-weight: 600; font-size: .95rem; line-height: 1.15; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 170px; }
.erp-brand-sub { font-size: .6875rem; color: var(--erp-sidebar-muted); letter-spacing: .04em; }

.erp-nav { flex: 1 1 auto; overflow-y: auto; padding: .75rem .75rem 1rem; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .15) transparent; }
.erp-nav-group-label { font-size: .65rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--erp-sidebar-muted); padding: 1rem .75rem .4rem; }
.erp-nav-link { display: flex; align-items: center; gap: .75rem; padding: .55rem .75rem; margin: 2px 0; border-radius: 8px; color: var(--erp-sidebar-text); font-weight: 500; font-size: .8125rem; position: relative; transition: background-color .15s ease, color .15s ease; }
.erp-nav-link .bi { font-size: 1.05rem; width: 20px; text-align: center; opacity: .85; }
.erp-nav-link:hover { background: rgba(255, 255, 255, .06); color: #fff; }
.erp-nav-link.active { background: rgba(20, 163, 173, .16); color: var(--erp-sidebar-active); }
.erp-nav-link.active .bi { opacity: 1; color: #5fd4db; }
.erp-nav-link.active::before { content: ""; position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: #2cc1cb; }

.erp-sidebar-footer { padding: .9rem 1.25rem; border-top: 1px solid rgba(255, 255, 255, .06); display: flex; align-items: center; gap: .6rem; font-size: .7rem; color: var(--erp-sidebar-muted); flex-shrink: 0; }
.erp-sidebar-footer .dot { width: 7px; height: 7px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 3px rgba(34, 197, 94, .18); flex-shrink: 0; }

/* Top bar */
.erp-topbar { position: sticky; top: 0; z-index: 1020; height: var(--erp-topbar-h); display: flex; align-items: center; gap: .75rem; padding: 0 1.5rem; background: rgba(255, 255, 255, .88); backdrop-filter: saturate(180%) blur(10px); border-bottom: 1px solid var(--erp-border); }
.erp-topbar-title { font-weight: 600; color: var(--erp-ink); font-size: .95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.erp-topbar-date { color: var(--erp-muted); font-size: .8125rem; white-space: nowrap; }
.erp-topbar .dropdown-menu { border: 1px solid var(--erp-border); box-shadow: var(--erp-shadow-lg); border-radius: 12px; padding: .4rem; font-size: .8125rem; }
.erp-topbar .dropdown-item { border-radius: 8px; padding: .5rem .7rem; display: flex; align-items: center; gap: .6rem; color: var(--erp-text); }
.erp-topbar .dropdown-item:active { background: var(--erp-primary-soft); color: var(--erp-ink); }
.erp-topbar .dropdown-item .bi { color: var(--erp-muted); }

.erp-bell { position: relative; }
.erp-bell-badge { position: absolute; top: 3px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--erp-danger); color: #fff; font-size: .65rem; font-weight: 600; display: grid; place-items: center; box-shadow: 0 0 0 2px #fff; }
.erp-notif-menu { width: 360px; max-width: calc(100vw - 24px); }
.erp-notif-item { display: flex; gap: .7rem; padding: .65rem .7rem; border-radius: 8px; width: 100%; text-align: left; background: none; border: 0; color: var(--erp-text); }
.erp-notif-item:hover { background: var(--erp-surface-2); }
.erp-notif-item.unread { background: var(--erp-primary-soft); }
.erp-notif-item.unread:hover { background: #d8eef0; }
.erp-notif-title { font-weight: 600; color: var(--erp-ink); font-size: .8125rem; line-height: 1.3; }
.erp-notif-body { color: var(--erp-muted); font-size: .75rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.erp-notif-time { color: var(--erp-subtle); font-size: .7rem; margin-top: 2px; }

.erp-user-btn { display: flex; align-items: center; gap: .6rem; padding: .25rem .5rem .25rem .25rem; border-radius: 999px; border: 1px solid transparent; background: none; color: var(--erp-ink); }
.erp-user-btn:hover, .erp-user-btn[aria-expanded="true"] { background: var(--erp-surface-2); border-color: var(--erp-border); }
.erp-avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, #d6f0f2, #b9e3e7); color: var(--erp-primary-hover); font-weight: 600; font-size: .75rem; letter-spacing: .02em; }
.erp-avatar.lg { width: 64px; height: 64px; font-size: 1.25rem; }
.erp-avatar.sm { width: 28px; height: 28px; font-size: .65rem; }

/* Content */
.erp-content { padding: 1.5rem; max-width: 1480px; }
@media (max-width: 575.98px) { .erp-content { padding: 1rem; } .erp-topbar { padding: 0 1rem; } }

.erp-breadcrumb { --bs-breadcrumb-divider-color: var(--erp-subtle); --bs-breadcrumb-item-active-color: var(--erp-muted); font-size: .78rem; margin-bottom: .35rem; }
.erp-breadcrumb .breadcrumb-item + .breadcrumb-item::before { content: "›"; }
.erp-breadcrumb a { color: var(--erp-muted); }
.erp-breadcrumb a:hover { color: var(--erp-primary); }

.erp-page-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.erp-page-title { font-size: 1.375rem; margin: 0; }
.erp-page-subtitle { color: var(--erp-muted); margin: .25rem 0 0; font-size: .875rem; }
.erp-page-actions { display: flex; flex-wrap: wrap; gap: .5rem; }

.erp-footer { padding: 1rem 1.5rem 1.5rem; color: var(--erp-subtle); font-size: .75rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; max-width: 1480px; }

/* ---------- Cards ---------- */
.erp-card { background: var(--erp-surface); border: 1px solid var(--erp-border); border-radius: var(--erp-radius); box-shadow: var(--erp-shadow); }
.erp-card-header { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--erp-border); }
.erp-card-title { font-size: .9375rem; font-weight: 600; margin: 0; color: var(--erp-ink); }
.erp-card-subtitle { color: var(--erp-muted); font-size: .78rem; margin: .1rem 0 0; }
.erp-card-body { padding: 1.25rem; }
.erp-card-footer { padding: .85rem 1.25rem; border-top: 1px solid var(--erp-border); background: var(--erp-surface-2); border-radius: 0 0 var(--erp-radius) var(--erp-radius); }

/* KPI cards */
.erp-kpi { position: relative; padding: 1.1rem 1.15rem; height: 100%; display: flex; flex-direction: column; gap: .75rem; overflow: hidden; }
.erp-kpi-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.erp-kpi-label { color: var(--erp-muted); font-size: .78rem; font-weight: 500; }
.erp-kpi-icon { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; font-size: 1.05rem; flex-shrink: 0; }
.erp-kpi-value { font-size: 1.625rem; font-weight: 600; color: var(--erp-ink); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.erp-kpi-meta { font-size: .72rem; color: var(--erp-muted); display: flex; align-items: center; gap: .35rem; }
.erp-kpi.is-pending .erp-kpi-value { color: var(--erp-border-strong); }
.erp-kpi.is-pending::after { content: ""; position: absolute; inset: auto 0 0 0; height: 3px; background: repeating-linear-gradient(90deg, var(--erp-border) 0 8px, transparent 8px 14px); }
.tone-primary { background: var(--erp-primary-soft); color: var(--erp-primary); }
.tone-success { background: var(--erp-success-soft); color: var(--erp-success); }
.tone-warning { background: var(--erp-warning-soft); color: var(--erp-warning); }
.tone-danger  { background: var(--erp-danger-soft);  color: var(--erp-danger); }
.tone-info    { background: var(--erp-info-soft);    color: var(--erp-info); }
.tone-neutral { background: var(--erp-neutral-soft); color: var(--erp-muted); }

/* Hero / welcome */
.erp-hero { position: relative; overflow: hidden; border-radius: 14px; padding: 1.5rem 1.75rem; color: #e6f3f5; background: radial-gradient(1200px 300px at 100% 0%, rgba(44, 193, 203, .28), transparent 60%), linear-gradient(135deg, #0b1f2a 0%, #0f3340 60%, #0e4b55 100%); box-shadow: var(--erp-shadow); }
.erp-hero h1 { color: #fff; font-size: 1.375rem; margin: 0 0 .3rem; }
.erp-hero p { margin: 0; color: #a9c4cc; }
.erp-hero-pattern { position: absolute; right: -40px; top: -40px; width: 260px; height: 260px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .07); box-shadow: 0 0 0 40px rgba(255, 255, 255, .025), 0 0 0 80px rgba(255, 255, 255, .02); pointer-events: none; }
.erp-hero-stat { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .08); border-radius: 10px; padding: .6rem .85rem; min-width: 120px; }
.erp-hero-stat .v { color: #fff; font-weight: 600; font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.erp-hero-stat .l { color: #8fb0b9; font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; }

/* ---------- Badges ---------- */
.badge { font-weight: 500; letter-spacing: .01em; padding: .35em .6em; border-radius: 6px; }
.badge-soft-success { background: var(--erp-success-soft); color: #15803d; }
.badge-soft-warning { background: var(--erp-warning-soft); color: #b45309; }
.badge-soft-danger  { background: var(--erp-danger-soft);  color: #b91c1c; }
.badge-soft-info    { background: var(--erp-info-soft);    color: #1d4ed8; }
.badge-soft-primary { background: var(--erp-primary-soft); color: var(--erp-primary-hover); }
.badge-soft-neutral { background: var(--erp-neutral-soft); color: var(--erp-muted); }
.badge-dot::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: currentColor; margin-right: .4em; vertical-align: .1em; }
.erp-phase-pill { display: inline-flex; align-items: center; gap: .3rem; font-size: .68rem; font-weight: 500; color: var(--erp-muted); background: var(--erp-neutral-soft); border-radius: 999px; padding: .2rem .55rem; }

/* ---------- Tables ---------- */
.erp-table-wrap { overflow-x: auto; }
.erp-table { width: 100%; margin: 0; font-size: .8125rem; border-collapse: separate; border-spacing: 0; }
.erp-table thead th { position: sticky; top: 0; background: var(--erp-surface-2); color: var(--erp-muted); font-weight: 600; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; padding: .7rem 1rem; border-bottom: 1px solid var(--erp-border); white-space: nowrap; z-index: 1; }
.erp-table thead th a { color: inherit; display: inline-flex; align-items: center; gap: .25rem; }
.erp-table thead th a:hover { color: var(--erp-ink); text-decoration: none; }
.erp-table tbody td { padding: .8rem 1rem; border-bottom: 1px solid var(--erp-border); vertical-align: middle; color: var(--erp-text); }
.erp-table tbody tr:last-child td { border-bottom: 0; }
.erp-table tbody tr { transition: background-color .12s ease; }
.erp-table tbody tr:hover { background: #fafcfd; }
.erp-table .col-actions { width: 1%; white-space: nowrap; text-align: right; }
.erp-cell-title { font-weight: 600; color: var(--erp-ink); }
.erp-cell-sub { color: var(--erp-muted); font-size: .75rem; }

/* Mobile: rows become cards */
@media (max-width: 767.98px) {
    .erp-table-stack thead { display: none; }
    .erp-table-stack, .erp-table-stack tbody, .erp-table-stack tr, .erp-table-stack td { display: block; width: 100%; }
    .erp-table-stack tr { padding: .85rem 1rem; border-bottom: 1px solid var(--erp-border); }
    .erp-table-stack tbody tr:last-child { border-bottom: 0; }
    .erp-table-stack tbody td { border: 0; padding: .2rem 0; display: flex; justify-content: space-between; gap: 1rem; text-align: right; }
    .erp-table-stack tbody td[data-label]::before { content: attr(data-label); color: var(--erp-muted); font-size: .72rem; font-weight: 500; text-align: left; flex-shrink: 0; }
    .erp-table-stack tbody td.erp-td-primary { display: block; text-align: left; padding-bottom: .4rem; }
    .erp-table-stack tbody td.erp-td-primary::before { display: none; }
    .erp-table-stack .col-actions { text-align: left; justify-content: flex-start; padding-top: .5rem; }
    .erp-table-stack .col-actions::before { display: none; }
}

.erp-toolbar { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; padding: .9rem 1.25rem; border-bottom: 1px solid var(--erp-border); }
.erp-toolbar .erp-search { flex: 1 1 240px; max-width: 360px; }
.erp-toolbar .form-select { width: auto; min-width: 140px; }
@media (max-width: 575.98px) { .erp-toolbar .erp-search, .erp-toolbar .form-select, .erp-toolbar .btn { flex: 1 1 100%; max-width: none; width: 100%; } }

.erp-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: .8rem 1.25rem; border-top: 1px solid var(--erp-border); font-size: .78rem; color: var(--erp-muted); }
.erp-pagination .pagination { margin: 0; --bs-pagination-font-size: .78rem; --bs-pagination-padding-x: .65rem; --bs-pagination-padding-y: .3rem; --bs-pagination-color: var(--erp-text); --bs-pagination-border-color: var(--erp-border); --bs-pagination-hover-bg: var(--erp-surface-2); --bs-pagination-active-bg: var(--erp-primary); --bs-pagination-active-border-color: var(--erp-primary); --bs-pagination-focus-box-shadow: 0 0 0 .2rem rgba(var(--erp-primary-rgb), .15); }

/* ---------- Empty states ---------- */
.erp-empty { text-align: center; padding: 2.75rem 1.5rem; }
.erp-empty-icon { width: 56px; height: 56px; margin: 0 auto 1rem; border-radius: 16px; display: grid; place-items: center; font-size: 1.5rem; background: var(--erp-neutral-soft); color: var(--erp-subtle); }
.erp-empty h3 { font-size: .9375rem; margin-bottom: .35rem; }
.erp-empty p { color: var(--erp-muted); font-size: .8125rem; max-width: 420px; margin: 0 auto; }
.erp-empty.compact { padding: 1.75rem 1rem; }

.erp-chart-placeholder { height: 240px; border-radius: var(--erp-radius-sm); border: 1px dashed var(--erp-border-strong); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 1rem; color: var(--erp-muted); background-image: linear-gradient(to top, rgba(14, 124, 134, .035), transparent 70%), repeating-linear-gradient(0deg, transparent 0 47px, var(--erp-border) 47px 48px); }
.erp-chart-placeholder .bi { font-size: 1.5rem; color: var(--erp-subtle); margin-bottom: .5rem; }

/* ---------- Lists / activity ---------- */
.erp-activity { list-style: none; margin: 0; padding: 0; }
.erp-activity li { display: flex; gap: .75rem; padding: .7rem 1.25rem; border-bottom: 1px solid var(--erp-border); }
.erp-activity li:last-child { border-bottom: 0; }
.erp-activity-icon { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; flex-shrink: 0; font-size: .85rem; }
.erp-activity-text { font-size: .8125rem; color: var(--erp-ink); line-height: 1.35; }
.erp-activity-meta { font-size: .72rem; color: var(--erp-muted); margin-top: 2px; }

.erp-checklist { list-style: none; margin: 0; padding: 0; }
.erp-checklist li a { display: flex; align-items: center; gap: .7rem; padding: .6rem 1.25rem; color: var(--erp-text); font-size: .8125rem; }
.erp-checklist li a:hover { background: var(--erp-surface-2); text-decoration: none; }
.erp-checklist .check { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--erp-border-strong); display: grid; place-items: center; flex-shrink: 0; font-size: .7rem; color: transparent; }
.erp-checklist .done .check { background: var(--erp-success); border-color: var(--erp-success); color: #fff; }
.erp-checklist .done .label { color: var(--erp-muted); text-decoration: line-through; text-decoration-color: var(--erp-border-strong); }
.erp-progress { height: 6px; border-radius: 6px; background: var(--erp-neutral-soft); overflow: hidden; }
.erp-progress > span { display: block; height: 100%; background: linear-gradient(90deg, #14a3ad, var(--erp-primary)); border-radius: 6px; }
/* Width steps for progress without inline styles (CSP-safe) */
.w-step-0 { width: 0; } .w-step-1 { width: 16.66%; } .w-step-2 { width: 33.33%; } .w-step-3 { width: 50%; } .w-step-4 { width: 66.66%; } .w-step-5 { width: 83.33%; } .w-step-6 { width: 100%; }

.erp-dl { display: grid; grid-template-columns: minmax(120px, 38%) 1fr; gap: .55rem 1rem; margin: 0; font-size: .8125rem; }
.erp-dl dt { color: var(--erp-muted); font-weight: 500; }
.erp-dl dd { margin: 0; color: var(--erp-ink); word-break: break-word; }

/* ---------- Tabs (settings) ---------- */
.erp-tabs { display: flex; flex-direction: column; gap: 2px; padding: .5rem; }
.erp-tab { display: flex; align-items: center; gap: .7rem; padding: .65rem .8rem; border-radius: 8px; color: var(--erp-text); font-weight: 500; font-size: .8125rem; }
.erp-tab .bi { color: var(--erp-muted); font-size: 1rem; }
.erp-tab:hover { background: var(--erp-surface-2); color: var(--erp-ink); text-decoration: none; }
.erp-tab.active { background: var(--erp-primary-soft); color: var(--erp-primary-hover); }
.erp-tab.active .bi { color: var(--erp-primary); }
@media (max-width: 991.98px) {
    .erp-tabs { flex-direction: row; overflow-x: auto; scrollbar-width: none; }
    .erp-tabs::-webkit-scrollbar { display: none; }
    .erp-tab { white-space: nowrap; }
}
.erp-segmented { display: inline-flex; padding: 3px; background: var(--erp-neutral-soft); border-radius: 9px; gap: 2px; }
.erp-segmented a { padding: .35rem .8rem; border-radius: 7px; color: var(--erp-muted); font-weight: 500; font-size: .78rem; }
.erp-segmented a:hover { color: var(--erp-ink); text-decoration: none; }
.erp-segmented a.active { background: #fff; color: var(--erp-ink); box-shadow: 0 1px 2px rgba(15, 23, 42, .08); }

/* Logo uploader */
.erp-logo-box { display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap; }
.erp-logo-preview { width: 120px; height: 120px; border-radius: 14px; border: 1px dashed var(--erp-border-strong); background: repeating-conic-gradient(#f8fafc 0% 25%, #fff 0% 50%) 50% / 16px 16px; display: grid; place-items: center; overflow: hidden; flex-shrink: 0; }
.erp-logo-preview img { max-width: 100%; max-height: 100%; object-fit: contain; }
.erp-logo-preview .bi { font-size: 2rem; color: var(--erp-subtle); }

/* Number preview chips */
.erp-code-chip { display: inline-flex; align-items: center; gap: .4rem; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .78rem; background: var(--erp-surface-2); border: 1px solid var(--erp-border); border-radius: 6px; padding: .3rem .55rem; color: var(--erp-ink); }

/* ---------- Permission matrix ---------- */
.erp-matrix { font-size: .8125rem; }
.erp-matrix-module { border-bottom: 1px solid var(--erp-border); }
.erp-matrix-module:last-child { border-bottom: 0; }
.erp-matrix-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem 1.25rem; background: var(--erp-surface-2); }
.erp-matrix-head .name { font-weight: 600; color: var(--erp-ink); }
.erp-matrix-head .count { color: var(--erp-muted); font-size: .72rem; }
.erp-matrix-perms { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .25rem 1rem; padding: .75rem 1.25rem 1rem; }
.erp-matrix-perms .form-check { padding: .4rem .5rem .4rem 2.1rem; border-radius: 6px; margin: 0; }
.erp-matrix-perms .form-check:hover { background: var(--erp-surface-2); }
.erp-matrix-perms code { font-size: .68rem; color: var(--erp-subtle); background: none; }

.erp-grid-table th.rot { min-width: 92px; text-align: center; font-size: .68rem; }
.erp-grid-table td.cell { text-align: center; }
.erp-grid-table .yes { color: var(--erp-success); font-size: 1rem; }
.erp-grid-table .no { color: var(--erp-border-strong); }
.erp-grid-table td:first-child, .erp-grid-table th:first-child { position: sticky; left: 0; background: #fff; z-index: 2; box-shadow: 1px 0 0 var(--erp-border); }
.erp-grid-table thead th:first-child { background: var(--erp-surface-2); z-index: 3; }
.erp-grid-table tr.module-row td { background: var(--erp-surface-2); font-weight: 600; color: var(--erp-ink); }

/* Diff table (audit) */
.erp-diff td { vertical-align: top; font-size: .8rem; }
.erp-diff .old { background: #fff6f6; color: #9f1239; }
.erp-diff .new { background: #f3fbf6; color: #166534; }
.erp-diff pre { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: .75rem; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

/* Secret link box */
.erp-secret { border: 1px solid #f5d9a8; background: #fffaf0; border-radius: var(--erp-radius-sm); padding: .9rem 1rem; }
.erp-secret code { word-break: break-all; color: #7c2d12; font-size: .75rem; }

/* ---------- Toasts & modals ---------- */
.erp-toasts { position: fixed; top: 76px; right: 20px; z-index: 1090; display: flex; flex-direction: column; gap: .5rem; width: 380px; max-width: calc(100vw - 24px); }
@media (max-width: 575.98px) { .erp-toasts { right: 12px; top: 72px; } }
.erp-toast { display: flex; gap: .75rem; align-items: flex-start; background: #fff; border: 1px solid var(--erp-border); border-left-width: 4px; border-radius: 10px; box-shadow: var(--erp-shadow-lg); padding: .8rem .9rem; font-size: .8125rem; color: var(--erp-ink); }
.erp-toast .bi { font-size: 1.05rem; margin-top: 1px; }
.erp-toast.success { border-left-color: var(--erp-success); } .erp-toast.success .bi { color: var(--erp-success); }
.erp-toast.danger  { border-left-color: var(--erp-danger); }  .erp-toast.danger .bi { color: var(--erp-danger); }
.erp-toast.warning { border-left-color: var(--erp-warning); } .erp-toast.warning .bi { color: var(--erp-warning); }
.erp-toast.info    { border-left-color: var(--erp-info); }    .erp-toast.info .bi { color: var(--erp-info); }
.erp-toast .btn-close { font-size: .6rem; margin-left: auto; flex-shrink: 0; }
.toast.erp-toast:not(.show) { display: none; }

.modal-content { border: 0; border-radius: 14px; box-shadow: var(--erp-shadow-lg); }
.modal-header, .modal-footer { border-color: var(--erp-border); }
.erp-confirm-icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 1.25rem; flex-shrink: 0; }

/* ---------- Auth & installer layouts ---------- */
.erp-auth { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); background: #fff; }
.erp-auth-aside { position: relative; overflow: hidden; color: #d7e7eb; padding: 3rem; display: flex; flex-direction: column; justify-content: space-between; background: radial-gradient(900px 500px at 110% -10%, rgba(44, 193, 203, .30), transparent 60%), radial-gradient(700px 400px at -20% 120%, rgba(20, 163, 173, .22), transparent 60%), linear-gradient(160deg, #0a1b25 0%, #0d2b38 55%, #0c3e48 100%); }
.erp-auth-aside::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 1px); background-size: 44px 44px; mask-image: radial-gradient(ellipse at 60% 40%, #000 30%, transparent 75%); pointer-events: none; }
.erp-auth-aside > * { position: relative; }
.erp-auth-aside h2 { color: #fff; font-size: 2rem; line-height: 1.2; letter-spacing: -0.025em; max-width: 460px; }
.erp-auth-aside p { color: #9dbac3; max-width: 440px; font-size: .9375rem; }
.erp-auth-feature { display: flex; gap: .8rem; align-items: flex-start; margin-top: 1.1rem; max-width: 440px; }
.erp-auth-feature .bi { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .08); color: #6fd8df; flex-shrink: 0; }
.erp-auth-feature strong { color: #fff; font-weight: 600; display: block; font-size: .875rem; }
.erp-auth-feature span { color: #8eaab4; font-size: .8125rem; }
.erp-auth-main { display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.5rem; }
.erp-auth-card { width: 100%; max-width: 400px; }
.erp-auth-card h1 { font-size: 1.5rem; margin-bottom: .35rem; }
.erp-auth-card .lead-sub { color: var(--erp-muted); margin-bottom: 1.75rem; }
.erp-auth-card .form-control { min-height: 44px; }
.erp-auth-card .btn-lg { min-height: 46px; font-size: .9375rem; }
.erp-auth-brand-mobile { display: none; }
@media (max-width: 991.98px) {
    .erp-auth { grid-template-columns: 1fr; background: var(--erp-canvas); }
    .erp-auth-aside { display: none; }
    .erp-auth-main { align-items: flex-start; padding-top: 3rem; }
    .erp-auth-card { background: #fff; border: 1px solid var(--erp-border); border-radius: 16px; box-shadow: var(--erp-shadow); padding: 1.75rem; }
    .erp-auth-brand-mobile { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.5rem; }
    .erp-auth-brand-mobile .erp-brand-name { color: var(--erp-ink); }
}

.erp-install { min-height: 100vh; background: radial-gradient(1000px 400px at 50% -10%, rgba(14, 124, 134, .10), transparent 70%), var(--erp-canvas); padding: 2.5rem 1rem 3rem; }
.erp-install-card { max-width: 760px; margin: 0 auto; }
.erp-steps { display: flex; gap: .5rem; margin: 1.5rem 0; counter-reset: step; flex-wrap: wrap; }
.erp-step { flex: 1 1 140px; display: flex; align-items: center; gap: .6rem; font-size: .78rem; color: var(--erp-muted); font-weight: 500; padding: .6rem .75rem; background: #fff; border: 1px solid var(--erp-border); border-radius: 10px; }
.erp-step .n { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; background: var(--erp-neutral-soft); font-size: .72rem; font-weight: 600; flex-shrink: 0; }
.erp-step.active { border-color: rgba(var(--erp-primary-rgb), .45); color: var(--erp-ink); box-shadow: 0 0 0 3px rgba(var(--erp-primary-rgb), .08); }
.erp-step.active .n { background: var(--erp-primary); color: #fff; }
.erp-step.done .n { background: var(--erp-success); color: #fff; }
.erp-req { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--erp-border); font-size: .8125rem; }
.erp-req:last-child { border-bottom: 0; }

/* Error pages */
.erp-error { text-align: center; padding: 4rem 1rem; max-width: 520px; margin: 0 auto; }
.erp-error-code { font-size: 4.5rem; font-weight: 700; letter-spacing: -0.05em; line-height: 1; background: linear-gradient(135deg, #14a3ad, #0b1f2a); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* Utilities */
.gap-xs { gap: .35rem !important; }
.mw-0 { min-width: 0; }
.lh-tight { line-height: 1.25; }
.border-dashed { border-style: dashed !important; }
.cursor-pointer { cursor: pointer; }
.hidden { display: none !important; }

/* ---------- Print ---------- */
@media print {
    .erp-sidebar, .erp-topbar, .erp-footer, .erp-page-actions, .erp-toolbar, .erp-pagination, .erp-toasts, .erp-form-actions { display: none !important; }
    .erp-main { margin: 0 !important; }
    body { background: #fff; }
    .erp-card { box-shadow: none; border-color: #ddd; }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* Extra-small text */
.fs-xs { font-size: .7rem !important; }

/* ---------- Print layout (lists, profiles) ---------- */
.erp-print-body { background: #e9edf2; }
.erp-print-toolbar { position: sticky; top: 0; z-index: 5; display: flex; gap: .75rem; align-items: center; padding: .6rem 1rem; background: #fff; border-bottom: 1px solid var(--erp-border); }
.erp-print-page { background: #fff; max-width: 1100px; margin: 1.25rem auto; padding: 1.75rem 2rem; box-shadow: var(--erp-shadow); border-radius: 6px; color: #111827; font-size: .8125rem; }
.erp-print-head { display: flex; justify-content: space-between; gap: 1rem; padding-bottom: .85rem; margin-bottom: 1rem; border-bottom: 2px solid #0f172a; }
.erp-print-logo { width: 56px; height: 56px; object-fit: contain; }
.erp-print-company { font-size: 1.125rem; font-weight: 700; color: #0f172a; }
.erp-print-title { font-size: 1.05rem; font-weight: 600; color: #0f172a; }
.erp-print-meta { color: #4b5563; font-size: .75rem; }
.erp-print-filters { display: flex; flex-wrap: wrap; gap: .35rem 1.25rem; font-size: .75rem; color: #374151; margin-bottom: .75rem; }
.erp-print-table { width: 100%; border-collapse: collapse; font-size: .75rem; }
.erp-print-table th { background: #f1f5f9; text-align: left; font-weight: 600; border: 1px solid #cbd5e1; padding: .4rem .5rem; }
.erp-print-table td { border: 1px solid #e2e8f0; padding: .35rem .5rem; vertical-align: top; }
.erp-print-table tr { page-break-inside: avoid; }
.erp-print-section { margin-top: 1rem; }
.erp-print-section h3 { font-size: .85rem; font-weight: 700; border-bottom: 1px solid #cbd5e1; padding-bottom: .25rem; margin-bottom: .5rem; }
@media print {
    @page { size: A4; margin: 12mm; }
    .erp-print-body { background: #fff; }
    .erp-print-toolbar { display: none !important; }
    .erp-print-page { box-shadow: none; margin: 0; padding: 0; max-width: none; border-radius: 0; }
}

/* ---------- Profile (view) pages ---------- */
.erp-profile-head { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.erp-profile-mark { width: 56px; height: 56px; border-radius: 14px; display: grid; place-items: center; font-weight: 700; font-size: 1.1rem; flex-shrink: 0; }
.erp-stat-tile { padding: .9rem 1rem; border: 1px solid var(--erp-border); border-radius: var(--erp-radius-sm); background: var(--erp-surface-2); height: 100%; }
.erp-stat-tile .l { font-size: .72rem; color: var(--erp-muted); font-weight: 500; }
.erp-stat-tile .v { font-size: 1.15rem; font-weight: 600; color: var(--erp-ink); font-variant-numeric: tabular-nums; margin-top: .15rem; }
.erp-stat-tile .s { font-size: .7rem; color: var(--erp-subtle); margin-top: .15rem; }
.erp-code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .78rem; color: var(--erp-muted); }
.erp-nav-link .erp-nav-count { margin-left: auto; font-size: .65rem; background: rgba(255,255,255,.08); padding: .05rem .4rem; border-radius: 999px; }

/* Form action bar on phones: primary action full width on top, others share a row. */
@media (max-width: 575.98px) {
    .erp-form-actions { flex-wrap: wrap; padding: .75rem 1rem; }
    .erp-form-actions > .btn { flex: 1 1 calc(50% - .5rem); white-space: nowrap; }
    .erp-form-actions > .btn-primary { flex-basis: 100%; order: -1; }
    .erp-form-actions > span { display: none; }
}

/* Desktop tables: keep the primary column and numbers readable; the table scrolls if needed. */
@media (min-width: 768px) {
    .erp-table td.erp-td-primary { min-width: 220px; }
    .erp-table td.tabular, .erp-table th { white-space: nowrap; }
}
@media (min-width: 768px) and (max-width: 1499.98px) {
    .erp-table thead th, .erp-table tbody td { padding-left: .6rem; padding-right: .6rem; }
    .erp-table td.erp-td-primary { min-width: 190px; }
}
/* Secondary columns hidden on medium screens only (still shown on phones in card view and on wide screens). */
@media (min-width: 768px) and (max-width: 1399.98px) { .erp-col-wide { display: none !important; } }

/* ======================================================================
 * Phase 3 — Inventory
 * ====================================================================== */
.erp-text-warning { color: #b45309 !important; }
.erp-row-near > td { background: #fffaf0; }
.erp-row-near > td:first-child { box-shadow: inset 3px 0 0 var(--erp-warning); }
.erp-row-expired > td { background: #fff5f5; }
.erp-row-expired > td:first-child { box-shadow: inset 3px 0 0 var(--erp-danger); }
.erp-row-current > td { background: var(--erp-primary-soft); }
.erp-tile-warning { background: var(--erp-warning-soft); border-color: #f6dfbd; }

/* Product thumbnails */
.erp-thumb { width: 38px; height: 38px; border-radius: 9px; background: var(--erp-surface-2); border: 1px solid var(--erp-border); display: inline-grid; place-items: center; overflow: hidden; flex-shrink: 0; color: var(--erp-subtle); }
.erp-thumb img { width: 100%; height: 100%; object-fit: contain; background: #fff; }
.erp-thumb-lg { width: 52px; height: 52px; border-radius: 12px; font-size: 1.25rem; }

/* Warehouse cards */
.erp-wh-card.is-nonsellable { background: repeating-linear-gradient(135deg, #fff, #fff 12px, #fafbfc 12px, #fafbfc 24px); }
.erp-mini-stat { padding: .55rem .25rem; border-radius: 8px; background: var(--erp-surface-2); }
.erp-mini-stat .v { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--erp-ink); }
.erp-mini-stat .l { font-size: .68rem; color: var(--erp-muted); }

/* Ledger summary strip */
.erp-ledger-summary { display: flex; flex-wrap: wrap; gap: .5rem 2rem; padding: .75rem 1.25rem; border-bottom: 1px solid var(--erp-border); background: var(--erp-surface-2); }
.erp-ledger-summary .l { display: block; font-size: .68rem; color: var(--erp-muted); text-transform: uppercase; letter-spacing: .04em; }
.erp-ledger-summary .v { font-weight: 600; font-variant-numeric: tabular-nums; }
.erp-date-filter { max-width: 160px; }

/* Line editor */
.erp-lines td { vertical-align: top; padding: .55rem .5rem; }
.erp-lines th { padding: .55rem .5rem; }
.erp-lines .erp-line-product { min-width: 240px; }
.erp-lines .erp-line-qty { width: 150px; }
.erp-lines .js-batch { min-width: 220px; }
.erp-lines[data-mode="in"] .when-out, .erp-lines[data-mode="out"] .when-in { display: none !important; }
.erp-lines .erp-line-error { color: var(--erp-danger); font-size: .72rem; margin-top: .25rem; }
.erp-lines tr.has-error > td { background: #fff7f7; }
.erp-lines .js-avail { margin-top: .2rem; }
.erp-lines input[readonly] { background: var(--erp-surface-2); }
@media (max-width: 767.98px) {
    .erp-lines tbody td { display: block !important; text-align: left; }
    .erp-lines tbody td[data-label]::before { display: block; margin-bottom: .2rem; }
    .erp-lines .erp-line-qty { width: 100%; }
}

/* Transfer route */
.erp-transfer-route { display: grid; grid-template-columns: 1fr auto 1fr; gap: .75rem; align-items: center; }
.erp-transfer-arrow { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--erp-primary-soft); color: var(--erp-primary); font-size: 1.1rem; }
@media (max-width: 575.98px) { .erp-transfer-route { grid-template-columns: 1fr; } .erp-transfer-arrow { transform: rotate(90deg); margin: 0 auto; } }

.erp-approval-card { border-color: #f6dfbd; box-shadow: 0 0 0 3px var(--erp-warning-soft); }
.erp-col-check { width: 36px; }
.erp-print-signatures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 3.5rem; font-size: .75rem; }
.erp-print-signatures .line { border-top: 1px solid #94a3b8; margin-bottom: .35rem; }
.erp-ledger .erp-ledger-ref { min-width: 150px; }
.erp-ledger td.erp-ledger-ref .erp-cell-sub { white-space: normal; }
@media (min-width: 1200px) and (max-width: 1599.98px) { .erp-ledger th:nth-child(2), .erp-ledger td:nth-child(2) { min-width: 150px; } }

/* ======================================================================
 * Sales
 * ====================================================================== */
.erp-row-muted > td { opacity: .55; }
.erp-tile-danger { background: var(--erp-danger-soft); border-color: #f6caca; }
.erp-sale-lines td { vertical-align: top; padding: .55rem .45rem; }
.erp-sale-lines th { padding: .55rem .45rem; }
.erp-sl-product { min-width: 230px; }
.erp-sl-batch { min-width: 200px; }
.erp-sl-qty { width: 125px; }
.erp-sl-rate { width: 105px; }
.erp-sl-disc, .erp-sl-tax { width: 150px; }
.erp-sl-disc .form-select, .erp-sl-tax .form-select { max-width: 68px; padding-right: 1.4rem; }
.erp-sl-total { width: 110px; padding-top: .9rem !important; }
.erp-sale-line.has-error > td { background: #fff7f7; }
.erp-sale-line .erp-line-error { color: var(--erp-danger); font-size: .72rem; margin-top: .25rem; }
.erp-sale-line .erp-line-error:empty { display: none; }
.erp-sale-line input:disabled, .erp-sale-line select:disabled { background: var(--erp-surface-2); color: var(--erp-ink); opacity: 1; }
.erp-w-type { max-width: 92px; }
.erp-totals { display: grid; grid-template-columns: 1fr auto; gap: .35rem 1rem; margin: 0; font-variant-numeric: tabular-nums; }
.erp-totals dt { font-weight: 400; color: var(--erp-muted); font-size: .8125rem; }
.erp-totals dd { margin: 0; text-align: right; font-size: .8125rem; color: var(--erp-ink); }
.erp-totals .sub { border-top: 1px dashed var(--erp-border); padding-top: .35rem; font-weight: 600; color: var(--erp-ink); }
.erp-totals .grand { border-top: 2px solid var(--erp-ink); padding-top: .5rem; font-size: 1.05rem; font-weight: 700; color: var(--erp-ink); }
.erp-totals .due { font-weight: 600; color: var(--erp-danger); }
.erp-totals-inline { max-width: 360px; }
.erp-totals-card { position: sticky; top: 76px; }
.erp-warnings { list-style: none; padding: 0; margin-top: .75rem; }
.erp-warnings li { padding: .35rem .5rem; border-radius: 6px; background: var(--erp-warning-soft); color: #92400e; margin-top: .3rem; }
.erp-warnings li.text-danger { background: var(--erp-danger-soft); color: #b91c1c !important; }
.erp-customer-panel .erp-dl { grid-template-columns: 120px 1fr; }
@media (max-width: 767.98px) {
    .erp-sale-lines tbody td { display: block !important; text-align: left; width: 100% !important; }
    .erp-sale-lines tbody td[data-label]::before { display: block; margin-bottom: .2rem; }
    .erp-totals-card { position: static; }
}

/* Printed documents (invoice, receipt, statement) */
.erp-doc-body { background: #e9edf1; }
.erp-doc-page { max-width: 210mm; min-height: 270mm; margin: 1rem auto 2rem; background: #fff; padding: 12mm 12mm 10mm; box-shadow: 0 6px 24px rgba(15, 23, 42, .12); color: #111827; font-size: 11.5px; position: relative; }
.erp-doc-head { display: flex; justify-content: space-between; gap: 1.5rem; padding-bottom: .9rem; border-bottom: 3px solid var(--erp-primary); }
.erp-doc-brand { display: flex; gap: .9rem; line-height: 1.45; color: #374151; }
.erp-doc-logo { max-height: 68px; max-width: 150px; object-fit: contain; }
.erp-doc-company { font-size: 18px; font-weight: 700; color: #0b1f2a; letter-spacing: -.01em; }
.erp-doc-reg { margin-top: .2rem; font-weight: 600; color: #111827; }
.erp-doc-title-box { text-align: right; min-width: 220px; }
.erp-doc-title { font-size: 20px; font-weight: 800; letter-spacing: .06em; color: var(--erp-primary); margin-bottom: .35rem; }
.erp-doc-meta { margin-left: auto; border-collapse: collapse; }
.erp-doc-meta th { text-align: left; font-weight: 500; color: #6b7280; padding: 1px 10px 1px 0; }
.erp-doc-meta td { text-align: right; font-weight: 700; padding: 1px 0; }
.erp-doc-parties { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1rem; margin: 1rem 0; }
.erp-doc-box { border: 1px solid #d1d5db; border-radius: 6px; padding: .6rem .75rem; line-height: 1.5; }
.erp-doc-label { font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #6b7280; margin-bottom: .2rem; }
.erp-doc-strong { font-weight: 700; font-size: 12.5px; color: #0b1f2a; }
.erp-doc-kv th { font-weight: 500; color: #6b7280; padding: 1px 12px 1px 0; vertical-align: top; }
.erp-doc-kv td { font-weight: 600; padding: 1px 0; }
.erp-doc-items { width: 100%; border-collapse: collapse; }
.erp-doc-items th { background: #0b1f2a; color: #fff; font-weight: 600; font-size: 10.5px; padding: .4rem .45rem; text-align: left; }
.erp-doc-items td { border-bottom: 1px solid #e5e7eb; padding: .38rem .45rem; vertical-align: top; }
.erp-doc-items tbody tr:nth-child(even) td { background: #f9fafb; }
.erp-doc-items .r { text-align: right; white-space: nowrap; }
.erp-doc-items .n { width: 26px; color: #6b7280; }
.erp-doc-items .sub { color: #6b7280; font-size: 10px; }
.erp-doc-bottom { display: grid; grid-template-columns: 1fr 280px; gap: 1.25rem; margin-top: .9rem; }
.erp-doc-pay { margin-top: .75rem; border-top: 1px dashed #d1d5db; padding-top: .5rem; line-height: 1.7; }
.erp-doc-pay span { display: inline-block; min-width: 92px; color: #6b7280; }
.erp-doc-totals { width: 100%; border-collapse: collapse; }
.erp-doc-totals th { font-weight: 500; color: #4b5563; text-align: left; padding: 3px 0; }
.erp-doc-totals td { text-align: right; padding: 3px 0; font-variant-numeric: tabular-nums; }
.erp-doc-totals .sub th, .erp-doc-totals .sub td { border-top: 1px solid #d1d5db; font-weight: 600; color: #111827; }
.erp-doc-totals .grand th, .erp-doc-totals .grand td { background: #0b1f2a; color: #fff; font-weight: 700; font-size: 13px; padding: 6px 8px; }
.erp-doc-totals .due th, .erp-doc-totals .due td { font-weight: 700; color: #b91c1c; border-top: 1px solid #d1d5db; }
.erp-doc-terms { margin-top: 1rem; padding: .6rem .75rem; background: #f9fafb; border-radius: 6px; line-height: 1.5; color: #374151; }
.erp-doc-sign { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 3rem; font-size: 10.5px; color: #374151; }
.erp-doc-sign .line { border-top: 1px solid #6b7280; margin-bottom: .3rem; }
.erp-doc-footer { margin-top: 1.25rem; text-align: center; font-size: 9.5px; color: #6b7280; border-top: 1px solid #e5e7eb; padding-top: .4rem; }
.erp-doc-watermark { position: absolute; top: 40%; left: 0; right: 0; text-align: center; font-size: 90px; font-weight: 800; color: rgba(220, 38, 38, .12); transform: rotate(-24deg); pointer-events: none; }
.erp-doc-stmt th { background: #f3f4f6; color: #111827; }
@media (max-width: 767.98px) {
    .erp-doc-page { padding: 1rem; margin: 0; }
    .erp-doc-head, .erp-doc-parties, .erp-doc-bottom { display: block; }
    .erp-doc-title-box { text-align: left; margin-top: 1rem; }
    .erp-doc-items { font-size: 10px; }
}
@media print {
    @page { size: A4; margin: 10mm; }
    .erp-doc-body { background: #fff; }
    .erp-doc-page { box-shadow: none; margin: 0; padding: 0; max-width: none; min-height: 0; }
    .erp-doc-items th, .erp-doc-totals .grand th, .erp-doc-totals .grand td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .erp-doc-items tr { page-break-inside: avoid; }
}
.erp-bar-chart { width: 100%; height: auto; display: block; }
.erp-bar-chart .grid { stroke: var(--erp-border); stroke-dasharray: 3 4; }
.erp-bar-chart .base { stroke: var(--erp-border-strong); }
.erp-bar-chart .axis { fill: var(--erp-muted); font-size: 10px; }
.erp-bar-chart .bar-a, .erp-legend-a { fill: var(--erp-primary); background: var(--erp-primary); }
.erp-bar-chart .bar-b, .erp-legend-b { fill: #34d399; background: #34d399; }
.erp-legend { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: middle; }
.erp-sale-actions { flex-wrap: wrap; } .erp-sale-actions .btn { white-space: nowrap; }
@media (max-width: 767.98px) { .erp-doc-items { display: block; overflow-x: auto; } .erp-doc-sign { grid-template-columns: 1fr; gap: 1.5rem; } .erp-doc-page { overflow-x: hidden; } }
.erp-checklist-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .35rem 1rem; }

/* ---- Sales returns (Phase 6) ---- */
.erp-doc-watermark-soft { color: rgba(217, 119, 6, .14); font-size: 64px; }
.erp-kv-label { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; color: var(--erp-muted); margin-bottom: .1rem; }
.erp-cond-legend li { margin-bottom: .45rem; display: grid; grid-template-columns: 116px 1fr; gap: .5rem; align-items: start; line-height: 1.35; }
.erp-cond-legend .badge { justify-self: start; }
.erp-return-lines td { vertical-align: top; padding: .55rem .45rem; }
.erp-return-lines th { padding: .55rem .45rem; }
.erp-rl-product { min-width: 220px; }
.erp-rl-qty { width: 95px; }
.erp-rl-reason { min-width: 190px; }
.erp-rl-cond { min-width: 150px; }
.erp-rl-note { min-width: 140px; }
.erp-return-lines .js-target { color: var(--erp-muted); }
@media (max-width: 991.98px) {
    .erp-return-lines tbody td { display: block !important; text-align: left !important; width: 100% !important; min-width: 0; }
    .erp-return-lines tbody td[data-label]::before { display: block; margin-bottom: .2rem; }
}
.erp-report-nav { flex-direction: row; flex-wrap: wrap; gap: .35rem; padding: .65rem; }
.erp-report-nav .list-group-item { width: auto; display: flex; gap: .4rem; align-items: center; border: 1px solid var(--erp-border); border-radius: 999px !important; padding: .32rem .8rem; font-size: .8rem; }
.erp-report-nav .list-group-item.active { background: var(--erp-primary-soft); color: var(--erp-primary); border-color: var(--erp-primary); font-weight: 600; }
.erp-table tfoot td { padding: .8rem 1rem; }
.erp-total-row td { border-top: 2px solid var(--erp-border); background: var(--erp-surface-2); }
.erp-report-print .erp-doc-items { font-size: 10px; }

/* ---- Expenses (Phase 7) ---- */
.erp-xl-head { min-width: 240px; }
.erp-xl-amount { width: 140px; }
.erp-xl-desc { min-width: 220px; }
.erp-needs-link { border-color: var(--erp-warning, #d97706) !important; box-shadow: 0 0 0 .15rem rgba(217, 119, 6, .15); }
.erp-label-required::after { content: " *"; color: var(--erp-danger); }
.erp-attach-list li { display: flex; align-items: center; gap: .5rem; padding: .45rem 0; border-bottom: 1px solid var(--erp-border); }
.erp-attach-list li:last-child { border-bottom: 0; }
.erp-attach-thumb { width: 44px; height: 44px; object-fit: cover; border-radius: 6px; border: 1px solid var(--erp-border); }
.erp-chart-placeholder-sm { height: 150px; }
.erp-hbars { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.erp-hbar-head { display: flex; justify-content: space-between; gap: .75rem; font-size: .8rem; margin-bottom: .2rem; }
.erp-hbar-label { color: var(--erp-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.erp-hbar-value { color: var(--erp-muted); flex-shrink: 0; }
.erp-hbars progress { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 8px; border: 0; border-radius: 99px; background: var(--erp-surface-2); overflow: hidden; color: var(--erp-primary); }
.erp-hbars progress::-webkit-progress-bar { background: var(--erp-surface-2); border-radius: 99px; }
.erp-hbars progress::-webkit-progress-value { background: var(--erp-primary); border-radius: 99px; }
.erp-hbars progress::-moz-progress-bar { background: var(--erp-primary); border-radius: 99px; }
.erp-hbars.tone-b progress { color: #8b5cf6; }
.erp-hbars.tone-b progress::-webkit-progress-value { background: #8b5cf6; }
.erp-hbars.tone-b progress::-moz-progress-bar { background: #8b5cf6; }
.erp-hbars.tone-c progress { color: #f59e0b; }
.erp-hbars.tone-c progress::-webkit-progress-value { background: #f59e0b; }
.erp-hbars.tone-c progress::-moz-progress-bar { background: #f59e0b; }

/* ---- Doctor CRM (Phase 8) ---- */
.erp-timeline-day { padding: .45rem 1.25rem; font-size: .72rem; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--erp-muted); background: var(--erp-surface-2); border-bottom: 1px solid var(--erp-border); }
.erp-timeline-day.is-future { color: var(--erp-primary); }
.erp-activity li.is-muted .erp-activity-text { color: var(--erp-muted); text-decoration: line-through; }
.erp-activity-amount { margin-left: auto; font-size: .8rem; font-variant-numeric: tabular-nums; color: var(--erp-ink); white-space: nowrap; padding-left: .5rem; }
.erp-roi-figure { font-size: 1.6rem; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--erp-ink); line-height: 1.1; }
.erp-roi-figure.is-negative { color: var(--erp-danger); }
.erp-roi-figure.is-positive { color: var(--erp-success); }
.erp-inv-table td, .erp-inv-table th { padding: .45rem .75rem; }
.erp-mini-form { background: var(--erp-surface-2); border-top: 1px solid var(--erp-border); padding: 1rem 1.25rem; }
.erp-fu-row { display: flex; gap: .75rem; align-items: flex-start; padding: .7rem 1.25rem; border-bottom: 1px solid var(--erp-border); }
.erp-fu-row:last-child { border-bottom: 0; }
.erp-fu-date { min-width: 64px; text-align: center; border-radius: 8px; padding: .25rem .4rem; font-size: .72rem; font-weight: 600; line-height: 1.2; }
.erp-fu-date .d { display: block; font-size: 1.05rem; }
.erp-print-section { margin-top: 14px; }
.erp-print-section h3 { font-size: 12px; margin: 0 0 6px; text-transform: uppercase; letter-spacing: .04em; }

/* ======================================================================
 * Purchasing (Phase 4)
 * ====================================================================== */
.erp-purchase-lines .erp-pl-batch { min-width: 280px; }
.erp-purchase-lines .erp-pl-dates { display: grid; grid-template-columns: 1fr 1fr; gap: .25rem; margin-top: .25rem; }
.erp-purchase-lines .erp-pl-dates input { min-width: 0; padding-left: .35rem; padding-right: .2rem; }
.erp-purchase-lines .js-po-line { font-size: .75rem; }
.erp-purchase-lines .js-cost:empty { display: none; }
@media (max-width: 767.98px) {
    .erp-purchase-lines .erp-pl-batch { min-width: 0; }
}

/* ------------------------------------------------------------------ Phase 9: HR & payroll */
.erp-w-amount { width: 110px; max-width: 120px; flex: 0 0 auto; }
.erp-salary-edit select { width: auto; flex: 0 0 auto; }
.erp-row-group > td { background: var(--erp-surface-2, #f8fafc); font-size: .8rem; }
.erp-slip-lines td.amount, .erp-slip-lines th.amount { text-align: right; white-space: nowrap; }
.erp-slip-net { font-size: 1.15rem; font-weight: 600; }
.erp-table tfoot .erp-total-row th { border-top: 2px solid var(--erp-border); background: var(--erp-surface-2); text-transform: none; letter-spacing: normal; font-size: inherit; color: inherit; padding: .7rem .75rem; }

/* ------------------------------------------------------------------ packing: box + loose entry */
.erp-pack-entry { display: flex; align-items: center; gap: .25rem; margin-top: .25rem; flex-wrap: nowrap; }
.erp-pack-entry .form-control { width: 3.6rem; min-width: 3.2rem; padding-left: .35rem; padding-right: .35rem; flex: 0 0 auto; }
.erp-pack-label { font-size: .7rem; color: var(--erp-muted, #64748b); white-space: nowrap; }
.erp-pack-note { font-size: .72rem; color: var(--erp-muted, #64748b); }
.erp-price-preview:empty { display: none; }

/* v0.9.2 — customer taxes */
.erp-tax-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .4rem 0; border-bottom: 1px dashed var(--erp-border); }
.erp-tax-row:last-child { border-bottom: 0; }
.erp-tax-row .form-check { margin: 0; min-width: 0; }
.erp-tax-row .form-text { margin-top: 0; font-size: .75rem; }
.erp-tax-rate { width: 7.5rem; flex: 0 0 auto; }
.erp-invoice-taxes { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); column-gap: 1.5rem; }
#invoiceTaxes.has-error .erp-invoice-taxes { outline: 1px solid var(--erp-danger); outline-offset: 4px; border-radius: 4px; }
.erp-totals dt.erp-tb { padding-left: .75rem; font-size: .75rem; }
.erp-totals dd.erp-tb { font-size: .75rem; color: var(--erp-muted); }
.erp-sl-tax { min-width: 5.5rem; }

/* ===================================================================== */
/* v0.9.3 — Sales invoice print layout (Administration → Invoice Print Layout). */
/* Named pages: paper + direction + margins chosen in settings (no inline styles, CSP). */
.erp-inv-page.inv-a4-portrait { width: 210mm; min-height: 297mm; }
@page inv-a4-portrait-narrow { size: A4 portrait; margin: 6mm; }
.erp-inv-page.inv-a4-portrait.inv-m-narrow { page: inv-a4-portrait-narrow; }
@page inv-a4-portrait-normal { size: A4 portrait; margin: 12mm; }
.erp-inv-page.inv-a4-portrait.inv-m-normal { page: inv-a4-portrait-normal; }
@page inv-a4-portrait-wide { size: A4 portrait; margin: 18mm; }
.erp-inv-page.inv-a4-portrait.inv-m-wide { page: inv-a4-portrait-wide; }
.erp-inv-page.inv-a4-landscape { width: 297mm; min-height: 210mm; }
@page inv-a4-landscape-narrow { size: A4 landscape; margin: 6mm; }
.erp-inv-page.inv-a4-landscape.inv-m-narrow { page: inv-a4-landscape-narrow; }
@page inv-a4-landscape-normal { size: A4 landscape; margin: 12mm; }
.erp-inv-page.inv-a4-landscape.inv-m-normal { page: inv-a4-landscape-normal; }
@page inv-a4-landscape-wide { size: A4 landscape; margin: 18mm; }
.erp-inv-page.inv-a4-landscape.inv-m-wide { page: inv-a4-landscape-wide; }
.erp-inv-page.inv-a5-portrait { width: 148mm; min-height: 210mm; }
@page inv-a5-portrait-narrow { size: A5 portrait; margin: 6mm; }
.erp-inv-page.inv-a5-portrait.inv-m-narrow { page: inv-a5-portrait-narrow; }
@page inv-a5-portrait-normal { size: A5 portrait; margin: 12mm; }
.erp-inv-page.inv-a5-portrait.inv-m-normal { page: inv-a5-portrait-normal; }
@page inv-a5-portrait-wide { size: A5 portrait; margin: 18mm; }
.erp-inv-page.inv-a5-portrait.inv-m-wide { page: inv-a5-portrait-wide; }
.erp-inv-page.inv-a5-landscape { width: 210mm; min-height: 148mm; }
@page inv-a5-landscape-narrow { size: A5 landscape; margin: 6mm; }
.erp-inv-page.inv-a5-landscape.inv-m-narrow { page: inv-a5-landscape-narrow; }
@page inv-a5-landscape-normal { size: A5 landscape; margin: 12mm; }
.erp-inv-page.inv-a5-landscape.inv-m-normal { page: inv-a5-landscape-normal; }
@page inv-a5-landscape-wide { size: A5 landscape; margin: 18mm; }
.erp-inv-page.inv-a5-landscape.inv-m-wide { page: inv-a5-landscape-wide; }
.erp-inv-page.inv-letter-portrait { width: 215.9mm; min-height: 279.4mm; }
@page inv-letter-portrait-narrow { size: letter portrait; margin: 6mm; }
.erp-inv-page.inv-letter-portrait.inv-m-narrow { page: inv-letter-portrait-narrow; }
@page inv-letter-portrait-normal { size: letter portrait; margin: 12mm; }
.erp-inv-page.inv-letter-portrait.inv-m-normal { page: inv-letter-portrait-normal; }
@page inv-letter-portrait-wide { size: letter portrait; margin: 18mm; }
.erp-inv-page.inv-letter-portrait.inv-m-wide { page: inv-letter-portrait-wide; }
.erp-inv-page.inv-letter-landscape { width: 279.4mm; min-height: 215.9mm; }
@page inv-letter-landscape-narrow { size: letter landscape; margin: 6mm; }
.erp-inv-page.inv-letter-landscape.inv-m-narrow { page: inv-letter-landscape-narrow; }
@page inv-letter-landscape-normal { size: letter landscape; margin: 12mm; }
.erp-inv-page.inv-letter-landscape.inv-m-normal { page: inv-letter-landscape-normal; }
@page inv-letter-landscape-wide { size: letter landscape; margin: 18mm; }
.erp-inv-page.inv-letter-landscape.inv-m-wide { page: inv-letter-landscape-wide; }
.erp-inv-page.inv-legal-portrait { width: 215.9mm; min-height: 355.6mm; }
@page inv-legal-portrait-narrow { size: legal portrait; margin: 6mm; }
.erp-inv-page.inv-legal-portrait.inv-m-narrow { page: inv-legal-portrait-narrow; }
@page inv-legal-portrait-normal { size: legal portrait; margin: 12mm; }
.erp-inv-page.inv-legal-portrait.inv-m-normal { page: inv-legal-portrait-normal; }
@page inv-legal-portrait-wide { size: legal portrait; margin: 18mm; }
.erp-inv-page.inv-legal-portrait.inv-m-wide { page: inv-legal-portrait-wide; }
.erp-inv-page.inv-legal-landscape { width: 355.6mm; min-height: 215.9mm; }
@page inv-legal-landscape-narrow { size: legal landscape; margin: 6mm; }
.erp-inv-page.inv-legal-landscape.inv-m-narrow { page: inv-legal-landscape-narrow; }
@page inv-legal-landscape-normal { size: legal landscape; margin: 12mm; }
.erp-inv-page.inv-legal-landscape.inv-m-normal { page: inv-legal-landscape-normal; }
@page inv-legal-landscape-wide { size: legal landscape; margin: 18mm; }
.erp-inv-page.inv-legal-landscape.inv-m-wide { page: inv-legal-landscape-wide; }
@media screen { .erp-inv-page.inv-m-narrow { padding: 6mm; } }
@media screen { .erp-inv-page.inv-m-normal { padding: 12mm; } }
@media screen { .erp-inv-page.inv-m-wide { padding: 18mm; } }

.erp-inv-page { --inv-accent: #0f766e; --inv-ink: #111827; --inv-muted: #6b7280; --inv-line: #d9dee5; --inv-soft: #f4f6f8;
    max-width: none; margin: 1rem auto 1.5rem; background: #fff; color: var(--inv-ink); font-size: 11.5px; line-height: 1.45; position: relative; box-sizing: border-box; box-shadow: 0 6px 24px rgba(15, 23, 42, .12); }
.erp-inv-page.inv-fs-small { font-size: 10px; }
.erp-inv-page.inv-fs-large { font-size: 13px; }
.inv-ac-teal { --inv-accent: #0f766e; } .inv-ac-navy { --inv-accent: #1e3a8a; } .inv-ac-maroon { --inv-accent: #7f1d1d; }
.inv-ac-green { --inv-accent: #166534; } .inv-ac-charcoal { --inv-accent: #111827; }
.erp-inv-page .erp-doc-head { border-bottom: 3px solid var(--inv-accent); }
.erp-inv-page .erp-doc-title { color: var(--inv-accent); }
.inv-copy { display: inline-block; margin-bottom: .3em; padding: .1em .6em; border: 1px solid var(--inv-accent); color: var(--inv-accent); border-radius: 3px; font-size: .78em; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.inv-status { display: inline-block; padding: .05em .55em; border-radius: 3px; font-size: .8em; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.inv-status.paid { background: #dcfce7; color: #166534; } .inv-status.partial { background: #fef3c7; color: #92400e; } .inv-status.unpaid { background: #fee2e2; color: #991b1b; }
.inv-parties { display: grid; grid-template-columns: 1.25fr 1fr; gap: .9em; margin: .9em 0; }
.inv-box { border: 1px solid var(--inv-line); border-radius: 5px; padding: .55em .7em; }
.inv-box .erp-doc-label { color: var(--inv-accent); }
.inv-name { font-weight: 700; font-size: 1.12em; }
.inv-kv { border-collapse: collapse; width: 100%; }
.inv-kv th { font-weight: 500; color: var(--inv-muted); padding: 1px .8em 1px 0; text-align: left; vertical-align: top; white-space: nowrap; width: 1%; }
.inv-kv td { font-weight: 600; padding: 1px 0; }
.inv-items { width: 100%; border-collapse: collapse; }
.inv-items thead th { background: var(--inv-accent); color: #fff; font-weight: 600; font-size: .9em; padding: .45em .4em; text-align: left; vertical-align: bottom; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.inv-items td { border-bottom: 1px solid var(--inv-line); padding: .4em .4em; vertical-align: top; }
.inv-items tbody tr:nth-child(even) td { background: #fafbfc; }
.inv-items .r { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.inv-items .c { text-align: center; }
.inv-items .n { width: 1.8em; color: var(--inv-muted); }
.inv-items .sub { color: var(--inv-muted); font-size: .86em; font-weight: 400; }
.inv-items .bonus { color: #166534; font-weight: 700; }
.inv-items tr.tot td { font-weight: 700; border-top: 2px solid var(--inv-ink); border-bottom: 0; background: none !important; }
.inv-items tr { page-break-inside: avoid; break-inside: avoid; }
.inv-bottom { display: grid; grid-template-columns: 1fr minmax(240px, 42%); gap: 1.1em; margin-top: .9em; align-items: start; }
.inv-totals { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.inv-totals th { font-weight: 500; color: #374151; text-align: left; padding: 2px 0; }
.inv-totals td { text-align: right; padding: 2px 0; white-space: nowrap; }
.inv-totals .minus td { color: #b91c1c; }
.inv-totals .tb th { padding-left: .9em; color: var(--inv-muted); font-size: .92em; }
.inv-totals .tb td { color: var(--inv-muted); font-size: .92em; }
.inv-totals .sub th, .inv-totals .sub td { border-top: 1px solid var(--inv-line); font-weight: 600; color: var(--inv-ink); padding-top: 3px; }
.inv-totals .grand th, .inv-totals .grand td { background: var(--inv-accent); color: #fff; font-weight: 700; font-size: 1.15em; padding: 6px 8px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.inv-account { margin-top: .7em; border: 1px solid var(--inv-ink); border-radius: 5px; overflow: hidden; }
.inv-account .erp-doc-label { background: var(--inv-soft); color: var(--inv-ink); padding: .3em .7em; margin: 0; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.inv-account table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.inv-account th { text-align: left; font-weight: 500; padding: 2px .7em; }
.inv-account td { text-align: right; padding: 2px .7em; white-space: nowrap; }
.inv-account .total th, .inv-account .total td { border-top: 1px solid var(--inv-ink); font-weight: 800; font-size: 1.1em; padding-top: 4px; padding-bottom: 4px; }
.inv-note { margin-top: .6em; padding: .45em .7em; border-left: 3px solid var(--inv-accent); background: var(--inv-soft); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.inv-words { font-weight: 700; }
.inv-pay { margin-top: .6em; border-top: 1px dashed var(--inv-line); padding-top: .45em; }
.inv-pay div span { display: inline-block; min-width: 8.5em; color: var(--inv-muted); }
.inv-bank { margin-top: .5em; white-space: pre-line; }
.inv-terms { margin-top: .9em; padding: .5em .7em; background: var(--inv-soft); border-radius: 5px; color: #374151; font-size: .92em; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.inv-sign { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2em; margin-top: 2.6em; font-size: .9em; color: #374151; page-break-inside: avoid; }
.inv-sign .line { border-top: 1px solid var(--inv-muted); margin-bottom: .3em; }
.inv-footer { margin-top: 1em; text-align: center; font-size: .82em; color: var(--inv-muted); border-top: 1px solid var(--inv-line); padding-top: .35em; }
.inv-a5-portrait .inv-parties, .inv-a5-portrait .inv-bottom { grid-template-columns: 1fr; }
.inv-a5-portrait .erp-doc-head { flex-wrap: wrap; }
.inv-a5-portrait .inv-sign { gap: .8em; }
.erp-print-toolbar form { display: inline-flex; gap: .4rem; align-items: center; flex-wrap: wrap; margin-left: .5rem; }
.erp-print-toolbar form select { width: auto; }
@media screen and (max-width: 900px) {
    .erp-inv-page { width: auto !important; min-height: 0 !important; margin: 0; padding: 1rem !important; overflow-x: auto; }
    .inv-parties, .inv-bottom { grid-template-columns: 1fr; }
    .erp-inv-page .erp-doc-head { display: block; }
    .erp-inv-page .erp-doc-title-box { text-align: left; margin-top: 1rem; }
    .inv-items { font-size: .9em; }
}
@media print {
    .erp-inv-page { box-shadow: none; margin: 0; padding: 0 !important; width: auto !important; min-height: 0 !important; }
    .erp-inv-page + .erp-inv-page { break-before: page; page-break-before: always; }
}
.erp-bonus-note { font-size: .75rem; color: #166534; font-weight: 600; }
.erp-sl-bonus { width: 5.5rem; }
.erp-totals .erp-prev-row { border-top: 1px dashed var(--erp-border); padding-top: .35rem; }
.erp-totals .erp-total-due { font-weight: 700; color: var(--erp-ink); font-size: .9rem; }


.inv-items td.desc { min-width: 9em; }
.inv-items thead th .sub { color: rgba(255, 255, 255, .8); font-weight: 400; }
.inv-a5-portrait .inv-items { font-size: .86em; }
.inv-a5-portrait .inv-items th, .inv-a5-portrait .inv-items td { padding-left: .25em; padding-right: .25em; }
.inv-a5-portrait .inv-items .col-gross { display: none; }
.inv-a5-portrait .inv-items td.desc { min-width: 7em; }

/* ---------- v0.9.4 Reports Center ---------- */
.erp-rc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .75rem; }
.erp-rc-tile { display: flex; gap: .75rem; align-items: flex-start; padding: .85rem .95rem; border: 1px solid var(--erp-border); border-radius: var(--erp-radius-sm); background: var(--erp-surface); color: inherit; text-decoration: none; transition: border-color .15s, box-shadow .15s, transform .15s; min-width: 0; }
a.erp-rc-tile, a.erp-rc-tile:hover, a.erp-rc-tile:focus-visible { text-decoration: none; }
.erp-rc-tile:hover, .erp-rc-tile:focus-visible { border-color: var(--erp-primary); box-shadow: 0 4px 14px rgba(15, 23, 42, .08); transform: translateY(-1px); color: inherit; }
.erp-rc-tile.is-featured { border-color: var(--erp-primary); background: var(--erp-primary-soft); }
.erp-rc-tile.is-link { border-style: dashed; }
.erp-rc-icon { width: 38px; height: 38px; flex-shrink: 0; border-radius: 10px; display: grid; place-items: center; background: var(--erp-primary-soft); color: var(--erp-primary); font-size: 1.1rem; }
.erp-rc-tile.is-featured .erp-rc-icon { background: var(--erp-primary); color: #fff; }
.erp-rc-text { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.erp-rc-name { font-weight: 600; color: var(--erp-ink); font-size: .9rem; }
.erp-rc-help { font-size: .75rem; color: var(--erp-muted); line-height: 1.4; }
.erp-rc-badge { font-size: .6rem; font-weight: 600; vertical-align: middle; }
.erp-rc-ext { font-size: .7rem; color: var(--erp-muted); }
.erp-rc-tabs { display: flex; gap: .4rem; overflow-x: auto; padding-bottom: .25rem; scrollbar-width: thin; }
.erp-rc-tab { flex-shrink: 0; padding: .4rem .75rem; border: 1px solid var(--erp-border); border-radius: 999px; font-size: .78rem; color: var(--erp-muted); background: var(--erp-surface); text-decoration: none; white-space: nowrap; }
.erp-rc-tab:hover { color: var(--erp-ink); border-color: var(--erp-border-strong); }
.erp-rc-tab.active { background: var(--erp-primary); border-color: var(--erp-primary); color: #fff; }
.erp-rc-presets { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; padding: 0 1rem .85rem; }
.erp-rc-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem; }
.erp-rc-stat { background: var(--erp-surface); }
.erp-rc-stat.is-good .v { color: var(--erp-success); }
.erp-rc-stat.is-bad .v { color: var(--erp-danger); }
.erp-rc-stat.is-strong { border-color: var(--erp-primary); background: var(--erp-primary-soft); }
.erp-rc-stat.is-strong .v { color: var(--erp-primary); }
.erp-rc-table td.rc-neg { color: var(--erp-danger); }
.erp-rc-table tr.rc-opening td, .erp-rc-table tr.rc-closing td { background: var(--erp-surface-2); font-weight: 600; }
.erp-rc-table tr.rc-closing td { border-top: 2px solid var(--erp-border-strong); }
.erp-rc-table tr.rc-group td { background: var(--erp-surface-2); font-weight: 700; text-transform: uppercase; font-size: .72rem; letter-spacing: .04em; color: var(--erp-muted); }
.erp-rc-table tr.rc-sub td { font-weight: 600; border-top: 1px solid var(--erp-border-strong); }
.erp-rc-table tr.rc-total td { font-weight: 700; background: var(--erp-primary-soft); }
.erp-rc-table tr.rc-grand td { font-weight: 700; font-size: .95rem; background: var(--erp-primary); color: #fff; }
.erp-rc-table tr.rc-grand td.rc-neg { color: #fecaca; }
.erp-rc-table tr.rc-loss td { background: var(--erp-danger-soft); }
.erp-rc-table tr.rc-muted td { color: var(--erp-subtle); text-decoration: line-through; }
/* print */
.rc-page.rc-landscape { max-width: 297mm; min-height: 0; }
.rc-print-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 6px; margin: .5rem 0 .75rem; }
.rc-print-stat { border: 1px solid #e5e7eb; border-radius: 6px; padding: 5px 8px; }
.rc-print-stat .l { font-size: 9px; color: #6b7280; text-transform: uppercase; letter-spacing: .03em; }
.rc-print-stat .v { font-size: 12px; font-weight: 700; color: #111827; }
.rc-print-stat.is-strong { border-color: #0b1f2a; }
.rc-print-table tr.rc-opening td, .rc-print-table tr.rc-closing td, .rc-print-table tr.rc-sub td { font-weight: 700; background: #f3f4f6 !important; }
.rc-print-table tr.rc-group td { font-weight: 700; background: #e5e7eb !important; text-transform: uppercase; font-size: 9.5px; }
.rc-print-table tr.rc-total td { font-weight: 700; border-top: 1px solid #111827; }
.rc-print-table tr.rc-grand td { font-weight: 700; border-top: 2px solid #111827; border-bottom: 3px double #111827; }
.rc-print-table tr.rc-totals td { border-top: 2px solid #111827; background: #f3f4f6 !important; }
.rc-print-table tr.rc-muted td { color: #9ca3af; text-decoration: line-through; }
@page rc-landscape { size: A4 landscape; margin: 10mm; }
@media print {
    .rc-page.rc-landscape { page: rc-landscape; }
    .rc-print-table th, .rc-print-table tr.rc-group td, .rc-print-table tr.rc-sub td, .rc-print-table tr.rc-opening td, .rc-print-table tr.rc-closing td, .rc-print-table tr.rc-totals td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
@media (max-width: 575.98px) {
    .erp-rc-grid { grid-template-columns: 1fr; }
    .erp-rc-summary { grid-template-columns: 1fr 1fr; }
    .erp-rc-presets { padding: 0 .75rem .75rem; }
    .erp-rc-presets .ms-auto { margin-left: 0 !important; width: 100%; }
}
