/* ============================================================
   Genventory — Application Stylesheet  v1.0.0
   Bootstrap 5.3 companion · Mobile-first
   ============================================================ */

/* ── Custom Properties / Design Tokens ──────────────────────── */
:root,
[data-bs-theme="light"] {
    --gv-sidebar-w:          240px;
    --gv-sidebar-collapsed:  64px;
    --gv-topnav-h:           58px;
    --gv-primary:            #0d6efd;
    --gv-primary-light:      #e8f0fe;
    --gv-sidebar-bg:         #ffffff;
    --gv-sidebar-border:     #e9ecef;
    --gv-body-bg:            #f3f5f9;
    --gv-topnav-bg:          #ffffff;
    --gv-card-bg:            #ffffff;
    --gv-text-color:         #212529;
    --gv-text-muted:         #6c757d;
    --gv-link-hover-bg:      #f0f4ff;
    --gv-control-bg:         #f3f5f9;
    --gv-control-border:     #e9ecef;
    --gv-theme-color:        #0f766e;
    --gv-font-family:        'Manrope', sans-serif;
    --bs-font-sans-serif:    'Manrope', sans-serif;
    --bs-body-font-family:   'Manrope', sans-serif;
    --bs-font-monospace:     'Manrope', sans-serif;
    --gv-card-radius:        10px;
    --gv-control-radius:     7px;
    --gv-transition:         0.22s ease;
    --gv-shadow-sm:          0 1px 4px rgba(0,0,0,.06);
    --gv-shadow:             0 2px 12px rgba(0,0,0,.08);

    /* Tables */
    --gv-table-bg:           transparent;
    --gv-table-header-bg:    #f8f9fa;
    --gv-table-header-color: #6c757d;
    --gv-table-border:       #e9ecef;
    --gv-table-hover-bg:     #f5f7ff;
    --gv-table-striped-bg:   rgba(0,0,0,.02);
    --gv-table-accent-bg:    #f8f9fa;

    /* Scrollbars */
    --gv-scroll-size:        6px;
    --gv-scroll-thumb:       rgba(15, 23, 42, 0.22);
    --gv-scroll-thumb-hover: rgba(15, 23, 42, 0.42);
    --gv-scroll-track:       transparent;

    /* Spacing scale */
    --gv-space-1: 0.25rem;
    --gv-space-2: 0.5rem;
    --gv-space-3: 0.75rem;
    --gv-space-4: 1rem;
    --gv-space-5: 1.25rem;
    --gv-space-6: 1.5rem;

    /* Control heights (sm / default) */
    --gv-control-h-sm: 34px;
    --gv-control-h:    38px;
    --gv-btn-h-sm:     34px;
    --gv-btn-h:        38px;

    /* Type floor for UI chrome (not print) */
    --gv-text-xs:  11px;
    --gv-text-sm:  12.5px;
    --gv-text:     13.5px;
    --gv-text-md:  14px;

    /* Z-index scale */
    --gv-z-dropdown: 1050;
    --gv-z-sticky:   1030;
    --gv-z-fixed:    1035;
    --gv-z-modal-backdrop: 1055;
    --gv-z-modal:    1060;
    --gv-z-popover:  1070;
    --gv-z-tooltip:  1080;
    --gv-z-sidebar:  1040;
}

/* ── Reset & Base ────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

html, body {
    font-family: var(--gv-font-family);
    font-size: 14px;
    line-height: 1.6;
    color: var(--gv-text-color);
    background: var(--gv-body-bg);
    -webkit-font-smoothing: antialiased;
}

body,
button,
input,
select,
textarea,
.btn,
.form-control,
.form-select,
.dropdown-menu,
.modal,
.alert,
.badge,
.nav,
.navbar,
.table,
.card,
.list-group,
.pagination,
.breadcrumb,
.tooltip,
.popover {
    font-family: var(--gv-font-family);
}

/* Force Manrope even where Bootstrap uses monospace utilities */
code, kbd, pre, samp,
.font-monospace,
.table code,
.form-control.font-monospace {
    font-family: var(--gv-font-family) !important;
}

a { text-decoration: none; color: inherit; }

/* ══════════════════════════════════════════════════════════════
   AUTH LAYOUT
══════════════════════════════════════════════════════════════ */

.gv-auth-body {
    min-height: 100vh;
    background: var(--gv-body-bg);
    display: flex;
    align-items: stretch;
}

.gv-auth-wrap {
    display: flex;
    width: 100%;
    min-height: 100vh;
}

/* Left brand panel */
.gv-auth-brand {
    flex: 0 0 42%;
    background: linear-gradient(145deg, #1a6ef5 0%, #0856d6 50%, #03399e 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 2.5rem;
    position: relative;
    overflow: hidden;
}

.gv-auth-brand::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 20% 80%, rgba(255,255,255,.06) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(255,255,255,.04) 0%, transparent 50%);
}

.gv-auth-brand-inner {
    position: relative;
    z-index: 1;
    max-width: 360px;
    width: 100%;
}

/* Right form panel */
.gv-auth-form {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2.5rem 1.5rem;
    min-height: 100vh;
    overflow-y: auto;
    background: #fff;
}

.gv-auth-card,
.auth-card {
    width: 100%;
    max-width: 420px;
}

@media (max-width: 575.98px) {
    .gv-auth-form  { padding: 1.5rem 1rem; }
    .gv-auth-brand { display: none !important; }
}

/* ══════════════════════════════════════════════════════════════
   ADMIN LAYOUT — Body & Shell
══════════════════════════════════════════════════════════════ */

.gv-admin-body {
    background: var(--gv-body-bg);
    overflow-x: hidden;
}

/* Sidebar is fixed, so main shifts right by sidebar width */
.gv-main {
    margin-left: var(--gv-sidebar-w);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    transition: margin-left var(--gv-transition);
}

.gv-content {
    flex: 1;
}

/* Sidebar collapsed (desktop) */
.gv-sidebar-collapsed .gv-main {
    margin-left: var(--gv-sidebar-collapsed);
}

/* Mobile: sidebar is off-screen so no margin needed */
@media (max-width: 991.98px) {
    .gv-main { margin-left: 0 !important; }
}

/* ── Page Header ─────────────────────────────────────────────── */
.gv-page-header {
    padding-bottom: 0.25rem;
}

.gv-page-title {
    font-size: 16px;
    font-weight: 600;
    color: #1a1d23;
}

/* ══════════════════════════════════════════════════════════════
   SIDEBAR
══════════════════════════════════════════════════════════════ */

/* Mobile backdrop */
.sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.42);
    z-index: 1039;
    backdrop-filter: blur(1px);
}
.sidebar-backdrop.show { display: block; }

.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--gv-sidebar-w);
    height: 100vh;
    background: var(--gv-sidebar-bg);
    border-right: 1px solid var(--gv-sidebar-border);
    display: flex;
    flex-direction: column;
    z-index: 1040;
    transition: transform var(--gv-transition), width var(--gv-transition);
    overflow: hidden;
    box-shadow: var(--gv-shadow-sm);
}

/* Mobile: hidden off-screen */
@media (max-width: 991.98px) {
    .sidebar {
        transform: translateX(-100%);
        box-shadow: 4px 0 24px rgba(0,0,0,.14);
    }
    .sidebar.sidebar-open {
        transform: translateX(0);
    }
}

/* Collapsed (desktop) */
.gv-sidebar-collapsed .sidebar {
    width: var(--gv-sidebar-collapsed);
}
.gv-sidebar-collapsed .sidebar-brand-text,
.gv-sidebar-collapsed .sidebar-link span,
.gv-sidebar-collapsed .sidebar-section-label,
.gv-sidebar-collapsed .sidebar-user .overflow-hidden {
    opacity: 0;
    pointer-events: none;
    width: 0;
}
.gv-sidebar-collapsed .sidebar-link {
    justify-content: center;
    padding: 8px 6px;
    margin: 1px 6px;
}
.gv-sidebar-collapsed .sidebar-link i {
    width: auto;
}

/* Brand row */
.sidebar-brand {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 0.875rem;
    height: var(--gv-topnav-h);
    border-bottom: 1px solid var(--gv-sidebar-border);
    flex-shrink: 0;
    gap: 8px;
}

.sidebar-brand-text {
    font-size: 14.5px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity var(--gv-transition), width var(--gv-transition);
}

/* Light plate behind logo so green/dark logos stay visible */
.sidebar-logo-plate {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 36px;
    flex-shrink: 0;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
    overflow: hidden;
    padding: 3px;
}

.sidebar-logo-plate img {
    max-height: 28px;
    max-width: 34px;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
}

.sidebar-logo-fallback {
    font-size: 1.25rem;
}

.sidebar-avatar img {
    object-fit: cover;
    border: 2px solid #e9ecef;
}

.sidebar-close {
    flex-shrink: 0;
    padding: 4px 8px;
    color: #6c757d;
    border: none;
    background: none;
}

/* User mini-profile */
.sidebar-user {
    flex-shrink: 0;
    padding: 0.625rem 0.875rem;
    border-bottom: 1px solid var(--gv-sidebar-border);
}

/* Section labels */
.sidebar-section-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    color: #adb5bd;
    text-transform: uppercase;
    padding: 0 0.875rem;
    margin-top: 0.75rem;
    margin-bottom: 0.2rem;
    white-space: nowrap;
    overflow: hidden;
    transition: opacity var(--gv-transition);
}

/* Nav links */
.sidebar-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 12px;
    margin: 1px 8px;
    border-radius: 7px;
    color: var(--gv-text-muted);
    font-size: 13.5px;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    transition: background var(--gv-transition), color var(--gv-transition);
}

.sidebar-link i {
    font-size: 16px;
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    line-height: 1;
    color: #6c757d;
    transition: color var(--gv-transition);
}
.sidebar-link:hover i,
.sidebar-link.active i {
    color: var(--gv-primary);
}

.sidebar-link span {
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity var(--gv-transition), width var(--gv-transition);
}

.sidebar-link:hover {
    background: var(--gv-link-hover-bg);
    color: var(--gv-primary);
}

.sidebar-link.active {
    background: var(--gv-primary-light);
    color: var(--gv-primary);
    font-weight: 600;
}

/* Scrollable nav area */
.sidebar-nav {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    overscroll-behavior: contain;
}

/* ══════════════════════════════════════════════════════════════
   MINIMAL SCROLLBARS  (Firefox + Chromium/WebKit)
══════════════════════════════════════════════════════════════ */

/* Firefox */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--gv-scroll-thumb) var(--gv-scroll-track);
}

/* Chromium / Safari / Edge */
*::-webkit-scrollbar {
    width: var(--gv-scroll-size);
    height: var(--gv-scroll-size);
}

*::-webkit-scrollbar-button,
*::-webkit-scrollbar-button:single-button,
*::-webkit-scrollbar-button:start:decrement,
*::-webkit-scrollbar-button:end:increment,
*::-webkit-scrollbar-button:vertical:start:decrement,
*::-webkit-scrollbar-button:vertical:end:increment,
*::-webkit-scrollbar-button:horizontal:start:decrement,
*::-webkit-scrollbar-button:horizontal:end:increment {
    display: none;
    width: 0;
    height: 0;
}

*::-webkit-scrollbar-corner {
    background: transparent;
}

*::-webkit-scrollbar-track {
    background: var(--gv-scroll-track);
    border: none;
    box-shadow: none;
}

*::-webkit-scrollbar-thumb {
    background-color: var(--gv-scroll-thumb);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
    transition: background-color 0.2s ease;
}

*::-webkit-scrollbar-thumb:hover,
*::-webkit-scrollbar-thumb:active {
    background-color: var(--gv-scroll-thumb-hover);
}

/* Sidebar: thinner, nearly invisible until hover */
.sidebar-nav {
    scrollbar-width: thin;
    scrollbar-color: transparent transparent;
}

.sidebar-nav:hover {
    scrollbar-color: var(--gv-scroll-thumb) transparent;
}

.sidebar-nav::-webkit-scrollbar {
    width: 4px;
}

.sidebar-nav::-webkit-scrollbar-thumb {
    background-color: transparent;
    transition: background-color 0.22s ease;
}

.sidebar-nav:hover::-webkit-scrollbar-thumb {
    background-color: var(--gv-scroll-thumb);
}

.sidebar-nav:hover::-webkit-scrollbar-thumb:hover {
    background-color: var(--gv-scroll-thumb-hover);
}

/* ══════════════════════════════════════════════════════════════
   TOP NAV BAR
══════════════════════════════════════════════════════════════ */

.topnav {
    position: sticky;
    top: 0;
    z-index: 1030;
    height: var(--gv-topnav-h);
    background: var(--gv-topnav-bg);
    border-bottom: 1px solid var(--gv-sidebar-border);
    display: flex;
    align-items: center;
    padding: 0 1rem 0 1.25rem;
    gap: 0.5rem;
    box-shadow: var(--gv-shadow-sm);
    flex-shrink: 0;
}

/* Search */
.topnav-search-wrap {
    position: relative;
    width: 260px;
}
.topnav-search-icon {
    position: absolute;
    left: 12px;
    top: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    color: #adb5bd;
    font-size: 14px;
    pointer-events: none;
    z-index: 5;
    line-height: 1;
}
/* Higher specificity than .form-control so its padding shorthand cannot collapse left inset */
.form-control.topnav-search-input,
.topnav-search-input {
    height: var(--gv-control-h-sm);
    min-height: var(--gv-control-h-sm);
    padding: 0.28rem 12px 0.28rem 2.15rem;
    border-radius: 20px;
    background: var(--gv-control-bg);
    border-color: var(--gv-control-border);
    font-size: 13px;
    color: var(--gv-text-color);
}
.form-control.topnav-search-input:focus,
.topnav-search-input:focus {
    background: var(--gv-card-bg);
    border-color: var(--gv-primary);
    box-shadow: 0 0 0 0.18rem rgba(13,110,253,.12);
    outline: none;
    color: var(--gv-text-color);
}

/* ══════════════════════════════════════════════════════════════
   FOOTER
══════════════════════════════════════════════════════════════ */

.admin-footer {
    background: var(--gv-card-bg);
    border-top: 1px solid var(--gv-sidebar-border);
    padding: 0.6rem 1.5rem;
    font-size: 12px;
    color: var(--gv-text-muted);
    flex-shrink: 0;
}

/* ══════════════════════════════════════════════════════════════
   CARDS
══════════════════════════════════════════════════════════════ */

.card {
    border-radius: var(--gv-card-radius);
    border: 1px solid var(--gv-sidebar-border);
    background: var(--gv-card-bg);
    color: var(--gv-text-color);
}

.card.shadow-sm {
    box-shadow: var(--gv-shadow-sm) !important;
}

.card-header {
    background: transparent;
    font-weight: 600;
    font-size: var(--gv-text);
    border-bottom: 1px solid var(--gv-sidebar-border);
}

.card-footer {
    background: transparent;
    border-top: 1px solid var(--gv-sidebar-border);
}

/* Flush table cards — preserve intentional zero padding */
.card-body.p-0 {
    padding: 0 !important;
}

/* ══════════════════════════════════════════════════════════════
   TABLES
══════════════════════════════════════════════════════════════ */

.table {
    font-size: 13.5px;
    margin-bottom: 0;
    --gv-table-pad-y: 0.7rem;
    --gv-table-pad-x: 0.85rem;
    --bs-table-bg: var(--gv-table-bg);
    --bs-table-color: var(--gv-text-color);
    --bs-table-border-color: var(--gv-table-border);
    --bs-table-striped-bg: var(--gv-table-striped-bg);
    --bs-table-hover-bg: var(--gv-table-hover-bg);
    --bs-table-hover-color: var(--gv-text-color);
    color: var(--gv-text-color);
    border-color: var(--gv-table-border);
}

/* Uniform cell padding — overrides scattered px-3 / px-4 utilities */
.gv-content .table > :not(caption) > * > * {
    padding: var(--gv-table-pad-y) var(--gv-table-pad-x);
    vertical-align: middle;
    box-sizing: border-box;
    border-bottom-color: var(--gv-table-border);
    color: inherit;
}

.gv-content .table thead th,
.table th {
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--gv-table-header-color);
    white-space: nowrap;
    background: var(--gv-table-header-bg);
    border-bottom-width: 1px;
    border-bottom-color: var(--gv-table-border);
    vertical-align: middle;
}

.table td {
    vertical-align: middle;
    color: var(--gv-text-color);
    background-color: transparent;
}

/* Bootstrap accent helpers used widely in thead/tfoot */
.table-light,
.table > :not(caption) > .table-light,
.table .table-light > th,
.table .table-light > td {
    --bs-table-bg: var(--gv-table-accent-bg);
    --bs-table-color: var(--gv-text-color);
    --bs-table-border-color: var(--gv-table-border);
    --bs-table-striped-bg: var(--gv-table-striped-bg);
    --bs-table-hover-bg: var(--gv-table-hover-bg);
    --bs-table-hover-color: var(--gv-text-color);
    color: var(--gv-text-color);
    background-color: var(--gv-table-accent-bg) !important;
    border-color: var(--gv-table-border);
}

/* Flush tables in cards: even inset from card edges */
.card > .table-responsive .table > :not(caption) > * > *:first-child,
.card-body.p-0 > .table-responsive .table > :not(caption) > * > *:first-child,
.card-body.p-0 > .table > :not(caption) > * > *:first-child {
    padding-left: 1.1rem;
}
.card > .table-responsive .table > :not(caption) > * > *:last-child,
.card-body.p-0 > .table-responsive .table > :not(caption) > * > *:last-child,
.card-body.p-0 > .table > :not(caption) > * > *:last-child {
    padding-right: 1.1rem;
}

/* Numeric / action columns stay single-line */
.table th.text-end,
.table td.text-end,
.table th.text-center,
.table td.text-center {
    white-space: nowrap;
}

/*
 * Action columns — MUST stay display:table-cell so row borders are continuous.
 * Flex layout belongs only on an INNER wrapper (div.gv-actions), never on <td>/<th>.
 */
.table td.gv-actions,
.table th.gv-actions,
.table td.text-end:has(.btn-icon),
.table td.text-end:has(> .btn) {
    display: table-cell !important; /* critical — never flex on <td> */
    width: 1%;
    min-width: 88px;
    white-space: nowrap;
    vertical-align: middle !important;
    text-align: right !important;
    padding-left: 0.85rem !important;
    padding-right: 1.1rem !important;
}

/* Inner button group only — never put this class alone on a <td> for flex */
div.gv-actions,
span.gv-actions {
    display: inline-flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem;
    vertical-align: middle;
    line-height: 1;
    max-width: 100%;
}

/* Compact square action buttons in data tables */
.table td .btn.btn-icon,
.table td .btn-sm.btn-icon,
.table td a.btn.btn-sm:has(> i:only-child):not(:has(span)),
.table td button.btn.btn-sm:has(> i:only-child):not(:has(span)),
.table td a.btn.btn-sm:has(> .bi:only-child):not(:has(span)),
.table td button.btn.btn-sm:has(> .bi:only-child):not(:has(span)) {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    min-height: 28px !important;
    max-width: 28px !important;
    padding: 0 !important;
    gap: 0 !important;
    flex-shrink: 0;
    overflow: hidden !important;
    box-sizing: border-box;
    vertical-align: middle;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}
.table td .btn.btn-icon i,
.table td .btn.btn-icon .bi,
.table td .btn.btn-sm:has(> i:only-child) > i,
.table td .btn.btn-sm:has(> .bi:only-child) > .bi {
    font-size: 12px !important;
    line-height: 1 !important;
    margin: 0 !important;
}

/* Drop leftover me-* on table action buttons */
.table td .btn.me-1,
.table td .btn.ms-1,
.table td .btn.mx-1,
div.gv-actions .btn.me-1,
div.gv-actions .btn.ms-1 {
    margin: 0 !important;
}
.table td > .btn + .btn,
div.gv-actions > .btn + .btn,
div.gv-actions > a.btn + a.btn,
div.gv-actions > a.btn + button.btn,
div.gv-actions > button.btn + a.btn {
    margin-left: 0 !important; /* gap handles spacing */
}

.table-hover > tbody > tr:hover > *,
.table-hover tbody tr:hover > td,
.table-hover tbody tr:hover > th {
    --bs-table-bg-state: var(--gv-table-hover-bg);
    background-color: var(--gv-table-hover-bg) !important;
    color: var(--gv-text-color);
}

/* Row leading icon tile (products, etc.) */
.gv-row-icon,
.table td .rounded.d-inline-flex {
    width: 36px;
    height: 36px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    line-height: 1;
}
.gv-row-icon i,
.table td .rounded.d-inline-flex i {
    font-size: 1rem;
    line-height: 1;
    display: block;
}

/* ══════════════════════════════════════════════════════════════
   FORMS
══════════════════════════════════════════════════════════════ */

.form-label {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 5px;
    color: #374151;
}

.form-control,
.form-select {
    font-size: var(--gv-text);
    border-color: #d1d5db;
    border-radius: var(--gv-control-radius);
    padding: 0.45rem 0.75rem;
    min-height: var(--gv-control-h);
    max-width: 100%;
}

.form-control-sm,
.form-select-sm {
    min-height: var(--gv-control-h-sm);
    padding: 0.28rem 0.6rem;
    font-size: var(--gv-text-sm);
    border-radius: 6px;
}

.form-control:focus,
.form-select:focus {
    border-color: #0d6efd;
    box-shadow: 0 0 0 0.2rem rgba(13,110,253,.12);
}

textarea.form-control {
    min-height: auto;
}

.form-control.is-invalid,
.form-select.is-invalid {
    border-color: #dc3545;
}

.form-text {
    font-size: 12px;
    color: #6c757d;
    margin-top: 4px;
}

.input-group-text {
    font-size: 13.5px;
    border-color: #d1d5db;
    background: #f8f9fa;
    color: #6c757d;
}

/* ══════════════════════════════════════════════════════════════
   BUTTONS
══════════════════════════════════════════════════════════════ */

.btn {
    font-size: var(--gv-text);
    font-weight: 500;
    border-radius: var(--gv-control-radius);
    padding: 0.42rem 1rem;
    min-height: var(--gv-btn-h);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    transition: all var(--gv-transition);
    white-space: nowrap;
    line-height: 1.25;
    /* Default = labeled button. Never collapse into a square. */
    width: auto;
    max-width: none;
    height: auto;
    overflow: visible;
    flex-shrink: 0;
    box-sizing: border-box;
}

.btn-sm {
    font-size: var(--gv-text-sm);
    padding: 0.3rem 0.75rem;
    border-radius: 6px;
    min-height: var(--gv-btn-h-sm);
}

.btn-lg {
    font-size: 15px;
    padding: 0.55rem 1.5rem;
    border-radius: 8px;
    min-height: 44px;
}

/* Icons inside buttons — spacing via .btn gap */
.btn > i,
.btn > .bi {
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin: 0 !important; /* gap replaces me-* inside .btn */
    font-size: 1.05em;
}

/*
 * Icon-only squares — ONLY when .btn-icon is set explicitly.
 * Never auto-detect with :has(> i:only-child) (text nodes are ignored by CSS).
 */
.btn.btn-icon {
    width: var(--gv-btn-h) !important;
    height: var(--gv-btn-h) !important;
    min-width: var(--gv-btn-h) !important;
    min-height: var(--gv-btn-h) !important;
    padding: 0 !important;
    gap: 0;
    overflow: hidden;
}

.btn.btn-sm.btn-icon {
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    padding: 0 !important;
    gap: 0;
}

/* Notification bell — badge must sit outside the square button */
.topnav .gv-notif-btn.btn-icon {
    overflow: visible !important;
}
.topnav .gv-notif-badge {
    font-size: 9px !important;
    font-weight: 700;
    line-height: 1;
    padding: 0.28em 0.45em !important;
    min-width: 16px;
    border: 2px solid #fff;
}
.topnav .gv-notif-menu {
    min-width: 300px;
    max-width: 340px;
    padding-bottom: 0.35rem;
}
.topnav .gv-notif-list {
    max-height: 340px;
    overflow-y: auto;
}
.topnav .gv-notif-item {
    white-space: normal;
    padding: 0.65rem 1rem;
    border-top: 1px solid #f1f3f5;
}
.topnav .gv-notif-item:hover {
    background: #f8f9fa;
}

/*
 * Hard guard: labeled buttons stay content-sized (beats stale SW square rules).
 * Opt out with .btn-icon or .w-100. Table icon actions are overridden below.
 */
a.btn:not(.btn-icon):not(.w-100),
button.btn:not(.btn-icon):not(.w-100),
.btn:not(.btn-icon):not(.btn-close):not(.w-100) {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    overflow: visible !important;
}

/* Badge icons */
.badge .bi,
.badge i {
    display: inline-flex;
    align-items: center;
    line-height: 1;
    font-size: 0.95em;
    vertical-align: -0.05em;
}

.btn-primary {
    background: var(--gv-primary);
    border-color: var(--gv-primary);
}

.btn-primary:hover {
    background: #0b5ed7;
    border-color: #0b5ed7;
    box-shadow: 0 3px 8px rgba(13,110,253,.28);
}

/* ══════════════════════════════════════════════════════════════
   BADGES & ALERTS
══════════════════════════════════════════════════════════════ */

.badge {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .02em;
    border-radius: 5px;
    padding: 0.28em 0.55em;
}

.badge.rounded-pill { border-radius: 50rem; }

.alert {
    font-size: 13.5px;
    border-radius: 8px;
    border: none;
    padding: 0.75rem 1rem;
}

/* ══════════════════════════════════════════════════════════════
   BREADCRUMB
══════════════════════════════════════════════════════════════ */

.breadcrumb {
    margin-bottom: 0;
}

.breadcrumb-item a {
    color: #6c757d;
    text-decoration: none;
}

.breadcrumb-item a:hover {
    color: var(--gv-primary);
}

.breadcrumb-item.active {
    color: #495057;
}

.breadcrumb-item + .breadcrumb-item::before {
    color: #adb5bd;
}

/* ══════════════════════════════════════════════════════════════
   DROPDOWN
══════════════════════════════════════════════════════════════ */

.dropdown-menu {
    font-size: 13.5px;
    border: 1px solid #eaecf0;
    border-radius: 9px;
    box-shadow: 0 6px 20px rgba(0,0,0,.1);
    padding: 0.4rem 0;
}

.dropdown-item {
    padding: 0.45rem 1rem;
    color: #374151;
    border-radius: 5px;
    margin: 0 0.3rem;
    width: calc(100% - 0.6rem);
}

.dropdown-item:hover {
    background: #f0f4ff;
    color: var(--gv-primary);
}

.dropdown-divider { margin: 0.3rem 0; }

.dropdown-header {
    font-size: 12px;
    font-weight: 700;
    color: #6c757d;
    padding: 0.5rem 1rem;
    text-transform: uppercase;
    letter-spacing: .05em;
}

/* ══════════════════════════════════════════════════════════════
   SETTINGS PAGE
══════════════════════════════════════════════════════════════ */

/* Nav-tabs sit in card-header; Bootstrap tab content below */
.card .nav-tabs {
    border-bottom: none;
    gap: 2px;
}

.card .nav-tabs .nav-link {
    font-size: 13.5px;
    font-weight: 500;
    color: #6c757d;
    border: none;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    padding: 8px 16px 10px;
    background: none;
    transition: color var(--gv-transition), border-color var(--gv-transition);
}

.card .nav-tabs .nav-link:hover {
    color: var(--gv-primary);
}

.card .nav-tabs .nav-link.active {
    color: var(--gv-primary);
    font-weight: 600;
    border-bottom-color: var(--gv-primary);
    background: none;
}

/* Section dividers inside settings forms */
.settings-section-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: #9ca3af;
    border-bottom: 1px solid #eaecf0;
    padding-bottom: 8px;
    margin-bottom: 1rem;
}

/* ══════════════════════════════════════════════════════════════
   DASHBOARD KPI CARDS
══════════════════════════════════════════════════════════════ */

.icon-box {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 52px;
    height: 52px;
    border-radius: 10px;
}

/* ══════════════════════════════════════════════════════════════
   PAGINATION
══════════════════════════════════════════════════════════════ */

.pagination {
    font-size: 13px;
    margin-bottom: 0;
}

.page-link {
    color: var(--gv-primary);
    border-color: #dee2e6;
    border-radius: 6px;
    margin: 0 2px;
    padding: 0.35rem 0.65rem;
}

.page-link:hover {
    background: #f0f4ff;
    border-color: #c8d8ff;
    color: var(--gv-primary);
}

.page-item.active .page-link {
    background: var(--gv-primary);
    border-color: var(--gv-primary);
}

.page-item.disabled .page-link {
    color: #adb5bd;
}

/* ══════════════════════════════════════════════════════════════
   STATUS BADGES (custom)
══════════════════════════════════════════════════════════════ */

.badge-status-available  { background: #d1fae5; color: #065f46; }
.badge-status-sold       { background: #fee2e2; color: #991b1b; }
.badge-status-repair     { background: #fef3c7; color: #92400e; }
.badge-status-reserved   { background: #dbeafe; color: #1e40af; }
.badge-status-disposed   { background: #f3f4f6; color: #4b5563; }

/* ══════════════════════════════════════════════════════════════
   UTILITY
══════════════════════════════════════════════════════════════ */

.text-orange  { color: #f97316 !important; }
.bg-orange    { background: #f97316 !important; }
.text-purple  { color: #7c3aed !important; }
.bg-purple    { background: #7c3aed !important; }

.cursor-pointer { cursor: pointer; }
.user-select-none { user-select: none; }

/* Hover underline utility */
.hover-underline:hover { text-decoration: underline !important; }

/* Smooth fade for tab transitions */
.tab-pane.fade { transition: opacity .18s ease; }

/* ══════════════════════════════════════════════════════════════
   DESIGN SYSTEM — FILTERS, TABS, TABLES, MODALS, Z-INDEX
══════════════════════════════════════════════════════════════ */

/* Filter toolbars */
.gv-filter-bar,
.card-body > form.row.g-2,
.card-body > form.d-flex {
    --gv-filter-gap: 0.5rem;
}

.card-body > form.row.g-2 {
    align-items: flex-end;
}

.card-body > form.d-flex {
    flex-wrap: wrap;
    gap: var(--gv-filter-gap);
    align-items: center;
}

.card-body > form.d-flex .form-select,
.card-body > form.d-flex .form-control {
    width: auto;
    min-width: 0;
    max-width: 100%;
    flex: 0 1 auto;
}

.card-body > form.d-flex .topnav-search-wrap {
    flex: 1 1 200px;
    min-width: 0;
    max-width: 320px;
    width: auto !important;
}

/* Scrollable tab strips (settings, leads, expenses) */
.nav-tabs-scroll,
.card-header .nav-tabs,
.gv-content > .nav-tabs {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    gap: 2px;
    scrollbar-width: thin;
}

.nav-tabs-scroll .nav-item,
.card-header .nav-tabs .nav-item,
.gv-content > .nav-tabs .nav-item {
    flex: 0 0 auto;
}

.gv-content > .nav-tabs .nav-link {
    white-space: nowrap;
}

/* Leads-style tabs: keep utility links from crushing status tabs */
.gv-tabs-with-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 1rem;
}
.gv-tabs-with-actions .nav-tabs {
    flex: 1 1 auto;
    margin-bottom: 0;
    min-width: 0;
}
.gv-tabs-with-actions .gv-tab-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-left: auto;
}

/* Tables — intentional horizontal scroll */
.table-responsive {
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
}

.table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
}

/* Wide data grids: keep thead readable, allow cell wrap on narrow */
@media (max-width: 991.98px) {
    .table th {
        white-space: normal;
        line-height: 1.25;
    }
}

/* Truncation helpers */
.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.gv-content .text-xxs,
.gv-content .kpi-label,
.gv-content .kpi-sub,
.gv-content .kpi-change,
.gv-content .kpi-link,
.gv-content .ss-label,
.gv-content .is-label,
.gv-content .act-time,
.gv-content .pi-label,
.gv-content .qa-btn {
    font-size: var(--gv-text-xs) !important;
}

/* Modals — scroll tall bodies; fit small screens */
.modal { z-index: var(--gv-z-modal); }
.modal-backdrop { z-index: var(--gv-z-modal-backdrop); }
.modal-content {
    border-radius: var(--gv-card-radius);
    border: 1px solid #eaecf0;
    box-shadow: var(--gv-shadow);
}
.modal-header,
.modal-footer {
    padding: 0.875rem 1rem;
}
.modal-body {
    padding: 1rem;
}
.modal-dialog-scrollable .modal-body {
    max-height: min(70vh, 640px);
}
.dropdown-menu { z-index: var(--gv-z-dropdown); }
.tooltip { z-index: var(--gv-z-tooltip); }
.popover { z-index: var(--gv-z-popover); }

/* Dropdowns inside table-responsive: prefer Popper boundary in HTML;
   keep overflow-x so H-scroll still works */
.table-responsive .dropdown-menu {
    z-index: var(--gv-z-dropdown);
}

/* Search result / autocomplete panels */
.list-group.position-absolute {
    z-index: var(--gv-z-dropdown);
}

/* Equal-height KPI rows in Bootstrap grids */
.row.g-3 > [class*="col"] > .card.h-100,
.row.g-3 > [class*="col"] > .kpi-card {
    height: 100%;
}

/* Badge readability floor */
.gv-content .badge {
    font-size: max(11px, 0.7rem);
    line-height: 1.25;
    vertical-align: middle;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

/* Page header / card header action clusters */
.gv-page-header .d-flex.gap-2,
.card-header.d-flex {
    align-items: center;
}

/* Page-header action clusters stay on one baseline */
.gv-page-header .btn:not(.btn-icon),
.card-header .btn:not(.btn-icon) {
    flex: 0 0 auto;
}

/* Filter bars: stretch inputs/selects — NOT icon-only clear buttons */
.card-body > form.row.g-2.align-items-end > [class*="col"] > .form-control,
.card-body > form.row.g-2.align-items-end > [class*="col"] > .form-select,
.card-body > form.d-flex > .form-control,
.card-body > form.d-flex > .form-select {
    width: 100%;
    max-width: 100%;
}
.card-body > form.row.g-2.align-items-end > [class*="col"] > .btn:not(.btn-icon),
.card-body > form.row.g-2.align-items-end > [class*="col"] .btn:not(.btn-icon):not(.btn-close) {
    width: 100%;
}
.card-body > form.row.g-2.align-items-end > [class*="col"].d-flex {
    align-items: center;
    gap: 0.35rem;
}
.card-body > form.row.g-2.align-items-end > [class*="col"].d-flex > .btn:not(.btn-icon) {
    width: auto;
    flex: 1 1 auto;
}
/* Clear / icon filters — always compact squares, never full-width */
.card-body > form .btn.btn-icon,
.card-body > form.row.g-2 .btn.btn-icon,
.card-body > form.d-flex .btn.btn-icon,
.card-body form .btn.btn-sm.btn-icon {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    padding: 0 !important;
    flex: 0 0 34px !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* Neutralize leftover horizontal padding utilities that break column alignment */
.gv-content .table td.px-4,
.gv-content .table th.px-4,
.gv-content .table td.px-3,
.gv-content .table th.px-3,
.gv-content .table td.pe-3,
.gv-content .table th.pe-3,
.gv-content .table td.ps-3,
.gv-content .table th.ps-3 {
    padding-left: var(--gv-table-pad-x, 0.85rem) !important;
    padding-right: var(--gv-table-pad-x, 0.85rem) !important;
}

/* Prevent content from touching card edges when nested */
.card > .alert { margin: 0.75rem; }
.card > .alert:first-child { margin-top: 0.75rem; }

/* Chart containers */
.chart-wrap,
canvas {
    max-width: 100%;
}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE — MOBILE FIRST
══════════════════════════════════════════════════════════════ */

/* ── Sidebar nav links: taller tap targets on touch screens ── */
@media (max-width: 991.98px) {
    .sidebar-link {
        padding: 10px 14px;
        margin: 2px 8px;
        font-size: 14px;
    }
    .sidebar-link i { font-size: 17px; }
    .sidebar-close {
        width: 36px; height: 36px;
        display: flex; align-items: center; justify-content: center;
        border-radius: 6px;
    }
}

/* Body scroll lock when mobile sidebar open */
body.sidebar-is-open { overflow: hidden; }

/* ── Topnav ── */
@media (max-width: 767.98px) {
    .topnav { padding: 0 0.75rem; gap: 0.35rem; }
    .topnav-search-wrap { display: none; }
    /* Mobile search bar (expands on icon tap) */
    .topnav-search-expand {
        position: absolute;
        top: 0; left: 0; right: 0;
        height: var(--gv-topnav-h);
        background: #fff;
        display: flex;
        align-items: center;
        padding: 0 0.75rem;
        gap: 8px;
        z-index: 1031;
        transform: translateY(-100%);
        transition: transform 0.2s ease;
        border-bottom: 1px solid #e9ecef;
    }
    .topnav-search-expand.open { transform: translateY(0); }
    .topnav-search-expand input {
        flex: 1; height: 36px;
        min-height: 36px;
        border-radius: 20px;
        border: 1px solid #e9ecef;
        background: #f3f5f9;
        padding: 0 14px 0 36px;
        font-size: 16px; /* iOS: avoid auto-zoom */
    }
    .topnav-search-expand input:focus {
        outline: none;
        border-color: #0d6efd;
        background: #fff;
        box-shadow: 0 0 0 0.18rem rgba(13,110,253,.12);
    }
    .topnav-search-expand .si-close {
        width: 34px; height: 34px;
        display: flex; align-items: center; justify-content: center;
        border: none; background: none; color: #6c757d; cursor: pointer;
        font-size: 16px; flex-shrink: 0;
    }
    .icon-box { width: 44px; height: 44px; }

    /* Topnav: square only true icon buttons (not user menu / labeled) */
    .topnav .btn-sm.btn-icon {
        width: 36px !important;
        height: 36px !important;
        min-width: 36px !important;
        min-height: 36px !important;
        padding: 0 !important;
    }
    .topnav .gv-notif-btn.btn-icon {
        overflow: visible !important;
    }

    /* Filter selects: full width when wrapping */
    .card-body > form.d-flex .form-select,
    .card-body > form.d-flex .form-control {
        flex: 1 1 140px;
        width: 100%;
        max-width: 100%;
    }
    .card-body > form.d-flex .topnav-search-wrap {
        flex: 1 1 100%;
        max-width: 100%;
    }

    .quick-actions-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ── Page header & content ── */
@media (max-width: 575.98px) {
    .gv-content .container-fluid,
    .container-fluid {
        padding-left: 0.75rem !important;
        padding-right: 0.75rem !important;
    }

    .gv-page-title { font-size: 15px; }

    /* Page header: stack title + actions vertically */
    .gv-page-header > .d-flex {
        flex-direction: column !important;
        align-items: flex-start !important;
    }
    .gv-page-header .flex-shrink-0 { width: 100%; }
    .gv-page-header .flex-shrink-0 .d-flex,
    .gv-page-header .flex-shrink-0 {
        flex-wrap: wrap;
        align-items: center;
        gap: 0.5rem;
    }
    .gv-page-header .btn:not(.btn-icon) {
        flex: 0 0 auto;
    }

    /* Tables */
    .table th, .table td { font-size: 12px; padding: 0.5rem 0.6rem; }

    /* Cards — do NOT use !important (preserves .p-0 table hosts) */
    .card-body:not(.p-0) { padding: 0.875rem; }
    .card-header { padding: 0.65rem 0.875rem; }

    /* Pagination */
    .page-link { padding: 0.3rem 0.55rem; font-size: 12px; }

    /* Alerts */
    .alert { font-size: 13px; padding: 0.65rem 0.875rem; }

    /* Modals */
    .modal-dialog {
        margin: 0.5rem;
        max-width: calc(100% - 1rem);
    }
    .modal-content { border-radius: 10px; }

    .gv-tabs-with-actions .gv-tab-actions {
        width: 100%;
        margin-left: 0;
    }
    .gv-tabs-with-actions .gv-tab-actions .btn:not(.btn-icon) {
        flex: 0 0 auto;
    }

    .qa-btn { font-size: 11px !important; padding: 10px 4px; }
}

/* ── Topnav position context for slide-down search ── */
.topnav { position: sticky; overflow: visible; }

/* ── Forms on mobile — 16px prevents iOS zoom ── */
@media (max-width: 575.98px) {
    .form-control, .form-select,
    .form-control-sm, .form-select-sm {
        font-size: 16px;
    }
}

/* ── Buttons: minimum tap target ── */
@media (max-width: 767.98px) {
    .btn { min-height: 36px; }
    .btn-sm { min-height: 34px; }
}

/* ── Contain wide children without clipping dropdowns ── */
.gv-main {
    max-width: 100%;
}
.gv-content .container-fluid {
    max-width: 100%;
}

/* Print: keep compact type */
@media print {
    .gv-content .badge,
    .gv-content .kpi-label,
    .gv-content .qa-btn {
        font-size: inherit !important;
    }
}

/* ══════════════════════════════════════════════════════════════
   DARK MODE  (Bootstrap data-bs-theme="dark")
══════════════════════════════════════════════════════════════ */

[data-bs-theme="dark"] {
    --gv-primary:            #6ea8fe;
    --gv-primary-light:      rgba(110, 168, 254, 0.16);
    --gv-sidebar-bg:         #161b22;
    --gv-sidebar-border:     #30363d;
    --gv-body-bg:            #0d1117;
    --gv-topnav-bg:          #161b22;
    --gv-card-bg:            #161b22;
    --gv-text-color:         #e6edf3;
    --gv-text-muted:         #8b949e;
    --gv-link-hover-bg:      rgba(110, 168, 254, 0.12);
    --gv-control-bg:         #21262d;
    --gv-control-border:     #30363d;
    --gv-theme-color:        #1f6feb;
    --gv-shadow-sm:          0 1px 4px rgba(0,0,0,.35);
    --gv-shadow:             0 2px 14px rgba(0,0,0,.45);

    /* Tables */
    --gv-table-bg:           transparent;
    --gv-table-header-bg:    #21262d;
    --gv-table-header-color: #8b949e;
    --gv-table-border:       #30363d;
    --gv-table-hover-bg:     rgba(110,168,254,.10);
    --gv-table-striped-bg:   rgba(255,255,255,.03);
    --gv-table-accent-bg:    #21262d;

    /* Scrollbars */
    --gv-scroll-thumb:       rgba(230, 237, 243, 0.22);
    --gv-scroll-thumb-hover: rgba(230, 237, 243, 0.45);
    --gv-scroll-track:       transparent;

    color-scheme: dark;
}

[data-bs-theme="dark"] .card {
    background-color: var(--gv-card-bg);
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .card.shadow-sm,
[data-bs-theme="dark"] .card.border-0.shadow-sm {
    box-shadow: var(--gv-shadow-sm) !important;
}

[data-bs-theme="dark"] .card-header,
[data-bs-theme="dark"] .card-footer {
    background-color: transparent;
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .bg-light,
[data-bs-theme="dark"] .bg-white {
    background-color: #21262d !important;
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .bg-body-tertiary,
[data-bs-theme="dark"] .bg-body-secondary {
    background-color: #21262d !important;
}

[data-bs-theme="dark"] .text-muted,
[data-bs-theme="dark"] .text-secondary {
    color: var(--gv-text-muted) !important;
}

[data-bs-theme="dark"] .text-dark {
    color: var(--gv-text-color) !important;
}

[data-bs-theme="dark"] .border,
[data-bs-theme="dark"] .border-top,
[data-bs-theme="dark"] .border-bottom,
[data-bs-theme="dark"] .border-start,
[data-bs-theme="dark"] .border-end {
    border-color: var(--gv-sidebar-border) !important;
}

[data-bs-theme="dark"] .table {
    --bs-table-bg: var(--gv-table-bg);
    --bs-table-color: var(--gv-text-color);
    --bs-table-border-color: var(--gv-table-border);
    --bs-table-striped-bg: var(--gv-table-striped-bg);
    --bs-table-hover-bg: var(--gv-table-hover-bg);
    --bs-table-hover-color: var(--gv-text-color);
    --bs-table-bg-type: transparent;
    color: var(--gv-text-color);
    border-color: var(--gv-table-border);
}

[data-bs-theme="dark"] .table > :not(caption) > * > * {
    border-bottom-color: var(--gv-table-border);
}

[data-bs-theme="dark"] .gv-content .table thead th,
[data-bs-theme="dark"] .table th,
[data-bs-theme="dark"] .table thead.table-light th,
[data-bs-theme="dark"] .table thead.table-light td,
[data-bs-theme="dark"] .table tfoot.table-light th,
[data-bs-theme="dark"] .table tfoot.table-light td,
[data-bs-theme="dark"] .table .table-light,
[data-bs-theme="dark"] .table .table-light > th,
[data-bs-theme="dark"] .table .table-light > td {
    background-color: var(--gv-table-header-bg) !important;
    color: var(--gv-table-header-color) !important;
    border-color: var(--gv-table-border) !important;
}

[data-bs-theme="dark"] .table td {
    background-color: transparent;
    color: var(--gv-text-color);
    border-color: var(--gv-table-border);
}

[data-bs-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > * {
    --bs-table-bg-type: var(--gv-table-striped-bg);
    background-color: var(--gv-table-striped-bg);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .table-hover > tbody > tr:hover > *,
[data-bs-theme="dark"] .table-hover tbody tr:hover > td,
[data-bs-theme="dark"] .table-hover tbody tr:hover > th {
    --bs-table-bg-state: var(--gv-table-hover-bg);
    background-color: var(--gv-table-hover-bg) !important;
    color: var(--gv-text-color) !important;
}

[data-bs-theme="dark"] .table-dark {
    --bs-table-bg: #21262d;
    --bs-table-color: #e6edf3;
    --bs-table-border-color: #30363d;
    --bs-table-striped-bg: rgba(255,255,255,.04);
    --bs-table-hover-bg: rgba(110,168,254,.12);
}

[data-bs-theme="dark"] .table-dark th,
[data-bs-theme="dark"] .table-dark td {
    background-color: #21262d;
    color: #e6edf3;
    border-color: #30363d;
}

/* Table cell helpers that often stay “light” in dark mode */
[data-bs-theme="dark"] .table a:not(.btn):not(.badge) {
    color: var(--gv-primary);
}

[data-bs-theme="dark"] .table .text-muted,
[data-bs-theme="dark"] .table .small.text-muted {
    color: var(--gv-text-muted) !important;
}

[data-bs-theme="dark"] .table code,
[data-bs-theme="dark"] .table .font-monospace {
    color: #e6edf3;
    background-color: rgba(255,255,255,.06);
    padding: 0.1em 0.35em;
    border-radius: 4px;
}

[data-bs-theme="dark"] .table .btn-outline-primary,
[data-bs-theme="dark"] .table .btn-outline-secondary,
[data-bs-theme="dark"] .table .btn-outline-danger,
[data-bs-theme="dark"] .table .btn-outline-success {
    border-color: var(--gv-control-border);
}

[data-bs-theme="dark"] .table .btn-outline-secondary {
    color: var(--gv-text-muted);
}

[data-bs-theme="dark"] .table .btn-outline-secondary:hover {
    background-color: var(--gv-control-bg);
    color: var(--gv-text-color);
    border-color: var(--gv-control-border);
}

[data-bs-theme="dark"] .table-responsive {
    border-color: var(--gv-table-border);
}

[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select,
[data-bs-theme="dark"] .input-group-text {
    background-color: var(--gv-control-bg);
    border-color: var(--gv-control-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .form-control:focus,
[data-bs-theme="dark"] .form-select:focus {
    background-color: #161b22;
    border-color: var(--gv-primary);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .form-control::placeholder {
    color: #6e7681;
}

[data-bs-theme="dark"] .btn-light {
    background-color: #21262d;
    border-color: #30363d;
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .btn-light:hover,
[data-bs-theme="dark"] .btn-light:focus,
[data-bs-theme="dark"] .btn-light:active {
    background-color: #30363d;
    border-color: #484f58;
    color: #fff;
}

[data-bs-theme="dark"] .btn-outline-secondary {
    color: #c9d1d9;
    border-color: #484f58;
}

[data-bs-theme="dark"] .btn-outline-secondary:hover {
    background-color: #30363d;
    border-color: #484f58;
    color: #fff;
}

[data-bs-theme="dark"] .dropdown-menu {
    background-color: #161b22;
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .dropdown-item {
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    background-color: #21262d;
    color: #fff;
}

[data-bs-theme="dark"] .dropdown-divider {
    border-color: var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .dropdown-header {
    color: var(--gv-text-muted);
}

[data-bs-theme="dark"] .modal-content {
    background-color: #161b22;
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .modal-header,
[data-bs-theme="dark"] .modal-footer {
    border-color: var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .list-group-item {
    background-color: var(--gv-card-bg);
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .nav-tabs {
    border-color: var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .nav-tabs .nav-link {
    color: var(--gv-text-muted);
}

[data-bs-theme="dark"] .nav-tabs .nav-link.active {
    background-color: var(--gv-card-bg);
    border-color: var(--gv-sidebar-border) var(--gv-sidebar-border) var(--gv-card-bg);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .breadcrumb-item a {
    color: var(--gv-primary);
}

[data-bs-theme="dark"] .sidebar-logo-plate {
    background: #21262d;
    border-color: #30363d;
    box-shadow: none;
}

[data-bs-theme="dark"] .sidebar-avatar img {
    border-color: #30363d;
}

[data-bs-theme="dark"] .sidebar-close {
    color: var(--gv-text-muted);
}

[data-bs-theme="dark"] .sidebar-nav:hover {
    scrollbar-color: var(--gv-scroll-thumb) transparent;
}

[data-bs-theme="dark"] .sidebar-link i {
    color: #8b949e;
}

[data-bs-theme="dark"] .gv-page-title {
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .topnav .gv-notif-badge {
    border-color: var(--gv-topnav-bg);
}

[data-bs-theme="dark"] .topnav .gv-notif-item {
    border-top-color: var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .topnav .gv-notif-item:hover {
    background: #21262d;
}

[data-bs-theme="dark"] .topnav-search-expand {
    background: var(--gv-topnav-bg);
    border-bottom-color: var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .topnav-search-expand input {
    background: var(--gv-control-bg);
    border-color: var(--gv-control-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .pagination .page-link {
    background-color: var(--gv-card-bg);
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .pagination .page-item.active .page-link {
    background-color: var(--gv-primary);
    border-color: var(--gv-primary);
    color: #0d1117;
}

[data-bs-theme="dark"] .pagination .page-item.disabled .page-link {
    background-color: #21262d;
    border-color: var(--gv-sidebar-border);
    color: #6e7681;
}

[data-bs-theme="dark"] .alert-success {
    --bs-alert-bg: #12261e;
    --bs-alert-border-color: #1a7f37;
    --bs-alert-color: #3fb950;
}

[data-bs-theme="dark"] .alert-danger {
    --bs-alert-bg: #2d1215;
    --bs-alert-border-color: #da3633;
    --bs-alert-color: #ff7b72;
}

[data-bs-theme="dark"] .alert-warning {
    --bs-alert-bg: #2d2206;
    --bs-alert-border-color: #9e6a03;
    --bs-alert-color: #d29922;
}

[data-bs-theme="dark"] .alert-info {
    --bs-alert-bg: #0c2d6b;
    --bs-alert-border-color: #1f6feb;
    --bs-alert-color: #79c0ff;
}

[data-bs-theme="dark"] .badge.bg-light {
    background-color: #30363d !important;
    color: #e6edf3 !important;
}

[data-bs-theme="dark"] .badge.bg-light.text-dark,
[data-bs-theme="dark"] .badge.bg-light.text-secondary {
    color: #e6edf3 !important;
}

[data-bs-theme="dark"] .progress {
    background-color: #21262d;
}

[data-bs-theme="dark"] .accordion-item {
    background-color: var(--gv-card-bg);
    border-color: var(--gv-sidebar-border);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .accordion-button {
    background-color: var(--gv-card-bg);
    color: var(--gv-text-color);
}

[data-bs-theme="dark"] .accordion-button:not(.collapsed) {
    background-color: #21262d;
    color: var(--gv-text-color);
    box-shadow: inset 0 -1px 0 var(--gv-sidebar-border);
}

[data-bs-theme="dark"] .accordion-button::after {
    filter: invert(1) grayscale(100%);
}

[data-bs-theme="dark"] .gv-auth-form {
    background: var(--gv-body-bg);
}

[data-bs-theme="dark"] .gv-auth-card,
[data-bs-theme="dark"] .gv-auth-form .card {
    background: var(--gv-card-bg);
    color: var(--gv-text-color);
}

/* Soft utility badges used across modules */
[data-bs-theme="dark"] .bg-primary-subtle { background-color: rgba(110,168,254,.15) !important; }
[data-bs-theme="dark"] .bg-success-subtle { background-color: rgba(63,185,80,.15) !important; }
[data-bs-theme="dark"] .bg-danger-subtle  { background-color: rgba(248,81,73,.15) !important; }
[data-bs-theme="dark"] .bg-warning-subtle { background-color: rgba(210,153,34,.15) !important; }
[data-bs-theme="dark"] .bg-info-subtle    { background-color: rgba(121,192,255,.15) !important; }
[data-bs-theme="dark"] .text-primary      { color: #6ea8fe !important; }
[data-bs-theme="dark"] .text-success      { color: #3fb950 !important; }

@media print {
    [data-bs-theme="dark"] {
        --gv-body-bg: #fff;
        --gv-card-bg: #fff;
        --gv-text-color: #212529;
        --gv-sidebar-border: #dee2e6;
        --gv-table-bg: transparent;
        --gv-table-header-bg: #f8f9fa;
        --gv-table-header-color: #6c757d;
        --gv-table-border: #dee2e6;
        --gv-table-hover-bg: transparent;
        --gv-table-striped-bg: rgba(0,0,0,.02);
        --gv-table-accent-bg: #f8f9fa;
    }
}
