/* RQ ERP design tokens — ARCHITECTURE.md Section 14/15 */
:root {
    --rq-primary: #1769AA;
    --rq-secondary: #00A6A6;
    --rq-dark: #172B4D;
    --rq-bg: #F5F8FC;
    --rq-surface: #FFFFFF;
    --rq-text: #172B4D;
    --rq-text-muted: #5B6B85;
    --rq-border: #E2E8F0;
    --rq-success: #1BA97A;
    --rq-warning: #E0A030;
    --rq-danger: #D64550;
    --rq-info: #3B82C4;
    --rq-sidebar-bg: #FFFFFF;
    --rq-sidebar-text: #5B6B85;
    --rq-sidebar-heading: #97A3BC;
    --rq-sidebar-active: #1769AA;
    --rq-sidebar-active-bg: #EAF2FB;
    --rq-sidebar-border: #EDF1F7;

    /* Bilingual type pair: IBM Plex Sans Arabic + IBM Plex Sans are the
       same type family, drawn together specifically so Arabic and Latin
       text share comparable weight/x-height at the same font-size — the
       usual "Arabic looks smaller/heavier than the English next to it"
       problem a generic Arabic-compatible fallback stack (e.g. Tahoma)
       doesn't solve. One token, so swapping the pair later is a one-line
       change; loaded via <link> in each layout's <head>, not @import
       here (avoids a render-blocking chained request).
       See PdfService.php for the separate, unrelated PDF font stack. */
    --rq-font-family: "IBM Plex Sans Arabic", "IBM Plex Sans", "Segoe UI", Tahoma, sans-serif;

    /* Spacing scale — replaces ad-hoc rem literals for anything new;
       existing hardcoded values are left alone (not a mass find/replace)
       and migrate opportunistically as their rules are next touched. */
    --rq-space-1: .25rem;
    --rq-space-2: .5rem;
    --rq-space-3: .75rem;
    --rq-space-4: 1rem;
    --rq-space-5: 1.5rem;
    --rq-space-6: 2rem;

    /* Type scale — same rationale as spacing: new/touched rules use
       these, existing untouched rules keep their literal values. */
    --rq-font-size-xs: .75rem;
    --rq-font-size-sm: .8125rem;
    --rq-font-size-base: .9375rem;
    --rq-font-size-lg: 1.0625rem;
    --rq-font-size-xl: 1.25rem;
    --rq-font-size-2xl: 1.5rem;
    --rq-line-height-tight: 1.2;
    --rq-line-height-base: 1.5;

    /* Dark-palette VALUES live here once, in a plain always-on :root
       block, so they can never drift between the two contexts that
       apply them ("@media (prefers-color-scheme: dark)" for
       system-default dark mode, and ":root[data-theme=\"dark\"]" for an
       explicit user choice — CSS has no way to write both conditions as
       one rule, but both can reference these instead of hand-duplicating
       the actual colors). */
    --rq-dark-bg: #0F1B30;
    --rq-dark-surface: #16233C;
    --rq-dark-text: #E7ECF5;
    --rq-dark-text-muted: #93A2BE;
    --rq-dark-border: #26365555;
    --rq-dark-primary: #4A9FDB;
    --rq-dark-secondary: #29C4C4;
    --rq-dark-sidebar-bg: #16233C;
    --rq-dark-sidebar-text: #93A2BE;
    --rq-dark-sidebar-heading: #6C7C9E;
    --rq-dark-sidebar-active: #4A9FDB;
    --rq-dark-sidebar-active-bg: #1D2E4D;
    --rq-dark-sidebar-border: #26365555;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --rq-bg: var(--rq-dark-bg);
        --rq-surface: var(--rq-dark-surface);
        --rq-text: var(--rq-dark-text);
        --rq-text-muted: var(--rq-dark-text-muted);
        --rq-border: var(--rq-dark-border);
        --rq-primary: var(--rq-dark-primary);
        --rq-secondary: var(--rq-dark-secondary);
        --rq-sidebar-bg: var(--rq-dark-sidebar-bg);
        --rq-sidebar-text: var(--rq-dark-sidebar-text);
        --rq-sidebar-heading: var(--rq-dark-sidebar-heading);
        --rq-sidebar-active: var(--rq-dark-sidebar-active);
        --rq-sidebar-active-bg: var(--rq-dark-sidebar-active-bg);
        --rq-sidebar-border: var(--rq-dark-sidebar-border);
    }
}

:root[data-theme="dark"] {
    --rq-bg: var(--rq-dark-bg);
    --rq-surface: var(--rq-dark-surface);
    --rq-text: var(--rq-dark-text);
    --rq-text-muted: var(--rq-dark-text-muted);
    --rq-border: var(--rq-dark-border);
    --rq-primary: var(--rq-dark-primary);
    --rq-secondary: var(--rq-dark-secondary);
    --rq-sidebar-bg: var(--rq-dark-sidebar-bg);
    --rq-sidebar-text: var(--rq-dark-sidebar-text);
    --rq-sidebar-heading: var(--rq-dark-sidebar-heading);
    --rq-sidebar-active: var(--rq-dark-sidebar-active);
    --rq-sidebar-active-bg: var(--rq-dark-sidebar-active-bg);
    --rq-sidebar-border: var(--rq-dark-sidebar-border);
}

body {
    background: var(--rq-bg);
    color: var(--rq-text);
    font-family: var(--rq-font-family);
    font-size: var(--rq-font-size-base);
    line-height: var(--rq-line-height-base);
}

a { color: var(--rq-primary); }

.rq-navbar {
    background: var(--rq-surface);
    border-bottom: 1px solid var(--rq-border);
}

.rq-sidebar {
    background: var(--rq-sidebar-bg);
    color: var(--rq-sidebar-text);
    min-height: 100vh;
    width: 264px;
    border-inline-end: 1px solid var(--rq-sidebar-border);
}

.rq-sidebar .nav-link {
    color: var(--rq-sidebar-text);
    border-radius: .6rem;
    margin-inline: .5rem;
    font-size: .92rem;
    display: flex;
    align-items: center;
    gap: .55rem;
}

.rq-sidebar .nav-link.active,
.rq-sidebar .nav-link:hover {
    background: var(--rq-sidebar-active-bg);
    color: var(--rq-sidebar-active);
}

.rq-nav-section {
    margin-top: .35rem;
}

.rq-nav-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    background: none;
    border: none;
    text-transform: uppercase;
    font-size: .7rem;
    letter-spacing: .06em;
    color: var(--rq-sidebar-heading);
    padding: .5rem 1rem;
    cursor: pointer;
}

.rq-nav-section-has-active > .rq-nav-section-toggle {
    color: var(--rq-sidebar-active);
}

.rq-nav-section-chevron {
    display: inline-block;
    transition: transform .18s ease;
    font-size: .9rem;
}

.rq-nav-section-toggle[aria-expanded="true"] .rq-nav-section-chevron {
    transform: rotate(-90deg);
}

.rq-sidebar .nav-link.disabled {
    color: var(--rq-text-muted);
    opacity: .55;
}

.rq-sidebar .badge-soon {
    font-size: .65rem;
}

.rq-brand-mark {
    display: flex;
    align-items: center;
    gap: .6rem;
}

.rq-brand-mark .rq-brand-logo {
    width: 34px;
    height: 34px;
    border-radius: .65rem;
    background: linear-gradient(135deg, var(--rq-primary), var(--rq-secondary));
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: .95rem;
    flex-shrink: 0;
}

.card {
    background: var(--rq-surface);
    border: 1px solid var(--rq-border);
    border-radius: .85rem;
}

/* Top navbar: quick-nav search, notification bell, user chip */
.rq-navbar {
    padding-block: .6rem;
}

.rq-quicknav {
    position: relative;
    width: 260px;
}

.rq-quicknav input {
    border-radius: 2rem;
    background: var(--rq-bg);
    border-color: var(--rq-border);
    padding-inline-start: 2.25rem;
}

.rq-quicknav-icon {
    position: absolute;
    top: 50%;
    inset-inline-start: .75rem;
    transform: translateY(-50%);
    color: var(--rq-text-muted);
    pointer-events: none;
}

.rq-quicknav-results {
    position: absolute;
    inset-inline: 0;
    top: calc(100% + 4px);
    background: var(--rq-surface);
    border: 1px solid var(--rq-border);
    border-radius: .6rem;
    box-shadow: 0 8px 24px rgba(23, 43, 77, .12);
    z-index: 1050;
    overflow: hidden;
}

.rq-quicknav-results a {
    display: block;
    padding: .5rem .85rem;
    font-size: .85rem;
    color: var(--rq-text);
    text-decoration: none;
}

.rq-quicknav-results a:hover,
.rq-quicknav-results a.active {
    background: var(--rq-sidebar-active-bg);
    color: var(--rq-primary);
}

.rq-icon-btn {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--rq-bg);
    border: 1px solid var(--rq-border);
    color: var(--rq-text);
    position: relative;
    font-size: 1.05rem;
}

.rq-icon-btn .badge {
    position: absolute;
    top: -4px;
    inset-inline-end: -4px;
    font-size: .62rem;
    padding: .2rem .38rem;
}

.rq-user-chip {
    display: flex;
    align-items: center;
    gap: .6rem;
    cursor: pointer;
}

.rq-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--rq-primary);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: .85rem;
    flex-shrink: 0;
}

/* Dashboard: KPI cards */
.rq-kpi-card {
    display: flex;
    align-items: center;
    gap: .9rem;
    padding: 1.1rem;
}

.rq-kpi-icon {
    width: 48px;
    height: 48px;
    border-radius: .8rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
}

.rq-kpi-icon-primary { background: rgba(23, 105, 170, .12); color: var(--rq-primary); }
.rq-kpi-icon-success { background: rgba(27, 169, 122, .12); color: var(--rq-success); }
.rq-kpi-icon-info { background: rgba(59, 130, 196, .12); color: var(--rq-info); }
.rq-kpi-icon-warning { background: rgba(224, 160, 48, .14); color: var(--rq-warning); }
.rq-kpi-icon-secondary { background: rgba(0, 166, 166, .12); color: var(--rq-secondary); }

.rq-kpi-value {
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1.2;
}

.rq-kpi-delta-up { color: var(--rq-success); }
.rq-kpi-delta-down { color: var(--rq-danger); }

/* Dashboard: compact widget cards (mosaic grid) */
.rq-widget-card {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.rq-widget-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .9rem 1.1rem;
    border-bottom: 1px solid var(--rq-border);
}

.rq-widget-header h2 {
    font-size: .95rem;
    margin: 0;
    display: flex;
    align-items: center;
    gap: .5rem;
}

.rq-widget-body {
    padding: .9rem 1.1rem;
    flex-grow: 1;
}

.rq-widget-table {
    width: 100%;
    font-size: .82rem;
}

.rq-widget-table th {
    color: var(--rq-text-muted);
    font-weight: 600;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    padding-block: .4rem;
    border-bottom: 1px solid var(--rq-border);
}

.rq-widget-table td {
    padding-block: .55rem;
    border-bottom: 1px solid var(--rq-border);
    vertical-align: middle;
}

.rq-widget-table tr:last-child td {
    border-bottom: none;
}

.rq-stat-row {
    display: flex;
    gap: .5rem;
    overflow-x: auto;
    padding-bottom: .25rem;
    margin-bottom: .85rem;
}

.rq-stat-pill {
    flex: 1 0 auto;
    min-width: 108px;
    background: var(--rq-bg);
    border-radius: .6rem;
    padding: .55rem .7rem;
}

.rq-stat-pill .rq-stat-value {
    font-weight: 700;
    font-size: 1.05rem;
}

.rq-stat-pill .rq-stat-label {
    font-size: .72rem;
    color: var(--rq-text-muted);
}

.rq-usage-row {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1rem;
}

.rq-usage-row:last-child {
    margin-bottom: 0;
}

.rq-usage-icon {
    width: 36px;
    height: 36px;
    border-radius: .6rem;
    background: var(--rq-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rq-donut-wrap {
    position: relative;
    width: 100%;
    max-width: 200px;
    margin-inline: auto;
}

.rq-donut-center {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.rq-donut-center .rq-donut-total {
    font-size: 1.5rem;
    font-weight: 700;
}

.rq-donut-center .rq-donut-label {
    font-size: .7rem;
    color: var(--rq-text-muted);
}

.rq-legend-dot {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    margin-inline-end: .4rem;
}

.rq-report-chip {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .6rem .7rem;
    border-radius: .6rem;
    border: 1px solid var(--rq-border);
    text-decoration: none;
    color: var(--rq-text);
    font-size: .82rem;
    height: 100%;
}

.rq-report-chip:hover {
    background: var(--rq-sidebar-active-bg);
    border-color: var(--rq-primary);
    color: var(--rq-primary);
}

.rq-report-card {
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.rq-report-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(23, 43, 77, .08);
    border-color: var(--rq-primary);
}

.btn-primary {
    background-color: var(--rq-primary);
    border-color: var(--rq-primary);
}

.btn-primary:hover {
    filter: brightness(0.92);
}

.text-rq-secondary { color: var(--rq-secondary); }
.bg-rq-success { background: var(--rq-success); }
.badge-status-active { background: var(--rq-success); }
.badge-status-trialing { background: var(--rq-info); }
.badge-status-past_due, .badge-status-suspended { background: var(--rq-warning); color: #3a2a00; }
.badge-status-cancelled, .badge-status-expired { background: var(--rq-danger); }

.auth-shell {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

.auth-card {
    max-width: 440px;
    width: 100%;
}

.rq-brand {
    font-weight: 700;
    color: var(--rq-primary);
}

/* Printing any app page (reports, invoices-in-browser, etc.): drop the
   sidebar/navbar/offcanvas/buttons and let the content fill the sheet.
   Anything meant to disappear on paper carries [data-no-print]. */
@media print {
    .rq-sidebar, .rq-navbar, .offcanvas, [data-no-print] {
        display: none !important;
    }
    main {
        padding: 0 !important;
    }
    body {
        background: #fff !important;
    }
    .card {
        border: 1px solid #ccc !important;
        break-inside: avoid;
    }
    a {
        color: inherit !important;
        text-decoration: none !important;
    }
}
