/**
 * FESMOS ERP — Unified enforcement layer
 * Load last in <head>. Reasserts classic warm FESMOS tokens across all modules.
 */

/* ── Canonical tokens (classic warm theme) ── */
:root {
    --brand: #8b0000;
    --brand-dark: #6b0000;
    --brand-light: #b91c1c;
    --brand-muted: rgba(139, 0, 0, 0.08);
    --brand-muted2: rgba(139, 0, 0, 0.14);
    --bg-base: #f7f6f4;
    --bg-canvas: #f3f1ee;
    --bg-card: #ffffff;
    --bg-subtle: #f1efed;
    --bg-hover: #ede9e7;
    --bg-toolbar: #faf9f8;
    --bg-wash: radial-gradient(120% 80% at 0% 0%, rgba(139, 0, 0, 0.035) 0%, transparent 42%),
               radial-gradient(90% 70% at 100% 0%, rgba(90, 70, 50, 0.04) 0%, transparent 48%),
               linear-gradient(180deg, #f8f6f3 0%, #f3f1ee 100%);
    --border: #e4e0dd;
    --border-med: #d4cfcc;
    --text-primary: #111010;
    --text-secondary: #6b6460;
    --text-muted: #6b6460;
    --focus-ring: var(--brand);
    --success-fg: #15803d;
    --warning-fg: #b45309;
    --danger-fg: #b91c1c;
    --info-fg: #2563eb;
    --sidebar-bg: var(--bg-card);
    --sidebar-text: var(--text-secondary);
    --sidebar-active: var(--text-primary);
    --sidebar-muted: var(--text-muted);
    --sidebar-w: 236px;
    --header-h: 52px;
    --font-sans: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 14px;
    --radius-xl: 20px;
    --shadow-sm: 0 1px 2px rgba(40, 28, 24, 0.04), 0 1px 3px rgba(40, 28, 24, 0.05);
    --shadow-md: 0 2px 6px rgba(40, 28, 24, 0.05), 0 8px 20px rgba(40, 28, 24, 0.06);
    --shadow-lg: 0 8px 24px rgba(40, 28, 24, 0.08), 0 16px 40px rgba(40, 28, 24, 0.08);
    --card-shadow: var(--shadow-sm);
    --success: #16a34a;
    --success-bg: #f0fdf4;
    --warning: #d97706;
    --warning-bg: #fffbeb;
    --danger: #dc2626;
    --danger-bg: #fef2f2;
    --info: #2563eb;
    --info-bg: #eff6ff;
    --purple: #7c3aed;
    --purple-bg: #f5f3ff;
}

[data-theme="dark"] {
    --bg-base: #0e0b0b;
    --bg-canvas: #0c0909;
    --bg-card: #181212;
    --bg-subtle: #1f1818;
    --bg-hover: #251e1e;
    --bg-toolbar: #1a1515;
    --bg-wash: radial-gradient(110% 70% at 0% 0%, rgba(232, 93, 93, 0.08) 0%, transparent 45%),
               linear-gradient(180deg, #121010 0%, #0e0b0b 100%);
    --border: #2e2424;
    --border-med: #3a2e2e;
    --text-primary: #f5f0f0;
    --text-secondary: #a89898;
    --text-muted: #9a8484;
    --brand: #e85d5d;
    --brand-dark: #dc4c4c;
    --brand-light: #f87171;
    --brand-muted: rgba(232, 93, 93, 0.16);
    --brand-muted2: rgba(232, 93, 93, 0.28);
    --focus-ring: var(--brand);
    --success-fg: #4ade80;
    --warning-fg: #fbbf24;
    --danger-fg: #f87171;
    --info-fg: #60a5fa;
    --sidebar-bg: var(--bg-card);
    --sidebar-text: var(--text-secondary);
    --sidebar-active: var(--text-primary);
    --sidebar-muted: var(--text-muted);
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35), 0 1px 3px rgba(0, 0, 0, 0.25);
    --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.5);
    --card-shadow: var(--shadow-sm);
}

/* ── Global typography & canvas ── */
html {
    font-size: 13px !important;
}

body,
body.fesmos-app,
.fesmos-app,
.erp-shell {
    font-family: var(--font-sans) !important;
    font-size: 13px !important;
    color: var(--text-primary) !important;
    background: var(--bg-wash, var(--bg-base)) !important;
    line-height: 1.5 !important;
    letter-spacing: 0.005em;
}

h1, h2, h3, h4, h5, h6,
.top-header h1,
.page-header-bar h1,
.section-header h2 {
    font-family: var(--font-sans) !important;
    font-weight: 600 !important;
}

/* Color flatten skips MD exec hero title + alert panel titles (see DESIGN_SYSTEM.md). */
h1,
h2:not(.dash-title),
h3:not(.md-exec-panel-card__title):not(.acct-fintech-kpi__title),
h4, h5, h6,
.top-header h1,
.page-header-bar h1,
.section-header h2 {
    color: var(--text-primary) !important;
}

body.md-executive-theme .md-exec-panel-card:not(.md-exec-alerts) .md-exec-panel-card__title {
    color: var(--text-primary) !important;
}

/* Sidebar brand title — follows sidebar tokens (light + dark) */
.sidebar .sidebar-header h2,
.sidebar-header h2,
.sidebar-header-text h2,
.sidebar-brand-text,
.sidebar-brand-text h2,
.sidebar-brand-name,
.fesmos-app .sidebar-header h2,
.staff-sidebar .sidebar-header h2 {
    color: var(--text-primary) !important;
    font-weight: 700 !important;
}

.sidebar-header span,
.sidebar-header-text span,
.sidebar-brand-sub {
    color: var(--sidebar-muted, var(--text-muted)) !important;
}

/* Modal / dialog headers on brand bars — title inherits header text color */
.modal-header h1,
.modal-header h2,
.modal-header h3,
.fesmos-modal-header h1,
.fesmos-modal-header h2,
.fesmos-modal-header h3,
.fesmos-leave-action-header-text h2,
.fesmos-dialog-header h1,
.fesmos-dialog-header h2,
.fesmos-dialog-header h3 {
    color: inherit !important;
}

/* ── Sidebar (all modules) ── */
.sidebar,
.fesmos-app .sidebar,
.staff-sidebar {
    background: var(--sidebar-bg) !important;
    background-image: none !important;
    border-right: 1px solid var(--border) !important;
    box-shadow: none !important;
}

.sidebar::before,
.fesmos-app .sidebar::before {
    display: none !important;
}

.sidebar-header,
.fesmos-app .sidebar-header {
    border-bottom-color: var(--border) !important;
}

.sidebar-section-label,
.nav-section-label {
    color: var(--sidebar-muted, var(--text-muted)) !important;
}

.sidebar .nav-item,
.staff-sidebar .nav-item {
    color: var(--sidebar-text) !important;
}

.sidebar .nav-item:hover,
.staff-sidebar .nav-item:hover {
    background: var(--bg-hover) !important;
    color: var(--sidebar-active) !important;
}

.sidebar .nav-item.active,
.staff-sidebar .nav-item.active {
    background: var(--brand-muted) !important;
    color: var(--brand) !important;
}

.sidebar .nav-item.active i {
    color: var(--brand) !important;
}

.sidebar .nav-item.active::before {
    background: var(--brand) !important;
}

.sidebar-footer,
.fesmos-app .sidebar-footer {
    border-top-color: var(--border) !important;
}

.fesmos-app .logout-btn,
.sidebar .logout-btn {
    color: var(--sidebar-text) !important;
}

.fesmos-app .logout-btn:hover,
.sidebar .logout-btn:hover {
    background: var(--bg-hover) !important;
    color: var(--sidebar-active) !important;
}

/* ── Header bar ── */
.top-header,
.fesmos-topbar,
.page-header-bar {
    background: var(--bg-card) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
    min-height: var(--header-h) !important;
}

/* ── Panels & cards — soft ERP depth (exclude fintech KPI cards) ── */
.stat-card:not(.fesmos-kpi-card),
.kpi-card:not(.fesmos-kpi-card),
.settings-card,
.form-card,
.content-panel,
.panel-card,
.approval-card,
.professional-card,
.settings-panel-card,
.dash-card,
.card-panel,
.fesmos-panel {
    background: linear-gradient(165deg, var(--bg-card) 0%, var(--bg-toolbar) 100%) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--card-shadow, var(--shadow-sm)) !important;
}

/* ── KPI / stat icons — no gradient tiles (except fintech marks) ── */
.stat-icon,
.summary-icon,
.funnel-step-icon,
.kpi-icon {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    border-radius: var(--radius-md) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 15px !important;
    background: var(--bg-subtle) !important;
    color: var(--text-secondary) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none !important;
}

.stat-icon--brand,
.stat-icon.stat-icon--brand { color: var(--brand) !important; background: var(--brand-muted) !important; border-color: rgba(139, 0, 0, 0.2) !important; }
.stat-icon--success { color: var(--success) !important; background: var(--success-bg) !important; border-color: rgba(21, 128, 61, 0.2) !important; }
.stat-icon--warning { color: var(--warning) !important; background: var(--warning-bg) !important; border-color: rgba(180, 83, 9, 0.2) !important; }
.stat-icon--danger { color: var(--danger) !important; background: var(--danger-bg) !important; border-color: rgba(185, 28, 28, 0.2) !important; }
.stat-icon--info { color: var(--info) !important; background: var(--info-bg) !important; border-color: rgba(29, 78, 216, 0.2) !important; }
.stat-icon--purple { color: var(--purple) !important; background: var(--purple-bg) !important; border-color: rgba(109, 40, 217, 0.2) !important; }

.funnel-step-icon { background: var(--bg-subtle) !important; color: var(--text-secondary) !important; }
.funnel-step-icon--warning { color: var(--warning) !important; background: var(--warning-bg) !important; }
.funnel-step-icon--info { color: var(--info) !important; background: var(--info-bg) !important; }
.funnel-step-icon--purple { color: var(--purple) !important; background: var(--purple-bg) !important; }
.funnel-step-icon--success { color: var(--success) !important; background: var(--success-bg) !important; }

/* ── Progress bars — solid fills ── */
.bar-fill,
.progress-bar-fill,
.progress-fill {
    background: var(--brand) !important;
    background-image: none !important;
}

.bar-fill--warning { background: var(--warning) !important; }
.bar-fill--info { background: var(--info) !important; }
.bar-fill--purple { background: var(--purple) !important; }
.bar-fill--success { background: var(--success) !important; }

/* ── Accounting fintech KPI cards — do not flatten (acct-money-kpi.css owns look) ── */
.kpi-receivables,
.kpi-payables,
.kpi-net,
.bank-section {
    background: var(--bg-card) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--card-shadow, var(--shadow-sm)) !important;
}

.kpi-receivables::before,
.kpi-payables::before,
.kpi-net::before {
    background: var(--brand) !important;
    background-image: none !important;
}

.currency-badge,
.pay-badge.paid {
    background: var(--info-bg) !important;
    background-image: none !important;
    color: var(--info-fg) !important;
    border: 1px solid rgba(29, 78, 216, 0.2) !important;
    border-radius: var(--radius-sm) !important;
}

.pay-badge.paid {
    background: var(--success-bg) !important;
    color: var(--success-fg) !important;
    border-color: rgba(21, 128, 61, 0.2) !important;
}

/* ── Buttons ── */
.btn-primary,
.fesmos-btn--primary,
button.btn-primary {
    background: var(--brand) !important;
    background-image: none !important;
    border-color: var(--brand-dark) !important;
    color: #fff !important;
    border-radius: var(--radius-md) !important;
    font-weight: 600 !important;
    box-shadow: none !important;
}

.btn-secondary,
.btn-outline,
.fesmos-btn--secondary,
.staff-btn-secondary {
    background: var(--bg-card) !important;
    background-image: none !important;
    border: 1px solid var(--border-med) !important;
    color: var(--text-primary) !important;
    box-shadow: none !important;
}

.staff-btn-primary,
.quote-toolbar-btn--primary {
    background: var(--brand) !important;
    background-image: none !important;
    border-color: var(--brand-dark) !important;
    color: #fff !important;
    box-shadow: none !important;
}

.fesmos-btn--danger,
.btn-danger {
    background: var(--danger) !important;
    background-image: none !important;
    border-color: var(--danger) !important;
    color: var(--text-inverse, #fff) !important;
    box-shadow: none !important;
}

.fesmos-btn--danger:hover,
.btn-danger:hover {
    background: #b91c1c !important;
    border-color: #b91c1c !important;
}

/* ── Forms ── */
.form-group label,
.fesmos-label {
    font-size: 12px !important;
    font-weight: 600 !important;
    color: var(--text-secondary) !important;
}

.form-group input:not([type=checkbox]):not([type=radio]),
.form-group select,
.form-group textarea,
.form-control,
.fesmos-input {
    font-family: var(--font-sans) !important;
    font-size: 13px !important;
    border: 1px solid var(--border-med) !important;
    border-radius: var(--radius-md) !important;
    background-color: var(--bg-card) !important;
    color: var(--text-primary) !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
    height: auto !important;
    min-height: 44px !important;
    padding: 11px 14px !important;
    line-height: 1.45 !important;
}

.form-group select,
.fesmos-input[type="select"],
select.form-control {
    padding-right: 36px !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    background-color: var(--bg-card) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 12px !important;
}

.form-group textarea,
textarea.form-control {
    min-height: 88px !important;
    height: auto !important;
    padding-top: 12px !important;
    padding-bottom: 12px !important;
}

.form-group input:focus,
.form-control:focus,
.fesmos-input:focus {
    border-color: var(--brand) !important;
    box-shadow: 0 0 0 2px var(--brand-muted) !important;
    outline: 2px solid var(--focus-ring) !important;
    outline-offset: 2px !important;
}

/* ── Tables ── */
table,
.stock-table,
.data-table,
.fesmos-data-table,
.md-inv-table,
.users-table,
.assets-table,
.items-table,
.mgr-pro-table {
    font-size: 13px !important;
}

table thead th,
table tbody td,
.stock-table th,
.stock-table td,
.data-table th,
.data-table td,
.users-table th,
.users-table td,
.assets-table th,
.assets-table td,
.items-table th,
.items-table td,
.mgr-pro-table th,
.mgr-pro-table td {
    padding: var(--space-3) var(--space-4) !important;
}

table thead th,
.stock-table th,
.data-table th,
.users-table th,
.assets-table th,
.items-table th,
.mgr-pro-table th {
    background: var(--bg-subtle) !important;
    color: var(--text-secondary) !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.05em !important;
    border-bottom: 1px solid var(--border) !important;
}

table tbody tr:nth-child(even) td,
.stock-table tbody tr:nth-child(even) td,
.users-table tbody tr:nth-child(even) td,
.assets-table tbody tr:nth-child(even) td,
.items-table tbody tr:nth-child(even) td,
.mgr-pro-table tbody tr:nth-child(even) td,
.data-table tbody tr:nth-child(even) td {
    background: var(--bg-toolbar) !important;
}

table tbody tr:hover td,
.stock-table tbody tr:hover td,
.users-table tbody tr:hover td,
.assets-table tbody tr:hover td,
.items-table tbody tr:hover td,
.mgr-pro-table tbody tr:hover td {
    background: var(--bg-hover) !important;
    box-shadow: none !important;
}

.fesmos-td-clip {
    max-width: 28ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Badges ── */
.status-badge,
.badge,
.fesmos-badge {
    border-radius: var(--radius-sm) !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    background-image: none !important;
}

.fesmos-badge--success,
.badge-success {
    color: var(--success-fg) !important;
}

.fesmos-badge--warning,
.badge-warning {
    color: var(--warning-fg) !important;
}

.fesmos-badge--danger,
.badge-danger {
    color: var(--danger-fg) !important;
}

.fesmos-badge--info,
.badge-info {
    color: var(--info-fg) !important;
}

/* ── Hero / dash headers — flat (MD exec theme is a documented exception) ── */
body:not(.md-executive-theme) .dash-hero,
body:not(.md-executive-theme) .page-hero,
body:not(.md-executive-theme) .section-hero,
body:not(.md-executive-theme) .hero-banner {
    background: linear-gradient(165deg, var(--bg-card) 0%, var(--bg-toolbar) 100%) !important;
    background-image: linear-gradient(165deg, var(--bg-card) 0%, var(--bg-toolbar) 100%) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--card-shadow, var(--shadow-sm)) !important;
}

body:not(.md-executive-theme) .dash-eyebrow {
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    color: var(--text-muted) !important;
}

/* ── Modals ── */
.modal-content,
.modal-dialog .modal-content,
.fesmos-dialog-box {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--shadow-lg, 0 4px 16px rgba(26, 31, 38, 0.1)) !important;
}

/* ── Staff portal topbar ── */
.staff-topbar {
    background: var(--bg-card) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
}

/* ── Responsive page body ── */
.page-body,
.content-wrapper,
.fesmos-app .page-body {
    padding: 24px !important;
}

.section-header,
.page-header,
.fesmos-section-head {
    margin-bottom: 16px !important;
}

.section-header h2,
.page-section-title {
    font-size: 16px !important;
    letter-spacing: -0.015em !important;
}

@media (max-width: 768px) {
    .page-body,
    .content-wrapper,
    .fesmos-app .page-body {
        padding: 16px !important;
    }

    .stat-card,
    .kpi-card {
        min-width: 0 !important;
    }
}

@media (max-width: 480px) {
    .page-body,
    .content-wrapper {
        padding: 12px !important;
    }
}

.settings-card--password button[type="submit"],
.settings-panel-card form[id="changePasswordForm"] button[type="submit"],
form[id="passwordForm"] button[type="submit"] {
    width: 100%;
}

/* Type scale — kill ad-hoc 9.5/10px labels; 18px page titles. Leave MD .dash-title. */
.sidebar-section-label,
.nav-section-label,
.fesmos-section-label,
.fesmos-kpi-label,
.kpi-label,
.stat-label,
.sidebar-header span,
.sidebar-header-text span,
.sidebar-brand-sub,
.user-role-tag,
.breadcrumb,
.fesmos-breadcrumb {
    font-size: var(--text-xs) !important;
}

.fesmos-page-title,
.header-title,
.top-header h1,
.page-header-bar h1,
body:not(.md-executive-theme) .dash-title {
    font-size: var(--text-xl) !important;
    letter-spacing: -0.015em !important;
    line-height: 1.2 !important;
}

/* Soften oversized radii from module CSS (enterprise, not pill-heavy) */
body:not(.md-executive-theme) .mgr-cc-hero,
body:not(.md-executive-theme) .settings-card,
body:not(.md-executive-theme) .form-card {
    border-radius: var(--radius-lg) !important;
}

/* Focus ring — buttons, nav, tabs, icon controls */
.fesmos-btn:focus-visible,
.btn:focus-visible,
.staff-btn-primary:focus-visible,
.staff-btn-secondary:focus-visible,
.quote-toolbar-btn--primary:focus-visible,
.fesmos-btn--icon:focus-visible,
.nav-item:focus-visible,
.logout-btn:focus-visible,
.tab-item:focus-visible,
.fesmos-tab:focus-visible,
.tab-btn:focus-visible,
.theme-btn:focus-visible,
.fesmos-theme-btn:focus-visible,
.fesmos-menu-toggle:focus-visible,
.sidebar-toggle:focus-visible {
    outline: 2px solid var(--focus-ring) !important;
    outline-offset: 2px !important;
}
