/* /Components/Layout/AppShell.razor.rz.scp.css */
/* =====================================================================
   GAINS — DashboardLayout.razor.css
   Scoped styles for the main app shell (sidebar + topbar + content)
   ===================================================================== */

/* ── CSS Variables ── */
.gains-shell[b-53favc5946] {
    --sb-width: 220px;
    --sb-collapsed-width: 56px;
    --topbar-h: 52px;
    --sb-bg: #0f2340;
    --sb-text: #b8cbe4;
    --sb-hover: #172d4a;
    --sb-active: #1a3a5c;
    --sb-active-text: #ffffff;
    --sb-section: #6b8aaa;
    --sb-border: rgba(255,255,255,0.07);
    --primary: #1a56a7;
    --primary-dark: #0f3d82;
    --primary-light: #e6f0fb;
    --bg: #f0f4f9;
    --card: #ffffff;
    --border: #dde3ed;
    --text: #1a2537;
    --muted: #64748b;
    --success: #16a34a;
    --success-bg: #dcfce7;
    --warning: #b45309;
    --warning-bg: #fef3c7;
    --danger: #b91c1c;
    --danger-bg: #fee2e2;
    --info: #0369a1;
    --info-bg: #e0f2fe;
    --radius: 8px;
    --shadow: 0 1px 3px rgba(0,0,0,0.08);
    --shadow-md: 0 4px 12px rgba(0,0,0,0.12);
}

/* ── Shell ── */
.gains-shell[b-53favc5946] {
    display: flex;
    height: 100vh;
    overflow: hidden;
    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
    font-size: 14px;
    color: var(--text);
    background: var(--bg);
}

/* ═══════════════════════════════
   SIDEBAR
═══════════════════════════════ */
.gains-sidebar[b-53favc5946] {
    width: var(--sb-width);
    min-width: var(--sb-width);
    background: var(--sb-bg);
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
    transition: width 0.25s ease, min-width 0.25s ease;
    z-index: 100;
    flex-shrink: 0;
}

/* Collapsed state */
.gains-shell.sb-collapsed .gains-sidebar[b-53favc5946] {
    width: var(--sb-collapsed-width);
    min-width: var(--sb-collapsed-width);
}
.gains-shell.sb-collapsed .sb-label[b-53favc5946],
.gains-shell.sb-collapsed .sb-section-label[b-53favc5946],
.gains-shell.sb-collapsed .sb-chevron[b-53favc5946],
.gains-shell.sb-collapsed .sb-profile-info[b-53favc5946],
.gains-shell.sb-collapsed .sb-profile-caret[b-53favc5946],
.gains-shell.sb-collapsed .sb-logo-text[b-53favc5946],
.gains-shell.sb-collapsed .sb-profile-dropdown[b-53favc5946] { display: none; }
.gains-shell.sb-collapsed .sb-nav-item[b-53favc5946] { justify-content: center; padding: 10px 0; }
.gains-shell.sb-collapsed .sb-nav-children[b-53favc5946] { display: none !important; }

/* Logo */
.sb-logo[b-53favc5946] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 16px 14px;
    border-bottom: 1px solid var(--sb-border);
    text-decoration: none;
    flex-shrink: 0;
}
.sb-logo-icon[b-53favc5946] {
    width: 32px; height: 32px;
    background: var(--primary);
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.sb-logo-text[b-53favc5946] { font-size: 15px; font-weight: 700; color: #fff; letter-spacing: 0.5px; }

/* Profile */
.sb-profile[b-53favc5946] {
    padding: 12px 14px;
    border-bottom: 1px solid var(--sb-border);
    position: relative;
    flex-shrink: 0;
}
.sb-profile-trigger[b-53favc5946] {
    display: flex; align-items: center; gap: 10px;
    cursor: pointer; user-select: none;
}
.sb-avatar[b-53favc5946], .tb-avatar[b-53favc5946] {
    width: 32px; height: 32px; border-radius: 50%;
    background: var(--primary);
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; color: #fff; flex-shrink: 0;
    letter-spacing: 0.5px;
}
.sb-profile-info[b-53favc5946] { flex: 1; min-width: 0; }
.sb-profile-name[b-53favc5946] { font-size: 13px; font-weight: 600; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-profile-role[b-53favc5946] { font-size: 11px; color: var(--sb-section); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-profile-caret[b-53favc5946] { color: var(--sb-section); font-size: 12px; transition: transform 0.2s; }
.sb-profile-caret.open[b-53favc5946] { transform: rotate(180deg); }

/* Profile dropdown */
.sb-profile-dropdown[b-53favc5946] {
    position: absolute;
    left: 10px; right: 10px;
    top: calc(100% - 2px);
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    z-index: 200;
    overflow: hidden;
    border: 1px solid var(--border);
}
.sb-pd-header[b-53favc5946] {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border);
    background: #f8fafc;
}
.sb-pd-name[b-53favc5946] { font-size: 13px; font-weight: 600; color: var(--text); }
.sb-pd-meta[b-53favc5946] { font-size: 11px; color: var(--muted); margin-top: 2px; }
.sb-pd-item[b-53favc5946] {
    display: flex; align-items: center; gap: 9px;
    padding: 9px 12px; cursor: pointer;
    font-size: 13px; color: var(--text);
    text-decoration: none;
    background: none; border: none; width: 100%;
    font-family: inherit; text-align: left;
    transition: background 0.12s;
}
.sb-pd-item:hover[b-53favc5946] { background: #f1f5f9; }
.sb-pd-item i[b-53favc5946] { width: 16px; text-align: center; color: var(--muted); font-size: 15px; }
.sb-pd-divider[b-53favc5946] { height: 1px; background: var(--border); margin: 2px 0; }
.sb-pd-logout[b-53favc5946] { color: var(--danger) !important; }
.sb-pd-logout i[b-53favc5946] { color: var(--danger) !important; }
.sb-pd-logout:hover[b-53favc5946] { background: #fff5f5 !important; }

/* Nav */
.sb-nav[b-53favc5946] { flex: 1; overflow-y: auto; padding: 8px 0; }
.sb-nav[b-53favc5946]::-webkit-scrollbar { width: 3px; }
.sb-nav[b-53favc5946]::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }

.sb-section-label[b-53favc5946] {
    font-size: 10px; font-weight: 600; letter-spacing: 0.8px;
    color: var(--sb-section);
    padding: 10px 14px 4px;
    text-transform: uppercase;
}

/* Nav group trigger (parent item) */
.sb-nav-item[b-53favc5946] {
    display: flex; align-items: center; gap: 9px;
    padding: 9px 14px; cursor: pointer;
    color: var(--sb-text);
    font-size: 13px; transition: background 0.12s;
    user-select: none; justify-content: space-between;
}
.sb-nav-item:hover[b-53favc5946] { background: var(--sb-hover); color: #fff; }
.sb-nav-item.active[b-53favc5946] { background: var(--sb-active); color: var(--sb-active-text); }
.sb-nav-item.active .sb-nav-icon[b-53favc5946] { color: #4e9cf5; }

.sb-nav-item-left[b-53favc5946] { display: flex; align-items: center; gap: 9px; }
.sb-nav-icon[b-53favc5946] { font-size: 16px; width: 18px; text-align: center; flex-shrink: 0; }
.sb-label[b-53favc5946] { white-space: nowrap; }
.sb-chevron[b-53favc5946] { font-size: 12px; color: var(--sb-section); transition: transform 0.2s; }
.sb-chevron.open[b-53favc5946] { transform: rotate(180deg); }

/* Nav children */
.sb-nav-children[b-53favc5946] { }
.sb-nav-child[b-53favc5946] {
    display: flex; align-items: center; gap: 8px;
    padding: 7px 14px 7px 42px;
    font-size: 12.5px; color: #8aa5c4; cursor: pointer;
    transition: background 0.12s; border-left: 2px solid transparent;
    text-decoration: none;
}
.sb-nav-child:hover[b-53favc5946] { background: var(--sb-hover); color: #d0dfee; border-left-color: rgba(255,255,255,0.15); }
.sb-nav-child.active[b-53favc5946] { color: #fff; background: rgba(26,86,167,0.25); border-left-color: #4e9cf5; }
.sb-nav-child[b-53favc5946]::before {
    content: "";
    width: 4px; height: 4px; border-radius: 50%;
    background: currentColor; flex-shrink: 0; opacity: 0.5;
}
.sb-nav-child.active[b-53favc5946]::before { opacity: 1; background: #4e9cf5; }

/* Leaf nav item (no children) */
.sb-nav-leaf[b-53favc5946] { justify-content: flex-start; }

/* Footer collapse button */
.sb-footer[b-53favc5946] {
    padding: 10px 14px;
    border-top: 1px solid var(--sb-border);
    flex-shrink: 0;
}
.sb-collapse-btn[b-53favc5946] {
    display: flex; align-items: center; gap: 8px;
    width: 100%; background: none; border: none; cursor: pointer;
    color: var(--sb-section); font-size: 12px;
    padding: 6px 0; transition: color 0.15s; font-family: inherit;
}
.sb-collapse-btn:hover[b-53favc5946] { color: #fff; }

/* ═══════════════════════════════
   MAIN
═══════════════════════════════ */
.gains-main[b-53favc5946] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
}

/* Topbar */
.gains-topbar[b-53favc5946] {
    height: var(--topbar-h);
    background: var(--card);
    border-bottom: 1px solid var(--border);
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 20px;
    flex-shrink: 0;
    gap: 12px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.gains-topbar-left[b-53favc5946]  { display: flex; align-items: center; gap: 12px; }
.gains-topbar-right[b-53favc5946] { display: flex; align-items: center; gap: 8px; }

.tb-hamburger[b-53favc5946] {
    background: none; border: none; cursor: pointer;
    color: var(--muted); font-size: 18px; padding: 4px;
    display: flex; align-items: center;
    border-radius: 6px; transition: background 0.12s;
}
.tb-hamburger:hover[b-53favc5946] { background: #f1f5f9; color: var(--text); }

/* Breadcrumb */
.gains-breadcrumb[b-53favc5946] { display: flex; align-items: center; gap: 5px; font-size: 13px; }
.bc-parent[b-53favc5946] { color: var(--muted); }
.bc-sep[b-53favc5946] { font-size: 11px; color: #cbd5e1; }
.bc-current[b-53favc5946] { color: var(--text); font-weight: 600; }

/* FY selector */
.tb-fy-select[b-53favc5946] {
    padding: 5px 10px; border-radius: var(--radius);
    border: 1px solid var(--border); background: #f8fafc;
    font-size: 12.5px; color: var(--text); cursor: pointer;
    font-family: inherit;
}
.tb-fy-select:hover[b-53favc5946] { background: #f1f5f9; }

/* Icon button */
.tb-icon-btn[b-53favc5946] {
    width: 34px; height: 34px; border-radius: 50%;
    border: 1px solid var(--border); background: #f8fafc;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    color: var(--muted); font-size: 16px;
    position: relative; transition: background 0.12s;
}
.tb-icon-btn:hover[b-53favc5946] { background: var(--primary-light); color: var(--primary); }
.tb-notif-dot[b-53favc5946] {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--danger); border: 2px solid #fff;
    position: absolute; top: 2px; right: 2px;
}

/* Notifications panel */
.tb-notif-wrap[b-53favc5946] { position: relative; }
.tb-notif-panel[b-53favc5946] {
    position: absolute; right: 0; top: calc(100% + 8px);
    width: 300px; background: var(--card);
    border-radius: var(--radius); border: 1px solid var(--border);
    box-shadow: var(--shadow-md); z-index: 300; overflow: hidden;
}
.tb-notif-hdr[b-53favc5946] {
    padding: 11px 14px; border-bottom: 1px solid var(--border);
    font-size: 13px; font-weight: 600; color: var(--text);
    display: flex; justify-content: space-between; align-items: center;
}
.tb-notif-mark[b-53favc5946] { font-size: 11px; color: var(--primary); cursor: pointer; font-weight: 400; background: none; border: none; font-family: inherit; }
.tb-notif-item[b-53favc5946] { display: flex; gap: 10px; padding: 10px 14px; border-bottom: 1px solid #f8fafc; }
.tb-notif-item:last-child[b-53favc5946] { border-bottom: none; }
.tb-ndot[b-53favc5946] { width: 7px; height: 7px; border-radius: 50%; background: var(--primary); margin-top: 4px; flex-shrink: 0; }
.tb-ndot.read[b-53favc5946] { background: var(--border); }
.tb-ntext[b-53favc5946] { font-size: 12.5px; color: var(--text); line-height: 1.4; }
.tb-ntime[b-53favc5946] { font-size: 11px; color: var(--muted); margin-top: 2px; }

/* Topbar buttons */
.tb-btn[b-53favc5946] {
    display: flex; align-items: center; gap: 6px;
    padding: 6px 13px; border-radius: var(--radius);
    border: 1px solid var(--border); background: var(--card);
    cursor: pointer; font-size: 12.5px; color: var(--text);
    font-family: inherit; transition: background 0.12s;
}
.tb-btn:hover[b-53favc5946] { background: #f1f5f9; }
.tb-btn.primary[b-53favc5946] { background: var(--primary); color: #fff; border-color: var(--primary); }
.tb-btn.primary:hover[b-53favc5946] { background: var(--primary-dark); }

/* User pill */
.tb-user-pill[b-53favc5946] { display: flex; align-items: center; gap: 8px; }
.tb-avatar[b-53favc5946] { width: 32px; height: 32px; font-size: 11px; }
.tb-user-name[b-53favc5946] { font-size: 13px; font-weight: 500; color: var(--text); }

/* ═══════════════════════════════
   CONTENT
═══════════════════════════════ */
.gains-content[b-53favc5946] {
    flex: 1;
    overflow-y: auto;
    padding: 20px;
    background: var(--bg);
}
.gains-content[b-53favc5946]::-webkit-scrollbar { width: 4px; }
.gains-content[b-53favc5946]::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }

/* ═══════════════════════════════
   LOGOUT MODAL
═══════════════════════════════ */
.gains-modal-overlay[b-53favc5946] {
    position: fixed; inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 500;
    display: flex; align-items: center; justify-content: center;
}
.gains-modal[b-53favc5946] {
    background: var(--card);
    border-radius: 14px;
    padding: 30px 28px 24px;
    width: 340px;
    box-shadow: var(--shadow-md);
    text-align: center;
}
.gains-modal-icon[b-53favc5946] { font-size: 40px; color: var(--danger); margin-bottom: 12px; }
.gains-modal-title[b-53favc5946] { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.gains-modal-sub[b-53favc5946] { font-size: 13px; color: var(--muted); margin-bottom: 22px; }
.gains-modal-actions[b-53favc5946] { display: flex; gap: 10px; justify-content: center; }
.gains-modal-btn[b-53favc5946] {
    padding: 8px 24px; border-radius: var(--radius);
    font-size: 13px; font-family: inherit;
    cursor: pointer; font-weight: 600; transition: background 0.12s;
    border: 1px solid var(--border);
}
.gains-modal-btn.cancel[b-53favc5946] { background: var(--card); color: var(--text); }
.gains-modal-btn.cancel:hover[b-53favc5946] { background: #f1f5f9; }
.gains-modal-btn.confirm[b-53favc5946] { background: var(--danger); color: #fff; border-color: var(--danger); }
.gains-modal-btn.confirm:hover[b-53favc5946] { background: #991b1b; }
/* /Components/Layout/DashboardLayout.razor.rz.scp.css */
/* =====================================================================
   GAINS — DashboardLayout.razor.css  (v2)
   Pure SSR layout — all interactivity via app.js
   ===================================================================== */

/* ── Root tokens ── */
.gains-shell[b-5wcplwsv0q] {
    --sb-w: 220px;
    --sb-collapsed-w: 56px;
    --topbar-h: 52px;
    --footer-h: 44px;
    --sb-bg: #0f2340;
    --sb-text: #b8cbe4;
    --sb-hover: #172d4a;
    --sb-active: #1a3a5c;
    --sb-border: rgba(255,255,255,0.07);
    --primary: #1a56a7;
    --primary-dark: #0f3d82;
    --primary-light: #e6f0fb;
    --bg: #f0f4f9;
    --card: #ffffff;
    --border: #dde3ed;
    --text: #1a2537;
    --muted: #64748b;
    --danger: #b91c1c;
    --danger-light: #fff5f5;
    --radius: 8px;
    --radius-lg: 12px;
    --shadow: 0 1px 3px rgba(0,0,0,0.08);
    --shadow-md: 0 4px 16px rgba(0,0,0,0.14);
    --shadow-lg: 0 8px 32px rgba(0,0,0,0.18);
    --ease: cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    height: 100vh;
    overflow: hidden;
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 14px;
    color: var(--text);
    background: var(--bg);
}

/* ══════════════════════════════════════
   SIDEBAR
══════════════════════════════════════ */
.gains-sidebar[b-5wcplwsv0q] {
    width: var(--sb-w);
    min-width: var(--sb-w);
    background: var(--sb-bg);
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
    transition: width 0.28s var(--ease), min-width 0.28s var(--ease);
    flex-shrink: 0;
    z-index: 100;
}

/* ── Collapsed state (JS adds .sb-collapsed to #gains-shell) ── */
.gains-shell.sb-collapsed .gains-sidebar[b-5wcplwsv0q] {
    width: 0 !important;
    min-width: 0 !important;
    overflow: hidden;
    border: none;
}

.gains-shell.sb-collapsed .sb-label[b-5wcplwsv0q] {
    opacity: 0;
    width: 0;
    overflow: hidden;
    pointer-events: none;
}

.gains-shell.sb-collapsed .sb-nav-children[b-5wcplwsv0q] {
    display: none !important;
}

.gains-shell.sb-collapsed .sb-nav-item[b-5wcplwsv0q] {
    justify-content: center;
    padding: 10px 0;
}

.gains-shell.sb-collapsed .sb-section-label[b-5wcplwsv0q] {
    opacity: 0;
}

.gains-shell.sb-collapsed .sb-profile-trigger[b-5wcplwsv0q] {
    justify-content: center;
}

/* ── Logo ── */
.sb-logo[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    align-self: flex-start;
    gap: 8px;
    width: fit-content;
    margin: 14px 14px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 9px 16px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    text-decoration: none;
    text-align: left;
    flex-shrink: 0;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
}

    .sb-logo:hover[b-5wcplwsv0q] {
        background: #0e9e83;
    }

    .sb-logo i[b-5wcplwsv0q] {
        font-size: 15px;
        color: #fff;
    }

.sb-label[b-5wcplwsv0q] {
    transition: opacity 0.2s var(--ease), width 0.2s var(--ease);
}

.sb-logo-text[b-5wcplwsv0q] {
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

/* ══════════════════════════════════════
   PROFILE BLOCK
══════════════════════════════════════ */
.sb-profile[b-5wcplwsv0q] {
    padding: 12px 14px;
    border-bottom: 1px solid var(--sb-border);
    position: relative;
    flex-shrink: 0;
}

.sb-profile-trigger[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    user-select: none;
    padding: 5px 6px;
    border-radius: var(--radius);
    transition: background 0.15s;
}

    .sb-profile-trigger:hover[b-5wcplwsv0q] {
        background: rgba(255,255,255,0.06);
    }

.sb-avatar[b-5wcplwsv0q], .tb-avatar[b-5wcplwsv0q] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary) 0%, #2472d4 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
    box-shadow: 0 0 0 2px rgba(255,255,255,0.12);
}

.sb-profile-info[b-5wcplwsv0q] {
    flex: 1;
    min-width: 0;
}

.sb-profile-name[b-5wcplwsv0q] {
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sb-profile-role[b-5wcplwsv0q] {
    font-size: 11px;
    color: #6b8aaa;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sb-profile-caret[b-5wcplwsv0q] {
    font-size: 12px;
    color: #6b8aaa;
    transition: transform 0.25s var(--ease);
    flex-shrink: 0;
}

.sb-profile-home[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    color: #6b8aaa;
    flex-shrink: 0;
    text-decoration: none;
    padding: 4px;
    border-radius: 6px;
    transition: color 0.15s, background 0.15s;
}

    .sb-profile-home:hover[b-5wcplwsv0q] {
        color: #fff;
        background: rgba(255,255,255,0.08);
    }

.sb-profile-caret.open[b-5wcplwsv0q] {
    transform: rotate(180deg);
}

/* ── Profile Dropdown ── */
.sb-profile-dropdown[b-5wcplwsv0q] {
    position: absolute;
    left: 10px;
    right: 10px;
    top: calc(100% - 4px);
    background: var(--card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    z-index: 200;
    border: 1px solid var(--border);
    overflow: hidden;
    /* Slide-down animation */
    opacity: 0;
    transform: translateY(-8px) scaleY(0.95);
    transform-origin: top center;
    pointer-events: none;
    transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
}

    .sb-profile-dropdown.open[b-5wcplwsv0q] {
        opacity: 1;
        transform: translateY(0) scaleY(1);
        pointer-events: all;
    }

.sb-pd-header[b-5wcplwsv0q] {
    padding: 12px 14px;
    border-bottom: 1px solid var(--border);
    background: linear-gradient(135deg, #f8fafc 0%, #f0f4f9 100%);
}

.sb-pd-avatar-row[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 6px;
}

.sb-pd-avatar-lg[b-5wcplwsv0q] {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary) 0%, #2472d4 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
}

.sb-pd-name[b-5wcplwsv0q] {
    font-size: 13px;
    font-weight: 700;
    color: var(--text);
}

.sb-pd-meta[b-5wcplwsv0q] {
    font-size: 11px;
    color: var(--muted);
    margin-top: 2px;
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: nowrap;
    white-space: nowrap;
    overflow: hidden;
}

    .sb-pd-meta i[b-5wcplwsv0q] {
        font-size: 11px;
        flex-shrink: 0;
    }

.sb-pd-item[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    cursor: pointer;
    font-size: 13px;
    color: var(--text);
    text-decoration: none;
    background: none;
    border: none;
    width: 100%;
    font-family: inherit;
    text-align: left;
    transition: background 0.12s, padding-left 0.12s;
}

    .sb-pd-item:hover[b-5wcplwsv0q] {
        background: #f1f5f9;
        padding-left: 18px;
    }

    .sb-pd-item i[b-5wcplwsv0q] {
        width: 17px;
        text-align: center;
        color: var(--muted);
        font-size: 15px;
        flex-shrink: 0;
    }

.sb-pd-divider[b-5wcplwsv0q] {
    height: 1px;
    background: var(--border);
    margin: 4px 0;
}

.sb-pd-logout[b-5wcplwsv0q] {
    color: var(--danger) !important;
    gap: 14px;
}

    .sb-pd-logout i[b-5wcplwsv0q] {
        color: var(--danger) !important;
    }

    .sb-pd-logout:hover[b-5wcplwsv0q] {
        background: var(--danger-light) !important;
        padding-left: 18px;
    }

/* ══════════════════════════════════════
   NAVIGATION
══════════════════════════════════════ */
.sb-nav[b-5wcplwsv0q] {
    flex: 1;
    overflow-y: auto;
    padding: 8px 0;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.1) transparent;
}

    .sb-nav[b-5wcplwsv0q]::-webkit-scrollbar {
        width: 3px;
    }

    .sb-nav[b-5wcplwsv0q]::-webkit-scrollbar-thumb {
        background: rgba(255,255,255,0.1);
        border-radius: 3px;
    }

.sb-section-label[b-5wcplwsv0q] {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.8px;
    color: #6b8aaa;
    padding: 10px 14px 4px;
    text-transform: uppercase;
    transition: opacity 0.2s;
}

.sb-nav-item[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 6px 10px;
    cursor: pointer;
    color: var(--sb-text);
    font-size: 13px;
    transition: background 0.12s, color 0.12s;
    user-select: none;
    justify-content: space-between;
    text-decoration: none;
}

    .sb-nav-item:hover[b-5wcplwsv0q] {
        background: var(--sb-hover);
        color: #fff;
    }

    .sb-nav-item.active[b-5wcplwsv0q] {
        background: var(--sb-active);
        color: #fff;
    }

        .sb-nav-item.active .sb-nav-icon[b-5wcplwsv0q] {
            color: #4e9cf5;
        }

.sb-nav-item-left[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 9px;
}

.sb-nav-icon[b-5wcplwsv0q] {
    font-size: 16px;
    width: 18px;
    text-align: center;
    flex-shrink: 0;
}

.sb-chevron[b-5wcplwsv0q] {
    font-size: 12px;
    color: #6b8aaa;
    transition: transform 0.25s var(--ease);
}

    .sb-chevron.open[b-5wcplwsv0q] {
        transform: rotate(180deg);
    }

/* ── Nav children (smooth accordion) ── */
.sb-nav-children[b-5wcplwsv0q] {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.3s var(--ease), opacity 0.2s;
    opacity: 0;
}

    .sb-nav-children.open[b-5wcplwsv0q] {
        max-height: 3000px; /* large enough for any group, even with many sub-groups expanded at once */
        opacity: 1;
    }

.sb-nav-child[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 10px 5px 34px;
    font-size: 12.5px;
    color: #8aa5c4;
    cursor: pointer;
    transition: background 0.12s, border-left-color 0.12s, color 0.12s;
    border-left: 2px solid transparent;
    text-decoration: none;
}

    .sb-nav-child:hover[b-5wcplwsv0q] {
        background: var(--sb-hover);
        color: #d0dfee;
        border-left-color: rgba(255,255,255,0.15);
    }

    .sb-nav-child.active[b-5wcplwsv0q] {
        color: #fff;
        background: rgba(26,86,167,0.25);
        border-left-color: #4e9cf5;
    }

    .sb-nav-child[b-5wcplwsv0q]::before {
        content: "";
        width: 4px;
        height: 4px;
        border-radius: 50%;
        background: currentColor;
        flex-shrink: 0;
        opacity: 0.5;
    }

    .sb-nav-child.active[b-5wcplwsv0q]::before {
        opacity: 1;
        background: #4e9cf5;
    }

.sb-nav-leaf[b-5wcplwsv0q] {
    justify-content: flex-start;
}

/* ── Sidebar footer (collapse btn) ── */
.sb-footer[b-5wcplwsv0q] {
    padding: 0px 14px;
    border-top: 1px solid var(--sb-border);
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.sb-footer-row[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 4px;
}

    .sb-footer-row .sb-help-btn[b-5wcplwsv0q] {
        width: auto;
        flex: 1;
        min-width: 0;
    }

.sb-footer-profile-row[b-5wcplwsv0q] {
    display: flex;
    justify-content: flex-end;
    padding: 6px 2px 0;
}

.sb-footer-profile-name[b-5wcplwsv0q] {
    max-width: 160px;
    text-align: right;
}

.sb-home-btn i[b-5wcplwsv0q] {
    font-size: 14px;
}

.sb-home-btn[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: var(--footer-h);
    width: var(--footer-h);
    flex-shrink: 0;
    margin-left: auto;
    padding-right: 6px;
    color: #b9c9dc;
    text-decoration: none;
    transition: color 0.15s;
}

    .sb-home-btn:hover[b-5wcplwsv0q] {
        color: #fff;
    }

.gains-shell.sb-collapsed .sb-footer-row[b-5wcplwsv0q] {
    flex-direction: column;
    gap: 8px;
}

.gains-shell.sb-collapsed .sb-footer-profile-row[b-5wcplwsv0q] {
    display: none;
}

.sb-help-btn[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    justify-content: start;
    gap: 10px;
    width: 100%;
    height: var(--footer-h);
    box-sizing: border-box;
    padding: 0 12px;
    border: none;
    background: none;
    color: #b9c9dc;
    text-decoration: none;
    transition: color 0.15s;
}

    .sb-help-btn:hover[b-5wcplwsv0q] {
        color: #fff;
    }

.sb-help-icon[b-5wcplwsv0q] {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1.5px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    flex-shrink: 0;
}

.sb-help-text[b-5wcplwsv0q] {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    white-space: nowrap;
}

.gains-shell.sb-collapsed .sb-help-btn[b-5wcplwsv0q] {
    padding: 0;
}

.gains-shell.sb-collapsed .sb-help-text[b-5wcplwsv0q] {
    display: none;
}

.sb-collapse-btn[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    background: none;
    border: none;
    cursor: pointer;
    color: #6b8aaa;
    font-size: 12px;
    padding: 6px 0;
    transition: color 0.15s;
    font-family: inherit;
}

    .sb-collapse-btn:hover[b-5wcplwsv0q] {
        color: #fff;
    }

.gains-shell.sb-collapsed .sb-collapse-btn[b-5wcplwsv0q] {
    justify-content: center;
}

/* ══════════════════════════════════════
   MAIN AREA
══════════════════════════════════════ */
.gains-main[b-5wcplwsv0q] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
}

/* ── Topbar ── */
.gains-topbar[b-5wcplwsv0q] {
    height: var(--topbar-h);
    background: var(--card);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 20px;
    flex-shrink: 0;
    gap: 12px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}

.gains-topbar-left[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.gains-topbar-right[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ── GAINS branded sidebar toggle — exact match to old ASPX green button ── */
.tb-gains-toggle[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 7px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 200;
    padding: 6px 13px;
    border-radius: 6px;
    font-family: inherit;
    letter-spacing: 0.04em;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    white-space: nowrap;
    user-select: none;
    flex-shrink: 0;
}

    .tb-gains-toggle:hover[b-5wcplwsv0q] {
        background: #0e9e83;
        box-shadow: 0 3px 10px rgba(26,185,154,0.4);
    }

    .tb-gains-toggle:active[b-5wcplwsv0q] {
        background: #0b8a72;
        box-shadow: none;
    }

.tb-toggle-icon[b-5wcplwsv0q] {
    font-size: 16px;
    display: flex;
    align-items: center;
}

.tb-toggle-label[b-5wcplwsv0q] {
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.06em;
}

.gains-breadcrumb[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 13px;
}

.bc-parent[b-5wcplwsv0q] {
    color: var(--muted);
}

.bc-sep[b-5wcplwsv0q] {
    font-size: 11px;
    color: #cbd5e1;
}

.bc-current[b-5wcplwsv0q] {
    color: var(--text);
    font-weight: 600;
}

.tb-fy-badge[b-5wcplwsv0q] {
    padding: 5px 10px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: #f8fafc;
    font-size: 12.5px;
    color: var(--text);
}

.tb-icon-btn[b-5wcplwsv0q] {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid var(--border);
    background: #f8fafc;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--muted);
    font-size: 16px;
    position: relative;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}

    .tb-icon-btn:hover[b-5wcplwsv0q] {
        background: var(--primary-light);
        color: var(--primary);
        border-color: #b8d4f5;
    }

.tb-notif-dot[b-5wcplwsv0q] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--danger);
    border: 2px solid var(--card);
    position: absolute;
    top: 2px;
    right: 2px;
    transition: transform 0.2s;
}

    .tb-notif-dot.hidden[b-5wcplwsv0q] {
        display: none;
    }

.tb-notif-wrap:hover .tb-notif-dot[b-5wcplwsv0q] {
    transform: scale(1.2);
}

/* ── Notifications panel ── */
.tb-notif-wrap[b-5wcplwsv0q] {
    position: relative;
}

.tb-notif-panel[b-5wcplwsv0q] {
    position: absolute;
    right: 0;
    top: calc(100% + 10px);
    width: 310px;
    background: var(--card);
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    box-shadow: var(--shadow-lg);
    z-index: 300;
    overflow: hidden;
    opacity: 0;
    transform: translateY(-8px) scale(0.97);
    transform-origin: top right;
    pointer-events: none;
    transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
}

    .tb-notif-panel.open[b-5wcplwsv0q] {
        opacity: 1;
        transform: translateY(0) scale(1);
        pointer-events: all;
    }

.tb-notif-hdr[b-5wcplwsv0q] {
    padding: 12px 14px;
    border-bottom: 1px solid var(--border);
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #f8fafc;
}

.tb-notif-mark[b-5wcplwsv0q] {
    font-size: 11px;
    color: var(--primary);
    cursor: pointer;
    font-weight: 500;
    background: none;
    border: none;
    font-family: inherit;
    padding: 3px 8px;
    border-radius: 4px;
    transition: background 0.12s;
}

    .tb-notif-mark:hover[b-5wcplwsv0q] {
        background: var(--primary-light);
    }

.tb-notif-item[b-5wcplwsv0q] {
    display: flex;
    gap: 10px;
    padding: 10px 14px;
    border-bottom: 1px solid #f1f5f9;
    transition: background 0.12s;
    cursor: pointer;
}

    .tb-notif-item:last-child[b-5wcplwsv0q] {
        border-bottom: none;
    }

    .tb-notif-item:hover[b-5wcplwsv0q] {
        background: #f8fafc;
    }

.tb-ndot[b-5wcplwsv0q] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--primary);
    margin-top: 5px;
    flex-shrink: 0;
}

    .tb-ndot.read[b-5wcplwsv0q] {
        background: var(--border);
    }

.tb-ntext[b-5wcplwsv0q] {
    font-size: 12.5px;
    color: var(--text);
    line-height: 1.4;
}

.tb-ntime[b-5wcplwsv0q] {
    font-size: 11px;
    color: var(--muted);
    margin-top: 2px;
}

/* ── Topbar buttons ── */
.tb-btn[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 13px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--card);
    cursor: pointer;
    font-size: 12.5px;
    color: var(--text);
    font-family: inherit;
    transition: background 0.12s, border-color 0.12s;
}

    .tb-btn:hover[b-5wcplwsv0q] {
        background: #f1f5f9;
        border-color: #c7d2e0;
    }

.tb-user-pill[b-5wcplwsv0q] {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    user-select: none;
    padding: 5px 8px;
    border-radius: var(--radius);
    transition: background 0.15s;
}

    .tb-user-pill:hover[b-5wcplwsv0q] {
        background: #f1f5f9;
    }

.tb-avatar[b-5wcplwsv0q] {
    width: 32px;
    height: 32px;
    font-size: 11px;
}

.tb-user-name[b-5wcplwsv0q] {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
}

/* ── Topbar Profile Dropdown ── */
.tb-profile-wrap[b-5wcplwsv0q] {
    position: relative;
    flex-shrink: 0;
}

.tb-profile-caret[b-5wcplwsv0q] {
    font-size: 12px;
    color: var(--muted);
    transition: transform 0.25s var(--ease);
    flex-shrink: 0;
}

    .tb-profile-caret.open[b-5wcplwsv0q] {
        transform: rotate(180deg);
    }

.tb-profile-dropdown[b-5wcplwsv0q] {
    position: absolute;
    right: 0;
    top: calc(100% + 8px);
    width: 280px;
    background: var(--card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    z-index: 200;
    border: 1px solid var(--border);
    overflow: hidden;
    opacity: 0;
    transform: translateY(-8px) scaleY(0.95);
    transform-origin: top right;
    pointer-events: none;
    transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
}

    .tb-profile-dropdown.open[b-5wcplwsv0q] {
        opacity: 1;
        transform: translateY(0) scaleY(1);
        pointer-events: all;
    }

/* ── Content area ── */
.gains-content[b-5wcplwsv0q] {
    flex: 1;
    overflow-y: auto;
    padding: 0;
    background: var(--bg);
}

/* Desktop view: scrolling still works (wheel/trackpad/keyboard), the
   scrollbar itself just isn't drawn — Chrome/Edge/Safari via
   ::-webkit-scrollbar{display:none}, Firefox via scrollbar-width:none.
   Scoped to the same >768px breakpoint the rest of this file treats as
   "desktop" (see the max-width:768px block below), so mobile keeps its
   normal (usually auto-hiding/overlay) scrollbar behavior untouched. */
@media (min-width: 769px) {
    .gains-content[b-5wcplwsv0q] {
        scrollbar-width: none;
    }

        .gains-content[b-5wcplwsv0q]::-webkit-scrollbar {
            display: none;
        }
}

/* ── Footer ── */
.gains-footer[b-5wcplwsv0q] {
    flex-shrink: 0;
    height: var(--footer-h);
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 20px;
    text-align: center;
    font-size: 12px;
    color: var(--text-muted, #6b7280);
    background: var(--card);
    border-top: 1px solid var(--border);
}

/* ══════════════════════════════════════
   LOGOUT MODAL  (improved)
══════════════════════════════════════ */
.gains-modal-overlay[b-5wcplwsv0q] {
    display: flex; /* always flex — visibility via opacity/pointer-events */
    position: fixed;
    inset: 0;
    background: rgba(15, 35, 64, 0.55);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 500;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s var(--ease), backdrop-filter 0.22s;
}

    .gains-modal-overlay.open[b-5wcplwsv0q] {
        opacity: 1;
        pointer-events: all;
    }

.gains-modal[b-5wcplwsv0q] {
    background: var(--card);
    border-radius: 18px;
    padding: 32px 28px 26px;
    width: 360px;
    max-width: calc(100vw - 32px);
    box-shadow: var(--shadow-lg);
    text-align: center;
    transform: scale(0.88) translateY(12px);
    transition: transform 0.25s var(--ease);
}

.gains-modal-overlay.open .gains-modal[b-5wcplwsv0q] {
    transform: scale(1) translateY(0);
}

/* Icon circle */
.gains-modal-icon-wrap[b-5wcplwsv0q] {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 16px;
    box-shadow: 0 0 0 8px #fee2e233;
}

.gains-modal-icon[b-5wcplwsv0q] {
    font-size: 28px;
    color: var(--danger);
    line-height: 1;
}

.gains-modal-title[b-5wcplwsv0q] {
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
}

.gains-modal-sub[b-5wcplwsv0q] {
    font-size: 13.5px;
    color: var(--muted);
    margin-bottom: 26px;
    line-height: 1.5;
}

.gains-modal-actions[b-5wcplwsv0q] {
    display: flex;
    gap: 10px;
    justify-content: center;
}

.gains-modal-btn[b-5wcplwsv0q] {
    padding: 10px 28px;
    border-radius: var(--radius);
    font-size: 13.5px;
    font-family: inherit;
    cursor: pointer;
    font-weight: 600;
    transition: background 0.15s, transform 0.1s, box-shadow 0.15s;
    border: 1px solid var(--border);
    min-width: 110px;
}

    .gains-modal-btn:active[b-5wcplwsv0q] {
        transform: scale(0.97);
    }

    .gains-modal-btn.cancel[b-5wcplwsv0q] {
        background: var(--card);
        color: var(--text);
    }

        .gains-modal-btn.cancel:hover[b-5wcplwsv0q] {
            background: #f1f5f9;
        }

    .gains-modal-btn.confirm[b-5wcplwsv0q] {
        background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
        color: #fff;
        border-color: #dc2626;
        box-shadow: 0 2px 8px rgba(185,28,28,0.35);
    }

        .gains-modal-btn.confirm:hover[b-5wcplwsv0q] {
            background: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%);
            box-shadow: 0 4px 14px rgba(185,28,28,0.45);
        }

/* ══════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════ */
@media (max-width: 768px) {
    .gains-shell[b-5wcplwsv0q] {
        --sb-w: 200px;
    }

    .tb-user-name[b-5wcplwsv0q], .tb-btn-label[b-5wcplwsv0q] {
        display: none;
    }

    .tb-toggle-label[b-5wcplwsv0q] {
        display: none;
    }

    .tb-gains-toggle[b-5wcplwsv0q] {
        padding: 6px 10px;
    }
}

/* Hide all sidebar content when fully collapsed */
.gains-shell.sb-collapsed .sb-label[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-nav-children[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-section-label[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-profile[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-nav[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-logo[b-5wcplwsv0q],
.gains-shell.sb-collapsed .sb-footer[b-5wcplwsv0q] {
    opacity: 0;
    pointer-events: none;
}

/* ── Level-3 nav (Masters sub-categories) ── */
.sb-nav-sub[b-5wcplwsv0q] {
    padding: 7px 14px 7px 32px !important;
    font-size: 12.5px;
}

.sb-nav-icon-sm[b-5wcplwsv0q] {
    font-size: 14px;
    width: 16px;
    text-align: center;
    flex-shrink: 0;
}

.sb-nav-children-l3 .sb-nav-child[b-5wcplwsv0q] {
    padding-left: 54px;
    font-size: 12px;
    color: #7a9ab8;
    border-left: 2px solid transparent;
}

    .sb-nav-children-l3 .sb-nav-child:hover[b-5wcplwsv0q] {
        background: var(--sb-hover);
        color: #c8ddf0;
        border-left-color: rgba(255,255,255,0.1);
    }

    .sb-nav-children-l3 .sb-nav-child.active[b-5wcplwsv0q] {
        color: #fff;
        background: rgba(26,86,167,0.2);
        border-left-color: #4e9cf5;
    }

    .sb-nav-children-l3 .sb-nav-child[b-5wcplwsv0q]::before {
        content: "";
        width: 3px;
        height: 3px;
        border-radius: 50%;
        background: currentColor;
        flex-shrink: 0;
        opacity: 0.4;
    }
/* Siddharth 29 JUN 2026 16 :56 */
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* =====================================================
   GAINS — MainLayout.razor.css
   ===================================================== */

.gains-layout[b-buakehe8mn] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    margin: 0;
    padding: 0;
}

/* Blazor error UI */
#blazor-error-ui[b-buakehe8mn] {
    background: #fef2f2;
    border-top: 1px solid #fecaca;
    color: #b91c1c;
    display: none;
    font-size: 14px;
    padding: 10px 16px;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9999;
}

    #blazor-error-ui .reload[b-buakehe8mn] {
        color: #1AB99A;
        font-weight: 600;
        margin-left: 8px;
        text-decoration: none;
    }

    #blazor-error-ui .dismiss[b-buakehe8mn] {
        cursor: pointer;
        float: right;
        font-weight: bold;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-5nvn20xp0v],
.components-reconnect-repeated-attempt-visible[b-5nvn20xp0v],
.components-reconnect-failed-visible[b-5nvn20xp0v],
.components-pause-visible[b-5nvn20xp0v],
.components-resume-failed-visible[b-5nvn20xp0v],
.components-rejoining-animation[b-5nvn20xp0v] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-retrying[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-failed[b-5nvn20xp0v],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-5nvn20xp0v] {
    display: block;
}


#components-reconnect-modal[b-5nvn20xp0v] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-5nvn20xp0v 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-5nvn20xp0v 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-5nvn20xp0v 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-5nvn20xp0v]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-5nvn20xp0v 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-5nvn20xp0v {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-5nvn20xp0v {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-5nvn20xp0v {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-5nvn20xp0v] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-5nvn20xp0v] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-5nvn20xp0v] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-5nvn20xp0v] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-5nvn20xp0v] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-5nvn20xp0v] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-5nvn20xp0v] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-5nvn20xp0v 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-5nvn20xp0v] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-5nvn20xp0v {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/Cashflow/CF01.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   CF01.razor.css — all page-chrome classes use "cf-" prefix (not
   "bspl-"), so this page owns them independently instead of relying
   on wwwroot/CSS/masters-forms.css's shared .bspl-* / .bspl-footer/
   etc rules. Those rules are copied + renamed below (title block,
   gains-toggle, filters button, footer) so the visual result matches
   BSPL exactly. mu-drawer/mu-fld/uf-input/mu-btn (filter drawer) are
   still the shared masters-forms.css classes — untouched, same as
   every other page's drawer.
   ═══════════════════════════════════════════════════════════════ */

/* ── Page wrapper ─────────────────────────────────────────────── */
.cf-page[b-hpzkd7p29u] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ══════════════════════════════════════════════════════
   PAGE GAINS-TOGGLE BUTTON (copied from masters-forms.css .bspl-gains-toggle)
   ══════════════════════════════════════════════════════ */
.cf-gains-toggle[b-hpzkd7p29u] {
    display: none;
    align-items: center;
    gap: 7px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    flex-shrink: 0;
}

    .cf-gains-toggle:hover[b-hpzkd7p29u] {
        background: #0e9e83;
    }

    .cf-gains-toggle i[b-hpzkd7p29u] {
        font-size: 15px;
    }

.gains-shell.sb-collapsed .cf-gains-toggle[b-hpzkd7p29u] {
    display: flex;
}

.cf-title-left[b-hpzkd7p29u] {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* ══════════════════════════════════════════════════════
   PAGE HEADER / TITLE BLOCK (copied from masters-forms.css .bspl-title-*)
   ══════════════════════════════════════════════════════ */
.cf-title-block[b-hpzkd7p29u] {
    flex-shrink: 0;
    padding: 14px 16px 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.cf-title-row[b-hpzkd7p29u] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.cf-title-block h1[b-hpzkd7p29u] {
    margin: 0 0 2px 0;
    font-size: 22px;
    font-weight: 100;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.1;
}

.cf-title-block .cf-subtitle[b-hpzkd7p29u] {
    font-size: 12px;
    color: #999;
    font-weight: 400;
}

.cf-title-actions[b-hpzkd7p29u] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

@media (max-width: 767px) {
    .cf-title-actions[b-hpzkd7p29u] {
        gap: 4px;
    }
}

/* ══════════════════════════════════════════════════════
   FILTERS BUTTON (copied from masters-forms.css .bspl-filter-toggle)
   ══════════════════════════════════════════════════════ */
.cf-filter-toggle[b-hpzkd7p29u] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
}

    .cf-filter-toggle:hover[b-hpzkd7p29u] {
        background: #1467a0;
    }

    .cf-filter-toggle.has-filter[b-hpzkd7p29u] {
        background: #d9534f;
    }

/* ══════════════════════════════════════════════════════
   MAIN CONTENT
   ══════════════════════════════════════════════════════ */
/* Same fixed-chrome pattern as Daybook.razor's .db-content — overflow:hidden
   here + a flex child, so the report's own header/column-header block stays
   put and only the inner .cfr-table-wrap scrolls (Daybook.razor uses
   .mu-table-wrap the same way for its grids). */
.cf-content[b-hpzkd7p29u] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
    padding: 0px 0px 8px;
}

/* ══════════════════════════════════════════════════════
   SKELETON LOADING
   ══════════════════════════════════════════════════════ */
.cf-skeleton-panels[b-hpzkd7p29u] {
    display: flex;
    gap: 16px;
    padding: 12px 16px;
}

.cf-sk-panel[b-hpzkd7p29u] {
    flex: 1;
    background: #fff;
    border: 1px solid #e7eaec;
    padding: 0;
    overflow: hidden;
}

.cf-sk-hdr[b-hpzkd7p29u] {
    height: 36px;
    background: #bbb;
    margin-bottom: 0;
}

.cf-sk-row[b-hpzkd7p29u] {
    height: 29px;
    margin: 0;
    border-bottom: 1px solid #e7eaec;
    background: linear-gradient(90deg,#efefef 25%,#e5e5e5 50%,#efefef 75%);
    background-size: 400% 100%;
    animation: cf-shimmer-b-hpzkd7p29u 1.4s infinite;
}

@keyframes cf-shimmer-b-hpzkd7p29u {
    0% {
        background-position: 100% 0
    }

    100% {
        background-position: -100% 0
    }
}

/* ══════════════════════════════════════════════════════
   ERROR / EMPTY
   ══════════════════════════════════════════════════════ */
.cf-error[b-hpzkd7p29u] {
    margin: 10px 16px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

/* ── CF01 default-state illustration — shown until the report grid is
   wired up (same spirit as BSPL's BalanceSheet001.png/ProfitandLoss.jpg) ── */
.cf01-placeholder[b-hpzkd7p29u] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 24px 16px;
}

.cf01-placeholder-img[b-hpzkd7p29u] {
    max-width: 1000px;
    width: 100%;
    height: auto;
    display: block;
}

/* ══════════════════════════════════════════════════════
   PAGE FOOTER (copied from masters-forms.css .bspl-footer/.bspl-foot-btn)
   ══════════════════════════════════════════════════════ */
.cf-footer[b-hpzkd7p29u] {
    flex-shrink: 0;
    margin-top: auto;
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    background: #f5f5f5;
    border-top: 1px solid #e7eaec;
    gap: 10px;
}

.cf-footer-left[b-hpzkd7p29u] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cf-footer-right[b-hpzkd7p29u] {
    margin-left: auto;
    font-size: 11px;
    color: #999;
}

.cf-foot-btn[b-hpzkd7p29u] {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
    padding: 0;
    display: flex;
    align-items: center;
}

    .cf-foot-btn.pdf[b-hpzkd7p29u] {
        color: #c0392b;
    }

    .cf-foot-btn.xls[b-hpzkd7p29u] {
        color: #1e8449;
    }

@media (max-width: 767px) {
    .cf-title-block h1[b-hpzkd7p29u] {
        font-size: 16px;
    }

    .cf-subtitle[b-hpzkd7p29u] {
        font-size: 11px;
    }

    .cf-toggle-label[b-hpzkd7p29u] {
        display: none;
    }

    .cf-gains-toggle[b-hpzkd7p29u] {
        padding: 8px 10px;
    }

    .cf-filter-label[b-hpzkd7p29u] {
        display: none;
    }

    .cf-filter-toggle[b-hpzkd7p29u] {
        padding: 0;
        width: 32px;
        height: 32px;
        justify-content: center;
        gap: 0;
        border-radius: 6px;
        flex: 0 0 auto;
    }

        .cf-filter-toggle i[b-hpzkd7p29u] {
            font-size: 16px;
        }

    .cf-footer[b-hpzkd7p29u] {
        padding: 0 10px;
    }

    .cf-foot-btn[b-hpzkd7p29u] {
        font-size: 17px;
    }
}

/* ── Report Format radio group — .le-chk copied from GAINS_TB.razor.css
   (radio UI reference), scoped per-component same as there ── */
.cf01-radio-group[b-hpzkd7p29u] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 4px;
}

.le-chk[b-hpzkd7p29u] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    margin-bottom: 6px;
}

    /* Reset — same "mu-fld input" stretched-bar bug as CFSiteList's
       checkboxes (see CFSiteList.razor.css): these radios live inside
       a "mu-fld" drawer field, and masters-forms.css's global
       ".mu-fld input, .mu-fld select" (meant for text/select inputs)
       matches them too, stamping width:100%/padding/border onto what
       should be a small round radio dot. Explicit reset beats it. */
    .le-chk input[type="radio"][b-hpzkd7p29u] {
        appearance: radio;
        -webkit-appearance: radio;
        width: 15px;
        height: 15px;
        min-width: 15px;
        flex: 0 0 15px;
        margin: 0;
        padding: 0;
        border: 1px solid #cbd5e1;
        border-radius: 50%;
        background: #fff;
        cursor: pointer;
        accent-color: #1ab394;
    }

select.uf-input:disabled[b-hpzkd7p29u] {
    background: #f0f0f0;
    color: #999;
    cursor: not-allowed;
}

/* Site field validation — red border on select when empty on GO,
   matching Date fields' gdp-invalid look. Error text below reuses
   global .gdp-error-msg class. */
select.cf1-site-invalid[b-hpzkd7p29u] {
    border-color: #c0392b;
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as BSPL.razor.css / DocumentGrid.razor.css.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-hpzkd7p29u] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-hpzkd7p29u] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-hpzkd7p29u] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ══════════════════════════════════════════════════════
   FORMAT1 REPORT GRID (.cfr-*) — company/period header +
   CFGroup -> Month -> rows -> Total -> CFGroup Total table.
   ══════════════════════════════════════════════════════ */
.cfr-wrap[b-hpzkd7p29u] {
    background: #fff;
/*    margin: 0 16px 16px;*/
margin:0px;
    padding: 16px 18px;
    border: 1px solid #e7eaec;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

/* Only this inner wrap scrolls (same role as Daybook.razor's
   .mu-table-wrap) — .cfr-hdr above it and the sticky thead inside it both
   stay visually fixed while rows scroll underneath. */
.cfr-table-wrap[b-hpzkd7p29u] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.cfr-hdr[b-hpzkd7p29u] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 13px;
    margin-bottom: 10px;
    flex-shrink: 0;
}

.cfr-hdr-company[b-hpzkd7p29u] {
    font-weight: 700;
}

.cfr-hdr-period[b-hpzkd7p29u] {
    font-weight: 600;
}

.cfr-hdr-right[b-hpzkd7p29u] {
    text-align: right;
}

.cfr-hdr-curr[b-hpzkd7p29u] {
    font-weight: 600;
}



.cfr-table[b-hpzkd7p29u] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
    min-width: 760px;
}

    /* Sticky, colored table header — stays pinned while cf-content (the
       scrolling ancestor) scrolls past the report header block above it. */
    .cfr-table thead th[b-hpzkd7p29u] {
        position: sticky;
        top: 0;
        z-index: 2;
        background: #306B9C;
        color: #fff;
        font-weight: 700;
        padding: 6px 8px;
        height:36px;
        /*border-bottom: 2px solid #000;*/
        white-space: nowrap;
    }

        .cfr-table thead th.cfr-l[b-hpzkd7p29u] {
            text-align: left;
        }

        .cfr-table thead th.cfr-r[b-hpzkd7p29u] {
            text-align: right;
        }

    .cfr-table td[b-hpzkd7p29u] {
        padding: 4px 8px;
        vertical-align: top;
    }

/* Row hover — applies across every report grid (Format1/GroupWise/
   ComparisonRpt/LedgerWise/CF Summary/CF Yearly). Higher specificity than
   the striping/section-bg rules (tr.cfr-cf3-row-a etc) so hover always
   wins over whatever bg a row already has. */
.cfr-table tbody tr:hover[b-hpzkd7p29u] {
    background: #eef4fb;
    cursor: pointer;
}

.cfr-l[b-hpzkd7p29u] {
    text-align: left;
}

.cfr-r[b-hpzkd7p29u] {
    text-align: right;
}

.cfr-group-row td[b-hpzkd7p29u] {
    font-weight: 700;
    padding-top: 14px;
    color: #1a2537;
}

.cfr-month-row td[b-hpzkd7p29u] {
    font-weight: 700;
    padding-left: 16px;
    color: #333;
}

.cfr-data-row td[b-hpzkd7p29u] {
    padding-left: 16px;
}

.cfr-grouptotal-row td[b-hpzkd7p29u] {
    padding-bottom: 10px;
}

.cfr-empty[b-hpzkd7p29u] {
    text-align: center;
    color: #999;
    padding: 24px 0;
}

/* ── GroupWise report specifics — CFID cell stacks VID/VReference as
   smaller sub-lines underneath, Narration wraps instead of forcing the
   table wider (it's often a long free-text field). ── */
.cfr-gw-cfid[b-hpzkd7p29u] {
    min-width: 130px;
}

.cfr-gw-sub[b-hpzkd7p29u] {
    font-size: 11px;
    color: #777;
    margin-top: 1px;
}

.cfr-gw-narr[b-hpzkd7p29u] {
    white-space: normal;
    max-width: 320px;
}

/* ── Comparison Rpt specifics — 2-row sticky header (year labels stacked
   over Budget/Actual labels). position:sticky doesn't auto-stack multiple
   header rows, so row2 needs an explicit top offset equal to row1's height
   (both rows already get the base .cfr-table thead th styling — color,
   background, height:36px — this just repositions row2 under row1). Data
   rows are flat/unindented (unlike Format1's cfr-data-row), so no extra
   class is needed for them beyond the default .cfr-l/.cfr-r cell rules. ── */
.cfr-table thead tr.cfr-cmp-row2 th[b-hpzkd7p29u] {
    top: 36px;
}

.cfr-cmp-total-row td[b-hpzkd7p29u] {
    padding-top: 8px;
}

/* ── Ledger wise specifics — group-header cell shows Ledcode then Name,
   spaced apart like a Ledcode column + Name column would be. ── */
.cfr-lw-ledcode[b-hpzkd7p29u] {
    display: inline-block;
    min-width: 70px;
}

.cfr-lw-name[b-hpzkd7p29u] {
    margin-left: 8px;
}

/* ── CF Summary (3 months) specifics — Total row gets an explicit
   separator line (per this report's own ASCII spec, unlike the other
   reports which asked for no lines), Bank(OB)/Inflow-Outflow/Bank(CB)
   summary rows get a bit of breathing room above them. ── */
.cfr-cf3-total-row td[b-hpzkd7p29u] {
    border-top: 1px solid #999;
    padding-top: 6px;
}

.cfr-cf3-summary-row td[b-hpzkd7p29u] {
    padding-top: 8px;
}

/* Ledger data-row stripe (alternating, resets per Inflow/Outflow group) —
   scoped to cfr-cf3-row-a/b (not the shared .cfr-data-row) so Format1/
   LedgerWise rows are untouched. */
tr.cfr-cf3-row-a[b-hpzkd7p29u] {
    background: #ffffff;
}

tr.cfr-cf3-row-b[b-hpzkd7p29u] {
    background: #F5F5F5;
}

/* INFLOW/OUTFLOW section labels + both Total rows + the 3 bottom summary
   rows (Bank OB/Inflow-Outflow/Bank CB) all share this bg. cfr-cf3-hdr-row
   is added alongside the shared .cfr-group-row class so Format1/GroupWise/
   LedgerWise group headers keep their own (unstyled) background. */
tr.cfr-cf3-hdr-row[b-hpzkd7p29u],
tr.cfr-cf3-total-row[b-hpzkd7p29u],
tr.cfr-cf3-summary-row[b-hpzkd7p29u] {
    background: #90B7D9;
}

/* ── CF Yearly (12 months) specifics — same separator-line treatment as
   CF Summary (3 months)'s Total rows, plus the same row-stripe / header-bg
   colors, scoped to its own cfr-cf12-* classes so CF Summary/other reports'
   rows are untouched. ── */
.cfr-cf12-total-row td[b-hpzkd7p29u] {
    border-top: 1px solid #999;
    padding-top: 6px;
}

.cfr-cf12-summary-row td[b-hpzkd7p29u] {
    padding-top: 8px;
}

/* Ledger/category data-row stripe (alternating, resets per Inflow/Outflow
   group) — same colors as CF Summary (3 months). */
tr.cfr-cf12-row-a[b-hpzkd7p29u] {
    background: #ffffff;
}

tr.cfr-cf12-row-b[b-hpzkd7p29u] {
    background: #F5F5F5;
}

/* INFLOW/OUTFLOW section labels + both Total rows + the 3 bottom summary
   rows (Bank OB/Inflow-Outflow/Bank CB) — same bg as CF Summary (3 months). */
tr.cfr-cf12-hdr-row[b-hpzkd7p29u],
tr.cfr-cf12-total-row[b-hpzkd7p29u],
tr.cfr-cf12-summary-row[b-hpzkd7p29u] {
    background: #90B7D9;
}
/* /Components/Pages/Cashflow/CF02.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   CF02.razor.css — page chrome (title block/gains-toggle/filters
   button/footer/radio group/date-clear icon) copied verbatim from
   CF01.razor.css. CSS isolation scopes each .razor.css to its own
   component, so identical class names here don't clash with CF01's —
   this is a straight copy, not a shared stylesheet.
   ═══════════════════════════════════════════════════════════════ */

/* ── Page wrapper ─────────────────────────────────────────────── */
.cf-page[b-apbhj6j2rh] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ══════════════════════════════════════════════════════
   PAGE GAINS-TOGGLE BUTTON
   ══════════════════════════════════════════════════════ */
.cf-gains-toggle[b-apbhj6j2rh] {
    display: none;
    align-items: center;
    gap: 7px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    flex-shrink: 0;
}

    .cf-gains-toggle:hover[b-apbhj6j2rh] {
        background: #0e9e83;
    }

    .cf-gains-toggle i[b-apbhj6j2rh] {
        font-size: 15px;
    }

.gains-shell.sb-collapsed .cf-gains-toggle[b-apbhj6j2rh] {
    display: flex;
}

.cf-title-left[b-apbhj6j2rh] {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* ══════════════════════════════════════════════════════
   PAGE HEADER / TITLE BLOCK
   ══════════════════════════════════════════════════════ */
.cf-title-block[b-apbhj6j2rh] {
    flex-shrink: 0;
    padding: 14px 16px 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.cf-title-row[b-apbhj6j2rh] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.cf-title-block h1[b-apbhj6j2rh] {
    margin: 0 0 2px 0;
    font-size: 22px;
    font-weight: 100;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.1;
}

.cf-title-block .cf-subtitle[b-apbhj6j2rh] {
    font-size: 12px;
    color: #999;
    font-weight: 400;
}

.cf-title-actions[b-apbhj6j2rh] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

@media (max-width: 767px) {
    .cf-title-actions[b-apbhj6j2rh] {
        gap: 4px;
    }
}

/* ══════════════════════════════════════════════════════
   FILTERS BUTTON
   ══════════════════════════════════════════════════════ */
.cf-filter-toggle[b-apbhj6j2rh] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
}

    .cf-filter-toggle:hover[b-apbhj6j2rh] {
        background: #1467a0;
    }

    .cf-filter-toggle.has-filter[b-apbhj6j2rh] {
        background: #d9534f;
    }

/* ══════════════════════════════════════════════════════
   MAIN CONTENT — same fixed-chrome pattern as CF01: overflow:hidden here
   + a flex child, so the report's own header stays put and only the
   inner .cf2-table-wrap scrolls.
   ══════════════════════════════════════════════════════ */
.cf-content[b-apbhj6j2rh] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
    padding: 0px 0px 8px;
}

/* ══════════════════════════════════════════════════════
   SKELETON LOADING
   ══════════════════════════════════════════════════════ */
.cf-skeleton-panels[b-apbhj6j2rh] {
    display: flex;
    gap: 16px;
    padding: 12px 16px;
}

.cf-sk-panel[b-apbhj6j2rh] {
    flex: 1;
    background: #fff;
    border: 1px solid #e7eaec;
    padding: 0;
    overflow: hidden;
}

.cf-sk-hdr[b-apbhj6j2rh] {
    height: 36px;
    background: #bbb;
    margin-bottom: 0;
}

.cf-sk-row[b-apbhj6j2rh] {
    height: 29px;
    margin: 0;
    border-bottom: 1px solid #e7eaec;
    background: linear-gradient(90deg,#efefef 25%,#e5e5e5 50%,#efefef 75%);
    background-size: 400% 100%;
    animation: cf2-shimmer-b-apbhj6j2rh 1.4s infinite;
}

@keyframes cf2-shimmer-b-apbhj6j2rh {
    0% {
        background-position: 100% 0
    }

    100% {
        background-position: -100% 0
    }
}

/* ══════════════════════════════════════════════════════
   ERROR / EMPTY
   ══════════════════════════════════════════════════════ */
.cf-error[b-apbhj6j2rh] {
    margin: 10px 16px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

/* ── CF02 default-state illustration — shown until Format2/Format3 are
   specced/wired up. ── */
.cf01-placeholder[b-apbhj6j2rh] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 24px 16px;
}

.cf01-placeholder-img[b-apbhj6j2rh] {
    max-width: 1000px;
    width: 100%;
    height: auto;
    display: block;
}

/* ══════════════════════════════════════════════════════
   PAGE FOOTER
   ══════════════════════════════════════════════════════ */
.cf-footer[b-apbhj6j2rh] {
    flex-shrink: 0;
    margin-top: auto;
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    background: #f5f5f5;
    border-top: 1px solid #e7eaec;
    gap: 10px;
}

.cf-footer-left[b-apbhj6j2rh] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cf-footer-right[b-apbhj6j2rh] {
    margin-left: auto;
    font-size: 11px;
    color: #999;
}

.cf-foot-btn[b-apbhj6j2rh] {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
    padding: 0;
    display: flex;
    align-items: center;
}

    .cf-foot-btn.pdf[b-apbhj6j2rh] {
        color: #c0392b;
    }

@media (max-width: 767px) {
    .cf-title-block h1[b-apbhj6j2rh] {
        font-size: 16px;
    }

    .cf-subtitle[b-apbhj6j2rh] {
        font-size: 11px;
    }

    .cf-toggle-label[b-apbhj6j2rh] {
        display: none;
    }

    .cf-gains-toggle[b-apbhj6j2rh] {
        padding: 8px 10px;
    }

    .cf-filter-label[b-apbhj6j2rh] {
        display: none;
    }

    .cf-filter-toggle[b-apbhj6j2rh] {
        padding: 0;
        width: 32px;
        height: 32px;
        justify-content: center;
        gap: 0;
        border-radius: 6px;
        flex: 0 0 auto;
    }

        .cf-filter-toggle i[b-apbhj6j2rh] {
            font-size: 16px;
        }

    .cf-footer[b-apbhj6j2rh] {
        padding: 0 10px;
    }

    .cf-foot-btn[b-apbhj6j2rh] {
        font-size: 17px;
    }
}

/* ── Report Format radio group — same shape as CF01's .cf01-radio-group/
   .le-chk (radio reset for the shared "mu-fld input" stretched-bar bug). ── */
.cf01-radio-group[b-apbhj6j2rh] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 4px;
}

.le-chk[b-apbhj6j2rh] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    margin-bottom: 6px;
}

    .le-chk input[type="radio"][b-apbhj6j2rh] {
        appearance: radio;
        -webkit-appearance: radio;
        width: 15px;
        height: 15px;
        min-width: 15px;
        flex: 0 0 15px;
        margin: 0;
        padding: 0;
        border: 1px solid #cbd5e1;
        border-radius: 50%;
        background: #fff;
        cursor: pointer;
        accent-color: #1ab394;
    }

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-apbhj6j2rh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-apbhj6j2rh] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-apbhj6j2rh] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ══════════════════════════════════════════════════════
   FORMAT1 SUMMARY (.cf2-*) — company/period header + flat
   InFlow-OutFlow/OB/IN-group-list/OUT-group-list/CB rows. No transaction
   grid here (unlike CF01's .cfr-table), so this is plain flex rows rather
   than a <table>.
   ══════════════════════════════════════════════════════ */
.cf2-wrap[b-apbhj6j2rh] {
    background: #fff;
    margin: 0px;
    padding: 16px 18px;
    border: 1px solid #e7eaec;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.cf2-table-wrap[b-apbhj6j2rh] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.cf2-hdr[b-apbhj6j2rh] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 13px;
    margin-bottom: 14px;
    flex-shrink: 0;
}

.cf2-hdr-company[b-apbhj6j2rh] {
    font-weight: 700;
}

.cf2-hdr-period[b-apbhj6j2rh] {
    font-weight: 600;
}

.cf2-hdr-right[b-apbhj6j2rh] {
    text-align: right;
}

.cf2-hdr-curr[b-apbhj6j2rh] {
    font-weight: 600;
}

.cf2-summary[b-apbhj6j2rh] {
    max-width: 520px;
    font-size: 13px;
}

.cf2-row[b-apbhj6j2rh] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 4px 0;
}

.cf2-row-bold[b-apbhj6j2rh] {
    font-weight: 700;
    color: #1a2537;
}

.cf2-row-section[b-apbhj6j2rh] {
    font-weight: 700;
    color: #1a2537;
    padding-top: 12px;
}

.cf2-row-indent[b-apbhj6j2rh] {
    padding-left: 20px;
    color: #333;
}

/* Dashed separator directly above each group's Total line, per the
   report's own ASCII spec ("----" over the total figure). */
.cf2-row-total[b-apbhj6j2rh] {
    border-top: 1px dashed #999;
    font-weight: 700;
    padding-top: 6px;
    margin-top: 2px;
}

.cf2-empty[b-apbhj6j2rh] {
    text-align: center;
    color: #999;
    padding: 24px 0;
}

/* ══════════════════════════════════════════════════════
   FORMAT2 PIVOT TABLE (.cf2f2-*) — dynamic per-company IN/OUT columns.
   Accounting-report look: white bg, thin light-gray grid lines throughout,
   bold/centered headers, stronger border marking each company-group
   boundary and the two Total columns, sticky 2-row header + sticky
   Particular column so both stay put while scrolling in either direction.
   ══════════════════════════════════════════════════════ */
.cf2f2-table[b-apbhj6j2rh] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
    background: #fff;
    border: 1px solid #ddd;
}

    .cf2f2-table th[b-apbhj6j2rh],
    .cf2f2-table td[b-apbhj6j2rh] {
        border: 1px solid #ddd;
        padding: 4px 7px;
        height: 30px;
        line-height: 1.3;
    }

    .cf2f2-table thead th[b-apbhj6j2rh] {
        position: sticky;
        background: #306B9C;
        font-weight: 700;
        color: #fff;
        z-index: 2;
    }

        /* Row1 (Particular/company-group/Total headers, all rowspan=2) sits
           at top:0. Row2 (the IN Flow/OUT Flow sub-header) sits directly
           below row1 — position:sticky doesn't auto-stack multiple header
           rows, so it needs an explicit top offset equal to row1's height
           (30px, from the shared th/td rule above). */
        .cf2f2-table thead tr:first-child th[b-apbhj6j2rh] {
            top: 0;
        }

        .cf2f2-table thead tr:last-child th[b-apbhj6j2rh] {
            top: 30px;
        }

    .cf2f2-company-hdr[b-apbhj6j2rh] {
        text-align: center;
    }

    .cf2f2-sub-hdr[b-apbhj6j2rh] {
        text-align: center;
        font-weight: 600;
        font-size: 11px;
        color: #e7eef5;
    }

    /* Stronger border marking the Total Inflow/Total OutFlow columns and
       the start of each company's 2-column group, per spec ("Total columns
       should have slightly stronger/darker borders"). */
    .cf2f2-total-hdr[b-apbhj6j2rh],
    .cf2f2-total-col[b-apbhj6j2rh] {
        border-left: 2px solid #888;
    }

    .cf2f2-grp-start[b-apbhj6j2rh] {
        border-left: 2px solid #bbb;
    }

.cf2f2-particular[b-apbhj6j2rh] {
    text-align: left;
    white-space: nowrap;
    background: #fff;
}

    /* Sticky in BOTH directions — vertical scroll (header) and horizontal
       scroll (Particular column), per spec's "Optionally make the
       Particular column sticky while horizontally scrolling." The header's
       Particular cell needs the highest z-index since it's the one place
       both stickiness axes overlap. */
    .cf2f2-table thead th.cf2f2-particular[b-apbhj6j2rh] {
        left: 0;
        z-index: 4;
    }

    .cf2f2-table tbody td.cf2f2-particular[b-apbhj6j2rh] {
        position: sticky;
        left: 0;
        z-index: 1;
    }

.cf2f2-num[b-apbhj6j2rh] {
    text-align: right;
    min-width: 90px;
    white-space: nowrap;
}

/* Grand Total + OB sit in <tfoot>, sticky-pinned to the bottom of
   .cf2-table-wrap's scroll area — mirrors thead's sticky-top stacking but
   inverted: OB (the last row) pins to bottom:0, Grand Total (row above it)
   pins to bottom:30px (OB row's own height, from the shared th/td rule) so
   it sits stacked directly above OB. Only the plain data rows in <tbody>
   scroll underneath. */
.cf2f2-grandtotal td[b-apbhj6j2rh],
.cf2f2-ob td[b-apbhj6j2rh] {
    position: sticky;
    font-weight: 700;
    background: #E1EAF1;
    color: #000;
    z-index: 3;
}

    .cf2f2-grandtotal td[b-apbhj6j2rh] {
        bottom: 30px;
    }

    .cf2f2-ob td[b-apbhj6j2rh] {
        bottom: 0;
    }

    /* Particular cell in tfoot needs BOTH sticky axes (left for horizontal
       scroll, bottom for vertical) plus the highest z-index, same reasoning
       as the header's corner cell. */
    .cf2f2-grandtotal td.cf2f2-particular[b-apbhj6j2rh],
    .cf2f2-ob td.cf2f2-particular[b-apbhj6j2rh] {
        left: 0;
        background: #E1EAF1;
        z-index: 5;
    }

/* ── Site field validation — red border on CFSiteList's own toggle box
   when empty on GO, matching the Date fields' gdp-invalid look. Error text
   below it reuses the global .gdp-error-msg class (same red, same size). ── */
.cf2-site-invalid .cfsl-toggle[b-apbhj6j2rh] {
    border-color: #c0392b;
}
/* /Components/Pages/Cashflow/CF03.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   CF03.razor.css — page chrome (title block/gains-toggle/filters
   button/footer/radio group/date-clear icon) copied verbatim from
   CF02.razor.css/CF01.razor.css. CSS isolation scopes each .razor.css to
   its own component, so identical class names here don't clash with
   CF01/CF02's — this is a straight copy, not a shared stylesheet.
   ═══════════════════════════════════════════════════════════════ */

/* ── Page wrapper ─────────────────────────────────────────────── */
.cf-page[b-a17mxxemaa] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ══════════════════════════════════════════════════════
   PAGE GAINS-TOGGLE BUTTON
   ══════════════════════════════════════════════════════ */
.cf-gains-toggle[b-a17mxxemaa] {
    display: none;
    align-items: center;
    gap: 7px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    flex-shrink: 0;
}

    .cf-gains-toggle:hover[b-a17mxxemaa] {
        background: #0e9e83;
    }

    .cf-gains-toggle i[b-a17mxxemaa] {
        font-size: 15px;
    }

.gains-shell.sb-collapsed .cf-gains-toggle[b-a17mxxemaa] {
    display: flex;
}

.cf-title-left[b-a17mxxemaa] {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* ══════════════════════════════════════════════════════
   PAGE HEADER / TITLE BLOCK
   ══════════════════════════════════════════════════════ */
.cf-title-block[b-a17mxxemaa] {
    flex-shrink: 0;
    padding: 14px 16px 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.cf-title-row[b-a17mxxemaa] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.cf-title-block h1[b-a17mxxemaa] {
    margin: 0 0 2px 0;
    font-size: 22px;
    font-weight: 100;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.1;
}

.cf-title-block .cf-subtitle[b-a17mxxemaa] {
    font-size: 12px;
    color: #999;
    font-weight: 400;
}

.cf-title-actions[b-a17mxxemaa] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

@media (max-width: 767px) {
    .cf-title-actions[b-a17mxxemaa] {
        gap: 4px;
    }
}

/* ══════════════════════════════════════════════════════
   FILTERS BUTTON
   ══════════════════════════════════════════════════════ */
.cf-filter-toggle[b-a17mxxemaa] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
}

    .cf-filter-toggle:hover[b-a17mxxemaa] {
        background: #1467a0;
    }

    .cf-filter-toggle.has-filter[b-a17mxxemaa] {
        background: #d9534f;
    }

/* ══════════════════════════════════════════════════════
   MAIN CONTENT — same fixed-chrome pattern as CF01/CF02: overflow:hidden
   here + a flex child, so the report's own header stays put and only the
   inner .cf2-table-wrap scrolls.
   ══════════════════════════════════════════════════════ */
.cf-content[b-a17mxxemaa] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
    padding: 0px 0px 8px;
}

/* ══════════════════════════════════════════════════════
   SKELETON LOADING
   ══════════════════════════════════════════════════════ */
.cf-skeleton-panels[b-a17mxxemaa] {
    display: flex;
    gap: 16px;
    padding: 12px 16px;
}

.cf-sk-panel[b-a17mxxemaa] {
    flex: 1;
    background: #fff;
    border: 1px solid #e7eaec;
    padding: 0;
    overflow: hidden;
}

.cf-sk-hdr[b-a17mxxemaa] {
    height: 36px;
    background: #bbb;
    margin-bottom: 0;
}

.cf-sk-row[b-a17mxxemaa] {
    height: 29px;
    margin: 0;
    border-bottom: 1px solid #e7eaec;
    background: linear-gradient(90deg,#efefef 25%,#e5e5e5 50%,#efefef 75%);
    background-size: 400% 100%;
    animation: cf3-shimmer-b-a17mxxemaa 1.4s infinite;
}

@keyframes cf3-shimmer-b-a17mxxemaa {
    0% {
        background-position: 100% 0
    }

    100% {
        background-position: -100% 0
    }
}

/* ══════════════════════════════════════════════════════
   ERROR / EMPTY
   ══════════════════════════════════════════════════════ */
.cf-error[b-a17mxxemaa] {
    margin: 10px 16px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

/* ── CF03 default-state illustration — shown only once Format2/Format3 is
   explicitly selected (not the pre-Go default state). ── */
.cf01-placeholder[b-a17mxxemaa] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 24px 16px;
}

.cf01-placeholder-img[b-a17mxxemaa] {
    max-width: 1000px;
    width: 100%;
    height: auto;
    display: block;
}

/* ══════════════════════════════════════════════════════
   PAGE FOOTER
   ══════════════════════════════════════════════════════ */
.cf-footer[b-a17mxxemaa] {
    flex-shrink: 0;
    margin-top: auto;
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    background: #f5f5f5;
    border-top: 1px solid #e7eaec;
    gap: 10px;
}

.cf-footer-left[b-a17mxxemaa] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cf-footer-right[b-a17mxxemaa] {
    margin-left: auto;
    font-size: 11px;
    color: #999;
}

.cf-foot-btn[b-a17mxxemaa] {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
    padding: 0;
    display: flex;
    align-items: center;
}

    .cf-foot-btn.pdf[b-a17mxxemaa] {
        color: #c0392b;
    }

@media (max-width: 767px) {
    .cf-title-block h1[b-a17mxxemaa] {
        font-size: 16px;
    }

    .cf-subtitle[b-a17mxxemaa] {
        font-size: 11px;
    }

    .cf-toggle-label[b-a17mxxemaa] {
        display: none;
    }

    .cf-gains-toggle[b-a17mxxemaa] {
        padding: 8px 10px;
    }

    .cf-filter-label[b-a17mxxemaa] {
        display: none;
    }

    .cf-filter-toggle[b-a17mxxemaa] {
        padding: 0;
        width: 32px;
        height: 32px;
        justify-content: center;
        gap: 0;
        border-radius: 6px;
        flex: 0 0 auto;
    }

        .cf-filter-toggle i[b-a17mxxemaa] {
            font-size: 16px;
        }

    .cf-footer[b-a17mxxemaa] {
        padding: 0 10px;
    }

    .cf-foot-btn[b-a17mxxemaa] {
        font-size: 17px;
    }
}

/* ── Report Format radio group — same shape as CF01/CF02's
   .cf01-radio-group/.le-chk (radio reset for the shared "mu-fld input"
   stretched-bar bug). ── */
.cf01-radio-group[b-a17mxxemaa] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 4px;
}

.le-chk[b-a17mxxemaa] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    margin-bottom: 6px;
}

    .le-chk input[type="radio"][b-a17mxxemaa] {
        appearance: radio;
        -webkit-appearance: radio;
        width: 15px;
        height: 15px;
        min-width: 15px;
        flex: 0 0 15px;
        margin: 0;
        padding: 0;
        border: 1px solid #cbd5e1;
        border-radius: 50%;
        background: #fff;
        cursor: pointer;
        accent-color: #1ab394;
    }

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-a17mxxemaa] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-a17mxxemaa] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-a17mxxemaa] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ══════════════════════════════════════════════════════
   FORMAT1 REPORT WRAPPER + HEADER (.cf3-wrap / .cf2-hdr / .cf2-table-wrap /
   .cf2-empty) — same shell shape as CF02's Format1/Format2, just renamed
   the outer wrap since this report is a full data table, not a flex-row
   summary or pivot.
   ══════════════════════════════════════════════════════ */
.cf3-wrap[b-a17mxxemaa] {
    background: #fff;
    margin: 0px;
    padding: 16px 18px;
    border: 1px solid #e7eaec;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.cf2-table-wrap[b-a17mxxemaa] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.cf2-hdr[b-a17mxxemaa] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 13px;
    margin-bottom: 14px;
    flex-shrink: 0;
}

.cf2-hdr-company[b-a17mxxemaa] {
    font-weight: 700;
}

.cf2-hdr-period[b-a17mxxemaa] {
    font-weight: 600;
}

.cf2-hdr-right[b-a17mxxemaa] {
    text-align: right;
}

.cf2-hdr-curr[b-a17mxxemaa] {
    font-weight: 600;
}

.cf2-empty[b-a17mxxemaa] {
    text-align: center;
    color: #999;
    padding: 24px 0;
}

/* ══════════════════════════════════════════════════════
   FORMAT1 TABLE (.cf3f1-*) — Company → Group → ledger-detail rows, with
   Group Total / Company Total / Grand Total rows shaded progressively
   darker. Sticky header per spec's requested #306B9C/white header, same
   sticky-top technique as CF01/CF02's report tables.
   ══════════════════════════════════════════════════════ */
.cf3f1-table[b-a17mxxemaa] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
    background: #fff;
    border: 1px solid #ddd;
}

    .cf3f1-table th[b-a17mxxemaa],
    .cf3f1-table td[b-a17mxxemaa] {
        border: 1px solid #ddd;
        padding: 4px 7px;
        height: 30px;
        line-height: 1.3;
    }

    .cf3f1-table thead th[b-a17mxxemaa] {
        position: sticky;
        top: 0;
        background: #306B9C;
        color: #fff;
        font-weight: 700;
        z-index: 2;
    }

.cf3f1-num[b-a17mxxemaa] {
    text-align: right;
    white-space: nowrap;
    min-width: 90px;
}

/* Company label — printed in the Account column (no dedicated Company
   column), darkest shade (top of the hierarchy). */
.cf3f1-company-row td[b-a17mxxemaa] {
    background: #dfe7ef;
    font-weight: 700;
    color: #1a2537;
}

/* Group label — printed in the Account column too, one shade lighter. */
.cf3f1-group-row td[b-a17mxxemaa] {
    background: #eef2f6;
    font-weight: 600;
    color: #333;
    padding-left: 14px;
}

/* Spacer row after each Company/Group label — borderless so it reads as a
   blank gap rather than an empty bordered cell. */
.cf3f1-blank-row td[b-a17mxxemaa] {
    border: none;
    background: #fff;
    height: 8px;
    padding: 0;
}

/* Group Total — dashed separator directly above it, per spec's ASCII
   layout ("----" over the subtotal figure). */
.cf3f1-grouptotal-row td[b-a17mxxemaa] {
    border-top: 1px dashed #999;
    font-weight: 600;
}

.cf3f1-companytotal-row td[b-a17mxxemaa] {
    background: #f5f5f5;
    border-top: 1px solid #999;
    font-weight: 700;
}

.cf3f1-grandtotal-row td[b-a17mxxemaa] {
    background: #90B7D9;
    border-top: 2px solid #333;
    font-weight: 700;
}

/* ── Site field validation — red border on CFSiteList's own toggle box
   when empty on GO, matching the Date fields' gdp-invalid look. Error text
   below it reuses the global .gdp-error-msg class (same red, same size). ── */
.cf3-site-invalid .cfsl-toggle[b-a17mxxemaa] {
    border-color: #c0392b;
}
/* /Components/Pages/Cashflow/CF04.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   CF04.razor.css — page chrome (title block/gains-toggle/filters
   button/footer/date-clear icon) copied verbatim from CF01/CF02/CF03's
   own .razor.css (CSS isolation scopes each file to its own component, so
   identical class names don't clash). No Format radio group here — CF04
   has one fixed report shape, so that chrome block is omitted.
   The body layout (.cf4-cols/.cf4-summary/.cf4-detail, mu-card/mu-toolbar/
   mu-table usage) mirrors /masters/xitem-login's xil-cols/xil-depot/
   xil-item shell — mu-/uf- base styles are already global (see
   XItemLogin.razor.css's own header comment), only CF04-specific rules
   are added below.
   ═══════════════════════════════════════════════════════════════ */

/* ── Page wrapper ─────────────────────────────────────────────── */
.cf-page[b-ku2tj7xzb7] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ══════════════════════════════════════════════════════
   PAGE GAINS-TOGGLE BUTTON
   ══════════════════════════════════════════════════════ */
.cf-gains-toggle[b-ku2tj7xzb7] {
    display: none;
    align-items: center;
    gap: 7px;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    transition: background 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    flex-shrink: 0;
}

    .cf-gains-toggle:hover[b-ku2tj7xzb7] {
        background: #0e9e83;
    }

    .cf-gains-toggle i[b-ku2tj7xzb7] {
        font-size: 15px;
    }

.gains-shell.sb-collapsed .cf-gains-toggle[b-ku2tj7xzb7] {
    display: flex;
}

.cf-title-left[b-ku2tj7xzb7] {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* ══════════════════════════════════════════════════════
   PAGE HEADER / TITLE BLOCK
   ══════════════════════════════════════════════════════ */
.cf-title-block[b-ku2tj7xzb7] {
    flex-shrink: 0;
    padding: 14px 16px 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.cf-title-row[b-ku2tj7xzb7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.cf-title-block h1[b-ku2tj7xzb7] {
    margin: 0 0 2px 0;
    font-size: 22px;
    font-weight: 100;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.1;
}

.cf-title-block .cf-subtitle[b-ku2tj7xzb7] {
    font-size: 12px;
    color: #999;
    font-weight: 400;
}

.cf-title-actions[b-ku2tj7xzb7] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

@media (max-width: 767px) {
    .cf-title-actions[b-ku2tj7xzb7] {
        gap: 4px;
    }
}

/* ══════════════════════════════════════════════════════
   FILTERS BUTTON
   ══════════════════════════════════════════════════════ */
.cf-filter-toggle[b-ku2tj7xzb7] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
}

    .cf-filter-toggle:hover[b-ku2tj7xzb7] {
        background: #1467a0;
    }

    .cf-filter-toggle.has-filter[b-ku2tj7xzb7] {
        background: #d9534f;
    }

/* ══════════════════════════════════════════════════════
   MAIN CONTENT
   ══════════════════════════════════════════════════════ */
.cf-content[b-ku2tj7xzb7] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
    padding: 0px 0px 8px;
}

/* ══════════════════════════════════════════════════════
   ERROR / DEFAULT-STATE ILLUSTRATION
   ══════════════════════════════════════════════════════ */
.cf-error[b-ku2tj7xzb7] {
    margin: 10px 16px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

.cf01-placeholder[b-ku2tj7xzb7] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 24px 16px;
}

.cf01-placeholder-img[b-ku2tj7xzb7] {
    max-width: 1000px;
    width: 100%;
    height: auto;
    display: block;
}

/* ══════════════════════════════════════════════════════
   PAGE FOOTER
   ══════════════════════════════════════════════════════ */
.cf-footer[b-ku2tj7xzb7] {
    flex-shrink: 0;
    margin-top: auto;
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    background: #f5f5f5;
    border-top: 1px solid #e7eaec;
    gap: 10px;
}

.cf-footer-left[b-ku2tj7xzb7] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cf-footer-right[b-ku2tj7xzb7] {
    margin-left: auto;
    font-size: 11px;
    color: #999;
}

@media (max-width: 767px) {
    .cf-title-block h1[b-ku2tj7xzb7] {
        font-size: 16px;
    }

    .cf-subtitle[b-ku2tj7xzb7] {
        font-size: 11px;
    }

    .cf-toggle-label[b-ku2tj7xzb7] {
        display: none;
    }

    .cf-gains-toggle[b-ku2tj7xzb7] {
        padding: 8px 10px;
    }

    .cf-filter-label[b-ku2tj7xzb7] {
        display: none;
    }

    .cf-filter-toggle[b-ku2tj7xzb7] {
        padding: 0;
        width: 32px;
        height: 32px;
        justify-content: center;
        gap: 0;
        border-radius: 6px;
        flex: 0 0 auto;
    }

        .cf-filter-toggle i[b-ku2tj7xzb7] {
            font-size: 16px;
        }

    .cf-footer[b-ku2tj7xzb7] {
        padding: 0 10px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-ku2tj7xzb7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-ku2tj7xzb7] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-ku2tj7xzb7] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ══════════════════════════════════════════════════════
   TWO-PANEL BODY (.cf4-cols/.cf4-summary/.cf4-detail) — same shape as
   xitem-login's .xil-cols/.xil-depot/.xil-item, renamed for this report.
   mu-card/mu-toolbar/mu-table/mu-table-wrap/NoRecords are all global (see
   XItemLogin.razor.css header) — only the flex plumbing + CF04-specific
   bits are added here.
   ══════════════════════════════════════════════════════ */
.cf4-cols[b-ku2tj7xzb7] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
    padding: 0 16px;
}

.cf4-summary[b-ku2tj7xzb7] {
    flex: 1 1 38%;
    display: flex;
    min-width: 0;
}

.cf4-detail[b-ku2tj7xzb7] {
    flex: 1 1 62%;
    display: flex;
    min-width: 0;
}

    .cf4-summary > .mu-card[b-ku2tj7xzb7],
    .cf4-detail > .mu-card[b-ku2tj7xzb7] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-ku2tj7xzb7] {
    flex-shrink: 0;
}

.mu-table-wrap[b-ku2tj7xzb7] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.cf4-panel-title[b-ku2tj7xzb7] {
    font-weight: 700;
    color: #1a2537;
    font-size: 13px;
}

.cf4-panel-title-muted[b-ku2tj7xzb7] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Site field validation — red border on CFSiteList's own toggle box
   when empty on GO, matching the Date fields' gdp-invalid look. Error text
   below it reuses the global .gdp-error-msg class (same red, same size). ── */
.cf4-site-invalid .cfsl-toggle[b-ku2tj7xzb7] {
    border-color: #c0392b;
}

/* ── Summary panel header — Company (left, bold) / Period (center) / Base
   Currency (right), same 3-part shape as CF01/CF02/CF03's own cf2-hdr,
   replacing the plain "Summary" label. ── */
.cf4-hdr[b-ku2tj7xzb7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    font-size: 12.5px;
}

.cf4-hdr-company[b-ku2tj7xzb7] {
    font-weight: 700;
    color: #1a2537;
}

.cf4-hdr-period[b-ku2tj7xzb7] {
    font-weight: 600;
    color: #333;
}

.cf4-hdr-curr[b-ku2tj7xzb7] {
    font-weight: 600;
    color: #333;
}

@media (max-width: 900px) {
    .cf4-cols[b-ku2tj7xzb7] {
        flex-direction: column;
    }
}

/* ── Summary grid: Amount / In-Out columns ── */
.cf4-num[b-ku2tj7xzb7] {
    text-align: right;
    white-space: nowrap;
}

.cf4-inout-h[b-ku2tj7xzb7] {
    width: 70px;
    text-align: center;
}

.cf4-inout-cell[b-ku2tj7xzb7] {
    text-align: center;
}

.cf4-in[b-ku2tj7xzb7] {
    color: #000080;
}

.cf4-out[b-ku2tj7xzb7] {
    color: #800000;
}

.cf4-active[b-ku2tj7xzb7],
.cf4-active:hover[b-ku2tj7xzb7] {
    background: #e6f7f2 !important;
}

    .cf4-active td:first-child[b-ku2tj7xzb7] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── PDF icon button — shared by both panel footers (bspl-footer/mu-foot,
   same shell as xitem-login's own footer) and the voucher modal's
   uf-footer. ── */
.cf4-pdf-btn[b-ku2tj7xzb7] {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    color: #c0392b;
    display: inline-flex;
    align-items: center;
}

    .cf4-pdf-btn:disabled[b-ku2tj7xzb7] {
        opacity: 0.5;
        cursor: default;
    }

/* ══════════════════════════════════════════════════════
   DRILL-DOWN TREE (.cf4-tree-*) — Site → Year → Month → CFID, each level
   indented one step further, with an explicit ▶/▼ caret driving
   expand/collapse per node.
   ══════════════════════════════════════════════════════ */
.cf4-tree-wrap[b-ku2tj7xzb7] {
    padding: 4px 0;
}

.cf4-tree-row[b-ku2tj7xzb7] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    cursor: pointer;
    border-bottom: 1px solid #f0f2f4;
    font-size: 12.5px;
}

    .cf4-tree-row:hover[b-ku2tj7xzb7] {
        background: #eef4fb;
    }

.cf4-caret[b-ku2tj7xzb7] {
    width: 14px;
    flex: 0 0 14px;
    text-align: center;
    color: #666;
    font-size: 10px;
}

.cf4-tree-label[b-ku2tj7xzb7] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cf4-tree-amt[b-ku2tj7xzb7] {
    flex: 0 0 auto;
    min-width: 110px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cf4-tree-tag[b-ku2tj7xzb7] {
    flex: 0 0 40px;
    text-align: center;
    font-weight: 700;
}

.cf4-tree-site[b-ku2tj7xzb7] {
    background: #dfe7ef;
    font-weight: 700;
    color: #1a2537;
}

.cf4-tree-year[b-ku2tj7xzb7] {
    padding-left: 30px;
    background: #eef2f6;
    font-weight: 600;
}

.cf4-tree-month[b-ku2tj7xzb7] {
    padding-left: 50px;
    background: #f6f8fa;
    font-weight: 600;
}

.cf4-tree-cfid[b-ku2tj7xzb7] {
    padding-left: 70px;
    font-weight: 400;
    color: #333;
}

.cf4-tree-cfid-label[b-ku2tj7xzb7] {
    color: #0f766e;
}

/* ══════════════════════════════════════════════════════
   VOUCHER MODAL (.cf4-voucher-modal / .cf4v-*) — reproduces the
   CFVoucherView() PDF report: uf-overlay/uf-modal/uf-header/uf-body/
   uf-footer are all global (same modal shell as xitem-login's
   xil-batch-modal), everything below is the report content itself.
   ══════════════════════════════════════════════════════ */
.cf4-voucher-modal[b-ku2tj7xzb7] {
    width: min(960px, 96vw);
    max-height: 92vh;
}

    /* Only the PDF icon button remains in this modal's footer (Back/Print
       removed per spec) — push it to the right where Export PDF used to
       sit, instead of the global uf-footer's space-between default leaving
       a lone item at the start. */
    .cf4-voucher-modal .uf-footer[b-ku2tj7xzb7] {
        justify-content: flex-end;
    }

.cf4v-report[b-ku2tj7xzb7] {
    background: #fff;
    border: 1px solid #ccc;
    padding: 16px 15px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000;
}

.cf4v-topline[b-ku2tj7xzb7] {
    border-top: 1px solid #333;
    margin-bottom: 10px;
}

.cf4v-hdr1[b-ku2tj7xzb7] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-weight: 700;
    margin-bottom: 8px;
}

.cf4v-vid[b-ku2tj7xzb7] {
    color: #000080;
    font-weight: 700;
}

.cf4v-hdr2[b-ku2tj7xzb7] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #ccc;
}

.cf4v-date[b-ku2tj7xzb7] {
    flex: 0 0 24%;
    font-weight: 600;
}

.cf4v-narr-lbl[b-ku2tj7xzb7] {
    flex: 0 0 12%;
    font-weight: 700;
}

.cf4v-narr-val[b-ku2tj7xzb7] {
    flex: 1;
    min-width: 0;
    text-align: left;
}

.cf4v-table-wrap[b-ku2tj7xzb7] {
    overflow-x: auto;
}

.cf4v-table[b-ku2tj7xzb7] {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 11px;
}

    .cf4v-table th[b-ku2tj7xzb7],
    .cf4v-table td[b-ku2tj7xzb7] {
        border: 1px solid #999;
        padding-top: 4px;
        padding-bottom: 5px;
        padding-left: 4px;
    }

    .cf4v-table th[b-ku2tj7xzb7] {
        background: #fff;
        font-weight: 700;
        color: #000;
    }

.cf4v-th-cfgroup[b-ku2tj7xzb7],
.cf4v-th-ledcur[b-ku2tj7xzb7] {
    text-align: left;
}

.cf4v-th-drcr[b-ku2tj7xzb7] {
    text-align: center;
}

.cf4v-th-tran[b-ku2tj7xzb7],
.cf4v-th-base[b-ku2tj7xzb7],
.cf4v-th-ledamt[b-ku2tj7xzb7] {
    text-align: right;
    padding-right: 8px;
}

.cf4v-ledger[b-ku2tj7xzb7] {
    color: #000080;
    font-weight: 700;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cf4v-cfgroup[b-ku2tj7xzb7] {
    color: #800000;
    font-weight: 700;
    text-align: left;
}

.cf4v-drcr[b-ku2tj7xzb7] {
    text-align: center;
}

.cf4v-amt[b-ku2tj7xzb7] {
    text-align: right;
    padding-right: 8px;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cf4v-base[b-ku2tj7xzb7] {
    color: #000080;
    font-weight: 400;
}

.cf4v-ledcur[b-ku2tj7xzb7] {
    font-weight: 700;
    color: #000;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cf4v-total-row td[b-ku2tj7xzb7] {
    font-weight: 700;
    color: #000;
}

.cf4v-total-label[b-ku2tj7xzb7] {
    text-align: left;
}

.cf4v-total-row .cf4v-base[b-ku2tj7xzb7] {
    color: #000080;
    font-weight: 700;
}

@media (max-width: 767px) {
    .cf4v-hdr2[b-ku2tj7xzb7] {
        flex-wrap: wrap;
    }

    .cf4v-date[b-ku2tj7xzb7],
    .cf4v-narr-lbl[b-ku2tj7xzb7] {
        flex: 0 0 auto;
    }
}
/* /Components/Pages/CA/Masters/EventCharges.razor.rz.scp.css */
/* =====================================================================
   GAINS — EventCharges.razor.css   (CA → Master → Event Charges grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Event-Charges-page-specific rules remain here — same split as
   MDocumentType.razor.css / EventType.razor.css.
   ===================================================================== */

.mu-page[b-od5emr6840] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-od5emr6840] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-od5emr6840] {
    flex-shrink: 0;
}

.mu-table-wrap[b-od5emr6840] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-od5emr6840] {
    flex-shrink: 0;
}

.bspl-footer-right[b-od5emr6840] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-od5emr6840] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New event charge" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-od5emr6840] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-od5emr6840] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-od5emr6840] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-od5emr6840] {
                font-size: 15px;
            }

    .mu-foot-info[b-od5emr6840] {
        display: none;
    }
}
/* /Components/Pages/CA/Masters/EventType.razor.rz.scp.css */
/* =====================================================================
   GAINS — EventType.razor.css   (CA → Master → Event Type grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Event-Type-page-specific rules remain here — same split as
   MDocumentType.razor.css.
   ===================================================================== */

.mu-page[b-y6qrfvte70] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-y6qrfvte70] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-y6qrfvte70] {
    flex-shrink: 0;
}

.mu-table-wrap[b-y6qrfvte70] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-y6qrfvte70] {
    flex-shrink: 0;
}

.bspl-footer-right[b-y6qrfvte70] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-y6qrfvte70] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New event type" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-y6qrfvte70] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-y6qrfvte70] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-y6qrfvte70] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-y6qrfvte70] {
                font-size: 15px;
            }

    .mu-foot-info[b-y6qrfvte70] {
        display: none;
    }
}
/* /Components/Pages/CA/Master/EventCharges.razor.rz.scp.css */
/* =====================================================================
   GAINS — EventCharges.razor.css   (CA → Master → Event Charges grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Event-Charges-page-specific rules remain here — same split as
   MDocumentType.razor.css / EventType.razor.css.
   ===================================================================== */

.mu-page[b-2smkgwuuad] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-2smkgwuuad] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-2smkgwuuad] {
    flex-shrink: 0;
}

.mu-table-wrap[b-2smkgwuuad] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-2smkgwuuad] {
    flex-shrink: 0;
}

.bspl-footer-right[b-2smkgwuuad] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-2smkgwuuad] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New event charge" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-2smkgwuuad] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-2smkgwuuad] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-2smkgwuuad] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-2smkgwuuad] {
                font-size: 15px;
            }

    .mu-foot-info[b-2smkgwuuad] {
        display: none;
    }
}
/* /Components/Pages/CA/Master/EventType.razor.rz.scp.css */
/* =====================================================================
   GAINS — EventType.razor.css   (CA → Master → Event Type grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Event-Type-page-specific rules remain here — same split as
   MDocumentType.razor.css.
   ===================================================================== */

.mu-page[b-e2hbhzrabv] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-e2hbhzrabv] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-e2hbhzrabv] {
    flex-shrink: 0;
}

.mu-table-wrap[b-e2hbhzrabv] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-e2hbhzrabv] {
    flex-shrink: 0;
}

.bspl-footer-right[b-e2hbhzrabv] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-e2hbhzrabv] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New event type" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-e2hbhzrabv] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-e2hbhzrabv] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-e2hbhzrabv] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-e2hbhzrabv] {
                font-size: 15px;
            }

    .mu-foot-info[b-e2hbhzrabv] {
        display: none;
    }
}
/* /Components/Pages/CA/Report/Report1.razor.rz.scp.css */
/* =====================================================================
   GAINS — Report1.razor.css   (CA Report 1 grid, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css
   and common-page-chrome.css. Only Report1-page-specific rules remain here
   — same split as MDocumentType.razor.css.
   ===================================================================== */

.mu-page[b-n8zifepr3k] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-n8zifepr3k] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-filter[b-n8zifepr3k] {
    flex-shrink: 0;
}

.mu-table-wrap[b-n8zifepr3k] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-n8zifepr3k] {
    flex-shrink: 0;
}

/* Dynamic pivot columns (Apr_Events/Apr_Actual/...) can run wide — keep the
   grid horizontally scrollable inside .mu-table-wrap rather than wrapping. */
.mu-table[b-n8zifepr3k] {
    white-space: nowrap;
}

@media (max-width: 767px) {
    .mu-filter-grid[b-n8zifepr3k] {
        grid-template-columns: auto 1fr;
    }
}
/* /Components/Pages/CA/Report/Report2.razor.rz.scp.css */
/* =====================================================================
   GAINS — Report2.razor.css   (CA Report 2 grid, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css
   and common-page-chrome.css. Same layout split as Report1.razor.css.
   ===================================================================== */

.mu-page[b-blwxq6bvzn] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-blwxq6bvzn] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-filter[b-blwxq6bvzn] {
    flex-shrink: 0;
}

.mu-table-wrap[b-blwxq6bvzn] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-blwxq6bvzn] {
    flex-shrink: 0;
}

/* Dynamic "Actual,Planned" columns can run wide — scroll inside .mu-table-wrap. */
.mu-table[b-blwxq6bvzn] {
    white-space: nowrap;
}

@media (max-width: 767px) {
    .mu-filter-grid[b-blwxq6bvzn] {
        grid-template-columns: auto 1fr;
    }

    .bspl-title-actions .mu-btn-label[b-blwxq6bvzn] {
        display: none;
    }
}
/* /Components/Pages/CA/UserTask.razor.rz.scp.css */
.uf-field[b-jmr6ppwtik] {
    margin-bottom: 14px;
}

    .uf-field:last-child[b-jmr6ppwtik] {
        margin-bottom: 0;
    }

.uf-footer-right[b-jmr6ppwtik] {
    display: flex;
    align-items: center;
    gap: 10px;
}
/* /Components/Pages/Dashboard/Dashboard.razor.rz.scp.css */
/* =====================================================================
   GAINS — Dashboard.razor.css   (page-scoped styles)
   ===================================================================== */

.dash-page[b-uvd6ide2bl] { display: flex; flex-direction: column; gap: 16px; }

/* ── Page header ── */
.dash-hdr[b-uvd6ide2bl] { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.dash-title[b-uvd6ide2bl] { font-size: 20px; font-weight: 700; color: #1a2537; margin: 0; }
.dash-sub[b-uvd6ide2bl] { font-size: 12px; color: #64748b; margin: 2px 0 0; }
.dash-hdr-actions[b-uvd6ide2bl] { display: flex; gap: 8px; }
.dash-btn[b-uvd6ide2bl] {
    display: flex; align-items: center; gap: 6px;
    padding: 7px 13px; border-radius: 8px;
    border: 1px solid #dde3ed; background: #fff;
    cursor: pointer; font-size: 12.5px; color: #1a2537;
    font-family: inherit; transition: background 0.12s;
}
.dash-btn:hover[b-uvd6ide2bl] { background: #f1f5f9; }
.dash-btn.primary[b-uvd6ide2bl] { background: #1a56a7; color: #fff; border-color: #1a56a7; }
.dash-btn.primary:hover[b-uvd6ide2bl] { background: #0f3d82; }

/* ── Stats row ── */
.dash-stats[b-uvd6ide2bl] { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; }
.dash-stat-card[b-uvd6ide2bl] {
    background: #fff; border: 1px solid #dde3ed;
    border-radius: 8px; padding: 14px 16px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.dash-stat-top[b-uvd6ide2bl] { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 8px; }
.dash-stat-icon[b-uvd6ide2bl] {
    width: 36px; height: 36px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px;
}
.dash-stat-icon.blue[b-uvd6ide2bl]  { background: #e0f2fe; color: #0369a1; }
.dash-stat-icon.green[b-uvd6ide2bl] { background: #dcfce7; color: #16a34a; }
.dash-stat-icon.amber[b-uvd6ide2bl] { background: #fef3c7; color: #b45309; }
.dash-stat-icon.red[b-uvd6ide2bl]   { background: #fee2e2; color: #b91c1c; }
.dash-trend[b-uvd6ide2bl] {
    font-size: 11px; font-weight: 600;
    padding: 2px 6px; border-radius: 4px;
    display: inline-flex; align-items: center; gap: 2px;
}
.dash-trend.up[b-uvd6ide2bl]      { background: #dcfce7; color: #16a34a; }
.dash-trend.down[b-uvd6ide2bl]    { background: #fee2e2; color: #b91c1c; }
.dash-trend.neutral[b-uvd6ide2bl] { background: #f1f5f9; color: #64748b; }
.dash-stat-val[b-uvd6ide2bl]   { font-size: 22px; font-weight: 700; color: #1a2537; }
.dash-stat-label[b-uvd6ide2bl] { font-size: 12px; color: #64748b; margin-top: 2px; }

/* ── Card ── */
.dash-card[b-uvd6ide2bl] {
    background: #fff; border: 1px solid #dde3ed;
    border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    overflow: hidden;
}
.dash-card-hdr[b-uvd6ide2bl] {
    display: flex; align-items: center; justify-content: space-between;
    padding: 13px 16px 11px; border-bottom: 1px solid #dde3ed;
}
.dash-card-title[b-uvd6ide2bl]  { font-size: 13px; font-weight: 600; color: #1a2537; }
.dash-card-action[b-uvd6ide2bl] { font-size: 12px; color: #1a56a7; text-decoration: none; cursor: pointer; }
.dash-card-action:hover[b-uvd6ide2bl] { text-decoration: underline; }
.dash-card-body[b-uvd6ide2bl]   { padding: 14px 16px; }

/* ── Panels row ── */
.dash-panels[b-uvd6ide2bl] { display: grid; grid-template-columns: 1.5fr 1fr; gap: 14px; }

/* Bar chart */
.dash-bar-row[b-uvd6ide2bl] { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.dash-bar-row:last-child[b-uvd6ide2bl] { margin-bottom: 0; }
.dash-bar-label[b-uvd6ide2bl] { font-size: 12px; color: #64748b; width: 110px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-bar-track[b-uvd6ide2bl] { flex: 1; height: 7px; background: #f1f5f9; border-radius: 4px; overflow: hidden; }
.dash-bar-fill[b-uvd6ide2bl]  { height: 100%; border-radius: 4px; }
.dash-bar-amt[b-uvd6ide2bl]   { font-size: 12px; color: #1a2537; font-weight: 600; width: 52px; text-align: right; }

/* Activity */
.dash-act-item[b-uvd6ide2bl] { display: flex; align-items: flex-start; gap: 10px; padding: 8px 0; border-bottom: 1px solid #f1f5f9; }
.dash-act-item:last-child[b-uvd6ide2bl] { border-bottom: none; padding-bottom: 0; }
.dash-act-dot[b-uvd6ide2bl] { width: 8px; height: 8px; border-radius: 50%; margin-top: 4px; flex-shrink: 0; }
.dash-act-dot.blue[b-uvd6ide2bl]  { background: #1a56a7; }
.dash-act-dot.green[b-uvd6ide2bl] { background: #16a34a; }
.dash-act-dot.amber[b-uvd6ide2bl] { background: #d97706; }
.dash-act-dot.red[b-uvd6ide2bl]   { background: #b91c1c; }
.dash-act-text[b-uvd6ide2bl] { font-size: 12.5px; color: #1a2537; line-height: 1.4; }
.dash-act-meta[b-uvd6ide2bl] { font-size: 11px; color: #64748b; margin-top: 2px; }

/* ── Bottom row ── */
.dash-bottom[b-uvd6ide2bl] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }

/* Table */
.dash-table[b-uvd6ide2bl] { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.dash-table th[b-uvd6ide2bl] {
    text-align: left; font-weight: 600; font-size: 11px;
    color: #64748b; padding: 8px 12px;
    border-bottom: 1px solid #dde3ed;
    text-transform: uppercase; letter-spacing: 0.4px;
}
.dash-table td[b-uvd6ide2bl] { padding: 8px 12px; border-bottom: 1px solid #f8fafc; color: #1a2537; }
.dash-table tr:last-child td[b-uvd6ide2bl] { border-bottom: none; }
.dash-table tr:hover td[b-uvd6ide2bl] { background: #f8fafc; }

/* Badges */
.dash-badge[b-uvd6ide2bl] {
    display: inline-flex; align-items: center;
    font-size: 10.5px; font-weight: 600; padding: 2px 8px;
    border-radius: 12px;
}
.dash-badge.approved[b-uvd6ide2bl] { background: #dcfce7; color: #16a34a; }
.dash-badge.pending[b-uvd6ide2bl]  { background: #fef3c7; color: #b45309; }
.dash-badge.overdue[b-uvd6ide2bl]  { background: #fee2e2; color: #b91c1c; }
.dash-badge.review[b-uvd6ide2bl]   { background: #e0f2fe; color: #0369a1; }

/* AR/AP */
.dash-arap-block[b-uvd6ide2bl]  { margin-bottom: 10px; }
.dash-arap-block:last-child[b-uvd6ide2bl] { margin-bottom: 0; }
.dash-arap-label[b-uvd6ide2bl] { font-size: 11px; color: #64748b; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 3px; }
.dash-arap-val[b-uvd6ide2bl]   { font-size: 20px; font-weight: 700; }
.dash-arap-val.green[b-uvd6ide2bl] { color: #16a34a; }
.dash-arap-val.red[b-uvd6ide2bl]   { color: #b91c1c; }
.dash-arap-val.blue[b-uvd6ide2bl]  { color: #1a56a7; }
.dash-arap-sub[b-uvd6ide2bl]   { font-size: 11px; color: #64748b; margin-top: 2px; }
.dash-divider[b-uvd6ide2bl]    { height: 1px; background: #dde3ed; margin: 10px 0; }

/* Quick access */
.dash-qa-grid[b-uvd6ide2bl] { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.dash-qa-btn[b-uvd6ide2bl] {
    display: flex; align-items: center; gap: 7px;
    padding: 8px 10px; border-radius: 8px;
    border: 1px solid #dde3ed; background: #fff;
    cursor: pointer; font-size: 12px; color: #1a2537;
    font-family: inherit; transition: background 0.12s, border-color 0.12s;
    text-align: left;
}
.dash-qa-btn:hover[b-uvd6ide2bl] { background: #e6f0fb; border-color: #93c4ef; color: #1a56a7; }
.dash-qa-btn i[b-uvd6ide2bl]    { font-size: 15px; color: #1a56a7; }

/* Role tags */
.dash-role-tags[b-uvd6ide2bl] { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 10px; padding-top: 10px; border-top: 1px solid #dde3ed; }
.dash-role-tag[b-uvd6ide2bl] {
    font-size: 10.5px; padding: 3px 8px;
    border-radius: 4px;
    background: #e6f0fb; color: #1a56a7; font-weight: 600;
}

/* ── Responsive ── */
@media (max-width: 1100px) {
    .dash-stats[b-uvd6ide2bl]  { grid-template-columns: repeat(2, 1fr); }
    .dash-bottom[b-uvd6ide2bl] { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 820px) {
    .dash-panels[b-uvd6ide2bl] { grid-template-columns: 1fr; }
    .dash-bottom[b-uvd6ide2bl] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Dashboard/GainsDashboard.razor.rz.scp.css */
/* =====================================================================
   GAINS — GainsDashboard.razor.css   (page-scoped styles)
   Reuses .bspl-page / .bspl-title-block / .bspl-gains-toggle (same title
   chrome as Balance Sheet / P&L) and .mu-card / .mu-empty from
   wwwroot/CSS/masters-forms.css for the common page chrome; only the
   elements unique to this dashboard (tabs bar, chart panels, pies, bars)
   are defined here.
   ===================================================================== */

/* ── Page shell: natural height (no forced 100%/inner overflow) — the
   page grows as more cards/rows are added and the page simply scrolls,
   instead of clipping content in a fixed-height inner box. ── */
.gd-page[b-rm4n3g3zob] {
    position: relative; /* anchors the <Loader> overlay (position:absolute; inset:0) to this page */
    background: #f3f3f4;
    min-height: 100%;
}

/* Title block + tabs bar stay pinned to the top while the grid below
   scrolls underneath them. */
.gd-header-sticky[b-rm4n3g3zob] {
    position: sticky;
    top: 0;
    z-index: 5;
    background: #fff;
}

/* ── Date range filter bar (From / To / Display), sits above the tabs ── */
.gd-filter-bar[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    flex-wrap: wrap;
}
/* GlobalDatepicker's own .gdp-field-block/.gdp-wrap (from masters-forms.css)
   default to width:100%, which would stretch to fill this flex row — cap
   them to a fixed, comfortable width instead, matching the reference image. */
.gd-filter-bar[b-rm4n3g3zob]  .gdp-field-block {
    width: 220px;
    flex: 0 0 auto;
}
.gd-filter-bar[b-rm4n3g3zob]  .gdp-wrap {
    width: 100%;
}
.gd-display-btn[b-rm4n3g3zob] {
    padding: 9px 22px;
    border: none;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 13.5px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s;
}
.gd-display-btn:hover[b-rm4n3g3zob] { background: #159a80; }

/* ── Tabs bar (white strip, matches .bspl-btnbar) ── */
.gd-tabs-bar[b-rm4n3g3zob] {
    padding: 10px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

/* ── "Product / Company / Zone" dropdown, sits directly below the tabs bar.
   The Sales tab's FILTERS button renders on this same row (flex + space-
   between) instead of on its own line further down the page. ── */
.gd-viewby-bar[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

/* ── Body under the toolbar (matches .bspl-content) — no longer its own
   scroll container; the page (and its .gains-content ancestor) scrolls
   as a whole so additional rows just extend the page length. ── */
.gd-body[b-rm4n3g3zob] {
    padding: 14px 16px 24px;
}

/* ── Tabs ── */
.gd-tabs[b-rm4n3g3zob] { display: flex; gap: 8px; }
.gd-tab[b-rm4n3g3zob] {
    padding: 7px 18px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    color: #1a2537;
    font-size: 13px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.gd-tab:hover[b-rm4n3g3zob] { background: #f1f5f9; }
.gd-tab.active[b-rm4n3g3zob] {
    background: #1ab99a;
    border-color: #1ab99a;
    color: #fff;
}

/* ── Grid of 6 panels, 3 per row ── */
.gd-grid[b-rm4n3g3zob] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

/* Square card footprint (header + body together). Width is capped and
   centered within its grid column (instead of stretching to the full
   column width) so the squares stay a reasonable, consistent size
   regardless of viewport width — height just follows via aspect-ratio. */
.gd-card[b-rm4n3g3zob] {
    display: flex;
    flex-direction: column;
    aspect-ratio: 1 / 1;
    width: 100%;
    max-width: 520px;
    min-height: 0;
    justify-self: center;
}

/* ── Card header (light green gradient, matches .uf-header / .uf-section) ── */
.gd-card-hdr[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 14px;
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom: 1px solid #cdeee4;
    flex-wrap: wrap;
}
.gd-card-hdr-left[b-rm4n3g3zob] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gd-card-title[b-rm4n3g3zob] { font-size: 13px; font-weight: 650; color: #0f766e; }
.gd-card-hdr-icons[b-rm4n3g3zob] { display: flex; gap: 4px; }

.gd-card-icon-btn[b-rm4n3g3zob] {
    background: rgba(15, 118, 110, 0.08);
    border: none;
    color: #0f766e;
    width: 26px;
    height: 26px;
    border-radius: 6px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s;
}
.gd-card-icon-btn:hover[b-rm4n3g3zob] { background: rgba(15, 118, 110, 0.16); }
.gd-card-icon-btn i[b-rm4n3g3zob] { font-size: 13px; }

/* List/graph view-toggle button, when in "list" mode — otherwise clicking it
   swaps the icon with no visible confirmation that anything changed. */
.gd-card-icon-btn.active[b-rm4n3g3zob] {
    background: #0f766e;
    color: #fff;
}
.gd-card-icon-btn.active:hover[b-rm4n3g3zob] { background: #0c5f59; }

/* ── Period toggle (Q/Y, D/M/Y, AR/AP, DR/CR) ── */
.gd-period-toggle[b-rm4n3g3zob] { display: flex; gap: 3px; }
.gd-period-btn[b-rm4n3g3zob] {
    min-width: 26px;
    height: 22px;
    padding: 0 7px;
    border-radius: 5px;
    border: 1px solid #cdeee4;
    background: #fff;
    color: #0f766e;
    font-size: 11px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
}
.gd-period-btn:hover[b-rm4n3g3zob] { background: #eafaf4; }
.gd-period-btn.active[b-rm4n3g3zob] { background: #1ab99a; border-color: #1ab99a; color: #fff; }

/* ── Inline select (P/L dropdown, Bank & Cash "--Select--") ── */
.gd-select[b-rm4n3g3zob] {
    padding: 5px 26px 5px 9px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 12px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    cursor: pointer;
    outline: none;
}
.gd-select:focus[b-rm4n3g3zob] { border-color: #1ab99a; }
.gd-select-inline[b-rm4n3g3zob] { max-width: 140px; }

/* Row layout so the P/L card's export-menu button (added next to the
   dropdown, see GainsDashboard.razor) sits in the same visual row as the
   dropdown itself, right-aligned — the whole point being that it's a real
   flex sibling here instead of a floating Highcharts button rendered
   somewhere inside the chart canvas below. */
.gd-card-subhdr[b-rm4n3g3zob] { padding: 6px 14px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }

/* ── Chart panel body — transparent so it blends straight into the card's
   own white background (premium light dashboard look) instead of the old
   black panel; fills whatever room is left below the header/subheader,
   no fixed min-height fighting the aspect-ratio. ── */
.gd-card-body-empty[b-rm4n3g3zob] { flex: 1; display: flex; align-items: center; justify-content: center; min-height: 0; }
.gd-chart-dark[b-rm4n3g3zob] {
    flex: 1;
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    padding: 4px;
}

/* Live-data pie (Income + Expense) — Highcharts, rendered into these divs via
   JS interop (gainsRenderPieChart in GainsDashboard.js). Legend sits below
   the pie itself (Highcharts' own legend, enabled in JS) with a subtle hover
   scale/shadow highlight per slice — see gainsRenderPieChart. Fills the full
   panel (not forced square) since Highcharts needs the extra vertical room
   below the pie to lay out that legend row. */
.gd-highcharts-pie[b-rm4n3g3zob] {
    width: 100%;
    height: 100%;
}

/* ARAP's "list" view — a compact scrollable rows list, alternative to its
   pie ("graph" view), toggled via the card's header list/graph icon button. */
.gd-arap-list[b-rm4n3g3zob] {
    width: 100%;
    height: 100%;
    overflow-y: auto;
    padding: 2px 4px;
}
.gd-arap-row[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 4px;
    border-bottom: 1px solid #f1f5f9;
}
.gd-arap-row:last-child[b-rm4n3g3zob] { border-bottom: none; }
.gd-arap-dot[b-rm4n3g3zob] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    flex: 0 0 9px;
}
.gd-arap-name[b-rm4n3g3zob] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
    color: #1a2537;
}
.gd-arap-amt[b-rm4n3g3zob] {
    flex: 0 0 auto;
    font-size: 12px;
    font-weight: 650;
    color: #0f172a;
    white-space: nowrap;
}

/* Loading / error / empty states — colors tuned for the light chart panel. */
.gd-chart-status[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #64748b;
    font-size: 13px;
}
.gd-chart-error[b-rm4n3g3zob] { color: #e11d48; }
.gd-spin[b-rm4n3g3zob] { animation: gd-spin-b-rm4n3g3zob 0.9s linear infinite; }
@keyframes gd-spin-b-rm4n3g3zob { to { transform: rotate(360deg); } }

/* Profit / Loss chart — rendered via Highcharts (gainsRenderPlChart in
   GainsDashboard.js) into the #gd-pl-chart div below, the same JS-interop
   pattern the Income/Expense pies use. This div IS literal markup written
   directly in this component's .razor file, so (unlike the old hand-built
   SVG version) CSS isolation's scope attribute applies to it normally and
   these rules can safely stay scoped here. */
/* .gd-chart-dark centers its content both ways (align-items/justify-content:
   center) — fine for the pies, which fill their box edge-to-edge, but for
   this chart, Highcharts often measures/renders itself shorter than the
   available card height, and align-items:center then leaves a visible gap
   between the "P/L + Income + Exp" dropdown and the chart's own top edge —
   including its top-right export/menu button, which ends up floating well
   below the dropdown instead of right under it. Taking the chart div out of
   flow entirely with position:absolute/inset:0 (scoped to .gd-pl-body only —
   .gd-pl-highcharts is also reused, unscoped, by Bank & Cash's line chart
   below, which must keep its normal 100%/100% flow sizing) sidesteps that:
   its box always exactly fills .gd-pl-body's content area regardless of how
   Highcharts sizes its own SVG internally, so the button (pinned to the
   chart's own top-right corner in gainsRenderPlChart/gainsRenderPlLineChart)
   reliably lands right beneath the dropdown. */
.gd-pl-body[b-rm4n3g3zob] { padding: 6px 4px 0; min-height: 0; overflow: hidden; position: relative; }
.gd-pl-highcharts[b-rm4n3g3zob] { width: 100%; height: 100%; }
.gd-pl-body .gd-pl-highcharts[b-rm4n3g3zob] { position: absolute; inset: 0; width: auto; height: auto; }

/* Not part of the grid — overrides the square .gd-card aspect-ratio so
   the "coming soon" placeholder is just a normal full-width banner. */
.gd-placeholder-card[b-rm4n3g3zob] { aspect-ratio: auto; max-width: none; min-height: 220px; display: flex; align-items: center; justify-content: center; }

/* =====================================================================
   Dashboard1 — a dynamic list of per-ledger/account "widget" cards (one per
   entry in api/GetDashData/GetDash1Data's Grid.Widgets, e.g. "ADINATH
   TRADERS 017", "HDFC Bank", ...) rather than a fixed set of panels, styled
   to match the Dashboard tab's own ARAP/Sundry/Bank & Cash cards as closely
   as possible: same light gradient header (title left, control right, icon
   cluster top-right) and the same dark chart body + light list body pairing,
   toggled via the same list/graph header icon those cards use — graph is
   the default view here (see Dash1WidgetVm.ViewMode), matching every other
   card on this page which also opens straight into its chart. Scoped
   entirely under .gd-grid-alt (added only when Dashboard1 is active) so
   none of this touches the Dashboard tab's own look. Column count still
   comes from the shared .gd-grid / @media rules above (3 to 2 to 1) since
   this class is additive, not a replacement.
   ===================================================================== */
.gd-grid-alt[b-rm4n3g3zob] { gap: 20px; }

.gd-grid-alt .gd-card[b-rm4n3g3zob] {
    aspect-ratio: auto;
    max-width: none;
    min-height: 460px;
    justify-self: stretch;
    border-radius: 10px;
}

.gd-grid-alt .gd-card-hdr[b-rm4n3g3zob] {
    position: relative;
    min-height: 58px;
    /* Right padding wide enough for the two-icon cluster (list/graph toggle
       + Expand, see .gd-card-hdr-icons below) pinned top-right, so the
       title/dropdown row never runs underneath them. */
    padding: 12px 76px 12px 16px;
}
/* Title and the chart-type dropdown share one row (title left, dropdown
   right) -- matches the Dashboard tab's ARAP/Sundry/Bank & Cash header
   split (name vs. its Default/AR/AP-style control) exactly, instead of
   stacking them on two lines. Long ledger/account names truncate instead of
   pushing the dropdown out of the row or wrapping the header. */
.gd-grid-alt .gd-card-hdr-left[b-rm4n3g3zob] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
.gd-grid-alt .gd-card-title[b-rm4n3g3zob] {
    flex: 1 1 auto;
    min-width: 0;
    color: #1e293b;
    font-size: 13.5px;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Dashboard1's own bare per-widget chart-type <select> (Pie Chart/Line
   Graph/Bar Graph/Bar Graph 2) sits where ARAP/Sundry's Default/AR/AP pill
   row goes -- fixed width, never shrinks even when the title next to it
   truncates. */
.gd-grid-alt .gd-card-hdr-left .gd-select[b-rm4n3g3zob] { flex: 0 0 auto; width: auto; min-width: 130px; }

/* Icon button(s) always pinned top-right of the header, regardless of
   whether a card uses a single lone button (Income/Expense/PL's Expand/
   Close) or the two-icon .gd-card-hdr-icons cluster (Bank/ARAP/Sundry's
   list-graph toggle + Expand, reused as-is for every Dashboard1 card) --
   taken out of normal flex flow so it never gets pushed around by the
   title/dropdown row above. */
.gd-grid-alt .gd-card-hdr > .gd-card-icon-btn[b-rm4n3g3zob],
.gd-grid-alt .gd-card-hdr-icons[b-rm4n3g3zob] {
    position: absolute;
    top: 12px;
    right: 14px;
}
/* Flat/plain icon glyphs (no filled chip behind them) instead of the
   Dashboard tab's teal-tinted icon buttons -- closer to the reference;
   .active (list/graph toggle when in list mode) still gets the same solid
   teal fill the Dashboard tab uses for its own active-state icon. */
.gd-grid-alt .gd-card-icon-btn[b-rm4n3g3zob] {
    background: transparent;
    color: #64748b;
}
.gd-grid-alt .gd-card-icon-btn:hover[b-rm4n3g3zob] { background: rgba(100, 116, 139, 0.12); }
.gd-grid-alt .gd-card-icon-btn.active[b-rm4n3g3zob] { background: #0f766e; color: #fff; }

/* White chart body -- the "graph" view (Pie Chart/Line Graph/Bar Graph/Bar
   Graph 2 dropdown). Despite the class name (kept so the shared .gd-chart-dark
   flex/sizing rule from the Dashboard tab still applies), Dashboard1's own
   charts render on a plain white background here, matching the rest of the
   Dashboard's cards — not a dark panel. RenderDash1WidgetJs passes dark:false
   to every Highcharts call for this same reason, so text/tooltip/legend
   colors are the normal light-theme ones instead of light-on-dark. */
.gd-grid-alt .gd-chart-dark[b-rm4n3g3zob] {
    background: #ffffff;
    border-radius: 0 0 10px 10px;
    padding: 10px;
}
.gd-grid-alt .gd-chart-status[b-rm4n3g3zob] { color: #64748b; }

/* Light list body -- the alternate view (toggled via the header's list/
   graph icon), one row per month with its Closing Balance, matching the
   Dashboard tab's own ARAP/Sundry/Bank & Cash list view (dot-free, like
   Bank & Cash's period/amount rows) rather than the dark chart body's
   colors. Independent of .gd-arap-list/.gd-arap-row/etc. so it isn't
   affected by any dark-card recoloring added for those classes elsewhere
   on this page. */
.gd-grid-alt .gd-dash1-list-body[b-rm4n3g3zob] {
    flex: 1;
    display: flex;
    min-height: 0;
    background: #fff;
    margin: 0 10px 10px;
    padding: 2px 10px;
    border-radius: 0 0 10px 10px;
}
.gd-dash1-list[b-rm4n3g3zob] {
    width: 100%;
    height: 100%;
    overflow-y: auto;
}
.gd-dash1-row[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 7px 4px;
    border-bottom: 1px solid #f1f5f9;
}
.gd-dash1-row:last-child[b-rm4n3g3zob] { border-bottom: none; }
.gd-dash1-month[b-rm4n3g3zob] { font-size: 12px; color: #1a2537; }
.gd-dash1-amt[b-rm4n3g3zob] { font-size: 12px; font-weight: 650; color: #0f172a; white-space: nowrap; }

/* =====================================================================
   Sales tab — same light "premium" card chrome as the Dashboard tab's
   panels above (.mu-card/.gd-card: white background, teal-gradient header,
   subtle border/shadow) rather than a separate dark theme, so every box
   looks consistent across tabs. DataTables + its Buttons extension are
   loaded scoped to this page only (see GainsDashboard.razor's
   <HeadContent>); the re-skin in masters-forms.css matches this same
   light look.
   ===================================================================== */
.gd-sales-wrap[b-rm4n3g3zob] { display: flex; flex-direction: column; gap: 14px; }

/* Toolbar row above the cards — hosts the Filter trigger (.bspl-filter-toggle,
   the same global class QLedger's own "FILTERS" button uses, from
   masters-forms.css) which opens the .mu-drawer slide-out panel below,
   again the same shared drawer QLedger uses for its own Filters panel. */
.gd-sales-status[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 40px 0;
    justify-content: center;
    color: #64748b;
    font-size: 13px;
}
.gd-sales-error[b-rm4n3g3zob] { color: #e11d48; }

/* Hosts the <Loader> overlay while Sales data is loading — Loader positions
   itself absolute/inset:0 against the nearest positioned ancestor, so this
   needs both position:relative and real height of its own (there's nothing
   else in this branch for it to size against otherwise). */
.gd-sales-loading[b-rm4n3g3zob] {
    position: relative;
    min-height: 420px;
}

/* Loader.razor's own overlay is a frosted white veil (for overlaying real
   content behind it elsewhere in the app) — here there's nothing behind it
   yet, so that veil just reads as a flat white box. ::deep reaches past the
   <Loader> component boundary to make just this instance's background
   properly transparent, without touching Loader.razor.css itself (which
   would affect every other page that uses it). */
.gd-sales-loading[b-rm4n3g3zob]  .gl-overlay {
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

/* First row: 3 equal-width cards (grid + pie + bar). */
.gd-sales-row[b-rm4n3g3zob] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

.gd-sales-card[b-rm4n3g3zob] {
    background: #fff;
    border-radius: 8px;
    border: 1px solid #dde3ed;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    display: flex;
    flex-direction: column;
    min-height: 380px;
    overflow: hidden;
}
/* Second row: the monthly detail grid, full width. */
.gd-sales-card-full[b-rm4n3g3zob] {
    min-height: 0;
}

.gd-sales-card-hdr[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 14px;
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom: 1px solid #cdeee4;
    flex-wrap: wrap;
}
.gd-sales-card-title[b-rm4n3g3zob] { font-size: 13px; font-weight: 650; color: #0f766e; }

.gd-sales-card-body[b-rm4n3g3zob] {
    flex: 1;
    padding: 10px 12px;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.gd-sales-chart[b-rm4n3g3zob] { width: 100%; height: 100%; min-height: 320px; }

/* Note: the DataTables (dark theme) re-skin for the two Sales-tab grids
   lives in wwwroot/CSS/masters-forms.css, NOT here. Those grids' entire
   <table>/toolbar/pagination markup is injected via raw JS innerHTML (same
   "Blazor renders an empty container div, JS owns everything inside it"
   pattern the Highcharts charts use) — Blazor's CSS Isolation only ever
   attaches its scope attribute to elements Blazor itself rendered, so any
   rule here targeting that JS-injected markup would silently never match
   (the exact bug already hit once on this page with the old hand-built SVG
   P&L chart). Only .gd-sales-card-body itself (the real, Blazor-rendered
   container div) is styled from this file; everything DataTables draws
   inside it is styled globally instead. */

/* The Sales Filter panel itself is NOT styled here — it reuses the global
   .mu-drawer/.mu-drawer-overlay/.mu-drawer-hdr/.mu-drawer-x/.mu-drawer-body/
   .mu-fld/.mu-drawer-foot/.mu-btn classes from masters-forms.css, the exact
   same slide-out drawer QLedger.razor's own "Filters" panel uses, per the
   request to match that page's filter UI rather than a centered popup. */

/* ── Responsive ── */
@media (max-width: 1100px) {
    .gd-grid[b-rm4n3g3zob] { grid-template-columns: repeat(2, 1fr); }
    .gd-sales-row[b-rm4n3g3zob] { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
    .gd-grid[b-rm4n3g3zob] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Landing/CALanding.razor.rz.scp.css */
/*
  GainsLanding.razor.css
  Scoped to the landing page content only.
  DashboardLayout provides the sidebar, topbar, and gains-content wrapper.
  No gl-root / gl-topbar / gl-sidebar / gl-body / gl-main rules here.
*/

/* ── Page-level flex column so site-strip + welcome + scroll + footer stack ── */
:root[b-1jxq4eb4kx], .gains-content[b-1jxq4eb4kx] {
    --gl-teal: #1AB99A;
}

/* Self-contained flex column wrapper owned by this page — doesn't depend
   on DashboardLayout's internal class names, so the footer reliably pins
   to the true bottom of the viewport regardless of how the layout shell
   is structured. */
.gl-page[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* Kept as a defensive fallback in case DashboardLayout still wraps pages
   in an element with this class — harmless no-op otherwise. */
:deep(.gains-content)[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    height: 100%;
}

/* ── Site strip ── */
.gl-site-strip[b-1jxq4eb4kx] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 10px 20px 8px;
    background: #fff;
    border-bottom: 1px solid #dde3ed;
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 8px;
}

/* .gl-site-strip-left-wrap and .gl-gains-toggle now live in
   common-page-chrome.css (aliased alongside .bspl-title-left /
   .bspl-gains-toggle) */

.gl-site-strip-left[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.gl-site-strip-name[b-1jxq4eb4kx] {
    font-size: 14px;
    font-weight: 700;
    color: #1AB99A;
    cursor: pointer;
    letter-spacing: 0.02em;
    transition: opacity 0.15s;
}

    .gl-site-strip-name:hover[b-1jxq4eb4kx] {
        opacity: 0.8;
        text-decoration: underline;
    }

.gl-site-strip-period[b-1jxq4eb4kx] {
    font-size: 11.5px;
    color: #64748b;
}

.gl-set-default-btn[b-1jxq4eb4kx] {
    background: none;
    border: none;
    padding: 0;
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 700;
    color: #1AB99A;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 0.04em;
    transition: opacity 0.15s;
}

    .gl-set-default-btn:hover[b-1jxq4eb4kx] {
        opacity: 0.75;
    }

.gl-site-strip-right[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.gl-change-period-label[b-1jxq4eb4kx] {
    font-size: 11.5px;
    color: #64748b;
    margin-right: 2px;
    font-weight: 500;
}

.gl-period-btn[b-1jxq4eb4kx] {
    padding: 4px 11px;
    border-radius: 4px;
    border: 1px solid #dde3ed;
    background: #fff;
    font-size: 12px;
    font-family: inherit;
    color: #374151;
    cursor: pointer;
    transition: background 0.12s;
}

    .gl-period-btn:hover[b-1jxq4eb4kx] {
        background: #f0f4f9;
    }

    .gl-period-btn.active[b-1jxq4eb4kx] {
        border-color: #9ca3af;
        font-weight: 500;
    }

/* ── Welcome bar ── */
.gl-welcome-bar[b-1jxq4eb4kx] {
    background: #f0fdf9;
    border-bottom: 1px solid #a7f3d0;
    padding: 6px 20px;
    font-size: 12px;
    color: #374151;
    flex-shrink: 0;
}

    .gl-welcome-bar strong[b-1jxq4eb4kx] {
        color: #1AB99A;
        font-weight: 700;
    }

/* ── Error banner ── */
.gl-error-banner[b-1jxq4eb4kx] {
    background: #fef2f2;
    color: #b91c1c;
    border-bottom: 1px solid #fecaca;
    padding: 8px 20px;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

/* ── Scrollable content area ── */
.gl-content-scroll[b-1jxq4eb4kx] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

    .gl-content-scroll[b-1jxq4eb4kx]::-webkit-scrollbar {
        width: 4px;
    }

    .gl-content-scroll[b-1jxq4eb4kx]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 4px;
    }

/* ── Loading ── */
.gl-loading-center[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: #1AB99A;
}

.gl-spin[b-1jxq4eb4kx] {
    animation: gl-spin-b-1jxq4eb4kx 0.85s linear infinite;
    display: inline-block;
}

.gl-spin-lg[b-1jxq4eb4kx] {
    font-size: 32px;
}

@keyframes gl-spin-b-1jxq4eb4kx {
    to {
        transform: rotate(360deg);
    }
}

/* .gl-footer now lives in common-page-chrome.css (aliased alongside .bspl-footer) */

.gl-footer-link[b-1jxq4eb4kx] {
    color: #1AB99A;
    text-decoration: none;
    font-weight: 500;
}

    .gl-footer-link:hover[b-1jxq4eb4kx] {
        text-decoration: underline;
    }

/* ── Dashboard grid ── */
.gl-dashboard[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: row;
    gap: 14px;
    padding: 16px 20px;
    align-items: stretch; /* both columns same total height */
}

.gl-left-col[b-1jxq4eb4kx],
.gl-right-col[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    flex: 1;
    min-width: 0;
}

/* Stats and Login details grow equally to fill mid row */
.gl-card-stats[b-1jxq4eb4kx],
.gl-card-login[b-1jxq4eb4kx] {
    flex: 1;
}

/* Vouchers and Monthly grow equally to fill bottom row */
.gl-card-vouchers[b-1jxq4eb4kx],
.gl-card-monthly[b-1jxq4eb4kx] {
    flex: 1;
}

.gl-col-span-2[b-1jxq4eb4kx] {
    width: 100%;
}

/* ── Cards ── */
.gl-card[b-1jxq4eb4kx] {
    background: #fff;
    border-radius: 10px;
    border: 0.5px solid #dde3ed;
}

.gl-card-site[b-1jxq4eb4kx], .gl-card-login[b-1jxq4eb4kx], .gl-card-stats[b-1jxq4eb4kx], .gl-card-monthly[b-1jxq4eb4kx], .gl-card-vouchers[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
}

/* Row 1 fixed height */
.gl-card-site[b-1jxq4eb4kx] {
    height: 240px;
}

.gl-card-login[b-1jxq4eb4kx] {
    flex: 1;
    min-height: 0;
}

.gl-card-site .gl-info-table-wrap[b-1jxq4eb4kx] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    height: 100%;
}

    .gl-card-site .gl-info-table-wrap[b-1jxq4eb4kx]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-site .gl-info-table-wrap[b-1jxq4eb4kx]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-login-scroll[b-1jxq4eb4kx] {
    max-height: 220px;
    overflow-y: auto;
    min-height: 0;
}

    .gl-card-login .gl-login-scroll[b-1jxq4eb4kx]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-login .gl-login-scroll[b-1jxq4eb4kx]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-rtable td[b-1jxq4eb4kx] {
    padding: 5px 14px;
    font-size: 12px;
}

.gl-card-login .gl-rtable th[b-1jxq4eb4kx] {
    padding: 5px 14px;
    font-size: 10.5px;
    position: sticky;
    top: 0;
    z-index: 1;
    background: #fafafa;
}

.gl-card-stats[b-1jxq4eb4kx] {
    justify-content: flex-start;
}

.gl-card-monthly .gl-months[b-1jxq4eb4kx] {
    flex: 1;
}

.gl-card-vouchers .gl-vtypes[b-1jxq4eb4kx] {
    flex: 1;
    overflow-y: auto;
    max-height: 160px;
}

    .gl-card-vouchers .gl-vtypes[b-1jxq4eb4kx]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-vouchers .gl-vtypes[b-1jxq4eb4kx]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

/* ── Card header ── */
.gl-card-hdr[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 10px 14px;
    font-size: 12px;
    font-weight: 700;
    color: #374151;
    border-bottom: 0.5px solid #f3f4f6;
    background: #fafafa;
}

    .gl-card-hdr i[b-1jxq4eb4kx] {
        color: #1AB99A;
    }

    .gl-card-hdr small[b-1jxq4eb4kx] {
        font-size: 11px;
        font-weight: 400;
        color: #9ca3af;
    }

/* ── Info table ── */
.gl-info-table[b-1jxq4eb4kx] {
    width: 100%;
    border-collapse: collapse;
}

    .gl-info-table tr[b-1jxq4eb4kx] {
        border-bottom: 0.5px solid #f3f4f6;
    }

        .gl-info-table tr:last-child[b-1jxq4eb4kx] {
            border-bottom: none;
        }

    .gl-info-table td[b-1jxq4eb4kx] {
        padding: 5px 14px;
        font-size: 12.5px;
        vertical-align: middle;
    }

.gl-info-icon[b-1jxq4eb4kx] {
    width: 32px;
    color: #9ca3af;
    font-size: 15px;
    text-align: center;
}

.gl-info-key[b-1jxq4eb4kx] {
    color: #9ca3af;
    font-weight: 400;
    width: 80px;
    font-size: 12px;
}

.gl-info-val[b-1jxq4eb4kx] {
    color: #374151;
    font-weight: 400;
}

    .gl-info-val.gl-teal[b-1jxq4eb4kx] {
        color: #1AB99A !important;
        font-weight: 500;
    }

/* ── Password row ── */
.gl-pwd[b-1jxq4eb4kx] {
    color: #9ca3af !important;
    font-size: 11px !important;
    font-style: italic;
    font-weight: 400 !important;
}

.gl-pwd-row[b-1jxq4eb4kx] {
    cursor: pointer;
    transition: background 0.12s;
}

    .gl-pwd-row:hover[b-1jxq4eb4kx] {
        background: #f8fafc;
    }

.gl-pwd-change-hint[b-1jxq4eb4kx] {
    margin-left: 10px;
    font-size: 11px;
    color: #1AB99A;
    font-weight: 600;
    border: 0.5px solid #1AB99A;
    border-radius: 4px;
    padding: 1px 7px;
    opacity: 0;
    transition: opacity 0.15s;
}

.gl-pwd-row:hover .gl-pwd-change-hint[b-1jxq4eb4kx] {
    opacity: 1;
}

/* ── Stats ── */
.gl-stat-row[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-bottom: 0.5px solid #f3f4f6;
    font-size: 12.5px;
}

    .gl-stat-row:last-child[b-1jxq4eb4kx] {
        border-bottom: none;
    }

.gl-stat-icon[b-1jxq4eb4kx] {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    background: #f0f4f9;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    color: #1AB99A;
    flex-shrink: 0;
}

.gl-stat-key[b-1jxq4eb4kx] {
    flex: 1;
    color: #374151;
}

.gl-stat-val[b-1jxq4eb4kx] {
    font-weight: 700;
    color: #1AB99A;
}

/* ── Voucher types ── */
.gl-vtypes[b-1jxq4eb4kx] {
    padding: 8px 14px;
}

.gl-vtype-row[b-1jxq4eb4kx] {
    display: grid;
    grid-template-columns: 60px 1fr 60px 1fr;
    gap: 4px;
    padding: 4px 0;
    border-bottom: 0.5px solid #f9fafb;
    font-size: 12px;
}

    .gl-vtype-row:last-child[b-1jxq4eb4kx] {
        border-bottom: none;
    }

.gl-vt-key[b-1jxq4eb4kx] {
    color: #374151;
    font-weight: 600;
}

.gl-vt-val[b-1jxq4eb4kx] {
    color: #1AB99A;
    font-weight: 700;
    text-align: right;
    padding-right: 10px;
}

/* ── FY buttons ── */
.gl-fy-btns[b-1jxq4eb4kx] {
    display: flex;
    gap: 6px;
    padding: 10px 14px;
    border-top: 0.5px solid #f3f4f6;
    background: #fafafa;
}

.gl-fy-btn[b-1jxq4eb4kx] {
    padding: 4px 10px;
    border-radius: 5px;
    border: 0.5px solid #dde3ed;
    background: #fff;
    font-size: 11px;
    font-family: inherit;
    cursor: pointer;
    color: #374151;
    transition: background 0.12s;
}

    .gl-fy-btn:hover[b-1jxq4eb4kx] {
        background: #f0f4f9;
    }

    .gl-fy-btn.active[b-1jxq4eb4kx] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

.gl-fy1-btn[b-1jxq4eb4kx] {
    margin-left: auto;
    padding: 3px 9px;
    border-radius: 5px;
    border: 0.5px solid #dde3ed;
    background: #f8fafc;
    font-size: 11px;
    font-family: inherit;
    cursor: pointer;
    color: #374151;
}

    .gl-fy1-btn.active[b-1jxq4eb4kx] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

/* ── Right table (login log) ── */
.gl-rtable[b-1jxq4eb4kx] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

    .gl-rtable th[b-1jxq4eb4kx] {
        padding: 7px 14px;
        text-align: left;
        font-size: 10.5px;
        font-weight: 600;
        color: #9ca3af;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        border-bottom: 0.5px solid #f3f4f6;
        background: #fafafa;
    }

    .gl-rtable td[b-1jxq4eb4kx] {
        padding: 8px 14px;
        border-bottom: 0.5px solid #f9fafb;
        color: #374151;
    }

    .gl-rtable tbody tr:last-child td[b-1jxq4eb4kx] {
        border-bottom: none;
    }

/* ── Monthly vouchers ── */
.gl-months[b-1jxq4eb4kx] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    padding: 10px 14px;
    gap: 2px;
}

.gl-month-row[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 4px;
    border-bottom: 0.5px solid #f9fafb;
    font-size: 12px;
}

.gl-month-name[b-1jxq4eb4kx] {
    font-weight: 600;
    color: #374151;
    min-width: 32px;
}

.gl-month-val[b-1jxq4eb4kx] {
    color: #1AB99A;
    font-weight: 700;
}

/* ── Utilities ── */
.gl-teal[b-1jxq4eb4kx] {
    color: #1AB99A !important;
}

/* ── Modals ── */
.gl-modal-overlay[b-1jxq4eb4kx] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gl-modal[b-1jxq4eb4kx] {
    background: #fff;
    border-radius: 12px;
    width: 100%;
    max-width: 420px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
    overflow: hidden;
}

.gl-modal-wide[b-1jxq4eb4kx] {
    max-width: 620px;
}

.gl-modal-header[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px 14px;
    border-bottom: 0.5px solid #f3f4f6;
}

.gl-modal-title[b-1jxq4eb4kx] {
    font-size: 16px;
    font-weight: 600;
    color: #1AB99A;
}

.gl-modal-close[b-1jxq4eb4kx] {
    background: none;
    border: none;
    font-size: 20px;
    color: #9ca3af;
    cursor: pointer;
    line-height: 1;
    padding: 0 4px;
    transition: color 0.12s;
}

    .gl-modal-close:hover[b-1jxq4eb4kx] {
        color: #374151;
    }

.gl-modal-body[b-1jxq4eb4kx] {
    padding: 20px 22px 24px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gl-modal-footer[b-1jxq4eb4kx] {
    padding: 12px 22px 16px;
    border-top: 0.5px solid #f3f4f6;
    display: flex;
    justify-content: flex-end;
}

.gl-modal-submit-btn[b-1jxq4eb4kx] {
    width: auto !important;
    padding: 9px 28px !important;
    margin-top: 0 !important;
}

/* ── Password inputs ── */
.gl-pwd-input[b-1jxq4eb4kx] {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
    box-sizing: border-box;
    background: #fafafa;
}

    .gl-pwd-input:focus[b-1jxq4eb4kx] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

    .gl-pwd-input[b-1jxq4eb4kx]::placeholder {
        color: #9ca3af;
    }

.gl-pwd-submit[b-1jxq4eb4kx] {
    width: 100%;
    padding: 11px;
    background: #1AB99A;
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s;
    margin-top: 4px;
}

    .gl-pwd-submit:hover:not(:disabled)[b-1jxq4eb4kx] {
        background: #15a389;
    }

    .gl-pwd-submit:disabled[b-1jxq4eb4kx] {
        opacity: 0.6;
        cursor: not-allowed;
    }

.gl-pwd-error[b-1jxq4eb4kx] {
    background: #fef2f2;
    color: #b91c1c;
    border: 0.5px solid #fecaca;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12.5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.gl-pwd-success[b-1jxq4eb4kx] {
    background: #f0fdf9;
    color: #065f46;
    border: 0.5px solid #a7f3d0;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12.5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Change Site modal ── */
.gl-changesite-body[b-1jxq4eb4kx] {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    padding: 0 !important;
}

.gl-cs-left[b-1jxq4eb4kx] {
    border-right: 1px solid #f3f4f6;
    display: flex;
    flex-direction: column;
}

.gl-cs-col-hdr[b-1jxq4eb4kx] {
    padding: 10px 16px;
    font-size: 11.5px;
    color: #64748b;
    background: #fafafa;
    border-bottom: 1px solid #f3f4f6;
    font-weight: 500;
}

.gl-cs-site-list[b-1jxq4eb4kx] {
    flex: 1;
    overflow-y: auto;
    max-height: 220px;
    padding: 4px 0;
}

.gl-cs-site-row[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 9px 16px;
    cursor: pointer;
    font-size: 13px;
    transition: background 0.12s;
    border-bottom: 0.5px solid #f9fafb;
}

    .gl-cs-site-row:hover[b-1jxq4eb4kx] {
        background: #f0f4f9;
    }

    .gl-cs-site-row.active[b-1jxq4eb4kx] {
        background: #f0fdf9;
        color: #1AB99A;
        font-weight: 600;
    }

.gl-cs-site-name[b-1jxq4eb4kx] {
    flex: 1;
    color: inherit;
}

.gl-cs-site-id[b-1jxq4eb4kx] {
    font-size: 11px;
    color: #9ca3af;
    margin-left: 8px;
}

.gl-cs-right[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px 16px;
}

.gl-cs-date-row[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    padding: 6px 10px;
    background: #fafafa;
}

.gl-cs-yr-btn[b-1jxq4eb4kx] {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: 1.5px solid #1AB99A;
    background: none;
    color: #1AB99A;
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s, color 0.12s;
    font-family: inherit;
}

    .gl-cs-yr-btn:hover[b-1jxq4eb4kx] {
        background: #1AB99A;
        color: #fff;
    }

.gl-cs-date-input[b-1jxq4eb4kx] {
    flex: 1;
    border: none;
    background: none;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
}

.gl-cs-cal-icon[b-1jxq4eb4kx] {
    font-size: 16px;
    color: #9ca3af;
}

.gl-cs-fy-btns[b-1jxq4eb4kx] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.gl-cs-fy-btn[b-1jxq4eb4kx] {
    padding: 4px 10px;
    border-radius: 5px;
    border: 1px solid #dde3ed;
    background: #fff;
    font-size: 11.5px;
    font-family: inherit;
    color: #374151;
    cursor: pointer;
}

    .gl-cs-fy-btn:hover[b-1jxq4eb4kx] {
        background: #f0fdf9;
        border-color: #1AB99A;
        color: #1AB99A;
    }

/* ── Set Default modal ── */
.gl-sd-table[b-1jxq4eb4kx] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .gl-sd-table th[b-1jxq4eb4kx] {
        padding: 8px 12px;
        text-align: left;
        font-size: 12px;
        font-weight: 600;
        color: #374151;
        border-bottom: 1px solid #f3f4f6;
        background: #fafafa;
    }

    .gl-sd-table td[b-1jxq4eb4kx] {
        padding: 10px 12px;
    }

.gl-sd-select[b-1jxq4eb4kx] {
    width: 100%;
    padding: 7px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    background: #fff;
    outline: none;
    cursor: pointer;
}

    .gl-sd-select:focus[b-1jxq4eb4kx] {
        border-color: #1AB99A;
    }

.gl-sd-date-cell[b-1jxq4eb4kx] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    padding: 5px 10px;
    background: #fff;
    min-width: 160px;
    cursor: pointer;
}

    .gl-sd-date-cell:hover[b-1jxq4eb4kx], .gl-sd-date-cell:focus-within[b-1jxq4eb4kx] {
        border-color: #1AB99A;
    }

.gl-sd-cal-icon[b-1jxq4eb4kx] {
    font-size: 16px;
    color: #1AB99A;
    flex-shrink: 0;
    pointer-events: none;
}

.gl-sd-date-input[b-1jxq4eb4kx] {
    flex: 1;
    border: none;
    background: none;
    font-family: inherit;
    font-size: 13px;
    color: #374151;
    outline: none;
    cursor: pointer;
    min-width: 120px;
    padding: 0;
}

    .gl-sd-date-input[b-1jxq4eb4kx]::-webkit-calendar-picker-indicator {
        cursor: pointer;
        opacity: 0.7;
    }

        .gl-sd-date-input[b-1jxq4eb4kx]::-webkit-calendar-picker-indicator:hover {
            opacity: 1;
        }

/* ── Responsive ── */
@media (max-width: 900px) {
    /* BUG FIX: .gl-dashboard is a flex container (flex-direction:row), not
       a grid — "grid-template-columns" here had zero effect, which is why
       the left/right panels never actually stacked on mobile. */
    .gl-dashboard[b-1jxq4eb4kx] {
        flex-direction: column;
        padding: 12px 14px;
        gap: 12px;
    }

    .gl-left-col[b-1jxq4eb4kx],
    .gl-right-col[b-1jxq4eb4kx] {
        gap: 12px;
    }

    .gl-toggle-label[b-1jxq4eb4kx] {
        display: none;
    }

    .gl-gains-toggle[b-1jxq4eb4kx] {
        padding: 8px 10px;
    }

    /* Site strip — let left/right groups stack instead of squeezing */
    .gl-site-strip[b-1jxq4eb4kx] {
        padding: 8px 12px 6px;
        gap: 6px;
    }

    .gl-site-strip-right[b-1jxq4eb4kx] {
        gap: 4px;
        width: 100%;
    }

    .gl-change-period-label[b-1jxq4eb4kx] {
        width: 100%;
        margin-bottom: 2px;
    }

    .gl-period-btn[b-1jxq4eb4kx] {
        padding: 4px 9px;
        font-size: 11px;
    }

    .gl-welcome-bar[b-1jxq4eb4kx] {
        padding: 6px 12px;
        font-size: 11px;
        line-height: 1.5;
    }

    .gl-error-banner[b-1jxq4eb4kx] {
        padding: 8px 12px;
        font-size: 11px;
    }

    /* Fixed-height panels are sized for desktop — shrink them so they
       don't dominate a small screen */
    .gl-card-site[b-1jxq4eb4kx],
    .gl-card-image[b-1jxq4eb4kx] {
        height: 180px;
    }

    .gl-card-hdr[b-1jxq4eb4kx] {
        padding: 8px 12px;
        font-size: 11px;
    }

    /* Voucher-type pairs (2 per row) get tight on narrow phones — with
       only 2 explicit columns, the 4 spans per row (key,val,key,val)
       auto-wrap into 2 stacked rows instead of being hidden. */
    .gl-vtype-row[b-1jxq4eb4kx] {
        grid-template-columns: 1fr 1fr;
        row-gap: 2px;
    }

    /* Monthly vouchers — 3 columns is cramped on phones */
    .gl-months[b-1jxq4eb4kx] {
        grid-template-columns: 1fr 1fr;
        padding: 8px 10px;
    }

    .gl-info-table td[b-1jxq4eb4kx] {
        padding: 5px 10px;
        font-size: 12px;
    }

    .gl-info-key[b-1jxq4eb4kx] {
        width: 64px;
    }
}

@media (max-width: 480px) {
    .gl-site-strip-name[b-1jxq4eb4kx] {
        font-size: 13px;
    }

    .gl-card-site[b-1jxq4eb4kx],
    .gl-card-image[b-1jxq4eb4kx] {
        height: 150px;
    }

    .gl-months[b-1jxq4eb4kx] {
        grid-template-columns: 1fr;
    }

    .gl-fy-btns[b-1jxq4eb4kx],
    .gl-fy-btn[b-1jxq4eb4kx] {
        font-size: 10.5px;
    }
}

/* ── Right column wrapper — image + login stacked ── */
.gl-right-col[b-1jxq4eb4kx] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ── Site image card ── */
.gl-card-image[b-1jxq4eb4kx] {
    padding: 0;
    overflow: hidden;
    border-radius: 10px;
    height: 240px;
    flex-shrink: 0;
}

.gl-site-image[b-1jxq4eb4kx] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.cal-badge[b-1jxq4eb4kx] {
    background: linear-gradient(135deg, #f97316, #db2777);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    font-weight: 800;
    letter-spacing: .3px;
}
/* /Components/Pages/Landing/GainsLanding.razor.rz.scp.css */
/*
  GainsLanding.razor.css
  Scoped to the landing page content only.
  DashboardLayout provides the sidebar, topbar, and gains-content wrapper.
  No gl-root / gl-topbar / gl-sidebar / gl-body / gl-main rules here.
*/

/* ── Page-level flex column so site-strip + welcome + scroll + footer stack ── */
:root[b-dv6ihzvhpq], .gains-content[b-dv6ihzvhpq] {
    --gl-teal: #1AB99A;
}

/* Self-contained flex column wrapper owned by this page — doesn't depend
   on DashboardLayout's internal class names, so the footer reliably pins
   to the true bottom of the viewport regardless of how the layout shell
   is structured. */
.gl-page[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* Kept as a defensive fallback in case DashboardLayout still wraps pages
   in an element with this class — harmless no-op otherwise. */
:deep(.gains-content)[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    height: 100%;
}

/* ── Site strip ── */
.gl-site-strip[b-dv6ihzvhpq] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 10px 20px 8px;
    background: #fff;
    border-bottom: 1px solid #dde3ed;
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 8px;
}

/* .gl-site-strip-left-wrap and .gl-gains-toggle now live in
   common-page-chrome.css (aliased alongside .bspl-title-left /
   .bspl-gains-toggle) */

.gl-site-strip-left[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.gl-site-strip-name[b-dv6ihzvhpq] {
    font-size: 14px;
    font-weight: 700;
    color: #1AB99A;
    cursor: pointer;
    letter-spacing: 0.02em;
    transition: opacity 0.15s;
}

    .gl-site-strip-name:hover[b-dv6ihzvhpq] {
        opacity: 0.8;
        text-decoration: underline;
    }

.gl-site-strip-period[b-dv6ihzvhpq] {
    font-size: 11.5px;
    color: #64748b;
}

    .gl-site-strip-period.gl-period-old-active[b-dv6ihzvhpq] {
        color: #16a34a;
        font-weight: 700;
    }

.gl-set-default-btn[b-dv6ihzvhpq] {
    background: none;
    border: none;
    padding: 0;
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 700;
    color: #1AB99A;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: 0.04em;
    transition: opacity 0.15s;
    text-align: left;
}

    .gl-set-default-btn:hover[b-dv6ihzvhpq] {
        opacity: 0.75;
    }

.gl-site-strip-right[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.gl-change-period-label[b-dv6ihzvhpq] {
    font-size: 11.5px;
    color: #64748b;
    margin-right: 2px;
    font-weight: 500;
}

.gl-period-btn[b-dv6ihzvhpq] {
    padding: 4px 11px;
    border-radius: 4px;
    border: 1px solid #dde3ed;
    background: #fff;
    font-size: 12px;
    font-family: inherit;
    color: #374151;
    cursor: pointer;
    transition: background 0.12s;
}

    .gl-period-btn:hover[b-dv6ihzvhpq] {
        background: #f0f4f9;
    }

.gl-logout-btn[b-dv6ihzvhpq] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    margin-left: 4px;
    border-radius: 4px;
    border: 1px solid #dde3ed;
    background: #fff;
    color: #64748b;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .gl-logout-btn:hover[b-dv6ihzvhpq] {
        background: #fef2f2;
        border-color: #fca5a5;
        color: #dc2626;
    }

.gl-period-btn.active[b-dv6ihzvhpq] {
    background: #16a34a;
    color: #fff;
    border-color: #16a34a;
    font-weight: 600;
}

/* ── Welcome bar ── */
.gl-welcome-bar[b-dv6ihzvhpq] {
    background: #f0fdf9;
    border-bottom: 1px solid #a7f3d0;
    padding: 6px 20px;
    font-size: 12px;
    color: #374151;
    flex-shrink: 0;
}

    .gl-welcome-bar strong[b-dv6ihzvhpq] {
        color: #1AB99A;
        font-weight: 700;
    }

/* ── Error banner ── */
.gl-error-banner[b-dv6ihzvhpq] {
    background: #fef2f2;
    color: #b91c1c;
    border-bottom: 1px solid #fecaca;
    padding: 8px 20px;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

/* ── Scrollable content area ── */
.gl-content-scroll[b-dv6ihzvhpq] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

    .gl-content-scroll[b-dv6ihzvhpq]::-webkit-scrollbar {
        width: 4px;
    }

    .gl-content-scroll[b-dv6ihzvhpq]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 4px;
    }

/* ── Loading ── */
.gl-loading-center[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: #1AB99A;
}

.gl-spin[b-dv6ihzvhpq] {
    animation: gl-spin-b-dv6ihzvhpq 0.85s linear infinite;
    display: inline-block;
}

.gl-spin-lg[b-dv6ihzvhpq] {
    font-size: 32px;
}

@keyframes gl-spin-b-dv6ihzvhpq {
    to {
        transform: rotate(360deg);
    }
}

/* .gl-footer now lives in common-page-chrome.css (aliased alongside .bspl-footer) */

.gl-footer-link[b-dv6ihzvhpq] {
    color: #1AB99A;
    text-decoration: none;
    font-weight: 500;
}

    .gl-footer-link:hover[b-dv6ihzvhpq] {
        text-decoration: underline;
    }

/* ── Dashboard grid ── */
.gl-dashboard[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: row;
    gap: 14px;
    padding: 16px 20px;
    align-items: stretch; /* both columns same total height */
}

.gl-left-col[b-dv6ihzvhpq],
.gl-right-col[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    flex: 1;
    min-width: 0;
}

/* Stats and Login details grow equally to fill mid row */
.gl-card-stats[b-dv6ihzvhpq],
.gl-card-login[b-dv6ihzvhpq] {
    flex: 1;
}

/* Vouchers and Monthly grow equally to fill bottom row */
.gl-card-vouchers[b-dv6ihzvhpq],
.gl-card-monthly[b-dv6ihzvhpq] {
    flex: 1;
    min-height: 0;
}

.gl-col-span-2[b-dv6ihzvhpq] {
    width: 100%;
}

/* ── Cards ── */
.gl-card[b-dv6ihzvhpq] {
    background: #fff;
    border-radius: 0;
    border: 0.5px solid #dde3ed;
}

.gl-card-site[b-dv6ihzvhpq], .gl-card-login[b-dv6ihzvhpq], .gl-card-stats[b-dv6ihzvhpq], .gl-card-monthly[b-dv6ihzvhpq], .gl-card-vouchers[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
}

/* Row 1 fixed height */
.gl-card-site[b-dv6ihzvhpq] {
    height: 262px;
}

.gl-card-login[b-dv6ihzvhpq] {
    flex: 1;
    min-height: 0;
}

.gl-card-site .gl-info-table-wrap[b-dv6ihzvhpq] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    height: 100%;
}

    .gl-card-site .gl-info-table-wrap[b-dv6ihzvhpq]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-site .gl-info-table-wrap[b-dv6ihzvhpq]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-login-scroll[b-dv6ihzvhpq] {
    max-height: 220px;
    overflow-y: auto;
    min-height: 0;
}

    .gl-card-login .gl-login-scroll[b-dv6ihzvhpq]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-login .gl-login-scroll[b-dv6ihzvhpq]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-rtable td[b-dv6ihzvhpq] {
    padding: 5px 14px;
    font-size: 12px;
}

.gl-card-login .gl-rtable th[b-dv6ihzvhpq] {
    padding: 5px 14px;
    font-size: 10.5px;
    position: sticky;
    top: 0;
    z-index: 1;
    background: #fafafa;
}

.gl-card-stats[b-dv6ihzvhpq] {
    justify-content: flex-start;
}

.gl-card-monthly .gl-months[b-dv6ihzvhpq] {
    flex: 1;
}

.gl-card-vouchers .gl-vtypes[b-dv6ihzvhpq] {
    flex: 1;
    overflow-y: auto;
    max-height: 200px;
}

    .gl-card-vouchers .gl-vtypes[b-dv6ihzvhpq]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-vouchers .gl-vtypes[b-dv6ihzvhpq]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

/* ── Card header ── */
.gl-card-hdr[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 10px 14px;
    font-size: 12px;
    font-weight: 700;
    color: #374151;
    border-bottom: 0.5px solid #f3f4f6;
    background: #fafafa;
}

    .gl-card-hdr i[b-dv6ihzvhpq] {
        color: #1AB99A;
    }

.gl-hdr-icon-badge[b-dv6ihzvhpq] {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    background: #f0f4f9;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    color: #1AB99A;
    flex-shrink: 0;
}

    .gl-hdr-icon-badge i[b-dv6ihzvhpq] {
        font-weight: 400;
    }

.gl-card-hdr small[b-dv6ihzvhpq] {
    font-size: 11px;
    font-weight: 400;
    color: #9ca3af;
}

/* ── Info table ── */
.gl-info-table[b-dv6ihzvhpq] {
    width: 100%;
    border-collapse: collapse;
}

    .gl-info-table tr[b-dv6ihzvhpq] {
        border-bottom: 0.5px solid #f3f4f6;
    }

        .gl-info-table tr:last-child[b-dv6ihzvhpq] {
            border-bottom: none;
        }

    .gl-info-table td[b-dv6ihzvhpq] {
        padding: 5px 13px;
        font-size: 12.5px;
        vertical-align: middle;
    }

        .gl-info-table td.gl-info-icon[b-dv6ihzvhpq] {
            width: 26px;
            padding-left: 14px;
            padding-right: 10px;
            vertical-align: middle;
        }

.gl-info-icon-badge[b-dv6ihzvhpq] {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    background: #f0f4f9;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 400; /* self-hosted Tabler Icons has no bold face - inherited
                          bold leaves the <i> with no glyph to draw (blank).
                          Same bug already fixed on .gl-stat-icon i below.
                          (These rows now use FontAwesome, not Tabler, but
                          keeping this explicit avoids the same class of bug
                          if inherited weight ever changes upstream.) */
    color: #1AB99A;
}

.gl-info-table td.gl-info-key[b-dv6ihzvhpq] {
    padding-left: 0;
    color: #9ca3af;
    font-weight: 400;
    width: 80px;
    font-size: 12px;
}

.gl-info-val[b-dv6ihzvhpq] {
    color: #374151;
    font-weight: 400;
}

    .gl-info-val.gl-teal[b-dv6ihzvhpq] {
        color: #1AB99A !important;
        font-weight: 500;
    }

/* ── Password row ── */
.gl-pwd[b-dv6ihzvhpq] {
    color: #9ca3af !important;
    font-size: 11px !important;
    font-style: italic;
    font-weight: 400 !important;
}

.gl-pwd-row[b-dv6ihzvhpq] {
    cursor: pointer;
    transition: background 0.12s;
}

    .gl-pwd-row:hover[b-dv6ihzvhpq] {
        background: #f8fafc;
    }

.gl-pwd-change-hint[b-dv6ihzvhpq] {
    margin-left: 10px;
    font-size: 11px;
    color: #1AB99A;
    font-weight: 600;
    border: 0.5px solid #1AB99A;
    border-radius: 4px;
    padding: 1px 7px;
    opacity: 0;
    transition: opacity 0.15s;
}

.gl-pwd-row:hover .gl-pwd-change-hint[b-dv6ihzvhpq] {
    opacity: 1;
}

/* ── Stats ── */
.gl-stat-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-bottom: 0.5px solid #f3f4f6;
    font-size: 12.5px;
}

    .gl-stat-row:last-child[b-dv6ihzvhpq] {
        border-bottom: none;
    }

.gl-stat-icon[b-dv6ihzvhpq] {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    background: #f0f4f9;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700; /* bold only matters for plain L/G text below */
    color: #1AB99A;
    flex-shrink: 0;
}

    /* FIX: ti-user/ti-package/ti-box (Logins/ItemGroups/Items) were rendering
   as blank boxes here while ti-user renders fine in .gl-info-icon a few
   rows up on this same page. Only difference: .gl-stat-icon forces
   font-weight:700 on its content. Self-hosted Tabler Icons has no bold
   face, so the inherited bold weight leaves the <i> with no glyph to
   draw — blank. Plain "L"/"G" text nodes aren't icon-font glyphs so they
   were unaffected and rendered bold as intended. Reset weight on the <i>
   only, so letters stay bold and icons get their normal-weight glyph. */
    .gl-stat-icon i[b-dv6ihzvhpq] {
        font-weight: 400;
        font-size: 13px;
    }

.gl-stat-key[b-dv6ihzvhpq] {
    flex: 1;
    color: #374151;
}

.gl-stat-val[b-dv6ihzvhpq] {
    font-weight: 700;
    color: #1AB99A;
}

/* ── Voucher types ── */
.gl-vtypes[b-dv6ihzvhpq] {
    padding: 8px 14px;
}

.gl-vtype-row[b-dv6ihzvhpq] {
    display: grid;
    grid-template-columns: 70px 1fr 70px 1fr;
    column-gap: 4px;
    padding: 9px 0;
    border-bottom: 0.5px solid #f3f4f6;
    font-size: 13px;
    line-height: 1.2;
}

    .gl-vtype-row:last-child[b-dv6ihzvhpq] {
        border-bottom: none;
    }

.gl-vt-key[b-dv6ihzvhpq] {
    color: #3576d8;
    font-weight: 600;
    white-space: nowrap;
}

    .gl-vt-key:nth-child(3)[b-dv6ihzvhpq] {
        padding-left: 14px;
        border-left: 0.5px solid #f3f4f6;
    }

.gl-vt-val[b-dv6ihzvhpq] {
    color: #1f2937;
    font-weight: 700;
    text-align: right;
    padding-right: 10px;
    font-variant-numeric: tabular-nums;
}

.gl-vt-val-zero[b-dv6ihzvhpq] {
    color: #cbd5e1;
    font-weight: 500;
}

/* ── FY buttons ── */
.gl-fy-btns[b-dv6ihzvhpq] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 14px;
    border-top: 0.5px solid #f3f4f6;
    background: #fafafa;
}

.gl-fy-btn[b-dv6ihzvhpq] {
    padding: 4px 10px;
    border-radius: 5px;
    border: 0.5px solid #dde3ed;
    background: #fff;
    font-size: 11px;
    font-family: inherit;
    cursor: pointer;
    color: #374151;
    transition: background 0.12s;
}

    .gl-fy-btn:hover[b-dv6ihzvhpq] {
        background: #f0f4f9;
    }

    .gl-fy-btn.active[b-dv6ihzvhpq] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

.gl-fy1-btn[b-dv6ihzvhpq] {
    margin-left: auto;
    padding: 3px 9px;
    border-radius: 5px;
    border: 0.5px solid #dde3ed;
    background: #f8fafc;
    font-size: 11px;
    font-family: inherit;
    cursor: pointer;
    color: #374151;
}

    .gl-fy1-btn.active[b-dv6ihzvhpq] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

/* ── Right table (login log) ── */
.gl-rtable[b-dv6ihzvhpq] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

    .gl-rtable th[b-dv6ihzvhpq] {
        padding: 7px 14px;
        text-align: left;
        font-size: 10.5px;
        font-weight: 600;
        color: #9ca3af;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        border-bottom: 0.5px solid #f3f4f6;
        background: #fafafa;
    }

    .gl-rtable td[b-dv6ihzvhpq] {
        padding: 8px 14px;
        border-bottom: 0.5px solid #f9fafb;
        color: #374151;
    }

    .gl-rtable tbody tr:last-child td[b-dv6ihzvhpq] {
        border-bottom: none;
    }

/* ── Monthly vouchers ── */
.gl-months[b-dv6ihzvhpq] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    padding: 6px 14px 10px;
    column-gap: 20px;
    row-gap: 0;
}

.gl-month-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 7px 2px;
    border-bottom: 0.5px solid #f3f4f6;
    font-size: 12.5px;
    line-height: 1.2;
}

    /* Vertical divider between the 3 grid columns, table-style */
    .gl-month-row:nth-child(3n+2)[b-dv6ihzvhpq],
    .gl-month-row:nth-child(3n+3)[b-dv6ihzvhpq] {
        border-left: 0.5px solid #f3f4f6;
        padding-left: 14px;
    }

.gl-month-name[b-dv6ihzvhpq] {
    font-weight: 600;
    color: #374151;
    white-space: nowrap;
}

.gl-month-val[b-dv6ihzvhpq] {
    color: #1AB99A;
    font-weight: 700;
    text-align: right;
    min-width: 34px;
    font-variant-numeric: tabular-nums;
}

.gl-month-val-zero[b-dv6ihzvhpq] {
    color: #cbd5e1;
    font-weight: 500;
}

/* ── Utilities ── */
.gl-teal[b-dv6ihzvhpq] {
    color: #1AB99A !important;
}

/* ── Modals ── */
.gl-modal-overlay[b-dv6ihzvhpq] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gl-logout-modal[b-dv6ihzvhpq] {
    background: #fff;
    border-radius: 14px;
    padding: 32px 28px 24px;
    width: min(320px, 90vw);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    box-shadow: 0 20px 50px rgba(0,0,0,.25);
}

.gl-logout-icon-badge[b-dv6ihzvhpq] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #fef2f2;
    color: #dc2626;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    margin-bottom: 16px;
}

.gl-logout-title[b-dv6ihzvhpq] {
    font-size: 19px;
    font-weight: 700;
    color: #1e293b;
    margin-bottom: 6px;
}

.gl-logout-sub[b-dv6ihzvhpq] {
    font-size: 13px;
    color: #64748b;
    margin-bottom: 22px;
}

.gl-logout-confirm-btn[b-dv6ihzvhpq] {
    width: 100%;
    padding: 11px 0;
    border: none;
    border-radius: 8px;
    background: #dc2626;
    color: #fff;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    margin-bottom: 10px;
    transition: background .12s;
}

    .gl-logout-confirm-btn:hover[b-dv6ihzvhpq] {
        background: #b91c1c;
    }

.gl-logout-cancel-btn[b-dv6ihzvhpq] {
    width: 100%;
    padding: 11px 0;
    border: none;
    border-radius: 8px;
    background: #f1f5f9;
    color: #334155;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s;
}

    .gl-logout-cancel-btn:hover[b-dv6ihzvhpq] {
        background: #e2e8f0;
    }

.gl-modal[b-dv6ihzvhpq] {
    background: #fff;
    border-radius: 12px;
    width: 100%;
    max-width: 420px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
    overflow: hidden;
}

.gl-modal-wide[b-dv6ihzvhpq] {
    max-width: 620px;
}

.gl-modal-header[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px 14px;
    border-bottom: 0.5px solid #f3f4f6;
}

.gl-modal-title[b-dv6ihzvhpq] {
    font-size: 16px;
    font-weight: 600;
    color: #1AB99A;
}

.gl-modal-close[b-dv6ihzvhpq] {
    background: none;
    border: none;
    font-size: 20px;
    color: #9ca3af;
    cursor: pointer;
    line-height: 1;
    padding: 0 4px;
    transition: color 0.12s;
}

    .gl-modal-close:hover[b-dv6ihzvhpq] {
        color: #374151;
    }

.gl-modal-body[b-dv6ihzvhpq] {
    padding: 20px 22px 24px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gl-modal-footer[b-dv6ihzvhpq] {
    padding: 12px 22px 16px;
    border-top: 0.5px solid #f3f4f6;
    display: flex;
    justify-content: flex-end;
}

.gl-modal-submit-btn[b-dv6ihzvhpq] {
    width: auto !important;
    padding: 9px 28px !important;
    margin-top: 0 !important;
}

/* ── Password inputs ── */
.gl-pwd-input[b-dv6ihzvhpq] {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
    box-sizing: border-box;
    background: #fafafa;
}

    .gl-pwd-input:focus[b-dv6ihzvhpq] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

    .gl-pwd-input[b-dv6ihzvhpq]::placeholder {
        color: #9ca3af;
    }

.gl-pwd-submit[b-dv6ihzvhpq] {
    width: 100%;
    padding: 11px;
    background: #1AB99A;
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s;
    margin-top: 4px;
}

    .gl-pwd-submit:hover:not(:disabled)[b-dv6ihzvhpq] {
        background: #15a389;
    }

    .gl-pwd-submit:disabled[b-dv6ihzvhpq] {
        opacity: 0.6;
        cursor: not-allowed;
    }

.gl-pwd-error[b-dv6ihzvhpq] {
    background: #fef2f2;
    color: #b91c1c;
    border: 0.5px solid #fecaca;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12.5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.gl-pwd-success[b-dv6ihzvhpq] {
    background: #f0fdf9;
    color: #065f46;
    border: 0.5px solid #a7f3d0;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12.5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Change Site modal ── */
.gl-changesite-body[b-dv6ihzvhpq] {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    padding: 0 !important;
}

.gl-cs-left[b-dv6ihzvhpq] {
    border-right: 1px solid #f3f4f6;
    display: flex;
    flex-direction: column;
}

.gl-cs-col-hdr[b-dv6ihzvhpq] {
    padding: 10px 16px;
    font-size: 11.5px;
    color: #64748b;
    background: #fafafa;
    border-bottom: 1px solid #f3f4f6;
    font-weight: 500;
}

.gl-cs-site-list[b-dv6ihzvhpq] {
    flex: 1;
    overflow-y: auto;
    max-height: 220px;
    padding: 4px 0;
}

.gl-cs-site-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 9px 16px;
    cursor: pointer;
    font-size: 13px;
    transition: background 0.12s;
    border-bottom: 0.5px solid #f9fafb;
}

    .gl-cs-site-row:hover[b-dv6ihzvhpq] {
        background: #f0f4f9;
    }

    .gl-cs-site-row.active[b-dv6ihzvhpq] {
        background: #f0fdf9;
        color: #1AB99A;
        font-weight: 600;
    }

.gl-cs-site-name[b-dv6ihzvhpq] {
    flex: 1;
    color: inherit;
}

.gl-cs-site-id[b-dv6ihzvhpq] {
    font-size: 11px;
    color: #9ca3af;
    margin-left: 8px;
}

.gl-cs-right[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px 16px;
}

.gl-cs-date-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    padding: 6px 10px;
    background: #fafafa;
}

.gl-cs-yr-btn[b-dv6ihzvhpq] {
    width: 24px;
    height: 24px;
    padding: 0;
    margin: 0;
    border-radius: 50%;
    border: 1.5px solid #1AB99A;
    background: none;
    color: #1AB99A;
    font-size: 16px;
    font-weight: 700;
    line-height: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s, color 0.12s;
    font-family: inherit;
    padding-bottom: 3px;
}

    .gl-cs-yr-btn:hover[b-dv6ihzvhpq] {
        background: #1AB99A;
        color: #fff;
    }

.gl-cs-date-input[b-dv6ihzvhpq] {
    flex: 1;
    border: none;
    background: none;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
}

.gl-cs-cal-icon[b-dv6ihzvhpq] {
    font-size: 16px;
    color: #9ca3af;
}

.gl-cs-fy-btns[b-dv6ihzvhpq] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.gl-cs-fy-btn[b-dv6ihzvhpq] {
    padding: 4px 10px;
    border-radius: 5px;
    border: 1px solid #dde3ed;
    background: #fff;
    font-size: 11.5px;
    font-family: inherit;
    color: #374151;
    cursor: pointer;
}

    .gl-cs-fy-btn:hover[b-dv6ihzvhpq] {
        background: #f0fdf9;
        border-color: #1AB99A;
        color: #1AB99A;
    }

/* ── Set Default modal ── */
.gl-sd-table[b-dv6ihzvhpq] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .gl-sd-table th[b-dv6ihzvhpq] {
        padding: 8px 12px;
        text-align: left;
        font-size: 12px;
        font-weight: 600;
        color: #374151;
        border-bottom: 1px solid #f3f4f6;
        background: #fafafa;
    }

    .gl-sd-table td[b-dv6ihzvhpq] {
        padding: 10px 12px;
    }

.gl-sd-select[b-dv6ihzvhpq] {
    width: 100%;
    padding: 7px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    background: #fff;
    outline: none;
    cursor: pointer;
}

    .gl-sd-select:focus[b-dv6ihzvhpq] {
        border-color: #1AB99A;
    }

.gl-sd-date-cell[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    padding: 5px 10px;
    background: #fff;
    min-width: 160px;
    cursor: pointer;
}

    .gl-sd-date-cell:hover[b-dv6ihzvhpq], .gl-sd-date-cell:focus-within[b-dv6ihzvhpq] {
        border-color: #1AB99A;
    }

.gl-sd-cal-icon[b-dv6ihzvhpq] {
    font-size: 16px;
    color: #1AB99A;
    flex-shrink: 0;
    pointer-events: none;
}

.gl-sd-date-input-wrap[b-dv6ihzvhpq] {
    position: relative;
    flex: 1;
    display: flex;
    align-items: center;
    min-width: 0;
}

.gl-sd-date-display[b-dv6ihzvhpq] {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    font-family: inherit;
    font-size: 13px;
    color: #374151;
    white-space: nowrap;
}

.gl-sd-date-input[b-dv6ihzvhpq] {
    flex: 1;
    border: none;
    background: none;
    font-family: inherit;
    font-size: 13px;
    color: transparent; /* real text hidden — .gl-sd-date-display shows the dd-MMM-yyyy version instead */
    caret-color: transparent;
    outline: none;
    cursor: pointer;
    min-width: 120px;
    padding: 0;
}

.gl-sd-date-input-plain[b-dv6ihzvhpq] {
    /* Period Lock has no overlay span (unlike Set Default's From/To) — it
       needs the native input's own text visible, so undo the transparent
       trick just for this instance. */
    color: #374151;
    caret-color: auto;
}

.gl-sd-date-input[b-dv6ihzvhpq]::-webkit-calendar-picker-indicator {
    /* whole box now opens the picker on click (see onclick="this.showPicker()"
           in the markup) — the browser's own tiny icon is redundant, hidden but
           still present/clickable so nothing breaks if showPicker() is unsupported */
    opacity: 0;
    cursor: pointer;
}

.gl-sd-date-input[b-dv6ihzvhpq]::selection {
    /* On focus, Chrome auto-highlights a date segment (e.g. the year) with
           its default blue selection style, and that rendering ignores the
           color:transparent above — it bled through as a stray blue box over
           .gl-sd-date-display. readonly would stop it but also breaks
           showPicker() (throws InvalidStateError on non-mutable inputs), so
           this neutralizes just the highlight's paint instead. */
    background: transparent;
    color: transparent;
}

/* ── Responsive ── */
@media (max-width: 900px) {
    /* BUG FIX: .gl-dashboard is a flex container (flex-direction:row), not
       a grid — "grid-template-columns" here had zero effect, which is why
       the left/right panels never actually stacked on mobile. */
    .gl-dashboard[b-dv6ihzvhpq] {
        flex-direction: column;
        padding: 12px 14px;
        gap: 12px;
    }

    .gl-left-col[b-dv6ihzvhpq],
    .gl-right-col[b-dv6ihzvhpq] {
        gap: 12px;
    }

    .gl-toggle-label[b-dv6ihzvhpq] {
        display: none;
    }

    .gl-gains-toggle[b-dv6ihzvhpq] {
        padding: 8px 10px;
    }

    /* Site strip — let left/right groups stack instead of squeezing */
    .gl-site-strip[b-dv6ihzvhpq] {
        padding: 8px 12px 6px;
        gap: 6px;
    }

    .gl-site-strip-right[b-dv6ihzvhpq] {
        gap: 4px;
        width: 100%;
    }

    .gl-change-period-label[b-dv6ihzvhpq] {
        width: 100%;
        margin-bottom: 2px;
    }

    .gl-period-btn[b-dv6ihzvhpq] {
        padding: 4px 9px;
        font-size: 11px;
    }

    .gl-welcome-bar[b-dv6ihzvhpq] {
        padding: 6px 12px;
        font-size: 11px;
        line-height: 1.5;
    }

    .gl-error-banner[b-dv6ihzvhpq] {
        padding: 8px 12px;
        font-size: 11px;
    }

    /* Fixed-height panels are sized for desktop — shrink them so they
       don't dominate a small screen */
    .gl-card-site[b-dv6ihzvhpq],
    .gl-card-image[b-dv6ihzvhpq] {
        height: 180px;
    }

    .gl-card-hdr[b-dv6ihzvhpq] {
        padding: 8px 12px;
        font-size: 11px;
    }

    /* Voucher-type pairs (2 per row on desktop) stack on narrow phones —
       key/val columns kept proportional (not equal-width) so each entry
       still reads as "key left, value right" instead of centered oddly.
       The desktop vertical divider (border-left on the 2nd key) only makes
       sense side-by-side, so it's swapped for a top border between the
       two stacked entries instead. */
    .gl-vtype-row[b-dv6ihzvhpq] {
        grid-template-columns: 70px 1fr;
        row-gap: 6px;
        padding: 8px 0;
    }

    .gl-vt-key:nth-child(3)[b-dv6ihzvhpq] {
        border-left: none;
        padding-left: 0;
        padding-top: 6px;
        border-top: 0.5px solid #f3f4f6;
    }

    .gl-vt-val:nth-child(4)[b-dv6ihzvhpq] {
        padding-top: 6px;
        border-top: 0.5px solid #f3f4f6;
    }

    /* Monthly vouchers — 3 columns is cramped on phones */
    .gl-months[b-dv6ihzvhpq] {
        grid-template-columns: 1fr 1fr;
        padding: 8px 10px;
    }

        /* 2-column layout: divider belongs on every 2nd item, not 3rd */
        .gl-months .gl-month-row:nth-child(3n+2)[b-dv6ihzvhpq],
        .gl-months .gl-month-row:nth-child(3n+3)[b-dv6ihzvhpq] {
            border-left: none;
            padding-left: 2px;
        }

        .gl-months .gl-month-row:nth-child(2n)[b-dv6ihzvhpq] {
            border-left: 0.5px solid #f3f4f6;
            padding-left: 14px;
        }

    .gl-info-table td[b-dv6ihzvhpq] {
        padding: 5px 10px;
        font-size: 12px;
    }

        .gl-info-table td.gl-info-key[b-dv6ihzvhpq] {
            width: 64px;
        }
}

@media (max-width: 480px) {
    .gl-site-strip-name[b-dv6ihzvhpq] {
        font-size: 13px;
    }

    .gl-card-site[b-dv6ihzvhpq],
    .gl-card-image[b-dv6ihzvhpq] {
        height: 150px;
    }

    .gl-months[b-dv6ihzvhpq] {
        grid-template-columns: 1fr;
    }

        /* single column: no vertical dividers at all */
        .gl-months .gl-month-row:nth-child(3n+2)[b-dv6ihzvhpq],
        .gl-months .gl-month-row:nth-child(3n+3)[b-dv6ihzvhpq],
        .gl-months .gl-month-row:nth-child(2n)[b-dv6ihzvhpq] {
            border-left: none;
            padding-left: 2px;
        }

    .gl-fy-btns[b-dv6ihzvhpq],
    .gl-fy-btn[b-dv6ihzvhpq] {
        font-size: 10px;
    }

    .gl-fy-btn[b-dv6ihzvhpq] {
        flex: 1 1 auto;
        white-space: nowrap;
        padding: 4px 6px;
    }
}

/* ── Right column wrapper — image + login stacked ── */
.gl-right-col[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ── Site image card ── */
.gl-card-image[b-dv6ihzvhpq] {
    padding: 0;
    overflow: hidden;
    border-radius: 0;
    height: 262px;
    flex-shrink: 0;
}


.gl-site-image[b-dv6ihzvhpq] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.gl-card-monthly .gl-months[b-dv6ihzvhpq] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    max-height: 220px;
}

    .gl-card-monthly .gl-months[b-dv6ihzvhpq]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-monthly .gl-months[b-dv6ihzvhpq]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }
/* /Components/Pages/LedgerPrint.razor.rz.scp.css */
/* =====================================================================
   GAINS — LedgerPrint.razor.css
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css
   and common-page-chrome.css. Only this page's own layout — the
   filter-panel/illustration split and a couple of stacking tweaks the
   shared rule set doesn't already cover — stays here.
   ===================================================================== */

.lp-page[b-9dgbuyfgnu] {
    height: 100%;
}

.lp-body-row[b-9dgbuyfgnu] {
    flex: 1;
    display: flex;
    min-height: 0;
    gap: 16px;
    padding: 16px;
}

.lp-filter-panel[b-9dgbuyfgnu] {
    width: 320px;
    min-width: 320px;
    display: flex;
    flex-direction: column;
}

    .lp-filter-panel .mu-drawer-body[b-9dgbuyfgnu] {
        flex: 1;
        overflow-y: auto;
    }

    /* Panel's own inputs/selects must respect the fixed 320px column —
       without this, a wide <select> (e.g. the ledger picker) can force a
       horizontal scrollbar inside the panel itself. */
    .lp-filter-panel input[b-9dgbuyfgnu],
    .lp-filter-panel select[b-9dgbuyfgnu] {
        max-width: 100%;
        box-sizing: border-box;
    }

/* uf-section/.uf-sec-body normally sit back-to-back with no gap between
   stacked sections; add breathing room between this page's three blocks
   (Report Selection / Balancing Method / Format Preferences). */
.lp-section-hdr[b-9dgbuyfgnu] {
    margin-top: 14px;
}

.lp-radio-group[b-9dgbuyfgnu],
.lp-checkbox-col[b-9dgbuyfgnu] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lp-checkbox-row[b-9dgbuyfgnu] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0 2px;
}

.lp-ledger-picker[b-9dgbuyfgnu] {
    margin-top: 8px;
}

/* Flex children default to min-width:auto, which lets content (the image)
   force the container wider than available space instead of shrinking —
   that's what was causing the illustration to overflow/bleed past its
   column. min-width:0 + overflow:hidden lets it actually respect the
   flex-basis instead of growing to the image's native size. */
.lp-illustration-area[b-9dgbuyfgnu] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
}

.lp-illustration[b-9dgbuyfgnu] {
    max-width: 640px;
    width: 90%;
    height: auto;
    opacity: 0.9;
}

/* Drawer foot now carries 3 buttons (Clear Filters + PDF + Excel) — stack
   Clear Filters on its own row, PDF/Excel share the row below, instead of
   all three squeezing into one row and overflowing the 320px panel. */
.lp-filter-panel .mu-drawer-foot[b-9dgbuyfgnu] {
    flex-wrap: wrap;
    gap: 8px;
}

    .lp-filter-panel .mu-drawer-foot > .mu-btn:not(.primary)[b-9dgbuyfgnu] {
        flex: 1 1 100%;
    }

    .lp-filter-panel .mu-drawer-foot .lp-download-btn[b-9dgbuyfgnu] {
        flex: 1 1 0;
        justify-content: center;
    }

/* .bspl-foot-btn is normally icon-only (font-size:20px, no gap) — this one
   button carries an SVG + text label, so it needs its own sizing instead
   of inheriting that icon-only treatment. */
.lp-download-btn[b-9dgbuyfgnu] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
}

    .lp-download-btn svg[b-9dgbuyfgnu] {
        flex-shrink: 0;
    }

/* Stack into one column on narrow/mobile viewports instead of squeezing
   a fixed 320px panel + illustration side by side. */
@media (max-width: 768px) {
    .lp-body-row[b-9dgbuyfgnu] {
        flex-direction: column;
    }

    .lp-filter-panel[b-9dgbuyfgnu] {
        width: 100%;
        min-width: 0;
    }

    .lp-illustration-area[b-9dgbuyfgnu] {
        display: none;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as QLedger/DocumentGrid/BSPL/ITB.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-9dgbuyfgnu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-9dgbuyfgnu] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-9dgbuyfgnu] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.gdp-field-row[b-9dgbuyfgnu] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ql-field[b-9dgbuyfgnu] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}
.ql-led-btn[b-9dgbuyfgnu] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-led-btn:hover[b-9dgbuyfgnu] {
        background: #0f3d82;
    }

.ql-led-row[b-9dgbuyfgnu] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-9dgbuyfgnu] {
        flex: 1;
        min-width: 0;
    }

.ql-lp-overlay[b-9dgbuyfgnu] {
    z-index: 1300;
}
/* above the filter drawer (1200) */
.ql-lp-modal[b-9dgbuyfgnu] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-9dgbuyfgnu] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .ql-modal-search .uf-input[b-9dgbuyfgnu] {
        flex: 1 1 auto;
        min-width: 0;
    }

.ql-lp-code[b-9dgbuyfgnu] {
    flex: 0 1 120px !important;
}

.ql-modal-body[b-9dgbuyfgnu] {
    flex: 1;
    overflow-y: auto;
}

.ql-lp-row[b-9dgbuyfgnu] {
    cursor: pointer;
}

.ql-lp-idx[b-9dgbuyfgnu] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-9dgbuyfgnu] {
    color: #1a56a7;
    font-weight: 600;
}

.ql-lp-name[b-9dgbuyfgnu] {
    color: #1a56a7;
    font-weight: 500;
}
/* /Components/Pages/Login.razor.rz.scp.css */
/* ================================================================
   GAINS Login Page — Login.razor.css  (v4)
   Left panel redesigned with product story.
   Right panel/form classes unchanged.
================================================================ */

/* Force Arial — Arial ONLY, no fallback font — for every element on the login
   page (overrides inherit/font-family). Universal selector (not scoped under
   .gains-login-page) so it also reaches the Forgot Password modal, which renders
   as a sibling of .gains-login-page rather than inside it — Blazor's CSS
   isolation still keeps this scoped to elements Login.razor itself renders. */
*[b-2ua8mk68tf] {
    font-family: Arial !important;
}

/* Icon-font glyphs (Tabler "ti ti-*" icons, Font Awesome "fa-solid fa-*" icons)
   rely on their own font-family to render the glyph at all — neither library
   marks that declaration !important, so the blanket Arial rule above was
   winning and turning every icon on this page (including this modal's own
   close button, "fa-solid fa-xmark") into a blank box. Restate their real
   font-family here, which — being a class/attribute selector — outranks the
   universal "*" above regardless of load order. This is the one deliberate,
   necessary exception to "Arial everywhere"; it changes icon glyphs, not text. */
i[class*="ti-"][b-2ua8mk68tf], i.ti[b-2ua8mk68tf] {
    font-family: "tabler-icons" !important;
}

i[class*="fa-"][b-2ua8mk68tf], .fa-solid[b-2ua8mk68tf], .fa-regular[b-2ua8mk68tf], .fa-brands[b-2ua8mk68tf] {
    font-family: "Font Awesome 6 Free" !important;
}

.fa-solid[b-2ua8mk68tf] {
    font-weight: 900 !important;
}

.gains-login-page[b-2ua8mk68tf] {
    display: flex;
    min-height: 100vh;
    width: 100%;
    font-family: Arial;
}

/* ════════════════════════════════════════════════════════
   LEFT PANEL  — completely redesigned
════════════════════════════════════════════════════════ */
.gains-left[b-2ua8mk68tf] {
    width: 44%;
    min-width: 320px;
    background: #071c11;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
}

/* Decorative blobs — now purposeful glow, not circles */
.gains-deco1[b-2ua8mk68tf] {
    position: absolute;
    top: -120px;
    right: -120px;
    width: 420px;
    height: 420px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(26,185,154,.22) 0%, transparent 65%);
    pointer-events: none;
}

.gains-deco2[b-2ua8mk68tf] {
    position: absolute;
    bottom: -100px;
    left: -100px;
    width: 380px;
    height: 380px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(33,118,199,.18) 0%, transparent 65%);
    pointer-events: none;
}
/* Extra subtle grid texture */
.gains-left[b-2ua8mk68tf]::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image: radial-gradient(circle, rgba(255,255,255,.032) 1px, transparent 1px);
    background-size: 26px 26px;
    pointer-events: none;
}

/* ── Brand block ── */
.gains-left-top[b-2ua8mk68tf] {
    padding: 2.25rem 2.5rem 0;
    position: relative;
    z-index: 1;
}

.gains-brand[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.gains-brand-icon[b-2ua8mk68tf] {
    width: 44px;
    height: 44px;
    border-radius: 11px;
    background: rgba(26,185,154,.15);
    border: 1px solid rgba(26,185,154,.3);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
}

.gains-brand-img[b-2ua8mk68tf] {
    width: 30px;
    height: 30px;
    object-fit: contain;
}

.gains-brand-name[b-2ua8mk68tf] {
    font-size: 18px;
    font-weight: 800;
    letter-spacing: .13em;
    color: #fff;
    line-height: 1.1;
}

.gains-brand-sub[b-2ua8mk68tf] {
    font-size: 10px;
    color: rgba(255,255,255,.35);
    line-height: 1.4;
    margin-top: 2px;
}

/* ── Mid: headline + description + feature list ── */
.gains-left-mid[b-2ua8mk68tf] {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 1.75rem 2.5rem 1.5rem;
    position: relative;
    z-index: 1;
}

.gains-headline[b-2ua8mk68tf] {
    font-size: 30px;
    font-weight: 800;
    color: #fff;
    line-height: 1.22;
    margin: 0 0 .9rem;
    letter-spacing: -.02em;
}

    .gains-headline span[b-2ua8mk68tf] {
        color: #1AB99A;
    }

.gains-desc[b-2ua8mk68tf] {
    font-size: 13.5px;
    color: rgba(255,255,255,.45);
    line-height: 1.75;
    margin: 0 0 1.6rem;
    max-width: 340px;
}

/* Feature grid — replaces plain stats */
.gains-stats[b-2ua8mk68tf] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 0;
}

.gains-stat[b-2ua8mk68tf] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    background: rgba(255,255,255,.045);
    border: .5px solid rgba(255,255,255,.09);
    border-radius: 12px;
    padding: 13px 14px;
    transition: background .18s;
}

    .gains-stat:hover[b-2ua8mk68tf] {
        background: rgba(255,255,255,.07);
    }

/* Icon for each stat — colour coded */
.gains-stat-icon[b-2ua8mk68tf] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

.gains-stat-icon-teal[b-2ua8mk68tf] {
    background: rgba(26,185,154,.2);
    color: #1AB99A;
}

.gains-stat-icon-blue[b-2ua8mk68tf] {
    background: rgba(33,118,199,.2);
    color: #60a5fa;
}

.gains-stat-icon-purple[b-2ua8mk68tf] {
    background: rgba(139,92,246,.2);
    color: #a78bfa;
}

.gains-stat-icon-orange[b-2ua8mk68tf] {
    background: rgba(251,146,60,.2);
    color: #fb923c;
}

.gains-stat-body[b-2ua8mk68tf] {
    flex: 1;
    min-width: 0;
}

.gains-stat-num[b-2ua8mk68tf] {
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    line-height: 1.2;
    margin-bottom: 2px;
}

.gains-stat-label[b-2ua8mk68tf] {
    font-size: 11px;
    color: rgba(255,255,255,.4);
    line-height: 1.4;
}

/* ── Bottom: trusted badges + test-drive CTA ── */
.gains-left-bottom[b-2ua8mk68tf] {
    padding: 1.25rem 2.5rem 1.75rem;
    position: relative;
    z-index: 1;
    border-top: .5px solid rgba(255,255,255,.07);
}

.gains-trusted[b-2ua8mk68tf] {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(255,255,255,.3);
    margin-bottom: 10px;
}

.gains-badges[b-2ua8mk68tf] {
    display: flex;
    gap: 7px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.gains-badge[b-2ua8mk68tf] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: rgba(255,255,255,.06);
    border: .5px solid rgba(255,255,255,.1);
    border-radius: 20px;
    padding: 5px 11px;
    font-size: 11px;
    color: rgba(255,255,255,.55);
    transition: background .15s;
}

    .gains-badge:hover[b-2ua8mk68tf] {
        background: rgba(255,255,255,.1);
    }

    .gains-badge i[b-2ua8mk68tf] {
        font-size: 13px;
        color: #1AB99A;
    }

/* Test-drive CTA */
.gains-testdrive[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 10px;
    background: linear-gradient(135deg, rgba(26,185,154,.18), rgba(26,185,154,.08));
    border: 1px solid rgba(26,185,154,.32);
    border-radius: 12px;
    padding: 12px 16px;
    text-decoration: none;
    color: #fff;
    font-size: 13.5px;
    font-weight: 600;
    transition: background .18s, border-color .18s, transform .15s;
}

    .gains-testdrive:hover[b-2ua8mk68tf] {
        background: linear-gradient(135deg, rgba(26,185,154,.28), rgba(26,185,154,.15));
        border-color: rgba(26,185,154,.55);
        transform: translateY(-1px);
        color: #fff;
    }

    .gains-testdrive i:first-child[b-2ua8mk68tf] {
        font-size: 18px;
        color: #1AB99A;
        flex-shrink: 0;
    }

    .gains-testdrive span[b-2ua8mk68tf] {
        flex: 1;
    }

.gains-td-arrow[b-2ua8mk68tf] {
    font-size: 16px;
    color: rgba(255,255,255,.4);
    transition: transform .15s;
    flex-shrink: 0;
}

.gains-testdrive:hover .gains-td-arrow[b-2ua8mk68tf] {
    transform: translateX(3px);
    color: #1AB99A;
}


/* ════════════════════════════════════════════════════════
   RIGHT PANEL  — unchanged from original
════════════════════════════════════════════════════════ */
.gains-right[b-2ua8mk68tf] {
    flex: 1;
    background: #f4f6f8;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2.5rem;
    position: relative;
    overflow: visible;
}

.gains-right-dots[b-2ua8mk68tf] {
    position: absolute;
    top: 24px;
    right: 24px;
    display: grid;
    grid-template-columns: repeat(5,1fr);
    gap: 6px;
    opacity: .25;
    pointer-events: none;
}

    .gains-right-dots span[b-2ua8mk68tf] {
        width: 4px;
        height: 4px;
        border-radius: 50%;
        background: #1AB99A;
        display: block;
    }

/* ── Form card ── */
.gains-card[b-2ua8mk68tf] {
    width: 100%;
    max-width: 400px;
    background: #fff;
    border-radius: 20px;
    border: .5px solid #e5e7eb;
    overflow: visible;
    position: relative;
    z-index: 1;
    box-shadow: 0 4px 24px rgba(15,23,42,.08);
    animation: gains-card-in-b-2ua8mk68tf .4s cubic-bezier(.16,1,.3,1) both;
}

@keyframes gains-card-in-b-2ua8mk68tf {
    from {
        opacity: 0;
        transform: translateY(14px) scale(.98);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

.gains-card-header[b-2ua8mk68tf] {
    background: #071c11;
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.gains-card-step[b-2ua8mk68tf] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #1AB99A;
    margin-bottom: 4px;
}

.gains-card-title[b-2ua8mk68tf] {
    font-size: 20px;
    font-weight: 700;
    color: #fff;
}

.gains-card-subtitle[b-2ua8mk68tf] {
    font-size: 13px;
    color: rgba(255,255,255,.5);
    margin-top: 2px;
}

.gains-card-icon-wrap[b-2ua8mk68tf] {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(26,185,154,.15);
    border: 1px solid rgba(26,185,154,.3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: #1AB99A;
    flex-shrink: 0;
}

.gains-card-progress[b-2ua8mk68tf] {
    height: 3px;
    background: rgba(26,185,154,.15);
}

.gains-card-progress-bar[b-2ua8mk68tf] {
    height: 100%;
    background: #1AB99A;
    transition: width .3s;
}

.gains-card-body[b-2ua8mk68tf] {
    padding: 1.75rem 2rem;
}

.gains-card-footer[b-2ua8mk68tf] {
    padding: 1rem 2rem;
    border-top: .5px solid #f3f4f6;
    text-align: center;
    font-size: 13px;
    color: #6b7280;
    background: #fafafa;
}

    .gains-card-footer a[b-2ua8mk68tf] {
        color: #1AB99A;
        text-decoration: none;
        font-weight: 600;
    }

        .gains-card-footer a:hover[b-2ua8mk68tf] {
            color: #2176C7;
        }

/* Error banner */
.gains-error[b-2ua8mk68tf] {
    background: #fef2f2;
    color: #b91c1c;
    border: .5px solid #fecaca;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 1rem;
    animation: gains-card-in-b-2ua8mk68tf .2s ease both;
}

    .gains-error i[b-2ua8mk68tf] {
        font-size: 16px;
        flex-shrink: 0;
    }

/* Mode selector */
.gains-mode-section[b-2ua8mk68tf] {
    margin-bottom: 1.1rem;
}

.gains-mode-label[b-2ua8mk68tf] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #6b7280;
    margin-bottom: 8px;
}

.gains-mode-options[b-2ua8mk68tf] {
    display: flex;
    gap: 4px;
}

.gains-mode-opt[b-2ua8mk68tf] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 34px;
    border-radius: 8px;
    background: #f3f4f6;
    border: 1.5px solid transparent;
    font-size: 13px;
    font-weight: 600;
    color: #6b7280;
    cursor: pointer;
    user-select: none;
    transition: all .15s;
}

    .gains-mode-opt input[b-2ua8mk68tf] {
        display: none;
    }

    .gains-mode-opt:has(input:checked)[b-2ua8mk68tf] {
        background: #fff;
        border-color: #1AB99A;
        color: #1AB99A;
        box-shadow: 0 1px 4px rgba(0,0,0,.08);
    }

    .gains-mode-opt:hover:not(:has(input:checked))[b-2ua8mk68tf] {
        background: #e9ecef;
        color: #374151;
    }

/* Country code */
.gains-ccode[b-2ua8mk68tf] {
    position: absolute;
    left: 42px;
    top: 50%;
    transform: translateY(-50%);
    height: 28px;
    width: 84px;
    border: none;
    border-right: 1.5px solid #e5e7eb;
    background: transparent;
    font-size: 13px;
    color: #374151;
    outline: none;
    cursor: pointer;
    font-family: inherit;
    z-index: 2;
    padding: 0 4px;
}

.gains-input.gains-input-ccode[b-2ua8mk68tf] {
    padding-left: 136px;
}

/* Invalid state */
.gains-input-invalid[b-2ua8mk68tf] {
    border-color: #ef4444 !important;
    background: #fef2f2 !important;
}

    .gains-input-invalid:focus[b-2ua8mk68tf] {
        box-shadow: 0 0 0 3px rgba(239,68,68,.12) !important;
    }

.gains-validation[b-2ua8mk68tf] {
    font-size: 12px;
    color: #b91c1c;
    margin-top: 5px;
}

/* Fields */
.gains-field[b-2ua8mk68tf] {
    margin-bottom: 1.1rem;
}

    .gains-field label[b-2ua8mk68tf] {
        display: block;
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .08em;
        text-transform: uppercase;
        color: #6b7280;
        margin-bottom: 7px;
    }

.gains-input-wrap[b-2ua8mk68tf] {
    position: relative;
    display: flex;
    align-items: center;
}

.gains-input-icon[b-2ua8mk68tf] {
    position: absolute;
    left: 13px;
    font-size: 17px;
    color: #1AB99A;
    pointer-events: none;
    z-index: 1;
}

.gains-input-icon-svg[b-2ua8mk68tf] {
    width: 18px;
    height: 18px;
    color: #1AB99A;
}

.gains-input[b-2ua8mk68tf] {
    width: 100%;
    height: 46px;
    padding: 0 44px 0 42px;
    border: 1.5px solid #e5e7eb;
    border-radius: 12px;
    font-size: 14px;
    color: #111827;
    background: #f9fafb;
    outline: none;
    font-family: inherit;
    transition: border-color .15s, box-shadow .15s, background .15s;
}

    .gains-input[b-2ua8mk68tf]::placeholder {
        color: #9ca3af;
    }

    .gains-input:hover[b-2ua8mk68tf] {
        border-color: #d1d5db;
    }

    .gains-input:focus[b-2ua8mk68tf] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

    .gains-input:disabled[b-2ua8mk68tf] {
        opacity: .6;
        cursor: not-allowed;
    }

.gains-eye-btn[b-2ua8mk68tf] {
    position: absolute;
    right: 12px;
    background: none;
    border: none;
    cursor: pointer;
    color: #9ca3af;
    font-size: 18px;
    padding: 0;
    display: flex;
    align-items: center;
    transition: color .15s;
    z-index: 1;
}

    .gains-eye-btn:hover[b-2ua8mk68tf] {
        color: #1AB99A;
    }

/* Form row */
.gains-form-row[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.gains-remember[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #6b7280;
    cursor: pointer;
}

    .gains-remember input[b-2ua8mk68tf] {
        accent-color: #1AB99A;
    }

.gains-forgot[b-2ua8mk68tf] {
    font-size: 13px;
    color: #1AB99A;
    text-decoration: none;
    font-weight: 600;
}

    .gains-forgot:hover[b-2ua8mk68tf] {
        color: #2176C7;
    }

/* Sign-in button */
.gains-signin-btn[b-2ua8mk68tf] {
    width: 100%;
    height: 48px;
    border: none;
    border-radius: 12px;
    background: linear-gradient(135deg, #1AB99A, #0d9480);
    color: #fff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    box-shadow: 0 4px 14px rgba(26,185,154,.3);
    transition: transform .1s, box-shadow .15s, opacity .15s;
    margin-bottom: 1rem;
}

    .gains-signin-btn:hover:not(:disabled)[b-2ua8mk68tf] {
        transform: translateY(-1px);
        box-shadow: 0 6px 20px rgba(26,185,154,.4);
    }

    .gains-signin-btn:active:not(:disabled)[b-2ua8mk68tf] {
        transform: scale(.99);
    }

    .gains-signin-btn:disabled[b-2ua8mk68tf] {
        opacity: .5;
        cursor: not-allowed;
    }

    .gains-signin-btn i[b-2ua8mk68tf] {
        font-size: 18px;
    }

/* Divider */
.gains-divider[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 1rem;
}

    .gains-divider hr[b-2ua8mk68tf] {
        flex: 1;
        border: none;
        border-top: 1px solid #f3f4f6;
        margin: 0;
    }

    .gains-divider span[b-2ua8mk68tf] {
        font-size: 12px;
        color: #9ca3af;
        white-space: nowrap;
    }

/* Google sign-in — plain link styled as a button (see GoogleAuthUrl in
   Login.razor's @code block); navigates to Google's OAuth consent screen,
   which redirects back to the registered /GmailAuth URI. */
.gains-google-btn[b-2ua8mk68tf] {
    width: 100%;
    height: 44px;
    border: 1.5px solid #e5e7eb;
    border-radius: 12px;
    background: #fff;
    color: #374151;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    font-family: inherit;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-decoration: none;
    transition: background .15s, border-color .15s;
}

    .gains-google-btn:hover[b-2ua8mk68tf] {
        background: #f9fafb;
        border-color: #1AB99A;
    }

    .gains-google-btn i[b-2ua8mk68tf] {
        font-size: 17px;
        color: #2176C7;
    }

/* Site picker */
.gains-site-list[b-2ua8mk68tf] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 340px;
    overflow-y: auto;
    margin-bottom: .5rem;
    padding-right: 2px;
}

    .gains-site-list[b-2ua8mk68tf]::-webkit-scrollbar {
        width: 4px;
    }

    .gains-site-list[b-2ua8mk68tf]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .gains-site-list[b-2ua8mk68tf]::-webkit-scrollbar-thumb {
        background: #1AB99A;
        border-radius: 4px;
    }

.gains-site-btn[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    background: #fff;
    border: .5px solid #e5e7eb;
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    width: 100%;
    transition: border-color .12s, background .12s, transform .1s;
}

    .gains-site-btn:hover[b-2ua8mk68tf] {
        border-color: #1AB99A;
        background: #f0fdf9;
        transform: translateX(2px);
    }

    .gains-site-btn.gains-site-default[b-2ua8mk68tf] {
        border-color: #1AB99A;
    }

.gains-site-avatar[b-2ua8mk68tf] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: #f0fdf9;
    border: .5px solid #a7f3d0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 700;
    color: #065f46;
    flex-shrink: 0;
}

.gains-site-default .gains-site-avatar[b-2ua8mk68tf] {
    background: linear-gradient(135deg, #1AB99A, #0d9480);
    color: #fff;
    border-color: #1AB99A;
}

.gains-site-info[b-2ua8mk68tf] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    flex: 1;
    min-width: 0;
}

.gains-site-name[b-2ua8mk68tf] {
    font-size: 13px;
    font-weight: 600;
    color: #111827;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.gains-site-id[b-2ua8mk68tf] {
    font-size: 11px;
    color: #9ca3af;
}

.gains-site-badge[b-2ua8mk68tf] {
    font-size: 10px;
    background: #1AB99A;
    color: #fff;
    border-radius: 4px;
    padding: 2px 7px;
    flex-shrink: 0;
    font-weight: 600;
}

.gains-back-btn[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    font-size: 13px;
    color: #1AB99A;
    cursor: pointer;
    font-family: inherit;
    padding: 0;
    transition: color .15s;
}

    .gains-back-btn:hover[b-2ua8mk68tf] {
        color: #2176C7;
    }

/* Spinner */
.gains-spin[b-2ua8mk68tf] {
    animation: gains-spin-b-2ua8mk68tf .85s linear infinite;
    display: inline-block;
}

@keyframes gains-spin-b-2ua8mk68tf {
    to {
        transform: rotate(360deg);
    }
}

/* ════════════════════════════════════════════════════════
   RESPONSIVE
════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    .gains-login-page[b-2ua8mk68tf] {
        flex-direction: column;
    }

    .gains-left[b-2ua8mk68tf] {
        width: 100%;
        min-height: 0;
    }

    .gains-left-mid[b-2ua8mk68tf] {
        padding: 1.25rem 1.5rem 1rem;
        justify-content: flex-start;
    }

    .gains-headline[b-2ua8mk68tf] {
        font-size: 24px;
    }

    .gains-desc[b-2ua8mk68tf], .gains-stats[b-2ua8mk68tf] {
        display: none;
    }

    .gains-left-bottom[b-2ua8mk68tf] {
        padding: 1rem 1.5rem 1.25rem;
    }

    .gains-testdrive[b-2ua8mk68tf] {
        display: none;
    }

    .gains-right[b-2ua8mk68tf] {
        padding: 2rem 1.5rem;
    }
}

@media (max-width: 420px) {
    .gains-card-body[b-2ua8mk68tf] {
        padding: 1.25rem 1.25rem;
    }

    .gains-card-header[b-2ua8mk68tf] {
        padding: 1.25rem 1.25rem;
    }

    .gains-card-footer[b-2ua8mk68tf] {
        padding: .75rem 1.25rem;
    }
}


/* =============================================
   FORGOT PASSWORD MODAL
   ============================================= */
.modal-backdrop[b-2ua8mk68tf] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    backdrop-filter: blur(3px);
}

.modal-card[b-2ua8mk68tf] {
    position: relative;
    background: #fff;
    border-radius: 18px;
    width: 95%;
    max-width: 460px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.2);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* The Forgot Password modal's header now reuses the shared Master CSS classes
   (uf-header / uf-title / uf-title-sub / uf-close, defined in
   wwwroot/CSS/masters-forms.css) instead of page-local styling — see the markup
   above. The .modal-head/-head-icon/-title/-desc/-x rules that used to style it
   are gone; nothing else in this file referenced them. */

.modal-body[b-2ua8mk68tf] {
    padding: 22px 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.radio-section-label[b-2ua8mk68tf] {
    font-size: 11.5px;
    font-weight: 700;
    color: #374151;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.radio-group[b-2ua8mk68tf] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.radio-pill[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border-radius: 9px;
    border: 1.5px solid #e5e7eb;
    background: #f8fafd;
    font-size: 13px;
    font-weight: 500;
    color: #4b5563;
    cursor: pointer;
    transition: all 0.15s;
    user-select: none;
}

    .radio-pill input[type="radio"][b-2ua8mk68tf] {
        display: none;
    }

    .radio-pill:hover[b-2ua8mk68tf] {
        border-color: #1AB99A;
        color: #1AB99A;
        background: rgba(26,185,154,.12);
    }

.radio-active[b-2ua8mk68tf] {
    border-color: #1AB99A !important;
    background: rgba(26,185,154,.1) !important;
    color: #1AB99A !important;
}

.modal-field[b-2ua8mk68tf] {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

/* "Enter Login Name / Email ID / Mobile Number" label. */
.field-label[b-2ua8mk68tf] {
    font-size: 13px;
}

.req[b-2ua8mk68tf] {
    color: #e94343;
    margin-left: 2px;
}

.modal-input[b-2ua8mk68tf] {
    width: 100%;
    padding: 11px 14px;
    border: 1.5px solid #e5e7eb;
    border-radius: 10px;
    font-size: 13.5px;
    color: #0f1923;
    background: #f8fafd;
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
    font-family: inherit;
    box-sizing: border-box;
}

    .modal-input:focus[b-2ua8mk68tf] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.modal-error[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fff2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
    border-radius: 8px;
    padding: 9px 12px;
    font-size: 12.5px;
    font-weight: 500;
}

.modal-foot[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 16px 24px;
    border-top: 1px solid #f1f5f9;
    background: #f8fafd;
}

.btn-ghost[b-2ua8mk68tf] {
    padding: 9px 18px;
    border-radius: 9px;
    border: 1.5px solid #e5e7eb;
    background: #fff;
    color: #374151;
    font-size: 13.5px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
    font-family: inherit;
}

    .btn-ghost:hover:not(:disabled)[b-2ua8mk68tf] {
        background: #f1f5f9;
    }

    .btn-ghost:disabled[b-2ua8mk68tf] {
        opacity: 0.6;
        cursor: not-allowed;
    }

.btn-primary[b-2ua8mk68tf] {
    padding: 9px 20px;
    border-radius: 9px;
    border: none;
    background: linear-gradient(135deg, #1AB99A, #0d9480);
    color: #fff;
    font-size: 13.5px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 7px;
    transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
    font-family: inherit;
}

    .btn-primary:hover:not(:disabled)[b-2ua8mk68tf] {
        opacity: 0.92;
        transform: translateY(-1px);
        box-shadow: 0 6px 16px rgba(26,185,154,.35);
    }

    .btn-primary:disabled[b-2ua8mk68tf] {
        opacity: 0.6;
        cursor: not-allowed;
    }

/* =============================================
   FORGOT PASSWORD LINK
   ============================================= */
.forgot-link[b-2ua8mk68tf] {
    font-size: 12.5px;
    color: #1AB99A;
    font-weight: 600;
    text-decoration: none;
}

    .forgot-link:hover[b-2ua8mk68tf] {
        text-decoration: underline;
    }
/* /Components/Pages/Masters/AssignRoute.razor.rz.scp.css */
/* =====================================================================
   GAINS — AssignRoute.razor.css   (Masters → Sales → Assign Route)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Assign-Route-page-specific rules remain here.
   ===================================================================== */

/* "Sales Person" link-style button inside the grid rows — same fix every
   other Masters page needed (mu-login isn't in the shared CSS, Blazor's
   CSS isolation means each page using it needs its own copy). */
.mu-login[b-yy89l4gfip] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-yy89l4gfip] {
        text-decoration: underline;
    }

/* Page-end footer pinning — same pattern as RouteMaster/LevelMaster/MLogin.
   Was missing here entirely, which is why the footer sat flush under the
   table with no card box/border instead of a proper pinned bar. */
.mu-page[b-yy89l4gfip] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-yy89l4gfip] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-yy89l4gfip] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-yy89l4gfip] {
    flex-shrink: 0;
}

.bspl-footer-right[b-yy89l4gfip] {
    font-size: inherit;
    color: inherit;
}

/* Person / Date / GO row above the grid */
.ar-toolbar[b-yy89l4gfip] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    flex-wrap: wrap;
}

    .ar-toolbar .uf-input:first-child[b-yy89l4gfip] {
        flex: 1 1 220px;
    }

    .ar-toolbar input[type="date"][b-yy89l4gfip] {
        flex: 0 0 170px;
    }

/* Neither grid on this page paginates (matches the old form — both lists
   just scroll inside a fixed-height box instead of a pager). */
.ar-scroll[b-yy89l4gfip] {
    max-height: 420px;
    overflow-y: auto;
}

/* uf-footer expects exactly 2 flex children (left spacer + one right
   item) — group Save alone into .uf-footer-right for consistency with
   the other Masters modals even though there's only one button here. */
.uf-footer-right[b-yy89l4gfip] {
    display: flex;
    align-items: center;
    gap: 10px;
}
/* /Components/Pages/Masters/AssignScheme.razor.rz.scp.css */
/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). */
[b-k0607ulibo] .mu-page {
    display: flex;
    flex-direction: column;
    height: 100%;
}

[b-k0607ulibo] .mu-card {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

[b-k0607ulibo] .mu-table-wrap {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

/* Top filter bar — scheme autofill + slab select + date + GO, inline */
[b-k0607ulibo] .as-toolbar {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

[b-k0607ulibo] .as-filter-field {
    flex: 0 1 240px;
    min-width: 180px;
}

[b-k0607ulibo] .as-select {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    [b-k0607ulibo] .as-select:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

[b-k0607ulibo] .as-go {
    margin-left: auto;
}

/* Active checkbox column */
[b-k0607ulibo] .as-th-active {
    width: 70px;
    text-align: center;
}

[b-k0607ulibo] .as-td-active {
    text-align: center;
}

    [b-k0607ulibo] .as-td-active input[type="checkbox"] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

[b-k0607ulibo] .mu-login-cell {
    color: #1a56a7;
}

/* Modal fields use the same stacked label/input as other Masters modals */
[b-k0607ulibo] .as-modal-field {
    grid-template-columns: 120px 1fr;
    margin-bottom: 14px;
    position: relative;
}

/* Footer — sticky (not fixed): stays in the content column, no sidebar
   overlap, and adds no phantom page height. Same approach as the other
   Scheme pages. */
[b-k0607ulibo] .mu-foot {
    position: sticky;
    bottom: 0;
    z-index: 10;
    background: #fbfcfe;
}
/* /Components/Pages/Masters/Categoryitem.razor.rz.scp.css */
/* =====================================================================
   GAINS — xCategoryItem.razor.css   (Masters → Category-Item)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-oqjgkcjxq5] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-oqjgkcjxq5] {
        text-decoration: underline;
    }

.mu-page[b-oqjgkcjxq5] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-oqjgkcjxq5] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-oqjgkcjxq5] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-oqjgkcjxq5] {
    flex-shrink: 0;
}

.bspl-footer-right[b-oqjgkcjxq5] {
    font-size: inherit;
    color: inherit;
}

.uf-footer-right[b-oqjgkcjxq5] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Clear "Save isn't wired yet" banner inside the modal */
.xci-unwired-banner[b-oqjgkcjxq5] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    background: #fff7ed;
    border: 1px solid #fdba74;
    color: #9a3412;
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 14px;
    font-size: 13px;
    line-height: 1.5;
}

    .xci-unwired-banner i[b-oqjgkcjxq5] {
        margin-top: 2px;
        flex-shrink: 0;
    }

    .xci-unwired-banner code[b-oqjgkcjxq5] {
        background: rgba(0, 0, 0, 0.06);
        padding: 1px 5px;
        border-radius: 4px;
        font-size: 12px;
    }

/* Item Name / GO / CF toolbar inside the modal */
.ci-toolbar[b-oqjgkcjxq5] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

    .ci-toolbar .uf-input[b-oqjgkcjxq5] {
        flex: 1 1 200px;
    }

.xci-scroll[b-oqjgkcjxq5] {
    max-height: 360px;
    overflow-y: auto;
}

    .xci-scroll td:nth-child(2)[b-oqjgkcjxq5] {
        text-align: center;
        width: 48px;
    }

    .xci-scroll input[type="checkbox"][b-oqjgkcjxq5] {
        width: 17px;
        height: 17px;
        cursor: pointer;
        accent-color: #1a7a4c;
        vertical-align: middle;
    }

    .xci-scroll td[b-oqjgkcjxq5],
    .xci-scroll th[b-oqjgkcjxq5] {
        padding: 8px 12px;
    }

.xci-pager[b-oqjgkcjxq5] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 10px;
}

.xci-linked-count[b-oqjgkcjxq5] {
    margin-top: 12px;
    font-size: 13px;
    color: #374151;
}

.xci-linked-total[b-oqjgkcjxq5] {
    color: #9ca3af;
    margin-left: 4px;
}
/* /Components/Pages/Masters/Categoryledger.razor.rz.scp.css */
/* =====================================================================
   GAINS — CategoryLedger.razor.css   (Masters → Category-Ledger)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-je5kgbbh6g] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-je5kgbbh6g] {
        text-decoration: underline;
    }

/* Page-end footer pinning — same pattern as every other Masters page. */
.mu-page[b-je5kgbbh6g] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-je5kgbbh6g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-je5kgbbh6g] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-je5kgbbh6g] {
    flex-shrink: 0;
}

.bspl-footer-right[b-je5kgbbh6g] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-je5kgbbh6g] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-je5kgbbh6g] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Ledger checklist page (100 rows) — bounded scroll within that page */
.cl-scroll[b-je5kgbbh6g] {
    max-height: 380px;
    overflow-y: auto;
}

.cl-modal-pager[b-je5kgbbh6g] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 10px;
}

.cl-linked-count[b-je5kgbbh6g] {
    margin-top: 12px;
    font-size: 13px;
    color: #374151;
}

.cl-linked-total[b-je5kgbbh6g] {
    color: #9ca3af;
    margin-left: 4px;
}
/* /Components/Pages/Masters/ChangeGroupDialog.razor.rz.scp.css */
/* Bulk "Change Client Group" popup — same mint-green ERP theme, own cgx-*
   vocabulary per Blazor's per-component CSS isolation (see ContactDialog's
   own comment on why this can't just reuse clx-*/ctcx-*). */

.cgx-overlay[b-yuq7a4bg1t] {
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(20, 30, 40, .55);
    z-index: 1250;
}

.cgx-modal[b-yuq7a4bg1t] {
    width: 480px;
    max-width: 100%;
    max-height: 90vh;
    border-radius: 10px;
    border: 1px solid #D9E4EC;
    box-shadow: 0 12px 34px rgba(20, 30, 40, .22);
    background: #ffffff;
}

@media (max-width: 576px) {
    .cgx-overlay[b-yuq7a4bg1t] { padding: 0; align-items: stretch; }
    .cgx-modal[b-yuq7a4bg1t]   { width: 100%; max-width: 100%; max-height: 100vh; border-radius: 0; }
}

.cgx-header[b-yuq7a4bg1t] {
    background: #EAF8F4;
    border-bottom: 1px solid #BFE7DA;
}

    .cgx-header .uf-title > span:first-child[b-yuq7a4bg1t] {
        color: #0F6B58;
        font-weight: 700;
        letter-spacing: .3px;
    }

    .cgx-header .uf-title-sub[b-yuq7a4bg1t] {
        color: #6B7280;
        font-size: 12px;
    }

.cgx-close[b-yuq7a4bg1t] {
    background: #ffffff;
    color: #27AE60;
    border-radius: 50%;
    transition: background .2s, color .2s;
}

    .cgx-close:hover[b-yuq7a4bg1t] {
        background: #27AE60;
        color: #ffffff;
    }

.cgx-body[b-yuq7a4bg1t] {
    padding: 20px;
    background: #ffffff;
    max-height: 60vh;
    overflow-y: auto;
}

.cgx-list[b-yuq7a4bg1t] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 18px;
    border: 1px solid #EEF2F5;
    border-radius: 6px;
    padding: 10px 12px;
}

.cgx-row[b-yuq7a4bg1t] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    font-size: 13px;
    padding: 4px 0;
    border-bottom: 1px solid #F3F5F7;
}

    .cgx-row:last-child[b-yuq7a4bg1t] {
        border-bottom: none;
    }

.cgx-name[b-yuq7a4bg1t] {
    font-weight: 600;
    color: #2C3E50;
}

.cgx-current[b-yuq7a4bg1t] {
    color: #6B7280;
    font-size: 12px;
    white-space: nowrap;
}

.cgx-field[b-yuq7a4bg1t] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cgx-label[b-yuq7a4bg1t] {
    font-size: 12px;
    font-weight: 600;
    color: #6B7280;
}

.cgx-hint[b-yuq7a4bg1t] {
    display: block;
    font-size: .7rem;
    font-weight: 400;
    color: #9AA5B1;
}

.cgx-input[b-yuq7a4bg1t] {
    width: 100%;
    height: 38px;
    box-sizing: border-box;
    padding: 8px 12px;
    font-size: 13px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
}

    .cgx-input:focus[b-yuq7a4bg1t] {
        outline: none;
        border-color: #27AE60;
        box-shadow: 0 0 0 3px rgba(39, 174, 96, .16);
    }

.cgx-err[b-yuq7a4bg1t] {
    margin-top: 10px;
    font-size: .75rem;
    color: #DC3545;
    font-weight: 500;
}

.cgx-footer[b-yuq7a4bg1t]  .ft-bar {
    position: static;
    justify-content: flex-end;
    gap: 10px;
    padding: 12px 20px;
    background: #ffffff;
    border-top: 1px solid #D9E4EC;
    box-shadow: none;
}

.cgx-btn[b-yuq7a4bg1t] {
    height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 600;
    padding: 0 16px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    cursor: pointer;
    transition: background .2s, border-color .2s;
}

    .cgx-btn:hover[b-yuq7a4bg1t] {
        background: #E2F5EE;
        border-color: #27AE60;
    }

    .cgx-btn:disabled[b-yuq7a4bg1t] {
        opacity: .6;
        cursor: default;
    }

.cgx-btn-save[b-yuq7a4bg1t] {
    background: #28A745;
    border-color: #28A745;
    color: #ffffff;
}

    .cgx-btn-save:hover[b-yuq7a4bg1t] {
        background: #23923e;
    }

.cgx-btn-cancel[b-yuq7a4bg1t] {
    background: #ffffff;
}
/* /Components/Pages/Masters/ClientEntryDialog.razor.rz.scp.css */
/* CLIENT ENTRY dialog — same classic mint-green ERP theme as SalesRepEdit
   (SALES PERSON popup), reusing its exact palette so the two master-data
   dialogs feel like the same product. Field grid uses CSS Grid
   (.clx-fgrid/.clx-fcell): 3 columns desktop/laptop, 2 tablet, 1 mobile —
   per this module's spec (SalesRepEdit uses 4, Client intentionally uses
   fewer/wider columns to match the shorter, simpler field list).

   Palette (identical to SalesRepEdit.razor.css):
     Main background    #F5F7F8
     Popup background   #FFFFFF
     Accordion header   #EAF8F4 (flat)
     Accordion border   #BFE7DA
     Accordion hover    #E2F5EE
     Primary accent     #27AE60
     Header/title text  #0F6B58 (dark green)
     Normal text        #2C3E50
     Secondary text     #6B7280
     Input border       #D5DDE5
     Input focus        #27AE60
     Popup border       #D9E4EC
     Overlay            rgba(20,30,40,.45)
     Save               #28A745
     Delete             #DC3545
     Info/Grid/New      white bg, gray border, dark text                */

/* ═════════════════════════════════════════════════════════════════════
   FULL-PAGE shell (popup/modal chrome removed per direct instruction).
   This component now only ever renders inside its own routed page
   (ClientEntryPage.razor, both New and Edit go through it) so there's no
   grid underneath to dim/overlay — .clx-popup-overlay fills the whole
   viewport as plain page background, .clx-popup-modal fills all of it
   (no centering, no max-width, no border/radius/shadow/backdrop).
   Reuses the global uf-header/uf-body/uf-footer classes from
   masters-forms.css as the structural base; this file overrides their
   visual values via the extra clx-popup-* classes so nothing shared is
   edited. */

.clx-popup-overlay[b-n08s5bx5gs] {
    position: fixed;
    inset: 0;
    align-items: stretch;
    justify-content: stretch;
    padding: 0;
    background: #F5F7F8;
}

.clx-popup-modal[b-n08s5bx5gs] {
    width: 100%;
    max-width: none;
    height: 100vh;
    max-height: 100vh;
    min-height: 0;
    border-radius: 0;
    border: none;
    box-shadow: none;
    background: #ffffff;
    margin: 0;
}

/* Inline mode — used ONLY when ClientEntryDialog is hosted inline inside
   ClientGrid.razor (per direct instruction: Grid + Entry visible together
   on the same page, old CA_GAINS split view, reversing the earlier
   "open in a new browser tab" decision). Turns the fixed-full-viewport
   overlay/modal (built for the standalone ClientEntryPage.razor route)
   into a normal static card that sits BELOW the grid instead of covering
   it. The body gets its own bounded height + scrollbar instead of relying
   on the page being 100vh, so CLOSE/SAVE/Add Person stay reachable without
   the whole browser page needing a fixed viewport height that no longer
   exists here. */
.clx-popup-overlay.clx-inline[b-n08s5bx5gs] {
    position: static;
    inset: auto;
    /* REVISED (tabbar-scrolls-away bug): was display:block/height:auto,
       which let .clx-popup-modal.clx-inline (also auto-height at the
       time) grow taller than ClientGrid.razor.css's .cl-entry-pane box —
       .cl-entry-pane's own scrollbar then had to scroll THIS WHOLE
       overlay (tabbar included) to reach the rest of the form. Now flex:1
       fills .cl-entry-pane exactly (that pane is display:flex column,
       overflow:hidden, no scrollbar of its own anymore), so the modal
       below can flex:1-fill THIS box in turn, and only its inner
       .clx-popup-body ends up needing to scroll — tabbar/header/footer
       stay pinned on screen. */
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    background: transparent;
    padding: 0;
    margin-top: 10px; /* was 20px — halved per direct instruction, gray
                          gap between grid title bar and Entry card top */
}

.clx-popup-modal.clx-inline[b-n08s5bx5gs] {
    /* REVISED (see .clx-popup-overlay.clx-inline comment above): was
       height:auto/max-height:none (fine for the standalone full-page
       route, wrong here — grew past .cl-entry-pane's box, dragging the
       tabbar off-screen when that pane's scrollbar engaged). flex:1 fills
       the (now flex-column) overlay above exactly; uf-modal's own
       display:flex/flex-direction:column (masters-forms.css) keeps
       header/tabbar/body/footer stacked, and min-height:0 lets the body
       below actually shrink to make room for a scrollbar instead of
       forcing the modal taller than its container. */
    /* BUG FIX (still recurring after the flex:1+max-height pass): Primary
       Person's own fields were being hard-clipped — confirmed by the user
       actually scrolling the form area and never seeing them, not just a
       "haven't scrolled far enough" case. Root cause: max-height alone
       only clamps a box that would OTHERWISE be auto/content-sized; the
       used height it produces is "clamped", not genuinely definite from
       the start, and every descendant below it (.clx-popup-form's
       flex:1+min-height:0, then .clx-popup-body's own flex:1+min-height:0)
       has to correctly re-derive a definite size from that at each step.
       One weak link anywhere in that re-derivation and a descendant falls
       back to content-based sizing instead of shrinking — which is
       exactly what silently swallowed Primary Person's fields: something
       downstream ended up NOT shrinking, so .clx-popup-body's real
       scrollable range never actually reached that section, no matter
       how far the user scrolled its (truncated) scrollbar.
       FIX: set `height` directly (not just `max-height`) — this makes the
       modal's box GENUINELY definite from the very first layout pass, no
       clamping step, no ambiguity for any descendant's flex-basis
       resolution.
       CORRECTED CONSTANT: verified against DashboardLayout.razor's actual
       markup — .gains-topbar is dead CSS, never rendered (`<main
       class="gains-content">@Body</main>` sits directly under
       `.gains-main`, no separate topbar row above it; the "CA_GAINS" pill
       lives in the SIDEBAR, not a topbar). The old 140px estimate
       double-subtracted a 52px topbar that doesn't exist on screen at
       all. Real chrome above this modal is just: ~64px .bspl-title-block
       (ClientGrid's own page title) + 10px this class's own margin-top +
       26px breathing room = 100px. */
    height: calc(100vh - 100px);
    max-height: calc(100vh - 100px);
    min-height: 0;
    flex: 0 0 auto;
    border-radius: 10px;
    border: 1px solid #e7eaec;
    box-shadow: 0 2px 10px rgba(15, 23, 42, .08);
    overflow: hidden;
}

@media (max-width: 767px) {
    .clx-popup-modal.clx-inline[b-n08s5bx5gs] {
        /* Mobile title-block text shrinks (masters-forms.css) but the
           block's own padding doesn't, so the corrected 100px estimate
           still holds here — kept as its own rule (rather than assuming
           the desktop value scales down) so it's easy to retune
           independently if a narrower title block ever ships for mobile
           later. */
        height: calc(100vh - 100px);
        max-height: calc(100vh - 100px);
    }
}

.clx-popup-modal.clx-inline .clx-popup-body[b-n08s5bx5gs] {
    /* REVISED: was max-height:65vh — a viewport-relative guess that had
       no relation to .cl-entry-pane's actual (layout-driven) height, which
       is what let the modal outgrow its box in the first place. flex:1
       fills whatever space is left in the now-fixed-height modal after
       the tabbar/header/footer take theirs; min-height:0 lets that
       actually shrink instead of forcing the modal taller. overflow-y
       (inherited from the base .clx-popup-body rule) does the scrolling
       right here, on the body alone. */
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
}

/* Header — RESKINNED per direct instruction (screenshot circled
   ClientGrid's own plain page-title block as the reference): was the
   mint-green .uf-header gradient (masters-forms.css, shared by every
   modal's header) — now plain white like ClientGrid's .bspl-title-block,
   same white bg/#e7eaec border, same teal-uppercase title / gray subtitle
   text treatment. .uf-header::before (the global 4px teal left accent
   bar every mint header gets) is hidden here too, since ClientGrid's
   title block has no such bar. Overridden locally via clx-popup-* so the
   shared .uf-header/.uf-title classes themselves stay untouched for
   every other modal that still wants the mint look. */
/* SPACING FIX: page read compact at 80% zoom / oversized at real 100% —
   root cause was cumulative padding/gap stacking (header, tabbar, body,
   each accordion card) all sized for a small centered popup, never
   tightened for the full-page layout. Scaled the spacing values below
   (NOT font-size, NOT input/control height) down by the same ~0.8 ratio
   the 80%-zoom reference implied, so 100% zoom now reads as compact as
   the reference without any browser-zoom/transform workaround. */
.clx-popup-header[b-n08s5bx5gs] {
    background: #ffffff;
    border-bottom: 1px solid #e7eaec;
    padding: 14px 20px;
}

    .clx-popup-header[b-n08s5bx5gs]::before {
        display: none;
    }

    /* BUG FIX: font "not matching" was weight/size, not family — title
       already inherits Arial fine (this page's .uf-overlay sets that,
       same as ClientGrid's .mu-page). What was off is .bspl-title-block h1
       uses a thin 100-weight at 22px (masters-forms.css) — this had
       600/18px, reading as noticeably bolder/smaller than the reference.
       Now copied exactly: 100 weight, 22px, line-height 1.1. */
    .clx-popup-header .uf-title > span:first-child[b-n08s5bx5gs] {
        color: #1ab394;
        font-weight: 100;
        text-transform: uppercase;
        letter-spacing: .5px;
        font-size: 22px;
        line-height: 1.1;
    }

    .clx-popup-header .uf-title-sub[b-n08s5bx5gs] {
        color: #999999;
        font-size: 12px;
    }

/* Groups the "GAINS" pill with the title on the left of the header. */
.clx-header-left[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    gap: 14px;
}

/* BUG FIX: the real pill circled in the screenshots is DashboardLayout's
   own .sb-logo (its sidebar header button), NOT .bspl-gains-toggle
   (masters-forms.css — a separate, mostly-unused mobile-reopen duplicate
   with a hardcoded "GAINS"-only label, which is what the first attempt
   wrongly copied). .sb-logo/.sb-logo-text are scoped to
   DashboardLayout.razor.css (Blazor CSS isolation — can't be reused
   across components) so they're redeclared here token-for-token:
   #1ab99a green, 9px 16px padding, 13px/600 white text, same shadow/hover.
   See .razor header comment for the full story + the AuthState.IsCA text
   fix.

   BUG FIX: font still didn't match — .sb-logo isn't just its own rule, it
   inherits 'Segoe UI'/system-ui from .gains-shell (the WHOLE dashboard
   shell sets that font-family once, DashboardLayout.razor.css line ~36).
   This page has no .gains-shell ancestor — it sits inside .uf-overlay
   instead, which masters-forms.css sets to Arial. Same inherited-font
   trap, different rule. Fixed by declaring the shell's exact font stack
   locally instead of relying on inheritance. */
.clx-gains-pill[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    background: #1ab99a;
    border: none;
    cursor: pointer;
    color: #fff;
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 13px;
    font-weight: 600;
    padding: 9px 16px;
    border-radius: 6px;
    letter-spacing: 0.04em;
    box-shadow: 0 2px 6px rgba(26,185,154,0.3);
    transition: background 0.15s, box-shadow 0.15s;
    flex-shrink: 0;
}

    .clx-gains-pill:hover[b-n08s5bx5gs] {
        background: #0e9e83;
    }

    .clx-gains-pill i[b-n08s5bx5gs] {
        font-size: 15px;
        color: #fff;
    }

.clx-gains-pill-text[b-n08s5bx5gs] {
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
}

/* Groups the (conditional) Filters button on the right of the header —
   see .razor header comment for why Filters lives here now instead of
   inside ClientEventTab. */
.clx-header-actions[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Matches ClientGrid's own "Filters" button token-for-token — .cl-filters-btn
   (ClientGrid.razor.css) is scoped to that component so it can't be reused
   here (Blazor CSS isolation) — hence the local re-declaration. */
.mu-btn.clx-filters-btn[b-n08s5bx5gs] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.clx-filters-btn:hover[b-n08s5bx5gs] {
        background: #23923e;
        border-color: #23923e;
    }

.clx-popup-close[b-n08s5bx5gs] {
    background: #ffffff;
    color: #27AE60;
    border-radius: 50%;
    transition: background .2s, color .2s;
}

    .clx-popup-close:hover[b-n08s5bx5gs] {
        background: #27AE60;
        color: #ffffff;
    }

/* Form fills the space between header and footer; only its body scrolls.
   REBUILT (Primary Person still unreachable after 3 rounds of flexbox
   fixes, despite each individual layer checking out correct on paper):
   switched from flex-column to CSS GRID for this ONE level specifically.
   Nested flexbox's "does a min-height:0 flex:1 child actually shrink to
   its allocated space, or fall back to content size" resolution has an
   edge case (content-based fallback when an ancestor's resolved height
   is ambiguous) that's hard to rule out with certainty across this many
   nested layers (cl-split-wrap → cl-entry-pane → overlay → modal → HERE
   → body/footer) without live devtools access. Grid's `1fr` track sizing
   doesn't have that same fallback ambiguity — it always resolves against
   ITS OWN container's height directly, one level, no cascading
   uncertainty through several flex parents. .clx-popup-form itself is
   still a flex CHILD of .clx-popup-modal (flex:1 1 auto kept below so it
   still receives a definite height from the modal, which now has an
   explicit `height` per the earlier fix) — only what's INSIDE this class
   switches mechanism. */
.clx-popup-form[b-n08s5bx5gs] {
    display: grid;
    grid-template-rows: 1fr auto; /* body gets all remaining space, footer sized to its own content */
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    overflow: hidden;
}

/* BUG FIX: "extra dead space on Event/Login" — the shared global .uf-body
   (masters-forms.css) hardcodes `max-height: calc(100vh - 230px)`, sized
   for a small centered popup with a header+footer combo. That rule was
   never overridden here, so it still capped this tab's content area at
   the SAME fixed 230px-short height even on Event/Login, which render no
   footer at all — leaving a flat unused gap at the bottom that had
   nothing to do with actual footer height. flex:1 1 auto + min-height:0
   already sizes this correctly against whatever siblings (header/tabbar,
   and the real footer only on the Client tab) actually take up, so the
   fixed cap is redundant everywhere and wrong specifically here.
   Overriding it to none removes the stale reservation. */
.clx-popup-body[b-n08s5bx5gs] {
    /* grid-row:1 only takes effect when the parent is display:grid — true
       for the Client tab (.clx-popup-form, see rebuild comment above);
       harmlessly ignored for Event/Login, where this same class is a
       direct flex child of .clx-popup-modal instead (no footer sibling
       there, flex:1 1 auto below still does the job for that path). */
    grid-row: 1;
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 18px;
    /* Safety bottom padding so the footer below never sits flush against
       the last field with zero breathing room. */
    padding-bottom: 70px;
    background: #F5F7F8;
}

/* BUG FIX (reported, still recurring after the flex/max-height chain fix):
   footer relied entirely on flex-shrink:0 correctly placing it after a
   properly height-capped .clx-popup-body — if ANY link in that chain
   (this app nests several: cl-split-wrap → cl-entry-pane → this overlay →
   modal → form → body) ends up not resolving to a clean definite height,
   the footer can still end up pushed out of view with nothing to scroll
   it back into sight. position:sticky is far more forgiving: it only
   needs SOME ancestor to be the actual scrolling box (doesn't matter
   which layer that ends up being) and pins the footer to that ancestor's
   visible bottom edge as the user scrolls — CLOSE/SAVE/Add Person now
   stay reachable even if the flex-fill chain above isn't airtight.
   Opaque background required so scrolled-past form content doesn't show
   through underneath it while stuck. */
.clx-popup-footer[b-n08s5bx5gs] {
    /* grid-row:2 (Client tab, see .clx-popup-form rebuild comment) sizes
       this row to the footer's own content height (`auto` track) —
       whatever's left goes to row 1 (.clx-popup-body). flex-shrink:0 kept
       as a no-op safety net for any flex-context this class might still
       render in. position:sticky kept too — redundant once grid is doing
       its job correctly, but harmless, and still helps if this ever ends
       up rendered somewhere without the grid parent. */
    grid-row: 2;
    flex-shrink: 0;
    position: sticky;
    bottom: 0;
    z-index: 5;
    background: #ffffff;
}

/* Sized for 100% browser zoom, per direct instruction (looked fine at 80%
   zoom, oversized at 100% — confirmed at actual 100% scale rather than
   relying on the "shrink it" call alone). */
.clx-popup-footer[b-n08s5bx5gs]  .ft-bar {
    position: static;
    justify-content: flex-start;
    gap: 10px;
    padding: 8px 16px;
    background: #ffffff;
    border-top: 1px solid #D9E4EC;
    box-shadow: none;
}

@media (max-width: 767px) {
    .clx-popup-footer[b-n08s5bx5gs]  .ft-bar {
        justify-content: center;
    }
}

/* CollapsibleCard restyle — identical to SalesRepEdit's, scoped ::deep
   under this dialog's own body wrapper only. */
.clx-popup-body[b-n08s5bx5gs]  .cc-card {
    border: 1px solid #BFE7DA;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(15, 107, 88, .04);
    margin-bottom: 14px;
    overflow: hidden;
}

    .clx-popup-body[b-n08s5bx5gs]  .cc-card:last-child {
        margin-bottom: 0;
    }

.clx-popup-body[b-n08s5bx5gs]  .cc-header {
    height: 34px;
    padding: 0 14px;
    background: #EAF8F4;
    background-image: none;
    border-bottom: 1px solid #BFE7DA;
    transition: background .2s;
}

    .clx-popup-body[b-n08s5bx5gs]  .cc-header:hover {
        background: #E2F5EE;
    }

.clx-popup-body[b-n08s5bx5gs]  .cc-title {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    color: #0F6B58;
}

.clx-popup-body[b-n08s5bx5gs]  .cc-caret {
    color: #27AE60;
    font-size: .8rem;
    transition: transform .15s ease;
}

.clx-popup-body[b-n08s5bx5gs]  .cc-body {
    padding: 14px;
    background: #ffffff;
    animation: clxAccordionIn-b-n08s5bx5gs .16s ease-out;
}

@keyframes clxAccordionIn-b-n08s5bx5gs {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* ── Field grid ── REVERTED the `display:contents` track-flatten attempt
   (previous edit) — real bug, not a rebuild/cache issue: it assumed
   EVERY .clx-fcell contains exactly one .clx-field-h (label + input-wrap,
   2 items). "Is Active" doesn't — it's a `.clx-check` div (checkbox +
   its own inline label, ONE box), which never got display:contents, so
   it consumed only 1 of the row's 6 tracks instead of 2. Every field
   after it in that row (and the row's own downstream siblings, since
   grid auto-flow is continuous) shifted one slot left — exactly the
   "Start Date next to Is Active, Client next to the date box" desync in
   the screenshot.

   Back to the safe, isolated design: .clx-fgrid is 3 equal fcell columns
   (each fcell is its OWN grid item — a checkbox field, a label+input
   field, anything — can't desync its neighbors). Alignment down each
   column comes from every .clx-label sharing the same fixed width and
   every .clx-fcell sharing the same column width, not from a single
   continuous track run. Input max-width cap kept from the last pass. */
.clx-fgrid[b-n08s5bx5gs] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    column-gap: 16px;
    row-gap: 10px;
}

.clx-fcell[b-n08s5bx5gs] {
    min-width: 0;
}

.clx-fspan-2[b-n08s5bx5gs] {
    grid-column: span 2;
}

.clx-fspan-full[b-n08s5bx5gs] {
    grid-column: 1 / -1;
}

/* Laptop: stays 3 columns, tighter gaps only (per direct instruction —
   only tablet actually drops to 2 columns). */
@media (max-width: 1365px) {
    .clx-fgrid[b-n08s5bx5gs] { column-gap: 12px; row-gap: 8px; }
}

@media (min-width: 768px) and (max-width: 1199px) {
    .clx-fgrid[b-n08s5bx5gs] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 767px) {
    .clx-fgrid[b-n08s5bx5gs] { grid-template-columns: 1fr; }
    .clx-fspan-2[b-n08s5bx5gs] { grid-column: span 1; }
}

/* ── Fields (label left, input right) — fixed px label width so every
   label in every column lines up, same rationale as SalesRepEdit's
   .srx-field-h. ─────────────────────────────────────────────────────── */

.clx-field-h[b-n08s5bx5gs] {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 6px;
}

.clx-field-h .clx-label[b-n08s5bx5gs] {
    flex: 0 0 84px;
    width: 84px;
    max-width: 84px;
    font-size: 13px;
    font-weight: 500;
    color: #6B7280;
    white-space: normal;
    line-height: 1.25;
}

/* Input capped to a sane reading width instead of stretching to fill the
   whole 1fr column — leftover column space just sits empty, which is
   what keeps the section full-width while the field itself stays
   compact. Address / CID+Load rows opt out of the cap below. */
.clx-field-h .clx-input-wrap[b-n08s5bx5gs] {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 320px;
}

.clx-field-h .clx-input-wrap .smx-input[b-n08s5bx5gs] {
    width: 100%;
}

.clx-fspan-2 .clx-field-h .clx-input-wrap[b-n08s5bx5gs],
.clx-fspan-full .clx-field-h .clx-input-wrap[b-n08s5bx5gs] {
    max-width: none;
}

@media (max-width: 480px) {
    .clx-field-h[b-n08s5bx5gs] {
        flex-wrap: wrap;
    }

    .clx-field-h .clx-label[b-n08s5bx5gs] {
        flex: 0 0 100%;
        width: 100%;
        max-width: 100%;
    }

    .clx-field-h .clx-input-wrap[b-n08s5bx5gs] {
        flex: 1 1 100%;
        max-width: none;
    }
}

/* ── Shared field/button vocabulary — redeclared here, same as every
   other master edit dialog (CSS isolation means .smx-* rules live per
   .razor.css file even though the class names are a shared convention). */

.smx-input[b-n08s5bx5gs],
.clx-field textarea[b-n08s5bx5gs],
.clx-field select[b-n08s5bx5gs] {
    height: 40px;
    padding: 8px 12px;
    font-size: 13px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    transition: border-color .12s, box-shadow .12s, background .12s;
}

.smx-input:hover[b-n08s5bx5gs],
.clx-field textarea:hover[b-n08s5bx5gs],
.clx-field select:hover[b-n08s5bx5gs] {
    background: #F8FCFA;
    border-color: #BFE7DA;
}

.smx-input:focus[b-n08s5bx5gs],
.clx-field textarea:focus[b-n08s5bx5gs],
.clx-field select:focus[b-n08s5bx5gs] {
    outline: none;
    border-color: #27AE60;
    box-shadow: 0 0 0 3px rgba(39, 174, 96, .16);
}

.clx-upper[b-n08s5bx5gs] {
    text-transform: uppercase;
}

/* QgDatePicker's own box doesn't match .smx-input by default — override
   via ::deep, scoped to this dialog only. */
.clx-input-wrap[b-n08s5bx5gs]  .qgdp-wrap {
    height: 40px;
    width: 100%;
    box-sizing: border-box;
    padding: 8px 12px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
}

    .clx-input-wrap[b-n08s5bx5gs]  .qgdp-wrap:hover {
        background: #F8FCFA;
        border-color: #BFE7DA;
    }

.clx-err[b-n08s5bx5gs] {
    font-size: .7rem;
    color: #DC3545;
    font-weight: 500;
}

/* Shown in the footer after a successful Save — per direct instruction,
   user stays on this form instead of being bounced back to the grid, so
   the confirmation needs to live right here rather than as a grid-level
   toast. Same size/weight as .clx-err, just the app's existing green
   accent instead of red. */
.clx-success[b-n08s5bx5gs] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .7rem;
    color: #1a7a4c;
    font-weight: 500;
}

/* Small inline "no lookup yet" / gap-flagging notes next to a label or
   under the CID lookup input — see ClientDto.cs's header comment for the
   backing rationale (no ClientType/City/Cid-mapping endpoints exist yet). */
.clx-hint[b-n08s5bx5gs] {
    display: block;
    font-size: .7rem;
    font-weight: 400;
    color: #9AA5B1;
    white-space: normal;
}

.clx-field-h .clx-label[b-n08s5bx5gs] {
    white-space: normal;
    line-height: 1.25;
}

/* ── Checkboxes ────────────────────────────────────────────────────── */

.clx-check[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    gap: 8px;
    height: 40px;
}

.clx-check .form-check-input[b-n08s5bx5gs] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: #27AE60;
}

.clx-check .form-check-label[b-n08s5bx5gs] {
    font-size: 13px;
    color: #2C3E50;
}

/* ── Password show/hide ───────────────────────────────────────────── */

.clx-pwd-row[b-n08s5bx5gs] {
    position: relative;
    display: flex;
}

.clx-pwd-row .smx-input[b-n08s5bx5gs] {
    padding-right: 40px;
}

.clx-pwd-toggle[b-n08s5bx5gs] {
    position: absolute;
    top: 0;
    right: 0;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: #6B7280;
    cursor: pointer;
}

    .clx-pwd-toggle:hover[b-n08s5bx5gs] {
        color: #27AE60;
    }

/* ── Footer toolbar buttons — shared shape, colored variants.
   34px per direct instruction — 40px read oversized at actual 100%
   browser zoom (only looked right zoomed out to 80%). ── */

.smx-btn[b-n08s5bx5gs] {
    height: 34px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .01em;
    padding: 0 16px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    cursor: pointer;
    transition: background .2s, border-color .2s, box-shadow .2s;
}

.smx-btn:hover[b-n08s5bx5gs] {
    background: #E2F5EE;
    border-color: #27AE60;
}

.smx-btn:disabled[b-n08s5bx5gs] {
    opacity: .65;
    cursor: default;
}

.smx-btn-save[b-n08s5bx5gs] {
    background: #28A745;
    border-color: #28A745;
    color: #ffffff;
}

.smx-btn-save:hover[b-n08s5bx5gs] {
    background: #23923e;
}

.clx-btn-del[b-n08s5bx5gs] {
    background: #DC3545;
    border-color: #DC3545;
    color: #ffffff;
}

.clx-btn-del:hover[b-n08s5bx5gs] {
    background: #c02233;
}

.smx-btn-grid[b-n08s5bx5gs] {
    background: #ffffff;
}

.clx-info-strip[b-n08s5bx5gs] {
    font-size: .75rem;
    color: #6B7280;
    margin-left: auto;
}

/* ── Client / Docs / Event / Login tab bar ──
   REDESIGN: per direct instruction (reference screenshot), rebuilt to
   match DocumentGrid.razor's own List/Tiles/Ledger-Month/Doctype-Month
   view-switcher token-for-token (.dg-tab/.dg-tabbar,
   Components/Pages/Transactions/DocumentGrid.razor.css) — small uppercase
   pill buttons, fully rounded on all 4 corners (not just top-attached tab
   corners like the previous "raised tab" look), solid #1ab394 fill when
   active, plain white/gray-border when not. .dg-tab is scoped to
   DocumentGrid.razor.css (Blazor CSS isolation, same recurring gotcha)
   so redeclared here under .clx-tab/.clx-tabbar with the same values. */
.clx-tabbar[b-n08s5bx5gs] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 8px 18px;
    background: #ffffff;
    border-bottom: 1px solid #e7eaec;
}

/* REMOVED: .clx-tabbar-actions (Event-tab Filters button relocated here in
   the previous pass) — per direct instruction, that was a SECOND Filters
   button duplicating ClientGrid's own top-right one. Reverted: the single
   top-right button now re-targets itself into this dialog's Event-tab
   drawer via ClientEntryDialog.OpenEventFilters()/ActiveTabChanged instead
   of a second instance living here. See ClientGrid.razor's OnFiltersClick. */

.clx-tab[b-n08s5bx5gs] {
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
}

    .clx-tab:hover[b-n08s5bx5gs] {
        background: #f5f5f5;
    }

.clx-tab-active[b-n08s5bx5gs] {
    background: #1ab394;
    color: #fff;
    border-color: #1ab394;
}

@media (max-width: 767px) {
    .clx-info-strip[b-n08s5bx5gs] {
        margin-left: 0;
        width: 100%;
        text-align: center;
    }
}

/* ── Group Name row + "List of Groups" popup ── per direct instruction,
   old CA_GAINS reference screenshot. Small text-link style button (not a
   full .mu-btn) to match the old UI's plain underlined link + tiny doc
   icon look, not a big green pill.

   UI polish (reported: sat too close/attached to "Existing record" right
   below it, read as part of that card instead of its own thing). Gave it
   the SAME card language as .cc-card (white bg, thin border, rounded
   corners) so it visually separates from Existing Record's own card
   below, plus its own bottom margin for a clear gap — same 14px .cc-card
   already uses, so the vertical rhythm between every section stays
   consistent top to bottom. Padding/gap bumped slightly (10px/12px, was
   0/8px) for a less cramped feel per direct instruction — field, no other
   spacing/structure changed. */
.clx-group-row[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    background: #ffffff;
    border: 1px solid #D9E4EC;
    border-radius: 6px;
    padding: 12px 14px;
    margin-bottom: 14px;
}

.clx-group-row .clx-input-wrap[b-n08s5bx5gs] {
    gap: 12px;
}

@media (max-width: 480px) {
    .clx-group-row .clx-input-wrap[b-n08s5bx5gs] {
        flex-wrap: wrap;
        row-gap: 8px;
    }
}

.clx-groups-link[b-n08s5bx5gs] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    color: #1a56a7;
    font-size: 12px;
    font-weight: 600;
    text-decoration: underline;
    cursor: pointer;
    white-space: nowrap;
    padding: 4px 2px;
}

    .clx-groups-link:hover[b-n08s5bx5gs] {
        color: #0F6B58;
    }

/* Small popup anchored near the Group Name field (position:relative on
   .clx-group-row in the markup) — NOT a full-screen modal, per direct
   instruction ("small popup/modal positioned near the Group Name field"). */
.clx-groups-popup[b-n08s5bx5gs] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 20;
    width: 320px;
    max-width: calc(100vw - 40px);
    background: #fff;
    border: 1px solid #D9E4EC;
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .18);
    overflow: hidden;
}

.clx-groups-popup-head[b-n08s5bx5gs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: #EAF8F4;
    border-bottom: 1px solid #BFE7DA;
    font-size: 13px;
    font-weight: 700;
    color: #0F6B58;
}

.clx-groups-popup-close[b-n08s5bx5gs] {
    background: none;
    border: none;
    font-size: 18px;
    line-height: 1;
    color: #6B7280;
    cursor: pointer;
    padding: 0 2px;
}

    .clx-groups-popup-close:hover[b-n08s5bx5gs] {
        color: #DC3545;
    }

.clx-groups-popup-body[b-n08s5bx5gs] {
    max-height: 220px;
    overflow-y: auto;
}

.clx-groups-table[b-n08s5bx5gs] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .clx-groups-table thead th[b-n08s5bx5gs] {
        position: sticky;
        top: 0;
        background: #4b5563;
        color: #fff;
        text-align: left;
        padding: 6px 12px;
        font-size: 12px;
        font-weight: 600;
    }

    .clx-groups-table thead th:nth-child(2)[b-n08s5bx5gs] {
        width: 40px;
    }

    .clx-groups-table thead th:last-child[b-n08s5bx5gs] {
        width: 36px;
    }

.clx-groups-row[b-n08s5bx5gs] {
    cursor: pointer;
}

    .clx-groups-row td[b-n08s5bx5gs] {
        padding: 6px 12px;
        border-bottom: 1px solid #eef2f7;
        color: #1a2537;
    }

    .clx-groups-row:hover td[b-n08s5bx5gs] {
        background: #eef4fb;
    }

.clx-groups-del[b-n08s5bx5gs] {
    background: none;
    border: none;
    color: #c7cbd1;
    cursor: not-allowed;
    padding: 2px 6px;
}

.clx-groups-empty[b-n08s5bx5gs] {
    padding: 14px 12px;
    text-align: center;
    color: #9AA5B1;
    font-size: 12px;
}
/* /Components/Pages/Masters/ClientEventTab.razor.rz.scp.css */
/* ClientEventTab.razor.css.

   FIX: .data-grid/.grid-row/.icon-btn/.edit-icon/.delete-icon/.grid-footer/
   .footer-left/.excel-icon/.text-center were assumed to be real GLOBAL
   classes in masters-forms.css — they are NOT. They only exist scoped
   inside ICategoryMaster.razor.css (the DEAD legacy component, confirmed
   earlier this session). Blazor CSS isolation means a class defined in one
   component's .razor.css never applies to another component — so this
   table rendered as completely bare, unstyled HTML (no header bar, no
   borders, plain black text) the entire time. This file now defines real
   scoped styles for the grid, using the app's own teal/mint accent
   (matching uf-section/uf-btn-save) rather than inventing new colors —
   structure still follows old UI's tight/bordered table density. */

/* BUG FIX / redesign: Event Type/Month/Day/CF/Save moved out of an inline
   filter-box row into the right-side .mu-drawer (see .razor's header
   comment) — per direct instruction to match ClientGrid's own filter-drawer
   pattern. Toolbar now only holds Client Name (read-only context) — the
   title chip and Filters button that used to sit above it are both gone
   from this component entirely (see .razor header's HISTORY note — the
   Filters button now lives in ClientEntryDialog's own header). */
.cet-toolbar[b-urzpxltou9] {
    display: flex;
    align-items: flex-end;
    gap: 14px;
    padding: 0 2px 14px;
    flex-wrap: wrap;
}

.cet-field[b-urzpxltou9] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 160px;
}

.cet-field label[b-urzpxltou9] {
    font-size: 12.5px;
    font-weight: 600;
    color: #475569;
}

.cet-field-name[b-urzpxltou9] {
    min-width: 260px;
    max-width: 420px;
    flex: 1 1 320px;
}

/* CF button inside the drawer — .cl-clear-btn (ClientFilterPanel's own
   equivalent) is scoped to THAT component's .razor.css and can't be reused
   here (Blazor CSS isolation, same gotcha this file's header already
   documents for the old .data-grid classes) — same look, own class. */
.cet-clear-btn[b-urzpxltou9] {
    background: #ffffff;
    color: #64748b;
}

.cet-footer[b-urzpxltou9] {
    margin-top: 10px;
}

.cet-gotopage[b-urzpxltou9] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #475569;
}

.cet-goto-select[b-urzpxltou9] {
    width: 70px;
    height: 34px;
}

@media (max-width: 767px) {
    .cet-toolbar[b-urzpxltou9] {
        flex-direction: column;
        align-items: stretch;
    }

    .cet-field-name[b-urzpxltou9] {
        min-width: 100%;
        max-width: 100%;
    }
}

/* ── Real grid styling (see header FIX note) — REBASED onto ClientGrid's
   own look (masters-forms.css .mu-table/.mu-foot + ClientGrid.razor.css),
   per direct instruction to use ClientGrid as the color/font reference —
   NOT the old UI's navy/teal, and NOT this file's earlier teal-accent pass
   either. Dark slate header (#4b5563, same as every other grid in this
   app), striped/hover rows, #1a56a7 index color — copied token-for-token
   from .mu-table so this tab reads as the same design system as
   ClientGrid, not a one-off. ──────────────────────────────────────────── */

.cet-table-wrap[b-urzpxltou9] {
    overflow-x: auto;
    border: 1px solid #e2e5e9;
    border-radius: 8px;
}

.cet-table[b-urzpxltou9] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    background: #ffffff;
}

.cet-table th[b-urzpxltou9] {
    background: #4b5563;
    color: #ffffff;
    font-weight: 600;
    font-size: 12.5px;
    text-align: left;
    padding: 12px 14px;
    white-space: nowrap;
}

.cet-table td[b-urzpxltou9] {
    padding: 10px 14px;
    border-bottom: 1px solid #eef2f7;
    color: #1a2537;
}

.cet-table tbody tr:last-child td[b-urzpxltou9] {
    border-bottom: none;
}

.cet-table tbody tr:nth-child(even) td[b-urzpxltou9] {
    background: #f7f9fc;
}

.cet-table tbody tr:hover td[b-urzpxltou9] {
    background: #eef4fb;
}

/* Sr# column — same blue/bold treatment as ClientGrid's row index (.mu-idx). */
.cet-idx[b-urzpxltou9] {
    color: #1a56a7;
    font-weight: 600;
}

.cet-td-center[b-urzpxltou9] {
    text-align: center;
    width: 60px;
}

.cet-icon-btn[b-urzpxltou9] {
    border: none;
    background: none;
    cursor: pointer;
    font-size: 14px;
    padding: 2px 6px;
    border-radius: 4px;
    line-height: 1;
}

.cet-icon-btn:hover[b-urzpxltou9] {
    background: #eef4fb;
}

.cet-no-rows[b-urzpxltou9] {
    text-align: center;
    padding: 14px;
    color: #94a3b8;
}

.cet-footer-bar[b-urzpxltou9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    padding: 12px 16px;
    background: #fbfcfe;
    border: 1px solid #e2e5e9;
    border-top: none;
    border-radius: 0 0 8px 8px;
    font-size: 12.5px;
    color: #64748b;
}
/* /Components/Pages/Masters/ClientFilterPanel.razor.rz.scp.css */
/* Small accents on top of the shared mu-drawer styling (masters-forms.css). */

.cl-drawer-actions[b-kwpkm45yzr] {
    display: flex;
    gap: 8px;
    padding: 10px 16px;
}

.cl-clear-btn[b-kwpkm45yzr] {
    background: #ffffff;
    color: #64748b;
}

/* FromDate/ToDate — same .ql-field wrapper as the "Registers" page
   (Components/Pages/Transactions/Register.razor.css) around the shared
   GlobalDatepicker component. GlobalDatepicker's own boxed calendar-icon
   look is global (wwwroot/CSS/masters-forms.css, "GlobalDatepicker
   (shared)") so it doesn't need restyling here — only .ql-field itself is
   scoped per-file (Blazor CSS isolation), so it's redeclared exactly like
   every other page that uses this pattern. */
.ql-field[b-kwpkm45yzr] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

/* /Components/Pages/Masters/ClientGrid.razor.rz.scp.css */
/* Small accents on top of the shared mu-* grid/toolbar styling (masters-forms.css).
   Same flex-fill chain SalesRep.razor.css documents: .mu-page fills
   DashboardLayout's scrollable content area; only the grid itself scrolls. */

/* A-Z quick index bar — old-UI parity (client-side, current page only). */
.cl-az-bar[b-ul7zbbdr8p] {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 6px 10px;
    border-bottom: 1px solid #e2e5e9;
}

.cl-az-btn[b-ul7zbbdr8p] {
    border: 1px solid transparent;
    background: none;
    padding: 2px 6px;
    font-size: 12px;
    cursor: pointer;
    border-radius: 3px;
    color: #33475b;
}

.cl-az-btn:hover[b-ul7zbbdr8p] {
    background: #eef1f5;
}

.cl-az-active[b-ul7zbbdr8p] {
    background: #33475b;
    color: #fff;
}

.mu-page[b-ul7zbbdr8p] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ul7zbbdr8p] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-ul7zbbdr8p] {
    flex-shrink: 0;
}

.mu-foot[b-ul7zbbdr8p] {
    flex-shrink: 0;
}

/* ── Split view (left mini client list + right Entry form) ──────────────
   Per direct instruction + old CA_GAINS reference screenshot: while Entry
   is open, both panes stay visible side-by-side instead of Entry replacing
   the grid body below a hidden table. Row structure of .mu-page (title
   bar → this row → nothing else while Entry's open) means this can just
   flex:1 to fill the same space .mu-card/.mu-foot occupy when Entry's
   closed. */
.cl-split-wrap[b-ul7zbbdr8p] {
    flex: 1;
    display: flex;
    flex-direction: row;
    align-items: flex-start; /* BUG FIX: default stretch made cl-mini-grid
        match cl-entry-pane's full column height even when the (now
        group-filtered) list only had 1-2 rows -> big blank space below
        the last row. flex-start sizes cl-mini-grid to its OWN content;
        cl-entry-pane opts back into full-height via align-self below. */
    gap: 16px;
    min-height: 0;
}

.cl-mini-grid[b-ul7zbbdr8p] {
    flex: 0 0 220px;
    width: 220px;
    /* REVISED (still-blank-space bug, take 2): previous version relied on
       flex:1 on the INNER .cl-mini-grid-scroll child growing to fill this
       box while this box itself sized to content via the parent's
       align-items:flex-start. That depends on an edge-case flexbox rule
       (flex-basis:0% falls back to content-based sizing only when the
       flex container's own main size is indefinite) that some engines
       don't resolve the way this needed -> box still stretched full
       height with 1 row. FIX: drop the inner flex-grow trick entirely.
       max-height (percentage, resolves against .cl-split-wrap's definite
       height — no ambiguity there) + overflow-y:auto go directly on THIS
       box: plain content-based height (1 row = short box) up to the cap,
       scrolling only if content exceeds it. No flex-grow anywhere in the
       chain now. */
    max-height: 100%;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}

.cl-mini-grid-scroll[b-ul7zbbdr8p] {
    /* No longer the scroll container (see .cl-mini-grid above) — kept only
       because the markup still wraps the table in this div; no layout
       role needed here anymore. */
}

.cl-mini-table[b-ul7zbbdr8p] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .cl-mini-table thead th[b-ul7zbbdr8p] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #4b5563;
        color: #fff;
        text-align: left;
        padding: 8px 10px;
        font-weight: 600;
        font-size: 12px;
    }

    .cl-mini-table .cl-mini-th-idx[b-ul7zbbdr8p] {
        width: 40px;
    }

.cl-mini-row[b-ul7zbbdr8p] {
    cursor: pointer;
    transition: background 0.12s;
}

    .cl-mini-row td[b-ul7zbbdr8p] {
        padding: 8px 10px;
        border-bottom: 1px solid #eef2f7;
        color: #1a2537;
    }

    .cl-mini-row:hover td[b-ul7zbbdr8p] {
        background: #eef4fb;
    }

/* Selected/currently-loaded-in-the-form row — same visual language as the
   full table's cl-row-editing highlight (teal tint + left accent bar). */
.cl-mini-row-active td[b-ul7zbbdr8p] {
    background: #EAF8F4 !important;
}

    .cl-mini-row-active td:first-child[b-ul7zbbdr8p] {
        box-shadow: inset 3px 0 0 #1ab394;
    }

.cl-mini-empty[b-ul7zbbdr8p] {
    padding: 16px 10px;
    color: #94a3b8;
    text-align: center;
    font-size: 13px;
}

.cl-entry-pane[b-ul7zbbdr8p] {
    flex: 1;
    align-self: stretch; /* opt back into full column height — wrap's
        align-items:flex-start (above) is only meant to shrink-fit
        cl-mini-grid, not the entry form. */
    min-width: 0;
    min-height: 0;
    /* BUG FIX (reported): scrolling this pane used to drag the WHOLE
       ClientEntryDialog (tabbar included) out of view, because
       .clx-popup-modal.clx-inline was height:auto — it grew taller than
       this pane, so THIS pane's own overflow-y:auto scrollbar ended up
       scrolling everything, tabbar included, instead of just the form
       body. Fix threads flex-fill down instead: this pane no longer
       scrolls itself (overflow:hidden, display:flex column so its child
       can flex:1-fill it exactly) — see ClientEntryDialog.razor.css's
       .clx-popup-overlay.clx-inline / .clx-popup-modal.clx-inline /
       .clx-popup-body.clx-inline rules, which now fill this pane exactly
       and let ONLY the form body scroll internally, tabbar/header/footer
       staying pinned in view. */
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Tablet/mobile — stack mini list above the entry form instead of side by
   side (per direct instruction: don't break desktop, but don't force a
   220px-wide sidebar + squeezed form onto a narrow viewport either). */
@media (max-width: 900px) {
    .cl-split-wrap[b-ul7zbbdr8p] {
        flex-direction: column;
    }

    .cl-mini-grid[b-ul7zbbdr8p] {
        flex: 0 0 auto;
        width: 100%;
        max-height: 220px;
    }
}

/* BUG FIX (reported): grid looked "compressed"/left unused empty space
   below it at 100% zoom on tall viewports. Root cause: masters-forms.css's
   shared .mu-table-wrap hardcodes `height: 540px` — a fixed pixel value,
   same for every masters grid, that never grows to fill whatever's
   actually left in .mu-card once the toolbar/AZ-bar take their own space.
   That's also what created the DOUBLE-scrollbar oddity (outer .gains-content
   page scroll + inner fixed-540px table scroll both existing at once) —
   with real page content shorter than the viewport, the leftover gap below
   540px just sat there as dead space instead of the table claiming it.
   Overridden HERE (ClientGrid only, scoped ::deep since ClientGridTable is
   a child component — CSS isolation) rather than editing the shared file,
   so no other master's grid (SalesRep etc.) is touched. flex:1 lets the
   table wrapper claim exactly whatever .mu-card has left after its
   flex-shrink:0 siblings (toolbar, AZ bar) — its own overflow:auto (still
   inherited from masters-forms.css) then scrolls ONLY the rows, while the
   page/header above stays put, matching every other flex-fill panel in
   this app (see .mu-page/.mu-card above). No pixel width anywhere in this
   chain — .mu-table itself is already `width:100%` (masters-forms.css),
   so horizontal space was never the actual problem, only vertical. */
.mu-card[b-ul7zbbdr8p]  .mu-table-wrap {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
}

.cl-xls[b-ul7zbbdr8p] {
    width: 34px;
    height: 34px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #ffffff;
    color: #1ab99a;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.cl-xls:hover[b-ul7zbbdr8p] {
    background: #eefaf7;
    border-color: #1ab99a;
}

.cl-del-btn[b-ul7zbbdr8p] {
    background: #dc2626;
    border-color: #dc2626;
    color: #ffffff;
}

.cl-del-btn:hover[b-ul7zbbdr8p] {
    background: #b91c1c;
}

.cl-filter-chip[b-ul7zbbdr8p] {
    background: #fff7ed;
    border-color: #fdba74;
    color: #b45309;
}

.cl-info-strip[b-ul7zbbdr8p] {
    font-size: .82rem;
    color: #64748b;
}

.cl-load-err[b-ul7zbbdr8p] {
    font-size: .8rem;
    color: #DC3545;
    font-weight: 500;
}

.cl-foot-left[b-ul7zbbdr8p] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

/* Filters button — classic Gains green, matching every other master's
   .mu-btn.sr-filters-btn-style override (two classes to beat
   ".mu-btn.primary"'s specificity without editing that shared class). */
.mu-btn.cl-filters-btn[b-ul7zbbdr8p] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.cl-filters-btn:hover[b-ul7zbbdr8p] {
        background: #23923e;
        border-color: #23923e;
    }

/* Row currently open in the inline Client Entry panel below (per direct
   instruction — Grid + Entry same page now, old CA_GAINS split view).
   ::deep needed because the <tr> is rendered by the CHILD component
   ClientGridTable — CSS isolation means a plain (non-::deep) selector
   here would never match it, same recurring gotcha as everywhere else
   in this app. Left-edge accent bar so it's visually distinct from the
   plain-tint cl-row-selected (bulk checkbox) state even if both apply
   to the same row at once. */
[b-ul7zbbdr8p] tr.cl-row-editing {
    background: #EAF8F4 !important;
    box-shadow: inset 3px 0 0 #1ab394;
}

/* ── Responsive: title bar / toolbar wrap gracefully down to phone width ── */
@media (max-width: 768px) {
    .cl-foot-left[b-ul7zbbdr8p] {
        width: 100%;
    }
}

@media (max-width: 576px) {
    .cl-info-strip[b-ul7zbbdr8p] {
        width: 100%;
    }
}
/* /Components/Pages/Masters/ClientGridTable.razor.rz.scp.css */
/* Small accents on top of the shared mu-table styling (masters-forms.css). */

/* Flex-fill — mirrors SalesRepGrid.razor.css: this component's own root
   (.mu-table-wrap) grows to fill the remaining height of the parent's
   .mu-card flex column and scrolls internally. */
.mu-table-wrap[b-g94d5aaqnc] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.cl-ok[b-g94d5aaqnc] {
    color: #16a34a;
}

.cl-no[b-g94d5aaqnc] {
    color: #dc2626;
}

/* GroupName/ClientName render as plain link-style buttons — only these two
   open the entry dialog; the rest of the row just selects. */
.cl-link[b-g94d5aaqnc] {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: 600;
    color: #1a56a7;
    cursor: pointer;
    text-align: left;
}

.cl-link:hover[b-g94d5aaqnc] {
    text-decoration: underline;
}

.cl-date[b-g94d5aaqnc] {
    white-space: nowrap;
    color: #64748b;
}

.cl-active[b-g94d5aaqnc] {
    text-align: center;
}

/* Active/Inactive is now clickable — one click calls api/clientgrid/
   updateactive for just that row — so it's a button, not a bare icon. */
.cl-active-toggle[b-g94d5aaqnc] {
    background: none;
    border: none;
    padding: 4px;
    cursor: pointer;
    font-size: inherit;
    line-height: 1;
}

    .cl-active-toggle:hover[b-g94d5aaqnc] {
        opacity: .7;
    }

/* Classic Gains green theme accents on top of the shared .mu-table (dark
   header, sticky freeze, alternating rows, scrollbar all inherited from
   masters-forms.css) — hover/selected tint shifted to green, scoped here. */
.cl-table tbody tr:hover td[b-g94d5aaqnc] {
    background: #E2F5EE;
}

.cl-row-selected td[b-g94d5aaqnc] {
    background: #DDF3E8 !important;
}

    .cl-row-selected:hover td[b-g94d5aaqnc] {
        background: #CDECDD !important;
    }
/* /Components/Pages/Masters/ClientLoginTab.razor.rz.scp.css */
/* ClientLoginTab.razor.css — layout-only. Checkbox-grid/save-footer
   colors & box styling come from XLedgerccgroup's own global classes
   (mu-card, mu-table, xlc-th-chk/xlc-td-chk, xlc-grow, mu-btn, bspl-footer)
   — reused as-is per direct instruction to use XLedgerccgroup as the
   Login tab's design reference. */

.cln-card[b-2f2m08xajk] {
    padding: 16px;
}

.cln-clientrow[b-2f2m08xajk] {
    display: flex;
    gap: 8px;
    align-items: baseline;
    padding: 4px 0 14px;
    font-size: 14px;
}

.cln-clientlabel[b-2f2m08xajk] {
    color: #6B7280;
}
/* /Components/Pages/Masters/CompanyPersonDialog.razor.rz.scp.css */
/* CompanyPersonDialog.razor.css — scoped styles for the Add Person modal.
   All structural/visual base (gradient header, teal left accent, close
   button, green SAVE button, red-star required, input/invalid/error
   colors) comes from the GLOBAL wwwroot/css/masters-forms.css uf-* system
   — same base ICategoryEdit.razor and ClientEntryDialog.razor already
   build on. Only component-specific sizing lives here, cloned 1:1 from
   ICategoryEdit.razor.css's own pattern (max-width + field spacing). */

.uf-modal-sm.cpd-modal[b-r8u4oef8o4] { max-width: 480px; }

.uf-field.cpd-field[b-r8u4oef8o4] { margin-bottom: 16px; }
.uf-field.cpd-field:last-of-type[b-r8u4oef8o4] { margin-bottom: 0; }

@media (max-width: 540px) {
    .uf-field.cpd-field[b-r8u4oef8o4] { grid-template-columns: 1fr; gap: 4px; }
}
/* /Components/Pages/Masters/ContactDialog.razor.rz.scp.css */
/* Small Add/Edit Contact popup — same mint-green ERP theme as
   ClientEntryDialog/SalesRepEdit, but self-contained (its own ctcx-* field
   grid, not a reuse of ClientEntryDialog's clx-* — CSS isolation is per
   component, see the .razor's own comment). Higher z-index than the
   ClientEntryDialog it stacks on top of. */

.ctcx-overlay[b-h8xo1g27y4] {
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(20, 30, 40, .55);
    z-index: 1250;
}

.ctcx-modal[b-h8xo1g27y4] {
    width: 520px;
    max-width: 100%;
    max-height: 90vh;
    border-radius: 10px;
    border: 1px solid #D9E4EC;
    box-shadow: 0 12px 34px rgba(20, 30, 40, .22);
    background: #ffffff;
    animation: ctcxModalIn-b-h8xo1g27y4 .16s ease-out;
}

@keyframes ctcxModalIn-b-h8xo1g27y4 {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

@media (max-width: 576px) {
    .ctcx-overlay[b-h8xo1g27y4] { padding: 0; align-items: stretch; }
    .ctcx-modal[b-h8xo1g27y4]   { width: 100%; max-width: 100%; max-height: 100vh; border-radius: 0; }
}

.ctcx-header[b-h8xo1g27y4] {
    background: #EAF8F4;
    border-bottom: 1px solid #BFE7DA;
}

    .ctcx-header .uf-title > span:first-child[b-h8xo1g27y4] {
        color: #0F6B58;
        font-weight: 700;
        letter-spacing: .3px;
    }

.ctcx-close[b-h8xo1g27y4] {
    background: #ffffff;
    color: #27AE60;
    border-radius: 50%;
    transition: background .2s, color .2s;
}

    .ctcx-close:hover[b-h8xo1g27y4] {
        background: #27AE60;
        color: #ffffff;
    }

.ctcx-form[b-h8xo1g27y4] {
    display: flex;
    flex-direction: column;
}

.ctcx-body[b-h8xo1g27y4] {
    padding: 20px;
    background: #ffffff;
}

.ctcx-fgrid[b-h8xo1g27y4] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    column-gap: 16px;
    row-gap: 16px;
}

.ctcx-fcell[b-h8xo1g27y4] {
    min-width: 0;
}

.ctcx-fspan-2[b-h8xo1g27y4] {
    grid-column: span 2;
}

@media (max-width: 480px) {
    .ctcx-fgrid[b-h8xo1g27y4] { grid-template-columns: 1fr; }
    .ctcx-fspan-2[b-h8xo1g27y4] { grid-column: span 1; }
}

.ctcx-field-h[b-h8xo1g27y4] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ctcx-label[b-h8xo1g27y4] {
    font-size: 12px;
    font-weight: 600;
    color: #6B7280;
}

.ctcx-input-wrap[b-h8xo1g27y4] {
    min-width: 0;
}

.ctcx-input[b-h8xo1g27y4] {
    width: 100%;
    height: 38px;
    box-sizing: border-box;
    padding: 8px 12px;
    font-size: 13px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    transition: border-color .12s, box-shadow .12s, background .12s;
}

    .ctcx-input:hover[b-h8xo1g27y4] {
        background: #F8FCFA;
        border-color: #BFE7DA;
    }

    .ctcx-input:focus[b-h8xo1g27y4] {
        outline: none;
        border-color: #27AE60;
        box-shadow: 0 0 0 3px rgba(39, 174, 96, .16);
    }

.ctcx-err[b-h8xo1g27y4] {
    font-size: .7rem;
    color: #DC3545;
    font-weight: 500;
}

.ctcx-footer[b-h8xo1g27y4]  .ft-bar {
    position: static;
    justify-content: flex-end;
    gap: 10px;
    padding: 12px 20px;
    background: #ffffff;
    border-top: 1px solid #D9E4EC;
    box-shadow: none;
}

@media (max-width: 480px) {
    .ctcx-footer[b-h8xo1g27y4]  .ft-bar {
        justify-content: center;
    }
}

.ctcx-btn[b-h8xo1g27y4] {
    height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 600;
    padding: 0 16px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    cursor: pointer;
    transition: background .2s, border-color .2s;
}

    .ctcx-btn:hover[b-h8xo1g27y4] {
        background: #E2F5EE;
        border-color: #27AE60;
    }

.ctcx-btn-save[b-h8xo1g27y4] {
    background: #28A745;
    border-color: #28A745;
    color: #ffffff;
}

    .ctcx-btn-save:hover[b-h8xo1g27y4] {
        background: #23923e;
    }

.ctcx-btn-cancel[b-h8xo1g27y4] {
    background: #ffffff;
}
/* /Components/Pages/Masters/ContactGrid.razor.rz.scp.css */
/* Contacts sub-grid, embedded in ClientEntryDialog's "Contacts" section.
   Renders a table on tablet/desktop and stacked cards on mobile — both are
   in the DOM; only one is visible at a time via the media query below. */

.ctc-wrap[b-fzdtr1rfmu] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ctc-toolbar[b-fzdtr1rfmu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.ctc-count[b-fzdtr1rfmu] {
    font-size: 13px;
    color: #6B7280;
}

.mu-btn.ctc-add-btn[b-fzdtr1rfmu] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ctc-add-btn:hover[b-fzdtr1rfmu] {
        background: #23923e;
        border-color: #23923e;
    }

/* ── Tablet/desktop table ─────────────────────────────────────────────── */

.ctc-table-wrap[b-fzdtr1rfmu] {
    overflow-x: auto;
    border: 1px solid #BFE7DA;
    border-radius: 6px;
}

.ctc-table[b-fzdtr1rfmu] {
    width: 100%;
    border-collapse: collapse;
}

    .ctc-table thead th[b-fzdtr1rfmu] {
        background: #EAF8F4;
        color: #0F6B58;
        font-size: 12px;
        font-weight: 700;
        text-align: left;
        padding: 10px 12px;
        border-bottom: 1px solid #BFE7DA;
    }

    .ctc-table tbody td[b-fzdtr1rfmu] {
        padding: 10px 12px;
        font-size: 13px;
        color: #2C3E50;
        border-bottom: 1px solid #EEF2F5;
    }

    .ctc-table tbody tr:last-child td[b-fzdtr1rfmu] {
        border-bottom: none;
    }

    .ctc-table tbody tr:hover td[b-fzdtr1rfmu] {
        background: #F8FCFA;
    }

.ctc-name[b-fzdtr1rfmu] {
    font-weight: 600;
}

.ctc-actions[b-fzdtr1rfmu] {
    display: flex;
    gap: 6px;
    justify-content: flex-end;
}

.ctc-icon-btn[b-fzdtr1rfmu] {
    width: 30px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
}

    .ctc-icon-btn:hover[b-fzdtr1rfmu] {
        background: #E2F5EE;
        border-color: #27AE60;
        color: #0F6B58;
    }

    .ctc-icon-btn.ctc-icon-del:hover[b-fzdtr1rfmu] {
        background: #FDECEC;
        border-color: #DC3545;
        color: #DC3545;
    }

/* ── Mobile stacked cards ─────────────────────────────────────────────── */

.ctc-cards[b-fzdtr1rfmu] {
    display: none;
    flex-direction: column;
    gap: 10px;
}

.ctc-card[b-fzdtr1rfmu] {
    border: 1px solid #BFE7DA;
    border-radius: 8px;
    padding: 12px 14px;
    background: #ffffff;
}

.ctc-card-hdr[b-fzdtr1rfmu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.ctc-card-name[b-fzdtr1rfmu] {
    font-weight: 700;
    color: #0F6B58;
    font-size: 14px;
}

.ctc-card-row[b-fzdtr1rfmu] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 13px;
    color: #2C3E50;
    padding: 3px 0;
}

.ctc-card-label[b-fzdtr1rfmu] {
    color: #6B7280;
}

/* Switch table → cards below tablet width, per the module's responsive spec
   ("on mobile, display contacts as stacked cards instead of a wide table"). */
@media (max-width: 767px) {
    .ctc-table-wrap[b-fzdtr1rfmu] {
        display: none;
    }

    .ctc-cards[b-fzdtr1rfmu] {
        display: flex;
    }

    .ctc-toolbar[b-fzdtr1rfmu] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Masters/EInvoiceSettings.razor.rz.scp.css */
/* =====================================================================
   E Invoice Settings — page-specific layer only.
   The card shell, section header, field grid, inputs, checkbox and
   Save button all reuse the shared .mu-*/.uf-* classes defined once in
   wwwroot/CSS/masters-forms.css (the same system every other Masters
   edit form — e.g. MCostHeadEdit — uses)[b-r7q4ypo1is], so this page stays visually
   consistent with the rest of the app. Only what's genuinely unique to
   this page (fixed-value State/Country display, the collapsible City
   reveal, and a couple of local width/spacing tweaks) lives here.
   ===================================================================== */

.eis-page[b-r7q4ypo1is] {
    height: 100%;
}

/* Compact settings card — fluid width capped for readability, not a
   fixed size; shrinks to 100% on small screens (see media query below).
   margin-left gives it breathing room off the sidebar edge instead of
   sitting flush against it. */
.eis-card[b-r7q4ypo1is] {
    width: 100%;
    max-width: 480px;
    margin-left: 16px;
}

.eis-section[b-r7q4ypo1is] {
    justify-content: space-between;
}

.eis-body[b-r7q4ypo1is] {
    display: flex;
    flex-direction: column;
}

.eis-form[b-r7q4ypo1is] {
    display: flex;
    flex-direction: column;
}

/* Even vertical rhythm between fields — same spacing convention as
   every other Masters edit form's .uf-field rows. */
.eis-field[b-r7q4ypo1is] {
    margin-bottom: 14px;
}

.eis-control[b-r7q4ypo1is] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

/* Read-only State/Country values — aligned to the same baseline as the
   input fields above/below them (matches .uf-input's 8px vertical padding). */
.eis-static[b-r7q4ypo1is] {
    font-size: 13px;
    font-weight: 650;
    color: #1a2537;
    padding-top: 8px;
}

/* Change State checkbox — sits in the input column, aligned directly
   under every other field's input (empty label keeps the 112px column). */
.eis-check[b-r7q4ypo1is] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 4px;
}

.eis-check-label[b-r7q4ypo1is] {
    font-size: 13px;
    color: #3c4858;
    font-weight: 500;
    cursor: pointer;
    user-select: none;
}

/* Collapsible City field, revealed only once Change State is checked */
.eis-city-wrap[b-r7q4ypo1is] {
    display: grid;
    grid-template-rows: 0fr;
    opacity: 0;
    transition: grid-template-rows 0.22s ease, opacity 0.18s ease;
}

    .eis-city-wrap.eis-city-open[b-r7q4ypo1is] {
        grid-template-rows: 1fr;
        opacity: 1;
        margin-bottom: 14px;
    }

.eis-city-inner[b-r7q4ypo1is] {
    overflow: hidden;
    min-height: 0;
}

/* Save button — anchored bottom-right in the shared uf-footer bar,
   consistent with every other Masters form's action row. */
.eis-footer[b-r7q4ypo1is] {
    justify-content: flex-end;
}

/* ── Responsive: same breakpoint every other Masters edit form uses.
   Stack label above its input/value instead of a fixed side-by-side
   column once the viewport gets tight (tablet/mobile). ── */
@media (max-width: 640px) {
    .eis-card[b-r7q4ypo1is] {
        max-width: 100%;
        margin-left: 0;
    }

    .eis-field[b-r7q4ypo1is] {
        grid-template-columns: 1fr;
        gap: 4px;
        margin-bottom: 12px;
    }

        .eis-field > label[b-r7q4ypo1is] {
            padding-top: 0;
        }

    .eis-static[b-r7q4ypo1is] {
        padding-top: 0;
    }

    .eis-footer[b-r7q4ypo1is] {
        justify-content: stretch;
    }

        .eis-footer .uf-btn-save[b-r7q4ypo1is] {
            width: 100%;
            justify-content: center;
        }
}
/* /Components/Pages/Masters/ExchangeRate_Month1.razor.rz.scp.css */
/* =====================================================================
   GAINS — ExchangeRate_Month1.razor.css   (Masters → Exchange Rate, monthly)
   Shared "mu-"/"bspl-" page & grid styles live in wwwroot/CSS/masters-forms.css.
   The "le-" field look isn't inherited across Blazor's per-file CSS scoping,
   so it's duplicated here — same convention already used in MItemEdit.razor.css.
   ===================================================================== */

.erm-page[b-31ldm3bebh] {
    gap: 14px;
}

/* ── Filter bar (site / month-mode / year) ── */
.erm-filter-bar[b-31ldm3bebh] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 18px 28px;
    padding: 16px 20px;
    background: #f7f9fc;
    border-bottom: 1px solid #e5e9f0;
}

.le-row[b-31ldm3bebh] {
    display: flex;
    align-items: center;
    gap: 10px;
}

    .le-row > label[b-31ldm3bebh] {
        font-size: 13px;
        font-weight: 600;
        color: #334155;
        white-space: nowrap;
    }

.le-inp[b-31ldm3bebh] {
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    min-width: 180px;
}

    .le-inp:focus[b-31ldm3bebh] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

    .le-inp.le-sm[b-31ldm3bebh] {
        min-width: 110px;
    }

.erm-pair[b-31ldm3bebh] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.erm-currency-badge[b-31ldm3bebh] {
    font-size: 12px;
    font-weight: 700;
    color: #15803d;
    background: #eaf7ef;
    border: 1px solid #cdeed9;
    border-radius: 5px;
    padding: 5px 9px;
    min-width: 34px;
    text-align: center;
}

.erm-go-btn[b-31ldm3bebh] {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    color: #334155;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .erm-go-btn:hover[b-31ldm3bebh] {
        background: #eef4fb;
        border-color: #1a56a7;
        color: #1a56a7;
    }

/* ── Start/End day of month radios ── */
.erm-radio-group[b-31ldm3bebh] {
    display: flex;
    gap: 16px;
}

.erm-radio[b-31ldm3bebh] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
    user-select: none;
}

    .erm-radio input[type="radio"][b-31ldm3bebh] {
        width: 15px;
        height: 15px;
        accent-color: #1a56a7;
        cursor: pointer;
        margin: 0;
    }

.erm-message[b-31ldm3bebh] {
    font-size: 13px;
    font-weight: 600;
    margin-left: auto;
}

/* ── Read Me toggle button + panel ── */
.erm-readme-btn[b-31ldm3bebh] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    border-radius: 6px;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

    .erm-readme-btn:hover[b-31ldm3bebh] {
        background: #eef4fb;
    }

.erm-readme[b-31ldm3bebh] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 12px 20px 0;
    padding: 10px 14px;
    background: #eef4fb;
    border: 1px solid #cfe0f3;
    border-radius: 6px;
    font-size: 12.5px;
    color: #1a2537;
}

    .erm-readme i[b-31ldm3bebh] {
        color: #1a56a7;
        margin-top: 1px;
    }

    .erm-readme span[b-31ldm3bebh] {
        flex: 1;
    }

.erm-readme-close[b-31ldm3bebh] {
    border: none;
    background: none;
    color: #64748b;
    cursor: pointer;
    padding: 0 2px;
}

    .erm-readme-close:hover[b-31ldm3bebh] {
        color: #334155;
    }

/* ── Grid (currency × month) ── */
.erm-grid-wrap[b-31ldm3bebh] {
    margin: 14px 20px 18px;
}

.erm-grid[b-31ldm3bebh] {
    min-width: 760px;
}

.erm-th-currency[b-31ldm3bebh] {
    text-align: left;
    min-width: 140px;
}

.erm-th-month[b-31ldm3bebh] {
    text-align: right;
    min-width: 56px;
}

/* ── Footer ── */
.erm-foot[b-31ldm3bebh] {
    padding: 14px 18px;
}

@media (max-width: 767px) {
    .erm-filter-bar[b-31ldm3bebh] {
        flex-direction: column;
        align-items: stretch;
        gap: 14px;
        padding: 14px;
    }

    .le-row[b-31ldm3bebh] {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .le-inp[b-31ldm3bebh] {
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .erm-pair[b-31ldm3bebh] {
        width: 100%;
    }

    .erm-message[b-31ldm3bebh] {
        margin-left: 0;
    }

    .erm-radio-group[b-31ldm3bebh] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Masters/GenerateScheme.razor.rz.scp.css */
/* mu-login is referenced in MLogin.razor but never defined in
   masters-forms.css — was rendering as a default browser button.
   Styled here to match the teal clickable-name look used across
   Masters grids (same color as .mu-idx). */
[b-zng4dm9t9x] .mu-login {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    color: #1a56a7;
    cursor: pointer;
    text-align: left;
}

    [b-zng4dm9t9x] .mu-login:hover {
        text-decoration: underline;
    }

/* =====================================================================
   Footer pinning — identical pattern to QLedger.razor.css's CONSOLIDATED
   block (confirmed working there). mu-page is a min-height:100vh flex
   column; mu-card grows and its own table-wrap is the only thing that
   scrolls; the footer is the last flex child so it sits at the true
   bottom, contained within the main content column (NOT position:fixed,
   which spans the full viewport and overlaps the sidebar).
   ===================================================================== */
/* Footer — sticky, not fixed. Sticky respects the content column's own
   width (sidebar excluded automatically) and adds no phantom height, so
   it can't force the whole page into an unwanted scroll the way
   min-height:100vh did. Table itself keeps scrolling internally via the
   existing global .mu-table-wrap (fixed height + overflow:auto). */
[b-zng4dm9t9x] .mu-foot {
    position: sticky;
    bottom: 0;
    z-index: 10;
    background: #fbfcfe;
}
/* /Components/Pages/Masters/GST.razor.rz.scp.css */
/* GST.razor.css — scoped styles for the GST list page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). No mu-toolbar on this page (no search/pagination
   toolbar), so no flex-shrink rule needed for it. */
.mu-page[b-s2a1sn5e8j] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-s2a1sn5e8j] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-foot[b-s2a1sn5e8j] {
    flex-shrink: 0;
}

/* Blue "link" look for the GST Name cell, matching other master grids */
.gst-link[b-s2a1sn5e8j] {
    color: #1a56a7;
    font-weight: 600;
}

/* Description column can be long — let it wrap instead of stretching the row */
.gst-desc[b-s2a1sn5e8j] {
    color: #475569;
    max-width: 320px;
    white-space: normal;
    word-break: break-word;
}

/* Grid now flex-fills the card (was a fixed 420px height) — only the
   table body scrolls, page fills the viewport. */
.mu-table-wrap[b-s2a1sn5e8j] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}
/* /Components/Pages/Masters/GSTEdit.razor.rz.scp.css */
/* GSTEdit.razor.css — scoped styles for the GST Master modal */

.uf-modal-sm.gst-modal[b-wain6udpxg] { max-width: 480px; }

.uf-field.gst-field[b-wain6udpxg] { margin-bottom: 16px; }
.uf-field.gst-field:last-of-type[b-wain6udpxg] { margin-bottom: 0; }

.gst-select[b-wain6udpxg] {
    appearance: auto;
}

.uf-footer-right[b-wain6udpxg] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — pinned to the right of SAVE */
.gst-btn-delete[b-wain6udpxg] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .gst-btn-delete:hover[b-wain6udpxg] {
        background: #c8393d;
    }

    .gst-btn-delete:disabled[b-wain6udpxg] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.gst-field[b-wain6udpxg] { grid-template-columns: 1fr; gap: 4px; }
}
/* /Components/Pages/Masters/GSTSetting.razor.rz.scp.css */
/* =====================================================================
   GST Settings — page-specific layer only.
   The card shell, section header, field grid, inputs, checkbox and
   Save button all reuse the shared .mu-*/.uf-* classes defined once in
   wwwroot/CSS/masters-forms.css (the same system E Invoice Settings and
   every other Masters edit form uses)[b-fxx1coyjxg], so this page stays visually
   consistent with the rest of the app. Mirrors EInvoiceSettings.razor.css
   class-for-class (eis- -> gss-) — only what's genuinely unique to this
   page (fixed-value State/Country display, the collapsible City reveal,
   and a couple of local width/spacing tweaks) lives here.
   ===================================================================== */

.gss-page[b-fxx1coyjxg] {
    height: 100%;
}

/* Compact settings card — fluid width capped for readability, not a
   fixed size; shrinks to 100% on small screens (see media query below).
   margin-left gives it breathing room off the sidebar edge instead of
   sitting flush against it. */
.gss-card[b-fxx1coyjxg] {
    width: 100%;
    max-width: 480px;
    margin-left: 16px;
}

.gss-section[b-fxx1coyjxg] {
    justify-content: space-between;
}

.gss-body[b-fxx1coyjxg] {
    display: flex;
    flex-direction: column;
}

.gss-form[b-fxx1coyjxg] {
    display: flex;
    flex-direction: column;
}

/* Even vertical rhythm between fields — same spacing convention as
   every other Masters edit form's .uf-field rows. */
.gss-field[b-fxx1coyjxg] {
    margin-bottom: 14px;
}

.gss-control[b-fxx1coyjxg] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

/* Read-only State/Country values — aligned to the same baseline as the
   input fields above/below them (matches .uf-input's 8px vertical padding). */
.gss-static[b-fxx1coyjxg] {
    font-size: 13px;
    font-weight: 650;
    color: #1a2537;
    padding-top: 8px;
}

/* Change State checkbox — sits in the input column, aligned directly
   under every other field's input (empty label keeps the 112px column). */
.gss-check[b-fxx1coyjxg] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 4px;
}

.gss-check-label[b-fxx1coyjxg] {
    font-size: 13px;
    color: #3c4858;
    font-weight: 500;
    cursor: pointer;
    user-select: none;
}

/* Collapsible City field, revealed only once Change State is checked */
.gss-city-wrap[b-fxx1coyjxg] {
    display: grid;
    grid-template-rows: 0fr;
    opacity: 0;
    transition: grid-template-rows 0.22s ease, opacity 0.18s ease;
}

    .gss-city-wrap.gss-city-open[b-fxx1coyjxg] {
        grid-template-rows: 1fr;
        opacity: 1;
        margin-bottom: 14px;
    }

.gss-city-inner[b-fxx1coyjxg] {
    overflow: hidden;
    min-height: 0;
}

/* Save button — anchored bottom-right in the shared uf-footer bar,
   consistent with every other Masters form's action row. */
.gss-footer[b-fxx1coyjxg] {
    justify-content: flex-end;
}

/* ── Responsive: same breakpoint every other Masters edit form uses.
   Stack label above its input/value instead of a fixed side-by-side
   column once the viewport gets tight (tablet/mobile). ── */
@media (max-width: 640px) {
    .gss-card[b-fxx1coyjxg] {
        max-width: 100%;
        margin-left: 0;
    }

    .gss-field[b-fxx1coyjxg] {
        grid-template-columns: 1fr;
        gap: 4px;
        margin-bottom: 12px;
    }

        .gss-field > label[b-fxx1coyjxg] {
            padding-top: 0;
        }

    .gss-static[b-fxx1coyjxg] {
        padding-top: 0;
    }

    .gss-footer[b-fxx1coyjxg] {
        justify-content: stretch;
    }

        .gss-footer .uf-btn-save[b-fxx1coyjxg] {
            width: 100%;
            justify-content: center;
        }
}
/* /Components/Pages/Masters/HSNDescription.razor.rz.scp.css */
/* HSNDescription.razor.css — scoped styles for the HSN Description list page.
   Direct clone of GST.razor.css: same "link" cell treatment, same
   count-label styling. Only class names are renamed. */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). No mu-toolbar on this page. */
.mu-page[b-ownxr0w44j] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ownxr0w44j] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-foot[b-ownxr0w44j] {
    flex-shrink: 0;
}

.hsn-mandatory-note[b-ownxr0w44j] {
    font-size: 12.5px;
    font-weight: 600;
    color: #e11d48;
    white-space: nowrap;
}

/* Blue "link" look for the HSN Code cell, matching GST's .gst-link */
.hsn-link[b-ownxr0w44j] {
    color: #1a56a7;
    font-weight: 600;
}

/* Description column can be long — let it wrap instead of stretching the row */
.hsn-desc[b-ownxr0w44j] {
    color: #475569;
    max-width: 320px;
    white-space: normal;
    word-break: break-word;
}

.hsn-service-cell[b-ownxr0w44j] {
    text-align: center;
}

/* "Is Service" header — center label + sort icon over the checkbox column
   below, narrow width so header and checkbox sit in the same column
   instead of the text overflowing left like before. */
.hsn-service-th[b-ownxr0w44j] {
    width: 90px;
    text-align: center;
}

    .hsn-service-th span[b-ownxr0w44j] {
        display: inline-block;
    }

.hsn-service-chk[b-ownxr0w44j] {
    width: 16px;
    height: 16px;
    accent-color: #1a56a7;
    cursor: pointer;
}

/* Grid now flex-fills the card (was a fixed 420px height) — only the
   table body scrolls, page fills the viewport. */
.mu-table-wrap[b-ownxr0w44j] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

/* Record count next to the export/new buttons */
.hsn-count[b-ownxr0w44j] {
    font-size: .82rem;
    color: #64748b;
}
/* /Components/Pages/Masters/HSNDescriptionEdit.razor.rz.scp.css */
/* HSNDescriptionEdit.razor.css — scoped styles for the HSN Description modal.
   Direct clone of GSTEdit.razor.css: same modal width, field spacing, and
   solid-red delete button treatment. Only class names are renamed. */

.uf-modal-sm.hsn-modal[b-zfkvhrd7ut] { max-width: 480px; }

.uf-field.hsn-field[b-zfkvhrd7ut] { margin-bottom: 16px; }
.uf-field.hsn-field:last-of-type[b-zfkvhrd7ut] { margin-bottom: 0; }

.uf-footer-right[b-zfkvhrd7ut] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — pinned to the right of SAVE, same as GST's gst-btn-delete */
.hsn-btn-delete[b-zfkvhrd7ut] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .hsn-btn-delete:hover[b-zfkvhrd7ut] {
        background: #c8393d;
    }

    .hsn-btn-delete:disabled[b-zfkvhrd7ut] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.hsn-field[b-zfkvhrd7ut] { grid-template-columns: 1fr; gap: 4px; }
}
/* /Components/Pages/Masters/ICategory.razor.rz.scp.css */
/* ICategory.razor.css — scoped styles for the iCategory grid page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the grid (rendered by the child
   ICategoryGrid component) scrolls. Use height:100% here, never 100vh
   (see SchemeGrid.razor.css for the prior regression that caused). The
   child's own root (.mu-table-wrap) gets its matching flex:1/overflow:auto
   rule in ICategoryGrid.razor.css — Blazor scoped CSS can't reach across
   into a child component's own root without ::deep, and that half of the
   chain belongs to the child anyway since it owns that element. */
.mu-page[b-gqboadij4n] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-gqboadij4n] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-gqboadij4n] {
    flex-shrink: 0;
}

.mu-foot[b-gqboadij4n] {
    flex-shrink: 0;
}

.ic-link[b-gqboadij4n] {
    color: #1a56a7;
    font-weight: 600;
}

.ic-table-wrap[b-gqboadij4n] {
    overflow-x: auto;
}

.ic-table[b-gqboadij4n] {
    min-width: 480px;
}

.ic-row-selected td[b-gqboadij4n] {
    background: #eafaf4 !important;
}

@media (max-width: 640px) {
    .sr-foot-left[b-gqboadij4n] {
        width: 100%;
        justify-content: space-between;
    }

        .sr-foot-left .mu-btn-label[b-gqboadij4n] {
            display: none;
        }
}
/* /Components/Pages/Masters/ICategoryEdit.razor.rz.scp.css */
/* ICategoryEdit.razor.css — scoped styles for the iCategory Master modal
   Cloned 1:1 from GSTEdit.razor.css sizing/spacing — only class names swapped. */

.uf-modal-sm.ic-modal[b-4ky5qk8if4] { max-width: 480px; }

.uf-field.ic-field[b-4ky5qk8if4] { margin-bottom: 16px; }
.uf-field.ic-field:last-of-type[b-4ky5qk8if4] { margin-bottom: 0; }

.uf-footer-right[b-4ky5qk8if4] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — pinned to the right of SAVE (matches gst-btn-delete) */
.ic-btn-delete[b-4ky5qk8if4] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .ic-btn-delete:hover[b-4ky5qk8if4] {
        background: #c8393d;
    }

    .ic-btn-delete:disabled[b-4ky5qk8if4] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.ic-field[b-4ky5qk8if4] { grid-template-columns: 1fr; gap: 4px; }
}
/* /Components/Pages/Masters/ICategoryGrid.razor.rz.scp.css */
/* ICategoryGrid.razor.css — scoped styles for the iCategory grid child
   component (rendered inside ICategory.razor's .mu-card).

   Flex-fill layout — this component's own root element (.mu-table-wrap)
   needs to grow to fill the remaining height of the parent's .mu-card
   flex column and scroll internally, instead of the shared
   masters-forms.css fixed 540px height. The parent page (ICategory.razor)
   supplies the .mu-page{height:100%} / .mu-card{flex:1;...} half of the
   chain in its own razor.css — Blazor scoped CSS only applies within the
   component that declares it, so this half must live here since this div
   is this component's own root, not the parent's. */
.mu-table-wrap[b-3f2hvmpq17] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}
/* /Components/Pages/Masters/ICategoryMaster.razor.rz.scp.css */
/* ===== Page header ===== */
.page-header[b-82oqawp0np] {
    padding: 1.25rem 1.5rem 0.5rem;
}

.page-title[b-82oqawp0np] {
    color: #17a589;
    font-weight: 500;
    letter-spacing: 1px;
    margin: 0;
    font-size: 1.6rem;
}

/* ===== Card container (matches GST card width/alignment) ===== */
.content-card[b-82oqawp0np] {
    background: #fff;
    border: 1px solid #e2e2e2;
    border-radius: 4px;
    margin: 0 1.5rem 1.5rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    overflow: hidden;
}

/* ===== Table ===== */
.table-responsive-wrapper[b-82oqawp0np] {
    width: 100%;
    overflow-x: auto;
    max-height: 480px;
    overflow-y: auto;
}

.data-grid[b-82oqawp0np] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
    min-width: 560px;
}

.data-grid thead th[b-82oqawp0np] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #4b4b4b;
    color: #fff;
    font-weight: 600;
    padding: 0.9rem 1rem;
    text-align: left;
    cursor: pointer;
    white-space: nowrap;
    user-select: none;
}

.sort-icon[b-82oqawp0np] {
    font-size: 0.75rem;
    opacity: 0.75;
    margin-left: 2px;
}

.data-grid tbody td[b-82oqawp0np] {
    padding: 0.85rem 1rem;
    border-bottom: 1px solid #ececec;
    vertical-align: middle;
}

.grid-row:nth-child(odd)[b-82oqawp0np] {
    background-color: #f7f7f7;
}

.grid-row:nth-child(even)[b-82oqawp0np] {
    background-color: #ffffff;
}

.grid-row:hover[b-82oqawp0np] {
    background-color: #eafaf6;
    transition: background-color 0.15s ease-in-out;
}

.text-center[b-82oqawp0np] {
    text-align: center;
}

.icon-btn[b-82oqawp0np] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 1rem;
    padding: 4px 8px;
    border-radius: 4px;
    transition: background-color 0.15s ease-in-out;
}

.icon-btn:hover[b-82oqawp0np] {
    background-color: rgba(0,0,0,0.06);
}

.delete-icon[b-82oqawp0np] {
    color: #e74c3c;
}

.edit-icon[b-82oqawp0np] {
    color: #444;
}

/* ===== Footer ===== */
.grid-footer[b-82oqawp0np] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.9rem 1.25rem;
    background: #fafafa;
    border-top: 1px solid #ececec;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.footer-left[b-82oqawp0np] {
    display: flex;
    align-items: center;
    gap: 0.9rem;
}

.btn-new[b-82oqawp0np] {
    background: #e9e9e9;
    color: #333;
    border: 1px solid #d3d3d3;
    padding: 0.4rem 1.1rem;
    border-radius: 4px;
    font-weight: 500;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background-color 0.15s ease-in-out;
}

.btn-new:hover[b-82oqawp0np] {
    background: #dedede;
}

.excel-icon[b-82oqawp0np] {
    font-size: 1.25rem;
    cursor: pointer;
}

.footer-right[b-82oqawp0np] {
    color: #17a589;
    font-size: 0.85rem;
    font-weight: 500;
}

.alert-error[b-82oqawp0np] {
    background: #fdecea;
    color: #c0392b;
    border: 1px solid #f5c6c1;
    padding: 0.6rem 1rem;
    margin: 1rem 1.25rem 0;
    border-radius: 4px;
    font-size: 0.88rem;
}

.loading-state[b-82oqawp0np] {
    padding: 2rem;
    text-align: center;
    color: #777;
}

/* ===== Modal ===== */
.modal-backdrop-custom[b-82oqawp0np] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    animation: fadeIn 0.15s ease-in-out;
}

@@keyframes fadeIn {
    from[b-82oqawp0np] { opacity: 0; }
    to[b-82oqawp0np] { opacity: 1; }
}

.modal-box[b-82oqawp0np] {
    background: #fff;
    width: 100%;
    max-width: 620px;
    border-radius: 6px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.2);
    padding: 1.75rem 2rem 1.5rem;
    margin: 1rem;
    animation: slideDown 0.2s ease-in-out;
    max-height: 90vh;
    overflow-y: auto;
}

@@keyframes slideDown {
    from[b-82oqawp0np] { transform: translateY(-20px); opacity: 0; }
    to[b-82oqawp0np] { transform: translateY(0); opacity: 1; }
}

.modal-header-custom[b-82oqawp0np] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid #eee;
    padding-bottom: 0.9rem;
    margin-bottom: 1.25rem;
}

.modal-title-custom[b-82oqawp0np] {
    color: #17a589;
    font-weight: 500;
    letter-spacing: 0.5px;
    margin: 0;
    font-size: 1.4rem;
}

.modal-close[b-82oqawp0np] {
    cursor: pointer;
    font-size: 1.1rem;
    color: #777;
}

.modal-close:hover[b-82oqawp0np] {
    color: #333;
}

.form-row[b-82oqawp0np] {
    display: grid;
    grid-template-columns: 160px 1fr;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.15rem;
}

.form-label[b-82oqawp0np] {
    font-size: 0.95rem;
    color: #333;
}

.required-star[b-82oqawp0np] {
    color: #e74c3c;
}

.form-input[b-82oqawp0np] {
    height: 42px;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 0 0.75rem;
    font-size: 0.95rem;
    width: 100%;
}

.form-input:focus[b-82oqawp0np] {
    outline: none;
    border-color: #17a589;
    box-shadow: 0 0 0 2px rgba(23,165,137,0.15);
}

.field-validation[b-82oqawp0np] {
    grid-column: 2 / 3;
    color: #e74c3c;
    font-size: 0.8rem;
    margin-top: -0.8rem;
}

.modal-footer-custom[b-82oqawp0np] {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-start;
    border-top: 1px solid #eee;
    padding-top: 1.1rem;
    margin-top: 0.5rem;
}

.btn-save[b-82oqawp0np] {
    background: #17a589;
    color: #fff;
    border: none;
    padding: 0.55rem 1.6rem;
    border-radius: 4px;
    font-weight: 600;
    font-size: 0.9rem;
    cursor: pointer;
    transition: background-color 0.15s ease-in-out;
}

.btn-save:hover:not(:disabled)[b-82oqawp0np] {
    background: #148f76;
}

.btn-save:disabled[b-82oqawp0np] {
    background: #a7d9cd;
    cursor: not-allowed;
}

.btn-delete[b-82oqawp0np] {
    background: #e74c3c;
    color: #fff;
    border: none;
    padding: 0.55rem 1.6rem;
    border-radius: 4px;
    font-weight: 600;
    font-size: 0.9rem;
    cursor: pointer;
    transition: background-color 0.15s ease-in-out;
}

.btn-delete:hover[b-82oqawp0np] {
    background: #cf3d2e;
}

/* ===== Responsive ===== */
@@media (max-width: 768px) {
    .page-header[b-82oqawp0np] {
        padding: 1rem 1rem 0.5rem;
    }

    .content-card[b-82oqawp0np] {
        margin: 0 0.75rem 1rem;
    }

    .form-row[b-82oqawp0np] {
        grid-template-columns: 1fr;
        gap: 0.3rem;
    }

    .field-validation[b-82oqawp0np] {
        grid-column: 1;
    }

    .modal-box[b-82oqawp0np] {
        padding: 1.25rem 1.25rem 1rem;
    }

    .grid-footer[b-82oqawp0np] {
        flex-direction: column;
        align-items: flex-start;
    }
}

@@media (max-width: 480px) {
    .data-grid[b-82oqawp0np] {
        font-size: 0.85rem;
    }

    .data-grid thead th[b-82oqawp0np],
    .data-grid tbody td[b-82oqawp0np] {
        padding: 0.6rem 0.6rem;
    }
}
/* /Components/Pages/Masters/Industrymaster.razor.rz.scp.css */
/* =====================================================================
   GAINS — IndustryMaster.razor.css   (Masters → Industry grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Industry-page-specific rules remain here — same pattern as
   MLogin.razor.css / LevelMaster.razor.css.
   ===================================================================== */

/* "Industry Name" link-style button inside the grid rows */
.mu-login[b-fn9qgqtnsr] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-fn9qgqtnsr] {
        text-decoration: underline;
    }

/* =====================================================================
   Page-end footer pinning — same pattern used on MLogin / BSPL / Daybook.
   ===================================================================== */
.mu-page[b-fn9qgqtnsr] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-fn9qgqtnsr] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-fn9qgqtnsr] {
    flex-shrink: 0;
}

.mu-table-wrap[b-fn9qgqtnsr] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-fn9qgqtnsr] {
    flex-shrink: 0;
}

.bspl-footer-right[b-fn9qgqtnsr] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-fn9qgqtnsr] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* uf-footer expects exactly 2 flex children (left spacer + one right item);
   Cancel+Save are grouped into .uf-footer-right so it sees 2, not 3. */
.uf-footer-right[b-fn9qgqtnsr] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* uf-field rows in uf-body have no gap by default — add breathing room
   between stacked fields. */
.uf-field + .uf-field[b-fn9qgqtnsr] {
    margin-top: 16px;
}

/* ── Mobile: "New industry" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-fn9qgqtnsr] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-fn9qgqtnsr] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-fn9qgqtnsr] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-fn9qgqtnsr] {
                font-size: 15px;
            }

    .mu-foot-info[b-fn9qgqtnsr] {
        display: none;
    }
}
/* /Components/Pages/Masters/ItemBrand.razor.rz.scp.css */
/* ItemBrand.razor.css — scoped styles for the Item Brand grid page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). Matches MTaxClass.razor.css pattern. */
.mu-page[b-pgo6529jwl] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-pgo6529jwl] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-pgo6529jwl] {
    flex-shrink: 0;
}

.mu-table-wrap[b-pgo6529jwl] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-pgo6529jwl] {
    flex-shrink: 0;
}

/* Add/Edit popup — single-field form, default .uf-modal (780px) is oversized.
   Shrink + vertically center; scoped to this page only. */
.uf-modal-sm[b-pgo6529jwl] {
    max-width: 400px;
}

.uf-overlay[b-pgo6529jwl] {
    align-items: center;
}

@media (max-width: 480px) {
    .uf-modal-sm[b-pgo6529jwl] {
        max-width: 100%;
    }
}

/* Blue "link" look for the Item Brand cell, matching the GST reference */
.itembrand-link[b-pgo6529jwl] {
    color: #1a56a7;
    font-weight: 600;
}

.itembrand-count[b-pgo6529jwl] {
    font-size: 12.5px;
    color: #64748b;
    white-space: nowrap;
}

/* Responsive grid — horizontal scroll on narrow viewports so both
   columns stay reachable instead of wrapping/clipping. */
.itembrand-table-wrap[b-pgo6529jwl] {
    overflow-x: auto;
}

.itembrand-table[b-pgo6529jwl] {
    min-width: 420px;
}

@media (max-width: 640px) {
    .itembrand-table[b-pgo6529jwl] {
        min-width: 340px;
    }
}
/* /Components/Pages/Masters/ItemCategory.razor.rz.scp.css */
/* =====================================================================
   GAINS — ItemCategory.razor.css   (Masters → Item-Category)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-txhrgv78nx] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-txhrgv78nx] {
        text-decoration: underline;
    }

.mu-page[b-txhrgv78nx] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-txhrgv78nx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-txhrgv78nx] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-txhrgv78nx] {
    flex-shrink: 0;
}

.bspl-footer-right[b-txhrgv78nx] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-txhrgv78nx] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-txhrgv78nx] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Name Like / GO / CF / Item Group toolbar */
.ic-toolbar[b-txhrgv78nx] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    flex-wrap: wrap;
}

    .ic-toolbar .uf-input:first-child[b-txhrgv78nx] {
        flex: 1 1 220px;
    }

.ic-group-select[b-txhrgv78nx] {
    flex: 0 0 220px;
}

/* iGroup drill-down row inside the Assign Categories modal */
.ic-group-row[b-txhrgv78nx] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}

    .ic-group-row .ic-group-select[b-txhrgv78nx] {
        flex: 1 1 240px;
    }

    .ic-group-row .uf-btn[b-txhrgv78nx] {
        flex: 0 0 auto;
        white-space: nowrap;
    }

/* Checkbox column in the category checklist — centered, comfortable
   click target, consistent row height */
.ic-scroll td:nth-child(2)[b-txhrgv78nx] {
    text-align: center;
    width: 48px;
}

.ic-scroll input[type="checkbox"][b-txhrgv78nx] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    accent-color: #1a7a4c;
    vertical-align: middle;
}

.ic-scroll td[b-txhrgv78nx],
.ic-scroll th[b-txhrgv78nx] {
    padding: 8px 12px;
}

/* Category checklist inside the modal — small count, just scrolls */
.ic-scroll[b-txhrgv78nx] {
    max-height: 380px;
    overflow-y: auto;
}

.ic-linked-count[b-txhrgv78nx] {
    margin-top: 12px;
    font-size: 13px;
    color: #374151;
}

.ic-linked-total[b-txhrgv78nx] {
    color: #9ca3af;
    margin-left: 4px;
}
/* /Components/Pages/Masters/ItemIndustry.razor.rz.scp.css */
/* =====================================================================
   GAINS — ItemIndustry.razor.css   (Masters → Item-Industry, xItemIndustry)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-83zcw6pn4d] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-83zcw6pn4d] {
        text-decoration: underline;
    }

.mu-page[b-83zcw6pn4d] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-83zcw6pn4d] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-83zcw6pn4d] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-83zcw6pn4d] {
    flex-shrink: 0;
}

.bspl-footer-right[b-83zcw6pn4d] {
    font-size: inherit;
    color: inherit;
}

.uf-footer-right[b-83zcw6pn4d] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Wider modal — has a filter row + paged item grid, needs more room */
.ii-modal-lg[b-83zcw6pn4d] {
    width: min(820px, 92vw);
}

.ii-selected-count[b-83zcw6pn4d] {
    font-size: 13px;
    font-weight: 600;
    color: #1a7a4c;
    margin-left: auto;
    margin-right: 12px;
    white-space: nowrap;
}

/* Item Group select / OR / Name Like / GO / CF filter row */
.ii-filter-row[b-83zcw6pn4d] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

.ii-group-select[b-83zcw6pn4d] {
    flex: 0 0 220px;
}

.ii-or[b-83zcw6pn4d] {
    font-weight: 600;
    color: #9ca3af;
    font-size: 12px;
}

.ii-filter-row input[type="text"][b-83zcw6pn4d] {
    flex: 1 1 200px;
}

/* Item checklist — bounded scroll, comfortable checkbox target */
.ii-scroll[b-83zcw6pn4d] {
    max-height: 380px;
    overflow-y: auto;
}

    .ii-scroll td:nth-child(2)[b-83zcw6pn4d] {
        text-align: center;
        width: 48px;
    }

    .ii-scroll input[type="checkbox"][b-83zcw6pn4d] {
        width: 17px;
        height: 17px;
        cursor: pointer;
        accent-color: #1a7a4c;
        vertical-align: middle;
    }

    .ii-scroll td[b-83zcw6pn4d],
    .ii-scroll th[b-83zcw6pn4d] {
        padding: 8px 12px;
    }

.ii-pager[b-83zcw6pn4d] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 10px;
}
/* /Components/Pages/Masters/ItemRate.razor.rz.scp.css */
/* =====================================================================
   GAINS — ItemRate.razor.css   (Masters → Item Rate, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Structural flex-fill rules below are copied verbatim from
   MCostCenter.razor.css so both pages fill the content area, scroll the
   grid body internally, and keep header/toolbar/footer fixed the same way.
   ===================================================================== */

.mu-page[b-bjr77rbbwz] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-bjr77rbbwz] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-bjr77rbbwz] {
    flex-shrink: 0;
}

.mu-table-wrap[b-bjr77rbbwz] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-bjr77rbbwz] {
    flex-shrink: 0;
}

.mu-pager[b-bjr77rbbwz] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Toolbar: date / group / name / actions, compact + responsive ── */
.ir-toolbar[b-bjr77rbbwz] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.ir-toolbar-field[b-bjr77rbbwz] {
    display: flex;
    flex-direction: column;
    min-width: 160px;
}

.ir-toolbar-field-grow[b-bjr77rbbwz] {
    flex: 1;
    min-width: 200px;
}

.ir-toolbar-actions[b-bjr77rbbwz] {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

.ir-label[b-bjr77rbbwz] {
    display: block;
    font-size: 12.5px;
    font-weight: 600;
    color: #475569;
    margin-bottom: 4px;
}

.ir-select[b-bjr77rbbwz] {
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2394a3b8'%3E%3Cpath fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z' clip-rule='evenodd'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
    padding-right: 30px;
    cursor: pointer;
}

.ir-btn-cf[b-bjr77rbbwz] {
    background: #f3e8ff;
    border-color: #c084fc;
    color: #7e22ce;
    font-weight: 700;
    padding: 8px 16px;
}

.ir-btn-search[b-bjr77rbbwz] {
    background: #17a673;
    border-color: #17a673;
    color: #fff;
    padding: 8px 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .ir-btn-search:hover[b-bjr77rbbwz] {
        background: #128a5f;
    }

/* ── Link cell ───────────────────────────────────────────────────── */
.ir-link[b-bjr77rbbwz] {
    color: #1a56a7;
    font-weight: 600;
}

.ir-num[b-bjr77rbbwz] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* ── Grid: sticky header, fills remaining height, scrolls internally ── */
.ir-table[b-bjr77rbbwz] {
    min-width: 900px;
}

    .ir-table thead th[b-bjr77rbbwz] {
        position: sticky;
        top: 0;
        z-index: 2;
    }

/* ── Footer ──────────────────────────────────────────────────────── */
.ir-foot[b-bjr77rbbwz] {
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
}

.ir-foot-right[b-bjr77rbbwz] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* ── Responsive ──────────────────────────────────────────────────── */
@media (max-width: 767px) {
    .ir-toolbar[b-bjr77rbbwz] {
        flex-direction: column;
        align-items: stretch;
    }

    .ir-toolbar-field[b-bjr77rbbwz],
    .ir-toolbar-field-grow[b-bjr77rbbwz] {
        min-width: 0;
        width: 100%;
    }

    .ir-toolbar-actions[b-bjr77rbbwz] {
        width: 100%;
    }

        .ir-toolbar-actions .mu-btn[b-bjr77rbbwz] {
            flex: 1;
        }
}

@media (max-width: 640px) {
    .ir-foot[b-bjr77rbbwz] {
        flex-direction: column;
        align-items: stretch;
    }

    .ir-foot-right[b-bjr77rbbwz] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Masters/ItemRateEdit.razor.rz.scp.css */
/* ItemRateEdit.razor.css — scoped styles for the Add Item Rate modal */

.ir-modal[b-lvvttk513n] { max-width: 480px; }

.uf-field.ir-field[b-lvvttk513n] { margin-bottom: 16px; }
.uf-field.ir-field:last-of-type[b-lvvttk513n] { margin-bottom: 0; }
.uf-field.ir-field > label[b-lvvttk513n] { font-size: 13px; padding-top: 9px; }

.ir-check-row[b-lvvttk513n] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 6px;
}

.ir-check-label[b-lvvttk513n] {
    font-size: 13.5px;
    color: #334155;
    padding-top: 0;
    cursor: pointer;
}

.ir-field-check input[type="checkbox"][b-lvvttk513n] {
    width: 16px;
    height: 16px;
    cursor: pointer;
}

.uf-footer-right[b-lvvttk513n] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — matches GST's filled delete treatment */
.ir-btn-delete[b-lvvttk513n] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .ir-btn-delete:hover[b-lvvttk513n] {
        background: #c8393d;
    }

    .ir-btn-delete:disabled[b-lvvttk513n] {
        opacity: 0.65;
        cursor: default;
    }

/* Confirmation-before-close dialog sits above the edit modal */
.ir-confirm-overlay[b-lvvttk513n] { z-index: 1100; }
.ir-confirm-modal[b-lvvttk513n] { max-width: 360px; }
.ir-confirm-modal .uf-body p[b-lvvttk513n] { margin: 0; color: #475569; font-size: 14px; }

@media (max-width: 540px) {
    .uf-field.ir-field[b-lvvttk513n] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field.ir-field > label[b-lvvttk513n] { padding-top: 0; }
}
/* /Components/Pages/Masters/Ledgercategory.razor.rz.scp.css */
/* =====================================================================
   GAINS — LedgerCategory.razor.css   (Masters → Ledger-Category)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-u7fas7tt6a] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-u7fas7tt6a] {
        text-decoration: underline;
    }

/* Page-end footer pinning — same pattern as every other Masters page. */
.mu-page[b-u7fas7tt6a] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-u7fas7tt6a] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-u7fas7tt6a] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-u7fas7tt6a] {
    flex-shrink: 0;
}

.bspl-footer-right[b-u7fas7tt6a] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-u7fas7tt6a] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-u7fas7tt6a] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Category checklist inside the modal — small count, just scrolls */
.lc-scroll[b-u7fas7tt6a] {
    max-height: 380px;
    overflow-y: auto;
}

.lc-linked-count[b-u7fas7tt6a] {
    margin-top: 12px;
    font-size: 13px;
    color: #374151;
}

.lc-linked-total[b-u7fas7tt6a] {
    color: #9ca3af;
    margin-left: 4px;
}
/* /Components/Pages/Masters/LedgerPopup.razor.rz.scp.css */
/* LedgerPopup.razor.css — scoped styles for the Add Ledger popup */

.lgp-overlay[b-i2arvc7x2i] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    overflow-y: auto;
}

/* Flex-fill layout — same pattern as TaxClass.razor.css/TaxClassGrid.razor.css:
   modal is a bounded (max-height: 90vh) flex column, header/footer stay
   flex-shrink:0, and .lgp-body/.lgp-table-wrap flex:1 to fill whatever
   room is left, instead of a fixed height that leaves blank space when a
   tax class only has a few ledgers. */
.lgp-modal[b-i2arvc7x2i] {
    position: relative;
    width: 100%;
    max-width: 960px;
    max-height: 90vh;
    background: #ffffff;
    border-radius: 6px;
    box-shadow: 0 20px 50px rgba(0,0,0,0.3);
    padding: 20px 24px 22px;
    display: flex;
    flex-direction: column;
    animation: lgp-in-b-i2arvc7x2i 0.18s ease-out;
}

.lgp-close[b-i2arvc7x2i] {
    position: absolute;
    top: 14px;
    right: 16px;
    background: none;
    border: none;
    color: #666;
    font-size: 16px;
    cursor: pointer;
}

    .lgp-close:hover[b-i2arvc7x2i] {
        color: #1a2537;
    }

.lgp-header[b-i2arvc7x2i] {
    flex-shrink: 0;
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 14px;
    padding-right: 24px;
}

.lgp-title-block[b-i2arvc7x2i] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lgp-title-label[b-i2arvc7x2i] {
    color: #475569;
    font-size: 14px;
}

.lgp-title-value[b-i2arvc7x2i] {
    color: #1a56a7;
    font-weight: 600;
    font-size: 15px;
}

.lgp-type-row[b-i2arvc7x2i] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
}

    .lgp-type-row label[b-i2arvc7x2i] {
        font-size: 13px;
        color: #475569;
        white-space: nowrap;
    }

.lgp-type-select[b-i2arvc7x2i] {
    width: 160px;
}

.lgp-body[b-i2arvc7x2i] {
    position: relative;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.lgp-table-wrap[b-i2arvc7x2i] {
    flex: 1;
    min-height: 260px;  /* floor so it doesn't collapse to almost nothing with few rows */
    overflow-x: auto;
    overflow-y: auto;
    border: 1px solid #e5e9ef;
    border-radius: 6px;

    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

    .lgp-table-wrap[b-i2arvc7x2i]::-webkit-scrollbar {
        width: 10px;
        height: 10px;
    }

    .lgp-table-wrap[b-i2arvc7x2i]::-webkit-scrollbar-thumb {
        background: #b6e8db;
        border-radius: 8px;
    }

.lgp-table[b-i2arvc7x2i] {
    width: 100%;
    min-width: 760px;
}

.lgp-row:hover td[b-i2arvc7x2i] {
    background: #f8fafc;
}

.lgp-th-chk[b-i2arvc7x2i] {
    width: 44px;
    text-align: center;
}

.lgp-input[b-i2arvc7x2i] {
    padding: 6px 9px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    font-size: 12.5px;
    color: #1a2537;
    font-family: inherit;
    background: #fff;
    outline: none;
}

.lgp-inline-select[b-i2arvc7x2i] {
    height: 32px;
    min-width: 130px;
}

    .lgp-inline-select:disabled[b-i2arvc7x2i] {
        background: #f1f5f9;
        color: #94a3b8;
        cursor: not-allowed;
    }

.lgp-error[b-i2arvc7x2i] {
    margin-top: 12px;
    padding: 9px 12px;
    border-radius: 6px;
    background: #fff5f6;
    border: 1px solid #f7cdd4;
    color: #be123c;
    font-size: 12.5px;
}

.lgp-footer[b-i2arvc7x2i] {
    flex-shrink: 0;
    margin-top: 16px;
}

.lgp-btn[b-i2arvc7x2i] {
    padding: 7px 22px;
    border: none;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    color: #fff;
}

.lgp-btn-save[b-i2arvc7x2i] {
    background: #16a765;
}

    .lgp-btn-save:hover[b-i2arvc7x2i] {
        background: #128a54;
    }

    .lgp-btn-save:disabled[b-i2arvc7x2i] {
        opacity: 0.65;
        cursor: default;
    }

@keyframes lgp-in-b-i2arvc7x2i {
    from { opacity: 0; transform: scale(0.96) translateY(8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

@media (max-width: 640px) {
    .lgp-modal[b-i2arvc7x2i] {
        max-width: 100%;
        margin: 0 6px;
        padding: 16px 14px 18px;
    }

    .lgp-type-row[b-i2arvc7x2i] {
        margin-left: 0;
        width: 100%;
    }

    .lgp-type-select[b-i2arvc7x2i] {
        width: 100%;
    }
}
/* /Components/Pages/Masters/LedgerSalesRep.razor.rz.scp.css */
/* =====================================================================
   GAINS — LedgerSalesRep.razor.css   (Masters → Ledger-SalesRep)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-87etxmtd5l] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-87etxmtd5l] {
        text-decoration: underline;
    }

.mu-page[b-87etxmtd5l] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-87etxmtd5l] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-87etxmtd5l] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-87etxmtd5l] {
    flex-shrink: 0;
}

.bspl-footer-right[b-87etxmtd5l] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Depot / Ledger Name / GO / CF toolbar on the main grid */
.lsr-toolbar[b-87etxmtd5l] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    padding: 12px 16px;
    flex-wrap: wrap;
}

.lsr-field[b-87etxmtd5l] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex: 1 1 0;
    min-width: 0;
}

    .lsr-field span[b-87etxmtd5l] {
        font-size: 10.5px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: #6b7280;
    }

    .lsr-field input[type="text"][b-87etxmtd5l],
    .lsr-field[b-87etxmtd5l]  select {
        height: 36px;
        padding: 0 10px;
        border: 1.5px solid #d1d5db;
        border-radius: 8px;
        font-size: 12.5px;
        font-family: inherit;
        background: #f8fafc;
        color: #111827;
        outline: none;
        transition: .12s;
        width: 100%;
        min-width: 0;
    }

        .lsr-field input[type="text"]:focus[b-87etxmtd5l],
        .lsr-field[b-87etxmtd5l]  select:focus {
            border-color: #1a7a4c;
            background: #fff;
        }

.lsr-person-toolbar[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

.lsr-person-toolbar input[type="text"][b-87etxmtd5l] {
    flex: 1 1 200px;
}

.lsr-selected-count[b-87etxmtd5l] {
    font-size: 13px;
    font-weight: 600;
    color: #1a7a4c;
    margin-left: auto;
    margin-right: 12px;
    white-space: nowrap;
}

lsr-person-toolbar[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

.lsr-person-toolbar input[type="text"][b-87etxmtd5l] {
    flex: 1 1 200px;
}

.lsr-selected-count[b-87etxmtd5l] {
    font-size: 13px;
    font-weight: 600;
    color: #1a7a4c;
    margin-left: auto;
    margin-right: 12px;
    white-space: nowrap;
}
/* Sales rep checklist — bounded scroll, comfortable checkbox target */
.lsr-scroll[b-87etxmtd5l] {
    max-height: 380px;
    overflow-y: auto;
}

    .lsr-scroll td:nth-child(2)[b-87etxmtd5l] {
        text-align: center;
        width: 48px;
    }

    .lsr-scroll input[type="checkbox"][b-87etxmtd5l] {
        appearance: none;
        -webkit-appearance: none;
        width: 17px;
        height: 17px;
        border: 1.5px solid #9ca3af;
        border-radius: 4px;
        cursor: pointer;
        vertical-align: middle;
        position: relative;
        background: #fff;
        margin: 0;
    }

        .lsr-scroll input[type="checkbox"]:checked[b-87etxmtd5l],
        .lsr-scroll input[type="checkbox"]:disabled:checked[b-87etxmtd5l] {
            background: #1a56a7;
            border-color: #1a56a7;
        }

            .lsr-scroll input[type="checkbox"]:checked[b-87etxmtd5l]::after {
                content: "";
                position: absolute;
                left: 5px;
                top: 1px;
                width: 4px;
                height: 9px;
                border: solid #fff;
                border-width: 0 2px 2px 0;
                transform: rotate(45deg);
            }

        .lsr-scroll input[type="checkbox"]:disabled[b-87etxmtd5l] {
            cursor: not-allowed;
        }

/* Person checklist's own pagination footer, inside the modal body */
.lsr-inner-footer[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #e5e7eb;
    font-size: 12px;
    color: #6b7280;
}

.lsr-inner-pager[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    gap: 10px;
}
/* /Components/Pages/Masters/LevelMaster.razor.rz.scp.css */
/* =====================================================================
   GAINS — LevelMaster.razor.css   (Masters → Level grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Level-page-specific rules remain here — same pattern as
   MLogin.razor.css.
   ===================================================================== */

/* "Level Name" link-style button inside the grid rows */
.mu-login[b-xhmdizcxj8] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-xhmdizcxj8] {
        text-decoration: underline;
    }

/* =====================================================================
   Page-end footer pinning — same pattern used on MLogin / BSPL / Daybook.
   ===================================================================== */
.mu-page[b-xhmdizcxj8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-xhmdizcxj8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-xhmdizcxj8] {
    flex-shrink: 0;
}

.mu-table-wrap[b-xhmdizcxj8] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-xhmdizcxj8] {
    flex-shrink: 0;
}

.bspl-footer-right[b-xhmdizcxj8] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-xhmdizcxj8] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* uf-footer expects exactly 2 flex children (left spacer + one right item);
   Cancel+Save are grouped into .uf-footer-right so it sees 2, not 3 — this
   is just a plain gap between the two buttons inside that group. */
.uf-footer-right[b-xhmdizcxj8] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* uf-field rows in uf-body were sitting flush against each other with no
   gap — add breathing room between stacked fields (last one flush to
   the footer as-is). */
.uf-field + .uf-field[b-xhmdizcxj8] {
    margin-top: 16px;
}

/* ── Mobile: "New level" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-xhmdizcxj8] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-xhmdizcxj8] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-xhmdizcxj8] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-xhmdizcxj8] {
                font-size: 15px;
            }

    .mu-foot-info[b-xhmdizcxj8] {
        display: none;
    }
}
/* /Components/Pages/Masters/LUT.razor.rz.scp.css */
/* LUT.razor.css — scoped styles for the LUT list page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). No mu-toolbar on this page (no search/pagination
   toolbar), so no flex-shrink rule needed for it. */
.mu-page[b-hsn79sphgv] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-hsn79sphgv] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-foot[b-hsn79sphgv] {
    flex-shrink: 0;
}

/* Blue "link" look for the LUT No cell, matching other master grids */
.lut-link[b-hsn79sphgv] {
    color: #1a56a7;
    font-weight: 600;
}

/* Grid flex-fills the card — only the table body scrolls, page fills the viewport. */
.mu-table-wrap[b-hsn79sphgv] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

/* Record count next to the export/new buttons */
.lut-count[b-hsn79sphgv] {
    font-size: .82rem;
    color: #64748b;
}
/* /Components/Pages/Masters/LUTEdit.razor.rz.scp.css */
/* LUTEdit.razor.css — scoped styles for the LUT Master modal */

.uf-modal-sm.lut-modal[b-alb9oesarj] { max-width: 480px; }

.uf-field.lut-field[b-alb9oesarj] { margin-bottom: 16px; }
.uf-field.lut-field:last-of-type[b-alb9oesarj] { margin-bottom: 0; }

.lut-select[b-alb9oesarj] {
    appearance: auto;
}

.uf-footer-right[b-alb9oesarj] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — pinned to the right of SAVE */
.lut-btn-delete[b-alb9oesarj] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .lut-btn-delete:hover[b-alb9oesarj] {
        background: #c8393d;
    }

    .lut-btn-delete:disabled[b-alb9oesarj] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.lut-field[b-alb9oesarj] { grid-template-columns: 1fr; gap: 4px; }
}
/* /Components/Pages/Masters/MArea.razor.rz.scp.css */
/* =====================================================================
   GAINS — MArea.razor.css   (Masters → Area grid, page-scoped)
   Shared "mu-" grid/page styles + the "uf-" edit-modal system live in
   wwwroot/CSS/masters-forms.css. Only Area-page-specific rules remain here.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / TB / MLogin /
   MGroup / MItemGroup / MState. .mu-page becomes a full-height flex
   column; .mu-card grows to fill the remaining space instead of being
   sized only to its own content, and the footer sits below it as a
   direct sibling so it always lands at the true bottom of the page. */
.mu-page[b-mc1jiy8648] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-mc1jiy8648] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width:70%;
}

.mu-toolbar[b-mc1jiy8648] {
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 12px;
}

.mu-table-wrap[b-mc1jiy8648] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-mc1jiy8648] {
    flex-shrink: 0;
}

.bspl-footer-right[b-mc1jiy8648] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-mc1jiy8648] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Give the City select in the toolbar a bit more room than the page-size
   select it borrows styling from. */
.mu-toolbar .mu-pagesize-wrap .mu-pagesize[b-mc1jiy8648] {
    min-width: 180px;
}

/* ── Mobile: stack the search box and city filter ── */
@media (max-width: 767px) {
    .bspl-title-actions .mu-btn-label[b-mc1jiy8648] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-mc1jiy8648] {
        padding: 8px 10px;
        gap: 0;
    }

    .mu-toolbar[b-mc1jiy8648] {
        flex-direction: column;
        align-items: stretch;
    }

    .mu-toolbar .mu-pager[b-mc1jiy8648] {
        justify-content: space-between;
    }

    .mu-foot-info[b-mc1jiy8648] {
        display: none;
    }
}
/* /Components/Pages/Masters/MBankChequeSequence.razor.rz.scp.css */
/* =====================================================================
   GAINS — MBankChequeSequence.razor.css   (Masters → Bank Cheque Sequence, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Bank-Cheque-Sequence-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-paskmvu9ll] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-paskmvu9ll] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-paskmvu9ll] {
    flex-shrink: 0;
}

.mu-table-wrap[b-paskmvu9ll] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-paskmvu9ll] {
    flex-shrink: 0;
}

.bspl-footer-right[b-paskmvu9ll] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-paskmvu9ll] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Right-align the sequence number columns */
.mu-num[b-paskmvu9ll] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* mu-th-sort lays out label + sort icon with flex — text-align alone
   won't move them, so push the flex content to the right for the
   numeric header cells to line up with the right-aligned data cells. */
.mu-th-sort.mu-num[b-paskmvu9ll] {
    justify-content: flex-end;
}

/* ── Ledger picker (Add mode: typeahead; Edit mode: locked label) ── */
.bcs-ledger-field[b-paskmvu9ll] {
    position: relative;
}

.bcs-ledger-wrap[b-paskmvu9ll] {
    position: relative;
}

.bcs-ledger-locked[b-paskmvu9ll] {
    padding: 10px 12px;
    border-radius: 8px;
    background: var(--mu-surface-alt, #f4f5f7);
    border: 1px solid var(--mu-border, #e2e4e9);
    font-weight: 600;
}

.bcs-suggest[b-paskmvu9ll] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 220px;
    overflow-y: auto;
    background: var(--mu-surface, #fff);
    border: 1px solid var(--mu-border, #e2e4e9);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

.bcs-suggest-item[b-paskmvu9ll] {
    padding: 9px 12px;
    cursor: pointer;
    font-size: 14px;
}

    .bcs-suggest-item:hover[b-paskmvu9ll] {
        background: var(--mu-hover, #f0f2f5);
    }

.bcs-suggest-empty[b-paskmvu9ll] {
    padding: 10px 12px;
    font-size: 13px;
    color: var(--mu-text-muted, #8a8f98);
}

/* ── Start / End / Current Sequence — three inputs side by side ── */
.bcs-seq-row[b-paskmvu9ll] {
    display: flex;
    gap: 12px;
}

    .bcs-seq-row .uf-field[b-paskmvu9ll] {
        flex: 1;
        margin-bottom: 0;
    }

@media (max-width: 480px) {
    .bcs-seq-row[b-paskmvu9ll] {
        flex-direction: column;
        gap: 14px;
    }
}

/* ── Mobile: "New sequence" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-paskmvu9ll] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-paskmvu9ll] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-paskmvu9ll] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-paskmvu9ll] {
                font-size: 15px;
            }

    .mu-foot-info[b-paskmvu9ll] {
        display: none;
    }
}
/* /Components/Pages/Masters/MBankDetails.razor.rz.scp.css */
/* =====================================================================
   GAINS — MBankDetails.razor.css   (Masters → Bank Details, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Bank-Details-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-pb9bcutd2e] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-pb9bcutd2e] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-pb9bcutd2e] {
    flex-shrink: 0;
}

.mu-table-wrap[b-pb9bcutd2e] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-pb9bcutd2e] {
    flex-shrink: 0;
}

.bspl-footer-right[b-pb9bcutd2e] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-pb9bcutd2e] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Modal: "apply to all sites" checkbox ── */
.bd-checkbox-field[b-pb9bcutd2e] {
    margin-bottom: 0;
}

.bd-checkbox-label[b-pb9bcutd2e] {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-weight: 500;
}

    .bd-checkbox-label input[type="checkbox"][b-pb9bcutd2e] {
        width: 16px;
        height: 16px;
        cursor: pointer;
    }

/* ── Mobile: "New bank detail" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-pb9bcutd2e] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-pb9bcutd2e] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-pb9bcutd2e] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-pb9bcutd2e] {
                font-size: 15px;
            }

    .mu-foot-info[b-pb9bcutd2e] {
        display: none;
    }
}
/* /Components/Pages/Masters/MBom.razor.rz.scp.css */
/* =====================================================================
   GAINS — MBom.razor.css   (Masters → Bill Of Material, page-scoped)
   Single page: header grid + inline header/components editor.
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   ===================================================================== */

.mu-page[b-7aciujvnht] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── List view ── */
.mu-card[b-7aciujvnht] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-7aciujvnht] {
    flex-shrink: 0;
}

.mu-table-wrap[b-7aciujvnht] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-7aciujvnht] {
    flex-shrink: 0;
}

.bspl-footer-right[b-7aciujvnht] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-7aciujvnht] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* BOM name / component item name read as the clickable "primary" cell. */
.mu-bom-name[b-7aciujvnht] {
    color: #0f766e;
    font-weight: 600;
}

/* Right-align numeric columns (Qty, Count) — values and headers. */
.mu-num[b-7aciujvnht] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-th-num[b-7aciujvnht] {
    text-align: right;
}

    /* If the sortable header is a flex container, push its label/icon right too. */
    .mu-th-num.mu-th-sort[b-7aciujvnht] {
        justify-content: flex-end;
    }

/* ================================================================
   Entry view — two columns side by side: header form on the left,
   components grid on the right. Action strip stays above.
   ================================================================ */
.bom-entry-stack[b-7aciujvnht] {
    position: relative;
    flex: 1;
    display: grid;
    grid-template-columns: minmax(360px, 460px) 1fr;
    gap: 16px;
    min-height: 0;
}

/* Header card hugs its content at the top of the left column. */
.bom-hdr-card[b-7aciujvnht] {
    align-self: start;
    overflow: visible; /* let the item autocomplete escape the card */
}

.bom-lines-card[b-7aciujvnht] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

@media (max-width: 991px) {
    .bom-entry-stack[b-7aciujvnht] {
        grid-template-columns: 1fr;
    }
}

.bom-hdr-body[b-7aciujvnht] {
    background: #fff;
    padding: 22px 24px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* Label-left / input-right rows on a single line (horizontal). */
.bom-row[b-7aciujvnht] {
    display: grid;
    grid-template-columns: 140px minmax(0, 520px);
    align-items: center;
    gap: 16px;
}

    .bom-row > label[b-7aciujvnht] {
        font-size: 13px;
        color: #475569;
        font-weight: 500;
    }

.bom-row-field[b-7aciujvnht] {
    position: relative;
    min-width: 0;
}

.bom-row-actions[b-7aciujvnht] {
    padding-left: 146px; /* line up under the inputs */
}

    .bom-row-actions .uf-btn-ghost[b-7aciujvnht] {
        text-transform: uppercase;
        letter-spacing: 0.04em;
        font-weight: 700;
    }

/* Left-aligned action strip for the entry view (Add line · New · Grid · Save),
   styled like the ITB top tabs (.itb-toptabs button). */
.bom-entry-toolbar[b-7aciujvnht] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding: 4px 0 12px;
}

    .bom-entry-toolbar .mu-btn[b-7aciujvnht] {
        padding: 7px 16px;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .2px;
        text-transform: uppercase;
        background: #fff;
        color: #555;
        border: 1px solid #d5d5d5;
        border-radius: 6px;
        cursor: pointer;
        font-family: inherit;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition: background .12s, color .12s, border-color .12s;
    }

        .bom-entry-toolbar .mu-btn i[b-7aciujvnht] {
            font-size: 12px;
        }

        .bom-entry-toolbar .mu-btn:hover:not(:disabled)[b-7aciujvnht] {
            background: #f5f5f5;
        }

        /* Save is the single teal accent, like ITB's active tab. */
        .bom-entry-toolbar .mu-btn.success[b-7aciujvnht] {
            background: #1ab99a;
            color: #fff;
            border-color: #1ab99a;
            font-weight: 700;
        }

            .bom-entry-toolbar .mu-btn.success:hover:not(:disabled)[b-7aciujvnht] {
                background: #16a589;
                border-color: #16a589;
            }

        .bom-entry-toolbar .mu-btn:disabled[b-7aciujvnht] {
            opacity: 0.5;
            cursor: not-allowed;
        }

.bom-lines-wrap[b-7aciujvnht] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.bom-th-num[b-7aciujvnht] {
    text-align: right;
}

@media (max-width: 640px) {
    .bom-row[b-7aciujvnht] {
        grid-template-columns: 1fr;
        gap: 5px;
    }
}

/* ── Item autocomplete ── */
.bom-ac-wrap[b-7aciujvnht] {
    position: relative;
}

.bom-ac-list[b-7aciujvnht] {
    position: absolute;
    z-index: 30;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dde3ec;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
}

.bom-ac-item[b-7aciujvnht] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 12px;
    font-size: 13px;
    color: #1e293b;
    cursor: pointer;
    border-bottom: 1px solid #f1f5f9;
}

    .bom-ac-item:last-child[b-7aciujvnht] {
        border-bottom: none;
    }

    .bom-ac-item:hover[b-7aciujvnht] {
        background: #f3fcf9;
    }

.bom-ac-name[b-7aciujvnht] {
    font-weight: 500;
}

.bom-ac-code[b-7aciujvnht] {
    font-size: 11.5px;
    color: #94a3b8;
    white-space: nowrap;
}

/* Line modal is a touch narrower than the default uf-modal. */
.bom-line-modal[b-7aciujvnht] {
    max-width: 520px;
}

/* Field rows inside the line modal — slightly narrower label column. */
.bom-field[b-7aciujvnht] {
    grid-template-columns: 96px 1fr;
    margin-bottom: 0;
}

.bom-line-modal .uf-body[b-7aciujvnht] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ── Mobile: header action buttons show icon only ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-7aciujvnht] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-7aciujvnht] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-7aciujvnht] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-7aciujvnht] {
                font-size: 15px;
            }

    .mu-foot-info[b-7aciujvnht] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCategory.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCategory.razor.css   (Masters → Category grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Category-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-6kg8ln9dxe] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-6kg8ln9dxe] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-6kg8ln9dxe] {
    flex-shrink: 0;
}

.mu-table-wrap[b-6kg8ln9dxe] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-6kg8ln9dxe] {
    flex-shrink: 0;
}

.bspl-footer-right[b-6kg8ln9dxe] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-6kg8ln9dxe] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New category" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-6kg8ln9dxe] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-6kg8ln9dxe] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-6kg8ln9dxe] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-6kg8ln9dxe] {
                font-size: 15px;
            }

    .mu-foot-info[b-6kg8ln9dxe] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCCGroupLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCCGroupLedger.razor.css   (Masters → xCCGROUP Ledger, page-scoped)
   Shared "mu-"/"bspl-" grid/page styles live in wwwroot/CSS/masters-forms.css
   and common-page-chrome.css. Only this page's own layout/extras live here —
   same pattern as XDepoLogin.razor.css / MLedgerCCGroup.razor.css.
   ===================================================================== */

.ccl-page[b-dpg2ushzqy] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (groups | ledgers) ── */
.ccl-cols[b-dpg2ushzqy] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
    padding: 0 16px;
}

.ccl-left[b-dpg2ushzqy],
.ccl-right[b-dpg2ushzqy] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its footer/pager sits at the bottom. */
    .ccl-left > .mu-card[b-dpg2ushzqy],
    .ccl-right > .mu-card[b-dpg2ushzqy] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-dpg2ushzqy] {
    flex-shrink: 0;
}

/* Table scroll area fills the space between toolbar/header and footer
   (override the global fixed 540px height) — both vertical + horizontal. */
.ccl-scroll[b-dpg2ushzqy] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 220px;
}

.mu-foot[b-dpg2ushzqy] {
    flex-shrink: 0;
}

.bspl-footer-right[b-dpg2ushzqy] {
    font-size: inherit;
    color: inherit;
}

/* ── Left panel filter row: Group select + Ledger select + GO button ── */
.ccl-filter-row[b-dpg2ushzqy] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.ccl-group-select[b-dpg2ushzqy],
.ccl-ledger-select[b-dpg2ushzqy] {
    flex: 1 1 140px;
    min-width: 0;
}

.ccl-go-btn[b-dpg2ushzqy] {
    flex-shrink: 0;
    padding: 8px 18px;
}

/* ── Selected group row highlight ── */
.ccl-row-active[b-dpg2ushzqy],
.ccl-row-active:hover[b-dpg2ushzqy] {
    background: #e6f7f2 !important;
}

    .ccl-row-active td:first-child[b-dpg2ushzqy] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Left grid "Count" column/badge ── */
.ccl-count-col[b-dpg2ushzqy] {
    width: 76px;
    text-align: center;
}

.ccl-count-badge[b-dpg2ushzqy] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #e8f8f4;
    color: #0f766e;
    font-size: 11px;
    font-weight: 700;
}

.ccl-count-zero[b-dpg2ushzqy] {
    color: #b6bfcc;
    font-size: 12px;
}

/* ── Right panel header: "# of linked Ledgers :" + "Group Name :" ── */
.ccl-right-header[b-dpg2ushzqy] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px 4px;
    flex-shrink: 0;
    flex-wrap: wrap;
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
}

    .ccl-right-header strong[b-dpg2ushzqy] {
        color: #1a2537;
    }

.ccl-group-name[b-dpg2ushzqy] {
    color: #1a2537;
}

/* ── Right panel toolbar: "Show N entries" + "Search:" ── */
.ccl-toolbar[b-dpg2ushzqy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.ccl-show[b-dpg2ushzqy],
.ccl-search[b-dpg2ushzqy] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: #475569;
    white-space: nowrap;
}

.ccl-pagesize[b-dpg2ushzqy] {
    width: auto;
    min-width: 64px;
}

.ccl-search-input[b-dpg2ushzqy] {
    padding: 7px 10px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    min-width: 160px;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .ccl-search-input:focus[b-dpg2ushzqy] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

/* ── Ledger grid checkbox column ── */
.ccl-chk-col[b-dpg2ushzqy] {
    width: 56px;
    text-align: center;
}

.ccl-chkall[b-dpg2ushzqy] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

    .ccl-chk-col input:not(.ccl-chkall)[b-dpg2ushzqy] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

        .ccl-chk-col input:disabled[b-dpg2ushzqy] {
            cursor: not-allowed;
            opacity: 0.45;
        }

/* Rows currently checked get a subtle tint, matching the app's other checklists. */
.ccl-checked-row td[b-dpg2ushzqy] {
    background: #f6fdfb;
}

    .ccl-checked-row:hover td[b-dpg2ushzqy] {
        background: #eef4fb;
    }

/* ── Sticky Save bar, pinned to the bottom of the page content ── */
.ccl-savebar[b-dpg2ushzqy] {
    position: sticky;
    bottom: 0;
    z-index: 5;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 16px;
    margin-top: 16px;
    background: #fff;
    border-top: 1px solid #e7eaec;
    box-shadow: 0 -4px 12px rgba(15, 23, 42, 0.06);
}

.ccl-branch-check[b-dpg2ushzqy] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    color: #475569;
    cursor: pointer;
}

    .ccl-branch-check input[b-dpg2ushzqy] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

.ccl-save-btn[b-dpg2ushzqy] {
    padding: 9px 22px;
}

/* ── Tablet: keep side-by-side but tighten spacing ── */
@media (max-width: 1100px) {
    .ccl-cols[b-dpg2ushzqy] {
        gap: 12px;
        padding: 0 10px;
    }
}

/* ── Mobile/tablet: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .ccl-page[b-dpg2ushzqy] {
        height: auto;
    }

    .ccl-cols[b-dpg2ushzqy] {
        flex-direction: column;
    }

    .ccl-left > .mu-card[b-dpg2ushzqy],
    .ccl-right > .mu-card[b-dpg2ushzqy] {
        min-height: 360px;
    }

    .ccl-scroll[b-dpg2ushzqy] {
        height: 360px;
        flex: none;
    }

    .mu-foot-info[b-dpg2ushzqy] {
        display: none;
    }

    .ccl-right-header[b-dpg2ushzqy] {
        font-size: 12px;
    }
}

@media (max-width: 600px) {
    .ccl-filter-row[b-dpg2ushzqy] {
        flex-direction: column;
        align-items: stretch;
    }

    .ccl-group-select[b-dpg2ushzqy],
    .ccl-ledger-select[b-dpg2ushzqy],
    .ccl-go-btn[b-dpg2ushzqy] {
        flex: 1 1 auto;
        width: 100%;
    }

    .ccl-toolbar[b-dpg2ushzqy] {
        flex-direction: column;
        align-items: stretch;
    }

    .ccl-search-input[b-dpg2ushzqy] {
        flex: 1;
        min-width: 0;
    }

    .ccl-savebar[b-dpg2ushzqy] {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    .ccl-save-btn[b-dpg2ushzqy] {
        justify-content: center;
    }
}

@media (max-width: 480px) {
    .ccl-branch-check[b-dpg2ushzqy] {
        font-size: 11.5px;
    }

    .ccl-save-btn .mu-btn-label[b-dpg2ushzqy] {
        display: inline;
    }
}
/* /Components/Pages/Masters/MCity.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCity.razor.css   (Masters → City grid, page-scoped)
   Shared "mu-" grid/page styles + the "uf-" edit-modal system live in
   wwwroot/CSS/masters-forms.css. Only City-page-specific rules remain here.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / TB / MLogin /
   MGroup / MItemGroup / MState / MArea. .mu-page becomes a full-height
   flex column; .mu-card grows to fill the remaining space instead of
   being sized only to its own content, and the footer sits below it as
   a direct sibling so it always lands at the true bottom of the page. */
.mu-page[b-f0ftva9myh] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-f0ftva9myh] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width:70%;
}

.mu-toolbar[b-f0ftva9myh] {
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 12px;
}

.mu-table-wrap[b-f0ftva9myh] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-f0ftva9myh] {
    flex-shrink: 0;
}

.bspl-footer-right[b-f0ftva9myh] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-f0ftva9myh] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: stack search box and Country/State/GO filter ── */
@media (max-width: 767px) {
    .bspl-title-actions .mu-btn-label[b-f0ftva9myh] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-f0ftva9myh] {
        padding: 8px 10px;
        gap: 0;
    }

    .mu-toolbar[b-f0ftva9myh] {
        flex-direction: column;
        align-items: stretch;
    }

    .mu-toolbar .mu-pager[b-f0ftva9myh] {
        justify-content: space-between;
        flex-wrap: wrap;
    }

    .mu-foot-info[b-f0ftva9myh] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCostCenter.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostCenter.razor.css   (Masters → Cost Center, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Cost-Center-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-wjthxy4h8u] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-wjthxy4h8u] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-wjthxy4h8u] {
    flex-shrink: 0;
}

.mu-table-wrap[b-wjthxy4h8u] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-wjthxy4h8u] {
    flex-shrink: 0;
}

.bspl-footer-right[b-wjthxy4h8u] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-wjthxy4h8u] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Toolbar: search + group filter side by side ── */
.cc-toolbar[b-wjthxy4h8u] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

    .cc-toolbar .mu-search[b-wjthxy4h8u] {
        flex: 1;
        min-width: 200px;
    }

.cc-group-filter-wrap[b-wjthxy4h8u] {
    position: relative;
    flex-shrink: 0;
}

.cc-group-filter[b-wjthxy4h8u] {
    appearance: none;
    padding: 8px 30px 8px 12px;
    border-radius: 8px;
    border: 1px solid var(--mu-border, #e2e4e9);
    background: var(--mu-surface, #fff);
    font-size: 14px;
    cursor: pointer;
    min-width: 160px;
}

.cc-group-filter-caret[b-wjthxy4h8u] {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    font-size: 11px;
    color: var(--mu-text-muted, #8a8f98);
}

/* ── Grid: keep remarks from stretching the row ── */
.cc-remarks[b-wjthxy4h8u] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Modal: remarks textarea + "apply to branches" checkbox ── */
.cc-remarks-input[b-wjthxy4h8u] {
    resize: vertical;
    min-height: 64px;
    font-family: inherit;
}

.cc-checkbox-field[b-wjthxy4h8u] {
    margin-bottom: 0;
}

.cc-checkbox-label[b-wjthxy4h8u] {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-weight: 500;
}

    .cc-checkbox-label input[type="checkbox"][b-wjthxy4h8u] {
        width: 16px;
        height: 16px;
        cursor: pointer;
    }

/* ── Mobile ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-wjthxy4h8u] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-wjthxy4h8u] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-wjthxy4h8u] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-wjthxy4h8u] {
                font-size: 15px;
            }

    .mu-foot-info[b-wjthxy4h8u] {
        display: none;
    }

    .cc-toolbar[b-wjthxy4h8u] {
        flex-direction: column;
        align-items: stretch;
    }

    .cc-group-filter[b-wjthxy4h8u] {
        width: 100%;
    }

    .cc-remarks[b-wjthxy4h8u] {
        max-width: 140px;
    }
}
/* /Components/Pages/Masters/MCostCenterGroup.razor.rz.scp.css */
/* MCostCenterGroup.razor.css — scoped styles for the CC Group grid page */

/* Flex-fill layout — same pattern as MCostCenter.razor.css: page fills
   DashboardLayout's .gains-content (which already flex/overflow-scrolls),
   card stretches to fill the page, and only the table body scrolls.
   Use height:100% here, never 100vh — 100vh double-counts the layout's
   own header/sidebar chrome and forces an extra whole-page scrollbar
   (see SchemeGrid.razor.css for the prior regression this caused). */
.mu-page[b-xuky36nyhr] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-xuky36nyhr] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-xuky36nyhr] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-xuky36nyhr] {
    flex-shrink: 0;
}

/* Blue "link" look for the Group Name cell, matching the reference screenshot */
.ccg-link[b-xuky36nyhr] {
    color: #1a56a7;
    font-weight: 600;
}

/* /Components/Pages/Masters/MCostCenterGroupEdit.razor.rz.scp.css */
/* MCostCenterGroupEdit.razor.css — scoped styles for the CC Group Master modal */

.uf-modal-sm[b-5l53lmku0p] { max-width: 480px; }

.uf-field.ccg-field[b-5l53lmku0p] { margin-bottom: 16px; }
.uf-field.ccg-field:last-of-type[b-5l53lmku0p] { margin-bottom: 0; }
.uf-field.ccg-field > label[b-5l53lmku0p] { font-size: 13px; padding-top: 9px; }

.uf-footer-right[b-5l53lmku0p] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — pinned to the right of SAVE, matches the
   filled look of the reference screenshot (not the ghost .uf-btn-del). */
.ccg-btn-delete[b-5l53lmku0p] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .ccg-btn-delete:hover[b-5l53lmku0p] {
        background: #c8393d;
    }

    .ccg-btn-delete:disabled[b-5l53lmku0p] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.ccg-field[b-5l53lmku0p] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field.ccg-field > label[b-5l53lmku0p] { padding-top: 0; }
}
/* /Components/Pages/Masters/MCostHead.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostHead.razor.css   (Masters → Cost Head grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Cost-Head-page-specific rules remain here.
   ===================================================================== */

/* Same page-end footer pinning pattern used on Item Group / Energy Rate /
   BSPL / Daybook / TB. .mu-page becomes a full-height flex column; .mu-card
   grows to fill the remaining space, and the footer sits as a direct
   sibling below it so it always lands at the true bottom of the page. */
.mu-page[b-2q47hxhfh3] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-2q47hxhfh3] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-2q47hxhfh3] {
    flex-shrink: 0;
}

.mu-table-wrap[b-2q47hxhfh3] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-2q47hxhfh3] {
    flex-shrink: 0;
}

/* ── Mobile: "New cost head" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-2q47hxhfh3] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-2q47hxhfh3] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-2q47hxhfh3] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-2q47hxhfh3] {
        font-size: 15px;
    }

    .mu-foot-info[b-2q47hxhfh3] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCostHeadEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostHeadEdit.razor.css   (Add/Edit Cost Head modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Cost-Head-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-7t3i8aisog] { max-width: 420px; }

/* Field spacing specific to this (short) form. */
.uf-field[b-7t3i8aisog] { margin-bottom: 13px; }
.uf-field:last-child[b-7t3i8aisog] { margin-bottom: 0; }
.uf-section[b-7t3i8aisog] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-7t3i8aisog] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-7t3i8aisog] { padding-top: 0; }
}
/* /Components/Pages/Masters/MCostHeaderItem.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostHeaderItem.razor.css   (Masters → Cost Header Item)
   Shared "mu-" grid/page/filter/drawer/toast styles live in
   wwwroot/CSS/masters-forms.css (same file MItemGroup*.razor.css use).
   Only the two-panel split layout and its checkbox list are page-specific.
   ===================================================================== */

.chi-card[b-ik3uzmt5cx] {
    /* .mu-card is already a flex column that grows to fill .mu-page (see
       MItemGroup.razor.css) — the split panel below just needs to fill it. */
    padding: 0;
}

.chi-split[b-ik3uzmt5cx] {
    flex: 1;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    min-height: 0;
    overflow: hidden;
}

/* ── Left: cost header list ── */
.chi-left[b-ik3uzmt5cx] {
    flex: 0 0 320px;
    min-width: 240px;
    max-width: 40%;
    display: flex;
    flex-direction: column;
    border-right: 1px solid #eef2f7;
    min-height: 0;
}

.chi-panel-hdr[b-ik3uzmt5cx] {
    display: flex;
    justify-content: space-between;
    padding: 10px 14px;
    background: #f7f9fc;
    border-bottom: 1px solid #eef2f7;
    font-size: 12px;
    font-weight: 700;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    flex-shrink: 0;
}

.chi-panel-hdr-count[b-ik3uzmt5cx] {
    width: 50px;
    text-align: right;
}

.chi-left-scroll[b-ik3uzmt5cx] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

/* ── Right: filters + item checklist ── */
.chi-right[b-ik3uzmt5cx] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.chi-right-toolbar[b-ik3uzmt5cx] {
    padding: 12px 16px;
    border-bottom: 1px solid #eef2f7;
    flex-shrink: 0;
}

.chi-right-title[b-ik3uzmt5cx] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    color: #1a2537;
}

.chi-linked-badge[b-ik3uzmt5cx] {
    font-size: 12px;
    font-weight: 600;
    color: #1a56a7;
    background: #eef4fb;
    border-radius: 999px;
    padding: 3px 10px;
}

.chi-filter[b-ik3uzmt5cx] {
    flex-shrink: 0;
}

.chi-filter-grid[b-ik3uzmt5cx] {
    grid-template-columns: auto minmax(140px, 200px) auto minmax(120px, 160px) auto minmax(180px, 1fr) auto;
}

.chi-filter-actions[b-ik3uzmt5cx] {
    grid-column: auto;
    justify-content: flex-start;
}

@media (max-width: 900px) {
    .chi-filter-grid[b-ik3uzmt5cx] {
        grid-template-columns: auto 1fr;
    }
}

.chi-items-scroll[b-ik3uzmt5cx] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

/* Shared mu-table, trimmed for the two checklist tables on this page */
.chi-table[b-ik3uzmt5cx] {
    width: 100%;
}

.chi-cat-name[b-ik3uzmt5cx] {
    max-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.chi-cat-code[b-ik3uzmt5cx],
.chi-cat-count[b-ik3uzmt5cx] {
    text-align: right;
    width: 70px;
    color: #64748b;
    font-size: 12.5px;
}

.chi-row-active td[b-ik3uzmt5cx] {
    background: #eef4fb !important;
    font-weight: 600;
}

.chi-row-linked td[b-ik3uzmt5cx] {
    background: #f4faf6;
}

.chi-th-chk[b-ik3uzmt5cx] {
    width: 34px;
    text-align: center;
}

.chi-chk[b-ik3uzmt5cx] {
    width: 15px;
    height: 15px;
    accent-color: #1a56a7;
    cursor: pointer;
}

    .chi-chk:disabled[b-ik3uzmt5cx] {
        cursor: not-allowed;
        opacity: 0.5;
    }

.chi-items-pager[b-ik3uzmt5cx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    border-top: 1px solid #eef2f7;
    flex-shrink: 0;
}

.chi-page-of[b-ik3uzmt5cx] {
    font-size: 12px;
    color: #475569;
    white-space: nowrap;
}

/* ── Footer ── */
.chi-foot[b-ik3uzmt5cx] {
    flex-shrink: 0;
}

/* ── Report drawer ── */
.chi-report-drawer[b-ik3uzmt5cx] {
    width: 720px;
}

.chi-report-body[b-ik3uzmt5cx] {
    gap: 10px;
}

.chi-report-foot[b-ik3uzmt5cx] {
    justify-content: center;
    gap: 14px;
}

@media (max-width: 720px) {
    .chi-split[b-ik3uzmt5cx] {
        flex-direction: column;
        overflow: auto;
    }

    .chi-left[b-ik3uzmt5cx] {
        flex: 0 0 auto;
        max-width: 100%;
        max-height: 260px;
        border-right: none;
        border-bottom: 1px solid #eef2f7;
    }

    .chi-right[b-ik3uzmt5cx] {
        min-height: 320px;
    }

    .chi-report-drawer[b-ik3uzmt5cx] {
        width: 100vw;
        max-width: 100vw;
    }
}
/* /Components/Pages/Masters/MCostLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostLedger.razor.css   (Masters → Cost Ledger, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Cost-Ledger-specific rules — including the Mappings/Report segmented
   tab control, which has no shared equivalent yet — remain here.
   ===================================================================== */

.mu-page[b-h68hm0b7lt] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-h68hm0b7lt] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-h68hm0b7lt],
.mu-filter[b-h68hm0b7lt] {
    flex-shrink: 0;
}

.mu-table-wrap[b-h68hm0b7lt] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-h68hm0b7lt] {
    flex-shrink: 0;
}

.mu-filter-actions[b-h68hm0b7lt] {
    align-items: center;
}

/* ── Mappings / Report segmented toggle ── */
.mu-seg[b-h68hm0b7lt] {
    display: inline-flex;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

.mu-seg-btn[b-h68hm0b7lt] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 7px 13px;
    border: none;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.02em;
    white-space: nowrap;
    transition: background 0.15s, color 0.15s;
}

    .mu-seg-btn + .mu-seg-btn[b-h68hm0b7lt] {
        border-left: 1px solid #cbd5e1;
    }

    .mu-seg-btn:hover[b-h68hm0b7lt] {
        background: #eef4fb;
    }

    .mu-seg-btn.active[b-h68hm0b7lt] {
        background: #1a56a7;
        color: #fff;
    }

.bspl-title-actions[b-h68hm0b7lt] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* ── Mobile ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-h68hm0b7lt] {
        margin-left: auto;
        flex-wrap: wrap;
        justify-content: flex-end;
    }

    .bspl-title-actions .mu-btn-label[b-h68hm0b7lt],
    .mu-seg-btn .mu-btn-label[b-h68hm0b7lt] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-h68hm0b7lt] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-h68hm0b7lt] {
        font-size: 15px;
    }

    .mu-seg-btn[b-h68hm0b7lt] {
        padding: 8px 10px;
    }

    .mu-foot-info[b-h68hm0b7lt] {
        display: none;
    }
}

@media (max-width: 900px) {
    /* mu-filter-grid collapses to "auto 1fr" at this width (shared CSS) —
       let Go/Clear span full width below the fields instead of a phantom
       4th grid column. */
    .mu-filter-actions[b-h68hm0b7lt] {
        grid-column: 1 / -1 !important;
        justify-content: flex-start !important;
    }
}
/* /Components/Pages/Masters/MCostLedgerEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostLedgerEdit.razor.css   (Add Cost Ledger mapping modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Cost-Ledger-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-kfxna4o1o1] { max-width: 440px; }

/* Field spacing specific to this (short) form. */
.uf-field[b-kfxna4o1o1] { margin-bottom: 13px; }
.uf-field:last-child[b-kfxna4o1o1] { margin-bottom: 0; }
.uf-section[b-kfxna4o1o1] { margin: 0 0 0; }

.uf-loading-inline[b-kfxna4o1o1] {
    padding: 7px 0;
    color: #64748b;
    font-size: 13px;
}

@media (max-width: 540px) {
    .uf-field[b-kfxna4o1o1] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-kfxna4o1o1] { padding-top: 0; }
}
/* /Components/Pages/Masters/MCountry.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCountry.razor.css   (Masters → Country grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Country-page-specific rules remain here: the read-only banner
   next to the search box (same pattern as the Voucher Type tab).
   ===================================================================== */

.mu-page[b-e6dsxt4ss8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-e6dsxt4ss8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width:70%;
}

.mu-toolbar[b-e6dsxt4ss8] {
    flex-shrink: 0;
}

.mu-table-wrap[b-e6dsxt4ss8] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-e6dsxt4ss8] {
    flex-shrink: 0;
}

.bspl-footer-right[b-e6dsxt4ss8] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-e6dsxt4ss8] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Search box + read-only note share the toolbar row ── */
.cty-toolbar[b-e6dsxt4ss8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.cty-readonly-note[b-e6dsxt4ss8] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 700;
    color: #e11d48;
}

    .cty-readonly-note i[b-e6dsxt4ss8] {
        font-size: 12px;
    }

/* ── Mobile: Export button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-e6dsxt4ss8] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-e6dsxt4ss8] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-e6dsxt4ss8] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-e6dsxt4ss8] {
        font-size: 15px;
    }

    .mu-foot-info[b-e6dsxt4ss8] {
        display: none;
    }
}
.mu-table[b-e6dsxt4ss8] {
    width: 100%;
    table-layout: fixed;
}
    .mu-table th:nth-child(1)[b-e6dsxt4ss8],
    .mu-table td:nth-child(1)[b-e6dsxt4ss8] {
        width: 50px;
    }

    .mu-table th:nth-child(2)[b-e6dsxt4ss8],
    .mu-table td:nth-child(2)[b-e6dsxt4ss8] {
        width: 220px;
    }

    .mu-table th:nth-child(3)[b-e6dsxt4ss8],
    .mu-table td:nth-child(3)[b-e6dsxt4ss8] {
        width: 90px;
    }

    .mu-table th:nth-child(4)[b-e6dsxt4ss8],
    .mu-table td:nth-child(4)[b-e6dsxt4ss8] {
        width: 180px;
    }

    .mu-table th:nth-child(5)[b-e6dsxt4ss8],
    .mu-table td:nth-child(5)[b-e6dsxt4ss8] {
        width: 90px;
    }
/* /Components/Pages/Masters/MCurrencyDtl.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCurrencyDtl.razor.css   (Masters → Currency Details grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only page-end footer pinning remains here, matching MItemGroup.razor.css
   / BSPL / Daybook / TB / MLogin / MGroup.
   ===================================================================== */
.mu-page[b-r8bpsqdww3] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-r8bpsqdww3] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-r8bpsqdww3] {
    flex-shrink: 0;
}

.mu-table-wrap[b-r8bpsqdww3] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-r8bpsqdww3] {
    flex-shrink: 0;
}

/* ── Mobile: "New currency" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-r8bpsqdww3] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-r8bpsqdww3] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-r8bpsqdww3] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-r8bpsqdww3] {
        font-size: 15px;
    }

    .mu-foot-info[b-r8bpsqdww3] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCurrencyDtlEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCurrencyDtlEdit.razor.css   (add/edit Currency modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Currency-edit-specific field spacing remains here.
   ===================================================================== */

.uf-modal-sm[b-msfkb8qf60] { max-width: 460px; }

/* Field spacing / section spacing specific to this (short, 4-field) form */
.uf-field[b-msfkb8qf60] { margin-bottom: 13px; }
.uf-field:last-child[b-msfkb8qf60] { margin-bottom: 0; }
.uf-section[b-msfkb8qf60] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-msfkb8qf60] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-msfkb8qf60] { padding-top: 0; }
}
/* /Components/Pages/Masters/MCustType.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCustType.razor.css   (Masters → Customer Type grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css
   (same file MItemGroup.razor.css uses) — only page-specific rules here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on ItemGroup / BSPL /
   Daybook / TB / MLogin / MGroup. .mu-page becomes a full-height flex
   column; .mu-card (the bordered table box) grows to fill the remaining
   space instead of being sized only to its own content, and the footer
   sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-zbj97vph4k] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-zbj97vph4k] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-zbj97vph4k] {
    flex-shrink: 0;
}

.mu-table-wrap[b-zbj97vph4k] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-zbj97vph4k] {
    flex-shrink: 0;
}

.bspl-footer-right[b-zbj97vph4k] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-zbj97vph4k] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Row layout: Sr# / Customer Type / Abbr / delete action ── */
.mu-th-idx[b-zbj97vph4k],
.mu-idx[b-zbj97vph4k] {
    width: 56px;
    text-align: left;
    color: #64748b;
}

.mu-th-act[b-zbj97vph4k],
.mu-act-cell[b-zbj97vph4k] {
    width: 44px;
    text-align: right;
}

.mu-del[b-zbj97vph4k] {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #f1c4c4;
    border-radius: 6px;
    background: #fff;
    color: #b91c1c;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .mu-del:hover[b-zbj97vph4k] {
        background: #fee2e2;
        border-color: #e58585;
    }

/* ── Mobile: "New customer type" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-zbj97vph4k] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-zbj97vph4k] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-zbj97vph4k] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-zbj97vph4k] {
        font-size: 15px;
    }

    .mu-foot-info[b-zbj97vph4k] {
        display: none;
    }
}
/* /Components/Pages/Masters/MCustTypeEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCustTypeEdit.razor.css   (edit Customer Type modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   This is the shortest of the Masters edit forms (just two fields), so
   there's very little left to override beyond the modal width and the
   field spacing already used for MItemGroupEdit's short form.
   ===================================================================== */

.uf-modal-sm[b-cbde1xhacl] { max-width: 420px; }

/* Field spacing / section spacing specific to this (two-field) form */
.uf-field[b-cbde1xhacl] { margin-bottom: 13px; }
.uf-field:last-child[b-cbde1xhacl] { margin-bottom: 0; }
.uf-section[b-cbde1xhacl] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-cbde1xhacl] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-cbde1xhacl] { padding-top: 0; }
}
/* /Components/Pages/Masters/MDepot.razor.rz.scp.css */
/* MDepot.razor.css — scoped styles for the Depot list page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). */
.mu-page[b-o2f8l0049c] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-o2f8l0049c] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-o2f8l0049c] {
    flex-shrink: 0;
}

.mu-table-wrap[b-o2f8l0049c] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-o2f8l0049c] {
    flex-shrink: 0;
}

/* Abbreviation column */
.dp-abbr[b-o2f8l0049c] {
    font-weight: 600;
    color: #0f9d8a;
    letter-spacing: 0.3px;
}

/* Factory / Depot type badge */
.dp-badge[b-o2f8l0049c] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.4px;
    white-space: nowrap;
}

.dp-badge-factory[b-o2f8l0049c] {
    background: #fef3c7;
    color: #92400e;
}

.dp-badge-depot[b-o2f8l0049c] {
    background: #e0f2fe;
    color: #075985;
}
/* /Components/Pages/Masters/MDepotEdit.razor.rz.scp.css */
/* MDepotEdit.razor.css — scoped styles for the Depot edit modal */

/* Two-column layout for paired fields */
.uf-row-2[b-u9y4odutsd] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 20px;
}

@media (max-width: 540px) {
    .uf-row-2[b-u9y4odutsd] {
        grid-template-columns: 1fr;
    }
}

/* Textarea */
.uf-textarea[b-u9y4odutsd] {
    resize: vertical;
    min-height: 60px;
}

/* Checkbox row */
.uf-check-row[b-u9y4odutsd] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 6px;
}

.uf-check-row input[type="checkbox"][b-u9y4odutsd] {
    width: 16px;
    height: 16px;
    cursor: pointer;
    accent-color: #0f9d8a;
}

.uf-check-label[b-u9y4odutsd] {
    font-size: 13px;
    color: #374151;
}
.uf-city-field[b-u9y4odutsd] {
    position: relative;
}

.uf-city-wrap[b-u9y4odutsd] {
    position: relative;
}

.uf-city-list[b-u9y4odutsd] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 200px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #d1d5db;
    border-top: none;
    border-radius: 0 0 6px 6px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.08);
}

.uf-city-item[b-u9y4odutsd] {
    padding: 6px 10px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
}

    .uf-city-item:hover[b-u9y4odutsd] {
        background: #f0fdfa;
    }

.uf-city-name[b-u9y4odutsd] {
    font-size: 13px;
    color: #111827;
}

.uf-city-sub[b-u9y4odutsd] {
    font-size: 11px;
    color: #6b7280;
}
/* /Components/Pages/Masters/MDepriSetting.razor.rz.scp.css */
/* =====================================================================
   GAINS — MDepriSetting.razor.css   (Masters → Depreciation Setting grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Depreciation-Setting-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-c3kpmsqzpo] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-c3kpmsqzpo] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-c3kpmsqzpo] {
    flex-shrink: 0;
}

.mu-table-wrap[b-c3kpmsqzpo] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-c3kpmsqzpo] {
    flex-shrink: 0;
}

/* ── Depot / Department filter dropdowns, next to the search box ── */
.ds-filters[b-c3kpmsqzpo] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

@media (max-width: 767px) {
    .bspl-title-actions[b-c3kpmsqzpo] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-c3kpmsqzpo] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-c3kpmsqzpo] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-c3kpmsqzpo] {
        font-size: 15px;
    }

    .mu-foot-info[b-c3kpmsqzpo] {
        display: none;
    }

    .mu-toolbar[b-c3kpmsqzpo] {
        flex-wrap: wrap;
        gap: 10px;
    }

    .ds-filters[b-c3kpmsqzpo] {
        width: 100%;
    }

        .ds-filters select[b-c3kpmsqzpo] {
            flex: 1 1 45%;
        }
}
/* /Components/Pages/Masters/MDepriSettingEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MDepriSettingEdit.razor.css   (edit Depreciation Setting modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Depreciation-Setting-edit-specific rules remain here.
   ===================================================================== */

.uf-modal-sm[b-w40hlb6ty4] { max-width: 460px; }

.uf-field[b-w40hlb6ty4] { margin-bottom: 13px; }
.uf-field:last-child[b-w40hlb6ty4] { margin-bottom: 0; }
.uf-section[b-w40hlb6ty4] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-w40hlb6ty4] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-w40hlb6ty4] { padding-top: 0; }
}
/* /Components/Pages/Masters/MDocumentType.razor.rz.scp.css */
/* =====================================================================
   GAINS — MDocumentType.razor.css   (Masters → Document Type grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Document-Type-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-riepggkypv] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-riepggkypv] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-riepggkypv] {
    flex-shrink: 0;
}

.mu-table-wrap[b-riepggkypv] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-riepggkypv] {
    flex-shrink: 0;
}

.bspl-footer-right[b-riepggkypv] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-riepggkypv] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New document type" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-riepggkypv] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-riepggkypv] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-riepggkypv] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-riepggkypv] {
                font-size: 15px;
            }

    .mu-foot-info[b-riepggkypv] {
        display: none;
    }
}
/* /Components/Pages/Masters/MEnergy.razor.rz.scp.css */
/* =====================================================================
   GAINS — MEnergy.razor.css   (Masters → Energy grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Energy-page-specific rules remain here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on Item Group / BSPL /
   Daybook / TB / MLogin / MGroup. .mu-page becomes a full-height flex
   column; .mu-card (the bordered table box) grows to fill the remaining
   space instead of being sized only to its own content, and the footer
   sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-nd6dlamvq6] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-nd6dlamvq6] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-nd6dlamvq6] {
    flex-shrink: 0;
}

.mu-table-wrap[b-nd6dlamvq6] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-nd6dlamvq6] {
    flex-shrink: 0;
}

.bspl-footer-right[b-nd6dlamvq6] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-nd6dlamvq6] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New energy" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-nd6dlamvq6] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-nd6dlamvq6] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-nd6dlamvq6] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-nd6dlamvq6] {
        font-size: 15px;
    }

    .mu-foot-info[b-nd6dlamvq6] {
        display: none;
    }
}
/* /Components/Pages/Masters/MEnergyEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MEnergyEdit.razor.css   (add/edit Energy modal)
   Shared "uf-" modal styles now live in wwwroot/CSS/masters-forms.css.
   Only Energy-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-nd172c9u0r] { max-width: 420px; }

/* Field spacing / section spacing specific to this (single-field) form */
.uf-field[b-nd172c9u0r] { margin-bottom: 13px; }
.uf-field:last-child[b-nd172c9u0r] { margin-bottom: 0; }
.uf-section[b-nd172c9u0r] { margin: 0 0 0; }

/* Read-only UOM row (API returns it on the grid but doesn't accept it on
   insert/update, so there's no editor for it — just show it when present). */
.uf-readonly-val[b-nd172c9u0r] {
    display: inline-block;
    padding: 6px 0;
    font-size: 13px;
    color: #64748b;
}

@media (max-width: 540px) {
    .uf-field[b-nd172c9u0r] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-nd172c9u0r] { padding-top: 0; }
}
/* /Components/Pages/Masters/MEnergyRate.razor.rz.scp.css */
/* =====================================================================
   GAINS — MEnergyRate.razor.css   (Masters → Energy Rate grid, page-scoped)
   Shared "mu-" grid/page/filter styles live in wwwroot/CSS/masters-forms.css.
   Only Energy-Rate-page-specific rules remain here.
   ===================================================================== */

/* Same page-end footer pinning pattern used on Item Group / BSPL / Daybook / TB. */
.mu-page[b-yskf1re8ke] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-yskf1re8ke] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-yskf1re8ke],
.mu-filter[b-yskf1re8ke] {
    flex-shrink: 0;
}

.mu-table-wrap[b-yskf1re8ke] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-yskf1re8ke] {
    flex-shrink: 0;
}

/* The filter row's "Go / Clear" buttons don't need a full grid column of their
   own width — let them hug the left edge of their cell instead of stretching. */
.mu-filter-actions[b-yskf1re8ke] {
    align-items: center;
}

/* ── Mobile: "New rate" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-yskf1re8ke] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-yskf1re8ke] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-yskf1re8ke] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-yskf1re8ke] {
        font-size: 15px;
    }

    .mu-foot-info[b-yskf1re8ke] {
        display: none;
    }
}

@media (max-width: 900px) {
    /* mu-filter-grid already collapses to "auto 1fr" at this width (shared CSS) —
       let the Go/Clear actions span full width below the fields instead of
       trying to sit in a phantom 4th column that no longer exists. */
    .mu-filter-actions[b-yskf1re8ke] {
        grid-column: 1 / -1 !important;
        justify-content: flex-start !important;
    }
}
/* /Components/Pages/Masters/MEnergyRateEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MEnergyRateEdit.razor.css   (Add/Edit Energy Rate modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Energy-Rate-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-4qzap7j4tc] { max-width: 420px; }

/* Field spacing specific to this (short) form. */
.uf-field[b-4qzap7j4tc] { margin-bottom: 13px; }
.uf-field:last-child[b-4qzap7j4tc] { margin-bottom: 0; }
.uf-section[b-4qzap7j4tc] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-4qzap7j4tc] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-4qzap7j4tc] { padding-top: 0; }
}
/* /Components/Pages/Masters/MExchangeNew.razor.rz.scp.css */
/* =====================================================================
   GAINS — MExchangeNew.razor.css   (Masters → Exchange Rate, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   "le-" (entry form) and "rt-" (filter toolbar) classes are re-declared
   here per-page, same convention as MItemEdit.razor.css / MRoleTask.razor.css.
   ===================================================================== */

.mu-page.ex-page[b-sr62rukzdz] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.ex-layout[b-sr62rukzdz] {
    flex: 1;
    display: flex;
    align-items: stretch;
    gap: 16px;
    min-height: 0;
}

/* ── Left: entry panel ── */
.ex-entry[b-sr62rukzdz] {
    flex: 0 0 280px;
    display: flex;
    flex-direction: column;
}

.ex-entry-hdr[b-sr62rukzdz] {
    padding: 14px 16px;
    border-bottom: 1px solid #eef2f7;
    font-size: 13px;
    font-weight: 700;
    color: #1a2537;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.ex-entry-body[b-sr62rukzdz] {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.ex-entry-foot[b-sr62rukzdz] {
    margin-top: auto;
}

.le-row[b-sr62rukzdz] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    .le-row > label[b-sr62rukzdz] {
        font-size: 12px;
        font-weight: 600;
        color: #475569;
    }

.le-inp[b-sr62rukzdz] {
    padding: 8px 10px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    width: 100%;
    box-sizing: border-box;
}

    .le-inp:focus[b-sr62rukzdz] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

.le-field-err[b-sr62rukzdz] {
    color: #b42318;
    font-size: 12px;
}

.le-foot[b-sr62rukzdz] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border-top: 1px solid #e5e9f0;
    background: #f7f9fc;
}

.le-btn[b-sr62rukzdz] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    border-radius: 6px;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.03em;
    white-space: nowrap;
    user-select: none;
    flex-shrink: 0;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}

    .le-btn:hover[b-sr62rukzdz] {
        background: #eef4fb;
    }

    .le-btn:disabled[b-sr62rukzdz] {
        opacity: 0.6;
        cursor: not-allowed;
    }

        .le-btn:disabled:hover[b-sr62rukzdz] {
            background: #fff;
        }

    .le-btn.save[b-sr62rukzdz] {
        background: #15803d;
        border-color: #15803d;
        color: #fff;
    }

        .le-btn.save:hover:not(:disabled)[b-sr62rukzdz] {
            background: #116630;
        }

        .le-btn.save:disabled[b-sr62rukzdz] {
            background: #86b99a;
            border-color: #86b99a;
        }

    .le-btn.del[b-sr62rukzdz] {
        color: #b91c1c;
        border-color: #f1c4c4;
    }

        .le-btn.del:hover:not(:disabled)[b-sr62rukzdz] {
            background: #fee2e2;
        }

/* ── Right: filter toolbar + grid ── */


.ex-grid[b-sr62rukzdz] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.rt-toolbar.ex-filters[b-sr62rukzdz] {
    flex-wrap: wrap;
    gap: 14px;
}

.rt-filters[b-sr62rukzdz] {
    display: flex;
    align-items: flex-end;
    gap: 14px;
    flex-wrap: wrap;
}

.rt-fld[b-sr62rukzdz] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

    .rt-fld > label[b-sr62rukzdz] {
        font-size: 11.5px;
        font-weight: 600;
        color: #64748b;
        letter-spacing: 0.03em;
        text-transform: uppercase;
    }

.rt-select[b-sr62rukzdz] {
    min-width: 190px;
    padding: 8px 11px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    font-size: 13px;
    color: #1a2537;
    font-family: inherit;
    background: #fff;
    outline: none;
    cursor: pointer;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .rt-select:hover[b-sr62rukzdz] {
        border-color: #c3ccdb;
    }

    .rt-select:focus[b-sr62rukzdz] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

.rt-btn-group[b-sr62rukzdz] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.rt-icon-btn[b-sr62rukzdz],
.rt-cf-btn[b-sr62rukzdz] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 37px;
    padding: 0 12px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    color: #1a56a7;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.12s, box-shadow 0.12s, background 0.12s;
}

    .rt-icon-btn:hover[b-sr62rukzdz],
    .rt-cf-btn:hover[b-sr62rukzdz] {
        border-color: #1a56a7;
        background: #f3f7fd;
    }

.rt-cf-btn[b-sr62rukzdz] {
    color: #64748b;
    letter-spacing: 0.03em;
}

.ex-row-selected td[b-sr62rukzdz] {
    background: #eef4fb !important;
}

@media (max-width: 900px) {
    .ex-layout[b-sr62rukzdz] {
        flex-direction: column;
    }

    .ex-entry[b-sr62rukzdz] {
        flex: 0 0 auto;
        width: 100%;
    }
}

@media (max-width: 720px) {
    .rt-filters[b-sr62rukzdz] {
        width: 100%;
    }

    .rt-fld[b-sr62rukzdz] {
        flex: 1 1 140px;
    }

    .rt-select[b-sr62rukzdz] {
        min-width: 0;
        width: 100%;
    }
}
/* /Components/Pages/Masters/MFactor.razor.rz.scp.css */
/* =====================================================================
   GAINS — MFactor.razor.css   (Masters → Exchange Factor, page-scoped)
   Shared "mu-"/"uf-" grid/page/checkbox styles live in wwwroot/CSS/masters-forms.css.
   Only Exchange-Factor-page-specific rules remain here, following the same
   convention as MItemGroup.razor.css / MItemGroupEdit.razor.css.
   ===================================================================== */

/* Same page-end footer pinning used on Item Group / BSPL / Daybook / TB. */
.mu-page.cf-page[b-80wjwd4xqx] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.cf-page .mu-card[b-80wjwd4xqx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.cf-page .mu-toolbar[b-80wjwd4xqx] {
    flex-shrink: 0;
}

.cf-page .mu-table-wrap[b-80wjwd4xqx] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.cf-page .mu-foot[b-80wjwd4xqx] {
    flex-shrink: 0;
}

/* ── Toolbar: Base Currency picker (left) + search/count (right) ── */
.cf-base-wrap[b-80wjwd4xqx] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cf-base-label[b-80wjwd4xqx] {
    font-size: 12.5px;
    font-weight: 700;
    color: #334155;
    white-space: nowrap;
}

.cf-base-select[b-80wjwd4xqx] {
    width: auto;
    min-width: 200px;
}

.cf-toolbar-right[b-80wjwd4xqx] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── "Is Divide" checkbox column ── */
.cf-th-chk[b-80wjwd4xqx] {
    width: 140px;
    text-align: left !important;
}

.cf-th-chk .uf-check[b-80wjwd4xqx] {
    display: flex;
    align-items: center;
    gap: 7px;
    cursor: pointer;
}

.cf-chk-cell[b-80wjwd4xqx] {
    width: 140px;
}

.uf-check[b-80wjwd4xqx] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

/* Row currently has an unsaved checkbox edit — same amber-tint convention
   used elsewhere in GAINS to flag "dirty" state before Save is clicked. */
.cf-row-changed td[b-80wjwd4xqx] {
    background: #fffbeb !important;
}

/* ── Save footer (page-local "cf-" button, same size/shape contract as
   the shared .le-btn/.uf-btn family, duplicated locally per the existing
   MItemEdit.razor.css convention) ── */
.cf-foot[b-80wjwd4xqx] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 2px 2px;
}

.cf-btn[b-80wjwd4xqx] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 16px;
    border-radius: 6px;
    border: 1px solid transparent;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.04em;
    white-space: nowrap;
    user-select: none;
    transition: background 0.15s, box-shadow 0.15s;
}

    .cf-btn.save[b-80wjwd4xqx] {
        background: #15803d;
        border-color: #15803d;
        color: #fff;
        box-shadow: 0 1px 3px rgba(21, 128, 61, 0.35);
    }

        .cf-btn.save:hover:not(:disabled)[b-80wjwd4xqx] {
            background: #116630;
        }

        .cf-btn.save:disabled[b-80wjwd4xqx] {
            background: #86b99a;
            border-color: #86b99a;
            cursor: not-allowed;
        }

.cf-unsaved[b-80wjwd4xqx] {
    font-size: 12.5px;
    color: #b45309;
    font-weight: 600;
}

@media (max-width: 720px) {
    .mu-toolbar[b-80wjwd4xqx] {
        flex-wrap: wrap;
    }

    .cf-base-wrap[b-80wjwd4xqx],
    .cf-toolbar-right[b-80wjwd4xqx] {
        width: 100%;
    }

    .cf-base-select[b-80wjwd4xqx] {
        flex: 1;
        min-width: 0;
    }

    .cf-toolbar-right[b-80wjwd4xqx] {
        justify-content: space-between;
    }

    .cf-th-chk[b-80wjwd4xqx],
    .cf-chk-cell[b-80wjwd4xqx] {
        width: 100px;
    }
}

@media (max-width: 480px) {
    .cf-base-label[b-80wjwd4xqx] {
        display: none;
    }

    .cf-th-chk span[b-80wjwd4xqx] {
        display: none;
    }
}
/* /Components/Pages/Masters/MGroup.razor.rz.scp.css */
/* =====================================================================
   GAINS — MGroup.razor.css   (Masters → Group grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Group-page-specific rules remain here.
   ===================================================================== */

/* .mu-row-click now lives in the global CSS/masters-forms.css so it can be
   reused on any page. Nothing Group-specific to add here. */

/* ── System Group / Local Group segmented toggle — centered in the
   footer, between the "Showing x-y of z" text (left) and the pager
   (right). .bspl-footer is given position:relative here (page-scoped,
   so it doesn't affect the shared class elsewhere) so the toggle can be
   truly centered on the footer's full width regardless of how wide the
   text/pager on either side are. ──
   The "mu-seg" pattern itself matches the Mappings/Report toggle on
   MCostLedger.razor.css; no shared equivalent yet, so it's repeated here. */
.bspl-footer[b-ukuv8fcuje] {
    position: relative;
}

.mu-foot-center[b-ukuv8fcuje] {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.mu-seg[b-ukuv8fcuje] {
    display: inline-flex;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

.mu-seg-btn[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    padding: 7px 13px;
    border: none;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.02em;
    white-space: nowrap;
    transition: background 0.15s, color 0.15s;
}

/* Compact variant — icon-free "System" / "Local" toggle in the footer. */
.mu-seg-sm .mu-seg-btn[b-ukuv8fcuje] {
    padding: 4px 12px;
    font-size: 12px;
}

    .mu-seg-btn + .mu-seg-btn[b-ukuv8fcuje] {
        border-left: 1px solid #cbd5e1;
    }

    .mu-seg-btn:hover[b-ukuv8fcuje] {
        background: #eef4fb;
    }

    .mu-seg-btn.active[b-ukuv8fcuje] {
        background: #1a56a7;
        color: #fff;
    }

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB /
   MLogin. .mu-page becomes a full-height flex column; .mu-card (the
   bordered table box) grows to fill the remaining space instead of being
   sized only to its own content, and the footer sits as a direct sibling
   below it so it always lands at the true bottom of the page.
   ===================================================================== */
.mu-page[b-ukuv8fcuje] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ukuv8fcuje] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-ukuv8fcuje] {
    flex-shrink: 0;
}

.mu-table-wrap[b-ukuv8fcuje] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-ukuv8fcuje] {
    flex-shrink: 0;
}

/* mu-pager sits inside .bspl-footer-right now — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography. */
.bspl-footer-right[b-ukuv8fcuje] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New group" button stays icon-only top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-ukuv8fcuje] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-ukuv8fcuje] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-ukuv8fcuje] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-ukuv8fcuje] {
        font-size: 15px;
    }

    .mu-foot-info[b-ukuv8fcuje] {
        display: none;
    }

    /* With the info text hidden, re-anchor the toggle to the footer's
       left edge instead of the true center so it can't collide with the
       pager on narrow screens. */
    .mu-foot-center[b-ukuv8fcuje] {
        position: static;
        transform: none;
    }

    .bspl-footer-left[b-ukuv8fcuje] {
        flex: 0 0 auto;
    }
}
/* /Components/Pages/Masters/MGroupEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MGroupEdit.razor.css   (edit Group modal)
   Shared "uf-" modal styles now live in wwwroot/CSS/masters-forms.css.
   Only Group-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-awuk0cjuz0] { max-width: 460px; }

/* Field spacing / section spacing specific to this (shorter) form */
.uf-field[b-awuk0cjuz0] { margin-bottom: 13px; }
.uf-field:last-child[b-awuk0cjuz0] { margin-bottom: 0; }
.uf-section[b-awuk0cjuz0] { margin: 0 0 0; }

/* Read-only depth row: "5  ASSETS" */
.uf-depth[b-awuk0cjuz0] { display: flex; align-items: center; gap: 12px; padding-top: 7px; }
.uf-depth-val[b-awuk0cjuz0] { font-size: 14px; font-weight: 600; color: #1e293b; }
.uf-depth-class[b-awuk0cjuz0] { font-size: 12px; font-weight: 700; color: #0f766e; letter-spacing: 0.6px; }

@media (max-width: 540px) {
    .uf-field[b-awuk0cjuz0] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-awuk0cjuz0] { padding-top: 0; }
}
/* /Components/Pages/Masters/MHoliday.razor.rz.scp.css */
/* =====================================================================
   GAINS — MHoliday.razor.css   (Masters → Holiday Calendar)
   Shared "mu-"/"uf-" grid, button, toast and checkbox styles live in
   wwwroot/CSS/masters-forms.css. Only calendar-grid-specific rules here.
   ===================================================================== */

.hc-card[b-yb2au78pmy] {
    padding: 16px 18px 20px;
}

/* ── Filter toolbar ── */
.hc-toolbar[b-yb2au78pmy] {
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1px solid #e5e9f0;
}

.hc-lbl[b-yb2au78pmy] {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: #334155;
    margin-bottom: 4px;
}

.hc-wk-check[b-yb2au78pmy] {
    display: flex;
    align-items: center;
    padding-bottom: 4px;
}

.hc-hint[b-yb2au78pmy] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 14px 16px;
    background: #eef4fb;
    border: 1px solid #d7e6f8;
    border-radius: 6px;
    color: #1a56a7;
    font-size: 13px;
}

/* ── Quarter / year totals strip ── */
.hc-totals[b-yb2au78pmy] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.hc-total-chip[b-yb2au78pmy] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 12px;
    border-radius: 6px;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
    font-size: 12.5px;
}

.hc-total-label[b-yb2au78pmy] {
    color: #64748b;
    font-weight: 600;
}

.hc-total-val[b-yb2au78pmy] {
    color: #1a2537;
    font-weight: 700;
}

.hc-total-year[b-yb2au78pmy] {
    background: #eaf6f1;
    border-color: #cdeadf;
}

    .hc-total-year .hc-total-val[b-yb2au78pmy] {
        color: #116630;
    }

/* ── Month cards ── */
.hc-month-card[b-yb2au78pmy] {
    height: 100%;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

.hc-month-hdr[b-yb2au78pmy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 7px 10px;
    background: #4b5563;
    color: #fff;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: 0.03em;
}

.hc-month-count[b-yb2au78pmy] {
    background: rgba(255,255,255,0.18);
    border-radius: 10px;
    padding: 1px 8px;
    font-size: 11px;
}

.hc-month-table[b-yb2au78pmy] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .hc-month-table thead th[b-yb2au78pmy] {
        font-size: 10.5px;
        font-weight: 600;
        color: #64748b;
        padding: 5px 0;
        text-align: center;
        border-bottom: 1px solid #eef2f7;
    }

        .hc-month-table thead th.hc-wk[b-yb2au78pmy] {
            color: #94a3b8;
        }

.hc-empty[b-yb2au78pmy] {
    padding: 6px 0;
}

.hc-day[b-yb2au78pmy] {
    text-align: center;
    padding: 6px 0;
    font-size: 12px;
    color: #1a2537;
    cursor: pointer;
    user-select: none;
    border-radius: 4px;
    transition: background 0.12s, color 0.12s;
}

    .hc-day:hover[b-yb2au78pmy] {
        background: #eef4fb;
    }

.hc-day-weekend[b-yb2au78pmy] {
    color: #64748b;
}

.hc-day-holiday[b-yb2au78pmy] {
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
}

    .hc-day-holiday:hover[b-yb2au78pmy] {
        background: #0f3d82;
    }

    .hc-day-holiday.hc-day-weekend[b-yb2au78pmy] {
        background: #b91c1c;
    }

        .hc-day-holiday.hc-day-weekend:hover[b-yb2au78pmy] {
            background: #921616;
        }

/* ── Print ── */
@media print {
    .bspl-title-block[b-yb2au78pmy],
    .hc-toolbar[b-yb2au78pmy],
    .mu-toast[b-yb2au78pmy] {
        display: none !important;
    }

    .hc-months[b-yb2au78pmy] {
        row-gap: 8px !important;
    }
}

/* ── Mobile ── */
@media (max-width: 640px) {
    .hc-card[b-yb2au78pmy] {
        padding: 12px;
    }

    .hc-totals[b-yb2au78pmy] {
        gap: 6px;
    }

    .hc-total-chip[b-yb2au78pmy] {
        padding: 5px 9px;
        font-size: 11.5px;
    }

    .hc-day[b-yb2au78pmy] {
        padding: 7px 0;
        font-size: 13px;
    }
}
/* /Components/Pages/Masters/MHSNTaxClass.razor.rz.scp.css */
/* =====================================================================
   GAINS — MHSNTaxClass.razor.css   (Masters → HSN Tax Class grid, page-scoped)
   Shared "mu-"/"uf-" grid + modal styles live in wwwroot/CSS/masters-forms.css.
   Only HSN-Tax-Class-page-specific rules remain here.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / TB / MLogin / MGroup /
   MItemGroup: .mu-page becomes a full-height flex column; .mu-card grows to
   fill the remaining space, and the footer sits below it at the true bottom. */
.mu-page[b-gjtx99ctg5] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-gjtx99ctg5] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-gjtx99ctg5] {
    flex-shrink: 0;
}

.mu-table-wrap[b-gjtx99ctg5] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-gjtx99ctg5] {
    flex-shrink: 0;
}

.bspl-footer-right[b-gjtx99ctg5] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-gjtx99ctg5] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New HSN tax class" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-gjtx99ctg5] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-gjtx99ctg5] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-gjtx99ctg5] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-gjtx99ctg5] {
        font-size: 15px;
    }

    .mu-foot-info[b-gjtx99ctg5] {
        display: none;
    }
}
/* /Components/Pages/Masters/MIPAddress.razor.rz.scp.css */
/* =====================================================================
   GAINS — MIPAddress.razor.css   (Masters → IP Address grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only IP-Address-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-0fz7tcqzsx] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-0fz7tcqzsx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-0fz7tcqzsx] {
    flex-shrink: 0;
}

.mu-table-wrap[b-0fz7tcqzsx] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-0fz7tcqzsx] {
    flex-shrink: 0;
}

.bspl-footer-right[b-0fz7tcqzsx] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-0fz7tcqzsx] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Columns ── */
.mu-ip-machine[b-0fz7tcqzsx] {
    white-space: nowrap;
}

.mu-ip-addr[b-0fz7tcqzsx] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* ── Mobile: "New IP address" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-0fz7tcqzsx] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-0fz7tcqzsx] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-0fz7tcqzsx] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-0fz7tcqzsx] {
                font-size: 15px;
            }

    .mu-foot-info[b-0fz7tcqzsx] {
        display: none;
    }
}
/* /Components/Pages/Masters/MItem.razor.rz.scp.css */
/* =====================================================================
   GAINS — MItem.razor.css   (Masters → Item grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Item-page-specific rules and small overrides remain here — mirrors
   MLedger.razor.css exactly (same tabs/drawer/filter classes, reused as-is).
   ===================================================================== */

/* Numeric column alignment (OB Qty, Rate, OB Value, MRP, TAX %) */
.mu-table thead th.mu-th-num[b-vozfp7j4gg] {
    text-align: right;
}

.mu-table tbody td.mu-num[b-vozfp7j4gg] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* ── Status icons: green check (active) / red cross (inactive) ──
   Sizing + "active" green color are shared in wwwroot/CSS/masters-forms.css
   (.mu-check, .mu-cross); only the page-specific "inactive" red remains here. */
.mu-cross[b-vozfp7j4gg] {
    color: #dc2626;
}

/* Note: the filter drawer (.mu-drawer*/.mu-fld) is a shared[b-vozfp7j4gg], reusable rule
   set in wwwroot/CSS/masters-forms.css — nothing page-specific to keep here. */
/* .mu-row-click now lives in the global CSS/masters-forms.css (reusable
   anywhere) — no page-specific override needed here. */

/* ── Top tabs (GRID / ENTRY / REPORT / ITEMGALLERY / AUDIT) ── */
.le-toptabs[b-vozfp7j4gg] {
    display: flex;
    gap: 14px;
    align-items: center;
    flex-wrap: wrap;
}

.le-toptab[b-vozfp7j4gg] {
    padding: 8px 16px;
    margin: 0 5px 6px 0;
    border: 1px solid #dde3ed;
    background: #fff;
    color: #64748b;
    font-size: 12px;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    border-radius: 8px;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .le-toptab:hover[b-vozfp7j4gg] {
        background: #f8fafc;
        border-color: #c3ccdb;
        color: #334155;
    }

    .le-toptab.active[b-vozfp7j4gg] {
        background: #fff;
        color: #14b8a6;
        border: 1.5px solid #14b8a6;
    }

.le-tabpane[b-vozfp7j4gg] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
}

.le-tabpane-msg[b-vozfp7j4gg] {
    color: #94a3b8;
    font-size: 14px;
}

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB /
   MLogin / MGroup / MItemGroup / MLedger. .mu-page becomes a full-height
   flex column; .mu-card (the bordered table box) grows to fill the
   remaining space instead of being sized only to its own content, and the
   footer sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-vozfp7j4gg] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.le-toptabs[b-vozfp7j4gg] {
    flex-shrink: 0;
    padding: 0 0 0 10px;
}

.mu-card[b-vozfp7j4gg] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-vozfp7j4gg] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-vozfp7j4gg] {
    flex-shrink: 0;
}

.bspl-footer-right[b-vozfp7j4gg] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-vozfp7j4gg] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "Filter" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-vozfp7j4gg] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-vozfp7j4gg] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-vozfp7j4gg] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-vozfp7j4gg] {
        font-size: 15px;
    }

    .mu-foot-info[b-vozfp7j4gg] {
        display: none;
    }
}
/* /Components/Pages/Masters/MItemEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MItemEdit.razor.css   (Item entry form, inline — Masters → Item → ENTRY)
   Blazor scopes component CSS per-file, so the generic "le-" field/row/button
   look (originally written for MLedgerEdit) is duplicated here rather than
   inherited — same convention already used across Masters pages.
   ===================================================================== */

.ie-root[b-8xc7kmihi6] {
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 0;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    /* .ie-root is a flex item inside .mu-page (a fixed-height flex column,
       shared with the grid/tabs). Because overflow is not "visible" here,
       flexbox's automatic minimum size becomes 0 — so on mobile, once the
       stacked entry form got taller than .mu-page's box, the flex algorithm
       silently shrank .ie-root to fit instead of letting it grow, and
       overflow:hidden then clipped everything below the shrunk height
       (footer buttons, Set Rate, etc.) with no scrollbar anywhere. Same
       fix already used for .le-toptabs/.mu-foot as siblings in this flex
       column — pin it to its natural content height so it renders in full
       and the page (.gains-content) scrolls normally to reach it. */
    flex-shrink: 0;
}

.ie-main[b-8xc7kmihi6] {
    display: flex;
    align-items: stretch;
}

/* ── Left: form ── */
.ie-form[b-8xc7kmihi6] {
    flex: 1;
    min-width: 0;
    padding: 18px 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.le-row[b-8xc7kmihi6] {
    display: grid;
    grid-template-columns: 130px 1fr;
    align-items: center;
    gap: 12px;
}

.le-row > label[b-8xc7kmihi6] {
    font-size: 13px;
    font-weight: 600;
    color: #334155;
}

.le-req[b-8xc7kmihi6] {
    color: #dc2626;
}

.le-inp[b-8xc7kmihi6] {
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    max-width: 320px;
}

    .le-inp:focus[b-8xc7kmihi6] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

    .le-inp.le-sm[b-8xc7kmihi6] {
        max-width: 160px;
    }

    .le-inp.le-xs[b-8xc7kmihi6] {
        width: 64px;
        max-width: 64px;
    }

    .le-inp.le-amt[b-8xc7kmihi6] {
        width: 110px;
        max-width: 110px;
        text-align: right;
    }

.le-invalid[b-8xc7kmihi6] {
    border-color: #e11d48 !important;
    background: #fff5f6;
}

.le-field-err[b-8xc7kmihi6] {
    color: #b42318;
    font-size: 12px;
    margin-top: 2px;
}

.ie-pair[b-8xc7kmihi6] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ── HSN Code shaded box ── */
.ie-hsn-box[b-8xc7kmihi6] {
    background: #eef1f6;
    border-radius: 6px;
    padding: 10px 12px;
}

.ie-taxpct[b-8xc7kmihi6] {
    color: #15803d;
    font-weight: 700;
    font-size: 13px;
    white-space: nowrap;
}

.ie-taxpct-btn[b-8xc7kmihi6] {
    background: none;
    border: none;
    padding: 0;
    font-family: inherit;
    cursor: pointer;
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 3px;
}

    .ie-taxpct-btn:hover[b-8xc7kmihi6] {
        color: #116630;
    }

/* ── HSN tax-details popup — reuses the shared "uf-" modal system.
   Field/section spacing set locally per the convention in MItemGroupEdit.razor.css. ── */
.uf-modal-hsn[b-8xc7kmihi6] {
    max-width: 380px;
}

.uf-field[b-8xc7kmihi6] {
    margin-bottom: 13px;
}

    .uf-field:last-child[b-8xc7kmihi6] {
        margin-bottom: 0;
    }

.uf-section[b-8xc7kmihi6] {
    margin: 14px 0 0;
}

/* Set Rate's Save button only disables transiently while saving — keep it
   full-color rather than the global .uf-btn-save:disabled dimmed look, to
   match the HSN popup's Save button. */
.ie-sr-save:disabled[b-8xc7kmihi6] {
    opacity: 1;
    cursor: not-allowed;
}

.ie-hsn-popup-loading[b-8xc7kmihi6] {
    padding: 20px 0;
    text-align: center;
    color: #64748b;
    font-size: 13px;
}

/* ── GlobalDatepicker (shared component) — Item-form-only adjustments ──
   These use Blazor's ::deep so they only reach into GlobalDatepicker's markup
   when it's rendered inside THIS page (the HSN/Set Rate popups). Every other
   page that uses GlobalDatepicker (BSPL, TB, QG, QLedger, DayBook, DocumentGrid)
   keeps its normal look — nothing here touches the shared component file. */

/* The calendar dropdown was getting clipped by this popup's own clipping
   (.uf-modal has overflow:hidden, .uf-body has overflow-y:auto with a capped
   height) — let it escape the popup instead of being cut off. */
.uf-modal-hsn[b-8xc7kmihi6] {
    overflow: visible;
}

.uf-modal-hsn .uf-body[b-8xc7kmihi6] {
    overflow: visible;
    max-height: none;
}

/* Move the calendar icon to the trailing edge as its own element (separated
   by a divider), instead of blended in at the start next to the date text. */
[b-8xc7kmihi6] .gdp-wrap {
    justify-content: space-between;
}

[b-8xc7kmihi6] .gdp-value {
    order: 1;
}

[b-8xc7kmihi6] .gdp-icon {
    order: 2;
    margin-left: 10px;
    padding-left: 10px;
    border-left: 1px solid #dde3ed;
}

/* ── Photo + price-history row ── */
.ie-media[b-8xc7kmihi6] {
    display: flex;
    gap: 20px;
    margin-top: 4px;
    flex-wrap: wrap;
}

.ie-photo-box[b-8xc7kmihi6] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 0 0 auto;
}

.ie-photo-frame[b-8xc7kmihi6] {
    width: 150px;
    height: 150px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f8fafc;
}

.ie-photo-img[b-8xc7kmihi6] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.ie-photo-placeholder[b-8xc7kmihi6] {
    color: #cbd5e1;
    font-size: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

.ie-photo-btn-row[b-8xc7kmihi6] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.ie-photo-upload-btn[b-8xc7kmihi6] {
    cursor: pointer;
}

.ie-photo-remove-btn[b-8xc7kmihi6] {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    background: #fff;
    color: #64748b;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}

    .ie-photo-remove-btn:hover[b-8xc7kmihi6] {
        background: #fee2e2;
        border-color: #f1aab2;
        color: #dc2626;
    }

.ie-history[b-8xc7kmihi6] {
    flex: 1 1 220px;
    min-width: 200px;
    max-width: 300px;
    height: 150px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.ie-hist-scroll[b-8xc7kmihi6] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

.ie-hist-table[b-8xc7kmihi6] {
    width: 100%;
    border-collapse: collapse;
    font-size: 11.5px;
}

    .ie-hist-table thead th[b-8xc7kmihi6] {
        position: sticky;
        top: 0;
        background: #4b5563;
        color: #fff;
        font-weight: 600;
        font-size: 11px;
        line-height: 1.3;
        padding: 5px 8px;
        text-align: right;
    }

        .ie-hist-table thead th:first-child[b-8xc7kmihi6] {
            text-align: left;
        }

    .ie-hist-table tbody td[b-8xc7kmihi6] {
        padding: 5px 8px;
        border-bottom: 1px solid #eef2f7;
        text-align: right;
        color: #1a2537;
        line-height: 1.3;
    }

        .ie-hist-table tbody td:first-child[b-8xc7kmihi6] {
            text-align: left;
        }

.ie-hist-empty[b-8xc7kmihi6] {
    text-align: center !important;
    color: #94a3b8;
    padding: 10px 0 !important;
    font-size: 12px;
    border-bottom: none !important;
}

/* ── Right: side action buttons (placeholders) ── */
.ie-side[b-8xc7kmihi6] {
    flex: 0 0 190px;
    background: #eef1f6;
    border-left: 1px solid #e5e9f0;
    padding: 18px 14px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ie-side-btn[b-8xc7kmihi6] {
    padding: 10px 12px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #f1f5f9;
    color: #94a3b8;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: not-allowed;
    letter-spacing: 0.02em;
}

    /* Enabled side buttons (e.g. Set Rate) get the normal clickable look —
       everything still pending an endpoint stays disabled and greyed out above. */
    .ie-side-btn:not(:disabled)[b-8xc7kmihi6] {
        background: #fff;
        color: #334155;
        cursor: pointer;
    }

        .ie-side-btn:not(:disabled):hover[b-8xc7kmihi6] {
            background: #f8fafc;
            border-color: #94a3b8;
        }

/* ── Footer ── */
.le-foot[b-8xc7kmihi6] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    border-top: 1px solid #e5e9f0;
    background: #f7f9fc;
}

.le-btn[b-8xc7kmihi6] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    border-radius: 6px;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.04em;
    white-space: nowrap;
    user-select: none;
    flex-shrink: 0;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}

    .le-btn:hover[b-8xc7kmihi6] {
        background: #eef4fb;
    }

    .le-btn:disabled[b-8xc7kmihi6] {
        opacity: 0.6;
        cursor: not-allowed;
    }

        .le-btn:disabled:hover[b-8xc7kmihi6] {
            background: #fff;
        }

    .le-btn.save[b-8xc7kmihi6] {
        background: #15803d;
        border-color: #15803d;
        color: #fff;
    }

        .le-btn.save:hover:not(:disabled)[b-8xc7kmihi6] {
            background: #116630;
        }

        .le-btn.save:disabled[b-8xc7kmihi6] {
            background: #86b99a;
            border-color: #86b99a;
        }

    .le-btn.del[b-8xc7kmihi6] {
        color: #b91c1c;
        border-color: #f1c4c4;
    }

        .le-btn.del:hover:not(:disabled)[b-8xc7kmihi6] {
            background: #fee2e2;
        }

.ie-gear[b-8xc7kmihi6] {
    margin-left: auto;
    color: #94a3b8;
    font-size: 16px;
    cursor: pointer;
}

    .ie-gear:hover[b-8xc7kmihi6] {
        color: #64748b;
    }

@media (max-width: 720px) {
    .ie-main[b-8xc7kmihi6] {
        flex-direction: column;
    }

    .ie-form[b-8xc7kmihi6] {
        padding: 14px;
    }

    /* Fixed 130px label column + fixed-width inputs is what was overflowing —
       stack label above field and let inputs size to the available width. */
    .le-row[b-8xc7kmihi6] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .le-inp[b-8xc7kmihi6] {
        max-width: 100%;
        width: 100%;
        box-sizing: border-box;
    }

        .le-inp.le-sm[b-8xc7kmihi6],
        .le-inp.le-xs[b-8xc7kmihi6],
        .le-inp.le-amt[b-8xc7kmihi6] {
            width: auto;
            max-width: none;
            flex: 1 1 80px;
        }

    .ie-pair[b-8xc7kmihi6] {
        flex-wrap: wrap;
    }

    .ie-taxpct[b-8xc7kmihi6],
    .ie-taxpct-btn[b-8xc7kmihi6] {
        flex: 0 0 auto;
    }

    .ie-media[b-8xc7kmihi6] {
        flex-direction: column;
    }

    .ie-photo-box[b-8xc7kmihi6] {
        width: 100%;
    }

    .ie-history[b-8xc7kmihi6] {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    /* .ie-side was picking up its row-layout flex-basis (190px) as a HEIGHT
       once .ie-main switches to column — reset it to a normal full-width block
       instead of a squashed 190px-tall strip. */
    .ie-side[b-8xc7kmihi6] {
        flex: 0 0 auto;
        width: 100%;
        flex-direction: row;
        flex-wrap: wrap;
        border-left: none;
        border-top: 1px solid #e5e9f0;
    }

        .ie-side-btn[b-8xc7kmihi6] {
            flex: 1 1 45%;
        }

    .le-foot.ie-foot[b-8xc7kmihi6] {
        flex-wrap: wrap;
        gap: 8px;
    }

    .ie-gear[b-8xc7kmihi6] {
        margin-left: auto;
    }
}

@media (max-width: 480px) {
    /* Icons only — same "mu-btn-label" convention MItem.razor's grid header
       already uses for its Filter button on narrow screens. */
    .ie-btn-label[b-8xc7kmihi6] {
        display: none;
    }

    .le-foot.ie-foot .le-btn[b-8xc7kmihi6] {
        padding: 8px 10px;
        gap: 0;
    }

    .ie-side-btn[b-8xc7kmihi6] {
        flex: 1 1 100%;
    }
}

@media (max-width: 540px) {
    /* Same treatment MItemGroupEdit.razor.css already gives its own .uf-field —
       applied here too since the HSN/Set Rate popups use the same shared class. */
    .uf-field[b-8xc7kmihi6] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

        .uf-field > label[b-8xc7kmihi6] {
            padding-top: 0;
        }
}
/* /Components/Pages/Masters/MItemGroup.razor.rz.scp.css */
/* =====================================================================
   GAINS — MItemGroup.razor.css   (Masters → Item Group grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Item-Group-page-specific rules remain here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB /
   MLogin / MGroup. .mu-page becomes a full-height flex column; .mu-card
   (the bordered table box) grows to fill the remaining space instead of
   being sized only to its own content, and the footer sits as a direct
   sibling below it so it always lands at the true bottom of the page.
   ===================================================================== */
.mu-page[b-r0e2nyz8pf] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-r0e2nyz8pf] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-r0e2nyz8pf] {
    flex-shrink: 0;
}

.mu-table-wrap[b-r0e2nyz8pf] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-r0e2nyz8pf] {
    flex-shrink: 0;
}

.bspl-footer-right[b-r0e2nyz8pf] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-r0e2nyz8pf] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Photo thumbnail column ── */
.mu-photo-cell[b-r0e2nyz8pf] {
    width: 48px;
}

.mu-photo-thumb[b-r0e2nyz8pf] {
    width: 36px;
    height: 36px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    object-fit: cover;
    display: block;
}

.mu-photo-placeholder[b-r0e2nyz8pf] {
    width: 36px;
    height: 36px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    color: #cbd5e1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
}

/* ── Mobile: "New item group" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-r0e2nyz8pf] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-r0e2nyz8pf] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-r0e2nyz8pf] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-r0e2nyz8pf] {
        font-size: 15px;
    }

    .mu-foot-info[b-r0e2nyz8pf] {
        display: none;
    }
}
/* /Components/Pages/Masters/MItemGroupEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MItemGroupEdit.razor.css   (edit Item Group modal)
   Shared "uf-" modal styles now live in wwwroot/CSS/masters-forms.css.
   Only Item-Group-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-gun49tn4fd] { max-width: 460px; }

/* Field spacing / section spacing specific to this (shorter) form */
.uf-field[b-gun49tn4fd] { margin-bottom: 13px; }
.uf-field:last-child[b-gun49tn4fd] { margin-bottom: 0; }
.uf-section[b-gun49tn4fd] { margin: 0 0 0; }

/* Read-only depth row */
.uf-depth[b-gun49tn4fd] { display: flex; align-items: center; gap: 12px; padding-top: 7px; }
.uf-depth-val[b-gun49tn4fd] { font-size: 14px; font-weight: 600; color: #1e293b; }

/* ── Photo: a rectangular preview box, with the upload/remove buttons stacked below it.
   The real <input type="file"> is visually hidden (clip-rect, not opacity) and triggered
   by a <label for="...">, so only one button is ever visible — no native file-picker UI
   leaks through next to it. ── */
.uf-photo-stack[b-gun49tn4fd] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    min-width: 0;
}

.uf-photo-box[b-gun49tn4fd] {
    width: 168px;
    height: 168px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #f8fafc;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.uf-photo-img[b-gun49tn4fd] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.uf-photo-placeholder[b-gun49tn4fd] {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
    font-size: 32px;
}

.uf-photo-btn-row[b-gun49tn4fd] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    max-width: 100%;
}

.uf-photo-upload-btn[b-gun49tn4fd],
.uf-photo-remove-btn[b-gun49tn4fd] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    width: fit-content;
    white-space: nowrap;
    padding: 4px 9px;
    font-size: 11px;
}

.uf-photo-upload-btn i[b-gun49tn4fd],
.uf-photo-remove-btn i[b-gun49tn4fd] {
    font-size: 10px;
}

@media (max-width: 540px) {
    .uf-field[b-gun49tn4fd] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-gun49tn4fd] { padding-top: 0; }
}
/* /Components/Pages/Masters/MLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — MLedger.razor.css   (Masters → Ledger grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Ledger-page-specific rules and small overrides remain here.
   ===================================================================== */

/* Toast on this page is slightly smaller than the shared default */
.mu-toast[b-26ww3l7206] {
    gap: 12px;
    min-width: 300px;
    padding: 16px 16px 16px 18px;
    font-size: 14px;
}

/* Numeric column alignment (Ledger grid only) */
.mu-table thead th.mu-th-num[b-26ww3l7206] {
    text-align: right;
}

.mu-table tbody td.mu-num[b-26ww3l7206] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* ── Status pill ── */
.mu-status[b-26ww3l7206] {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1.4;
}

    .mu-status.on[b-26ww3l7206] {
        background: #dcfce7;
        color: #15803d;
    }

    .mu-status.off[b-26ww3l7206] {
        background: #f1f5f9;
        color: #64748b;
    }

/* ── Status icons: green check (active) / red cross (inactive) ──
   Sizing + "active" green color are shared in wwwroot/CSS/masters-forms.css
   (.mu-check, .mu-cross); only the page-specific "inactive" red remains here. */
.mu-cross[b-26ww3l7206] {
    color: #dc2626;
}

/* Note: the filter bar (.mu-filter/.mu-alpha/.mu-filter-grid) and the
   filter drawer (.mu-drawer*/ .mu-fld) are now shared[b-26ww3l7206], reusable rules in
wwwroot/CSS/masters-forms.css — nothing page-specific to keep here. */
/* .mu-row-click now lives in the global CSS/masters-forms.css (reusable
   anywhere) — no page-specific override needed here. */
/* ── Top tabs (GRID / CONTACTS / ENTRY / REPORT / AUDIT) ── */
.le-toptabs[b-26ww3l7206] {
    display: flex;
    gap: 14px;
    align-items: center;
    flex-wrap: wrap;
}

.le-toptab[b-26ww3l7206] {
    padding: 8px 16px;
    margin: 0 5px 6px 0;
    border: 1px solid #dde3ed;
    background: #fff;
    color: #64748b;
    font-size: 12px;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    border-radius: 8px;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .le-toptab:hover[b-26ww3l7206] {
        background: #f8fafc;
        border-color: #c3ccdb;
        color: #334155;
    }

    .le-toptab.active[b-26ww3l7206] {
        background: #fff;
        color: #14b8a6;
        border: 1.5px solid #14b8a6;
    }

.le-tabpane[b-26ww3l7206] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
}

.le-tabpane-msg[b-26ww3l7206] {
    color: #94a3b8;
    font-size: 14px;
}

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB /
   MLogin / MGroup. .mu-page becomes a full-height flex column; .mu-card
   (the bordered table box) grows to fill the remaining space instead of
   being sized only to its own content, and the footer sits as a direct
   sibling below it so it always lands at the true bottom of the page.
   ===================================================================== */
.mu-page[b-26ww3l7206] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.le-toptabs[b-26ww3l7206] {
    flex-shrink: 0;
    padding: 0 0 0 10px;
}

.mu-card[b-26ww3l7206] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-26ww3l7206] {
    flex-shrink: 0;
}

.mu-table-wrap[b-26ww3l7206] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-26ww3l7206] {
    flex-shrink: 0;
}

/* mu-pager sits inside .bspl-footer-right now — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography. */
.bspl-footer-right[b-26ww3l7206] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-26ww3l7206] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New ledger" / "Filter" buttons — icon only, stay top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-26ww3l7206] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-26ww3l7206] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-26ww3l7206] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-26ww3l7206] {
        font-size: 15px;
    }

    .mu-foot-info[b-26ww3l7206] {
        display: none;
    }
}
/* /Components/Pages/Masters/MLedgerCCGroup.razor.rz.scp.css */
/* =====================================================================
   GAINS — MLedgerCCGroup.razor.css   (Masters → Ledger CC Group, page-scoped)
   Shared "mu-"/"uf-" grid + checkbox styles live in wwwroot/CSS/masters-forms.css.
   This page adds the two-panel master/detail split and its small extras
   (filter row, branch-checkbox row, link-count badge, checklist header).
   ===================================================================== */

.mu-page[b-mpb8b37t8i] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-foot[b-mpb8b37t8i] {
    flex-shrink: 0;
}

/* ── "Update all child site(s)" row — sits above the split, like the old page ── */
.lcg-branch-row[b-mpb8b37t8i] {
    padding: 0 20px 12px;
    flex-shrink: 0;
}

.lcg-branch-check[b-mpb8b37t8i] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    color: #475569;
}

/* ── Master/detail split — left = ledgers, right = CC group checklist ── */
.lcg-split[b-mpb8b37t8i] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
    padding: 0 20px;
}

.lcg-left[b-mpb8b37t8i],
.lcg-right[b-mpb8b37t8i] {
    flex: 1 1 50%;
    display: flex;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
}

    .lcg-left .mu-table-wrap[b-mpb8b37t8i],
    .lcg-right .mu-table-wrap[b-mpb8b37t8i] {
        flex: 1;
        overflow: auto;
        min-height: 0;
    }

/* ── Left panel filter row: Group select + Ledger input + GO button ── */
.lcg-filter-row[b-mpb8b37t8i] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.lcg-group-select[b-mpb8b37t8i] {
    flex: 0 0 140px;
}

.lcg-ledger-input[b-mpb8b37t8i] {
    flex: 1 1 auto;
    min-width: 0;
    height: 34px;
    padding: 0 10px;
    border: 1px solid #d8dee8;
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    color: #0f172a;
    background: #fff;
}

    .lcg-ledger-input:focus[b-mpb8b37t8i] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.12);
    }

.lcg-go-btn[b-mpb8b37t8i] {
    flex-shrink: 0;
    padding: 8px 16px;
}

/* ── Selected ledger row on the left ── */
.lcg-row-active td[b-mpb8b37t8i] {
    background: #e8f8f4 !important;
}

/* ── Right panel header: "Ledger Name :" + "# of CC Categories :" ── */
.lcg-right-header[b-mpb8b37t8i] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 20px 10px;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.lcg-ledger-name[b-mpb8b37t8i] {
    font-size: 13px;
    font-weight: 700;
    color: #0f172a;
}

.lcg-ledger-name-label[b-mpb8b37t8i] {
    font-weight: 700;
    color: #0f172a;
    margin-right: 4px;
}

.lcg-count-line[b-mpb8b37t8i] {
    font-size: 12.5px;
    font-weight: 700;
    color: #0f172a;
}

/* ── Left panel "Count" column/badge ── */
.lcg-count-col[b-mpb8b37t8i] {
    text-align: center;
    width: 70px;
}

.lcg-count-badge[b-mpb8b37t8i] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #e8f8f4;
    color: #0f766e;
    font-size: 11px;
    font-weight: 700;
}

/* ── Checkbox column on the right (checklist) ── */
.lcg-chk-col[b-mpb8b37t8i] {
    width: 40px;
    text-align: center;
}

/* ── Mobile: stack the two panels, filter row wraps ── */
@media (max-width: 900px) {
    .lcg-split[b-mpb8b37t8i] {
        flex-direction: column;
        padding: 0 10px;
        gap: 12px;
    }

    .lcg-left[b-mpb8b37t8i],
    .lcg-right[b-mpb8b37t8i] {
        flex: 1 1 auto;
        min-height: 260px;
    }

    .lcg-branch-row[b-mpb8b37t8i] {
        padding: 0 10px 12px;
    }
}

@media (max-width: 600px) {
    .lcg-filter-row[b-mpb8b37t8i] {
        flex-wrap: wrap;
    }

    .lcg-group-select[b-mpb8b37t8i] {
        flex: 1 1 100%;
    }

    .lcg-ledger-input[b-mpb8b37t8i] {
        flex: 1 1 auto;
    }
}

@media (max-width: 767px) {
    .lcg-foot .mu-btn-label[b-mpb8b37t8i] {
        display: none;
    }

    .lcg-foot .mu-btn[b-mpb8b37t8i] {
        padding: 8px 10px;
        gap: 0;
    }
}
/* /Components/Pages/Masters/MLedgerEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS - MLedgerEdit.razor.css   (Ledger edit form, tabbed, inline)
   ===================================================================== */

/* =====================================================================
   Font (Arial) for this form is set via the shared .le-inline rule in
   wwwroot/CSS/masters-forms.css — no need to repeat it here.
   ===================================================================== */
.le-inline[b-7cxrak7dj5] {
    position: relative;
    display: grid;
    grid-template-columns: 200px 1fr;
    grid-template-rows: 100%;
    height: 72vh; min-height: 460px;
    background: #fff; border: 1px solid #dde3ed; border-radius: 0;
    overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    /* .le-inline is a flex item inside .mu-page (a fixed-height flex column,
       shared with the grid/tabs). Pin it so it can never be shrunk by the
       flex algorithm below its own box — same trap and same fix as
       MItemEdit's .ie-root. */
    flex-shrink: 0;
}
@media (max-width: 720px) {
    .le-inline[b-7cxrak7dj5] {
        grid-template-columns: 1fr;
        /* A fixed 72vh/460px single-row-height 2-pane card doesn't leave
           enough room once the rail (tab list) stacks above the pane on
           mobile — the tab list and footer buttons were getting squeezed
           out of the visible box. Let the card grow to fit its stacked
           content instead, same "natural height + page scroll" approach
           used for the Item entry form. */
        grid-template-rows: auto 1fr;
        height: auto;
        min-height: 0;
        max-height: none;
    }

    .le-rail[b-7cxrak7dj5] {
        height: auto;
        max-height: none;
        border-right: none;
        border-bottom: 1px solid #e5e9f0;
    }

    /* Tab list becomes a horizontal row instead of a stacked column. */
    .le-tabs[b-7cxrak7dj5] {
        flex-direction: row;
        flex-wrap: wrap;
        overflow-y: visible;
        overflow-x: auto;
        flex: 0 0 auto;
        padding: 8px;
        gap: 6px;
    }

    .le-tab[b-7cxrak7dj5] {
        flex: 0 0 auto;
        white-space: nowrap;
    }

    /* Dr/Cr/Diff summary is desktop-only real estate — hide on mobile. */
    .le-diff[b-7cxrak7dj5] {
        display: none;
    }

    .le-pane[b-7cxrak7dj5] {
        height: auto;
        min-height: 320px;
    }

    /* Fixed 140px label column + fixed-width inputs is what was overflowing
       on narrow screens — stack label above field, same treatment already
       given to .le-row2 just below. */
    .le-row[b-7cxrak7dj5] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    [b-7cxrak7dj5] .le-inp {
        max-width: 100%;
        width: 100%;
        box-sizing: border-box;
    }

        [b-7cxrak7dj5] .le-inp.le-sm,
        [b-7cxrak7dj5] .le-inp.le-xs,
        [b-7cxrak7dj5] .le-inp.le-amt {
            width: auto;
            max-width: none;
            flex: 1 1 80px;
        }

    .le-ob[b-7cxrak7dj5] {
        flex-wrap: wrap;
    }

    .le-foot[b-7cxrak7dj5] {
        flex-wrap: wrap;
    }

    .le-pane-hdr[b-7cxrak7dj5] {
        flex-wrap: wrap;
        gap: 10px 20px;
    }
}

/* Left rail */
.le-rail[b-7cxrak7dj5] {
    display: flex; flex-direction: column;
    border-right: 1px solid #e5e9f0; background: #fbfcfe;
    height: 100%; min-height: 0; overflow: hidden;
}
.le-tabs[b-7cxrak7dj5] { display: flex; flex-direction: column; padding: 8px; gap: 2px; flex: 1; overflow-y: auto; }
.le-tab[b-7cxrak7dj5] {
    text-align: left; padding: 8px 12px; border: none; background: none;
    font-size: 13px; color: #334155; font-family: inherit; cursor: pointer;
    border-radius: 6px; transition: background 0.12s, color 0.12s;
}
.le-tab:hover[b-7cxrak7dj5] { background: #eef4fb; }
.le-tab.active[b-7cxrak7dj5] { background: #c7d8f0; color: #0f3d82; font-weight: 600; }
.le-tab:disabled[b-7cxrak7dj5] { opacity: 0.4; cursor: not-allowed; }
.le-tab:disabled:hover[b-7cxrak7dj5] { background: none; }

.le-diff[b-7cxrak7dj5] { border-top: 1px solid #e5e9f0; padding: 10px 12px; }
.le-diff-hdr[b-7cxrak7dj5] { font-size: 12px; font-weight: 700; color: #1a2537; text-align: center; margin-bottom: 6px; }
.le-diff-row[b-7cxrak7dj5] { display: flex; justify-content: space-between; font-size: 12.5px; padding: 3px 0; color: #1a56a7; }
.le-diff-row b[b-7cxrak7dj5] { font-variant-numeric: tabular-nums; }
.le-diff-delta[b-7cxrak7dj5] { border-top: 1px dashed #cbd5e1; margin-top: 4px; padding-top: 6px; }

/* Right pane */
.le-pane[b-7cxrak7dj5] { display: flex; flex-direction: column; min-width: 0; height: 100%; min-height: 0; }
.le-pane-hdr[b-7cxrak7dj5] {
    display: flex; gap: 28px; align-items: center;
    padding: 12px 18px; background: #eef1f6; border-bottom: 1px solid #e5e9f0;
    font-size: 13px; color: #475569; font-weight: 600;
}
.le-body[b-7cxrak7dj5] { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 18px; }

.le-form[b-7cxrak7dj5] { display: flex; flex-direction: column; gap: 12px; }
.le-row[b-7cxrak7dj5] { display: grid; grid-template-columns: 140px 1fr; align-items: center; gap: 12px; }
.le-row-top[b-7cxrak7dj5] { align-items: start; }
.le-row > label[b-7cxrak7dj5] { font-size: 13px; color: #334155; }
.le-req[b-7cxrak7dj5] { color: #dc2626; }
[b-7cxrak7dj5] .le-inp {
    padding: 6px 8px; border: 1px solid #cbd5e1; border-radius: 5px;
    font-size: 13px; font-family: inherit; color: #1a2537; background: #fff; outline: none;
    max-width: 320px;
}
[b-7cxrak7dj5] .le-inp:focus { border-color: #1a56a7; box-shadow: 0 0 0 3px rgba(26,86,167,0.12); }
[b-7cxrak7dj5] .le-inp:disabled { background: #f1f5f9; color: #64748b; cursor: not-allowed; }
[b-7cxrak7dj5] .le-inp.le-sm { max-width: 180px; }
[b-7cxrak7dj5] .le-inp.le-xs { width: 64px; }
[b-7cxrak7dj5] .le-inp.le-amt { width: 130px; text-align: right; }
.le-ta[b-7cxrak7dj5] { resize: none; width: 100%; max-width: 320px; }
.le-ob[b-7cxrak7dj5] { display: flex; align-items: center; gap: 8px; }
.le-curr[b-7cxrak7dj5] { font-size: 13px; color: #475569; }
.le-placeholder[b-7cxrak7dj5] { color: #94a3b8; font-size: 14px; padding: 40px 8px; text-align: center; }

/* Section bars + checkbox lists */
.le-section[b-7cxrak7dj5] {
    background: #2f5c8f; color: #fff;
    font-size: 13px; font-weight: 600; letter-spacing: 0.3px;
    padding: 7px 12px; border-radius: 4px; margin: 2px 0 6px;
}
.le-checks[b-7cxrak7dj5] { display: flex; flex-direction: column; gap: 9px; margin-bottom: 4px; }
.le-chk[b-7cxrak7dj5] { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: #1a2537; cursor: pointer; }
/* .le-chk input sizing is shared in wwwroot/CSS/masters-forms.css */
.le-taxchk[b-7cxrak7dj5] { margin-bottom: 4px; }

/* Two-column rows (Address / Statutory) */
.le-row2[b-7cxrak7dj5] {
    /* Both label columns are the same width (140px) so the second field in
       each row — Area, PIN / ZIP, Longitude, PIN / ZIP 2 — lines up with
       its own label exactly like the first field does (City, State,
       Latitude, City 2). Previously the second label column was 120px,
       20px narrower than the first, which was enough for its longer labels
       ("PIN / ZIP 2") to sit closer to wrapping and throw off row height. */
    display: grid; grid-template-columns: 140px 210px 140px 210px;
    gap: 12px; align-items: center; justify-content: start;
}
.le-row2 > label[b-7cxrak7dj5] { font-size: 13px; color: #334155; }
.le-row2[b-7cxrak7dj5]  .le-inp { width: 100%; max-width: none; }
.le-geo[b-7cxrak7dj5] { display: flex; align-items: center; gap: 6px; width: 100%; }
.le-geo[b-7cxrak7dj5]  .le-inp { flex: 1; min-width: 0; width: auto; max-width: none; }
.le-geo .le-xs[b-7cxrak7dj5] { flex: 0 0 56px; }
.le-pin[b-7cxrak7dj5] {
    color: #dc2626; flex: 0 0 auto;
    /* Longitude's row has this locate icon and Latitude's doesn't — keep it
       from ever standing taller than the textbox next to it (icon fonts can
       carry their own line-height), which would otherwise stretch this
       row's height relative to the Latitude row above it. */
    display: inline-flex; align-items: center; height: 100%; line-height: 1;
}
.le-cal[b-7cxrak7dj5] { color: #1a56a7; font-size: 15px; cursor: pointer; flex: 0 0 auto; }
/* Area/City and City 2/PIN-ZIP-2: CityStateCountryAutofill can show its own
   status text (e.g. Area's "No areas found for the selected city" before a
   City is picked) below the box. Without this, that text sits in normal
   flow and makes just that one cell taller than its row partner, pushing
   the whole row's shared height (align-items: center) out of sync between
   the two fields. Floating it below the field, the same way the
   city/area suggestion list already overlays rather than pushing layout,
   keeps every row the same height regardless of which field has a message. */
.le-row2[b-7cxrak7dj5]  .uf-err {
    position: absolute; top: 100%; left: 0; right: 0;
    margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
@media (max-width: 760px) {
    .le-row2[b-7cxrak7dj5] { grid-template-columns: 140px 1fr; }
}

/* Footer */
.le-readonly[b-7cxrak7dj5] { background: #f1f5f9; color: #475569; cursor: not-allowed; }

/* City autocomplete */
.le-autocomplete[b-7cxrak7dj5] { position: relative; }
.le-suggest[b-7cxrak7dj5] {
    position: absolute; top: calc(100% + 2px); left: 0; right: 0; z-index: 40;
    margin: 0; padding: 4px; list-style: none;
    background: #fff; border: 1px solid #cbd5e1; border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 240px; overflow-y: auto;
}
.le-suggest li[b-7cxrak7dj5] {
    display: flex; flex-direction: column; gap: 1px;
    padding: 7px 10px; border-radius: 6px; cursor: pointer; font-size: 13px; color: #1a2537;
}
.le-suggest li:hover[b-7cxrak7dj5],
.le-suggest li.active[b-7cxrak7dj5] { background: #eef4fb; }
.le-suggest-sub[b-7cxrak7dj5] { font-size: 11.5px; color: #94a3b8; }

/* Contacts table — matches the shared mu-table grid look */
.le-contacts-wrap[b-7cxrak7dj5] { max-height: 540px; overflow: auto; }
.le-contacts[b-7cxrak7dj5] { width: 100%; border-collapse: collapse; font-size: 13px; }
.le-contacts thead th[b-7cxrak7dj5] {
    position: sticky; top: 0; z-index: 1;
    background: #4b5563; color: #fff;
    text-align: left; font-weight: 600; font-size: 12.5px;
    padding: 10px 14px; white-space: nowrap;
}
.le-contacts tbody td[b-7cxrak7dj5] {
    padding: 10px 14px; color: #1a2537;
    border-bottom: 1px solid #eef2f7; white-space: nowrap;
}
.le-contacts tbody tr:nth-child(even) td[b-7cxrak7dj5] { background: #f7f9fc; }
.le-contacts tbody tr:hover td[b-7cxrak7dj5] { background: #eef4fb; }
.le-contacts .le-idx[b-7cxrak7dj5] { color: #1a56a7; font-weight: 600; }
.le-contacts tbody tr.le-row-click[b-7cxrak7dj5] { cursor: pointer; }
.le-th-act[b-7cxrak7dj5] { width: 48px; }
.le-th-chk[b-7cxrak7dj5] { width: 44px; }
.le-contacts thead th.le-th-chk[b-7cxrak7dj5] { text-align: center; }
.le-cat-wrap[b-7cxrak7dj5] { max-width: 480px; }
.le-cat-wrap .le-contacts th:last-child[b-7cxrak7dj5],
.le-cat-wrap .le-contacts td:last-child[b-7cxrak7dj5] { width: 70px; text-align: left; }
.le-act-cell[b-7cxrak7dj5] { text-align: center; }
/* .le-del sizing/color/hover are shared in wwwroot/CSS/masters-forms.css (.mu-del, .le-del) */

/* Contact edit modal */
.le-modal-overlay[b-7cxrak7dj5] {
    position: fixed; inset: 0; z-index: 1200;
    background: rgba(15, 23, 42, 0.5); backdrop-filter: blur(2px);
}
.le-modal[b-7cxrak7dj5] {
    position: fixed; z-index: 1201; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: min(460px, 92vw);
    background: #fff; border-radius: 12px; overflow: hidden;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.35);
    display: flex; flex-direction: column;
}
.le-modal-hdr[b-7cxrak7dj5] {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 18px; background: #eef1f6; border-bottom: 1px solid #e5e9f0;
    font-size: 14px; font-weight: 600; color: #1a2537;
}
.le-modal-x[b-7cxrak7dj5] {
    background: none; border: none; color: #64748b;
    font-size: 22px; line-height: 1; cursor: pointer;
}
.le-modal-x:hover[b-7cxrak7dj5] { color: #334155; }
.le-modal-body[b-7cxrak7dj5] { padding: 18px; display: flex; flex-direction: column; gap: 12px; }
.le-modal-foot[b-7cxrak7dj5] {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 18px; border-top: 1px solid #e5e9f0; background: #f7f9fc;
}
/* Confirm dialog — fully shared in wwwroot/CSS/masters-forms.css
   (.mu-confirm-*, .le-cfm-* are styled together there) */

/* Default flag: green check (yes) / maroon cross (no) —
   sizing + green shared in wwwroot/CSS/masters-forms.css (.le-chk-ok, .le-chk-no) */
.le-chk-no[b-7cxrak7dj5] { color: #7f1d1d; }

/* Field validation */
.le-invalid[b-7cxrak7dj5] { border-color: #e11d48 !important; background: #fff5f6; }
.le-field-err[b-7cxrak7dj5] { color: #b42318; font-size: 12px; margin: -6px 0 2px; }

/* Toast (top-right) */
.le-toast[b-7cxrak7dj5] {
    position: fixed; right: 28px; top: 28px; z-index: 1100;
    display: flex; align-items: center; gap: 12px;
    min-width: 300px; max-width: 420px;
    padding: 16px 16px 16px 18px; border-radius: 14px;
    background: #fff; color: #0f3d36;
    border: 1px solid #cdeee4; border-left: 5px solid #1ab99a;
    box-shadow: 0 16px 40px rgba(15, 118, 110, 0.22);
    font-size: 14px; font-weight: 500; line-height: 1.3;
    animation: le-toast-in-b-7cxrak7dj5 0.28s cubic-bezier(0.2, 0.8, 0.3, 1);
}
.le-toast-err[b-7cxrak7dj5] { border-left-color: #e11d48; color: #7f1d1d; }
.le-toast span[b-7cxrak7dj5] { flex: 1; }
.le-toast-x[b-7cxrak7dj5] {
    background: none; border: none; color: #94a3b8;
    font-size: 22px; line-height: 1; cursor: pointer; padding: 0 2px; margin-left: 4px;
}
.le-toast-x:hover[b-7cxrak7dj5] { color: #475569; }
@keyframes le-toast-in-b-7cxrak7dj5 {
    from { opacity: 0; transform: translateY(-16px) scale(0.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}
.le-foot[b-7cxrak7dj5] {
    display: flex; gap: 10px; padding: 14px 18px; flex-shrink: 0;
    border-top: 1px solid #e5e9f0; background: #f7f9fc;
}
.le-btn[b-7cxrak7dj5] {
    display: flex; align-items: center; gap: 7px;
    padding: 7px 13px; border-radius: 6px; border: 1px solid #cbd5e1;
    background: #fff; color: #334155; font-size: 13px; font-weight: 700; font-family: inherit; cursor: pointer;
    letter-spacing: 0.04em; white-space: nowrap; user-select: none; flex-shrink: 0;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}
.le-btn:hover[b-7cxrak7dj5] { background: #eef4fb; }
.le-btn.save[b-7cxrak7dj5] { background: #15803d; border-color: #15803d; color: #fff; }
.le-btn.save:hover[b-7cxrak7dj5] { background: #116630; }
.le-btn.del[b-7cxrak7dj5] { color: #b91c1c; border-color: #f1c4c4; }
.le-btn.del:hover[b-7cxrak7dj5] { background: #fee2e2; }
.le-row2 .le-btn[b-7cxrak7dj5] { padding: 6px 12px; }
/* /Components/Pages/Masters/MLogin.razor.rz.scp.css */
/* =====================================================================
   GAINS — MLogin.razor.css   (Masters → Login user grid, page-scoped)
   Shared "mu-" grid/page styles now live in wwwroot/CSS/masters-forms.css.
   Only Login-page-specific rules remain here.
   ===================================================================== */

/* "Login" link-style button inside the grid rows */
.mu-login[b-nha6g8xbow] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-nha6g8xbow] {
        text-decoration: underline;
    }

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB.
   .mu-page becomes a full-height flex column; .mu-card (the bordered
   table box) grows to fill the remaining space instead of being sized
   only to its own content, and .mu-foot (pagination) sits as a direct
   sibling below it so it always lands at the true bottom of the page
   rather than trailing right under a short table.
   ===================================================================== */
.mu-page[b-nha6g8xbow] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-nha6g8xbow] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-nha6g8xbow] {
    flex-shrink: 0;
}

.mu-table-wrap[b-nha6g8xbow] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-nha6g8xbow] {
    flex-shrink: 0;
}

/* mu-pager sits inside .bspl-footer-right now — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography. */
.bspl-footer-right[b-nha6g8xbow] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-nha6g8xbow] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New user" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-nha6g8xbow] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-nha6g8xbow] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-nha6g8xbow] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-nha6g8xbow] {
        font-size: 15px;
    }

    .mu-foot-info[b-nha6g8xbow] {
        display: none;
    }
}
/* /Components/Pages/Masters/MLoginEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MLoginEdit.razor.css   (add/edit Login modal)
   Shared "uf-" modal styles now live in wwwroot/CSS/masters-forms.css.
   Only Login-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-grid[b-94tnkwqe1u] { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 32px; }
.uf-col[b-94tnkwqe1u] { display: flex; flex-direction: column; }

/* This form's fields/sections use slightly different spacing */
.uf-field[b-94tnkwqe1u] { margin-bottom: 11px; }
.uf-section[b-94tnkwqe1u] { margin: 18px 0 0; }

.uf-input-sm[b-94tnkwqe1u] { width: auto; min-width: 92px; }

/* Password field eye-toggle (.uf-pwd, .uf-eye) is now shared in
   wwwroot/CSS/masters-forms.css — reusable on any future Masters edit form. */

/* Mobile (cc + number) */
.uf-mobile[b-94tnkwqe1u] { display: flex; gap: 6px; }
.uf-cc[b-94tnkwqe1u] {
    flex: 0 0 66px; padding: 8px 6px; border: 1px solid #dde3ec; border-radius: 8px;
    font-size: 13px; color: #1e293b; font-family: inherit; background: #fff; cursor: pointer;
}
.uf-cc:focus[b-94tnkwqe1u] { outline: none; border-color: #1ab99a; box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.16); }

/* Checkbox rows */
.uf-checks[b-94tnkwqe1u] { display: flex; flex-wrap: wrap; gap: 9px 18px; margin: 6px 0 12px; }
.uf-checks-col[b-94tnkwqe1u] { flex-direction: column; gap: 9px; }
.uf-check[b-94tnkwqe1u] { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: #334155; cursor: pointer; }
/* .uf-check input sizing is shared in wwwroot/CSS/masters-forms.css */

.uf-access-row[b-94tnkwqe1u] { margin: 2px 0 12px; }
/* .uf-btn-ghost is shared in wwwroot/CSS/masters-forms.css */

.uf-userlog[b-94tnkwqe1u] {
    display: flex; align-items: center; gap: 11px;
    background: #f7f8fc; border: 1px solid #eceef6; border-radius: 10px; padding: 11px 13px;
}
.uf-userlog-icon[b-94tnkwqe1u] { font-size: 18px; }
.uf-userlog-btn[b-94tnkwqe1u] {
    background: #e2f7f1; color: #0f766e; border: 1px solid #b6e8db; border-radius: 7px;
    padding: 5px 13px; font-size: 12px; font-weight: 500; font-family: inherit; cursor: pointer; transition: background 0.12s;
}
.uf-userlog-btn:hover[b-94tnkwqe1u] { background: #d2f1e8; }
.uf-userlog-note[b-94tnkwqe1u] { font-size: 11.5px; color: #94a3b8; font-style: italic; }

.uf-days[b-94tnkwqe1u] { display: flex; flex-wrap: wrap; gap: 9px 16px; }

/* Google Authenticator row + reset button */
.uf-ga-row[b-94tnkwqe1u] { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.uf-reset-auth[b-94tnkwqe1u] {
    padding: 5px 12px; border-radius: 7px; cursor: pointer;
    border: 1px solid #cdeee4; background: #effbf7; color: #0f766e;
    font-size: 12px; font-weight: 500; font-family: inherit; transition: background 0.12s;
}
.uf-reset-auth:hover[b-94tnkwqe1u] { background: #d6f2ea; }
.uf-reset-done[b-94tnkwqe1u] { font-size: 12px; color: #0f766e; font-weight: 500; }

.uf-inline-fields[b-94tnkwqe1u] { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 14px; }
.uf-inline-fields .uf-field[b-94tnkwqe1u] { grid-template-columns: auto auto; align-items: center; margin-bottom: 0; }
.uf-inline-fields .uf-field > label[b-94tnkwqe1u] { padding-top: 0; }
.uf-time[b-94tnkwqe1u] { display: flex; align-items: center; gap: 6px; }
.uf-time-suffix[b-94tnkwqe1u] { font-size: 12px; color: #94a3b8; }
.uf-depo[b-94tnkwqe1u] { align-items: center; }
.uf-depo .uf-field[b-94tnkwqe1u] { grid-template-columns: 56px 1fr; }

.uf-xlogin[b-94tnkwqe1u] { display: flex; flex-wrap: wrap; gap: 10px; }

/* Footer */
.uf-footer-right[b-94tnkwqe1u] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* .uf-btn-new / .uf-btn-del are shared in wwwroot/CSS/masters-forms.css */
.uf-help[b-94tnkwqe1u] { margin-left: 6px; font-size: 11.5px; color: #94a3b8; }

@media (max-width: 700px) {
    .uf-grid[b-94tnkwqe1u] { grid-template-columns: 1fr; gap: 0; }
}
/* /Components/Pages/Masters/MMachine.razor.rz.scp.css */
/* =====================================================================
   GAINS — MMachine.razor.css   (Masters → Machine grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css
   (same file MItemGroup.razor.css / MCustType.razor.css use) — only
   page-specific rules here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on ItemGroup / CustType /
   BSPL / Daybook / TB / MLogin / MGroup.
   ===================================================================== */
.mu-page[b-alhxkervuh] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-alhxkervuh] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-alhxkervuh] {
    flex-shrink: 0;
}

.mu-table-wrap[b-alhxkervuh] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-alhxkervuh] {
    flex-shrink: 0;
}

.bspl-footer-right[b-alhxkervuh] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-alhxkervuh] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Row layout: Sr# / Active / Name / Code / Type / Date / Desc / delete action ── */
.mu-th-idx[b-alhxkervuh],
.mu-idx[b-alhxkervuh] {
    width: 50px;
    text-align: left;
    color: #64748b;
}

.mu-th-active[b-alhxkervuh],
.mu-active-cell[b-alhxkervuh] {
    width: 60px;
    text-align: center;
}

.mu-date-cell[b-alhxkervuh] {
    white-space: nowrap;
    color: #475569;
    font-size: 12.5px;
}

.mu-desc-cell[b-alhxkervuh] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #64748b;
}

.mu-th-act[b-alhxkervuh],
.mu-act-cell[b-alhxkervuh] {
    width: 44px;
    text-align: right;
}

.mu-del[b-alhxkervuh] {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #f1c4c4;
    border-radius: 6px;
    background: #fff;
    color: #b91c1c;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .mu-del:hover[b-alhxkervuh] {
        background: #fee2e2;
        border-color: #e58585;
    }

/* ── Mobile: "New machine" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-alhxkervuh] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-alhxkervuh] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-alhxkervuh] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-alhxkervuh] {
        font-size: 15px;
    }

    .mu-foot-info[b-alhxkervuh] {
        display: none;
    }

    .mu-desc-cell[b-alhxkervuh] {
        max-width: 120px;
    }
}
/* /Components/Pages/Masters/MMachineEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MMachineEdit.razor.css   (edit Machine modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Machine-edit-specific rules — the field spacing convention already
   used by MItemGroupEdit/MCustTypeEdit, plus the Active on/off switch,
   which no other Masters edit form has needed yet.
   ===================================================================== */

.uf-modal-sm[b-576xrhr1y2] { max-width: 460px; }

/* Field spacing / section spacing specific to this (short) form */
.uf-field[b-576xrhr1y2] { margin-bottom: 13px; }
.uf-field:last-child[b-576xrhr1y2] { margin-bottom: 0; }
.uf-section[b-576xrhr1y2] { margin: 0 0 0; }

/* ── Active on/off switch ── */
.uf-toggle-row[b-576xrhr1y2] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-top: 4px;
}

.uf-switch[b-576xrhr1y2] {
    position: relative;
    display: inline-block;
    width: 38px;
    height: 22px;
    flex-shrink: 0;
}

    .uf-switch input[b-576xrhr1y2] {
        opacity: 0;
        width: 0;
        height: 0;
    }

.uf-switch-slider[b-576xrhr1y2] {
    position: absolute;
    cursor: pointer;
    inset: 0;
    background: #cbd5e1;
    border-radius: 999px;
    transition: background 0.15s;
}

    .uf-switch-slider[b-576xrhr1y2]::before {
        content: "";
        position: absolute;
        width: 16px;
        height: 16px;
        left: 3px;
        top: 3px;
        background: #fff;
        border-radius: 50%;
        transition: transform 0.15s;
        box-shadow: 0 1px 2px rgba(0,0,0,0.2);
    }

.uf-switch input:checked + .uf-switch-slider[b-576xrhr1y2] {
    background: #15803d;
}

    .uf-switch input:checked + .uf-switch-slider[b-576xrhr1y2]::before {
        transform: translateX(16px);
    }

.uf-switch-label[b-576xrhr1y2] {
    font-size: 13px;
    font-weight: 600;
    color: #334155;
}

@media (max-width: 540px) {
    .uf-field[b-576xrhr1y2] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-576xrhr1y2] { padding-top: 0; }
}
/* /Components/Pages/Masters/MModeOfTravel.razor.rz.scp.css */
/* =====================================================================
   GAINS — MModeOfTravel.razor.css   (Masters → Mode of Travel grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Mode-of-Travel-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-9dseczsg3p] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-9dseczsg3p] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-9dseczsg3p] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-9dseczsg3p] {
    flex-shrink: 0;
}

.mot-name[b-9dseczsg3p] {
    font-weight: 500;
}

.mot-total-badge[b-9dseczsg3p] {
    margin-left: 8px;
    display: inline-block;
    padding: 1px 8px;
    border-radius: 999px;
    background: #eef1f6;
    color: #475569;
    font-size: 11.5px;
    font-weight: 600;
}

/* ── Mobile: "New Mode" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-9dseczsg3p] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-9dseczsg3p] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-9dseczsg3p] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-9dseczsg3p] {
        font-size: 15px;
    }

    .mu-foot-info[b-9dseczsg3p] {
        display: none;
    }
}
/* /Components/Pages/Masters/MModeOfTravelEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MModeOfTravelEdit.razor.css   (add/edit Mode of Travel modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Mode-of-Travel-edit-specific overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-78jdn1psen] { max-width: 420px; }

/* Field spacing specific to this (single-field) form */
.uf-field[b-78jdn1psen] { margin-bottom: 13px; }
.uf-field:last-child[b-78jdn1psen] { margin-bottom: 0; }
.uf-section[b-78jdn1psen] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-78jdn1psen] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-78jdn1psen] { padding-top: 0; }
}
/* /Components/Pages/Masters/MNarration.razor.rz.scp.css */
/* =====================================================================
   GAINS — MNarration.razor.css   (Masters → Narration grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Narration-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-ajghd7nc0u] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ajghd7nc0u] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-ajghd7nc0u] {
    flex-shrink: 0;
}

.mu-table-wrap[b-ajghd7nc0u] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-ajghd7nc0u] {
    flex-shrink: 0;
}

.bspl-footer-right[b-ajghd7nc0u] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-ajghd7nc0u] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── NarCode column: keep it tight; narration takes the rest ── */
.mu-nar-code[b-ajghd7nc0u] {
    width: 120px;
    white-space: nowrap;
}

/* ── Narration column: long free text — clamp to one line with an ellipsis
   (full text still available via the row's title tooltip) so a huge entry
   doesn't force endless horizontal scroll. ── */
.mu-nar-text[b-ajghd7nc0u] {
    max-width: 520px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Narration textarea in the add/edit modal ── */
.uf-nar-textarea[b-ajghd7nc0u] {
    box-sizing: border-box;
    min-height: 120px;
    resize: vertical;
    line-height: 1.4;
}

/* ── Mobile: "New narration" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-ajghd7nc0u] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-ajghd7nc0u] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-ajghd7nc0u] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-ajghd7nc0u] {
                font-size: 15px;
            }

    .mu-foot-info[b-ajghd7nc0u] {
        display: none;
    }

    .mu-nar-text[b-ajghd7nc0u] {
        max-width: 200px;
    }
}
/* /Components/Pages/Masters/MProcess.razor.rz.scp.css */
/* =====================================================================
   GAINS — MProcess.razor.css   (Masters → Process grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Process-page-specific rules remain here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on ItemGroup / BSPL /
   Daybook / TB / MLogin / MGroup. .mu-page becomes a full-height flex
   column; .mu-card (the bordered table box) grows to fill the remaining
   space instead of being sized only to its own content, and the footer
   sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-4yqx7qt8ft] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-4yqx7qt8ft] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-4yqx7qt8ft] {
    flex-shrink: 0;
}

.mu-table-wrap[b-4yqx7qt8ft] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-4yqx7qt8ft] {
    flex-shrink: 0;
}

.bspl-footer-right[b-4yqx7qt8ft] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-4yqx7qt8ft] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Priority column reads more naturally right-aligned, like a number. */
.mu-table td:nth-last-child(2)[b-4yqx7qt8ft] {
    text-align: right;
}

/* ── Mobile: "New process" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-4yqx7qt8ft] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-4yqx7qt8ft] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-4yqx7qt8ft] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-4yqx7qt8ft] {
        font-size: 15px;
    }

    .mu-foot-info[b-4yqx7qt8ft] {
        display: none;
    }
}
/* /Components/Pages/Masters/MProcessEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MProcessEdit.razor.css   (edit Process modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Process-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-50delwa6ng] { max-width: 420px; }

/* Field spacing / section spacing specific to this (short) form */
.uf-field[b-50delwa6ng] { margin-bottom: 13px; }
.uf-field:last-child[b-50delwa6ng] { margin-bottom: 0; }
.uf-section[b-50delwa6ng] { margin: 0 0 0; }

/* Priority is a short numeric field — no need for it to stretch full width. */
.uf-field input[type="number"][b-50delwa6ng] {
    max-width: 120px;
}

@media (max-width: 540px) {
    .uf-field[b-50delwa6ng] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-50delwa6ng] { padding-top: 0; }
}
/* /Components/Pages/Masters/MProcessGroup.razor.rz.scp.css */
/* =====================================================================
   GAINS — MProcessGroup.razor.css   (Masters → Process Group grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Process-Group-page-specific rules remain here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on Item Group / BSPL /
   Daybook / TB / MLogin / MGroup. .mu-page becomes a full-height flex
   column; .mu-card (the bordered table box) grows to fill the remaining
   space instead of being sized only to its own content, and the footer
   sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-ck5tf51ked] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ck5tf51ked] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-ck5tf51ked] {
    flex-shrink: 0;
}

.mu-table-wrap[b-ck5tf51ked] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-ck5tf51ked] {
    flex-shrink: 0;
}

.bspl-footer-right[b-ck5tf51ked] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-ck5tf51ked] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New process group" / "Export" buttons — icon only, stay top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-ck5tf51ked] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-ck5tf51ked] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-ck5tf51ked] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-ck5tf51ked] {
        font-size: 15px;
    }

    .mu-foot-info[b-ck5tf51ked] {
        display: none;
    }
}
/* /Components/Pages/Masters/MProcessGroupEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MProcessGroupEdit.razor.css   (add/edit Process Group modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Process-Group-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-fgc0phyair] { max-width: 420px; }

/* Field spacing / section spacing specific to this (short, two-field) form */
.uf-field[b-fgc0phyair] { margin-bottom: 13px; }
.uf-field:last-child[b-fgc0phyair] { margin-bottom: 0; }
.uf-section[b-fgc0phyair] { margin: 0 0 0; }

@media (max-width: 540px) {
    .uf-field[b-fgc0phyair] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-fgc0phyair] { padding-top: 0; }
}
/* /Components/Pages/Masters/MRole.razor.rz.scp.css */
/* MRole.razor.css — scoped styles for the Role Master list page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). */
.mu-page[b-3h4jqrnnti] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-3h4jqrnnti] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-3h4jqrnnti] {
    flex-shrink: 0;
}

.mu-table-wrap[b-3h4jqrnnti] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-3h4jqrnnti] {
    flex-shrink: 0;
}

/* Role name column — prominent */
.rm-role-name[b-3h4jqrnnti] {
    font-weight: 500;
    color: #111827;
}

/* Role ID column — muted, narrow */
.rm-role-id[b-3h4jqrnnti] {
    color: #6b7280;
    font-variant-numeric: tabular-nums;
    font-size: 12px;
}

.rm-th-id[b-3h4jqrnnti] {
    width: 90px;
}

/* Total count badge in subtitle */
.rm-total-badge[b-3h4jqrnnti] {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 8px;
    border-radius: 10px;
    background: #e0f2fe;
    color: #075985;
    font-size: 11px;
    font-weight: 600;
    vertical-align: middle;
}
/* /Components/Pages/Masters/MRoleEdit.razor.rz.scp.css */
/* MRoleEdit.razor.css — scoped styles for the Role edit modal */
/* Role is a single-field form — no extra layout needed */
/* /Components/Pages/Masters/MRoleTask.razor.rz.scp.css */
/* =====================================================================
   GAINS — MRoleTask.razor.css   (Masters → Role Task grid, page-scoped)
   Shared "mu-"/"uf-"/"le-" styles live in wwwroot/CSS/masters-forms.css.
   Only Role-Task-specific rules remain here.
   ===================================================================== */

.mu-page[b-s2wpgs0exw] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-s2wpgs0exw] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-s2wpgs0exw] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}
.mu-table_[b-s2wpgs0exw] {
    border-collapse: collapse;
    font-size: 13px;
}
.mu-foot[b-s2wpgs0exw] {
    flex-shrink: 0;
}

/* ── Toolbar: Role/Module selects on the left, search on the right ── */
.rt-toolbar[b-s2wpgs0exw] {
    flex-wrap: wrap;
    gap: 14px;
}

.rt-filters[b-s2wpgs0exw] {
    display: flex;
    align-items: flex-end;
    gap: 14px;
    flex-wrap: wrap;
}

.rt-fld[b-s2wpgs0exw] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

    .rt-fld > label[b-s2wpgs0exw] {
        font-size: 11.5px;
        font-weight: 600;
        color: #64748b;
        letter-spacing: 0.03em;
        text-transform: uppercase;
    }

.rt-select[b-s2wpgs0exw] {
    min-width: 190px;
    padding: 8px 11px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    font-size: 13px;
    color: #1a2537;
    font-family: inherit;
    background: #fff;
    outline: none;
    cursor: pointer;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .rt-select:hover[b-s2wpgs0exw] {
        border-color: #c3ccdb;
    }

    .rt-select:focus[b-s2wpgs0exw] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

/* ── Allow column ── */
.rt-th-allow[b-s2wpgs0exw] {
    width: 90px;
    text-align: center;
}

.rt-allow-cell[b-s2wpgs0exw] {
    text-align: center;
}

.rt-chk[b-s2wpgs0exw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .rt-chk input[b-s2wpgs0exw] {
        width: 17px;
        height: 17px;
    }

        .rt-chk input:disabled[b-s2wpgs0exw] {
            opacity: 0.5;
            cursor: not-allowed;
        }

@media (max-width: 720px) {
    .rt-filters[b-s2wpgs0exw] {
        width: 100%;
    }

    .rt-fld[b-s2wpgs0exw] {
        flex: 1 1 140px;
    }

    .rt-select[b-s2wpgs0exw] {
        min-width: 0;
        width: 100%;
    }

    .mu-search[b-s2wpgs0exw] {
        width: 100%;
        flex: 1 1 100%;
    }
}
/* /Components/Pages/Masters/Msettings.razor.rz.scp.css */
/* =====================================================================
   GAINS — MSettings.razor.css  (Masters → Settings, page-scoped)
   Shared "mu-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   ===================================================================== */

.st-page[b-u04olbf61x] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
    font-size: 12px;
}

/* ── Tab bar ── */
.st-tabs[b-u04olbf61x] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    flex-shrink: 0;
    padding-left: 5px;
}

.st-tab[b-u04olbf61x] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    color: #1a2537;
    font-size: 12px;
    font-weight: 400;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
    white-space: nowrap;
}

    .st-tab i[b-u04olbf61x] {
        font-size: 12px;
        opacity: 0.8;
    }

    .st-tab:hover[b-u04olbf61x] {
        background: #f1f5f9;
    }

    .st-tab.active[b-u04olbf61x] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

        .st-tab.active i[b-u04olbf61x] {
            opacity: 1;
        }

/* ── Card + scroll body ── */
.st-card[b-u04olbf61x] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.st-body[b-u04olbf61x] {
    flex: 1;
    overflow: auto;
    padding: 18px 20px;
    min-height: 0;
}

/* ── Field list ──
   Single continuous vertical layout (no left/right panel split): every
   field stacks top-to-bottom in document order. max-width keeps the
   label/control pairing readable on wide screens instead of stretching
   the control far away from its label. */
.st-grid[b-u04olbf61x] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    max-width: 640px;
}

.st-field[b-u04olbf61x] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 10px 0;
    border-bottom: 1px solid #f1f5f9;
    min-height: 40px;
}

/* Rows whose control is a multi-line textarea (e.g. free-text settings) —
   label sits above the box instead of beside it, like the old MAUI/legacy
   "(AR/AP)" and "Commercial Invoice" rows. */
.st-field-area[b-u04olbf61x] {
    align-items: flex-start;
    flex-direction: column;
    gap: 6px;
}

    .st-field-area .st-control[b-u04olbf61x] {
        width: 100%;
    }

.st-label[b-u04olbf61x] {
    font-size: 12px;
    color: #334155;
    font-weight: 500;
    line-height: 1.3;
    flex: 1;
    min-width: 0;
}

.st-note[b-u04olbf61x] {
    color: #1a56a7;
    cursor: help;
    margin-left: 4px;
    font-size: 12px;
}

.st-control[b-u04olbf61x] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
}

/* Inputs / selects reuse the teal-focus look from the shared uf-input. */
.st-input[b-u04olbf61x] {
    padding: 7px 10px;
    border: 1px solid #dde3ec;
    border-radius: 8px;
    font-size: 12px;
    color: #1e293b;
    background: #fff;
    font-family: inherit;
    outline: none;
    transition: border-color 0.12s, box-shadow 0.12s;
    min-width: 200px;
}

    .st-input:focus[b-u04olbf61x] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.16);
    }

.st-num[b-u04olbf61x] {
    min-width: 110px;
    width: 110px;
    text-align: right;
}

/* Free-text rows (settingId 263 "(AR/AP)", 273 "Commercial Invoice") — a
   resizable multi-line box, full width of the row. */
.st-textarea[b-u04olbf61x] {
    width: 100%;
    min-width: 0;
    min-height: 72px;
    resize: vertical;
    text-align: left;
    font-family: inherit;
    line-height: 1.4;
}

/* ── Checkbox (replaces the old toggle switch) ──
   Custom-drawn instead of relying on accent-color: some browsers/OSes
   render the native checkmark in black regardless of accent-color, so
   the check is drawn as a white border-corner instead — always white. */
.st-checkbox[b-u04olbf61x] {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid #dde3ec;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    position: relative;
    flex-shrink: 0;
    transition: background 0.12s, border-color 0.12s;
}

    .st-checkbox:checked[b-u04olbf61x] {
        background: #1ab99a;
        border-color: #1ab99a;
    }

        .st-checkbox:checked[b-u04olbf61x]::after {
            content: "";
            position: absolute;
            left: 5px;
            top: 1px;
            width: 5px;
            height: 9px;
            border: solid #000;
            border-width: 0 2px 2px 0;
            transform: rotate(45deg);
        }

/* ── Set Ledger row: LedgerAutofill sits in st-control, given room to grow
   (its own dropdown is position:fixed via app.js, so it isn't clipped here). ── */
.st-ledrow[b-u04olbf61x] {
    align-items: flex-start;
}

.st-led-control[b-u04olbf61x] {
    flex: 1;
    max-width: 320px;
}

    /* LedgerAutofill wraps its <input> in its own ".lga-wrap" div — that
   wrapper carries its own border, so the visible "box" is actually two
   overlapping borders (the wrapper's + the input's), which is what reads
   as darker/thicker. Fix: give the wrapper the light square border and
   background, and strip the inner input's own border entirely so there's
   only ever one border drawn. */
    .st-led-control .lga-wrap[b-u04olbf61x] {
        border: 1px solid #dde3ec !important;
        border-radius: 0 !important;
        background: #fff !important;
        box-shadow: none !important;
    }

        .st-led-control .lga-wrap input[b-u04olbf61x] {
            border: none !important;
            border-radius: 0 !important;
            background: transparent !important;
            box-shadow: none !important;
        }

/* ── Warning banner (unconfirmed mapping) ── */
.st-flag[b-u04olbf61x] {
    margin-bottom: 14px;
    padding: 9px 13px;
    background: #fff8e6;
    border: 1px solid #f5d98a;
    border-radius: 8px;
    color: #92610a;
    font-size: 12px;
    line-height: 1.4;
}

/* ── Email tab: single column ── */
.st-email .st-field[b-u04olbf61x] {
    max-width: 520px;
}

/* ── Footer save bar ──
   Save button moved to the left side of the footer bar. Scoped to
   .st-foot (this page only) so the shared .mu-btn.primary color used by
   other pages isn't touched — just this button, recolored green. */
.st-foot[b-u04olbf61x] {
    flex-shrink: 0;
}

    .st-foot .bspl-footer-left[b-u04olbf61x] {
        display: flex;
        align-items: center;
        gap: 12px;
    }

    .st-foot .st-save-btn.mu-btn.primary[b-u04olbf61x] {
        background: #15803d;
        border-color: #15803d;
    }

        .st-foot .st-save-btn.mu-btn.primary:hover[b-u04olbf61x] {
            background: #159c82;
            border-color: #159c82;
        }

/* ── Mobile ── */
@media (max-width: 767px) {
    .st-page[b-u04olbf61x] {
        padding: 0 14px 14px;
    }

    .st-input[b-u04olbf61x] {
        min-width: 150px;
    }

    .st-tab span[b-u04olbf61x] {
        display: none;
    }

    .st-tab[b-u04olbf61x] {
        padding: 8px 11px;
    }
}
/* /Components/Pages/Masters/MState.razor.rz.scp.css */
/* =====================================================================
   GAINS — MState.razor.css   (Masters → State grid, page-scoped)
   Shared "mu-" grid/page styles + the filter drawer live in
   wwwroot/CSS/masters-forms.css. Only State-page-specific rules
   remain here.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / TB / MLogin /
   MGroup / MItemGroup. .mu-page becomes a full-height flex column;
   .mu-card grows to fill the remaining space instead of being sized
   only to its own content, and the footer sits below it as a direct
   sibling so it always lands at the true bottom of the page. */
.mu-page[b-zz6ab7qe63] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-zz6ab7qe63] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-zz6ab7qe63] {
    flex-shrink: 0;
}

.mu-table-wrap[b-zz6ab7qe63] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-zz6ab7qe63] {
    flex-shrink: 0;
}

.bspl-footer-right[b-zz6ab7qe63] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-zz6ab7qe63] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: keep the Filters button top-right, icon-first ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-zz6ab7qe63] {
        margin-left: auto;
    }

    .mu-foot-info[b-zz6ab7qe63] {
        display: none;
    }
}
/* /Components/Pages/Masters/MTask.razor.rz.scp.css */
/* MTask.razor.css — scoped styles for the Task Master page.
   Two mu-table-wrap panels sit side by side (Task list + Module counts)
   below a module-filter toolbar, all inside a single ".mu-card row"
   container (the "row" class comes from Bootstrap on the markup).

   Flex-fill layout — same rule as the other Masters pages: .mu-page fills
   DashboardLayout's .gains-content (which already flex/overflow-scrolls),
   and only the two table bodies scroll internally. Use height:100% here,
   never 100vh (see SchemeGrid.razor.css for the prior regression that
   mistake caused).

   Bootstrap's .row relies on flex-wrap, and flex-wrap's multi-line stretch
   can't target "only the panel line" while leaving the toolbar line at its
   natural height — so .mu-card is switched to CSS Grid instead: an "auto"
   row for the toolbar and a "1fr" row for the two panels. The two
   .mu-table-wrap panels auto-place into that second row (Loader's overlay
   is position:absolute, so it never participates in the grid). */
.mu-page[b-5hspfebopp] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-5hspfebopp] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: auto 1fr;
    flex: 1;
    min-height: 0;
}

.mu-toolbar[b-5hspfebopp] {
    grid-column: 1 / -1;
    flex-shrink: 0;
}

/* Each panel flex/grid-fills its cell and scrolls internally — was a fixed
   540px (shared masters-forms.css default) and a Bootstrap col-xl-4
   max-width that would otherwise cap the panel at 33% of a 50/50 grid
   track. */
.mu-table-wrap[b-5hspfebopp] {
    height: auto;
    max-width: none;
    width: auto;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-5hspfebopp] {
    flex-shrink: 0;
}
/* /Components/Pages/Masters/MTaskRole.razor.rz.scp.css */
/* =====================================================================
   GAINS — MTaskRole.razor.css   (Masters → XTask Role, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only the two-panel (Task list / Role "Allow" checklist) layout that's
   specific to this page lives here — same convention already used by
   MItemGroup.razor.css and MItemEdit.razor.css.
   ===================================================================== */

.mu-page[b-6nidxwhebt] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-6nidxwhebt] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-6nidxwhebt] {
    flex-shrink: 0;
}

.mu-table-wrap[b-6nidxwhebt] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-6nidxwhebt] {
    flex-shrink: 0;
}


.tr-card[b-6nidxwhebt] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.tr-panels[b-6nidxwhebt] {
    display: flex;
    align-items: stretch;
    min-height: 0;
}

.tr-panel[b-6nidxwhebt] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
}



.tr-panel-tasks[b-6nidxwhebt] {
    flex: 1 1 55%;
    border-right: 1px solid #eef2f7;
}

.tr-panel-roles[b-6nidxwhebt] {
    flex: 1 1 45%;
}

.tr-panel-hdr[b-6nidxwhebt] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    padding: 12px 16px;
    border-bottom: 1px solid #eef2f7;
}

.tr-panel-tasks .tr-panel-hdr .mu-search[b-6nidxwhebt] {
    flex: 1 1 200px;
}

.tr-panel-title[b-6nidxwhebt] {
    display: flex;
    flex-direction: column;
    line-height: 1.3;
    min-width: 0;
}

    .tr-panel-title > span:first-child[b-6nidxwhebt] {
        font-size: 13.5px;
        font-weight: 700;
        color: #1a2537;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.tr-panel-sub[b-6nidxwhebt] {
    font-size: 11.5px;
    color: #64748b;
}

.tr-role-search[b-6nidxwhebt] {
    flex: 0 1 200px;
}

/* Fixed-height scroll area for each panel's table — keeps both panels the
   same height regardless of row counts, same pattern as .mu-table-wrap. */
.tr-panel-body[b-6nidxwhebt] {
    position: relative;
    flex: 1;
    overflow: auto;
    min-height: 0;
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

@media (max-width: 860px) {
    .tr-panels[b-6nidxwhebt] {
        flex-direction: column;
    }

    .tr-panel-tasks[b-6nidxwhebt] {
        border-right: none;
        border-bottom: 1px solid #eef2f7;
    }

    .tr-panel-body[b-6nidxwhebt] {
        height: 320px;
    }
}

    .tr-panel-body[b-6nidxwhebt]::-webkit-scrollbar {
        width: 10px;
        height: 10px;
    }

    .tr-panel-body[b-6nidxwhebt]::-webkit-scrollbar-track {
        background: transparent;
    }

    .tr-panel-body[b-6nidxwhebt]::-webkit-scrollbar-thumb {
        background: #b6e8db;
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .tr-panel-body[b-6nidxwhebt]::-webkit-scrollbar-thumb:hover {
            background: #1ab99a;
            background-clip: content-box;
        }

/* Selected task row — a persistent highlight distinct from the plain
   :hover state .mu-row-click already gives every row. */
.tr-row-selected td[b-6nidxwhebt] {
    background: #eafaf4 !important;
    box-shadow: inset 3px 0 0 #1ab99a;
}

/* ── "Allow" column (role checklist) ── */
.tr-th-allow[b-6nidxwhebt] {
    width: 80px;
    text-align: center !important;
}

.tr-allow-hdr[b-6nidxwhebt] {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    color: #fff;
}

.tr-allow-cell[b-6nidxwhebt] {
    text-align: center;
}

    .tr-allow-cell .uf-check[b-6nidxwhebt] {
        display: inline-flex;
        justify-content: center;
    }

    .tr-allow-hdr input:disabled[b-6nidxwhebt],
    .tr-allow-cell input:disabled[b-6nidxwhebt] {
        opacity: 0.4;
        cursor: not-allowed;
    }

    /* Custom "Allow" checkbox — solid blue square with a white tick when
   checked, matching the reference XTask Role Master screenshot. Applies
   to both the per-row checkboxes and the header "select all" checkbox. */
    .tr-allow-hdr input[type="checkbox"][b-6nidxwhebt],
    .tr-allow-cell input[type="checkbox"][b-6nidxwhebt] {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        width: 18px;
        height: 18px;
        margin: 0;
        flex-shrink: 0;
        border: 1.5px solid #cbd2db;
        border-radius: 4px;
        background: #fff;
        cursor: pointer;
        position: relative;
        transition: background-color .15s ease, border-color .15s ease;
    }

/* The header checkbox sits on a dark/teal bar, so its unchecked state
   needs a lighter border to stay visible. */
.tr-allow-hdr input[type="checkbox"][b-6nidxwhebt] {
    border-color: rgba(255, 255, 255, 0.7);
    background: rgba(255, 255, 255, 0.12);
}

    .tr-allow-hdr input[type="checkbox"]:hover[b-6nidxwhebt],
    .tr-allow-cell input[type="checkbox"]:hover[b-6nidxwhebt] {
        border-color: #2f6fed;
    }

    .tr-allow-hdr input[type="checkbox"]:checked[b-6nidxwhebt],
    .tr-allow-cell input[type="checkbox"]:checked[b-6nidxwhebt] {
        background: #2f6fed;
        border-color: #2f6fed;
    }

        .tr-allow-hdr input[type="checkbox"]:checked[b-6nidxwhebt]::after,
        .tr-allow-cell input[type="checkbox"]:checked[b-6nidxwhebt]::after {
            content: "";
            position: absolute;
            left: 5px;
            top: 1px;
            width: 5px;
            height: 9px;
            border: solid #fff;
            border-width: 0 2px 2px 0;
            transform: rotate(45deg);
        }

    .tr-allow-hdr input[type="checkbox"]:disabled[b-6nidxwhebt],
    .tr-allow-cell input[type="checkbox"]:disabled[b-6nidxwhebt] {
        cursor: not-allowed;
    }

    .tr-allow-hdr input[type="checkbox"]:focus-visible[b-6nidxwhebt],
    .tr-allow-cell input[type="checkbox"]:focus-visible[b-6nidxwhebt] {
        outline: 2px solid #2f6fed;
        outline-offset: 2px;
    }

/* ── Footer ── */
.tr-foot[b-6nidxwhebt] {
    justify-content: space-between;
}

@media (max-width: 860px) {
    .tr-panels[b-6nidxwhebt] {
        flex-direction: column;
    }

    .tr-panel-tasks[b-6nidxwhebt] {
        border-right: none;
        border-bottom: 1px solid #eef2f7;
    }

    .tr-panel-body[b-6nidxwhebt] {
        height: 320px;
    }
}

@media (max-width: 540px) {
    .tr-panel-hdr[b-6nidxwhebt] {
        flex-direction: column;
        align-items: stretch;
    }

    .tr-panel-tasks .tr-panel-hdr .mu-search[b-6nidxwhebt],
    .tr-role-search[b-6nidxwhebt] {
        flex: 1 1 auto;
    }
}
/* /Components/Pages/Masters/MTaxClass.razor.rz.scp.css */
/* MTaxClass.razor.css — scoped styles for the Tax Class list page */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). */
.mu-page[b-sw1iltx63w] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-sw1iltx63w] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-sw1iltx63w] {
    flex-shrink: 0;
}

.mu-table-wrap[b-sw1iltx63w] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-sw1iltx63w] {
    flex-shrink: 0;
}

/* Percentage column — right-align and fixed width */
.tc-perc[b-sw1iltx63w] {
    text-align: left;
    padding-right: 12px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    width:120px;
}

/* IN / OUT badges */
.tc-badge[b-sw1iltx63w] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}

.tc-badge-in[b-sw1iltx63w] {
    background: #d1fae5;
    color: #065f46;
}

.tc-badge-out[b-sw1iltx63w] {
    background: #fee2e2;
    color: #991b1b;
}

.tc-badge-both[b-sw1iltx63w] {
    background: #e0e7ff;
    color: #3730a3;
}
/* /Components/Pages/Masters/MTaxClassEdit.razor.rz.scp.css */
/* MTaxClassEdit.razor.css — scoped styles for the Tax Class edit modal */

/* Percentage input — narrower than full-width */
.tc-perc-input[b-z131x4le0j] {
    max-width: 160px;
}
/* /Components/Pages/Masters/MTDS.razor.rz.scp.css */
/* =====================================================================
   GAINS — MTDS.razor.css   (Masters → TDS grid, page-scoped)
   Shared "mu-"/"uf-" grid + modal styles live in wwwroot/CSS/masters-forms.css.
   Only TDS-page-specific rules remain here: the is-TCS / is-Turnover-YTD
   flag columns.
   ===================================================================== */

.mu-page[b-zgnhpqkwbj] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-zgnhpqkwbj] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-zgnhpqkwbj] {
    flex-shrink: 0;
}

.mu-table-wrap[b-zgnhpqkwbj] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-zgnhpqkwbj] {
    flex-shrink: 0;
}

.bspl-footer-right[b-zgnhpqkwbj] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-zgnhpqkwbj] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── "is TCS" / "is Turnover YTD" read-only flag columns ── */
.tds-flag-col[b-zgnhpqkwbj] {
    text-align: center;
    width: 90px;
}

    .tds-flag-col i[b-zgnhpqkwbj] {
        font-size: 13px;
    }

.tds-flag-yes[b-zgnhpqkwbj] {
    color: #0f766e;
}

.tds-flag-no[b-zgnhpqkwbj] {
    color: #cbd5e1;
}

/* ── Mobile: "New TDS" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-zgnhpqkwbj] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-zgnhpqkwbj] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-zgnhpqkwbj] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-zgnhpqkwbj] {
        font-size: 15px;
    }

    .mu-foot-info[b-zgnhpqkwbj] {
        display: none;
    }
}
/* /Components/Pages/Masters/MTDSType.razor.rz.scp.css */
/* =====================================================================
   GAINS — MTDSType.razor.css   (Masters → TDS Type grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   The old BSTDSType.aspx rendered this as a narrow single-column grid
   (col-xl-2, ~1 field) — .tdst-card caps the width to echo that instead
   of stretching a 2-column table across the full page.
   ===================================================================== */

.mu-page[b-rsmzqc9zkp] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-toolbar[b-rsmzqc9zkp] {
    flex-shrink: 0;
}

.mu-table-wrap[b-rsmzqc9zkp] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

/* ── Narrow card, matching the old page's col-xl-2 grid ── */
.tdst-card[b-rsmzqc9zkp] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    max-width: 420px;
}

/* ── Read-only note in the toolbar (no search box needed — old page had none) ── */
.tdst-toolbar[b-rsmzqc9zkp] {
    display: flex;
    justify-content: flex-end;
}

.tdst-readonly-note[b-rsmzqc9zkp] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 700;
    color: #e11d48;
}

    .tdst-readonly-note i[b-rsmzqc9zkp] {
        font-size: 12px;
    }

/* ── Mobile: Export button — icon only, stays top-right; card goes full width ── */
@media (max-width: 767px) {
    .tdst-card[b-rsmzqc9zkp] {
        max-width: none;
    }

    .bspl-title-actions[b-rsmzqc9zkp] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-rsmzqc9zkp] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-rsmzqc9zkp] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-rsmzqc9zkp] {
        font-size: 15px;
    }
}
/* /Components/Pages/Masters/MTransporter.razor.rz.scp.css */
/* =====================================================================
   GAINS — MTransporter.razor.css   (Masters → Transporter grid, page-scoped)
   Shared "mu-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only Transporter-page-specific rules remain here.
   ===================================================================== */

/* ── Page-end footer pinning — same pattern used on Item Group / BSPL /
   Daybook / TB / MLogin / MGroup. .mu-page becomes a full-height flex
   column; .mu-card grows to fill the remaining space instead of being
   sized only to its own content, and the footer sits as a direct sibling
   below it so it always lands at the true bottom of the page. ── */
.mu-page[b-etsvbszpnz] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-etsvbszpnz] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-etsvbszpnz] {
    flex-shrink: 0;
}

.mu-table-wrap[b-etsvbszpnz] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-etsvbszpnz] {
    flex-shrink: 0;
}

.bspl-footer-right[b-etsvbszpnz] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-etsvbszpnz] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New transporter" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-etsvbszpnz] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-etsvbszpnz] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-etsvbszpnz] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-etsvbszpnz] {
        font-size: 15px;
    }

    .mu-foot-info[b-etsvbszpnz] {
        display: none;
    }
}
/* /Components/Pages/Masters/MTransporterEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MTransporterEdit.razor.css   (edit Transporter modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only Transporter-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-cpxsih6m9b] { max-width: 460px; }

/* Field spacing / section spacing specific to this (shorter) form */
.uf-field[b-cpxsih6m9b] { margin-bottom: 13px; }
.uf-field:last-child[b-cpxsih6m9b] { margin-bottom: 0; }
.uf-section[b-cpxsih6m9b] { margin: 0 0 0; }

/* Read-only State row — same look MItemGroupEdit uses for its read-only Depth row */
.uf-depth[b-cpxsih6m9b] { display: flex; align-items: center; gap: 12px; padding-top: 7px; }
.uf-depth-val[b-cpxsih6m9b] { font-size: 14px; font-weight: 600; color: #1e293b; }

/* "Update all child site(s)" checkbox row */
.uf-check[b-cpxsih6m9b] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 6px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
    user-select: none;
}

/* Address textarea shares .uf-input's look but needs its own resize/height rules */
textarea.uf-input[b-cpxsih6m9b] {
    resize: vertical;
    min-height: 60px;
    font-family: inherit;
    line-height: 1.4;
}

@media (max-width: 540px) {
    .uf-field[b-cpxsih6m9b] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field > label[b-cpxsih6m9b] { padding-top: 0; }
}
/* /Components/Pages/Masters/MUOM.razor.rz.scp.css */
/* =====================================================================
   GAINS — MUOM.razor.css   (Masters → UOM grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   ===================================================================== */

.mu-page[b-fyzcpu3dc0] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-fyzcpu3dc0] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-fyzcpu3dc0] {
    flex-shrink: 0;
}

.mu-table-wrap[b-fyzcpu3dc0] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-fyzcpu3dc0] {
    flex-shrink: 0;
}

.bspl-footer-right[b-fyzcpu3dc0] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-fyzcpu3dc0] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New unit" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-fyzcpu3dc0] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-fyzcpu3dc0] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-fyzcpu3dc0] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-fyzcpu3dc0] {
                font-size: 15px;
            }

    .mu-foot-info[b-fyzcpu3dc0] {
        display: none;
    }
}
/* /Components/Pages/Masters/MUQC.razor.rz.scp.css */
/* =====================================================================
   GAINS — MUQC.razor.css   (Masters → UQC grid, page-scoped, read-only)
   Shared "mu-" styles live in wwwroot/CSS/masters-forms.css.
   ===================================================================== */

.mu-page[b-3vzbl8z7zp] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-3vzbl8z7zp] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-3vzbl8z7zp] {
    flex-shrink: 0;
}

.mu-table-wrap[b-3vzbl8z7zp] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-3vzbl8z7zp] {
    flex-shrink: 0;
}

.bspl-footer-right[b-3vzbl8z7zp] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-3vzbl8z7zp] {
    display: flex;
    align-items: center;
    gap: 12px;
}
/* /Components/Pages/Masters/Mvouchertnc.razor.rz.scp.css */
/* =====================================================================
   GAINS — MVoucherTnc.razor.css  (Masters → Voucher Terms & Conditions,
   page-scoped). Shared "mu-"/"uf-" styles live in
   wwwroot/CSS/masters-forms.css. Only page-specific rules remain here.
   ===================================================================== */

.mu-page[b-7e53b6ti8a] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-7e53b6ti8a] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-7e53b6ti8a] {
    flex-shrink: 0;
}

.mu-table-wrap[b-7e53b6ti8a] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-7e53b6ti8a] {
    flex-shrink: 0;
}

.bspl-footer-right[b-7e53b6ti8a] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-7e53b6ti8a] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Edit/Add modal: a touch wider to give the content editor room ── */
.vtc-modal[b-7e53b6ti8a] {
    max-width: 860px;
}

/* Shared .uf-field has no bottom margin (set per form) — space them here. */
.vtc-field[b-7e53b6ti8a] {
    margin-bottom: 14px;
}

    .vtc-field:last-child[b-7e53b6ti8a] {
        margin-bottom: 0;
    }

/* Native <select> styled to match .uf-input (keep the OS caret). */
.vtc-select[b-7e53b6ti8a] {
    height: 37px;
    cursor: pointer;
    background: #fff;
}

/* ── Date field: text display (DD-MMM-YYYY) + icon button that opens the
   hidden native picker beneath them ── */
.vtc-date-wrap[b-7e53b6ti8a] {
    position: relative;
    display: flex;
    align-items: center;
}

.vtc-date-display[b-7e53b6ti8a] {
    padding-right: 40px;
    cursor: pointer;
    background: #fff;
    width: 100%;
}

.vtc-date-btn[b-7e53b6ti8a] {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: #64748b;
    cursor: pointer;
    border-radius: 6px;
}

    .vtc-date-btn:hover[b-7e53b6ti8a] {
        background: #f1f5f9;
        color: #0f766e;
    }

/* Present in the DOM only so .showPicker()/.click() has a real native
   control to open — not shown or directly interacted with itself. */
.vtc-date-native[b-7e53b6ti8a] {
    position: absolute;
    inset: 0;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
    border: none;
}

/* ── Content field (Summernote WYSIWYG) ── */
.vtc-field-terms > label[b-7e53b6ti8a] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.vtc-editor-host[b-7e53b6ti8a] {
    background: #fff;
}

    /* Summernote ships its own styling — just keep it in line with the
       shared input look while it loads (empty div before init). */
    .vtc-editor-host:empty[b-7e53b6ti8a] {
        min-height: 220px;
        border: 1px solid #dde3ec;
        border-radius: 8px;
    }

.vtc-field-terms .note-editor.note-frame[b-7e53b6ti8a] {
    border-color: #dde3ec;
    border-radius: 8px;
    font-family: inherit;
}

/* ── Mobile: "New" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-7e53b6ti8a] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-7e53b6ti8a] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-7e53b6ti8a] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-7e53b6ti8a] {
                font-size: 15px;
            }

    .mu-foot-info[b-7e53b6ti8a] {
        display: none;
    }

    /* Stack the label above the control so the wide fields fit. */
    .vtc-field[b-7e53b6ti8a] {
        grid-template-columns: 1fr;
        gap: 6px;
    }

        .vtc-field > label[b-7e53b6ti8a] {
            padding-top: 0;
        }
}
/* /Components/Pages/Masters/MVoucherType.razor.rz.scp.css */
/* =====================================================================
   GAINS — MVoucherType.razor.css   (Masters → Voucher Type, page-scoped)
   Shared "mu-"/"uf-" grid + modal styles live in wwwroot/CSS/masters-forms.css.
   Only Voucher-Type-page-specific rules remain here: the tab bar, the
   read-only banner on the Voucher Type tab, and the color swatch.
   ===================================================================== */

.mu-page[b-iw3mwts9uz] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-iw3mwts9uz] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-iw3mwts9uz] {
    flex-shrink: 0;
}

.mu-table-wrap[b-iw3mwts9uz] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-iw3mwts9uz] {
    flex-shrink: 0;
}

.bspl-footer-right[b-iw3mwts9uz] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-iw3mwts9uz] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Tab bar — Voucher Type / Sub Type / Order Sub Type ── */
.vt-tabs[b-iw3mwts9uz] {
    display: flex;
    gap: 4px;
    padding: 0 20px;
    margin-bottom: 12px;
    border-bottom: 1px solid #e7ebf2;
    flex-shrink: 0;
}

.vt-tab[b-iw3mwts9uz] {
    appearance: none;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    cursor: pointer;
    font-family: inherit;
    transition: color 0.12s, border-color 0.12s;
}

    .vt-tab:hover[b-iw3mwts9uz] {
        color: #0f766e;
    }

    .vt-tab.active[b-iw3mwts9uz] {
        color: #0f766e;
        border-bottom-color: #1ab99a;
    }

/* ── Voucher Type tab — Tag filter + read-only banner sit in the toolbar row ── */
.vt-toolbar-readonly[b-iw3mwts9uz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.vt-tag-filter select[b-iw3mwts9uz] {
    min-width: 160px;
}

.vt-readonly-note[b-iw3mwts9uz] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 700;
    color: #e11d48;
}

    .vt-readonly-note i[b-iw3mwts9uz] {
        font-size: 12px;
    }

/* ── Color swatch (WColor) in the Voucher Type grid ── */
.vt-swatch[b-iw3mwts9uz] {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 4px;
    border: 1px solid rgba(0, 0, 0, 0.15);
    vertical-align: middle;
    margin-right: 8px;
}

.vt-swatch-hex[b-iw3mwts9uz] {
    font-size: 12px;
    color: #475569;
    vertical-align: middle;
}

/* ── Mobile: New-record button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-iw3mwts9uz] {
        margin-left: auto;
    }

    .bspl-title-actions .mu-btn-label[b-iw3mwts9uz] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-iw3mwts9uz] {
        padding: 8px 10px;
        gap: 0;
    }

    .bspl-title-actions .mu-btn i[b-iw3mwts9uz] {
        font-size: 15px;
    }

    .mu-foot-info[b-iw3mwts9uz] {
        display: none;
    }

    .vt-tabs[b-iw3mwts9uz] {
        padding: 0 10px;
        overflow-x: auto;
    }

    .vt-tab[b-iw3mwts9uz] {
        padding: 10px 10px;
        white-space: nowrap;
    }
}
/* /Components/Pages/Masters/MXSRRate.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXSRRate.razor.css   (Masters → XSR Rate grid, page-scoped)
   Shared "mu-" grid/page styles + filter bar/toggle live in
   wwwroot/CSS/masters-forms.css. Only XSRRate-page-specific rules remain here.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning — same pattern used on BSPL / Daybook / TB /
   MLogin / MGroup / MItemGroup. .mu-page becomes a full-height flex
   column; .mu-card (the bordered table box) grows to fill the remaining
   space instead of being sized only to its own content, and the footer
   sits as a direct sibling below it so it always lands at the true
   bottom of the page.
   ===================================================================== */
.mu-page[b-crbvgu9yf0] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-crbvgu9yf0] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-crbvgu9yf0] {
    flex-shrink: 0;
}

.mu-table-wrap[b-crbvgu9yf0] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-crbvgu9yf0] {
    flex-shrink: 0;
}

.mu-pager[b-crbvgu9yf0] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New rate" button — icon only, stays top-right next to Filters ── */
@media (max-width: 767px) {
    .bspl-title-actions .mu-btn-label[b-crbvgu9yf0] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-crbvgu9yf0] {
        padding: 8px 10px;
        gap: 0;
    }

        .bspl-title-actions .mu-btn i[b-crbvgu9yf0] {
            font-size: 15px;
        }

    .mu-foot-info[b-crbvgu9yf0] {
        display: none;
    }
}
/* /Components/Pages/Masters/MXSRRateEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXSRRateEdit.razor.css   (add/edit XSR Rate modal)
   Shared "uf-" modal styles live in wwwroot/CSS/masters-forms.css.
   Only XSRRate-edit-specific rules and small overrides remain here.
   ===================================================================== */

.uf-modal-sm[b-rx8keas2v1] {
    max-width: 460px;
}

/* Field spacing / section spacing specific to this (short) form */
.uf-field[b-rx8keas2v1] {
    margin-bottom: 13px;
}

    .uf-field:last-child[b-rx8keas2v1] {
        margin-bottom: 0;
    }

.uf-section[b-rx8keas2v1] {
    margin: 0 0 0;
}

/* "Existing SR found" autofill hint — shown under SR Name/Code once a
   match against the grid's existing rows is detected. */
.uf-hint[b-rx8keas2v1] {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    font-size: 12px;
    color: #0f766e;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    border-radius: 6px;
    padding: 7px 10px;
    line-height: 1.4;
}

    .uf-hint i[b-rx8keas2v1] {
        margin-top: 1px;
        flex-shrink: 0;
    }

@media (max-width: 540px) {
    .uf-field[b-rx8keas2v1] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

        .uf-field > label[b-rx8keas2v1] {
            padding-top: 0;
        }
}
/* /Components/Pages/Masters/NavigationSetting.razor.rz.scp.css */
/* =====================================================================
   NavSetting.razor.css
   Scoped to the Navigation Setting page. Reuses the shared chrome
   (bspl-title-block / bspl-footer / mu-table / mu-drawer / itb-toptabs)
   from masters-forms.css + common-page-chrome.css and adds only the
   toggle-badge and tree styling specific to this form.
   Mirrors TDS.razor.css layout so the two pages read identically.
   ===================================================================== */

.itb-page[b-tvug04tfev] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.itb-toptabs[b-tvug04tfev] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

    .itb-toptabs button[b-tvug04tfev] {
        padding: 7px 16px;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .2px;
        text-transform: uppercase;
        background: #fff;
        color: #555;
        border: 1px solid #d5d5d5;
        border-radius: 6px;
        cursor: pointer;
        font-family: inherit;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition: background .12s, color .12s, border-color .12s;
    }

        .itb-toptabs button:hover[b-tvug04tfev] {
            background: #f5f5f5;
        }

        .itb-toptabs button.active[b-tvug04tfev] {
            background: #1ab99a;
            color: #fff;
            border-color: #1ab99a;
            font-weight: 700;
        }

/* Card is capped to roughly half the available width now that the Visible
   column and the filter drawer are gone — there's no longer enough content
   to justify full width. max-width (not a fixed px) keeps it responsive:
   it scales with the page on desktop, and the media query below drops the
   cap on tablet/mobile so the card still uses the full available width
   there. border/box-shadow removed to drop the gray "boxed" card look;
   background stays explicitly white. */
.itb-page .mu-card[b-tvug04tfev] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0 16px;
    width: 100%;
    max-width: 50%;
    border: none;
    box-shadow: none;
    background: #ffffff;
}

@media (max-width: 992px) {
    .itb-page .mu-card[b-tvug04tfev] {
        max-width: 100%;
    }
}

.itb-page .mu-table-wrap[b-tvug04tfev] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    border: none;
    box-shadow: none;
}

/* Navigation Tree tab hidden per request — the button (and the tree view's
   underlying code/markup/data loading) stays intact, just not clickable or
   visible, and display:none removes it from the flex row's layout flow so
   it leaves no gap next to General/Master. */
.nav-tree-tab[b-tvug04tfev] {
    display: none;
}

.itb-grid-table[b-tvug04tfev] {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}

    .itb-grid-table thead th[b-tvug04tfev] {
        text-align: left;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.3;
        padding: 8px 10px;
    }

    /* Single vertical rule per column boundary. Cells previously had both
       border-left AND border-right, so every boundary between two columns
       drew two lines stacked back-to-back — that's the unwanted extra
       vertical line. Keeping only border-right removes the duplicate while
       every column still gets a clean divider. */
    .itb-grid-table tbody td[b-tvug04tfev] {
        border-right: 1px solid #eef0f2;
        border-bottom: 1px solid #eef0f2;
        border-top: 0;
        padding: 8px 10px;
    }

    /* Menu Name column: percentage width (not a fixed px) so it shrinks
       from its previous "fill all remaining space" behavior without
       breaking responsiveness — it scales with the table at every screen
       size, and .mu-table-wrap's overflow-x still handles any overflow
       on narrow screens. Slightly tighter right padding pulls the
       following "Visible" column a bit closer, per the ask. */
    .itb-grid-table .nav-menuname-col[b-tvug04tfev] {
        padding-right: 6px;
    }

    .itb-grid-table th.num[b-tvug04tfev],
    .itb-grid-table td.num[b-tvug04tfev] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .itb-grid-table .mu-th-idx[b-tvug04tfev],
    .itb-grid-table .mu-idx[b-tvug04tfev] {
        text-align: right;
    }

    /* Checkbox column */
    .itb-grid-table .mu-th-chk[b-tvug04tfev],
    .itb-grid-table .mu-td-chk[b-tvug04tfev] {
        text-align: center;
    }

    /* Selected-row highlight — plain white now, no green tint (borders,
       rows, columns, data and behavior all unchanged; background only). */
    .itb-grid-table tr.row-selected td[b-tvug04tfev] {
        background: #ffffff;
    }

/* ── Checkbox (same custom style as MSettings.razor.css .st-checkbox,
   black check mark) ── */
.nav-checkbox[b-tvug04tfev] {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid #dde3ec;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    position: relative;
    flex-shrink: 0;
    transition: background 0.12s, border-color 0.12s;
}

    .nav-checkbox:checked[b-tvug04tfev] {
        background: #1ab99a;
        border-color: #1ab99a;
    }

        .nav-checkbox:checked[b-tvug04tfev]::after {
            content: "";
            position: absolute;
            left: 5px;
            top: 1px;
            width: 5px;
            height: 9px;
            border: solid #000;
            border-width: 0 2px 2px 0;
            transform: rotate(45deg);
        }

/* ── Toolbar strip above the grid ── */
.itb-toolbar[b-tvug04tfev] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 8px;
}

.nav-dirty[b-tvug04tfev] {
    color: #c0392b;
    font-weight: 600;
}

/* ── Error / success banners ── */
.itb-error[b-tvug04tfev] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

.itb-ok[b-tvug04tfev] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #eefaf4;
    border-left: 4px solid #1ab99a;
    color: #0f8a72;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Visible / Hidden badge ── */
.nav-badge[b-tvug04tfev] {
    display: inline-block;
    min-width: 54px;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .2px;
    text-transform: uppercase;
}

    .nav-badge.on[b-tvug04tfev] {
        background: #e3f7ef;
        color: #0f8a72;
    }

    .nav-badge.off[b-tvug04tfev] {
        background: #f1f2f4;
        color: #94a3b8;
    }

/* ── Navigation tree rows ── */
.itb-grid-table tr.nav-main-row td[b-tvug04tfev] {
    background: #f7f9fa;
    font-weight: 700;
}

.itb-grid-table td.nav-sub-cell[b-tvug04tfev] {
    padding-left: 28px;
    color: #475569;
    position: relative;
}

    .itb-grid-table td.nav-sub-cell[b-tvug04tfev]::before {
        content: "└";
        position: absolute;
        left: 12px;
        color: #cbd5e1;
    }

/* ── Footer save bar ──
   Save button moved to the left side, next to the record count. */
.nav-foot .bspl-footer-left[b-tvug04tfev] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.nav-save-btn[b-tvug04tfev] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: #15803d;
    border-color: #15803d;
}

    .nav-save-btn:hover:not(:disabled)[b-tvug04tfev] {
        background: #126c33;
        border-color: #126c33;
    }
/* /Components/Pages/Masters/PPMargin.razor.rz.scp.css */
/* =====================================================================
   GAINS — MPPMargin.razor.css   (Masters → Price Point Margin, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only Price-Point-Margin-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-irlpkl7rie] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-irlpkl7rie] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-irlpkl7rie] {
    flex-shrink: 0;
}

.mu-table-wrap[b-irlpkl7rie] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-irlpkl7rie] {
    flex-shrink: 0;
}

.bspl-footer-right[b-irlpkl7rie] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-irlpkl7rie] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Filter bar (item group + date) ── */
.ppm-toolbar[b-irlpkl7rie] {
    display: flex;
    align-items: flex-end;
    gap: 18px;
    flex-wrap: wrap;
}

.ppm-field[b-irlpkl7rie] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

    .ppm-field label[b-irlpkl7rie] {
        font-size: 12px;
        font-weight: 600;
        color: #475569;
    }

.ppm-select[b-irlpkl7rie] {
    min-width: 200px;
}

.ppm-date[b-irlpkl7rie] {
    height: 36px;
    padding: 6px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    font-size: 13px;
    color: #0f172a;
    background: #fff;
}

    .ppm-date:focus[b-irlpkl7rie] {
        outline: none;
        border-color: #0f9d8a;
        box-shadow: 0 0 0 3px rgba(15, 157, 138, 0.12);
    }

/* ── Pivot grid ── */
.ppm-table thead th[b-irlpkl7rie] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.ppm-th-pp[b-irlpkl7rie] {
    text-align: center;
    white-space: nowrap;
    min-width: 120px;
    padding: 0 10px;
}

.ppm-name[b-irlpkl7rie] {
    font-weight: 600;
    color: #0f172a;
    white-space: nowrap;
}

.ppm-rate-cell[b-irlpkl7rie],
.ppm-pp-cell[b-irlpkl7rie] {
    text-align: center;
    vertical-align: top;
    padding: 6px 8px;
}

.ppm-input[b-irlpkl7rie] {
    width: 78px;
    text-align: right;
    padding: 5px 7px;
    font-size: 13px;
}

/* derived price shown under each margin input */
.ppm-derived[b-irlpkl7rie] {
    margin-top: 3px;
    height: 14px;
    font-size: 11px;
    font-weight: 600;
    text-align: right;
    color: #0f9d8a;
    width: 78px;
}

/* ── Mobile: Save button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-irlpkl7rie] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-irlpkl7rie] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-irlpkl7rie] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-irlpkl7rie] {
                font-size: 15px;
            }

    .mu-foot-info[b-irlpkl7rie] {
        display: none;
    }

    .ppm-toolbar[b-irlpkl7rie] {
        gap: 12px;
    }

    .ppm-select[b-irlpkl7rie] {
        min-width: 150px;
    }
}
/* /Components/Pages/Masters/PricePoint.razor.rz.scp.css */
/* =====================================================================
   GAINS — MPricePoint.razor.css   (Masters → Price Point grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Price-Point-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-jrfqyp2fzb] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-jrfqyp2fzb] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-jrfqyp2fzb] {
    flex-shrink: 0;
}

.mu-table-wrap[b-jrfqyp2fzb] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-jrfqyp2fzb] {
    flex-shrink: 0;
}

.bspl-footer-right[b-jrfqyp2fzb] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-jrfqyp2fzb] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Mobile: "New price point" button — icon only, stays top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-jrfqyp2fzb] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-jrfqyp2fzb] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-jrfqyp2fzb] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-jrfqyp2fzb] {
                font-size: 15px;
            }

    .mu-foot-info[b-jrfqyp2fzb] {
        display: none;
    }
}
/* /Components/Pages/Masters/RouteMaster.razor.rz.scp.css */
/* =====================================================================
   GAINS — RouteMaster.razor.css   (Masters → Route grid, page-scoped)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only Route-page-specific rules remain here.
   ===================================================================== */

.mu-login[b-vez7y59n81] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-vez7y59n81] {
        text-decoration: underline;
    }

.mu-page[b-vez7y59n81] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-vez7y59n81] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-vez7y59n81] {
    flex-shrink: 0;
}

.mu-table-wrap[b-vez7y59n81] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-vez7y59n81] {
    flex-shrink: 0;
}

.bspl-footer-right[b-vez7y59n81] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-vez7y59n81] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-vez7y59n81] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.uf-field + .uf-field[b-vez7y59n81] {
    margin-top: 16px;
}

/* Map/AddLed row buttons — neutral variant of mu-del (icon-only, no red hover) */
.mu-icon-btn[b-vez7y59n81] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: none;
    color: #4b5563;
    cursor: pointer;
    border-radius: 6px;
    text-decoration: none;
}

    .mu-icon-btn:hover[b-vez7y59n81] {
        background: #eef2f7;
        color: #1a56a7;
    }

/* Assign Ledgers modal — wider than the standard uf-modal, filter row + grid */
.uf-modal-lg[b-vez7y59n81] {
    width: min(920px, 92vw);
}

.ral-filters[b-vez7y59n81] {
    display: flex;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

    .ral-filters .uf-input[b-vez7y59n81] {
        flex: 1 1 160px;
    }

.ral-table-wrap[b-vez7y59n81] {
    max-height: 420px;
    overflow: auto;
}

@media (max-width: 767px) {
    .bspl-title-actions[b-vez7y59n81] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-vez7y59n81] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-vez7y59n81] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-vez7y59n81] {
                font-size: 15px;
            }

    .mu-foot-info[b-vez7y59n81] {
        display: none;
    }
}
/* /Components/Pages/Masters/SalesRep.razor.rz.scp.css */
/* Small accents on top of the shared mu-* grid/toolbar styling (masters-forms.css). */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the grid (rendered by the child
   SalesRepGrid component) scrolls. Use height:100% here, never 100vh
   (see SchemeGrid.razor.css for the prior regression that caused). The
   child's own root (.mu-table-wrap) gets its matching flex:1/overflow:auto
   rule in SalesRepGrid.razor.css. */
.mu-page[b-k8lp5k90ot] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-k8lp5k90ot] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-k8lp5k90ot] {
    flex-shrink: 0;
}

.mu-foot[b-k8lp5k90ot] {
    flex-shrink: 0;
}

.sr-xls[b-k8lp5k90ot] {
    width: 34px;
    height: 34px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #ffffff;
    color: #1ab99a;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.sr-xls:hover[b-k8lp5k90ot] {
    background: #eefaf7;
    border-color: #1ab99a;
}

.sr-del-btn[b-k8lp5k90ot] {
    background: #dc2626;
    border-color: #dc2626;
    color: #ffffff;
}

.sr-del-btn:hover[b-k8lp5k90ot] {
    background: #b91c1c;
}

.sr-filter-chip[b-k8lp5k90ot] {
    background: #fff7ed;
    border-color: #fdba74;
    color: #b45309;
}

.sr-info-strip[b-k8lp5k90ot] {
    font-size: .82rem;
    color: #64748b;
}

.sr-foot-left[b-k8lp5k90ot] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

/* Filters button — classic Gains green, overriding ".mu-btn.primary"'s
   default blue (a shared class used by other pages, so it's not edited;
   this extra class scopes the override to this button only). Selector
   uses two classes to match ".mu-btn.primary"'s specificity so the
   override actually takes effect. */
.mu-btn.sr-filters-btn[b-k8lp5k90ot] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.sr-filters-btn:hover[b-k8lp5k90ot] {
        background: #23923e;
        border-color: #23923e;
    }
/* /Components/Pages/Masters/SalesRepEdit.razor.rz.scp.css */
/* SALES PERSON entry — classic mint-green ERP theme, matching the old
   SalesRep screen. Field grid uses CSS Grid (.srx-fgrid/.srx-fcell):
   4 columns desktop, 2 tablet, 1 mobile. Bindings/ids/events in the
   .razor markup are untouched — this file only reskins colors, sizing
   and layout.

   Palette:
     Main background    #F5F7F8
     Popup background   #FFFFFF
     Accordion header   #EAF8F4 (flat)
     Accordion border   #BFE7DA
     Accordion hover    #E2F5EE
     Primary accent     #27AE60
     Header/title text  #0F6B58 (dark green)
     Normal text        #2C3E50
     Secondary text     #6B7280
     Input border       #D5DDE5
     Input focus        #27AE60
     Popup border       #D9E4EC
     Overlay            rgba(20,30,40,.45)
     Save               #28A745
     Delete             #DC3545
     Info/Grid/New      white bg, gray border, dark text                */

/* ═════════════════════════════════════════════════════════════════════
   Popup shell — centered modal, grid visible behind a dark overlay.
   Reuses the global uf-overlay/uf-modal/uf-header/uf-body/uf-footer
   classes from masters-forms.css as the structural base (position,
   dark dimmed backdrop, flex layout) — this file overrides their visual
   values via the extra srx-popup-* classes so nothing shared is edited. */

.srx-popup-overlay[b-ie4yu14ccd] {
    align-items: center;
    padding: 24px 16px;
    background: rgba(20, 30, 40, .45);
    backdrop-filter: none;
}

.srx-popup-modal[b-ie4yu14ccd] {
    width: 75%;
    max-width: 1400px;
    max-height: 90vh;
    min-height: 0;
    border-radius: 10px;
    border: 1px solid #D9E4EC;
    box-shadow: 0 10px 30px rgba(20, 30, 40, .18);
    background: #ffffff;
    animation: srxModalIn-b-ie4yu14ccd .18s ease-out;
}

@keyframes srxModalIn-b-ie4yu14ccd {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@media (max-width: 992px) {
    .srx-popup-modal[b-ie4yu14ccd] { width: 90%; }
}

@media (max-width: 576px) {
    .srx-popup-overlay[b-ie4yu14ccd] { padding: 0; align-items: stretch; }
    .srx-popup-modal[b-ie4yu14ccd]   { width: 100%; max-width: 100%; max-height: 100vh; border-radius: 0; margin: 0; }
}

/* Header — soft mint theme matching the old ERP's SalesRep screen. */
.srx-popup-header[b-ie4yu14ccd] {
    background: #EAF8F4;
    border-bottom: 1px solid #BFE7DA;
}

    .srx-popup-header[b-ie4yu14ccd]::before {
        display: none;
    }

    .srx-popup-header .uf-title > span:first-child[b-ie4yu14ccd] {
        color: #0F6B58;
        font-weight: 700;
        letter-spacing: .3px;
    }

    .srx-popup-header .uf-title-sub[b-ie4yu14ccd] {
        color: #6B7280;
        font-size: 13px;
    }

.srx-popup-close[b-ie4yu14ccd] {
    background: #ffffff;
    color: #27AE60;
    border-radius: 50%;
    transition: background .2s, color .2s;
}

    .srx-popup-close:hover[b-ie4yu14ccd] {
        background: #27AE60;
        color: #ffffff;
    }

/* Form fills the space between header and footer; only its body scrolls. */
.srx-popup-form[b-ie4yu14ccd] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.srx-popup-body[b-ie4yu14ccd] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 24px;
    background: #F5F7F8;
}

.srx-popup-footer[b-ie4yu14ccd] {
    flex-shrink: 0;
}

/* FooterToolbar renders its own scoped ".ft-bar" wrapper (see that
   component's .razor.css) — reach into it with ::deep so the sticky
   footer picks up the new palette without editing the shared component. */
.srx-popup-footer[b-ie4yu14ccd]  .ft-bar {
    position: static;
    justify-content: flex-start;
    gap: 12px;
    padding: 12px 24px;
    background: #ffffff;
    border-top: 1px solid #D9E4EC;
    box-shadow: none;
}

/* CollapsibleCard is shared with other master edit forms (e.g. SiteMaster)
   — restyle it with ::deep scoped under this page's own body wrapper only,
   so its look matches the new palette everywhere else is unaffected. The
   component's expand/collapse behavior is untouched. */
.srx-popup-body[b-ie4yu14ccd]  .cc-card {
    border: 1px solid #BFE7DA;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(15, 107, 88, .04);
    margin-bottom: 20px;
    overflow: hidden;
}

    .srx-popup-body[b-ie4yu14ccd]  .cc-card:last-child {
        margin-bottom: 0;
    }

/* Every accordion strip identical: same mint bg, same 42px height, same
   16px left padding, same border, same title size/weight, same arrow. */
.srx-popup-body[b-ie4yu14ccd]  .cc-header {
    height: 42px;
    padding: 0 16px;
    background: #EAF8F4;
    background-image: none;
    border-bottom: 1px solid #BFE7DA;
    transition: background .2s;
}

    .srx-popup-body[b-ie4yu14ccd]  .cc-header:hover {
        background: #E2F5EE;
    }

.srx-popup-body[b-ie4yu14ccd]  .cc-title {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    color: #0F6B58;
}

.srx-popup-body[b-ie4yu14ccd]  .cc-caret {
    color: #27AE60;
    font-size: .8rem;
    transition: transform .15s ease;
}

.srx-popup-body[b-ie4yu14ccd]  .cc-body {
    padding: 20px;
    background: #ffffff;
    animation: srxAccordionIn-b-ie4yu14ccd .16s ease-out;
}

@keyframes srxAccordionIn-b-ie4yu14ccd {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* ── Field grid: 4 columns desktop / 2 tablet / 1 mobile ─────────────── */

.srx-fgrid[b-ie4yu14ccd] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    column-gap: 24px;
    row-gap: 20px;
}

.srx-fcell[b-ie4yu14ccd] {
    min-width: 0;
}

.srx-fspan-2[b-ie4yu14ccd] {
    grid-column: span 2;
}

.srx-fspan-full[b-ie4yu14ccd] {
    grid-column: 1 / -1;
}

@media (max-width: 992px) {
    .srx-fgrid[b-ie4yu14ccd] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 576px) {
    .srx-fgrid[b-ie4yu14ccd] { grid-template-columns: 1fr; }
    .srx-fspan-2[b-ie4yu14ccd] { grid-column: span 1; }
}

/* ── Fields (label left, input right) ─────────────────────────────────  */

/* Fixed-width label column (not a %) — this is what actually guarantees
   pixel alignment: a % width makes the label wider inside a wider cell
   (e.g. Full Name's 2-column-span cell), which shifts its textbox's start
   position away from every 1-column field's textbox above/below it. A
   fixed px width is identical no matter how wide the containing cell is,
   so every input in every column starts at the exact same offset. */
.srx-field-h[b-ie4yu14ccd] {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 8px;
    margin-bottom: 0;
}

.srx-field-h.smx-field-top[b-ie4yu14ccd] {
    align-items: flex-start;
}

.srx-field-h .srx-label[b-ie4yu14ccd] {
    flex: 0 0 90px;
    width: 90px;
    max-width: 90px;
    font-size: 13px;
    font-weight: 500;
    color: #6B7280;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.srx-field-h .srx-input-wrap[b-ie4yu14ccd] {
    flex: 1 1 auto;
    min-width: 0;
}

.srx-field-h .srx-input-wrap .smx-input[b-ie4yu14ccd] {
    width: 100%;
}

@media (max-width: 480px) {
    .srx-field-h[b-ie4yu14ccd] {
        flex-wrap: wrap;
    }

    .srx-field-h .srx-label[b-ie4yu14ccd] {
        flex: 0 0 100%;
        width: 100%;
        max-width: 100%;
    }

    .srx-field-h .srx-input-wrap[b-ie4yu14ccd] {
        flex: 1 1 100%;
    }
}

.smx-input[b-ie4yu14ccd],
.srx-field textarea[b-ie4yu14ccd],
.srx-field select[b-ie4yu14ccd] {
    height: 40px;
    padding: 8px 12px;
    font-size: 13px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    transition: border-color .12s, box-shadow .12s, background .12s;
}

.smx-input:hover[b-ie4yu14ccd],
.srx-field textarea:hover[b-ie4yu14ccd],
.srx-field select:hover[b-ie4yu14ccd] {
    background: #F8FCFA;
    border-color: #BFE7DA;
}

.smx-input:focus[b-ie4yu14ccd],
.srx-field textarea:focus[b-ie4yu14ccd],
.srx-field select:focus[b-ie4yu14ccd] {
    outline: none;
    border-color: #27AE60;
    box-shadow: 0 0 0 3px rgba(39, 174, 96, .16);
}

textarea.smx-input[b-ie4yu14ccd] {
    height: auto;
    min-height: 72px;
    resize: vertical;
}

/* QgDatePicker is a shared component with its own box (border/radius/
   padding) that doesn't match .smx-input by default — override it with
   ::deep, scoped to this popup only, so date fields sit at the exact same
   height/border as every other textbox in the same row. */
.srx-input-wrap[b-ie4yu14ccd]  .qgdp-wrap {
    height: 40px;
    width: 100%;
    box-sizing: border-box;
    padding: 8px 12px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
}

    .srx-input-wrap[b-ie4yu14ccd]  .qgdp-wrap:hover {
        background: #F8FCFA;
        border-color: #BFE7DA;
    }

.smx-field-top[b-ie4yu14ccd] {
    justify-content: flex-start;
}

.srx-readonly[b-ie4yu14ccd] {
    background: #F5F7F8;
    color: #6B7280;
}

.srx-err[b-ie4yu14ccd] {
    font-size: .7rem;
    color: #DC3545;
    font-weight: 500;
}

/* ── Checkboxes ────────────────────────────────────────────────────── */

.srx-check[b-ie4yu14ccd] {
    display: flex;
    align-items: center;
    gap: 8px;
    height: 40px;
}

.srx-check .form-check-input[b-ie4yu14ccd] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: #27AE60;
}

.srx-check .form-check-label[b-ie4yu14ccd] {
    font-size: 13px;
    color: #2C3E50;
}

/* ── Mobile prefix + number combo ─────────────────────────────────── */

.srx-mobile-row[b-ie4yu14ccd] {
    display: flex;
    gap: 6px;
}

.srx-prefix[b-ie4yu14ccd] {
    width: 68px;
    flex: 0 0 68px;
}

.srx-mobile-row input[b-ie4yu14ccd] {
    flex: 1;
    min-width: 0;
}

/* ── Photo section ─────────────────────────────────────────────────── */

.srx-photo-row[b-ie4yu14ccd] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 16px;
}

.smx-logo-box[b-ie4yu14ccd] {
    position: relative;
    width: 96px;
    height: 96px;
    border: 1px dashed #D5DDE5;
    border-radius: 8px;
    background: #F5F7F8;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex: 0 0 96px;
}

.smx-logo-img[b-ie4yu14ccd] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.smx-logo-placeholder[b-ie4yu14ccd] {
    font-size: .68rem;
    color: #6B7280;
    text-align: center;
    line-height: 1.25;
}

.smx-logo-remove[b-ie4yu14ccd] {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;
    border: none;
    border-radius: 50%;
    background: #DC3545;
    color: #ffffff;
    font-size: .62rem;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.srx-photo-actions[b-ie4yu14ccd] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 200px;
    font-size: 13px;
}

.srx-photo-hint[b-ie4yu14ccd] {
    font-size: .7rem;
    color: #6B7280;
}

/* ── Footer toolbar buttons (declared here — see FooterToolbar.razor.css
   note on CSS-isolation scoping) — 40px tall, equal size, 12px spacing.
   INFO/GRID/NEW stay white/gray-border/dark-text per spec; hover turns
   them light-green to match the rest of the theme. ───────────────────── */

.smx-btn[b-ie4yu14ccd] {
    height: 40px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .01em;
    padding: 0 18px;
    border: 1px solid #D5DDE5;
    border-radius: 6px;
    background: #ffffff;
    color: #2C3E50;
    cursor: pointer;
    transition: background .2s, border-color .2s, box-shadow .2s;
}

.smx-btn:hover[b-ie4yu14ccd] {
    background: #E2F5EE;
    border-color: #27AE60;
}

.smx-btn:disabled[b-ie4yu14ccd] {
    opacity: .65;
    cursor: default;
}

.smx-btn-save[b-ie4yu14ccd] {
    background: #28A745;
    border-color: #28A745;
    color: #ffffff;
}

.smx-btn-save:hover[b-ie4yu14ccd] {
    background: #23923e;
}

.srx-btn-del[b-ie4yu14ccd] {
    background: #DC3545;
    border-color: #DC3545;
    color: #ffffff;
}

.srx-btn-del:hover[b-ie4yu14ccd] {
    background: #c02233;
}

.smx-btn-grid[b-ie4yu14ccd] {
    background: #ffffff;
}

.srx-info-strip[b-ie4yu14ccd] {
    font-size: .75rem;
    color: #6B7280;
    margin-left: auto;
}

@media (max-width: 576px) {
    .srx-photo-row[b-ie4yu14ccd] {
        flex-direction: column;
    }

    .srx-popup-footer[b-ie4yu14ccd]  .ft-bar {
        justify-content: center;
    }

    .srx-info-strip[b-ie4yu14ccd] {
        margin-left: 0;
        width: 100%;
        text-align: center;
    }
}
/* /Components/Pages/Masters/SalesRepFilterPanel.razor.rz.scp.css */
/* Small accents on top of the shared mu-drawer styling (masters-forms.css). */

.sr-drawer-actions[b-rzg7wp2wnd] {
    display: flex;
    gap: 8px;
    padding: 10px 16px;
}

.sr-clear-btn[b-rzg7wp2wnd] {
    background: #ffffff;
    color: #64748b;
}

/* Party field uses the shared <LedgerAutofill> component (same one the AR/AP
   form and QLedger use). Its own lga-* CSS defaults to a plain blue-hover
   list; overridden here via ::deep (component file itself untouched) to the
   classic Gains green theme — green focus ring on the box, green "top pick"
   highlight on the first row + on hover/keyboard-active, single-line
   ellipsis instead of wrapping. (AR/AP's own picker already copies this
   exact look from this file — see ARAP.razor.css's comment.) */
[b-rzg7wp2wnd] .lga-wrap input.mu-input:focus {
    border-color: #27AE60;
    box-shadow: 0 0 0 3px rgba(39, 174, 96, .16);
}

[b-rzg7wp2wnd] .lga-suggest li {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-rzg7wp2wnd] .lga-suggest li:first-child:not(.lga-empty) {
    background: #27AE60;
    color: #fff;
}

[b-rzg7wp2wnd] .lga-suggest li:hover:not(.lga-empty),
[b-rzg7wp2wnd] .lga-suggest li.active:not(.lga-empty) {
    background: #27AE60;
    color: #fff;
}
/* /Components/Pages/Masters/SalesRepGrid.razor.rz.scp.css */
/* Small accents on top of the shared mu-table styling (masters-forms.css). */

/* Flex-fill — this component's own root element (.mu-table-wrap) grows to
   fill the remaining height of the parent's .mu-card flex column and
   scrolls internally, instead of the shared masters-forms.css fixed
   540px height. The parent (SalesRep.razor.css) supplies the
   .mu-page{height:100%} / .mu-card{flex:1;...} half of the chain. */
.mu-table-wrap[b-9nlezsp5p3] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.sr-ok[b-9nlezsp5p3] {
    color: #16a34a;
}

.sr-no[b-9nlezsp5p3] {
    color: #dc2626;
}

/* SRCode/Name render as plain link-style buttons — only these two open the
   entry popup; the rest of the row just selects (see ToggleRowSelected). */
.sr-link[b-9nlezsp5p3] {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: 600;
    color: #1a56a7;
    cursor: pointer;
    text-align: left;
}

.sr-link:hover[b-9nlezsp5p3] {
    text-decoration: underline;
}

.sr-date[b-9nlezsp5p3] {
    white-space: nowrap;
    color: #64748b;
}

.sr-active[b-9nlezsp5p3] {
    text-align: center;
}

/* Classic Gains green theme accents on top of the shared .mu-table (dark
   header, sticky freeze, alternating rows, scrollbar are all inherited
   from masters-forms.css) — only the hover/selected tint is shifted from
   the default blue to green here, scoped to this table only. */
.sr-table tbody tr:hover td[b-9nlezsp5p3] {
    background: #E2F5EE;
}

.sr-row-selected td[b-9nlezsp5p3] {
    background: #DDF3E8 !important;
}

    .sr-row-selected:hover td[b-9nlezsp5p3] {
        background: #CDECDD !important;
    }
/* /Components/Pages/Masters/SalesRepLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — SalesRepLedger.razor.css   (Masters → xSalesRepLedger, page-scoped)
   Shared "mu-"/"bspl-" grid/page styles live in wwwroot/CSS/masters-forms.css
   and common-page-chrome.css. Only this page's own layout/extras live here —
   same pattern as MCCGroupLedger.razor.css.
   ===================================================================== */

.srl-page[b-iktkndxruh] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (sales reps | ledgers) ── */
.srl-cols[b-iktkndxruh] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
    padding: 0 16px;
}

.srl-left[b-iktkndxruh],
.srl-right[b-iktkndxruh] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its footer/pager sits at the bottom. */
    .srl-left > .mu-card[b-iktkndxruh],
    .srl-right > .mu-card[b-iktkndxruh] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-iktkndxruh] {
    flex-shrink: 0;
}

/* Table scroll area fills the space between toolbar/header and footer
   (override the global fixed height) — both vertical + horizontal. */
.srl-scroll[b-iktkndxruh] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 220px;
}

.mu-foot[b-iktkndxruh] {
    flex-shrink: 0;
}

.bspl-footer-right[b-iktkndxruh] {
    font-size: inherit;
    color: inherit;
}

/* ── Left panel filter row: search + From/To date + GO/CF ── */
.srl-filter-row[b-iktkndxruh] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.srl-rep-search[b-iktkndxruh] {
    flex: 1 1 160px;
    min-width: 0;
}

.srl-search-input[b-iktkndxruh] {
    padding: 7px 10px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    min-width: 140px;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .srl-search-input:focus[b-iktkndxruh] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

    .srl-search-input:disabled[b-iktkndxruh] {
        background: #f4f6f9;
        cursor: not-allowed;
    }

.srl-date-field[b-iktkndxruh] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #475569;
    white-space: nowrap;
}

    .srl-date-field input[type="date"][b-iktkndxruh] {
        height: 32px;
        padding: 0 8px;
        border: 1px solid #dde3ed;
        border-radius: 6px;
        font-size: 12px;
        font-family: inherit;
        color: #1a2537;
        background: #fff;
        outline: none;
    }

.srl-go-btn[b-iktkndxruh],
.srl-cf-btn[b-iktkndxruh] {
    flex-shrink: 0;
    padding: 8px 16px;
}

/* ── Selected sales rep row highlight ── */
.srl-row-active[b-iktkndxruh],
.srl-row-active:hover[b-iktkndxruh] {
    background: #e6f7f2 !important;
}

    .srl-row-active td:first-child[b-iktkndxruh] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Left grid "Cnt" column/badge ── */
.srl-count-col[b-iktkndxruh] {
    width: 60px;
    text-align: center;
}

.srl-count-badge[b-iktkndxruh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #e8f8f4;
    color: #0f766e;
    font-size: 11px;
    font-weight: 700;
}

.srl-count-zero[b-iktkndxruh] {
    color: #b6bfcc;
    font-size: 12px;
}

/* ── Right panel header: "# of linked Ledgers :" + "Sales Rep :" ── */
.srl-right-header[b-iktkndxruh] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px 4px;
    flex-shrink: 0;
    flex-wrap: wrap;
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
}

    .srl-right-header strong[b-iktkndxruh] {
        color: #1a2537;
    }

.srl-rep-name[b-iktkndxruh] {
    color: #1a2537;
}

/* ── Right panel toolbar: "Show N entries" + "Search:" ── */
.srl-toolbar[b-iktkndxruh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.srl-show[b-iktkndxruh],
.srl-search[b-iktkndxruh] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: #475569;
    white-space: nowrap;
}

.srl-pagesize[b-iktkndxruh] {
    width: auto;
    min-width: 64px;
}

.srl-search .srl-search-input[b-iktkndxruh] {
    min-width: 160px;
}

/* ── Ledger grid checkbox column ── */
.srl-chk-col[b-iktkndxruh] {
    width: 56px;
    text-align: center;
}

.srl-chkall[b-iktkndxruh] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

    .srl-chk-col input:not(.srl-chkall)[b-iktkndxruh] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

        .srl-chk-col input:disabled[b-iktkndxruh] {
            cursor: not-allowed;
            opacity: 0.45;
        }

/* Rows currently checked get a subtle tint, matching the app's other checklists. */
.srl-checked-row td[b-iktkndxruh] {
    background: #f6fdfb;
}

    .srl-checked-row:hover td[b-iktkndxruh] {
        background: #eef4fb;
    }

/* ── Sticky Save bar, pinned to the bottom of the page content ── */
.srl-savebar[b-iktkndxruh] {
    position: sticky;
    bottom: 0;
    z-index: 5;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 16px;
    margin-top: 16px;
    background: #fff;
    border-top: 1px solid #e7eaec;
    box-shadow: 0 -4px 12px rgba(15, 23, 42, 0.06);
}

.srl-branch-check[b-iktkndxruh] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    color: #475569;
    cursor: pointer;
}

    .srl-branch-check input[b-iktkndxruh] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

.srl-save-btn[b-iktkndxruh] {
    padding: 9px 22px;
}

/* ── Tablet: keep side-by-side but tighten spacing ── */
@media (max-width: 1100px) {
    .srl-cols[b-iktkndxruh] {
        gap: 12px;
        padding: 0 10px;
    }
}

/* ── Mobile/tablet: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .srl-page[b-iktkndxruh] {
        height: auto;
    }

    .srl-cols[b-iktkndxruh] {
        flex-direction: column;
    }

    .srl-left > .mu-card[b-iktkndxruh],
    .srl-right > .mu-card[b-iktkndxruh] {
        min-height: 360px;
    }

    .srl-scroll[b-iktkndxruh] {
        height: 360px;
        flex: none;
    }

    .mu-foot-info[b-iktkndxruh] {
        display: none;
    }

    .srl-right-header[b-iktkndxruh] {
        font-size: 12px;
    }
}

@media (max-width: 600px) {
    .srl-filter-row[b-iktkndxruh] {
        flex-direction: column;
        align-items: stretch;
    }

    .srl-rep-search[b-iktkndxruh],
    .srl-date-field[b-iktkndxruh],
    .srl-go-btn[b-iktkndxruh],
    .srl-cf-btn[b-iktkndxruh] {
        flex: 1 1 auto;
        width: 100%;
    }

    .srl-date-field[b-iktkndxruh] {
        justify-content: space-between;
    }

    .srl-toolbar[b-iktkndxruh] {
        flex-direction: column;
        align-items: stretch;
    }

    .srl-search .srl-search-input[b-iktkndxruh] {
        flex: 1;
        min-width: 0;
    }

    .srl-savebar[b-iktkndxruh] {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    .srl-save-btn[b-iktkndxruh] {
        justify-content: center;
    }
}

@media (max-width: 480px) {
    .srl-branch-check[b-iktkndxruh] {
        font-size: 11.5px;
    }

    .srl-save-btn .mu-btn-label[b-iktkndxruh] {
        display: inline;
    }
}
/* /Components/Pages/Masters/Schedule.razor.rz.scp.css */
/* =====================================================================
   Schedule.razor.css  (scoped)

   Shared "mu-"/"uf-"/"bspl-" styles live in the global stylesheets
   (masters-forms.css + common-page-chrome.css). Only Schedule-page-specific
   rules remain here — the flex page/card layout every Masters grid uses, the
   per-form modal spacing, and the small ALIE text beside the round badge.
   ===================================================================== */

.mu-page[b-ua45m7kmwi] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-ua45m7kmwi] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-ua45m7kmwi] {
    flex-shrink: 0;
}

.mu-table-wrap[b-ua45m7kmwi] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-ua45m7kmwi] {
    flex-shrink: 0;
}

.bspl-footer-right[b-ua45m7kmwi] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-ua45m7kmwi] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Per-form modal spacing the shared file leaves to each page. */
.uf-field[b-ua45m7kmwi] {
    margin-bottom: 14px;
}

    .uf-field:last-child[b-ua45m7kmwi] {
        margin-bottom: 0;
    }

/* ALIE cell: round mu-plbs chip + the full word beside it. */
.sch-alie-txt[b-ua45m7kmwi] {
    margin-left: 8px;
    font-size: 12.5px;
    color: #475569;
    vertical-align: middle;
}

/* ── Mobile: header action buttons — icon only, stay top-right ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-ua45m7kmwi] {
        margin-left: auto;
    }

        .bspl-title-actions .mu-btn-label[b-ua45m7kmwi] {
            display: none;
        }

        .bspl-title-actions .mu-btn[b-ua45m7kmwi] {
            padding: 8px 10px;
            gap: 0;
        }

            .bspl-title-actions .mu-btn i[b-ua45m7kmwi] {
                font-size: 15px;
            }

    .mu-foot-info[b-ua45m7kmwi] {
        display: none;
    }

    .sch-alie-txt[b-ua45m7kmwi] {
        display: none;
    }
}
/* /Components/Pages/Masters/ScheduleLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — ScheduleLedger.razor.css   (Masters → Schedule-Ledger, XmShdlr)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-hpaxu29nkd] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-hpaxu29nkd] {
        text-decoration: underline;
    }

.mu-page[b-hpaxu29nkd] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-hpaxu29nkd] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-hpaxu29nkd] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-hpaxu29nkd] {
    flex-shrink: 0;
}

.bspl-footer-right[b-hpaxu29nkd] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-hpaxu29nkd] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-hpaxu29nkd] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* "# of selected Ledger" count in the modal header */
.sl-selected-count[b-hpaxu29nkd] {
    font-size: 13px;
    font-weight: 600;
    color: #1a7a4c;
    margin-left: auto;
    margin-right: 12px;
    white-space: nowrap;
}

/* Ledger checklist — bounded scroll, comfortable checkbox target */
.sl-scroll[b-hpaxu29nkd] {
    max-height: 380px;
    overflow-y: auto;
}

    .sl-scroll td:nth-child(2)[b-hpaxu29nkd] {
        text-align: center;
        width: 48px;
    }

    .sl-scroll input[type="checkbox"][b-hpaxu29nkd] {
        width: 17px;
        height: 17px;
        cursor: pointer;
        accent-color: #1a7a4c;
        vertical-align: middle;
    }

    .sl-scroll td[b-hpaxu29nkd],
    .sl-scroll th[b-hpaxu29nkd] {
        padding: 8px 12px;
    }

/* Ledger checklist's own pagination footer, inside the modal body */
.sl-inner-footer[b-hpaxu29nkd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #e5e7eb;
    font-size: 12px;
    color: #6b7280;
}

.sl-inner-pager[b-hpaxu29nkd] {
    display: flex;
    align-items: center;
    gap: 10px;
}
/* /Components/Pages/Masters/SchemeEdit.razor.rz.scp.css */
[b-qsgwfedjyd] .se-hdr-card {
    padding: 18px 20px;
    margin-bottom: 4px;
}

[b-qsgwfedjyd] .se-hdr-body {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 520px;
}

    [b-qsgwfedjyd] .se-hdr-body .uf-field {
        grid-template-columns: 130px 1fr;
    }

[b-qsgwfedjyd] .se-comments {
    min-height: 60px;
    resize: vertical;
}

[b-qsgwfedjyd] .se-grid-card {
    padding: 0;
}

[b-qsgwfedjyd] .se-grid-wrap {
    height: 360px;
}

/* Footer — sticky, not fixed. Sticky respects the content column's own
   width (sidebar excluded automatically) and adds no phantom height, so
   it can't force the whole page into an unwanted scroll the way
   min-height:100vh did, and it won't float mid-page either — it locks
   to the viewport bottom once you scroll past it. */
[b-qsgwfedjyd] .se-pgfoot {
    position: sticky;
    bottom: 0;
    z-index: 10;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(0,0,0,0.06);
}

[b-qsgwfedjyd] .se-footer-actions {
    display: flex;
    gap: 8px;
}

/* Row-edit popup: two-column field grid instead of the stacked
   label/input layout uf-field normally uses, so it matches the
   dense WebForms "EDIT SCHEME" popup layout. */
[b-qsgwfedjyd] .se-row-modal .uf-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 20px;
    max-height: calc(100vh - 260px);
}

[b-qsgwfedjyd] .se-row-field {
    grid-template-columns: 90px 1fr;
    position: relative;
}

[b-qsgwfedjyd] .se-row-modal .uf-form-error {
    grid-column: 1 / -1;
}
/* /Components/Pages/Masters/SchemeGrid.razor.rz.scp.css */
[b-plsnuvr3mm] .sg-th-chk {
    width: 40px;
    text-align: center;
}

    [b-plsnuvr3mm] .sg-th-chk input[type="checkbox"] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

[b-plsnuvr3mm] .sg-view-toggle {
    display: flex;
    gap: 10px;
}

[b-plsnuvr3mm] .sg-view-btn {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid #dde3ed;
    background: #fff;
    color: #475569;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}

    [b-plsnuvr3mm] .sg-view-btn:hover {
        border-color: #1ab99a;
        color: #1ab99a;
    }

    [b-plsnuvr3mm] .sg-view-btn.active {
        background: #1a56a7;
        border-color: #1a56a7;
        color: #fff;
    }

/* Act/InAct + Set Date action popups — single-column stacked fields */
[b-plsnuvr3mm] .sg-action-modal {
    max-width: 460px;
}

[b-plsnuvr3mm] .sg-action-field {
    grid-template-columns: 110px 1fr;
    margin-bottom: 14px;
    position: relative;
}

/* Footer — sticky, not fixed: stays inside the content column (no
   sidebar overlap) and adds no phantom page height (no forced whole-page
   scroll), same fix already proven on the other Scheme pages. */
/* Footer — sticky, not the flex/min-height:100vh chain. That approach
   (matching QLedger's own CSS) forces .mu-page to be at least 100vh tall
   measured from ITS OWN top — but mu-page sits below DashboardLayout's
   header, so total document height ends up header-height + 100vh,
   exceeding the real viewport and forcing an unwanted whole-page scroll
   (same failure mode already hit on GenerateScheme). Sticky avoids it:
   no phantom height added, still pinned to the bottom once you scroll
   past it, and stays inside the content column (no sidebar overlap). */
[b-plsnuvr3mm] .sg-pgfoot {
    position: sticky;
    bottom: 0;
    z-index: 10;
    background: #fbfcfe;
}
/* /Components/Pages/Masters/SiteList.razor.rz.scp.css */
/* SiteList.razor.css — scoped styles for the Site Master grid page.
   Grid/table/pagination chrome (.mu-*), title block (.bspl-*) and footer
   already come from wwwroot/CSS/masters-forms.css — nothing else
   page-specific needed beyond this file existing for future tweaks. */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the table body scrolls. Use
   height:100% here, never 100vh (see SchemeGrid.razor.css for the prior
   regression that caused). */
.mu-page[b-mwg0eb1fj8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-mwg0eb1fj8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-mwg0eb1fj8] {
    flex-shrink: 0;
}

.mu-table-wrap[b-mwg0eb1fj8] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-mwg0eb1fj8] {
    flex-shrink: 0;
}

.mu-loading-cell[b-mwg0eb1fj8] {
    text-align: center;
    padding: 32px 0;
    color: #64748b;
    font-size: 14px;
}

/* Edit (pen) button — same solid-fill formatting kept, only color swapped:
   Site Master green (#1ab394, same hex as .bspl-title-block h1 "SITE
   MASTER" text) instead of red. */
.mu-edit[b-mwg0eb1fj8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 7px;
    border: 1px solid #b3e0d6;
    background: #fff;
    color: #1ab394;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .mu-edit i[b-mwg0eb1fj8] {
        font-size: 14px;
    }

    .mu-edit:hover[b-mwg0eb1fj8] {
        background: #e6f7f3;
        border-color: #8fd4c0;
    }
/* /Components/Pages/Masters/SiteMaster.razor.rz.scp.css */
/* SiteMaster.razor.css — original Site Master format (unchanged): default
   CollapsibleCard look, 130px-label field grid, two-column row/col-xl-6
   layout, teal accent, plain SAVE/GRID footer. The ONLY thing this file
   adds beyond the original is popup sizing (.smm-overlay/.smm-modal/
   .smm-body) — the shell itself (dark backdrop, centered card, radius,
   shadow) comes from the shared uf-overlay/uf-modal system in
   wwwroot/CSS/masters-forms.css. */

/* ── Title bar — old Site Master font/colors: plain white strip, light
   uppercase teal title (not the mint/bold uf-header default). ── */
.uf-header[b-j78nag58oz] {
    background: #ffffff;
    border-bottom: 1px solid #e7eaec;
}

    .uf-header[b-j78nag58oz]::before {
        display: none;
    }

.uf-title > span:first-child[b-j78nag58oz] {
    font-size: 19px;
    font-weight: 300;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: #1ab394;
    font-family: 'Segoe UI', system-ui, sans-serif;
}

/* ── Popup shell sizing only — desktop 70-80% / tablet 90% / mobile 100%
   with overlay padding (so the modal never touches the screen edge). ── */
.smm-overlay[b-j78nag58oz] {
    align-items: center;
    padding: 24px 16px;
}

.smm-modal[b-j78nag58oz] {
    width: 75%;
    max-width: 1100px;
    max-height: 85vh;
}

.smm-body[b-j78nag58oz] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    max-height: none;
    font-family: Arial, 'Segoe UI', sans-serif;
}

/* Bug: labels (.smx-field > label) never had their own font-family, so
   they only got Arial if the .uf-overlay/.mu-page ancestor rule (in the
   separate masters-forms.css file) actually reached them — evidently it
   wasn't reliably, since date/value text (which now gets font-family:
   inherit via .smx-input) still didn't match label text. Forcing the
   font explicitly HERE, one level up from every field, removes the
   dependency on that cross-file inheritance chain entirely — labels,
   values, dates all resolve to this single explicit source now.
   ::deep reaches into CollapsibleCard/SmDateInput's own markup too
   (Blazor CSS isolation otherwise stops at component boundaries).
   :not(i) excludes FontAwesome icons, which need their own icon font. */
.smm-body[b-j78nag58oz]  *:not(i) {
    font-family: inherit;
}

/* ── TDS Deductor popup (legacy .aspx in an iframe) — stacked on top of
   the Site Master modal; sized to roughly match the old Bootstrap modal
   in the reference screenshot. ── */
.tds-overlay[b-j78nag58oz] {
    z-index: 1060;
    align-items: center;
    padding: 24px 16px;
}

.tds-modal[b-j78nag58oz] {
    width: 760px;
    max-width: 92vw;
    height: 640px;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
}

.tds-body[b-j78nag58oz] {
    flex: 1;
    min-height: 0;
    padding: 0;
}

.tds-iframe[b-j78nag58oz] {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

    /* Equalize card padding on every side (default CollapsibleCard.razor.css
   uses 20px 18px — uneven); scoped to this popup only via ::deep so the
   shared component's look elsewhere is untouched. */
    .smm-body[b-j78nag58oz]  .cc-body {
        padding: 20px;
    }

@media (max-width: 991px) {
    /* Tablet */
    .smm-modal[b-j78nag58oz] {
        width: 90%;
    }
}

@media (max-width: 576px) {
    /* Mobile */
    .smm-overlay[b-j78nag58oz] {
        padding: 10px;
    }

    .smm-modal[b-j78nag58oz] {
        width: 100%;
        max-height: 92vh;
    }
}

/* ── Original page content, unchanged ── */
.smx-sitename[b-j78nag58oz] {
    max-width: 440px;
    margin-bottom: 22px;
    font-size: 15px;
    padding: 9px 14px;
}

.smx-row[b-j78nag58oz] {
    --bs-gutter-x: 42px;
}

/* Each smx-cardrow holds exactly 2 cards (Registration/Address,
   Contact Details/Miscellaneous Details, Other Details/Logo) that must
   line up — align-items:stretch (row default) makes both columns the
   same height; stretching the CollapsibleCard itself (not just the
   column) to fill that height is what actually makes the card borders/
   bottoms line up horizontally, matching the old UI. */
.smx-cardrow[b-j78nag58oz] {
    align-items: stretch;
}

    .smx-cardrow > .smx-col[b-j78nag58oz] {
        display: flex;
    }

        .smx-cardrow > .smx-col[b-j78nag58oz]  .cc-card {
            width: 100%;
            display: flex;
            flex-direction: column;
        }

        .smx-cardrow > .smx-col[b-j78nag58oz]  .cc-body {
            flex: 1;
        }

/* ── Form fields (label left, control right) ── */
.smx-field[b-j78nag58oz] {
    display: grid;
    grid-template-columns: 130px 1fr;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    padding: 0 4px;
}

    .smx-field:last-child[b-j78nag58oz] {
        margin-bottom: 4px;
    }

    .smx-field > label[b-j78nag58oz] {
        color: #455a64;
        font-size: 13.5px;
    }

.smx-field-top[b-j78nag58oz] {
    align-items: start;
}

    .smx-field-top > label[b-j78nag58oz] {
        padding-top: 8px;
    }

.smx-static[b-j78nag58oz] {
    padding: 7px 2px;
    color: #37474f;
}

.smx-input[b-j78nag58oz],
.form-control.smx-input[b-j78nag58oz],
.form-select.smx-input[b-j78nag58oz] {
    height: 36px;
    box-sizing: border-box;
    font-size: 14px;
    /* Bug: no font-family here — browsers don't inherit the page font
       (Arial, set on .uf-overlay) into form controls automatically, so
       every input/select/date field fell back to the OS's native control
       font instead, while surrounding labels/text stayed Arial. That's
       the "different different font" — one class (.smx-input) covers text
       inputs, selects, textareas AND SmDateInput's native date input (it
       carries this same class), so one rule fixes all of them at once. */
    font-family: inherit;
    color: #37474f;
    border: 1px solid #cfd6dd;
    border-radius: 6px;
    padding: 7px 12px;
    box-shadow: none;
    background-color: #fff;
}

textarea.smx-input[b-j78nag58oz],
textarea.form-control.smx-input[b-j78nag58oz] {
    /* Bug: ".form-control.smx-input" (2 classes) has HIGHER CSS specificity
       than "textarea.smx-input" (1 class + 1 element) — so the height:36px
       rule above always won this fight, no matter what was written here or
       how far down the file it sat. rows="4" on the markup never mattered;
       box was pinned to 36px by specificity, not by any rows/height logic.
       Fix: match ".form-control.smx-input" too (2 classes + element =
       higher specificity than the 36px rule), so this actually applies now.
       Matches old UI reference — Address stays tall/multi-row, resize-handle
       gone, own scrollbar for overflow beyond that. */
    height: auto;
    resize: none;
    overflow-y: auto;
}

.form-control.smx-input:focus[b-j78nag58oz],
.form-select.smx-input:focus[b-j78nag58oz] {
    border-color: #2aa198;
    box-shadow: 0 0 0 3px rgba(42, 161, 152, 0.12);
    outline: none;
}

.form-control.smx-input[readonly][b-j78nag58oz] {
    background-color: #fff;
}

.smx-divider[b-j78nag58oz] {
    border: 0;
    border-top: 1px solid #e4e9ed;
    margin: 18px 4px;
    opacity: 1;
}

/* ── Gray panel (TCS / TDS block) ── */
.smx-graypanel[b-j78nag58oz] {
    background: #cfcfcf;
    border-radius: 6px;
    padding: 16px 18px 20px;
    margin: 20px 4px 4px;
}

.smx-check[b-j78nag58oz] {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .smx-check .form-check-input[b-j78nag58oz] {
        width: 16px;
        height: 16px;
        margin: 0;
        accent-color: #1ab99a;
        cursor: pointer;
    }

    .smx-check .form-check-label[b-j78nag58oz] {
        color: #37474f;
        font-size: 14px;
        cursor: pointer;
    }

.smx-tds-row[b-j78nag58oz] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
}

.smx-btn-tds[b-j78nag58oz] {
    height: 36px;
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
    background: #6d6d6d;
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 0 20px;
    font-size: 14px;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s;
}

    .smx-btn-tds:hover[b-j78nag58oz] {
        background: #5a5a5a;
    }

    .smx-btn-tds.on[b-j78nag58oz] {
        background: #1ab99a;
    }

.smx-tds-label[b-j78nag58oz] {
    font-weight: 600;
    color: #37474f;
}

/* ── Logo card ── */
.smx-logo-toolbar[b-j78nag58oz] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.smx-btn-upload[b-j78nag58oz] {
    height: 36px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    background: #1ab99a;
    color: #fff;
    border-radius: 6px;
    padding: 0 18px;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s;
}

    .smx-btn-upload:hover[b-j78nag58oz] {
        background: #149c81;
    }

.smx-file-hidden[b-j78nag58oz] {
    display: none;
}

.smx-logo-remove[b-j78nag58oz] {
    background: none;
    border: none;
    color: #546e7a;
    font-size: 18px;
    cursor: pointer;
    padding: 4px 8px;
    line-height: 1;
}

    .smx-logo-remove:hover[b-j78nag58oz] {
        color: #b91c1c;
    }

.smx-logo-box[b-j78nag58oz] {
    min-height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.smx-logo-placeholder[b-j78nag58oz] {
    color: #c9a227;
    font-weight: 600;
    font-size: 14px;
    text-align: center;
    line-height: 1.5;
}

.smx-logo-img[b-j78nag58oz] {
    max-width: 100%;
    max-height: 220px;
    object-fit: contain;
}

/* ── Footer buttons (ChildContent of FooterToolbar — scoped here, see
   FooterToolbar.razor.css comment) — fixed height so every button
   (Info/Grid/New/Save/Delete) lines up identically. ── */
.smx-btn[b-j78nag58oz] {
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.03em;
    border-radius: 5px;
    padding: 0 22px;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}

    .smx-btn:disabled[b-j78nag58oz] {
        opacity: 0.65;
        cursor: default;
    }

.smx-btn-save[b-j78nag58oz] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .smx-btn-save:hover[b-j78nag58oz] {
        background: #149c81;
        border-color: #149c81;
    }

.smx-btn-grid[b-j78nag58oz] {
    background: #ffffff;
    color: #546e7a;
    border-color: #c4ccd2;
}

    .smx-btn-grid:hover[b-j78nag58oz] {
        background: #f5f7f8;
        border-color: #1ab99a;
    }

.smx-btn-del[b-j78nag58oz] {
    background: #ffffff;
    color: #dc2626;
    border-color: #f3d0d6;
}

    .smx-btn-del:hover[b-j78nag58oz] {
        background: #fee2e2;
        border-color: #f1aab2;
    }

.smx-info-strip[b-j78nag58oz] {
    font-size: 12.5px;
    color: #6b7280;
    margin-left: auto;
    align-self: center;
}

.smx-save-msg[b-j78nag58oz] {
    color: #149c81;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

@media (max-width: 576px) {
    .smx-info-strip[b-j78nag58oz] {
        margin-left: 0;
        width: 100%;
        text-align: center;
    }
}

/* ── Responsive (field grid — unchanged from before) ── */
@media (max-width: 991px) {
    .smx-field[b-j78nag58oz] {
        grid-template-columns: 1fr;
        gap: 6px;
        margin-bottom: 14px;
    }

    .smx-field-top > label[b-j78nag58oz] {
        padding-top: 0;
    }
}
/* /Components/Pages/Masters/TagMasterPage.razor.rz.scp.css */
/* TagMasterPage.razor.css — scoped styles for the Tag1/Tag2/Tag3 grid page */

/* Layout scaffolding — mirrors MUOM.razor.css so the search toolbar and the
   pagination footer sit correctly around the scrollable grid. */
.mu-page[b-kmz8t6t39g] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-kmz8t6t39g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-kmz8t6t39g] {
    flex-shrink: 0;
}

.mu-foot[b-kmz8t6t39g] {
    flex-shrink: 0;
}

.bspl-footer-right[b-kmz8t6t39g] {
    font-size: inherit;
    color: inherit;
}

/* Pager — no page-scoped override; inherits the shared .mu-pager/.mu-nav/
   .mu-pagenum look from masters-forms.css, same as MUOM. Only the gap is
   tightened to match MUOM.razor.css exactly. */
.mu-pager[b-kmz8t6t39g] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Blue "link" look for the Tag cell, matching GST/CC Group reference */
.tag-link[b-kmz8t6t39g] {
    color: #1a56a7;
    font-weight: 600;
}

/* Responsive grid — horizontal scroll on narrow viewports */
.tag-table-wrap[b-kmz8t6t39g] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.tag-table[b-kmz8t6t39g] {
    min-width: 420px;
}

/* Add/Edit popup width — .uf-modal-sm has no bare CSS rule anywhere in the
   shared masters-forms.css; every "-sm" modal needs a page-specific modifier
   class or it silently falls back to plain .uf-modal's 780px. Sized 480px,
   same value/pattern as ICategoryEdit.razor.css's ".uf-modal-sm.ic-modal". */
.uf-modal-sm.tag-modal[b-kmz8t6t39g] {
    max-width: 480px;
}

/* Field spacing inside the add/edit modal — same rule shape as
   ICategoryEdit.razor.css's ".uf-field.ic-field" (only one field here, but
   kept for parity/consistency with the icategory-modal reference). */
.uf-field.tag-field[b-kmz8t6t39g] {
    margin-bottom: 16px;
}

    .uf-field.tag-field:last-of-type[b-kmz8t6t39g] {
        margin-bottom: 0;
    }

/* Delete-confirmation dialog reuses the .uf-modal shell */
.tag-confirm-modal[b-kmz8t6t39g] {
    max-width: 420px;
}

.tag-confirm-text[b-kmz8t6t39g] {
    font-size: 14px;
    color: #334155;
    margin: 0;
}

.tag-btn-delete[b-kmz8t6t39g] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .tag-btn-delete:hover[b-kmz8t6t39g] {
        background: #c8393d;
    }

    .tag-btn-delete:disabled[b-kmz8t6t39g] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 640px) {
    .tag-table[b-kmz8t6t39g] {
        min-width: 360px;
    }
}
/* /Components/Pages/Masters/TaxClass.razor.rz.scp.css */
/* TaxClass.razor.css — scoped styles for the TaxClass Master page shell */

/* Flex-fill layout — page fills DashboardLayout's .gains-content (which
   already flex/overflow-scrolls) and only the grid (rendered by the child
   TaxClassGrid component) scrolls. Use height:100% here, never 100vh
   (see SchemeGrid.razor.css for the prior regression that caused). This
   page uses .tcm-toolbar/.tcm-foot instead of .mu-toolbar/.mu-foot, so
   those are the classes that need flex-shrink:0. The child's own root
   (.mu-table-wrap) gets its matching flex:1/overflow:auto rule in
   TaxClassGrid.razor.css. */
.mu-page[b-midw88ko7x] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-midw88ko7x] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

/* Legacy screenshot: the card (search+grid box) is a fixed ~800px-wide box
   with blank space to its right — not stretched full page width like the
   rest of the app's Masters pages. Title bar and footer still span full
   width; vertical flex-fill (grid scrolls, card fills remaining height)
   is untouched — this only caps the horizontal width. */
.tcm-card[b-midw88ko7x] {
    width: 100%;
    max-width: 820px;
}

.tcm-toolbar[b-midw88ko7x] {
    flex-shrink: 0;
    padding: 14px 16px 10px;
}

.tcm-count[b-midw88ko7x] {
    font-size: 12px;
    color: #555;
}

.tcm-new-btn[b-midw88ko7x] {
    display: inline-flex;
    align-items: center;
    padding: 5px 16px;
    font-size: 12.5px;
    font-weight: 600;
    color: #333;
    background: #f5f5f5;
    border: 1px solid #ccc;
    border-radius: 3px;
    cursor: pointer;
}

    .tcm-new-btn:hover[b-midw88ko7x] {
        background: #e9e9e9;
    }

.tcm-foot[b-midw88ko7x] {
    flex-shrink: 0;
    justify-content: flex-start;
}

@media (max-width: 767px) {
    .tcm-toolbar[b-midw88ko7x] {
        padding: 10px 10px 6px;
    }
}
/* /Components/Pages/Masters/TaxClassGrid.razor.rz.scp.css */
/* TaxClassGrid.razor.css — scoped styles for the TaxClass Master grid */

/* Flex-fill — this component's own root element (.mu-table-wrap /
   .tcm-table-wrap) grows to fill the remaining height of the parent's
   .mu-card flex column and scrolls internally, instead of a fixed 460px
   height. The parent (TaxClass.razor.css) supplies the
   .mu-page{height:100%} / .mu-card{flex:1;...} half of the chain. */
.tcm-table-wrap[b-7as6gktfdg] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.tcm-link[b-7as6gktfdg] {
    color: #1a56a7;
    cursor: pointer;
}

    .tcm-link:hover[b-7as6gktfdg] {
        text-decoration: underline;
    }

.tcm-th-perc[b-7as6gktfdg] {
    text-align: right;
}

.tcm-th-addled[b-7as6gktfdg] {
    width: 70px;
    text-align: center;
}

.tcm-add-cell[b-7as6gktfdg] {
    text-align: center;
}

.tcm-add-led[b-7as6gktfdg] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: none;
    background: none;
    color: #333;
    cursor: pointer;
    border-radius: 4px;
}

    .tcm-add-led:hover[b-7as6gktfdg] {
        background: #eef2f7;
        color: #1ab99a;
    }

    .tcm-add-led i[b-7as6gktfdg] {
        font-size: 14px;
    }

/* Mobile: allow horizontal scroll instead of column stacking, per spec */
@media (max-width: 640px) {
    .tcm-table[b-7as6gktfdg] {
        min-width: 620px;
    }
}
/* /Components/Pages/Masters/TaxClassPopup.razor.rz.scp.css */
/* TaxClassPopup.razor.css — plain white modal matching the legacy
   TaxClass edit/add popup exactly (no gradient banner, no section box). */

.tcp-overlay[b-4eqi9i3tyj] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    overflow-y: auto;
}

.tcp-modal[b-4eqi9i3tyj] {
    width: 100%;
    max-width: 500px;
    background: #ffffff;
    border-radius: 6px;
    box-shadow: 0 20px 50px rgba(0,0,0,0.3);
    animation: tcp-in-b-4eqi9i3tyj 0.18s ease-out;
}

.tcp-header[b-4eqi9i3tyj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #eee;
}

.tcp-title[b-4eqi9i3tyj] {
    font-size: 17px;
    font-weight: 600;
    color: #1ab99a;
}

.tcp-close[b-4eqi9i3tyj] {
    background: none;
    border: none;
    color: #666;
    font-size: 16px;
    cursor: pointer;
    padding: 2px 4px;
}

    .tcp-close:hover[b-4eqi9i3tyj] {
        color: #1a2537;
    }

.tcp-body[b-4eqi9i3tyj] {
    padding: 20px 24px;
}

.tcp-field[b-4eqi9i3tyj] {
    display: grid;
    grid-template-columns: 120px 1fr;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
}

    .tcp-field:last-of-type[b-4eqi9i3tyj] {
        margin-bottom: 0;
    }

    .tcp-field > label[b-4eqi9i3tyj] {
        font-size: 13.5px;
        color: #333;
    }

.tcp-input[b-4eqi9i3tyj] {
    width: 100%;
    max-width: 260px;
    padding: 7px 10px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    font-size: 13px;
    color: #1a2537;
    font-family: inherit;
    background: #fff;
    outline: none;
    box-sizing: border-box;
}

    .tcp-input:focus[b-4eqi9i3tyj] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.15);
    }

.tcp-invalid[b-4eqi9i3tyj] {
    border-color: #e11d48 !important;
}

.tcp-err[b-4eqi9i3tyj] {
    color: #e11d48;
    font-size: 11px;
    margin-top: 4px;
}

.tcp-form-error[b-4eqi9i3tyj] {
    margin-top: 14px;
    padding: 9px 12px;
    border-radius: 6px;
    background: #fff5f6;
    border: 1px solid #f7cdd4;
    color: #be123c;
    font-size: 12.5px;
}

.tcp-footer[b-4eqi9i3tyj] {
    display: flex;
    gap: 10px;
    padding: 14px 24px 20px;
}

.tcp-btn[b-4eqi9i3tyj] {
    padding: 7px 22px;
    border: none;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    color: #fff;
}

.tcp-btn-save[b-4eqi9i3tyj] {
    background: #16a765;
}

    .tcp-btn-save:hover[b-4eqi9i3tyj] {
        background: #128a54;
    }

    .tcp-btn-save:disabled[b-4eqi9i3tyj] {
        opacity: 0.65;
        cursor: default;
    }

.tcp-btn-delete[b-4eqi9i3tyj] {
    background: #e5484d;
}

    .tcp-btn-delete:hover[b-4eqi9i3tyj] {
        background: #c8393d;
    }

    .tcp-btn-delete:disabled[b-4eqi9i3tyj] {
        opacity: 0.65;
        cursor: default;
    }

@keyframes tcp-in-b-4eqi9i3tyj {
    from { opacity: 0; transform: scale(0.96) translateY(8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

@media (max-width: 540px) {
    .tcp-modal[b-4eqi9i3tyj] {
        max-width: 95%;
    }

    .tcp-field[b-4eqi9i3tyj] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .tcp-input[b-4eqi9i3tyj] {
        max-width: 100%;
    }

    .tcp-footer[b-4eqi9i3tyj] {
        flex-wrap: wrap;
    }

        .tcp-footer .tcp-btn[b-4eqi9i3tyj] {
            flex: 1;
        }
}
/* /Components/Pages/Masters/XDepoLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXDepoLedger.razor.css   (Masters → XDepoLedger, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only XDepoLedger-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-auraw6ets8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (depot | ledger) ── */
.xdl-cols[b-auraw6ets8] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
}

.xdl-depot[b-auraw6ets8] {
    flex: 1 1 40%;
    display: flex;
    min-width: 0;
}

.xdl-ledger[b-auraw6ets8] {
    flex: 1 1 60%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its pager footer sits at the bottom. */
    .xdl-depot > .mu-card[b-auraw6ets8],
    .xdl-ledger > .mu-card[b-auraw6ets8] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-auraw6ets8] {
    flex-shrink: 0;
    gap: 10px;
}

/* Table scroll area fills the space between toolbar and footer
   (override the global fixed 540px height). */
.mu-table-wrap[b-auraw6ets8] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-auraw6ets8] {
    flex-shrink: 0;
}

/* Pager text should match the app rather than the global tiny grey footer text. */
.bspl-footer-right[b-auraw6ets8] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-auraw6ets8] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Selected depot row highlight ── */
.xdl-active[b-auraw6ets8],
.xdl-active:hover[b-auraw6ets8] {
    background: #e6f7f2 !important;
}

    .xdl-active td:first-child[b-auraw6ets8] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Selected-depot label in the ledger toolbar ── */
.xdl-sel[b-auraw6ets8] {
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 220px;
}

.xdl-sel-none[b-auraw6ets8] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Save group (pending badge + Save button) on the ledger toolbar ── */
.xdl-save-group[b-auraw6ets8] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.xdl-pending[b-auraw6ets8] {
    font-size: 11.5px;
    color: #b45309;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

/* ── Numeric depot columns (Active / Linked) ── */
.xdl-num[b-auraw6ets8] {
    width: 72px;
    text-align: center;
}

/* ── Ledger "Linked" checkbox column ── */
.mu-th-chk[b-auraw6ets8] {
    width: 64px;
    text-align: center;
}

.xdl-chk-cell[b-auraw6ets8] {
    text-align: center;
}

    .xdl-chk-cell input[b-auraw6ets8] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        /* Toggling is driven by the whole-row click, so the box is display-only. */
        pointer-events: none;
    }

/* Rows with an unsaved checkbox change get a subtle marker. */
.xdl-dirty td:first-child[b-auraw6ets8] {
    box-shadow: inset 3px 0 0 #f59e0b;
}

/* ── Mobile: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .mu-page[b-auraw6ets8] {
        height: auto;
    }

    .xdl-cols[b-auraw6ets8] {
        flex-direction: column;
    }

    .mu-table-wrap[b-auraw6ets8] {
        height: 420px;
        flex: none;
    }

    .mu-foot-info[b-auraw6ets8] {
        display: none;
    }

    .xdl-sel[b-auraw6ets8] {
        max-width: 120px;
    }

    .xdl-save-group .mu-btn-label[b-auraw6ets8] {
        display: none;
    }
}
/* /Components/Pages/Masters/XDepoLogin.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXDepoLogin.razor.css   (Masters → XDepo-Login, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only XDepoLogin-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-acox71qjwc] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (depot | login) ── */
.xdpl-cols[b-acox71qjwc] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
}

.xdpl-depot[b-acox71qjwc] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

.xdpl-login[b-acox71qjwc] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its pager footer sits at the bottom. */
    .xdpl-depot > .mu-card[b-acox71qjwc],
    .xdpl-login > .mu-card[b-acox71qjwc] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-acox71qjwc] {
    flex-shrink: 0;
    gap: 10px;
}

/* Table scroll area fills the space between toolbar and footer
   (override the global fixed 540px height). */
.mu-table-wrap[b-acox71qjwc] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-acox71qjwc] {
    flex-shrink: 0;
}

/* Pager text should match the app rather than the global tiny grey footer text. */
.bspl-footer-right[b-acox71qjwc] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-acox71qjwc] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Selected depot row highlight ── */
.xdpl-active[b-acox71qjwc],
.xdpl-active:hover[b-acox71qjwc] {
    background: #e6f7f2 !important;
}

    .xdpl-active td:first-child[b-acox71qjwc] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Selected-depot label in the login toolbar ── */
.xdpl-sel[b-acox71qjwc] {
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 220px;
}

.xdpl-sel-none[b-acox71qjwc] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Save group (assigned-count hint + Save button) ── */
.xdpl-save-group[b-acox71qjwc] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.xdpl-count[b-acox71qjwc] {
    font-size: 11.5px;
    color: #0f766e;
    background: #eafaf4;
    border: 1px solid #cdeee4;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

/* ── Depot columns ── */
.xdpl-abbr[b-acox71qjwc] {
    width: 90px;
}

.xdpl-num[b-acox71qjwc] {
    width: 72px;
    text-align: center;
}

/* ── Login grid checkbox columns ── */
.mu-th-chk[b-acox71qjwc] {
    width: 64px;
    text-align: center;
}

.mu-th-def[b-acox71qjwc] {
    width: 80px;
    text-align: center;
}

/* Header "select all" for the Assigned column. */
.xdpl-chkall[b-acox71qjwc] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

.xdpl-chk-cell[b-acox71qjwc],
.xdpl-def-cell[b-acox71qjwc] {
    text-align: center;
}

    .xdpl-chk-cell input[b-acox71qjwc] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

    /* Default box uses the blue accent to read differently from Assigned. */
    .xdpl-def-cell input[b-acox71qjwc] {
        width: 15px;
        height: 15px;
        accent-color: #1a56a7;
        cursor: pointer;
    }

        .xdpl-def-cell input:disabled[b-acox71qjwc] {
            cursor: not-allowed;
            opacity: 0.45;
        }

/* Rows with an unsaved change get a subtle marker. */
.xdpl-dirty td:first-child[b-acox71qjwc] {
    box-shadow: inset 3px 0 0 #f59e0b;
}

/* ── Mobile: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .mu-page[b-acox71qjwc] {
        height: auto;
    }

    .xdpl-cols[b-acox71qjwc] {
        flex-direction: column;
    }

    .mu-table-wrap[b-acox71qjwc] {
        height: 420px;
        flex: none;
    }

    .mu-foot-info[b-acox71qjwc] {
        display: none;
    }

    .xdpl-sel[b-acox71qjwc] {
        max-width: 120px;
    }

    .xdpl-abbr[b-acox71qjwc] {
        display: none;
    }

    .xdpl-save-group .mu-btn-label[b-acox71qjwc] {
        display: none;
    }
}
/* /Components/Pages/Masters/XItemLogin.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXItemLogin.razor.css   (Masters → xItemLogin, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only xItemLogin-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-j3mdcpvrue] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (depot | item) ── */
.xil-cols[b-j3mdcpvrue] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
}

.xil-depot[b-j3mdcpvrue] {
    flex: 1 1 38%;
    display: flex;
    min-width: 0;
}

.xil-item[b-j3mdcpvrue] {
    flex: 1 1 62%;
    display: flex;
    min-width: 0;
}

    .xil-depot > .mu-card[b-j3mdcpvrue],
    .xil-item > .mu-card[b-j3mdcpvrue] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-j3mdcpvrue] {
    flex-shrink: 0;
    gap: 10px;
}

.mu-table-wrap[b-j3mdcpvrue] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-j3mdcpvrue] {
    flex-shrink: 0;
}

.bspl-footer-right[b-j3mdcpvrue] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-j3mdcpvrue] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Selected depot row highlight ── */
.xil-active[b-j3mdcpvrue],
.xil-active:hover[b-j3mdcpvrue] {
    background: #e6f7f2 !important;
}

    .xil-active td:first-child[b-j3mdcpvrue] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Selected-depot label in the item toolbar ── */
.xil-sel[b-j3mdcpvrue] {
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 220px;
}

.xil-sel-none[b-j3mdcpvrue] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Save group ── */
.xil-save-group[b-j3mdcpvrue] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.xil-pending[b-j3mdcpvrue] {
    font-size: 11.5px;
    color: #b45309;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

/* ── Depot linked column ── */
.xil-num[b-j3mdcpvrue] {
    width: 72px;
    text-align: center;
}

/* ── Item grid: checkbox + OB value + Dr/Cr columns ── */
.mu-th-chk[b-j3mdcpvrue] {
    width: 52px;
    text-align: center;
}

.xil-ob-h[b-j3mdcpvrue] {
    width: 120px;
    text-align: right;
}

.xil-drcr-h[b-j3mdcpvrue] {
    width: 80px;
    text-align: center;
}

.xil-chkall[b-j3mdcpvrue] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

.xil-chk-cell[b-j3mdcpvrue] {
    text-align: center;
}

    .xil-chk-cell input[b-j3mdcpvrue] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

.xil-ob-cell[b-j3mdcpvrue] {
    text-align: right;
}

.xil-ob-input[b-j3mdcpvrue] {
    width: 108px;
    padding: 4px 8px;
    border: 1px solid #d7dde3;
    border-radius: 6px;
    font-size: 12.5px;
    text-align: right;
    background: #fff;
}

    .xil-ob-input:focus[b-j3mdcpvrue] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 2px rgba(26, 185, 154, 0.15);
    }

    .xil-ob-input:disabled[b-j3mdcpvrue] {
        background: #f4f6f8;
        color: #9aa5b1;
    }

.xil-drcr-cell[b-j3mdcpvrue] {
    text-align: center;
}

.xil-drcr-input[b-j3mdcpvrue] {
    width: 66px;
    padding: 4px 6px;
    border: 1px solid #d7dde3;
    border-radius: 6px;
    font-size: 12.5px;
    background: #fff;
    cursor: pointer;
}

    .xil-drcr-input:focus[b-j3mdcpvrue] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 2px rgba(26, 185, 154, 0.15);
    }

    .xil-drcr-input:disabled[b-j3mdcpvrue] {
        background: #f4f6f8;
        color: #9aa5b1;
        cursor: default;
    }

/* Rows with an unsaved change get a subtle marker. */
.xil-dirty td:first-child[b-j3mdcpvrue] {
    box-shadow: inset 3px 0 0 #f59e0b;
}

/* ── Mobile: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .mu-page[b-j3mdcpvrue] {
        height: auto;
    }

    .xil-cols[b-j3mdcpvrue] {
        flex-direction: column;
    }

    .mu-table-wrap[b-j3mdcpvrue] {
        height: 420px;
        flex: none;
    }

    .mu-foot-info[b-j3mdcpvrue] {
        display: none;
    }

    .xil-sel[b-j3mdcpvrue] {
        max-width: 120px;
    }

    .xil-save-group .mu-btn-label[b-j3mdcpvrue] {
        display: none;
    }
}

/* ── OB Value read-only (sum of batch quantities) ── */
.xil-ob-ro[b-j3mdcpvrue] {
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: #334155;
    font-weight: 600;
    white-space: nowrap;
}

/* ── Batches column + button ── */
.xil-batch-h[b-j3mdcpvrue] {
    width: 74px;
    text-align: center;
}

.xil-batch-cell[b-j3mdcpvrue] {
    text-align: center;
}

.xil-batch-btn[b-j3mdcpvrue] {
    width: 28px;
    height: 26px;
    border: 1px solid #cdeee4;
    background: #eafaf4;
    color: #0f766e;
    border-radius: 6px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .12s, border-color .12s;
}

    .xil-batch-btn:hover[b-j3mdcpvrue] {
        background: #d5f3e9;
        border-color: #1ab99a;
    }

/* ── Batch modal ── */
.xil-batch-modal[b-j3mdcpvrue] {
    width: min(880px, 96vw);
    max-height: 90vh;
}

.xil-batch-form[b-j3mdcpvrue] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 12px;
    align-items: flex-end;
    padding-bottom: 14px;
    margin-bottom: 12px;
    border-bottom: 1px solid #eef1f4;
}

.xil-bf[b-j3mdcpvrue] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1 1 150px;
    min-width: 120px;
}

.xil-bf-sm[b-j3mdcpvrue] {
    flex: 0 1 110px;
    min-width: 90px;
}

.xil-bf label[b-j3mdcpvrue] {
    font-size: 11.5px;
    font-weight: 600;
    color: #64748b;
}

/* ── MFG Date field: text display (DD-MMM-YYYY) + icon button that opens
   the hidden native picker beneath them ── */
.xil-date-wrap[b-j3mdcpvrue] {
    position: relative;
    display: flex;
    align-items: center;
}

.xil-date-display[b-j3mdcpvrue] {
    padding-right: 36px;
    cursor: pointer;
    background: #fff;
    width: 100%;
}

.xil-date-btn[b-j3mdcpvrue] {
    position: absolute;
    right: 3px;
    top: 50%;
    transform: translateY(-50%);
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: #64748b;
    cursor: pointer;
    border-radius: 6px;
}

    .xil-date-btn:hover[b-j3mdcpvrue] {
        background: #f1f5f9;
        color: #0f766e;
    }

/* Present in the DOM only so .showPicker()/.click() has a real native
   control to open — not shown or directly interacted with itself. */
.xil-date-native[b-j3mdcpvrue] {
    position: absolute;
    inset: 0;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
    border: none;
}

.xil-bf-actions[b-j3mdcpvrue] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
}

.xil-batch-list[b-j3mdcpvrue] {
    position: relative;
    max-height: 46vh;
    overflow: auto;
}

    .xil-batch-list .mu-table thead th[b-j3mdcpvrue] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

.xil-bt-num[b-j3mdcpvrue] {
    text-align: right;
    width: 90px;
    font-variant-numeric: tabular-nums;
}

.xil-bt-date[b-j3mdcpvrue] {
    width: 110px;
    text-align: center;
    white-space: nowrap;
}

.xil-bt-unit[b-j3mdcpvrue] {
    width: 80px;
}

.xil-bt-editing[b-j3mdcpvrue],
.xil-bt-editing:hover[b-j3mdcpvrue] {
    background: #fff7ed !important;
}

.xil-bt-empty[b-j3mdcpvrue] {
    text-align: center;
    color: #94a3b8;
    padding: 22px 0;
}

.xil-bt-total[b-j3mdcpvrue] {
    font-size: 12.5px;
    color: #334155;
}

    .xil-bt-total strong[b-j3mdcpvrue] {
        color: #0f766e;
    }
/* /Components/Pages/Masters/XLedgerccgroup.razor.rz.scp.css */
/* =====================================================================
   GAINS — MxLedgerCCGroup.razor.css  (Masters → xCCGROUP Ledger, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   ===================================================================== */

.xlc-page[b-hewotx7t5g] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

/* ── Filter row ── */
.xlc-filters[b-hewotx7t5g] {
    display: flex;
    gap: 12px;
    flex-shrink: 0;
    align-items: center;
}

.xlc-search[b-hewotx7t5g] {
    flex: 1;
    max-width: 420px;
    padding-left: 10px;
}

.xlc-groupfilter .uf-input[b-hewotx7t5g] {
    min-width: 220px;
    height: 38px;
    cursor: pointer;
    background: #fff;
}

/* ── Two panes ── */
.xlc-panes[b-hewotx7t5g] {
    flex: 1;
    display: flex;
    gap: 12px;
    min-height: 0;
}

.xlc-pane[b-hewotx7t5g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
}

.xlc-pane-head[b-hewotx7t5g] {
    flex-shrink: 0;
    padding: 11px 16px;
    border-bottom: 1px solid #eef2f7;
    font-size: 13px;
    font-weight: 700;
    color: #1a2537;
    letter-spacing: 0.02em;
}

    .xlc-pane-head strong[b-hewotx7t5g] {
        color: #1a56a7;
        font-weight: 700;
    }

.xlc-pane .mu-table-wrap[b-hewotx7t5g] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.xlc-pane .mu-foot[b-hewotx7t5g] {
    flex-shrink: 0;
}

/* ── Selected ledger row ── */
.xlc-selected[b-hewotx7t5g],
.xlc-selected:hover[b-hewotx7t5g] {
    background: #eaf2fb !important;
    box-shadow: inset 3px 0 0 #1a56a7;
}

/* ── Link-count badge ── */
.xlc-th-count[b-hewotx7t5g],
.xlc-td-count[b-hewotx7t5g] {
    text-align: center;
    width: 74px;
}

.xlc-badge[b-hewotx7t5g] {
    display: inline-block;
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 11px;
    background: #1ab99a;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    line-height: 18px;
}

/* ── Right-pane empty state ── */
.xlc-empty-right[b-hewotx7t5g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: #94a3b8;
    font-size: 13px;
    padding: 30px;
    text-align: center;
}

    .xlc-empty-right i[b-hewotx7t5g] {
        font-size: 22px;
        opacity: 0.6;
    }

/* ── CC-group checkboxes ── */
.xlc-th-chk[b-hewotx7t5g],
.xlc-td-chk[b-hewotx7t5g] {
    width: 44px;
    text-align: center;
}

.xlc-grow[b-hewotx7t5g] {
    cursor: pointer;
}

    .xlc-grow:hover[b-hewotx7t5g] {
        background: #f6f9fc;
    }

.xlc-td-chk input[b-hewotx7t5g],
.xlc-th-chk input[b-hewotx7t5g] {
    width: 16px;
    height: 16px;
    cursor: pointer;
    accent-color: #1ab99a;
}

/* ── Footer: branch replication ── */
.xlc-foot[b-hewotx7t5g] {
    flex-shrink: 0;
}

.xlc-branch[b-hewotx7t5g] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
    user-select: none;
}

    .xlc-branch input[b-hewotx7t5g] {
        width: 16px;
        height: 16px;
        cursor: pointer;
        accent-color: #1ab99a;
    }

/* ── Mobile: stack the panes ── */
@media (max-width: 900px) {
    .xlc-panes[b-hewotx7t5g] {
        flex-direction: column;
        overflow: auto;
    }

    .xlc-pane[b-hewotx7t5g] {
        min-height: 320px;
    }
}

@media (max-width: 767px) {
    .xlc-filters[b-hewotx7t5g] {
        flex-direction: column;
        align-items: stretch;
    }

    .xlc-search[b-hewotx7t5g] {
        max-width: none;
    }

    .xlc-groupfilter .uf-input[b-hewotx7t5g] {
        width: 100%;
    }
}
/* /Components/Pages/Masters/Xledgerdepot.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXLedgerDepot.razor.css   (Masters → XLedgerDepot, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only XLedgerDepot-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-o21po4oxsl] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (ledger | depot) ── */
.xld-cols[b-o21po4oxsl] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
}

.xld-led[b-o21po4oxsl] {
    flex: 1 1 55%;
    display: flex;
    min-width: 0;
}

.xld-depot[b-o21po4oxsl] {
    flex: 1 1 45%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its pager footer sits at the bottom. */
    .xld-led > .mu-card[b-o21po4oxsl],
    .xld-depot > .mu-card[b-o21po4oxsl] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-o21po4oxsl] {
    flex-shrink: 0;
    gap: 10px;
}

/* Table scroll area fills the space between toolbar and footer
   (override the global fixed 540px height). */
.mu-table-wrap[b-o21po4oxsl] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-o21po4oxsl] {
    flex-shrink: 0;
}

/* Pager text should match the app rather than the global tiny grey footer text. */
.bspl-footer-right[b-o21po4oxsl] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-o21po4oxsl] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Selected ledger row highlight ── */
.xld-active[b-o21po4oxsl],
.xld-active:hover[b-o21po4oxsl] {
    background: #e6f7f2 !important;
}

    .xld-active td:first-child[b-o21po4oxsl] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Selected-ledger label in the depot toolbar ── */
.xld-sel[b-o21po4oxsl] {
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 220px;
}

.xld-sel-none[b-o21po4oxsl] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Save group (pending badge + Save button) on the depot toolbar ── */
.xld-save-group[b-o21po4oxsl] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.xld-pending[b-o21po4oxsl] {
    font-size: 11.5px;
    color: #b45309;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

/* ── Numeric ledger column (Linked) ── */
.xld-num[b-o21po4oxsl] {
    width: 72px;
    text-align: center;
}

/* ── Depot "linked" checkbox column ── */
.mu-th-chk[b-o21po4oxsl] {
    width: 64px;
    text-align: center;
}

/* Header "select all" — interactive (unlike the display-only row boxes). */
.xld-chkall[b-o21po4oxsl] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

.xld-chk-cell[b-o21po4oxsl] {
    text-align: center;
}

    .xld-chk-cell input[b-o21po4oxsl] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        /* Toggling is driven by the whole-row click, so the box is display-only. */
        pointer-events: none;
    }

/* Rows with an unsaved checkbox change get a subtle marker. */
.xld-dirty td:first-child[b-o21po4oxsl] {
    box-shadow: inset 3px 0 0 #f59e0b;
}

/* ── Mobile: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .mu-page[b-o21po4oxsl] {
        height: auto;
    }

    .xld-cols[b-o21po4oxsl] {
        flex-direction: column;
    }

    .mu-table-wrap[b-o21po4oxsl] {
        height: 420px;
        flex: none;
    }

    .mu-foot-info[b-o21po4oxsl] {
        display: none;
    }

    .xld-sel[b-o21po4oxsl] {
        max-width: 120px;
    }

    .xld-save-group .mu-btn-label[b-o21po4oxsl] {
        display: none;
    }
}
/* /Components/Pages/Masters/XLedgerItemname.razor.rz.scp.css */
/* =====================================================================
   GAINS — LedgerItem.razor.css   (Masters → Ledger-Item, APIxLedgerItems)
   Shared "mu-"/"uf-" styles live in wwwroot/CSS/masters-forms.css.
   Only this page's specific rules remain here.
   ===================================================================== */

.mu-login[b-np7mksab7e] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .mu-login:hover[b-np7mksab7e] {
        text-decoration: underline;
    }

.mu-page[b-np7mksab7e] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-np7mksab7e] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-table-wrap[b-np7mksab7e] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-np7mksab7e] {
    flex-shrink: 0;
}

.bspl-footer-right[b-np7mksab7e] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-np7mksab7e] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.uf-footer-right[b-np7mksab7e] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Ledger / GO / CF / Frequently Ordered toolbar */
.li-toolbar[b-np7mksab7e] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    padding: 12px 16px;
    flex-wrap: wrap;
}

.li-field[b-np7mksab7e] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex: 1 1 0;
    min-width: 0;
}

    .li-field span[b-np7mksab7e] {
        font-size: 10.5px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: #6b7280;
    }

    .li-field input[type="text"][b-np7mksab7e] {
        height: 36px;
        padding: 0 10px;
        border: 1.5px solid #d1d5db;
        border-radius: 8px;
        font-size: 12.5px;
        font-family: inherit;
        background: #f8fafc;
        color: #111827;
        outline: none;
        transition: .12s;
        width: 100%;
        min-width: 0;
    }

        .li-field input[type="text"]:focus[b-np7mksab7e] {
            border-color: #1a7a4c;
            background: #fff;
        }

.li-checkbox-label[b-np7mksab7e] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #374151;
    white-space: nowrap;
    padding-bottom: 8px;
}

    .li-checkbox-label input[type="checkbox"][b-np7mksab7e] {
        width: 16px;
        height: 16px;
        cursor: pointer;
        accent-color: #1a7a4c;
    }

/* Wider modal — has a filter row + paged item grid */
.li-modal-lg[b-np7mksab7e] {
    width: min(760px, 92vw);
}

.li-selected-count[b-np7mksab7e] {
    font-size: 13px;
    font-weight: 600;
    color: #1a7a4c;
    margin-left: auto;
    margin-right: 12px;
    white-space: nowrap;
}

.li-group-row[b-np7mksab7e] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}

    .li-group-row span[b-np7mksab7e] {
        font-size: 13px;
        color: #374151;
        white-space: nowrap;
    }

    .li-group-row select[b-np7mksab7e] {
        flex: 1 1 220px;
    }

/* Item checklist — uses appearance:none so :checked keeps its color even
   while the row above stays interactive (learned from the disabled-gray
   checkbox issue on LedgerSalesRep — same fix applied proactively here) */
.li-scroll[b-np7mksab7e] {
    max-height: 380px;
    overflow-y: auto;
}

    .li-scroll td:nth-child(2)[b-np7mksab7e] {
        text-align: center;
        width: 48px;
    }

    .li-scroll input[type="checkbox"][b-np7mksab7e] {
        appearance: none;
        -webkit-appearance: none;
        width: 17px;
        height: 17px;
        border: 1.5px solid #9ca3af;
        border-radius: 4px;
        cursor: pointer;
        vertical-align: middle;
        position: relative;
        background: #fff;
        margin: 0;
    }

        .li-scroll input[type="checkbox"]:checked[b-np7mksab7e] {
            background: #1a56a7;
            border-color: #1a56a7;
        }

            .li-scroll input[type="checkbox"]:checked[b-np7mksab7e]::after {
                content: "";
                position: absolute;
                left: 5px;
                top: 1px;
                width: 4px;
                height: 9px;
                border: solid #fff;
                border-width: 0 2px 2px 0;
                transform: rotate(45deg);
            }

    .li-scroll td[b-np7mksab7e],
    .li-scroll th[b-np7mksab7e] {
        padding: 8px 12px;
    }

/* Item checklist's own pagination footer, inside the modal body */
.li-inner-footer[b-np7mksab7e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #e5e7eb;
    font-size: 12px;
    color: #6b7280;
}

.li-inner-pager[b-np7mksab7e] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
/* /Components/Pages/Masters/XLoginDepo.razor.rz.scp.css */
/* =====================================================================
   GAINS — MXLoginDepo.razor.css   (Masters → XLogin-Depo, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css.
   Only XLoginDepo-page-specific rules remain here.
   ===================================================================== */

.mu-page[b-cyi9fyvzhw] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Two side-by-side panels (login | depot) ── */
.xlp-cols[b-cyi9fyvzhw] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
}

.xlp-login[b-cyi9fyvzhw] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

.xlp-depot[b-cyi9fyvzhw] {
    flex: 1 1 50%;
    display: flex;
    min-width: 0;
}

    /* Each card fills its column so its pager footer sits at the bottom. */
    .xlp-login > .mu-card[b-cyi9fyvzhw],
    .xlp-depot > .mu-card[b-cyi9fyvzhw] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.mu-toolbar[b-cyi9fyvzhw] {
    flex-shrink: 0;
    gap: 10px;
}

/* Table scroll area fills the space between toolbar and footer
   (override the global fixed 540px height). */
.mu-table-wrap[b-cyi9fyvzhw] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-cyi9fyvzhw] {
    flex-shrink: 0;
}

/* Pager text should match the app rather than the global tiny grey footer text. */
.bspl-footer-right[b-cyi9fyvzhw] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-cyi9fyvzhw] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Selected login row highlight ── */
.xlp-active[b-cyi9fyvzhw],
.xlp-active:hover[b-cyi9fyvzhw] {
    background: #e6f7f2 !important;
}

    .xlp-active td:first-child[b-cyi9fyvzhw] {
        box-shadow: inset 3px 0 0 #1ab99a;
    }

/* ── Selected-login label in the depot toolbar ── */
.xlp-sel[b-cyi9fyvzhw] {
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 220px;
}

.xlp-sel-none[b-cyi9fyvzhw] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Save group (pending badge + Save button) on the depot toolbar ── */
.xlp-save-group[b-cyi9fyvzhw] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.xlp-pending[b-cyi9fyvzhw] {
    font-size: 11.5px;
    color: #b45309;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

/* ── Numeric login column (Linked) ── */
.xlp-num[b-cyi9fyvzhw] {
    width: 72px;
    text-align: center;
}

/* ── Depot "linked" checkbox column ── */
.mu-th-chk[b-cyi9fyvzhw] {
    width: 64px;
    text-align: center;
}

/* Header "select all" — interactive (unlike the display-only row boxes). */
.xlp-chkall[b-cyi9fyvzhw] {
    width: 15px;
    height: 15px;
    accent-color: #fff;
    cursor: pointer;
    vertical-align: middle;
}

.xlp-chk-cell[b-cyi9fyvzhw] {
    text-align: center;
}

    .xlp-chk-cell input[b-cyi9fyvzhw] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        /* Toggling is driven by the whole-row click, so the box is display-only. */
        pointer-events: none;
    }

/* Rows with an unsaved checkbox change get a subtle marker. */
.xlp-dirty td:first-child[b-cyi9fyvzhw] {
    box-shadow: inset 3px 0 0 #f59e0b;
}

/* ── Mobile: stack the two panels, cap the scroll height ── */
@media (max-width: 900px) {
    .mu-page[b-cyi9fyvzhw] {
        height: auto;
    }

    .xlp-cols[b-cyi9fyvzhw] {
        flex-direction: column;
    }

    .mu-table-wrap[b-cyi9fyvzhw] {
        height: 420px;
        flex: none;
    }

    .mu-foot-info[b-cyi9fyvzhw] {
        display: none;
    }

    .xlp-sel[b-cyi9fyvzhw] {
        max-width: 120px;
    }

    .xlp-save-group .mu-btn-label[b-cyi9fyvzhw] {
        display: none;
    }
}
/* /Components/Pages/Masters/XTaxTypeLed.razor.rz.scp.css */
/* =====================================================================
   GAINS — XTaxTypeLed.razor.css   (Masters -> xTaxType-Led / "Voucher
   Ledger Mapping", page-scoped)
   Shared "mu-"/"bspl-" grid/page styles live in wwwroot/CSS/masters-forms.css.
   Only this page's own 3-panel layout/extras live here — same pattern as
   MCCGroupLedger.razor.css / MLedgerCCGroup.razor.css.
   ===================================================================== */

.vlm-page[b-sq2hh5ocxt] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Three side-by-side panels: Voucher Type | Ledger/Item | Tax Mapping ── */
.vlm-cols[b-sq2hh5ocxt] {
    flex: 1;
    display: flex;
    gap: 16px;
    min-height: 0;
    padding: 0 16px;
}

/* Hidden per request — markup + selection logic (_selVoucherType,
   SelectVoucherType, BuildTaxRows keying) stay intact in the component,
   just not rendered. Remove this rule to bring the panel back. */
.vlm-left[b-sq2hh5ocxt] {
    display: none;
}

.vlm-center[b-sq2hh5ocxt] {
    flex: 0 1 280px;
    min-width: 220px;
    display: flex;
}

.vlm-right[b-sq2hh5ocxt] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
}

    .vlm-left > .mu-card[b-sq2hh5ocxt],
    .vlm-center > .mu-card[b-sq2hh5ocxt],
    .vlm-right > .mu-card[b-sq2hh5ocxt] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
    }

/* Table/list scroll areas fill the space between header/toolbar and the
   card's bottom edge (override the global fixed 540px height) — vertical +
   horizontal both handled by overflow:auto. */
.vlm-scroll[b-sq2hh5ocxt] {
    height: auto;
    flex: 1;
    overflow: auto;
    min-height: 220px;
}

/* ── Left panel: Voucher Type list ── */
.vlm-panel-hdr[b-sq2hh5ocxt] {
    flex-shrink: 0;
    padding: 12px 16px;
    font-size: 12.5px;
    font-weight: 700;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid #eef2f7;
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 2;
}

/* "Item Name" column header — same look as the app's mu-table thead th
   (dark slate bar, white bold text) since this <ul> list replaces a table
   here. Sticky so it stays put while the item list scrolls under it. */
.vlm-item-hdr[b-sq2hh5ocxt] {
    flex-shrink: 0;
    position: sticky;
    top: 0;
    z-index: 2;
    background: #4b5563;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    padding: 10px 14px;
}

.vlm-vtype-list[b-sq2hh5ocxt],
.vlm-item-list[b-sq2hh5ocxt] {
    list-style: none;
    margin: 0;
    padding: 4px;
}

.vlm-vtype-item[b-sq2hh5ocxt],
.vlm-item-row[b-sq2hh5ocxt] {
    padding: 9px 12px;
    border-radius: 6px;
    font-size: 13px;
    color: #1a2537;
    white-space: nowrap;
}

.vlm-vtype-item + .vlm-vtype-item[b-sq2hh5ocxt],
.vlm-item-row + .vlm-item-row[b-sq2hh5ocxt] {
    margin-top: 1px;
}

/* Selected voucher type / ledger-item row highlight (teal accent, matches
   the app's other master/detail selection state — see MCCGroupLedger's
   .ccl-row-active). */
.vlm-active[b-sq2hh5ocxt] {
    background: #e6f7f2 !important;
    box-shadow: inset 3px 0 0 #1ab99a;
    font-weight: 600;
    color: #0f766e;
}

/* ── Center panel: search toolbar ── */
.vlm-search-row[b-sq2hh5ocxt] {
    flex-shrink: 0;
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 2;
}

.vlm-search-row .mu-search[b-sq2hh5ocxt] {
    flex: 1;
}

/* ── Center panel: pagination footer (mirrors MCCGroupLedger's ledger
   pager — .bspl-footer/.mu-foot/.mu-pages etc are global) ── */
.vlm-item-foot[b-sq2hh5ocxt] {
    flex-shrink: 0;
}

/* ── Right panel header ── */
.vlm-right-hdr[b-sq2hh5ocxt] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px 4px;
    flex-shrink: 0;
    flex-wrap: wrap;
    font-size: 12.5px;
    color: #0f766e;
    font-weight: 600;
}

.vlm-right-title[b-sq2hh5ocxt] {
    font-size: 13.5px;
    color: #1a2537;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.vlm-right-sel strong[b-sq2hh5ocxt] {
    color: #1a2537;
}

/* ── Tax Mapping grid ── */
.vlm-tax-table[b-sq2hh5ocxt] {
    min-width: 460px;
}

.vlm-chk-col[b-sq2hh5ocxt] {
    width: 48px;
    text-align: center;
}

    .vlm-chk-col input[b-sq2hh5ocxt] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
        vertical-align: middle;
    }

.vlm-taxtype-col[b-sq2hh5ocxt] {
    width: 120px;
}

.vlm-ledger-col[b-sq2hh5ocxt] {
    width: 320px;
    min-width: 240px;
}

.vlm-tax-table td.vlm-ledger-col[b-sq2hh5ocxt] {
    white-space: normal;
}

/* Rows currently checked get a subtle tint, matching the app's other
   checklists (e.g. MCCGroupLedger's .ccl-checked-row). */
.vlm-checked-row td[b-sq2hh5ocxt] {
    background: #f6fdfb;
}

    .vlm-checked-row:hover td[b-sq2hh5ocxt] {
        background: #eef4fb;
    }

/* ── Sticky Save bar, pinned to the bottom of the page content, button on
   the right ── */
.vlm-savebar[b-sq2hh5ocxt] {
    position: sticky;
    bottom: 0;
    z-index: 5;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 14px;
    padding: 12px 16px;
    margin-top: 16px;
    background: #fff;
    border-top: 1px solid #e7eaec;
    box-shadow: 0 -4px 12px rgba(15, 23, 42, 0.06);
}

.vlm-savebar-info[b-sq2hh5ocxt] {
    margin-right: auto;
    font-size: 12.5px;
    color: #64748b;
}

.vlm-save-btn[b-sq2hh5ocxt] {
    padding: 9px 22px;
}

/* ── Tablet: keep 3 columns but tighten spacing/min-widths ── */
@media (max-width: 1200px) {
    .vlm-left[b-sq2hh5ocxt] {
        flex-basis: 210px;
        min-width: 170px;
    }

    .vlm-center[b-sq2hh5ocxt] {
        flex-basis: 230px;
        min-width: 190px;
    }
}

@media (max-width: 1100px) {
    .vlm-cols[b-sq2hh5ocxt] {
        gap: 12px;
        padding: 0 10px;
    }
}

/* ── Mobile/tablet: stack the three panels, cap each scroll height ── */
@media (max-width: 900px) {
    .vlm-page[b-sq2hh5ocxt] {
        height: auto;
    }

    .vlm-cols[b-sq2hh5ocxt] {
        flex-direction: column;
    }

    .vlm-left[b-sq2hh5ocxt],
    .vlm-center[b-sq2hh5ocxt],
    .vlm-right[b-sq2hh5ocxt] {
        flex-basis: auto;
        min-width: 0;
    }

        .vlm-left > .mu-card[b-sq2hh5ocxt],
        .vlm-center > .mu-card[b-sq2hh5ocxt],
        .vlm-right > .mu-card[b-sq2hh5ocxt] {
            min-height: 300px;
        }

    .vlm-scroll[b-sq2hh5ocxt] {
        height: 300px;
        flex: none;
    }

    .vlm-right-hdr[b-sq2hh5ocxt] {
        font-size: 12px;
    }
}

@media (max-width: 600px) {
    .vlm-savebar[b-sq2hh5ocxt] {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
    }

    .vlm-savebar-info[b-sq2hh5ocxt] {
        margin-right: 0;
        text-align: center;
    }

    .vlm-save-btn[b-sq2hh5ocxt] {
        justify-content: center;
    }
}

@media (max-width: 480px) {
    .vlm-taxtype-col[b-sq2hh5ocxt] {
        width: 90px;
    }

    .vlm-ledger-col[b-sq2hh5ocxt] {
        width: 220px;
        min-width: 200px;
    }
}
/* /Components/Pages/NoRecords.razor.rz.scp.css */
/* ================================================================
   GAINS Common Empty State — NoRecords.razor.css
================================================================ */

.nr-empty[b-n6hw40hmew] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 44px 16px;
    text-align: center;
}

.nr-art[b-n6hw40hmew] {
    width: 140px;
    height: auto;
    margin-bottom: 10px;
}

.nr-title[b-n6hw40hmew] {
    font-size: 16px;
    font-weight: 600;
    color: #334155;
}

.nr-sub[b-n6hw40hmew] {
    font-size: 13px;
    color: #94a3b8;
}
/* /Components/Pages/Others1/BrokerOS.razor.rz.scp.css */
/* ============================================================
   GAINS — BROKER O/S
   ============================================================ */

.broker-os-page[b-v8wlwe43aw] {
    height: 100%;
}


/* ============================================================
   TOOLBAR
   ============================================================ */

.broker-os-toolbar[b-v8wlwe43aw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
}


.broker-os-toolbar-title[b-v8wlwe43aw] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 600;
}


.broker-os-date-info[b-v8wlwe43aw] {
    font-size: 11px;
    font-weight: 400;
    color: #6c757d;
}


.broker-os-toolbar-actions[b-v8wlwe43aw] {
    display: flex;
    align-items: center;
    gap: 6px;
}


/* ============================================================
   EMPTY REPORT
   ============================================================ */

.broker-os-report-area[b-v8wlwe43aw] {
    position: relative;
}


.broker-os-empty[b-v8wlwe43aw] {
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    color: #8b929a;
    font-size: 12px;
}


    .broker-os-empty i[b-v8wlwe43aw] {
        font-size: 30px;
        margin-bottom: 5px;
    }


    .broker-os-empty strong[b-v8wlwe43aw] {
        font-size: 13px;
        color: #555;
    }


/* ============================================================
   DRAWER SECTION HEADINGS
   ============================================================ */

.broker-os-filter-heading[b-v8wlwe43aw] {
    margin: 4px -2px 8px;
    padding: 6px 8px;
    background: #e9ecef;
    border: 1px solid #d9dde1;
    border-radius: 3px;
    font-size: 10px;
    font-weight: 700;
    color: #495057;
    text-transform: uppercase;
}


/* ============================================================
   DATE
   ============================================================ */

.broker-os-check-label[b-v8wlwe43aw] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 5px;
    font-size: 11px;
    color: #343a40;
    cursor: pointer;
}


    .broker-os-check-label .form-check-input[b-v8wlwe43aw] {
        margin: 0;
        width: 13px;
        height: 13px;
        cursor: pointer;
    }


.broker-os-date-row[b-v8wlwe43aw] {
    display: flex;
    align-items: center;
    gap: 5px;
}


    .broker-os-date-row .form-control[b-v8wlwe43aw] {
        flex: 1;
    }


.broker-os-calendar-btn[b-v8wlwe43aw] {
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid #ced4da;
    border-radius: 3px;
    background: #fff;
    color: #6c757d;
    cursor: pointer;
}


    .broker-os-calendar-btn:hover[b-v8wlwe43aw] {
        background: #f8f9fa;
    }


/* ============================================================
   AR / AP
   ============================================================ */

.broker-os-arap[b-v8wlwe43aw] {
    display: flex;
    gap: 18px;
    padding: 2px 0 8px;
}


/* ============================================================
   SITE LIST
   ============================================================ */

.broker-os-site-list[b-v8wlwe43aw] {
    max-height: 215px;
    overflow-y: auto;
    padding: 7px 8px;
    border: 1px solid #ced4da;
    border-radius: 3px;
    background: #fff;
}


    .broker-os-site-list .broker-os-check-label[b-v8wlwe43aw] {
        margin-bottom: 4px;
    }


/* ============================================================
   REPORT FORMAT
   ============================================================ */

.broker-os-report-format[b-v8wlwe43aw] {
    padding: 5px 2px 3px;
}


    .broker-os-report-format .broker-os-check-label[b-v8wlwe43aw] {
        margin-bottom: 6px;
    }


/* ============================================================
   FORM INPUTS
   ============================================================ */

.broker-os-page .form-control[b-v8wlwe43aw] {
    font-size: 11px;
    min-height: 29px;
    border-radius: 3px;
}


.broker-os-page .mu-fld label[b-v8wlwe43aw] {
    font-size: 11px;
    margin-bottom: 3px;
}


/* ============================================================
   DRAWER RESPONSIVE
   ============================================================ */

@media (max-width: 767px) {

    .broker-os-toolbar[b-v8wlwe43aw] {
        flex-direction: column;
        align-items: stretch;
        gap: 7px;
    }


    .broker-os-toolbar-actions[b-v8wlwe43aw] {
        justify-content: flex-end;
    }
}
/* /Components/Pages/Others/BankReconciliation.razor.rz.scp.css */
/* =====================================================================
   BankReconciliation.razor.css  (scoped)
   Layout (.mu-page / .mu-card / .mu-table-wrap = fixed 540px scroll / .mu-foot)
   is OWNED by the global masters-forms.css — do NOT override it here, or the
   footer floats and a phantom scrollbar appears. This file only adds the
   bank-recon-specific bits (tab strip, filter bar, columns, reports).
   ===================================================================== */

/* Size the grid scroll area to fill the viewport (instead of the master's
   fixed 540px) so title+tabs+toolbar+table+footer fit the content region
   exactly — footer at the bottom, no phantom outer scrollbar. Tweak the
   offset if your top bar height differs. */
[b-2inb7x3zwb] .mu-table-wrap {
    height: calc(100vh - 300px);
    min-height: 300px;
}

/* ── TAB STRIP (buttons) ── */
[b-2inb7x3zwb] .le-toptabs {
    display: flex;
    gap: 4px;
    margin: 0 0 6px;
    border-bottom: 2px solid #e6eaf0;
}

/* ── Bank OBCB master-detail ── */
[b-2inb7x3zwb] .obcb-wrap {
    display: flex;
    gap: 14px;
    align-items: stretch;
}

[b-2inb7x3zwb] .obcb-left {
    flex: 0 0 300px;
    display: flex;
    flex-direction: column;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
}

[b-2inb7x3zwb] .obcb-left-hdr {
    padding: 10px 12px;
    border-bottom: 1px solid #eef2f7;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

    [b-2inb7x3zwb] .obcb-left-hdr .obcb-dates {
        display: flex;
        gap: 8px;
    }

        [b-2inb7x3zwb] .obcb-left-hdr .obcb-dates input {
            flex: 1;
            padding: 6px 8px;
            border: 1px solid #dde3ed;
            border-radius: 6px;
            font-size: 12px;
        }

[b-2inb7x3zwb] .obcb-search {
    position: relative;
    display: flex;
    align-items: center;
}

    [b-2inb7x3zwb] .obcb-search i {
        position: absolute;
        left: 10px;
        color: #94a3b8;
        font-size: 13px;
    }

    [b-2inb7x3zwb] .obcb-search input {
        width: 100%;
        padding: 7px 10px 7px 30px;
        border: 1px solid #dde3ed;
        border-radius: 6px;
        font-size: 13px;
        outline: none;
    }

        [b-2inb7x3zwb] .obcb-search input:focus {
            border-color: #1a56a7;
            box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
        }

[b-2inb7x3zwb] .obcb-banklist {
    flex: 1;
    overflow: auto;
    max-height: calc(100vh - 340px);
    min-height: 260px;
}

[b-2inb7x3zwb] .obcb-bank {
    display: flex;
    gap: 8px;
    padding: 8px 12px;
    font-size: 13px;
    cursor: pointer;
    border-bottom: 1px solid #f2f5f9;
    color: #1a2537;
}

    [b-2inb7x3zwb] .obcb-bank:hover {
        background: #f4f7fb;
    }

    [b-2inb7x3zwb] .obcb-bank.active {
        background: #e8f0fb;
        font-weight: 600;
        color: #1a56a7;
    }

    [b-2inb7x3zwb] .obcb-bank .sr {
        color: #94a3b8;
        min-width: 22px;
    }

[b-2inb7x3zwb] .obcb-right {
    flex: 1;
    display: flex;
    flex-direction: column;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
    min-width: 0;
}

[b-2inb7x3zwb] .obcb-banner {
    padding: 9px 14px;
    background: #eef6ff;
    border-bottom: 1px solid #d6e6fb;
    color: #1a56a7;
    font-size: 13px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-2inb7x3zwb] .obcb-grid-wrap {
    flex: 1;
    overflow: auto;
    max-height: calc(100vh - 360px);
    min-height: 240px;
}

[b-2inb7x3zwb] .obcb-act-btn {
    appearance: none;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 14px;
    padding: 4px 6px;
    border-radius: 5px;
}

[b-2inb7x3zwb] .obcb-edit {
    color: #1a56a7;
}

    [b-2inb7x3zwb] .obcb-edit:hover {
        background: #e8f0fb;
    }

[b-2inb7x3zwb] .obcb-del {
    color: #c0392b;
}

    [b-2inb7x3zwb] .obcb-del:hover {
        background: #fdecea;
    }

[b-2inb7x3zwb] .obcb-save {
    color: #1e7e45;
}

    [b-2inb7x3zwb] .obcb-save:hover {
        background: #eaf7ee;
    }

[b-2inb7x3zwb] .obcb-cancel {
    color: #64748b;
}

[b-2inb7x3zwb] .obcb-inp {
    padding: 5px 7px;
    border: 1px solid #dde3ed;
    border-radius: 5px;
    font-size: 12.5px;
    width: 100%;
    box-sizing: border-box;
}

    [b-2inb7x3zwb] .obcb-inp:focus {
        border-color: #1a56a7;
        outline: none;
        box-shadow: 0 0 0 2px rgba(26,86,167,0.12);
    }

[b-2inb7x3zwb] .obcb-file {
    font-size: 11.5px;
}

[b-2inb7x3zwb] .obcb-addrow td {
    background: #fbfdff;
}

[b-2inb7x3zwb] .obcb-doclink {
    color: #1a56a7;
}

@media (max-width: 900px) {
    [b-2inb7x3zwb] .obcb-wrap {
        flex-direction: column;
    }

    [b-2inb7x3zwb] .obcb-left {
        flex: 0 0 auto;
    }

    [b-2inb7x3zwb] .obcb-banklist {
        max-height: 240px;
    }
}

[b-2inb7x3zwb] .le-toptab {
    appearance: none;
    border: none;
    background: transparent;
    padding: 10px 18px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .3px;
    color: #5b6675;
    cursor: pointer;
    border-radius: 8px 8px 0 0;
    position: relative;
    white-space: nowrap;
    transition: color .15s, background .15s;
}

    [b-2inb7x3zwb] .le-toptab:hover {
        color: #1a56a7;
        background: #f4f7fb;
    }

    [b-2inb7x3zwb] .le-toptab.active {
        color: #1a56a7;
        background: #fff;
    }

        [b-2inb7x3zwb] .le-toptab.active::after {
            content: "";
            position: absolute;
            left: 10px;
            right: 10px;
            bottom: -2px;
            height: 3px;
            border-radius: 3px 3px 0 0;
            background: linear-gradient(90deg, #1a56a7, #2c7be5);
        }

/* ── Primary filter bar: ledger + dates + load ── */
[b-2inb7x3zwb] .bre-toolbar {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

[b-2inb7x3zwb] .bre-fld {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    [b-2inb7x3zwb] .bre-fld > label {
        font-size: 12px;
        font-weight: 600;
        color: #1a2537;
    }

    [b-2inb7x3zwb] .bre-fld input[type="date"],
    [b-2inb7x3zwb] .bre-fld input[type="text"] {
        padding: 8px 10px;
        border: 1px solid #dde3ed;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        color: #1a2537;
        background: #fff;
        outline: none;
    }

    [b-2inb7x3zwb] .bre-fld input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

[b-2inb7x3zwb] .bre-fld-led {
    flex: 1;
    min-width: 240px;
}

[b-2inb7x3zwb] .bre-fld-btn {
    margin-left: auto;
    display: flex;
    gap: 8px;
    align-items: flex-end;
}

[b-2inb7x3zwb] .bre-inline-chk {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #1a2537;
    cursor: pointer;
    padding-bottom: 8px;
}

    [b-2inb7x3zwb] .bre-inline-chk input {
        width: auto;
    }

/* ── Grid columns ── */
[b-2inb7x3zwb] .bre-th-rec {
    width: 48px;
    text-align: center;
}

[b-2inb7x3zwb] .bre-rec-cell {
    text-align: center;
}

[b-2inb7x3zwb] .bre-amt {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

[b-2inb7x3zwb] .bre-drcr {
    text-align: center;
}

[b-2inb7x3zwb] .bre-vnum {
    font-weight: 600;
    cursor: pointer;
}

    [b-2inb7x3zwb] .bre-vnum:hover {
        text-decoration: underline;
    }

[b-2inb7x3zwb] .bre-ledamt {
    color: #1a56a7;
}

[b-2inb7x3zwb] .bre-recon-dt {
    white-space: nowrap;
}

[b-2inb7x3zwb] .bre-recdate-input {
    padding: 4px 6px;
    border: 1px solid #dde3ed;
    border-radius: 5px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
}

    [b-2inb7x3zwb] .bre-recdate-input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 2px rgba(26,86,167,0.12);
    }

[b-2inb7x3zwb] tr.row-selected > td {
    background: #eef4fd;
}

/* ── ITB-style Excel button (icon only) in the footer ── */
[b-2inb7x3zwb] .bspl-footer-left {
    display: flex;
    align-items: center;
    gap: 14px;
}

[b-2inb7x3zwb] .itb-xls-btn {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid #cfe3d4;
    border-radius: 7px;
    background: #eaf7ee;
    color: #1e7e45;
    cursor: pointer;
    font-size: 15px;
    transition: background .15s, border-color .15s;
}

    [b-2inb7x3zwb] .itb-xls-btn:hover:not(:disabled) {
        background: #d9f0e0;
        border-color: #9fd3ac;
    }

    [b-2inb7x3zwb] .itb-xls-btn:disabled {
        opacity: .5;
        cursor: default;
    }

/* ── Bank Trans summary bar ── */
[b-2inb7x3zwb] .bre-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 22px;
    padding: 10px 14px;
    margin: 12px 16px 0;
    background: #f4f7fb;
    border: 1px solid #e6eaf0;
    border-radius: 8px;
    font-size: 13px;
    color: #1a2537;
}

    [b-2inb7x3zwb] .bre-summary strong {
        color: #1a56a7;
    }

/* ── Report layout (Report 1 & 2) ── */
[b-2inb7x3zwb] .bre-report {
    padding: 14px 16px;
    overflow: auto;
}

[b-2inb7x3zwb] .bre-rep-hdr {
    font-size: 15px;
    font-weight: 700;
    color: #1a2537;
    margin: 6px 0 12px;
}

    [b-2inb7x3zwb] .bre-rep-hdr span {
        font-weight: 500;
        font-size: 12px;
        color: #5b6675;
        margin-left: 8px;
    }

[b-2inb7x3zwb] .bre-matrix {
    max-width: 720px;
    margin-bottom: 10px;
}

    [b-2inb7x3zwb] .bre-matrix td, [b-2inb7x3zwb] .bre-matrix th {
        padding: 7px 10px;
    }

[b-2inb7x3zwb] .bre-recon-line {
    display: flex;
    gap: 26px;
    flex-wrap: wrap;
    padding: 10px 12px;
    margin: 6px 0 14px;
    background: #fbf6e9;
    border: 1px solid #f0e6cf;
    border-radius: 8px;
    font-size: 13px;
}

    [b-2inb7x3zwb] .bre-recon-line strong {
        color: #a15c00;
    }

[b-2inb7x3zwb] .bre-sub-title {
    font-size: 13px;
    font-weight: 700;
    color: #1a2537;
    margin: 14px 0 6px;
    border-left: 3px solid #2c7be5;
    padding-left: 8px;
}

[b-2inb7x3zwb] .bre-detail {
    margin-bottom: 8px;
}

    [b-2inb7x3zwb] .bre-detail td, [b-2inb7x3zwb] .bre-detail th {
        padding: 6px 9px;
        font-size: 12.5px;
    }

@media (max-width: 767px) {
    [b-2inb7x3zwb] .bre-toolbar {
        gap: 8px;
    }

    [b-2inb7x3zwb] .bre-fld-btn {
        margin-left: 0;
        width: 100%;
    }

        [b-2inb7x3zwb] .bre-fld-btn .mu-btn {
            flex: 1;
            justify-content: center;
        }

    [b-2inb7x3zwb] .le-toptab {
        padding: 9px 12px;
        font-size: 12px;
    }
}

[b-2inb7x3zwb] .bre-flex-card {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 220px); /* tune to match your header+tabs stack height */
    overflow: hidden; /* card itself never scrolls — only its grid child does */
}

    [b-2inb7x3zwb] .bre-flex-card > .bre-toolbar,
    [b-2inb7x3zwb] .bre-flex-card > .bre-summary {
        flex: 0 0 auto; /* toolbar/summary bar never shrink, never scroll */
    }

[b-2inb7x3zwb] .bre-flex-grid {
    flex: 1 1 auto;
    min-height: 0; /* THE fix — without this flex child ignores overflow, page scrolls instead */
    height: auto !important; /* kill old calc(100vh - 300px) rule for this element */
    overflow-y: auto;
}

[b-2inb7x3zwb] .bre-sticky-foot {
    flex: 0 0 auto;
    position: sticky;
    bottom: 0;
    background: #fff;
    z-index: 5;
    border-top: 1px solid #e6eaf0;
}
/* /Components/Pages/Others/ConsolidatedReport.razor.rz.scp.css */
/* =====================================================================
   GAINS — ConsolidatedReport.razor.css   (Others → Consolidated Report, page-scoped)
   Shared "mu-"/"uf-"/"bspl-" styles live in wwwroot/CSS/masters-forms.css and
   common-page-chrome.css. Same layout split as Report1/Report2.razor.css.
   ===================================================================== */

.mu-page[b-xwc522vz9z] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-xwc522vz9z] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-filter[b-xwc522vz9z] {
    flex-shrink: 0;
}

.mu-table-wrap[b-xwc522vz9z] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-xwc522vz9z] {
    flex-shrink: 0;
}

/* Dynamic columns vary wildly by report type (a handful for PS, dozens for BS/PL/TB
   pivots) — keep the grid horizontally scrollable inside .mu-table-wrap. */
.mu-table[b-xwc522vz9z] {
    white-space: nowrap;
}

/* ── #1: narrower filter textboxes/selects — the shared .uf-input from
   masters-forms.css stretches to fill its grid cell, which reads far too wide
   for short values like Site Id(s)/SRID/dates on this page. ── */
.mu-filter-grid .uf-input[b-xwc522vz9z],
.mu-filter-grid select.uf-input[b-xwc522vz9z] {
    max-width: 220px;
    width: 100%;
}

/* ── #2: Ledger/Item autofill boxes, smaller cap than the other filters.
   Two things going on, both now handled:
   1) The wrapping <div class="mu-narrow-fld"> around each component caps the
      space Blazor gives that subtree in the grid layout.
   2) That alone still isn't guaranteed to shrink the <input> INSIDE
      LedgerAutofill/ItemAutofill — those are separate components with their
      own CSS-isolation scope, so a plain selector like ".lga-wrap" or
      ".lga-wrap input" written here never matches them at all (regardless of
      !important — !important only wins a specificity fight AFTER a selector
      matches; it does nothing if the selector never matches in the first
      place). ::deep is the Blazor-supported escape hatch for exactly this:
      it tells the compiler not to require its own scope attribute on
      everything after it, so the rule reaches into the child's rendered DOM.
      This is the piece that was actually missing before. ── */
.mu-filter-grid .mu-narrow-fld[b-xwc522vz9z] {
    max-width: 160px !important;
    width: 100%;
}

.mu-filter-grid[b-xwc522vz9z]  .lga-wrap,
.mu-filter-grid[b-xwc522vz9z]  .ia-wrap {
    max-width: 160px !important;
    width: 100% !important;
}

    .mu-filter-grid[b-xwc522vz9z]  .lga-wrap input,
    .mu-filter-grid[b-xwc522vz9z]  .ia-wrap input {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
    }

/* ── #4: toaster strip — sits flush against the filter block's bottom edge
   (zero top margin/gap) so it reads as an extension of the filter card
   rather than a separate floating box. Auto-hides itself after a few
   seconds (see ShowToast/AutoHideToastAsync in the .razor). ── */
.mu-toast[b-xwc522vz9z] {
    margin: 0;
    padding: 10px 16px;
    font-size: 13px;
    border-top: 1px solid transparent;
}

.mu-toast-error[b-xwc522vz9z] {
    background: #fef2f2;
    color: #b91c1c;
    border-top-color: #fca5a5;
}

.mu-toast-info[b-xwc522vz9z] {
    background: #eff6ff;
    color: #1d4ed8;
    border-top-color: #93c5fd;
}

/* ── header colour + numeric-column alignment + sortable headers.
   !important throughout this block — a prior pass without it rendered as the
   theme's default dark header, so something in the global masters-forms.css
   cascade (load order or a more specific rule) was beating a page-scoped
   override; forcing it removes the ambiguity. If it's STILL not blue after
   this, the browser is very likely serving a cached <Project>.styles.css
   bundle — hard-refresh (Ctrl+F5) after the rebuild, since Blazor's scoped
   CSS is bundled at build time, not hot-served per file. ── */
.mu-table thead th[b-xwc522vz9z] {
    background: #306B9C !important;
    color: #fff !important;
}

    /* #5: no hover effect on header cells — force the same colour on hover so
   whatever hover rule masters-forms.css defines for thead th can't turn it
   white/grey on mouseover. */
    .mu-table thead th:hover[b-xwc522vz9z],
    .mu-th-sort:hover[b-xwc522vz9z] {
        background: #306B9C !important;
        color: #fff !important;
    }

.mu-th-sort[b-xwc522vz9z] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.mu-sort-ic[b-xwc522vz9z] {
    display: inline-block;
    min-width: 10px;
    margin-left: 4px;
    font-size: 10px;
}

/* #3: numeric columns (amounts/ids) right-align — data cell AND its header,
   text columns stay left-aligned. Column "numeric-ness" is computed per
   page in IsNumericColumn() since the schema varies by ReportType. */
.mu-table td.num[b-xwc522vz9z],
.mu-table thead th.num[b-xwc522vz9z] {
    text-align: right !important;
    font-variant-numeric: tabular-nums;
}

/* #7: GO button in the house blue, matching the header. */
.mu-go-btn[b-xwc522vz9z] {
    background: #306B9C !important;
    border-color: #306B9C !important;
    color: #fff !important;
}

    .mu-go-btn:hover:not(:disabled)[b-xwc522vz9z] {
        background: #275a83;
        border-color: #275a83;
    }

.mu-pager[b-xwc522vz9z] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mu-pager-size[b-xwc522vz9z] {
    max-width: 120px;
    width: auto;
}

.mu-pager-info[b-xwc522vz9z] {
    font-size: 12.5px;
    color: #64748b;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .mu-filter-grid[b-xwc522vz9z] {
        grid-template-columns: auto 1fr;
    }

        .mu-filter-grid .uf-input[b-xwc522vz9z],
        .mu-filter-grid select.uf-input[b-xwc522vz9z],
        .mu-filter-grid .mu-narrow-fld[b-xwc522vz9z] {
            max-width: none !important;
            width: auto;
        }

        .mu-filter-grid[b-xwc522vz9z]  .lga-wrap,
        .mu-filter-grid[b-xwc522vz9z]  .ia-wrap {
            max-width: none !important;
        }

    .mu-pager[b-xwc522vz9z] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Others/CustomizedBSPL.razor.rz.scp.css */
/* =====================================================================
   CustomizedBSPL.razor.css
   Page-scoped styling
   ===================================================================== */
/* =====================================================================
   MAIN TABLE AREA
   ===================================================================== */
[b-t5e4b6fdei] .mu-table-wrap {
    height: calc(100vh - 300px);
    min-height: 300px;
    overflow: auto;
}

[b-t5e4b6fdei] .cbspl-card {
    overflow: visible;
}

[b-t5e4b6fdei] .cbspl-table {
    width: 100%;
    min-width: 1180px;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
}


/* =====================================================================
   COLUMN WIDTHS
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-col-row {
    width: 55px;
}

[b-t5e4b6fdei] .cbspl-col-tag {
    width: 105px;
}

[b-t5e4b6fdei] .cbspl-col-group {
    width: 155px;
}

[b-t5e4b6fdei] .cbspl-col-schedule {
    width: 165px;
}

[b-t5e4b6fdei] .cbspl-col-ledger {
    width: 220px;
}

[b-t5e4b6fdei] .cbspl-col-text {
    width: 190px;
}

[b-t5e4b6fdei] .cbspl-col-cal {
    width: 145px;
}

[b-t5e4b6fdei] .cbspl-col-drcr {
    width: 80px;
}

[b-t5e4b6fdei] .cbspl-col-action {
    width: 100px;
}


/* =====================================================================
   HEADER
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-table thead th {
    height: 42px;
    padding: 8px 9px;
    vertical-align: middle;
    white-space: nowrap;
}


/* =====================================================================
   TABLE CELLS
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-table tbody td {
    height: 48px;
    padding: 6px 8px;
    vertical-align: middle;
    font-size: 13px;
}

[b-t5e4b6fdei] .cbspl-table tbody tr {
    vertical-align: middle;
}


/* =====================================================================
   ADD ROW
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-new-row {
    background: #f8fafc;
}

    [b-t5e4b6fdei] .cbspl-new-row td {
        height: 58px;
        vertical-align: middle !important;
    }

    [b-t5e4b6fdei] .cbspl-new-row:hover {
        background: #f8fafc;
    }


/* =====================================================================
   EDIT ROW
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-edit-row {
    background: #f8fbff;
}

    [b-t5e4b6fdei] .cbspl-edit-row td {
        height: 58px;
        vertical-align: middle !important;
    }


/* =====================================================================
   PENDING ROW
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-pending-row {
    background: #fffdf4;
}

    [b-t5e4b6fdei] .cbspl-pending-row:hover {
        background: #fff9df;
    }


/* =====================================================================
   ROW NUMBER
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-row-number {
    text-align: center !important;
    color: #667085;
    font-weight: 600;
    white-space: nowrap;
}


/* =====================================================================
   ALL INPUTS
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-control {
    display: block;
    width: 100%;
    height: 36px;
    min-height: 36px;
    box-sizing: border-box;
    margin: 0;
    padding: 6px 10px;
    border: 1px solid #cfd7e3;
    border-radius: 5px;
    background: #ffffff;
    color: #253247;
    font-family: inherit;
    font-size: 13px;
    line-height: 22px;
    outline: none;
    box-shadow: none;
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}


/* =====================================================================
   SELECT / DROPDOWN
   ===================================================================== */

[b-t5e4b6fdei] select.cbspl-control {
    height: 36px !important;
    min-height: 36px !important;
    padding-top: 5px !important;
    padding-bottom: 5px !important;
    line-height: 24px !important;
    vertical-align: middle;
    cursor: pointer;
    background-color: #fff;
}

    [b-t5e4b6fdei] select.cbspl-control option {
        padding: 6px;
        font-size: 13px;
        color: #253247;
        background: #fff;
    }


        /* Default option */

        [b-t5e4b6fdei] select.cbspl-control option[value="0"] {
            color: #7d8795;
        }


/* =====================================================================
   INPUT FOCUS
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-control:focus {
    border-color: #3b82f6;
    box-shadow: 0 0 0 2px rgba(59, 130, 246, .10);
}


/* =====================================================================
   DISABLED INPUT
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-control:disabled {
    background-color: #f1f4f8 !important;
    color: #8a94a3 !important;
    border-color: #d9dee7 !important;
    cursor: not-allowed;
    opacity: 1;
}


/* =====================================================================
   PLACEHOLDER
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-control::placeholder {
    color: #9aa4b2 !important;
    opacity: 1 !important;
}


/* =====================================================================
   TEXT CELL
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-text-cell {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}


/* =====================================================================
   AMOUNT / DRCR
   ===================================================================== */

[b-t5e4b6fdei] .bre-amt {
    text-align: right !important;
    white-space: nowrap;
}

[b-t5e4b6fdei] .bre-drcr {
    text-align: center !important;
    white-space: nowrap;
}


/* =====================================================================
   ACTION AREA
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    white-space: nowrap;
}


/* =====================================================================
   ACTION BUTTONS
   ===================================================================== */

[b-t5e4b6fdei] .obcb-act-btn {
    width: 32px;
    height: 32px;
    min-width: 32px;
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 5px;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .1s ease;
}

    [b-t5e4b6fdei] .obcb-act-btn i {
        font-size: 12px;
    }

    [b-t5e4b6fdei] .obcb-act-btn:active {
        transform: translateY(1px);
    }


/* =====================================================================
   EDIT BUTTON
   ===================================================================== */

[b-t5e4b6fdei] .obcb-edit {
    color: #1769d1;
    background: #eef5ff;
    border-color: #bcd5f5;
}

    [b-t5e4b6fdei] .obcb-edit:hover {
        color: #0d58b7;
        background: #dcecff;
        border-color: #9fc2ee;
    }


/* =====================================================================
   DELETE BUTTON
   ===================================================================== */

[b-t5e4b6fdei] .obcb-del {
    color: #dc3545;
    background: #fff1f1;
    border-color: #f2b8bd;
}

    [b-t5e4b6fdei] .obcb-del:hover {
        color: #b42330;
        background: #ffe0e2;
        border-color: #e9999f;
    }


/* =====================================================================
   SAVE BUTTON
   ===================================================================== */

[b-t5e4b6fdei] .obcb-save {
    color: #218838;
    background: #edf9f0;
    border-color: #b9dfc1;
}

    [b-t5e4b6fdei] .obcb-save:hover {
        color: #176b2b;
        background: #d9f2df;
        border-color: #96cda1;
    }


/* =====================================================================
   CANCEL BUTTON
   ===================================================================== */

[b-t5e4b6fdei] .obcb-cancel {
    color: #59636f;
    background: #f1f3f5;
    border-color: #d5dae0;
}

    [b-t5e4b6fdei] .obcb-cancel:hover {
        color: #343a40;
        background: #e5e8eb;
        border-color: #c5cbd2;
    }


/* =====================================================================
   ADD ROW BUTTON
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-add-btn {
    height: 36px;
    min-width: 92px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 0 14px;
    border: 1px solid #1769d1;
    border-radius: 5px;
    background: #1769d1;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
    transition: background-color .15s ease, border-color .15s ease, transform .1s ease;
}

    [b-t5e4b6fdei] .cbspl-add-btn i {
        font-size: 11px;
    }

    [b-t5e4b6fdei] .cbspl-add-btn:hover {
        background: #0f5bb8;
        border-color: #0f5bb8;
    }

    [b-t5e4b6fdei] .cbspl-add-btn:active {
        transform: translateY(1px);
    }


/* =====================================================================
   LEDGER PICKER
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-picker-wrap {
    position: relative;
    width: 100%;
    min-width: 0;
}


/* If picker exposes this wrapper */

[b-t5e4b6fdei] .cbspl-ledpick {
    position: relative;
    width: 100%;
}


    /* Picker input */

    [b-t5e4b6fdei] .cbspl-ledpick input {
        width: 100%;
        height: 36px;
        min-height: 36px;
        box-sizing: border-box;
        margin: 0;
        padding: 6px 10px;
        border: 1px solid #cfd7e3;
        border-radius: 5px;
        background: #fff;
        color: #253247;
        font-size: 13px;
        line-height: 22px;
        outline: none;
    }

        [b-t5e4b6fdei] .cbspl-ledpick input:focus {
            border-color: #3b82f6;
            box-shadow: 0 0 0 2px rgba(59, 130, 246, .10);
        }

        [b-t5e4b6fdei] .cbspl-ledpick input:disabled {
            background: #f1f4f8 !important;
            color: #8a94a3 !important;
            border-color: #d9dee7 !important;
        }


/* =====================================================================
   LEDGER SUGGESTION LIST
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-ledpick-list {
    position: absolute;
    top: calc(100% + 3px);
    left: 0;
    right: 0;
    z-index: 1000;
    margin: 0;
    padding: 4px 0;
    list-style: none;
    background: #fff;
    border: 1px solid #d5dce6;
    border-radius: 5px;
    box-shadow: 0 8px 20px rgba(20, 30, 50, .15);
    max-height: 220px;
    overflow-y: auto;
}

    [b-t5e4b6fdei] .cbspl-ledpick-list li {
        min-height: 32px;
        display: flex;
        align-items: center;
        padding: 6px 10px;
        color: #263548;
        font-size: 12.5px;
        line-height: 18px;
        cursor: pointer;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        [b-t5e4b6fdei] .cbspl-ledpick-list li:hover {
            background: #f3f7fc;
        }

    [b-t5e4b6fdei] .cbspl-ledpick-list .cbspl-ledpick-msg {
        color: #94a3b8;
        cursor: default;
    }

        [b-t5e4b6fdei] .cbspl-ledpick-list .cbspl-ledpick-msg:hover {
            background: transparent;
        }


/* =====================================================================
   BS / PL SELECTOR
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-bspl-selector {
    display: flex;
    align-items: center;
    gap: 28px;
    margin: 5px 0 12px 5px;
    padding: 0;
    min-height: 32px;
}

[b-t5e4b6fdei] .cbspl-check {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    padding: 0;
    color: #263548;
    font-size: 13px;
    font-weight: 600;
    line-height: 20px;
    cursor: pointer;
}

    [b-t5e4b6fdei] .cbspl-check input {
        width: 16px;
        height: 16px;
        margin: 0;
        padding: 0;
        cursor: pointer;
        accent-color: #1769d1;
    }


/* =====================================================================
   FOOTER
   ===================================================================== */

[b-t5e4b6fdei] .bspl-footer {
    display: flex;
    align-items: center;
    min-height: 52px;
}

[b-t5e4b6fdei] .bspl-footer-left {
    display: flex;
    align-items: center;
    gap: 10px;
}

[b-t5e4b6fdei] .cbspl-footer-btn {
    min-height: 34px;
}

[b-t5e4b6fdei] .mu-foot-info {
    margin-left: 4px;
    color: #7b8794;
    font-size: 12px;
}


/* =====================================================================
   NO RECORDS
   ===================================================================== */

[b-t5e4b6fdei] .cbspl-no-records {
    height: 180px;
    text-align: center;
    vertical-align: middle !important;
}


/* =====================================================================
   RESPONSIVE
   ===================================================================== */

@media (max-width: 1200px) {

    [b-t5e4b6fdei] .cbspl-table {
        min-width: 1150px;
    }
}


@media (max-width: 900px) {

    [b-t5e4b6fdei] .mu-table-wrap {
        height: calc(100vh - 280px);
        min-height: 280px;
    }

    [b-t5e4b6fdei] .cbspl-table {
        min-width: 1100px;
    }

    [b-t5e4b6fdei] .cbspl-bspl-selector {
        gap: 18px;
    }
}
/* /Components/Pages/Others/Employee.razor.rz.scp.css */
/* ============================================================
   GAINS EMPLOYEE PAGE
   Bootstrap-style Employee Registration
   ============================================================ */

.employee-page[b-jju5p5jr9a] {
    height: 100%;
    display: flex;
    flex-direction: column;
}


/* ============================================================
   GRID
   ============================================================ */

.employee-grid-card[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}


.employee-table[b-jju5p5jr9a] {
    min-width: 1050px;
}


.employee-link[b-jju5p5jr9a] {
    background: transparent;
    border: 0;
    padding: 0;
    color: #1a56a7;
    cursor: pointer;
    font: inherit;
}


    .employee-link:hover[b-jju5p5jr9a] {
        text-decoration: underline;
    }


/* ============================================================
   FORM WRAPPER
   ============================================================ */

.employee-form-wrapper[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #ced4da;
    border-radius: 4px;
    overflow: hidden;
}


/* ============================================================
   FORM HEADER
   ============================================================ */

.employee-form-header[b-jju5p5jr9a] {
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px;
    background: #376091;
    color: #fff;
}


    .employee-form-header h2[b-jju5p5jr9a] {
        margin: 0;
        font-size: 15px;
        font-weight: 600;
    }


    .employee-form-header span[b-jju5p5jr9a] {
        font-size: 11px;
        opacity: .85;
    }


.employee-header-info[b-jju5p5jr9a] {
    display: flex;
    gap: 30px;
    align-items: center;
}


    .employee-header-info div[b-jju5p5jr9a] {
        display: flex;
        flex-direction: column;
    }


    .employee-header-info span[b-jju5p5jr9a] {
        font-size: 10px;
        opacity: .75;
    }


    .employee-header-info strong[b-jju5p5jr9a] {
        font-size: 12px;
        font-weight: 600;
    }


/* ============================================================
   FORM BODY
   ============================================================ */

.employee-form-body[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    display: flex;
    background: #fff;
}


/* ============================================================
   LEFT SIDEBAR
   ============================================================ */

.employee-sidebar[b-jju5p5jr9a] {
    width: 180px;
    flex-shrink: 0;
    border-right: 1px solid #dee2e6;
    background: #f8f9fa;
    padding: 8px 0;
    overflow-y: auto;
}


.employee-tab[b-jju5p5jr9a] {
    width: 100%;
    min-height: 35px;
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 7px 12px;
    border: 0;
    border-bottom: 1px solid #dee2e6;
    background: transparent;
    color: #343a40;
    text-align: left;
    font-size: 12px;
    cursor: pointer;
    transition: background .15s ease;
}


    .employee-tab i[b-jju5p5jr9a] {
        width: 16px;
        text-align: center;
        color: #6c757d;
    }


    .employee-tab:hover[b-jju5p5jr9a] {
        background: #e9ecef;
    }


    .employee-tab.active[b-jju5p5jr9a] {
        background: #376091;
        color: #fff;
        font-weight: 600;
    }


        .employee-tab.active i[b-jju5p5jr9a] {
            color: #fff;
        }


/* ============================================================
   FORM CONTENT
   ============================================================ */

.employee-content[b-jju5p5jr9a] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}


.employee-section[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    padding: 16px 20px;
    overflow-y: auto;
}


.employee-section-title[b-jju5p5jr9a] {
    font-size: 13px;
    font-weight: 600;
    color: #376091;
    border-bottom: 1px solid #dee2e6;
    padding-bottom: 7px;
    margin-bottom: 16px;
}


/* ============================================================
   BOOTSTRAP FORM OVERRIDES
   ============================================================ */

.employee-section .form-label[b-jju5p5jr9a] {
    margin-bottom: 4px;
    font-size: 12px;
    font-weight: 500;
    color: #343a40;
}


.employee-section .form-control[b-jju5p5jr9a],
.employee-section .form-select[b-jju5p5jr9a] {
    min-height: 32px;
    padding: 5px 8px;
    font-size: 12px;
    border-color: #ced4da;
    border-radius: 3px;
}


.employee-section textarea.form-control[b-jju5p5jr9a] {
    min-height: 75px;
    resize: vertical;
}


.employee-section .form-control:focus[b-jju5p5jr9a],
.employee-section .form-select:focus[b-jju5p5jr9a] {
    border-color: #80bdff;
    box-shadow: 0 0 0 .15rem rgba(13,110,253,.12);
}


.employee-readonly[b-jju5p5jr9a] {
    background-color: #f5f5f5;
}


/* ============================================================
   SUB CARDS
   ============================================================ */

.employee-sub-card[b-jju5p5jr9a] {
    margin-top: 18px;
    padding: 14px;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    background: #fafafa;
}


.employee-sub-title[b-jju5p5jr9a] {
    margin-bottom: 12px;
    font-size: 12px;
    font-weight: 600;
    color: #376091;
}


/* ============================================================
   FORM FOOTER
   ============================================================ */

.employee-form-footer[b-jju5p5jr9a] {
    flex-shrink: 0;
    min-height: 48px;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 12px;
    border-top: 1px solid #dee2e6;
    background: #f8f9fa;
}


    .employee-form-footer .btn[b-jju5p5jr9a] {
        font-size: 12px;
        padding: 5px 12px;
    }


        .employee-form-footer .btn i[b-jju5p5jr9a] {
            margin-right: 4px;
        }


/* ============================================================
   TOAST
   ============================================================ */

.employee-page .mu-toast[b-jju5p5jr9a] {
    z-index: 2000;
}


/* ============================================================
   MOBILE
   ============================================================ */

@media (max-width: 767px) {

    .employee-form-header[b-jju5p5jr9a] {
        align-items: flex-start;
        gap: 10px;
    }


    .employee-header-info[b-jju5p5jr9a] {
        display: none;
    }


    .employee-form-body[b-jju5p5jr9a] {
        flex-direction: column;
    }


    .employee-sidebar[b-jju5p5jr9a] {
        width: 100%;
        display: flex;
        overflow-x: auto;
        overflow-y: hidden;
        border-right: 0;
        border-bottom: 1px solid #dee2e6;
        padding: 0;
    }


    .employee-tab[b-jju5p5jr9a] {
        flex: 0 0 auto;
        width: auto;
        min-width: 110px;
        justify-content: center;
        border-bottom: 0;
        border-right: 1px solid #dee2e6;
        padding: 9px 12px;
    }


        .employee-tab span[b-jju5p5jr9a] {
            white-space: nowrap;
        }


    .employee-section[b-jju5p5jr9a] {
        padding: 12px;
    }


    .employee-form-footer[b-jju5p5jr9a] {
        flex-wrap: wrap;
    }


        .employee-form-footer .ms-auto[b-jju5p5jr9a] {
            margin-left: 0 !important;
        }
}
.employee-grid-container[b-jju5p5jr9a] {
    height: calc(100vh - 180px);
    min-height: 400px;
    display: flex;
    flex-direction: column;
    border: 1px solid #ddd;
    background: #fff;
}

.employee-table-wrapper[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.employee-table[b-jju5p5jr9a] {
    width: 100%;
    border-collapse: collapse;
}

    .employee-table thead th[b-jju5p5jr9a] {
        position: sticky;
        top: 0;
        z-index: 10;
        background: #f5f5f5;
        border-bottom: 1px solid #ddd;
        padding: 10px 12px;
        text-align: left;
        white-space: nowrap;
    }

    .employee-table tbody td[b-jju5p5jr9a] {
        padding: 9px 12px;
        border-bottom: 1px solid #eee;
        white-space: nowrap;
    }

    .employee-table tbody tr:hover[b-jju5p5jr9a] {
        background: #f8f8f8;
    }

/* Bottom footer */
.employee-grid-footer[b-jju5p5jr9a] {
    flex-shrink: 0;
    min-height: 52px;
    padding: 8px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 1px solid #ddd;
    background: #fff;
}

.footer-left[b-jju5p5jr9a] {
    display: flex;
    align-items: center;
}

.footer-right[b-jju5p5jr9a] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.page-size-select[b-jju5p5jr9a] {
    height: 32px;
    min-width: 65px;
    padding: 3px 8px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background: #fff;
}

.page-btn[b-jju5p5jr9a] {
    width: 32px;
    height: 32px;
    border: 1px solid #ccc;
    background: #fff;
    border-radius: 4px;
    cursor: pointer;
}

    .page-btn:hover:not(:disabled)[b-jju5p5jr9a] {
        background: #f2f2f2;
    }

    .page-btn:disabled[b-jju5p5jr9a] {
        opacity: 0.45;
        cursor: not-allowed;
    }

.page-number[b-jju5p5jr9a] {
    min-width: 90px;
    text-align: center;
}
.employee-grid-row[b-jju5p5jr9a] {
    cursor: pointer;
    transition: background-color 0.15s ease;
}

    .employee-grid-row:hover[b-jju5p5jr9a] {
        background-color: #f3f6fa;
    }
.mu-page[b-jju5p5jr9a] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}


/* =========================================================
   CARD
   ========================================================= */

.mu-card[b-jju5p5jr9a] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
}


/* =========================================================
   TOOLBAR
   ========================================================= */

.mu-toolbar[b-jju5p5jr9a] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: #fff;
    border-bottom: 1px solid #dee2e6;
}


/* Search */

.mu-search[b-jju5p5jr9a] {
    position: relative;
    width: 320px;
    max-width: 100%;
}

    .mu-search i[b-jju5p5jr9a] {
        position: absolute;
        left: 12px;
        top: 50%;
        transform: translateY(-50%);
        color: #6c757d;
        pointer-events: none;
    }

    .mu-search input[b-jju5p5jr9a] {
        padding-left: 36px;
        height: 38px;
        border: 1px solid #ced4da;
        border-radius: 0.375rem;
        font-size: 14px;
    }

        .mu-search input:focus[b-jju5p5jr9a] {
            border-color: #86b7fe;
            outline: 0;
            box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, .25);
        }


/* =========================================================
   TABLE CONTAINER
   ========================================================= */

.mu-table-wrap[b-jju5p5jr9a] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}


/* =========================================================
   TABLE
   ========================================================= */

.employee-table[b-jju5p5jr9a] {
    width: 100%;
    min-width: 1100px;
    margin-bottom: 0;
    font-size: 14px;
}


    /* Header */

    .employee-table thead th[b-jju5p5jr9a] {
        position: sticky;
        top: 0;
        z-index: 5;
        padding: 10px 14px;
        background: #f8f9fa;
        color: #495057;
        font-size: 13px;
        font-weight: 600;
        white-space: nowrap;
        border-bottom: 1px solid #dee2e6;
    }


    /* Body */

    .employee-table tbody td[b-jju5p5jr9a] {
        padding: 10px 14px;
        vertical-align: middle;
        white-space: nowrap;
        border-bottom: 1px solid #edf0f2;
    }


/* =========================================================
   ROW
   ========================================================= */

.employee-row[b-jju5p5jr9a] {
    cursor: pointer;
    transition: background-color .15s ease, box-shadow .15s ease;
}

    .employee-row:hover[b-jju5p5jr9a] {
        background-color: #f8f9fa !important;
    }


/* Employee ID */

.employee-id[b-jju5p5jr9a] {
    font-weight: 600;
    color: #0d6efd;
}


/* =========================================================
   FOOTER
   ========================================================= */

.mu-foot[b-jju5p5jr9a] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 52px;
    padding: 8px 16px;
    background: #fff;
    border-top: 1px solid #dee2e6;
}


.footer-left[b-jju5p5jr9a] {
    color: #6c757d;
    font-size: 13px;
}


    .footer-left strong[b-jju5p5jr9a] {
        color: #212529;
    }


.footer-right[b-jju5p5jr9a] {
    display: flex;
    align-items: center;
}


.mu-pager[b-jju5p5jr9a] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    color: #6c757d;
}


/* Page size */

.page-size-select[b-jju5p5jr9a] {
    width: 75px;
    height: 32px;
    font-size: 13px;
}


/* Page buttons */

.mu-pager .btn[b-jju5p5jr9a] {
    width: 32px;
    height: 32px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}


/* Page number */

.page-number[b-jju5p5jr9a] {
    white-space: nowrap;
    color: #495057;
}


/* =========================================================
   LOADING
   ========================================================= */

.employee-table .spinner-border[b-jju5p5jr9a] {
    vertical-align: middle;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 767px) {

    .mu-toolbar[b-jju5p5jr9a] {
        padding: 10px;
    }

    .mu-search[b-jju5p5jr9a] {
        width: 100%;
    }

    .mu-foot[b-jju5p5jr9a] {
        padding: 8px 10px;
    }

    .mu-foot-info[b-jju5p5jr9a] {
        display: none;
    }

    .mu-pager[b-jju5p5jr9a] {
        gap: 6px;
    }

        .mu-pager > span:first-child[b-jju5p5jr9a] {
            display: none;
        }

    .employee-table[b-jju5p5jr9a] {
        min-width: 1100px;
    }
}
/* /Components/Pages/Others/FrmGST.razor.rz.scp.css */
/* =====================================================================
   GST.razor.css
   Header (bspl-title-block), footer (bspl-footer), tabs (le-toptabs),
   table (mu-table), and filter drawer (mu-drawer/mu-fld) all come from
   the shared common-page-chrome.css / masters-forms.css — same as ITB.
   Only GST-specific bits (dashboard tiles, checklist cards, status
   groups, numeric column alignment) live here.
   ===================================================================== */

/* Page-end footer pinning — same pattern as ITB/MLedger/MGroup/Daybook/BSPL. */
.gst-page[b-bzwnqhqljm] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden; /* keep footer/pagination pinned in view — only .mu-table-wrap scrolls */
}

.gst-toptabs[b-bzwnqhqljm] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

/* Tab button look — defined here (not relying on a shared "le-toptab" style, which turned out
   to carry no visuals of its own; ITB's tabs only looked right because ITB.razor.css styled
   ".itb-toptabs button" directly, and Blazor's CSS isolation scopes that rule to ITB alone). */
.gst-toptab[b-bzwnqhqljm] {
    padding: 7px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background .12s, color .12s, border-color .12s;
}

    .gst-toptab i[b-bzwnqhqljm] {
        font-size: 12px;
    }

    .gst-toptab:hover[b-bzwnqhqljm] {
        background: #f5f5f5;
    }

    .gst-toptab.active[b-bzwnqhqljm] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }

/* UPLOAD / FILE — visible, faded, not clickable (no backing endpoint yet). */
.gst-toptab-disabled[b-bzwnqhqljm] {
    opacity: .45;
    cursor: not-allowed;
}

    .gst-toptab-disabled:hover[b-bzwnqhqljm] {
        background: #fff;
    }

.gst-page .mu-card[b-bzwnqhqljm] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0 16px;
}

.gst-page .mu-table-wrap[b-bzwnqhqljm] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

/* bspl-footer (Total Records + pager) is a direct child of .gst-page, after the flexed
   .mu-card — pin it, don't let it get squeezed/pushed out of view. */
.gst-page .bspl-footer[b-bzwnqhqljm] {
    flex-shrink: 0;
    position: relative;
    z-index: 5; /* sit above the drawer overlay strip, see .mu-drawer override below */
}

/* BUG FIX: pager was rendering (DOM had it) but sat visually UNDER the open filter drawer —
   .mu-drawer is a full-height (top:0/bottom:0) fixed panel from the shared masters-forms.css,
   so it covered the page's bottom-right corner, exactly where the pager lives. Trimming the
   drawer's bottom edge to clear the footer strip (~46px) fixes it without touching the shared
   CSS file. If the shared drawer height/z-index changes later this may need re-checking —
   I don't have that source, only what's inferable from ITB/this page's rendered behavior.
   Only kicks in on the drawer, override is scoped to this page. */
.mu-drawer[b-bzwnqhqljm] {
    bottom: 46px;
    /* BUG: was z-index:3 — sat BELOW the shared .mu-drawer-overlay backdrop (its own z-index,
       from masters-forms.css, is higher), so clicks anywhere on the drawer — OTHERS tab,
       radios, selects, everything — actually landed on the overlay behind it, which closes
       the drawer on click. Bumped high enough to clear any reasonable overlay z-index; the
       bottom:46px trim above is what keeps the footer/pager clear, unrelated to this. */
    z-index: 1000;
}

.mu-drawer-overlay[b-bzwnqhqljm] {
    z-index: 999;
}

.gst-nopager-note[b-bzwnqhqljm] {
    font-size: 11.5px;
    color: #8a93a3;
}

/* ── "Page No :" pager, ITB-style box+arrow instead of "Page X of Y" text.
   Defined locally (not relying on shared .mu-pager/.mu-nav carrying this look) — same
   isolation lesson as .gst-toptab above: this markup is rendered by THIS component, so a
   local rule is guaranteed to apply regardless of what the shared CSS does or doesn't style. ── */
.gst-pager[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.gst-pageno-label[b-bzwnqhqljm] {
    font-size: 12px;
    color: #555;
    white-space: nowrap;
}

.gst-pageno-input[b-bzwnqhqljm] {
    width: 52px;
    padding: 4px 6px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    text-align: center;
    font-family: inherit;
    font-size: 12.5px;
    color: #1a2537;
}

    .gst-pageno-input:focus[b-bzwnqhqljm] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

.gst-pager .mu-nav[b-bzwnqhqljm] {
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    background: #fff;
    color: #555;
    cursor: pointer;
}

    .gst-pager .mu-nav:disabled[b-bzwnqhqljm] {
        opacity: .45;
        cursor: not-allowed;
    }

    .gst-pager .mu-nav:not(:disabled):hover[b-bzwnqhqljm] {
        background: #f5f5f5;
        border-color: #1ab99a;
        color: #1ab99a;
    }

/* ── "FILTERS (n)" button turns red once a filter is active — same red badge as ITB's
   FILTERS button. Rendered by this component (bspl-title-actions), so styled locally same
   as the tab/pager fixes above rather than trusting the shared button class to carry it. ── */
.bspl-filter-toggle.has-filter[b-bzwnqhqljm] {
    background: #c0392b !important;
    border-color: #c0392b !important;
    color: #fff !important;
}

    .bspl-filter-toggle.has-filter:hover[b-bzwnqhqljm] {
        background: #a83226 !important;
        border-color: #a83226 !important;
    }

.gst-otp-raw[b-bzwnqhqljm] {
    margin: 6px 0 0;
    padding: 8px;
    background: #1a2537;
    color: #b7e6d9;
    font-size: 10.5px;
    font-family: Consolas, monospace;
    border-radius: 4px;
    max-height: 120px;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-all;
}

.gst-error[b-bzwnqhqljm] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Toolbar row (month picker on Dashboard tab, exception-type picker on Exceptions tab) ── */
.gst-toolbar[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
    flex-shrink: 0;
}

.gst-select[b-bzwnqhqljm] {
    padding: 5px 10px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    font-family: inherit;
    color: #333;
}

    .gst-select:focus[b-bzwnqhqljm] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

/* ── Numeric column alignment (not defined globally in masters-forms.css) ── */
.mu-table thead th.num[b-bzwnqhqljm],
.gst-dyn-table thead th.num[b-bzwnqhqljm] {
    text-align: right;
}

.mu-table td.num[b-bzwnqhqljm],
.gst-dyn-table td.num[b-bzwnqhqljm] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.gst-total-row td[b-bzwnqhqljm] {
    font-weight: 700;
    background: #f5f8f7;
}

/* ── Dashboard tab: summary tiles ── */
.gst-dash-card[b-bzwnqhqljm] {
    padding: 16px;
    overflow: auto;
    gap: 16px;
}

/* .gst-tile-row/.gst-tile* removed — Status tab's top tiles now use the Dash-style
   .gst-dash-stat table (.gst-status-topstat below) instead. */

/* ── Dashboard tab: legacy-style layout — 3 GSTR cards left, stat grid right ── */
.gst-dash-layout[b-bzwnqhqljm] {
    display: flex;
    gap: 18px;
    align-items: flex-start;
}

.gst-dash-left[b-bzwnqhqljm] {
    flex: 1 1 66%;
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

.gst-gstr-card[b-bzwnqhqljm] {
    border: 1px solid #e5e8ec;
    border-radius: 5px;
    background: #fff;
    overflow: hidden;
}

.gst-gstr-hdr[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    background-image: linear-gradient(to left, rgba(126,179,148,0.25), rgba(126,179,148,0.05), rgba(126,179,148,0.05), rgba(130,202,215,0.25));
    font-size: 13.5px;
    font-weight: 600;
    color: #1a2537;
    white-space: pre;
}

    .gst-gstr-hdr i[b-bzwnqhqljm] {
        font-size: 12px;
        color: #8a93a3;
    }

.gst-gstr-body[b-bzwnqhqljm] {
    padding: 4px 16px;
}

.gst-gstr-row[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 9px 0;
    border-bottom: 1px solid #f1f2f4;
    font-size: 13px;
    color: #333;
}

    .gst-gstr-row:last-child[b-bzwnqhqljm] {
        border-bottom: none;
    }

.gst-gstr-idx[b-bzwnqhqljm] {
    width: 18px;
    color: #8a93a3;
    flex-shrink: 0;
}

.gst-gstr-label[b-bzwnqhqljm] {
    flex: 1;
    min-width: 0;
}

.gst-gstr-status[b-bzwnqhqljm] {
    color: #f8ac59;
    font-weight: 600;
    flex-shrink: 0;
    width: 70px;
}

.gst-gstr-due[b-bzwnqhqljm] {
    color: #f8ac59;
    flex-shrink: 0;
    width: 110px;
    text-align: right;
}

.gst-dash-right[b-bzwnqhqljm] {
    flex: 0 0 340px;
    display: flex;
    gap: 14px;
}

.gst-dash-stat[b-bzwnqhqljm] {
    flex: 1;
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

    .gst-dash-stat td[b-bzwnqhqljm] {
        padding: 9px 4px;
        border-bottom: 1px solid #f1f2f4;
        color: #333;
    }

        .gst-dash-stat td.num[b-bzwnqhqljm] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

.gst-dash-stat-total td[b-bzwnqhqljm] {
    background: #eef0f0;
    font-weight: 700;
}

@media (max-width: 991px) {
    .gst-dash-layout[b-bzwnqhqljm] {
        flex-direction: column;
    }

    .gst-dash-right[b-bzwnqhqljm] {
        flex: 1 1 auto;
    }
}

/* ── Summary tab ── */
.gst-summary-table td[b-bzwnqhqljm],
.gst-vtype-table td[b-bzwnqhqljm] {
    font-size: 12.5px;
}

/* ── Exceptions tab: site details strip ── */
.gst-sitecard[b-bzwnqhqljm] {
    flex-direction: row !important;
    flex-wrap: wrap;
    gap: 16px;
    padding: 12px 16px;
    margin: 0 16px 12px;
    flex: 0 0 auto !important;
}

.gst-sitefield[b-bzwnqhqljm] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 120px;
}

.gst-sitefield-label[b-bzwnqhqljm] {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: #8a93a3;
}

.gst-sitefield-value[b-bzwnqhqljm] {
    font-size: 12.5px;
    color: #1a2537;
}

/* ── Status tab ── */
.gst-status-card[b-bzwnqhqljm] {
    padding: 16px;
    overflow: auto;
}

/* Top stat-grid, Dash-style — wraps a <table class="gst-dash-stat"> (that class's rules live
   above, shared with the Dash tab) so both tabs' summary numbers look like one system. */
.gst-status-topstat[b-bzwnqhqljm] {
    max-width: 420px;
    margin-bottom: 18px;
}

/* GstStatusGroup used to be a separate component (with its own .razor.css, since a page's
   .razor.css can't reach a child component's markup — CSS isolation). Folded inline into
   FrmGST.razor now, so these rules apply directly, no separate file needed. Card look matches
   the Dash tab's gst-gstr-card (gradient header + bordered row list) — one visual language
   across tabs. */
.gst-statusgroup[b-bzwnqhqljm] {
    margin-top: 16px;
}

.gst-statusgroup-title[b-bzwnqhqljm] {
    margin: 0 0 8px;
    font-size: 12.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: #1ab99a;
}

.gst-statusgroup-empty[b-bzwnqhqljm] {
    font-size: 12px;
    color: #8a93a3;
}

.gst-statusgroup-grid[b-bzwnqhqljm] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.gst-statuscard[b-bzwnqhqljm] {
    flex: 1 1 220px;
    min-width: 200px;
    border: 1px solid #e5e8ec;
    border-radius: 5px;
    background: #fff;
    overflow: hidden;
}

.gst-statuscard-hdr[b-bzwnqhqljm] {
    padding: 8px 14px;
    background-image: linear-gradient(to left, rgba(126,179,148,0.25), rgba(126,179,148,0.05), rgba(126,179,148,0.05), rgba(130,202,215,0.25));
    font-size: 12.5px;
    font-weight: 600;
    color: #1a2537;
}

.gst-statuscard-body[b-bzwnqhqljm] {
    padding: 4px 14px;
}

.gst-statuscard-row[b-bzwnqhqljm] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 11.5px;
    color: #555;
    padding: 6px 0;
    border-bottom: 1px solid #f1f2f4;
}

    .gst-statuscard-row:last-child[b-bzwnqhqljm] {
        border-bottom: none;
    }

/* ── Drawer header: "GST FILTERS" / "OTHERS" tab pair, matches legacy shell ── */
.mu-drawer-hdr[b-bzwnqhqljm] {
    gap: 6px;
}

.gst-hdr-tab[b-bzwnqhqljm] {
    font-size: 11px;
    font-weight: 700;
    padding: 5px 10px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #f4f6f7;
    color: #555;
    cursor: pointer;
}

    .gst-hdr-tab.active[b-bzwnqhqljm] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
    }

    .gst-hdr-tab:last-of-type[b-bzwnqhqljm] {
        margin-right: auto;
    }

/* ── OTHERS drawer body: EXCEL export grid + EXCEPTION buttons ── */
.gst-others-section-title[b-bzwnqhqljm] {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .4px;
    color: #8a93a3;
    margin: 14px 0 8px;
}

    .gst-others-section-title:first-child[b-bzwnqhqljm] {
        margin-top: 0;
    }

.gst-others-btn-grid[b-bzwnqhqljm] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

.gst-others-btn-grid-wide[b-bzwnqhqljm] {
    grid-template-columns: 1fr;
}

.gst-others-btn[b-bzwnqhqljm] {
    padding: 8px 10px;
    font-size: 11.5px;
    font-weight: 600;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #f4f6f7;
    color: #555;
    cursor: pointer;
}

    .gst-others-btn:hover[b-bzwnqhqljm] {
        background: #e9f7f4;
        border-color: #1ab99a;
    }

    .gst-others-btn.active[b-bzwnqhqljm] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

    .gst-others-btn:disabled[b-bzwnqhqljm] {
        opacity: .55;
        cursor: not-allowed;
    }

/* Grid footer's "Excel" button + "no paging" note, section mode only. */
.gst-section-footer[b-bzwnqhqljm] {
    gap: 10px;
}

.gst-others-hint[b-bzwnqhqljm] {
    font-size: 11px;
    color: #8a93a3;
    margin: -6px 0 10px;
}

/* Collapsed-by-default MasterGST/OTP section — <details>/<summary>, no JS needed. */
.gst-others-advanced[b-bzwnqhqljm] {
    margin: 14px 0;
    border: 1px solid #e5e8ec;
    border-radius: 5px;
    background: #fafbfb;
    padding: 2px 10px;
}

    .gst-others-advanced summary[b-bzwnqhqljm] {
        cursor: pointer;
        font-size: 11px;
        font-weight: 700;
        letter-spacing: .3px;
        color: #8a93a3;
        padding: 8px 0;
        list-style: none;
    }

        .gst-others-advanced summary[b-bzwnqhqljm]::-webkit-details-marker {
            display: none;
        }

        .gst-others-advanced summary[b-bzwnqhqljm]::before {
            content: "▸ ";
        }

    .gst-others-advanced[open] summary[b-bzwnqhqljm]::before {
        content: "▾ ";
    }

    .gst-others-advanced[open][b-bzwnqhqljm] {
        padding-bottom: 10px;
    }

.gst-others-btn-exc[b-bzwnqhqljm] {
    background: #fdf3f3;
    border-color: #e7c6c6;
    color: #c0392b;
    text-align: left;
}

    .gst-others-btn-exc:hover[b-bzwnqhqljm] {
        background: #fbe4e4;
        border-color: #c0392b;
    }

    .gst-others-btn-exc.active[b-bzwnqhqljm] {
        background: #c0392b;
        border-color: #c0392b;
        color: #fff;
    }

/* ── Badge + "Back to Invoices" row above the grid, when showing Exceptions/OTHERS-section
   data — badge left, back button pushed to the far right. ── */
.gst-grid-toolbar[b-bzwnqhqljm] {
    justify-content: space-between;
}

.gst-back-btn[b-bzwnqhqljm] {
    margin-left: auto;
}

.gst-exc-badge[b-bzwnqhqljm] {
    font-size: 11.5px;
    font-weight: 700;
    color: #c0392b;
    text-transform: uppercase;
    letter-spacing: .3px;
}

/* ── Mobile ── */
@media (max-width: 767px) {
    .gst-page .mu-card[b-bzwnqhqljm] {
        margin: 0 10px;
    }

    .gst-sitecard[b-bzwnqhqljm] {
        margin: 0 10px 12px;
    }

    .gst-toolbar[b-bzwnqhqljm] {
        flex-wrap: wrap;
    }

    .gst-others-btn-grid[b-bzwnqhqljm] {
        grid-template-columns: 1fr;
    }
}

/* Click-to-sort grid headers — replaces the old drawer "Sort By"/"Sort Order" fields.
   Plain clickable text only: no hover-highlight, no icon, no header cell divider — those
   came from the shared mu-table th border/hover rule (meant for light-background tables)
   fighting with this table's dark header, so they're killed off explicitly, scoped to just
   this table via CSS isolation (only .gst-dyn-table on THIS page is affected). */
.gst-dyn-table thead th[b-bzwnqhqljm] {
    border-right: none;
    border-left: none;
}

.gst-th-sort[b-bzwnqhqljm] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.gst-dyn-table thead th:hover[b-bzwnqhqljm],
.gst-dyn-table thead th.gst-th-sort:hover[b-bzwnqhqljm] {
    background-color: inherit;
}
/* /Components/Pages/Others/MBillsPending.razor.rz.scp.css */
/* =====================================================================
   GAINS — MBillsPending.razor.css   (Transactions → Bills Pending, page-scoped)
   Shared "mu-"/"bspl-" chrome lives in wwwroot/CSS/masters-forms.css; .t-page
   on the root wrapper gives this the transaction blue header treatment.
   The db-table/ch-* classes below are redeclared verbatim from
   ChallanGrid.razor.css — Blazor CSS isolation means that file's rules
   can't reach this page, so every transaction-grid page keeps its own
   copy (same convention already established there).
   ===================================================================== */

.bp-page[b-8vo7um1myz] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .bp-page .mu-card[b-8vo7um1myz] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .bp-page .mu-toolbar[b-8vo7um1myz] {
        flex-shrink: 0;
    }

    .bp-page .mu-table-wrap[b-8vo7um1myz] {
        flex: 1;
        overflow: auto;
        min-height: 0;
    }

.mu-foot[b-8vo7um1myz] {
    flex-shrink: 0;
}

.mu-pager[b-8vo7um1myz] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Toolbar: search + totals chips ── */
.bp-toolbar[b-8vo7um1myz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.bp-totals[b-8vo7um1myz] {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.bp-total-chip[b-8vo7um1myz] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #475569;
    font-size: 11.5px;
    font-weight: 600;
}

    .bp-total-chip strong[b-8vo7um1myz] {
        color: #0f172a;
        font-weight: 700;
    }

.bp-total-net[b-8vo7um1myz] {
    background: #e8f8f4;
    color: #0f766e;
}

    .bp-total-net strong[b-8vo7um1myz] {
        color: #0f766e;
    }

/* ── Table density/striping — copied verbatim from ChallanGrid.razor.css's .db-table ── */
.db-table[b-8vo7um1myz] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .db-table th[b-8vo7um1myz] {
        text-align: left;
        padding: 8px 10px;
        border-bottom: 1px solid #ddd;
        position: sticky;
        top: 0;
        z-index: 3;
        /* background: #fff;*/
    }

    .db-table td[b-8vo7um1myz] {
        padding: 6px 10px;
        border-bottom: 1px solid #f2f2f2;
    }

    .db-table tfoot td[b-8vo7um1myz] {
        position: sticky;
        bottom: 0;
        z-index: 3;
        background: #e8e8e8;
    }

.db-row-even[b-8vo7um1myz] {
    background: #ffffff;
}

.db-row-odd[b-8vo7um1myz] {
    background: #f5fafa;
}

.db-table tbody tr:hover[b-8vo7um1myz] {
    background: #e8f5f0;
}

/* ── Numeric columns — right-aligned, tabular figures. The .db-table-th
   override matches ChallanGrid's own specificity fix (".db-table th" beats
   plain ".ch-num" otherwise, silently left-aligning header cells). ── */
.ch-num[b-8vo7um1myz] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.db-table th.ch-num[b-8vo7um1myz] {
    text-align: right;
}

/* ── Type badge (wType/wTypeAlias, colored via wColor from the API) ── */
.ch-type-badge[b-8vo7um1myz] {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.ch-party[b-8vo7um1myz] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Grand/page total row — sticky to the bottom of the scroll area ── */
.ch-total-row[b-8vo7um1myz] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #eef4fb;
    font-weight: 700;
    color: #1a2537;
}

    .ch-total-row td[b-8vo7um1myz] {
        border-top: 2px solid #306B9C;
    }

@media (max-width: 767px) {
    .bp-page .mu-toolbar[b-8vo7um1myz] {
        flex-wrap: wrap;
    }

    .ch-party[b-8vo7um1myz] {
        max-width: 120px;
    }
}
.ql-lp-search-row[b-8vo7um1myz] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ql-lp-search-row .uf-input[b-8vo7um1myz] {
    flex: 1;
    min-width: 0;
}

.ql-lp-search-row .mu-btn[b-8vo7um1myz] {
    flex: 0 0 auto;
    white-space: nowrap;
}
.theadebg[b-8vo7um1myz] {
    background-color: #306B9C;
    color: #fff;
}
.ql-led-btn[b-8vo7um1myz] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}
.gcp-trigger[b-8vo7um1myz] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-8vo7um1myz] {
        background: #f5f5f5;
        border-color: #bbb;
    }
.gcp-icon[b-8vo7um1myz] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/* /Components/Pages/Others/MCostCenterGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCostCenterGrid.razor.css   (Transactions → Cost Center Grid, page-scoped)
   Shared "mu-"/"bspl-" chrome lives in wwwroot/CSS/masters-forms.css; .t-page
   on the root wrapper gives this the transaction blue header treatment.
   The db-table/ch-* classes below are redeclared verbatim from
   ChallanGrid.razor.css / MBillsPending.razor.css — Blazor CSS isolation
   means those files' rules can't reach this page.
   ===================================================================== */

.cc-page[b-3mjh8tw3lh] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .cc-page .mu-card[b-3mjh8tw3lh] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .cc-page .mu-toolbar[b-3mjh8tw3lh] {
        flex-shrink: 0;
    }

    .cc-page .mu-table-wrap[b-3mjh8tw3lh] {
        flex: 1;
        overflow: auto;
        min-height: 0;
    }

.mu-foot[b-3mjh8tw3lh] {
    flex-shrink: 0;
}

.mu-pager[b-3mjh8tw3lh] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* ── Toolbar: search + record count ── */
.cc-toolbar[b-3mjh8tw3lh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

/* ── Details / Pivot toggle buttons inside the filter drawer ── */
.cc-mode-toggle[b-3mjh8tw3lh] {
    display: flex;
    gap: 8px;
}

.cc-mode-btn[b-3mjh8tw3lh] {
    flex: 1;
    background: #fff;
    border: 1px solid #d5d5d5;
    color: #555;
    padding: 7px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    transition: all .12s;
}

    .cc-mode-btn:hover[b-3mjh8tw3lh] {
        background: #f5f5f5;
    }

    .cc-mode-btn.active[b-3mjh8tw3lh] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* ── Table density/striping — copied verbatim from MBillsPending.razor.css's .db-table ── */
.db-table[b-3mjh8tw3lh] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .db-table th[b-3mjh8tw3lh] {
        text-align: left;
        padding: 8px 10px;
        border-bottom: 1px solid #ddd;
        position: sticky;
        top: 0;
        z-index: 3;
        /*background: #fff;*/
    }

    .db-table td[b-3mjh8tw3lh] {
        padding: 6px 10px;
        border-bottom: 1px solid #f2f2f2;
    }

    .db-table tfoot td[b-3mjh8tw3lh] {
        position: sticky;
        bottom: 0;
        z-index: 3;
        background: #e8e8e8;
    }

.db-row-even[b-3mjh8tw3lh] {
    background: #ffffff;
}

.db-row-odd[b-3mjh8tw3lh] {
    background: #f5fafa;
}

.db-table tbody tr:hover[b-3mjh8tw3lh] {
    background: #e8f5f0;
}

.ch-num[b-3mjh8tw3lh] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.db-table th.ch-num[b-3mjh8tw3lh] {
    text-align: right;
}

.ch-type-badge[b-3mjh8tw3lh] {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.ch-party[b-3mjh8tw3lh] {
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ch-total-row[b-3mjh8tw3lh] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #eef4fb;
    font-weight: 700;
    color: #1a2537;
}

    .ch-total-row td[b-3mjh8tw3lh] {
        border-top: 2px solid #306B9C;
    }

/* ── "C" clear-dates button next to To Date — copied verbatim from ChallanGrid.razor.css ── */
.ch-date-clear-btn[b-3mjh8tw3lh] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    background: #fff;
    color: #555;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
}

    .ch-date-clear-btn:hover[b-3mjh8tw3lh] {
        background: #f5f5f5;
        border-color: #1ab394;
        color: #1ab394;
    }

@media (max-width: 767px) {
    .cc-page .mu-toolbar[b-3mjh8tw3lh] {
        flex-wrap: wrap;
    }

    .ch-party[b-3mjh8tw3lh] {
        max-width: 120px;
    }
}
.gcp-trigger[b-3mjh8tw3lh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-3mjh8tw3lh] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-3mjh8tw3lh] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/* /Components/Pages/Others/MCustomerEntry.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCustomerEntry.razor.css   (Customer Profile entry page)
   Shared "uf-" field/button styles live in wwwroot/CSS/masters-forms.css
   (normally used inside edit modals) — reused here directly on the page
   since this form is big enough to warrant its own full page rather than
   a modal. Section headers, two-column layout, and address/photo blocks
   are page-specific and defined here.
   ===================================================================== */

.mu-page[b-1jlxszipsx] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.cust-card[b-1jlxszipsx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

.cust-body[b-1jlxszipsx] {
    flex: 1;
    overflow-y: auto;
    padding: 20px 24px;
}

/* ── Top row: Customer Type / GSTIN / Date, and Is Active / Grade / Rating ── */
.cust-top-row[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 14px;
}

.cust-readonly-date .cust-static[b-1jlxszipsx] {
    padding: 9px 12px;
    color: #64748b;
    font-size: 14px;
}

.cust-checkbox-fld label[b-1jlxszipsx] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 500;
    color: #334155;
    padding-top: 26px;
}

.cust-checkbox-fld input[type="checkbox"][b-1jlxszipsx] {
    width: 16px;
    height: 16px;
}

/* ── Section header bars ── */
.cust-section-hdr[b-1jlxszipsx] {
    background: #2f5f8a;
    color: #fff;
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.02em;
    padding: 8px 14px;
    border-radius: 6px;
    margin: 22px 0 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.cust-dispatch-hdr .cust-same-as[b-1jlxszipsx] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 400;
    font-size: 13px;
}

.cust-same-as input[type="checkbox"][b-1jlxszipsx] {
    width: 14px;
    height: 14px;
}

/* ── Two-column field grid (Personal Info / Marital Info) ── */
.cust-2col[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 24px;
}

.cust-2col .uf-field[b-1jlxszipsx] {
    margin-bottom: 0;
}

/* Mobile number: fixed-width ISD code + number, side by side */
.cust-mobile-wrap[b-1jlxszipsx] {
    display: flex;
    gap: 8px;
}

.cust-isd[b-1jlxszipsx] {
    max-width: 60px;
    flex-shrink: 0;
    text-align: center;
}

/* ── Address / Dispatch Address: textarea left, stacked fields right ── */
.cust-addr-row[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 24px;
}

.cust-addr-textarea textarea[b-1jlxszipsx] {
    resize: vertical;
    min-height: 120px;
}

.cust-addr-fields[b-1jlxszipsx] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cust-addr-fields .uf-field[b-1jlxszipsx] {
    margin-bottom: 0;
}

/* ── Upload Photo ── */
.cust-photo-row[b-1jlxszipsx] {
    display: flex;
    align-items: center;
    gap: 20px;
}

.cust-photo-input[b-1jlxszipsx] {
    flex: 1;
}

.cust-photo-preview[b-1jlxszipsx] {
    width: 120px;
    height: 120px;
    border: 1px dashed #cbd5e1;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f8fafc;
    color: #94a3b8;
    font-size: 12px;
    overflow: hidden;
    flex-shrink: 0;
}

.cust-photo-preview img[b-1jlxszipsx] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ── Mobile: stack everything to one column ── */
@media (max-width: 767px) {
    .cust-top-row[b-1jlxszipsx],
    .cust-2col[b-1jlxszipsx],
    .cust-addr-row[b-1jlxszipsx] {
        grid-template-columns: 1fr;
    }

    .bspl-title-actions .mu-btn-label[b-1jlxszipsx] {
        display: none;
    }
}
/* /Components/Pages/Others/MCustomerGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — MCustomerGrid.razor.css   (Customer grid, page-scoped)
   Shared "mu-" grid/page styles + the filter drawer live in
   wwwroot/CSS/masters-forms.css. Only Customer-page-specific rules
   remain here.
   ===================================================================== */

.mu-page[b-lj3ii0ahrf] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-lj3ii0ahrf] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.mu-toolbar[b-lj3ii0ahrf] {
    flex-shrink: 0;
}

.mu-table-wrap[b-lj3ii0ahrf] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-lj3ii0ahrf] {
    flex-shrink: 0;
}

.bspl-footer-right[b-lj3ii0ahrf] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-lj3ii0ahrf] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Wide grid (13 columns) — let it scroll horizontally on narrow viewports
   instead of squeezing every column unreadably thin. */
.mu-table[b-lj3ii0ahrf] {
    min-width: 1100px;
}

/* ── Mobile: icon-only title buttons ── */
@media (max-width: 767px) {
    .bspl-title-actions[b-lj3ii0ahrf] {
        margin-left: auto;
        display: flex;
        gap: 8px;
    }

    .bspl-title-actions .mu-btn-label[b-lj3ii0ahrf],
    .bspl-title-actions .bspl-filter-label[b-lj3ii0ahrf] {
        display: none;
    }

    .bspl-title-actions .mu-btn[b-lj3ii0ahrf] {
        padding: 8px 10px;
        gap: 0;
    }

    .mu-foot-info[b-lj3ii0ahrf] {
        display: none;
    }
}
/* /Components/Pages/Others/MPhysicalStock.razor.rz.scp.css */
/* =====================================================================
   GAINS — MPhysicalStock.razor.css   (Masters → Physical Stock)
   Shared "mu-"/"uf-"/"bspl-" page, table, button and modal styles live in
   wwwroot/CSS/masters-forms.css — only Physical-Stock-specific rules
   (the filter bar and the editable grid's own input styling) live here.
   ===================================================================== */

.ps-page[b-yb05wosydk] {
    gap: 14px;
}

/* ── Filter card (Stock taking Date / Item Group / toggles) ── */
.ps-filter-card[b-yb05wosydk] {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ps-filter-row[b-yb05wosydk] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ps-filter-field[b-yb05wosydk] {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .ps-filter-field > label[b-yb05wosydk] {
        font-size: 13px;
        font-weight: 600;
        color: #334155;
        white-space: nowrap;
    }

.ps-group-select[b-yb05wosydk] {
    padding: 6px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    min-width: 220px;
    outline: none;
}

    .ps-group-select:focus[b-yb05wosydk] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

.ps-book-toggle[b-yb05wosydk] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
    user-select: none;
}

    .ps-book-toggle input[b-yb05wosydk] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

    .ps-book-toggle em[b-yb05wosydk] {
        font-style: italic;
        font-weight: 600;
    }

.ps-go-btn[b-yb05wosydk] {
    margin-left: auto;
}

.ps-summary-btn i[b-yb05wosydk],
.ps-go-btn i[b-yb05wosydk] {
    font-size: 14px;
}

/* ── Grid card ── */
.ps-grid-card[b-yb05wosydk] {
    position: relative;
    min-height: 260px;
}

.ps-table-wrap[b-yb05wosydk] {
    height: 560px;
}

.ps-table thead th[b-yb05wosydk] {
    white-space: nowrap;
}

.ps-num-col[b-yb05wosydk] {
    text-align: right;
    width: 110px;
}

td.ps-num-col[b-yb05wosydk] {
    font-variant-numeric: tabular-nums;
}

.ps-chk-col[b-yb05wosydk] {
    width: 40px;
    text-align: center;
}

    .ps-chk-col input[b-yb05wosydk] {
        width: 15px;
        height: 15px;
        accent-color: #1ab99a;
        cursor: pointer;
    }

.ps-qty-col[b-yb05wosydk] {
    width: 130px;
}

.ps-inp[b-yb05wosydk] {
    width: 100%;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
}

    .ps-inp:focus[b-yb05wosydk] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

.ps-qty-inp[b-yb05wosydk] {
    text-align: right;
    min-width: 90px;
}

.ps-comment-inp[b-yb05wosydk] {
    min-width: 160px;
}

/* ── Footer ── */
.ps-foot-left[b-yb05wosydk],
.ps-foot-right[b-yb05wosydk] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}

.ps-goto[b-yb05wosydk] {
    width: 62px;
    padding: 6px 8px;
}

.ps-genvoucher-btn:disabled[b-yb05wosydk] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* ── Compare / Summary popups — reuse the shared uf-modal chrome, just widen it ── */
.ps-cmp-modal[b-yb05wosydk] {
    max-width: 640px;
}

.ps-cmp-body[b-yb05wosydk] {
    padding: 0;
    max-height: calc(100vh - 220px);
}

.ps-cmp-table[b-yb05wosydk] {
    font-size: 12.5px;
}

    .ps-cmp-table thead th[b-yb05wosydk] {
        position: sticky;
        top: 0;
    }

.ps-diff-neg[b-yb05wosydk] {
    color: #b91c1c;
    font-weight: 700;
}

.ps-diff-pos[b-yb05wosydk] {
    color: #15803d;
    font-weight: 700;
}

@media (max-width: 860px) {
    .ps-filter-row[b-yb05wosydk] {
        gap: 10px;
    }

    .ps-go-btn[b-yb05wosydk] {
        margin-left: 0;
    }

    .ps-group-select[b-yb05wosydk] {
        min-width: 0;
        flex: 1 1 180px;
    }
}

@media (max-width: 640px) {
    .ps-summary-btn .mu-btn-label[b-yb05wosydk],
    .ps-go-btn .mu-btn-label[b-yb05wosydk] {
        display: none;
    }

    .ps-summary-btn[b-yb05wosydk],
    .ps-go-btn[b-yb05wosydk] {
        padding: 8px 10px;
        gap: 0;
    }

    .ps-foot-left[b-yb05wosydk],
    .ps-foot-right[b-yb05wosydk] {
        width: 100%;
        justify-content: space-between;
    }
}
.ps-summary-modal[b-yb05wosydk] {
    width: 95vw;
    max-width: 1200px;
}

.ps-summary-wrap[b-yb05wosydk] {
    overflow-x: auto;
    max-width: 100%;
}

    .ps-summary-wrap table[b-yb05wosydk] {
        min-width: 1400px; /* forces real horizontal scroll instead of squishing 31 columns to fit */
    }

    .ps-summary-wrap th[b-yb05wosydk],
    .ps-summary-wrap td[b-yb05wosydk] {
        white-space: nowrap;
    }
@media (max-width: 480px) {
    .ps-qty-col[b-yb05wosydk] {
        width: 100px;
    }

    .ps-comment-inp[b-yb05wosydk] {
        min-width: 120px;
    }
}
/* /Components/Pages/Others/Sr_collection.razor.rz.scp.css */
/* =====================================================================
   SR_Collection.razor.css
   Header (bspl-title-block), footer (bspl-footer), pager (mu-pager/
   mu-nav) and table wrapper (mu-card/mu-table-wrap) all come from the
   shared common-page-chrome.css / masters-forms.css — same as ITB.
   Page now follows the ITB structural pattern: single .mu-card wrapping
   the grid, a page-bottom .bspl-footer holding Total Records + actions
   (left) and the dropdown pager (right). Only SR-Collection-specific
   bits (toolbar fields, grid columns, move/delete icons, Add dialog)
   live here.
   ===================================================================== */

.src-page[b-8imz113g9b] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.src-error[b-8imz113g9b] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Section heading above the toolbar, naming the grid below (the page has
   only one grid now — "Assigned Voucher List" — so this replaces the old
   blue .src-pane-hdr title bar that used to sit directly on the grid). ── */
.src-section-hdr[b-8imz113g9b] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
    color: #306b9c;
}

/* ── Top toolbar — Party/Ledger, Sales Rep, Assign Date (formerly the filter
   drawer's only fields; drawer removed, these now sit above the grid).
   Flat bar, no card/border — matches ITB's .itb-toolbar look. ── */
.src-toolbar[b-8imz113g9b] {
    flex-shrink: 0;
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 16px;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
}

/* Assign Date — native <input type="date"> renders its text in the browser's
   own locale format (dd-mm-yyyy on this machine); overlay a dd-MMM-yyyy span
   on top of it (input's own text made transparent) so the value/handler stay
   completely native while the display reads dd-MMM-yyyy everywhere. */
.src-date-box[b-8imz113g9b] {
    position: relative;
    display: inline-flex;
}

.src-date-native[b-8imz113g9b] {
    color: transparent;
}

    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit,
    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit-fields-wrapper,
    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit-text,
    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit-day-field,
    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit-month-field,
    .src-date-native[b-8imz113g9b]::-webkit-datetime-edit-year-field {
        color: transparent;
    }

.src-date-display[b-8imz113g9b] {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    font-size: 13px;
    color: #333;
    white-space: nowrap;
}

.src-toolbar-actions[b-8imz113g9b] {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

/* Party/Ledger field only — wider so ledger names/values display properly.
   .src-toolbar already has flex-wrap: wrap, so other fields reflow to the
   next line on narrow screens instead of overlapping this one. */
.src-fld-ledger[b-8imz113g9b] {
    flex: 1 1 320px;
    min-width: 260px;
}

/* ── Grid area — page now uses the shared .mu-card/.mu-table-wrap wrapper
   (see ITB.razor.css) directly instead of a bespoke pane structure. The
   card fills remaining vertical space and the page-bottom .bspl-footer
   (below) sits outside it, so there's no "big empty gap" regardless of
   row count — no empty-state class juggling needed any more. ── */
.mu-table-wrap[b-8imz113g9b] {
    min-height: 200px;
}

.src-table-wrap[b-8imz113g9b] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

.src-grid-table[b-8imz113g9b] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

    .src-grid-table thead th[b-8imz113g9b] {
        position: sticky;
        top: 0;
        z-index: 10;
        background: #306b9c;
        text-align: left;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.15; /* was browser default (~1.4-1.5) — compacts 2/3-line headers like "VID / Date" */
        padding: 4px 8px; /* was 6px 8px */
        border: none !important; /* ITB pattern — thead carries no border, body/tfoot cells box themselves */
        box-shadow: none !important;
        outline: none !important;
    }

    .src-grid-table tbody td[b-8imz113g9b],
    .src-grid-table tfoot td[b-8imz113g9b] {
        border-left: 1px solid #eef0f2;
        border-right: 1px solid #eef0f2;
        border-bottom: 1px solid #eef0f2;
        border-top: 0;
    }

    .src-grid-table tbody td[b-8imz113g9b] {
        padding: 6px 8px;
        vertical-align: top;
        font-size: 12.5px;
    }

    .src-grid-table tbody tr:hover[b-8imz113g9b] {
        background: #f8fafc;
    }

.src-row-collected[b-8imz113g9b] {
    background: whitesmoke;
    font-weight: 600;
}

.src-th-sort[b-8imz113g9b] {
    cursor: pointer;
    user-select: none;
}

.src-chk[b-8imz113g9b] {
    width: 28px;
    text-align: center;
}

.src-del-col[b-8imz113g9b] {
    width: 32px;
    text-align: center;
}

.src-vid[b-8imz113g9b] {
    color: #2f8fd1;
    font-weight: 600;
    cursor: pointer;
}

.src-sub[b-8imz113g9b] {
    color: #64748b;
    font-size: 11px;
}

.src-party[b-8imz113g9b] {
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.src-remarks[b-8imz113g9b] {
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 11.5px;
    color: #64748b;
}

.src-grid-table td.num[b-8imz113g9b],
.src-grid-table th.num[b-8imz113g9b] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.src-del-btn[b-8imz113g9b] {
    background: none;
    border: none;
    color: #c0392b;
    cursor: pointer;
    padding: 2px 6px;
    font-size: 13px;
}

    .src-del-btn:disabled[b-8imz113g9b] {
        color: #cbd5e1;
        cursor: not-allowed;
    }

/* ── Table footer (Total row) — inside the table itself so it lines up with
   the header columns exactly, regardless of column widths. Sticky to stay
   visible while the body scrolls, same idea as the sticky thead — same
   fixed-height/background treatment as ITB's tfoot. Conditionally rendered
   only when there are rows (see SR_Collection.razor), matching ITB. ── */
.src-total-row td[b-8imz113g9b] {
    position: sticky;
    bottom: 0;
    z-index: 15;
    background: #E1EAF1;
    height: 40px;
    min-height: 30px;
    max-height: 30px;
    padding: 4px 8px;
    box-sizing: border-box;
    font-size: 12px;
    font-weight: 700;
}

.src-total-label[b-8imz113g9b] {
    color: #64748b;
    text-align: right;
}

.src-total-amounts[b-8imz113g9b] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    font-variant-numeric: tabular-nums;
}

/* ── Page-bottom footer — .bspl-footer/.bspl-footer-left/.bspl-footer-right
   are shared (common-page-chrome.css), same bar ITB uses. Left side holds
   Total Records + Add + Reconcile; right side holds the dropdown pager,
   shown only when there are rows (see SR_Collection.razor). ── */
.src-pageno[b-8imz113g9b] {
    padding: 3px 8px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    font-family: inherit;
    color: #333;
}

    .src-pageno:focus[b-8imz113g9b] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

/* Wraps the Add-dialog's own pager, directly under its table — replaces
   the old .src-pane-footer that used to hold it. */
.src-modal-pager[b-8imz113g9b] {
    flex-shrink: 0;
    display: flex;
    justify-content: flex-end;
    padding: 8px 0 0;
    border-top: 1px solid #e3e6ea;
    margin-top: 8px;
}

.src-add-btn[b-8imz113g9b] {
    background: #2f8f4e;
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.src-reconcile-btn[b-8imz113g9b] {
    background: #0B648E;
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

    .src-reconcile-btn:disabled[b-8imz113g9b] {
        opacity: .6;
        cursor: not-allowed;
    }

.src-page-current[b-8imz113g9b] {
    font-size: 11.5px;
    color: #64748b;
    margin: 0 4px;
}

/* ── Add-voucher dialog — wraps the unassigned "Voucher List" grid, opened by
   the Add button under Assigned Voucher List. Plain CSS modal (no dialog
   component to reference yet — see chat re: the confirm() replacement, same
   situation). ── */
.src-modal-overlay[b-8imz113g9b] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 1000;
}

.src-modal[b-8imz113g9b] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(900px, 92vw);
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 10px 40px rgba(0,0,0,.25);
    z-index: 1001;
    overflow: hidden;
}

.src-modal-hdr[b-8imz113g9b] {
    flex-shrink: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    background: #306b9c;
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
}

.src-modal-close[b-8imz113g9b] {
    background: none;
    border: none;
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.src-modal-body[b-8imz113g9b] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 10px 14px;
    overflow: auto;
}

    .src-modal-body .src-table-wrap[b-8imz113g9b] {
        max-height: 55vh;
    }

.src-modal-foot[b-8imz113g9b] {
    flex-shrink: 0;
    padding: 10px 14px;
    border-top: 1px solid #e3e6ea;
    display: flex;
    justify-content: flex-end;
}

.src-move-btn-wide[b-8imz113g9b] {
    background: #5c6d20;
    color: #fff;
    border: none;
    padding: 8px 20px;
    border-radius: 4px;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
}

    .src-move-btn-wide:disabled[b-8imz113g9b] {
        opacity: .6;
        cursor: not-allowed;
    }

/* ── Mobile ── */
@media (max-width: 900px) {
    .src-toolbar[b-8imz113g9b] {
        flex-direction: column;
        align-items: stretch;
    }

    .bspl-footer[b-8imz113g9b] {
        flex-wrap: wrap;
        gap: 8px;
    }
}
/* /Components/Pages/Reports/COA.razor.rz.scp.css */
/* Components/Pages/Reports/COA.razor.css
   Scoped to the Chart of Accounts report page. Reuses the app's teal/navy
   accents (see masters-forms.css / common-page-chrome.css conventions)
   without depending on che-* transaction-page classes, since this is a
   read-only report page, not a voucher entry page. */

.coa-page[b-g4g9shsguj] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ── Header badges ─────────────────────────────────────────────── */
.coa-badge[b-g4g9shsguj] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
}

.coa-badge-ok[b-g4g9shsguj] {
    background: #e6f7ed;
    color: #157347;
}

.coa-badge-warn[b-g4g9shsguj] {
    background: #fff4e5;
    color: #b45309;
}

.coa-badge-danger[b-g4g9shsguj] {
    background: #fdeaea;
    color: #b42318;
}

/* ── Toast ──────────────────────────────────────────────────────── */
.coa-toast[b-g4g9shsguj] {
    position: fixed;
    top: 70px;
    right: 24px;
    z-index: 60;
    background: #1f2937;
    color: #fff;
    padding: 10px 18px;
    border-radius: 8px;
    font-size: 13px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
    animation: coa-toast-in-b-g4g9shsguj .15s ease-out;
}

@keyframes coa-toast-in-b-g4g9shsguj {
    from {
        opacity: 0;
        transform: translateY(-6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ── Body layout: tree + main ─────────────────────────────────────── */
.coa-body[b-g4g9shsguj] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 14px;
    padding: 12px 16px 16px;
}

.coa-tree-panel[b-g4g9shsguj] {
    width: 300px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e3e7ee;
    border-radius: 10px;
    overflow: hidden;
}

.coa-tree-tabs[b-g4g9shsguj] {
    display: flex;
    border-bottom: 1px solid #e3e7ee;
}

.coa-tree-tab[b-g4g9shsguj] {
    flex: 1;
    border: none;
    background: #f7f8fa;
    padding: 10px 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: #5b6472;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: background .12s ease, color .12s ease;
}

    .coa-tree-tab:hover[b-g4g9shsguj] {
        background: #eef1f5;
    }

    .coa-tree-tab.active[b-g4g9shsguj] {
        background: #fff;
        color: #175e82;
        border-bottom-color: #175e82;
    }

.coa-tree-search[b-g4g9shsguj] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid #eef0f3;
    color: #9aa3af;
}

    .coa-tree-search input[b-g4g9shsguj] {
        flex: 1;
        border: none;
        outline: none;
        font-size: 13px;
        color: #1f2937;
    }

.coa-tree-search-clear[b-g4g9shsguj] {
    border: none;
    background: transparent;
    color: #9aa3af;
    cursor: pointer;
    padding: 2px;
}

    .coa-tree-search-clear:hover[b-g4g9shsguj] {
        color: #1f2937;
    }

.coa-tree-scroll[b-g4g9shsguj] {
    flex: 1;
    overflow: auto;
    min-height: 0;
    padding: 6px 4px;
}

.coa-tree-root[b-g4g9shsguj] {
    list-style: none;
    margin: 0;
    padding: 0;
}

[b-g4g9shsguj] .coa-node-children {
    list-style: none;
    margin: 0;
    padding: 0;
}

[b-g4g9shsguj] .coa-node-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #33404f;
}

    [b-g4g9shsguj] .coa-node-row:hover {
        background: #f2f5f8;
    }

    [b-g4g9shsguj] .coa-node-row.selected {
        background: #dce9f5;
        color: #10405e;
        font-weight: 600;
    }

    [b-g4g9shsguj] .coa-node-row:focus-visible {
        outline: 2px solid #175e82;
        outline-offset: -2px;
    }

[b-g4g9shsguj] .coa-node-toggle,
[b-g4g9shsguj] .coa-node-menu-btn {
    border: none;
    background: transparent;
    color: #8a94a1;
    width: 18px;
    flex-shrink: 0;
    cursor: pointer;
    font-size: 11px;
}

[b-g4g9shsguj] .coa-node-toggle-spacer {
    width: 18px;
    flex-shrink: 0;
}

[b-g4g9shsguj] .coa-node-icon {
    font-size: 12px;
    color: #b0894f;
    flex-shrink: 0;
}

    [b-g4g9shsguj] .coa-node-icon.fa-file-lines {
        color: #6b8fb5;
    }

[b-g4g9shsguj] .coa-node-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}

[b-g4g9shsguj] .coa-node-code {
    color: #97a2b0;
    margin-left: 4px;
    font-size: 11.5px;
}

[b-g4g9shsguj] .coa-node-menu-btn {
    margin-left: auto;
    width: 22px;
}

    [b-g4g9shsguj] .coa-node-menu-btn:hover {
        color: #175e82;
    }

/* ── Main panel ─────────────────────────────────────────────────── */
.coa-main[b-g4g9shsguj] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.coa-toolbar[b-g4g9shsguj] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 12px;
    background: #fff;
    border: 1px solid #e3e7ee;
    border-radius: 10px;
    padding: 12px 16px;
}

.coa-toolbar-left[b-g4g9shsguj] {
    min-width: 260px;
}

.coa-node-header[b-g4g9shsguj] {
    font-size: 14px;
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}

.coa-node-header-empty[b-g4g9shsguj] {
    color: #8a94a1;
    font-style: italic;
}

.coa-node-kind[b-g4g9shsguj] {
    color: #8a94a1;
    font-weight: 600;
}

.coa-node-name[b-g4g9shsguj] {
    font-weight: 700;
    color: #1f2937;
}

.coa-breadcrumb[b-g4g9shsguj] {
    font-size: 12px;
    color: #8a94a1;
}

.coa-node-obcb[b-g4g9shsguj] {
    margin-top: 4px;
    display: flex;
    gap: 18px;
    font-size: 12.5px;
    color: #4b5563;
}

.coa-adjustment-note[b-g4g9shsguj] {
    margin-top: 6px;
    font-size: 12px;
    color: #b45309;
}

.coa-toolbar-right[b-g4g9shsguj] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.coa-date-range[b-g4g9shsguj] {
    display: flex;
    align-items: center;
    gap: 6px;
    background: #f7f8fa;
    border: 1px solid #e3e7ee;
    border-radius: 8px;
    padding: 6px 8px;
}

.coa-date-label[b-g4g9shsguj] {
    display: none;
}

.coa-date-input[b-g4g9shsguj] {
    width: 108px;
    border: 1px solid #d7dde5;
    border-radius: 6px;
    padding: 5px 7px;
    font-size: 12.5px;
    text-align: center;
}

.coa-date-swap[b-g4g9shsguj] {
    color: #9aa3af;
    font-size: 11px;
}

.coa-period-toggle[b-g4g9shsguj] {
    display: flex;
    background: #f7f8fa;
    border: 1px solid #e3e7ee;
    border-radius: 8px;
    overflow: hidden;
}

    .coa-period-toggle button[b-g4g9shsguj] {
        border: none;
        background: transparent;
        width: 34px;
        height: 32px;
        font-weight: 700;
        font-size: 12.5px;
        color: #5b6472;
        cursor: pointer;
        border-right: 1px solid #e3e7ee;
    }

        .coa-period-toggle button:last-child[b-g4g9shsguj] {
            border-right: none;
        }

        .coa-period-toggle button:hover[b-g4g9shsguj] {
            background: #eef1f5;
        }

        .coa-period-toggle button.active[b-g4g9shsguj] {
            background: #175e82;
            color: #fff;
        }

/* ── Buttons ────────────────────────────────────────────────────── */
.coa-btn[b-g4g9shsguj] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: 7px;
    padding: 7px 14px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .12s ease, opacity .12s ease;
}

.coa-btn-sm[b-g4g9shsguj] {
    padding: 5px 10px;
    font-size: 12.5px;
}

.coa-btn-primary[b-g4g9shsguj] {
    background: #175e82;
    color: #fff;
}

    .coa-btn-primary:hover[b-g4g9shsguj] {
        background: #124b69;
    }

.coa-btn-ghost[b-g4g9shsguj] {
    background: #fff;
    border-color: #d7dde5;
    color: #33404f;
}

    .coa-btn-ghost:hover[b-g4g9shsguj] {
        background: #f2f5f8;
    }

.coa-btn-danger[b-g4g9shsguj] {
    background: #b42318;
    color: #fff;
}

    .coa-btn-danger:hover[b-g4g9shsguj] {
        background: #921c14;
    }

.coa-btn:disabled[b-g4g9shsguj] {
    opacity: .5;
    cursor: not-allowed;
}

/* ── Grid ───────────────────────────────────────────────────────── */
.coa-grid-wrap[b-g4g9shsguj] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    background: #fff;
    border: 1px solid #e3e7ee;
    border-radius: 10px;
}

.coa-grid[b-g4g9shsguj] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

    .coa-grid thead th[b-g4g9shsguj] {
        position: sticky;
        top: 0;
        z-index: 2;
        background: #306b9c;
        color: #fff;
        text-align: left;
        font-weight: 600;
        padding: 6px 10px;
        white-space: nowrap;
    }

        /* Amount-column headers (OB/Dr/Cr/Nett Trans/CB/T-Dr/T-Cr) need to win over
   the .coa-grid thead th rule above — same class alone loses on specificity
   (0,1,0 vs 0,1,2), so it's qualified with the element selectors here too. */
        .coa-grid thead th.coa-col-amt[b-g4g9shsguj] {
            text-align: right;
        }

    .coa-grid tbody td[b-g4g9shsguj] {
        padding: 4px 10px;
        line-height: 1.3;
        border-bottom: 1px solid #eef0f3;
        color: #33404f;
    }

    .coa-grid tbody tr:nth-child(even)[b-g4g9shsguj] {
        background: #fafbfc;
    }

.coa-row-clickable[b-g4g9shsguj] {
    cursor: pointer;
}

    .coa-row-clickable:hover td[b-g4g9shsguj] {
        background: #eef4fa;
    }

.coa-col-num[b-g4g9shsguj] {
    width: 44px;
    color: #9aa3af;
}

.coa-col-amt[b-g4g9shsguj] {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.coa-col-narr[b-g4g9shsguj] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.coa-vtype-badge[b-g4g9shsguj] {
    display: inline-block;
    background: #eef1f5;
    color: #5b6472;
    border-radius: 5px;
    padding: 2px 6px;
    font-size: 11px;
    font-weight: 600;
}

/* ── Footer bar ─────────────────────────────────────────────────── */
.coa-footer-bar[b-g4g9shsguj] {
    display: flex;
    align-items: center;
    gap: 24px;
    background: #eef4fa;
    border: 1px solid #dce9f5;
    border-radius: 8px;
    padding: 10px 16px;
    font-size: 13px;
    color: #1f2937;
    flex-wrap: wrap;
}

.coa-footer-spacer[b-g4g9shsguj] {
    flex: 1;
}

.coa-goto-page[b-g4g9shsguj] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: #5b6472;
}

    .coa-goto-page select[b-g4g9shsguj] {
        border: 1px solid #d7dde5;
        border-radius: 6px;
        padding: 4px 6px;
        font-size: 12.5px;
    }

/* ── Empty / error / loading states ───────────────────────────────── */
.coa-empty[b-g4g9shsguj],
.coa-inline-error[b-g4g9shsguj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-align: center;
    padding: 24px 16px;
    color: #8a94a1;
    font-size: 13px;
}

.coa-empty-lg[b-g4g9shsguj],
.coa-inline-error-lg[b-g4g9shsguj] {
    height: 100%;
    padding: 60px 20px;
}

.coa-empty i[b-g4g9shsguj],
.coa-inline-error i[b-g4g9shsguj] {
    font-size: 26px;
    color: #c3cad3;
}

.coa-inline-error i[b-g4g9shsguj] {
    color: #d68a86;
}

.coa-empty p[b-g4g9shsguj],
.coa-inline-error p[b-g4g9shsguj] {
    margin: 0;
    font-weight: 600;
    color: #4b5563;
}

.coa-empty span[b-g4g9shsguj] {
    color: #9aa3af;
    font-size: 12.5px;
}

.coa-skel[b-g4g9shsguj] {
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.coa-skel-grid[b-g4g9shsguj] {
    padding: 14px;
}

.coa-skel-row[b-g4g9shsguj] {
    height: 16px;
    border-radius: 5px;
    background: linear-gradient(90deg, #edf0f3 25%, #f7f8fa 37%, #edf0f3 63%);
    background-size: 400% 100%;
    animation: coa-shimmer-b-g4g9shsguj 1.4s ease infinite;
}

@keyframes coa-shimmer-b-g4g9shsguj {
    0% {
        background-position: 100% 50%;
    }

    100% {
        background-position: 0 50%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .coa-skel-row[b-g4g9shsguj] {
        animation: none;
    }

    .coa-toast[b-g4g9shsguj] {
        animation: none;
    }
}

/* ── Modals: drill-menu popover + reset confirm ───────────────────── */
.coa-modal-backdrop[b-g4g9shsguj] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 70;
}

.coa-drill-menu[b-g4g9shsguj] {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .2);
    padding: 10px;
    min-width: 200px;
}

.coa-drill-menu-title[b-g4g9shsguj] {
    font-size: 12px;
    color: #8a94a1;
    padding: 6px 10px;
    font-weight: 600;
}

.coa-drill-menu button[b-g4g9shsguj] {
    display: block;
    width: 100%;
    text-align: left;
    border: none;
    background: transparent;
    padding: 9px 10px;
    border-radius: 6px;
    font-size: 13.5px;
    color: #33404f;
    cursor: pointer;
}

    .coa-drill-menu button:hover[b-g4g9shsguj] {
        background: #eef4fa;
        color: #175e82;
    }

.coa-confirm-dialog[b-g4g9shsguj] {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .25);
    padding: 22px 24px;
    max-width: 380px;
}

    .coa-confirm-dialog h3[b-g4g9shsguj] {
        margin: 0 0 8px;
        font-size: 16px;
        color: #1f2937;
    }

    .coa-confirm-dialog p[b-g4g9shsguj] {
        margin: 0 0 18px;
        font-size: 13px;
        color: #5b6472;
        line-height: 1.5;
    }

.coa-confirm-actions[b-g4g9shsguj] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

/* ── Responsive ────────────────────────────────────────────────────
   Desktop-first — this report is built for wide screens, but folds down
   gracefully: tree panel goes full-width above the grid on narrow
   viewports rather than squeezing to unusable widths. */
@media (max-width: 900px) {
    .coa-body[b-g4g9shsguj] {
        flex-direction: column;
    }

    .coa-tree-panel[b-g4g9shsguj] {
        width: 100%;
        max-height: 260px;
    }

    .coa-toolbar[b-g4g9shsguj] {
        flex-direction: column;
        align-items: stretch;
    }

    .coa-toolbar-right[b-g4g9shsguj] {
        justify-content: space-between;
    }
}
/* /Components/Pages/Reports/Drcrregister.razor.rz.scp.css */
/* Base page-flex layout — must be redefined here, CSS isolation means
   ITB/CrossLinks' identical rules don't apply outside those components.
   Matches ITB exactly: the card fills all remaining viewport height and the
   table area scrolls internally (sticky <thead> stays put) instead of
   growing the page — Total Records + the pager live in .bspl-footer, OUTSIDE
   this card, so they stay pinned right below it regardless of row count and
   never get shoved down to the bottom of an oversized box. Same fix as
   item-print.razor.css. */
.itb-page[b-5t38xzxzj5] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .itb-page .mu-card[b-5t38xzxzj5] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 12px 16px;
    }

    .itb-page .mu-table-wrap[b-5t38xzxzj5] {
        flex: 1;
        overflow-y: auto;
        min-height: 0;
    }

.dc-table[b-5t38xzxzj5] {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}

    .dc-table thead th[b-5t38xzxzj5] {
        position: sticky;
        top: 0;
        z-index: 5;
        padding: 8px 10px;
        text-align: left;
    }

        .dc-table thead th.num[b-5t38xzxzj5], .dc-table thead th.mu-th-idx[b-5t38xzxzj5] {
            text-align: right;
        }

    .dc-table tbody td[b-5t38xzxzj5] {
        padding: 7px 10px;
        font-size: 12px;
        border-bottom: 1px solid #eef0f2;
        vertical-align: middle;
    }

        .dc-table tbody td.num[b-5t38xzxzj5] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

.dc-loading-row[b-5t38xzxzj5] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 20px;
    color: #64748b;
    font-size: 12.5px;
}

.dc-spinner[b-5t38xzxzj5] {
    width: 16px;
    height: 16px;
    border: 2px solid #d6dbe0;
    border-top-color: #1ab99a;
    border-radius: 50%;
    animation: dc-spin-b-5t38xzxzj5 0.7s linear infinite;
}

@keyframes dc-spin-b-5t38xzxzj5 {
    to {
        transform: rotate(360deg);
    }
}

.dc-pager-btns[b-5t38xzxzj5] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.dc-sortdir-group[b-5t38xzxzj5] {
    display: flex;
    gap: 14px;
}
/* /Components/Pages/Reports/Itemprint.razor.rz.scp.css */
/* Base page-flex layout — must be redefined here, CSS isolation means
   ITB/CrossLinks' identical rules don't apply outside those components.
   Matches ITB exactly: the card fills all remaining viewport height and the
   table area scrolls internally (sticky <thead> stays put) instead of
   growing the page — Total Records + the pager live in .bspl-footer, OUTSIDE
   this card, so they stay pinned right below it regardless of row count and
   never get shoved down to the bottom of an oversized box. */
.itb-page[b-zd2rawhdb0] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .itb-page .mu-card[b-zd2rawhdb0] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 12px 16px;
    }

    .itb-page .mu-table-wrap[b-zd2rawhdb0] {
        flex: 1;
        overflow-y: auto;
        min-height: 0;
    }

.ip-table[b-zd2rawhdb0] {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}

    .ip-table thead th[b-zd2rawhdb0] {
        position: sticky;
        top: 0;
        z-index: 5;
        padding: 8px 10px;
        text-align: left;
    }

        .ip-table thead th.num[b-zd2rawhdb0], .ip-table thead th.mu-th-idx[b-zd2rawhdb0] {
            text-align: right;
        }

    .ip-table tbody td[b-zd2rawhdb0] {
        padding: 7px 10px;
        font-size: 12px;
        border-bottom: 1px solid #eef0f2;
        vertical-align: middle;
    }

        .ip-table tbody td.num[b-zd2rawhdb0] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

.ip-loading-row[b-zd2rawhdb0] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 20px;
    color: #64748b;
    font-size: 12.5px;
}

.ip-spinner[b-zd2rawhdb0] {
    width: 16px;
    height: 16px;
    border: 2px solid #d6dbe0;
    border-top-color: #1ab99a;
    border-radius: 50%;
    animation: ip-spin-b-zd2rawhdb0 0.7s linear infinite;
}

@keyframes ip-spin-b-zd2rawhdb0 {
    to {
        transform: rotate(360deg);
    }
}

.ip-pager-btns[b-zd2rawhdb0] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ip-rtype-group[b-zd2rawhdb0] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
/* /Components/Pages/Transactions/ARAP.razor.rz.scp.css */
/* =====================================================================
   GAINS — ARAP.razor.css   (Transactions → ARAP, page-scoped)
   Mirrors QLedger.razor.css's teal theme (#1ab99a) + mu- grid additions
   so ARAP matches the same look/fonts/classes as Query Ledger.
   Base look (mu- grid system) comes from the global masters-forms.css.
   ===================================================================== */

.bspl-title-left h1[b-hh3n09puyr] {
    font-weight: 100;
    color: #1ab99a;
}

/* Header must stay above the fixed filter drawer/overlay (drawer z-index
   1200, overlay 1190) — otherwise the drawer, which starts at top:0, paints
   over the AR/AP + FILTERS buttons on the right side of this row. */
.bspl-title-block[b-hh3n09puyr] {
    position: relative;
    z-index: 1300;
}

/* Modals (Ledger picker, Send Mail) use the shared .uf-overlay/.uf-modal
   chrome, which only carries z-index:1000 globally — that put them behind
   this page's header once it was bumped to 1300 above. Page-scoped bump so
   modals render above everything here without touching the shared file. */
.uf-overlay[b-hh3n09puyr] {
    z-index: 1400;
}

/* VoucherViewPopup (Components/Pages/Transactions/DayBook/VoucherViewPopup.razor)
   ships its own inline <style> with .db-modal-overlay at z-index:1000 — same
   header-clipping issue as .uf-overlay above. ::deep reaches into the child
   component's rendered markup without touching that shared file. */
[b-hh3n09puyr] .db-modal-overlay {
    z-index: 1400;
}

/* No dim behind the drawer — cards stay exactly as-is (matching the
   no-filter view) when FILTERS is open, per explicit request. */
.mu-drawer-overlay[b-hh3n09puyr] {
    background: transparent;
}

/* ── Header AR/AP toggle — small pills next to the page title (legacy top-nav
   style). Only 2 buttons (no separate ARAP one) — clicking either jumps into
   the Ledger-Summary section with that mode, matching SelectArApMode. ── */
.arap-header-modes[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;   /* .bspl-filter-toggle also has margin-left:auto (global CSS) —
                             whichever flex item claims it first eats the free space.
                             AR/AP sat left of the title-actions bar and FILTERS floated
                             alone at the far right, leaving a gap between them. Claiming
                             the auto margin here pulls AR/AP flush against FILTERS,
                             both hugging the header's right edge, matching reference. */
    margin-right: 10px;
}

.arap-mode-btn[b-hh3n09puyr] {
    padding: 6px 14px;
    border-radius: 5px;
    border: 1px solid #1ab99a;
    background: #fff;
    color: #1ab99a;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s, color 0.12s;
}

    .arap-mode-btn:hover[b-hh3n09puyr] {
        background: #e6f7f4;
    }

    .arap-mode-btn.active[b-hh3n09puyr] {
        background: #1ab99a;
        color: #fff;
    }

/* ── Section buttons (Vouchers / … added one by one) ── */
.arap-sections[b-hh3n09puyr] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 10px 10px;
}

.arap-section[b-hh3n09puyr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .arap-section:hover[b-hh3n09puyr] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .arap-section.active[b-hh3n09puyr] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

.arap-dollar[b-hh3n09puyr] {
    font-weight: 600;
    font-size: 13px;
}

/* ── Filter drawer field/check/section — same recipe as QLedger's
   ql-field/ql-check/ql-drawer-section, kept page-local since Blazor CSS
   isolation scopes QLedger.razor.css to that component only. Drawer outer
   chrome itself (mu-drawer/-overlay/-hdr/-body/-foot) is global. ── */
.arap-field[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
    margin-bottom: 14px;
}

.arap-drawer-section[b-hh3n09puyr] {
    margin-top: 6px;
    margin-bottom: 8px;
    padding: 8px 12px;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.arap-check[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    padding: 4px 0;
}

    .arap-check input[b-hh3n09puyr] {
        accent-color: #1ab99a;
    }

    .arap-check:has(input:disabled)[b-hh3n09puyr] {
        color: #94a3b8;
        cursor: not-allowed;
    }

/* Clear Filter / GO pair repeated at the top of the drawer (legacy had it
   at both top and bottom of the sidebar). */
.arap-drawer-topbtns[b-hh3n09puyr] {
    display: flex;
    gap: 10px;
    padding: 14px 20px;
    border-bottom: 1px solid #eef2f7;
}

    .arap-drawer-topbtns .mu-btn[b-hh3n09puyr] {
        flex: 1 1 50%;
        justify-content: center;
    }

/* ARAP / AR / AP side-by-side checkboxes */
.arap-check-row[b-hh3n09puyr] {
    display: flex;
    gap: 24px;
    margin-bottom: 6px;
}

.arap-check-row-3[b-hh3n09puyr] {
    gap: 16px;
    flex-wrap: wrap;
}


/* Indented date input(s) shown under As On Date / Date Range */
.arap-subfield[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 4px 0 10px 26px;
}

/* Ledger quick-search + disabled "L" picker button */
.arap-led-row[b-hh3n09puyr] {
    display: flex;
    gap: 8px;
    margin-bottom: 10px;
}

/* Ledger picker dropdown restyle, scoped to this page only via ::deep
   (LedgerAutofill.razor.css is shared with QLedger — untouched there).
   Matches the SalesRepFilterPanel reference: single-line ellipsis instead
   of wrapping to 2-3 lines, first row always green (not tied to keyboard
   active-index, just a visual "top pick" cue like the reference). */
[b-hh3n09puyr] .lga-suggest li {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-hh3n09puyr] .lga-suggest li:first-child:not(.lga-empty) {
    background: #27AE60;
    color: #fff;
}

[b-hh3n09puyr] .lga-suggest li:hover:not(.lga-empty),
[b-hh3n09puyr] .lga-suggest li.active:not(.lga-empty) {
    background: #27AE60;
    color: #fff;
}

.arap-led-input-wrap[b-hh3n09puyr] {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
}

    .arap-led-input-wrap .uf-input[b-hh3n09puyr] {
        width: 100%;
        box-sizing: border-box;
    }

/* 3x-Enter inline suggestion list — dropdown under the quick-search box */
.arap-led-suggest[b-hh3n09puyr] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 40;
    margin: 2px 0 0;
    padding: 4px 0;
    list-style: none;
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
}

    .arap-led-suggest li[b-hh3n09puyr] {
        padding: 7px 12px;
        font-size: 13px;
        color: #1a2537;
        cursor: pointer;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .arap-led-suggest li:hover[b-hh3n09puyr],
    .arap-led-suggest li.active[b-hh3n09puyr] {
        background: #1ab99a;
        color: #fff;
    }

.arap-led-suggest-error[b-hh3n09puyr] {
    padding: 10px 12px;
    font-size: 12px;
    color: #dc2626;
}

    .arap-led-row .uf-input[b-hh3n09puyr] {
        flex: 1 1 auto;
        min-width: 0;
    }

.arap-led-btn[b-hh3n09puyr] {
    flex: 0 0 40px;
    justify-content: center;
    padding: 7px 0;
}

    .arap-led-btn:disabled[b-hh3n09puyr] {
        opacity: 0.6;
        cursor: not-allowed;
    }

/* Group dropdown (placeholder — no group data source wired yet) */
.mu-drawer-body > select.uf-input[b-hh3n09puyr] {
    width: 100%;
    box-sizing: border-box;
    margin-bottom: 14px;
}

/* ── Layout ── */
.mu-page[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

.arap-body[b-hh3n09puyr] {
    flex: 1;
    min-height: 0;
    display: flex;
}

    .arap-body .mu-card[b-hh3n09puyr] {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
        overflow: hidden;
    }

    .arap-body .mu-table-wrap[b-hh3n09puyr] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

/* ── Grid cell extras (on top of mu-table) ── */
.mu-table thead th.num[b-hh3n09puyr] {
    text-align: right;
}

.mu-table td.num[b-hh3n09puyr] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-table td.cr[b-hh3n09puyr] {
    color: #800000;
}

.mu-table thead th[b-hh3n09puyr] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #fff;
    color: #1a2537;   /* global masters-forms.css sets thead th color:#fff (for its
                         own dark #4b5563 header bg) — this override only changed
                         background to white, leaving text white-on-white = invisible
                         header row (##/Ledger/Amount/Unadjusted, ##/Ageing/Amount/%). */
}

.arap-nowrap[b-hh3n09puyr] {
    white-space: nowrap;
}

.arap-ledger[b-hh3n09puyr] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.arap-ledcode[b-hh3n09puyr] {
    display: block;
    font-size: 11px;
    color: #94a3b8;
}

.arap-vnum-cell[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.arap-vsquare[b-hh3n09puyr] {
    display: inline-block;
    width: 10px;
    height: 10px;
    background: #1ab99a;
    border-radius: 2px;
    flex: 0 0 10px;
}

.arap-vnum[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 500;
    cursor: pointer;
}

    .arap-vnum:hover[b-hh3n09puyr] {
        text-decoration: underline;
    }

.arap-vtype[b-hh3n09puyr] {
    font-weight: 500;
    font-size: 13px;
    color: #1a2537;
}

/* ── Dashboard (landing) — AR/AP stat cards ── */
.arap-dash[b-hh3n09puyr] {
    padding: 14px;
    overflow: auto;
}

/* 2x2 diagonal layout, matching the legacy ARAP_New.aspx dashboard:
   [ AR stats card ] [ big AR illustration ]
   [ big AP illustration ] [ AP stats card ] */
.arap-dash-grid[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: 250px;
    gap: 24px;
    width: 100%;
    max-width: 1100px;
}

.arap-dash-card[b-hh3n09puyr] {
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(15,23,42,0.14);
    background: #fff;
    display: flex;
    flex-direction: column;
}

.arap-dash-hdr[b-hh3n09puyr] {
    padding: 12px 16px;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.03em;
    color: #1a2537;
    text-align: center;
    background-image: linear-gradient(to left, rgba(126,179,148,0.25), rgba(130,202,215,0.15));
}

.arap-dash-body[b-hh3n09puyr] {
    padding: 16px 24px 10px;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* Big illustration panels (top-right / bottom-left) */
.arap-dash-imgpanel[b-hh3n09puyr] {
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(15,23,42,0.14);
    background: #fff;
}

    .arap-dash-imgpanel img[b-hh3n09puyr] {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
    }

@media (max-width: 900px) {
    .arap-dash-grid[b-hh3n09puyr] {
        grid-template-columns: 1fr;
    }

    .arap-dash-imgpanel[b-hh3n09puyr] {
        display: none;
    }
}

/* ── Dashboard footer bar (legacy "AR/AP … SWITCH VIEW") — sized with
   clamp() (vw/vh bound between sane min/max) instead of fixed px so it
   scales with viewport/resolution rather than just breakpoint-snapping. ── */
.arap-dash-footer[b-hh3n09puyr] {
    flex-shrink: 0;
    position: sticky;
    bottom: 0;
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: clamp(10px, 2vw, 20px);
    width: 100%;
    padding: clamp(8px, 1.6vh, 16px) clamp(12px, 2vw, 24px);
    box-sizing: border-box;
    font-size: clamp(12px, 1.1vw, 14px);
    color: #1a2537;
    background-image: linear-gradient(to left, rgba(126,179,148,0.5), rgba(126,179,148,0.3), rgba(126,179,148,0.1), rgba(130,202,215,0.5));
}

.arap-switch-btn[b-hh3n09puyr] {
    padding: clamp(4px, 0.8vh, 8px) clamp(10px, 1.6vw, 16px);
    font-size: clamp(11px, 1vw, 13px);
}

.arap-dash-row[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    padding: 10px 0;
    border-bottom: none;
    font-size: 14px;
    font-weight: 600;
    color: #1a56a7;
}

    .arap-dash-row strong[b-hh3n09puyr] {
        color: #1a56a7;
    }

    .arap-dash-row strong.cr[b-hh3n09puyr] {
        color: #800000;
    }

.arap-dash-icon[b-hh3n09puyr] {
    color: #1ab99a;
    margin-right: 6px;
}

/* Empty / error states */
.arap-empty-state[b-hh3n09puyr] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

.arap-error[b-hh3n09puyr] {
    color: #dc2626;
}

/* ── Pager — reuses the shared global .mu-pager/.mu-nav/.mu-pagenum component
   (masters-forms.css), same one UOM/QL/QG already use, so this page already
   matches structurally. Only real visual gap vs. the reference: the active
   page number there is a filled circle, while the shared CSS makes every
   pager button (active or not) an 8px rounded square. Overriding just the
   circle shape here, scoped to this page only — not touching the shared
   class, so UOM/QL/QG's own pagers are unaffected either way. ── */
.mu-pagenum.active[b-hh3n09puyr] {
    border-radius: 50%;
}

/* ── Fixed page footer (pager) ── */
.arap-footer-fixed[b-hh3n09puyr] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
    flex-shrink: 0;
}

/* ── Responsive ── */
@media (max-width: 640px) {
    .arap-section[b-hh3n09puyr] {
        min-height: 44px;
        padding: 10px 14px;
    }
}

/* ── Ledger picker popup — same recipe as QLedger's ql-lp-*/ql-modal-* ── */
.arap-lp-overlay[b-hh3n09puyr] {
    z-index: 1300;
}

.arap-lp-modal[b-hh3n09puyr] {
    max-width: 640px;
    max-height: 80vh;
}

.arap-abr-icon[b-hh3n09puyr] {
    cursor: pointer;
}

.arap-sm-modal[b-hh3n09puyr] {
    max-width: 500px;
}

.arap-sm-body[b-hh3n09puyr] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.arap-sm-tpl-row[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-weight: 600;
    font-size: 13px;
    color: #1a2537;
}

    .arap-sm-tpl-row select[b-hh3n09puyr] {
        flex: 1 1 auto;
    }

.arap-sm-table th[b-hh3n09puyr],
.arap-sm-table td[b-hh3n09puyr] {
    padding: 6px 8px;
    font-size: 13px;
}

.arap-sm-chk[b-hh3n09puyr] {
    width: 30px;
    text-align: center;
}

.arap-sm-add-row[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 10px;
    font-weight: 600;
    font-size: 13px;
    color: #1a2537;
}

.arap-sm-send-btn[b-hh3n09puyr] {
    align-self: flex-start;
    padding: 8px 22px;
}

.arap-sm-error[b-hh3n09puyr] {
    color: #c0392b;
    font-size: 12.5px;
    font-weight: 600;
}

.arap-qf-modal[b-hh3n09puyr] {
    max-width: 360px;
}

.arap-qf-body[b-hh3n09puyr] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.arap-qf-buckets[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px 14px;
}

.arap-qf-diff-row[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: auto auto 1fr;
    align-items: center;
    gap: 10px;
    font-weight: 600;
    font-size: 13px;
    color: #1a2537;
}

    .arap-qf-diff-row select[b-hh3n09puyr] {
        width: 70px;
    }

.arap-qf-actions[b-hh3n09puyr] {
    display: flex;
    gap: 10px;
}

/* Green dot next to Party/VNum on the INVOICES grid — opens Ledger Info. */
.arap-dot-row[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 5px;
}

.arap-dot[b-hh3n09puyr] {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 2px;
    background: #22c55e;
    cursor: pointer;
    flex-shrink: 0;
}

.arap-li-modal[b-hh3n09puyr] {
    max-width: 420px;
}

.arap-li-body[b-hh3n09puyr] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.arap-li-card[b-hh3n09puyr] {
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: center;
}

.arap-li-code[b-hh3n09puyr] {
    font-weight: 700;
    font-size: 13px;
    color: #1a2537;
}

.arap-li-name[b-hh3n09puyr] {
    font-weight: 700;
    font-size: 14px;
    color: #1a2537;
}

.arap-li-line[b-hh3n09puyr] {
    font-size: 13px;
    color: #475569;
}

.arap-li-link[b-hh3n09puyr] {
    font-size: 13px;
    color: #1a56a7;
}

.arap-li-bal[b-hh3n09puyr] {
    display: flex;
    justify-content: space-between;
    background: #eef4fb;
    border-radius: 6px;
    padding: 8px 14px;
    font-size: 13px;
    font-weight: 600;
    color: #1a2537;
}

.arap-li-contact[b-hh3n09puyr] {
    text-align: center;
    font-size: 13px;
    color: #475569;
}

.arap-modal-search[b-hh3n09puyr] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .arap-modal-search .uf-input[b-hh3n09puyr] {
        flex: 1 1 auto;
        min-width: 0;
    }

.arap-modal-body[b-hh3n09puyr] {
    flex: 1;
    overflow-y: auto;
}

.arap-lp-row[b-hh3n09puyr] {
    cursor: pointer;
}

    .arap-lp-row:hover[b-hh3n09puyr] {
        background: #f1f5f9;
    }

.arap-lp-idx[b-hh3n09puyr] {
    width: 56px;
}

.mu-table tbody td.arap-lp-idx[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 600;
}

.arap-lp-name[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 500;
}

/* ── Ledger-summary ("ARAP") — CLIENTWISE/INVOICES/PIVOT sub-tabs + 2-panel
   layout (AR/AP Summary left, ageing Summary Total right), matching the
   legacy dark-bar sub-nav look. ── */
.arap-ls-tabs[b-hh3n09puyr] {
    display: flex;
    gap: 2px;
    padding: 10px 14px;
    background: #233645;
}

/* INVOICES sub-tab row (DETAILS/ABRIDGED/SEARCH) — only rendered while
   INVOICES or one of its children is selected, so it's visually a second,
   slightly indented level under the main CLIENTWISE/INVOICES/PIVOT bar. */
/* Small gap between the CLIENTWISE/INVOICES/PIVOT cluster and
   DETAILS/ABRIDGED/SEARCH — all 6 sit in one row (reverted from the
   earlier two-row layout per the latest reference). */
.arap-ls-tabs-gap[b-hh3n09puyr] {
    width: 20px;
}

.arap-ls-tab[b-hh3n09puyr] {
    height: 34px;
    display: inline-flex;
    align-items: center;
    padding: 0 18px;
    border: none;
    border-radius: 4px 4px 0 0;
    background: transparent;
    color: #cbd5e1;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
}

    .arap-ls-tab:hover[b-hh3n09puyr] {
        color: #fff;
    }

    .arap-ls-tab.active[b-hh3n09puyr] {
        background: #fff;
        color: #1a56a7;
    }

.arap-ls-grid[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 20px;
    align-items: start;
}

.arap-ls-panel[b-hh3n09puyr] {
    border: 1px solid #eef2f7;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 2px 8px rgba(15,23,42,0.14);
}

.arap-ls-panel-hdr[b-hh3n09puyr] {
    padding: 12px 16px;
    font-weight: 700;
    font-size: 13px;
    color: #1a2537;
    background-image: linear-gradient(to left, rgba(126,179,148,0.25), rgba(130,202,215,0.15));
}

.arap-ls-panel-body[b-hh3n09puyr] {
    max-height: 480px;
    overflow: auto;
}

@media (max-width: 900px) {
    .arap-ls-grid[b-hh3n09puyr] {
        grid-template-columns: 1fr;
    }
}

/* ── PIVOT sub-tab — one full-width panel (not the 2-col ClientWise grid),
   13 columns wide so it scrolls horizontally rather than wrapping. ── */
.arap-pivot-panel[b-hh3n09puyr] {
    margin: 20px;
    border: 1px solid #eef2f7;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 2px 8px rgba(15,23,42,0.14);
}

.arap-pivot-scroll[b-hh3n09puyr] {
    overflow: auto;
}

.arap-pivot-table th[b-hh3n09puyr],
.arap-pivot-table td[b-hh3n09puyr] {
    white-space: nowrap;
}

.arap-pivot-table .arap-ledger[b-hh3n09puyr] {
    max-width: none;
}

/* ── Ledger-summary footer — "Go to Page" dropdown next to Switch View ── */
.arap-goto-label[b-hh3n09puyr] {
    font-weight: 600;
}

.arap-goto-select[b-hh3n09puyr] {
    width: auto;
    min-width: 56px;
    padding: 4px 8px;
}

/* ── Party-wise section — subtotal bar + DueDays aging badge ── */
.arap-party-total[b-hh3n09puyr] {
    background: #233645;
    color: #fff;
    font-weight: 700;
}

    .arap-party-total td[b-hh3n09puyr] {
        padding: 8px 12px;
    }

/* Page Total footer — pinned to the bottom of the scrollable grid (like
   thead th is pinned to the top via position:sticky), so it's visible right
   away instead of only after scrolling past every row. Background has to go
   on the td itself (not just the tr) for sticky to stay opaque over rows
   scrolling underneath — same reason thead's sticky background is on th. */
.arap-ap-table .arap-party-total td[b-hh3n09puyr] {
    position: sticky;
    bottom: 0;
    z-index: 1;
    background: #233645;
}

.arap-pw-icon[b-hh3n09puyr] {
    margin-left: 10px;
    cursor: not-allowed;
    opacity: 0.7;
}

.arap-dd-badge[b-hh3n09puyr] {
    display: inline-block;
    min-width: 42px;
    padding: 3px 8px;
    border-radius: 4px;
    color: #fff;
    font-weight: 600;
    text-align: center;
}

/* 5-tier ageing colors — ported from the old WebForms ARAPDaTaGrid() color-code
   block (totalDays <= 30 / <= 90 / <= 180 / <= 365 / > 365), same hex values. */
.arap-dd-t1[b-hh3n09puyr] {
    background: #F2DDDC;
    color: #000;
}

.arap-dd-t2[b-hh3n09puyr] {
    background: #E6B9B8;
    color: #000;
}

.arap-dd-t3[b-hh3n09puyr] {
    background: #D99795;
    color: #000;
}

.arap-dd-t4[b-hh3n09puyr] {
    background: #953735;
    color: #fff;
}

.arap-dd-t5[b-hh3n09puyr] {
    background: #632523;
    color: #fff;
}

.arap-raw-body[b-hh3n09puyr] {
    margin-top: 10px;
    padding: 10px;
    max-width: 100%;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    background: #f8fafc;
    border: 1px solid #eef2f7;
    border-radius: 6px;
    font-size: 11px;
    text-align: left;
}
/* ── AP Invoices ("Show Invoice") panel — legacy Account Payables look ──
   THE REAL FIX for the "white gap before the footer" report: this panel
   sits directly between .mu-card (flex column) and .arap-ap-table-wrap
   (which has had flex:1/min-height:0 this whole time). But .arap-ap-panel
   itself was plain block — no display:flex — so it never passed its own
   height down as a flex context; the table-wrap's flex:1 was being applied
   to a non-flex parent and silently did nothing. The wrap just shrank to
   its own content (5 rows), .arap-ap-panel shrank to match it, and the
   *actual* empty area was .mu-card's own background showing through the
   dead space between the panel (short) and the footer (position:sticky,
   pinned to the real bottom regardless of the panel's height) — nothing
   any background-color on the wrap/table could ever reach.
   display:flex + flex-direction:column + flex:1 1 auto + min-height:0 here
   makes .arap-ap-panel itself grow to fill .mu-card's remaining space, so
   its child table-wrap's existing flex:1 finally has a real flex parent to
   grow inside. */
.arap-ap-panel[b-hh3n09puyr] {
    margin: 20px;
    border: 1px solid #eef2f7;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 2px 8px rgba(15,23,42,0.14);
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.arap-ap-panel-hdr[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 14px;
    padding: 8px 14px;
    font-weight: 700;
    font-size: 14px;
    color: #1a2537;
    background-image: linear-gradient(to left, rgba(126,179,148,0.25), rgba(130,202,215,0.15));
    flex-shrink: 0;
}

.arap-ap-pay-btn[b-hh3n09puyr] {
    opacity: 0.7;
    cursor: not-allowed;
    padding: 5px 14px;
    font-size: 13px;
    border-radius: 6px;
}

/* Cards reduced ~35-40% (was ~65-70px, target 50-60px): tighter padding,
   nowrap on the amount so long parenthesised numbers ("(6,76,83,268.66)")
   don't wrap to a 2nd line — that wrap was the main source of the extra
   height, not the font sizes themselves. */
/* Old UI shows this as one continuous rounded pill bar (5 colored segments,
   rounded only at the two outer ends) with a single line of small
   "Label value" text per segment — current build had 2-line stacked boxes
   with an ALL-CAPS label above a bold value, square corners. Matched here:
   row layout (label + value side by side), label back to normal case
   (text-transform removed), whole bar rounded via the container + first/
   last segment corners, height trimmed to fit one line comfortably. */
.arap-ap-stats[b-hh3n09puyr] {
    display: inline-flex;
    gap: 1px;
    background: #eef2f7;
    width: auto;
    flex-shrink: 0;
    border-radius: 0;
    overflow: hidden;
}

.arap-ap-stat[b-hh3n09puyr] {
    height: 34px;
    width: auto;
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 0 14px;
    color: #fff;
    text-align: center;
    line-height: 1.2;
    box-sizing: border-box;
    white-space: nowrap;
}

.arap-ap-stat-lbl[b-hh3n09puyr] {
    font-size: 11px;
    font-weight: 700;
    opacity: 0.95;
    white-space: nowrap;
}

.arap-ap-stat-val[b-hh3n09puyr] {
    font-size: 11px;
    font-weight: 400;
    white-space: nowrap;
}

.arap-ap-stat.vamt[b-hh3n09puyr] {
    background: #1565a5;
}

.arap-ap-stat.cleared[b-hh3n09puyr] {
    background: #2e93c9;
}

.arap-ap-stat.due[b-hh3n09puyr] {
    background: #e8a33d;
}

.arap-ap-stat.ytd[b-hh3n09puyr] {
    background: #c0392b;
}

.arap-ap-stat.unadj[b-hh3n09puyr] {
    background: #1ab99a;
}

/* No fixed/max-height here on purpose — the previous 480px cap was itself
   an arbitrary number that didn't track the real available screen height
   (a tall window had leftover space below 480px that nothing filled; a
   short window could fit less than 480px worth of rows anyway). Now that
   .arap-ap-panel (this wrap's real parent — see the big comment on that
   rule) is an actual flex column, plain flex:1 (inherited from
   .arap-body .mu-table-wrap, flex-basis 0%) is enough on its own: the wrap
   is sized to "whatever space is left in the panel after the header/stat
   cards," full stop — however many rows that fits (13 on a small window,
   20+ on a tall one), with the rest scrolling internally via the inherited
   overflow:auto. Kept the 2-class selector only for background-color
   below, which still needs to win over anything from a page-total/footer
   background nearby. */
.arap-body .arap-ap-table-wrap[b-hh3n09puyr] {
    /* Leftover space below the last row (fewer rows than fit on screen)
       reads as this light sky-blue tint instead of blank white. */
    background: #eaf7fb;
}

/* Fixed column widths (via <colgroup> in markup) instead of auto-distributed
   equal/browser-default widths — auto layout was stretching narrow-content
   columns (Type/Date, Invoice #, DueDate/DueDays) into big empty gaps to
   fill the full-width table. table-layout:fixed makes the colgroup widths
   authoritative, scoped to this table only. */
.arap-ap-table[b-hh3n09puyr] {
    table-layout: fixed;
    /* Table itself opaque white so the wrap's new sky-blue fill (added on
       .arap-ap-table-wrap above, for the leftover space below the last row)
       never bleeds through empty cells (e.g. a "Due" cell with no value) —
       any td/tr that sets its own background (existing zebra striping etc.)
       still wins over this, same look as before. Without this, blank cells
       showed the wrap's blue as a stray column strip through every row. */
    background: #fff;
}

.arap-ap-table td[b-hh3n09puyr],
.arap-ap-table th[b-hh3n09puyr] {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Old UI's grid text is uniformly bold/dark-navy (ledger name, dates, VNum,
   amounts all match weight) — current build had thinner/lighter text in
   several of those spots. Match old UI across the whole table. */
.arap-ap-table tbody td[b-hh3n09puyr] {
    font-weight: 600;
    color: #1a2537;
}

.arap-ap-table .arap-ap-sub[b-hh3n09puyr] {
    font-weight: 600;
    color: #1a2537;
}

/* Old UI's Invoices grid renders Type ("PUR"/"SLS") in red (td class
   "colorred" in the legacy markup), Date stays black in a nested div that
   overrides color explicitly. #800000 reuses the app's existing maroon
   convention for red text (same hex as .cr / .arap-dash-row strong.cr),
   scoped to this grid only — other grids' .arap-vtype stay untouched. */
.arap-ap-table .arap-vtype[b-hh3n09puyr] {
    color: #800000;
}

.arap-ap-table .arap-ledger[b-hh3n09puyr] {
    font-weight: 600;
}

/* Compact header/rows, scoped to this table only (global .mu-table stays
   as-is for Vouchers/other grids). Target row height ~40-45px. */
.arap-ap-table thead th[b-hh3n09puyr] {
    padding: 6px 10px;
    font-size: 12px;
}

/* No fixed height here anymore — height:42px was a MINIMUM (table cells
   can't be capped that way), and once line-height above got trimmed to
   1.2 actual 2-line content needs less than 42px, so the fixed floor just
   left a blank gap under the text every row (very visible once diagnostic
   fills made it a solid colored strip instead of invisible white-on-white).
   Letting the row size purely to content removes that gap outright. */
.arap-ap-table tbody td[b-hh3n09puyr] {
    padding: 3px 10px;
    box-sizing: border-box;
    vertical-align: middle;
}

.arap-ap-chk[b-hh3n09puyr] {
    width: 30px;
    text-align: center;
}

/* Row-select checkbox was fully unstyled native (no width/height/appearance
   set anywhere) — left it to the OS/browser default renderer, which can draw
   extra marks (e.g. Windows' own checkbox glyph) inside the box. Forcing a
   plain, fixed-size checkbox with the browser's accent-color renderer here
   removes that, keeping it a simple empty/checked box. */
.arap-ap-table .arap-ap-chk input[type="checkbox"][b-hh3n09puyr] {
    appearance: auto;
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: #1ab99a;
}

/* line-height was 1.35 — with 2 lines of content (name+VNum, type+date,
   etc.) that pushed each stack past the 42px cell/row height, forcing the
   row to auto-grow well past 42px (table cell height is a minimum, not a
   cap, so overflow:hidden above couldn't clip it — the box itself grows
   to fit). 1.2 gets 2 lines comfortably under 42px so rows stay compact. */
.arap-ap-stack[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.arap-ap-sub[b-hh3n09puyr] {
    font-size: 11px;
    color: #64748b;
}

/* Due Days badge — sized to match old UI's reference screenshot (bigger
   than the first pass here). align-self/width:fit-content still required:
   .arap-ap-stack is `align-items: stretch` by default, so without these the
   badge (inline-block) stretches to fill the full column width, rendering
   as one giant colored bar instead of a pill. */
.arap-ap-table .arap-dd-badge[b-hh3n09puyr] {
    align-self: flex-start;
    width: fit-content;
    min-width: 54px;
    padding: 2px 11px;
    font-size: 13px;
    text-align: center;
}


@media (max-width: 900px) {
    .arap-ap-stats[b-hh3n09puyr] {
        display: flex;
        flex-wrap: wrap;
        width: 100%;
    }

    .arap-ap-stat[b-hh3n09puyr] {
        flex: 1 1 45%;
        width: auto;
    }
}


/* /Components/Pages/Transactions/BSPL.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   BSPL.razor.css  — exact match to screenshot design
   ═══════════════════════════════════════════════════════════════ */

/* ── Page wrapper ─────────────────────────────────────────────── */
.bspl-page[b-a9m088rzdg] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ══════════════════════════════════════════════════════
   TITLE BLOCK, GAINS-TOGGLE, and FILTER BUTTON now live in the
   shared common-page-chrome.css (see .bspl-title-block, .bspl-title-left,
   .bspl-gains-toggle, .bspl-title-actions, .bspl-filter-toggle)
   ══════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════
   BUTTON BAR  (ABRIDGED / NORMAL / EXPAND + FY 1Y …)
   ══════════════════════════════════════════════════════ */
.bspl-btnbar[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 8px 16px 6px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    flex-wrap: wrap;
}

/* ABRIDGED / NORMAL / EXPAND */
.bspl-dep-btn[b-a9m088rzdg] {
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 600;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    letter-spacing: 0.3px;
    transition: all .12s;
    text-transform: uppercase;
}

    .bspl-dep-btn:hover[b-a9m088rzdg] {
        background: #f5f5f5;
    }

    .bspl-dep-btn.active[b-a9m088rzdg] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* Spacer between ABR/NOR/EXP and FY/1Y… */
.bspl-btn-gap[b-a9m088rzdg] {
    width: 10px;
}

/* FY / 1Y / 2Y / 3Y / 4Y / Q5 — small outlined buttons */
.bspl-yr-btn[b-a9m088rzdg] {
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 600;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
    min-width: 34px;
    text-align: center;
}

    .bspl-yr-btn:hover[b-a9m088rzdg] {
        background: #f5f5f5;
    }

    .bspl-yr-btn.active[b-a9m088rzdg] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* Q / M buttons (same style as yr buttons) */
.bspl-qm-btn[b-a9m088rzdg] {
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 600;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
    min-width: 30px;
    text-align: center;
}

    .bspl-qm-btn:hover[b-a9m088rzdg] {
        background: #f5f5f5;
    }

    .bspl-qm-btn.active[b-a9m088rzdg] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* Filter toggle button — now in common-page-chrome.css (.bspl-filter-toggle) */

/* ══════════════════════════════════════════════════════
   MAIN CONTENT
   ══════════════════════════════════════════════════════ */
.bspl-content[b-a9m088rzdg] {
    flex: 1;
    overflow-y: auto;
    padding: 12px 0px 8px;
}



/* ── Panel header (coloured bar) ──────────────────────── */
.bspl-panel-hdr[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    font-weight: 700;
    font-size: 13px;
    color: #fff;
    letter-spacing: 0.3px;
}

    .bspl-panel-hdr.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-panel-hdr.inc[b-a9m088rzdg] {
        background: #003366;
    }

.bspl-panel-hdr-right[b-a9m088rzdg] {
    font-size: 12px;
    font-weight: 400;
    opacity: .9;
}

/* ── Row base ─────────────────────────────────────────── */
.bspl-row[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 10px;
    border-bottom: 1px solid #e7eaec;
    min-height: 30px;
    transition: background .07s;
}

    .bspl-row:hover[b-a9m088rzdg] {
        background: #f9f9f9;
    }

    .bspl-row:last-child[b-a9m088rzdg] {
        border-bottom: none;
    }

/* Name / value cells */
.bspl-row-name[b-a9m088rzdg] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding-right: 8px;
    font-size: 13px;
}

.bspl-row-val[b-a9m088rzdg] {
    white-space: nowrap;
    text-align: right;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    min-width: 110px;
}

.bspl-row-prev[b-a9m088rzdg] {
    white-space: nowrap;
    text-align: right;
    font-size: 12px;
    color: #aaa;
    min-width: 95px;
    padding-left: 6px;
    font-variant-numeric: tabular-nums;
}

/* ── Row TYPE classes — exact match to screenshots ────── */

/* Root header row (CAPITAL, LOANS, TOTAL) */
.bspl-row.row-root-exp[b-a9m088rzdg] {
    background: #660000 !important;
    color: #fff;
    font-weight: 700;
    border-bottom: none !important;
    padding: 6px 10px;
}

    .bspl-row.row-root-exp:hover[b-a9m088rzdg] {
        background: #660000 !important;
    }

    .bspl-row.row-root-exp .bspl-row-name[b-a9m088rzdg],
    .bspl-row.row-root-exp .bspl-row-val[b-a9m088rzdg] {
        color: #fff;
    }

.bspl-row.row-root-inc[b-a9m088rzdg] {
    background: #003366 !important;
    color: #fff;
    font-weight: 700;
    border-bottom: none !important;
    padding: 6px 10px;
}

    .bspl-row.row-root-inc:hover[b-a9m088rzdg] {
        background: #003366 !important;
    }

    .bspl-row.row-root-inc .bspl-row-name[b-a9m088rzdg],
    .bspl-row.row-root-inc .bspl-row-val[b-a9m088rzdg] {
        color: #fff;
    }

/* Group row — bold black, light grey bg */
.bspl-row.row-group[b-a9m088rzdg] {
    background: #f2f3f5;
    font-weight: 700;
    color: #222;
}

    .bspl-row.row-group .bspl-row-name[b-a9m088rzdg] {
        color: #222;
    }

    .bspl-row.row-group .bspl-row-val[b-a9m088rzdg] {
        color: #222;
    }

/* Sub-group row (depth 2) — bold, white bg */
.bspl-row.row-subgroup[b-a9m088rzdg] {
    background: #fff;
    font-weight: 700;
    color: #222;
}

    .bspl-row.row-subgroup .bspl-row-name[b-a9m088rzdg] {
        color: #222;
    }

    .bspl-row.row-subgroup .bspl-row-val[b-a9m088rzdg] {
        color: #222;
    }



/* Profit / Loss row (BS) and Nett Profit / Loss row (PL)
   background: rgb(226,239,218)  text: rgb(21,103,48) */
.bspl-row.row-profit[b-a9m088rzdg] {
    background-color: rgb(226, 239, 218) !important;
}

    .bspl-row.row-profit:hover[b-a9m088rzdg] {
        background-color: rgb(213, 230, 203) !important;
    }

    .bspl-row.row-profit .bspl-row-name[b-a9m088rzdg],
    .bspl-row.row-profit .bspl-row-val[b-a9m088rzdg],
    .bspl-row.row-profit .bspl-row-prev[b-a9m088rzdg] {
        color: rgb(21, 103, 48) !important;
        font-weight: 600;
    }

/* Difference in Opening Balance (orange) */
.bspl-row.row-diff[b-a9m088rzdg] {
    background-color: #fff9f3;
}

    .bspl-row.row-diff .bspl-row-name[b-a9m088rzdg],
    .bspl-row.row-diff .bspl-row-val[b-a9m088rzdg] {
        color: #e07b39 !important;
    }

/* Negative amounts */
.neg[b-a9m088rzdg] {
    color: #c0392b !important;
}

/* ── Panel footer (Total row) ─────────────────────────── */
.bspl-panel-footer[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 7px 10px;
    font-weight: 700;
    font-size: 13px;
    color: #fff;
    border-top: none;
}

    .bspl-panel-footer.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-panel-footer.inc[b-a9m088rzdg] {
        background: #003366;
    }

/* ══════════════════════════════════════════════════════
   MULTI-COLUMN GRID  (Q / M / Q5 / 2-4Y)
   ══════════════════════════════════════════════════════ */






.bspl-mc-hdr.exp[b-a9m088rzdg] {
    background: #660000;
}

.bspl-mc-hdr.inc[b-a9m088rzdg] {
    background: #003366;
}







.bspl-mc-row:hover[b-a9m088rzdg] {
    background: #f9f9f9;
}

.bspl-mc-row.mc-root-exp[b-a9m088rzdg] {
    background: #660000 !important;
    color: #fff;
    font-weight: 700;
}

    .bspl-mc-row.mc-root-exp:hover[b-a9m088rzdg] {
        background: #660000 !important;
    }

.bspl-mc-row.mc-root-inc[b-a9m088rzdg] {
    background: #003366 !important;
    color: #fff;
    font-weight: 700;
}

    .bspl-mc-row.mc-root-inc:hover[b-a9m088rzdg] {
        background: #003366 !important;
    }

    .bspl-mc-row.mc-root-exp .bspl-mc-val-cell[b-a9m088rzdg],
    .bspl-mc-row.mc-root-inc

    .bspl-mc-row.mc-group[b-a9m088rzdg] {
        background: #f2f3f5;
        font-weight: 700;
    }

.bspl-mc-row.mc-subgroup[b-a9m088rzdg] {
    background: #fff;
    font-weight: 700;
}

/* ══════════════════════════════════════════════════════
   SKELETON LOADING
   ══════════════════════════════════════════════════════ */
.bspl-skeleton-panels[b-a9m088rzdg] {
    display: flex;
    gap: 16px;
    padding: 12px 16px;
}

.bspl-sk-panel[b-a9m088rzdg] {
    flex: 1;
    background: #fff;
    border: 1px solid #e7eaec;
    padding: 0;
    overflow: hidden;
}

.bspl-sk-hdr[b-a9m088rzdg] {
    height: 36px;
    background: #bbb;
    margin-bottom: 0;
}

.bspl-sk-row[b-a9m088rzdg] {
    height: 29px;
    margin: 0;
    border-bottom: 1px solid #e7eaec;
    background: linear-gradient(90deg,#efefef 25%,#e5e5e5 50%,#efefef 75%);
    background-size: 400% 100%;
    animation: bspl-shimmer-b-a9m088rzdg 1.4s infinite;
}

@keyframes bspl-shimmer-b-a9m088rzdg {
    0% {
        background-position: 100% 0
    }

    100% {
        background-position: -100% 0
    }
}

/* ══════════════════════════════════════════════════════
   LOADING SPINNER — page-level loading now uses the shared <Loader>
   component; this ring is kept for the small COA modal spinner only.
   ══════════════════════════════════════════════════════ */
.bspl-spinner-ring[b-a9m088rzdg] {
    width: 48px;
    height: 48px;
    border: 5px solid rgba(255,255,255,.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: bspl-spin-b-a9m088rzdg .7s linear infinite;
}

@keyframes bspl-spin-b-a9m088rzdg {
    to {
        transform: rotate(360deg);
    }
}

/* ══════════════════════════════════════════════════════
   ERROR / EMPTY
   ══════════════════════════════════════════════════════ */
.bspl-error[b-a9m088rzdg] {
    margin: 10px 16px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

.bspl-empty[b-a9m088rzdg] {
    text-align: center;
    padding: 50px 20px;
    color: #aaa;
    font-size: 13px;
}

/* ══════════════════════════════════════════════════════
   RIGHT FILTER SIDEBAR — now uses shared masters-forms.css classes
   (.mu-drawer, .mu-drawer-overlay, .mu-drawer-hdr, .mu-fld, .mu-drawer-foot),
   same as MLedger. Only the checkbox-row label style is page-local.
   ══════════════════════════════════════════════════════ */
.le-chk[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

/* ══════════════════════════════════════════════════════
   FIXED BOTTOM FOOTER — now in common-page-chrome.css
   (.bspl-footer, .bspl-foot-btn, .bspl-footer-left, .bspl-footer-right)
   ══════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════ */
@media (max-width: 767px) {
    .bspl-panels[b-a9m088rzdg],
    .bspl-mc-panels[b-a9m088rzdg],
    .bspl-skeleton-panels[b-a9m088rzdg] {
        flex-direction: column;
    }





    .bspl-dep-btn[b-a9m088rzdg] {
        padding: 4px 10px;
        font-size: 11px;
    }

    .bspl-yr-btn[b-a9m088rzdg],
    .bspl-qm-btn[b-a9m088rzdg] {
        padding: 4px 7px;
        font-size: 11px;
        min-width: 28px;
    }
}

/* Multi-col ledger name colours */
.mc-led-exp[b-a9m088rzdg] {
    color: #660000;
}

.mc-led-inc[b-a9m088rzdg] {
    color: #003366;
}

/* ══════════════════════════════════════════════════════
   TOTAL BAR — full width, both sides side by side
   ══════════════════════════════════════════════════════ */
.bspl-total-bar[b-a9m088rzdg] {
    display: flex;
    gap: 16px; /* matches .bspl-panels gap */
    padding: 0 0 4px 0;
}

.bspl-total-cell[b-a9m088rzdg] {
    flex: 1 1 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 7px 10px;
    font-weight: 700;
    font-size: 13px;
    color: #fff;
    letter-spacing: 0.3px;
}

    .bspl-total-cell.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-total-cell.inc[b-a9m088rzdg] {
        background: #003366;
    }

/* ══════════════════════════════════════════════════════
   EMPTY FILLER ROW — equalises left/right row count
   ══════════════════════════════════════════════════════ */
.bspl-row-empty[b-a9m088rzdg] {
    min-height: 30px;
    border-bottom: 1px solid #e7eaec;
    background: #fff;
}

/* Remove the old per-panel footer (replaced by total-bar) */
.bspl-panel-footer[b-a9m088rzdg] {
    display: none !important;
}

/* MC panels still use their own footer */




/* TITLE ROW — now in common-page-chrome.css (.bspl-title-row) */

/* ══════════════════════════════════════════════════════
   BUTTON BAR — two groups, wrap on mobile
   ══════════════════════════════════════════════════════ */
.bspl-btnbar[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px 6px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.bspl-btnbar-group[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

/* FOOTER LEFT / RIGHT layout — now in common-page-chrome.css */

/* ══════════════════════════════════════════════════════
   MOBILE RESPONSIVE  (≤ 767px)
   ══════════════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* Title, subtitle, and Filters button mobile rules now in common-page-chrome.css */

    /* Button bar */
    .bspl-btnbar[b-a9m088rzdg] {
        padding: 6px 10px;
        gap: 6px;
    }

    .bspl-dep-btn[b-a9m088rzdg] {
        padding: 4px 8px;
        font-size: 11px;
    }

    .bspl-yr-btn[b-a9m088rzdg],
    .bspl-qm-btn[b-a9m088rzdg] {
        padding: 3px 7px;
        font-size: 11px;
        min-width: 26px;
    }

    /* Panels — stack vertically */
    .bspl-panels[b-a9m088rzdg],
    .bspl-mc-panels[b-a9m088rzdg],
    .bspl-skeleton-panels[b-a9m088rzdg] {
        flex-direction: column;
    }

    /* Total bar — stack vertically too */
    .bspl-total-bar[b-a9m088rzdg] {
        flex-direction: column;
        gap: 0;
    }

    .bspl-total-cell[b-a9m088rzdg] {
        width: 100%;
    }

    /* Row text */
    .bspl-row-name[b-a9m088rzdg] {
        font-size: 12px;
    }

    .bspl-row-val[b-a9m088rzdg] {
        font-size: 12px;
        min-width: 80px;
    }

    /* Multi-col */



    /* Content padding */
    .bspl-content[b-a9m088rzdg] {
        padding: 8px 0px 8px;
    }

    /* Footer mobile rules now in common-page-chrome.css */
}

/* ══════════════════════════════════════════════════════
   MOBILE RESPONSIVE  (≤ 480px — very small phones)
   ══════════════════════════════════════════════════════ */
@media (max-width: 480px) {
    .bspl-dep-btn[b-a9m088rzdg] {
        padding: 3px 6px;
        font-size: 10px;
    }

    .bspl-yr-btn[b-a9m088rzdg],
    .bspl-qm-btn[b-a9m088rzdg] {
        padding: 3px 5px;
        font-size: 10px;
        min-width: 22px;
    }

    .bspl-panel-hdr[b-a9m088rzdg] {
        flex-direction: column;
        align-items: flex-start;
        gap: 2px;
    }

    .bspl-panel-hdr-right[b-a9m088rzdg] {
        font-size: 10px;
    }
}


/* TITLE ACTIONS wrapper — now in common-page-chrome.css (.bspl-title-actions) */

.bspl-export-btn[b-a9m088rzdg] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    transition: opacity .12s;
    color: #fff;
}

    .bspl-export-btn:hover[b-a9m088rzdg] {
        opacity: .85;
    }

    .bspl-export-btn.pdf[b-a9m088rzdg] {
        background: #c0392b;
    }

    .bspl-export-btn.xls[b-a9m088rzdg] {
        background: #1e7e34;
    }

/* ══════════════════════════════════════════════════════
   PANEL HEADER DATE COLUMNS  (current + prev year)
   ══════════════════════════════════════════════════════ */
.bspl-hdr-dates[b-a9m088rzdg] {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-shrink: 0;
}

    .bspl-hdr-dates span[b-a9m088rzdg] {
        font-size: 12px;
        font-weight: 400;
        opacity: .9;
        min-width: 110px;
        text-align: right;
        white-space: nowrap;
    }

/* Panel header must flex correctly with date group */
.bspl-panel-hdr[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    font-weight: 700;
    font-size: 13px;
    color: #fff;
    letter-spacing: 0.3px;
    gap: 8px;
}

/* Panel footer — same layout as header */
.bspl-panel-footer[b-a9m088rzdg] {
    display: flex !important;
    justify-content: space-between;
    align-items: center;
    padding: 7px 10px;
    font-weight: 700;
    font-size: 13px;
    color: #fff;
    gap: 8px;
}

    .bspl-panel-footer.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-panel-footer.inc[b-a9m088rzdg] {
        background: #003366;
    }

/* Remove old total-bar (totals are now inside each panel footer) */
.bspl-total-bar[b-a9m088rzdg] {
    display: none !important;
}

.bspl-total-cell[b-a9m088rzdg] {
    display: none !important;
}

/* ══════════════════════════════════════════════════════
   LEDGER ROW — colour set via style= on bspl-row-name
   Remove class-based colour overrides that conflict
   ══════════════════════════════════════════════════════ */



/* ══════════════════════════════════════════════════════
   MOBILE — totals stay inside each panel (no stacking issue)
   ══════════════════════════════════════════════════════ */
@media (max-width: 767px) {
    .bspl-export-btn span[b-a9m088rzdg] {
        display: none;
    }
    /* icon only on mobile */
    .bspl-export-btn[b-a9m088rzdg] {
        padding: 5px 8px;
    }

    .bspl-hdr-dates[b-a9m088rzdg] {
        flex-direction: column;
        gap: 2px;
        align-items: flex-end;
    }

        .bspl-hdr-dates span[b-a9m088rzdg] {
            font-size: 10px;
            min-width: auto;
        }
    /* Panel footer stacks label + amounts on very small screens */
    .bspl-panel-footer[b-a9m088rzdg] {
        flex-direction: column;
        align-items: stretch;
        gap: 2px;
    }

        .bspl-panel-footer .bspl-hdr-dates[b-a9m088rzdg] {
            flex-direction: row;
            justify-content: flex-end;
        }
}

@media (max-width: 480px) {
    .bspl-export-btn[b-a9m088rzdg] {
        padding: 4px 7px;
        font-size: 11px;
    }
}

/* ══════════════════════════════════════════════════════
   ROW COLOUR RULES
   Ledger rows (isGroup=="L"): color set via inline style on the row div
     isplbs 2/4 → #660000   isplbs 1/3 → #000080
   Group rows: LedgerColor returns "inherit" → CSS classes control colour
   ══════════════════════════════════════════════════════ */

/* group row: bold dark */
.bspl-row.row-group[b-a9m088rzdg] {
    font-weight: 700;
    color: #222;
    background: #f2f3f5;
}

.bspl-row.row-subgroup[b-a9m088rzdg] {
    font-weight: 700;
    color: #222;
    background: #fff;
}

/* Ensure child spans don't override the row's inline color for ledger rows */
.bspl-row .bspl-row-name[b-a9m088rzdg],
.bspl-row .bspl-row-val[b-a9m088rzdg],
.bspl-row .bspl-row-prev[b-a9m088rzdg] {
    color: inherit;
}

/* Group/special rows reset to their CSS class color (override inherit) */
.bspl-row.row-group .bspl-row-name[b-a9m088rzdg],
.bspl-row.row-group .bspl-row-val[b-a9m088rzdg],
.bspl-row.row-subgroup .bspl-row-name[b-a9m088rzdg],
.bspl-row.row-subgroup .bspl-row-val[b-a9m088rzdg] {
    color: #222 !important;
}

/* profit row keeps its green */
.bspl-row.row-profit[b-a9m088rzdg],
.bspl-row.row-profit .bspl-row-name[b-a9m088rzdg],
.bspl-row.row-profit .bspl-row-val[b-a9m088rzdg],
.bspl-row.row-profit .bspl-row-prev[b-a9m088rzdg] {
    color: rgb(21, 103, 48) !important;
}

/* diff row keeps its orange */
.bspl-row.row-diff[b-a9m088rzdg],
.bspl-row.row-diff .bspl-row-name[b-a9m088rzdg],
.bspl-row.row-diff .bspl-row-val[b-a9m088rzdg] {
    color: #e07b39 !important;
}

/* MC rows — same inherit pattern */
.bspl-mc-row .bspl-mc-name-cell[b-a9m088rzdg],
.bspl-mc-row
.bspl-mc-row.mc-group .bspl-mc-name-cell[b-a9m088rzdg],
.bspl-mc-row.mc-group
/* ══════════════════════════════════════════════════════
   MC PANEL FOOTER — same flex as header row so
   per-column total values align under their columns
   ══════════════════════════════════════════════════════ */
/* Name cell and val cells inside footer reuse mc cell sizing */
.bspl-mc-panel .bspl-panel-footer .bspl-mc-name-cell[b-a9m088rzdg],
.bspl-mc-panel .bspl-panel-footer
/* ══════════════════════════════════════════════════════
   MULTI-COLUMN GRID  (Prev 1/2/3/4, Q, M, Q5)
   Each side (Left / Right) is a .bspl-mc-scroll wrapper
   that scrolls horizontally independently.
   Every row is a single flex line:
     [name-cell] [val-cell] [val-cell] …
   Name cell has fixed width; value cells fixed width,
   right-aligned, tabular numbers.
   ══════════════════════════════════════════════════════ */
/* outer container — two panels side by side */
/* each half-panel: scrollable horizontally */
.bspl-mc-scroll[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff;
    border: 1px solid #e7eaec;
}

/* ── Column widths ────────────────────────────────────
   Name cell: 200px fixed, left-align
   Value cell: 130px fixed, right-align
   ── */




/* ── Header row (sticky) ── */
.bspl-mc-hdr-row[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    min-height: 36px;
    position: sticky;
    top: 0;
    z-index: 5;
    color: #fff;
    font-weight: 700;
    font-size: 12.5px;
}

    .bspl-mc-hdr-row.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-mc-hdr-row.inc[b-a9m088rzdg] {
        background: #003366;
    }

.bspl-mc-hdr-cell[b-a9m088rzdg] {
    color: #fff !important;
    font-weight: 700;
}

/* ── Data rows ── */
.bspl-mc-dr[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    min-height: 28px;
    border-bottom: 1px solid #e7eaec;
    transition: background .07s;
}

    .bspl-mc-dr:hover[b-a9m088rzdg] {
        background: #f9f9f9;
    }

    /* group row */
    .bspl-mc-dr.mc-group[b-a9m088rzdg] {
        background: #f2f3f5;
        font-weight: 700;
        color: #222 !important;
    }

        .bspl-mc-dr.mc-group .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.mc-group .bspl-mc-vc[b-a9m088rzdg] {
            color: #222 !important;
        }

    /* ledger rows: color set via inline style on the row div */
    .bspl-mc-dr .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr .bspl-mc-vc[b-a9m088rzdg] {
        color: inherit;
    }

/* ── Mobile ── */
@media (max-width: 767px) {
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column;
        padding: 8px;
        gap: 10px;
    }
}

@media (max-width: 480px) {
}

/* ══════════════════════════════════════════════════════
   STANDARD MODE WRAPPER  (Y / PY)
   Both panels side-by-side on wide screens,
   stacked vertically on narrow screens.
   Each panel reuses .bspl-mc-scroll + column classes
   so FY and PY columns align perfectly.
   ══════════════════════════════════════════════════════ */

/* Outer flex container — horizontal on wide, vertical on narrow */

/* Each half */
.bspl-std-panel[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0; /* allow shrinking */
}

    /* The scroll wrapper inside each panel */
    .bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
        width: 100%;
        border: 1px solid #e7eaec;
        background: #fff;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

/* ── Responsive breakpoint ──────────────────────────
   Below 900px: stack panels vertically.
   Each panel then takes full width and scrolls
   horizontally on its own if needed.
   ── */
@media (max-width: 900px) {
    .bspl-std-wrap[b-a9m088rzdg] {
        flex-direction: column;
        gap: 12px;
        padding: 8px 0;
    }

    .bspl-std-panel[b-a9m088rzdg] {
        flex: none;
        width: 100%;
    }
}

/* ── Row type overrides for mc-dr inside standard mode ── */
/* Special rows — profit/diff — need !important to beat inline color */
.bspl-mc-dr.row-profit[b-a9m088rzdg],
.bspl-mc-dr.row-profit .bspl-mc-nc[b-a9m088rzdg],
.bspl-mc-dr.row-profit .bspl-mc-vc[b-a9m088rzdg] {
    background-color: rgb(226, 239, 218) !important;
    color: rgb(21, 103, 48) !important;
    font-weight: 600;
}

    .bspl-mc-dr.row-profit:hover[b-a9m088rzdg] {
        background-color: rgb(213, 230, 203) !important;
    }

.bspl-mc-dr.row-diff[b-a9m088rzdg],
.bspl-mc-dr.row-diff .bspl-mc-nc[b-a9m088rzdg],
.bspl-mc-dr.row-diff .bspl-mc-vc[b-a9m088rzdg] {
    color: #e07b39 !important;
    background: #fff9f3;
}

/* Group rows */
.bspl-mc-dr.row-group[b-a9m088rzdg] {
    background: #f2f3f5;
    font-weight: 700;
    color: #222 !important;
}

    .bspl-mc-dr.row-group .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr.row-group .bspl-mc-vc[b-a9m088rzdg] {
        color: #222 !important;
    }

.bspl-mc-dr.row-subgroup[b-a9m088rzdg] {
    background: #fff;
    font-weight: 700;
    color: #222 !important;
}

    .bspl-mc-dr.row-subgroup .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr.row-subgroup .bspl-mc-vc[b-a9m088rzdg] {
        color: #222 !important;
    }

/* Also apply to MC wrap for consistency */
@media (max-width: 900px) {
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column;
        gap: 12px;
        padding: 8px;
    }

    .bspl-mc-scroll[b-a9m088rzdg] {
        flex: none;
        width: 100%;
    }
}

/* ══════════════════════════════════════════════════════
   ILLUSTRATION BAR
   Equivalent to BalanceSheet001.png / ProfitandLoss.png
   from the old Bootstrap webform.
   Shows on screens ≥900px, hidden below.
   ══════════════════════════════════════════════════════ */
.bspl-illus-bar[b-a9m088rzdg] {
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    padding: 10px 16px;
}

.bspl-illus-inner[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 16px;
    max-width: 900px;
}

/* Left and right blocks */
.bspl-illus-block[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
}

.bspl-illus-label[b-a9m088rzdg] {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    margin-bottom: 4px;
}

.bspl-illus-block.exp .bspl-illus-label[b-a9m088rzdg] {
    color: #660000;
}

.bspl-illus-block.inc .bspl-illus-label[b-a9m088rzdg] {
    color: #003366;
}

/* Progress track */
.bspl-illus-bar-track[b-a9m088rzdg] {
    width: 100%;
    height: 10px;
    background: #f0f2f7;
    border-radius: 5px;
    overflow: hidden;
    margin-bottom: 4px;
}

.bspl-illus-bar-fill[b-a9m088rzdg] {
    height: 100%;
    border-radius: 5px;
    transition: width .5s ease;
    min-width: 4px;
}

    .bspl-illus-bar-fill.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-illus-bar-fill.inc[b-a9m088rzdg] {
        background: #003366;
    }

.bspl-illus-amount[b-a9m088rzdg] {
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.bspl-illus-block.exp .bspl-illus-amount[b-a9m088rzdg] {
    color: #660000;
}

.bspl-illus-block.inc .bspl-illus-amount[b-a9m088rzdg] {
    color: #003366;
}

/* Centre icon + label */
.bspl-illus-centre[b-a9m088rzdg] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

.bspl-illus-report-name[b-a9m088rzdg] {
    font-size: 9px;
    font-weight: 700;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

/* Hide on mobile — same as old webform d-xl-only behaviour */
@media (max-width: 900px) {
    .bspl-illus-bar[b-a9m088rzdg] {
        display: none;
    }
}

/* ══════════════════════════════════════════════════════
   REPORT IMAGE COLUMN
   Matches webform col-xl-4 third column:
     - BalanceSheet001.png  (BS)
     - ProfitandLoss.jpg    (PL)
   Shown on screens ≥ 1200px (xl), hidden below.
   Copy images to GainsBlazor/wwwroot/images/
   ══════════════════════════════════════════════════════ */




/* Show only on XL (≥1200px), hidden on smaller screens */
@media (max-width: 1199px) {
}

/* On XL screens give panels a bit less flex so image fits */
@media (min-width: 1200px) {
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        align-items: flex-start;
    }

    .bspl-std-panel[b-a9m088rzdg],
    .bspl-mc-scroll[b-a9m088rzdg] {
        flex: 1 1 0;
        min-width: 0;
    }
}

/* ══════════════════════════════════════════════════════════════════
   GRID SYSTEM — shared by Standard (Y/PY) and Multi-Col (Q/M/etc.)

   Layout: two .bspl-panel-half side-by-side, each containing a
   .bspl-scroll-box that scrolls horizontally if needed.
   Rows = flex lines:
     [.nc — name, fixed width] [.vc — value, fixed, right-align] ...

   Column widths:
     Name cell (.nc):  240px
     Value cell (.vc): 150px
   These give enough room for Indian crore amounts.
   ══════════════════════════════════════════════════════════════════ */

/* ── Outer wrap: two panels side-by-side on ≥900px ── */

/* ── Each half panel ── */
.bspl-std-panel[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
}

/* MC scroll — same as std-panel */
.bspl-mc-scroll[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff;
    border: 1px solid #e7eaec;
}

/* std-panel inner scroll box */
.bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
    width: 100%;
}

/* ── Name cell ── */


/* ── Value cell ── */


/* ── Header row ── */
.bspl-mc-hdr-row[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    min-height: 34px;
    position: sticky;
    top: 0;
    z-index: 5;
    color: #fff;
    font-weight: 700;
    font-size: 12.5px;
}

    .bspl-mc-hdr-row.exp[b-a9m088rzdg] {
        background: #660000;
    }

    .bspl-mc-hdr-row.inc[b-a9m088rzdg] {
        background: #003366;
    }

.bspl-mc-hdr-cell[b-a9m088rzdg] {
    color: #fff !important;
    font-weight: 700;
}

/* ── Data row ── */
.bspl-mc-dr[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    min-height: 28px;
    border-bottom: 1px solid #e7eaec;
    background: #fff;
    transition: background .07s;
}

    .bspl-mc-dr:hover[b-a9m088rzdg] {
        background: #f9f9f9;
    }

    /* group/subgroup */
    .bspl-mc-dr.mc-group[b-a9m088rzdg],
    .bspl-mc-dr.row-group[b-a9m088rzdg] {
        background: #f2f3f5;
        font-weight: 700;
    }

        .bspl-mc-dr.mc-group .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.mc-group .bspl-mc-vc[b-a9m088rzdg],
        .bspl-mc-dr.row-group .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-group .bspl-mc-vc[b-a9m088rzdg] {
            color: #222 !important;
        }

    .bspl-mc-dr.row-subgroup[b-a9m088rzdg] {
        background: #fff;
        font-weight: 700;
    }

        .bspl-mc-dr.row-subgroup .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-subgroup .bspl-mc-vc[b-a9m088rzdg] {
            color: #222 !important;
        }

    /* profit row */
    .bspl-mc-dr.row-profit[b-a9m088rzdg] {
        background-color: rgb(226,239,218) !important;
    }

        .bspl-mc-dr.row-profit:hover[b-a9m088rzdg] {
            background-color: rgb(213,230,203) !important;
        }

        .bspl-mc-dr.row-profit .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-profit .bspl-mc-vc[b-a9m088rzdg] {
            color: rgb(21,103,48) !important;
            font-weight: 600;
        }

    /* diff row */
    .bspl-mc-dr.row-diff[b-a9m088rzdg] {
        background: #fff9f3;
    }

        .bspl-mc-dr.row-diff .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-diff .bspl-mc-vc[b-a9m088rzdg] {
            color: #e07b39 !important;
        }

    /* ledger rows: color set via inline style on row div */
    .bspl-mc-dr .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr .bspl-mc-vc[b-a9m088rzdg] {
        color: inherit;
    }

/* ── REPORT IMAGE COLUMN ──────────────────────────────
   Shown ONLY in FY standard mode (no prev columns).
   Positioned OUTSIDE the flex wrap, floated right.
   Matches webform col-xl-4 d-xl-block behaviour.
   Copy to wwwroot/images/:
     BalanceSheet001.png
     ProfitandLoss.jpg
   ── */



/* Show only on XL (≥1200px) */
@media (min-width: 1200px) {


    /* On XL when image is visible, data panels share remaining width */
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        /* image is floated, wraps naturally */
    }
}

/* ── RESPONSIVE: stack panels vertically below 900px ── */
@media (max-width: 900px) {
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column;
        gap: 10px;
        padding: 8px;
    }

    .bspl-std-panel[b-a9m088rzdg],
    .bspl-mc-scroll[b-a9m088rzdg] {
        flex: none;
        width: 100%;
        min-width: 0;
    }
}

@media (max-width: 480px) {
}


/* ══════════════════════════════════════════════════════════════════
   AUTHORITATIVE GRID CSS — single source of truth for all columns.
   Applies to both Standard (Y/PY) and Multi-Col (Q/M/2Y/3Y/4Y/Q5).
   ══════════════════════════════════════════════════════════════════ */

/* ── Outer wraps ── */
.bspl-std-wrap[b-a9m088rzdg],
.bspl-mc-wrap[b-a9m088rzdg] {
    display: flex;
    flex-direction: row;
    gap: 12px;
    padding: 10px 16px 6px;
    align-items: flex-start;
    box-sizing: border-box;
    width: 100%;
    overflow: hidden;
}

.bspl-std-panel[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
}

.bspl-mc-scroll[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff;
    border: 1px solid #e7eaec;
}

.bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
    width: 100%;
    overflow-x: auto;
}

/* ── Name cell: 220px fixed ── */
.bspl-mc-nc[b-a9m088rzdg] {
    flex: 0 0 220px !important;
    width: 220px !important;
    min-width: 220px !important;
    max-width: 220px !important;
    padding: 5px 8px;
    font-size: 13px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-sizing: border-box;
}

/* ── Value cell: 140px fixed, right-aligned ── */
.bspl-mc-vc[b-a9m088rzdg] {
    flex: 0 0 140px !important;
    width: 140px !important;
    min-width: 140px !important;
    max-width: 140px !important;
    padding: 5px 10px;
    text-align: right !important;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    box-sizing: border-box;
}

/* ── Header row ── */
.bspl-mc-hdr-row[b-a9m088rzdg] {
    display: flex !important;
    align-items: center;
    min-height: 34px;
    position: sticky;
    top: 0;
    z-index: 5;
    color: #fff;
    font-weight: 700;
    font-size: 12.5px;
}

    .bspl-mc-hdr-row.exp[b-a9m088rzdg] {
        background: #660000 !important;
    }

    .bspl-mc-hdr-row.inc[b-a9m088rzdg] {
        background: #003366 !important;
    }

.bspl-mc-hdr-cell[b-a9m088rzdg] {
    color: #fff !important;
    font-weight: 700 !important;
    text-align: right !important;
    /* Header labels ("Apr-25-Mar-26") are text, not numbers — they can be
       longer than a typical value and don't have the same "must show the
       true magnitude" requirement a currency figure does, but losing part
       of the label to ellipsis still looks like a rendering bug (it looks
       identical to the column-width mismatch this was mistaken for).
       Let it wrap to 2 lines instead — the sticky header row has vertical
       room to grow without touching data-row alignment below it. */
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: unset !important;
    line-height: 1.15;
}

.bspl-mc-hdr-row[b-a9m088rzdg] {
    min-height: 34px;
    height: auto;
    padding: 3px 0;
}

    .bspl-mc-hdr-row .bspl-mc-nc[b-a9m088rzdg] {
        text-align: left !important;
    }

/* ── Data row ── */
.bspl-mc-dr[b-a9m088rzdg] {
    display: flex !important;
    align-items: center;
    min-height: 28px;
    border-bottom: 1px solid #e7eaec;
    background: #fff;
    transition: background .07s;
}

    .bspl-mc-dr:hover[b-a9m088rzdg] {
        background: #f9f9f9;
    }

    /* colour rules — least specific so inline style beats them */
    .bspl-mc-dr .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr .bspl-mc-vc[b-a9m088rzdg] {
        color: inherit;
    }

    .bspl-mc-dr.mc-group[b-a9m088rzdg],
    .bspl-mc-dr.row-group[b-a9m088rzdg] {
        background: #f2f3f5;
        font-weight: 700;
    }

    .bspl-mc-dr.row-subgroup[b-a9m088rzdg] {
        background: #fff;
        font-weight: 700;
    }

    .bspl-mc-dr.mc-group .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr.mc-group .bspl-mc-vc[b-a9m088rzdg],
    .bspl-mc-dr.row-group .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr.row-group .bspl-mc-vc[b-a9m088rzdg] {
        color: #222 !important;
    }

    .bspl-mc-dr.row-subgroup .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-dr.row-subgroup .bspl-mc-vc[b-a9m088rzdg] {
        color: #222 !important;
    }

    .bspl-mc-dr.row-profit[b-a9m088rzdg] {
        background-color: rgb(226,239,218) !important;
    }

        .bspl-mc-dr.row-profit:hover[b-a9m088rzdg] {
            background-color: rgb(213,230,203) !important;
        }

        .bspl-mc-dr.row-profit .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-profit .bspl-mc-vc[b-a9m088rzdg] {
            color: rgb(21,103,48) !important;
            font-weight: 600;
        }

    .bspl-mc-dr.row-diff[b-a9m088rzdg] {
        background: #fff9f3;
    }

        .bspl-mc-dr.row-diff .bspl-mc-nc[b-a9m088rzdg],
        .bspl-mc-dr.row-diff .bspl-mc-vc[b-a9m088rzdg] {
            color: #e07b39 !important;
        }

/* ── Responsive: stack below 900px ── */
@media (max-width: 900px) {
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column;
        gap: 10px;
        padding: 8px;
    }

    .bspl-std-panel[b-a9m088rzdg],
    .bspl-mc-scroll[b-a9m088rzdg] {
        flex: none;
        width: 100%;
        min-width: 0;
    }

    .bspl-mc-nc[b-a9m088rzdg] {
        flex: 0 0 180px !important;
        width: 180px !important;
        min-width: 180px !important;
        max-width: 180px !important;
        font-size: 12px;
    }

    .bspl-mc-vc[b-a9m088rzdg] {
        flex: 0 0 120px !important;
        width: 120px !important;
        min-width: 120px !important;
        max-width: 120px !important;
        font-size: 12px;
    }
}

@media (max-width: 480px) {
    .bspl-mc-nc[b-a9m088rzdg] {
        flex: 0 0 140px !important;
        width: 140px !important;
        min-width: 140px !important;
        max-width: 140px !important;
        font-size: 11px;
        padding: 4px 5px;
    }

    .bspl-mc-vc[b-a9m088rzdg] {
        flex: 0 0 100px !important;
        width: 100px !important;
        min-width: 100px !important;
        max-width: 100px !important;
        font-size: 11px;
        padding: 4px 5px;
    }
}

/* ══════════════════════════════════════════════════════
   REPORT IMAGE COLUMN
   3rd flex child inside .bspl-std-wrap.
   Sits beside left+right panels on XL screens.
   Old webform: col-xl-4 d-xl-block d-sm-none
   New: flex: 0 0 280px, hidden below 1100px
   ══════════════════════════════════════════════════════ */
.bspl-img-col[b-a9m088rzdg] {
    flex: 0 0 280px;
    width: 280px;
    display: none; /* hidden by default */
    align-items: flex-start;
    justify-content: center;
    padding: 0 4px;
    align-self: flex-start;
}

.bspl-report-img[b-a9m088rzdg] {
    width: 100%;
    max-width: 280px;
    height: auto;
    display: block;
}

/* Show on XL (≥1100px) only */
@media (min-width: 1100px) {
    .bspl-img-col[b-a9m088rzdg] {
        display: flex;
    }
}

/* On mobile: stack panels vertically, hide image */
@media (max-width: 900px) {
    .bspl-img-col[b-a9m088rzdg] {
        display: none !important;
    }
}

/* ══════════════════════════════════════════════════════
   DEPTH BUTTON SHORT/LONG LABELS
   Desktop (>600px): show ABRIDGED / NORMAL / EXPAND
   Mobile (≤600px):  show ABR / NOR / EXP
   ══════════════════════════════════════════════════════ */
.bspl-btn-short[b-a9m088rzdg] {
    display: none;
}

.bspl-btn-full[b-a9m088rzdg] {
    display: inline;
}

@media (max-width: 600px) {
    .bspl-btn-short[b-a9m088rzdg] {
        display: inline;
    }

    .bspl-btn-full[b-a9m088rzdg] {
        display: none;
    }
}


/* ════════════════════════════════════════════════════════════════
   FINAL OVERRIDE — fixes empty space and responsive layout
   ════════════════════════════════════════════════════════════════ */

/* Wrap: don't stretch children, let them be natural width */
.bspl-std-wrap[b-a9m088rzdg],
.bspl-mc-wrap[b-a9m088rzdg] {
    display: flex !important;
    flex-wrap: nowrap;
    align-items: flex-start !important;
    gap: 12px;
    padding: 10px 16px 6px;
    width: 100%;
    box-sizing: border-box;
    /* REVERTED to auto (was briefly forced to `hidden` while chasing the
       3Y/4Y background bug — that turned out to be the percentage-inside-
       max-content circularity fixed above via fixed-px columns, not this
       wrap's overflow, and `hidden` here was removing the outer wrap's own
       scroll/reflow at narrower widths — e.g. with DevTools docked open —
       for EVERY mode, not just 3Y/4Y, which is what made things look
       "not responsive"/cramped generally. `auto` restores the original,
       working behavior: each child panel still scrolls itself first via
       its own overflow-x:auto + min-width:0, and this only engages as a
       fallback if a child still needs more room than its half-share. */
    overflow-x: auto;
}

    /* FY / PY standard mode: panels share available space equally */
    .bspl-std-wrap .bspl-std-panel[b-a9m088rzdg] {
        flex: 1 1 0 !important; /* stretch to fill — percentage cols fill 100% */
        min-width: 0;
        overflow: hidden;
    }

    /* MC mode panels: stretch equally when side-by-side */
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll[b-a9m088rzdg] {
        flex: 1 1 0 !important;
        min-width: 0;
        overflow-x: auto;
    }

/* Inner scroll box inside std-panel */
.bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
    flex: none !important;
    width: 100% !important; /* fill the panel */
    overflow-x: auto;
    border: 1px solid #e7eaec;
    background: #fff;
}

/* Monthly / Q / Q5: force vertical stacking always */
.bspl-mc-wrap[b-a9m088rzdg] {
    flex-direction: row;
}

/* Image column: natural size beside panels */
.bspl-std-wrap .bspl-img-col[b-a9m088rzdg] {
    flex: 0 0 auto !important;
    align-self: flex-start;
    margin-left: auto; /* push to right edge */
}

/* ── RESPONSIVE ─────────────────────────────────────────────────
   ≤ 1024px: Monthly/Q/M stacks — both modes go column
   ≤ 900px:  all modes go column, full width panels
   ──────────────────────────────────────────────────────────────── */

/* Monthly / Q / Q5 — stack vertically at ≤1024px */
@media (max-width: 1024px) {
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column !important;
        overflow-x: visible;
    }

        .bspl-mc-wrap .bspl-mc-scroll[b-a9m088rzdg] {
            flex: none !important;
            width: 100% !important;
            overflow-x: auto;
        }
}

/* All modes — stack vertically at ≤900px */
@media (max-width: 900px) {
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column !important;
        overflow-x: visible;
        padding: 8px;
        gap: 10px;
    }

        .bspl-std-wrap .bspl-std-panel[b-a9m088rzdg],
        .bspl-mc-wrap .bspl-mc-scroll[b-a9m088rzdg] {
            flex: none !important;
            width: 100% !important;
            overflow-x: auto;
        }

    .bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
        width: 100% !important;
        overflow-x: auto;
    }

    .bspl-img-col[b-a9m088rzdg] {
        display: none !important;
    }

    .bspl-mc-nc[b-a9m088rzdg] {
        flex: 0 0 160px !important;
        width: 160px !important;
        min-width: 160px !important;
        max-width: 160px !important;
        font-size: 12px;
    }

    .bspl-mc-vc[b-a9m088rzdg] {
        flex: 0 0 110px !important;
        width: 110px !important;
        min-width: 110px !important;
        max-width: 110px !important;
        font-size: 12px;
    }
}

@media (max-width: 480px) {
    .bspl-mc-nc[b-a9m088rzdg] {
        flex: 0 0 130px !important;
        width: 130px !important;
        min-width: 130px !important;
        max-width: 130px !important;
        font-size: 11px;
        padding: 4px 5px;
    }

    .bspl-mc-vc[b-a9m088rzdg] {
        flex: 0 0 95px !important;
        width: 95px !important;
        min-width: 95px !important;
        max-width: 95px !important;
        font-size: 11px;
        padding: 4px 5px;
    }
}

/* Monthly / Q / Q5: always stack vertically (too many columns for side-by-side) */
.bspl-mc-wrap.bspl-mc-vertical[b-a9m088rzdg] {
    flex-direction: column !important;
}

    .bspl-mc-wrap.bspl-mc-vertical .bspl-mc-scroll[b-a9m088rzdg] {
        flex: none !important;
        width: 100% !important;
        overflow-x: auto;
    }

/* ══════════════════════════════════════════════════════════════════
   PERCENTAGE-BASED COLUMN WIDTHS  (matches old Bootstrap webform)
   Source: CS code uses width:50%/164px for FY, 40%/30%/30% for Prev1

   Rule:
     FY (1 value col):    name=60%  val=40%
     Prev1 (2 value cols): name=40%  val=30% each
     Prev2 (3 value cols): name=40%  val=20% each
     Prev3 (4 value cols): name=35%  val=21.6% each
     Prev4 (5 value cols): name=35%  val=13% each
     Q/M (many cols):     name=200px fixed, val=130px fixed (scroll)

   Implementation: .bspl-cols-N class on the scroll container
   sets nc/vc to % so total = 100% with no trailing space.
   ══════════════════════════════════════════════════════════════════ */

/* Base: percentage mode — override the fixed px !important rules */
.bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-nc[b-a9m088rzdg],
.bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-vc[b-a9m088rzdg] {
    flex: none !important;
    min-width: 0 !important;
    max-width: none !important;
    box-sizing: border-box;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-vc[b-a9m088rzdg] {
    text-align: right !important;
    /* Never truncate a currency value — clipping "3,22,33,60,066.36" down
       to "3,22,0" makes it look like a completely different, smaller
       number, unlike truncating a ledger name which is merely inconvenient.

       IMPORTANT: this must be a fixed constant, not min-width:max-content.
       Each .bspl-mc-dr row is an independent flex container — max-content
       sizes a cell to THAT ROW's own number, so a row with a long value
       ("1,40,78,10,652.08") gets a wider column than a row with a short
       one ("92,72,557.00"), even though both are meant to be the same
       column. That's what broke cross-row alignment after scrolling.
       A constant width applied identically to every row (regardless of
       what that row's own value is) is what actually keeps columns
       aligned down the page. 150px comfortably fits this app's realistic
       worst case (crore amounts, 2 decimals, ~17 characters) at this
       font-size — bump it if a still-longer value ever needs to fit. */
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    min-width: 165px !important;
}

/* THE ACTUAL BUG behind headers still clipping in Q/M/2Y/3Y/4Y: a header
   cell's markup is <div class="bspl-mc-vc bspl-mc-hdr-cell">, so it's
   matched by BOTH the rule above (3-part selector: .bspl-mc-scroll[..]
   .bspl-mc-vc) AND the earlier .bspl-mc-hdr-cell wrap-to-2-lines fix
   (only a 1-part selector). Both are !important, so specificity decides
   the tie — 3 parts beats 1, meaning the truncation rule was silently
   winning on EVERY header cell, in every mode, the entire time. The
   wrap fix never actually worked; it only looked like it worked on 1Y
   because that particular label happened to be short enough to never
   need wrapping in the first place. This matches the truncation rule's
   own specificity (3 parts) so it finally wins the tie for header cells
   specifically, while data cells (no .bspl-mc-hdr-cell class) are
   untouched and still protected against clipping. */
.bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-hdr-cell[b-a9m088rzdg] {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: unset !important;
    min-width: 165px;
}

/* 1 value column — FY: 60% / 40% */
.bspl-cols-1 .bspl-mc-nc[b-a9m088rzdg] {
    width: 60% !important;
}

.bspl-cols-1 .bspl-mc-vc[b-a9m088rzdg] {
    width: 40% !important;
}

/* 2 value columns — Prev1: 40% / 30% / 30% */
.bspl-cols-2 .bspl-mc-nc[b-a9m088rzdg] {
    width: 40% !important;
}

.bspl-cols-2 .bspl-mc-vc[b-a9m088rzdg] {
    width: 30% !important;
}

/* 3 value columns — Prev2: 40% / 20% / 20% / 20% */
.bspl-cols-3 .bspl-mc-nc[b-a9m088rzdg] {
    width: 40% !important;
}

.bspl-cols-3 .bspl-mc-vc[b-a9m088rzdg] {
    width: 20% !important;
}

/* 4 value columns — Prev3: 35% + 4×(16.25%). Kept as percentage here
   because cols-4 is shared by TWO different layouts: 3Y (side-by-side
   half-width panels) AND Q (always exactly 4 quarters, full-width single
   stacked panel via .bspl-mc-vertical). Q's panel is wide enough that
   16.25% never drops below the 165px floor a few rules up, so it never
   needs to scroll and percentage stretch-to-fill is exactly right there —
   forcing a fixed px here as well would leave Q with a large dead gap
   after its 4th column (that's what happened when this was first fixed
   for 3Y only: it silently changed Q too, since both share this class). */
.bspl-cols-4 .bspl-mc-nc[b-a9m088rzdg] {
    width: 35% !important;
}

.bspl-cols-4 .bspl-mc-vc[b-a9m088rzdg] {
    width: 16.25% !important;
}

/* 5 value columns — Prev4: 35% + 5×(13%). cols-5 is only ever reached by
   4Y today (always side-by-side, never vertical), but kept as percentage
   here too for the same reason as cols-4 above, in case that ever changes. */
.bspl-cols-5 .bspl-mc-nc[b-a9m088rzdg] {
    width: 35% !important;
}

.bspl-cols-5 .bspl-mc-vc[b-a9m088rzdg] {
    width: 13% !important;
}

/* ROOT CAUSE (row background/bold "formatting" disappearing for 3Y/4Y
   specifically once a horizontal scrollbar appears):
   In the SIDE-BY-SIDE layout (.bspl-mc-wrap:not(.bspl-mc-vertical) — i.e.
   2Y/3Y/4Y), each panel is only ~half the viewport wide. There, cols-4's
   16.25% and cols-5's 13% per-column share drop below the 165px min-width
   floor a few rules up, so those rows always need to scroll. The instant
   a row's own width is driven by `max-content` (i.e. by its children's
   intrinsic sizes) because of that scroll, percentage widths on those
   same children become indeterminate per spec — the container's size
   depends on the children, and the children's % size depends on the
   container, so browsers fall back to sizing each cell by its own row's
   content instead of a shared column width. That's exactly the "each row
   gets its own column width" misalignment the comment further down
   already warns about for max-content, and it's what was eating the
   row-type background/bold styling once scrolling kicked in. cols-2/
   cols-3 never hit this because their bigger % share stays above the
   165px floor even in the half-width panel.
   Fix: ONLY inside the side-by-side layout, give cols-4/cols-5 a fixed-px
   value-cell floor of 165px — the SAME constant this file already uses
   everywhere else as its "never truncate a currency value" floor (see
   the .bspl-mc-scroll[class*=bspl-cols-] .bspl-mc-vc rule above) — instead
   of a percentage share. No percentage, no circularity, no per-row size
   drift, and no truncated amounts either. The name column gets 220px —
   this file's own DEFAULT name-cell width (see .bspl-mc-nc's base rule,
   used as-is for 1Y) — not the narrower 180px "many columns" bucket width,
   because 180px was still ellipsis-truncating ordinary ledger names
   ("Control Group (Branch / D...)") that fit fine at the normal 220px.
   This selector is more specific than the plain `.bspl-cols-4 .bspl-mc-nc`
   rule above, so it wins there without touching Q/M/Q5's vertical layout
   at all. */
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4 .bspl-mc-nc[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5 .bspl-mc-nc[b-a9m088rzdg] {
    width: 220px !important;
    min-width: 220px !important;
}

.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4 .bspl-mc-vc[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5 .bspl-mc-vc[b-a9m088rzdg] {
    width: 165px !important;
    min-width: 165px !important;
}

/* FIX (blank gap on the right of 3Y/4Y panels, content stuck to the left,
   no scrollbar): the block above gives nc/vc a fixed width, but the base
   rule higher up (".bspl-mc-scroll[class*=bspl-cols-] .bspl-mc-nc/.vc")
   still says `flex: none` — 0 grow / 0 shrink. With a rigid box and no
   grow, the row's real width is always exactly 220+4×165=880px (cols-4)
   or 220+5×165=1045px (cols-5) and never stretches — so the moment a
   side-by-side panel is WIDER than that, the extra room is just dead
   space on the right instead of the scrollbar only showing up when the
   panel is genuinely too narrow.

   Fix: turn flex-grow back on so the columns stretch to fill any extra
   panel width, but keep the flex-basis a fixed PX value (never a
   percentage — that's the circularity that caused the original
   formatting bug) and keep flex-shrink + min-width AT 220px/165px — the
   same never-truncate floors as everywhere else in this file — so a
   panel narrower than 880/1045px clamps at that floor and scrolls (full
   name and number stay readable by scrolling) instead of ever shrinking
   a cell small enough to ellipsis-truncate a ledger name or a crore
   amount. Name column gets more of the extra growth than each value
   column, echoing the original 35%-name / ~16%-per-value-col split.

   Scoped to ≥1025px: below that, `.bspl-mc-wrap` is already forced into
   single-column stacked mode (see the 1024px/900px media rules below),
   where this rule has no business overriding the separate mobile-width
   rules for `.bspl-mc-nc`/`.bspl-mc-vc`. */
@media (min-width: 1025px) {
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4 .bspl-mc-nc[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5 .bspl-mc-nc[b-a9m088rzdg] {
        flex: 2 1 220px !important;
        width: auto !important;
        min-width: 220px !important;
    }

    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4 .bspl-mc-vc[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5 .bspl-mc-vc[b-a9m088rzdg] {
        flex: 1 1 165px !important;
        width: auto !important;
        min-width: 165px !important;
    }
}

/* 6+ value columns (Q/M/Q5 monthly = 12 cols) — fixed px, scroll horizontally */
.bspl-cols-6 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-nc[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-nc[b-a9m088rzdg] {
    width: 180px !important;
    min-width: 180px !important;
}

.bspl-cols-6 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-vc[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-vc[b-a9m088rzdg] {
    width: 120px !important;
    min-width: 120px !important;
}

/* Percentage-col container: always 100% of its slot. overflow-x is "auto"
   (not "hidden") so that if the rows inside ever need more space than that
   (e.g. narrower window + per-column min-widths), the columns are still
   reachable via a local scrollbar on THIS panel — rather than being silently
   clipped and unreachable, which is what "hidden" caused whenever the
   window was narrower than ~900px but not narrow enough to hit the old
   mobile-only auto-overflow media query. When content actually fits (the
   normal desktop case), auto shows no scrollbar at all, so this is safe
   at every screen size. */
.bspl-cols-1[b-a9m088rzdg],
.bspl-cols-2[b-a9m088rzdg],
.bspl-cols-3[b-a9m088rzdg],
.bspl-cols-4[b-a9m088rzdg],
.bspl-cols-5[b-a9m088rzdg] {
    overflow-x: auto !important;
    width: 100% !important;
}

/* For many-col (6+): scroll needed */
.bspl-cols-6[b-a9m088rzdg],
.bspl-cols-7[b-a9m088rzdg],
.bspl-cols-8[b-a9m088rzdg],
.bspl-cols-9[b-a9m088rzdg],
.bspl-cols-10[b-a9m088rzdg],
.bspl-cols-11[b-a9m088rzdg],
.bspl-cols-12[b-a9m088rzdg],
.bspl-cols-13[b-a9m088rzdg] {
    overflow-x: auto !important;
}

/* Rows: grow to fit all their columns rather than being capped at the
   visible viewport width. On desktop, percentage-based columns (1–5 cols)
   sum to exactly 100% so max-content ≈ 100% and nothing changes visually.
   On narrow mobile screens, though, the per-column min-width overrides
   (see the ≤900px block below) can push the real content wider than the
   viewport — in that case the row must grow (max-content) so the header,
   data, and totals-footer rows all share the same actual width and scroll
   together inside .bspl-mc-scroll, instead of the row being clipped at
   100% while extra columns spill out past its coloured box unstyled. */
.bspl-cols-1 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-1 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-2 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-2 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-3 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-3 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-4 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-4 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-5 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-5 .bspl-mc-dr[b-a9m088rzdg] {
    width: max-content !important;
    min-width: 100% !important;
    flex-wrap: nowrap !important;
}

/* Rows in many-column mode (6+ cols — Q/M/Q5) — same reasoning, always needed
   since these always exceed the viewport width and rely on horizontal scroll. */
.bspl-cols-6 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-6 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-dr[b-a9m088rzdg] {
    width: max-content !important;
    min-width: 100% !important;
    flex-wrap: nowrap !important;
}

/* std-panel in percentage mode: full width of its flex container */
.bspl-std-panel[b-a9m088rzdg] {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    width: auto !important;
}

/* mc panels with percentage cols: side-by-side takes full row each */
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-1[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-2[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-3[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4[b-a9m088rzdg],
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5[b-a9m088rzdg] {
    flex: 1 1 0 !important;
    width: 0 !important; /* flex will distribute equally */
    min-width: 0 !important;
}

/* Mobile: percentage cols switch to fixed px for readability (1–5 cols only) */
@media (max-width: 900px) {
    .bspl-cols-1 .bspl-mc-nc[b-a9m088rzdg],
    .bspl-cols-2 .bspl-mc-nc[b-a9m088rzdg],
    .bspl-cols-3 .bspl-mc-nc[b-a9m088rzdg],
    .bspl-cols-4 .bspl-mc-nc[b-a9m088rzdg],
    .bspl-cols-5 .bspl-mc-nc[b-a9m088rzdg] {
        /* Now that .bspl-mc-nc is sticky/frozen (see the FROZEN NAME COLUMN
           section below), it only needs to be wide enough to read the
           label — not the ~55% of the screen it used to get when it
           scrolled away with everything else. At 55%, 2+ value columns
           each needing ~140px min-width forced heavy horizontal scroll,
           and since the wide frozen column stayed pinned, scrolling slid
           value column 1 halfway BEHIND it — that's what produced the
           half-cut headers/totals ("6-Mar-27" instead of "Apr-26-Mar-27"). */
        width: 38% !important;
        min-width: 0 !important;
    }

    /* Must match the base rule's selector specificity
       (.bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-vc, which sets
       flex:none !important) or these overrides silently lose regardless
       of !important — that's the actual bug: the plain ".bspl-cols-N
       .bspl-mc-vc" selector below is lower-specificity than the base rule,
       so vc kept flex:none + width:auto (shrinks to fit its own text)
       instead of stretching to the row's right edge, leaving the value
       column short of the true right edge even though the text inside it
       was already right-aligned.

       min-width is a flat constant (140px), NOT max-content — max-content
       sizes each row's cell to THAT ROW's own number, so rows with longer
       values would get wider columns than rows with shorter ones, breaking
       alignment down the page after scrolling. A constant floor applied
       identically to every row is what keeps columns aligned. */
    .bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-vc[b-a9m088rzdg] {
        width: auto !important;
        flex: 1 1 auto !important;
        min-width: 140px !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        text-align: right !important;
        font-variant-numeric: tabular-nums;
    }

    /* Same specificity-tie bug as the desktop rule above, just inside this
       media query — header cells carry both .bspl-mc-vc and
       .bspl-mc-hdr-cell, so without this equally-specific override the
       overflow:hidden two lines up silently wins on every header cell at
       mobile widths too. */
    .bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-hdr-cell[b-a9m088rzdg] {
        white-space: normal !important;
        overflow: visible !important;
        text-overflow: unset !important;
    }

    .bspl-cols-1[b-a9m088rzdg],
    .bspl-cols-2[b-a9m088rzdg],
    .bspl-cols-3[b-a9m088rzdg],
    .bspl-cols-4[b-a9m088rzdg],
    .bspl-cols-5[b-a9m088rzdg] {
        overflow-x: auto !important;
    }
}

/* ══════════════════════════════════════════════════════════════════
   PANEL WIDTH FINAL FIX
   Panels must stretch to fill available space (minus image col).
   Image col is fixed 260px, panels share the rest equally.
   ══════════════════════════════════════════════════════════════════ */

/* Standard wrap: panels stretch, image is fixed */
.bspl-std-wrap[b-a9m088rzdg] {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 12px;
    padding: 10px 16px 6px;
    width: 100%;
    box-sizing: border-box;
}

    .bspl-std-wrap .bspl-std-panel[b-a9m088rzdg] {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        width: 0 !important; /* flex will distribute: each panel gets (100% - img - gap) / 2 */
        overflow: hidden;
    }

.bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
    width: 100% !important;
    border: 1px solid #e7eaec;
    background: #fff;
    overflow-x: auto;
}

/* Image column: fixed 260px, does not grow/shrink */
.bspl-std-wrap .bspl-img-col[b-a9m088rzdg] {
    flex: 0 0 260px !important;
    width: 260px !important;
    align-self: flex-start;
}

/* MC wrap panels also stretch */
.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll[b-a9m088rzdg] {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    width: 0 !important;
    overflow-x: auto;
}

/* Percentage cols must fill 100% of their panel (auto, not hidden — see
   the note on the earlier identical rule for why) */
.bspl-cols-1[b-a9m088rzdg],
.bspl-cols-2[b-a9m088rzdg],
.bspl-cols-3[b-a9m088rzdg],
.bspl-cols-4[b-a9m088rzdg],
.bspl-cols-5[b-a9m088rzdg] {
    overflow-x: auto !important;
    width: 100% !important;
}

    .bspl-cols-1 .bspl-mc-hdr-row[b-a9m088rzdg],
    .bspl-cols-1 .bspl-mc-dr[b-a9m088rzdg],
    .bspl-cols-2 .bspl-mc-hdr-row[b-a9m088rzdg],
    .bspl-cols-2 .bspl-mc-dr[b-a9m088rzdg],
    .bspl-cols-3 .bspl-mc-hdr-row[b-a9m088rzdg],
    .bspl-cols-3 .bspl-mc-dr[b-a9m088rzdg],
    .bspl-cols-4 .bspl-mc-hdr-row[b-a9m088rzdg],
    .bspl-cols-4 .bspl-mc-dr[b-a9m088rzdg],
    .bspl-cols-5 .bspl-mc-hdr-row[b-a9m088rzdg],
    .bspl-cols-5 .bspl-mc-dr[b-a9m088rzdg] {
        width: max-content !important;
        min-width: 100% !important;
        display: flex !important;
        flex-wrap: nowrap !important;
    }

.bspl-cols-6 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-6 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-7 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-8 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-9 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-10 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-11 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-12 .bspl-mc-dr[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-hdr-row[b-a9m088rzdg],
.bspl-cols-13 .bspl-mc-dr[b-a9m088rzdg] {
    width: max-content !important;
    min-width: 100% !important;
    display: flex !important;
    flex-wrap: nowrap !important;
}

/* Mobile: stack and hide image */
@media (max-width: 900px) {
    .bspl-std-wrap[b-a9m088rzdg],
    .bspl-mc-wrap[b-a9m088rzdg] {
        flex-direction: column !important;
        padding: 8px !important;
        gap: 8px !important;
    }

        .bspl-std-wrap .bspl-std-panel[b-a9m088rzdg],
        .bspl-mc-wrap .bspl-mc-scroll[b-a9m088rzdg] {
            flex: none !important;
            width: 100% !important;
            min-width: 0 !important;
        }

    .bspl-std-panel .bspl-mc-scroll[b-a9m088rzdg] {
        width: 100% !important;
        overflow-x: auto;
    }

    .bspl-img-col[b-a9m088rzdg] {
        display: none !important;
    }
    /* Column widths for 1–5 col mode are handled by the single
       .bspl-mc-scroll[class*="bspl-cols-"] .bspl-mc-vc / .bspl-mc-nc
       rules above — duplicating them here with a lower-specificity
       selector previously caused the value column to silently ignore
       these overrides (see the note above that block). */
}
/* ↑ FIX: this closing brace was missing, which silently trapped every
   single rule below (COA modal, frozen name column, clear-date button,
   etc.) inside the @media (max-width: 900px) block above it — meaning
   none of that CSS applied at all on any screen wider than 900px. This
   is what "all form style removed" actually was. */

/* ═══════════════════════════════════════════════════════════════════
   COA BSPL MODAL  (BSPLView icon)
   ═══════════════════════════════════════════════════════════════════ */
.coa-modal-overlay[b-a9m088rzdg] {
    position: fixed;
    inset: 0;
    background: rgba(20, 24, 30, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    padding: 20px;
    box-sizing: border-box;
}

.coa-modal-card[b-a9m088rzdg] {
    background: #fff;
    width: 100%;
    max-width: 860px;
    height: 90vh;
    max-height: 90vh;
    border-radius: 12px;
    box-shadow: 0 24px 64px rgba(0,0,0,.4);
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    box-sizing: border-box;
}

.coa-modal-x[b-a9m088rzdg] {
    position: absolute;
    top: 12px;
    right: 16px;
    background: none;
    border: none;
    font-size: 24px;
    line-height: 1;
    color: #9aa0a8;
    cursor: pointer;
    z-index: 2;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s, color .15s;
}

    .coa-modal-x:hover[b-a9m088rzdg] {
        color: #333;
        background: #f0f1f3;
    }

.coa-modal-header[b-a9m088rzdg] {
    padding: 20px 26px 14px;
    border-bottom: 1px solid #eceff2;
    flex: 0 0 auto;
}

    .coa-modal-header h2[b-a9m088rzdg] {
        margin: 0;
        font-size: 20px;
        font-weight: 100;
        color: #2fa89b;
        letter-spacing: .2px;
    }

.coa-modal-sub[b-a9m088rzdg] {
    font-size: 12.5px;
    color: #8a8f98;
    margin-top: 3px;
    font-weight: 100;
}

.coa-modal-body[b-a9m088rzdg] {
    padding: 18px 22px 8px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    flex: 1 1 auto;
    min-height: 0;
    background: #fbfbfc;
}

.coa-modal-loading[b-a9m088rzdg] {
    display: flex;
    justify-content: center;
    padding: 50px 0;
}

.coa-grid-row[b-a9m088rzdg] {
    display: flex;
    gap: 22px;
    align-items: flex-start;
    margin-bottom: 22px;
}

.coa-grid-row-bottom[b-a9m088rzdg] {
    margin-bottom: 4px;
}

.coa-col[b-a9m088rzdg] {
    flex: 1 1 0;
    min-width: 0;
    background: #fff;
    border: 1px solid #ececef;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(16,24,40,.04);
}

/* ── Section header bar ── */
.coa-section-header[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: .5px;
    text-transform: uppercase;
}

    .coa-section-header span:last-child[b-a9m088rzdg] {
        font-variant-numeric: tabular-nums;
        font-size: 13px;
        letter-spacing: 0;
    }

.coa-hdr-liab[b-a9m088rzdg] {
    background: #f7d6d1;
    color: #8a2c25;
}

.coa-hdr-asset[b-a9m088rzdg] {
    background: #d8e7f7;
    color: #1f4e79;
}

.coa-hdr-exp[b-a9m088rzdg] {
    background: #dfe3ae;
    color: #4b4b16;
}

.coa-hdr-inc[b-a9m088rzdg] {
    background: #dfe3ae;
    color: #4b4b16;
}

/* ── Rows ── */
.coa-row[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 6px 14px;
    font-size: 13px;
    color: #2b2f36;
    border-bottom: 1px solid #f1f2f4;
    line-height: 1.35;
}

    .coa-row:last-child[b-a9m088rzdg] {
        border-bottom: none;
    }

.coa-row-group[b-a9m088rzdg] {
    font-weight: 700;
    background: #fafbfc;
    padding-top: 8px;
    padding-bottom: 8px;
}

    .coa-row-group + .coa-row-leaf[b-a9m088rzdg] {
        border-top: none;
    }

.coa-row-leaf[b-a9m088rzdg] {
    font-weight: 400;
    color: #4a4f57;
}

.coa-row-profit[b-a9m088rzdg] {
    font-weight: 700;
    background: #e9f4e3;
    color: #156730;
    padding-top: 8px;
    padding-bottom: 8px;
}

.coa-row-label[b-a9m088rzdg] {
    flex: 1 1 auto;
    padding-right: 10px;
    min-width: 0;
    overflow-wrap: break-word;
}

.coa-row-value[b-a9m088rzdg] {
    flex: 0 0 auto;
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    min-width: 90px;
}

.coa-pill[b-a9m088rzdg] {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 5px;
    font-weight: 700;
}

.coa-pill-liab[b-a9m088rzdg] {
    background: #f7d6d1;
    color: #8a2c25;
}

.coa-pill-asset[b-a9m088rzdg] {
    background: #d8e7f7;
    color: #1f4e79;
}

.coa-pill-exp[b-a9m088rzdg],
.coa-pill-inc[b-a9m088rzdg] {
    background: #e3e6bd;
    color: #4b4b16;
}

/* ── Working capital callout ── */
.coa-wc-box[b-a9m088rzdg] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #eceef0;
    padding: 9px 14px;
    margin-top: 10px;
    border-radius: 7px;
    font-size: 12.5px;
    color: #4a4f57;
}

    .coa-wc-box span:last-child[b-a9m088rzdg] {
        font-weight: 700;
        font-variant-numeric: tabular-nums;
    }

/* ── Footer ── */
.coa-modal-footer[b-a9m088rzdg] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 14px 22px;
    border-top: 1px solid #eceff2;
    flex: 0 0 auto;
    background: #fff;
}

.coa-footer-icon[b-a9m088rzdg] {
    font-size: 21px;
    cursor: pointer;
    line-height: 1;
    display: flex;
    align-items: center;
    transition: opacity .15s;
}

    .coa-footer-icon:hover[b-a9m088rzdg] {
        opacity: .75;
    }

.coa-footer-close[b-a9m088rzdg] {
    margin-left: auto;
    background: #eceff2;
    border: none;
    border-radius: 6px;
    padding: 8px 20px;
    font-size: 13px;
    font-weight: 600;
    color: #333;
    cursor: pointer;
    transition: background .15s;
}

    .coa-footer-close:hover[b-a9m088rzdg] {
        background: #dfe3e7;
    }

/* ── Scrollbar polish ── */
.coa-modal-body[b-a9m088rzdg]::-webkit-scrollbar {
    width: 8px;
}

.coa-modal-body[b-a9m088rzdg]::-webkit-scrollbar-thumb {
    background: #d8dade;
    border-radius: 8px;
}

.coa-modal-body[b-a9m088rzdg]::-webkit-scrollbar-track {
    background: transparent;
}

@media (max-width: 640px) {
    .coa-modal-overlay[b-a9m088rzdg] {
        padding: 0;
        align-items: stretch;
    }

    .coa-modal-card[b-a9m088rzdg] {
        max-width: 100%;
        width: 100%;
        height: 100vh;
        height: 100dvh;
        max-height: 100vh;
        max-height: 100dvh;
        border-radius: 0;
    }

    .coa-modal-header[b-a9m088rzdg] {
        padding: 16px 44px 12px 16px;
    }

        .coa-modal-header h2[b-a9m088rzdg] {
            font-size: 17px;
        }

    .coa-modal-body[b-a9m088rzdg] {
        padding: 12px 12px 6px;
    }

    .coa-grid-row[b-a9m088rzdg] {
        flex-direction: column;
        gap: 12px;
        margin-bottom: 14px;
    }

    .coa-section-header[b-a9m088rzdg] {
        padding: 8px 10px;
        font-size: 11.5px;
    }

    .coa-row[b-a9m088rzdg] {
        padding: 6px 10px;
        font-size: 12.5px;
    }

    .coa-row-value[b-a9m088rzdg] {
        min-width: 70px;
    }

    .coa-modal-footer[b-a9m088rzdg] {
        padding: 10px 14px;
        gap: 12px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   FIX: 2Y/3Y/4Y (non-vertical multi-col mode) completely vanishing
   at narrow widths.

   `.bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-N` sets
   `width: 0 !important` as a flex-grow equal-distribution trick — safe in
   row layout (flex-basis governs the main axis there), but at ≤900px
   `.bspl-mc-wrap` switches to `flex-direction: column`, which flips the
   main axis to vertical. Once that happens, `width` becomes the CROSS
   axis property and is no longer shielded by flex-basis math — the panel
   collapses to a literal 0px-wide, invisible box. This restores a real
   width once stacked, at equal-or-higher specificity + later source order
   so it wins the tie against that rule.
   ═══════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-1[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-2[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-3[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-4[b-a9m088rzdg],
    .bspl-mc-wrap:not(.bspl-mc-vertical) .bspl-mc-scroll.bspl-cols-5[b-a9m088rzdg] {
        width: 100% !important;
        min-width: 100% !important;
        flex: none !important;
        overflow-x: auto !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as DocumentGrid.razor.css, kept page-scoped since these
   class names double up with GreenCalendarPicker's own trigger.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-a9m088rzdg] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-a9m088rzdg] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-a9m088rzdg] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ══════════════════════════════════════════════════════════════════
   FROZEN NAME COLUMN — .bspl-mc-nc stays pinned to the left edge while
   the value columns scroll underneath it, like a spreadsheet's frozen
   first column. Without this, scrolling right to see Prev1/Prev2/Q/M
   columns scrolls the row label away too, so you end up looking at a
   column of numbers with no idea which row they belong to — that's
   the actual "data doesn't look proper when I scroll" complaint, not
   a leftover alignment bug (that part is already fixed).

   Needs an explicit, opaque background per row state so the pinned
   column doesn't show other rows' content bleeding through underneath
   it — "background: inherit" doesn't work here since inherit pulls
   from the parent (.bspl-mc-dr), not from a sibling/self color rule,
   and transparent would let scrolled-under content show through.
   ══════════════════════════════════════════════════════════════════ */
.bspl-mc-nc[b-a9m088rzdg] {
    position: sticky !important;
    left: 0 !important;
    z-index: 3;
    background: #fff;
}

/* Data-row backgrounds — match each row type's own background exactly */
.bspl-mc-dr.mc-group .bspl-mc-nc[b-a9m088rzdg],
.bspl-mc-dr.row-group .bspl-mc-nc[b-a9m088rzdg] {
    background: #f2f3f5;
}

.bspl-mc-dr.row-subgroup .bspl-mc-nc[b-a9m088rzdg] {
    background: #fff;
}

.bspl-mc-dr.row-profit .bspl-mc-nc[b-a9m088rzdg] {
    background-color: rgb(226, 239, 218) !important;
}

.bspl-mc-dr.row-diff .bspl-mc-nc[b-a9m088rzdg] {
    background: #fff9f3;
}

/* Header/Total rows — sit on top of data rows while scrolling
   (higher z-index), background matches the exp/inc colour bar */
.bspl-mc-hdr-row .bspl-mc-nc[b-a9m088rzdg] {
    z-index: 6;
}

.bspl-mc-hdr-row.exp .bspl-mc-nc[b-a9m088rzdg] {
    background: #660000 !important;
}

.bspl-mc-hdr-row.inc .bspl-mc-nc[b-a9m088rzdg] {
    background: #003366 !important;
}

/* Sid Edge shadow removed — it was rendering as a visible unwanted line/
   border down the row labels in mobile view instead of a subtle cue. */
/* /Components/Pages/Transactions/CrossLink.razor.rz.scp.css */
/* ── Top bar: party info + VType filters + action buttons, one row ── */
.xl-topbar[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: nowrap;
    padding: 10px 16px;
    background: #f7f9fa;
    border-bottom: 1px solid #eef0f2;
    overflow-x: auto;
}

.xl-party-info[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 13px;
    color: #333;
    white-space: nowrap;
    flex-shrink: 0;
}

    .xl-party-info span[b-jtvv6whuoc] {
        color: #1a7f4b;
        font-weight: 700;
    }

.xl-vtype-filters[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-shrink: 1;
    min-width: 0;
}

.xl-vtype-group[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-right: 14px;
    border-right: 1px solid #e5e8ec;
}

    .xl-vtype-group:last-child[b-jtvv6whuoc] {
        border-right: none;
        padding-right: 0;
    }

.xl-vtype-item[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11.5px;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
}

    .xl-vtype-item input[b-jtvv6whuoc] {
        margin: 0;
        cursor: pointer;
    }

.xl-actions[b-jtvv6whuoc] {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

.xl-btn[b-jtvv6whuoc] {
    padding: 6px 14px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 6px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    transition: background .12s, color .12s, border-color .12s;
}

    .xl-btn:hover:not(:disabled)[b-jtvv6whuoc] {
        background: #f5f5f5;
    }

    .xl-btn:disabled[b-jtvv6whuoc] {
        opacity: .5;
        cursor: not-allowed;
    }

    .xl-btn.primary[b-jtvv6whuoc] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }

        .xl-btn.primary:hover:not(:disabled)[b-jtvv6whuoc] {
            background: #159a80;
        }

/* ── Panels: left/right tables, identical look ── */
.xl-panels[b-jtvv6whuoc] {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 12px;
    padding: 0 16px 16px;
    flex: 1;
    min-height: 0;
    width: 100%;
    box-sizing: border-box;
}

.xl-left[b-jtvv6whuoc], .xl-right[b-jtvv6whuoc] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0; /* ← added: lets the table-wrap actually shrink/scroll */
    margin: 12px 0 !important;
    box-sizing: border-box;
}

.xl-left[b-jtvv6whuoc] {
    flex: 0 0 42%;
    max-width: 42%;
}

.xl-right[b-jtvv6whuoc] {
    flex: 1 1 0%;
    min-width: 0;
}

    /*.xl-left .mu-table-wrap, .xl-right .mu-table-wrap {
        flex: 1;
        overflow-y: auto;
        overflow-x: auto;
        min-height: 0;*/ /* ← added */
        /*max-height: 65vh;*/ /* ← safety net so it scrolls even if flex context breaks */
    /*}*/

    .xl-left .mu-table-wrap[b-jtvv6whuoc], .xl-right .mu-table-wrap[b-jtvv6whuoc] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* Unified table look for both panels — same header/body/footer treatment */
.xl-table[b-jtvv6whuoc] {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}

    .xl-table thead th[b-jtvv6whuoc] {
        position: sticky;
        top: 0;
        z-index: 5;
        padding: 8px 10px;
        text-align: left;
        /* background/color removed — inherits default .mu-table thead th styling */
    }

        .xl-table thead th.num[b-jtvv6whuoc], .xl-table thead th.mu-th-idx[b-jtvv6whuoc] {
            text-align: right;
        }

    .xl-table tbody td[b-jtvv6whuoc] {
        padding: 7px 10px;
        font-size: 12px;
        border-bottom: 1px solid #eef0f2;
        vertical-align: middle;
    }

        .xl-table tbody td.num[b-jtvv6whuoc] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

        .xl-table tbody td.mu-idx[b-jtvv6whuoc] {
            text-align: right;
        }

    .xl-table tr.row-selected td[b-jtvv6whuoc] {
        background: #eafaf5;
    }

    /* Sticky footer — same pattern as ITB/TDS grids */
    .xl-table tfoot td[b-jtvv6whuoc] {
        position: sticky;
        bottom: 0;
        z-index: 6;
        background: #f2f2f2;
        font-weight: 600;
        font-size: 12px;
        padding: 7px 10px;
        box-sizing: border-box;
        border-top: 1px solid #d6dbe0;
    }

        .xl-table tfoot td.num[b-jtvv6whuoc] {
            text-align: right;
        }

.xl-cross-in[b-jtvv6whuoc] {
    width: 90px;
    padding: 3px 6px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    text-align: right;
    font-size: 12.5px;
}

.mu-th-chk[b-jtvv6whuoc], .mu-td-chk[b-jtvv6whuoc] {
    text-align: center;
}
/* Base page-flex layout — must be redefined here because Blazor CSS isolation
   means ITB.razor.css's identical rules don't apply outside that component. */
.itb-page[b-jtvv6whuoc] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .itb-page .mu-card[b-jtvv6whuoc] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

@media (max-width: 900px) {
    .xl-panels[b-jtvv6whuoc] {
        flex-direction: column;
        flex-wrap: nowrap;
    }

    .xl-left[b-jtvv6whuoc], .xl-right[b-jtvv6whuoc] {
        flex: none;
        width: 100%;
        max-width: 100%;
    }

        /* Stacked panels each need their own bounded height so both
       stay visible with independent scroll, instead of one pushing
       the other off-screen. */
        .xl-left .mu-table-wrap[b-jtvv6whuoc], .xl-right .mu-table-wrap[b-jtvv6whuoc] {
            max-height: 45vh;
            min-height: 180px;
        }

    .xl-topbar[b-jtvv6whuoc] {
        flex-wrap: wrap;
        row-gap: 10px;
    }

    .xl-party-info[b-jtvv6whuoc] {
        flex: 1 1 100%;
        order: 1;
    }

    .xl-vtype-filters[b-jtvv6whuoc] {
        flex: 1 1 100%;
        order: 3;
        overflow-x: auto;
    }

    .xl-actions[b-jtvv6whuoc] {
        order: 2;
        flex: 0 0 auto;
        margin-left: auto;
    }
}
.xl-party-info[b-jtvv6whuoc] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 13px;
    color: #333;
    white-space: nowrap;
    flex-shrink: 0;
}

    .xl-party-info b[b-jtvv6whuoc] {
        font-size: 13px;
    }

.xl-obcb[b-jtvv6whuoc] {
    display: flex;
    gap: 16px;
    font-size: 11.5px;
    color: #555;
}

    .xl-obcb b[b-jtvv6whuoc] {
        color: #1a7f4b;
        font-weight: 700;
    }
.xl-linked-section[b-jtvv6whuoc] {
    border-bottom: 2px solid #d6dbe0;
    flex-shrink: 0;
}

.xl-linked-hdr[b-jtvv6whuoc] {
    padding: 6px 12px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    color: #64748b;
    background: #f7f9fa;
}

.xl-linked-wrap[b-jtvv6whuoc] {
    max-height: 180px;
    overflow: auto;
}
.xl-loading-row[b-jtvv6whuoc] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 20px;
    color: #64748b;
    font-size: 12.5px;
}

.xl-spinner[b-jtvv6whuoc] {
    width: 16px;
    height: 16px;
    border: 2px solid #d6dbe0;
    border-top-color: #1ab99a;
    border-radius: 50%;
    animation: xl-spin-b-jtvv6whuoc 0.7s linear infinite;
}

@keyframes xl-spin-b-jtvv6whuoc {
    to {
        transform: rotate(360deg);
    }
}

.xl-report-balance td[b-jtvv6whuoc] {
    font-weight: 700;
    background: #f7f9fa;
    border-top: 2px solid #d6dbe0;
}

/* ── Tab row (GRID / SUMMARY / REPORT) — must be redefined here,
   same reason as .itb-page/.mu-card: CSS isolation means TDS/ITB's
   .le-toptabs rules don't apply outside those components. ── */
.le-toptabs[b-jtvv6whuoc] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.le-toptab[b-jtvv6whuoc] {
    padding: 7px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background .12s, color .12s, border-color .12s;
}

    .le-toptab:hover[b-jtvv6whuoc] {
        background: #f5f5f5;
    }

    .le-toptab.active[b-jtvv6whuoc] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }
.xl-summode-group[b-jtvv6whuoc] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
}

@media (max-width: 480px) {
    .xl-summode-group[b-jtvv6whuoc] {
        flex-direction: column;
        gap: 8px;
    }
}
/* /Components/Pages/Transactions/DayBook/ItemBrandEdit.razor.rz.scp.css */
/* ItemBrandEdit.razor.css — scoped styles for the Item Brand Master modal */

.uf-modal-sm[b-ifgya1iuhu] { max-width: 480px; }

.uf-field.itembrand-field[b-ifgya1iuhu] { margin-bottom: 16px; }
.uf-field.itembrand-field:last-of-type[b-ifgya1iuhu] { margin-bottom: 0; }
.uf-field.itembrand-field > label[b-ifgya1iuhu] { font-size: 13px; padding-top: 9px; }

.uf-footer-right[b-ifgya1iuhu] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — matches GST's filled delete treatment */
.itembrand-btn-delete[b-ifgya1iuhu] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .itembrand-btn-delete:hover[b-ifgya1iuhu] {
        background: #c8393d;
    }

    .itembrand-btn-delete:disabled[b-ifgya1iuhu] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.itembrand-field[b-ifgya1iuhu] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field.itembrand-field > label[b-ifgya1iuhu] { padding-top: 0; }
}
/* /Components/Pages/Transactions/DayBook/TagEdit.razor.rz.scp.css */
/* TagEdit.razor.css — scoped styles for the Tag Master modal */

.uf-modal-sm[b-0bk6q6ntq2] { max-width: 420px; }

.uf-field.tag-field[b-0bk6q6ntq2] { margin-bottom: 16px; }
.uf-field.tag-field:last-of-type[b-0bk6q6ntq2] { margin-bottom: 0; }
.uf-field.tag-field > label[b-0bk6q6ntq2] { font-size: 13px; padding-top: 9px; }

.uf-footer-right[b-0bk6q6ntq2] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Solid red DELETE button — matches GST's filled delete treatment */
.tag-btn-delete[b-0bk6q6ntq2] {
    background: #e5484d;
    border-color: #e5484d;
    color: #fff;
}

    .tag-btn-delete:hover[b-0bk6q6ntq2] {
        background: #c8393d;
    }

    .tag-btn-delete:disabled[b-0bk6q6ntq2] {
        opacity: 0.65;
        cursor: default;
    }

@media (max-width: 540px) {
    .uf-field.tag-field[b-0bk6q6ntq2] { grid-template-columns: 1fr; gap: 4px; }
    .uf-field.tag-field > label[b-0bk6q6ntq2] { padding-top: 0; }
}
/* /Components/Pages/Transactions/DocumentGrid.razor.rz.scp.css */
/* =====================================================================
   DocumentGrid.razor.css
   Header (bspl-title-block), footer (bspl-footer), table (mu-table),
   and filter drawer (mu-drawer/mu-fld) all come from the shared
   common-page-chrome.css / masters-forms.css — same as Daybook, MGroup,
   MLedger. Only Document-Grid-specific bits remain here.
   ===================================================================== */

.dg-page[b-tyvb7jqz8m] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', 'Open Sans', Arial, sans-serif;
}

/* FIX: "Add General Doc / Clear Filters / GO" footer was overlapping the
   tail end of the filter drawer's body instead of sitting pinned below it.
   .mu-drawer/.mu-drawer-body/.mu-drawer-foot come from the shared
   masters-forms.css (not available here to inspect directly), which must
   not be flex-pinning the footer correctly for this drawer — likely
   relying on position:absolute/fixed for .mu-drawer-foot rather than a
   normal flex child alongside a flex:1 body. Same "flex:1 + overflow:auto
   + min-height:0 on the scrollable region, flex-shrink:0 on header/footer"
   pattern already proven elsewhere in this app (BSPL footer-pinning, etc).
   This file is genuine Blazor CSS isolation (DocumentGrid.razor.css, not a
   plain <style> tag), so these selectors only match THIS page's drawer
   instance — won't affect Daybook/MLedger/other pages sharing the same
   class names. */
.mu-drawer[b-tyvb7jqz8m] {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
}

.mu-drawer-body[b-tyvb7jqz8m] {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    position: static !important;
}

.mu-drawer-foot[b-tyvb7jqz8m] {
    position: static !important;
    flex-shrink: 0 !important;
}

/* ── Grid / Tiles / Summary tab switcher (left) + Voucher/General/
   Un-Tagged category toggle (right) — mirrors the legacy page's
   two-sided toolbar (LIST/TILES/... on the left, VOUCHERS/GENERAL/
   UN-TAGGED on the right). ── */
.dg-tabbar[b-tyvb7jqz8m] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    padding: 8px 16px 6px;
    flex-shrink: 0;
}

.dg-tabbar-left[b-tyvb7jqz8m],
.dg-tabbar-right[b-tyvb7jqz8m] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.dg-tab[b-tyvb7jqz8m] {
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
}

    .dg-tab:hover[b-tyvb7jqz8m] {
        background: #f5f5f5;
    }

    .dg-tab.active[b-tyvb7jqz8m] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* Category toggle — same pill shape, distinct blue accent so it doesn't
   visually blend into the view-mode tabs on the left. */
.dg-cat-btn[b-tyvb7jqz8m] {
    padding: 5px 14px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .3px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
}

    .dg-cat-btn:hover[b-tyvb7jqz8m] {
        background: #f5f5f5;
    }

    .dg-cat-btn.active[b-tyvb7jqz8m] {
        background: #1a56a7;
        color: #fff;
        border-color: #1a56a7;
    }

/* ── Scrollable middle content — the one part that scrolls, matching
   .bspl-content / .db-content on the other Transactions pages ── */
.dg-content[b-tyvb7jqz8m] {
    flex: 1;
    overflow-y: auto;
    padding: 12px 16px 8px;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

    .dg-content .mu-card[b-tyvb7jqz8m] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        background: #fff;
        border: 1px solid #e5e8ec;
        border-radius: 4px;
        overflow: hidden;
    }

    .dg-content .mu-table-wrap[b-tyvb7jqz8m] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* ── Tiles view ── */
.dg-tiles-wrap[b-tyvb7jqz8m] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
    gap: 14px;
    padding: 16px;
}

.dg-tile[b-tyvb7jqz8m] {
    width: 160px;
    border: 1px solid #e5e8ec;
    border-radius: 6px;
    background: #fafbfc;
    cursor: pointer;
    overflow: hidden;
    transition: box-shadow .12s, border-color .12s;
}

    .dg-tile:hover[b-tyvb7jqz8m] {
        border-color: #1ab394;
        box-shadow: 0 2px 8px rgba(0,0,0,.08);
    }

.dg-tile-thumb[b-tyvb7jqz8m] {
    height: 100px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #eef4fb;
    color: #1a56a7;
    font-size: 32px;
}

.dg-tile-body[b-tyvb7jqz8m] {
    padding: 8px 10px;
}

.dg-tile-name[b-tyvb7jqz8m] {
    font-size: 12px;
    font-weight: 600;
    color: #1a2537;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dg-tile-meta[b-tyvb7jqz8m] {
    font-size: 11px;
    color: #64748b;
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-end[b-tyvb7jqz8m] {
    text-align: right;
}

/* ── "Filter By" Ledger/Group radios — one line instead of stacking,
   since .le-chk is a block-level label by default. ── */
.dg-radio-row[b-tyvb7jqz8m] {
    display: flex;
    align-items: center;
    gap: 20px;
}

/* ── Sortable column headers (Detail grid + Summary tab) — Tabler-icon
   arrows, same pattern as OrderGrid's/Daybook's .mu-th-sort/.db-sort.
   Needed locally since Blazor CSS isolation means OrderGrid's copy of
   this rule doesn't reach this page. ── */
.mu-th-sort[b-tyvb7jqz8m] {
    cursor: pointer;
    white-space: nowrap;
}

    .mu-th-sort i[b-tyvb7jqz8m] {
        margin-left: 4px;
        font-size: 12px;
        opacity: .6;
    }

.dg-error[b-tyvb7jqz8m] {
    margin: 0 0 10px;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

.dg-ledger[b-tyvb7jqz8m] {
    color: #2f8fd1;
}

.dg-narration[b-tyvb7jqz8m] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dg-file-btn[b-tyvb7jqz8m] {
    background: none;
    border: none;
    color: #1a56a7;
    font-size: 12.5px;
    cursor: pointer;
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

    .dg-file-btn:hover[b-tyvb7jqz8m] {
        text-decoration: underline;
    }

.dg-uploaded[b-tyvb7jqz8m] {
    font-size: 12px;
    color: #333;
}

.dg-uploaded-by[b-tyvb7jqz8m] {
    font-size: 11px;
    color: #94a3b8;
}

.dg-total[b-tyvb7jqz8m] {
    font-weight: 700;
    color: #1a56a7;
}

.dg-page-current[b-tyvb7jqz8m] {
    font-size: 12.5px;
    color: #64748b;
}

/* Ledger match list inside the filter drawer */
.mu-fld select[size][b-tyvb7jqz8m] {
    height: auto;
    font-size: 12.5px;
}

/* Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row. */
.gcp-trigger[b-tyvb7jqz8m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-tyvb7jqz8m] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-tyvb7jqz8m] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Document preview popup — matches legacy myModal look: id/date top-left,
   zoom+close/size top-right, colored ext badge, big centered image,
   Previous/Next only (no side arrows). ── */
.dg-preview-overlay[b-tyvb7jqz8m] {
    position: fixed;
    inset: 0;
    background: rgba(15,20,30,.55);
    z-index: 1200;
}

.dg-preview-modal[b-tyvb7jqz8m] {
    position: fixed;
    top: 4%;
    left: 50%;
    transform: translateX(-50%);
    width: min(560px, 94vw);
    height: 88vh;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 10px 40px rgba(0,0,0,.3);
    z-index: 1201;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dg-preview-hdr[b-tyvb7jqz8m] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 10px 14px 6px;
    flex-shrink: 0;
}

.dg-preview-hdr-left[b-tyvb7jqz8m] {
    display: flex;
    flex-direction: column;
}

.dg-preview-vnum[b-tyvb7jqz8m] {
    font-size: 14px;
    font-weight: 700;
    color: #1a73c7;
}

.dg-preview-date[b-tyvb7jqz8m] {
    font-size: 11.5px;
    color: #64748b;
}

.dg-preview-hdr-right[b-tyvb7jqz8m] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}

.dg-preview-icons[b-tyvb7jqz8m] {
    display: flex;
    align-items: center;
    gap: 12px;
}

    .dg-preview-icons i[b-tyvb7jqz8m] {
        cursor: pointer;
        color: #6b7280;
        font-size: 15px;
    }

        .dg-preview-icons i:hover[b-tyvb7jqz8m] {
            color: #1a56a7;
        }

        .dg-preview-icons i.dg-preview-x:hover[b-tyvb7jqz8m] {
            color: #c0392b;
        }

.dg-preview-size[b-tyvb7jqz8m] {
    font-size: 11.5px;
    color: #64748b;
}

.dg-preview-badge[b-tyvb7jqz8m] {
    align-self: flex-end;
    margin: 0 14px;
    padding: 2px 10px;
    background: #1ab394;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .3px;
    border-radius: 2px;
}

.dg-preview-stage[b-tyvb7jqz8m] {
    flex: 1;
    overflow: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px 16px;
    min-height: 0;
}

.dg-preview-img[b-tyvb7jqz8m] {
    max-width: 100%;
    max-height: 100%;
    transition: transform .12s;
}

.dg-preview-frame[b-tyvb7jqz8m] {
    width: 100%;
    height: 100%;
    border: none;
}

.dg-preview-noimg[b-tyvb7jqz8m] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    color: #64748b;
    font-size: 13px;
}

    .dg-preview-noimg i[b-tyvb7jqz8m] {
        font-size: 48px;
        color: #1a56a7;
    }

.dg-preview-ftr[b-tyvb7jqz8m] {
    display: flex;
    gap: 10px;
    padding: 10px 14px;
    border-top: 1px solid #e7eaec;
    flex-shrink: 0;
}

.dg-preview-pn[b-tyvb7jqz8m] {
    padding: 6px 14px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    color: #444;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
}

    .dg-preview-pn:hover:not(:disabled)[b-tyvb7jqz8m] {
        background: #f5f5f5;
    }

    .dg-preview-pn:disabled[b-tyvb7jqz8m] {
        opacity: .4;
        cursor: not-allowed;
    }

@media (max-width: 767px) {
    .dg-preview-modal[b-tyvb7jqz8m] {
        width: 96vw;
        height: 92vh;
        top: 3%;
    }
}

/* ── Mobile ── */
@media (max-width: 767px) {
    .dg-narration[b-tyvb7jqz8m] {
        max-width: 120px;
    }

    .dg-content[b-tyvb7jqz8m] {
        padding: 8px 10px;
    }
}
/* /Components/Pages/Transactions/GAINS_TB.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   GAINS_TB.razor.css — Trial Balance (Ledgerwise / Groupwise)
   Namespaced tb2-* to match this page's markup.
   ═══════════════════════════════════════════════════════════════ */
.tb2-page[b-q3cgykc38x] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', sans-serif;
}

.tb2-btnbar[b-q3cgykc38x] {
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 4px;
    padding: 12px 14px;
    margin-bottom: 10px;
    flex-shrink: 0;
}

.tb2-btnrow[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

    .tb2-btnrow + .tb2-btnrow[b-q3cgykc38x] {
        margin-top: 8px;
    }
/* Left group (CB ONLY/OB CB/5 COLUMN) and right group (Y/Q/M/1Y/2Y) share one row,
   pushed to opposite ends. Wraps to two lines on narrow widths same as before —
   .tb2-btnrow's own flex-wrap:wrap still applies. */
.tb2-btnrow-split[b-q3cgykc38x] {
    justify-content: space-between;
}

.tb2-btn-group[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.tb2-btn-group-compact[b-q3cgykc38x] {
    gap: 4px;
}

.tb2-btn-gap[b-q3cgykc38x] {
    flex: 0 0 12px;
}

.tb2-btn[b-q3cgykc38x] {
    background: #fff;
    border: 1px solid #d6dbe0;
    color: #555;
    border-radius: 4px;
    padding: 7px 18px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    cursor: pointer;
}

    .tb2-btn.tb2-btn-sm[b-q3cgykc38x] {
        padding: 7px 12px;
    }

    .tb2-btn.active[b-q3cgykc38x] {
        background: #1a9c8c;
        color: #fff;
        border-color: #1a9c8c;
    }

    .tb2-btn:hover:not(.active):not(:disabled)[b-q3cgykc38x] {
        background: #f5f7fa;
    }

    .tb2-btn:disabled[b-q3cgykc38x] {
        opacity: .4;
        cursor: not-allowed;
    }

.tb2-btn-short[b-q3cgykc38x] {
    display: none;
}

@media (max-width: 576px) {
    .tb2-btn-full[b-q3cgykc38x] {
        display: none;
    }

    .tb2-btn-short[b-q3cgykc38x] {
        display: inline;
    }

    .tb2-btn[b-q3cgykc38x] {
        padding: 7px 12px;
    }

    .tb2-btnrow[b-q3cgykc38x] {
        gap: 6px;
    }
}

.tb2-grid-card[b-q3cgykc38x] {
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 4px;
    overflow: hidden;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.tb2-toolbar[b-q3cgykc38x] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-size: 13px;
    color: #555;
    flex-wrap: wrap;
    gap: 8px;
    flex-shrink: 0;
}

.tb2-entries-select[b-q3cgykc38x] {
    border: 1px solid #d6dbe0;
    border-radius: 3px;
    padding: 2px 6px;
    margin: 0 4px;
}

.tb2-search-input[b-q3cgykc38x] {
    border: 1px solid #d6dbe0;
    border-radius: 3px;
    padding: 3px 8px;
    margin-left: 6px;
}

.tb2-body-row[b-q3cgykc38x] {
    display: flex;
    flex: 1;
    min-height: 0;
}

.tb2-table-wrap[b-q3cgykc38x] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}
/* When the illustration is showing (Ledgerwise + Year + CB Only), split the
   row evenly: grid/content gets exactly 50%, image gets exactly 50% (see
   .tb2-illustration below) — explicit 50/50, not shrink-to-content. The
   table itself still only sizes to its real (max-content) column widths
   internally (never stretches — see .tb2-table), so if it's narrower than
   this 50% pane there's simply blank space to its right within that half;
   if it's ever wider, .tb2-scroll's overflow:auto scrolls within the half
   rather than pushing into the image's side. */
.tb2-body-row:has(.tb2-illustration) .tb2-table-wrap[b-q3cgykc38x] {
    flex: 0 1 auto;
}

.tb2-scroll[b-q3cgykc38x] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    /* Thin, light-teal scrollbar (same treatment as .mu-table-wrap elsewhere) instead
       of the browser's default thick gray one — Firefox via scrollbar-width/-color... */
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}
    /* ...Chromium/Edge/Safari via the ::-webkit-scrollbar pseudo-elements (Firefox
   ignores these, so both rules are needed together for full cross-browser coverage). */
    .tb2-scroll[b-q3cgykc38x]::-webkit-scrollbar {
        width: 8px;
        height: 8px;
    }

    .tb2-scroll[b-q3cgykc38x]::-webkit-scrollbar-track {
        background: transparent;
    }

    .tb2-scroll[b-q3cgykc38x]::-webkit-scrollbar-thumb {
        background-color: #b6e8db;
        border-radius: 4px;
    }

        .tb2-scroll[b-q3cgykc38x]::-webkit-scrollbar-thumb:hover {
            background-color: #8fd9c4;
        }
/* ── Groupwise table — same .tb2-table base as Ledgerwise (sticky header, padding,
   borders, font-size all inherited from the rules below); these are just the extra
   bits specific to Groupwise: colored category bars, the total row, and letting the
   2-row DR/CR header size to its actual (wide) content instead of being squeezed to
   fit the container — .tb2-table's shared width:100%+table-layout:fixed rule would
   otherwise proportionally shrink every <col> back down to fit, re-clipping long
   Indian-formatted amounts no matter how wide each <col> declares itself. Widening
   past 100% here just means .tb2-scroll's overflow:auto kicks in with a horizontal
   scrollbar instead of truncating. */
.tb2-group-table[b-q3cgykc38x] {
    /* min-width:100% REMOVED — table-layout:fixed only treats declared <col>
       widths as fixed RATIOS, not fixed pixel floors: whenever the table is
       forced wider than the sum of those widths (which min-width:100% does
       whenever there aren't many numeric columns), the browser stretches
       every column proportionally to fill the extra space. That's why the
       table body looked "responsive" while the footer div (a CSS Grid with
       literal px tracks — grid tracks never stretch like that) stayed fixed
       at its declared widths — two different width systems, only one of
       them stretches, so they drifted apart on any screen where content
       didn't already exceed the container. width:max-content alone still
       lets the table grow PAST the container when content needs more room
       (→ .tb2-scroll's horizontal scrollbar) — it just no longer inflates
       columns when content needs less, so table and footer always match. */
    width: max-content;
    table-layout: fixed;
}
    /* Tighter horizontal padding on Groupwise's numeric header/cells specifically —
   the shared .tb2-table th/td padding (12px sides) was adding to the "too much
   gap" feel inside the now-narrower DR/CR columns. */
    .tb2-group-table th[b-q3cgykc38x],
    .tb2-group-table td[b-q3cgykc38x] {
        padding-left: 8px;
        padding-right: 8px;
    }
    /* Groupwise has TWO header rows (period label, then DR/CR). Previous fix stuck each
   <tr>'s th individually with a guessed top offset for row 2 — that guess (34px)
   rarely matched row 1's real rendered height exactly, which is what produced the
   white gap between the rows (and, combined with border-collapse:collapse on
   adjacent sticky rows, detached borders). Fix: stick the whole <thead> as ONE unit
   instead of each row separately. Row 2 then just sits in normal flow directly under
   row 1 — zero gap, borders collapse normally — and the single sticky container
   still pins both rows to the top together on scroll. No offset guess needed at all. */
    .tb2-group-table thead[b-q3cgykc38x] {
        position: sticky;
        top: 0;
        z-index: 4;
    }
/* Overrides the shared .tb2-table thead th { position:sticky; top:0 } rule (same
   specificity, so table.* here to win regardless of source order) — individual th's
   no longer need their own sticky/top now that the thead itself is the sticky unit. */
table.tb2-group-table thead th[b-q3cgykc38x] {
    position: static;
}
/* The seam between the CB row and the DR/CR row: the shared .tb2-table thead th
   rule gives every header cell a 2px #e5e8ec (near-white) border-bottom — meant
   for Ledgerwise's plain white header, but on Groupwise's dark navy/maroon header
   that pale line reads as a bright band with the page showing through, i.e. the
   reported "gap". Replace it with a real thin gray line that actually sits on the
   dark header, and trim the row's own top/bottom padding so there's no extra
   blank space stacked around it either — just the 1px line. */
.tb2-group-table thead tr:first-child th[b-q3cgykc38x] {
    padding-top: 6px;
    padding-bottom: 6px;
    /*border-bottom: 1px solid rgba(255, 255, 255, .35);*/
}

.tb2-group-table thead tr:nth-child(2) th[b-q3cgykc38x] {
    padding-top: 6px;
    padding-bottom: 6px;
}

.tb2-group-cat-row td[b-q3cgykc38x] {
    color: #fff;
    font-weight: 700;
    border-bottom: none;
}

.tb2-group-cat-label[b-q3cgykc38x] {
    text-align: left;
}

.tb2-group-total-tr td[b-q3cgykc38x] {
    background-color: #c2b280 !important;
    font-weight: 700;
    color: #2b2410;
}
/* .tb2-row-even (zebra striping) is already defined generically above and applies
   here unchanged — Groupwise rows reuse the same class Ledgerwise rows use. */
/* ── Ledgerwise table ──────────────────────────────────────────────
   table-layout: fixed + the <colgroup> in the .razor file lock every
   column's width up front, so the browser never resizes columns as
   rows scroll into view. That removed the mid-scroll ghosting; the
   totals themselves have since moved OUT of the table entirely (see
   .tb2-sticky-footer below) so position:sticky is never applied to a
   <tfoot>, which is the part browsers handle unreliably. */
.tb2-table[b-q3cgykc38x] {
    /* Was width:100% + table-layout:fixed with fixed-px numeric columns (170px
       each) — that combo forces the browser to proportionally SQUEEZE every
       column down to fit the container on narrow screens (cut-off/overlapping
       numbers), instead of scrolling.
       min-width:100% (added as part of that same fix) turned out to cause the
       OPPOSITE problem: table-layout:fixed only treats <col> widths as fixed
       RATIOS, not floors — forcing the table wider than the sum of its
       declared column widths (which min-width:100% does whenever there
       aren't many numeric columns, e.g. CB Only) makes the browser stretch
       every column proportionally to fill the extra space. The footer is a
       separate CSS Grid div with literal px tracks that never stretch that
       way, so body and footer columns drifted apart. Dropped min-width:100%
       — width:max-content alone still lets the table grow PAST the
       container when content needs more room (many numeric columns / narrow
       screen → .tb2-scroll's horizontal scrollbar), it just no longer
       inflates columns when content needs less, so table and footer always
       match, at any screen size. */
    width: max-content;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 12.5px;
    white-space: nowrap;
}

    .tb2-table th[b-q3cgykc38x], .tb2-table td[b-q3cgykc38x] {
        padding: 8px 12px;
        /*border-bottom: 1px solid #eef0f2;*/
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .tb2-table thead th[b-q3cgykc38x] {
        /*border-bottom: 2px solid #e5e8ec;*/
        font-weight: 700;
        position: sticky;
        top: 0;
        cursor: pointer;
        user-select: none;
        z-index: 1;
    }

.tb2-th-period[b-q3cgykc38x] {
    font-size: 12.5px;
}

.tb2-th-field[b-q3cgykc38x] {
    font-size: 10.5px;
    color: rgba(255, 255, 255, .75);
    font-weight: 600;
}

.tb2-idx[b-q3cgykc38x] {
    /* Keep in sync with IdxColWidthPx in GAINS_TB.razor's @code block — the table's
       <colgroup> width wins for actual layout, this just mirrors it for clarity.
       Wide enough for 3-4 digit row numbers ("153", "1000"+) without clipping. */
    width: 56px;
    color: #999;
    text-align: right;
}

.tb2-ledcode[b-q3cgykc38x] {
    color: #2f8fd1;
    font-weight: 500;
}

.tb2-row-even[b-q3cgykc38x] {
    background: #fafbfc;
}
/* ── Frozen columns (Ledgerwise only) ──────────────────────────────
   Ledger Code and Ledger Name (plus the leading # column, so nothing
   sits "loose" between the frozen block and the scrollable columns)
   stay put while the rest of the row scrolls underneath them. This is
   real position:sticky on each cell — not a second fake table laid on
   top — so it stays correct at any column count/width automatically.

   Left offsets are literal px, matching the same three widths used
   everywhere else (colgroup, footer grid track sizes):
     # (IdxColWidthPx)      : left 0,   width 56px
     Ledger Code            : left 56,  width 110px
     Ledger Name (NameColWidthPx) : left 166, width 305px
   If NameColWidthPx/IdxColWidthPx/ledCode's 110px ever change in the
   .razor file, these left offsets must change to match. */
.tb2-table .tb2-idx[b-q3cgykc38x],
.tb2-table .tb2-ledcode[b-q3cgykc38x],
.tb2-table .tb2-namecol-frozen[b-q3cgykc38x] {
    position: sticky;
    z-index: 2;
}

.tb2-table .tb2-idx[b-q3cgykc38x] {
    left: 0;
}

.tb2-table .tb2-ledcode[b-q3cgykc38x] {
    left: 56px;
}

.tb2-table .tb2-namecol-frozen[b-q3cgykc38x] {
    left: 166px;
    /* Right edge of the frozen block — visually separates it from the
       columns that actually scroll underneath it. */
    /*box-shadow: 2px 0 4px -2px rgba(0, 0, 0, .18);*/
}
/* Body cells only: an explicit opaque background so scrolled-past
   columns don't show through a sticky cell as the row scrolls under
   it. Scoped to tbody deliberately — the header's real background
   (the dark banner color) comes from a site-wide style outside these
   two files, not from anything declared here, so painting these
   frozen cells white unconditionally used to also whiteout the header
   band behind #, Ledger Code and Ledger Name. tbody's own background
   IS known locally (.tb2-grid-card's white, or the zebra stripe below),
   so it's safe to hardcode here. */
.tb2-table tbody .tb2-idx[b-q3cgykc38x],
.tb2-table tbody .tb2-ledcode[b-q3cgykc38x],
.tb2-table tbody .tb2-namecol-frozen[b-q3cgykc38x] {
    background: #fff;
}

.tb2-table tbody tr.tb2-row-even .tb2-idx[b-q3cgykc38x],
.tb2-table tbody tr.tb2-row-even .tb2-ledcode[b-q3cgykc38x],
.tb2-table tbody tr.tb2-row-even .tb2-namecol-frozen[b-q3cgykc38x] {
    background: #fafbfc;
}
/* Header cells: on top of both scrolling header cells (z-index:1,
   below) AND frozen body cells (z-index:2, above) at the frozen
   top-left corner where a cell is sticky on both axes at once. No
   background override here — the header's existing background
   (already opaque, whatever color it is) keeps rendering normally,
   which is also what makes it opaque enough to cover columns
   scrolling underneath. */
.tb2-table thead th.tb2-idx[b-q3cgykc38x],
.tb2-table thead th.tb2-ledcode[b-q3cgykc38x],
.tb2-table thead th.tb2-namecol-frozen[b-q3cgykc38x] {
    z-index: 3;
}
/* The sticky totals footer (a CSS Grid div, not a <tfoot>) needs the
   same three columns pinned, for the same reason. Groupwise's own table
   also carries the shared "tb2-table" class (it's "tb2-table
   tb2-group-table"), so a plain "table.tb2-table + .tb2-sticky-footer"
   adjacent-sibling selector would match BOTH tables' footers — :not()
   excludes the Groupwise one so only the Ledgerwise footer (whose
   spans are the only ones carrying .tb2-ledcode/.tb2-namecol-frozen
   anyway) is actually affected; :not() here is belt-and-suspenders. */
table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-footer-letter[b-q3cgykc38x],
table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-ledcode[b-q3cgykc38x],
table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-namecol-frozen[b-q3cgykc38x] {
    position: sticky;
    z-index: 1;
    background: #eaf3fb;
}

table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-footer-letter[b-q3cgykc38x] {
    left: 0;
}

table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-ledcode[b-q3cgykc38x] {
    left: 56px;
}

table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-namecol-frozen[b-q3cgykc38x] {
    left: 166px;
    /*box-shadow: 2px 0 4px -2px rgba(0, 0, 0, .18);*/
}
/* ── Sticky totals block — a plain <div>, not a <tfoot>. Column widths
   come from the same ColWidth() helper the table's <colgroup> uses, so
   it always lines up with the table above it, and being a sibling
   inside the same .tb2-scroll it scrolls horizontally in sync. Sticky
   on an ordinary block element is reliably supported, unlike sticky on
   a table row-group — that mismatch was the source of the ghosting. */
.tb2-sticky-footer[b-q3cgykc38x] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background: #eaf3fb;
    box-shadow: 0 -1px 0 #d7e6f0;
    /* The table above is width:max-content, NO min-width:100% (that min-width
       was removed — it made table-layout:fixed stretch every column
       proportionally whenever there weren't many numeric columns, which this
       footer's literal-px grid tracks never did, so the two drifted apart).
       This div matches with plain width:max-content too, no min-width — a
       block's max-content sizes to its content, which here is the grid's own
       literal px tracks, so this footer's natural width is always exactly
       the same literal sum as the table's declared column widths, at any
       screen size. Both still grow past the container together (→
       .tb2-scroll's horizontal scrollbar) whenever that sum needs more room
       than the container has. */
    width: max-content;
}

.tb2-footer-row[b-q3cgykc38x] {
    display: grid;
    align-items: center;
    font-size: 12.5px;
    background-color: #eaf3fb;
}
    /* Padding lives on each cell, not the row container — matching how <td>/<th>
       padding works in the table above. Padding on the row itself was insetting
       every column by 12px, which is what shifted the whole footer sideways
       relative to the table's columns. */
    .tb2-footer-row > span[b-q3cgykc38x] {
        padding: 8px 12px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
    }

    .tb2-footer-row + .tb2-footer-row[b-q3cgykc38x] {
        border-top: 1px solid #d7e6f0;
    }

.tb2-footer-letter[b-q3cgykc38x] {
    text-align: right;
    color: #333;
}

.tb2-zero[b-q3cgykc38x] {
    color: #aaa;
}

.tb2-dr[b-q3cgykc38x] {
    color: #222;
}

.tb2-cr[b-q3cgykc38x] {
    color: #800000;
}

.tb2-loading[b-q3cgykc38x] {
    padding: 40px;
    text-align: center;
    color: #888;
}

/*.tb2-illustration {*/
/* Explicit 50/50 split with .tb2-table-wrap (see the :has() rule above) —
       this pane gets exactly the other 50% of the row, not a fixed px width
       or shrink-to-content. align-items:stretch (was center) so the img
       below can actually fill the full height of its half, not just sit
       centered at its own intrinsic size. */
/*flex: 0 0 50%;
    width: 50%;
    align-items: stretch;
    justify-content: center;
    padding: 12px;
    border-left: 1px solid #eef0f2;
    box-sizing: border-box;
}

    .tb2-illustration img {*/
/* Fills the entire half (width AND height) — object-fit:cover crops
           whatever overflows instead of letterboxing/squishing, so the image
           reads as fully and evenly filling its 50% pane at any screen size. */
/*width: 100%;
        height: 100%;
        object-fit: cover;
        opacity: .9;
    }*/

.tb2-illustration[b-q3cgykc38x] {
    /* Widened (was 340px) and the image below now scales UP to fill it (width:
       100%, not just max-width) — was rendering small/thumbnail-sized because
       max-width:100% alone never grows an image past its own intrinsic pixel
       size, only ever shrinks it. Combined with .tb2-table-wrap no longer
       force-filling the row when this illustration is present (see above),
       this panel now sits right next to the table and actually fills the
       space instead of floating small and far off to the right. */
    width: 500px;
    align-items: center;
    justify-content: center;
    padding: 12px;
    border-left: 1px solid #eef0f2;
}

    .tb2-illustration img[b-q3cgykc38x] {
        width: 100%;
        max-width: 100%;
        opacity: .9;
    }



.tb2-footer-icons[b-q3cgykc38x] {
    display: flex;
    gap: 12px;
    font-size: 16px;
}

    .tb2-footer-icons a[b-q3cgykc38x] {
        cursor: pointer;
    }

.tb2-pagination[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.tb2-page-btn[b-q3cgykc38x] {
    border: 1px solid #d6dbe0;
    background: #fff;
    border-radius: 4px;
    padding: 4px 12px;
    cursor: pointer;
}

    .tb2-page-btn:disabled[b-q3cgykc38x] {
        opacity: .4;
        cursor: default;
    }

.le-chk[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    margin-bottom: 6px;
}
/* Depth dropdown, inline next to the Groupwise radio/label — disabled and greyed
   out until Groupwise is selected (see the "disabled" binding on the <select>
   itself, in GAINS_TB.razor). */
.tb2-depth-select[b-q3cgykc38x] {
    margin-left: 4px;
    padding: 3px 6px;
    border: 1px solid #d6dbe0;
    border-radius: 3px;
    font-size: 12.5px;
    color: #1a2537;
    cursor: pointer;
}

    .tb2-depth-select:disabled[b-q3cgykc38x] {
        opacity: .5;
        cursor: not-allowed;
        background: #f3f3f4;
    }
/* Active filter — inline radio row (was a <select>). Same .le-chk look used
   elsewhere on this page/ITB, just laid out horizontally instead of stacked. */
.tb2-radio-row[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

    .tb2-radio-row .le-chk[b-q3cgykc38x] {
        margin-bottom: 0;
    }
/* Thin divider between filter-drawer groups (Date / Mode / Depot+Group /
   Active+Query Type / Rows), purely visual — no effect on any field below it. */
.mu-drawer-sep[b-q3cgykc38x] {
    height: 1px;
    background: #e5e8ec;
    margin: 14px 0;
}
/* .mu-drawer-body lives in shared CSS (not this file) at gap:16px — scoped override,
   same trick used for .mu-fld/.mu-drawer elsewhere: only hits TB's own drawer markup,
   other pages using the shared class keep their 16px. */
.mu-drawer-body[b-q3cgykc38x] {
    gap: 5px;
}
/* /Components/Pages/Transactions/Inventory/ChallanGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — ChallanGrid.razor.css   (Transactions → Challan grid, page-scoped)
   Shared "mu-"/"bspl-" chrome lives in wwwroot/CSS/masters-forms.css;
   .t-page on the root wrapper already gives this table the transaction
   blue (#306B9C) header. Only Challan-grid-specific rules live here.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / TB / Masters pages. */
.ch-page[b-d5exzse6n8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ch-page .mu-card[b-d5exzse6n8] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .ch-page .mu-toolbar[b-d5exzse6n8] {
        flex-shrink: 0;
        display: flex;
        align-items: center;
        gap: 12px;
    }

    .ch-page .mu-table-wrap[b-d5exzse6n8] {
        flex: 1;
        overflow: auto;
        min-height: 0;
        padding-left: 16px;
    }

/* ── Table density/striping — copied verbatim from Daybook's .db-table so
   this grid matches its row height/spacing exactly instead of the looser
   generic .mu-table look. Isolated CSS means it has to be redeclared here. ── */
.db-table[b-d5exzse6n8] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .db-table th[b-d5exzse6n8] {
        text-align: left;
        padding: 8px 10px;
        border-bottom: 1px solid #ddd;
        position: sticky;
        top: 0;
        z-index: 3;
    }

    .db-table td[b-d5exzse6n8] {
        padding: 6px 10px;
        border-bottom: 1px solid #f2f2f2;
    }

    .db-table tfoot td[b-d5exzse6n8] {
        position: sticky;
        bottom: 0;
        z-index: 3;
        background: #e8e8e8;
    }

/* ── Summary tables (Month/Item/Ledger-wise) — table-layout:fixed so
   columns respect the <colgroup> widths defined in the markup. Column
   widths themselves live in <colgroup>/<col> in the .razor file rather
   than nth-child CSS here, because position:sticky on <th> doesn't
   reliably stay in sync with nth-child percentage widths across browsers
   — colgroup decouples sizing from the header cell's own rendering,
   which is what was causing header/body columns to drift apart. ── */
.ch-summary-month[b-d5exzse6n8], .ch-summary-item[b-d5exzse6n8], .ch-summary-ledger[b-d5exzse6n8] {
    table-layout: fixed;
}

    .ch-summary-month th[b-d5exzse6n8], .ch-summary-month td[b-d5exzse6n8],
    .ch-summary-item th[b-d5exzse6n8], .ch-summary-item td[b-d5exzse6n8],
    .ch-summary-ledger th[b-d5exzse6n8], .ch-summary-ledger td[b-d5exzse6n8] {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

/* ── Summary two-pane split — Month/Item/Ledger-wise table on the left,
   the secondary drill-down (Ledger-wise or Item-wise breakdown, scoped to
   whatever row was clicked on the left) on the right. Matches the legacy
   page's side-by-side layout.

   The split container itself must NOT scroll — it would otherwise inherit
   overflow:auto from .mu-table-wrap above and scroll the whole row as one
   unit, which both breaks independent scrolling per side and breaks
   sticky th/tfoot (position:sticky needs each pane to be its OWN nearest
   scrolling ancestor, not a shared one). align-items:stretch (overriding
   flex's default here explicitly) is what gives each pane a real bounded
   height to scroll within — without it, overflow-y:auto has nothing to
   clip against and the pane just grows with its content instead. ── */
.ch-page .mu-table-wrap.ch-summary-split[b-d5exzse6n8] {
    display: flex;
    align-items: stretch;
    gap: 16px;
    overflow: hidden;
    min-height: 0;
}

.ch-summary-left[b-d5exzse6n8] {
    flex: 1 1 55%;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
}

.ch-summary-right[b-d5exzse6n8] {
    flex: 1 1 45%;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
    border-left: 1px solid #e5e8ec;
    padding-left: 16px;
}

.ch-summary-right-title[b-d5exzse6n8] {
    font-weight: 700;
    font-size: 13px;
    color: #1a2537;
    padding: 4px 0 10px;
}

.ch-summary-right-tbl[b-d5exzse6n8] {
    width: 100%;
    border-collapse: collapse;
}

@media (max-width: 991px) {
    .ch-summary-split[b-d5exzse6n8] {
        flex-direction: column;
    }

    .ch-summary-right[b-d5exzse6n8] {
        border-left: none;
        border-top: 1px solid #e5e8ec;
        padding-left: 0;
        padding-top: 12px;
        width: 100%;
    }
}

.db-row-even[b-d5exzse6n8] {
    background: #ffffff;
}

.db-row-odd[b-d5exzse6n8] {
    background: #f5fafa;
}

.db-table tbody tr:hover[b-d5exzse6n8] {
    background: #e8f5f0;
}

/* ── Checkbox select column — matches Daybook's .chk column ── */
.chk[b-d5exzse6n8] {
    width: 32px;
    text-align: center;
}

/* ── Top view tabs (Details / Summary) — copied verbatim from Daybook's
   .db-tabbar/.db-tab since Blazor CSS isolation means Daybook.razor.css's
   rules can't reach this page. ── */
.db-tabbar[b-d5exzse6n8] {
    display: flex;
    gap: 4px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    padding: 8px 0 6px 12px;
    flex-shrink: 0;
}

.db-tab[b-d5exzse6n8] {
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    padding: 5px 16px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    transition: all .12s;
}

    .db-tab:hover[b-d5exzse6n8] {
        background: #f5f5f5;
    }

    .db-tab.active[b-d5exzse6n8] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* ── Summary sub-tabs (Month Count / Month Value / Item-wise / Ledger-wise) ──
   Same source as above — Daybook's .db-summary-tabbar/.db-summary-tab. ── */
.db-summary-tabbar[b-d5exzse6n8] {
    display: flex;
    gap: 8px;
    padding: 10px 0 10px 12px;
    border-bottom: 1px solid #eee;
    flex-shrink: 0;
}

.db-summary-tab[b-d5exzse6n8] {
    background: #fff;
    border: 1px solid #ddd;
    color: #555;
    padding: 5px 16px;
    border-radius: 3px;
    cursor: pointer;
    font-size: 12px;
}

    .db-summary-tab.active[b-d5exzse6n8] {
        background: #16a085;
        color: #fff;
        border-color: #16a085;
    }

/* ── Footer pagination — Daybook's numbered .db-pagination/.db-page-btn ── */
.db-pagination[b-d5exzse6n8] {
    display: flex;
    justify-content: flex-end;
    gap: 4px;
    padding: 0;
}

.db-page-btn[b-d5exzse6n8] {
    background: #fff;
    border: 1px solid #ddd;
    padding: 3px 8px;
    cursor: pointer;
    font-size: 12px;
    border-radius: 3px;
}

    .db-page-btn.active[b-d5exzse6n8] {
        background: #16a085;
        color: #fff;
        border-color: #16a085;
    }

    .db-page-btn:disabled[b-d5exzse6n8] {
        opacity: .4;
        cursor: default;
    }

.bspl-footer-count[b-d5exzse6n8] {
    font-size: 12px;
    color: #666;
    margin-left: 4px;
}

/* ── "C" clear-dates button next to To Date — resets just the date range
   back to the FY default, without touching the rest of the filter form
   (that's what the drawer's "Clear Filter" button does). ── */
.ch-date-clear-btn[b-d5exzse6n8] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    background: #fff;
    color: #555;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
}

    .ch-date-clear-btn:hover[b-d5exzse6n8] {
        background: #f5f5f5;
        border-color: #1ab394;
        color: #1ab394;
    }

.ch-inline-error[b-d5exzse6n8] {
    color: #b91c1c;
    font-size: 12.5px;
}

/* ── VNum cell — two separate click targets:
   • .ch-vnum-dot (small colored square, colored by wColor) opens the
     voucher report popup.
   • .ch-vnum-text (the VNum itself) redirects to ChallanEntry for edit. ── */
.ch-vnum-dot[b-d5exzse6n8] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 2px;
    margin-right: 7px;
    vertical-align: middle;
    cursor: pointer;
}

    .ch-vnum-dot:hover[b-d5exzse6n8] {
        opacity: 0.7;
    }

.ch-vnum-text[b-d5exzse6n8] {
    cursor: pointer;
}

    .ch-vnum-text:hover[b-d5exzse6n8] {
        color: #16a085;
    }

/* ── Voucher report popup — opened from the VNum dot in the details grid. Same
   fixed-overlay + centered-panel convention as QItem.razor's .ql-voucher-modal*. ── */
.ch-voucher-modal-overlay[b-d5exzse6n8] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 1000;
}

.ch-voucher-modal[b-d5exzse6n8] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #fff;
    width: 90vw;
    max-width: 1100px;
    max-height: 88vh;
    overflow: auto;
    border-radius: 6px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
    z-index: 1001;
}

.ch-voucher-modal-hdr[b-d5exzse6n8] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
    position: sticky;
    top: 0;
    background: #fff;
    font-weight: 600;
    color: #16a085;
}

.ch-voucher-modal-x[b-d5exzse6n8] {
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: #888;
}

.ch-voucher-modal-body[b-d5exzse6n8] {
    padding: 14px 16px;
}

/* ── Type badge (wType/wTypeAlias, colored via wColor from the API) ── */
.ch-type-badge[b-d5exzse6n8] {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.ch-party[b-d5exzse6n8] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ch-party-link[b-d5exzse6n8] {
    cursor: pointer;
}

    .ch-party-link:hover[b-d5exzse6n8] {
        color: #16a085;
    }

/* ── Clickable Ledger/Item name in the Ledger-wise/Item-wise summary
   tables — drills to QLedger/QItem. Copied from Daybook's .db-drill for
   the same CSS-isolation reason as the other classes in this file. ── */
.db-drill[b-d5exzse6n8] {
    cursor: pointer;
}

/* ── Numeric columns (Qty / Amount / Total / GRN / DLN / Prod) — right-aligned,
   tabular figures. The .db-table-th override is needed because ".db-table th"
   (two classes) otherwise beats plain ".ch-num" (one class) on specificity,
   silently left-aligning header cells like Total/GRN/DLN/Prod despite the
   class being present. ── */
.ch-num[b-d5exzse6n8] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.db-table th.ch-num[b-d5exzse6n8] {
    text-align: right;
}

/* ── Linked/unlinked indicator ── */
.ch-link-col[b-d5exzse6n8] {
    text-align: center;
    width: 56px;
}

.ch-linked[b-d5exzse6n8] {
    color: #1ab99a;
}

.ch-unlinked[b-d5exzse6n8] {
    color: #cbd5e1;
}

/* ── Grand total row — sticky to the bottom of the scroll area, same
   pattern used on BSPL/Daybook total rows ── */
.ch-total-row[b-d5exzse6n8] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #eef4fb;
    font-weight: 700;
    color: #1a2537;
}

    .ch-total-row td[b-d5exzse6n8] {
        border-top: 2px solid #306B9C;
    }

/* ── Make Trip / Create Trip Grid — filter-drawer action row, placed right
   below the Voucher Type field. Buttons reuse the shared .mu-btn look
   (same class as the drawer's Clear Filter/Go buttons) so they match the
   existing filter-drawer chrome; this rule only handles the side-by-side
   spacing between the two. ── */
.ch-trip-btn-row[b-d5exzse6n8] {
    display: flex;
    align-items: center;
    gap: 10px;
}

    .ch-trip-btn-row .mu-btn[b-d5exzse6n8] {
        flex: 1;
    }

@media (max-width: 767px) {
    .ch-page .mu-toolbar[b-d5exzse6n8] {
        flex-wrap: wrap;
    }

    .ch-party[b-d5exzse6n8] {
        max-width: 140px;
    }
}
/* /Components/Pages/Transactions/Inventory/ITB.razor.rz.scp.css */
/* =====================================================================
   ITB.razor.css
   Header (bspl-title-block), footer (bspl-footer), tabs (le-toptabs),
   table (mu-table), and filter drawer (mu-drawer/mu-fld) all come from
   the shared common-page-chrome.css / masters-forms.css — same as
   MLedger. Only ITB-specific bits (gallery cards, numeric column
   alignment) remain here.
   ===================================================================== */

/* Page-end footer pinning — same pattern as MLedger/MGroup/Daybook/BSPL. */
.itb-page[b-e1uf9e3hb8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.itb-toptabs[b-e1uf9e3hb8] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
    .itb-toptabs button[b-e1uf9e3hb8] {
        padding: 7px 16px;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .2px;
        text-transform: uppercase;
        background: #fff;
        color: #555;
        border: 1px solid #d5d5d5;
        border-radius: 6px;
        cursor: pointer;
        font-family: inherit;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition: background .12s, color .12s, border-color .12s;
    }

        .itb-toptabs button i[b-e1uf9e3hb8] {
            font-size: 12px;
        }

        .itb-toptabs button:hover[b-e1uf9e3hb8] {
            background: #f5f5f5;
        }

        .itb-toptabs button.active[b-e1uf9e3hb8] {
            background: #1ab99a;
            color: #fff;
            border-color: #1ab99a;
            font-weight: 700;
        }

.itb-page .mu-card[b-e1uf9e3hb8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0 16px;
}

.itb-page .mu-table-wrap[b-e1uf9e3hb8] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

.itb-page .bspl-footer-right[b-e1uf9e3hb8] {
    font-size: inherit;
    color: inherit;
}

/* Numeric column alignment (not defined globally in masters-forms.css) */
.mu-table thead th.num[b-e1uf9e3hb8] {
    text-align: right;
}

.mu-table td.num[b-e1uf9e3hb8] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.itb-iname[b-e1uf9e3hb8] {
    max-width: 380px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.itb-page-current[b-e1uf9e3hb8] {
    font-size: 12.5px;
    color: #64748b;
}

.itb-error[b-e1uf9e3hb8] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Toolbar: "Show N entries" + "Search:" (DataTables-style controls) ── */
.itb-toolbar[b-e1uf9e3hb8] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 8px;
}

.itb-pagesize[b-e1uf9e3hb8] {
    padding: 4px 8px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    margin: 0 4px;
    font-family: inherit;
    color: #333;
}

    .itb-pagesize:focus[b-e1uf9e3hb8],
    .itb-search:focus[b-e1uf9e3hb8],
    .itb-pageno:focus[b-e1uf9e3hb8] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

.itb-search[b-e1uf9e3hb8] {
    padding: 5px 10px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    margin-left: 6px;
    font-family: inherit;
    color: #333;
}

.itb-grid-table[b-e1uf9e3hb8] {
    border-collapse: separate;
    border-spacing: 0;
    table-layout: auto;
    width: 100%;
}

    .itb-grid-table thead th[b-e1uf9e3hb8] {
       /* background: #fff !important;
        color: #333 !important;*/
        text-align: center;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.3;
       /* border: 1px solid #e3e6ea;*/
        padding: 8px 10px;
    }

    /* Left-align the ItemCode/Item Group and Item Name header cells */
    .itb-grid-table thead tr:first-child th:nth-child(2)[b-e1uf9e3hb8],
    .itb-grid-table thead tr:first-child th:nth-child(3)[b-e1uf9e3hb8] {
        text-align: left;
    }
    .itb-grid-table thead tr:first-child th:nth-child(1)[b-e1uf9e3hb8] {
        text-align: right;
    }
    .itb-grid-table tbody td.mu-idx[b-e1uf9e3hb8] {
        text-align: right;
        padding-right: 8px;
    }
.itb-grp-hdr[b-e1uf9e3hb8] {
    background: #fff;
    font-size: 12.5px;
    text-transform: uppercase;
    letter-spacing: .3px;
}

.itb-th-sort[b-e1uf9e3hb8] {
    cursor: pointer;
    user-select: none;
}
    .itb-th-sort[b-e1uf9e3hb8]::after {
        /* content: "\21C5";
        margin-left: 4px;
        color: #b7bec7;
        font-size: 10px;*/

        /*Hide that Arrorw from Header*/
        content: none;
    }

.itb-grid-table tbody td[b-e1uf9e3hb8],
.itb-grid-table tfoot td[b-e1uf9e3hb8] {
    border-left: 1px solid #eef0f2;
    border-right: 1px solid #eef0f2;
    border-bottom: 1px solid #eef0f2;
    border-top: 0;
}
[b-e1uf9e3hb8] .itb-secondary {
    color: #1ab99a !important;
    font-size: 11.5px;
}

.itb-sq[b-e1uf9e3hb8] {
    color: #1ab99a;
    font-size: 8px;
    vertical-align: 2px;
}

.itb-code[b-e1uf9e3hb8] {
    color: #2f8fd1;
}

[b-e1uf9e3hb8] tfoot .itb-secondary {
    color: #1ab99a !important;
}

.itb-xls-btn[b-e1uf9e3hb8] {
    background: none;
    border: none;
    color: #1a7f4b;
    font-size: 15px;
    cursor: pointer;
    padding: 0 4px;
    margin-left: 8px;
}

.itb-pageno[b-e1uf9e3hb8] {
    padding: 3px 8px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    font-family: inherit;
    color: #333;
}

/* ── Gallery view ── */
.itb-gallery-wrap[b-e1uf9e3hb8] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
    gap: 14px;
    padding: 16px;
}

.itb-card[b-e1uf9e3hb8] {
    width: 220px;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
    background: #ececec;
    overflow: hidden;
    transition: box-shadow .12s, border-color .12s;
}

    .itb-card:hover[b-e1uf9e3hb8] {
        border-color: #1ab99a;
        box-shadow: 0 2px 8px rgba(0,0,0,.08);
    }

.itb-card-hdr[b-e1uf9e3hb8] {
    padding: 6px 8px;
    background: #e2e2e2;
    border-bottom: 1px solid #d5d5d5;
}

.itb-card-name[b-e1uf9e3hb8] {
    font-size: 12px;
    color: #2f8fd1;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: block;
}

.itb-card-photo[b-e1uf9e3hb8] {
    position: relative;
    height: 150px;
    background: #f8f8f9;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

    .itb-card-photo img[b-e1uf9e3hb8] {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

.itb-card-noimg[b-e1uf9e3hb8] {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #d9d3b8;
    font-size: 15px;
    font-weight: 700;
    text-transform: uppercase;
    line-height: 1.3;
}

.itb-card-code[b-e1uf9e3hb8] {
    position: absolute;
    right: 6px;
    bottom: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    padding: 3px 8px;
    border-radius: 3px;
}

.itb-card-boxes[b-e1uf9e3hb8] {
    display: flex;
    gap: 4px;
    padding: 6px 8px;
    background: #ececec;
}

.itb-box[b-e1uf9e3hb8] {
    flex: 1;
    text-align: center;
    padding: 3px 4px;
    border: 1px solid #1ab99a;
    border-radius: 3px;
    background: #fff;
    color: #1a2537;
    font-size: 11px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.itb-box-wide[b-e1uf9e3hb8] {
    flex: 2;
}

/* ── Mobile ── */
@media (max-width: 767px) {
    .itb-card[b-e1uf9e3hb8] {
        width: 140px;
    }

    .itb-card-photo[b-e1uf9e3hb8] {
        height: 100px;
    }

    .itb-page .mu-card[b-e1uf9e3hb8] {
        margin: 0 10px;
    }
}

.gcp-trigger[b-e1uf9e3hb8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-e1uf9e3hb8] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-e1uf9e3hb8] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
.itb-grid-table thead tr:first-child th[b-e1uf9e3hb8] {
    position: sticky;
    top: 0;
    z-index: 20;
}

.itb-grid-table thead tr:nth-child(2) th[b-e1uf9e3hb8] {
    position: sticky;
    top: 32px; /* Same as the height above */
    z-index: 19;
}

.itb-grid-table thead[b-e1uf9e3hb8],
.itb-grid-table thead tr[b-e1uf9e3hb8],
.itb-grid-table thead th[b-e1uf9e3hb8] {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}
/* Sticky footer */
.itb-grid-table tfoot td[b-e1uf9e3hb8] {
    position: sticky;
    bottom: 0;
    z-index: 15;
    background: #E1EAF1; /* or your footer background */
    height: 40px;
    min-height: 30px;
    max-height: 30px;
    padding: 4px 8px;
    box-sizing: border-box;
    /*background: #f2f2f2;*/
    font-weight: 700; 
}
.itb-code[b-e1uf9e3hb8] {
    max-width: 80px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: max-width 0.15s;
}

.itb-code-wide[b-e1uf9e3hb8] {
    max-width: 200px;
    white-space: normal;
}


/* Item Name header (2nd row spans it; target the 3rd th in row 1) */
.itb-grid-table thead tr:first-child th:nth-child(3)[b-e1uf9e3hb8] {
    /* width: 22%;*/
    min-width: 200px;
}

.itb-grid-table td.num[b-e1uf9e3hb8],
.itb-grid-table tfoot td.num[b-e1uf9e3hb8] {
    white-space: nowrap;
}

@media (max-width: 900px) {
    .itb-toolbar[b-e1uf9e3hb8] {
        flex-direction: column;
        align-items: stretch;
    }

    .itb-toolbar-right[b-e1uf9e3hb8] {
        display: flex;
        align-items: center;
    }

    .itb-search[b-e1uf9e3hb8] {
        flex: 1;
    }

    .bspl-footer[b-e1uf9e3hb8] {
        flex-wrap: wrap;
        gap: 8px;
    }
    /* drawer full-width so filters stay usable on phones */
    .mu-drawer[b-e1uf9e3hb8] {
        width: 100%;
        max-width: 360px;
    }
}
.itb-grid-table thead[b-e1uf9e3hb8],
.itb-grid-table thead tr[b-e1uf9e3hb8],
.itb-grid-table thead th[b-e1uf9e3hb8] {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}
    /* ── Boxed header grid, matching the body's #eef0f2 lines ── */

    /* Row 1: box each group cell (OB / IN / OUT / CB) on all sides */
    .itb-grid-table thead tr:first-child th.itb-grp-hdr[b-e1uf9e3hb8] {
        border: 1px solid #eef0f2 !important;
    }

    /* Row 2: vertical dividers only at the group boundaries
   (Qty of each group starts a new group → left border) */
    .itb-grid-table thead tr:nth-child(2) th:nth-child(3n+1)[b-e1uf9e3hb8] {
        border-left: 1px solid #eef0f2 !important;
    }

    /* Close the right edge of the last group in row 2 */
    .itb-grid-table thead tr:nth-child(2) th:last-child[b-e1uf9e3hb8] {
        border-right: 1px solid #eef0f2 !important;
    }

    /* Bottom line under the whole header, separating it from the body */
    .itb-grid-table thead tr:nth-child(2) th[b-e1uf9e3hb8] {
        border-bottom: 1px solid #eef0f2 !important;
    }
/* /Components/Pages/Transactions/Inventory/OrderGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — OrderGrid.razor.css   (Transactions → Order grid, page-scoped)
   Mirrors ChallanGrid.razor.css's design language. Shared "mu-"/"bspl-"
   chrome lives in wwwroot/CSS/masters-forms.css; .t-page on the root
   wrapper already gives this table the transaction blue (#306B9C) header.
   Only Order-grid-specific rules live here. Blazor CSS isolation means
   the "db-*" rules that originate in Daybook.razor.css can't reach this
   page either, so — same as ChallanGrid — they're redeclared verbatim.
   ===================================================================== */

/* Same footer-pinning pattern used on BSPL / Daybook / Challan / Masters pages. */
.og-page[b-9nauk2vmio] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .og-page .mu-card[b-9nauk2vmio] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .og-page .mu-table-wrap[b-9nauk2vmio] {
        flex: 1;
        overflow: auto;
        min-height: 0;
    }

/* ── Combined top bar: Details/Summary tabs on the left, PUR/SLS toggle
   on the right — same bar, split with space-between so it reads as one
   toolbar instead of two stacked strips. ── */
.db-tabbar.og-tabbar[b-9nauk2vmio] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-right: 12px;
}

.og-tabbar-left[b-9nauk2vmio],
.og-tabbar-right[b-9nauk2vmio] {
    display: flex;
    gap: 4px;
}

/* ── PUR / SLS toggle — same button language as db-tab, colored like the
   transaction-page blue accent instead of the green summary-tab accent
   so it reads as a distinct control group. ── */
.og-type-btn[b-9nauk2vmio] {
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    padding: 5px 18px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.3px;
    transition: all .12s;
}

    .og-type-btn:hover[b-9nauk2vmio] {
        background: #f5f5f5;
    }

    .og-type-btn.active[b-9nauk2vmio] {
        background: #306B9C;
        color: #fff;
        border-color: #306B9C;
    }

/* ── Table density/striping — copied verbatim from Daybook's/Challan's
   .db-table so this grid matches row height/spacing exactly. ── */
.db-table[b-9nauk2vmio] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .db-table th[b-9nauk2vmio] {
        text-align: left;
        padding: 8px 10px;
        border-bottom: 1px solid #ddd;
        position: sticky;
        top: 0;
        z-index: 3;
    }

    .db-table td[b-9nauk2vmio] {
        padding: 6px 10px;
        border-bottom: 1px solid #f2f2f2;
    }

    .db-table tfoot td[b-9nauk2vmio] {
        position: sticky;
        bottom: 0;
        z-index: 3;
        background: #e8e8e8;
    }

.db-row-even[b-9nauk2vmio] {
    background: #ffffff;
}

.db-row-odd[b-9nauk2vmio] {
    background: #f5fafa;
}

.db-table tbody tr:hover[b-9nauk2vmio] {
    background: #e8f5f0;
}

/* ── Sortable header — Tabler-icon arrows, same as Challan's mu-th-sort. ── */
.mu-th-sort[b-9nauk2vmio] {
    cursor: pointer;
    white-space: nowrap;
}

    .mu-th-sort i[b-9nauk2vmio] {
        margin-left: 4px;
        font-size: 12px;
        opacity: .6;
    }

/* ── Checkbox select column — matches Daybook's/Challan's .chk column ── */
.chk[b-9nauk2vmio] {
    width: 32px;
    text-align: center;
}

/* .mu-idx is already styled by masters-forms.css (blue, semi-bold) — not
   redeclared here, same as Challan. */

/* ── Top view tabs (Details / Summary) — copied verbatim from Daybook's/
   Challan's .db-tabbar/.db-tab. ── */
.db-tabbar[b-9nauk2vmio] {
    display: flex;
    gap: 4px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    padding: 8px 0 6px 12px;
    flex-shrink: 0;
}

.db-tab[b-9nauk2vmio] {
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    padding: 5px 16px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    transition: all .12s;
}

    .db-tab:hover[b-9nauk2vmio] {
        background: #f5f5f5;
    }

    .db-tab.active[b-9nauk2vmio] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* ── Summary sub-tabs (Macro / Ledger / Item / Month) — copied verbatim
   from Daybook's/Challan's .db-summary-tabbar/.db-summary-tab. ── */
.db-summary-tabbar[b-9nauk2vmio] {
    display: flex;
    gap: 8px;
    padding: 10px 0 10px 12px;
    border-bottom: 1px solid #eee;
    flex-shrink: 0;
}

.db-summary-tab[b-9nauk2vmio] {
    background: #fff;
    border: 1px solid #ddd;
    color: #555;
    padding: 5px 16px;
    border-radius: 3px;
    cursor: pointer;
    font-size: 12px;
}

    .db-summary-tab.active[b-9nauk2vmio] {
        background: #16a085;
        color: #fff;
        border-color: #16a085;
    }

/* ── Qty / Amount metric toggle on the Month summary tab ── */
.og-metric-toggle[b-9nauk2vmio] {
    display: flex;
    gap: 6px;
    padding: 8px 0 8px 12px;
}

.og-metric-btn[b-9nauk2vmio] {
    background: #fff;
    border: 1px solid #ddd;
    color: #555;
    padding: 5px 14px;
    border-radius: 3px;
    cursor: pointer;
    font-size: 12px;
}

    .og-metric-btn.active[b-9nauk2vmio] {
        background: #16a085;
        color: #fff;
        border-color: #16a085;
    }

/* ── Summary tables — table-layout:fixed so columns respect <colgroup>
   widths, same reasoning as Challan's ch-summary-* tables: sticky <th>
   doesn't reliably stay in sync with nth-child percentage widths, so
   colgroup decouples sizing from the header cell's own rendering. ── */
.og-summary-macro[b-9nauk2vmio], .og-summary-ledger[b-9nauk2vmio], .og-summary-item[b-9nauk2vmio] {
    table-layout: fixed;
}

    .og-summary-macro th[b-9nauk2vmio], .og-summary-macro td[b-9nauk2vmio],
    .og-summary-ledger th[b-9nauk2vmio], .og-summary-ledger td[b-9nauk2vmio],
    .og-summary-item th[b-9nauk2vmio], .og-summary-item td[b-9nauk2vmio] {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

/* Month-wise summary has a dynamic number of month columns, so it keeps
   auto table-layout instead of a fixed <colgroup>. */
.og-summary-month th[b-9nauk2vmio], .og-summary-month td[b-9nauk2vmio] {
    white-space: nowrap;
}

/* ── Drill-down link cells (Ledger name / Item name in summary tables) ── */
.og-drill[b-9nauk2vmio] {
    cursor: pointer;
}

    .og-drill:hover[b-9nauk2vmio] {
        text-decoration: underline;
    }

/* ── Numeric columns (Amount / Qty / #Items / summary totals) —
   right-aligned, tabular figures. The .db-table-th override is needed
   because ".db-table th" (two classes) otherwise beats plain ".og-num"
   (one class) on specificity, silently left-aligning header cells. ── */
.og-num[b-9nauk2vmio] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.db-table th.og-num[b-9nauk2vmio] {
    text-align: right;
}

/* ── Type badge (PO/SO/JWI/JWO, colored via GetTypeColor) ── */
.og-type-badge[b-9nauk2vmio] {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

/* ── Small colored square before OrderID, matching Daybook's/Challan's
   VNum swatch (colored by the same OType→color map used across Orders) ── */
.og-vnum-dot[b-9nauk2vmio] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 2px;
    margin-right: 7px;
    vertical-align: middle;
}

.og-vnum-link[b-9nauk2vmio] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0 4px 0 0;
    vertical-align: middle;
}

/* ── Party column's own dot (Details grid) — not order-type-colored like
   the OrderID one, just a fixed transaction-blue "this is clickable"
   marker; click filters the grid down to that one party (DrillDownParty,
   same method the Ledger summary table's drill-down already uses). ── */
.og-party-dot[b-9nauk2vmio] {
    background: #306B9C;
    cursor: pointer;
}

.og-party[b-9nauk2vmio] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.og-item-name[b-9nauk2vmio] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.og-quote-badge[b-9nauk2vmio] {
    background: #e67e22;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 10px;
    letter-spacing: .3px;
    margin-left: 6px;
}

/* ── Grand total row — sticky to the bottom of the scroll area, same
   pattern used on BSPL/Daybook/Challan total rows. ── */
.og-total-row[b-9nauk2vmio] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #eef4fb;
    font-weight: 700;
    color: #1a2537;
}

    .og-total-row td[b-9nauk2vmio] {
        border-top: 2px solid #306B9C;
    }

/* ── "C" clear-dates button next to To Date — resets just the date range
   back to the FY default, without touching the rest of the filter form
   (that's what the drawer's "Clear Filter" button does). ── */
.og-date-clear-btn[b-9nauk2vmio] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    background: #fff;
    color: #555;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
}

    .og-date-clear-btn:hover[b-9nauk2vmio] {
        background: #f5f5f5;
        border-color: #1ab394;
        color: #1ab394;
    }

.og-inline-error[b-9nauk2vmio] {
    color: #b91c1c;
    font-size: 12.5px;
}

/* ── Footer pagination — Daybook's/Challan's numbered .db-pagination/
   .db-page-btn. ── */
.db-pagination[b-9nauk2vmio] {
    display: flex;
    justify-content: flex-end;
    gap: 4px;
    padding: 0;
}

.db-page-btn[b-9nauk2vmio] {
    background: #fff;
    border: 1px solid #ddd;
    padding: 3px 8px;
    cursor: pointer;
    font-size: 12px;
    border-radius: 3px;
}

    .db-page-btn.active[b-9nauk2vmio] {
        background: #16a085;
        color: #fff;
        border-color: #16a085;
    }

    .db-page-btn:disabled[b-9nauk2vmio] {
        opacity: .4;
        cursor: default;
    }

.bspl-footer-count[b-9nauk2vmio] {
    font-size: 12px;
    color: #666;
    margin-left: 4px;
}

@media (max-width: 767px) {
    .og-tabbar-right[b-9nauk2vmio] {
        gap: 4px;
    }

    .og-party[b-9nauk2vmio] {
        max-width: 140px;
    }
}
/* /Components/Pages/Transactions/Inventory/QItem.razor.rz.scp.css */
/* =====================================================================
   GAINS — QLedger.razor.css   (Transactions → Query Ledger, page-scoped)
   ONLY QL-specific additions. Base look (mu- grid system, uf- modal/
   inputs) comes from the global CSS/masters-forms.css.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning + sticky header/footer — see the CONSOLIDATED
   block at the very end of this file. Everything related to .mu-page /
   .ql-body / .mu-card / .mu-table-wrap sizing was previously scattered
   across several places in this file (with genuinely conflicting
   duplicate declarations for .ql-body and .mu-table-wrap found along the
   way) — it's now defined exactly once, at the end, so cascade order
   can't silently override it again.
   ===================================================================== */

/* mu-pager sits inside .bspl-footer-right now — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography. */
.bspl-footer-right[b-grsw0ihapw] {
    font-size: inherit;
    color: inherit;
}

.bspl-title-left h1[b-grsw0ihapw] {
    font-weight: 100;
    color: #1ab99a;
}

/* ── Page header: ledger name in teal, thin weight ── */
/*.ql-title {
    font-family: "Segoe UI Light", "Segoe UI", sans-serif;
    font-weight: 100 !important;
    color: #1ab99a;
    margin: 0;
}*/

/* Teal action button (FILTERS / GO / Search) — QL accent over mu-btn */
.ql-go[b-grsw0ihapw] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .ql-go:hover[b-grsw0ihapw] {
        background: #159a80;
    }

.ql-back[b-grsw0ihapw] {
    padding: 6px 10px;
    font-size: 12px;
}

/* ── Section buttons (Accounts / Summary Opp Ledger / Summary VType) ── */
.ql-sections[b-grsw0ihapw] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 0px 10px;
}

.ql-section[b-grsw0ihapw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-section i[b-grsw0ihapw] {
        font-size: 15px;
    }

.ql-dollar[b-grsw0ihapw] {
    font-weight: 600;
    font-size: 13px;
}

.ql-section:hover[b-grsw0ihapw] {
    background: #f1f5f9;
    color: #1a2537;
}

.ql-section.active[b-grsw0ihapw] {
    background: #1ab99a;
    border-color: #1ab99a;
    color: #fff;
}

/* ── Layout: main card + balance panel ── */
.ql-body[b-grsw0ihapw] {
    display: flex;
    gap: 16px;
    align-items: stretch; /* card fills height — inner grid scrolls, page never does */
    overflow: hidden; /* containment: children scroll, not the page */
}

    .ql-body .mu-card[b-grsw0ihapw] {
        flex: 1 1 auto;
        min-width: 0;
    }

/* grid header = sidebar navy theme */
/* ── Grouping tabs (Trans / Day / Month / Quarter) ── */
.ql-tabs[b-grsw0ihapw] {
    display: flex;
    gap: 6px;
}

.ql-tab[b-grsw0ihapw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 9px 14px;
    border-radius: 8px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-tab:hover[b-grsw0ihapw] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .ql-tab.active[b-grsw0ihapw] {
        background: #eafaf6;
        color: #1ab99a;
        border-color: #1ab99a;
    }

/* ── TRANS sub-tabs ── */
.ql-subtabs[b-grsw0ihapw] {
    display: flex;
    gap: 6px;
    padding: 10px 16px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

.ql-subtab[b-grsw0ihapw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 8px 12px;
    border-radius: 7px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    color: #64748b;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-subtab:hover:not(:disabled)[b-grsw0ihapw] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .ql-subtab.active[b-grsw0ihapw] {
        color: #1ab99a;
        border-color: #1ab99a;
        background: #fff;
        font-weight: 600;
    }

    .ql-subtab:disabled[b-grsw0ihapw] {
        color: #cbd5e1;
        cursor: not-allowed;
        background: #f7f9fc;
    }

/* ── QL table cell extras (on top of mu-table) ── */

.ql-summary-table thead tr:first-child th.num[b-grsw0ihapw] {
    text-align: center !important;
}

.mu-table thead th.num[b-grsw0ihapw] {
    text-align: right;
}

.mu-table td.num[b-grsw0ihapw] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-table td.cr[b-grsw0ihapw] {
    color: #800000;
}
/* Cr amounts in maroon */
.ql-drcr[b-grsw0ihapw] {
    width: 52px;
    font-size: 12px;
}

.mu-table thead th.ql-drcr[b-grsw0ihapw] {
    color: #fff;
}

.mu-table tbody td.ql-drcr[b-grsw0ihapw] {
    color: #64748b;
}

.ql-nowrap[b-grsw0ihapw] {
    white-space: nowrap;
}

.ql-narr[b-grsw0ihapw], .ql-ledger[b-grsw0ihapw] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ql-th-vnum[b-grsw0ihapw] {
    padding-left: 40px;
}

/* Totals footer */
.mu-table tfoot td[b-grsw0ihapw] {
    padding: 11px 14px;
    font-weight: 700;
    color: #1a2537;
    border-top: 2px solid #dde3ed;
    background: #fbfcfe;
    position: sticky;
    bottom: 0;
}

    .mu-table tfoot td.num[b-grsw0ihapw] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .mu-table tfoot td.cr[b-grsw0ihapw] {
        color: #800000;
    }

/* VNum cell: paperclip + voucher square + link */
.ql-vnum-cell[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ql-clip[b-grsw0ihapw] {
    color: #64748b;
    font-size: 14px;
}

.ql-vsquare[b-grsw0ihapw] {
    display: inline-block;
    width: 10px;
    height: 10px;
    background: #1ab99a;
    border-radius: 2px;
    flex: 0 0 10px;
    cursor: pointer;
}

    .ql-vsquare:hover[b-grsw0ihapw] {
        opacity: 0.7;
    }

.ql-vnum[b-grsw0ihapw] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .ql-vnum:hover[b-grsw0ihapw] {
        text-decoration: underline;
    }

/* VType colored per row (inline color from API vColor) */
.ql-vtype[b-grsw0ihapw] {
    font-weight: 500;
    font-size: 13px;
}

/* Period link (Month/Day/Quarter drill-down) */
.ql-period-link[b-grsw0ihapw] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    font-weight: 500;
}

    .ql-period-link:hover[b-grsw0ihapw] {
        text-decoration: underline;
    }

/* Empty / error states */
.ql-empty-state[b-grsw0ihapw] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .ql-empty-state p[b-grsw0ihapw] {
        margin: 4px 0;
    }

    .ql-empty-state strong[b-grsw0ihapw] {
        color: #1a2537;
    }

.ql-error[b-grsw0ihapw] {
    color: #dc2626;
}

/* ── Balance panel ── */
.ql-balance[b-grsw0ihapw] {
    flex: 0 0 300px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    overflow: hidden;
}

.ql-bal-hdr[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    font-size: 14px;
    font-weight: 700;
    color: #1a2537;
    border-bottom: 1px solid #eef2f7;
}

.ql-bal-toggle[b-grsw0ihapw] {
    background: none;
    border: none;
    cursor: pointer;
    color: #94a3b8;
    display: inline-flex;
    padding: 2px;
}

    .ql-bal-toggle svg[b-grsw0ihapw] {
        width: 16px;
        height: 16px;
        transition: transform 0.15s;
    }

    .ql-bal-toggle:hover[b-grsw0ihapw] {
        color: #1a2537;
    }

.ql-bal-table[b-grsw0ihapw] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .ql-bal-table th[b-grsw0ihapw] {
        text-align: left;
        font-weight: 700;
        font-size: 12px;
        color: #1a2537;
        text-transform: uppercase;
        letter-spacing: 0.03em;
        padding: 10px 14px;
        border-bottom: 1px solid #eef2f7;
        background: #fbfcfe;
    }

        .ql-bal-table th.num[b-grsw0ihapw], .ql-bal-table td.num[b-grsw0ihapw] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

    .ql-bal-table td[b-grsw0ihapw] {
        padding: 10px 14px;
        color: #1a2537;
        border-bottom: 1px solid #eef2f7;
    }

        .ql-bal-table td.cr[b-grsw0ihapw] {
            color: #800000;
        }

.ql-bal-closing td[b-grsw0ihapw] {
    font-weight: 700;
}

/* ── Filter drawer — outer chrome (overlay/panel/header/body/footer) now
   uses the shared masters-forms.css classes (.mu-drawer-overlay,
   .mu-drawer, .mu-drawer-hdr, .mu-drawer-x, .mu-drawer-body,
   .mu-drawer-foot), same as BSPL/TB/MLedger. Only the field-level
   classes below (still nested inside .mu-drawer-body) remain page-local. ── */
.ql-drawer-section[b-grsw0ihapw] {
    margin-top: 6px;
    padding: 8px 12px;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ql-field[b-grsw0ihapw] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

.ql-led-row[b-grsw0ihapw] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-grsw0ihapw] {
        flex: 1;
        min-width: 0;
    }

.ql-led-pick[b-grsw0ihapw] {
    cursor: pointer;
    background: #fff;
}

.ql-led-btn[b-grsw0ihapw] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-led-btn:hover[b-grsw0ihapw] {
        background: #0f3d82;
    }

.ql-check[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

    .ql-check input[b-grsw0ihapw] {
        accent-color: #1ab99a;
    }

    .ql-check:has(input:disabled)[b-grsw0ihapw] {
        color: #94a3b8;
    }

/* ── Ledger picker popup: QL additions over uf-modal ── */
.ql-lp-overlay[b-grsw0ihapw] {
    z-index: 1300;
}
/* above the filter drawer (1200) */
.ql-lp-modal[b-grsw0ihapw] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-grsw0ihapw] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .ql-modal-search .uf-input[b-grsw0ihapw] {
        flex: 1 1 auto;
        min-width: 0;
    }

.ql-lp-code[b-grsw0ihapw] {
    flex: 0 1 120px !important;
}

.ql-modal-body[b-grsw0ihapw] {
    flex: 1;
    overflow-y: auto;
}

.ql-lp-row[b-grsw0ihapw] {
    cursor: pointer;
}

.ql-lp-idx[b-grsw0ihapw] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-grsw0ihapw] {
    color: #1a56a7;
    font-weight: 600;
}

.ql-lp-name[b-grsw0ihapw] {
    color: #1a56a7;
    font-weight: 500;
}

/* ── Voucher documents modal: QL additions over uf-modal ── */
.ql-docs-overlay[b-grsw0ihapw] {
    z-index: 1300;
}

.ql-docs-modal[b-grsw0ihapw] {
    max-width: 700px;
    max-height: 80vh;
}

/* ── Others Links → Docs grid ── */
.ql-docs-table td[b-grsw0ihapw] {
    vertical-align: middle;
}

.ql-doc-filechip[b-grsw0ihapw] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #f8fafc;
    color: #1a56a7;
    font-size: 13px;
    cursor: pointer;
}

    .ql-doc-filechip:hover[b-grsw0ihapw] {
        text-decoration: underline;
        background: #eef2f7;
    }

    .ql-doc-filechip i[b-grsw0ihapw] {
        font-size: 12px;
        color: #64748b;
    }

/* ── Others Links dropdown: DOCS/SCANS, MASTER, GRAPH, COF ── */
.ql-ol-item[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    text-align: left;
}

    .ql-ol-item i[b-grsw0ihapw] {
        width: 16px;
        text-align: center;
    }

.ql-ol-docs i[b-grsw0ihapw] {
    color: #b91c1c;
}

.ql-ol-master i[b-grsw0ihapw] {
    color: #92400e;
}

.ql-ol-graph i[b-grsw0ihapw] {
    color: #0d9488;
}

.ql-ol-cof[b-grsw0ihapw] {
    padding-left: 24px; /* aligns with the icon-less COF label under the iconed items above */
}

.ql-cof-status[b-grsw0ihapw] {
    padding: 8px 20px;
    font-size: 13px;
    color: #475569;
    background: #f8fafc;
    border-bottom: 1px solid #eef2f7;
}

    .ql-cof-status.ql-error[b-grsw0ihapw] {
        color: #b91c1c;
        background: #fef2f2;
    }

/* ── Image lightbox (Others Links → Docs) ── */
.ql-lightbox-overlay[b-grsw0ihapw] {
    z-index: 1400;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ql-lightbox-panel[b-grsw0ihapw] {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    background: #000;
    border-radius: 8px;
    padding: 16px;
}

.ql-lightbox-img[b-grsw0ihapw] {
    display: block;
    margin: 0 auto;
    max-width: 86vw;
    max-height: 80vh;
    object-fit: contain;
}

.ql-lightbox-caption[b-grsw0ihapw] {
    margin-top: 8px;
    color: #fff;
    font-size: 13px;
    text-align: center;
}

.ql-lightbox-close[b-grsw0ihapw] {
    position: absolute;
    top: 8px;
    right: 8px;
    color: #fff;
}

/* ── Responsive ── */
@media (max-width: 980px) {
    .ql-body[b-grsw0ihapw] {
        flex-direction: column;
    }

    /* Stacked layout: the grid card should fill nearly the whole screen —
       only a compact Balance strip sits below it, not an even split. */
    .ql-body .mu-card[b-grsw0ihapw] {
        flex: 1 1 auto;
        min-height: 75vh;
    }

    /* Balance panel becomes a compact strip under the grid — sized to its
       content with a capped height (scrolls internally if needed) instead
       of stretching to match the card. */
    .ql-balance[b-grsw0ihapw] {
        flex: 0 0 auto;
        width: 100%;
        max-height: 160px;
        overflow-y: auto;
    }
}


/* ── T Format / Compare split ── */
/* ── T Format / Compare split ── */
.ql-tformat[b-grsw0ihapw] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px;
}

/* base halves — T format height */
.ql-thalf[b-grsw0ihapw] {
    flex: 1 1 50%;
    min-width: 0;
    overflow: auto;
    max-height: 48vh;
}

/* compare shorter */
.ql-compare .ql-thalf[b-grsw0ihapw] {
    max-height: 68vh;
}

/* Outer grid wrapper must not double-scroll around the halves */
.mu-table-wrap:has(.ql-tformat)[b-grsw0ihapw] {
    max-height: none;
    overflow: visible;
}

.ql-tf-bar[b-grsw0ihapw] {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 9px 14px;
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

    .ql-tf-bar.in[b-grsw0ihapw] {
        background: #3b5998;
    }
    /* blue IN bar */
    .ql-tf-bar.out[b-grsw0ihapw] {
        background: #6b1010;
    }

/* maroon OUT bar */
.ql-thalf-title[b-grsw0ihapw] {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 9px 14px;
    font-size: 12.5px;
    font-weight: 700;
    color: #1a2537;
    background: #fbfcfe;
    border-bottom: 1px solid #eef2f7;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

    .ql-thalf-title.cr[b-grsw0ihapw] {
        color: #800000;
    }
/* Compare/T-format halves use light headers like the old form.
   Column headers stick just below the IN/OUT bar (bar ≈ 37px). */
.ql-thalf .mu-table thead th[b-grsw0ihapw] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fff;
    color: #1a2537;
    border-bottom: 2px solid #eef2f7;
}

.ql-thalf .ql-tf-bar + table thead th[b-grsw0ihapw],
.ql-thalf .ql-thalf-title + table thead th[b-grsw0ihapw] {
    top: 37px;
}

.ql-thalf .mu-table thead th.ql-cmp-cr[b-grsw0ihapw], .ql-thalf .mu-table thead th.num.ql-cmp-cr[b-grsw0ihapw] {
    color: #800000;
}

/* Per-half pager under each T-format table */
.ql-tf-pager[b-grsw0ihapw] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 8px;
    background: #fbfcfe;
    border-top: 1px solid #eef2f7;
    min-height: 49px;
    box-sizing: border-box;
}
/* When a half is paged, its Total row sticks just above the pager */
.ql-thalf .ql-has-pager tfoot td[b-grsw0ihapw] {
    bottom: 49px;
}

/* ── Page footer: group path + export icons ── */
.ql-pgfoot[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    font-size: 12.5px;
    color: #1a56a7;
    flex-wrap: wrap;
}

.ql-pgfoot-path[b-grsw0ihapw] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Footer export/print icons now use the shared .bspl-foot-btn classes
   (matching BSPL exactly) instead of these page-local ones. */

/* =====================================================================
   RESPONSIVE PATCH — phones & small tablets
   ===================================================================== */

/* Ensure wide tables scroll inside card, never the page */
.mu-table-wrap[b-grsw0ihapw] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Tablet & below (<= 980px) — existing block already stacks .ql-body */
@media (max-width: 980px) {
    /* Stack T-format / Compare halves */
    .ql-tformat[b-grsw0ihapw] {
        flex-direction: column;
    }

    .ql-thalf[b-grsw0ihapw],
    .ql-compare .ql-thalf[b-grsw0ihapw] {
        flex: 1 1 auto;
        width: 100%;
        max-height: none; /* let page scroll naturally when stacked */
    }
}

/* Phones (<= 640px) */
@media (max-width: 640px) {
    /* Tabs: allow wrap, bigger touch */
    .ql-tabs[b-grsw0ihapw] {
        flex-wrap: wrap;
    }

    .ql-tab[b-grsw0ihapw],
    .ql-subtab[b-grsw0ihapw],
    .ql-section[b-grsw0ihapw] {
        min-height: 44px;
        padding: 10px 14px;
    }

    .ql-subtabs[b-grsw0ihapw] {
        flex-wrap: wrap;
    }

    /* Stock/Month/Day/Ledger-wise grids: table-layout:fixed percentage
       columns look fine on desktop but crush every number into an
       unreadable sliver on a phone-width screen. Give each table a
       sensible min-width instead, so .mu-table-wrap scrolls horizontally
       (finger-scrollable) rather than distorting the columns.
       Widened further than the first pass — at 860px, a 6%-wide Qty/Weight
       column (~52px) minus its 20px of left+right padding left only ~32px
       for text, just barely too tight for a parenthesized 3-digit value
       like "(108)", so it visibly overflowed past the column into the
       next cell's separator line. More width + tighter padding (below)
       fixes that. */
    .ql-stock-table[b-grsw0ihapw] {
        min-width: 1000px;
    }

    .ql-monthly-table[b-grsw0ihapw] {
        min-width: 980px;
    }

    .ql-ledgersum-table[b-grsw0ihapw] {
        min-width: 700px;
    }

    /* Balance toggle & pager arrows: finger-size */
    .ql-bal-toggle[b-grsw0ihapw] {
        min-width: 44px;
        min-height: 44px;
        justify-content: center;
        align-items: center;
    }

    .ql-tf-pager .mu-nav[b-grsw0ihapw] {
        min-width: 44px;
        min-height: 44px;
    }

    /* Ledger picker: full-width modal, search stacks */
    .ql-lp-modal[b-grsw0ihapw] {
        max-width: calc(100vw - 16px);
        max-height: 90vh;
    }

    .ql-modal-search[b-grsw0ihapw] {
        flex-wrap: wrap;
    }

        .ql-modal-search .uf-input[b-grsw0ihapw] {
            flex: 1 1 100%;
        }

    .ql-lp-code[b-grsw0ihapw] {
        flex: 1 1 100% !important;
    }

    /* Balance panel header title smaller page title */
    .ql-title[b-grsw0ihapw] {
        font-size: 20px;
    }

    /* Footer path truncates instead of pushing icons */
    .ql-pgfoot[b-grsw0ihapw] {
        gap: 8px;
    }

    .ql-pgfoot-path[b-grsw0ihapw] {
        flex: 1 1 100%;
    }
}

/* Ellipsis actually work on truncating cells */
.ql-narr[b-grsw0ihapw],
.ql-ledger[b-grsw0ihapw] {
    white-space: nowrap;
}

/* Added by Gaurav for padding fix*/
.gains-layout[b-grsw0ihapw] { /* wrapper holding sidebar + page */
    display: flex;
}

.gains-sidebar[b-grsw0ihapw] {
    flex: 0 0 auto; /* own width */
}

.gains-content[b-grsw0ihapw] { /* where @Body renders */
    flex: 1 1 auto;
    min-width: 0; /* IMPORTANT — lets tables shrink instead of overflow */
}

/* ── Print: clean grid-only output for the Print button ── */
@media print {
    .mu-hdr-actions[b-grsw0ihapw],
    .ql-sections[b-grsw0ihapw],
    .ql-subtabs[b-grsw0ihapw],
    .mu-toolbar[b-grsw0ihapw],
    .ql-drawer-overlay[b-grsw0ihapw],
    .uf-overlay[b-grsw0ihapw],
    .mu-foot[b-grsw0ihapw],
    .ql-tf-pager[b-grsw0ihapw],
    .bspl-foot-btn[b-grsw0ihapw],
    .ql-bal-toggle[b-grsw0ihapw] {
        display: none !important;
    }

    .ql-body[b-grsw0ihapw] {
        display: block;
    }

    .ql-balance[b-grsw0ihapw] {
        width: 100%;
        margin-top: 12px;
        page-break-inside: avoid;
    }

    .mu-table-wrap[b-grsw0ihapw], .ql-thalf[b-grsw0ihapw] {
        max-height: none !important;
        overflow: visible !important;
    }

    .mu-table thead th[b-grsw0ihapw] {
        position: static !important;
    }

    .mu-table tfoot td[b-grsw0ihapw], .ql-tf-bar[b-grsw0ihapw], .ql-thalf-title[b-grsw0ihapw] {
        position: static !important;
    }

    .mu-card[b-grsw0ihapw] {
        border: none;
        box-shadow: none;
    }
}


/* ── Fixed page footer (pager + export icons) ── */
.ql-footer-fixed[b-grsw0ihapw] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
}

/* Export/print icons use the shared .bspl-foot-btn classes (matching BSPL) —
   see common-page-chrome.css; nothing page-local needed here anymore. */

/* ── Others Links (section-bar dropdown) ── */
.ql-otherlinks[b-grsw0ihapw] {
    position: relative;
    display: inline-block;
}

.ql-otherlinks-btn[b-grsw0ihapw] {
    color: #1a56a7;
    border-color: #c3d4ec;
    text-transform: none;
}

.ql-otherlinks-menu[b-grsw0ihapw] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 200;
    min-width: 170px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.15);
    display: flex;
    flex-direction: column;
    padding: 6px;
}

    .ql-otherlinks-menu button[b-grsw0ihapw] {
        background: none;
        border: none;
        text-align: left;
        padding: 8px 10px;
        font-size: 12.5px;
        color: #1a2537;
        border-radius: 6px;
        font-family: inherit;
        cursor: pointer;
    }

        .ql-otherlinks-menu button:hover:not(:disabled)[b-grsw0ihapw] {
            background: #f1f5f9;
        }

        .ql-otherlinks-menu button:disabled[b-grsw0ihapw] {
            color: #94a3b8;
            cursor: not-allowed;
        }


/* =====================================================================
   CONSOLIDATED — page pinning + sticky header/footer (single source of
   truth; everything else in this file that touches .mu-page / .ql-body /
   .mu-card / .mu-table-wrap sizing was left alone above, but THIS block
   is last in the file, so it wins any cascade conflict without needing
   to hunt down every prior declaration).
   ===================================================================== */

/* .mu-page: full-height flex column. height:100% depends on every
   ancestor up to the viewport having a definite height; min-height:100vh
   is a hard floor that works regardless of whether that chain holds. */
.mu-page[b-grsw0ihapw] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

/* .ql-body: fills whatever's left after the title block + section/mode
   tabs. min-height:0 is required for a flex child to be allowed to
   shrink below its content size — without it, a tall table can force
   .ql-body past .mu-page's height instead of scrolling internally. */
.ql-body[b-grsw0ihapw] {
    flex: 1;
    min-height: 0;
}

    .ql-body .mu-card[b-grsw0ihapw] {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
        overflow: hidden;
    }

    /* .mu-table-wrap is the ONLY element that scrolls vertically. Header and
   footer stick to its top/bottom (below) instead of scrolling with it. */
    .ql-body .mu-table-wrap[b-grsw0ihapw] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

/* ql-balance sizes to its own content — never scrolls, never gets capped. */
/*.ql-balance {
    max-height: none;
    overflow: visible;
}*/

/* balance panel: content height only, don't stretch with the card */
.ql-balance[b-grsw0ihapw] {
    align-self: flex-start;
    max-height: 100%;
    overflow: auto;
}
/* Sticky header — was missing entirely, which is why a long table's
   column headers scrolled away with the rows instead of staying pinned
   at the top of .mu-table-wrap. Needs an opaque background since content
   scrolls underneath it. */
.mu-table thead th[b-grsw0ihapw] {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* Sticky totals row — pins to the bottom of .mu-table-wrap regardless of
   how many rows are above it, instead of drifting down the page as more
   rows are added. (Was already sticky, reinforced here with a guaranteed
   z-index + opaque background so scrolling rows can't visually bleed
   through or paint over it.) */
.mu-table tfoot td[b-grsw0ihapw] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #fbfcfe;
}

/* Footer is the last flex child of .mu-page → always at the true bottom */
.ql-footer-fixed[b-grsw0ihapw] {
    flex-shrink: 0;
}

/* T-format / Compare halves: fill the card instead of viewport-relative heights */
.mu-table-wrap:has(.ql-tformat)[b-grsw0ihapw] {
    overflow: hidden;
}

.ql-tformat[b-grsw0ihapw] {
    height: 100%;
    box-sizing: border-box;
}

    .ql-tformat .ql-thalf[b-grsw0ihapw] {
        max-height: 100%;
    }

.ql-lnk-parent td[b-grsw0ihapw] {
    font-weight: 600;
    background: #fbfcfe;
}

.ql-lnk-child td[b-grsw0ihapw] {
    color: #475569;
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as DocumentGrid.razor.css / BSPL.razor.css / ITB.razor.css.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-grsw0ihapw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-grsw0ihapw] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-grsw0ihapw] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Stock/Trans (api/QI/trial/detail) — numeric column alignment.
   Mirrors MItem.razor.css/MLedger.razor.css: shared "mu-" grid styles live
   in wwwroot/CSS/masters-forms.css, only this small page-specific rule
   (which every "mu-" grid page defines locally) is needed here. ── */
.mu-table thead th.mu-th-num[b-grsw0ihapw] {
    text-align: right;
}

.mu-table tbody td.mu-num[b-grsw0ihapw] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* ── Stock grid (Inward/Outward/Closing) — group + sub headers centered
   instead of right-aligned; body figures stay right-aligned (.num) as
   everywhere else in the app. Same specificity as the master-css .num
   header rule, so it must come after it in source order to win. ── */
.ql-stock-table thead th.num[b-grsw0ihapw],
.ql-monthly-table thead th.num[b-grsw0ihapw] {
    text-align: center;
}

/* ── Totals row pinned to the true bottom of the grid, always —
   not just while scrolled there.
   position:sticky (the master rule + the two-row top-offset rule this
   replaces) only stops an element from scrolling OUT of view; it can't
   pull the footer down to fill empty space when there are only a few
   rows and the table is shorter than .mu-table-wrap. Fix: make the grid
   itself a flex column — thead/tfoot become fixed-size flex items and
   ONLY tbody scrolls, so tfoot always sits flush at the bottom of the
   wrapper regardless of row count. Scoped to .ql-stock-table only so
   other "mu-" grids elsewhere keep the plain sticky behavior.
   Splitting thead/tbody/tfoot into independent table boxes means they no
   longer share one column-width computation, so widths are pinned
   explicitly below to keep the three sections lined up. ── */
/* overflow-y hidden (tbody handles its own vertical scroll internally,
   see below) but overflow-x stays scrollable — needed so the mobile rule
   further down (min-width on narrow screens) can actually produce a
   horizontal scrollbar instead of squashing every column unreadably. */
.mu-table-wrap:has(.ql-stock-table)[b-grsw0ihapw] {
    overflow-y: hidden;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ql-stock-table[b-grsw0ihapw] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ql-stock-table thead[b-grsw0ihapw],
    .ql-stock-table tfoot[b-grsw0ihapw] {
        display: table;
        width: 100%;
        table-layout: fixed;
        flex: 0 0 auto;
    }

    .ql-stock-table thead th[b-grsw0ihapw],
    .ql-stock-table tfoot td[b-grsw0ihapw] {
        position: static;
    }

    .ql-stock-table tbody[b-grsw0ihapw] {
        display: block;
        flex: 1 1 auto;
        overflow-y: auto;
    }

        .ql-stock-table tbody tr[b-grsw0ihapw] {
            display: table;
            width: 100%;
            table-layout: fixed;
        }

/* ── Month tab grid (api/QI/trial/monthly) — # · Date · OB/IN/OUT/CB groups,
   14 columns. No tfoot needed (the endpoint returns a plain array, no
   totals), so this stays a single plain <table> — no flex/scroll-split
   trick required here.
   Column widths come from the <colgroup>/<col> tags in the markup instead
   of per-cell CSS: with table-layout:fixed, a table only looks at its
   FIRST row to size columns, and our first header row uses colspan="3"
   for the OB/IN/OUT/CB group cells, so the second header row's per-column
   widths were being ignored (columns fell back to equal thirds instead of
   9%/6%/7%), which visibly misaligned the header from the body below it.
   <col> widths aren't subject to that "first row" rule, so they're the
   reliable fix, and they don't require restructuring the table itself. */
.ql-monthly-table[b-grsw0ihapw] {
    table-layout: fixed;
}

/* Shorter row height than the default .mu-table padding (10px 14px). */
.ql-monthly-table thead th[b-grsw0ihapw],
.ql-monthly-table tbody td[b-grsw0ihapw] {
    padding: 4px 10px;
}

/* Qty/Weight, Rate, Value — right-aligned (overrides the center-align
   these sub-headers inherit from the group-label row rule; data cells
   already right-align via the app-wide .mu-table td.num default). The
   OB/IN/OUT/CB group-label row stays centered. */
.ql-monthly-table thead tr:last-child th.num[b-grsw0ihapw] {
    text-align: right;
}

.ql-monthly-table thead tr:first-child th[b-grsw0ihapw] {
    top: 0;
    z-index: 2;
}

.ql-monthly-table thead tr:last-child th[b-grsw0ihapw] {
    top: 26px; /* matches row1's now-shorter height (4px 10px padding) */
    z-index: 1;
}

/* Vertical column separators — silver lines, only at group boundaries
   (after #, after Date, after each group's Value column) — not after the
   Qty/Weight or Rate columns inside a group. */
.ql-monthly-table thead tr:first-child th[b-grsw0ihapw] {
    border-right: 1px solid silver; /* every row1 cell IS a group (or #/Date), so its right edge is always a group boundary */
}

    .ql-monthly-table thead tr:first-child th:last-child[b-grsw0ihapw] {
        border-right: none;
    }

.ql-monthly-table thead tr:last-child th:nth-child(3)[b-grsw0ihapw],
.ql-monthly-table thead tr:last-child th:nth-child(6)[b-grsw0ihapw],
.ql-monthly-table thead tr:last-child th:nth-child(9)[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-monthly-table tbody td:nth-child(1)[b-grsw0ihapw],
.ql-monthly-table tbody td:nth-child(2)[b-grsw0ihapw],
.ql-monthly-table tbody td:nth-child(5)[b-grsw0ihapw],
.ql-monthly-table tbody td:nth-child(8)[b-grsw0ihapw],
.ql-monthly-table tbody td:nth-child(11)[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

/* ── Ledger wise tab grid (api/QI/trial/ledger-summary) — # · Party/Ledger ·
   IN/OUT groups, 8 columns. No tfoot (plain array, no totals). Same
   <colgroup>-driven width approach as .ql-monthly-table, for the same
   "table-layout:fixed only reads the first header row" reason. ── */
.ql-ledgersum-table[b-grsw0ihapw] {
    table-layout: fixed;
}

.ql-ledgersum-table thead th.num[b-grsw0ihapw] {
    text-align: center; /* IN / OUT group labels */
}

.ql-ledgersum-table thead tr:last-child th.num[b-grsw0ihapw] {
    text-align: right; /* Qty/Weight, Rate, Value sub-headers */
}

/* Party/Ledger names can be long — let them wrap instead of the app-wide
   nowrap default (.mu-table tbody td), matching the reference layout. */
.ql-ledgersum-table tbody td.ql-ledger-name[b-grsw0ihapw] {
    white-space: normal;
}

.ql-ledgersum-table thead th[b-grsw0ihapw],
.ql-ledgersum-table tbody td[b-grsw0ihapw] {
    padding: 4px 10px;
}

.ql-ledgersum-table thead tr:first-child th[b-grsw0ihapw] {
    top: 0;
    z-index: 2;
}

.ql-ledgersum-table thead tr:last-child th[b-grsw0ihapw] {
    top: 26px;
    z-index: 1;
}

/* Vertical column separators — silver lines, only at group boundaries. */
.ql-ledgersum-table thead tr:first-child th[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

    .ql-ledgersum-table thead tr:first-child th:last-child[b-grsw0ihapw] {
        border-right: none;
    }

.ql-ledgersum-table thead tr:last-child th:nth-child(3)[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-ledgersum-table tbody td:nth-child(1)[b-grsw0ihapw],
.ql-ledgersum-table tbody td:nth-child(2)[b-grsw0ihapw],
.ql-ledgersum-table tbody td:nth-child(5)[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

/* ── Summary 1/2/3 grid (api/qi/items/summary) — # · Party/Ledger · however
   many transaction-type groups (PUR/SLS/DRN/CRN/OTR, or any future one) the
   API actually returns, each with whatever sub-columns it sent (usually
   Qty/Rate/Amt). Column count is NOT fixed at compile time, so unlike
   .ql-monthly-table/.ql-ledgersum-table above this can't use nth-child for
   widths or separators — widths come from the <colgroup> emitted in the
   markup (computed from however many groups/sub-columns exist that render),
   and separators use an explicit "ql-grp-end" class applied to the last
   sub-column of every group instead. Same sticky 2-row header + compact
   padding as the other dynamic-ish grids on this page, so the visual style
   matches even though the column set can't be. ── */
.ql-summary-table[b-grsw0ihapw] {
    table-layout: fixed;
}

.ql-summary-table thead th.num[b-grsw0ihapw] {
    text-align: center; /* group label row */
}

.ql-summary-table thead tr:last-child th.num[b-grsw0ihapw] {
    text-align: right; /* Qty/Rate/Amt sub-headers */
}

.ql-summary-table tbody td.ql-ledger-name[b-grsw0ihapw] {
    white-space: normal;
}

.ql-summary-table thead th[b-grsw0ihapw],
.ql-summary-table tbody td[b-grsw0ihapw] {
    padding: 4px 10px;
}

.ql-summary-table thead tr:first-child th[b-grsw0ihapw] {
    top: 0;
    z-index: 2;
}

.ql-summary-table thead tr:last-child th[b-grsw0ihapw] {
    top: 26px;
    z-index: 1;
}

/* Silver separators: after # and Party/Ledger (fixed columns, so nth-child
   is safe here), and after the last sub-column of every group (the
   "ql-grp-end" class applied in the markup, since group boundaries are
   dynamic). :last-child strips the line at the true right edge either way. */
.ql-summary-table thead th:nth-child(1)[b-grsw0ihapw],
.ql-summary-table thead th:nth-child(2)[b-grsw0ihapw],
.ql-summary-table tbody td:nth-child(1)[b-grsw0ihapw],
.ql-summary-table tbody td:nth-child(2)[b-grsw0ihapw],
.ql-summary-table tfoot td:first-child[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-summary-table .ql-grp-end[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-summary-table thead th:last-child[b-grsw0ihapw],
.ql-summary-table tbody td:last-child[b-grsw0ihapw],
.ql-summary-table tfoot td:last-child[b-grsw0ihapw] {
    border-right: none;
}

/* Explicit column widths (12 visual columns: # · Date/Party · VNum/VType ·
   Inward Qty/Rate/Amt · Outward Qty/Rate/Amt · Closing Qty/Rate/Amt) kept
   identical across thead/tbody/tfoot — a single native <table> lines these
   up automatically; three independent table boxes don't. */
.ql-stock-table thead tr:first-child th:nth-child(1)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(1)[b-grsw0ihapw] {
    width: 3%;
}

.ql-stock-table thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(2)[b-grsw0ihapw] {
    width: 18%;
}

.ql-stock-table thead tr:first-child th:nth-child(3)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(3)[b-grsw0ihapw] {
    width: 10%;
}

.ql-stock-table thead tr:first-child th:nth-child(4)[b-grsw0ihapw] {
    width: 23%; /* Inward group = 8% + 7% + 8% */
}

.ql-stock-table thead tr:last-child th:nth-child(1)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(4)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table thead tr:last-child th:nth-child(2)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(5)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table thead tr:last-child th:nth-child(3)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(6)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table thead tr:first-child th:nth-child(5)[b-grsw0ihapw] {
    width: 23%; /* Outward group = 8% + 7% + 8% */
}

.ql-stock-table thead tr:last-child th:nth-child(4)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(7)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table thead tr:last-child th:nth-child(5)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(8)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table thead tr:last-child th:nth-child(6)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(9)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table thead tr:first-child th:nth-child(6)[b-grsw0ihapw] {
    width: 23%; /* Closing group = 8% + 7% + 8% */
}

.ql-stock-table thead tr:last-child th:nth-child(7)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(10)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table thead tr:last-child th:nth-child(8)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(11)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table thead tr:last-child th:nth-child(9)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(12)[b-grsw0ihapw] {
    width: 8%;
}

/* Totals row: 1st cell spans columns 1-3 (colspan="3" = 3%+18%+10% = 31%),
   the remaining 9 cells match columns 4-12 one-for-one. */
.ql-stock-table tfoot td:nth-child(1)[b-grsw0ihapw] {
    width: 31%;
}

.ql-stock-table tfoot td:nth-child(2)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table tfoot td:nth-child(3)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table tfoot td:nth-child(4)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table tfoot td:nth-child(5)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table tfoot td:nth-child(6)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table tfoot td:nth-child(7)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table tfoot td:nth-child(8)[b-grsw0ihapw] {
    width: 8%;
}

.ql-stock-table tfoot td:nth-child(9)[b-grsw0ihapw] {
    width: 7%;
}

.ql-stock-table tfoot td:nth-child(10)[b-grsw0ihapw] {
    width: 8%;
}

/* =====================================================================
   Mobile stacked layout — grid gets nearly the whole screen, Balance
   becomes a short strip underneath. Repeated here (last in the file) so
   it wins over the earlier CONSOLIDATED block's ".ql-body .mu-card
   { min-height: 0 }", which has the same selector specificity and would
   otherwise cancel the min-height set inside the @media (max-width:980px)
   block above, since it comes later in the file than that block.

   Previous attempt made the Balance panel disappear entirely: giving
   .mu-card a hard min-height:75vh while .ql-body still had its base
   overflow:hidden meant that once .mu-card + .ql-balance's combined
   height exceeded whatever box height .ql-body actually resolved to,
   the overflow (i.e. .ql-balance, since it comes second) was clipped
   away instead of becoming scrollable — invisible, not just short.
   Fix: .mu-card gets a FIXED height (flex: 0 0 75vh, not min-height, so
   it can't be stretched further by leftover flex-grow) and .ql-body
   itself becomes vertically scrollable, so if the two stacked panels
   together are taller than the screen, the rest is reached by
   scrolling instead of being cut off. ── */
@media (max-width: 980px) {
    .ql-body[b-grsw0ihapw] {
        overflow-y: auto;
        overflow-x: hidden;
    }

    .ql-body .mu-card[b-grsw0ihapw] {
        flex: 0 0 75vh;
        min-height: 0;
    }

    .ql-balance[b-grsw0ihapw] {
        flex: 0 0 auto;
        max-height: 160px;
        overflow-y: auto;
    }
}

/* Tighter cell padding on phones for the Month/Day/Ledger-wise grids, to
   reclaim horizontal room for the wider min-width above. Placed here
   (true end of file) rather than in the earlier @media(max-width:640px)
   block, because the non-media "Shorter row height" rule
   (.ql-monthly-table thead th, tbody td { padding: 4px 10px }) declared
   further up the file has equal selector specificity and — appearing
   later than that earlier media block — was silently winning and
   canceling a tighter padding value set there. */
/* ── Voucher report popup — opened from the green VNum dot in the Stock/Trans
   grid. Same fixed-overlay + centered-panel convention as .mu-drawer-overlay,
   just centered instead of a side drawer since VHtml renders a full report,
   not a short form. ── */
.ql-voucher-modal-overlay[b-grsw0ihapw] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 1000;
}

.ql-voucher-modal[b-grsw0ihapw] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #fff;
    width: 90vw;
    max-width: 1100px;
    max-height: 88vh;
    overflow: auto;
    border-radius: 6px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
    z-index: 1001;
}

.ql-voucher-modal-hdr[b-grsw0ihapw] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
    position: sticky;
    top: 0;
    background: #fff;
    font-weight: 600;
    color: #16a085;
}

.ql-voucher-modal-x[b-grsw0ihapw] {
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: #888;
}

.ql-voucher-modal-body[b-grsw0ihapw] {
    padding: 14px 16px;
}


.ql-bal-label[b-grsw0ihapw] {
    font-weight: 700;
}

.ql-summary-table tfoot[b-grsw0ihapw] {
    position: sticky;
    bottom: 0;
    z-index: 2;
}

    .ql-summary-table tfoot td[b-grsw0ihapw] {
        font-weight: 700;
    }

.ql-summary-table[b-grsw0ihapw] {
    border-collapse: separate;
    border-spacing: 0;
}

    /* Both header rows stay together */
    .ql-summary-table thead[b-grsw0ihapw] {
        position: sticky;
        top: 0;
        z-index: 10;
    }

        /* Header cells */
        .ql-summary-table thead th[b-grsw0ihapw] {
            position: static;
        }

@media (max-width: 640px) {
    .ql-monthly-table thead th[b-grsw0ihapw],
    .ql-monthly-table tbody td[b-grsw0ihapw],
    .ql-ledgersum-table thead th[b-grsw0ihapw],
    .ql-ledgersum-table tbody td[b-grsw0ihapw] {
        padding: 4px 6px;
    }
}
/* /Components/Pages/Transactions/QG.razor.rz.scp.css */
/* =====================================================================
   GAINS — QG.razor.css   (Transactions → Query Group, page-scoped)
   Same UI template as QLedger.razor.css. ONLY QG-specific additions.
   Base look (mu- grid system, uf- modal/inputs) comes from the global
   CSS/masters-forms.css.
   ===================================================================== */

/* mu-pager sits inside .bspl-footer-right — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography,
   same override as QLedger.razor.css. */
.bspl-footer-right[b-bgzookcsj0] {
    font-size: inherit;
    color: inherit;
}

/* ── Base font / colour — matches BSPL.razor.css ── */
.qg-page[b-bgzookcsj0] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

/* ── Page header: group name in teal, thin weight ── */
.qg-title[b-bgzookcsj0] {
    font-size: 20px;
    font-weight: 100 !important;
    color: #1ab99a;
    margin: 0;
}

.qg-title-row[b-bgzookcsj0] {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.qg-title-cb[b-bgzookcsj0] {
    font-size: 13px;
    font-weight: 700;
    color: #1a2537;
    white-space: nowrap;
}

.qg-title-clickable[b-bgzookcsj0] {
    cursor: pointer;
}

    .qg-title-clickable:hover[b-bgzookcsj0] {
        text-decoration: underline;
    }

/* ── "CHANGE GROUP" popup (title-bar click) ── */
.qg-cg-overlay[b-bgzookcsj0] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1500;
}

.qg-cg-popup[b-bgzookcsj0] {
    background: #fff;
    border-radius: 8px;
    width: 460px;
    max-width: 92vw;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.qg-cg-hdr[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid #eef2f7;
    color: #1ab99a;
    font-size: 20px;
    font-weight: 600;
}

.qg-cg-x[b-bgzookcsj0] {
    border: none;
    background: none;
    color: #94a3b8;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}

.qg-cg-body[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 18px;
}

    .qg-cg-body .qg-group-select[b-bgzookcsj0] {
        flex: 1 1 auto;
        min-width: 0;
    }

    .qg-cg-body .qg-led-btn[b-bgzookcsj0] {
        width: 40px;
        height: 40px;
        flex: 0 0 40px;
    }

.qg-cg-foot[b-bgzookcsj0] {
    padding: 0 18px 14px;
}

.qg-title-more[b-bgzookcsj0] {
    border: none;
    background: none;
    color: #64748b;
    font-size: 15px;
    font-weight: 700;
    line-height: 1;
    padding: 2px 4px;
    cursor: pointer;
}

.qg-title-more:hover[b-bgzookcsj0] {
    color: #1a2537;
}

/* ── "..." balance popup ── */
.qg-bal-overlay[b-bgzookcsj0] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1500;
}

.qg-bal-popup[b-bgzookcsj0] {
    background: #fff;
    border-radius: 8px;
    width: 380px;
    max-width: 92vw;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.qg-bal-popup-hdr[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid #eef2f7;
    color: #1ab99a;
    font-size: 17px;
    font-weight: 600;
}

.qg-bal-popup-x[b-bgzookcsj0] {
    border: none;
    background: none;
    color: #94a3b8;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}

.qg-bal-popup-table[b-bgzookcsj0] {
    width: 100%;
    border-collapse: collapse;
}

.qg-bal-popup-table th[b-bgzookcsj0],
.qg-bal-popup-table td[b-bgzookcsj0] {
    padding: 10px 18px;
    font-size: 13.5px;
}

.qg-bal-popup-table thead th[b-bgzookcsj0] {
    text-align: left;
    font-weight: 700;
    color: #1a2537;
}

.qg-bal-popup-table th.num[b-bgzookcsj0],
.qg-bal-popup-table td.num[b-bgzookcsj0] {
    text-align: right;
}

.qg-bal-popup-table td.cr[b-bgzookcsj0] {
    color: #800000;
}

.qg-bal-popup-table tbody tr:nth-child(odd)[b-bgzookcsj0] {
    background: #f8fafc;
}

.qg-bal-popup-closing td[b-bgzookcsj0] {
    font-weight: 600;
    border-top: 1px solid #eef2f7;
}

/* GO button now uses shared mu-btn.primary from masters-forms.css */

/* ── Section buttons (Accounts / Summary) ── */
/* padding-left matches QLedger.razor.css's .ql-sections (10px) — gap
   from the GAINS nav toggle/sidebar edge, missing here before this fix. */
.qg-sections[b-bgzookcsj0] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 0px 10px;
}

.qg-section[b-bgzookcsj0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

.qg-dollar[b-bgzookcsj0] {
    font-weight: 600;
    font-size: 13px;
}

.qg-section:hover[b-bgzookcsj0] {
    background: #f1f5f9;
    color: #1a2537;
}

.qg-section.active[b-bgzookcsj0] {
    background: #1ab99a;
    border-color: #1ab99a;
    color: #fff;
}

/* ── Layout: main card + balance panel ── */
.qg-body[b-bgzookcsj0] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

    .qg-body .mu-card[b-bgzookcsj0] {
        flex: 1 1 auto;
        min-width: 0;
    }

/* ── Grouping tabs (Trans / Day / Month / Ledger / Group) ── */
.qg-tabs[b-bgzookcsj0] {
    display: flex;
    gap: 6px;
}

.qg-tab[b-bgzookcsj0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 9px 14px;
    border-radius: 8px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .qg-tab:hover[b-bgzookcsj0] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .qg-tab.active[b-bgzookcsj0] {
        background: #eafaf6;
        color: #1ab99a;
        border-color: #1ab99a;
    }

/* ── QG table cell extras (on top of mu-table) ── */
.mu-table thead th.num[b-bgzookcsj0] {
    text-align: right;
}

.mu-table td.num[b-bgzookcsj0] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-table td.cr[b-bgzookcsj0] {
    color: #800000;
}
/* Cr amounts in maroon */

.mu-table td.qg-pivot-neg[b-bgzookcsj0] {
    color: #800000;
}
/* Negative pivot cell (any month column) — same maroon as old ASPX pivot grid */

.qg-pivot-table th[b-bgzookcsj0],
.qg-pivot-table td[b-bgzookcsj0] {
    white-space: nowrap;
}

.qg-drcr[b-bgzookcsj0] {
    width: 52px;
    font-size: 12px;
}

.mu-table thead th.qg-drcr[b-bgzookcsj0] {
    color: #fff;
}

.mu-table tbody td.qg-drcr[b-bgzookcsj0] {
    color: #64748b;
}

/* Amount + direction merged into one cell (Day tab's OB/NettTrans/CB) —
   no separate "Dr/Cr" header column, direction just trails the number. */
.qg-drcr-inline[b-bgzookcsj0] {
    color: #64748b;
    font-size: 12px;
    margin-left: 3px;
}

/* ── Summary section (Type / Ledger / Group) ── */
.qg-summary-banner[b-bgzookcsj0] {
    background: #f1f4f8;
    text-align: center;
    font-size: 11.5px;
    letter-spacing: 0.04em;
    color: #1a2537;
    padding: 8px 0;
}

/* Group sub-tab's tree branch rows (parentGroup/group nodes, no ledId) —
   bold, dark text, distinct from leaf ledger rows (.qg-ledger, blue link). */
.qg-summary-groupnode[b-bgzookcsj0] {
    font-weight: 600;
    color: #1a2537;
}

.qg-nowrap[b-bgzookcsj0] {
    white-space: nowrap;
}

.qg-narr[b-bgzookcsj0] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Name column — Trans' Group/Opposite Ledger, Ledger tab's Ledger name,
   Group tab's Group name — all share this one class, so all three views
   render the same blue link colour instead of drifting apart. */
.qg-ledger[b-bgzookcsj0] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    color: #1a56a7;
    font-weight: 500;
}

/* Ledger drill-down: only clickable in Hide CB=0 / Show Only Transaction
   focus mode (see CanDrillLedger) — plain cursor/underline cue, no new color. */
.qg-clickable[b-bgzookcsj0] {
    cursor: pointer;
}

.qg-clickable:hover[b-bgzookcsj0] {
    text-decoration: underline;
}

.qg-drill-banner[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    margin-bottom: 8px;
    background: #fbfcfe;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    font-size: 13px;
    color: #1a2537;
}

.qg-drill-clear[b-bgzookcsj0] {
    margin-left: auto;
    background: none;
    border: none;
    cursor: pointer;
    color: #1a56a7;
    font: inherit;
}

.qg-drill-clear:hover[b-bgzookcsj0] {
    text-decoration: underline;
}

/* VNum cell: green square + link-styled number, matches QLedger's ql-vnum-cell */
.qg-vnum-cell[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.qg-vsquare-btn[b-bgzookcsj0] {
    display: inline-flex;
    width: 10px;
    height: 10px;
    min-width: 10px;
    background-color: #1ab99a !important;
    border: none;
    border-radius: 2px;
    flex: 0 0 10px;
    cursor: pointer;
    padding: 0;
    margin: 0;
    line-height: 0;
    appearance: none;
    -webkit-appearance: none;
}

    .qg-vsquare-btn:hover[b-bgzookcsj0] {
        opacity: 0.75;
    }

.qg-vnum[b-bgzookcsj0] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .qg-vnum:hover[b-bgzookcsj0] {
        text-decoration: underline;
    }

/* Type badge — colour set inline per-row via TypeColor() */
.qg-vtype[b-bgzookcsj0] {
    font-weight: 500;
    font-size: 13px;
}

/* Totals footer */
.mu-table tfoot td[b-bgzookcsj0] {
    padding: 11px 14px;
    font-weight: 700;
    color: #1a2537;
    border-top: 2px solid #dde3ed;
    background: #fbfcfe;
    position: sticky;
    bottom: 0;
}

    .mu-table tfoot td.num[b-bgzookcsj0] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .mu-table tfoot td.cr[b-bgzookcsj0] {
        color: #800000;
    }

/* Period link (Month drill-down) */
.qg-period-link[b-bgzookcsj0] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    font-weight: 500;
}

    .qg-period-link:hover[b-bgzookcsj0] {
        text-decoration: underline;
    }

/* Empty / error states */
.qg-empty-state[b-bgzookcsj0] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .qg-empty-state p[b-bgzookcsj0] {
        margin: 4px 0;
    }

    .qg-empty-state strong[b-bgzookcsj0] {
        color: #1a2537;
    }

.qg-error[b-bgzookcsj0] {
    color: #dc2626;
}

.qg-field-error[b-bgzookcsj0] {
    color: #dc2626;
    font-size: 11.5px;
}

/* ── Balance panel: card, header, toggle, table — matches QLedger's
   .ql-balance treatment (flat card, no shadow, sizes to its own content
   instead of stretching to match the main card's height). ── */
.qg-balance[b-bgzookcsj0] {
    min-width: 300px;
    max-width: 360px;
    flex-shrink: 0;
    align-self: flex-start;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: auto;
    max-height: 100%;
}

.qg-bal-hdr[b-bgzookcsj0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid #e5e7eb;
}

.qg-bal-toggle[b-bgzookcsj0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 2px;
    background: none;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    color: #64748b;
    flex-shrink: 0;
}

    .qg-bal-toggle:hover[b-bgzookcsj0] {
        background: #f1f5f9;
    }

    .qg-bal-toggle svg[b-bgzookcsj0] {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
        transition: transform 0.15s;
    }

.qg-bal-table[b-bgzookcsj0] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .qg-bal-table th[b-bgzookcsj0],
    .qg-bal-table td[b-bgzookcsj0] {
        padding: 10px 12px;
        white-space: nowrap;
        overflow: visible;
        font-size: 13px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

    .qg-bal-table th[b-bgzookcsj0] {
        text-align: left;
        color: #6b7280;
        font-weight: 500;
        background: #fafafa;
    }

        .qg-bal-table th.num[b-bgzookcsj0], .qg-bal-table td.num[b-bgzookcsj0] {
            text-align: right;
            font-variant-numeric: tabular-nums;
            width: 34%;
        }

    .qg-bal-table td:first-child[b-bgzookcsj0] {
        width: 32%;
    }

        .qg-bal-table td.cr[b-bgzookcsj0] {
            color: #800000;
        }

.qg-bal-closing td[b-bgzookcsj0] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
    border-bottom: none;
}

/* Filter drawer chrome (overlay, panel, header, close button, body, footer)
   now uses shared .mu-drawer / .mu-drawer-overlay / .mu-drawer-hdr /
   .mu-drawer-x / .mu-drawer-body / .mu-drawer-foot from masters-forms.css,
   same as QLedger. Only field-level styling below remains page-specific. */
.qg-drawer-section[b-bgzookcsj0] {
    margin-top: 6px;
    padding: 8px 12px;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* GO TO quick-action item — matches QLedger's .ql-qa-item flat menu-row
   treatment (no border/background until hover) instead of a boxed button. */
.qg-goto-item[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    margin-top: 4px;
    padding: 9px 8px;
    background: none;
    border: none;
    border-radius: 6px;
    text-align: left;
    font-size: 13px;
    font-weight: 400;
    color: #1a2537;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .qg-goto-item:hover[b-bgzookcsj0] {
        background: #f1f5f9;
    }

    .qg-goto-item i[b-bgzookcsj0] {
        width: 16px;
        text-align: center;
        color: #64748b;
        font-size: 13px;
    }

.qg-drawer-divider[b-bgzookcsj0] {
    height: 1px;
    background: #eef2f7;
    margin: 4px 0;
}

/* Date/Group fields now use the shared .mu-fld class from masters-forms.css
   (same pattern as MLedger's filter drawer), not a page-specific rule. */

.qg-led-row[b-bgzookcsj0] {
    display: flex;
    gap: 6px;
}

    .qg-led-row input[b-bgzookcsj0] {
        flex: 1;
        min-width: 0;
    }

.qg-led-pick[b-bgzookcsj0] {
    cursor: pointer;
    background: #fff;
}

/* Group field rendered as a fake dropdown, opens the picker popup */
.qg-led-pick-wrap[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 9px 12px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    color: #1a2537;
    font-size: 13px;
    cursor: pointer;
}

    .qg-led-pick-wrap svg[b-bgzookcsj0] {
        width: 16px;
        height: 16px;
        flex: 0 0 16px;
        color: #64748b;
    }

.qg-led-btn[b-bgzookcsj0] {
    align-self: flex-start;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .qg-led-btn:hover[b-bgzookcsj0] {
        background: #0f3d82;
    }

    .qg-led-btn:disabled[b-bgzookcsj0] {
        background: #1a56a7;
        opacity: 0.6;
        cursor: not-allowed;
    }

.qg-check[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

    .qg-check input[b-bgzookcsj0] {
        accent-color: #1ab99a;
    }

    .qg-check:has(input:disabled)[b-bgzookcsj0] {
        color: #94a3b8;
    }

.qg-check-row[b-bgzookcsj0] {
    display: flex;
    gap: 24px;
}

.qg-radio-row[b-bgzookcsj0] {
    display: flex;
    gap: 20px;
    padding-left: 22px;
}

.qg-radio[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: #1a2537;
    cursor: pointer;
}

    .qg-radio input[b-bgzookcsj0] {
        accent-color: #1ab99a;
    }

    .qg-radio:has(input:disabled)[b-bgzookcsj0] {
        color: #94a3b8;
        cursor: not-allowed;
    }

/* ── Group picker popup: QG additions over uf-modal ── */
.qg-lp-overlay[b-bgzookcsj0] {
    z-index: 1300;
}
/* above the filter drawer (1200) */

.qg-lp-modal[b-bgzookcsj0] {
    max-width: 640px;
    max-height: 70vh;
}

.qg-modal-search[b-bgzookcsj0] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .qg-modal-search .uf-input[b-bgzookcsj0] {
        flex: 1 1 auto;
        min-width: 0;
    }

.qg-modal-body[b-bgzookcsj0] {
    flex: 1;
    overflow-y: auto;
}

.qg-lp-row[b-bgzookcsj0] {
    cursor: pointer;
}

.qg-lp-name[b-bgzookcsj0] {
    color: #1a56a7;
    font-weight: 500;
}

/* ── Responsive ── */
@media (max-width: 980px) {
    .qg-body[b-bgzookcsj0] {
        flex-direction: column;
    }

    .qg-balance[b-bgzookcsj0] {
        flex: 1 1 auto;
        width: 100%;
    }
}

/* =====================================================================
   Layout truth block — single source for page-height + sticky footer,
   matching QLedger's pattern. .mu-page (shared) only sets flex-column +
   gap; it never stretches to full viewport height on its own, so without
   this the footer just trails after content instead of pinning to the
   true bottom of the screen.
   ===================================================================== */
.qg-page[b-bgzookcsj0] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

.qg-body[b-bgzookcsj0] {
    flex: 1;
    min-height: 0;
    overflow: hidden; /* containment: children scroll, not the page */
    align-items: stretch; /* overrides the earlier align-items:flex-start —
        without stretch, .mu-card never gets a bounded height, so
        .mu-table-wrap's overflow:auto has nothing to scroll inside and
        the whole page scrolls instead of the grid. */
}

    .qg-body .mu-card[b-bgzookcsj0] {
        display: flex;
        flex-direction: column;
        min-height: 0;
        overflow: hidden;
    }

    .qg-body .mu-table-wrap[b-bgzookcsj0] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

/* Sticky header — column headers stay pinned at the top of
   .mu-table-wrap instead of scrolling away with the rows, matching
   QLedger's grid behaviour. Needs an opaque background (set per-table
   via the global .mu-table thead th rule) since content scrolls under it. */
.mu-table thead th[b-bgzookcsj0] {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* Ensure wide tables scroll inside the card, never the page. */
.mu-table-wrap[b-bgzookcsj0] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Pins the footer bar to the true bottom of the viewport instead of
   trailing after the card content. */
.qg-footer-fixed[b-bgzookcsj0] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as DocumentGrid.razor.css / BSPL.razor.css / ITB.razor.css /
   QLedger.razor.css.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-bgzookcsj0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-bgzookcsj0] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-bgzookcsj0] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── "G" advanced group search popup ── */
.qg-gp-overlay[b-bgzookcsj0] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1500;
}

.qg-gp-popup[b-bgzookcsj0] {
    background: #fff;
    border-radius: 8px;
    width: 760px;
    max-width: 95vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.qg-gp-hdr[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid #eef2f7;
    color: #1ab99a;
    font-size: 20px;
    font-weight: 100;
}

.qg-gp-x[b-bgzookcsj0] {
    border: none;
    background: none;
    color: #94a3b8;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}

.qg-gp-body[b-bgzookcsj0] {
    padding: 14px 18px;
    overflow-y: auto;
}

.qg-gp-filters[b-bgzookcsj0] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.qg-gp-filters .uf-input[b-bgzookcsj0] {
    width: 160px;
}

.qg-gp-alpha[b-bgzookcsj0] {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    background: #1a2f6b;
    padding: 4px;
    border-radius: 4px 4px 0 0;
}

.qg-gp-letter[b-bgzookcsj0] {
    border: none;
    background: transparent;
    color: #cbd5e1;
    font-size: 11px;
    font-weight: 600;
    padding: 4px 6px;
    cursor: pointer;
    border-radius: 3px;
}

.qg-gp-letter:hover[b-bgzookcsj0] {
    background: rgba(255, 255, 255, 0.12);
}

.qg-gp-letter.active[b-bgzookcsj0] {
    background: #fff;
    color: #1a2f6b;
}

.qg-gp-panes[b-bgzookcsj0] {
    display: flex;
    gap: 10px;
    border: 1px solid #e2e8f0;
    border-top: none;
    max-height: 340px;
}

.qg-gp-list[b-bgzookcsj0] {
    flex: 1 1 65%;
    overflow: auto;
}

.qg-gp-table th[b-bgzookcsj0],
.qg-gp-table td[b-bgzookcsj0] {
    font-size: 12.5px;
    padding: 6px 8px;
}

.qg-gp-tree[b-bgzookcsj0] {
    flex: 1 1 35%;
    border-left: 1px solid #e2e8f0;
    overflow: auto;
    font-size: 12.5px;
    padding: 6px 0;
}

.qg-gp-tree-node[b-bgzookcsj0] {
    padding-top: 3px;
    padding-bottom: 3px;
    white-space: nowrap;
    cursor: pointer;
}

.qg-gp-tree-node:hover[b-bgzookcsj0] {
    background: #f1f4f8;
}

.qg-gp-footer[b-bgzookcsj0] {
    padding: 8px 2px 0;
    font-size: 12.5px;
    color: #1a2537;
}

.qg-gp-foot[b-bgzookcsj0] {
    padding: 10px 18px;
    border-top: 1px solid #eef2f7;
    text-align: right;
}

/* Added by Gaurav for padding fix — same block as QLedger.razor.css. */
.gains-layout[b-bgzookcsj0] { /* wrapper holding sidebar + page */
    display: flex;
}

.gains-sidebar[b-bgzookcsj0] {
    flex: 0 0 auto; /* own width */
}

.gains-content[b-bgzookcsj0] { /* where @Body renders */
    flex: 1 1 auto;
    min-width: 0; /* IMPORTANT — lets tables shrink instead of overflow */
}

/* =====================================================================
   RESPONSIVE PATCH — phones & small tablets. Mirrors QLedger's phone
   breakpoint: bigger touch targets, wrapping tabs/sections, mobile-safe
   popups (balance popup + advanced group search popup are QG-specific
   affordances QLedger doesn't have, so they get their own mobile rules
   here instead of a 1:1 class copy).
   ===================================================================== */
@media (max-width: 640px) {
    /* Tabs/sections: allow wrap, bigger touch */
    .qg-tabs[b-bgzookcsj0] {
        flex-wrap: wrap;
    }

    .qg-tab[b-bgzookcsj0],
    .qg-section[b-bgzookcsj0] {
        min-height: 44px;
        padding: 10px 14px;
    }

    /* Balance toggle: finger-size */
    .qg-bal-toggle[b-bgzookcsj0] {
        min-width: 44px;
        min-height: 44px;
        justify-content: center;
        align-items: center;
    }

    .qg-bal-table th[b-bgzookcsj0],
    .qg-bal-table td[b-bgzookcsj0] {
        padding: 8px 8px;
        font-size: 12px;
    }

    /* Balance panel header title smaller page title */
    .qg-title[b-bgzookcsj0] {
        font-size: 20px;
    }

    /* "..." balance popup: full-width on small screens */
    .qg-bal-popup[b-bgzookcsj0] {
        width: calc(100vw - 24px);
    }

    /* "G" advanced group search popup: full-width, stack the alpha
       filters and the list/tree panes instead of side-by-side. */
    .qg-gp-popup[b-bgzookcsj0] {
        max-width: calc(100vw - 16px);
        max-height: 92vh;
    }

    .qg-gp-filters[b-bgzookcsj0] {
        flex-wrap: wrap;
    }

        .qg-gp-filters .uf-input[b-bgzookcsj0] {
            width: auto;
            flex: 1 1 100%;
        }

    .qg-gp-panes[b-bgzookcsj0] {
        flex-direction: column;
        max-height: none;
    }

    .qg-gp-tree[b-bgzookcsj0] {
        border-left: none;
        border-top: 1px solid #e2e8f0;
    }
}

/* ── Print: clean grid-only output, matching QLedger's print rules ── */
@media print {
    .mu-hdr-actions[b-bgzookcsj0],
    .qg-sections[b-bgzookcsj0],
    .mu-toolbar[b-bgzookcsj0],
    .mu-drawer-overlay[b-bgzookcsj0],
    .uf-overlay[b-bgzookcsj0],
    .mu-foot[b-bgzookcsj0],
    .bspl-foot-btn[b-bgzookcsj0],
    .qg-bal-toggle[b-bgzookcsj0] {
        display: none !important;
    }

    .qg-body[b-bgzookcsj0] {
        display: block;
    }

    .qg-balance[b-bgzookcsj0] {
        width: 100%;
        margin-top: 12px;
        page-break-inside: avoid;
    }

    .mu-table-wrap[b-bgzookcsj0] {
        max-height: none !important;
        overflow: visible !important;
    }

    .mu-table thead th[b-bgzookcsj0] {
        position: static !important;
    }

    .mu-table tfoot td[b-bgzookcsj0] {
        position: static !important;
    }

    .mu-card[b-bgzookcsj0] {
        border: none;
        box-shadow: none;
    }
}
/* /Components/Pages/Transactions/QLedger.razor.rz.scp.css */
/* =====================================================================
   GAINS — QLedger.razor.css   (Transactions → Query Ledger, page-scoped)
   ONLY QL-specific additions. Base look (mu- grid system, uf- modal/
   inputs) comes from the global CSS/masters-forms.css.
   ===================================================================== */

/* =====================================================================
   Page-end footer pinning + sticky header/footer — see the CONSOLIDATED
   block at the very end of this file. Everything related to .mu-page /
   .ql-body / .mu-card / .mu-table-wrap sizing was previously scattered
   across several places in this file (with genuinely conflicting
   duplicate declarations for .ql-body and .mu-table-wrap found along the
   way) — it's now defined exactly once, at the end, so cascade order
   can't silently override it again.
   ===================================================================== */

/* mu-pager sits inside .bspl-footer-right now — undo the inherited
   margin-left:auto/font-size/color from common-page-chrome.css so the
   pagesize dropdown and page buttons keep their own sizing/typography. */
.bspl-footer-right[b-gba25bxpef] {
    font-size: inherit;
    color: inherit;
}

.bspl-title-left h1[b-gba25bxpef] {
    font-weight: 100;
    color: #1ab99a;
}

/* ── Page header: ledger name in teal, thin weight ── */
/*.ql-title {
    font-family: "Segoe UI Light", "Segoe UI", sans-serif;
    font-weight: 100 !important;
    color: #1ab99a;
    margin: 0;
}*/

/* Teal action button (FILTERS / GO / Search) — QL accent over mu-btn */
.ql-go[b-gba25bxpef] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .ql-go:hover[b-gba25bxpef] {
        background: #159a80;
    }

.ql-back[b-gba25bxpef] {
    padding: 6px 10px;
    font-size: 12px;
}

/* ── Section buttons (Accounts / Summary Opp Ledger / Summary VType) ── */
.ql-sections[b-gba25bxpef] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 0px 10px;
}

.ql-section[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 5px 16px;
    border-radius: 3px;
    border: 1px solid #d5d5d5;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    color: #555;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-section i[b-gba25bxpef] {
        font-size: 15px;
    }

.ql-dollar[b-gba25bxpef] {
    font-weight: 600;
    font-size: 13px;
}

.ql-section:hover[b-gba25bxpef] {
    background: #f5f5f5;
    color: #555;
}

.ql-section.active[b-gba25bxpef] {
    background: #1ab394;
    border-color: #1ab394;
    color: #fff;
}

/* ── Layout: main card + balance panel ── */
.ql-body[b-gba25bxpef] {
    display: flex;
    gap: 16px;
}

.mu-card[b-gba25bxpef] {
    flex: 1 1 auto;
    min-width: 0; /* lets it shrink below content width instead of pushing the balance panel off */
}

/*.ql-body .mu-card {
        flex: 1 1 auto;
        min-width: 0;
    }
*/
/* grid header = sidebar navy theme */
/* ── Grouping tabs (Trans / Day / Month / Quarter) ── */
.ql-tabs[b-gba25bxpef] {
    display: flex;
    gap: 6px;
}

.ql-tab[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 5px 16px;
    border-radius: 3px;
    border: 1px solid #d5d5d5;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    color: #555;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-tab:hover[b-gba25bxpef] {
        background: #f5f5f5;
        color: #555;
    }

    .ql-tab.active[b-gba25bxpef] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* ── TRANS sub-tabs ── */
.ql-subtabs[b-gba25bxpef] {
    display: flex;
    gap: 6px;
    padding: 10px 16px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

.ql-subtab[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding: 5px 16px;
    margin: 4px;
    border-radius: 3px;
    border: 1px solid #d5d5d5;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    color: #555;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-subtab:hover:not(:disabled)[b-gba25bxpef] {
        background: #f5f5f5;
        color: #555;
    }

    .ql-subtab.active[b-gba25bxpef] {
        color: #fff;
        border-color: #1ab394;
        background: #1ab394;
        font-weight: 600;
    }

/* Forced override for sub-tabs inside .ql-docs-cats (AR-AP, Orders, Docs
   category toggles) — guards against any global button/link reset or a
   stale Blazor CSS-isolation scope hash silently dropping the base
   .ql-subtab rule above. */
.ql-docs-cats .ql-subtab[b-gba25bxpef] {
    border: 1px solid #d5d5d5 !important;
    background: #fff !important;
    color: #555 !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

    .ql-docs-cats .ql-subtab.active[b-gba25bxpef] {
        border-color: #1ab394 !important;
        color: #fff !important;
        background: #1ab394 !important;
    }

    .ql-docs-cats .ql-subtab:hover:not(.active)[b-gba25bxpef] {
        background: #f5f5f5 !important;
        color: #555 !important;
    }

.ql-subtab:disabled[b-gba25bxpef] {
    color: #cbd5e1;
    cursor: not-allowed;
    background: #f7f9fc;
}

/* ── QL table cell extras (on top of mu-table) ── */
.mu-table thead th.num[b-gba25bxpef] {
    text-align: right;
}

.mu-table td.num[b-gba25bxpef] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-table td.cr[b-gba25bxpef] {
    color: #800000;
}
/* Cr amounts in maroon */
.ql-drcr[b-gba25bxpef] {
    width: 52px;
    font-size: 12px;
}

.mu-table thead th.ql-drcr[b-gba25bxpef] {
    color: #fff;
}

.mu-table tbody td.ql-drcr[b-gba25bxpef] {
    color: #64748b;
}

.ql-nowrap[b-gba25bxpef] {
    white-space: nowrap;
}

.ql-narr[b-gba25bxpef], .ql-ledger[b-gba25bxpef] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ql-th-vnum[b-gba25bxpef] {
    padding-left: 40px;
}

/* Totals footer */
.mu-table tfoot td[b-gba25bxpef] {
    padding: 11px 14px;
    font-weight: 700;
    color: #1a2537;
    border-top: 2px solid #dde3ed;
    background: #fbfcfe;
    position: sticky;
    bottom: 0;
}

    .mu-table tfoot td.num[b-gba25bxpef] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .mu-table tfoot td.cr[b-gba25bxpef] {
        color: #800000;
    }

/* VNum cell: paperclip + voucher square + link */
.ql-vnum-cell[b-gba25bxpef] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ql-clip[b-gba25bxpef] {
    color: #64748b;
    font-size: 14px;
}

.ql-vsquare-btn[b-gba25bxpef] {
    display: inline-flex;
    width: 10px;
    height: 10px;
    min-width: 10px;
    background-color: #1ab99a !important;
    border: none;
    border-radius: 2px;
    flex: 0 0 10px;
    cursor: pointer;
    padding: 0;
    margin: 0;
    line-height: 0;
    appearance: none;
    -webkit-appearance: none;
}

    .ql-vsquare-btn:hover[b-gba25bxpef] {
        opacity: 0.75;
    }

.ql-vnum[b-gba25bxpef] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .ql-vnum:hover[b-gba25bxpef] {
        text-decoration: none;
    }

/* VType colored per row (inline color from API vColor) */
.ql-vtype[b-gba25bxpef] {
    font-weight: 500;
    font-size: 13px;
}

/* Period link (Month/Day/Quarter drill-down) */
.ql-period-link[b-gba25bxpef] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    font-weight: 500;
}

    .ql-period-link:hover[b-gba25bxpef] {
        text-decoration: none;
    }

/* Empty / error states */
.ql-empty-state[b-gba25bxpef] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .ql-empty-state p[b-gba25bxpef] {
        margin: 4px 0;
    }

    .ql-empty-state strong[b-gba25bxpef] {
        color: #1a2537;
    }

.ql-error[b-gba25bxpef] {
    color: #dc2626;
}

/* ── Balance panel: restore the earlier bordered card look ── */
/* ── Balance panel: card, header, toggle, table — fully consolidated ── */
.ql-balance[b-gba25bxpef] {
    min-width: 300px;
    max-width: 360px;
    flex-shrink: 0;
    align-self: flex-start;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: auto;
    max-height: 100%;
}

.ql-bal-hdr[b-gba25bxpef] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid #e5e7eb;
}

.ql-bal-toggle[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 2px;
    background: none;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    color: #64748b;
    flex-shrink: 0;
}

    .ql-bal-toggle:hover[b-gba25bxpef] {
        background: #f1f5f9;
    }

    .ql-bal-toggle svg[b-gba25bxpef] {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
    }

.ql-bal-table[b-gba25bxpef] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .ql-bal-table th[b-gba25bxpef],
    .ql-bal-table td[b-gba25bxpef] {
        padding: 10px 12px;
        white-space: nowrap;
        overflow: visible;
        font-size: 13px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

    .ql-bal-table th[b-gba25bxpef] {
        text-align: left;
        color: #6b7280;
        font-weight: 500;
        background: #fafafa;
    }

        .ql-bal-table th.num[b-gba25bxpef],
        .ql-bal-table td.num[b-gba25bxpef] {
            text-align: right;
            font-variant-numeric: tabular-nums;
            width: 34%;
        }

    .ql-bal-table td:first-child[b-gba25bxpef] {
        width: 32%;
    }

.ql-bal-closing td[b-gba25bxpef] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
    border-bottom: none;
}

.ql-bal-opening td[b-gba25bxpef] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
}

.ql-bal-opening1 th[b-gba25bxpef] {
    font-weight: 700;
    background: #fff;
    border-top: 1px solid #dcdcdc;
}

/* ── Responsive ── */
@media (max-width: 980px) {
    .ql-body[b-gba25bxpef] {
        flex-direction: column;
    }

    .mu-table-wrap[b-gba25bxpef] {
        max-height: 45vh; /* caps the grid so Balance stays reachable below it */
    }

    .ql-balance[b-gba25bxpef] {
        flex: 0 0 auto; /* was 1 1 auto — stop it stretching to fill leftover space */
        width: 100%;
        max-width: none;
    }
}

@media (max-width: 640px) {
    .ql-bal-toggle[b-gba25bxpef] {
        width: 44px;
        height: 44px;
    }

    .ql-bal-table th[b-gba25bxpef],
    .ql-bal-table td[b-gba25bxpef] {
        padding: 8px 8px;
        font-size: 12px;
    }
}

.ql-bal-table td.cr[b-gba25bxpef] {
    color: #800000;
}

/* ── Filter drawer — outer chrome (overlay/panel/header/body/footer) now
   uses the shared masters-forms.css classes (.mu-drawer-overlay,
   .mu-drawer, .mu-drawer-hdr, .mu-drawer-x, .mu-drawer-body,
   .mu-drawer-foot), same as BSPL/TB/MLedger. Only the field-level
   classes below (still nested inside .mu-drawer-body) remain page-local. ── */
.ql-drawer-section[b-gba25bxpef] {
    margin-top: 6px;
    padding: 8px 12px;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ql-field[b-gba25bxpef] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

.ql-led-row[b-gba25bxpef] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-gba25bxpef] {
        flex: 1;
        min-width: 0;
    }

.ql-led-pick[b-gba25bxpef] {
    cursor: pointer;
    background: #fff;
}

.ql-led-btn[b-gba25bxpef] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-led-btn:hover[b-gba25bxpef] {
        background: #0f3d82;
    }

.ql-check[b-gba25bxpef] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

    .ql-check input[b-gba25bxpef] {
        accent-color: #1ab99a;
    }

    .ql-check:has(input:disabled)[b-gba25bxpef] {
        color: #94a3b8;
    }

/* ── Ledger picker popup: QL additions over uf-modal ── */
.ql-lp-overlay[b-gba25bxpef] {
    z-index: 1300;
}
/* above the filter drawer (1200) */
.ql-lp-modal[b-gba25bxpef] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-gba25bxpef] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .ql-modal-search .uf-input[b-gba25bxpef] {
        flex: 1 1 auto;
        min-width: 0;
    }

.ql-lp-code[b-gba25bxpef] {
    flex: 0 1 120px !important;
}

.ql-modal-body[b-gba25bxpef] {
    flex: 1;
    overflow-y: auto;
}

.ql-lp-row[b-gba25bxpef] {
    cursor: pointer;
}

.ql-lp-idx[b-gba25bxpef] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-gba25bxpef] {
    color: #1a56a7;
    font-weight: 600;
}

.ql-lp-name[b-gba25bxpef] {
    color: #1a56a7;
    font-weight: 500;
}

/* ── Voucher documents modal: QL additions over uf-modal ── */
.ql-docs-overlay[b-gba25bxpef] {
    z-index: 1300;
}

.ql-docs-modal[b-gba25bxpef] {
    max-width: 700px;
    max-height: 80vh;
}

/* ── Others Links → Docs grid ── */
.ql-docs-table td[b-gba25bxpef] {
    vertical-align: middle;
}

.ql-doc-filechip[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #f8fafc;
    color: #1a56a7;
    font-size: 13px;
    cursor: pointer;
}

    .ql-doc-filechip:hover[b-gba25bxpef] {
        text-decoration: underline;
        background: #eef2f7;
    }

    .ql-doc-filechip i[b-gba25bxpef] {
        font-size: 12px;
        color: #64748b;
    }

/* ── Others Links dropdown: DOCS/SCANS, MASTER, GRAPH, COF ── */
.ql-ol-item[b-gba25bxpef] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    text-align: left;
}

    .ql-ol-item i[b-gba25bxpef] {
        width: 16px;
        text-align: center;
    }

.ql-ol-docs i[b-gba25bxpef] {
    color: #b91c1c;
}

.ql-ol-master i[b-gba25bxpef] {
    color: #92400e;
}

.ql-ol-graph i[b-gba25bxpef] {
    color: #0d9488;
}

.ql-ol-cof[b-gba25bxpef] {
    padding-left: 24px; /* aligns with the icon-less COF label under the iconed items above */
}

.ql-cof-status[b-gba25bxpef] {
    padding: 8px 20px;
    font-size: 13px;
    color: #475569;
    background: #f8fafc;
    border-bottom: 1px solid #eef2f7;
}

    .ql-cof-status.ql-error[b-gba25bxpef] {
        color: #b91c1c;
        background: #fef2f2;
    }

/* ── Image lightbox (Others Links → Docs) ── */
.ql-lightbox-overlay[b-gba25bxpef] {
    z-index: 1400;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ql-lightbox-panel[b-gba25bxpef] {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    background: #000;
    border-radius: 8px;
    padding: 16px;
}

.ql-lightbox-img[b-gba25bxpef] {
    display: block;
    margin: 0 auto;
    max-width: 86vw;
    max-height: 80vh;
    object-fit: contain;
}

.ql-lightbox-caption[b-gba25bxpef] {
    margin-top: 8px;
    color: #fff;
    font-size: 13px;
    text-align: center;
}

.ql-lightbox-close[b-gba25bxpef] {
    position: absolute;
    top: 8px;
    right: 8px;
    color: #fff;
}

/* ── Responsive ── */
@media (max-width: 980px) {
    .ql-body[b-gba25bxpef] {
        flex-direction: column;
    }

    .ql-balance[b-gba25bxpef] {
        flex: 1 1 auto;
        width: 100%;
    }
}


/* ── T Format / Compare split ── */
/* ── T Format / Compare split ── */
.ql-tformat[b-gba25bxpef] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px;
}

/* base halves — T format height */
.ql-thalf[b-gba25bxpef] {
    flex: 1 1 50%;
    min-width: 0;
    overflow: auto;
    max-height: 48vh;
}

/* compare shorter */
.ql-compare .ql-thalf[b-gba25bxpef] {
    max-height: 68vh;
}

/* Outer grid wrapper must not double-scroll around the halves */
.mu-table-wrap:has(.ql-tformat)[b-gba25bxpef] {
    max-height: none;
    overflow: visible;
}

.ql-tf-bar[b-gba25bxpef] {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 9px 14px;
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

    .ql-tf-bar.in[b-gba25bxpef] {
        background: #3b5998;
    }
    /* blue IN bar */
    .ql-tf-bar.out[b-gba25bxpef] {
        background: #6b1010;
    }

/* maroon OUT bar */
.ql-thalf-title[b-gba25bxpef] {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 9px 14px;
    font-size: 12.5px;
    font-weight: 700;
    color: #1a2537;
    background: #fbfcfe;
    border-bottom: 1px solid #eef2f7;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

    .ql-thalf-title.cr[b-gba25bxpef] {
        color: #800000;
    }
/* Compare/T-format halves use light headers like the old form.
   Column headers stick just below the IN/OUT bar (bar ≈ 37px). */
.ql-thalf .mu-table thead th[b-gba25bxpef] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fff;
    color: #1a2537;
    border-bottom: 2px solid #eef2f7;
}

.ql-thalf .ql-tf-bar + table thead th[b-gba25bxpef],
.ql-thalf .ql-thalf-title + table thead th[b-gba25bxpef] {
    top: 37px;
}

.ql-thalf .mu-table thead th.ql-cmp-cr[b-gba25bxpef], .ql-thalf .mu-table thead th.num.ql-cmp-cr[b-gba25bxpef] {
    color: #800000;
}

/* Per-half pager under each T-format table */
.ql-tf-pager[b-gba25bxpef] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 8px;
    background: #fbfcfe;
    border-top: 1px solid #eef2f7;
    min-height: 49px;
    box-sizing: border-box;
}
/* When a half is paged, its Total row sticks just above the pager */
.ql-thalf .ql-has-pager tfoot td[b-gba25bxpef] {
    bottom: 49px;
}

/* ── Page footer: group path + export icons ── */
.ql-pgfoot[b-gba25bxpef] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    font-size: 12.5px;
    color: #1a56a7;
    flex-wrap: wrap;
}

.ql-pgfoot-path[b-gba25bxpef] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Footer export/print icons now use the shared .bspl-foot-btn classes
   (matching BSPL exactly) instead of these page-local ones. */

/* =====================================================================
   RESPONSIVE PATCH — phones & small tablets
   ===================================================================== */

/* Ensure wide tables scroll inside card, never the page */
.mu-table-wrap[b-gba25bxpef] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Tablet & below (<= 980px) — existing block already stacks .ql-body */
@media (max-width: 980px) {
    /* Stack T-format / Compare halves */
    .ql-tformat[b-gba25bxpef] {
        flex-direction: column;
    }

    .ql-thalf[b-gba25bxpef],
    .ql-compare .ql-thalf[b-gba25bxpef] {
        flex: 1 1 auto;
        width: 100%;
        max-height: none; /* let page scroll naturally when stacked */
    }
}

/* Phones (<= 640px) */
@media (max-width: 640px) {
    .ql-tabs[b-gba25bxpef] {
        overflow: visible; /* was overflow-x: auto — clipped the Trans dropdown */
        flex-wrap: wrap; /* wrap instead of horizontal-scroll */
    }
}

.ql-tab[b-gba25bxpef],
.ql-subtab[b-gba25bxpef],
.ql-section[b-gba25bxpef] {
    min-height: 44px;
    padding: 10px 14px;
}

.ql-subtabs[b-gba25bxpef] {
    flex-wrap: wrap;
}

/* Balance toggle & pager arrows: finger-size */
.ql-bal-toggle[b-gba25bxpef] {
    min-width: 44px;
    min-height: 44px;
    justify-content: center;
    align-items: center;
}

.ql-tf-pager .mu-nav[b-gba25bxpef] {
    min-width: 44px;
    min-height: 44px;
}

/* Ledger picker: full-width modal, search stacks */
.ql-lp-modal[b-gba25bxpef] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-gba25bxpef] {
    flex-wrap: wrap;
}

    .ql-modal-search .uf-input[b-gba25bxpef] {
        flex: 1 1 100%;
    }

.ql-lp-code[b-gba25bxpef] {
    flex: 1 1 100% !important;
}

/* Balance panel header title smaller page title */
.ql-title[b-gba25bxpef] {
    font-size: 20px;
}

/* Footer path truncates instead of pushing icons */
.ql-pgfoot[b-gba25bxpef] {
    gap: 8px;
}

.ql-pgfoot-path[b-gba25bxpef] {
    flex: 1 1 100%;
}

}

/* Ellipsis actually work on truncating cells */
.ql-narr[b-gba25bxpef],
.ql-ledger[b-gba25bxpef] {
    white-space: nowrap;
}

/* Added by Gaurav for padding fix*/
.gains-layout[b-gba25bxpef] { /* wrapper holding sidebar + page */
    display: flex;
}

.gains-sidebar[b-gba25bxpef] {
    flex: 0 0 auto; /* own width */
}

.gains-content[b-gba25bxpef] { /* where @Body renders */
    flex: 1 1 auto;
    min-width: 0; /* IMPORTANT — lets tables shrink instead of overflow */
}

/* ── Print: clean grid-only output for the Print button ── */
@media print {
    .mu-hdr-actions[b-gba25bxpef],
    .ql-sections[b-gba25bxpef],
    .ql-subtabs[b-gba25bxpef],
    .mu-toolbar[b-gba25bxpef],
    .ql-drawer-overlay[b-gba25bxpef],
    .uf-overlay[b-gba25bxpef],
    .mu-foot[b-gba25bxpef],
    .ql-tf-pager[b-gba25bxpef],
    .bspl-foot-btn[b-gba25bxpef],
    .ql-bal-toggle[b-gba25bxpef] {
        display: none !important;
    }

    .ql-body[b-gba25bxpef] {
        display: block;
    }

    .ql-balance[b-gba25bxpef] {
        width: 100%;
        margin-top: 12px;
        page-break-inside: avoid;
    }

    .mu-table-wrap[b-gba25bxpef], .ql-thalf[b-gba25bxpef] {
        max-height: none !important;
        overflow: visible !important;
    }

    .mu-table thead th[b-gba25bxpef] {
        position: static !important;
    }

    .mu-table tfoot td[b-gba25bxpef], .ql-tf-bar[b-gba25bxpef], .ql-thalf-title[b-gba25bxpef] {
        position: static !important;
    }

    .mu-card[b-gba25bxpef] {
        border: none;
        box-shadow: none;
    }
}


/* ── Fixed page footer (pager + export icons) ── */
.ql-footer-fixed[b-gba25bxpef] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
}

/* Export/print icons use the shared .bspl-foot-btn classes (matching BSPL) —
   see common-page-chrome.css; nothing page-local needed here anymore. */

/* ── Others Links (section-bar dropdown) ── */
.ql-otherlinks[b-gba25bxpef] {
    position: relative;
    display: inline-block;
}

.ql-otherlinks-btn[b-gba25bxpef] {
    color: #1a56a7;
    border-color: #c3d4ec;
    text-transform: none;
}

.ql-otherlinks-menu[b-gba25bxpef] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 200;
    min-width: 170px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.15);
    display: flex;
    flex-direction: column;
    padding: 6px;
}

    .ql-otherlinks-menu button[b-gba25bxpef] {
        background: none;
        border: none;
        text-align: left;
        padding: 8px 10px;
        font-size: 12.5px;
        color: #1a2537;
        border-radius: 6px;
        font-family: inherit;
        cursor: pointer;
    }

        .ql-otherlinks-menu button:hover:not(:disabled)[b-gba25bxpef] {
            background: #f1f5f9;
        }

        .ql-otherlinks-menu button:disabled[b-gba25bxpef] {
            color: #94a3b8;
            cursor: not-allowed;
        }


/* =====================================================================
   CONSOLIDATED — page pinning + sticky header/footer (single source of
   truth; everything else in this file that touches .mu-page / .ql-body /
   .mu-card / .mu-table-wrap sizing was left alone above, but THIS block
   is last in the file, so it wins any cascade conflict without needing
   to hunt down every prior declaration).
   ===================================================================== */

/* .mu-page: full-height flex column. height:100% depends on every
   ancestor up to the viewport having a definite height; min-height:100vh
   is a hard floor that works regardless of whether that chain holds. */
.mu-page[b-gba25bxpef] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

/* .ql-body: fills whatever's left after the title block + section/mode
   tabs. min-height:0 is required for a flex child to be allowed to
   shrink below its content size — without it, a tall table can force
   .ql-body past .mu-page's height instead of scrolling internally. */
.ql-body[b-gba25bxpef] {
    flex: 1;
    min-height: 0;
}

    .ql-body .mu-card[b-gba25bxpef] {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
        overflow: hidden;
    }

    /* .mu-table-wrap is the ONLY element that scrolls vertically. Header and
   footer stick to its top/bottom (below) instead of scrolling with it. */
    .ql-body .mu-table-wrap[b-gba25bxpef] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

/* ql-balance sizes to its own content — never scrolls, never gets capped. */
/*.ql-balance {
    max-height: none;
    overflow: visible;
}*/

/* balance panel: content height only, don't stretch with the card */
.ql-balance[b-gba25bxpef] {
    align-self: flex-start;
    max-height: 100%;
    overflow: auto;
}
/* Sticky header — was missing entirely, which is why a long table's
   column headers scrolled away with the rows instead of staying pinned
   at the top of .mu-table-wrap. Needs an opaque background since content
   scrolls underneath it. */
.mu-table thead th[b-gba25bxpef] {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* Sticky totals row — pins to the bottom of .mu-table-wrap regardless of
   how many rows are above it, instead of drifting down the page as more
   rows are added. (Was already sticky, reinforced here with a guaranteed
   z-index + opaque background so scrolling rows can't visually bleed
   through or paint over it.) */
.mu-table tfoot td[b-gba25bxpef] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #fbfcfe;
}

/* Footer is the last flex child of .mu-page → always at the true bottom */
.ql-footer-fixed[b-gba25bxpef] {
    flex-shrink: 0;
}

/* T-format / Compare halves: fill the card instead of viewport-relative heights */
.mu-table-wrap:has(.ql-tformat)[b-gba25bxpef] {
    overflow: hidden;
}

.ql-tformat[b-gba25bxpef] {
    height: 100%;
    box-sizing: border-box;
}

    .ql-tformat .ql-thalf[b-gba25bxpef] {
        max-height: 100%;
    }

.ql-lnk-parent td[b-gba25bxpef] {
    font-weight: 600;
    background: #fbfcfe;
}

.ql-lnk-child td[b-gba25bxpef] {
    color: #475569;
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as DocumentGrid.razor.css / BSPL.razor.css / ITB.razor.css.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-gba25bxpef] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-gba25bxpef] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/*fixed other links close*/
.ql-ol-overlay[b-gba25bxpef] {
    position: fixed;
    inset: 0;
    z-index: 40; /* below the menu, above everything else */
}

.ql-grp-toggle[b-gba25bxpef] {
    background: none;
    border: none;
    cursor: pointer;
    width: 18px;
    margin-right: 4px;
}


/*ledger search suggestion*/

.ql-led-suggest-row[b-gba25bxpef] {
    padding: 8px 12px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 13px;
}

    .ql-led-suggest-row:hover[b-gba25bxpef] {
        background: #f1f5f9;
    }

.ql-led-suggest-code[b-gba25bxpef] {
    color: #64748b;
}

/*for redirect form*/
.ql-quick-actions[b-gba25bxpef] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 6px;
}

.ql-qa-item[b-gba25bxpef] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 8px;
    background: none;
    border: none;
    border-radius: 6px;
    text-align: left;
    font-size: 13px;
    font-weight: 400;
    color: #1a2537;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-qa-item i[b-gba25bxpef] {
        width: 16px;
        text-align: center;
        color: #64748b;
        font-size: 13px;
    }

    .ql-qa-item:hover:not(:disabled)[b-gba25bxpef] {
        background: #f1f5f9;
    }

    .ql-qa-item:disabled[b-gba25bxpef] {
        color: #cbd5e1;
        cursor: not-allowed;
    }

        .ql-qa-item:disabled i[b-gba25bxpef] {
            color: #cbd5e1;
        }
/* ── Graph tab (Highcharts) — dark card matching old CB/Trans chart ── */
.ql-graph-card[b-gba25bxpef] {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 16px 20px;
}

.ql-graph-title[b-gba25bxpef] {
    color: #1a2537;
}

/* ── Ledger Print tab (in-page PDF viewer) — was referenced in markup but
   never actually added to this file, so the <iframe> had zero matching CSS
   and fell back to the browser's default 300x150px size. ── */
.ql-ledgerprint-wrap[b-gba25bxpef] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 60vh;
}

.ql-ledgerprint-toolbar[b-gba25bxpef] {
    padding: 10px 14px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

.ql-ledgerprint-frame[b-gba25bxpef] {
    flex: 1;
    width: 100%;
    border: none;
    min-height: 65vh;
}

.ql-vsquare-btn[b-gba25bxpef] {
    display: inline-flex;
    width: 10px;
    height: 10px;
    min-width: 10px;
    background-color: #1ab99a; /* fallback if VColor missing — no longer !important */
    border: none;
    border-radius: 2px;
    flex: 0 0 10px;
    cursor: pointer;
    padding: 0;
    margin: 0;
    line-height: 0;
    appearance: none;
    -webkit-appearance: none;
}

    .ql-vsquare-btn:hover[b-gba25bxpef] {
        opacity: 0.75;
    }


.ql-tabs[b-gba25bxpef] {
    display: flex;
    gap: 6px;
    align-items: flex-start; /* prevents the wrap div's height from stretching siblings */
}

.ql-tab-hover-wrap[b-gba25bxpef] {
    position: relative;
    display: inline-flex; /* was display:inline-block — inline-flex keeps it sized to just the button */
}

.ql-tab-hover-menu[b-gba25bxpef] {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 60;
    min-width: 190px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.15);
    flex-direction: column;
    padding: 6px;
}

.ql-tab-hover-wrap:hover .ql-tab-hover-menu[b-gba25bxpef] {
    display: flex;
}

.ql-otherlinks-menu[b-gba25bxpef] {
    display: none; /* ADD THIS — was missing, so it rendered visible unconditionally */
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 200;
    min-width: 170px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.15);
    flex-direction: column;
    padding: 6px;
}

.ql-otherlinks[b-gba25bxpef]::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: 6px;
}

.ql-otherlinks:hover .ql-otherlinks-menu[b-gba25bxpef] {
    display: flex;
}

.ql-tab-hover-menu button[b-gba25bxpef] {
    background: none;
    border: none;
    text-align: left;
    padding: 8px 10px;
    font-size: 12.5px;
    color: #1a2537;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
}

    .ql-tab-hover-menu button:hover[b-gba25bxpef] {
        background: #f1f5f9;
    }

/*for  transaction PopUp*/
.ql-tab-hover-menu[b-gba25bxpef] {
    padding: 6px;
    gap: 2px;
    min-width: 210px;
}

    .ql-tab-hover-menu button[b-gba25bxpef] {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 9px 12px;
        font-size: 13px;
    }

        .ql-tab-hover-menu button.active[b-gba25bxpef] {
            background: #1ab394;
            color: #fff;
            font-weight: 600;
        }

.ql-tab-hover-menu[b-gba25bxpef] {
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity 0.14s ease, transform 0.14s ease;
    pointer-events: none;
}

.ql-tab-hover-wrap:hover .ql-tab-hover-menu[b-gba25bxpef] {
    display: flex;
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.ql-tab-hover-wrap[b-gba25bxpef]::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: 6px;
}

.ql-tab-hover-menu button:last-child[b-gba25bxpef] {
    border-top: 1px solid #f1f5f9;
    margin-top: 2px;
}

.ql-lbl-short[b-gba25bxpef] {
    display: none;
}

.ql-lbl-full[b-gba25bxpef] {
    display: inline;
}

@media (max-width: 640px) {
    .ql-lbl-full[b-gba25bxpef] {
        display: none;
    }

    .ql-lbl-short[b-gba25bxpef] {
        display: inline;
    }

    .ql-tabs[b-gba25bxpef] {
        gap: 3px;
    }

    .ql-tab[b-gba25bxpef],
    .ql-section[b-gba25bxpef] {
        padding: 6px 8px;
        font-size: 11px;
        min-width: unset;
    }

    .mu-toolbar[b-gba25bxpef] {
        flex-wrap: wrap;
        gap: 6px;
    }
}

@media (max-width: 640px) {
    .ql-tabs[b-gba25bxpef] {
        overflow-x: auto;
        flex-wrap: nowrap;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

        .ql-tabs[b-gba25bxpef]::-webkit-scrollbar {
            display: none;
        }
}

@media (max-width: 640px) {
    .ql-tab-hover-menu.ql-tab-menu-open[b-gba25bxpef] {
        display: flex !important;
        opacity: 1 !important;
        transform: translateY(0) !important;
        pointer-events: auto !important;
    }
}

.ql-tab:disabled[b-gba25bxpef] {
    color: #cbd5e1;
    cursor: not-allowed;
    background: #f7f9fc;
    border-color: #e5e7eb;
}

.mu-table tbody td.ql-drcr.cr[b-gba25bxpef] {
    color: #800000;
}
/* /Components/Pages/Transactions/Register.razor.rz.scp.css */
/* =====================================================================
   GAINS — Registers.razor.css   (Transactions → Registers, page-scoped)
   ONLY Registers-specific additions. Base look (mu- grid system,
   ql- filter/field/tabs, uf- modal, bspl- title block) comes from
   masters-forms.css + QLedger.razor.css already loaded globally.
   ===================================================================== */

/* ── Type-picker modal (the "REGISTERS" popup) ── */
.rg-type-modal[b-j7xjuzm8zh] {
    width: min(760px, 92vw);
}

.rg-type-columns[b-j7xjuzm8zh] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 20px 24px;
}

.rg-type-col[b-j7xjuzm8zh] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rg-type-item[b-j7xjuzm8zh] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border: none;
    background: transparent;
    border-radius: 8px;
    text-align: left;
    font-size: 13px;
    color: var(--mu-text, #374151);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

    .rg-type-item i[b-j7xjuzm8zh] {
        font-size: 12px;
        opacity: 0.7;
    }

    .rg-type-item:hover[b-j7xjuzm8zh] {
        background: var(--mu-hover-bg, #f3f4f6);
    }

    .rg-type-item.active[b-j7xjuzm8zh] {
        background: var(--mu-thead-bg, #306B9C);
        color: #fff;
    }

.rg-type-footer[b-j7xjuzm8zh] {
    display: flex;
    justify-content: flex-end;
    padding: 12px 24px 20px;
}

/* ── Summary tab: three grids side by side (matches the screenshot) ── */
/* ── Summary layout: left stack (consolidated + monthwise), right wide party grid ── */
.rg-summary-grid[b-j7xjuzm8zh] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
    gap: 16px;
    align-items: start;
}

.rg-summary-left[b-j7xjuzm8zh] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

.rg-summary-col[b-j7xjuzm8zh] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
}

.rg-summary-title[b-j7xjuzm8zh] {
    font-weight: 600;
    font-size: 13px;
    padding: 8px 10px;
    background: linear-gradient(135deg, #eef7f0, #e3f1ea);
    color: #2f5f4c;
}

/* Containment: each grid scrolls inside its own box, never bleeds out */
.rg-summary-scroll[b-j7xjuzm8zh] {
    max-height: 420px;
    overflow: auto;
    min-width: 0;
}

@media (max-width: 1100px) {
    .rg-summary-grid[b-j7xjuzm8zh] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================================
   The rules below are copied from QLedger.razor.css, not written fresh.
   Blazor CSS isolation scopes a component's .razor.css file to only that
   component's own rendered markup — so QLedger's .ql-* rules never reach
   Registers.razor even though the class names match. Every .ql-* class
   used in Registers.razor's markup needs its own copy here for the same
   reason. If QLedger.razor.css's versions of these change, update both.
   ===================================================================== */

.ql-sections[b-j7xjuzm8zh] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 0px 10px;
}

.ql-section[b-j7xjuzm8zh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-section i[b-j7xjuzm8zh] {
        font-size: 15px;
    }

    .ql-section:hover[b-j7xjuzm8zh] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .ql-section.active[b-j7xjuzm8zh] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

.ql-body[b-j7xjuzm8zh] {
    display: flex;
    gap: 16px;
    align-items: stretch;
    overflow: hidden;
}

.ql-ledger[b-j7xjuzm8zh] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ql-vnum[b-j7xjuzm8zh] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .ql-vnum:hover[b-j7xjuzm8zh] {
        text-decoration: underline;
    }

/* Empty / error states */
.ql-empty-state[b-j7xjuzm8zh] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .ql-empty-state p[b-j7xjuzm8zh] {
        margin: 4px 0;
    }

    .ql-empty-state strong[b-j7xjuzm8zh] {
        color: #1a2537;
    }

.ql-error[b-j7xjuzm8zh] {
    color: #dc2626;
}

.ql-drawer-section[b-j7xjuzm8zh] {
    margin-top: 6px;
    padding: 8px 12px;
    border-radius: 6px;
    background: #1ab99a;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ql-field[b-j7xjuzm8zh] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

.ql-led-row[b-j7xjuzm8zh] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-j7xjuzm8zh] {
        flex: 1;
        min-width: 0;
    }

.ql-led-pick[b-j7xjuzm8zh] {
    cursor: pointer;
    background: #fff;
}

.ql-led-btn[b-j7xjuzm8zh] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-led-btn:hover[b-j7xjuzm8zh] {
        background: #0f3d82;
    }

.ql-check[b-j7xjuzm8zh] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

    .ql-check input[b-j7xjuzm8zh] {
        accent-color: #1ab99a;
    }

    .ql-check:has(input:disabled)[b-j7xjuzm8zh] {
        color: #94a3b8;
    }

/* ── Ledger picker popup: QL additions over uf-modal ── */
.ql-lp-overlay[b-j7xjuzm8zh] {
    z-index: 1300;
}


.ql-lp-modal[b-j7xjuzm8zh] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-j7xjuzm8zh] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .ql-modal-search .uf-input[b-j7xjuzm8zh] {
        flex: 1 1 auto;
        min-width: 0;
    }

.ql-lp-code[b-j7xjuzm8zh] {
    flex: 0 1 120px !important;
}

.ql-modal-body[b-j7xjuzm8zh] {
    flex: 1;
    overflow-y: auto;
}

.ql-lp-row[b-j7xjuzm8zh] {
    cursor: pointer;
}

.ql-lp-idx[b-j7xjuzm8zh] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-j7xjuzm8zh] {
    color: #1a56a7;
    font-weight: 600;
}

.ql-lp-name[b-j7xjuzm8zh] {
    color: #1a56a7;
    font-weight: 500;
}

/* =====================================================================
   Sizing chain — copied from the "CONSOLIDATED" block at the end of
   QLedger.razor.css. .mu-table-wrap's global rule in masters-forms.css
   gives it a fixed 540px height; this block overrides that so the whole
   .mu-page → .ql-body → .mu-card → .mu-table-wrap chain instead fills
   available height as a flex column, with only .mu-table-wrap scrolling.
   Without this, .mu-card falls back to its global min-height:260px and
   the grid renders collapsed/short. Keep in sync with QLedger's copy.
   ===================================================================== */
.mu-page[b-j7xjuzm8zh] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

.ql-body[b-j7xjuzm8zh] {
    flex: 1;
    min-height: 0;
}

    .ql-body .mu-card[b-j7xjuzm8zh] {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
        overflow: hidden;
    }

    .ql-body .mu-table-wrap[b-j7xjuzm8zh] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

.mu-table thead th[b-j7xjuzm8zh] {
    position: sticky;
    top: 0;
    z-index: 3;
}

.mu-table tfoot td[b-j7xjuzm8zh] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #fbfcfe;
}

/* ── Amount column formatting — right align, tabular nums, Total row spacing ── */
.mu-table thead th.num[b-j7xjuzm8zh] {
    text-align: right;
}

.mu-table td.num[b-j7xjuzm8zh] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-table td.cr[b-j7xjuzm8zh] {
    color: #800000;
}

.ql-drcr[b-j7xjuzm8zh] {
    width: 52px;
    font-size: 12px;
}

.mu-table thead th.ql-drcr[b-j7xjuzm8zh] {
    color: #fff;
}

.mu-table tbody td.ql-drcr[b-j7xjuzm8zh] {
    color: #64748b;
}
.mu-total-row[b-j7xjuzm8zh] {
    height: 40px;
    background: #fff;
    margin-left : 0px;
}
/* ── Fixed page footer (pager + export icons) ── */
.ql-footer-fixed[b-j7xjuzm8zh] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
    flex-shrink: 0; /* last flex child of .mu-page → always at the true bottom */
}

.ql-vnum-cell[b-j7xjuzm8zh] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ql-vsquare-btn[b-j7xjuzm8zh] {
    display: inline-flex;
    width: 10px;
    height: 10px;
    padding: 0;
    border: none;
    border-radius: 2px;
    cursor: pointer;
    flex-shrink: 0;
}

.mu-table td:has(.ql-vnum-cell)[b-j7xjuzm8zh] {
    vertical-align: middle;
}

/* /Components/Pages/Transactions/TDS.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   (Same block as DocumentGrid.razor.css / BSPL.razor.css.)
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-v12h5cx2bi] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-v12h5cx2bi] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-v12h5cx2bi] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/* =====================================================================
   TDS.razor.css
   Page layout + tab styling — scoped to this component only.
   Header (bspl-title-block), footer (bspl-footer), table (mu-table),
   filter drawer (mu-drawer/mu-fld) already come from shared
   masters-forms.css / common-page-chrome.css.
   ===================================================================== */

.itb-page[b-v12h5cx2bi] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.itb-toptabs[b-v12h5cx2bi] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

    .itb-toptabs button[b-v12h5cx2bi] {
        padding: 7px 16px;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .2px;
        text-transform: uppercase;
        background: #fff;
        color: #555;
        border: 1px solid #d5d5d5;
        border-radius: 6px;
        cursor: pointer;
        font-family: inherit;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition: background .12s, color .12s, border-color .12s;
    }

        .itb-toptabs button:hover[b-v12h5cx2bi] {
            background: #f5f5f5;
        }

        .itb-toptabs button.active[b-v12h5cx2bi] {
            background: #1ab99a;
            color: #fff;
            border-color: #1ab99a;
            font-weight: 700;
        }

        .itb-toptabs button:disabled[b-v12h5cx2bi] {
            opacity: 0.5;
            cursor: not-allowed;
        }

.itb-subtabs[b-v12h5cx2bi] {
    padding-top: 0;
}

    .itb-subtabs button[b-v12h5cx2bi] {
        padding: 5px 12px;
        font-size: 10.5px;
    }

.itb-page .mu-card[b-v12h5cx2bi] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0 16px;
}

.itb-page .mu-table-wrap[b-v12h5cx2bi] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

.itb-grid-table[b-v12h5cx2bi] {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}

    .itb-grid-table thead th[b-v12h5cx2bi] {
        text-align: left;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.3;
        padding: 8px 10px;
    }

    .itb-grid-table tbody td[b-v12h5cx2bi],
    .itb-grid-table tfoot td[b-v12h5cx2bi] {
        border-left: 1px solid #eef0f2;
        border-right: 1px solid #eef0f2;
        border-bottom: 1px solid #eef0f2;
        border-top: 0;
        padding: 8px 10px;
    }

    .itb-grid-table th.num[b-v12h5cx2bi],
    .itb-grid-table td.num[b-v12h5cx2bi] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .itb-grid-table tfoot td[b-v12h5cx2bi] {
        position: sticky;
        bottom: 0;
        background: #f2f2f2;
        font-weight: 600;
    }

.itb-toolbar[b-v12h5cx2bi] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
    flex-shrink: 0;
    flex-wrap: wrap;
    gap: 8px;
}

.itb-page-current[b-v12h5cx2bi] {
    font-size: 12.5px;
    color: #64748b;
}

.itb-error[b-v12h5cx2bi] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

.itb-pageno[b-v12h5cx2bi] {
    padding: 3px 8px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    font-family: inherit;
    color: #333;
}
.itb-grid-table .mu-th-idx[b-v12h5cx2bi],
.itb-grid-table .mu-idx[b-v12h5cx2bi] {
    text-align: right;
}
/* ── Generate Challan modal ── */
.tds-modal-overlay[b-v12h5cx2bi] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.35);
    z-index: 1000;
}

.tds-modal[b-v12h5cx2bi] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    width: 440px;
    max-width: 92vw;
    max-height: 90vh;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0,0,0,.2);
    z-index: 1001;
    display: flex;
    flex-direction: column;
}

.tds-modal-hdr[b-v12h5cx2bi] {
    padding: 14px 18px;
    border-bottom: 1px solid #eef0f2;
    font-weight: 700;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.tds-modal-body[b-v12h5cx2bi] {
    padding: 16px 18px;
    overflow: auto;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.tds-modal-foot[b-v12h5cx2bi] {
    padding: 12px 18px;
    border-top: 1px solid #eef0f2;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.tds-summary[b-v12h5cx2bi] {
    background: #f7f9fa;
    border: 1px solid #eef0f2;
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 12.5px;
}

    .tds-summary div[b-v12h5cx2bi] {
        display: flex;
        justify-content: space-between;
        padding: 3px 0;
    }

    .tds-summary span[b-v12h5cx2bi] {
        color: #64748b;
    }

/* Checkbox column */
.itb-grid-table .mu-th-chk[b-v12h5cx2bi],
.itb-grid-table .mu-td-chk[b-v12h5cx2bi] {
    text-align: center;
}

.itb-grid-table tr.row-selected td[b-v12h5cx2bi] {
    background: #eafaf5;
}
/* /Components/Pages/Transactions/TdsChallanIntermediate.razor.rz.scp.css */
.tds-ci-summary[b-ts8hci8fjy] {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    background: #f7f9fa;
    border: 1px solid #eef0f2;
    border-radius: 6px;
    padding: 10px 14px;
    margin: 12px 16px 0;
    font-size: 12.5px;
}

    .tds-ci-summary div[b-ts8hci8fjy] {
        display: flex;
        flex-direction: column;
    }

    .tds-ci-summary span[b-ts8hci8fjy] {
        color: #64748b;
    }

.tds-ci-form[b-ts8hci8fjy] {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    padding: 12px 16px;
}

    .tds-ci-form .mu-fld[b-ts8hci8fjy] {
        min-width: 200px;
    }

.tds-ci-foot[b-ts8hci8fjy] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 16px;
    margin-top: auto;
}

.itb-ok[b-ts8hci8fjy] {
    background: #f0faf4;
    border-left-color: #1a7f4b;
    color: #1a7f4b;
}
.tds-gen-table th[b-ts8hci8fjy], .tds-gen-table td[b-ts8hci8fjy] {
    font-size: 11.5px;
    padding: 6px 8px;
    vertical-align: middle;
}

.tds-gen-table .mu-th-chk[b-ts8hci8fjy], .tds-gen-table .mu-td-chk[b-ts8hci8fjy] {
    text-align: center;
}

.tds-gen-table tr.row-selected td[b-ts8hci8fjy] {
    background: #eafaf5;
}

.tds-sub[b-ts8hci8fjy] {
    color: #1ab99a;
    font-size: 10.5px;
}

.tds-in[b-ts8hci8fjy] {
    width: 90%;
    padding: 2px 4px;
    border: 1px solid #d6dbe0;
    border-radius: 3px;
    font-size: 11px;
}

.tds-gen-table select[b-ts8hci8fjy] {
    width: 100%;
    padding: 3px;
    font-size: 11px;
    border: 1px solid #d6dbe0;
    border-radius: 3px;
}

.tds-ci-foot[b-ts8hci8fjy] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 16px;
    margin-top: auto;
}

.itb-ok[b-ts8hci8fjy] {
    background: #f0faf4;
    border-left-color: #1a7f4b;
    color: #1a7f4b;
}
/* /Components/Pages/Transactions/Voucher/Accounting/AccVoucher.razor.rz.scp.css */
/* =====================================================
   AccVoucher.razor.css

   Rebuilt to match the "Voucher entry form creation" chat's shared,
   restored GAINS-theme mockup (voucher_entry_form_gains_restored.html) —
   a clean two-pane card layout (collapsible Recent-vouchers sidebar +
   dark-green header + underline tabs + inset TDS/GST blocks + a plain
   line-items grid), not the earlier dense ERP-grid look this file
   previously matched. Class names below mirror the mockup's own
   gfield/ginput/gbal-toggle/etc. naming 1:1 (just under an "avc-" prefix,
   since Blazor CSS isolation scopes classes per-file) so the two stay easy
   to compare side by side.
   ===================================================== */

.avc-page[b-1ovu5oocw6] {
    --avc-accent: #1AB99A;
    --avc-accent-dark: #0ea384;
    --avc-accent-bg: #f0fdf9;
    --avc-accent-border: #a7f3d0;
    --avc-header-bg: #0a2a1e;
    --avc-border: #e5e7eb;
    --avc-border-soft: #f3f4f6;
    --avc-text: #111827;
    --avc-muted: #6b7280;
    --avc-muted-light: #9ca3af;
    --avc-danger: #b91c1c;
    --avc-danger-bg: #fef2f2;
    --avc-danger-border: #fecaca;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--avc-text);
    padding: 16px;
}

/* min-height (a FLOOR, not a fixed box) rather than height — .avc-gains-body
   below no longer has its own overflow-y:auto, so this simply stretches
   .avc-action-row to the bottom of the viewport when tab content is short,
   and grows taller (with the browser's own single page scrollbar, not a
   second nested one) on the rare tab whose content genuinely exceeds one
   viewport. The Entry tab's own line-items table has its own internal
   ~390px cap (.avc-lines-scroll) regardless of row count, so in the normal
   case nothing here needs to scroll at all — only that one inner table
   does, which is the only scrollbar that should show while adding rows. */
.avc-shell[b-1ovu5oocw6] {
    max-width: 1300px;
    min-height: calc(100vh - 50px);
    margin: 0 auto;
    background: #ffffff;
    border-radius: 20px;
    border: 0.5px solid var(--avc-border);
    overflow: hidden;
    display: flex;
    align-items: stretch;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .04);
}

/* ── Left: collapsible Recent vouchers sidebar ── */
.avc-sidebar[b-1ovu5oocw6] {
    width: 250px;
    flex-shrink: 0;
    background: #fafafa;
    border-right: 0.5px solid var(--avc-border);
    display: flex;
    flex-direction: column;
    transition: width .18s ease;
}

.avc-sidebar-collapsed[b-1ovu5oocw6] {
    width: 56px;
}

.avc-sidebar-hdr[b-1ovu5oocw6] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-1ovu5oocw6] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-muted);
    white-space: nowrap;
    overflow: hidden;
}

.avc-sidebar-toggle[b-1ovu5oocw6] {
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    border: 1px solid var(--avc-border);
    border-radius: 7px;
    background: #fff;
    color: var(--avc-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 12px;
}

    .avc-sidebar-toggle:hover[b-1ovu5oocw6] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-1ovu5oocw6] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

    .avc-recent-list[b-1ovu5oocw6]::-webkit-scrollbar {
        width: 4px;
    }

    .avc-recent-list[b-1ovu5oocw6]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .avc-recent-list[b-1ovu5oocw6]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-1ovu5oocw6] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background: #ffffff;
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    width: 100%;
    margin-bottom: 6px;
}

    .avc-recent-card:hover[b-1ovu5oocw6],
    .avc-recent-card.active[b-1ovu5oocw6] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-1ovu5oocw6] {
    width: 28px;
    height: 28px;
    border-radius: 7px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.avc-avatar-tint[b-1ovu5oocw6] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-1ovu5oocw6] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-1ovu5oocw6] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-1ovu5oocw6] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-1ovu5oocw6] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-status-badge[b-1ovu5oocw6] {
    flex-shrink: 0;
    border-radius: 6px;
    padding: 1px 6px;
    font-size: 10px;
    font-weight: 600;
}

.avc-status-approved[b-1ovu5oocw6] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-status-pending[b-1ovu5oocw6] {
    background: #fffbeb;
    color: #92400e;
    border: 0.5px solid #fde68a;
}

.avc-status-draft[b-1ovu5oocw6] {
    background: #f3f4f6;
    color: #374151;
    border: 0.5px solid var(--avc-border);
}

.avc-status-rejected[b-1ovu5oocw6] {
    background: var(--avc-danger-bg);
    color: var(--avc-danger);
    border: 0.5px solid var(--avc-danger-border);
}

/* ── Main column ── */
/* Column layout so header/tabs stay put and only .avc-gains-body (flex:1,
   its own overflow-y below) scrolls — min-height:0 is required for a flex
   child's own overflow to actually kick in instead of stretching its
   parent (a common flexbox gotcha). */
.avc-main[b-1ovu5oocw6] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-1ovu5oocw6] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-1ovu5oocw6] {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(26, 185, 154, .15);
    border: 1px solid rgba(26, 185, 154, .3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: var(--avc-accent);
    flex-shrink: 0;
}

.avc-gains-eyebrow[b-1ovu5oocw6] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-1ovu5oocw6] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-1ovu5oocw6] {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, .6);
}

/* ── Tabs (Entry / View / Audit / Documents / CrossLink) — underline style ── */
.avc-gains-tabs[b-1ovu5oocw6] {
    display: flex;
    gap: 4px;
    padding: 0 1.25rem;
    border-bottom: 0.5px solid var(--avc-border-soft);
    background: #fafafa;
    /* No horizontal scroll on desktop/web — all 5 tabs fit on one line at
       normal widths. Scrolling is re-enabled only under the 900px mobile
       breakpoint below, where narrow viewports genuinely need it. */
    overflow-x: visible;
    flex-shrink: 0;
}

.avc-gains-tab[b-1ovu5oocw6] {
    border: none;
    background: none;
    padding: 12px 12px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
    color: var(--avc-muted-light);
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: .12s;
}

    .avc-gains-tab:hover[b-1ovu5oocw6] {
        color: var(--avc-header-bg);
    }

    .avc-gains-tab.active[b-1ovu5oocw6] {
        color: var(--avc-header-bg);
        border-bottom-color: var(--avc-accent);
    }

/* flex-shrink:0 / no overflow control — this never clips or scrolls on its
   own. When a tab's content is genuinely taller than one viewport, this box
   (and .avc-main/.avc-shell around it) simply grows and the browser's own
   single page scrollbar appears — there's deliberately no second, nested
   scrollbar competing with the line-items table's own .avc-lines-scroll
   (which is what actually caps THAT growth). Bottom padding reserves room
   for .avc-action-row, now a real position:fixed bar (matching InvVoucher's
   .iv-footer-bar) rather than relying on flex-grow to push it to the
   viewport's bottom edge — same 86px InvVoucher itself reserves via
   .iv-page's own bottom padding. */
.avc-gains-body[b-1ovu5oocw6] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-panel-lead[b-1ovu5oocw6] {
    font-size: 13px;
    color: var(--avc-muted);
    margin: 0 0 10px;
}

.avc-empty-block[b-1ovu5oocw6] {
    color: var(--avc-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

/* ── Entry quick-action strip ── */
.avc-entry-action-strip[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 6px;
    min-height: 42px;
    padding: 5px 6px;
    margin-bottom: 8px;
    background: #065f46;
    border-radius: 10px;
    box-sizing: border-box;
}

.avc-entry-action-btn[b-1ovu5oocw6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 30px;
    padding: 5px 12px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 7px;
    background: transparent;
    color: #fff;
    font-family: inherit;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .avc-entry-action-btn:hover[b-1ovu5oocw6] {
        background: rgba(255, 255, 255, .12);
        border-color: rgba(255, 255, 255, .42);
    }

    .avc-entry-action-btn.active[b-1ovu5oocw6] {
        background: #fff;
        border-color: #fff;
        color: #065f46;
    }

    .avc-entry-action-btn i[b-1ovu5oocw6] {
        font-size: 12px;
    }

.avc-entry-action-badge[b-1ovu5oocw6] {
    background: rgba(255, 255, 255, .16);
    border-radius: 5px;
    padding: 1px 5px;
    font-size: 10px;
    font-weight: 700;
}

.avc-entry-action-btn.active .avc-entry-action-badge[b-1ovu5oocw6] {
    background: rgba(6, 95, 70, .10);
}

/* ── Field grid (Voucher type/no/date/reference, Audit/Documents fields) ── */
.avc-gfield-grid[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-bottom: 8px;
}

.avc-gfield[b-1ovu5oocw6] {
    display: block;
    margin-bottom: .35rem;
}

.avc-gfield-grid .avc-gfield[b-1ovu5oocw6] {
    margin-bottom: 0;
}

.avc-gfield-block:last-child[b-1ovu5oocw6] {
    margin-bottom: 0;
}

.avc-gfield span[b-1ovu5oocw6] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--avc-muted);
    margin-bottom: 4px;
}

.avc-ginput[b-1ovu5oocw6] {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--avc-border);
    border-radius: 12px;
    font-size: 14px;
    color: var(--avc-text);
    background: #f9fafb;
    outline: none;
    font-family: inherit;
    padding: 0 12px;
    box-sizing: border-box;
}

    .avc-ginput:hover[b-1ovu5oocw6] {
        border-color: #d1d5db;
    }

    .avc-ginput:focus[b-1ovu5oocw6] {
        border-color: var(--avc-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

/* VoucherTypeDropdown renders its own <select> inside a CHILD component's
   template, so a plain (scoped) ".avc-ginput" rule here would never reach
   it — Blazor's CSS isolation only auto-scopes elements written directly
   in THIS .razor file. ::deep is required to style anything rendered by a
   child component (same reasoning DepotDropdown's own
   ".avc-depot-inline ::deep select" rule elsewhere in this app needs it). */
.avc-vtype-field[b-1ovu5oocw6]  select {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--avc-border);
    border-radius: 12px;
    font-size: 14px;
    font-family: inherit;
    color: var(--avc-text);
    background: #f9fafb;
    outline: none;
    padding: 0 12px;
    box-sizing: border-box;
}

    .avc-vtype-field[b-1ovu5oocw6]  select:hover {
        border-color: #d1d5db;
    }

    .avc-vtype-field[b-1ovu5oocw6]  select:focus {
        border-color: var(--avc-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

.avc-ginput-white[b-1ovu5oocw6] {
    background: #fff;
}

.avc-ginput[type="number"][b-1ovu5oocw6]::-webkit-inner-spin-button,
.avc-ginput[type="number"][b-1ovu5oocw6]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.avc-ginput[type="number"][b-1ovu5oocw6] {
    -moz-appearance: textfield;
}

.avc-gtextarea[b-1ovu5oocw6] {
    width: 100%;
    border: 1.5px solid var(--avc-border);
    border-radius: 12px;
    font-size: 14px;
    color: var(--avc-text);
    background: #f9fafb;
    padding: 10px 12px;
    font-family: inherit;
    resize: none;
    outline: none;
    box-sizing: border-box;
}

    .avc-gtextarea:focus[b-1ovu5oocw6] {
        border-color: var(--avc-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

/* ── Inset TDS / GST blocks ── */
/* Compact — TDS/GST blocks used to take up a lot of vertical room whenever
   they expanded (14px/16px block padding + 44px-tall inputs/readouts
   inherited from .avc-ginput/.avc-readout, same as the main field grid).
   Scoped to .avc-inset-block specifically so only THESE sections shrink,
   not every input on the page. */
.avc-inset-block[b-1ovu5oocw6] {
    background: #f9fafb;
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    padding: 8px 10px;
    margin-bottom: 8px;
}

.avc-inset-hdr[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 4px;
}

.avc-inset-title[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
}

    .avc-inset-title i[b-1ovu5oocw6] {
        font-size: 13px;
        color: var(--avc-accent);
    }

.avc-inset-block .avc-ginput[b-1ovu5oocw6],
.avc-inset-block .avc-readout[b-1ovu5oocw6] {
    height: 32px;
    border-radius: 7px;
    font-size: 12px;
    padding: 0 8px;
}

.avc-inset-block .avc-gfield span[b-1ovu5oocw6] {
    font-size: 10px;
    margin-bottom: 2px;
}

.avc-inset-block .avc-pill[b-1ovu5oocw6] {
    padding: 4px 10px;
    font-size: 11px;
}

.avc-pill-group[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.avc-pill-label[b-1ovu5oocw6] {
    font-size: 12px;
    color: var(--avc-muted-light);
    margin-right: 2px;
}

.avc-pill[b-1ovu5oocw6] {
    border: 1px solid var(--avc-border);
    background: #fff;
    color: var(--avc-muted);
    font-size: 12px;
    font-weight: 600;
    padding: 6px 14px;
    border-radius: 20px;
    cursor: pointer;
    font-family: inherit;
}

    .avc-pill.active[b-1ovu5oocw6] {
        background: var(--avc-accent);
        color: #fff;
        border-color: var(--avc-accent);
    }

.avc-inset-grid[b-1ovu5oocw6] {
    display: grid;
    gap: 6px;
}

.avc-inset-grid-3[b-1ovu5oocw6] {
    grid-template-columns: 1.5fr 1fr 1fr;
}

.avc-readout[b-1ovu5oocw6] {
    height: 44px;
    border: 1.5px solid var(--avc-border);
    border-radius: 12px;
    background: #f3f4f6;
    display: flex;
    align-items: center;
    padding: 0 12px;
    font-size: 14px;
    font-weight: 600;
    color: var(--avc-text);
    box-sizing: border-box;
}

.avc-readout-muted[b-1ovu5oocw6] {
    color: var(--avc-muted-light);
}

.avc-readout-err[b-1ovu5oocw6] {
    color: var(--avc-danger);
}

.avc-inset-note[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 8px;
}

/* ── Forex checkbox (HSN/GST block header) ── */
.avc-forex-check[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-muted);
    cursor: pointer;
    white-space: nowrap;
}

    .avc-forex-check input[type="checkbox"][b-1ovu5oocw6] {
        width: 14px;
        height: 14px;
        cursor: pointer;
    }

/* ── Documents tab — attached-files section (info strip / Tag File /
   Choose File / grid) — same fields as ChallanEntry.razor's own che-doc-*
   block, restyled to this page's own avc-* theme instead of sharing CSS.
   The info strip itself now reuses .avc-audit-strip/-cell/-divider (see
   below) rather than its own one-off layout. */

.avc-doc-tagrow[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.avc-doc-tag-hint[b-1ovu5oocw6] {
    font-size: 12px;
    color: var(--avc-accent-dark);
    font-style: italic;
}

.avc-doc-uploadrow[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.avc-doc-file-btn[b-1ovu5oocw6] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    border: 1.5px solid var(--avc-border);
    border-radius: 8px;
    padding: 8px 14px;
    color: var(--avc-text);
    cursor: pointer;
    white-space: nowrap;
}

    .avc-doc-file-btn:hover[b-1ovu5oocw6] {
        border-color: var(--avc-accent);
        color: var(--avc-accent-dark);
    }

    /* InputFile renders its own <input type="file"> inside a CHILD
       component's template, so this needs ::deep — same reasoning
       .avc-vtype-field ::deep select above needs it for VoucherTypeDropdown. */
    .avc-doc-file-btn[b-1ovu5oocw6]  input[type="file"] {
        position: absolute;
        inset: 0;
        opacity: 0;
        cursor: pointer;
        width: 100%;
    }

.avc-doc-file-name[b-1ovu5oocw6] {
    font-size: 12px;
    color: var(--avc-muted);
}

/* DocumentTypeDropdown renders its own <select class="dtd-select @CssClass">
   inside a child component too — reaching it by CssClass alone (no local
   ancestor element of ours to hang ::deep off) needs a standalone ::deep
   rule, same as ChallanEntry.razor.css's own "::deep .che-doc-type". */
[b-1ovu5oocw6] .avc-doc-type-select {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--avc-border);
    border-radius: 12px;
    font-size: 14px;
    font-family: inherit;
    color: var(--avc-text);
    background: #fff;
    outline: none;
    padding: 0 12px;
    box-sizing: border-box;
}

.avc-doc-save-btn[b-1ovu5oocw6] {
    width: 100%;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--avc-accent);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
}

    .avc-doc-save-btn:hover[b-1ovu5oocw6] {
        background: var(--avc-accent-dark);
    }

    .avc-doc-save-btn:disabled[b-1ovu5oocw6] {
        opacity: .5;
        cursor: not-allowed;
    }

.avc-doc-msg[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
}

.avc-doc-msg-ok[b-1ovu5oocw6] {
    color: #065f46;
    background: var(--avc-accent-bg);
}

.avc-doc-msg-err[b-1ovu5oocw6] {
    color: var(--avc-danger);
    background: var(--avc-danger-bg);
}

/* Documents grid — a "proper", fully-bordered table with a solid navy
   header band, matching the legacy screen's own grid look (and the same
   #306B9C convention Daybook's grid already uses for ".db-table th" in
   masters-forms.css) rather than the softer borderless .avc-lines-table
   style used for the Debit/Credit rows above. */
.avc-doc-table[b-1ovu5oocw6] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    margin-top: 4px;
}

    .avc-doc-table th[b-1ovu5oocw6] {
        background: #306B9C;
        color: #fff;
        font-weight: 600;
        font-size: 12px;
        text-align: left;
        padding: 8px 10px;
        border: 1px solid #285a82;
    }

    .avc-doc-table td[b-1ovu5oocw6] {
        padding: 8px 10px;
        border: 1px solid var(--avc-border);
        color: var(--avc-text);
    }

    .avc-doc-table tbody tr:nth-child(even)[b-1ovu5oocw6] {
        background: #f9fafb;
    }

    .avc-doc-table .avc-icon-btn[b-1ovu5oocw6] {
        height: 30px;
        width: 30px;
    }

/* ── Line items grid ── */
.avc-lines-section[b-1ovu5oocw6] {
    border-top: 0.5px solid var(--avc-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.avc-lines-toolbar[b-1ovu5oocw6] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.avc-lines-title[b-1ovu5oocw6] {
    font-size: 13px;
    font-weight: 600;
    color: var(--avc-text);
}

/* Caps the line-items table's own height so adding rows scrolls inside this
   box instead of growing the whole page — otherwise the page keeps getting
   taller with every row and the sticky Save bar at the bottom needs the
   entire page scrolled to reach, defeating the point of it being sticky. */
/* Thin, teal-accent scrollbar matching the app's other themed grids
   (masters-forms.css's .mu-table-wrap) — redefined locally rather than
   reusing that class since this table isn't an .mu-table-wrap itself. */
.avc-lines-scroll[b-1ovu5oocw6] {
    /* Sized to fit the header + the default 2 starting rows exactly (no
       spare room) — a taller fixed box (390px was tried) avoids the Save
       bar moving but leaves a big empty gap below a short 2-row voucher;
       a max-height avoids the gap but still lets the box (and the Save bar
       below it) grow with every row until the cap is hit. Matching the
       box to the DEFAULT row count is the only way to get both: no dead
       space in the common case, and the Save bar never moves — the
       tradeoff is that once a 3rd/4th row is added it scrolls inside this
       same small box rather than the box growing to show it. */
    height: 300px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent-border) transparent;
}

    .avc-lines-scroll[b-1ovu5oocw6]::-webkit-scrollbar {
        width: 8px;
    }

    .avc-lines-scroll[b-1ovu5oocw6]::-webkit-scrollbar-track {
        background: transparent;
    }

    .avc-lines-scroll[b-1ovu5oocw6]::-webkit-scrollbar-thumb {
        background: var(--avc-accent-border);
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .avc-lines-scroll[b-1ovu5oocw6]::-webkit-scrollbar-thumb:hover {
            background: var(--avc-accent);
            background-clip: content-box;
        }

    .avc-lines-scroll[b-1ovu5oocw6]::-webkit-scrollbar-corner {
        background: transparent;
    }

.avc-lines-table[b-1ovu5oocw6] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    table-layout: fixed;
}

    .avc-lines-table thead th[b-1ovu5oocw6] {
        position: sticky;
        top: 0;
        background: #fff;
        z-index: 1;
    }

    .avc-lines-table th[b-1ovu5oocw6] {
        text-align: left;
        font-weight: 600;
        font-size: 11px;
        color: var(--avc-muted);
        padding: 0 8px 10px;
    }

    .avc-lines-table td[b-1ovu5oocw6] {
        padding: 8px 8px;
        border-bottom: 0.5px solid var(--avc-border-soft);
    }

    .avc-lines-input[b-1ovu5oocw6],
    .avc-lines-table[b-1ovu5oocw6]  .avc-lines-input {
        width: 100%;
        height: 42px;
        border: 1.5px solid var(--avc-border);
        border-radius: 8px;
        font-size: 13px;
        color: var(--avc-text);
        background: #f9fafb;
        outline: none;
        font-family: inherit;
        padding: 0 10px;
        box-sizing: border-box;
    }

        .avc-lines-input:focus[b-1ovu5oocw6],
        .avc-lines-table[b-1ovu5oocw6]  .avc-lines-input:focus {
            border-color: var(--avc-accent);
            background: #fff;
            box-shadow: 0 0 0 2px rgba(26, 185, 154, .12);
        }

        .avc-lines-input[type="number"][b-1ovu5oocw6]::-webkit-inner-spin-button,
        .avc-lines-input[type="number"][b-1ovu5oocw6]::-webkit-outer-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }

        .avc-lines-input[type="number"][b-1ovu5oocw6] {
            -moz-appearance: textfield;
        }

.avc-icon-btn[b-1ovu5oocw6] {
    height: 42px;
    width: 42px;
    border: 1.5px solid var(--avc-border);
    border-radius: 8px;
    background: #fff;
    color: var(--avc-muted-light);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .avc-icon-btn:hover[b-1ovu5oocw6] {
        color: var(--avc-danger);
        border-color: var(--avc-danger-border);
    }

.avc-closing-muted[b-1ovu5oocw6] {
    color: var(--avc-muted-light);
}

.avc-closing-pos[b-1ovu5oocw6] {
    color: #1d4ed8;
    font-weight: 600;
}

.avc-closing-neg[b-1ovu5oocw6] {
    color: #800000;
    font-weight: 600;
}

.avc-lines-hint[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Totals bar ── */
.avc-totals-bar[b-1ovu5oocw6] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 24px;
    border-top: 0.5px solid var(--avc-border-soft);
    padding-top: 16px;
    margin-bottom: 20px;
    font-size: 13px;
    color: #374151;
    flex-wrap: wrap;
}

    .avc-totals-bar strong[b-1ovu5oocw6] {
        color: var(--avc-text);
        font-weight: 700;
    }

.avc-balance-pill[b-1ovu5oocw6] {
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 12px;
    font-weight: 600;
}

.avc-balance-ok[b-1ovu5oocw6] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-balance-bad[b-1ovu5oocw6] {
    background: var(--avc-danger-bg);
    color: var(--avc-danger);
    border: 0.5px solid var(--avc-danger-border);
}

.avc-validation-msg[b-1ovu5oocw6] {
    margin: -6px 0 16px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--avc-danger);
}

/* ── Buttons ── */
/* Save + New/Delete voucher — New/Delete only render for a voucher that
   already exists on the backend (edit mode), see the Entry tab markup. */
/* A persistent bar shown on every tab (not just Entry) — real
   position:fixed to the bottom of the viewport (matching InvVoucher's own
   .iv-footer-bar/.iv-footer-inner pattern) rather than relying on the flex
   column's flex-grow to push it down, so it stays reachable even while
   scrolled partway through a tall tab, not just on short ones. Buttons kept
   compact (38px instead of the old 48px) so the bar itself stays slim. */
.avc-action-row[b-1ovu5oocw6] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--avc-border);
    box-shadow: 0 -6px 20px rgba(15, 23, 42, .08);
}

.avc-action-row-inner[b-1ovu5oocw6] {
    width: 100%;
    max-width: 1300px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 2rem;
}

/* Compact InvVoucher-style buttons (.iv-btn/.iv-btn-primary/.iv-btn-danger)
   — natural width, not stretched full-width/48px tall like the old
   mockup-scoped Save button. All three classes are only ever used here in
   the action row, so no other button on the page is affected. */
.avc-primary-btn[b-1ovu5oocw6],
.avc-outline-btn[b-1ovu5oocw6],
.avc-danger-btn[b-1ovu5oocw6] {
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    border: 1.5px solid var(--avc-border);
    background: #fff;
    color: var(--avc-text);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    transition: .12s;
}

    .avc-primary-btn:disabled[b-1ovu5oocw6],
    .avc-outline-btn:disabled[b-1ovu5oocw6],
    .avc-danger-btn:disabled[b-1ovu5oocw6] {
        opacity: .5;
        cursor: not-allowed;
    }

.avc-primary-btn[b-1ovu5oocw6] {
    background: var(--avc-accent);
    color: #fff;
    border-color: var(--avc-accent);
}

    .avc-primary-btn:hover[b-1ovu5oocw6] {
        background: var(--avc-accent-dark);
        color: #fff;
    }

.avc-outline-btn:hover[b-1ovu5oocw6] {
    border-color: var(--avc-accent);
    color: var(--avc-accent-dark);
}

.avc-danger-btn:hover[b-1ovu5oocw6] {
    border-color: var(--avc-danger);
    color: var(--avc-danger);
    background: var(--avc-danger-bg);
}

/* ── View tab — saved-voucher cards ── */
.avc-view-card[b-1ovu5oocw6] {
    display: flex;
    gap: 12px;
    padding: 12px;
    background: #ffffff;
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    margin-bottom: 10px;
}

.avc-view-card-main[b-1ovu5oocw6] {
    flex: 1;
    min-width: 0;
}

.avc-view-card-top[b-1ovu5oocw6] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 6px;
    gap: 8px;
}

    .avc-view-card-top strong[b-1ovu5oocw6] {
        font-size: 14px;
        color: var(--avc-text);
    }

.avc-view-card-meta[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-muted-light);
    white-space: nowrap;
}

.avc-view-lines[b-1ovu5oocw6] {
    width: 100%;
    font-size: 12px;
    margin-bottom: 6px;
    border-collapse: collapse;
}

    .avc-view-lines td[b-1ovu5oocw6] {
        padding: 3px 4px;
    }

        .avc-view-lines td:first-child[b-1ovu5oocw6] {
            color: var(--avc-muted);
        }

.avc-view-narration[b-1ovu5oocw6] {
    font-size: 12px;
    color: var(--avc-muted);
    margin-bottom: 6px;
}

/* Wraps the embedded <VHtml> voucher report (Daybook/ChallanGrid/QItem's own
   real print report, not a hand-rolled summary) so it stays contained and
   scrollable inside its View-tab card instead of sprawling full-page-width. */
.avc-view-report[b-1ovu5oocw6] {
    border: 0.5px solid var(--avc-border);
    border-radius: 8px;
    padding: 8px;
    margin-bottom: 8px;
    max-height: 480px;
    overflow: auto;
    background: #fff;
}

.avc-view-chips[b-1ovu5oocw6] {
    margin-bottom: 4px;
}

.avc-chip[b-1ovu5oocw6] {
    display: inline-block;
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
    border-radius: 20px;
    padding: 2px 9px;
    font-size: 11px;
    font-weight: 600;
    margin: 2px 4px 2px 0;
}

.avc-view-tax-line[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-accent);
    margin-top: 2px;
}

.avc-view-card-footer[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 4px;
}

/* ── Audit tab strip ── */
.avc-audit-strip[b-1ovu5oocw6] {
    display: flex;
    gap: 0;
    background: #f9fafb;
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    margin-bottom: 1.5rem;
    overflow: hidden;
}

.avc-audit-cell[b-1ovu5oocw6] {
    flex: 1;
    padding: 12px 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

    .avc-audit-cell i[b-1ovu5oocw6] {
        font-size: 16px;
        color: var(--avc-accent);
        flex-shrink: 0;
    }

    .avc-audit-cell > div:last-child[b-1ovu5oocw6] {
        min-width: 0;
    }

.avc-audit-divider[b-1ovu5oocw6] {
    width: 0.5px;
    background: var(--avc-border);
}

.avc-audit-label[b-1ovu5oocw6] {
    font-size: 10px;
    font-weight: 600;
    color: var(--avc-muted-light);
}

.avc-audit-value[b-1ovu5oocw6] {
    font-size: 12px;
    color: #374151;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── TDS/HSN quick-action buttons — sit inline inside .avc-status-row
   (Entry tab's "Status" field), replacing the old always-visible inline
   inset blocks. ── */
.avc-quick-btn[b-1ovu5oocw6] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    border: 1.5px solid var(--avc-border);
    background: #f9fafb;
    color: var(--avc-text);
    cursor: pointer;
    transition: .12s;
}

    .avc-quick-btn:hover[b-1ovu5oocw6] {
        border-color: var(--avc-accent);
        color: var(--avc-accent-dark);
    }

.avc-quick-btn-on[b-1ovu5oocw6] {
    border-color: var(--avc-accent);
    background: var(--avc-accent-bg);
    color: #065f46;
}

.avc-quick-badge[b-1ovu5oocw6] {
    background: rgba(0, 0, 0, .08);
    border-radius: 6px;
    padding: 1px 6px;
    font-size: 11px;
    font-weight: 700;
}

/* ── TDS/HSN popups — small, centered, self-contained dialogs (own
   overlay/chrome rather than reusing .mu-confirm-*, which is sized for a
   short title+text+2-buttons confirm, not a form with several fields). ── */
.avc-modal-overlay[b-1ovu5oocw6] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 16px;
}

.avc-modal[b-1ovu5oocw6] {
    background: #fff;
    border-radius: 14px;
    width: 100%;
    max-width: 560px;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
}

.avc-modal-hdr[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--avc-border);
    font-size: 14px;
    font-weight: 700;
    color: var(--avc-text);
}

    .avc-modal-hdr i[b-1ovu5oocw6] {
        color: var(--avc-accent);
        margin-right: 4px;
    }

.avc-modal-x[b-1ovu5oocw6] {
    background: none;
    border: none;
    font-size: 22px;
    line-height: 1;
    color: var(--avc-muted);
    cursor: pointer;
    padding: 0 4px;
}

    .avc-modal-x:hover[b-1ovu5oocw6] {
        color: var(--avc-text);
    }

.avc-modal-body[b-1ovu5oocw6] {
    padding: 16px 18px;
    overflow-y: auto;
    flex: 1 1 auto;
}

.avc-modal-footer[b-1ovu5oocw6] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 18px;
    border-top: 1px solid var(--avc-border);
}

/* ── Shared utilities ── */
.text-end[b-1ovu5oocw6] {
    text-align: right;
}

.text-center[b-1ovu5oocw6] {
    text-align: center;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .avc-shell[b-1ovu5oocw6] {
        flex-direction: column;
        border-radius: 14px;
    }

    .avc-sidebar[b-1ovu5oocw6] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-sidebar-collapsed .avc-sidebar-hdr[b-1ovu5oocw6] {
        justify-content: flex-end;
    }

    .avc-gfield-grid[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }

    .avc-inset-grid-3[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }

    .avc-modal[b-1ovu5oocw6] {
        max-width: 100%;
        max-height: 92vh;
    }


    .avc-gains-body[b-1ovu5oocw6] {
        padding: 1.25rem 1.25rem 86px;
    }

    .avc-action-row-inner[b-1ovu5oocw6] {
        padding: 10px 1.25rem;
    }

    .avc-gains-tabs[b-1ovu5oocw6] {
        overflow-x: auto;
    }
}

/* =====================================================
   GAINS Voucher UX V2 — contextual three-pane redesign
   ===================================================== */
.avc-page[b-1ovu5oocw6] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-1ovu5oocw6] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-1ovu5oocw6] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-1ovu5oocw6] {
    width: 52px;
}

.avc-gains-header[b-1ovu5oocw6] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-1ovu5oocw6] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-1ovu5oocw6] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-1ovu5oocw6] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-1ovu5oocw6] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-1ovu5oocw6] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-1ovu5oocw6] {
    padding: 14px 18px 88px;
}

.avc-entry-layout[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 14px;
    align-items: start;
}

.avc-entry-main[b-1ovu5oocw6] {
    min-width: 0;
}

.avc-entry-action-strip[b-1ovu5oocw6] {
    min-height: 36px;
    padding: 4px;
    margin-bottom: 10px;
    background: #f4f7f6;
    border: 1px solid #e2ebe8;
}

.avc-entry-action-btn[b-1ovu5oocw6] {
    min-height: 28px;
    color: #40524d;
    border-color: transparent;
}

    .avc-entry-action-btn:hover[b-1ovu5oocw6] {
        background: #fff;
        border-color: #d7e5e0;
    }

    .avc-entry-action-btn.active[b-1ovu5oocw6] {
        background: #e3f7f1;
        color: #08765f;
        border-color: #b8e8da;
    }

.avc-entry-action-badge[b-1ovu5oocw6] {
    background: rgba(8,118,95,.09);
}

.avc-gfield-grid[b-1ovu5oocw6] {
    grid-template-columns: minmax(230px, 1.35fr) minmax(170px, .75fr) minmax(210px, 1fr);
    gap: 10px;
}

.avc-gfield span[b-1ovu5oocw6] {
    font-size: 10.5px;
    margin-bottom: 3px;
}

.avc-ginput[b-1ovu5oocw6], .avc-vtype-field[b-1ovu5oocw6]  select {
    height: 38px;
    border-radius: 8px;
    font-size: 13px;
    background: #fff;
}

.avc-gtextarea[b-1ovu5oocw6] {
    min-height: 58px;
    border-radius: 8px;
    font-size: 13px;
    background: #fff;
}

.avc-lines-section[b-1ovu5oocw6] {
    padding-top: 12px;
    margin-bottom: 10px;
}

.avc-lines-toolbar[b-1ovu5oocw6] {
    margin-bottom: 9px;
}

.avc-lines-scroll[b-1ovu5oocw6] {
    height: 310px;
    border: 1px solid #e5ece9;
    border-radius: 10px;
    background: #fff;
}

.avc-lines-table thead th[b-1ovu5oocw6] {
    background: #f6f9f8;
    padding: 10px 8px;
    border-bottom: 1px solid #e4ebe8;
}

.avc-lines-table td[b-1ovu5oocw6] {
    padding: 6px 8px;
}

.avc-lines-input[b-1ovu5oocw6], .avc-lines-table[b-1ovu5oocw6]  .avc-lines-input {
    height: 38px;
    border-radius: 7px;
    background: #fff;
}

.avc-icon-btn[b-1ovu5oocw6] {
    width: 36px;
    height: 36px;
    border-radius: 7px;
}

.avc-summary-strip[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    justify-content: stretch;
    border: 1px solid #dfeae6;
    border-radius: 10px;
    padding: 0;
    margin: 10px 0 0;
    background: #f5fbf9;
    overflow: hidden;
}

.avc-summary-cell[b-1ovu5oocw6] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 10px 14px;
    border-right: 1px solid #dfeae6;
}

    .avc-summary-cell:last-child[b-1ovu5oocw6] {
        border-right: none;
    }

    .avc-summary-cell span[b-1ovu5oocw6] {
        font-size: 10px;
        color: #71817c;
    }

    .avc-summary-cell strong[b-1ovu5oocw6] {
        font-size: 14px;
        color: #17231f;
    }

    .avc-summary-cell small[b-1ovu5oocw6] {
        font-size: 10px;
    }

.avc-balanced-text[b-1ovu5oocw6] {
    color: #078060;
}

.avc-unbalanced-text[b-1ovu5oocw6] {
    color: #b45309;
}

.avc-context-panel[b-1ovu5oocw6] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    position: sticky;
    top: 10px;
}

.avc-context-card[b-1ovu5oocw6] {
    width: 100%;
    padding: 13px;
    border: 1px solid #e2e9e6;
    border-radius: 10px;
    background: #fff;
    box-sizing: border-box;
    text-align: left;
    font-family: inherit;
}

.avc-context-primary[b-1ovu5oocw6] {
    background: linear-gradient(145deg, #effbf7, #fff);
    border-color: #ccebe1;
}

.avc-context-card-head[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 10px;
    font-size: 12px;
    font-weight: 700;
    color: #23332e;
}

    .avc-context-card-head > i[b-1ovu5oocw6] {
        color: #0f9f81;
    }

.avc-context-empty[b-1ovu5oocw6] {
    font-size: 11px;
    color: #94a19d;
    line-height: 1.5;
}

.avc-context-ledger[b-1ovu5oocw6] {
    font-size: 11px;
    color: #667771;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-context-amount[b-1ovu5oocw6] {
    margin-top: 5px;
    font-size: 22px;
    line-height: 1.2;
    font-weight: 750;
    color: #078060;
}

    .avc-context-amount small[b-1ovu5oocw6] {
        font-size: 11px;
        font-weight: 700;
    }

.avc-context-caption[b-1ovu5oocw6] {
    margin-top: 5px;
    font-size: 10px;
    color: #84918d;
}

.avc-context-row[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid #f0f3f2;
    font-size: 11px;
}

    .avc-context-row:last-child[b-1ovu5oocw6] {
        border-bottom: none;
    }

    .avc-context-row span[b-1ovu5oocw6] {
        color: #7b8984;
    }

    .avc-context-row strong[b-1ovu5oocw6] {
        color: #25332f;
        font-weight: 650;
        text-align: right;
    }

.avc-context-dot[b-1ovu5oocw6] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #cbd5d1;
}

    .avc-context-dot.is-active[b-1ovu5oocw6] {
        background: #16a37f;
        box-shadow: 0 0 0 4px rgba(22,163,127,.12);
    }

.avc-context-action[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: 34px 1fr auto;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: .12s ease;
}

    .avc-context-action:hover[b-1ovu5oocw6] {
        border-color: #8dd5c1;
        transform: translateY(-1px);
        box-shadow: 0 5px 16px rgba(15, 118, 92, .08);
    }

    .avc-context-action > span:nth-child(2)[b-1ovu5oocw6] {
        display: flex;
        flex-direction: column;
        gap: 3px;
        min-width: 0;
    }

    .avc-context-action strong[b-1ovu5oocw6] {
        font-size: 12px;
        color: #25332f;
    }

    .avc-context-action small[b-1ovu5oocw6] {
        font-size: 10px;
        color: #84918d;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .avc-context-action > i[b-1ovu5oocw6] {
        font-size: 10px;
        color: #96a39f;
    }

.avc-context-action-icon[b-1ovu5oocw6] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    color: #078060;
    background: #e8f8f3;
}

.avc-action-row-inner[b-1ovu5oocw6] {
    max-width: 1600px;
    justify-content: flex-end;
    padding: 9px 22px;
}

.avc-primary-btn[b-1ovu5oocw6], .avc-outline-btn[b-1ovu5oocw6], .avc-danger-btn[b-1ovu5oocw6] {
    min-height: 38px;
}

.avc-primary-btn[b-1ovu5oocw6] {
    min-width: 150px;
    justify-content: center;
}

@media (max-width: 1180px) {
    .avc-entry-layout[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }

    .avc-context-panel[b-1ovu5oocw6] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        position: static;
    }
}

@media (max-width: 900px) {
    .avc-gfield-grid[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }

    .avc-summary-strip[b-1ovu5oocw6] {
        grid-template-columns: repeat(2, 1fr);
    }

    .avc-summary-cell:nth-child(2)[b-1ovu5oocw6] {
        border-right: none;
    }

    .avc-context-panel[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }
}


/* Payment/receipt/contra transaction metadata */
.avc-transaction-block[b-1ovu5oocw6] {
    margin: 10px 0;
    padding: 10px 12px;
    border: 1px solid #dfeae6;
    border-radius: 10px;
    background: #f8fbfa;
}

.avc-transaction-title[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 8px;
    font-size: 11px;
    font-weight: 700;
    color: #315249;
}

    .avc-transaction-title i[b-1ovu5oocw6] {
        color: var(--avc-accent-dark);
    }

.avc-transaction-grid[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.avc-transaction-note[b-1ovu5oocw6] {
    margin-top: 5px;
    font-size: 10.5px;
    color: var(--avc-muted);
}

@media (max-width: 900px) {
    .avc-transaction-grid[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   GAINS Voucher Phase 2 — active row + shortcut help
   ===================================================== */
.avc-entry-action-spacer[b-1ovu5oocw6] {
    flex: 1 1 auto;
}

.avc-shortcut-help-btn[b-1ovu5oocw6] {
    margin-left: auto;
}

.avc-lines-table tbody tr[b-1ovu5oocw6] {
    transition: background-color .12s ease, box-shadow .12s ease;
}

    .avc-lines-table tbody tr.avc-row-active[b-1ovu5oocw6] {
        background: #effbf7;
        box-shadow: inset 3px 0 0 var(--avc-accent);
    }

        .avc-lines-table tbody tr.avc-row-active td[b-1ovu5oocw6] {
            border-bottom-color: #d7eee7;
        }

.avc-shortcut-modal[b-1ovu5oocw6] {
    max-width: 620px;
}

.avc-shortcut-grid[b-1ovu5oocw6] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 12px;
}

.avc-shortcut-row[b-1ovu5oocw6] {
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 9px 10px;
    border: 1px solid var(--avc-border);
    border-radius: 9px;
    background: #f9fafb;
}

.avc-shortcut-keys[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.avc-shortcut-modal kbd[b-1ovu5oocw6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    height: 25px;
    padding: 0 7px;
    border: 1px solid #cfd8d5;
    border-bottom-width: 2px;
    border-radius: 6px;
    background: #fff;
    color: #24332e;
    font: 600 11px/1 'Inter', 'Segoe UI', sans-serif;
    box-shadow: 0 1px 1px rgba(15, 23, 42, .05);
}

.avc-shortcut-action[b-1ovu5oocw6] {
    color: var(--avc-muted);
    font-size: 12px;
    text-align: right;
}

.avc-shortcut-tip[b-1ovu5oocw6] {
    margin-top: 12px;
    padding: 9px 11px;
    border-radius: 8px;
    background: var(--avc-accent-bg);
    color: #35675b;
    font-size: 11px;
}

    .avc-shortcut-tip i[b-1ovu5oocw6] {
        margin-right: 5px;
        color: var(--avc-accent-dark);
    }

@media (max-width: 700px) {
    .avc-shortcut-grid[b-1ovu5oocw6] {
        grid-template-columns: 1fr;
    }

    .avc-entry-action-spacer[b-1ovu5oocw6] {
        display: none;
    }

    .avc-shortcut-help-btn[b-1ovu5oocw6] {
        margin-left: 0;
    }
}


/* =====================================================
   GAINS Voucher Productivity Phase 4 — status + grid navigation
   ===================================================== */
.avc-productivity-status[b-1ovu5oocw6] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 59px;
    z-index: 49;
    min-height: 32px;
    padding: 5px max(18px, calc((100vw - 1600px) / 2 + 18px));
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    box-sizing: border-box;
    background: #f7faf9;
    border-top: 1px solid #dfe8e5;
    color: #53635e;
    font-size: 11px;
}

.avc-productivity-status-left[b-1ovu5oocw6],
.avc-productivity-status-right[b-1ovu5oocw6] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

    .avc-productivity-status-left strong[b-1ovu5oocw6] {
        color: #25332f;
        font-weight: 700;
    }

.avc-status-indicator[b-1ovu5oocw6] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #f59e0b;
    box-shadow: 0 0 0 3px rgba(245, 158, 11, .12);
}

    .avc-status-indicator.is-balanced[b-1ovu5oocw6] {
        background: #10b981;
        box-shadow: 0 0 0 3px rgba(16, 185, 129, .12);
    }

.avc-status-divider[b-1ovu5oocw6] {
    width: 1px;
    height: 14px;
    background: #d7e1de;
}

.avc-status-help-btn[b-1ovu5oocw6] {
    border: 0;
    background: transparent;
    color: #08765f;
    padding: 3px 5px;
    border-radius: 5px;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

    .avc-status-help-btn:hover[b-1ovu5oocw6] {
        background: #e6f5f0;
    }

/* Reserve room for the productivity status bar plus the existing action bar. */
.avc-gains-body[b-1ovu5oocw6] {
    padding-bottom: 122px;
}

.avc-row-active td[b-1ovu5oocw6] {
    background: #f0fbf7;
}

    .avc-row-active td:first-child[b-1ovu5oocw6] {
        box-shadow: inset 3px 0 0 var(--avc-accent);
    }

@media (max-width: 900px) {
    .avc-productivity-status[b-1ovu5oocw6] {
        align-items: flex-start;
        padding-left: 12px;
        padding-right: 12px;
    }

    .avc-productivity-status-right > span[b-1ovu5oocw6] {
        display: none;
    }
}
/* /Components/Pages/Transactions/Voucher/Accounting/RojMel.razor.rz.scp.css */
/* =====================================================================
   RojMel.razor.css
   Header (bspl-title-block), footer (bspl-footer), table (mu-table) and
   buttons (mu-btn) reuse the shared common-page-chrome.css /
   masters-forms.css classes — same pattern as ITB.razor.css. Only
   RojMel-specific bits (control bar, summary popup, ledger suggest,
   VType badge, sum row, inline add-row) are defined here, since Blazor's
   CSS isolation scopes this file to RojMel.razor only.
   ===================================================================== */

.rojmel-page[b-s7freu8609] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* Per request: hide the sidebar "GAINS" toggle button on this page only.
   CSS isolation scopes this rule to elements rendered by RojMel.razor, so
   no other page's toggle button is affected. */
.bspl-gains-toggle[b-s7freu8609] {
    display: none;
}

.rojmel-page .mu-card[b-s7freu8609] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0 16px;
}

.rojmel-page .mu-table-wrap[b-s7freu8609] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

/* ── Primary control bar: Date / Summary / Bank / Go (always visible,
   mirrors the legacy inline form rather than a filter drawer) ── */
.rojmel-controlbar[b-s7freu8609] {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
    padding: 10px 16px;
    background: #e5e0ec;
    margin: 0 16px 12px;
    border-radius: 6px;
}

.rojmel-fld[b-s7freu8609] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

    .rojmel-fld label[b-s7freu8609] {
        font-size: 11.5px;
        font-weight: 700;
        color: #555;
    }

.rojmel-fld-ledger[b-s7freu8609] {
    position: relative;
    min-width: 260px;
}

.rojmel-ledger-input[b-s7freu8609] {
    padding: 5px 10px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    font-family: inherit;
    color: #333;
    width: 100%;
    box-sizing: border-box;
}

    .rojmel-ledger-input:focus[b-s7freu8609] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

.rojmel-go-btn[b-s7freu8609] {
    height: 30px;
}

/* ── Summary hover popup (legacy divSummeryDtls) ── */
.rojmel-summary[b-s7freu8609] {
    position: relative;
    padding-bottom: 6px;
}

.rojmel-summary-link[b-s7freu8609] {
    font-weight: 700;
    color: #2f8fd1;
    text-decoration: underline;
    cursor: pointer;
    font-size: 12.5px;
}

.rojmel-summary-pop[b-s7freu8609] {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 30;
    width: 210px;
    background: #fff;
    border: 1px solid silver;
    border-radius: 3px;
    box-shadow: 0 4px 14px rgba(0,0,0,.15);
}

.rojmel-summary-hdr[b-s7freu8609] {
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    background: maroon;
    color: #fff;
    padding: 5px 0;
}

.rojmel-summary-body[b-s7freu8609] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px 10px;
    background: #f2ddDC;
    font-size: 12.5px;
}

.rojmel-radio-lbl[b-s7freu8609] {
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}

.rojmel-summary-foot[b-s7freu8609] {
    text-align: right;
    padding: 6px 10px;
}

.rojmel-summary-result[b-s7freu8609] {
    padding: 8px 10px;
    border-top: 1px solid silver;
    font-size: 12px;
    color: #333;
    background: #fff;
}

/* Month/day-grid summary (sp_getLedSummaryRojMel) is wide — 31 day columns plus
   ledger/month/total — so it needs its own scroll area instead of stretching the
   210px popup shell. Widening .rojmel-summary-pop itself when this is present
   keeps the popup from clipping the table. */
.rojmel-summary:has(.rojmel-summary-grid) .rojmel-summary-pop[b-s7freu8609] {
    width: auto;
    max-width: 90vw;
}

.rojmel-summary-grid[b-s7freu8609] {
    padding: 0;
    max-height: 320px;
    overflow: auto;
}

.rojmel-summary-table[b-s7freu8609] {
    border-collapse: collapse;
    font-size: 11px;
    white-space: nowrap;
}

    .rojmel-summary-table th[b-s7freu8609],
    .rojmel-summary-table td[b-s7freu8609] {
        padding: 3px 6px;
        border-bottom: 1px solid #eee;
        text-align: right;
    }

        .rojmel-summary-table th:first-child[b-s7freu8609],
        .rojmel-summary-table td:first-child[b-s7freu8609],
        .rojmel-summary-table th:nth-child(2)[b-s7freu8609],
        .rojmel-summary-table td:nth-child(2)[b-s7freu8609] {
            text-align: left;
        }

    .rojmel-summary-table thead th[b-s7freu8609] {
        position: sticky;
        top: 0;
        background: #f2ddDC;
        font-weight: 700;
    }

/* ── VType badge ── */
.rojmel-vtype-badge[b-s7freu8609] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 3px;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

/* ── Hidden A/C column — kept for parity with the legacy grid, which also
   renders this column with display:none (class="AC"). ── */
.rojmel-ac-col[b-s7freu8609] {
    display: none;
}

.rojmel-view-col[b-s7freu8609] {
    width: 30px;
    text-align: center;
}

.rojmel-iname[b-s7freu8609] {
    max-width: 320px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rojmel-row-actions[b-s7freu8609] {
    white-space: nowrap;
    text-align: center;
}

.rojmel-icon-btn[b-s7freu8609] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 2px 6px;
    color: #555;
    font-size: 13px;
}

    .rojmel-icon-btn:hover[b-s7freu8609] {
        color: #1ab99a;
    }

/* ── Inline "add new" row (legacy AddNew()/SaveNew() inline entry) ── */
.rojmel-new-row[b-s7freu8609] {
    background: #fbfbea;
}

    .rojmel-new-row select[b-s7freu8609],
    .rojmel-new-row input[b-s7freu8609] {
        width: 100%;
        box-sizing: border-box;
        padding: 4px 6px;
        border: 1px solid #d6dbe0;
        border-radius: 4px;
        font-family: inherit;
        font-size: 12.5px;
    }

.rojmel-amt-input[b-s7freu8609] {
    text-align: right;
}

    .rojmel-amt-input:disabled[b-s7freu8609] {
        background: #f1f1f1;
        color: #9aa0a6;
        cursor: not-allowed;
    }

/* ── Sum row (legacy Div1/HeadTbl1: SDr / SCr / SNet) ── */
.rojmel-sumrow[b-s7freu8609] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    font-size: 13px;
    flex-wrap: wrap;
}

.rojmel-sum-lbl[b-s7freu8609] {
    font-weight: 700;
}

.rojmel-sum-val[b-s7freu8609] {
    min-width: 90px;
    font-variant-numeric: tabular-nums;
}

.rojmel-sum-dr[b-s7freu8609] {
    color: #2f5aa8;
}

.rojmel-sum-cr[b-s7freu8609] {
    color: maroon;
}

.rojmel-info-msg[b-s7freu8609] {
    margin-left: 10px;
    font-size: 12.5px;
    color: #555;
    font-style: italic;
}

.rojmel-error[b-s7freu8609] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

.rojmel-xls-btn[b-s7freu8609] {
    background: none;
    border: none;
    color: #1a7f4b;
    font-size: 15px;
    cursor: pointer;
    padding: 0 4px;
    margin-left: 8px;
}

/* New/Save — same footer-button look as POSEntry.razor.css's .pos-btn/.pos-btn-save
   (border/radius/hover/disabled treatment copied 1:1; POSEntry's own classes don't
   reach this page since Blazor CSS isolation scopes them to POSEntry.razor only, and
   its colors are CSS vars declared on .pos-page, also out of scope here — so this
   reproduces the same values as literals instead of var() references). */
.rojmel-btn[b-s7freu8609] {
    padding: 9px 18px;
    font-size: 12.5px;
    font-weight: 700;
    border-radius: 6px;
    border: 1.5px solid #d5dae2;
    background: #fff;
    color: #334155;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-left: 6px;
    font-family: inherit;
}

    .rojmel-btn:hover:not(:disabled)[b-s7freu8609] {
        border-color: #1ab99a;
        color: #0f9c81;
    }

    .rojmel-btn:disabled[b-s7freu8609] {
        opacity: .5;
        cursor: not-allowed;
    }

.rojmel-btn-save[b-s7freu8609] {
    background: #16a34a;
    color: #fff;
    border-color: #16a34a;
}

    .rojmel-btn-save:hover:not(:disabled)[b-s7freu8609] {
        background: #128a3d;
        border-color: #128a3d;
        color: #fff;
    }

.rojmel-grid-table thead th[b-s7freu8609] {
    text-align: center;
    font-size: 11.5px;
    font-weight: 700;
    padding: 8px 10px;
}

.rojmel-grid-table thead tr:first-child th:nth-child(2)[b-s7freu8609],
.rojmel-grid-table thead tr:first-child th:nth-child(3)[b-s7freu8609] {
    text-align: left;
}

.rojmel-grid-table td.num[b-s7freu8609],
.rojmel-grid-table th.num[b-s7freu8609] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .rojmel-controlbar[b-s7freu8609] {
        flex-direction: column;
        align-items: stretch;
    }

    .rojmel-fld-ledger[b-s7freu8609] {
        min-width: 0;
    }

    .rojmel-sumrow[b-s7freu8609] {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* /Components/Pages/Transactions/Voucher/Cart/CartEntry.razor.rz.scp.css */
/* ═══ CartEntry.razor.css — Zepto-style: left group rail, product grid,
   cart drawer on demand. Tokens live on .cart-root (not .cart-page) because
   .cart-drawer/.cart-drawer-overlay/.cart-added-pop render as SIBLINGS of
   .cart-page (outside it, at the bottom of the component) so they can be
   position:fixed relative to the viewport — CSS custom properties only
   reach descendants, so anchoring them on .cart-page left those elements
   with every var() falling back to nothing (invisible/transparent
   backgrounds — the "text bleeding through" look). .cart-root wraps both,
   so every var() resolves everywhere now. ═══ */

.cart-root[b-u8nmqxski4] {
    --cart-primary: #1a56a7;
    --cart-accent: #e0316b;
    --cart-accent-dark: #c2255a;
    --cart-success: #16a34a;
    --cart-bg: #f7f8fa;
    --cart-surface: #ffffff;
    --cart-border: #e7e9ee;
    --cart-text: #1a2537;
    --cart-text-muted: #6b7280;
    --cart-radius: 14px;
    --cart-radius-sm: 10px;
    --cart-shadow: 0 1px 2px rgba(16,24,40,.04), 0 2px 8px rgba(16,24,40,.05);
    --cart-shadow-pop: 0 8px 24px rgba(16,24,40,.14);
    height: 100%;
    font-family: 'Inter', 'Segoe UI', 'Open Sans', Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
}
.cart-root[b-u8nmqxski4], .cart-root *[b-u8nmqxski4], .cart-root *[b-u8nmqxski4]::before, .cart-root *[b-u8nmqxski4]::after { box-sizing: border-box; }

.cart-page[b-u8nmqxski4] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    background: var(--cart-bg);
    color: var(--cart-text);
    position: relative;
}

/* ── Top bar ── */
.cart-topbar[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--cart-surface);
    border-bottom: 1px solid var(--cart-border);
    padding: 10px 18px;
    z-index: 2;
}

.cart-back-btn[b-u8nmqxski4] {
    background: none;
    border: none;
    font-size: 16px;
    color: var(--cart-text);
    cursor: pointer;
    padding: 6px 8px;
    display: flex;
    align-items: center;
    text-decoration: none;
    border-radius: 8px;
}
.cart-back-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); }

.cart-brand[b-u8nmqxski4] { display: flex; flex-direction: column; margin-right: auto; }
.cart-brand-main[b-u8nmqxski4] { font-weight: 700; font-size: 16px; color: var(--cart-primary); }
.cart-brand-sub[b-u8nmqxski4] { font-size: 11px; color: var(--cart-text-muted); }

.cart-topbar-right[b-u8nmqxski4] { display: flex; align-items: center; gap: 10px; }

/* ::deep — CustomerAutofill renders its own <input> inside ITS component
   template, carrying ITS OWN Blazor CSS-isolation scope attribute, not
   this component's. A plain ".cart-cust-input" rule here would silently
   never match that element at all; ::deep drops the scope requirement on
   the class itself so it still matches, however deep the real element sits. */
[b-u8nmqxski4] .cart-cust-input {
    width: 200px;
    padding: 9px 12px;
    border-radius: var(--cart-radius-sm);
    border: 1.5px solid var(--cart-border);
    background: var(--cart-bg);
    font-size: 13.5px;
    color: var(--cart-text);
    transition: border-color .15s, background .15s;
}
[b-u8nmqxski4] .cart-cust-input::placeholder { color: var(--cart-text-muted); }
[b-u8nmqxski4] .cart-cust-input:focus {
    outline: none;
    border-color: var(--cart-primary);
    background: var(--cart-surface);
}

.cart-addcust-btn[b-u8nmqxski4] {
    border: 1px solid var(--cart-border);
    background: var(--cart-surface);
    border-radius: 50%;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--cart-primary);
    flex-shrink: 0;
}
.cart-addcust-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); }

.cart-ledgertoggle-btn[b-u8nmqxski4] {
    border: 1px solid var(--cart-border);
    background: var(--cart-surface);
    border-radius: 50%;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--cart-text-muted);
    flex-shrink: 0;
    font-size: 13px;
}
.cart-ledgertoggle-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); color: var(--cart-primary); }

.cart-badge[b-u8nmqxski4] {
    position: relative;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--cart-bg);
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--cart-primary);
    flex-shrink: 0;
    cursor: pointer;
    font-size: 15px;
}
.cart-badge:hover[b-u8nmqxski4] { background: #eef1f6; }
.cart-badge-count[b-u8nmqxski4] {
    position: absolute;
    top: -3px;
    right: -3px;
    background: var(--cart-accent);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    min-width: 16px;
    height: 16px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 3px;
}

/* ── Toast — fixed + high z-index so it floats above the drawer/overlay
   (z-index 20/21) instead of being buried under the dimmed background
   when the drawer is open (was plain in-flow, invisible in that case). ── */
.cart-toast[b-u8nmqxski4] {
    position: fixed;
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 100;
    margin: 0;
    padding: 11px 18px;
    border-radius: 8px;
    background: #ecfdf5;
    color: var(--cart-success);
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 6px 20px rgba(0,0,0,.15);
    max-width: min(90vw, 420px);
    text-align: center;
}
.cart-toast-err[b-u8nmqxski4] { background: #fef2f2; color: #dc2626; }

/* ── 3-column body ── */
.cart-body[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    overflow: hidden;
}

/* ── Left: group rail ── */
.cart-groups-rail[b-u8nmqxski4] {
    flex: 0 0 190px;
    overflow-y: auto;
    background: var(--cart-surface);
    border-right: 1px solid var(--cart-border);
    padding: 10px 8px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}
.cart-groups-rail[b-u8nmqxski4]::-webkit-scrollbar { width: 8px; }
.cart-groups-rail[b-u8nmqxski4]::-webkit-scrollbar-track { background: transparent; }
.cart-groups-rail[b-u8nmqxski4]::-webkit-scrollbar-thumb {
    background: #1ab99a;
    border-radius: 999px;
}
.cart-groups-rail[b-u8nmqxski4]::-webkit-scrollbar-thumb:hover { background: #159e83; }
.cart-group-row[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 10px;
    border: none;
    background: none;
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 500;
    color: var(--cart-text);
    cursor: pointer;
    text-align: left;
    border-left: 3px solid transparent;
}
.cart-group-row:hover[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-group-row.active[b-u8nmqxski4] {
    background: #fdeef3;
    color: var(--cart-accent-dark);
    font-weight: 700;
    border-left-color: var(--cart-accent);
}
.cart-group-icon[b-u8nmqxski4] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #eaf1fb;
    color: var(--cart-primary);
    font-size: 12px;
    font-weight: 700;
}
.cart-group-icon-all[b-u8nmqxski4] { font-size: 13px; }
.cart-group-name[b-u8nmqxski4] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Middle: product grid ── */
.cart-main[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.cart-searchbar[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--cart-surface);
    margin: 14px 18px 0;
    padding: 12px 16px;
    border-radius: 12px;
    border: 1.5px solid var(--cart-border);
    color: var(--cart-text-muted);
    font-size: 15px;
    transition: border-color .15s;
}
.cart-searchbar:focus-within[b-u8nmqxski4] { border-color: var(--cart-primary); }

/* ::deep — same reason as .cart-cust-input above: ItemAutofill owns the
   actual <input> element, one level of component nesting down. */
[b-u8nmqxski4] .cart-search-input {
    border: none;
    outline: none;
    flex: 1;
    width: 100%;
    font-size: 14.5px;
    background: transparent;
    color: var(--cart-text);
    padding: 2px 0;
}
[b-u8nmqxski4] .cart-search-input::placeholder { color: var(--cart-text-muted); }

.cart-mic-btn[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--cart-text-muted);
    cursor: pointer;
    transition: background .15s, color .15s;
}
.cart-mic-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); color: var(--cart-primary); }
.cart-filter-btn[b-u8nmqxski4] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: none;
    background: none;
    color: var(--cart-text-muted);
    cursor: pointer;
    flex-shrink: 0;
}
.cart-filter-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); color: var(--cart-primary); }
.cart-filter-btn.active[b-u8nmqxski4] { background: color-mix(in srgb, var(--cart-primary) 12%, transparent); color: var(--cart-primary); }
.cart-filter-btn-count[b-u8nmqxski4] {
    position: absolute;
    top: -2px;
    right: -2px;
    min-width: 15px;
    height: 15px;
    padding: 0 3px;
    border-radius: 999px;
    background: var(--cart-accent);
    color: #fff;
    font-size: 9.5px;
    font-weight: 700;
    line-height: 15px;
    text-align: center;
}

/* ── Applied-filter chips — sits below the search bar, mirrors
   SR_ItemList's GainsFilterChip row (tap a chip to clear that filter). ── */
.cart-filter-chips[b-u8nmqxski4] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 10px 18px 0;
}
.cart-filter-chip[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 6px;
    border: 1px solid color-mix(in srgb, var(--cart-primary) 35%, transparent);
    background: color-mix(in srgb, var(--cart-primary) 8%, var(--cart-surface));
    color: var(--cart-primary);
    border-radius: 999px;
    padding: 5px 10px 5px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}
.cart-filter-chip:hover[b-u8nmqxski4] { background: color-mix(in srgb, var(--cart-primary) 15%, var(--cart-surface)); }
.cart-filter-chip-count[b-u8nmqxski4] {
    background: var(--cart-primary);
    color: #fff;
    border-radius: 999px;
    min-width: 16px;
    height: 16px;
    font-size: 10px;
    line-height: 16px;
    text-align: center;
    padding: 0 4px;
}
.cart-filter-chip i[b-u8nmqxski4] { font-size: 10px; color: var(--cart-text-muted); }

.cart-mic-btn.listening[b-u8nmqxski4] {
    background: var(--cart-primary);
    color: #fff;
    animation: cart-mic-pulse-b-u8nmqxski4 1.2s ease-in-out infinite;
}
@keyframes cart-mic-pulse-b-u8nmqxski4 {
    0%, 100% { box-shadow: 0 0 0 0 rgba(0,0,0,0); }
    50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--cart-primary) 25%, transparent); }
}

.cart-scroll-body[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 14px 18px 24px;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}
.cart-scroll-body[b-u8nmqxski4]::-webkit-scrollbar { width: 8px; }
.cart-scroll-body[b-u8nmqxski4]::-webkit-scrollbar-track { background: transparent; }
.cart-scroll-body[b-u8nmqxski4]::-webkit-scrollbar-thumb {
    background: #1ab99a;
    border-radius: 999px;
}
.cart-scroll-body[b-u8nmqxski4]::-webkit-scrollbar-thumb:hover { background: #159e83; }

.cart-empty[b-u8nmqxski4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    color: var(--cart-text-muted);
    padding: 60px 0;
    text-align: center;
}
.cart-empty i[b-u8nmqxski4] { font-size: 34px; color: var(--cart-border); margin-bottom: 6px; }
.cart-empty div[b-u8nmqxski4] { font-weight: 600; color: var(--cart-text); }
.cart-empty span[b-u8nmqxski4] { font-size: 12px; }
.cart-empty-panel[b-u8nmqxski4] { padding: 40px 10px; }

.cart-grid[b-u8nmqxski4] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 14px;
}

.cart-tile[b-u8nmqxski4] {
    background: var(--cart-surface);
    border: 1px solid var(--cart-border);
    border-radius: var(--cart-radius);
    padding: 10px 10px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    position: relative;
    transition: box-shadow .15s, transform .15s;
}
.cart-tile:hover[b-u8nmqxski4] { box-shadow: var(--cart-shadow); transform: translateY(-1px); }

.cart-tile-media[b-u8nmqxski4] { position: relative; }

.cart-tile-img[b-u8nmqxski4] {
    width: 100%;
    aspect-ratio: 1.2 / 1;
    border-radius: var(--cart-radius-sm);
    background: linear-gradient(135deg, #eaf1fb, #dbe7f8);
    color: var(--cart-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
    font-weight: 700;
}
.cart-tile-img-photo[b-u8nmqxski4] {
    object-fit: cover;
    background: #f1f4f8;
}
.cart-tile-img-sm[b-u8nmqxski4] {
    width: 38px;
    height: 38px;
    aspect-ratio: unset;
    font-size: 15px;
    flex-shrink: 0;
    border-radius: var(--cart-radius-sm);
}

.cart-scheme-badge[b-u8nmqxski4] {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #fff;
    color: var(--cart-accent);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    box-shadow: 0 1px 4px rgba(16,24,40,.2);
}

/* Floating ADD/stepper pill — bottom-right corner of the tile image,
   same spot Zepto's own ADD button sits, peeking slightly below the
   image into the card body (tile has extra bottom padding for this). */
.cart-add-btn-float[b-u8nmqxski4],
.cart-stepper-float[b-u8nmqxski4] {
    position: absolute;
    right: 6px;
    bottom: -14px;
    width: 96px;
    box-shadow: 0 2px 6px rgba(16,24,40,.16);
}
.cart-add-btn[b-u8nmqxski4] {
    background: var(--cart-surface);
    border: 1.5px solid var(--cart-accent);
    color: var(--cart-accent);
    border-radius: var(--cart-radius-sm);
    transition: background .15s, color .15s, transform .1s;
    font-weight: 700;
    font-size: 12px;
    padding: 7px 0;
    cursor: pointer;
}
.cart-add-btn:hover[b-u8nmqxski4] { background: var(--cart-accent); color: #fff; }

.cart-tile-price-row[b-u8nmqxski4] { display: flex; align-items: baseline; gap: 6px; margin-top: 2px; }
.cart-price-now[b-u8nmqxski4] { font-weight: 700; font-size: 14px; color: var(--cart-text); }
.cart-price-mrp[b-u8nmqxski4] { font-size: 11.5px; color: var(--cart-text-muted); text-decoration: line-through; }
.cart-price-off[b-u8nmqxski4] { font-size: 11px; color: var(--cart-success); font-weight: 600; }
.cart-tile-name[b-u8nmqxski4] {
    font-weight: 600;
    font-size: 13px;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.cart-tile-meta[b-u8nmqxski4] { font-size: 11px; color: var(--cart-text-muted); }
.cart-rate-edit[b-u8nmqxski4] { margin-left: 4px; }
.cart-rate-edit-tile[b-u8nmqxski4] {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-weight: 700;
    font-size: 14px;
    color: var(--cart-text);
}
.cart-rate-edit-tile .cart-rate-input[b-u8nmqxski4] {
    width: 64px;
    font-size: 13px;
    font-weight: 700;
    color: var(--cart-text);
    padding: 3px 6px;
}
.cart-rate-input[b-u8nmqxski4] {
    width: 52px;
    font-size: 11px;
    color: var(--cart-text-muted);
    border: 1px solid var(--cart-border);
    border-radius: 4px;
    padding: 1px 4px;
    background: var(--cart-surface);
}
.cart-rate-input:focus[b-u8nmqxski4] { outline: none; border-color: var(--cart-accent); color: var(--cart-text); }

.cart-batch-link[b-u8nmqxski4] {
    background: none;
    border: none;
    color: var(--cart-primary);
    font-size: 11px;
    text-align: left;
    padding: 0;
    cursor: pointer;
    width: fit-content;
}
.cart-tile-batch-link[b-u8nmqxski4] {
    background: none;
    border: none;
    color: var(--cart-primary);
    font-size: 10.5px;
    text-align: left;
    padding: 4px 0 0;
    cursor: pointer;
    width: 100%;
}

.cart-loadmore-btn[b-u8nmqxski4] {
    display: block;
    margin: 16px auto 4px;
    background: var(--cart-surface);
    border: 1px solid var(--cart-border);
    border-radius: 20px;
    padding: 9px 22px;
    font-size: 13px;
    font-weight: 600;
    color: var(--cart-primary);
    cursor: pointer;
    transition: background .15s;
}
.cart-loadmore-btn:hover:not(:disabled)[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-loadmore-btn:disabled[b-u8nmqxski4] { opacity: .6; cursor: not-allowed; }

.cart-empty-animated[b-u8nmqxski4] { animation: cartEmptyFadeIn-b-u8nmqxski4 .35s ease; }
.cart-empty-icon-bounce[b-u8nmqxski4] {
    font-size: 34px;
    color: var(--cart-border);
    margin-bottom: 6px;
    animation: cartEmptyBounce-b-u8nmqxski4 1.6s ease-in-out infinite;
}
@keyframes cartEmptyFadeIn-b-u8nmqxski4 {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes cartEmptyBounce-b-u8nmqxski4 {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

/* Stepper (shared shape — plain in-grid on cart rows, floating on tiles) */
.cart-stepper[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--cart-accent);
    border-radius: 8px;
    overflow: hidden;
}
.cart-step-btn[b-u8nmqxski4] {
    background: none;
    border: none;
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    width: 26px;
    height: 30px;
    cursor: pointer;
    transition: background .12s;
}
.cart-step-btn:hover[b-u8nmqxski4] { background: rgba(255,255,255,.18); }
.cart-step-btn:active[b-u8nmqxski4] { background: rgba(255,255,255,.3); }
.cart-step-val[b-u8nmqxski4] {
    color: #fff;
    font-weight: 700;
    font-size: 12.5px;
    min-width: 20px;
    text-align: center;
}
.cart-step-input[b-u8nmqxski4] {
    color: #fff;
    font-weight: 700;
    font-size: 12.5px;
    width: 32px;
    text-align: center;
    background: transparent;
    border: none;
    -moz-appearance: textfield;
}
.cart-step-input[b-u8nmqxski4]::-webkit-outer-spin-button,
.cart-step-input[b-u8nmqxski4]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.cart-step-input:focus[b-u8nmqxski4] { outline: none; background: rgba(255,255,255,.15); border-radius: 4px; }
.cart-stepper-sm[b-u8nmqxski4] { width: 90px; flex-shrink: 0; }


/* ── Added-to-cart mini popup — floats under the cart badge, auto-dismisses ── */
.cart-added-pop[b-u8nmqxski4] {
    position: absolute;
    top: 62px;
    right: 16px;
    width: min(250px, calc(100vw - 32px));
    background: var(--cart-surface);
    border-radius: var(--cart-radius);
    box-shadow: var(--cart-shadow-pop);
    padding: 12px;
    z-index: 15;
}
.cart-added-hdr[b-u8nmqxski4] {
    color: var(--cart-success);
    font-weight: 700;
    font-size: 13px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.cart-added-row[b-u8nmqxski4] {
    display: flex;
    justify-content: space-between;
    font-size: 12.5px;
    padding: 4px 0;
    border-top: 1px dashed var(--cart-border);
}
.cart-added-row em[b-u8nmqxski4] { font-style: normal; color: var(--cart-text-muted); margin-left: 4px; }
.cart-added-goto[b-u8nmqxski4] {
    width: 100%;
    margin-top: 8px;
    background: none;
    border: none;
    color: var(--cart-accent);
    font-weight: 700;
    font-size: 12.5px;
    cursor: pointer;
    text-align: right;
}

/* ── Cart drawer — hidden overlay, slides in from the right on demand ── */
.cart-drawer-overlay[b-u8nmqxski4] {
    position: fixed;
    inset: 0;
    background: rgba(16,24,40,.45);
    z-index: 20;
}
.cart-drawer[b-u8nmqxski4] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(420px, 100vw);
    background: var(--cart-bg);
    box-shadow: var(--cart-shadow-pop);
    z-index: 21;
    display: flex;
    flex-direction: column;
}
.cart-drawer-hdr[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 18px;
    background: var(--cart-surface);
    border-bottom: 1px solid var(--cart-border);
}
.cart-drawer-title[b-u8nmqxski4] { font-weight: 700; font-size: 16px; }
.cart-drawer-subtitle[b-u8nmqxski4] { font-size: 12px; color: var(--cart-text-muted); margin-top: 2px; }
.cart-drawer-x[b-u8nmqxski4] { background: none; border: none; font-size: 18px; cursor: pointer; color: var(--cart-text-muted); }

.cart-drawer-body[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 14px 18px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}
.cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar { width: 8px; }
.cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar-track { background: transparent; }
.cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar-thumb {
    background: #1ab99a;
    border-radius: 999px;
}
.cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar-thumb:hover { background: #159e83; }
.cart-empty-drawer[b-u8nmqxski4] { padding: 30px 0; text-align: center; color: var(--cart-text-muted); }

.cart-savings-banner[b-u8nmqxski4] {
    background: #ecfdf5;
    color: var(--cart-success);
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    padding: 9px;
    border-radius: 8px;
}

/* ── Filter modal — Category/Brand/Tag1/Tag2/Tag3, ported from
   SR_ItemList's FilterPopup. Higher z-index than the cart drawer (30/31 vs
   20/21) so it always sits on top if both are ever open at once; same
   transform-safe sibling-of-.cart-page placement, see file header note. ── */
.cart-filter-overlay[b-u8nmqxski4] {
    position: fixed;
    inset: 0;
    background: rgba(16,24,40,.45);
    z-index: 30;
    display: flex;
    align-items: center;
    justify-content: center;
}
.cart-filter-modal[b-u8nmqxski4] {
    width: min(560px, 92vw);
    height: min(520px, 84vh);
    background: var(--cart-surface);
    border-radius: var(--cart-radius);
    box-shadow: var(--cart-shadow-pop);
    z-index: 31;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.cart-filter-hdr[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px;
    background: var(--cart-primary);
    color: #fff;
    font-weight: 700;
    font-size: 14px;
}
.cart-filter-x[b-u8nmqxski4] { background: none; border: none; color: #fff; font-size: 16px; cursor: pointer; opacity: .85; }
.cart-filter-x:hover[b-u8nmqxski4] { opacity: 1; }

.cart-filter-body[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
}
.cart-filter-tabs[b-u8nmqxski4] {
    flex: 0 0 34%;
    max-width: 190px;
    background: var(--cart-bg);
    border-right: 1px solid var(--cart-border);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}
.cart-filter-tab[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 13px 14px;
    border: none;
    border-bottom: 1px solid var(--cart-border);
    background: none;
    text-align: left;
    font-size: 12.5px;
    color: var(--cart-text);
    cursor: pointer;
}
.cart-filter-tab.active[b-u8nmqxski4] {
    color: var(--cart-primary);
    font-weight: 700;
    background: var(--cart-surface);
}
.cart-filter-tab-count[b-u8nmqxski4] {
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--cart-primary);
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
}

.cart-filter-options[b-u8nmqxski4] {
    flex: 1 1 auto;
    min-width: 0;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}
.cart-filter-options[b-u8nmqxski4]::-webkit-scrollbar { width: 8px; }
.cart-filter-options[b-u8nmqxski4]::-webkit-scrollbar-track { background: transparent; }
.cart-filter-options[b-u8nmqxski4]::-webkit-scrollbar-thumb { background: #1ab99a; border-radius: 999px; }
.cart-filter-options[b-u8nmqxski4]::-webkit-scrollbar-thumb:hover { background: #159e83; }

.cart-filter-empty[b-u8nmqxski4] { padding: 30px 16px; text-align: center; color: var(--cart-text-muted); font-size: 13px; }

.cart-filter-option-row[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--cart-border);
    font-size: 13px;
    color: var(--cart-text);
    cursor: pointer;
}
.cart-filter-option-row:hover[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-filter-option-row.selected[b-u8nmqxski4] { background: color-mix(in srgb, var(--cart-primary) 8%, var(--cart-surface)); }
.cart-filter-check[b-u8nmqxski4] {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    border-radius: 5px;
    border: 1.5px solid var(--cart-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: transparent;
    font-size: 11px;
    background: var(--cart-surface);
}
.cart-filter-option-row.selected .cart-filter-check[b-u8nmqxski4] {
    background: var(--cart-primary);
    border-color: var(--cart-primary);
    color: #fff;
}

.cart-filter-foot[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    border-top: 1px solid var(--cart-border);
}
.cart-filter-clear-btn[b-u8nmqxski4], .cart-filter-apply-btn[b-u8nmqxski4] {
    flex: 1 1 50%;
    border: none;
    background: var(--cart-surface);
    padding: 14px 0;
    font-weight: 700;
    font-size: 13.5px;
    cursor: pointer;
}
.cart-filter-clear-btn[b-u8nmqxski4] { color: var(--cart-text-muted); border-right: 1px solid var(--cart-border); }
.cart-filter-clear-btn:hover[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-filter-apply-btn[b-u8nmqxski4] { color: var(--cart-primary); }
.cart-filter-apply-btn:hover[b-u8nmqxski4] { background: color-mix(in srgb, var(--cart-primary) 8%, var(--cart-surface)); }

/* Single card panel holding the info-header + item rows + add-more link,
   matching the reference: one bordered white box, not a shadow per row. */
.cart-drawer-panel[b-u8nmqxski4] {
    background: var(--cart-surface);
    border-radius: var(--cart-radius);
    box-shadow: var(--cart-shadow);
    padding: 4px 14px 6px;
}

.cart-panel-info-row[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 2px;
    border-bottom: 1px solid var(--cart-border);
}
.cart-panel-info-left[b-u8nmqxski4] { display: flex; align-items: center; gap: 12px; }
.cart-panel-info-icon[b-u8nmqxski4] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--cart-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    color: var(--cart-text);
    flex-shrink: 0;
}
.cart-panel-info-title[b-u8nmqxski4] { font-weight: 700; font-size: 14px; color: var(--cart-text); }
.cart-panel-info-sub[b-u8nmqxski4] { font-size: 12px; color: var(--cart-text-muted); margin-top: 1px; }
.cart-panel-date-pill[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 6px;
    background: var(--cart-surface);
    border: 1.5px solid #f0b429;
    color: #b7791f;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

.cart-drawer-row[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 2px;
    border-bottom: 1px solid var(--cart-border);
}
.cart-drawer-row:last-of-type[b-u8nmqxski4] { border-bottom: none; }
.cart-drawer-row-body[b-u8nmqxski4] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cart-row-delete[b-u8nmqxski4] {
    flex-shrink: 0;
    background: none;
    border: none;
    color: var(--cart-text-muted);
    font-size: 14px;
    padding: 6px;
    cursor: pointer;
    border-radius: 8px;
    transition: background .15s, color .15s;
}
.cart-row-delete:hover[b-u8nmqxski4] { background: #fef2f2; color: #dc2626; }
.cart-drawer-row-right[b-u8nmqxski4] { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex-shrink: 0; }
.cart-drawer-row-price[b-u8nmqxski4] { display: flex; align-items: baseline; gap: 5px; }
.cart-drawer-row-mrp[b-u8nmqxski4] { font-size: 11px; color: var(--cart-text-muted); text-decoration: line-through; }
.cart-drawer-row-orig[b-u8nmqxski4] { font-size: 11px; color: var(--cart-text-muted); text-decoration: line-through; }
.cart-drawer-row-amt[b-u8nmqxski4] { font-weight: 700; font-size: 13px; color: var(--cart-success); }

.cart-tax-summary[b-u8nmqxski4] {
    margin: 2px 0 4px;
    border-radius: var(--cart-radius-sm);
    overflow: hidden;
}
.cart-tax-summary-hdr[b-u8nmqxski4] { font-weight: 700; font-size: 12.5px; margin-bottom: 6px; color: var(--cart-text); }
.cart-tax-summary-row[b-u8nmqxski4] {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    color: var(--cart-text-muted);
    padding: 6px 10px;
}
.cart-tax-row-odd[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-tax-row-even[b-u8nmqxski4] { background: var(--cart-surface); }
.cart-tax-summary-row em[b-u8nmqxski4] { font-style: normal; margin-left: 4px; opacity: .8; }

.cart-addmore-link[b-u8nmqxski4] {
    background: none;
    border: none;
    padding: 14px 2px;
    color: var(--cart-text);
    font-weight: 500;
    font-size: 13px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 100%;
}
.cart-addmore-link span[b-u8nmqxski4] { color: var(--cart-accent); font-weight: 700; }

.cart-more-toggle[b-u8nmqxski4] {
    background: var(--cart-surface);
    border: 1px solid var(--cart-border);
    border-radius: 10px;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--cart-text);
    cursor: pointer;
}
.cart-more-toggle i:first-child[b-u8nmqxski4] { color: var(--cart-primary); }
.cart-more-toggle i:last-child[b-u8nmqxski4] { margin-left: auto; font-size: 11px; }

.cart-more-panel[b-u8nmqxski4] {
    background: var(--cart-surface);
    border-radius: 10px;
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cart-field-row[b-u8nmqxski4] { display: flex; gap: 10px; }
.cart-date-row[b-u8nmqxski4] { display: flex; }
.cart-chk-tax-row[b-u8nmqxski4] { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.cart-field[b-u8nmqxski4] { display: flex; flex-direction: column; gap: 4px; flex: 1; font-size: 12px; color: var(--cart-text-muted); }
.cart-input[b-u8nmqxski4] {
    padding: 9px 11px;
    border-radius: var(--cart-radius-sm);
    border: 1px solid var(--cart-border);
    font-size: 13px;
    color: var(--cart-text);
    background: var(--cart-surface);
}
.cart-chk-row[b-u8nmqxski4] { display: flex; align-items: center; gap: 6px; font-size: 13px; }

.cart-toggle-row[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 13px;
    color: var(--cart-text);
}
.cart-toggle-row strong[b-u8nmqxski4] { color: var(--cart-primary); }
.cart-toggle-switch[b-u8nmqxski4] {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
}
.cart-toggle-switch input[b-u8nmqxski4] {
    opacity: 0;
    width: 0;
    height: 0;
}
.cart-toggle-slider[b-u8nmqxski4] {
    position: absolute;
    inset: 0;
    background: #d1d5db;
    border-radius: 24px;
    cursor: pointer;
    transition: background .2s;
}
.cart-toggle-slider[b-u8nmqxski4]::before {
    content: "";
    position: absolute;
    width: 18px;
    height: 18px;
    left: 3px;
    top: 3px;
    background: #fff;
    border-radius: 50%;
    transition: transform .2s;
    box-shadow: 0 1px 3px rgba(16,24,40,.25);
}
.cart-toggle-switch input:checked + .cart-toggle-slider[b-u8nmqxski4] { background: var(--cart-success); }
.cart-toggle-switch input:checked + .cart-toggle-slider[b-u8nmqxski4]::before { transform: translateX(20px); }

.cart-pill-row[b-u8nmqxski4] { display: flex; gap: 8px; flex-wrap: wrap; }
.cart-pill-btn[b-u8nmqxski4] {
    border: 1px solid var(--cart-border);
    background: var(--cart-surface);
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 11.5px;
    font-weight: 700;
    color: var(--cart-text-muted);
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}
.cart-pill-btn:hover:not(.active)[b-u8nmqxski4] { background: var(--cart-bg); }
.cart-pill-btn.active[b-u8nmqxski4] { background: var(--cart-primary); border-color: var(--cart-primary); color: #fff; }

.cart-bill[b-u8nmqxski4] {
    background: var(--cart-surface);
    border-radius: var(--cart-radius);
    box-shadow: var(--cart-shadow);
    padding: 16px;
}
.cart-bill-hdr[b-u8nmqxski4] { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 14px; margin-bottom: 10px; }
.cart-bill-hdr i[b-u8nmqxski4] { color: var(--cart-text-muted); font-size: 13px; }
.cart-bill-line[b-u8nmqxski4] {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    color: var(--cart-text-muted);
    padding: 4px 0;
}
.cart-bill-total[b-u8nmqxski4] {
    border-top: 1px dashed var(--cart-border);
    margin-top: 6px;
    padding-top: 8px;
    font-weight: 700;
    font-size: 15px;
    color: var(--cart-text);
}

.cart-drawer-foot[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    gap: 10px;
    padding: 14px 18px;
    background: var(--cart-surface);
    box-shadow: 0 -2px 8px rgba(16,24,40,.06);
}
.cart-new-btn[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 0 16px;
    border-radius: 26px;
    border: 1px solid var(--cart-border);
    background: var(--cart-surface);
    color: var(--cart-text-muted);
    font-weight: 600;
    font-size: 13.5px;
    white-space: nowrap;
    cursor: pointer;
}
.cart-pay-btn[b-u8nmqxski4] {
    flex: 1;
    background: var(--cart-accent);
    color: #fff;
    border: none;
    border-radius: 26px;
    font-weight: 700;
    font-size: 16px;
    padding: 15px 0;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(224,49,107,.35);
}
.cart-pay-btn:disabled[b-u8nmqxski4] { opacity: .6; cursor: not-allowed; box-shadow: none; }
.cart-pay-btn:not(:disabled):hover[b-u8nmqxski4] { background: var(--cart-accent-dark); }

/* ── Responsive breakpoints ──
   1100px: tablet — group rail narrows.
   860px: rail hidden, customer input shrinks (existing behavior kept).
   640px: phone — tighter spacing everywhere, smaller grid tiles, brand
     subtitle drops to save top-bar space.
   420px: small phone — customer name field collapses further, footer
     buttons/drawer padding tighten once more. */

@media (max-width: 1100px) {
    .cart-groups-rail[b-u8nmqxski4] { flex-basis: 150px; }
}

@media (max-width: 860px) {
    /* Was display:none — killed group filtering entirely on mobile with no
       replacement. Now a horizontal scroll strip along the top of the
       product grid instead of a vertical rail down the side. */
    .cart-body[b-u8nmqxski4] { flex-direction: column; }
    .cart-groups-rail[b-u8nmqxski4] {
        flex: 0 0 auto;
        flex-direction: row;
        overflow-x: auto;
        overflow-y: hidden;
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--cart-border);
        padding: 8px 10px;
        gap: 6px;
    }
    .cart-group-row[b-u8nmqxski4] {
        flex: 0 0 auto;
        flex-direction: column;
        gap: 4px;
        padding: 6px 10px;
        border-left: none;
        border-bottom: 3px solid transparent;
        text-align: center;
    }
    .cart-group-row.active[b-u8nmqxski4] { border-bottom-color: var(--cart-accent); }
    .cart-group-name[b-u8nmqxski4] { max-width: 64px; font-size: 11px; }
    [b-u8nmqxski4] .cart-cust-input { width: 130px; }
}

@media (max-width: 640px) {
    .cart-topbar[b-u8nmqxski4] { padding: 8px 12px; gap: 8px; }
    .cart-brand-sub[b-u8nmqxski4] { display: none; }
    .cart-back-btn[b-u8nmqxski4] { padding: 6px; }
    [b-u8nmqxski4] .cart-cust-input { width: 110px; font-size: 13px; }
    .cart-addcust-btn[b-u8nmqxski4], .cart-badge[b-u8nmqxski4] { width: 34px; height: 34px; }

    .cart-searchbar[b-u8nmqxski4] { margin: 10px 12px 0; padding: 10px 12px; font-size: 14px; }
    .cart-scroll-body[b-u8nmqxski4] { padding: 10px 12px 20px; }
    .cart-grid[b-u8nmqxski4] { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
    .cart-tile[b-u8nmqxski4] { padding: 8px 8px 14px; }
    .cart-tile-name[b-u8nmqxski4] { font-size: 12.5px; }
    .cart-price-now[b-u8nmqxski4] { font-size: 13px; }

    .cart-drawer-hdr[b-u8nmqxski4], .cart-drawer-foot[b-u8nmqxski4] { padding: 12px 14px; }
    .cart-drawer-body[b-u8nmqxski4] { padding: 12px 14px 16px; }
    .cart-drawer-panel[b-u8nmqxski4] { padding: 2px 10px 4px; }
    .cart-panel-info-row[b-u8nmqxski4], .cart-drawer-row[b-u8nmqxski4] { padding: 12px 2px; }
    .cart-bill[b-u8nmqxski4] { padding: 14px; }

    .cart-added-pop[b-u8nmqxski4] { right: 10px; top: 56px; }

    .cart-filter-chips[b-u8nmqxski4] { margin: 8px 12px 0; }
    .cart-filter-overlay[b-u8nmqxski4] { align-items: flex-end; }
    .cart-filter-modal[b-u8nmqxski4] {
        width: 100%;
        height: 78vh;
        border-radius: var(--cart-radius) var(--cart-radius) 0 0;
    }
    .cart-filter-tabs[b-u8nmqxski4] { flex-basis: 38%; max-width: 150px; }
    .cart-filter-tab[b-u8nmqxski4] { padding: 11px 10px; font-size: 12px; }
}

@media (max-width: 420px) {
    .cart-topbar[b-u8nmqxski4] { gap: 6px; }
    .cart-brand-main[b-u8nmqxski4] { font-size: 14px; }
    [b-u8nmqxski4] .cart-cust-input { width: 78px; padding: 8px 9px; font-size: 12.5px; }
    .cart-addcust-btn[b-u8nmqxski4], .cart-badge[b-u8nmqxski4] { width: 32px; height: 32px; font-size: 13px; }

    .cart-panel-date-pill[b-u8nmqxski4] { padding: 7px 9px; font-size: 11px; }
    .cart-new-btn[b-u8nmqxski4] { padding: 0 10px; font-size: 12.5px; }
    .cart-pay-btn[b-u8nmqxski4] { font-size: 14.5px; padding: 13px 0; }
}

/* ── Voucher view (post-save, read-only) — shown instead of the whole
   cart-editing UI once _voucherLocked is true. Same tokens as the rest
   of this page (.cart-root vars). ── */
.cart-voucher-view[b-u8nmqxski4] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: auto;
    background: #fff;
}

.cart-voucher-view-hdr[b-u8nmqxski4] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--cart-surface);
    border-bottom: 1px solid var(--cart-border);
    padding: 12px 18px;
}

.cart-voucher-view-icon[b-u8nmqxski4] {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(22, 163, 74, .12);
    color: var(--cart-success);
    font-size: 17px;
    flex-shrink: 0;
}

.cart-voucher-view-headtext[b-u8nmqxski4] { display: flex; flex-direction: column; margin-right: auto; }
.cart-voucher-view-eyebrow[b-u8nmqxski4] { font-size: 11px; color: var(--cart-text-muted); text-transform: uppercase; letter-spacing: .04em; }
.cart-voucher-view-title[b-u8nmqxski4] { font-weight: 700; font-size: 16px; color: var(--cart-text); }

.cart-newvoucher-btn[b-u8nmqxski4] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: none;
    border-radius: var(--cart-radius-sm);
    background: var(--cart-primary);
    color: #fff;
    font-weight: 600;
    font-size: 13.5px;
    padding: 10px 16px;
    cursor: pointer;
    white-space: nowrap;
}
.cart-newvoucher-btn:hover[b-u8nmqxski4] { filter: brightness(1.06); }

.cart-voucher-view-report[b-u8nmqxski4] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 16px 18px 24px;
}

@media (max-width: 640px) {
    .cart-voucher-view-hdr[b-u8nmqxski4] { padding: 10px 12px; gap: 8px; }
    .cart-voucher-view-title[b-u8nmqxski4] { font-size: 14px; }
    .cart-newvoucher-btn[b-u8nmqxski4] { padding: 9px 12px; font-size: 12.5px; }
    .cart-voucher-view-report[b-u8nmqxski4] { padding: 12px; }
}

/* ── Print (Ctrl+P) — only the voucher report itself should print, not
   this page's own topbar/back-button/new-voucher-button. VHtml's own
   internal print styling (if any) is untouched — this only strips
   CartEntry's own chrome around it. ── */
@media print {
    .cart-voucher-view-hdr[b-u8nmqxski4],
    .cart-back-btn[b-u8nmqxski4],
    .cart-newvoucher-btn[b-u8nmqxski4] {
        display: none !important;
    }
    .cart-voucher-view[b-u8nmqxski4],
    .cart-voucher-view-report[b-u8nmqxski4] {
        overflow: visible !important;
        padding: 0 !important;
        height: auto !important;
    }
}
/* /Components/Pages/Transactions/Voucher/Inventory/ChallanEntry.razor.rz.scp.css */
/* =====================================================
   ChallanEntry.razor.css
   Re-skinned to match InvVoucher.razor.css's design system
   (GAINS teal palette, rounded cards, uppercase field labels,
   pill tabs, fixed bottom action bar).
   ===================================================== */

.che-page[b-hl6fddptrl] {
    --che-accent: #1AB99A;
    --che-accent-dark: #0d9480;
    --che-accent-bg: #eafbf6;
    --che-bg: #ffffff;
    --che-border: #e2e8f0;
    --che-border-strong: #cbd5e1;
    --che-text: #1e293b;
    --che-muted: #64748b;
    --che-muted-light: #94a3b8;
    --che-danger: #dc2626;
    --che-danger-bg: #fef2f2;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--che-text);
    background: var(--che-bg);
    padding: 12px 12px 76px;
    font-size: 13px;
    overflow-x: hidden;
    max-width: 100vw;
    box-sizing: border-box;
}

/* ── Tabs (Voucher / aUdit / dOcuments / ...) — underline style ── */
.che-tabs[b-hl6fddptrl] {
    display: flex;
    gap: 4px;
    margin: 10px 0 12px;
    border-bottom: 2px solid var(--che-border);
}

.che-tab[b-hl6fddptrl] {
    padding: 9px 18px;
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .2px;
    background: transparent;
    color: var(--che-muted);
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: .12s;
}

    .che-tab:hover[b-hl6fddptrl] {
        color: var(--che-accent-dark);
    }

    .che-tab.active[b-hl6fddptrl] {
        color: var(--che-accent-dark);
        border-bottom-color: var(--che-accent);
    }

/* ── Title-bar rail toggles (Recent/Photo hide-show) ── */
.che-rail-toggle[b-hl6fddptrl] {
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    color: var(--che-text);
    border: 1.5px solid var(--che-border-strong);
    border-radius: 8px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}

    .che-rail-toggle:hover[b-hl6fddptrl] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

/* ── Collapsed-rail "show" tab — thin strip that reopens a hidden panel ── */
.che-rail-show-tab[b-hl6fddptrl] {
    flex: 0 0 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 0;
    background: #f8fafc;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    color: var(--che-muted-light);
    font-size: 14px;
    cursor: pointer;
    transition: .12s;
}

    .che-rail-show-tab:hover[b-hl6fddptrl] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

/* ── Body: 3-pane layout ── */
.che-body[b-hl6fddptrl] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

/* ── Right rail: Recent Voucher + Photo/CB stacked ── */
.che-right-rail[b-hl6fddptrl] {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Recent rail ── */
.che-recent[b-hl6fddptrl] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    overflow-y: auto;
    max-height: 340px;
    padding: 10px;
}

.che-recent-hdr[b-hl6fddptrl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--che-muted);
    padding: 2px 4px 10px;
}

.che-recent-expand[b-hl6fddptrl] {
    background: none;
    border: none;
    color: var(--che-muted-light);
    cursor: pointer;
}

    .che-recent-expand:hover[b-hl6fddptrl] {
        color: var(--che-accent-dark);
    }

.che-recent-item[b-hl6fddptrl] {
    padding: 8px 8px;
    border-radius: 8px;
    cursor: pointer;
    transition: .12s;
}

    .che-recent-item:hover[b-hl6fddptrl] {
        background: var(--che-accent-bg);
    }

.che-recent-num[b-hl6fddptrl] {
    font-size: 12.5px;
    font-weight: 700;
    color: var(--che-accent-dark);
}

.che-recent-type[b-hl6fddptrl] {
    font-size: 11px;
    color: var(--che-danger);
    font-weight: 600;
}

.che-recent-date[b-hl6fddptrl] {
    font-size: 10.5px;
    color: var(--che-muted-light);
}

.che-recent-amt[b-hl6fddptrl] {
    font-size: 11.5px;
    color: var(--che-text);
    font-weight: 600;
}

/* Readonly fields (item modal UOM / HSN Code — auto-populated from the
   picked item, not meant for manual typing) stay visibly greyed instead of
   turning white/focusable like an editable field. */
.che-field input[readonly][b-hl6fddptrl] {
    background: #eef1f5 !important;
    color: var(--che-muted);
    cursor: not-allowed;
}

    .che-field input[readonly]:focus[b-hl6fddptrl] {
        border-color: var(--che-border);
        box-shadow: none;
        background: #eef1f5 !important;
    }

/* ── Main form + grid ── */
.che-main[b-hl6fddptrl] {
    flex: 1;
    min-width: 0;
}

.che-placeholder[b-hl6fddptrl] {
    padding: 40px;
    text-align: center;
    color: var(--che-muted-light);
    font-size: 13px;
}

.che-card[b-hl6fddptrl] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 14px;
}

.che-form-grid[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1.5px solid var(--che-border);
}

.che-field[b-hl6fddptrl] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    position: relative;
}

.che-field-wide[b-hl6fddptrl] {
    grid-column: span 2;
}

.che-field span[b-hl6fddptrl] {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--che-muted);
}

.che-field input[type="text"][b-hl6fddptrl],
.che-field input[type="date"][b-hl6fddptrl],
.che-field input:not([type])[b-hl6fddptrl],
.che-field select[b-hl6fddptrl],
.che-field textarea[b-hl6fddptrl] {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
}

.che-field textarea[b-hl6fddptrl] {
    height: auto;
    min-height: 44px;
    padding: 8px 10px;
    resize: vertical;
}

    .che-field input:focus[b-hl6fddptrl],
    .che-field select:focus[b-hl6fddptrl],
    .che-field textarea:focus[b-hl6fddptrl] {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

/* Depot/SalesRep dropdowns and LedgerAutofill's input render inside a child
   component's own markup — ::deep reaches past that boundary so they pick
   up the same look without needing their param contracts changed. */
.che-field[b-hl6fddptrl]  select,
.che-field[b-hl6fddptrl]  input {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
    box-sizing: border-box;
}

    .che-field[b-hl6fddptrl]  select:focus,
    .che-field[b-hl6fddptrl]  input:focus {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.che-autofill[b-hl6fddptrl] {
    position: relative;
}

.che-autofill-list[b-hl6fddptrl] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 20;
    background: #fff;
    border: 1px solid var(--che-border);
    border-radius: 10px;
    max-height: 200px;
    overflow-y: auto;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
}

.che-autofill-opt[b-hl6fddptrl] {
    padding: 8px 12px;
    font-size: 12.5px;
    cursor: pointer;
}

    .che-autofill-opt:hover[b-hl6fddptrl] {
        background: var(--che-accent-bg);
    }

/* LedgerAutofill / ItemAutofill (Components/Shared) render their own markup
   (lga-*/ ia-*) inside a child component — need[b-hl6fddptrl]  to reach it. */
::deep .lga-wrap {
    position: relative;
    display: block;
}

[b-hl6fddptrl] .lga-suggest {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--che-border);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
    max-height: 200px;
    overflow-y: auto;
    z-index: 40;
    list-style: none;
    margin: 0;
    padding: 4px 0;
}

    [b-hl6fddptrl] .lga-suggest li {
        padding: 8px 12px;
        cursor: pointer;
        font-size: 12.5px;
    }

        [b-hl6fddptrl] .lga-suggest li:hover,
        [b-hl6fddptrl] .lga-suggest li.active {
            background: var(--che-accent-bg);
        }

/* ── Item grid toolbar: label left, Add item button right ── */
.che-grid-toolbar[b-hl6fddptrl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.che-grid-toolbar-label[b-hl6fddptrl] {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--che-muted);
}

/* ── Item grid ── */
.che-grid-wrap[b-hl6fddptrl] {
    overflow: auto;
}

.che-item-table[b-hl6fddptrl] {
    width: 100%;
    border-collapse: collapse;
}

    .che-item-table thead th[b-hl6fddptrl] {
        background: #f8fafc;
        color: var(--che-muted);
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        padding: 8px;
        border-bottom: 1.5px solid var(--che-border);
        text-align: left;
    }

    .che-item-table td[b-hl6fddptrl] {
        padding: 8px;
        font-size: 12.5px;
        border-bottom: 1px solid var(--che-border);
    }

.che-row-clickable[b-hl6fddptrl] {
    cursor: pointer;
    transition: background .12s;
}

    .che-row-clickable:hover[b-hl6fddptrl] {
        background: var(--che-accent-bg);
    }

.che-add-item-btn[b-hl6fddptrl] {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: 1.5px dashed var(--che-border-strong);
    color: var(--che-accent-dark);
    font-size: 12px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    cursor: pointer;
}

    .che-add-item-btn:hover[b-hl6fddptrl] {
        background: var(--che-accent-bg);
        border-color: var(--che-accent);
    }

.che-row-actions[b-hl6fddptrl] {
    text-align: center;
}

    .che-row-actions button[b-hl6fddptrl] {
        background: none;
        border: none;
        color: var(--che-muted);
        cursor: pointer;
        font-size: 13px;
        padding: 3px 5px;
    }

        .che-row-actions button:hover[b-hl6fddptrl] {
            color: var(--che-danger);
        }

.che-empty[b-hl6fddptrl] {
    text-align: center;
    color: var(--che-muted-light);
    font-size: 12.5px;
    padding: 20px !important;
}

.che-totals-row[b-hl6fddptrl] {
    background: var(--che-accent-bg);
    color: var(--che-accent-dark);
    font-weight: 700;
}

    .che-totals-row td[b-hl6fddptrl] {
        border: none !important;
        padding: 10px 8px !important;
    }

/* ── Explicit input class passed to child components (ItemAutofill) so
   their internally-rendered <input> matches che-field's look without
   relying on ::deep reaching into them. ── */
.che-input[b-hl6fddptrl] {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
    box-sizing: border-box;
}

    .che-input:focus[b-hl6fddptrl] {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.text-right[b-hl6fddptrl] {
    text-align: right;
}

/* ── Item add/edit modal — matches InvVoucher's iv-modal ── */
.che-overlay[b-hl6fddptrl] {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,.5);
    z-index: 100;
}

.che-modal[b-hl6fddptrl] {
    --che-accent: #1AB99A;
    --che-accent-dark: #0d9480;
    --che-accent-bg: #eafbf6;
    --che-border: #e2e8f0;
    --che-border-strong: #cbd5e1;
    --che-text: #1e293b;
    --che-muted: #64748b;
    --che-muted-light: #94a3b8;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 101;
    background: #fff;
    border-radius: 14px;
    width: 100%;
    max-width: 640px;
    max-height: 80vh;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    display: flex;
    flex-direction: column;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    font-size: 13px;
}

.che-modal-head[b-hl6fddptrl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 22px;
    border-bottom: 1px solid var(--che-border);
    font-weight: 700;
    font-size: 14px;
    flex-shrink: 0;
}

    .che-modal-head span[b-hl6fddptrl] {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        color: var(--che-text);
    }

        .che-modal-head span i[b-hl6fddptrl] {
            color: var(--che-accent);
        }

.che-modal-body[b-hl6fddptrl] {
    padding: 18px 22px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
}

.che-modal-grid[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.che-modal-linetotal[b-hl6fddptrl] {
    grid-column: span 2;
    background: var(--che-accent-bg);
    border-radius: 8px;
    padding: 10px 14px;
    margin-top: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 700;
    color: var(--che-accent-dark);
}

.che-modal-error[b-hl6fddptrl] {
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--che-danger);
    background: var(--che-danger-bg);
    border-radius: 8px;
    padding: 8px 12px;
}

.che-modal-actions[b-hl6fddptrl] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 14px 22px;
    border-top: 1px solid var(--che-border);
    flex-shrink: 0;
}

/* ── Fixed bottom action bar — matches InvVoucher's iv-footer-bar ── */
.che-footer-bar[b-hl6fddptrl] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 1.5px solid var(--che-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
    z-index: 50;
    padding: 6px 12px;
}

.che-footer-inner[b-hl6fddptrl] {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

.che-btn[b-hl6fddptrl] {
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    padding: 6px 12px;
    border-radius: 8px;
    border: 1.5px solid var(--che-border-strong);
    background: #fff;
    color: var(--che-text);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}

    .che-btn:hover[b-hl6fddptrl] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

.che-btn-primary[b-hl6fddptrl] {
    background: var(--che-accent);
    color: #fff;
    border-color: var(--che-accent);
}

    .che-btn-primary:hover[b-hl6fddptrl] {
        background: var(--che-accent-dark);
        color: #fff;
    }

.che-btn:disabled[b-hl6fddptrl] {
    opacity: .6;
    cursor: not-allowed;
}

.che-save-msg[b-hl6fddptrl] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    margin-left: 4px;
}

.che-save-ok[b-hl6fddptrl] {
    color: var(--che-accent-dark);
}

.che-save-err[b-hl6fddptrl] {
    color: var(--che-danger);
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .che-body[b-hl6fddptrl] {
        flex-direction: column;
    }

    .che-right-rail[b-hl6fddptrl],
    .che-recent[b-hl6fddptrl] {
        flex: none;
        width: 100%;
    }

    .che-form-grid[b-hl6fddptrl] {
        grid-template-columns: repeat(2, 1fr);
    }

    .che-field-wide[b-hl6fddptrl] {
        grid-column: span 2;
    }
}

@media (max-width: 600px) {
    .che-form-grid[b-hl6fddptrl] {
        grid-template-columns: 1fr;
    }

    .che-field-wide[b-hl6fddptrl] {
        grid-column: span 1;
    }

    .che-footer-inner[b-hl6fddptrl] {
        gap: 6px;
    }

    /* Title row (GAINS toggle + heading + Recent/Photo buttons) was the
       actual source of the mobile horizontal-scroll bug — three items in
       a non-wrapping flex row overflow a phone-width viewport. */
    .che-page .bspl-title-row[b-hl6fddptrl] {
        flex-wrap: wrap;
        row-gap: 8px;
    }

    .che-page .bspl-title-actions[b-hl6fddptrl] {
        flex-wrap: wrap;
        width: 100%;
    }

    .che-rail-toggle-label[b-hl6fddptrl] {
        display: none;
    }

    .che-rail-toggle[b-hl6fddptrl] {
        padding: 8px 10px;
    }
}

/* Small-font batch/lot summary shown under the Item field (popup) and
   under the item name in the cart grid — set via BatchLotQtyModal (setting 137). */
/* Base: cart-grid usage (under item name in the table cell) — plain, no box. */
span.che-batchlot-note[b-hl6fddptrl] {
    display: block;
    font-size: 9px;
    color: #888888;
    margin-top: 2px;
}

/* Popup usage (opposite Rate) — looks like the sibling input boxes (base
   .che-field input:not([type]) rule already gives it that), click reopens
   BatchLotQtyModal so the user can re-edit. */
.che-batchlot-input[b-hl6fddptrl] {
    font-size: 11px;
    color: #888888;
    cursor: pointer;
}

    .che-batchlot-input:hover[b-hl6fddptrl] {
        border-color: #1AB99A;
    }

/* ── Toast — shown when a tab (Audit/Documents/View/Cross Links/Cost
   Center) is clicked before the challan has a ChallanId (i.e. not yet
   saved / not opened via ?CID=). Fixed top-center, auto-dismisses. ── */
.che-toast[b-hl6fddptrl] {
    position: fixed;
    top: 70px;
    left: 50%;
    transform: translateX(-50%);
    background: #1a2537;
    color: #fff;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 6px 18px rgba(0,0,0,.25);
    z-index: 2000;
    animation: che-toast-in-b-hl6fddptrl .15s ease-out;
}

@keyframes che-toast-in-b-hl6fddptrl {
    from {
        opacity: 0;
        transform: translate(-50%, -8px);
    }

    to {
        opacity: 1;
        transform: translate(-50%, 0);
    }
}

.che-toast-ok[b-hl6fddptrl] {
    background: #0d9480;
}

.che-toast-err[b-hl6fddptrl] {
    background: #dc2626;
}

/* ── Save confirmation — "sweet alert" style modal ── */
.che-confirm-overlay[b-hl6fddptrl] {
    z-index: 200;
    background: rgba(15,23,42,.55);
}

.che-confirm-modal[b-hl6fddptrl] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 201;
    background: #fff;
    border-radius: 18px;
    width: 100%;
    max-width: 380px;
    padding: 32px 28px 26px;
    box-shadow: 0 24px 60px rgba(0,0,0,.28);
    text-align: center;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    animation: che-confirm-pop-b-hl6fddptrl .18s cubic-bezier(.34,1.56,.64,1);
}

@keyframes che-confirm-pop-b-hl6fddptrl {
    from {
        opacity: 0;
        transform: translate(-50%, -50%) scale(.85);
    }

    to {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1);
    }
}

.che-confirm-icon[b-hl6fddptrl] {
    width: 64px;
    height: 64px;
    margin: 0 auto 16px;
    border-radius: 50%;
    background: var(--che-accent-bg, #eafbf6);
    color: #1AB99A;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
}

.che-confirm-title[b-hl6fddptrl] {
    font-size: 18px;
    font-weight: 800;
    color: #1e293b;
    margin-bottom: 8px;
}

.che-confirm-msg[b-hl6fddptrl] {
    font-size: 13.5px;
    color: #64748b;
    line-height: 1.5;
    margin-bottom: 24px;
}

.che-confirm-actions[b-hl6fddptrl] {
    display: flex;
    gap: 10px;
    justify-content: center;
}

.che-confirm-btn[b-hl6fddptrl] {
    flex: 1;
    padding: 10px 16px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    transition: .12s;
    font-family: inherit;
}

.che-confirm-cancel[b-hl6fddptrl] {
    background: #f1f5f9;
    color: #475569;
    border: 1.5px solid #e2e8f0;
}

    .che-confirm-cancel:hover[b-hl6fddptrl] {
        background: #e2e8f0;
    }

.che-confirm-yes[b-hl6fddptrl] {
    background: #1AB99A;
    color: #fff;
    border: 1.5px solid #1AB99A;
}

    .che-confirm-yes:hover[b-hl6fddptrl] {
        background: #0d9480;
    }

@media (max-width: 480px) {
    .che-confirm-modal[b-hl6fddptrl] {
        max-width: 90vw;
        padding: 26px 18px 20px;
    }
}
/* /Components/Pages/Transactions/Voucher/Inventory/InvVoucher.razor.rz.scp.css */
/* =====================================================
   InvVoucher.razor.css
   Scoped styles for the Inventory Voucher page.
   Palette matches Login.razor.css (GAINS teal), plus a
   dedicated purchase-mode accent (light orange).
   ===================================================== */

.iv-page[b-s3cvf82m4z] {
    --iv-accent: #1AB99A;
    --iv-accent-dark: #0d9480;
    --iv-accent-bg: #eafbf6;
    --iv-purchase: #f97316;
    --iv-purchase-dark: #c2410c;
    --iv-purchase-bg: #fff4ec;
    --iv-bg: #f1f5f9;
    --iv-panel: #ffffff;
    --iv-border: #e2e8f0;
    --iv-border-strong: #cbd5e1;
    --iv-text: #1e293b;
    --iv-muted: #64748b;
    --iv-muted-light: #94a3b8;
    --iv-danger: #dc2626;
    --iv-danger-bg: #fef2f2;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--iv-text);
    padding: 20px 12px 86px;
    font-size: 13px;
}



/* ---------- topbar ---------- */
.iv-topbar[b-s3cvf82m4z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 12px;
}

.iv-topbar-left[b-s3cvf82m4z] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

.iv-status[b-s3cvf82m4z] {
    font-size: 12px;
    font-weight: 600;
    color: var(--iv-accent-dark);
    min-height: 16px;
}

.iv-status-error[b-s3cvf82m4z] {
    color: var(--iv-danger);
}

.iv-btn[b-s3cvf82m4z] {
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    border: 1.5px solid var(--iv-border-strong);
    background: #fff;
    color: var(--iv-text);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}

    .iv-btn:hover[b-s3cvf82m4z] {
        border-color: var(--iv-accent);
        color: var(--iv-accent-dark);
    }

    .iv-btn:disabled[b-s3cvf82m4z] {
        opacity: .5;
        cursor: not-allowed;
    }

.iv-btn-primary[b-s3cvf82m4z] {
    background: var(--iv-accent);
    color: #fff;
    border-color: var(--iv-accent);
}

    .iv-btn-primary:hover[b-s3cvf82m4z] {
        background: var(--iv-accent-dark);
        color: #fff;
    }

.iv-btn-danger:hover[b-s3cvf82m4z] {
    border-color: var(--iv-danger);
    color: var(--iv-danger);
    background: var(--iv-danger-bg);
}

.iv-btn-sm[b-s3cvf82m4z] {
    padding: 5px 10px;
    font-size: 11.5px;
}

/* ---------- settings panel ---------- */
.iv-settings-panel[b-s3cvf82m4z] {
    background: #fff;
    border: 1.5px solid var(--iv-border);
    border-radius: 10px;
    padding: 12px 16px;
    margin-bottom: 12px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 18px;
}

.iv-check[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    color: var(--iv-muted);
    cursor: pointer;
}

.iv-check-col[b-s3cvf82m4z] {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}

/* ---------- tabs ---------- */
.iv-tabs[b-s3cvf82m4z] {
    display: flex;
    gap: 4px;
    margin-bottom: 12px;
    border-bottom: 2px solid var(--iv-border);
}

.iv-tab[b-s3cvf82m4z] {
    padding: 9px 18px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--iv-muted);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.iv-tab-active[b-s3cvf82m4z] {
    color: var(--iv-accent-dark);
    border-color: var(--iv-accent);
}

.iv-tab-locked[b-s3cvf82m4z] {
    color: var(--iv-muted-light);
    cursor: not-allowed;
}

/* ---------- layout ---------- */
.iv-panel-split[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 16px;
}

.iv-side[b-s3cvf82m4z] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.iv-card[b-s3cvf82m4z] {
    background: #fff;
    border: 1.5px solid var(--iv-border);
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 14px;
}

.iv-section-title[b-s3cvf82m4z] {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--iv-muted);
    margin: 0 0 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 7px;
}

/* voucher-type mode tint */
.iv-header-card[b-s3cvf82m4z] {
    border-top: 4px solid var(--iv-accent);
    transition: border-color .15s, background .15s;
}

    .iv-header-card.iv-mode-sales[b-s3cvf82m4z] {
        border-top-color: var(--iv-accent);
        background: linear-gradient(180deg, var(--iv-accent-bg) 0%, #fff 90px);
    }

    .iv-header-card.iv-mode-purchase[b-s3cvf82m4z] {
        border-top-color: var(--iv-purchase);
        background: linear-gradient(180deg, var(--iv-purchase-bg) 0%, #fff 90px);
    }

.iv-vtype-strip[b-s3cvf82m4z] {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
}

.iv-vtype-pill[b-s3cvf82m4z] {
    flex: 1;
    text-align: center;
    padding: 10px;
    border-radius: 9px;
    background: #f8fafc;
    border: 1.5px solid var(--iv-border);
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    color: var(--iv-muted);
    transition: .12s;
}

    .iv-vtype-pill.iv-active[data-vtype="sales"][b-s3cvf82m4z] {
        background: var(--iv-accent-bg);
        border-color: var(--iv-accent);
        color: var(--iv-accent-dark);
    }

    .iv-vtype-pill.iv-active[data-vtype="purchase"][b-s3cvf82m4z] {
        background: var(--iv-purchase-bg);
        border-color: var(--iv-purchase);
        color: var(--iv-purchase-dark);
    }

/* ---------- fields ---------- */
.iv-field-grid[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.iv-field[b-s3cvf82m4z] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.iv-field-wide[b-s3cvf82m4z] {
    grid-column: span 2;
}

.iv-field label[b-s3cvf82m4z] {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--iv-muted);
}

.iv-input[b-s3cvf82m4z], [b-s3cvf82m4z] .iv-input {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--iv-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--iv-text);
    outline: none;
    transition: .12s;
    width: 100%;
}

    .iv-input:focus[b-s3cvf82m4z], [b-s3cvf82m4z] .iv-input:focus {
        border-color: var(--iv-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

    .iv-input[readonly][b-s3cvf82m4z], .iv-input:disabled[b-s3cvf82m4z], [b-s3cvf82m4z] .iv-input[readonly], [b-s3cvf82m4z] .iv-input:disabled {
        background: #f1f5f9;
        color: var(--iv-muted);
    }

.iv-mono[b-s3cvf82m4z] {
    font-family: 'Courier New', monospace;
    font-weight: 600;
}

.iv-narration[b-s3cvf82m4z] {
    height: auto;
    min-height: 44px;
    padding: 8px 10px;
    resize: vertical;
}

.iv-currency[b-s3cvf82m4z] {
    width: 90px;
}

.iv-exchrate[b-s3cvf82m4z] {
    width: 110px;
}

.iv-customer-add[b-s3cvf82m4z] {
    display: flex;
    gap: 6px;
    align-items: flex-end;
}

.iv-inline-add[b-s3cvf82m4z] {
    display: flex;
    gap: 6px;
    margin-top: 6px;
}

.iv-checks-row[b-s3cvf82m4z] {
    display: flex;
    gap: 24px;
    margin-top: 12px;
    flex-wrap: wrap;
}

/* ── Inset "Rate inclusive of GST?" block — same inset-block + Yes/No pill
   pattern OrderEntry.razor.css's .oe-inset-block/.oe-pill use, ported here
   (iv- variables instead of oe-) for a consistent look across voucher pages. ── */
.iv-inset-block[b-s3cvf82m4z] {
    background: #f9fafb;
    border: 0.5px solid var(--iv-border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-top: 12px;
}

.iv-inset-hdr[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.iv-inset-title[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--iv-text);
}

    .iv-inset-title i[b-s3cvf82m4z] {
        font-size: 16px;
        color: var(--iv-accent);
    }

.iv-pill-group[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.iv-pill[b-s3cvf82m4z] {
    border: 1px solid var(--iv-border);
    background: #fff;
    color: var(--iv-muted);
    font-size: 12px;
    font-weight: 600;
    padding: 6px 14px;
    border-radius: 20px;
    cursor: pointer;
    font-family: inherit;
}

    .iv-pill.active[b-s3cvf82m4z] {
        background: var(--iv-accent);
        color: #fff;
        border-color: var(--iv-accent);
    }

    .iv-pill:disabled[b-s3cvf82m4z] {
        cursor: not-allowed;
        opacity: 0.55;
    }

/* ---------- autocomplete ---------- */
.iv-auto[b-s3cvf82m4z] {
    position: relative;
}

.iv-suggest[b-s3cvf82m4z] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--iv-border);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
    max-height: 200px;
    overflow-y: auto;
    z-index: 40;
}

.iv-suggest-row[b-s3cvf82m4z] {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 12px;
    cursor: pointer;
    font-size: 12.5px;
}

    .iv-suggest-row:hover[b-s3cvf82m4z] {
        background: var(--iv-accent-bg);
    }

    .iv-suggest-row small[b-s3cvf82m4z] {
        color: var(--iv-muted-light);
    }

/* LedgerAutofill / ItemAutofill (Components/Shared) render their own markup with their
   own class names (lga-* / ia-*) — these need ::deep since they're rendered inside a
   child component, not directly by this page. */
[b-s3cvf82m4z] .lga-wrap, [b-s3cvf82m4z] .ia-wrap {
    position: relative;
    display: block;
}

[b-s3cvf82m4z] .lga-spin, [b-s3cvf82m4z] .ia-spin {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--iv-muted-light);
    font-size: 12px;
}

[b-s3cvf82m4z] .lga-suggest, [b-s3cvf82m4z] .ia-suggest {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--iv-border);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
    max-height: 200px;
    overflow-y: auto;
    z-index: 40;
    list-style: none;
    margin: 0;
    padding: 4px;
}

    [b-s3cvf82m4z] .lga-suggest li, [b-s3cvf82m4z] .ia-suggest li {
        padding: 8px 10px;
        cursor: pointer;
        font-size: 12.5px;
        border-radius: 6px;
    }

        [b-s3cvf82m4z] .lga-suggest li:hover, [b-s3cvf82m4z] .ia-suggest li:hover,
        [b-s3cvf82m4z] .lga-suggest li.active, [b-s3cvf82m4z] .ia-suggest li.active {
            background: var(--iv-accent-bg);
        }

[b-s3cvf82m4z] .lga-empty, [b-s3cvf82m4z] .ia-empty {
    color: var(--iv-muted-light);
    cursor: default;
}

[b-s3cvf82m4z] .lga-name, [b-s3cvf82m4z] .ia-name {
    font-size: 12.5px;
}

/* ---------- tables ---------- */
.iv-table-wrap[b-s3cvf82m4z] {
    overflow-x: auto;
}

.iv-table[b-s3cvf82m4z] {
    width: 100%;
    border-collapse: collapse;
}

    .iv-table thead th[b-s3cvf82m4z] {
        background: #f8fafc;
        color: var(--iv-muted);
        font-size: 10px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        padding: 8px;
        text-align: left;
        border-bottom: 1.5px solid var(--iv-border);
    }

    /* .iv-table thead th's element+class selector above (0,1,2) otherwise
       beats the plain .text-right utility (0,1,0), so header cells stayed
       left-aligned even though the markup already puts text-right on the
       numeric column headers (Qty/Rate/Amount/... and the Before/Tax/After
       tax side tables' %/Amount/Base/Dr/Cr headers). Matching specificity
       here so the utility class wins as intended. */
    .iv-table thead th.text-right[b-s3cvf82m4z] {
        text-align: right;
    }

    .iv-table tbody td[b-s3cvf82m4z] {
        padding: 6px 8px;
        border-bottom: 1px solid var(--iv-border);
        vertical-align: middle;
        font-size: 12px;
    }

    .iv-table tfoot td[b-s3cvf82m4z] {
        background: #f8fafc;
        font-weight: 700;
        padding: 8px;
        font-size: 11.5px;
    }

.text-right[b-s3cvf82m4z] {
    text-align: right;
}

.iv-bold[b-s3cvf82m4z] {
    font-weight: 700;
    color: var(--iv-accent-dark);
}

.iv-sub-line[b-s3cvf82m4z] {
    font-size: 10.5px;
    color: var(--iv-muted-light);
    margin-top: 2px;
}

.iv-row-clickable[b-s3cvf82m4z] {
    cursor: pointer;
}

    .iv-row-clickable:hover[b-s3cvf82m4z] {
        background: var(--iv-accent-bg);
    }

.iv-row-actions[b-s3cvf82m4z] {
    display: flex;
    gap: 4px;
    justify-content: center;
}

.iv-icon-btn[b-s3cvf82m4z] {
    border: none;
    background: none;
    color: var(--iv-muted);
    cursor: pointer;
    font-size: 13px;
    padding: 3px 5px;
}

    .iv-icon-btn:hover[b-s3cvf82m4z] {
        color: var(--iv-accent-dark);
    }

.iv-icon-danger:hover[b-s3cvf82m4z] {
    color: var(--iv-danger);
}

.iv-input-cell[b-s3cvf82m4z], [b-s3cvf82m4z] .iv-input-cell {
    border: none;
    background: transparent;
    padding: 4px 2px;
}

.iv-side-table[b-s3cvf82m4z] {
    font-size: 12px;
}

.iv-muted[b-s3cvf82m4z] {
    color: var(--iv-muted-light);
}

.iv-muted-sm[b-s3cvf82m4z] {
    font-size: 11px;
    color: var(--iv-muted-light);
}

.iv-neg[b-s3cvf82m4z] {
    color: var(--iv-danger);
}

.iv-add-row-btn[b-s3cvf82m4z] {
    margin: 10px 0 2px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: 1.5px dashed var(--iv-border-strong);
    color: var(--iv-accent-dark);
    font-size: 12px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    cursor: pointer;
}

    .iv-add-row-btn:hover[b-s3cvf82m4z] {
        background: var(--iv-accent-bg);
        border-color: var(--iv-accent);
    }

.iv-three-col[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

/* ---------- totals ---------- */
.iv-totals-wrap[b-s3cvf82m4z] {
    display: flex;
    justify-content: flex-end;
    margin-top: 12px;
}

.iv-totals-card[b-s3cvf82m4z] {
    width: 340px;
    background: #f8fafc;
    border: 1.5px solid var(--iv-border);
    border-radius: 10px;
    padding: 14px 18px;
}

.iv-totals-line[b-s3cvf82m4z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 0;
    font-size: 12.5px;
}

.iv-totals-input[b-s3cvf82m4z] {
    width: 100px;
    text-align: right;
    height: 30px;
}

.iv-totals-grand[b-s3cvf82m4z] {
    border-top: 1.5px solid var(--iv-border-strong);
    margin-top: 6px;
    padding-top: 10px;
    font-weight: 800;
    font-size: 17px;
    color: var(--iv-accent-dark);
}

/* ---------- party / side panel ---------- */
.iv-party-box[b-s3cvf82m4z] {
    background: #f8fafc;
    border: 1px solid var(--iv-border);
    border-radius: 8px;
    padding: 10px 12px;
    margin-top: 10px;
}

.iv-cb[b-s3cvf82m4z] {
    font-weight: 700;
    font-size: 13px;
    color: var(--iv-accent-dark);
}

.iv-cb-danger[b-s3cvf82m4z] {
    color: var(--iv-danger);
}

.iv-party-line[b-s3cvf82m4z] {
    font-size: 11.5px;
    color: var(--iv-muted);
    margin-top: 3px;
}

.iv-btn-row[b-s3cvf82m4z] {
    display: flex;
    gap: 8px;
    margin-top: 10px;
}

    .iv-btn-row .iv-btn[b-s3cvf82m4z] {
        flex: 1;
        justify-content: center;
    }

.iv-mini-list[b-s3cvf82m4z] {
    max-height: 220px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.iv-mini-row[b-s3cvf82m4z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    border: 1px solid var(--iv-border);
    border-radius: 8px;
    font-size: 12px;
    background: #fafbfc;
}

.iv-tag[b-s3cvf82m4z] {
    font-size: 9.5px;
    text-transform: uppercase;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 5px;
    margin-right: 6px;
}

    .iv-tag.sales[b-s3cvf82m4z] {
        background: var(--iv-accent-bg);
        color: var(--iv-accent-dark);
    }

    .iv-tag.purchase[b-s3cvf82m4z] {
        background: var(--iv-purchase-bg);
        color: var(--iv-purchase-dark);
    }

.iv-link-btn[b-s3cvf82m4z] {
    border: none;
    background: none;
    color: var(--iv-muted);
    cursor: pointer;
    font-size: 11px;
    text-decoration: underline;
}

.iv-empty-note[b-s3cvf82m4z] {
    font-size: 11.5px;
    color: var(--iv-muted-light);
    padding: 8px 2px;
}

.iv-lock-note[b-s3cvf82m4z] {
    padding: 30px;
    text-align: center;
    color: var(--iv-muted-light);
    font-size: 13px;
}


/* ---------- view tab ---------- */
.iv-view-grid[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px 24px;
    margin-bottom: 16px;
}

.iv-view-item[b-s3cvf82m4z] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 12.5px;
}

    .iv-view-item span[b-s3cvf82m4z] {
        font-size: 10px;
        text-transform: uppercase;
        color: var(--iv-muted-light);
        font-weight: 700;
    }

/* ---------- attachments / links ---------- */
.iv-attach-drop[b-s3cvf82m4z] {
    border: 2px dashed var(--iv-border-strong);
    border-radius: 10px;
    padding: 24px;
    text-align: center;
    color: var(--iv-muted);
    margin-bottom: 14px;
}

.iv-attach-list[b-s3cvf82m4z] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.iv-attach-row[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 9px 12px;
    border: 1px solid var(--iv-border);
    border-radius: 8px;
    background: #fafbfc;
    font-size: 12.5px;
}

    .iv-attach-row a[b-s3cvf82m4z] {
        color: var(--iv-accent-dark);
        text-decoration: none;
        font-weight: 600;
        margin-right: 8px;
    }

.iv-link-form[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr auto;
    gap: 8px;
    margin-bottom: 14px;
}

/* ---------- modals ---------- */
.iv-overlay[b-s3cvf82m4z] {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,.5);
    z-index: 100;
}

.iv-modal[b-s3cvf82m4z] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 101;
    background: #fff;
    border-radius: 14px;
    width: 100%;
    max-width: 700px;
    max-height: 88vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    padding: 0;
}

.iv-modal-head[b-s3cvf82m4z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 22px;
    border-bottom: 1px solid var(--iv-border);
    font-weight: 700;
    font-size: 14px;
}

.iv-modal-body[b-s3cvf82m4z] {
    padding: 18px 22px;
}

.iv-modal-grid[b-s3cvf82m4z] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.iv-modal-linetotal[b-s3cvf82m4z] {
    grid-column: span 2;
    background: var(--iv-accent-bg);
    border-radius: 8px;
    padding: 10px 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 700;
    color: var(--iv-accent-dark);
}

.iv-modal-actions[b-s3cvf82m4z] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 14px 22px;
    border-top: 1px solid var(--iv-border);
}

/* Toast now uses the shared .mu-toast/.mu-toast-err (masters-forms.css,
   loaded globally) instead of a page-local style - see the markup in
   InvVoucher.razor and ShowToast() in its @code block. */

/* ---------- fixed footer ---------- */
.iv-footer-bar[b-s3cvf82m4z] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 1.5px solid var(--iv-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
    z-index: 50;
    padding: 10px 12px;
}

.iv-footer-inner[b-s3cvf82m4z] {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

@media print {
    .iv-topbar[b-s3cvf82m4z], .iv-settings-panel[b-s3cvf82m4z], .iv-tabs[b-s3cvf82m4z], .iv-side[b-s3cvf82m4z], .iv-add-row-btn[b-s3cvf82m4z], .iv-footer-bar[b-s3cvf82m4z] {
        display: none !important;
    }

    .iv-panel-split[b-s3cvf82m4z] {
        grid-template-columns: 1fr;
    }

    .iv-card[b-s3cvf82m4z] {
        border: none;
        box-shadow: none;
    }
}

@media (max-width: 900px) {
    .iv-field-grid[b-s3cvf82m4z] {
        grid-template-columns: repeat(2, 1fr);
    }

    .iv-panel-split[b-s3cvf82m4z] {
        grid-template-columns: 1fr;
    }

    .iv-settings-panel[b-s3cvf82m4z] {
        grid-template-columns: repeat(2, 1fr);
    }

    .iv-three-col[b-s3cvf82m4z] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Transactions/Voucher/Inventory/POSEntry.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   POSEntry.razor.css — Enterprise redesign pass
   CSS-ONLY. No .razor markup touched: every class name below is
   unchanged from the working version, only property values improved.
   Design tokens declared on .pos-page (Blazor scopes :root oddly,
   so we anchor variables on the page root instead).
   ═══════════════════════════════════════════════════════════════ */

/* FIX: .pos-rcp-modal (Create Receipt / Documents popups) renders as a
   sibling AFTER .pos-page closes in the markup, not as a descendant of it —
   so it was never in scope for the variables .pos-page declares below.
   var(--pos-success) etc. resolved to invalid there, silently dropping
   .pos-btn-save's background to transparent (white text on transparent =
   invisible), only "appearing" on :hover because color:var(--pos-accent-dark)
   is inherited and unset to whatever black text color happened to be
   ambient outside .pos-page. This rule re-declares just the variables
   (no layout properties) on that disconnected root so they resolve there
   too — .pos-settings-overlay is deliberately left out since it's a bare
   fullscreen click-catcher and doesn't use any of these tokens itself. */
.pos-rcp-modal[b-t8huazxvw3] {
    --pos-primary: #1a56a7;
    --pos-primary-dark: #164889;
    --pos-primary-soft: #eaf1fb;
    --pos-accent: #1ab99a;
    --pos-accent-dark: #0f9c81;
    --pos-success: #16a34a;
    --pos-danger: #dc2626;
    --pos-danger-soft: #fef2f2;
    --pos-warning: #d97706;
    --pos-bg: #f1f4f8;
    --pos-surface: #ffffff;
    --pos-border: #e2e6ec;
    --pos-border-strong: #d5dae2;
    --pos-text: #1a2537;
    --pos-text-muted: #64748b;
    --pos-text-faint: #94a3b8;
    --pos-radius-lg: 12px;
    --pos-radius-md: 8px;
    --pos-radius-sm: 6px;
    --pos-shadow-card: 0 1px 2px rgba(16,24,40,.04), 0 2px 8px rgba(16,24,40,.06);
    --pos-shadow-pop: 0 8px 24px rgba(16,24,40,.12);
}

.pos-page[b-t8huazxvw3] {
    --pos-primary: #1a56a7;
    --pos-primary-dark: #164889;
    --pos-primary-soft: #eaf1fb;
    --pos-accent: #1ab99a;
    --pos-accent-dark: #0f9c81;
    --pos-success: #16a34a;
    --pos-danger: #dc2626;
    --pos-danger-soft: #fef2f2;
    --pos-warning: #d97706;
    --pos-bg: #f1f4f8;
    --pos-surface: #ffffff;
    --pos-border: #e2e6ec;
    --pos-border-strong: #d5dae2;
    --pos-text: #1a2537;
    --pos-text-muted: #64748b;
    --pos-text-faint: #94a3b8;
    --pos-radius-lg: 12px;
    --pos-radius-md: 8px;
    --pos-radius-sm: 6px;
    --pos-shadow-card: 0 1px 2px rgba(16,24,40,.04), 0 2px 8px rgba(16,24,40,.06);
    --pos-shadow-pop: 0 8px 24px rgba(16,24,40,.12);
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    padding: 0 0 0 16px;
    font-family: 'Inter', 'Segoe UI', 'Open Sans', Arial, sans-serif;
    font-variant-numeric: tabular-nums;
    background: var(--pos-bg);
    color: var(--pos-text);
}

/* Header pieces (titlebar + menubar) and the footer are flex-shrink:0
   children of .pos-page's column — they stay put naturally. Only
   .pos-scroll-body (below) is allowed to grow/scroll. This replaces the
   old position:fixed-footer + big-bottom-padding hack. */
.pos-titlebar[b-t8huazxvw3],
.pos-menubar[b-t8huazxvw3] {
    flex-shrink: 0;
}

/* .pos-scroll-body prefers internal card scrolling (table-wraps below)
   over scrolling itself, but still allows a fallback page scroll when
   the viewport is too short even for the min-height floors on
   main-grid/lower-grid below — short window / devtools-open case was
   clipping and overlapping content with nowhere to scroll to reach it. */
.pos-scroll-body[b-t8huazxvw3] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px 0 20px;
}

/* ── Title bar ── */
.pos-titlebar[b-t8huazxvw3] {
    background: var(--pos-surface);
    padding: 16px 20px;
    margin: 0 0 0 -16px;
}

.pos-titlebar-row[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
}

.pos-titlebar-left[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 16px;
}

    .pos-titlebar-left h1[b-t8huazxvw3] {
        font-size: 21px;
        font-weight: 700;
        color: var(--pos-accent-dark);
        margin: 0;
        line-height: 1.25;
        letter-spacing: -0.01em;
    }

.pos-subtitle[b-t8huazxvw3] {
    font-size: 12.5px;
    color: var(--pos-text-muted);
    font-weight: 500;
}

.pos-gains-toggle[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--pos-accent);
    border: none;
    color: #fff;
    font-size: 14px;
    cursor: pointer;
    padding: 9px 18px;
    border-radius: var(--pos-radius-md);
    box-shadow: 0 2px 6px rgba(26,185,154,.3);
    transition: background .12s, box-shadow .12s;
}

    .pos-gains-toggle:hover[b-t8huazxvw3] {
        background: var(--pos-accent-dark);
        box-shadow: 0 3px 8px rgba(26,185,154,.4);
    }

.pos-toggle-label[b-t8huazxvw3] {
    font-size: 13px;
    font-weight: 700;
}

/* Hide this button while the sidebar is OPEN — DashboardLayout's own
   corner hamburger already handles toggling in that state, this one's
   only needed to re-open once the sidebar is collapsed. Same
   #gains-shell.sb-collapsed hook used elsewhere on this page. */
#gains-shell:not(.sb-collapsed) .pos-gains-toggle[b-t8huazxvw3] {
    display: none;
}

.pos-titlebar-actions[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 16px;
    position: relative;
}

.pos-gear-btn[b-t8huazxvw3] {
    background: none;
    border: none;
    color: var(--pos-text-muted);
    cursor: pointer;
    font-size: 16px;
    width: 32px;
    height: 32px;
    border-radius: var(--pos-radius-sm);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .12s, color .12s;
}

    .pos-gear-btn:hover[b-t8huazxvw3] {
        background: #f1f5f9;
        color: var(--pos-primary);
    }

/* ── Settings gear popover — dark header bar, checkbox grid body,
   matches the reference screenshot look. Read-only checkboxes (Enable
   Depots/Batch and Lot/Can Edit Item Rate) are visually greyed via the
   -ro modifier; only Inclusive Tax is actually interactive. ── */
.pos-settings-overlay[b-t8huazxvw3] {
    position: fixed;
    inset: 0;
    z-index: 1200;
}

.pos-settings-pop[b-t8huazxvw3] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: 320px;
    background: var(--pos-surface);
    border-radius: var(--pos-radius-md);
    box-shadow: 0 12px 32px rgba(15, 23, 42, .25);
    z-index: 1201;
    overflow: hidden;
}

.pos-settings-hdr[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #2d3944;
    color: #fff;
    font-weight: 700;
    font-size: 14px;
    padding: 12px 16px;
}

.pos-settings-body[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 12px;
    padding: 16px;
}

.pos-settings-chk[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--pos-text);
    cursor: pointer;
}

    .pos-settings-chk input[type="checkbox"][b-t8huazxvw3] {
        width: 16px;
        height: 16px;
        accent-color: var(--pos-primary);
    }

.pos-settings-chk-ro[b-t8huazxvw3] {
    color: var(--pos-text-muted);
    cursor: default;
}

    .pos-settings-chk-ro input[type="checkbox"][b-t8huazxvw3] {
        accent-color: var(--pos-text-faint);
        cursor: default;
    }

.pos-internal-chk[b-t8huazxvw3] {
    font-size: 13px;
    font-weight: 500;
    color: var(--pos-text);
    display: flex;
    align-items: center;
    gap: 7px;
    white-space: nowrap;
    cursor: pointer;
}

    .pos-internal-chk input[type="checkbox"][b-t8huazxvw3] {
        width: 15px;
        height: 15px;
        accent-color: var(--pos-primary);
        cursor: pointer;
    }

/* ── Toast ── */
.pos-toast[b-t8huazxvw3] {
    padding: 10px 16px;
    background: var(--pos-accent);
    color: #fff;
    border-radius: var(--pos-radius-md);
    font-size: 13px;
    font-weight: 600;
    box-shadow: var(--pos-shadow-pop);
    animation: pos-toast-in-b-t8huazxvw3 .16s ease-out;
}

@keyframes pos-toast-in-b-t8huazxvw3 {
    from {
        opacity: 0;
        transform: translateY(-4px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.pos-toast-err[b-t8huazxvw3] {
    background: var(--pos-danger);
}

/* ── Menu bar — flush under the titlebar, one continuous white surface,
   matching BSPL's title-block + btnbar look. ── */
.pos-menubar[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
    background: var(--pos-surface);
    border-bottom: 1px solid var(--pos-border);
    padding: 10px 20px;
    margin: 0 0 0 -16px;
    /* NOT overflow-x:auto here — that computes overflow-y to auto too
       (CSS spec rule) and was clipping CustomerAutofill's dropdown list
       right under the input. Row can extend slightly past width instead;
       still better than losing the dropdown. */
}

.pos-menubar-group[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: nowrap;
}

.pos-pill-btn[b-t8huazxvw3] {
    padding: 6px 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    text-transform: uppercase;
    background: var(--pos-surface);
    color: #555;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
    white-space: nowrap;
}

    .pos-pill-btn:hover[b-t8huazxvw3] {
        background: #f5f7fa;
        border-color: #c7ced8;
    }

    .pos-pill-btn:focus-visible[b-t8huazxvw3] {
        outline: 2px solid var(--pos-accent);
        outline-offset: 1px;
    }

    .pos-pill-btn.active[b-t8huazxvw3] {
        background: var(--pos-accent);
        color: #fff;
        border-color: var(--pos-accent);
    }

.pos-menubar-scan[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1 1 260px;
    min-width: 200px;
    color: var(--pos-text-faint);
}

.pos-scan-input[b-t8huazxvw3] {
    flex: 1;
    padding: 8px 14px;
    border: 1px solid var(--pos-border-strong);
    border-radius: 20px;
    font-size: 12.5px;
    transition: border-color .12s, box-shadow .12s;
}

    .pos-scan-input:focus[b-t8huazxvw3] {
        outline: none;
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

.pos-menubar-cust[b-t8huazxvw3] {
    margin-left: auto;
    flex-wrap: nowrap;
}

/* ── Full/short label swap — same exact pattern as BSPL's own
   .bspl-btn-full/.bspl-btn-short (ABRIDGED vs ABR), keyed off the same
   #gains-shell.sb-collapsed class app.js's gainsToggleSidebar() already
   toggles. Sidebar OPEN (class absent, less content width) → short
   labels + compact scan/customer row. Sidebar collapsed (class present,
   more width) → full form labels/width. No new JS needed — GAINS already
   fires this class toggle on every sidebar open/close. ── */
.pos-btn-short[b-t8huazxvw3] {
    display: none;
}

.pos-btn-full[b-t8huazxvw3] {
    display: inline;
}

#gains-shell:not(.sb-collapsed) .pos-btn-short[b-t8huazxvw3] {
    display: inline;
}

#gains-shell:not(.sb-collapsed) .pos-btn-full[b-t8huazxvw3] {
    display: none;
}

#gains-shell:not(.sb-collapsed) .pos-menubar-scan[b-t8huazxvw3] {
    flex-basis: 160px;
    min-width: 120px;
}

.pos-cust-input[b-t8huazxvw3] {
    padding: 7px 16px;
    border: 1px solid var(--pos-border-strong);
    border-radius: 20px;
    font-size: 12.5px;
    min-width: 180px;
    transition: border-color .12s, box-shadow .12s;
}

    .pos-cust-input:focus[b-t8huazxvw3] {
        outline: none;
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

/* CustomerAutofill renders its own input inside a CHILD component's
   template, so InputClass="pos-cust-input" never reaches it without
   ::deep — same fix already applied for ItemAutofill. This was why the
   customer box looked unstyled/plain. */
[b-t8huazxvw3] .pos-cust-input {
    padding: 7px 16px;
    border: 1px solid var(--pos-border-strong);
    border-radius: 20px;
    font-size: 12.5px;
    min-width: 180px;
    background: #fff;
    transition: border-color .12s, box-shadow .12s;
}

    [b-t8huazxvw3] .pos-cust-input:hover {
        border-color: #b8bfc8;
    }

    [b-t8huazxvw3] .pos-cust-input:focus {
        outline: none;
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

    [b-t8huazxvw3] .pos-cust-input::placeholder {
        color: var(--pos-text-faint);
    }

.pos-salesrep-input[b-t8huazxvw3] {
    width: 140px;
    padding: 7px 14px;
    border: 1px solid var(--pos-border-strong);
    border-radius: 20px;
    font-size: 12.5px;
}

.pos-addcust-btn[b-t8huazxvw3] {
    padding: 7px 20px;
    background: var(--pos-primary);
    color: #fff;
    border: 1px solid var(--pos-primary);
    border-radius: 20px;
    font-weight: 700;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .3px;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, box-shadow .12s;
}

    .pos-addcust-btn:hover[b-t8huazxvw3] {
        background: var(--pos-primary-dark);
        box-shadow: 0 2px 6px rgba(26,86,167,.25);
    }

/* ── Cards ── */
.pos-card[b-t8huazxvw3] {
    background: var(--pos-surface);
    border-radius: var(--pos-radius-lg);
    border: 1px solid var(--pos-border);
    box-shadow: var(--pos-shadow-card);
    display: flex;
    flex-direction: column;
    min-height: 0;
    /* overflow:visible (was hidden) — hidden was clipping ItemAutofill's
       and CustomerAutofill's dropdown lists that render just below the
       input. Header/footer below get their own radius instead so the
       rounded-card look is kept without clipping popups. */
    overflow: visible;
}

.pos-card-hdr[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    font-size: 12.5px;
    font-weight: 700;
    color: var(--pos-text);
    letter-spacing: .5px;
    background: linear-gradient(to left, rgba(26,185,154,.08), rgba(26,86,167,.05));
    border-bottom: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-lg) var(--pos-radius-lg) 0 0;
}

/* Bottom of the card also needs its own rounding now that .pos-card no
   longer clips via overflow:hidden. */
.pos-totals-row:last-child[b-t8huazxvw3],
.pos-table-wrap:last-child[b-t8huazxvw3] {
    border-radius: 0 0 var(--pos-radius-lg) var(--pos-radius-lg);
}

.pos-newitem-btn[b-t8huazxvw3] {
    padding: 6px 16px;
    background: var(--pos-accent);
    color: #fff;
    border: none;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .3px;
    cursor: pointer;
    line-height: 1.4;
    transition: background .12s, box-shadow .12s;
}

    .pos-newitem-btn:hover[b-t8huazxvw3] {
        background: var(--pos-accent-dark);
        box-shadow: 0 2px 6px rgba(26,185,154,.3);
    }

/* ── Main grid: Product Details (left, wide) + Item Details (right, narrow) ──
   flex-basis 58% of .pos-scroll-body's fixed height; min-height:0 lets the
   grid (and its cards) shrink below content size so PRODUCT DETAILS' own
   table-wrap is what scrolls, not the page. */
.pos-main-grid[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: repeat(3, minmax(280px, 1fr));
    gap: 16px;
    align-items: stretch;
    flex: 1 1 58%;
    min-height: 480px;
}

/* Batch/Lot off — ITEM DETAILS' form is genuinely shorter (no Batch
   field), so keeping the row at 480px just stretched PRODUCT DETAILS and
   ITEM DETAILS to an unnecessarily tall, mismatched-looking height with a
   dead gap at the bottom of ITEM DETAILS. Both cards still stretch to
   match each other (default align-items:stretch, unchanged) — only the
   shared row height itself shrinks. */
.pos-main-grid-compact[b-t8huazxvw3] {
    flex: 0 1 auto;
    min-height: 0;
}

.pos-product-card[b-t8huazxvw3] {
    grid-column: span 2;
    min-width: 0;
    min-height: 0;
}

.pos-itemdtl-card[b-t8huazxvw3] {
    grid-column: span 1;
    min-width: 0;
    min-height: 440px;
    padding: 0 18px 18px;
}

/* Batch/Lot off — the form genuinely has one fewer field, so 440px is
   too tall a floor for its real content. Previous attempts only touched
   the OUTER row's flex sizing and left this floor untouched, so the row
   kept shrinking below what this card actually needs — the card then
   visually overflowed past the row's box into whatever sits below it. */
.pos-itemdtl-card-compact[b-t8huazxvw3] {
    min-height: 300px;
}

.pos-itemdtl-card .pos-card-hdr[b-t8huazxvw3] {
    margin: 0 -18px 14px;
}

/* ── Lower grid: Tax / Discount / Totals, three even columns ── */
.pos-lower-grid[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: repeat(3, minmax(280px, 1fr));
    gap: 16px;
    align-items: stretch;
    flex: 1 1 42%;
    min-height: 280px;
}

/* Batch/Lot off — this row's own content (Tax Details/Discount/Grand
   Total) is short too. Without this, the space freed up by
   .pos-main-grid-compact above just moved here instead — same "oversized
   card with a big blank patch at the bottom" look, just relocated. Stop
   growing here too; any truly leftover space sits as plain blank page
   below everything, which reads far better than a stretched-out card. */
.pos-lower-grid-compact[b-t8huazxvw3] {
    flex: 0 1 auto;
    min-height: 0;
}

.pos-lower-grid .pos-card[b-t8huazxvw3] {
    min-width: 0;
    min-height: 0;
    height: 100%;
}

    .pos-lower-grid .pos-card:nth-child(2)[b-t8huazxvw3] {
        padding: 0 18px 18px;
    }

        .pos-lower-grid .pos-card:nth-child(2) .pos-card-hdr[b-t8huazxvw3] {
            margin: 0 -18px 14px;
        }

/* ── Tables — enterprise-grade: zebra rows, sticky dark header, tighter
   number alignment, clean hover/selected states. ── */
/* Was its own scroll box (overflow:auto + max-height:340px) — meant one
   scrollbar per table on top of the page-level scroll, unlike Daybook's
   single continuous scroll for the whole page below the fixed header.
   Tables now grow to their natural height; .pos-scroll-body (the page's
   one scroll container) handles all of it. */
.pos-table-wrap[b-t8huazxvw3] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--pos-border-strong) transparent;
}

    .pos-table-wrap[b-t8huazxvw3]::-webkit-scrollbar {
        width: 6px;
        height: 6px;
    }

    .pos-table-wrap[b-t8huazxvw3]::-webkit-scrollbar-track {
        background: transparent;
    }

    .pos-table-wrap[b-t8huazxvw3]::-webkit-scrollbar-thumb {
        background: var(--pos-border-strong);
        border-radius: 999px;
    }

        .pos-table-wrap[b-t8huazxvw3]::-webkit-scrollbar-thumb:hover {
            background: var(--pos-text-faint);
        }

.pos-table[b-t8huazxvw3] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

    .pos-table thead th[b-t8huazxvw3] {
        position: sticky;
        top: 0;
        z-index: 3;
        background: #306B9C;
        color: #fff;
        font-weight: 600;
        font-size: 11.5px;
        letter-spacing: .4px;
        text-transform: uppercase;
        text-align: left;
        padding: 10px 12px;
        white-space: nowrap;
    }

    .pos-table td[b-t8huazxvw3] {
        padding: 10px 12px;
        border-bottom: 1px solid #f1f5f9;
        vertical-align: middle;
        color: var(--pos-text);
    }

    .pos-table tbody tr:nth-child(even)[b-t8huazxvw3] {
        background: #fafbfc;
    }

    .pos-table tbody tr:hover[b-t8huazxvw3] {
        background: #eef4fb;
    }

    .pos-table tbody tr.pos-row-editing[b-t8huazxvw3],
    .pos-table tbody tr.pos-row-editing:hover[b-t8huazxvw3] {
        background: #e5f0ff;
        box-shadow: inset 3px 0 0 var(--pos-primary);
    }

    .pos-table tfoot td[b-t8huazxvw3] {
        position: sticky;
        bottom: 0;
        z-index: 3;
        padding: 10px 12px;
        background: var(--pos-primary-soft);
        border-top: 1.5px solid var(--pos-border-strong);
        font-weight: 700;
        color: var(--pos-text);
        text-align: right;
    }

        .pos-table tfoot td:first-child[b-t8huazxvw3] {
            text-align: left;
        }

.pos-tfoot-amt[b-t8huazxvw3] {
    color: var(--pos-accent-dark);
}

.text-end[b-t8huazxvw3] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.pos-empty[b-t8huazxvw3] {
    text-align: center;
    color: var(--pos-text-faint);
    font-style: normal;
    padding: 28px 18px !important;
}

.pos-batchlot-note[b-t8huazxvw3] {
    font-size: 11px;
    color: var(--pos-text-muted);
    margin-top: 3px;
}

.pos-row-editing[b-t8huazxvw3] {
    background: #e5f0ff;
}

.pos-row-actions[b-t8huazxvw3] {
    white-space: nowrap;
}

.pos-icon-btn-sm[b-t8huazxvw3] {
    background: none;
    border: none;
    color: var(--pos-text-faint);
    cursor: pointer;
    font-size: 12.5px;
    padding: 5px 8px;
    border-radius: var(--pos-radius-sm);
    transition: background .12s, color .12s;
}

    .pos-icon-btn-sm:hover[b-t8huazxvw3] {
        color: var(--pos-primary);
        background: var(--pos-primary-soft);
    }

    .pos-icon-btn-sm.pos-icon-btn-danger:hover[b-t8huazxvw3] {
        color: var(--pos-danger);
        background: var(--pos-danger-soft);
    }

/* ── Totals row ── */
.pos-totals-row[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 12px 18px;
    border-top: 1px solid var(--pos-border);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--pos-text);
    flex-wrap: wrap;
    background: #fafbfc;
}

/* ── Totals card (replaces the old Batch Details table in the lower grid) ── */
.pos-totals-card[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    padding: 6px 18px 18px;
    flex: 1;
}

.pos-totals-line[b-t8huazxvw3] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 7px 0;
    font-size: 12.5px;
    color: var(--pos-text-muted);
    border-bottom: 1px dashed var(--pos-border);
}

    .pos-totals-line span:last-child[b-t8huazxvw3] {
        font-weight: 600;
        color: var(--pos-text);
    }

    .pos-totals-line:last-of-type[b-t8huazxvw3] {
        border-bottom: none;
    }

.pos-hdr-grand-amt[b-t8huazxvw3] {
    font-size: 15px;
    font-weight: 800;
    color: var(--pos-accent-dark);
    letter-spacing: 0;
    text-transform: none;
}

.pos-totals-grand[b-t8huazxvw3] {
    margin-top: 8px;
    padding-top: 14px;
    border-top: 1.5px solid var(--pos-border-strong);
    border-bottom: none;
}

    .pos-totals-grand span:first-child[b-t8huazxvw3] {
        font-weight: 800;
        font-size: 14.5px;
        color: var(--pos-accent-dark);
    }

    .pos-totals-grand span:last-child[b-t8huazxvw3] {
        font-weight: 800;
        font-size: 18px;
        color: var(--pos-accent-dark);
    }

.pos-grand-total[b-t8huazxvw3] {
    margin-left: auto;
    color: var(--pos-primary);
    font-size: 14px;
    font-weight: 700;
}

/* ── Item Details form ── */
.pos-field[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 14px;
    font-size: 12.5px;
    color: var(--pos-text-muted);
    font-weight: 600;
}

.pos-input[b-t8huazxvw3] {
    width: 100%;
    padding: 9px 12px;
    border: 1.5px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    font-size: 13px;
    font-family: inherit;
    color: var(--pos-text);
    background: #fff;
    outline: none;
    box-sizing: border-box;
    transition: border-color .12s, box-shadow .12s;
}

    .pos-input:hover[b-t8huazxvw3] {
        border-color: #b8bfc8;
    }

    .pos-input:focus[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

    .pos-input:read-only[b-t8huazxvw3] {
        background: #f8fafc;
        color: var(--pos-text-muted);
    }

    .pos-input[b-t8huazxvw3]::placeholder {
        color: var(--pos-text-faint);
    }

textarea.pos-input[b-t8huazxvw3] {
    resize: vertical;
    min-height: 48px;
}

[b-t8huazxvw3] .pos-input {
    width: 100%;
    padding: 9px 12px;
    border: 1.5px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    font-size: 13px;
    font-family: inherit;
    color: var(--pos-text);
    background: #fff;
    outline: none;
    box-sizing: border-box;
    transition: border-color .12s, box-shadow .12s;
}

    [b-t8huazxvw3] .pos-input:hover {
        border-color: #b8bfc8;
    }

    [b-t8huazxvw3] .pos-input:focus {
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

.pos-required[b-t8huazxvw3] {
    color: var(--pos-danger);
    font-style: normal;
    margin-left: 2px;
}

.pos-input-invalid[b-t8huazxvw3] {
    border-color: var(--pos-danger) !important;
    background: var(--pos-danger-soft) !important;
}

.pos-inline-error[b-t8huazxvw3] {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    font-size: 12px;
    font-weight: 600;
    color: var(--pos-danger);
    background: var(--pos-danger-soft);
    border: 1px solid #fecaca;
    border-radius: var(--pos-radius-sm);
    padding: 9px 11px;
    margin-bottom: 12px;
}

.pos-field-row[b-t8huazxvw3] {
    display: flex;
    gap: 12px;
}

    .pos-field-row .pos-field[b-t8huazxvw3] {
        flex: 1;
    }

/* ── Joined input group — Item Name+UOM and HSN Code+% now render as ONE
   seamless bordered box (single shared border, no gap), matching the old
   legacy UI screenshot instead of two separate floating boxes. ── */
.pos-hsn-row[b-t8huazxvw3] {
    display: flex;
    align-items: stretch;
    gap: 0;
    border: 1.5px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    background: #fff;
    transition: border-color .12s, box-shadow .12s;
    /* overflow:visible (NOT hidden) — hidden was clipping ItemAutofill's
       own dropdown suggestion list, which renders just below its input
       and is a child of this wrapper. The "joined box" look below is
       achieved with explicit per-side radius instead of clipping. */
    overflow: visible;
}

    .pos-hsn-row:focus-within[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

    /* Strip the individual input's own border/radius/focus-ring — the
       group container owns all of that now. Covers both plain inputs and
       ItemAutofill's ::deep-styled inner input. */
    .pos-hsn-row .pos-input:not([readonly])[b-t8huazxvw3],
    .pos-hsn-row[b-t8huazxvw3]  .pos-input:not([readonly]) {
        border: none !important;
        box-shadow: none !important;
        border-radius: var(--pos-radius-sm) 0 0 var(--pos-radius-sm) !important;
    }

        .pos-hsn-row .pos-input:not([readonly]):focus[b-t8huazxvw3],
        .pos-hsn-row[b-t8huazxvw3]  .pos-input:not([readonly]):focus {
            box-shadow: none !important;
        }

    /* The trailing UOM/% box — divider line instead of its own border,
       square outer corners since the group already has the rounding. */
    .pos-hsn-row .pos-hsn-pct[b-t8huazxvw3],
    .pos-hsn-row input[readonly][b-t8huazxvw3] {
        border: none;
        border-left: 1px solid var(--pos-border-strong);
        border-radius: 0 var(--pos-radius-sm) var(--pos-radius-sm) 0;
        flex: 0 0 auto;
    }

.pos-hsn-pct[b-t8huazxvw3] {
    flex: none;
    width: 60px;
    text-align: center;
    padding: 9px 6px;
    font-size: 12px;
    font-weight: 700;
    color: var(--pos-text-muted);
    background: #f1f3f5;
    border: 1.5px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    white-space: nowrap;
}

.pos-batchlot-input[b-t8huazxvw3] {
    cursor: pointer;
    background: #f8fafc;
    border: 1px solid var(--pos-border-strong);
    outline: none;
}

    .pos-batchlot-input:hover[b-t8huazxvw3] {
        border-color: var(--pos-accent);
    }

    .pos-batchlot-input:focus[b-t8huazxvw3] {
        outline: none;
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

.pos-itemdtl-actions[b-t8huazxvw3] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: auto;
    padding-top: 14px;
}

/* Batch/Lot setting off — no Batch field above these buttons, so
   bottom-pinning via margin-top:auto left a big empty gap right above
   them instead of below. Sit them close to Qty/Rate instead; any leftover
   space just falls below the buttons, which reads far less oddly. */
.pos-itemdtl-actions-tight[b-t8huazxvw3] {
    margin-top: 14px;
}

/* ── Buttons ── */
.pos-btn[b-t8huazxvw3] {
    padding: 9px 18px;
    font-size: 12.5px;
    font-weight: 700;
    border-radius: var(--pos-radius-sm);
    border: 1.5px solid var(--pos-border-strong);
    background: #fff;
    color: #334155;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

    .pos-btn:hover:not(:disabled)[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        color: var(--pos-accent-dark);
    }

    .pos-btn:focus-visible[b-t8huazxvw3] {
        outline: 2px solid var(--pos-accent);
        outline-offset: 1px;
    }

    .pos-btn:active:not(:disabled)[b-t8huazxvw3] {
        transform: translateY(1px);
    }

    .pos-btn:disabled[b-t8huazxvw3] {
        opacity: .5;
        cursor: not-allowed;
    }

.pos-btn-primary[b-t8huazxvw3] {
    min-width: 88px;
    background: var(--pos-primary);
    color: #fff;
    border-color: var(--pos-primary);
}

    .pos-btn-primary:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-primary-dark);
        border-color: var(--pos-primary-dark);
        color: #fff;
        box-shadow: 0 2px 8px rgba(26,86,167,.25);
    }

.pos-btn-clear[b-t8huazxvw3] {
    background: #fff;
    color: var(--pos-danger);
    border-color: #fecaca;
}

    .pos-btn-clear:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-danger-soft);
        border-color: var(--pos-danger);
        color: var(--pos-danger);
    }

.pos-btn-danger[b-t8huazxvw3] {
    background: #fff;
    color: var(--pos-danger);
    border-color: #fecaca;
}

    .pos-btn-danger:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-danger-soft);
        border-color: var(--pos-danger);
        color: var(--pos-danger);
    }

.pos-btn-save[b-t8huazxvw3] {
    background: var(--pos-success);
    color: #fff;
    border-color: var(--pos-success);
}

/* ── Discount panel ── */
.pos-discount-toggles[b-t8huazxvw3] {
    display: flex;
    gap: 22px;
    padding: 0 18px;
    font-size: 13px;
    color: var(--pos-text);
    margin-bottom: 8px;
}

    .pos-discount-toggles label[b-t8huazxvw3] {
        display: flex;
        align-items: center;
        gap: 6px;
        cursor: pointer;
    }

    .pos-discount-toggles input[type="radio"][b-t8huazxvw3] {
        accent-color: var(--pos-primary);
        width: 14px;
        height: 14px;
        cursor: pointer;
    }

.pos-lower-grid .pos-card:nth-child(2) .pos-field[b-t8huazxvw3],
.pos-lower-grid .pos-card:nth-child(2) .pos-field-row[b-t8huazxvw3] {
    padding: 0 18px;
}

/* ── Footer ── */
.pos-footer-bar[b-t8huazxvw3] {
    flex-shrink: 0;
    background: var(--pos-surface);
    border-top: 1.5px solid var(--pos-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
    margin: 0 0 0 -16px;
    padding: 3px 16px;
}

.pos-footer-inner[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    max-width: 1400px;
    margin: 0 auto;
}

.pos-footer-spacer[b-t8huazxvw3] {
    flex: 1;
}

.pos-foot-icon-btn[b-t8huazxvw3] {
    width: 38px;
    height: 38px;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    background: #fff;
    color: var(--pos-text-muted);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    flex-shrink: 0;
    transition: background .12s, border-color .12s, color .12s;
}

    .pos-foot-icon-btn:hover[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        color: var(--pos-accent);
        background: #f0fdf9;
    }

    .pos-foot-icon-btn:focus-visible[b-t8huazxvw3] {
        outline: 2px solid var(--pos-accent);
        outline-offset: 1px;
    }

@media (max-width: 900px) {
    .pos-scroll-body[b-t8huazxvw3] {
        overflow-y: auto;
    }

    .pos-main-grid[b-t8huazxvw3],
    .pos-lower-grid[b-t8huazxvw3] {
        grid-template-columns: 1fr;
        flex: 0 0 auto;
    }

    .pos-main-grid[b-t8huazxvw3],
    .pos-itemdtl-card[b-t8huazxvw3] {
        min-height: 0;
    }

    .pos-product-card .pos-table-wrap[b-t8huazxvw3],
    .pos-lower-grid .pos-card .pos-table-wrap[b-t8huazxvw3] {
        min-height: 200px;
    }
}

/* ── Phone widths — menubar/titlebar need to actually stack instead of
   clipping/overflowing sideways; tables need horizontal scroll for their
   own columns instead of squeezing text unreadably. ── */
@media (max-width: 640px) {
    .pos-page[b-t8huazxvw3] {
        padding: 0;
    }

    .pos-titlebar[b-t8huazxvw3],
    .pos-menubar[b-t8huazxvw3] {
        margin: 0;
    }

    .pos-titlebar[b-t8huazxvw3] {
        padding: 12px 14px;
    }

    .pos-titlebar-row[b-t8huazxvw3] {
        gap: 10px;
    }

    .pos-titlebar-left h1[b-t8huazxvw3] {
        font-size: 17px;
    }

    .pos-toggle-label[b-t8huazxvw3] {
        display: none;
    }

    .pos-internal-chk[b-t8huazxvw3] {
        font-size: 12px;
    }

    .pos-menubar[b-t8huazxvw3] {
        flex-wrap: wrap;
        padding: 10px 14px;
        gap: 10px;
    }

    .pos-menubar-group[b-t8huazxvw3] {
        flex-wrap: wrap;
        width: 100%;
    }

    .pos-menubar-scan[b-t8huazxvw3] {
        flex-basis: 100%;
        min-width: 0;
        order: 3;
    }

    .pos-menubar-cust[b-t8huazxvw3] {
        margin-left: 0;
        width: 100%;
        flex-wrap: wrap;
        order: 4;
    }

        .pos-menubar-cust[b-t8huazxvw3]  .pos-cust-input,
        .pos-menubar-cust .pos-cust-input[b-t8huazxvw3] {
            flex: 1 1 auto;
            min-width: 0;
        }

    .pos-addcust-btn[b-t8huazxvw3] {
        white-space: nowrap;
    }

    /* Always show the short pill labels (INCL/EXCL) on phones — no
       point waiting on the sidebar-collapsed class here, width alone
       is already the constraint. */
    .pos-btn-short[b-t8huazxvw3] {
        display: inline;
    }

    .pos-btn-full[b-t8huazxvw3] {
        display: none;
    }

    .pos-scroll-body[b-t8huazxvw3] {
        padding: 12px 0 16px;
        gap: 12px;
    }

    .pos-main-grid[b-t8huazxvw3],
    .pos-lower-grid[b-t8huazxvw3] {
        gap: 12px;
    }

    /* Tables scroll horizontally on their own rather than squeezing
       every column into an unreadably narrow width. */
    .pos-table-wrap[b-t8huazxvw3] {
        overflow-x: auto;
    }

    .pos-table[b-t8huazxvw3] {
        min-width: 640px;
    }

    .pos-card-hdr[b-t8huazxvw3] {
        padding: 12px 14px;
        font-size: 11.5px;
    }

    .pos-itemdtl-card[b-t8huazxvw3],
    .pos-lower-grid .pos-card:nth-child(2)[b-t8huazxvw3] {
        padding: 0 14px 14px;
    }

        .pos-itemdtl-card .pos-card-hdr[b-t8huazxvw3],
        .pos-lower-grid .pos-card:nth-child(2) .pos-card-hdr[b-t8huazxvw3] {
            margin: 0 -14px 12px;
        }

    .pos-field-row[b-t8huazxvw3] {
        flex-wrap: wrap;
    }

    .pos-hdr-grand-amt[b-t8huazxvw3] {
        font-size: 13px;
    }

    /* Footer — icon buttons + action buttons both wrap to a second row
       cleanly instead of overflowing off the right edge. */
    .pos-footer-bar[b-t8huazxvw3] {
        padding: 8px 14px;
    }

    .pos-footer-inner[b-t8huazxvw3] {
        justify-content: center;
    }

    .pos-footer-spacer[b-t8huazxvw3] {
        flex-basis: 100%;
        height: 0;
    }

    .pos-btn[b-t8huazxvw3] {
        flex: 1 1 auto;
    }
}

/* ── RCP / Documents popup — centered card over .pos-settings-overlay
   backdrop (already dark full-screen from settings gear popover; reused
   here so no second overlay style needed). ── */
.pos-rcp-modal[b-t8huazxvw3] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 460px;
    max-width: 92vw;
    max-height: 85vh;
    overflow-y: auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.25);
    z-index: 1210;
    display: flex;
    flex-direction: column;
}

.pos-rcp-hdr[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #e7eaec;
    font-size: 17px;
    font-weight: 600;
    color: #263238;
}

.pos-rcp-x[b-t8huazxvw3] {
    background: none;
    border: none;
    font-size: 16px;
    color: #6b7280;
    cursor: pointer;
    padding: 4px;
}

.pos-rcp-body[b-t8huazxvw3] {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-height: 120px;
}

.pos-rcp-field[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: 90px 1fr;
    align-items: center;
    gap: 12px;
}

    .pos-rcp-field > label[b-t8huazxvw3] {
        color: #455a64;
        font-size: 13.5px;
    }

.pos-rcp-static[b-t8huazxvw3],
.pos-rcp-input[b-t8huazxvw3] {
    height: 38px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    font-size: 14px;
    color: #37474f;
    border: 1px solid #cfd6dd;
    border-radius: 6px;
    padding: 0 12px;
    background: #fff;
}

select.pos-rcp-input[b-t8huazxvw3] {
    appearance: auto;
}

.pos-rcp-foot[b-t8huazxvw3] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #e7eaec;
}
/* /Components/Pages/Transactions/Voucher/Inventory/ProductionEntry.razor.rz.scp.css */
/* =====================================================
   ChallanEntry.razor.css
   Re-skinned to match InvVoucher.razor.css's design system
   (GAINS teal palette, rounded cards, uppercase field labels,
   pill tabs, fixed bottom action bar).
   ===================================================== */



.che-page[b-17euo42ye2] {
    --che-accent: #1AB99A;
    --che-accent-dark: #0d9480;
    --che-accent-bg: #eafbf6;
    --che-bg: #ffffff;
    --che-border: #e2e8f0;
    --che-border-strong: #cbd5e1;
    --che-text: #1e293b;
    --che-muted: #64748b;
    --che-muted-light: #94a3b8;
    --che-danger: #dc2626;
    --che-danger-bg: #fef2f2;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--che-text);
    background: var(--che-bg);
    padding: 12px 12px 76px;
    font-size: 13px;
}

/* ── Tabs (Voucher / aUdit / dOcuments / ...) — underline style ── */
.che-tabs[b-17euo42ye2] {
    display: flex;
    gap: 4px;
    margin: 10px 0 12px;
    border-bottom: 2px solid var(--che-border);
}

.che-tab[b-17euo42ye2] {
    padding: 9px 18px;
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .2px;
    background: transparent;
    color: var(--che-muted);
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: .12s;
}

    .che-tab:hover[b-17euo42ye2] {
        color: var(--che-accent-dark);
    }

    .che-tab.active[b-17euo42ye2] {
        color: var(--che-accent-dark);
        border-bottom-color: var(--che-accent);
    }

/* ── Title-bar rail toggles (Recent/Photo hide-show) ── */
.che-rail-toggle[b-17euo42ye2] {
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    color: var(--che-text);
    border: 1.5px solid var(--che-border-strong);
    border-radius: 8px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}

    .che-rail-toggle:hover[b-17euo42ye2] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

/* ── Collapsed-rail "show" tab — thin strip that reopens a hidden panel ── */
.che-rail-show-tab[b-17euo42ye2] {
    flex: 0 0 18px;
    background: #f8fafc;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    color: var(--che-muted-light);
    cursor: pointer;
}

    .che-rail-show-tab:hover[b-17euo42ye2] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

/* ── Body: 3-pane layout ── */
.che-body[b-17euo42ye2] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

/* ── Right rail: Recent Voucher + Photo/CB stacked ── */
.che-right-rail[b-17euo42ye2] {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Recent rail ── */
.che-recent[b-17euo42ye2] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    overflow-y: auto;
    max-height: 340px;
    padding: 10px;
}

.che-recent-hdr[b-17euo42ye2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--che-muted);
    padding: 2px 4px 10px;
}

.che-recent-expand[b-17euo42ye2] {
    background: none;
    border: none;
    color: var(--che-muted-light);
    cursor: pointer;
}

    .che-recent-expand:hover[b-17euo42ye2] {
        color: var(--che-accent-dark);
    }

.che-recent-item[b-17euo42ye2] {
    padding: 8px 8px;
    border-radius: 8px;
    cursor: pointer;
    transition: .12s;
}

    .che-recent-item:hover[b-17euo42ye2] {
        background: var(--che-accent-bg);
    }

.che-recent-num[b-17euo42ye2] {
    font-size: 12.5px;
    font-weight: 700;
    color: var(--che-accent-dark);
}

.che-recent-type[b-17euo42ye2] {
    font-size: 11px;
    color: var(--che-danger);
    font-weight: 600;
}

.che-recent-date[b-17euo42ye2] {
    font-size: 10.5px;
    color: var(--che-muted-light);
}

.che-recent-amt[b-17euo42ye2] {
    font-size: 11.5px;
    color: var(--che-text);
    font-weight: 600;
}

/* ── Main form + grid ── */
.che-main[b-17euo42ye2] {
    flex: 1;
    min-width: 0;
}

.che-placeholder[b-17euo42ye2] {
    padding: 40px;
    text-align: center;
    color: var(--che-muted-light);
    font-size: 13px;
}

.che-card[b-17euo42ye2] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 14px;
}

.che-form-grid[b-17euo42ye2] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1.5px solid var(--che-border);
}

.che-field[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    position: relative;
}

.che-field-wide[b-17euo42ye2] {
    grid-column: span 2;
}

.che-field span[b-17euo42ye2] {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--che-muted);
}

.che-field input[type="text"][b-17euo42ye2],
.che-field input[type="date"][b-17euo42ye2],
.che-field input:not([type])[b-17euo42ye2],
.che-field select[b-17euo42ye2],
.che-field textarea[b-17euo42ye2] {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
}

.che-field textarea[b-17euo42ye2] {
    height: auto;
    min-height: 44px;
    padding: 8px 10px;
    resize: vertical;
}

    .che-field input:focus[b-17euo42ye2],
    .che-field select:focus[b-17euo42ye2],
    .che-field textarea:focus[b-17euo42ye2] {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

/* Depot/SalesRep dropdowns and LedgerAutofill's input render inside a child
   component's own markup — ::deep reaches past that boundary so they pick
   up the same look without needing their param contracts changed. */
.che-field[b-17euo42ye2]  select,
.che-field[b-17euo42ye2]  input {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
    box-sizing: border-box;
}

    .che-field[b-17euo42ye2]  select:focus,
    .che-field[b-17euo42ye2]  input:focus {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.che-autofill[b-17euo42ye2] {
    position: relative;
}

.che-autofill-list[b-17euo42ye2] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 20;
    background: #fff;
    border: 1px solid var(--che-border);
    border-radius: 10px;
    max-height: 200px;
    overflow-y: auto;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
}

.che-autofill-opt[b-17euo42ye2] {
    padding: 8px 12px;
    font-size: 12.5px;
    cursor: pointer;
}

    .che-autofill-opt:hover[b-17euo42ye2] {
        background: var(--che-accent-bg);
    }

/* LedgerAutofill / ItemAutofill (Components/Shared) render their own markup
   (lga-*/ ia-*) inside a child component — need[b-17euo42ye2]  to reach it. */
::deep .lga-wrap {
    position: relative;
    display: block;
}

[b-17euo42ye2] .lga-suggest {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--che-border);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
    max-height: 200px;
    overflow-y: auto;
    z-index: 40;
    list-style: none;
    margin: 0;
    padding: 4px 0;
}

    [b-17euo42ye2] .lga-suggest li {
        padding: 8px 12px;
        cursor: pointer;
        font-size: 12.5px;
    }

        [b-17euo42ye2] .lga-suggest li:hover,
        [b-17euo42ye2] .lga-suggest li.active {
            background: var(--che-accent-bg);
        }

/* ── Item grid toolbar: label left, Add item button right ── */
.che-grid-toolbar[b-17euo42ye2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.che-grid-toolbar-label[b-17euo42ye2] {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--che-muted);
}

/* ── Item grid ── */
/* ProductionEntry override: capped height + vertical scroll, so adding many
   rows scrolls inside the panel instead of growing the whole page (that's
   the "totals going down, no scroll" complaint - overflow:visible from the
   dropdown-clipping fix above had no scroll boundary at all). Totals row is
   pinned via position:sticky on tfoot below.
   TRADEOFF: this reintroduces a vertical clip boundary, so ItemAutofill's
   dropdown can get cut off again for a row near the bottom edge of the
   scroll area (same root cause as before, now traded off deliberately
   instead of accidentally) - open the row higher up if that happens.
   overflow-x stays auto for the rare case a table is wider than its column. */
.che-grid-wrap[b-17euo42ye2] {
    max-height: 380px;
    overflow-y: auto;
    overflow-x: auto;
}

.che-item-table thead[b-17euo42ye2] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.che-item-table tfoot[b-17euo42ye2] {
    position: sticky;
    bottom: 0;
    z-index: 2;
}

.che-item-table[b-17euo42ye2] {
    width: 100%;
    border-collapse: collapse;
}

    .che-item-table thead th[b-17euo42ye2] {
        background: #f8fafc;
        color: var(--che-muted);
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        padding: 8px;
        border-bottom: 1.5px solid var(--che-border);
        text-align: left;
    }

    .che-item-table td[b-17euo42ye2] {
        padding: 8px;
        font-size: 12.5px;
        border-bottom: 1px solid var(--che-border);
    }

.che-row-clickable[b-17euo42ye2] {
    cursor: pointer;
    transition: background .12s;
}

    .che-row-clickable:hover[b-17euo42ye2] {
        background: var(--che-accent-bg);
    }

.che-add-item-btn[b-17euo42ye2] {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: 1.5px dashed var(--che-border-strong);
    color: var(--che-accent-dark);
    font-size: 12px;
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 8px;
    cursor: pointer;
}

    .che-add-item-btn:hover[b-17euo42ye2] {
        background: var(--che-accent-bg);
        border-color: var(--che-accent);
    }

.che-row-actions[b-17euo42ye2] {
    text-align: center;
}

    .che-row-actions button[b-17euo42ye2] {
        background: none;
        border: none;
        color: var(--che-muted);
        cursor: pointer;
        font-size: 13px;
        padding: 3px 5px;
    }

        .che-row-actions button:hover[b-17euo42ye2] {
            color: var(--che-danger);
        }

.che-empty[b-17euo42ye2] {
    text-align: center;
    color: var(--che-muted-light);
    font-size: 12.5px;
    padding: 20px !important;
}

.che-totals-row[b-17euo42ye2] {
    background: var(--che-accent-bg);
    color: var(--che-accent-dark);
    font-weight: 700;
}

    .che-totals-row td[b-17euo42ye2] {
        border: none !important;
        padding: 10px 8px !important;
    }

/* ── Photo/CB panel ── */
.che-photo-panel[b-17euo42ye2] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.che-photo-panel-hdr[b-17euo42ye2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--che-muted);
    padding: 2px 4px 4px;
}

.che-photo-box[b-17euo42ye2] {
    background: #fff;
    border: 1.5px solid var(--che-border);
    border-radius: 12px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

    .che-photo-box img[b-17euo42ye2] {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

.che-photo-empty[b-17euo42ye2] {
    color: var(--che-border-strong);
    font-size: 40px;
}

.che-cb-box[b-17euo42ye2] {
    background: #f8fafc;
    border: 1.5px solid var(--che-border);
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 12px;
    color: var(--che-muted);
}

    .che-cb-box span[b-17euo42ye2] {
        font-weight: 700;
        color: var(--che-accent-dark);
        font-size: 13px;
    }

.che-request-photo[b-17euo42ye2] {
    padding: 8px;
    font-size: 12px;
    font-weight: 600;
    background: none;
    border: 1.5px dashed var(--che-border-strong);
    border-radius: 8px;
    color: var(--che-muted);
    cursor: pointer;
}

    .che-request-photo:hover[b-17euo42ye2] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
        background: var(--che-accent-bg);
    }

/* ── Explicit input class passed to child components (ItemAutofill) so
   their internally-rendered <input> matches che-field's look without
   relying on ::deep reaching into them. ── */
.che-input[b-17euo42ye2] {
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--che-border);
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: var(--che-text);
    outline: none;
    transition: .12s;
    width: 100%;
    box-sizing: border-box;
}

    .che-input:focus[b-17euo42ye2] {
        border-color: var(--che-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.text-right[b-17euo42ye2] {
    text-align: right;
}

/* ── Item add/edit modal — matches InvVoucher's iv-modal ── */
.che-overlay[b-17euo42ye2] {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,.5);
    z-index: 100;
}

.che-modal[b-17euo42ye2] {
    --che-accent: #1AB99A;
    --che-accent-dark: #0d9480;
    --che-accent-bg: #eafbf6;
    --che-border: #e2e8f0;
    --che-border-strong: #cbd5e1;
    --che-text: #1e293b;
    --che-muted: #64748b;
    --che-muted-light: #94a3b8;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 101;
    background: #fff;
    border-radius: 14px;
    width: 100%;
    max-width: 640px;
    max-height: 80vh;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    display: flex;
    flex-direction: column;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    font-size: 13px;
}

.che-modal-head[b-17euo42ye2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 22px;
    border-bottom: 1px solid var(--che-border);
    font-weight: 700;
    font-size: 14px;
    flex-shrink: 0;
}

    .che-modal-head span[b-17euo42ye2] {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        color: var(--che-text);
    }

        .che-modal-head span i[b-17euo42ye2] {
            color: var(--che-accent);
        }

.che-modal-body[b-17euo42ye2] {
    padding: 18px 22px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
}

.che-modal-grid[b-17euo42ye2] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.che-modal-linetotal[b-17euo42ye2] {
    grid-column: span 2;
    background: var(--che-accent-bg);
    border-radius: 8px;
    padding: 10px 14px;
    margin-top: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 700;
    color: var(--che-accent-dark);
}

.che-modal-error[b-17euo42ye2] {
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--che-danger);
    background: var(--che-danger-bg);
    border-radius: 8px;
    padding: 8px 12px;
}

.che-modal-actions[b-17euo42ye2] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 14px 22px;
    border-top: 1px solid var(--che-border);
    flex-shrink: 0;
}

/* ── Fixed bottom action bar — matches InvVoucher's iv-footer-bar ── */
.che-footer-bar[b-17euo42ye2] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 1.5px solid var(--che-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
    z-index: 50;
    padding: 6px 12px;
}

.che-footer-inner[b-17euo42ye2] {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

.che-btn[b-17euo42ye2] {
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    padding: 6px 12px;
    border-radius: 8px;
    border: 1.5px solid var(--che-border-strong);
    background: #fff;
    color: var(--che-text);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}

    .che-btn:hover[b-17euo42ye2] {
        border-color: var(--che-accent);
        color: var(--che-accent-dark);
    }

.che-btn-primary[b-17euo42ye2] {
    background: var(--che-accent);
    color: #fff;
    border-color: var(--che-accent);
}

    .che-btn-primary:hover[b-17euo42ye2] {
        background: var(--che-accent-dark);
        color: #fff;
    }

.che-btn:disabled[b-17euo42ye2] {
    opacity: .6;
    cursor: not-allowed;
}

.che-save-msg[b-17euo42ye2] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    margin-left: 4px;
}

.che-save-ok[b-17euo42ye2] {
    color: var(--che-accent-dark);
}

.che-save-err[b-17euo42ye2] {
    color: var(--che-danger);
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .che-body[b-17euo42ye2] {
        flex-direction: column;
    }

    .che-right-rail[b-17euo42ye2],
    .che-recent[b-17euo42ye2],
    .che-photo-panel[b-17euo42ye2] {
        flex: none;
        width: 100%;
    }

    .che-form-grid[b-17euo42ye2] {
        grid-template-columns: repeat(2, 1fr);
    }

    .che-field-wide[b-17euo42ye2] {
        grid-column: span 2;
    }
}

@media (max-width: 600px) {
    .che-form-grid[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }

    .che-field-wide[b-17euo42ye2] {
        grid-column: span 1;
    }

    .che-footer-inner[b-17euo42ye2] {
        gap: 6px;
    }
}

/* Small-font batch/lot summary shown under the Item field (popup) and
   under the item name in the cart grid — set via BatchLotQtyModal (setting 137). */
/* Base: cart-grid usage (under item name in the table cell) — plain, no box. */
span.che-batchlot-note[b-17euo42ye2] {
    display: block;
    font-size: 9px;
    color: #888888;
    margin-top: 2px;
}

/* Popup usage (opposite Rate) — looks like the sibling input boxes (base
   .che-field input:not([type]) rule already gives it that), click reopens
   BatchLotQtyModal so the user can re-edit. */
.che-batchlot-input[b-17euo42ye2] {
    font-size: 11px;
    color: #888888;
    cursor: pointer;
}

    .che-batchlot-input:hover[b-17euo42ye2] {
        border-color: #1AB99A;
    }

/* ── Toast — shown when a tab (Audit/Documents/View/Cross Links/Cost
   Center) is clicked before the challan has a ChallanId (i.e. not yet
   saved / not opened via ?CID=). Fixed top-center, auto-dismisses. ── */
.che-toast[b-17euo42ye2] {
    position: fixed;
    top: 70px;
    left: 50%;
    transform: translateX(-50%);
    background: #1a2537;
    color: #fff;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 6px 18px rgba(0,0,0,.25);
    z-index: 2000;
    animation: che-toast-in-b-17euo42ye2 .15s ease-out;
}

@keyframes che-toast-in-b-17euo42ye2 {
    from {
        opacity: 0;
        transform: translate(-50%, -8px);
    }

    to {
        opacity: 1;
        transform: translate(-50%, 0);
    }
}

/* ── Raw Material / Finished Goods side by side (added for ProductionEntry) ── */
.prod-dual-grid[b-17euo42ye2] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

.prod-grid-col[b-17euo42ye2] {
    flex: 1 1 0;
    min-width: 0; /* let the table shrink instead of overflowing the flex item */
}

@media (max-width: 900px) {
    .prod-dual-grid[b-17euo42ye2] {
        flex-direction: column;
    }
}

/* ── Add Costing popup overrides (ProductionEntry) ── */
.prod-costing-row[b-17euo42ye2] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
}

.prod-costing-ledger[b-17euo42ye2] {
    flex: 1;
}

.prod-costing-amount[b-17euo42ye2] {
    width: 160px;
}

.prod-costing-go[b-17euo42ye2] {
    flex-shrink: 0;
}

/* .che-modal-actions default is justify-content:flex-end (SET on the right) -
   this popup wants SET on the left, Total on the right, so override just here. */
.prod-costing-actions[b-17euo42ye2] {
    justify-content: flex-start !important;
}

    .prod-costing-actions .ms-auto[b-17euo42ye2] {
        margin-left: auto;
    }
/* /Components/Pages/Transactions/Voucher/Inventory/ProductionGrid.razor.rz.scp.css */
/* ProductionGrid.razor.css
   Blazor scopes this file to ProductionGrid.razor only — reused class names
   from other components' .razor.css don't apply here.

   Three attempts at an internally-scrolling grid with a pinned footer
   (plain sticky, xCategoryItem's flex chain, RegisterGridShared's flex+
   sticky chain) all produced a footer that floats fixed mid-page over
   table rows, because sticky/height:100% only work if EVERY ancestor up
   to <html> is also height-bounded — that chain lives in DashboardLayout,
   which isn't available here to verify or fix.

   Dropping that approach entirely: no sticky, no height chain, no
   internal scroll container. The whole page scrolls normally and the
   footer is just the last block in normal flow, after the table. This
   is guaranteed correct regardless of DashboardLayout's structure — the
   only cost is the footer isn't visible while mid-scroll, only once
   you've scrolled to the actual bottom, like an ordinary web page. */

/* Header styling (color, background, bold) comes from global masters-forms.css
   for .mu-table thead th — deliberately not touched here. An earlier version
   of this file set background:#fff on that selector for a sticky-header
   effect, which silently overrode the global header background and made
   the header text invisible (white-on-white) since only the background half
   of that global pairing got overridden, not the text color. Removed. */

.bspl-footer[b-l24cqy4xyu] {
    position: sticky;
    bottom: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 16px;
    background: #fff;
    border-top: 1px solid #dde3ed;
    flex-wrap: wrap;
    width: 100%;
    box-sizing: border-box;
}

.bspl-footer-left[b-l24cqy4xyu],
.bspl-footer-right[b-l24cqy4xyu] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.bspl-footer-right[b-l24cqy4xyu] {
    font-size: inherit;
    color: inherit;
}

.bspl-foot-btn[b-l24cqy4xyu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 16px;
    padding: 0;
}

    .bspl-foot-btn.xls[b-l24cqy4xyu] {
        color: #1d6f42;
    }

    .bspl-foot-btn.pdf2[b-l24cqy4xyu] {
        color: #c0392b;
    }

.bspl-footer-count[b-l24cqy4xyu] {
    font-size: 13px;
    color: #333;
    white-space: nowrap;
}

/* ═══════════════════════════════════════════════════════════════════
   Clear-date icon button (To Date row) — plain <img> reusing the
   GreenCalendarPicker's class names, but that component's own scoped
   CSS doesn't apply here, so it needs its own sizing to match the
   calendar trigger button next to it in the From Date row.
   ═══════════════════════════════════════════════════════════════════ */
.gcp-trigger[b-l24cqy4xyu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-l24cqy4xyu] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-l24cqy4xyu] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.gdp-field-row[b-l24cqy4xyu] {
    display: flex;
    align-items: center;
    gap: 6px;
}
/* /Components/Pages/Transactions/Voucher/Order/OrderEntry.razor.rz.scp.css */
/* =====================================================
   OrderEntry.razor.css

   Rebuilt to visually match AccVoucher.razor.css's own rendered look (the
   "Voucher entry" mockup: collapsible Recent sidebar, dark-green header,
   underline tabs, 2-col field grid, inset Yes/No toggle blocks, a plain
   lines-table item grid, totals bar, full-width Save + outline New action
   row) — same avc-* structure, just under an "oe-" prefix since Blazor CSS
   isolation scopes classes per-file, and with the Order-specific fields
   (item grid / tax-expense grid) swapped in for AccVoucher's own Dr/Cr
   ledger lines.
   ===================================================== */

.oe-page[b-he2j1s9hod] {
    --oe-accent: #1AB99A;
    --oe-accent-dark: #0ea384;
    --oe-accent-bg: #f0fdf9;
    --oe-accent-border: #a7f3d0;
    --oe-header-bg: #0a2a1e;
    --oe-border: #e5e7eb;
    --oe-border-soft: #f3f4f6;
    --oe-text: #111827;
    --oe-muted: #6b7280;
    --oe-muted-light: #9ca3af;
    --oe-danger: #b91c1c;
    --oe-danger-bg: #fef2f2;
    --oe-danger-border: #fecaca;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--oe-text);
    /* Bottom padding reserves room for .oe-footer-bar (fixed, ~64px tall
       incl. its own padding) so it doesn't sit on top of the page's last
       content — same reasoning as InvVoucher.razor.css's .iv-page padding. */
    padding: 16px 16px 86px;
}

.oe-shell[b-he2j1s9hod] {
    max-width: 1300px;
    margin: 0 auto;
    background: #ffffff;
    border-radius: 20px;
    border: 0.5px solid var(--oe-border);
    overflow: hidden;
    display: flex;
    align-items: stretch;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .04);
}

/* ── Autofill suggestion dropdowns (LedgerAutofill / CustomerAutofill /
   VoucherLedgerItemAutofill — Party, Customer, and every Item/Ledger cell
   on this page) — these components render their own "lga-*" markup inside
   their own template with NO base styling of their own (by design, so each
   host page skins them); page-wide, not scoped to one field, since Party/
   Customer/grid autofills all share the same lga-wrap/lga-suggest markup. ── */
[b-he2j1s9hod] .lga-wrap {
    position: relative;
    display: block;
}

[b-he2j1s9hod] .lga-suggest {
    /* Baseline position:absolute (relative to the ::deep .lga-wrap above) —
       CustomerAutofill has no JS positioning of its own and needs this to
       overlay rather than push content down. LedgerAutofill /
       VoucherLedgerItemAutofill DO set their own inline position:fixed +
       top/left/width via gainsWatchDropdown once open, which simply
       overrides this at runtime — no conflict either way. */
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--oe-border);
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, .12);
    max-height: 220px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-border) transparent;
    z-index: 200;
    list-style: none;
    margin: 4px 0 0;
    padding: 4px 0;
}

[b-he2j1s9hod] .lga-suggest-hidden {
    visibility: hidden;
}

[b-he2j1s9hod] .lga-suggest li,
[b-he2j1s9hod] .lga-empty {
    padding: 8px 12px;
    font-size: 12.5px;
    color: var(--oe-text);
}

[b-he2j1s9hod] .lga-suggest li {
    cursor: pointer;
}

    [b-he2j1s9hod] .lga-suggest li:hover,
    [b-he2j1s9hod] .lga-suggest li.active {
        background: var(--oe-accent-bg);
    }

[b-he2j1s9hod] .lga-empty {
    color: var(--oe-muted-light);
    cursor: default;
}

[b-he2j1s9hod] .lga-spin {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--oe-muted-light);
    font-size: 12px;
}

/* ── Left: collapsible Recent orders sidebar ── */
.oe-sidebar[b-he2j1s9hod] {
    width: 250px;
    flex-shrink: 0;
    background: #fafafa;
    border-right: 0.5px solid var(--oe-border);
    display: flex;
    flex-direction: column;
    transition: width .18s ease;
}

.oe-sidebar-collapsed[b-he2j1s9hod] {
    width: 56px;
}

.oe-sidebar-hdr[b-he2j1s9hod] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.oe-sidebar-label[b-he2j1s9hod] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--oe-muted);
    white-space: nowrap;
    overflow: hidden;
}

.oe-sidebar-toggle[b-he2j1s9hod] {
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    border: 1px solid var(--oe-border);
    border-radius: 7px;
    background: #fff;
    color: var(--oe-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 12px;
}

    .oe-sidebar-toggle:hover[b-he2j1s9hod] {
        color: var(--oe-accent);
        border-color: var(--oe-accent);
    }

.oe-recent-list[b-he2j1s9hod] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-border) transparent;
}

.oe-recent-empty[b-he2j1s9hod] {
    color: var(--oe-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.oe-recent-card[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background: #ffffff;
    border: 0.5px solid var(--oe-border);
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    width: 100%;
    margin-bottom: 6px;
}

    .oe-recent-card:hover[b-he2j1s9hod] {
        border-color: var(--oe-accent);
        background: var(--oe-accent-bg);
    }

.oe-avatar[b-he2j1s9hod] {
    width: 28px;
    height: 28px;
    border-radius: 7px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.oe-avatar-tint[b-he2j1s9hod] {
    background: var(--oe-accent-bg);
    border: 0.5px solid var(--oe-accent-border);
    color: #065f46;
}

.oe-recent-main[b-he2j1s9hod] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.oe-recent-vno[b-he2j1s9hod] {
    font-size: 12px;
    font-weight: 600;
    color: var(--oe-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.oe-recent-sub[b-he2j1s9hod] {
    font-size: 10px;
    color: var(--oe-muted-light);
}

/* ── Main column ── */
.oe-main[b-he2j1s9hod] {
    flex: 1;
    min-width: 0;
}

.oe-gains-header[b-he2j1s9hod] {
    background: var(--oe-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
}

.oe-gains-icon[b-he2j1s9hod] {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(26, 185, 154, .15);
    border: 1px solid rgba(26, 185, 154, .3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: var(--oe-accent);
    flex-shrink: 0;
}

.oe-gains-eyebrow[b-he2j1s9hod] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--oe-accent);
    margin-bottom: 4px;
}

.oe-gains-title[b-he2j1s9hod] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.oe-gains-vid[b-he2j1s9hod] {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, .6);
}

/* ── Tabs (ORDER / Comments / xLinks / Documents / View) — underline style ── */
.oe-gains-tabs[b-he2j1s9hod] {
    display: flex;
    gap: 4px;
    padding: 0 1.25rem;
    border-bottom: 0.5px solid var(--oe-border-soft);
    background: #fafafa;
    /* overflow-x: auto lets the tab row scroll horizontally if there isn't
       room for every tab — but per the CSS spec, setting only overflow-x
       (leaving overflow-y at its default "visible") makes the browser
       silently compute overflow-y as "auto" too, the instant either it or
       overflow-x is non-visible. That's what was putting a vertical
       scrollbar on this row itself (the one from the screenshot) — fixed by
       pinning overflow-y to hidden explicitly. */
    overflow-x: auto;
    overflow-y: hidden;
}

.oe-gains-tab[b-he2j1s9hod] {
    border: none;
    background: none;
    padding: 12px 12px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
    color: var(--oe-muted-light);
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: .12s;
}

    .oe-gains-tab:hover[b-he2j1s9hod] {
        color: var(--oe-header-bg);
    }

    .oe-gains-tab.active[b-he2j1s9hod] {
        color: var(--oe-header-bg);
        border-bottom-color: var(--oe-accent);
    }

.oe-gains-body[b-he2j1s9hod] {
    padding: 1.75rem 2rem;
}

.oe-empty-block[b-he2j1s9hod] {
    color: var(--oe-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

/* ── Field grid (Status/VType, Ref code/Depot, dates, Party/Customer) ── */
.oe-gfield-grid[b-he2j1s9hod] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 20px;
}

.oe-gfield[b-he2j1s9hod] {
    display: block;
}

.oe-gfield span[b-he2j1s9hod] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--oe-muted);
    margin-bottom: 7px;
}

.oe-ginput[b-he2j1s9hod] {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--oe-border);
    border-radius: 12px;
    font-size: 14px;
    color: var(--oe-text);
    background: #f9fafb;
    outline: none;
    font-family: inherit;
    padding: 0 12px;
    box-sizing: border-box;
}

    .oe-ginput:hover[b-he2j1s9hod] {
        border-color: #d1d5db;
    }

    .oe-ginput:focus[b-he2j1s9hod] {
        border-color: var(--oe-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

/* Shared components (DepotDropdown/SalesRepDropdown/GlobalDatepicker/
   LedgerAutofill/CustomerAutofill) render their own markup inside a child
   component's boundary — ::deep reaches past that so they still pick up
   this page's field look without their param contracts changing. */
.oe-gfield[b-he2j1s9hod]  select,
.oe-gfield[b-he2j1s9hod]  input {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--oe-border);
    border-radius: 12px;
    font-size: 14px;
    font-family: inherit;
    color: var(--oe-text);
    background: #f9fafb;
    outline: none;
    padding: 0 12px;
    box-sizing: border-box;
}

    .oe-gfield[b-he2j1s9hod]  select:hover,
    .oe-gfield[b-he2j1s9hod]  input:hover {
        border-color: #d1d5db;
    }

    .oe-gfield[b-he2j1s9hod]  select:focus,
    .oe-gfield[b-he2j1s9hod]  input:focus {
        border-color: var(--oe-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

[b-he2j1s9hod] .gdp-wrap {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--oe-border);
    border-radius: 12px;
    background: #f9fafb;
    box-sizing: border-box;
}

.oe-customer-row[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .oe-customer-row > *:first-child[b-he2j1s9hod] {
        flex: 1;
    }

.oe-inline-add[b-he2j1s9hod] {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

    .oe-inline-add .oe-ginput[b-he2j1s9hod] {
        flex: 1;
    }

/* ── Inset Quotation? / Rate inclusive of GST? blocks — same as AccVoucher's
   "TDS applicable?" inset block ── */
.oe-inset-block[b-he2j1s9hod] {
    background: #f9fafb;
    border: 0.5px solid var(--oe-border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 16px;
}

.oe-inset-hdr[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.oe-inset-title[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

    .oe-inset-title i[b-he2j1s9hod] {
        font-size: 16px;
        color: var(--oe-accent);
    }

.oe-pill-group[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.oe-pill[b-he2j1s9hod] {
    border: 1px solid var(--oe-border);
    background: #fff;
    color: var(--oe-muted);
    font-size: 12px;
    font-weight: 600;
    padding: 6px 14px;
    border-radius: 20px;
    cursor: pointer;
    font-family: inherit;
}

    .oe-pill.active[b-he2j1s9hod] {
        background: var(--oe-accent);
        color: #fff;
        border-color: var(--oe-accent);
    }

/* ── Item / expense line grids ── */
.oe-lines-section[b-he2j1s9hod] {
    border-top: 0.5px solid var(--oe-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.oe-lines-toolbar[b-he2j1s9hod] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.oe-lines-title[b-he2j1s9hod] {
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

.oe-grid-toolbar-row[b-he2j1s9hod] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 12px;
}

/* "Proper" bordered grid table — solid header/total band, full cell
   borders — same convention already established elsewhere in the app
   (Daybook's .db-table, AccVoucher's own avc-doc-table comment) for a
   grid that should read like the legacy screen's own table, rather than
   the softer borderless style used for the Debit/Credit rows on
   AccVoucher's Entry tab. Two colour variants (navy for the item grid,
   muted-gray for the ledger/expense grid) mirror the two distinct header
   shades in the original screenshot while staying inside this page's own
   palette instead of copying the screenshot's exact hues. */
.oe-grid-wrap[b-he2j1s9hod] {
    border: 1px solid var(--oe-border);
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 12px;
}

/* Fixed-height item grid / Tax Class grid — both can grow to many rows as
   lines are added, which was pushing the whole page (Save button included)
   further down with every line. Capping the height and scrolling inside
   instead — same "fixed height + overflow:auto + sticky thead" convention
   masters-forms.css's .mu-table-wrap already uses elsewhere in the app —
   keeps the rest of the form in a stable position. Not applied to the Add
   Expenses grid (plain .oe-grid-wrap, no modifier), which is hand-populated
   a few rows at a time rather than growing unbounded. */
.oe-grid-wrap-scroll[b-he2j1s9hod] {
    max-height: 280px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-accent-border) transparent;
}

    .oe-grid-wrap-scroll[b-he2j1s9hod]::-webkit-scrollbar {
        width: 8px;
    }

    .oe-grid-wrap-scroll[b-he2j1s9hod]::-webkit-scrollbar-thumb {
        background: var(--oe-accent-border);
        border-radius: 8px;
    }

    .oe-grid-wrap-scroll thead th[b-he2j1s9hod] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

.oe-grid-table[b-he2j1s9hod] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .oe-grid-table th[b-he2j1s9hod] {
        color: #fff;
        font-weight: 700;
        font-size: 12px;
        text-align: left;
        padding: 8px 10px;
        border: 1px solid rgba(255, 255, 255, .18);
    }

    .oe-grid-table td[b-he2j1s9hod] {
        padding: 6px 8px;
        border: 1px solid var(--oe-border);
        color: var(--oe-text);
    }

    .oe-grid-table tbody tr:nth-child(even)[b-he2j1s9hod] {
        background: #f9fafb;
    }

.oe-grid-navy th[b-he2j1s9hod] {
    background: #306B9C;
}

/* Item grid rows double as an "edit this line" trigger (EditItemRow) —
   cursor + hover tint mark them clickable without touching the Tax Class /
   Add Expenses tables, which don't share this behavior. */
.oe-items-table tbody tr[b-he2j1s9hod] {
    cursor: pointer;
}

.oe-items-table tbody tr:hover[b-he2j1s9hod] {
    background: #eaf2fa;
}

/* Highlights whichever row EditItemRow currently has loaded into the
   quick-add draft fields, so it's clear the toolbar above is editing THIS
   line rather than building a new one. */
.oe-items-table tbody tr.oe-row-editing[b-he2j1s9hod],
.oe-items-table tbody tr.oe-row-editing:hover[b-he2j1s9hod] {
    background: #fff3cd;
}

.oe-grid-muted th[b-he2j1s9hod] {
    background: var(--oe-muted);
}

.oe-grid-total-row td[b-he2j1s9hod] {
    color: #fff;
    font-weight: 700;
    border-color: rgba(255, 255, 255, .18);
}

.oe-grid-navy .oe-grid-total-row td[b-he2j1s9hod] {
    background: #306B9C;
}

.oe-grid-muted .oe-grid-total-row td[b-he2j1s9hod] {
    background: var(--oe-muted);
}

/* ── Grand total bar — item total + net tax, below the Tax Class table.
   Right-aligned card rather than another table row since it rolls up the
   item grid's total alongside this table's own Cr/Dr total. ── */
.oe-grandtotal-bar[b-he2j1s9hod] {
    margin-top: 12px;
    margin-left: auto;
    width: 100%;
    max-width: 280px;
    border: 1px solid var(--oe-border);
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
}

.oe-grandtotal-row[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px;
    font-size: 13px;
    color: var(--oe-muted);
    border-bottom: 1px solid var(--oe-border-soft);
}

.oe-grandtotal-row:last-child[b-he2j1s9hod] {
    border-bottom: none;
}

.oe-grandtotal-grand[b-he2j1s9hod] {
    background: var(--oe-accent-bg);
    color: var(--oe-text);
    font-weight: 700;
    font-size: 14px;
}

    .oe-grandtotal-grand span:first-child[b-he2j1s9hod] {
        color: var(--oe-accent-dark);
    }

/* ── Rectangular "Tax Class / Add Expenses" tab pair — same adjoining-tab
   look as the legacy screen, kept in this page's own accent colour rather
   than the screenshot's navy so it stays consistent with every other
   active-state control (oe-pill.active, oe-gains-tab.active) on this page. ── */
.oe-subtab-group[b-he2j1s9hod] {
    display: flex;
    margin-bottom: 12px;
}

.oe-subtab[b-he2j1s9hod] {
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    padding: 9px 18px;
    border: 1px solid var(--oe-border);
    background: #fff;
    color: var(--oe-muted);
    cursor: pointer;
    transition: .12s;
}

    .oe-subtab:first-child[b-he2j1s9hod] {
        border-radius: 8px 0 0 8px;
    }

    .oe-subtab:last-child[b-he2j1s9hod] {
        border-radius: 0 8px 8px 0;
        border-left: none;
    }

    .oe-subtab:hover[b-he2j1s9hod] {
        color: var(--oe-accent-dark);
    }

    .oe-subtab.active[b-he2j1s9hod] {
        background: var(--oe-accent-dark);
        border-color: var(--oe-accent-dark);
        color: #fff;
    }

.oe-lines-input[b-he2j1s9hod] {
    width: 100%;
    height: 38px;
    border: 1.5px solid var(--oe-border);
    border-radius: 8px;
    font-size: 13px;
    color: var(--oe-text);
    background: #f9fafb;
    outline: none;
    font-family: inherit;
    padding: 0 10px;
    box-sizing: border-box;
}

.oe-grid-wrap[b-he2j1s9hod]  input {
    width: 100%;
    height: 38px;
    border: 1.5px solid var(--oe-border);
    border-radius: 8px;
    font-size: 13px;
    color: var(--oe-text);
    background: #f9fafb;
    outline: none;
    font-family: inherit;
    padding: 0 10px;
    box-sizing: border-box;
}

    .oe-lines-input:focus[b-he2j1s9hod],
    .oe-grid-wrap[b-he2j1s9hod]  input:focus {
        border-color: var(--oe-accent);
        background: #fff;
        box-shadow: 0 0 0 2px rgba(26, 185, 154, .12);
    }

.oe-cell-static[b-he2j1s9hod] {
    font-weight: 600;
    color: var(--oe-text);
    padding-right: 10px !important;
}

.oe-empty-cell[b-he2j1s9hod] {
    text-align: center;
    color: var(--oe-muted-light);
    padding: 20px !important;
}

.oe-icon-btn[b-he2j1s9hod] {
    height: 34px;
    width: 34px;
    border: 1.5px solid var(--oe-border);
    border-radius: 8px;
    background: #fff;
    color: var(--oe-muted-light);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .oe-icon-btn:hover[b-he2j1s9hod] {
        color: var(--oe-danger);
        border-color: var(--oe-danger-border);
    }

/* ── Quick-add item row — the "Item [+] / Quantity / Rate / Amount"
   toolbar above the item grid. Real textboxes (not toggles): filling these
   in and clicking "+" commits a new line into the grid below.

   Free Qty / Free Qty1 / Quantity1 are hidden for now (see OrderEntry.razor)
   — this grid was 6 tracks (Item, +, Free Qty, Quantity, Rate, Amount) plus
   a second row for Free Qty1/Quantity1; with those three fields removed
   from the markup it's just the one 5-track row below. Restoring the
   hidden fields is a markup-only change; widen this back to 6 columns and
   reinstate the second-row rules if that CSS is needed again. ── */
.oe-quickadd-row[b-he2j1s9hod] {
    display: grid;
    grid-template-columns: 2fr 32px repeat(3, 1fr);
    gap: 10px;
    align-items: end;
    margin-bottom: 16px;
}

.oe-quickadd-field[b-he2j1s9hod] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    .oe-quickadd-field span[b-he2j1s9hod] {
        font-size: 10.5px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--oe-muted);
    }

/* Sits inside .oe-quickadd-btn-field below, matching every sibling field's
   own "label span + 44px content" shape (see .oe-quickadd-field) — this is
   the 44px content slot, so the button centers on exactly the same
   vertical band the adjacent 44px textboxes occupy, rather than being
   grid-bottom-aligned against them (which looked off once the button
   shrank to 20px). */
.oe-quickadd-btn-slot[b-he2j1s9hod] {
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.oe-quickadd-add-btn[b-he2j1s9hod] {
    height: 20px;
    width: 20px;
    flex-shrink: 0;
    border: none;
    border-radius: 5px;
    background: var(--oe-accent);
    color: #fff;
    font-size: 9px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .oe-quickadd-add-btn:hover[b-he2j1s9hod] {
        background: var(--oe-accent-dark);
    }

/* InvItemAutofill (Item field) renders its own <input> inside a CHILD
   component's template, so the plain "oe-ginput" class passed via
   InputClass never actually receives this file's scoped styling (Blazor
   CSS isolation only auto-scopes elements written directly in THIS .razor
   file) — that's what left the Item textbox looking unstyled/"disturbed"
   next to its own siblings back when this row used VoucherLedgerItemAutofill.
   ::deep reaches past the component boundary to size and border it exactly
   like every other .oe-ginput on this row; InvItemAutofill.razor.css's own
   ::deep input fallback loses to this rule's higher specificity, and its
   .ia-suggest dropdown is already self-styled so no extra ::deep is needed
   for that part. */
.oe-quickadd-row[b-he2j1s9hod]  input {
    width: 100%;
    height: 44px;
    border: 1.5px solid var(--oe-border);
    border-radius: 12px;
    font-size: 14px;
    font-family: inherit;
    color: var(--oe-text);
    background: #f9fafb;
    outline: none;
    padding: 0 12px;
    box-sizing: border-box;
}

    .oe-quickadd-row[b-he2j1s9hod]  input:hover {
        border-color: #d1d5db;
    }

    .oe-quickadd-row[b-he2j1s9hod]  input:focus {
        border-color: var(--oe-accent);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

/* Save/error messages now use the app-wide .mu-toast (masters-forms.css,
   loaded globally) instead of an inline banner — see OrderEntry.razor's
   ShowToast(). */

/* ── Buttons ── */
.oe-action-row[b-he2j1s9hod] {
    display: flex;
    gap: 10px;
}

    .oe-action-row .oe-primary-btn[b-he2j1s9hod] {
        flex: 1;
        width: auto;
    }

    .oe-action-row .oe-outline-btn[b-he2j1s9hod] {
        height: 48px;
        padding: 0 18px;
        font-size: 14px;
        white-space: nowrap;
    }

.oe-primary-btn[b-he2j1s9hod] {
    width: 100%;
    height: 48px;
    border: none;
    border-radius: 12px;
    background: var(--oe-accent);
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: inherit;
}

    .oe-primary-btn:hover[b-he2j1s9hod] {
        background: var(--oe-accent-dark);
    }

    .oe-primary-btn:active[b-he2j1s9hod] {
        transform: scale(.99);
    }

    .oe-primary-btn:disabled[b-he2j1s9hod] {
        background: var(--oe-muted-light);
        cursor: not-allowed;
    }

.oe-outline-btn[b-he2j1s9hod] {
    height: 38px;
    padding: 0 14px;
    border: 1.5px solid var(--oe-border);
    border-radius: 10px;
    background: #fff;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: inherit;
}

    .oe-outline-btn:hover[b-he2j1s9hod] {
        background: #f9fafb;
        border-color: var(--oe-accent);
    }

.oe-btn-sm[b-he2j1s9hod] {
    height: 32px;
    padding: 0 10px;
    font-size: 12px;
}

/* ---------- fixed footer ----------
   Same "static"/always-visible bottom action bar InvVoucher.razor.css uses
   (.iv-footer-bar/.iv-footer-inner) — Save/New order now live here instead
   of inside the ORDER tab's scrollable .oe-panel, so they stay pinned to
   the viewport regardless of scroll position or which tab is active. */
.oe-footer-bar[b-he2j1s9hod] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 1.5px solid var(--oe-border);
    box-shadow: 0 -6px 20px rgba(15, 23, 42, .08);
    z-index: 50;
    padding: 10px 12px;
}

.oe-footer-inner[b-he2j1s9hod] {
    max-width: 1300px;
    margin: 0 auto;
}

.text-end[b-he2j1s9hod] {
    text-align: right;
}

.text-center[b-he2j1s9hod] {
    text-align: center;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .oe-shell[b-he2j1s9hod] {
        flex-direction: column;
        border-radius: 14px;
    }

    .oe-sidebar[b-he2j1s9hod] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--oe-border);
    }

    .oe-sidebar-collapsed .oe-sidebar-hdr[b-he2j1s9hod] {
        justify-content: flex-end;
    }

    .oe-gfield-grid[b-he2j1s9hod] {
        grid-template-columns: 1fr;
    }

    .oe-gains-body[b-he2j1s9hod] {
        padding: 1.25rem;
    }

    .oe-gains-tabs[b-he2j1s9hod] {
        overflow-x: auto;
        overflow-y: hidden;
    }
}
/* /Components/Pages/Transactions/Voucher/VoucherCrossLink.razor.rz.scp.css */
/* VoucherCrossLink.razor.css
   Scoped styles for the common cross-link panel. Blazor CSS isolation means
   the global .mu-card/.mu-table/.mu-empty rules (wwwroot/CSS/masters-forms.css)
   still apply automatically, but component-scoped classes from other pages
   (che-*, xl-*, le-toptab, etc.) do not carry over here — so, following the
   same pattern already used by CrossLink.razor.css (see its own "must be
   redefined here" comments), the handful of look-alike bits (tab strip,
   right-aligned numeric cells) are redefined locally with a "vcl-" prefix. */

.vcl-root[b-y8uj7vi9re] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    font-family: Arial;
}

/* ── Category tab strip (Account / Inventory / Order / PUR) ── */
.vcl-tabs[b-y8uj7vi9re] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.vcl-tab[b-y8uj7vi9re] {
    padding: 7px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
}

    .vcl-tab:hover[b-y8uj7vi9re] {
        background: #f5f5f5;
    }

    .vcl-tab.active[b-y8uj7vi9re] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }

/* ── Panel card ── */
.vcl-panel[b-y8uj7vi9re] {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    /* Containing block for the shared <Loader> overlay (position:absolute)
       above, so it covers just this panel rather than the whole page. */
    position: relative;
}

/* ── Header rows ── */
.vcl-hdr-row[b-y8uj7vi9re] {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    font-size: 13px;
    color: #1a2537;
    font-weight: 600;
}

.vcl-hdr-vnum[b-y8uj7vi9re] {
    color: #1a56a7;
}

.vcl-hdr-date[b-y8uj7vi9re] {
    margin-left: auto;
}

/* ── Account tab's small ledger summary box (LedgerName/Amount, Linked, Balance) ── */
.vcl-summary-table[b-y8uj7vi9re] {
    width: 320px;
    max-width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .vcl-summary-table td[b-y8uj7vi9re] {
        padding: 6px 10px;
        border-bottom: 1px solid #eef2f7;
    }

    .vcl-summary-table td.num[b-y8uj7vi9re] {
        text-align: right;
    }

    .vcl-summary-table .vcl-summary-total td[b-y8uj7vi9re] {
        font-weight: 700;
        border-bottom: none;
        border-top: 1px solid #d6dbe0;
    }

/* ── Section headers ("Already Linked" / "Linked" / "Yet to Link") ── */
.vcl-section-hdr[b-y8uj7vi9re] {
    font-size: 12px;
    font-weight: 700;
    color: #1a2537;
    display: flex;
    align-items: center;
    gap: 10px;
}

.vcl-yet-hdr i[b-y8uj7vi9re] {
    cursor: pointer;
    color: #64748b;
    font-size: 13px;
}

    .vcl-yet-hdr i:hover[b-y8uj7vi9re] {
        color: #1a56a7;
    }

/* ── Grids ── */
.vcl-table td[b-y8uj7vi9re],
.vcl-table th[b-y8uj7vi9re] {
    white-space: nowrap;
}

.vcl-table .num[b-y8uj7vi9re] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Already Linked / Linked and Yet to Link grids both capped at 300px with
   their own scroll (mu-table-wrap's global default is a fixed 540px) —
   overridden here via scoped CSS isolation rather than touching
   masters-forms.css. */
.vcl-linked-wrap[b-y8uj7vi9re],
.vcl-yet-wrap[b-y8uj7vi9re] {
    max-height: 300px;
}

.vcl-th-delink[b-y8uj7vi9re],
.vcl-th-chk[b-y8uj7vi9re] {
    width: 60px;
    text-align: center;
}

.vcl-td-chk[b-y8uj7vi9re] {
    text-align: center;
}

/* Delink action on the Already Linked/Linked grids — same small square
   icon-button-with-trash-icon convention used everywhere else in the app for
   row delete/remove (AccVoucher's own .avc-icon-btn, OrderEntry's
   .oe-icon-btn, InvVoucher's .iv-icon-btn), just sized down to fit this
   grid's tighter row height. Redefined locally rather than reused directly
   because Blazor CSS isolation scopes each component's own stylesheet. */
.vcl-icon-btn[b-y8uj7vi9re] {
    height: 26px;
    width: 26px;
    border: 1.5px solid #d6dbe0;
    border-radius: 6px;
    background: #fff;
    color: #9aa3af;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 11.5px;
}

    .vcl-icon-btn:hover[b-y8uj7vi9re] {
        color: #dc2626;
        border-color: #fca5a5;
        background: #fef2f2;
    }

.vcl-th-sub[b-y8uj7vi9re] {
    font-size: 11px;
    color: #64748b;
    font-weight: 400;
}

.vcl-vnum-link[b-y8uj7vi9re] {
    color: #1565c0;
    cursor: pointer;
}

    .vcl-vnum-link:hover[b-y8uj7vi9re] {
        text-decoration: underline;
    }

/* Small "click to view" affordance next to VNum — same dot QItem.razor
   uses for its own View Voucher shortcut (.ql-vsquare), just blue here
   since the whole cell (not just the dot) already opens the voucher. */
.vcl-vdot[b-y8uj7vi9re] {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 6px;
    border-radius: 2px;
    background: #1565c0;
    vertical-align: middle;
}

.vcl-cross-in[b-y8uj7vi9re] {
    width: 90px;
    padding: 3px 6px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    text-align: right;
    font-size: 12.5px;
    font-family: inherit;
}

/* ── Footer row (Account tab's save icon / record count / totals) ──
   Sticky to the bottom of the viewport so Save stays reachable without
   scrolling all the way down past the grids above it. */
.vcl-footer-row[b-y8uj7vi9re] {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 8px 10px;
    background: #f2f2f2;
    border-top: 1px solid #d6dbe0;
    border-radius: 0 0 6px 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: #1a2537;
    position: sticky;
    bottom: 0;
    z-index: 5;
    box-shadow: 0 -2px 6px rgba(15, 23, 42, .06);
}

    .vcl-footer-row .num[b-y8uj7vi9re] {
        text-align: right;
        min-width: 90px;
    }

.vcl-footer-sigma[b-y8uj7vi9re] {
    margin-left: auto;
    color: #64748b;
}

.vcl-records-count[b-y8uj7vi9re] {
    color: #64748b;
    font-weight: 600;
}

/* Save button — matches the same primary-button look used by the other
   voucher forms' own Save buttons (ChallanEntry's che-btn-primary,
   CrossLink.razor's xl-btn.primary, AccVoucher's avc-primary-btn): teal
   fill, white text/icon, same padding/radius/weight. Redefined locally
   (rather than referencing those classes directly) because Blazor CSS
   isolation scopes each component's own stylesheet — see
   CrossLink.razor.css's identical "must be redefined here" notes for
   .le-toptabs/.itb-page. */
.vcl-save-btn[b-y8uj7vi9re] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .2px;
    background: #1ab99a;
    color: #fff;
    border: 1px solid #1ab99a;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
    transition: background .12s, border-color .12s;
}

    .vcl-save-btn:hover[b-y8uj7vi9re] {
        background: #159a80;
        border-color: #159a80;
    }

    .vcl-save-btn i[b-y8uj7vi9re] {
        font-size: 13px;
    }

/* Wraps the standalone Save button on the Inventory/Order/PUR tabs (the
   Account tab's own Save sits inside .vcl-footer-row instead) — same sticky
   treatment so it stays reachable without scrolling. */
.vcl-save-sticky[b-y8uj7vi9re] {
    position: sticky;
    bottom: 0;
    background: #fff;
    padding-top: 6px;
    z-index: 5;
}

/* ── Inventory/Order/PUR: item-summary (left) + Linked/Yet-to-Link (right) split ── */
.vcl-split[b-y8uj7vi9re] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    flex-wrap: wrap;
}

.vcl-split-left[b-y8uj7vi9re] {
    flex: 0 0 320px;
    max-width: 100%;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.vcl-split-right[b-y8uj7vi9re] {
    flex: 1 1 480px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

@media (max-width: 900px) {
    .vcl-split-left[b-y8uj7vi9re],
    .vcl-split-right[b-y8uj7vi9re] {
        flex: 1 1 100%;
    }
}
/* /Components/Pages/Transactions/Voucher/VoucherDocumentsPanel.razor.rz.scp.css */
/* =====================================================
   VoucherDocumentsPanel.razor.css
   Extracted from ChallanEntry's dOcuments tab — kept its own
   --vdp-* custom properties (same values ChallanEntry used under
   --che-*) rather than depending on the host page's vars, so this
   renders correctly no matter which voucher page (Challan, InvVoucher,
   AccVoucher, OrderEntry, ...) drops it in.
   ===================================================== */

.vdp-card[b-qgo9x34ykl] {
    --vdp-accent: #1AB99A;
    --vdp-accent-dark: #0d9480;
    --vdp-accent-bg: #eafbf6;
    --vdp-border: #e2e8f0;
    --vdp-border-strong: #cbd5e1;
    --vdp-text: #1e293b;
    --vdp-muted: #64748b;
    --vdp-muted-light: #94a3b8;
    --vdp-danger: #dc2626;
    --vdp-danger-bg: #fef2f2;
    font-size: 13px;
    color: var(--vdp-text);
    background: #fafbfc;
    border: 1px solid var(--vdp-border);
    border-radius: 10px;
    padding: 18px 20px;
    margin-bottom: 16px;
}

.vdp-title[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14.5px;
    font-weight: 700;
    color: var(--vdp-text);
    margin-bottom: 16px;
}

    .vdp-title i[b-qgo9x34ykl] {
        color: var(--vdp-accent-dark);
    }

.vdp-infobar[b-qgo9x34ykl] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}

.vdp-info-box[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1px solid var(--vdp-border);
    border-radius: 8px;
    padding: 10px 16px;
    flex: 1 1 160px;
    min-width: 140px;
}

.vdp-info-icon[b-qgo9x34ykl] {
    color: var(--vdp-accent-dark);
    font-size: 15px;
    flex-shrink: 0;
}

.vdp-active-chk[b-qgo9x34ykl] {
    width: 16px;
    height: 16px;
    accent-color: var(--vdp-muted-light);
}

.vdp-info-label[b-qgo9x34ykl] {
    display: block;
    font-size: 10.5px;
    font-weight: 600;
    color: var(--vdp-muted-light);
    margin-bottom: 1px;
}

.vdp-info-val[b-qgo9x34ykl] {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--vdp-text);
}

.vdp-tagfile-row[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 12px;
}

.vdp-tagfile-btn[b-qgo9x34ykl] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1px solid var(--vdp-border-strong);
    border-radius: 8px;
    padding: 9px 16px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--vdp-text);
    cursor: pointer;
    white-space: nowrap;
}

    .vdp-tagfile-btn:hover[b-qgo9x34ykl] {
        border-color: var(--vdp-accent);
    }

    .vdp-tagfile-btn i[b-qgo9x34ykl] {
        color: var(--vdp-accent-dark);
    }

.vdp-tagfile-hint[b-qgo9x34ykl] {
    font-size: 12px;
    font-style: italic;
    color: var(--vdp-accent-dark);
}

.vdp-choosefile-row[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}

.vdp-fields-row[b-qgo9x34ykl] {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
}

.vdp-field[b-qgo9x34ykl] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1 1 220px;
    min-width: 160px;
}

.vdp-field-type[b-qgo9x34ykl] {
    flex: 0 1 200px;
}

.vdp-field-label[b-qgo9x34ykl] {
    font-size: 12px;
    color: var(--vdp-muted);
    font-weight: 600;
}

.vdp-upload[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.vdp-file-btn[b-qgo9x34ykl] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    border: 1px solid var(--vdp-border-strong);
    border-radius: 8px;
    padding: 9px 16px;
    color: var(--vdp-text);
    cursor: pointer;
    white-space: nowrap;
    transition: .12s;
}

    .vdp-file-btn:hover[b-qgo9x34ykl] {
        border-color: var(--vdp-accent);
        color: var(--vdp-accent-dark);
    }

    .vdp-file-btn[b-qgo9x34ykl]  input[type="file"] {
        position: absolute;
        inset: 0;
        opacity: 0;
        cursor: pointer;
        width: 100%;
    }

.vdp-file-name[b-qgo9x34ykl] {
    font-size: 12.5px;
    color: var(--vdp-muted);
}

.vdp-desc[b-qgo9x34ykl] {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--vdp-border-strong);
    border-radius: 8px;
    font-size: 13px;
}

[b-qgo9x34ykl] .vdp-type {
    width: 100%;
}

.vdp-save-btn[b-qgo9x34ykl] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 1 1 200px;
    min-width: 160px;
    height: 42px;
    background: var(--vdp-accent);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: .12s;
}

    .vdp-save-btn:hover:not(:disabled)[b-qgo9x34ykl] {
        background: var(--vdp-accent-dark);
    }

    .vdp-save-btn:disabled[b-qgo9x34ykl] {
        background: #9fdcce;
        cursor: not-allowed;
    }

.vdp-cancel-btn[b-qgo9x34ykl] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    background: #fff;
    color: var(--vdp-muted);
    border: 1px solid var(--vdp-border-strong);
    border-radius: 8px;
    cursor: pointer;
    transition: .12s;
}

    .vdp-cancel-btn:hover[b-qgo9x34ykl] {
        border-color: var(--vdp-danger);
        color: var(--vdp-danger);
    }

.vdp-msg[b-qgo9x34ykl] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
}

.vdp-msg-ok[b-qgo9x34ykl] {
    color: var(--vdp-accent-dark);
    background: var(--vdp-accent-bg);
}

.vdp-msg-err[b-qgo9x34ykl] {
    color: var(--vdp-danger);
    background: var(--vdp-danger-bg);
}

.vdp-msg-info[b-qgo9x34ykl] {
    color: var(--vdp-muted);
    background: #f1f5f9;
}

.vdp-file-btn-disabled[b-qgo9x34ykl] {
    opacity: .5;
    cursor: not-allowed;
    pointer-events: none;
}

.vdp-grid-wrap[b-qgo9x34ykl] {
    border: 1px solid var(--vdp-border);
    border-radius: 10px;
    overflow: auto;
}

.vdp-table[b-qgo9x34ykl] {
    width: 100%;
    border-collapse: collapse;
}

    .vdp-table thead th[b-qgo9x34ykl] {
        background: #306B9C;
        color: #fff;
        font-size: 12px;
        font-weight: 700;
        padding: 10px 8px;
        text-align: left;
    }

    .vdp-table td[b-qgo9x34ykl] {
        padding: 8px;
        font-size: 12.5px;
        border-bottom: 1px solid var(--vdp-border);
    }

.vdp-filename[b-qgo9x34ykl] {
    color: var(--vdp-accent-dark);
    font-weight: 600;
}

.vdp-view-btn[b-qgo9x34ykl] {
    background: none;
    border: none;
    color: inherit;
    font: inherit;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

    .vdp-view-btn:hover[b-qgo9x34ykl] {
        text-decoration: underline;
    }

    .vdp-view-btn i[b-qgo9x34ykl] {
        color: var(--vdp-muted-light);
    }

.vdp-row-actions[b-qgo9x34ykl] {
    text-align: center;
}

    .vdp-row-actions button[b-qgo9x34ykl] {
        background: none;
        border: none;
        color: var(--vdp-muted);
        cursor: pointer;
        font-size: 13px;
        padding: 3px 5px;
    }

        .vdp-row-actions button:hover[b-qgo9x34ykl] {
            color: var(--vdp-danger);
        }

.vdp-empty[b-qgo9x34ykl] {
    text-align: center;
    color: var(--vdp-muted-light);
    font-size: 12.5px;
    padding: 20px !important;
}

/* ── Document preview popup — overlay+centered-panel, same convention as
   the other modals across the voucher pages. ── */
.vdp-prev-overlay[b-qgo9x34ykl] {
    position: fixed;
    inset: 0;
    background: rgba(15, 20, 30, .55);
    z-index: 1300;
}

.vdp-prev-modal[b-qgo9x34ykl] {
    position: fixed;
    top: 4%;
    left: 50%;
    transform: translateX(-50%);
    width: min(700px, 94vw);
    height: 88vh;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .3);
    z-index: 1301;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.vdp-prev-hdr[b-qgo9x34ykl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    background: #306B9C;
    color: #fff;
    font-weight: 600;
    flex-shrink: 0;
}

.vdp-prev-x[b-qgo9x34ykl] {
    background: none;
    border: none;
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.vdp-prev-body[b-qgo9x34ykl] {
    flex: 1;
    overflow: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
    min-height: 0;
}

.vdp-prev-img[b-qgo9x34ykl] {
    max-width: 100%;
    max-height: 100%;
}

.vdp-prev-frame[b-qgo9x34ykl] {
    width: 100%;
    height: 100%;
    border: none;
}

@media (max-width: 767px) {
    .vdp-prev-modal[b-qgo9x34ykl] {
        width: 96vw;
        height: 92vh;
        top: 3%;
    }
}
/* /Components/Pages/TwoFactorAuth.razor.rz.scp.css */
/* ================================================================
   GAINS — TwoFactorAuth.razor.css  (v2 — full redesign)
================================================================ */

/* ── Page ── */
.tfa-page[b-p2x88xy2dr] {
    display: flex;
    min-height: 100vh;
    width: 100%;
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 14px;
}

/* ════════════════════════════════════════════
   LEFT PANEL
════════════════════════════════════════════ */
.tfa-left[b-p2x88xy2dr] {
    width: 42%;
    min-width: 340px;
    background: linear-gradient(160deg, #071a12 0%, #0a2218 55%, #071a12 100%);
    display: flex;
    flex-shrink: 0;
    position: relative;
    overflow: hidden;
}

/* Radial glow */
.tfa-left[b-p2x88xy2dr]::before {
    content: '';
    position: absolute;
    top: -80px; left: 50%;
    transform: translateX(-50%);
    width: 600px; height: 600px;
    background: radial-gradient(ellipse,
        rgba(26,185,154,.22) 0%,
        rgba(26,185,154,.07) 40%,
        transparent 68%);
    animation: tfaGlow-b-p2x88xy2dr 5s ease-in-out infinite;
    pointer-events: none;
}
@keyframes tfaGlow-b-p2x88xy2dr {
    0%,100% { opacity:.5; transform: translateX(-50%) scale(1);    }
    50%      { opacity:1;  transform: translateX(-50%) scale(1.12); }
}

/* Dot grid */
.tfa-left[b-p2x88xy2dr]::after {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(circle, rgba(255,255,255,.038) 1px, transparent 1px);
    background-size: 28px 28px;
    pointer-events: none;
}

.tfa-left-inner[b-p2x88xy2dr] {
    display: flex;
    flex-direction: column;
    padding: 2.5rem 2.25rem;
    width: 100%;
    position: relative;
    z-index: 1;
    gap: 0;
}

/* Brand */
.tfa-brand[b-p2x88xy2dr]          { display: flex; align-items: center; gap: 14px; margin-bottom: 2rem; }
.tfa-brand-icon[b-p2x88xy2dr]     {
    width: 46px; height: 46px; border-radius: 11px;
    background: rgba(255,255,255,.09);
    border: 1px solid rgba(255,255,255,.18);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden; flex-shrink: 0;
}
.tfa-logo-img[b-p2x88xy2dr]       { width: 34px; height: 34px; object-fit: contain; }
.tfa-brand-name[b-p2x88xy2dr]     { font-size: 21px; font-weight: 700; letter-spacing: .13em; color: #fff; line-height: 1.1; }
.tfa-brand-full[b-p2x88xy2dr]     { font-size: 10.5px; color: rgba(255,255,255,.38); margin-top: 2px; line-height: 1.4; }

/* Heading */
.tfa-mid[b-p2x88xy2dr] { margin-bottom: 1.6rem; }
.tfa-mid h2[b-p2x88xy2dr]      { font-size: 24px; font-weight: 700; color: #fff; line-height: 1.35; margin: 0 0 .65rem; }
.tfa-mid h2 span[b-p2x88xy2dr] { color: #1AB99A; }
.tfa-mid p[b-p2x88xy2dr]       { font-size: 13px; color: rgba(255,255,255,.45); line-height: 1.68; margin: 0; }

/* ── Install guide box ── */
.tfa-install-box[b-p2x88xy2dr] {
    background: rgba(255,255,255,.03);
    border: 1px solid rgba(255,255,255,.09);
    border-radius: 16px;
    padding: 18px 18px 20px;
    margin-bottom: 1.4rem;
    overflow: hidden;
}

/* Header row inside box */
.tfa-install-header[b-p2x88xy2dr] {
    display: flex; align-items: center; gap: 12px; margin-bottom: 16px;
}
.tfa-gauth-logo-wrap[b-p2x88xy2dr] {
    width: 44px; height: 44px; border-radius: 12px; flex-shrink: 0;
    background: rgba(26,185,154,.1);
    border: 1px solid rgba(26,185,154,.25);
    display: flex; align-items: center; justify-content: center;
    padding: 8px;
    box-shadow: 0 0 16px rgba(26,185,154,.15);
}
.tfa-gauth-logo[b-p2x88xy2dr] {
    width: 100%; height: 100%; object-fit: contain;
    filter: drop-shadow(0 1px 3px rgba(26,185,154,.3));
}
.tfa-install-title[b-p2x88xy2dr] {
    font-size: 13px; font-weight: 700; color: #fff; line-height: 1.2;
}
.tfa-install-sub[b-p2x88xy2dr] {
    font-size: 11px; color: rgba(255,255,255,.38); margin-top: 2px;
}

/* Method tabs */
.tfa-link-tabs[b-p2x88xy2dr] {
    display: flex; gap: 0; margin-bottom: 18px;
    background: rgba(0,0,0,.2); border-radius: 9px; padding: 3px;
}
.tfa-link-tab[b-p2x88xy2dr] {
    flex: 1; padding: 7px 10px;
    border-radius: 7px; border: none;
    background: transparent; cursor: pointer;
    font-size: 12px; font-weight: 600; color: rgba(255,255,255,.4);
    font-family: inherit; transition: all .2s;
    display: flex; align-items: center; justify-content: center; gap: 6px;
}
.tfa-link-tab i[b-p2x88xy2dr] { font-size: 13px; }
.tfa-link-tab.active[b-p2x88xy2dr] {
    background: rgba(26,185,154,.2);
    color: #1AB99A;
    box-shadow: 0 1px 4px rgba(0,0,0,.25);
}
.tfa-link-tab:not(.active):hover[b-p2x88xy2dr] { color: rgba(255,255,255,.65); }

/* Tab panes */
.tfa-tab-pane[b-p2x88xy2dr] { display: none; }
.tfa-tab-pane.active[b-p2x88xy2dr] { display: block; animation: tfaTabIn-b-p2x88xy2dr .2s ease; }
@keyframes tfaTabIn-b-p2x88xy2dr { from { opacity:0; transform: translateY(4px); } to { opacity:1; transform: translateY(0); } }

/* ── Visual method steps ── */
.tfa-method-steps[b-p2x88xy2dr] { display: flex; flex-direction: column; }

.tfa-ms-item[b-p2x88xy2dr] {
    display: grid;
    grid-template-columns: 22px 2px 1fr;
    grid-template-rows: auto 1fr;
    column-gap: 12px;
    row-gap: 0;
}

.tfa-ms-num[b-p2x88xy2dr] {
    grid-row: 1; grid-column: 1;
    width: 22px; height: 22px; border-radius: 50%;
    background: linear-gradient(135deg, #1AB99A, #0e8a73);
    display: flex; align-items: center; justify-content: center;
    font-size: 10px; font-weight: 800; color: #fff; flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(26,185,154,.4);
    position: relative; z-index: 1;
    margin-top: 1px;
}

.tfa-ms-line[b-p2x88xy2dr] {
    grid-row: 2; grid-column: 2;
    width: 2px; background: rgba(26,185,154,.2);
    margin: 2px auto 0; height: 100%; min-height: 14px;
    border-radius: 2px;
    position: relative; left: -10px;
}
.tfa-ms-line-last[b-p2x88xy2dr] { background: transparent; }

.tfa-ms-body[b-p2x88xy2dr] {
    grid-row: 1 / 3; grid-column: 3;
    display: flex; align-items: flex-start; gap: 10px;
    padding-bottom: 16px;
}

.tfa-ms-icon[b-p2x88xy2dr] {
    width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(255,255,255,.1);
    display: flex; align-items: center; justify-content: center;
    font-size: 16px; color: rgba(255,255,255,.55);
}
.tfa-ms-icon-green[b-p2x88xy2dr] {
    background: rgba(26,185,154,.15) !important;
    border-color: rgba(26,185,154,.35) !important;
    color: #1AB99A !important;
}

.tfa-ms-txt[b-p2x88xy2dr] { flex: 1; }
.tfa-ms-title[b-p2x88xy2dr] {
    font-size: 12.5px; font-weight: 700; color: #fff;
    margin-bottom: 3px; line-height: 1.3;
    display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
}
.tfa-ms-badge[b-p2x88xy2dr] {
    display: inline-flex; align-items: center; justify-content: center;
    width: 18px; height: 18px; border-radius: 4px;
    background: rgba(26,185,154,.2); border: 1px solid rgba(26,185,154,.4);
    font-size: 11px; color: #1AB99A; font-weight: 900; line-height: 1;
}
.tfa-ms-desc[b-p2x88xy2dr] {
    font-size: 11.5px; color: rgba(255,255,255,.45); line-height: 1.55;
}
.tfa-ms-desc strong[b-p2x88xy2dr] { color: rgba(255,255,255,.75); }
.tfa-ms-desc em[b-p2x88xy2dr]     { font-style: normal; color: #5eead4; }

/* Secret key rows (inside method step) */
.tfa-sk-rows[b-p2x88xy2dr] { display: flex; flex-direction: column; gap: 6px; }
.tfa-sk-row[b-p2x88xy2dr]  { display: flex; flex-direction: column; gap: 3px; }
.tfa-sk-lbl[b-p2x88xy2dr]  {
    font-size: 9.5px; font-weight: 700; letter-spacing: .07em;
    text-transform: uppercase; color: rgba(255,255,255,.3);
}
.tfa-sk-val[b-p2x88xy2dr]  {
    font-size: 11.5px; font-weight: 600; color: #fff;
    background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1);
    border-radius: 7px; padding: 5px 9px;
    display: flex; align-items: center; justify-content: space-between; gap: 6px;
}
.tfa-sk-val span[b-p2x88xy2dr] { word-break: break-all; font-family: 'Courier New', monospace; font-size: 11px; letter-spacing: .04em; }
.tfa-sk-copy[b-p2x88xy2dr] {
    width: 22px; height: 22px; border-radius: 5px;
    background: rgba(26,185,154,.15); border: none; cursor: pointer;
    color: #1AB99A; font-size: 11px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    transition: background .12s;
}
.tfa-sk-copy:hover[b-p2x88xy2dr] { background: rgba(26,185,154,.3); }

.tfa-scanned-tag[b-p2x88xy2dr] {
    display: inline-flex; align-items: center; gap: 5px;
    color: #34d399 !important; font-size: 11px !important;
}
.tfa-scanned-tag i[b-p2x88xy2dr] { font-size: 13px; }

/* ── Steps (returning user) ── */
.tfa-steps[b-p2x88xy2dr]      { display: flex; flex-direction: column; gap: 13px; }
.tfa-step[b-p2x88xy2dr]       { display: flex; align-items: flex-start; gap: 12px; }
.tfa-step-num[b-p2x88xy2dr]   {
    width: 26px; height: 26px; border-radius: 50%;
    background: rgba(26,185,154,.18);
    border: 1px solid rgba(26,185,154,.38);
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; color: #1AB99A;
    flex-shrink: 0; margin-top: 1px;
}
.tfa-step-txt[b-p2x88xy2dr]          { font-size: 12.5px; color: rgba(255,255,255,.5); line-height: 1.55; }
.tfa-step-txt strong[b-p2x88xy2dr]   { color: #fff; display: block; font-size: 13px; font-weight: 600; margin-bottom: 2px; }

/* App store buttons */
.tfa-store-label[b-p2x88xy2dr] {
    display: flex; align-items: center; gap: 6px;
    font-size: 10px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: rgba(255,255,255,.3);
    margin-top: 1.4rem; margin-bottom: 8px;
}
.tfa-store-label i[b-p2x88xy2dr] { font-size: 12px; }
.tfa-store-btns[b-p2x88xy2dr] { display: flex; gap: 8px; }
.tfa-store-btn[b-p2x88xy2dr]  {
    display: flex; align-items: center; gap: 10px;
    background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px; padding: 9px 16px; text-decoration: none;
    transition: background .15s, border-color .15s, transform .15s;
    flex: 1; justify-content: center;
}
.tfa-store-btn:hover[b-p2x88xy2dr] {
    background: rgba(255,255,255,.11); border-color: rgba(255,255,255,.22);
    transform: translateY(-1px);
}
.tfa-store-btn i[b-p2x88xy2dr] { font-size: 22px; color: #fff; }
.tfa-store-btn-txt .tfa-store-lbl[b-p2x88xy2dr] { font-size: 9px; color: rgba(255,255,255,.38); text-transform: uppercase; letter-spacing: .06em; }
.tfa-store-btn-txt .tfa-store-name[b-p2x88xy2dr] { font-size: 13px; font-weight: 700; color: #fff; }

/* ════════════════════════════════════════════
   RIGHT PANEL
════════════════════════════════════════════ */
.tfa-right[b-p2x88xy2dr] {
    flex: 1;
    background: #f0f4f9;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1.5rem;
    min-height: 100vh;
}

/* Card */
.tfa-card[b-p2x88xy2dr] {
    width: 100%;
    max-width: 450px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 20px;
    padding: 28px 28px 24px;
    box-shadow: 0 4px 24px rgba(15,23,42,.07);
    transition: border-color .4s, box-shadow .4s;
    animation: tfaCardIn-b-p2x88xy2dr .45s cubic-bezier(.16,1,.3,1) both;
}
.tfa-card-success[b-p2x88xy2dr] {
    border-color: rgba(26,185,154,.4) !important;
    box-shadow: 0 4px 24px rgba(15,23,42,.06), 0 0 32px rgba(26,185,154,.1) !important;
}
@keyframes tfaCardIn-b-p2x88xy2dr {
    from { opacity: 0; transform: translateY(18px) scale(.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Progress bar at top of card */
.tfa-card-progress-bar-wrap[b-p2x88xy2dr] {
    height: 3px; background: #f1f5f9;
    border-radius: 3px; margin-bottom: 20px; overflow: hidden;
}
.tfa-card-progress-bar[b-p2x88xy2dr] {
    height: 100%; border-radius: 3px;
    background: linear-gradient(90deg, #1AB99A, #34d399);
    transition: width .4s ease;
}

/* ── Card top: badge + shield ── */
.tfa-card-top[b-p2x88xy2dr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.tfa-mode-badge[b-p2x88xy2dr] {
    display: inline-flex; align-items: center; gap: 6px;
    border-radius: 20px; padding: 5px 12px;
    font-size: 11.5px; font-weight: 600;
}
.tfa-mode-badge i[b-p2x88xy2dr]   { font-size: 13px; }
.tfa-mode-setup[b-p2x88xy2dr]     { background: #eff6ff; border: .5px solid #bfdbfe; color: #1e40af; }
.tfa-mode-verify[b-p2x88xy2dr]    { background: #f0fdf9; border: .5px solid #a7f3d0; color: #065f46; }

/* Animated shield */
.tfa-shield-wrap[b-p2x88xy2dr] {
    position: relative;
    width: 60px; height: 60px;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.tfa-ring[b-p2x88xy2dr] {
    position: absolute; border-radius: 50%;
    animation: tfaRing-b-p2x88xy2dr 2.8s ease-out infinite;
}
.tfa-ring-a[b-p2x88xy2dr] { width: 60px; height: 60px; border: 1.5px solid rgba(26,185,154,.35); animation-delay: 0s; }
.tfa-ring-b[b-p2x88xy2dr] { width: 44px; height: 44px; border: 1.5px solid rgba(26,185,154,.5);  animation-delay: .6s; }
@keyframes tfaRing-b-p2x88xy2dr {
    0%   { transform: scale(1);    opacity: .75; }
    60%  { transform: scale(1.12); opacity: .22; }
    100% { transform: scale(1.2);  opacity: 0;   }
}
.tfa-shield-icon[b-p2x88xy2dr] {
    width: 44px; height: 44px; border-radius: 12px;
    background: linear-gradient(135deg, #1AB99A, #0e8a73);
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 22px; z-index: 1;
    box-shadow: 0 6px 18px rgba(26,185,154,.35);
    animation: tfaBob-b-p2x88xy2dr 3.2s ease-in-out infinite;
    transition: background .4s, box-shadow .4s;
}
.tfa-shield-g[b-p2x88xy2dr] { line-height: 1; }
.tfa-shield-err[b-p2x88xy2dr] {
    background: linear-gradient(135deg, #ef4444, #b91c1c) !important;
    box-shadow: 0 6px 18px rgba(239,68,68,.35) !important;
    animation: tfaShake-b-p2x88xy2dr .42s ease !important;
}
.tfa-shield-ok[b-p2x88xy2dr] {
    background: linear-gradient(135deg, #34d399, #1AB99A) !important;
    box-shadow: 0 6px 18px rgba(26,185,154,.5) !important;
    animation: tfaBounce-b-p2x88xy2dr .5s cubic-bezier(.36,.07,.19,.97) !important;
}
@keyframes tfaBob-b-p2x88xy2dr    { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }
@keyframes tfaShake-b-p2x88xy2dr  { 0%,100%{transform:translateX(0)} 18%{transform:translateX(-5px)} 36%{transform:translateX(5px)} 54%{transform:translateX(-3px)} 72%{transform:translateX(3px)} }
@keyframes tfaBounce-b-p2x88xy2dr { 0%{transform:scale(1)} 40%{transform:scale(1.18)} 70%{transform:scale(.92)} 100%{transform:scale(1)} }

/* Title / sub */
.tfa-title[b-p2x88xy2dr] { font-size: 20px; font-weight: 700; color: #111827; margin: 0 0 5px; }
.tfa-sub[b-p2x88xy2dr]   { font-size: 13px; color: #6b7280; margin: 0 0 14px; line-height: 1.5; }

/* Account badge */
.tfa-acct-badge[b-p2x88xy2dr] {
    display: inline-flex; align-items: center; gap: 6px;
    background: #f0fdf9; border: .5px solid #a7f3d0;
    border-radius: 20px; padding: 4px 12px;
    font-size: 12px; color: #065f46; font-weight: 600;
    margin-bottom: 18px;
}
.tfa-acct-badge i[b-p2x88xy2dr] { font-size: 14px; color: #1AB99A; }

/* ════════════════════════════════
   QR / KEY SETUP (first login)
════════════════════════════════ */
.tfa-setup-grid[b-p2x88xy2dr] {
    display: grid; grid-template-columns: 1fr 1fr;
    gap: 12px; margin-bottom: 12px;
}
.tfa-qr-panel[b-p2x88xy2dr] {
    background: #f9fafb; border: .5px solid #e5e7eb;
    border-radius: 12px; padding: 14px;
    display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.tfa-qr-label[b-p2x88xy2dr] {
    font-size: 10.5px; font-weight: 600; color: #6b7280;
    text-transform: uppercase; letter-spacing: .05em;
    display: flex; align-items: center; gap: 5px;
}
.tfa-qr-box[b-p2x88xy2dr] {
    width: 128px; height: 128px;
    background: #fff; border: 1px solid #e5e7eb;
    border-radius: 10px; overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.tfa-qr-img[b-p2x88xy2dr]     { width: 120px; height: 120px; object-fit: contain; }
.tfa-qr-loading[b-p2x88xy2dr] { font-size: 26px; color: #1AB99A; }

.tfa-key-panel[b-p2x88xy2dr] {
    background: #f9fafb; border: .5px solid #e5e7eb;
    border-radius: 12px; padding: 14px;
    display: flex; flex-direction: column; gap: 10px;
}
.tfa-key-row[b-p2x88xy2dr]   { display: flex; flex-direction: column; gap: 3px; }
.tfa-key-lbl[b-p2x88xy2dr]   { font-size: 10px; font-weight: 700; color: #9ca3af; text-transform: uppercase; letter-spacing: .07em; }
.tfa-key-val[b-p2x88xy2dr]   { font-size: 12.5px; font-weight: 600; color: #111827; }
.tfa-key-secret[b-p2x88xy2dr] {
    font-size: 10px; font-family: 'Courier New', monospace;
    color: #065f46; background: #f0fdf9;
    border: .5px solid #a7f3d0; border-radius: 6px;
    padding: 5px 7px; word-break: break-all; line-height: 1.6;
}
.tfa-copy-btn[b-p2x88xy2dr] {
    display: inline-flex; align-items: center; gap: 5px;
    background: none; border: .5px solid #e5e7eb;
    border-radius: 6px; padding: 4px 9px;
    font-size: 11px; color: #6b7280; cursor: pointer;
    font-family: inherit; transition: background .12s; width: fit-content;
}
.tfa-copy-btn:hover[b-p2x88xy2dr] { background: #f3f4f6; color: #111827; }
.tfa-copy-btn i[b-p2x88xy2dr]     { font-size: 13px; }

.tfa-setup-notice[b-p2x88xy2dr] {
    display: flex; align-items: flex-start; gap: 8px;
    background: #fffbeb; border: .5px solid #fde68a;
    border-radius: 8px; padding: 9px 11px;
    font-size: 11.5px; color: #92400e; margin-bottom: 16px;
    line-height: 1.5;
}
.tfa-setup-notice i[b-p2x88xy2dr] { font-size: 15px; color: #d97706; flex-shrink: 0; margin-top: 1px; }

/* ════════════════════════════════
   VERIFY SECTION (timer + OTP)
════════════════════════════════ */
.tfa-verify-section[b-p2x88xy2dr] {
    background: #f8fafc;
    border: 1px solid #e8edf5;
    border-radius: 14px;
    padding: 16px 16px 14px;
    margin-bottom: 14px;
}

/* Timer pill */
.tfa-timer-pill[b-p2x88xy2dr] {
    display: flex; align-items: center; gap: 12px;
    margin-bottom: 16px; padding-bottom: 14px;
    border-bottom: 1px solid #e8edf5;
}
.tfa-timer-ring-wrap[b-p2x88xy2dr] {
    position: relative; width: 44px; height: 44px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
}
.tfa-timer-svg[b-p2x88xy2dr]   { width: 44px; height: 44px; transform: rotate(-90deg); display: block; position: absolute; inset: 0; }
.tfa-timer-track[b-p2x88xy2dr] { fill: none; stroke: #e2e8f0; stroke-width: 3.5; }
.tfa-timer-fill[b-p2x88xy2dr]  { fill: none; stroke-width: 3.5; stroke-linecap: round; transition: stroke-dasharray 1s linear, stroke .6s; }
.tfa-timer-num[b-p2x88xy2dr]   {
    font-size: 13px; font-weight: 800;
    font-family: 'Courier New', monospace;
    line-height: 1; position: relative; z-index: 1;
    transition: color .6s;
}
.tfa-timer-text[b-p2x88xy2dr]  { flex: 1; display: flex; flex-direction: column; gap: 5px; }
.tfa-timer-label[b-p2x88xy2dr] { font-size: 11.5px; font-weight: 600; transition: color .4s; }
.tfa-timer-bar-wrap[b-p2x88xy2dr] { height: 4px; border-radius: 3px; background: #e2e8f0; overflow: hidden; }
.tfa-timer-bar[b-p2x88xy2dr]   { height: 100%; border-radius: 3px; transition: width 1s linear, background .6s; }
.tfa-refresh-btn[b-p2x88xy2dr] {
    width: 30px; height: 30px; border-radius: 8px;
    border: 1px solid #e2e8f0; background: #fff;
    cursor: pointer; color: #6b7280; font-size: 14px;
    display: flex; align-items: center; justify-content: center;
    transition: background .12s; flex-shrink: 0;
}
.tfa-refresh-btn:hover:not(:disabled)[b-p2x88xy2dr] { background: #f1f5f9; color: #1a2537; }
.tfa-refresh-btn:disabled[b-p2x88xy2dr] { opacity: .4; cursor: not-allowed; }

/* OTP */
.tfa-otp-label[b-p2x88xy2dr] {
    font-size: 11px; font-weight: 600; color: #9ca3af;
    text-transform: uppercase; letter-spacing: .07em;
    margin-bottom: 10px;
}
.tfa-otp-row[b-p2x88xy2dr] {
    display: flex; align-items: center;
    justify-content: center; gap: 7px;
    margin-bottom: 10px;
}
.tfa-otp-sep[b-p2x88xy2dr] { font-size: 18px; color: #cbd5e1; margin: 0 2px; user-select: none; }
.tfa-otp-input[b-p2x88xy2dr] {
    width: 48px; height: 56px; border-radius: 12px;
    border: 1.5px solid #e2e8f0;
    background: #fff; color: #111827;
    font-size: 24px; font-weight: 700;
    text-align: center;
    font-family: 'Courier New', monospace;
    outline: none; caret-color: #1AB99A;
    transition: border-color .15s, background .15s, box-shadow .15s, transform .1s;
    animation: tfaBoxIn-b-p2x88xy2dr .35s cubic-bezier(.16,1,.3,1) both;
}
.tfa-otp-row input:nth-child(1)[b-p2x88xy2dr] { animation-delay: .03s; }
.tfa-otp-row input:nth-child(2)[b-p2x88xy2dr] { animation-delay: .07s; }
.tfa-otp-row input:nth-child(3)[b-p2x88xy2dr] { animation-delay: .11s; }
.tfa-otp-row input:nth-child(5)[b-p2x88xy2dr] { animation-delay: .17s; }
.tfa-otp-row input:nth-child(6)[b-p2x88xy2dr] { animation-delay: .21s; }
.tfa-otp-row input:nth-child(7)[b-p2x88xy2dr] { animation-delay: .25s; }
@keyframes tfaBoxIn-b-p2x88xy2dr {
    from { opacity: 0; transform: translateY(8px) scale(.9); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}
.tfa-otp-input[b-p2x88xy2dr]::placeholder { color: #d1d5db; font-size: 16px; }
.tfa-otp-input:focus[b-p2x88xy2dr] {
    border-color: #1AB99A;
    background: rgba(26,185,154,.05);
    box-shadow: 0 0 0 3px rgba(26,185,154,.15);
    transform: translateY(-2px) scale(1.05);
}
.tfa-inp-filled:not(:focus)[b-p2x88xy2dr] {
    border-color: rgba(26,185,154,.5);
    background: rgba(26,185,154,.04);
}
.tfa-inp-err[b-p2x88xy2dr] {
    border-color: #ef4444 !important;
    background: rgba(239,68,68,.05) !important;
    box-shadow: 0 0 0 3px rgba(239,68,68,.12) !important;
    color: #b91c1c !important;
    animation: tfaShake-b-p2x88xy2dr .42s ease !important;
    transform: none !important;
}
.tfa-inp-ok[b-p2x88xy2dr] {
    border-color: #1AB99A !important;
    background: rgba(26,185,154,.07) !important;
    box-shadow: 0 0 0 3px rgba(26,185,154,.15) !important;
    color: #065f46 !important;
}
.tfa-otp-input:disabled[b-p2x88xy2dr] { opacity: .4; cursor: not-allowed; transform: none !important; }

/* Fill dots */
.tfa-fill-track[b-p2x88xy2dr] { display: flex; justify-content: center; gap: 8px; }
.tfa-fill-dot[b-p2x88xy2dr]   {
    width: 6px; height: 6px; border-radius: 50%;
    background: #e2e8f0;
    transition: background .2s, transform .2s, box-shadow .2s;
}
.tfa-fill-on[b-p2x88xy2dr]              { background: #34d399 !important; transform: scale(1.3); box-shadow: 0 0 6px rgba(52,211,153,.5); }
.tfa-fill-err.tfa-fill-on[b-p2x88xy2dr] { background: #ef4444 !important; box-shadow: 0 0 6px rgba(239,68,68,.4) !important; }

/* ════════════════════════════════
   ALERTS
════════════════════════════════ */
.tfa-alert[b-p2x88xy2dr] {
    display: flex; align-items: center; gap: 9px;
    border-radius: 10px; padding: 10px 13px;
    font-size: 12.5px; font-weight: 500;
    margin-bottom: 12px;
    animation: tfaAlertIn-b-p2x88xy2dr .28s cubic-bezier(.16,1,.3,1) both;
}
@keyframes tfaAlertIn-b-p2x88xy2dr {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.tfa-alert i[b-p2x88xy2dr]    { font-size: 16px; flex-shrink: 0; }
.tfa-alert-err[b-p2x88xy2dr]  { background: rgba(239,68,68,.07); border: .5px solid rgba(239,68,68,.28); color: #b91c1c; }
.tfa-alert-ok[b-p2x88xy2dr]   { background: rgba(26,185,154,.07); border: .5px solid rgba(26,185,154,.28); color: #065f46; }

/* ════════════════════════════════
   VERIFY BUTTON
════════════════════════════════ */
.tfa-validate-btn[b-p2x88xy2dr] {
    width: 100%; height: 46px; border: none;
    border-radius: 12px; background: #e2e8f0; color: #9ca3af;
    font-size: 14px; font-weight: 700; cursor: not-allowed;
    display: flex; align-items: center; justify-content: center; gap: 8px;
    font-family: inherit; transition: all .2s; margin-bottom: 12px;
}
.tfa-btn-ready[b-p2x88xy2dr] {
    background: linear-gradient(135deg, #1AB99A, #0e8a73) !important;
    color: #fff !important; cursor: pointer !important;
    box-shadow: 0 6px 20px rgba(26,185,154,.3);
}
.tfa-btn-ready:hover[b-p2x88xy2dr]  { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(26,185,154,.4); }
.tfa-btn-ready:active[b-p2x88xy2dr] { transform: translateY(0); }
.tfa-btn-done[b-p2x88xy2dr] {
    background: linear-gradient(135deg, #059669, #064e3b) !important;
    color: #fff !important; cursor: default !important;
}
.tfa-validate-btn i[b-p2x88xy2dr] { font-size: 17px; }

.tfa-spin[b-p2x88xy2dr] { animation: tfaSpin-b-p2x88xy2dr .65s linear infinite; display: inline-block; }
@keyframes tfaSpin-b-p2x88xy2dr { to { transform: rotate(360deg); } }

.tfa-back-row[b-p2x88xy2dr] {
    display: flex; align-items: center; justify-content: center;
    gap: 5px; font-size: 12.5px; color: #9ca3af;
}
.tfa-back-row i[b-p2x88xy2dr]   { font-size: 12px; }
.tfa-back-row a[b-p2x88xy2dr]   { color: #1AB99A; text-decoration: none; font-weight: 600; }
.tfa-back-row a:hover[b-p2x88xy2dr] { color: #0e8a73; }

/* ════════════════════════════════
   RESPONSIVE
════════════════════════════════ */
@media (max-width: 960px) {
    .tfa-page[b-p2x88xy2dr]  { flex-direction: column; }
    .tfa-left[b-p2x88xy2dr]  { width: 100%; min-width: unset; }
    .tfa-left-inner[b-p2x88xy2dr] { padding: 1.75rem 1.5rem; }
    .tfa-right[b-p2x88xy2dr] { padding: 1.5rem 1rem; min-height: unset; }
    .tfa-card[b-p2x88xy2dr]  { max-width: 100%; }
    .tfa-setup-grid[b-p2x88xy2dr] { grid-template-columns: 1fr; }
}
@media (max-width: 420px) {
    .tfa-otp-input[b-p2x88xy2dr] { width: 42px; height: 50px; font-size: 20px; }
    .tfa-otp-row[b-p2x88xy2dr]   { gap: 5px; }
    .tfa-card[b-p2x88xy2dr]      { padding: 20px 16px 18px; border-radius: 14px; }
}
/* /Components/Pages/Utility/Utilities.razor.rz.scp.css */
.utl-page[b-cs16jhom5f] {
    --utl-accent: #1AB99A;
    --utl-accent-dark: #0d9480;
    --utl-text: #1e293b;
    --utl-muted: #64748b;
    --utl-border: #e2e8f0;
    --utl-danger: #dc2626;
    font-size: 13px;
    color: var(--utl-text);
    /* Same fix BSPL needed: lock the page to full viewport height and let
       only .utl-body scroll — otherwise the footer just sits wherever
       content ends instead of pinning to the bottom. DashboardLayout has
       no separate top header bar above @Body (sidebar's own GAINS toggle
       lives inside the sidebar, not a shared top bar), so no offset
       subtraction needed here. */
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

    .utl-page .bspl-title-block[b-cs16jhom5f] {
        padding-left: 24px;
        padding-right: 24px;
    }

    .utl-page .bspl-btnbar[b-cs16jhom5f] {
        background: #fff;
        padding: 10px 24px;
        gap: 8px;
    }

    .utl-page .bspl-title-block[b-cs16jhom5f],
    .utl-page .bspl-btnbar[b-cs16jhom5f],
    .utl-page .bspl-footer[b-cs16jhom5f] {
        flex-shrink: 0;
    }

/* bspl-title-block / bspl-btnbar / bspl-footer / bspl-foot-btn /
   bspl-gains-toggle / bspl-subtitle all come from common-page-chrome.css —
   same shared chrome BSPL/Daybook use, not redefined here. */

.utl-tab-btn[b-cs16jhom5f] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    border: 1px solid var(--utl-border);
    background: #fff;
    color: var(--utl-text);
    border-radius: 6px;
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
    transition: .12s;
}

    .utl-tab-btn i[b-cs16jhom5f] {
        color: var(--utl-muted);
    }

    .utl-tab-btn:hover[b-cs16jhom5f] {
        border-color: var(--utl-accent);
    }

.utl-tab-active[b-cs16jhom5f] {
    background: var(--utl-accent) !important;
    color: #fff !important;
    border-color: var(--utl-accent) !important;
    box-shadow: none;
}

    .utl-tab-active i[b-cs16jhom5f] {
        color: #fff !important;
    }

.utl-panel[b-cs16jhom5f] {
    max-width: 460px;
}

.utl-btn[b-cs16jhom5f] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--utl-accent);
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 10px 18px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: .12s;
    align-self: flex-start;
}

    .utl-btn:hover:not(:disabled)[b-cs16jhom5f] {
        background: var(--utl-accent-dark);
    }

    .utl-btn:disabled[b-cs16jhom5f] {
        background: #cbd5e1;
        cursor: not-allowed;
    }

.utl-body[b-cs16jhom5f] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 22px 24px;
}

.utl-card[b-cs16jhom5f] {
    background: #fff;
    border: 1px solid var(--utl-border);
    border-radius: 14px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    box-shadow: 0 1px 3px rgba(15,23,42,.04);
    transition: .12s;
}

    .utl-card:hover[b-cs16jhom5f] {
        border-color: #cbd5e1;
        box-shadow: 0 6px 18px rgba(15,23,42,.08);
    }

.utl-card-icon[b-cs16jhom5f] {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--utl-accent), var(--utl-accent-dark));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
}

.utl-card-body[b-cs16jhom5f] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.utl-card-title[b-cs16jhom5f] {
    font-size: 15px;
    font-weight: 700;
}

.utl-card-desc[b-cs16jhom5f] {
    color: var(--utl-muted);
    font-size: 12.5px;
    line-height: 1.5;
}

.utl-field-label[b-cs16jhom5f] {
    font-size: 11px;
    font-weight: 700;
    color: var(--utl-muted);
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-top: 4px;
}

.utl-input[b-cs16jhom5f] {
    border: 1px solid var(--utl-border);
    border-radius: 9px;
    padding: 9px 12px;
    font-size: 13px;
    background: #f8fafc;
    transition: .12s;
}

    .utl-input:focus[b-cs16jhom5f] {
        outline: none;
        border-color: var(--utl-accent);
        background: #fff;
    }

.utl-result[b-cs16jhom5f] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-radius: 9px;
    font-size: 12.5px;
    font-weight: 600;
    flex-wrap: wrap;
}

.utl-result-ok[b-cs16jhom5f] {
    background: #eafbf6;
    color: var(--utl-accent-dark);
}

.utl-result-err[b-cs16jhom5f] {
    background: #fef2f2;
    color: var(--utl-danger);
}

.utl-result-val[b-cs16jhom5f] {
    margin-left: auto;
    font-size: 13px;
    font-weight: 800;
}

@media (max-width: 600px) {
    .utl-body[b-cs16jhom5f] {
        padding: 16px;
    }
}
/* /Components/Shared/AddCustomerMini.razor.rz.scp.css */
/* =====================================================
   AddCustomerMini.razor.css
   Own --acm-* custom properties (same pattern as VoucherDocumentsPanel's
   --vdp-*) so this renders correctly no matter which page drops it in —
   no dependency on the host page's own CSS variables.
   ===================================================== */

.acm-overlay[b-mgehmwj15k] {
    position: fixed;
    inset: 0;
    background: rgba(15, 20, 30, .5);
    z-index: 1400;
}

.acm-card[b-mgehmwj15k] {
    --acm-accent: #1AB99A;
    --acm-accent-dark: #0d9480;
    --acm-border: #e2e8f0;
    --acm-text: #1e293b;
    --acm-muted: #475569;
    --acm-danger: #dc2626;
    --acm-danger-bg: #fef2f2;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(460px, 92vw);
    max-height: 88vh;
    overflow-y: auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .35);
    z-index: 1401;
    font-size: 13.5px;
    color: var(--acm-text);
}

.acm-hdr[b-mgehmwj15k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--acm-border);
    font-size: 17px;
    font-weight: 700;
}

.acm-x[b-mgehmwj15k] {
    background: none;
    border: none;
    font-size: 18px;
    color: var(--acm-muted);
    cursor: pointer;
    line-height: 1;
    padding: 4px;
}

    .acm-x:hover[b-mgehmwj15k] {
        color: var(--acm-danger);
    }

.acm-body[b-mgehmwj15k] {
    padding: 18px 20px 6px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.acm-field[b-mgehmwj15k] {
    display: grid;
    grid-template-columns: 120px 1fr;
    align-items: center;
    gap: 12px;
}

    .acm-field label[b-mgehmwj15k] {
        font-weight: 700;
        color: var(--acm-muted);
        font-size: 13px;
    }

.acm-req[b-mgehmwj15k] {
    color: var(--acm-danger);
    margin-left: 2px;
}

.acm-input[b-mgehmwj15k] {
    width: 100%;
    box-sizing: border-box;
    padding: 9px 12px;
    border: 1px solid var(--acm-border);
    border-radius: 6px;
    font-size: 13.5px;
    color: var(--acm-text);
}

    .acm-input:focus[b-mgehmwj15k] {
        outline: none;
        border-color: var(--acm-accent);
        box-shadow: 0 0 0 2px rgba(26, 185, 154, .15);
    }

.acm-invalid[b-mgehmwj15k] {
    border-color: var(--acm-danger) !important;
}

.acm-mobile-wrap[b-mgehmwj15k] {
    display: flex;
    gap: 8px;
}

.acm-isd[b-mgehmwj15k] {
    max-width: 56px;
    flex-shrink: 0;
    text-align: center;
    padding-left: 6px;
    padding-right: 6px;
}

.acm-msg[b-mgehmwj15k] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    border-radius: 6px;
    padding: 8px 12px;
}

.acm-msg-err[b-mgehmwj15k] {
    color: var(--acm-danger);
    background: var(--acm-danger-bg);
}

.acm-foot[b-mgehmwj15k] {
    display: flex;
    justify-content: flex-end;
    padding: 16px 20px;
    background: #f8fafc;
    border-top: 1px solid var(--acm-border);
    margin-top: 12px;
}

.acm-save-btn[b-mgehmwj15k] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 88px;
    height: 38px;
    padding: 0 20px;
    background: var(--acm-accent);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: .12s;
}

    .acm-save-btn:hover:not(:disabled)[b-mgehmwj15k] {
        background: var(--acm-accent-dark);
    }

    .acm-save-btn:disabled[b-mgehmwj15k] {
        background: #9fdcce;
        cursor: not-allowed;
    }

@media (max-width: 480px) {
    .acm-field[b-mgehmwj15k] {
        grid-template-columns: 1fr;
        gap: 6px;
    }
}
/* /Components/Shared/AddGeneralDocument.razor.rz.scp.css */
/* AddGeneralDocument — shared modal, matches legacy 417px popup */

.agd-overlay[b-vvw24nd4ad] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 190;
}

.agd-modal[b-vvw24nd4ad] {
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: min(440px, calc(100vw - 20px));
    background: #fff;
    border-radius: 6px;
    z-index: 200;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .3);
    font-size: 13px;
}

.agd-head[b-vvw24nd4ad] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    background: #306B9C;
    color: #fff;
    font-size: 14.5px;
}

.agd-x[b-vvw24nd4ad] {
    background: none;
    border: none;
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
}

.agd-body[b-vvw24nd4ad] {
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.agd-row[b-vvw24nd4ad] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.agd-row > label[b-vvw24nd4ad] {
    width: 35%;
    font-weight: 600;
    color: #374151;
    padding-top: 7px;
    margin: 0;
}

.agd-input[b-vvw24nd4ad] {
    flex: 1;
    height: 34px;
    padding: 4px 8px;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    font-size: 13px;
    color: #374151;
    background: #fff;
    outline: none;
    width: 65%;
}

.agd-input:focus[b-vvw24nd4ad] {
    border-color: #306B9C;
    box-shadow: 0 0 0 2px rgba(48, 107, 156, .15);
}

.agd-desc[b-vvw24nd4ad] {
    height: 90px;
    resize: none;
}

.agd-file[b-vvw24nd4ad] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.agd-file[b-vvw24nd4ad]  input[type="file"] {
    font-size: 12.5px;
    max-width: 100%;
}

.agd-filelist[b-vvw24nd4ad] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.agd-filechip[b-vvw24nd4ad] {
    background: #eef4f9;
    color: #306B9C;
    border-radius: 10px;
    padding: 1px 8px;
    font-size: 11.5px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.agd-msg[b-vvw24nd4ad] {
    padding: 8px 10px;
    border-radius: 4px;
    font-weight: 600;
}

.agd-msg-ok[b-vvw24nd4ad] {
    background: #ecfdf5;
    color: #15803d;
    border-left: 3px solid #15803d;
}

.agd-msg-error[b-vvw24nd4ad] {
    background: #fdf3f3;
    color: #c0392b;
    border-left: 3px solid #c0392b;
}

.agd-foot[b-vvw24nd4ad] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid #e5e7eb;
}

.agd-btn[b-vvw24nd4ad] {
    height: 32px;
    padding: 0 16px;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    background: #fff;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

.agd-btn:hover:not(:disabled)[b-vvw24nd4ad] {
    background: #f5f5f5;
}

.agd-btn:disabled[b-vvw24nd4ad] {
    opacity: .5;
    cursor: not-allowed;
}

.agd-btn-primary[b-vvw24nd4ad] {
    background: #306B9C;
    border-color: #306B9C;
    color: #fff;
}

.agd-btn-primary:hover:not(:disabled)[b-vvw24nd4ad] {
    background: #285a84;
}
/* /Components/Shared/AddOrderGeneralDocument.razor.rz.scp.css */
/* =====================================================
   AddOrderGeneralDocument.razor.css
   Styling ported 1:1 from VoucherDocumentsPanel.razor.css (same
   "Attached documents" card + table look, per the screenshot reference) —
   class names renamed to aogd-* (instead of vdp-*) since Blazor CSS
   isolation scopes each component's own stylesheet automatically, so
   there's no need to share the class names to get the same look.
   ===================================================== */

.aogd-card[b-vt9q02xi2h] {
    --aogd-accent: #1AB99A;
    --aogd-accent-dark: #0d9480;
    --aogd-accent-bg: #eafbf6;
    --aogd-border: #e2e8f0;
    --aogd-border-strong: #cbd5e1;
    --aogd-text: #1e293b;
    --aogd-muted: #64748b;
    --aogd-muted-light: #94a3b8;
    --aogd-danger: #dc2626;
    --aogd-danger-bg: #fef2f2;
    font-size: 13px;
    color: var(--aogd-text);
    background: #fafbfc;
    border: 1px solid var(--aogd-border);
    border-radius: 10px;
    padding: 18px 20px;
    margin-bottom: 16px;
}

.aogd-title[b-vt9q02xi2h] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14.5px;
    font-weight: 700;
    color: var(--aogd-text);
    margin-bottom: 16px;
}

    .aogd-title i[b-vt9q02xi2h] {
        color: var(--aogd-accent-dark);
    }

.aogd-infobar[b-vt9q02xi2h] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}

.aogd-info-box[b-vt9q02xi2h] {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1px solid var(--aogd-border);
    border-radius: 8px;
    padding: 10px 16px;
    flex: 1 1 160px;
    min-width: 140px;
}

.aogd-info-icon[b-vt9q02xi2h] {
    color: var(--aogd-accent-dark);
    font-size: 15px;
    flex-shrink: 0;
}

.aogd-info-label[b-vt9q02xi2h] {
    display: block;
    font-size: 10.5px;
    font-weight: 600;
    color: var(--aogd-muted-light);
    margin-bottom: 1px;
}

.aogd-info-val[b-vt9q02xi2h] {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--aogd-text);
}

.aogd-choosefile-row[b-vt9q02xi2h] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}

.aogd-fields-row[b-vt9q02xi2h] {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
}

.aogd-field[b-vt9q02xi2h] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1 1 220px;
    min-width: 160px;
}

.aogd-field-type[b-vt9q02xi2h] {
    flex: 0 1 200px;
}

.aogd-field-label[b-vt9q02xi2h] {
    font-size: 12px;
    color: var(--aogd-muted);
    font-weight: 600;
}

.aogd-file-btn[b-vt9q02xi2h] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    border: 1px solid var(--aogd-border-strong);
    border-radius: 8px;
    padding: 9px 16px;
    color: var(--aogd-text);
    cursor: pointer;
    white-space: nowrap;
    transition: .12s;
}

    .aogd-file-btn:hover[b-vt9q02xi2h] {
        border-color: var(--aogd-accent);
        color: var(--aogd-accent-dark);
    }

    .aogd-file-btn[b-vt9q02xi2h]  input[type="file"] {
        position: absolute;
        inset: 0;
        opacity: 0;
        cursor: pointer;
        width: 100%;
    }

.aogd-file-btn-disabled[b-vt9q02xi2h] {
    opacity: .5;
    cursor: not-allowed;
    pointer-events: none;
}

.aogd-file-name[b-vt9q02xi2h] {
    font-size: 12.5px;
    color: var(--aogd-muted);
}

.aogd-desc[b-vt9q02xi2h] {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--aogd-border-strong);
    border-radius: 8px;
    font-size: 13px;
}

.aogd-type-select[b-vt9q02xi2h] {
    width: 100%;
    height: 42px;
    padding: 4px 10px;
    border: 1px solid var(--aogd-border-strong);
    border-radius: 8px;
    font-size: 13px;
    color: var(--aogd-text);
    background: #fff;
}

.aogd-save-btn[b-vt9q02xi2h] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 1 1 200px;
    min-width: 160px;
    height: 42px;
    background: var(--aogd-accent);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: .12s;
}

    .aogd-save-btn:hover:not(:disabled)[b-vt9q02xi2h] {
        background: var(--aogd-accent-dark);
    }

    .aogd-save-btn:disabled[b-vt9q02xi2h] {
        background: #9fdcce;
        cursor: not-allowed;
    }

.aogd-cancel-btn[b-vt9q02xi2h] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    background: #fff;
    color: var(--aogd-muted);
    border: 1px solid var(--aogd-border-strong);
    border-radius: 8px;
    cursor: pointer;
    transition: .12s;
}

    .aogd-cancel-btn:hover[b-vt9q02xi2h] {
        border-color: var(--aogd-danger);
        color: var(--aogd-danger);
    }

.aogd-msg[b-vt9q02xi2h] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
}

.aogd-msg-ok[b-vt9q02xi2h] {
    color: var(--aogd-accent-dark);
    background: var(--aogd-accent-bg);
}

.aogd-msg-err[b-vt9q02xi2h] {
    color: var(--aogd-danger);
    background: var(--aogd-danger-bg);
}

.aogd-msg-info[b-vt9q02xi2h] {
    color: var(--aogd-muted);
    background: #f1f5f9;
}

.aogd-grid-wrap[b-vt9q02xi2h] {
    /* Outer border around the whole grid — hardcoded here (not
       var(--aogd-border)) because .aogd-grid-wrap is a sibling of
       .aogd-card, not a descendant, so it's outside the scope where that
       custom property is declared and the var() was silently resolving to
       nothing. Same reasoning for the other hardcoded colors below. */
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    overflow: auto;
}

.aogd-table[b-vt9q02xi2h] {
    width: 100%;
    border-collapse: collapse;
}

    .aogd-table thead th[b-vt9q02xi2h] {
        background: #306B9C;
        color: #fff;
        font-size: 12px;
        font-weight: 700;
        padding: 10px 8px;
        text-align: left;
    }

    /* Striped rows — even data rows get a light tint; thead isn't counted
       (nth-child counts among <tbody>'s own children only), and the
       single loading/empty-state row is always nth-child(1), i.e. odd, so
       it's never tinted. */
    .aogd-table tbody tr:nth-child(even)[b-vt9q02xi2h] {
        background: #f8fafc;
    }

    .aogd-table td[b-vt9q02xi2h] {
        padding: 8px;
        font-size: 12.5px;
        border-bottom: 1px solid #e2e8f0;
    }

.aogd-filename[b-vt9q02xi2h] {
    color: #0d9480;
    font-weight: 600;
}

.aogd-row-actions[b-vt9q02xi2h] {
    text-align: center;
}

    .aogd-row-actions button[b-vt9q02xi2h] {
        background: none;
        border: none;
        color: #64748b;
        cursor: pointer;
        font-size: 13px;
        padding: 3px 5px;
    }

        .aogd-row-actions button:hover[b-vt9q02xi2h] {
            color: #dc2626;
        }

.aogd-empty[b-vt9q02xi2h] {
    text-align: center;
    color: #94a3b8;
    font-size: 12.5px;
    padding: 20px !important;
}

@media (max-width: 767px) {
    .aogd-infobar[b-vt9q02xi2h] {
        flex-direction: column;
    }

    .aogd-info-box[b-vt9q02xi2h] {
        flex: 1 1 auto;
        width: 100%;
    }

    .aogd-fields-row[b-vt9q02xi2h] {
        flex-direction: column;
        align-items: stretch;
    }

    .aogd-save-btn[b-vt9q02xi2h],
    .aogd-cancel-btn[b-vt9q02xi2h] {
        width: 100%;
    }
}
/* /Components/Shared/Autofill/CustomerAutofill.razor.rz.scp.css */
.lga-wrap[b-hubm6nfrej] {
    position: relative;
    width: 100%;
}

.lga-spin[b-hubm6nfrej] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.lga-suggest[b-hubm6nfrej] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

.lga-suggest li[b-hubm6nfrej] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.lga-suggest li:hover[b-hubm6nfrej],
.lga-suggest li.active[b-hubm6nfrej] {
    background: #eef4fb;
}

.lga-suggest li.lga-empty[b-hubm6nfrej] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.lga-suggest li.lga-empty:hover[b-hubm6nfrej] {
    background: transparent;
}

.lga-name[b-hubm6nfrej] {
    font-weight: 500;
}
/* /Components/Shared/Autofill/InvItemAutofill.razor.rz.scp.css */
/* Components/Shared/InvItemAutofill.razor.css
   Self-contained tokens (doesn't rely on the host page defining --che-*/--iv-*
   vars) since this is a shared component used from multiple pages. */

.ia-wrap[b-948ollbsmo] {
    position: relative;
    display: block;
}

[b-948ollbsmo] input {
    /* Host pages normally pass InputClass to control this, but this is the
       fallback so the box never renders unstyled if InputClass is omitted. */
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid #e2e8f0;
    border-radius: 8px;
    font-size: 12.5px;
    font-family: inherit;
    background: #f8fafc;
    color: #1e293b;
    outline: none;
    transition: .12s;
    width: 100%;
    box-sizing: border-box;
}

    [b-948ollbsmo] input:focus {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

    [b-948ollbsmo] input:disabled {
        background: #f1f5f9;
        color: #94a3b8;
        cursor: not-allowed;
    }

.ia-spin[b-948ollbsmo] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
}

/* position:absolute here is only a pre-JS fallback (avoids a totally
   unstyled flash before script runs) — app.js's gainsWatchDropdown
   immediately overrides this to position:fixed with real pixel coordinates
   via inline style once OnAfterRenderAsync runs, which is what actually
   lets the list escape a scrollable/overflow ancestor or a CSS Grid/flex
   layout that would otherwise misplace a plain position:absolute dropdown
   (e.g. it rendering pinned to the bottom of the whole page inside
   OrderEntry's quick-add toolbar). Inline styles always win over these
   rules regardless of specificity. */
.ia-suggest[b-948ollbsmo] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 500;
    margin: 0;
    padding: 4px 0;
    list-style: none;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    max-height: 220px;
    overflow-y: auto;
    box-shadow: 0 10px 28px rgba(15,23,42,.12);
}

/* Hidden until app.js has computed the fixed top/left/width, so the list
   never flashes at its pre-JS fallback position for a frame. */
.ia-suggest-hidden[b-948ollbsmo] {
    visibility: hidden;
}

    .ia-suggest li[b-948ollbsmo] {
        padding: 8px 12px;
        cursor: pointer;
        font-size: 12.5px;
        color: #1e293b;
    }

        .ia-suggest li:hover[b-948ollbsmo],
        .ia-suggest li.active[b-948ollbsmo] {
            background: #eafbf6;
        }

    .ia-suggest li.ia-empty[b-948ollbsmo] {
        color: #94a3b8;
        cursor: default;
        font-style: italic;
    }

        .ia-suggest li.ia-empty:hover[b-948ollbsmo] {
            background: transparent;
        }

.ia-name[b-948ollbsmo] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Shared/Autofill/SchemeAutofill.razor.rz.scp.css */
[b-tc41x24y03] .ia-wrap {
    position: relative;
    width: 100%;
}

[b-tc41x24y03] .ia-spin {
    position: absolute;
    top: 50%;
    right: 10px;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 13px;
    pointer-events: none;
}

/* Normal document flow (not absolute/fixed) — sits right under the input
   as the next element, so it can never be clipped by a scrollable
   ancestor (e.g. a filter drawer's overflow-y:auto) and never ends up
   positioned somewhere disconnected from the input. Pushes whatever
   comes after it down while open, which is an acceptable trade for
   being simple and always correct. */
[b-tc41x24y03] .ia-suggest {
    margin: 4px 0 0;
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
    padding: 4px;
    list-style: none;
}

    [b-tc41x24y03] .ia-suggest li {
        display: block;
        width: 100%;
        text-align: left;
        padding: 7px 10px;
        font-size: 12.5px;
        color: #1a2537;
        cursor: pointer;
        border-radius: 5px;
    }

        [b-tc41x24y03] .ia-suggest li:hover,
        [b-tc41x24y03] .ia-suggest li.active {
            background: #f3fcf9;
        }

[b-tc41x24y03] .ia-empty {
    padding: 8px 10px;
    font-size: 12px;
    color: #94a3b8;
    cursor: default;
}

    [b-tc41x24y03] .ia-empty:hover {
        background: none;
    }
/* /Components/Shared/Autofill/VoucherLedgerItemAutofill.razor.rz.scp.css */
.lga-wrap[b-i5fvkffxjg] {
    position: relative;
    width: 100%;
}

.lga-spin[b-i5fvkffxjg] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

/* position:absolute here is only a pre-JS fallback (avoids a totally
   unstyled flash before script runs) — app.js's gainsWatchDropdown
   immediately overrides this to position:fixed with real pixel
   coordinates via inline style, which is what actually lets the list
   escape a scrollable/overflow ancestor (e.g. a table wrapper). Inline
   styles always win over these rules regardless of specificity. */
.lga-suggest[b-i5fvkffxjg] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 500;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

/* Hidden until app.js has computed the fixed top/left/width, so the list
   never flashes at its pre-JS fallback position for a frame. */
.lga-suggest-hidden[b-i5fvkffxjg] {
    visibility: hidden;
}

.lga-suggest li[b-i5fvkffxjg] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.lga-suggest li:hover[b-i5fvkffxjg],
.lga-suggest li.active[b-i5fvkffxjg] {
    background: #eef4fb;
}

.lga-suggest li.lga-empty[b-i5fvkffxjg] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.lga-suggest li.lga-empty:hover[b-i5fvkffxjg] {
    background: transparent;
}

.lga-name[b-i5fvkffxjg] {
    font-weight: 500;
}
/* /Components/Shared/BatchLotQtyModal.razor.rz.scp.css */
.blq-overlay[b-hr624q4nxj] {
    --blq-header-bg: #306B9C;
    --blq-border: #d7dde3;
    --blq-row-alt: #f4f6f8;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.35);
    align-items: flex-start;
    justify-content: center;
    z-index: 1050;
}

.blq-modal[b-hr624q4nxj] {
    background: #fff;
    width: 760px;
    max-width: 95vw;
    margin-top: 6vh;
    max-height: 82vh;
    border-radius: 4px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.25);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.blq-header[b-hr624q4nxj] {
    background: var(--blq-header-bg);
    color: #fff;
    padding: 8px 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 600;
    flex-shrink: 0;
}

.blq-close[b-hr624q4nxj] {
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
}

.blq-grid[b-hr624q4nxj] {
    width: 100%;
    border-collapse: collapse;
    flex: 1;
    overflow: auto;
    min-height: 0;
}

    .blq-grid thead th[b-hr624q4nxj] {
        background: var(--blq-header-bg);
        color: #fff;
        text-align: left;
        padding: 6px 8px;
        font-size: 13px;
        position: sticky;
        top: 0;
    }

    .blq-grid tbody td[b-hr624q4nxj] {
        padding: 6px 8px;
        border-bottom: 1px solid var(--blq-border);
        font-size: 13px;
    }

    .blq-grid tbody tr:nth-child(even)[b-hr624q4nxj] {
        background: var(--blq-row-alt);
    }

.blq-in[b-hr624q4nxj] {
    width: 100%;
    box-sizing: border-box;
    padding: 3px 5px;
    border: 1px solid var(--blq-border);
    border-radius: 3px;
    font-size: 13px;
}

.blq-num[b-hr624q4nxj] {
    text-align: right;
}

.blq-in:disabled[b-hr624q4nxj] {
    background: #eee;
    color: #888;
}

.blq-row-del[b-hr624q4nxj] {
    border: none;
    background: transparent;
    color: #c0392b;
    cursor: pointer;
    font-weight: 700;
}

.blq-add-btn[b-hr624q4nxj] {
    border: 1px solid var(--blq-header-bg);
    background: #fff;
    color: var(--blq-header-bg);
    border-radius: 3px;
    padding: 6px 14px;
    cursor: pointer;
}

.blq-loading[b-hr624q4nxj] {
    padding: 20px;
    text-align: center;
    color: #666;
}

.blq-footer[b-hr624q4nxj] {
    padding: 10px 12px;
    border-top: 1px solid var(--blq-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
}

.blq-set-btn[b-hr624q4nxj] {
    background: var(--blq-header-bg);
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 6px 28px;
    cursor: pointer;
    font-weight: 600;
    margin-left: auto;
}

.blq-error[b-hr624q4nxj] {
    color: #b91c1c;
    font-size: 12.5px;
    padding: 4px 12px 0;
    flex-shrink: 0;
}

/* ?? Header/body column alignment � headers were always left-aligned
   regardless of column type, so numeric columns (Qty/Qty1/Batch Qty/
   Batch Qty1) drifted left of their right-aligned data below them.
   th.blq-num needed (".blq-grid thead th" beats plain ".blq-num" on
   specificity otherwise, same reason ChallanGrid needed .db-table-th.ch-num). ?? */
.blq-grid thead th.blq-num[b-hr624q4nxj] {
    text-align: right;
}

.blq-center[b-hr624q4nxj] {
    text-align: center;
}

/* Right-align text typed into numeric inputs so it lines up under the
   right-aligned header/label cells beside it. */
.blq-num .blq-in[b-hr624q4nxj] {
    text-align: right;
}
/* /Components/Shared/CFGroup.razor.rz.scp.css */
/* Components/Shared/CFGroup.razor.css — copied from LedgerAutofill.razor.css
   (.lga-* -> .cfg-*), same visual language and fixed-position dropdown. */

.cfg-wrap[b-jylx2ni0oz] {
    position: relative;
    width: 100%;
}

/* Disabled look — CF01's CF Group filter is only enabled for GroupWise, but
   the shared masters-forms.css uf-input class has no :disabled rule of its
   own (only "select.uf-input:disabled" exists, which doesn't match this
   text <input>), so a disabled CFGroup looked identical to an enabled one.
   Scoped here (CSS isolation) rather than touching the shared uf-input rule
   globally. */
.cfg-wrap input.uf-input:disabled[b-jylx2ni0oz] {
    background: #f0f0f0;
    color: #999;
    cursor: not-allowed;
}

.cfg-spin[b-jylx2ni0oz] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

/* position:absolute here is only a pre-JS fallback (avoids a totally
   unstyled flash before script runs) — app.js's gainsWatchDropdown
   immediately overrides this to position:fixed with real pixel
   coordinates via inline style (same helper LedgerAutofill uses), which
   is what lets the list escape the mu-drawer's overflow. Inline styles
   always win over these rules regardless of specificity. */
.cfg-suggest[b-jylx2ni0oz] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    /* .mu-drawer (masters-forms.css) sits at z-index:1200 — this dropdown
       gets portalled to <body> by gainsWatchDropdown but still needs a
       z-index above the drawer panel it visually sits over, or the drawer
       paints on top of it despite correct fixed-position coordinates. */
    z-index: 1500;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

.cfg-suggest-hidden[b-jylx2ni0oz] {
    visibility: hidden;
}

.cfg-suggest li[b-jylx2ni0oz] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.cfg-suggest li:hover[b-jylx2ni0oz],
.cfg-suggest li.active[b-jylx2ni0oz] {
    background: #eef4fb;
}

.cfg-suggest li.cfg-empty[b-jylx2ni0oz] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.cfg-suggest li.cfg-empty:hover[b-jylx2ni0oz] {
    background: transparent;
}

.cfg-name[b-jylx2ni0oz] {
    font-weight: 500;
}
/* /Components/Shared/CFLedger.razor.rz.scp.css */
/* Components/Shared/CFLedger.razor.css — copied from LedgerAutofill.razor.css
   (.lga-* -> .cfl-*), same visual language and fixed-position dropdown. */

.cfl-wrap[b-9np62mj4i2] {
    position: relative;
    width: 100%;
}

/* Disabled look — CF01's Ledger filter is disabled for Comparison Rpt, but
   the shared masters-forms.css uf-input class has no :disabled rule of its
   own (only "select.uf-input:disabled" exists, which doesn't match this
   text <input>), so a disabled CFLedger looked identical to an enabled one.
   Scoped here (CSS isolation) rather than touching the shared uf-input rule
   globally — same fix as CFGroup.razor.css. */
.cfl-wrap input.uf-input:disabled[b-9np62mj4i2] {
    background: #f0f0f0;
    color: #999;
    cursor: not-allowed;
}

.cfl-spin[b-9np62mj4i2] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

/* position:absolute here is only a pre-JS fallback (avoids a totally
   unstyled flash before script runs) — app.js's gainsWatchDropdown
   immediately overrides this to position:fixed with real pixel
   coordinates via inline style (same helper LedgerAutofill uses), which
   is what lets the list escape the mu-drawer's overflow. Inline styles
   always win over these rules regardless of specificity. */
.cfl-suggest[b-9np62mj4i2] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    /* .mu-drawer (masters-forms.css) sits at z-index:1200 — this dropdown
       gets portalled to <body> by gainsWatchDropdown but still needs a
       z-index above the drawer panel it visually sits over, or the drawer
       paints on top of it despite correct fixed-position coordinates. */
    z-index: 1500;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

.cfl-suggest-hidden[b-9np62mj4i2] {
    visibility: hidden;
}

.cfl-suggest li[b-9np62mj4i2] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.cfl-suggest li:hover[b-9np62mj4i2],
.cfl-suggest li.active[b-9np62mj4i2] {
    background: #eef4fb;
}

.cfl-suggest li.cfl-empty[b-9np62mj4i2] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.cfl-suggest li.cfl-empty:hover[b-9np62mj4i2] {
    background: transparent;
}

.cfl-name[b-9np62mj4i2] {
    font-weight: 500;
}
/* /Components/Shared/CityStateCountryAutofill.razor.rz.scp.css */
/* Components/Shared/CityStateCountryAutofill.razor.css
   Mirrors LocationAutofill.razor.css's look (same suggestion-dropdown
   pattern) so this control blends in wherever it's dropped — the .uf-input
   class it defaults to (see wwwroot/CSS/masters-forms.css) already matches
   every other field on Mledger/MGroup/Mitem forms; this file only styles the
   parts specific to this component (the spinner and the suggestion list). */

.csa-wrap[b-6xdpr8fwhb] {
    position: relative;
    width: 100%;
}

.csa-spin[b-6xdpr8fwhb] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.csa-suggest[b-6xdpr8fwhb] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15,23,42,.16);
    max-height: 260px;
    overflow-y: auto;
}

    .csa-suggest li[b-6xdpr8fwhb] {
        display: flex;
        flex-direction: column;
        gap: 1px;
        padding: 7px 10px;
        border-radius: 6px;
        cursor: pointer;
        font-size: 13px;
        color: #1a2537;
    }

        .csa-suggest li:hover[b-6xdpr8fwhb],
        .csa-suggest li.active[b-6xdpr8fwhb] {
            background: #eef4fb;
        }

        .csa-suggest li.csa-empty[b-6xdpr8fwhb] {
            cursor: default;
            color: #94a3b8;
            font-size: 12.5px;
        }

.csa-name[b-6xdpr8fwhb] {
    font-weight: 500;
}
/* /Components/Shared/CollapsibleCard.razor.rz.scp.css */
/* Compact ERP-style collapsible section card — gradient header, chevron. */

.cc-card[b-3spza5bpf9] {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
    margin-bottom: 10px;
    overflow: hidden;
}

.cc-header[b-3spza5bpf9] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 36px;
    padding: 0 14px;
    border: none;
    border-bottom: 1px solid #e2e8f0;
    background-image: linear-gradient(to left, rgba(126,179,148,.2), rgba(126,179,148,0), rgba(126,179,148,0), rgba(130,202,215,.2));
    cursor: pointer;
    text-align: left;
}

.cc-header:focus-visible[b-3spza5bpf9] {
    outline: 2px solid #1ab99a;
    outline-offset: -2px;
}

.cc-title[b-3spza5bpf9] {
    font-family: "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: .8rem;
    font-weight: 600;
    color: #234;
    letter-spacing: .01em;
}

.cc-caret[b-3spza5bpf9] {
    color: #64748b;
    font-size: .72rem;
    transition: transform .15s ease;
}

.cc-body[b-3spza5bpf9] {
    padding: 12px 14px;
}
/* /Components/Shared/Dropdown/CFSiteList.razor.rz.scp.css */
/* Components/Shared/Dropdown/CFSiteList.razor.css
   Same visual language as DocumentTypeDropdown.razor.css's .dtd-select
   (border/radius/focus colors), applied to a toggle button + checkbox panel
   instead of a native <select> (multi-select needs the checkbox list). */

.cfsl-wrap[b-45xov9cc9e] {
    position: relative;
    width: 100%;
}

.cfsl-toggle[b-45xov9cc9e] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 10px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1e293b;
    background: #fff;
    border: 1.5px solid #cbd5e1;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color .12s, box-shadow .12s;
}

    .cfsl-toggle:hover[b-45xov9cc9e] {
        border-color: #94a3b8;
    }

    .cfsl-toggle:focus[b-45xov9cc9e] {
        outline: none;
        border-color: #14b8a6;
        box-shadow: 0 0 0 3px rgba(20, 184, 166, .15);
    }

    .cfsl-toggle:disabled[b-45xov9cc9e] {
        background-color: #f1f5f9;
        color: #94a3b8;
        cursor: not-allowed;
        opacity: .8;
    }

.cfsl-toggle-text[b-45xov9cc9e] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cfsl-caret[b-45xov9cc9e] {
    font-size: 10px;
    color: #64748b;
    flex: 0 0 auto;
    transition: transform .12s;
}

    .cfsl-caret.open[b-45xov9cc9e] {
        transform: rotate(180deg);
    }

.cfsl-panel[b-45xov9cc9e] {
    position: absolute;
    z-index: 40;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    min-width: 200px;
    background: #fff;
    border: 1.5px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .12);
    overflow: hidden;
}

.cfsl-panel-body[b-45xov9cc9e] {
    max-height: 220px;
    overflow-y: auto;
    padding: 4px 0;
}

.cfsl-item[b-45xov9cc9e] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    font-size: 12.5px;
    color: #1e293b;
    cursor: pointer;
}

    .cfsl-item:hover[b-45xov9cc9e] {
        background: #f1f5f9;
    }

    /* Reset — CFSiteList sits inside a "mu-fld" drawer field, and the
       global masters-forms.css rule ".mu-fld input, .mu-fld select" (meant
       for text/select inputs) matches this checkbox too by plain DOM
       descendant matching (Blazor's per-component CSS scoping doesn't
       block external unscoped rules), stamping it with width:100% /
       padding:8px 10px / border — that's the stretched-bar bug. Full
       explicit reset here beats that regardless of DOM nesting. */
    .cfsl-item input[type="checkbox"][b-45xov9cc9e] {
        appearance: checkbox;
        -webkit-appearance: checkbox;
        width: 16px;
        height: 16px;
        min-width: 16px;
        flex: 0 0 16px;
        margin: 0;
        padding: 0;
        border: 1px solid #cbd5e1;
        border-radius: 3px;
        background: #fff;
        cursor: pointer;
        accent-color: #14b8a6;
    }

.cfsl-selectall[b-45xov9cc9e] {
    border-bottom: 1px solid #e2e8f0;
    font-weight: 600;
    background: #f8fafc;
}

.cfsl-msg[b-45xov9cc9e] {
    padding: 10px 12px;
    font-size: 12.5px;
    color: #94a3b8;
}

.cfsl-msg-error[b-45xov9cc9e] {
    color: #c0392b;
}

.cfsl-panel-foot[b-45xov9cc9e] {
    border-top: 1px solid #e2e8f0;
    padding: 6px 10px;
    display: flex;
    justify-content: flex-end;
    background: #f8fafc;
}

.cfsl-done-btn[b-45xov9cc9e] {
    padding: 4px 14px;
    font-size: 12px;
    font-weight: 600;
    color: #fff;
    background: #14b8a6;
    border: none;
    border-radius: 6px;
    cursor: pointer;
}

    .cfsl-done-btn:hover[b-45xov9cc9e] {
        background: #0e9e83;
    }
/* /Components/Shared/Dropdown/DocumentTypeDropdown.razor.rz.scp.css */
/* Components/Shared/Dropdown/DocumentTypeDropdown.razor.css */

.dtd-select[b-mluhdlvwq2] {
    width: 100%;
    padding: 8px 30px 8px 10px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1e293b;
    background: #fff;
    border: 1.5px solid #cbd5e1;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color .12s, box-shadow .12s;

    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2364748b' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
}

    .dtd-select:hover[b-mluhdlvwq2] {
        border-color: #94a3b8;
    }

    .dtd-select:focus[b-mluhdlvwq2] {
        outline: none;
        border-color: #14b8a6;
        box-shadow: 0 0 0 3px rgba(20, 184, 166, .15);
    }

    .dtd-select:disabled[b-mluhdlvwq2] {
        background-color: #f1f5f9;
        color: #94a3b8;
        cursor: not-allowed;
        opacity: .8;
    }
/* /Components/Shared/FooterToolbar.razor.rz.scp.css */
/* Sticky bottom action bar shell. Buttons declared in the calling page get
   styled there (see SalesRepEdit.razor.css) — CSS isolation scopes them to
   that file, not this one. */

.ft-bar[b-skqp3yi2l7] {
    position: sticky;
    bottom: 0;
    left: 0;
    z-index: 20;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: #ffffff;
    border-top: 1px solid #e2e8f0;
    box-shadow: 0 -2px 6px rgba(15, 23, 42, .05);
}

@media (max-width: 576px) {
    .ft-bar[b-skqp3yi2l7] {
        justify-content: center;
    }
}
/* /Components/Shared/GreenCalendarPicker.razor.rz.scp.css */
/* Components/Shared/GreenCalendarPicker.razor.css
   Ported from GSINS_BS.aspx's .mainObject / .filterObject / .leftElement /
   .CalElement / .monthElement rules, then redesigned: the legacy layout used
   flex rows where each row's buttons stretched to fill available width, so a
   3-button row (Today/T-1/3D) and a 1-button row (Y) ended up with wildly
   different button sizes and nothing lined up into columns. Fixed-width
   buttons + a real divider fixes that while keeping the same left-buttons /
   right-month-grid shape. */

.gcp-wrap[b-rdwmybyczk] {
    position: relative;
    display: inline-flex;
    flex: 0 0 34px;
}

/* Proper icon-button box (matches the input's 34px height and the "C"
   clear-dates button next to it) instead of a bare floating icon with no
   visual weight of its own. */
.gcp-trigger[b-rdwmybyczk] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    cursor: pointer;
    transition: border-color .12s, background .12s;
}

    .gcp-trigger:hover[b-rdwmybyczk] {
        border-color: #1a56a7;
        background: #f7faff;
    }

.gcp-icon[b-rdwmybyczk] {
    width: 16px;
    height: 16px;
    vertical-align: middle;
}

.gcp-overlay[b-rdwmybyczk] {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: transparent;
}

/* Side-by-side layout (buttons left, month grid right), sized against the
   drawer's REAL usable width: .mu-drawer is a fixed 320px with 18px padding
   each side (masters-forms.css), leaving only 284px of content.

   Buttons size to their own label (auto width + nowrap) rather than one
   global fixed width — "Today" (5 chars) needs more room than "Q1" (2
   chars), and forcing every button to match "Today"'s width would blow the
   Q1-Q4 row (4 buttons) past the drawer's budget again. Auto-width still
   gives deterministic, consistent sizing per label (that's what actually
   fixes the original stretch-to-fill bug) without wasting space. */
.gcp-panel[b-rdwmybyczk] {
    position: fixed;
    z-index: 41;
    display: flex;
    align-items: stretch;
    gap: 10px;
    width: max-content;
    max-width: 284px;
    background: #fff;
    border: 1px solid #e2e5ea;
    border-radius: 10px;
    padding: 10px;
    font-family: 'Segoe UI', Arial, sans-serif;
    box-shadow: 0 14px 32px rgba(16, 24, 40, .16), 0 3px 8px rgba(16, 24, 40, .08);
}

/* One-frame gap between the panel first rendering (no position yet) and
   JS computing its real fixed top/right — hides it rather than letting it
   flash at whatever its un-positioned default box happens to be. */
.gcp-panel-hidden[b-rdwmybyczk] {
    visibility: hidden;
}

.gcp-left[b-rdwmybyczk] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding-right: 10px;
    border-right: 1px solid #e5e8ed;
}

.gcp-row[b-rdwmybyczk] {
    display: flex;
    gap: 4px;
}

/* box-sizing: border-box is the key fix here — without it, padding was
   being added ON TOP OF the fixed nth-child widths below (so a "40px"
   button was actually rendering wider than 40px), which is why earlier
   passes kept overflowing budget unpredictably. With border-box, the
   width values below ARE the final rendered width, padding included —
   sizing is now predictable, which is what let this pass safely use the
   leftover budget for bigger buttons instead of guessing. */
.gcp-btn[b-rdwmybyczk] {
    box-sizing: border-box;
    height: 28px;
    padding: 0 4px;
    white-space: nowrap;
    text-align: center;
    background: #f4f7fb;
    border: 1px solid transparent;
    color: #24518f;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    border-radius: 5px;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
}

/* Column 1: Today / W / M / Q1 / Y — "Today" is the widest label here */
.gcp-row .gcp-btn:nth-child(1)[b-rdwmybyczk] {
    width: 42px;
}

/* Column 2: T-1 / W-1 / M-1 / Q2 */
.gcp-row .gcp-btn:nth-child(2)[b-rdwmybyczk] {
    width: 32px;
}

/* Column 3: 3D / Q3 */
.gcp-row .gcp-btn:nth-child(3)[b-rdwmybyczk] {
    width: 27px;
}

/* Column 4: Q4 */
.gcp-row .gcp-btn:nth-child(4)[b-rdwmybyczk] {
    width: 24px;
}

.gcp-btn:hover[b-rdwmybyczk] {
    background: #e8f0fd;
    border-color: #bcd6f7;
    color: #1a56a7;
    box-shadow: 0 1px 3px rgba(26, 86, 167, .12);
}

.gcp-btn:active[b-rdwmybyczk] {
    background: #d7e6fb;
}

.gcp-right[b-rdwmybyczk] {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* No separate background/border container here anymore — the grey-box-
   holding-white-buttons look clashed with the flatter left side and made
   this read as two mismatched widgets glued together. Buttons now share
   the same fill color as .gcp-btn directly, so both halves read as one
   consistent set. */
.gcp-months[b-rdwmybyczk] {
    display: grid;
    grid-template-columns: repeat(3, 31px);
    gap: 4px;
}

.gcp-month[b-rdwmybyczk] {
    box-sizing: border-box;
    height: 28px;
    padding: 0 4px;
    white-space: nowrap;
    text-align: center;
    background: #f4f7fb;
    border: 1px solid transparent;
    color: #24518f;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    border-radius: 5px;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
}

    .gcp-month:hover[b-rdwmybyczk] {
        background: #e8f0fd;
        border-color: #bcd6f7;
        color: #1a56a7;
        box-shadow: 0 1px 3px rgba(26, 86, 167, .12);
    }

    .gcp-month:active[b-rdwmybyczk] {
        background: #d7e6fb;
    }
/* /Components/Shared/ItemAutofill.razor.rz.scp.css */
.ia-wrap[b-ryf4oe94f4] {
    position: relative;
    width: 100%;
}

.ia-spin[b-ryf4oe94f4] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.ia-suggest[b-ryf4oe94f4] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

.ia-suggest li[b-ryf4oe94f4] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.ia-suggest li:hover[b-ryf4oe94f4],
.ia-suggest li.active[b-ryf4oe94f4] {
    background: #eef4fb;
}

.ia-suggest li.ia-empty[b-ryf4oe94f4] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.ia-suggest li.ia-empty:hover[b-ryf4oe94f4] {
    background: transparent;
}

.ia-name[b-ryf4oe94f4] {
    font-weight: 500;
}
/* /Components/Shared/LedgerAutofill.razor.rz.scp.css */
.lga-wrap[b-ao5khswua8] {
    position: relative;
    width: 100%;
}

.lga-spin[b-ao5khswua8] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

/* position:absolute here is only a pre-JS fallback (avoids a totally
   unstyled flash before script runs) — app.js's gainsWatchDropdown
   immediately overrides this to position:fixed with real pixel
   coordinates via inline style, which is what actually lets the list
   escape a scrollable/overflow ancestor (e.g. a table wrapper). Inline
   styles always win over these rules regardless of specificity. */
.lga-suggest[b-ao5khswua8] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 1500;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

/* Hidden until app.js has computed the fixed top/left/width, so the list
   never flashes at its pre-JS fallback position for a frame. */
.lga-suggest-hidden[b-ao5khswua8] {
    visibility: hidden;
}

.lga-suggest li[b-ao5khswua8] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.lga-suggest li:hover[b-ao5khswua8],
.lga-suggest li.active[b-ao5khswua8] {
    background: #eef4fb;
}

.lga-suggest li.lga-empty[b-ao5khswua8] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}

.lga-suggest li.lga-empty:hover[b-ao5khswua8] {
    background: transparent;
}

.lga-name[b-ao5khswua8] {
    font-weight: 500;
}
/* /Components/Shared/LedgerViewPopup.razor.rz.scp.css */
.lvp-overlay[b-8v4tu8b23g] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    z-index: 1400;
}

.lvp-modal[b-8v4tu8b23g] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1401;
    width: 650px; /* roughly A4-portrait-at-screen-scale width */
    max-width: 95vw;
    height: 50vh;
    max-height: 800px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
 
.lvp-hdr[b-8v4tu8b23g] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 20px;
    background: #1a2537;
    color: #fff;
    flex-shrink: 0;
}

.lvp-x[b-8v4tu8b23g] {
    background: none;
    border: none;
    color: #fff;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
}

.lvp-body[b-8v4tu8b23g] {
    flex: 1;
    min-height: 0;
    padding: 0;
    background: #fff;
    display: flex;
    flex-direction: column;
}

.lvp-toolbar[b-8v4tu8b23g] {
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #eef2f7;
    flex-shrink: 0;
}

    .lvp-toolbar i[b-8v4tu8b23g] {
        margin-right: 14px;
        color: #555;
        cursor: pointer;
        font-size: 16px;
    }

        .lvp-toolbar i:hover[b-8v4tu8b23g] {
            color: #1565c0;
        }

    .lvp-toolbar a[b-8v4tu8b23g] {
        color: inherit;
        text-decoration: none;
    }

.lvp-frame[b-8v4tu8b23g] {
    flex: 1;
    width: 100%;
    border: none;
    background: #fff;
    display: block;
}

.lvp-status[b-8v4tu8b23g] {
    padding: 40px;
    text-align: center;
    color: #64748b;
}

.lvp-error[b-8v4tu8b23g] {
    color: #dc2626;
}
/* /Components/Shared/Loader.razor.rz.scp.css */
/* ================================================================
   GAINS Common Loader — Loader.razor.css
   Transparent overlay, GAINS logo centred inside a spinning ring.
================================================================ */

.gl-overlay[b-3cs277499y] {
    position: absolute;
    inset: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: center;
    /* Transparent background — only a faint frosted veil so the logo reads */
    background: rgba(255, 255, 255, 0.55);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

/* Cover the entire viewport when requested */
.gl-fullscreen[b-3cs277499y] {
    position: fixed;
}

.gl-box[b-3cs277499y] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
}

/* ── Spinner: ring rotates, logo stays still ── */
.gl-spinner[b-3cs277499y] {
    position: relative;
    width: 96px;
    height: 96px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gl-ring[b-3cs277499y] {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 4px solid transparent;
    /* Gradient ring matching the GAINS green→blue brand */
    border-top-color: #2ec27e;
    border-right-color: #1ab99a;
    border-bottom-color: #2176c7;
    animation: gl-spin-b-3cs277499y 0.9s linear infinite;
}

.gl-logo[b-3cs277499y] {
    width: 56px;
    height: 56px;
    object-fit: contain;
    background: transparent;          /* keep the PNG's own transparency */
    animation: gl-pulse-b-3cs277499y 1.6s ease-in-out infinite;
}

.gl-msg[b-3cs277499y] {
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 0.9rem;
    font-weight: 500;
    color: #334155;
    letter-spacing: 0.01em;
}

/* Visually-hidden text for screen readers */
.gl-sr[b-3cs277499y] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@keyframes gl-spin-b-3cs277499y {
    to { transform: rotate(360deg); }
}

@keyframes gl-pulse-b-3cs277499y {
    0%, 100% { transform: scale(1);    opacity: 1; }
    50%      { transform: scale(0.92); opacity: 0.8; }
}

@media (prefers-reduced-motion: reduce) {
    .gl-ring[b-3cs277499y] { animation-duration: 2s; }
    .gl-logo[b-3cs277499y] { animation: none; }
}
/* /Components/Shared/LocationAutofill.razor.rz.scp.css */
.loc-wrap[b-c4u23658a0] {
    position: relative;
    width: 100%;
}

.loc-spin[b-c4u23658a0] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.loc-suggest[b-c4u23658a0] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15,23,42,.16);
    max-height: 260px;
    overflow-y: auto;
}

    .loc-suggest li[b-c4u23658a0] {
        display: flex;
        flex-direction: column;
        gap: 1px;
        padding: 7px 10px;
        border-radius: 6px;
        cursor: pointer;
        font-size: 13px;
        color: #1a2537;
    }

        .loc-suggest li:hover[b-c4u23658a0],
        .loc-suggest li.active[b-c4u23658a0] {
            background: #eef4fb;
        }

        .loc-suggest li.loc-empty[b-c4u23658a0] {
            cursor: default;
            color: #94a3b8;
            font-size: 12.5px;
        }

.loc-name[b-c4u23658a0] {
    font-weight: 500;
}
/* /Components/Shared/LoginAutofill.razor.rz.scp.css */
.loa-wrap[b-8s490s9azt] {
    position: relative;
    width: 100%;
}

.loa-spin[b-8s490s9azt] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.loa-suggest[b-8s490s9azt] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
    max-height: 260px;
    overflow-y: auto;
}

    .loa-suggest li[b-8s490s9azt] {
        display: flex;
        flex-direction: column;
        gap: 1px;
        padding: 7px 10px;
        border-radius: 6px;
        cursor: pointer;
        font-size: 13px;
        color: #1a2537;
    }

        .loa-suggest li:hover[b-8s490s9azt],
        .loa-suggest li.active[b-8s490s9azt] {
            background: #eef4fb;
        }

        .loa-suggest li.loa-empty[b-8s490s9azt] {
            cursor: default;
            color: #94a3b8;
            font-size: 12.5px;
        }

            .loa-suggest li.loa-empty:hover[b-8s490s9azt] {
                background: transparent;
            }

        .loa-suggest li.loa-error[b-8s490s9azt] {
            color: #b91c1c;
            white-space: normal;
            word-break: break-word;
        }

.loa-name[b-8s490s9azt] {
    font-weight: 500;
}
/* /Components/Shared/MakeTrip.razor.rz.scp.css */
/* =====================================================================
   MakeTrip.razor.css
   This popup reuses the shared "uf-" modal/form classes (uf-overlay,
   uf-modal, uf-header, uf-body, uf-footer, uf-input, uf-btn, uf-check,
   uf-req, uf-err, uf-form-error, ...) from wwwroot/CSS/masters-forms.css —
   the same base MLoginEdit.razor builds on. Only this component's own
   layout specifics and small extras live here, same pattern as
   MLoginEdit.razor.css itself.
   ===================================================================== */

/* This form's own grid/section spacing (each uf- form defines these
   locally — see MLoginEdit.razor.css doing the same thing). */
.uf-grid[b-jiuopn3ivi] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 32px;
}

.uf-col[b-jiuopn3ivi] {
    display: flex;
    flex-direction: column;
}

.uf-field[b-jiuopn3ivi] {
    margin-bottom: 11px;
}

.uf-section[b-jiuopn3ivi] {
    margin: 18px 0 0;
}

/* ── Scroll/stacking fix ──
   Blazor CSS isolation scopes these rules to elements this component
   renders, so they can't affect uf-overlay/uf-modal anywhere else (e.g.
   MLoginEdit) — this only strengthens the Make Trip instance.

   The popup wasn't scrolling while ChallanGrid's filter drawer was open
   because that drawer's own fixed-position overlay was sitting above (or
   level with) this one, intercepting scroll input even though the Make
   Trip modal was visible on top. Pushing this instance's z-index well
   above anything else in the app, and making the header/footer stay put
   while only .uf-body scrolls, fixes both. */
.uf-overlay[b-jiuopn3ivi] {
    z-index: 9000;
}

.uf-modal[b-jiuopn3ivi] {
    z-index: 9001;
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}

.uf-body[b-jiuopn3ivi] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

/* Read-only Insurance "Value" figure — no input, just the computed amount. */
.mt-ins-value[b-jiuopn3ivi] {
    display: inline-block;
    padding-top: 6px;
    font-size: 12.5px;
    color: #1a2537;
}

@media (max-width: 700px) {
    .uf-grid[b-jiuopn3ivi] {
        grid-template-columns: 1fr;
        gap: 0;
    }
}
/* /Components/Shared/MiniItemEntry.razor.rz.scp.css */
.mie-overlay[b-9cwp9zfgac] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .45);
    align-items: flex-start;
    justify-content: center;
    padding-top: 60px;
    z-index: 1000;
}

.mie-modal[b-9cwp9zfgac] {
    background: #fff;
    width: 420px;
    max-width: calc(100vw - 32px);
    border-radius: 6px;
    box-shadow: 0 12px 32px rgba(15, 23, 42, .25);
    overflow: hidden;
}

.mie-header[b-9cwp9zfgac] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 700;
    color: #1a2537;
    border-bottom: 1px solid #e5e8ec;
}

.mie-close[b-9cwp9zfgac] {
    cursor: pointer;
    color: #64748b;
    font-size: 20px;
    line-height: 1;
}

    .mie-close:hover[b-9cwp9zfgac] {
        color: #1a2537;
    }

.mie-body[b-9cwp9zfgac] {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.mie-field[b-9cwp9zfgac] {
    display: flex;
    align-items: center;
    gap: 12px;
}

    .mie-field span[b-9cwp9zfgac] {
        flex: 0 0 110px;
        font-size: 13px;
        font-weight: 600;
        color: #1a56a7;
    }

.mie-in[b-9cwp9zfgac] {
    flex: 1;
    padding: 8px 12px;
    border: 1px solid #d5dae2;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1e293b;
    background: #fff;
    outline: none;
    transition: border-color .12s, box-shadow .12s;
}

    .mie-in:focus[b-9cwp9zfgac] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,.14);
    }

select.mie-in[b-9cwp9zfgac] {
    cursor: pointer;
}

.mie-error[b-9cwp9zfgac] {
    font-size: 12.5px;
    font-weight: 600;
    color: #dc2626;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 6px;
    padding: 8px 10px;
}

.mie-footer[b-9cwp9zfgac] {
    padding: 4px 20px 20px;
}

.mie-save-btn[b-9cwp9zfgac] {
    padding: 9px 26px;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 5px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .3px;
    cursor: pointer;
    transition: background .12s;
}

    .mie-save-btn:hover:not(:disabled)[b-9cwp9zfgac] {
        background: #0f9c81;
    }

    .mie-save-btn:disabled[b-9cwp9zfgac] {
        opacity: .6;
        cursor: not-allowed;
    }
/* /Components/Shared/MockLedgerSelect.razor.rz.scp.css */
/* Plain native <select> — deliberately minimal so the browser's own
   open-list rendering (full option list, no re-filtering by current value)
   matches the reference UI exactly. */
.mls-select[b-2hgbjbetnr] {
    width: 100%;
    max-width: 10cm;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .mls-select:focus[b-2hgbjbetnr] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
    }

    .mls-select:disabled[b-2hgbjbetnr] {
        background: #f1f5f9;
        color: #94a3b8;
        cursor: not-allowed;
    }
/* /Components/Shared/NavSection.razor.rz.scp.css */
.gl-ns[b-e51upb9o84] {
    margin: 2px 0;
}

.gl-ns-trigger[b-e51upb9o84] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px;
    background: none;
    border: none;
    cursor: pointer;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: rgba(255,255,255,0.5);
    text-align: left;
    transition: background 0.12s, color 0.12s;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

    .gl-ns-trigger:hover[b-e51upb9o84],
    .gl-ns-trigger.open[b-e51upb9o84] {
        color: rgba(255,255,255,0.85);
        background: rgba(255,255,255,0.04);
    }

.gl-ns-left[b-e51upb9o84] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.gl-ns-icon[b-e51upb9o84] {
    font-size: 15px;
    color: #1AB99A;
}

.gl-ns-chevron[b-e51upb9o84] {
    font-size: 13px;
    color: rgba(255,255,255,0.3);
    transition: transform 0.2s;
}

    .gl-ns-chevron.open[b-e51upb9o84] {
        transform: rotate(180deg);
    }

.gl-ns-children[b-e51upb9o84] {
    padding: 2px 0 4px;
}
/* /Components/Shared/NextGen/GKeyboardHelp.razor.rz.scp.css */
.gkh-overlay[b-wtl4ed3eho] {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(15, 23, 42, .45);
}
.gkh-modal[b-wtl4ed3eho] {
    width: 100%;
    max-width: 620px;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    font-family: 'Inter','Segoe UI',sans-serif;
}
.gkh-header[b-wtl4ed3eho] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 18px;
    border-bottom: 1px solid #e5e7eb;
    font-size: 14px;
    font-weight: 700;
    color: #111827;
}
.gkh-header i[b-wtl4ed3eho] { color: #1ab99a; margin-right: 5px; }
.gkh-close[b-wtl4ed3eho] { border: 0; background: none; color: #6b7280; font-size: 22px; line-height: 1; cursor: pointer; }
.gkh-body[b-wtl4ed3eho] { padding: 16px 18px; overflow-y: auto; }
.gkh-grid[b-wtl4ed3eho] { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; }
.gkh-row[b-wtl4ed3eho] { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 7px 9px; border: 1px solid #edf1ef; border-radius: 8px; background: #fbfcfc; }
.gkh-keys[b-wtl4ed3eho] { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.gkh-keys kbd[b-wtl4ed3eho] { min-width: 25px; padding: 3px 6px; border: 1px solid #d1d5db; border-bottom-width: 2px; border-radius: 5px; background: #fff; color: #374151; font: 600 11px 'Inter','Segoe UI',sans-serif; text-align: center; box-shadow: 0 1px 0 rgba(15,23,42,.04); }
.gkh-action[b-wtl4ed3eho] { color: #4b5563; font-size: 12px; text-align: right; }
.gkh-tip[b-wtl4ed3eho] { margin-top: 14px; padding: 9px 11px; border-radius: 8px; background: #f0fdf9; color: #45625a; font-size: 11px; line-height: 1.45; }
.gkh-tip i[b-wtl4ed3eho] { color: #0ea384; margin-right: 5px; }
@media (max-width: 700px) { .gkh-grid[b-wtl4ed3eho] { grid-template-columns: 1fr; } }
/* /Components/Shared/NextGen/GStatusBar.razor.rz.scp.css */
.gsb-bar[b-z7xqd8qhv6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 38px;
    margin: 10px 0 0;
    padding: 7px 12px;
    border: 1px solid #dfeae6;
    border-radius: 9px;
    background: #f8fbfa;
    color: #667771;
    font-family: 'Inter','Segoe UI',sans-serif;
    font-size: 11px;
}
.gsb-left[b-z7xqd8qhv6],.gsb-right[b-z7xqd8qhv6] { display:flex; align-items:center; gap:9px; min-width:0; }
.gsb-left strong[b-z7xqd8qhv6] { color:#25332f; font-size:11.5px; }
.gsb-indicator[b-z7xqd8qhv6] { width:8px; height:8px; border-radius:50%; flex:0 0 auto; background:#94a3b8; box-shadow:0 0 0 3px rgba(148,163,184,.13); }
.gsb-indicator.is-success[b-z7xqd8qhv6] { background:#10b981; box-shadow:0 0 0 3px rgba(16,185,129,.13); }
.gsb-indicator.is-warning[b-z7xqd8qhv6] { background:#f59e0b; box-shadow:0 0 0 3px rgba(245,158,11,.13); }
.gsb-divider[b-z7xqd8qhv6] { width:1px; height:16px; background:#dfe7e4; }
.gsb-hint[b-z7xqd8qhv6] { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gsb-help[b-z7xqd8qhv6] { display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border:1px solid #d7e5e0; border-radius:6px; background:#fff; color:#08765f; font:600 10.5px 'Inter','Segoe UI',sans-serif; cursor:pointer; white-space:nowrap; }
.gsb-help:hover[b-z7xqd8qhv6] { border-color:#1ab99a; background:#f0fdf9; }
@media (max-width:900px) { .gsb-bar[b-z7xqd8qhv6] { align-items:flex-start; flex-direction:column; gap:7px; } .gsb-right[b-z7xqd8qhv6] { width:100%; justify-content:space-between; } }
/* /Components/Shared/QgDatePicker.razor.rz.scp.css */
.qgdp-wrap[b-mfkp1nq8cc] {
    position: relative;
    display: flex;
    align-items: center;
    gap: 6px;
    border: 1px solid #d6dbe1;
    border-radius: 4px;
    background: #fff;
    padding: 5px 8px;
    font-size: 13px;
}

.qgdp-icon-btn[b-mfkp1nq8cc] {
    border: none;
    background: none;
    padding: 0;
    display: flex;
    align-items: center;
    cursor: pointer;
    color: #b3261e;
    width: 16px;
    height: 16px;
}

.qgdp-icon-btn svg[b-mfkp1nq8cc] {
    width: 16px;
    height: 16px;
}

.qgdp-display[b-mfkp1nq8cc] {
    cursor: pointer;
    color: #333;
    white-space: nowrap;
    user-select: none;
}

.qgdp-overlay[b-mfkp1nq8cc] {
    position: fixed;
    inset: 0;
    z-index: 1400;
    background: transparent;
}

.qgdp-popup[b-mfkp1nq8cc] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1401;
    background: #fff;
    border: 1px solid #d6dbe1;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.15);
    padding: 10px;
    width: 260px;
}

.qgdp-hdr[b-mfkp1nq8cc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.qgdp-title[b-mfkp1nq8cc] {
    font-weight: 600;
    color: #1a56a7;
    font-size: 13px;
}

.qgdp-nav[b-mfkp1nq8cc] {
    border: none;
    background: none;
    cursor: pointer;
    font-size: 15px;
    color: #1a56a7;
    padding: 2px 6px;
    border-radius: 4px;
}

.qgdp-nav:hover[b-mfkp1nq8cc] {
    background: #eef3fb;
}

.qgdp-grid[b-mfkp1nq8cc] {
    width: 100%;
    border-collapse: collapse;
}

.qgdp-grid th[b-mfkp1nq8cc] {
    font-size: 11px;
    color: #8a94a6;
    font-weight: 600;
    padding: 2px 0;
    text-align: center;
}

.qgdp-wk[b-mfkp1nq8cc] {
    font-size: 10px;
    color: #b0b7c3;
    text-align: center;
    width: 20px;
}

.qgdp-grid td[b-mfkp1nq8cc] {
    text-align: center;
    padding: 1px;
}

.qgdp-day[b-mfkp1nq8cc] {
    width: 26px;
    height: 26px;
    border: none;
    background: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 12px;
    color: #333;
}

.qgdp-day:hover[b-mfkp1nq8cc] {
    background: #eef3fb;
}

.qgdp-outside[b-mfkp1nq8cc] {
    color: #c4c9d2;
}

.qgdp-today[b-mfkp1nq8cc] {
    font-weight: 700;
    color: #1a56a7;
}

.qgdp-selected[b-mfkp1nq8cc] {
    background: #1a56a7 !important;
    color: #fff !important;
    font-weight: 600;
}

.qgdp-foot[b-mfkp1nq8cc] {
    display: flex;
    justify-content: flex-end;
    margin-top: 6px;
    border-top: 1px solid #eef1f4;
    padding-top: 6px;
}

.qgdp-today-btn[b-mfkp1nq8cc] {
    border: none;
    background: none;
    color: #1ab394;
    font-weight: 600;
    font-size: 12px;
    cursor: pointer;
}

.qgdp-today-btn:hover[b-mfkp1nq8cc] {
    text-decoration: underline;
}
/* /Components/Shared/Registergridshared.razor.rz.scp.css */
/* =====================================================================
   GAINS — RegisterGridShared.razor.css   (page-scoped, child component
   rendered inside SalesRegister.razor / PurchaseRegister.razor)

   Base look already loaded GLOBALLY, do NOT redefine here:
     - masters-forms.css   → mu-* grid/table/pager/drawer/toast system,
                              uf-* modal system, bspl-*/

gl-* page chrome[b-dj50c8u2oa],
gdp-* datepicker[b-dj50c8u2oa], gn-* nav loader
This file adds ONLY:
(a) .ql-* classes — these come from QLedger.razor.css[b-dj50c8u2oa], but Blazor
CSS isolation scopes a .razor.css file to only that component's
own rendered markup. QLedger's .ql-* rules never reach this
component even though the class names match[b-dj50c8u2oa], so every .ql-*
class used in this component's markup needs its own copy here
(same reasoning, same copied rules, as Registers.razor.css).
(b) a handful of small overrides on top of masters-forms.css's
global .mu-table / .mu-card / .mu-table-wrap so this page's
grid fills the available height instead of the default fixed
540px card (same "sizing chain" override Registers.razor.css
         and QLedger.razor.css both carry).
(c) spr-* — genuinely new to this page (AC-redirect button, the
         Summary options popup).
===================================================================== */
/* ── Tabs / section pills (Purchase Reg / Sales Reg / Stock Reg / Summary) ── */
.ql-sections[b-dj50c8u2oa] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0px 0px 0px 10px;
}

.ql-section[b-dj50c8u2oa] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 6px;
    border: 1px solid #dde3ed;
    background: #fff;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 400;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-family: inherit;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .ql-section i[b-dj50c8u2oa] {
        font-size: 15px;
    }

    .ql-section:hover[b-dj50c8u2oa] {
        background: #f1f5f9;
        color: #1a2537;
    }

    .ql-section.active[b-dj50c8u2oa] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

.ql-body[b-dj50c8u2oa] {
    display: flex;
    gap: 16px;
    align-items: stretch;
    overflow: hidden;
}

.ql-vnum[b-dj50c8u2oa] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .ql-vnum:hover[b-dj50c8u2oa] {
        text-decoration: underline;
    }

/* Empty / error states */
.ql-empty-state[b-dj50c8u2oa] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .ql-empty-state p[b-dj50c8u2oa] {
        margin: 4px 0;
    }

    .ql-empty-state strong[b-dj50c8u2oa] {
        color: #1a2537;
    }

.ql-error[b-dj50c8u2oa] {
    color: #dc2626;
}

.ql-field[b-dj50c8u2oa] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

.ql-led-row[b-dj50c8u2oa] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-dj50c8u2oa] {
        flex: 1;
        min-width: 0;
    }

.ql-led-pick[b-dj50c8u2oa] {
    cursor: pointer;
    background: #fff;
}

.ql-led-btn[b-dj50c8u2oa] {
    flex: 0 0 36px;
    border-radius: 8px;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}

    .ql-led-btn:hover[b-dj50c8u2oa] {
        background: #0f3d82;
    }

/* ── Party (ledger) picker popup: QL additions over global uf-modal ── */
.ql-lp-overlay[b-dj50c8u2oa] {
    z-index: 1300;
}

.ql-lp-modal[b-dj50c8u2oa] {
    max-width: 760px;
    max-height: 80vh;
}

.ql-modal-search[b-dj50c8u2oa] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .ql-modal-search .uf-input[b-dj50c8u2oa] {
        flex: 1 1 auto;
        min-width: 0;
    }

.ql-lp-code[b-dj50c8u2oa] {
    flex: 0 1 120px !important;
}

.ql-modal-body[b-dj50c8u2oa] {
    flex: 1;
    overflow-y: auto;
}

.ql-lp-row[b-dj50c8u2oa] {
    cursor: pointer;
}

.ql-lp-idx[b-dj50c8u2oa] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-dj50c8u2oa] {
    color: #1a56a7;
    font-weight: 600;
}

.ql-lp-name[b-dj50c8u2oa] {
    color: #1a56a7;
    font-weight: 500;
}

/* =====================================================================
   Sizing chain — same fix as Registers.razor.css / QLedger.razor.css.
   masters-forms.css's global .mu-table-wrap gives it a fixed 540px
   height; this overrides that so the whole .mu-page → .ql-body →
   .mu-card → .mu-table-wrap chain instead fills available height as a
   flex column, with only .mu-table-wrap scrolling.
   ===================================================================== */
.mu-page[b-dj50c8u2oa] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100vh;
}

.ql-body[b-dj50c8u2oa] {
    flex: 1;
    min-height: 0;
}

    .ql-body .mu-card[b-dj50c8u2oa] {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
        overflow: hidden;
    }

    .ql-body .mu-table-wrap[b-dj50c8u2oa] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

.mu-table thead th[b-dj50c8u2oa] {
    position: sticky;
    z-index: 3;
}

/* Two-row thead (plain header row, or "Taxes" colspan + CGST/SGST/IGST
   row underneath it): row 1 sticks at top:0 same as before. Row 2 needs
   an offset equal to row 1's height, or it sticks at top:0 too and ends
   up overlapping/hidden behind row 1's rowspan="2" cells on scroll —
   that's the bug in the screenshot. :not(:first-child) only ever matches
   when a second row genuinely exists, so single-row tables (no tax
   columns) are unaffected. */
.mu-table thead tr:first-child th[b-dj50c8u2oa] {
    top: 0;
    height: 40px;
}

.mu-table thead tr:not(:first-child) th[b-dj50c8u2oa] {
    top: 40px;
}

.mu-table tfoot td[b-dj50c8u2oa] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #fbfcfe;
}

/* ── Amount column formatting — masters-forms.css has no .num/.cr
   convention, so this grid's numeric columns need it defined here ── */
.mu-table thead th.num[b-dj50c8u2oa] {
    text-align: right;
}

.mu-table td.num[b-dj50c8u2oa] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.spr-tax-group[b-dj50c8u2oa] {
    text-align: center;
}

.mu-total-row[b-dj50c8u2oa] {
    height: 40px;
    background: #fff;
}

/* Fixed page footer — not global; QLedger-specific sticky-footer behavior */
.ql-footer-fixed[b-dj50c8u2oa] {
    position: sticky;
    bottom: 0;
    z-index: 60;
    background: #fff;
    border-top: 1px solid #dde3ed;
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
    flex-shrink: 0;
}

/* =====================================================================
   New to this page (not in masters-forms.css or QLedger.razor.css)
   ===================================================================== */

/* "A/C Purchase Register" — sits apart from the ql-section tab pills,
   matches the white icon-button style in the reference screenshot */
.spr-ac-btn[b-dj50c8u2oa] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1px solid #dde3ed;
    color: #1a2537;
    font-weight: 600;
    font-size: 12.5px;
}

    .spr-ac-btn i[b-dj50c8u2oa] {
        color: #1ab99a;
    }

    .spr-ac-btn:hover[b-dj50c8u2oa] {
        background: #f3f4f6;
    }

/* Summary options popup (matches the stacked-button screenshot) */
.spr-summary-modal[b-dj50c8u2oa] {
    width: min(280px, 90vw);
}

.spr-summary-list[b-dj50c8u2oa] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 20px;
}

.spr-summary-btn[b-dj50c8u2oa] {
    padding: 12px 16px;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    background: #fff;
    color: #1a2537;
    font-size: 13px;
    font-weight: 500;
    text-align: center;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease;
}

    .spr-summary-btn:hover[b-dj50c8u2oa] {
        background: #f1f5f9;
        border-color: #1ab99a;
    }

/* ── VNum cell: small voucher-type color square + the drill-to-ledger link ── */
.ql-vnum-cell[b-dj50c8u2oa] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.ql-vsquare-btn[b-dj50c8u2oa] {
    flex: 0 0 10px;
    width: 10px;
    height: 10px;
    padding: 0;
    border: none;
    border-radius: 2px;
    cursor: pointer;
}

    .ql-vsquare-btn:hover[b-dj50c8u2oa] {
        outline: 2px solid rgba(0, 0, 0, 0.15);
        outline-offset: 1px;
    }

/* ── Voucher detail popup ── */
.spr-voucher-modal[b-dj50c8u2oa] {
    width: min(360px, 90vw);
}

.spr-voucher-body[b-dj50c8u2oa] {
    display: flex;
    flex-direction: column;
    padding: 8px 22px 18px;
}

.spr-voucher-row[b-dj50c8u2oa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px solid #eef2f7;
    font-size: 13px;
}

    .spr-voucher-row:last-child[b-dj50c8u2oa] {
        border-bottom: none;
    }

    .spr-voucher-row span[b-dj50c8u2oa] {
        color: #64748b;
    }

    .spr-voucher-row strong[b-dj50c8u2oa] {
        color: #1a2537;
        text-align: right;
    }

/* ── Purchase Register theming — maroon header/footer instead of the
   default teal-blue (HomeMode="PUR" adds .spr-maroon on the root div).
   Targets td directly: masters-forms.css's .mu-table tfoot td already
   sets its own background, and a per-cell background always wins over
   a row (tr) background — so this must override at the td level too,
   not just the tr, or the footer color silently does nothing. ── */
.spr-maroon .mu-table thead th[b-dj50c8u2oa] {
    background: #800000;
    color: #fff;
}

.spr-maroon .mu-table tfoot td[b-dj50c8u2oa] {
    background: #800000;
    color: #fff;
}
/* /Components/Shared/Reports/Report24Q.razor.rz.scp.css */
.rpt24q-wrap[b-1fypeqz2l6] {
    padding: 24px;
    font-family: Arial, sans-serif;
    font-size: 13px;
    color: #000;
    background: #fff;
}

.rpt24q-header[b-1fypeqz2l6] {
    text-align: center;
    position: relative;
    margin-bottom: 16px;
}

    .rpt24q-header h2[b-1fypeqz2l6] {
        margin: 0;
    }

.rpt24q-print-btn[b-1fypeqz2l6] {
    position: absolute;
    left: 0;
    top: 0;
    background: none;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    padding: 6px 10px;
    cursor: pointer;
}

.rpt24q-bold[b-1fypeqz2l6] {
    font-weight: 700;
    text-align: center;
    margin: 4px 0;
}

.rpt24q-particulars[b-1fypeqz2l6] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 16px;
}

.rpt24q-srno[b-1fypeqz2l6] {
    width: 30px;
    vertical-align: top;
    font-weight: 700;
    padding-top: 6px;
}

.rpt24q-section-title[b-1fypeqz2l6] {
    font-weight: 600;
    padding-bottom: 6px;
}

.rpt24q-subtable[b-1fypeqz2l6] {
    width: 100%;
    border-collapse: collapse;
}

    .rpt24q-subtable td[b-1fypeqz2l6] {
        padding: 4px 0;
        vertical-align: middle;
        border-top: 1px solid #eee;
    }

.rpt24q-label[b-1fypeqz2l6] {
    width: 260px;
    font-size: 12.5px;
    color: #333;
}

.rpt24q-boxtable[b-1fypeqz2l6] {
    border-collapse: collapse;
}

.rpt24q-box[b-1fypeqz2l6] {
    width: 22px;
    height: 26px;
    border: 1px solid #333;
    text-align: center;
    font-size: 13px;
    font-family: monospace;
}
/* /Components/Shared/Reports/TdsFormHeader.razor.rz.scp.css */
.rpt24q-wrap[b-63uqjnc9mf] {
    padding: 24px;
    font-family: Arial, sans-serif;
    font-size: 13px;
    color: #000;
    background: #fff;
}

.rpt24q-header[b-63uqjnc9mf] {
    text-align: center;
    position: relative;
    margin-bottom: 16px;
}

    .rpt24q-header h2[b-63uqjnc9mf] {
        margin: 0;
    }

.rpt24q-print-btn[b-63uqjnc9mf] {
    position: absolute;
    left: 0;
    top: 0;
    background: none;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    padding: 6px 10px;
    cursor: pointer;
}

.rpt24q-bold[b-63uqjnc9mf] {
    font-weight: 700;
    text-align: center;
    margin: 4px 0;
}

.rpt24q-particulars[b-63uqjnc9mf] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 16px;
}

.rpt24q-srno[b-63uqjnc9mf] {
    width: 30px;
    vertical-align: top;
    font-weight: 700;
    padding-top: 6px;
}

.rpt24q-section-title[b-63uqjnc9mf] {
    font-weight: 600;
    padding-bottom: 6px;
}

.rpt24q-subtable[b-63uqjnc9mf] {
    width: 100%;
    border-collapse: collapse;
}

    .rpt24q-subtable td[b-63uqjnc9mf] {
        padding: 4px 0;
        vertical-align: middle;
        border-top: 1px solid #eee;
    }

.rpt24q-label[b-63uqjnc9mf] {
    width: 260px;
    font-size: 12.5px;
    color: #333;
}

.rpt24q-boxtable[b-63uqjnc9mf] {
    border-collapse: collapse;
}

.rpt24q-box[b-63uqjnc9mf] {
    width: 22px;
    height: 26px;
    border: 1px solid #333;
    text-align: center;
    font-size: 13px;
    font-family: monospace;
}
/* /Components/Shared/SearchBar.razor.rz.scp.css */
/* SearchBar.razor.css — plain textbox + teal GO button, matches the legacy
   TaxClass Master search box exactly (no icon, no live search). */

.tcm-search[b-3elzq7u522] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.tcm-search-input[b-3elzq7u522] {
    width: 220px;
    max-width: 100%;
    padding: 6px 10px;
    border: 1px solid #ccc;
    border-radius: 3px;
    font-size: 13px;
    color: #333;
    font-family: inherit;
    outline: none;
    background: #fff;
}

    .tcm-search-input:focus[b-3elzq7u522] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.15);
    }

.tcm-go-btn[b-3elzq7u522] {
    padding: 6px 18px;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    background: #1ab99a;
    border: none;
    border-radius: 3px;
    cursor: pointer;
}

    .tcm-go-btn:hover[b-3elzq7u522] {
        background: #159a80;
    }

@media (max-width: 480px) {
    .tcm-search[b-3elzq7u522] {
        flex-wrap: wrap;
    }

    .tcm-search-input[b-3elzq7u522] {
        width: 100%;
    }
}
/* /Components/Shared/SmDateInput.razor.rz.scp.css */
/* SmDateInput.razor.css — text-display + invisible-native-picker overlay.
   .sm-date-native is stacked exactly on top of .sm-date-display, fully
   transparent, and still clickable/tappable/keyboard-focusable —
   clicking it opens the OS date picker like before, only the digits you
   actually see come from .sm-date-display's "dd-MMM-yyyy" text.

   Bug: .sm-date-display also carries the host page's "smx-input" class,
   but that class's actual font-size/height/padding rule lives in each
   host page's OWN .razor.css (e.g. SiteMaster.razor.css) — Blazor CSS
   isolation scopes that rule to elements the HOST page renders directly,
   and never reaches in here since this input is rendered by SmDateInput,
   a different component. So it silently fell through to the browser/
   Bootstrap default (~16px) while every other smx-input field sat at
   14px — same story for height/padding/border. Baking the exact spec
   here, self-contained, fixes it for every page that uses this shared
   component, not just Site Master. */
.sm-date-wrap[b-v1s2t1u791] {
    position: relative;
    display: block;
}

.sm-date-display[b-v1s2t1u791] {
    width: 100%;
    height: 36px;
    box-sizing: border-box;
    font-size: 14px;
    font-family: inherit;
    color: #37474f;
    border: 1px solid #cfd6dd;
    border-radius: 6px;
    padding: 7px 30px 7px 12px; /* room on the right so text never sits under the icon */
    box-shadow: none;
    cursor: pointer;
    background-color: #fff;
}

/* Old UI (jQuery datepicker) had a visible calendar-icon button next to
   the field. opacity:0 on the WHOLE native input hid that icon along
   with everything else — clicking the field still opened the OS
   picker, but there was no visible affordance for it. Fix: hide only
   the native input's own text (color: transparent) and keep its
   built-in calendar-picker icon visible + clickable, positioned at the
   right edge like the old icon button was. Chromium/Edge-specific
   (::-webkit-calendar-picker-indicator) — this is the browser this app
   targets; Firefox/Safari fall back to the whole field being clickable
   with no visible icon, same as before. */
.sm-date-native[b-v1s2t1u791] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0 8px 0 0;
    border: 0;
    background: transparent;
    color: transparent;
    cursor: pointer;
}

    .sm-date-native[b-v1s2t1u791]::-webkit-calendar-picker-indicator {
        opacity: 1;
        cursor: pointer;
        padding: 4px;
    }
/* /Components/Shared/UntaggedFilesPopup.razor.rz.scp.css */
.uf-overlay[b-b4k774xcuw] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .5);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3vh 16px;
    z-index: 2000;
}

.uf-modal[b-b4k774xcuw] {
    --uf-accent: #1AB99A;
    --uf-accent-dark: #0d9480;
    --uf-danger: #dc2626;
    --uf-text: #1e293b;
    --uf-muted: #64748b;
    width: 720px;
    max-width: 100%;
    max-height: 90vh;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, .35);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    font-size: 13px;
    color: var(--uf-text);
}

.uf-hdr[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px;
    background: linear-gradient(135deg, var(--uf-accent), var(--uf-accent-dark));
    color: #fff;
    flex-shrink: 0;
}

.uf-hdr-title[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 15.5px;
    font-weight: 700;
}

.uf-close[b-b4k774xcuw] {
    background: rgba(255,255,255,.18);
    border: none;
    color: #fff;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    transition: .12s;
}
.uf-close:hover[b-b4k774xcuw] { background: rgba(255,255,255,.32); }

.uf-body[b-b4k774xcuw] {
    padding: 18px 22px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.uf-filters[b-b4k774xcuw] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.uf-field[b-b4k774xcuw] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.uf-field label[b-b4k774xcuw] {
    font-size: 11px;
    font-weight: 700;
    color: var(--uf-muted);
    text-transform: uppercase;
    letter-spacing: .3px;
}
.uf-field-grow[b-b4k774xcuw] { flex: 1 1 220px; }

.uf-daterow[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.uf-clear-c-btn[b-b4k774xcuw] {
    width: 34px;
    height: 34px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    border-radius: 9px;
    font-weight: 700;
    color: var(--uf-muted);
    cursor: pointer;
    flex-shrink: 0;
}
.uf-clear-c-btn:hover[b-b4k774xcuw] { border-color: var(--uf-accent); color: var(--uf-accent-dark); }

.uf-input[b-b4k774xcuw] {
    border: 1px solid #e2e8f0;
    border-radius: 9px;
    padding: 8px 10px;
    font-size: 13px;
    background: #f8fafc;
    transition: .12s;
}
.uf-input:focus[b-b4k774xcuw] {
    outline: none;
    border-color: var(--uf-accent);
    background: #fff;
}

.uf-searchbox[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e2e8f0;
    border-radius: 9px;
    padding: 8px 12px;
    background: #f8fafc;
}
.uf-searchbox i[b-b4k774xcuw] { color: var(--uf-muted); font-size: 12px; }
.uf-searchbox input[b-b4k774xcuw] {
    border: none;
    background: none;
    outline: none;
    font-size: 13px;
    flex: 1;
}

.uf-chk-inline[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: var(--uf-muted);
    white-space: nowrap;
    padding-bottom: 8px;
}

.uf-toolbar[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
}

.uf-segmented[b-b4k774xcuw] {
    display: flex;
    background: #f1f5f9;
    border-radius: 9px;
    padding: 3px;
    gap: 2px;
}
.uf-segmented button[b-b4k774xcuw] {
    border: none;
    background: none;
    padding: 7px 14px;
    border-radius: 7px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--uf-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: .12s;
}
.uf-seg-active[b-b4k774xcuw] {
    background: #fff !important;
    color: var(--uf-accent-dark) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);
}

.uf-toolbar-right[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.uf-choosefile-btn[b-b4k774xcuw] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: #f1f5f9;
    border-radius: 9px;
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--uf-text);
    cursor: pointer;
    overflow: hidden;
    white-space: nowrap;
}
.uf-choosefile-btn input[type=file][b-b4k774xcuw] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}
.uf-choosefile-name[b-b4k774xcuw] {
    font-size: 12px;
    color: var(--uf-muted);
    white-space: nowrap;
}

.uf-uploadbtn[b-b4k774xcuw] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: none;
    border-radius: 9px;
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 700;
    background: var(--uf-accent-dark);
    color: #fff;
    cursor: pointer;
    white-space: nowrap;
    transition: .12s;
}
.uf-uploadbtn:hover:not(:disabled)[b-b4k774xcuw] { background: #0b7d6a; }
.uf-uploadbtn:disabled[b-b4k774xcuw] { opacity: .6; cursor: not-allowed; }

.uf-clearbtn[b-b4k774xcuw], .uf-searchbtn[b-b4k774xcuw] {
    border: none;
    border-radius: 9px;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    transition: .12s;
}
.uf-clearbtn[b-b4k774xcuw] {
    background: #f1f5f9;
    color: var(--uf-text);
}
.uf-clearbtn:hover[b-b4k774xcuw] { background: #e2e8f0; }

.uf-searchbtn[b-b4k774xcuw] {
    background: var(--uf-accent);
    color: #fff;
    padding: 8px 12px;
}
.uf-searchbtn:hover[b-b4k774xcuw] { background: var(--uf-accent-dark); }

.uf-msg[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border-radius: 9px;
    font-size: 12.5px;
    font-weight: 600;
}
.uf-msg-err[b-b4k774xcuw] { background: #fef2f2; color: var(--uf-danger); }
.uf-msg-ok[b-b4k774xcuw] { background: #eafbf6; color: var(--uf-accent-dark); }

.uf-listwrap[b-b4k774xcuw] {
    border: 1px solid #eef2f6;
    border-radius: 12px;
    overflow: hidden;
    min-height: 220px;
    display: flex;
    flex-direction: column;
}

.uf-state[b-b4k774xcuw] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--uf-muted);
    font-size: 13px;
    padding: 40px;
}
.uf-state-empty[b-b4k774xcuw] { flex-direction: column; }
.uf-state-empty i[b-b4k774xcuw] { font-size: 28px; color: #cbd5e1; }

.uf-table[b-b4k774xcuw] {
    width: 100%;
    border-collapse: collapse;
}
.uf-table thead th[b-b4k774xcuw] {
    background: #f8fafc;
    color: var(--uf-muted);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .3px;
    text-align: left;
    padding: 10px 14px;
    position: sticky;
    top: 0;
    border-bottom: 1px solid #eef2f6;
}
.uf-th-chk[b-b4k774xcuw] { width: 40px; text-align: center !important; }
.uf-th-num[b-b4k774xcuw] { text-align: right !important; width: 90px; }

.uf-table tbody tr[b-b4k774xcuw] {
    cursor: pointer;
    transition: .1s;
}
.uf-table tbody td[b-b4k774xcuw] {
    padding: 10px 14px;
    font-size: 13px;
    border-bottom: 1px solid #f4f6f8;
}
.uf-table tbody tr:hover[b-b4k774xcuw] { background: #f8fafc; }
.uf-row-sel[b-b4k774xcuw] { background: #eafbf6 !important; }

.uf-fname-cell[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 10px;
}
.uf-fname-cell i[b-b4k774xcuw] { color: var(--uf-muted); font-size: 14px; }

.uf-fname-link[b-b4k774xcuw] {
    color: var(--uf-text);
    font-weight: 600;
    cursor: pointer;
}
.uf-fname-link:hover[b-b4k774xcuw] { color: var(--uf-accent-dark); text-decoration: underline; }

.uf-tiles[b-b4k774xcuw] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
    padding: 16px;
    overflow-y: auto;
}

.uf-tile[b-b4k774xcuw] {
    position: relative;
    background: #fff;
    border: 1px solid #eef2f6;
    border-radius: 12px;
    padding: 8px 8px 10px;
    text-align: center;
    cursor: pointer;
    transition: .12s;
}
.uf-tile:hover[b-b4k774xcuw] { border-color: #cbd5e1; box-shadow: 0 4px 12px rgba(15,23,42,.08); }
.uf-tile-sel[b-b4k774xcuw] {
    border-color: var(--uf-accent) !important;
    background: #eafbf6;
}

.uf-tile-thumbwrap[b-b4k774xcuw] {
    position: relative;
    width: 100%;
    height: 92px;
    border-radius: 8px;
    overflow: hidden;
    background: #f1f5f9;
    margin-bottom: 8px;
}

.uf-tile-chk[b-b4k774xcuw] {
    position: absolute;
    top: 6px;
    left: 6px;
    z-index: 2;
}

.uf-tile-ext[b-b4k774xcuw] {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 2;
    background: var(--uf-accent-dark);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .3px;
    padding: 2px 6px;
    border-radius: 5px;
}

.uf-tile-thumb[b-b4k774xcuw] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.uf-tile-thumb-pdf[b-b4k774xcuw] {
    width: 100%;
    height: 100%;
    border: none;
    pointer-events: none;
    background: #fff;
}

.uf-tile-fallback[b-b4k774xcuw] {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.uf-tile-fallback i[b-b4k774xcuw] {
    font-size: 32px;
    color: var(--uf-accent-dark);
}

.uf-tile-name[b-b4k774xcuw] {
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 4px;
}
.uf-tile-name:hover[b-b4k774xcuw] { color: var(--uf-accent-dark); }

.uf-tile-meta[b-b4k774xcuw] {
    font-size: 10.5px;
    color: var(--uf-muted);
}

.uf-foot[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 22px;
    background: #f8fafc;
    border-top: 1px solid #eef2f6;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.uf-foot-left[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.uf-iconbtn[b-b4k774xcuw] {
    width: 34px;
    height: 34px;
    border: 1px solid #e2e8f0;
    background: #fff;
    border-radius: 9px;
    color: var(--uf-muted);
    cursor: pointer;
    transition: .12s;
}
.uf-iconbtn:hover:not(:disabled)[b-b4k774xcuw] { border-color: #cbd5e1; color: var(--uf-text); }
.uf-iconbtn:disabled[b-b4k774xcuw] { opacity: .4; cursor: not-allowed; }
.uf-iconbtn-danger:hover:not(:disabled)[b-b4k774xcuw] { border-color: var(--uf-danger); color: var(--uf-danger); }

.uf-count[b-b4k774xcuw] {
    font-size: 12px;
    color: var(--uf-muted);
    white-space: nowrap;
}

.uf-pager[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}
.uf-pager-label[b-b4k774xcuw] {
    font-size: 12.5px;
    color: var(--uf-muted);
    padding: 0 6px;
    white-space: nowrap;
}
.uf-pager button[b-b4k774xcuw] {
    width: 28px;
    height: 28px;
    border: 1px solid #e2e8f0;
    background: #fff;
    border-radius: 7px;
    cursor: pointer;
    font-size: 11px;
    color: var(--uf-muted);
}
.uf-pager button:hover:not(:disabled)[b-b4k774xcuw] { border-color: #cbd5e1; color: var(--uf-text); }
.uf-pager button:disabled[b-b4k774xcuw] { opacity: .4; cursor: not-allowed; }

.uf-savebtn[b-b4k774xcuw] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--uf-accent);
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 10px 20px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: .12s;
    white-space: nowrap;
}
.uf-savebtn:hover:not(:disabled)[b-b4k774xcuw] { background: var(--uf-accent-dark); }
.uf-savebtn:disabled[b-b4k774xcuw] { background: #cbd5e1; cursor: not-allowed; }

@media (max-width: 700px) {
    .uf-modal[b-b4k774xcuw] { border-radius: 12px; max-height: 94vh; }
    .uf-foot[b-b4k774xcuw] { flex-direction: column; align-items: stretch; }
    .uf-pager[b-b4k774xcuw] { margin-left: 0; justify-content: center; }
    .uf-savebtn[b-b4k774xcuw] { justify-content: center; }
}

/* In-app file preview — opened from clicking a filename in list/tiles. */
.uf-prev-overlay[b-b4k774xcuw] {
    position: fixed;
    inset: 0;
    background: rgba(15, 20, 30, .6);
    z-index: 2100;
}

.uf-prev-modal[b-b4k774xcuw] {
    --uf-accent: #1AB99A;
    --uf-accent-dark: #0d9480;
    --uf-text: #1e293b;
    --uf-muted: #64748b;
    position: fixed;
    top: 4%;
    left: 50%;
    transform: translateX(-50%);
    width: min(720px, 94vw);
    height: 88vh;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0,0,0,.35);
    z-index: 2101;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.uf-prev-hdr[b-b4k774xcuw] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    background: linear-gradient(135deg, var(--uf-accent), var(--uf-accent-dark));
    color: #fff;
    font-weight: 700;
    font-size: 13.5px;
    flex-shrink: 0;
}

.uf-prev-hdr span[b-b4k774xcuw] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.uf-prev-x[b-b4k774xcuw] {
    background: rgba(255,255,255,.18);
    border: none;
    color: #fff;
    width: 28px;
    height: 28px;
    border-radius: 7px;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    transition: .12s;
}
.uf-prev-x:hover[b-b4k774xcuw] { background: rgba(255,255,255,.32); }

.uf-prev-body[b-b4k774xcuw] {
    flex: 1;
    overflow: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    min-height: 0;
    background: #f1f5f9;
}

.uf-prev-img[b-b4k774xcuw] {
    max-width: 100%;
    max-height: 100%;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0,0,0,.15);
}

.uf-prev-frame[b-b4k774xcuw] {
    width: 100%;
    height: 100%;
    border: none;
    border-radius: 6px;
    background: #fff;
}

.uf-prev-foot[b-b4k774xcuw] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 10px 18px;
    border-top: 1px solid #eef2f6;
    background: #fff;
    flex-shrink: 0;
}

.uf-prev-close-btn[b-b4k774xcuw] {
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    color: var(--uf-text);
    border-radius: 8px;
    padding: 7px 16px;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
}
.uf-prev-close-btn:hover[b-b4k774xcuw] { border-color: #cbd5e1; }

@media (max-width: 767px) {
    .uf-prev-modal[b-b4k774xcuw] {
        width: 96vw;
        height: 92vh;
        top: 3%;
    }
}
/* /Components/Shared/VoucherReportPopup.razor.rz.scp.css */
.vrp-overlay[b-w7fu57psmu] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 1000;
}

.vrp-modal[b-w7fu57psmu] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #fff;
    width: max-content;
    min-width: 420px;
    max-width: min(90vw, 850px);
    max-height: 88vh;
    overflow: auto;
    border-radius: 6px;
    z-index: 1001;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .25);
    /* Thin, subtle scrollbar for the popup's own internal scroll (Firefox). */
    scrollbar-width: thin;
    scrollbar-color: #c7c7c7 transparent;
}

    /* Same, for Chrome/Edge/Safari — replaces the default wide scrollbar with a slim,
   rounded, low-contrast one so it reads as part of the popup chrome instead of a
   full browser-style scrollbar. */
    .vrp-modal[b-w7fu57psmu]::-webkit-scrollbar {
        width: 8px;
    }

    .vrp-modal[b-w7fu57psmu]::-webkit-scrollbar-track {
        background: transparent;
    }

    .vrp-modal[b-w7fu57psmu]::-webkit-scrollbar-thumb {
        background: #c7c7c7;
        border-radius: 4px;
    }

        .vrp-modal[b-w7fu57psmu]::-webkit-scrollbar-thumb:hover {
            background: #a8a8a8;
        }

.vrp-hdr[b-w7fu57psmu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
    position: sticky;
    top: 0;
    background: #fff;
    font-weight: 600;
    color: #16a085;
}

.vrp-hdr-actions[b-w7fu57psmu] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.vrp-print[b-w7fu57psmu] {
    background: #16a085;
    border: none;
    border-radius: 4px;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    padding: 6px 12px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

    .vrp-print:hover[b-w7fu57psmu] {
        background: #128a72;
    }

.vrp-x[b-w7fu57psmu] {
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: #888;
}

.vrp-body[b-w7fu57psmu] {
    padding: 14px 16px;
}
