/* /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);
    --sb-sel: 26,185,154; /* selected-form green (RGB) on navy */
    --sb-sel-bar: #1AB99A;
    --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, #1AB99A 0%, #5fd8b9 100%); /* light green (was blue --primary → #2472d4) */
    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;
}

/* ── Sidebar dark-green theme (sb-avatar single click; double click reverts) ──
   Tokens re-declared on the aside so every child (hover/active/border) follows. */
.gains-sidebar[b-5wcplwsv0q] {
    transition: width 0.28s var(--ease), min-width 0.28s var(--ease), background-color .25s;
}

    .gains-sidebar.sb-theme-dark[b-5wcplwsv0q] {
        --sb-bg: #071c11;
        --sb-hover: #0d2e1c;
        --sb-active: #124029;
        --sb-sel: 110,231,183; /* brighter mint so it shows on the dark-green bg */
        --sb-sel-bar: #6ee7b7;
        background: #071c11 !important;
    }

.sb-avatar-theme[b-5wcplwsv0q] {
    cursor: pointer;
}

/* Login name opens the profile dropdown */
.sb-profile-name-link[b-5wcplwsv0q] {
    cursor: pointer;
    display: inline-block;
    max-width: 100%;
}

    .sb-profile-name-link:hover[b-5wcplwsv0q] {
        text-decoration: none;
    }

.sb-caret-hidden[b-5wcplwsv0q] {
    display: none !important;
}

/* Static profile block — no dropdown, so no pointer/hover on the row */
.sb-profile-trigger.sb-profile-static[b-5wcplwsv0q] {
    cursor: default;
}

    .sb-profile-trigger.sb-profile-static:hover[b-5wcplwsv0q] {
        background: transparent;
    }

/* Site abbr — above login name */
.sb-profile-site[b-5wcplwsv0q] {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .6px;
    line-height: 1.2;
    color: #7fb3e0;
    text-transform: uppercase;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Logout icon — same look as Home, red on hover */
.sb-profile-logout[b-5wcplwsv0q] {
    background: none;
    border: none;
    cursor: pointer;
}

    .sb-profile-logout:hover[b-5wcplwsv0q] {
        color: #f87171 !important;
        background: rgba(248,113,113,0.12) !important;
    }

.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, #1AB99A 0%, #5fd8b9 100%); /* light green (was blue --primary → #2472d4) */
    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;
    }

/* Switch to SalesRep / Back to GAINS — set apart from the menu above */
.sb-portal-switch[b-5wcplwsv0q] {
    margin-top: 8px;
    border-top: 1px solid rgba(255, 255, 255, .14);
    padding-top: 9px;
    color: #5eead4;
    font-weight: 600;
}

    .sb-portal-switch .sb-nav-icon[b-5wcplwsv0q] {
        color: #5eead4;
    }

    .sb-portal-switch:hover[b-5wcplwsv0q],
    .sb-portal-switch:hover .sb-nav-icon[b-5wcplwsv0q] {
        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;
        font-weight: 600;
        /* Green that melts into the sidebar bg: strong at the bar, fades to
           transparent → navy/dark-green shows through. Tone via --sb-sel per theme. */
        background: linear-gradient(90deg, rgba(var(--sb-sel),0.34) 0%, rgba(var(--sb-sel),0.12) 60%, rgba(var(--sb-sel),0) 100%);
        border-left-color: var(--sb-sel-bar);
    }

    .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: var(--sb-sel-bar);
    }

.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);
    /* Sidebar tokens → follows both themes: navy (#0f2340 → #1a3a5c)
       and dark-green (#071c11 → #124029), with a faint teal glow at the end. */
    background: linear-gradient(135deg, var(--sb-bg) 0%, var(--sb-active) 75%, rgba(26,185,154,0.28) 100%);
    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 — master look
══════════════════════════════════════ */
/* Card, header, icon, text and buttons come from global masters-forms.css
   (.mu-confirm.mu-confirm-headed, .uf-header/.uf-title/.uf-close,
   .mu-confirm-icon/-text/-actions/-cancel/-del). Only show/hide mechanics
   stay here: app.js gainsShowLogout/gainsCloseLogout toggle .open on
   #gains-logout-modal, so the overlay is always rendered and hidden with
   opacity — master .mu-confirm-overlay can't be used (always visible).
   Shared by sidebar Logout + GainsLanding top-bar Logout. */
.gains-modal-overlay[b-5wcplwsv0q] {
    display: flex; /* always flex — visibility via opacity/pointer-events */
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5); /* = .mu-confirm-overlay */
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    z-index: 1200;
    align-items: center;
    justify-content: center;
    padding: 16px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}

    .gains-modal-overlay.open[b-5wcplwsv0q] {
        opacity: 1;
        pointer-events: all;
    }

/* Curved like the GainsLanding popups; master's one-shot mu-confirm-in
   animation would only fire once at page load (card is always in the DOM),
   so replaced by an open/close scale transition. */
.gains-logout-card[b-5wcplwsv0q] {
    border-radius: 12px;
    text-align: center;
    animation: none;
    transform: scale(0.94) translateY(6px);
    transition: transform 0.2s ease-out;
}

.gains-modal-overlay.open .gains-logout-card[b-5wcplwsv0q] {
    transform: scale(1) translateY(0);
}

/* Confirm is an <a href="/logout"> — master styles only
       .mu-confirm-actions button, so mirror those rules for the link. */
.gains-logout-card .mu-confirm-actions a[b-5wcplwsv0q] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 7px 13px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    letter-spacing: 0.04em;
    white-space: nowrap;
    user-select: none;
    text-decoration: none !important;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}

    .gains-logout-card .mu-confirm-actions a i[b-5wcplwsv0q] {
        font-size: 14px;
    }

    .gains-logout-card .mu-confirm-actions a:hover[b-5wcplwsv0q] {
        color: #fff;
    }

/* ══════════════════════════════════════
   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;
        font-weight: 600;
        /* Green that melts into the sidebar bg: strong at the bar, fades to
           transparent → navy/dark-green shows through. Tone via --sb-sel per theme. */
        background: linear-gradient(90deg, rgba(var(--sb-sel),0.34) 0%, rgba(var(--sb-sel),0.12) 60%, rgba(var(--sb-sel),0) 100%);
        border-left-color: var(--sb-sel-bar);
    }

    .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;
    }

    .sb-nav-children-l3 .sb-nav-child.active[b-5wcplwsv0q]::before {
        opacity: 1;
        background: var(--sb-sel-bar);
    }
/* 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/AccessDenied.razor.rz.scp.css */
.ad-wrap[b-17d65x6awb] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 70vh;
    padding: 20px;
}

.ad-card[b-17d65x6awb] {
    text-align: center;
    max-width: 420px;
    width: 100%;
    padding: 32px 24px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .06);
}

.ad-icon[b-17d65x6awb] {
    font-size: 40px;
    color: #dc2626;
    margin-bottom: 12px;
}

.ad-title[b-17d65x6awb] {
    font-size: 20px;
    font-weight: 700;
    color: #306B9C;
    margin-bottom: 8px;
}

.ad-msg[b-17d65x6awb] {
    font-size: 13px;
    color: #4b5563;
    margin-bottom: 20px;
    line-height: 1.5;
}

.ad-btn[b-17d65x6awb] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 16px;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    background: #306B9C;
    border-radius: 3px;
    text-decoration: none;
}

    .ad-btn:hover[b-17d65x6awb] {
        background: #265a84;
        color: #fff;
    }
/* /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/Cashflow/CFFF.razor.rz.scp.css */
/* CFFF — page-specific bits only; shell/header/tabs/table/drawer come from
   masters-forms.css + standard.css. Balance panel / totals row / footer
   copied from QLedger.razor.css so both pages match. */
.cfff-page[b-lgty94ml71] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', sans-serif;
}

/* Tabs sit flush under the date line — same as .ql-sections */
.cfff-tabbar[b-lgty94ml71] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px 6px 10px;
    margin-top: -16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.cfff-body[b-lgty94ml71] {
    flex: 1;
    min-height: 0;
    display: flex;
    gap: 16px;
}

.cfff-body .mu-card[b-lgty94ml71] {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.cfff-table .num[b-lgty94ml71] {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cfff-table .cr[b-lgty94ml71],
.cfff-table td.num.cr[b-lgty94ml71] {
    color: #800000;
}

.cfff-section[b-lgty94ml71] {
    margin-bottom: 14px;
}

.cfff-sec-hdr th[b-lgty94ml71],
.cfff-sec-hdr td[b-lgty94ml71] {
    background: #306B9C;
    color: #fff;
    font-weight: 700;
}

.cfff-grp-row td[b-lgty94ml71] {
    font-weight: 600;
}

/* Totals row — same as QL (.db-total-row 6px 10px, #e8e8e8, 2px top rule) */
.cfff-table tfoot td[b-lgty94ml71] {
    background: #e8e8e8;
    border-top: 2px solid #d0d0d0;
    font-weight: 700;
    padding: 6px 10px !important;
}

.cfff-table tbody tr:nth-child(odd) td[b-lgty94ml71] {
    background: #f5fafa;
}

.cfff-table tbody tr:not(:last-child):hover td[b-lgty94ml71] {
    background: #e8f5f0;
}

/* ── Balance panel (QL) ── */
.ql-balance[b-lgty94ml71] {
    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-lgty94ml71] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid #e5e7eb;
}

.ql-bal-table[b-lgty94ml71] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .ql-bal-table th[b-lgty94ml71],
    .ql-bal-table td[b-lgty94ml71] {
        padding: 10px 12px;
        white-space: nowrap;
        font-size: 13px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

    .ql-bal-table th[b-lgty94ml71] {
        text-align: left;
        color: #6b7280;
        font-weight: 500;
        background: #fafafa;
    }

        .ql-bal-table th.num[b-lgty94ml71],
        .ql-bal-table td.num[b-lgty94ml71] {
            text-align: right;
            font-variant-numeric: tabular-nums;
            width: 55%;
        }

    .ql-bal-table td:first-child[b-lgty94ml71] {
        width: 45%;
    }

    .ql-bal-table td.cr[b-lgty94ml71],
    .ql-bal-table td.num.cr[b-lgty94ml71] {
        color: #800000;
    }

.ql-bal-closing td[b-lgty94ml71] {
    font-weight: 700;
    border-top: 2px solid #dcdcdc;
    border-bottom: none;
}

.ql-bal-opening td[b-lgty94ml71] {
    font-weight: 700;
    border-top: 2px solid #dcdcdc;
}

.ql-bal-opening1 th[b-lgty94ml71] {
    font-weight: 700;
    background: #fff;
    border-top: 1px solid #dcdcdc;
}

/* ── Footer (count left, pager right) — same as .ql-footer-fixed ── */
.cfff-footer[b-lgty94ml71] {
    flex-shrink: 0;
    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);
}

@media (max-width: 980px) {
    .cfff-body[b-lgty94ml71] {
        flex-direction: column;
    }

    .ql-balance[b-lgty94ml71] {
        flex: 0 0 auto;
        width: 100%;
        max-width: none;
    }
}

/* ── Sticky totals + fill height (same mechanism as QL; app.js measures
   .cfff-body .mu-table-wrap → --gains-filler-h) ── */
.cfff-page[b-lgty94ml71] {
    min-height: 100vh;
}

.cfff-body[b-lgty94ml71] {
    padding: 12px 16px 8px;
}

    .cfff-body .mu-card[b-lgty94ml71] {
        overflow: hidden;
        min-height: 0;
    }

    .cfff-body .mu-table-wrap[b-lgty94ml71] {
        flex: 1;
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

.cfff-flat tbody tr:last-child td[b-lgty94ml71] {
    padding-bottom: calc(10px + var(--gains-filler-h, 0px));
}

.cfff-flat tfoot td[b-lgty94ml71] {
    position: sticky;
    bottom: 0;
    z-index: 3;
}

/* Flow amounts — blue, link look */
.cfff-table td.cfff-link[b-lgty94ml71],
.ql-bal-table td.cfff-link[b-lgty94ml71] {
    color: #1a56a7;
    font-weight: 600;
}

/* ── FF CA / CL sectioned grid — div-grid so the column-name row stays static,
   CA and CL split the height 50/50 and scroll on their own ── */
.cfff-sec-wrap[b-lgty94ml71] {
    flex: 1;
    min-height: 0;
    overflow-x: auto;
    overflow-y: hidden;
    display: flex;
    flex-direction: column;
}

.cfff-sec-inner[b-lgty94ml71] {
    flex: 1;
    min-height: 0;
    min-width: 1000px;
    display: flex;
    flex-direction: column;
}

.cfff-g[b-lgty94ml71] {
    display: grid;
    grid-template-columns: 50px minmax(200px, 1fr) 200px 200px 150px 150px 150px;
    align-items: center;
    padding: 0 10px;
    font-size: 13px;
    /* reserve the same gutter the scrolling bodies have, so columns line up */
    overflow-y: hidden;
    scrollbar-gutter: stable;
    flex-shrink: 0;
}

    .cfff-g .num[b-lgty94ml71] {
        text-align: right;
        white-space: nowrap;
        font-variant-numeric: tabular-nums;
        padding-right: 10px;
    }

.cfff-g-colhead[b-lgty94ml71] {
    background: #306B9C;
    color: #fff;
    font-weight: 700;
    font-size: 12px;
    padding-top: 10px;
    padding-bottom: 10px;
}

.cfff-panel[b-lgty94ml71] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border-top: 1px solid #2f4e7d;
}

.cfff-g-sec[b-lgty94ml71],
.cfff-g-wc[b-lgty94ml71] {
    background: #1c2b64;
    color: #fff;
    font-weight: 700;
    padding-top: 7px;
    padding-bottom: 7px;
}

    .cfff-g-sec .cfff-sec-label[b-lgty94ml71],
    .cfff-g-wc .cfff-sec-label[b-lgty94ml71] {
        grid-column: 1 / 3;
        padding-left: 4px;
    }

    .cfff-g-sec .cfff-sec-fund[b-lgty94ml71],
    .cfff-g-wc .cfff-sec-fund[b-lgty94ml71] {
        grid-column: 7;
    }

.cfff-panel-body[b-lgty94ml71] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

    .cfff-panel-body .cfff-g-row[b-lgty94ml71] {
        overflow: visible;
        padding-top: 8px;
        padding-bottom: 8px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

        .cfff-panel-body .cfff-g-row:nth-child(odd)[b-lgty94ml71] {
            background: #f5fafa;
        }

        .cfff-panel-body .cfff-g-row:hover[b-lgty94ml71] {
            background: #e8f5f0;
        }

.cfff-idx[b-lgty94ml71] {
    color: #1a2537;
    font-weight: 600;
}

.cfff-panel-empty[b-lgty94ml71] {
    padding: 14px;
    color: #888;
    text-align: center;
}

.cfff-g-tot[b-lgty94ml71] {
    background: #e8e8e8;
    border-top: 2px solid #d0d0d0;
    font-weight: 700;
    padding-top: 6px;
    padding-bottom: 6px;
}

    .cfff-g-tot .cfff-tot-label[b-lgty94ml71] {
        grid-column: 1 / 3;
        padding-left: 4px;
    }

/* working capital pinned at the very bottom */
.cfff-g-wc[b-lgty94ml71] {
    border-top: 2px solid #2f4e7d;
}

.cfff-g .cfff-link[b-lgty94ml71] {
    color: #1a56a7;
    font-weight: 600;
}

.cfff-g .cr[b-lgty94ml71] {
    color: #800000;
}

/* Section colours: CA navy, CL maroon, working capital = grid-header blue */
.cfff-g-sec.cfff-sec-ca[b-lgty94ml71] {
    background: #1c2b64;
}

.cfff-g-sec.cfff-sec-cl[b-lgty94ml71] {
    background: #800000;
}

.cfff-g-wc[b-lgty94ml71] {
    background: #306B9C;
}

/* Ledger filter: autofill + shared "L" picker button side by side (as ARAP) */
.cfff-led-row[b-lgty94ml71] {
    display: flex;
    gap: 8px;
}

    .cfff-led-row[b-lgty94ml71]  .uf-input {
        flex: 1 1 auto;
        min-width: 0;
    }

.cfff-led-btn[b-lgty94ml71] {
    flex: 0 0 40px;
    justify-content: center;
    padding: 7px 0;
}

.cfff-led-row > :first-child[b-lgty94ml71] {
    flex: 1 1 auto;
    min-width: 0;
}

/* "L" button — indigo rounded square, as in QL's ledger filter */
.cfff-led-btn[b-lgty94ml71] {
    flex: 0 0 36px;
    height: 36px;
    padding: 0;
    border-radius: 8px;
    border: 1px solid #3949ab;
    background: #3949ab;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s;
}

    .cfff-led-btn:hover[b-lgty94ml71] {
        background: #283593;
    }

/* .mu-fld stacks children — force the ledger box + L button onto one row */
.mu-fld.cfff-led-row[b-lgty94ml71] {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 8px;
}

    .mu-fld.cfff-led-row > .cfff-led-btn[b-lgty94ml71] {
        flex: 0 0 36px;
        width: 36px;
        align-self: flex-start;
    }

/* alignment: button stretches to the exact height of the ledger box */
.mu-fld.cfff-led-row[b-lgty94ml71] {
    align-items: stretch;
}

    .mu-fld.cfff-led-row > .cfff-led-btn[b-lgty94ml71] {
        align-self: stretch;
        height: auto;
        min-height: 0;
        margin: 0;
        line-height: 1;
    }

/* "L" button — same blue as the grid header (#306B9C) */
.mu-fld.cfff-led-row > .cfff-led-btn[b-lgty94ml71] {
    background: #306B9C !important;
    border-color: #306B9C !important;
    color: #fff;
}

    .mu-fld.cfff-led-row > .cfff-led-btn:hover[b-lgty94ml71] {
        background: #25557d !important;
        border-color: #25557d !important;
    }

/* ledger / group name → opens QL / QG */
.cfff-ledlink[b-lgty94ml71] {
    color: #1a56a7;
    cursor: pointer;
}

    .cfff-ledlink:hover[b-lgty94ml71] {
        text-decoration: underline;
    }
/* /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 8px;
    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] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    height: 32px;
    line-height: 1;
    padding: 0 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 8px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}
.gd-settings-btn[b-rm4n3g3zob] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 12px;
    border: 1px solid #cdeee4;
    border-radius: 6px;
    background: #f3fcf9;
    color: #0f766e;
    font: 600 12.5px inherit;
    cursor: pointer;
    transition: background 0.12s;
}
.gd-settings-btn:hover[b-rm4n3g3zob] { background: #d6f2ea; }
.gd-settings-btn i[b-rm4n3g3zob] { font-size: 16px; }
.gd-tabs-actions[b-rm4n3g3zob] { display: flex; align-items: center; gap: 10px; margin-left: auto; }

/* Centre every icon glyph in its button: the icon font's own line box sits slightly off-centre,
   so give the <i> a square 1em box and make the glyph fill it. */
.gd-card-icon-btn i[b-rm4n3g3zob],
.gd-settings-btn i[b-rm4n3g3zob],
.gd-set-x i[b-rm4n3g3zob],
.gd-set-search i[b-rm4n3g3zob],
.gd-set-save i[b-rm4n3g3zob],
.gd-theme-knob i[b-rm4n3g3zob],
.gd-theme-ico[b-rm4n3g3zob] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    height: 1em;
    line-height: 1;
    text-align: center;
}
.gd-card-icon-btn i[b-rm4n3g3zob]::before,
.gd-settings-btn i[b-rm4n3g3zob]::before,
.gd-set-x i[b-rm4n3g3zob]::before,
.gd-set-search i[b-rm4n3g3zob]::before,
.gd-set-save i[b-rm4n3g3zob]::before,
.gd-theme-knob i[b-rm4n3g3zob]::before,
.gd-theme-ico[b-rm4n3g3zob]::before {
    display: block;
    line-height: 1;
    margin: 0;
}

/* ── Sun / moon theme switch: a pill with both icons, and a knob that slides to the active one ── */
.gd-theme-toggle[b-rm4n3g3zob] {
    position: relative;
    flex: 0 0 auto;
    width: 62px;
    height: 32px;
    padding: 0;
    border: 1px solid #cdeee4;
    border-radius: 16px;
    background: #f3fcf9;
    cursor: pointer;
    transition: background 0.2s, border-color 0.2s;
}
.gd-theme-ico[b-rm4n3g3zob] {
    position: absolute;
    top: 8px;
    font-size: 15px;
    color: #94a3b8;
}
.gd-theme-ico-sun[b-rm4n3g3zob] { left: 9px; }
.gd-theme-ico-moon[b-rm4n3g3zob] { right: 9px; }
.gd-theme-knob[b-rm4n3g3zob] {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f59e0b;
    color: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
    transition: transform 0.22s ease, background 0.2s;
}
.gd-theme-knob i[b-rm4n3g3zob] { font-size: 14px; }
.gd-theme-toggle.is-dark[b-rm4n3g3zob] { background: #1e293b; border-color: #334155; }
.gd-theme-toggle.is-dark .gd-theme-knob[b-rm4n3g3zob] { transform: translateX(30px); background: #6366f1; }

/* ── "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 8px;
    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: 8px 8px 8px;
}

/* ── 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: 8px;
}

/* 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: none;
    min-height: 0;
    justify-self: stretch;
}

/* ── 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; align-items: center; gap: 3px; }
.gd-period-btn[b-rm4n3g3zob] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    flex: 0 0 auto;
    min-width: 28px;
    height: 24px;
    line-height: 1;
    padding: 0 6px;
    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;
}
/* List (table) views run edge to edge inside the card: no body/list padding. */
.gd-body-flush[b-rm4n3g3zob] { padding: 0; }
.gd-body-flush .gd-arap-list[b-rm4n3g3zob] { padding: 0; }
.gd-grid-alt .gd-dash1-list-body.gd-body-flush[b-rm4n3g3zob] { margin: 0; padding: 0; border-radius: 0 0 10px 10px; }
.gd-body-flush[b-rm4n3g3zob] { align-items: stretch; }
/* Static header/footer around a scrolling list body (Dashboard + Dashboard1
   list views): only .gd-list-body scrolls; header and footer stay put. */
.gd-list[b-rm4n3g3zob] { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }
.gd-list-head[b-rm4n3g3zob], .gd-list-foot[b-rm4n3g3zob] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    box-sizing: border-box;
    min-height: 30px;
    padding: 5px 10px;
    font-size: 13px;
    font-weight: 650;
}
.gd-list-head[b-rm4n3g3zob] { background: #4b5563; color: #fff; }
.gd-list-foot[b-rm4n3g3zob] { background: #f3fcf9; color: #0f766e; border-top: 2px solid #cdeee4; }
.gd-list .gd-list-body[b-rm4n3g3zob] { flex: 1 1 auto; min-height: 0; height: auto; }
.gd-list-empty[b-rm4n3g3zob] { padding: 18px 10px; text-align: center; font-size: 13px; color: #64748b; }
.gd-arap-row[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 10px;
    min-height: 30px;
    box-sizing: border-box;
    border-bottom: 1px solid #e7eaec;
    transition: background .07s;
}
.gd-arap-row:nth-child(even)[b-rm4n3g3zob] { background: #f7f9fc; }
.gd-arap-row:hover[b-rm4n3g3zob] { background: #e6f4f0; }
.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: 400;
    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.
   ===================================================================== */
/* Dashboard1 cards deliberately reuse the Dashboard tab's card chrome
   unchanged (same square footprint, header, title, icon chips, period/select
   sizing, chart body) so both tabs look identical; only the long widget
   titles are told to truncate instead of wrapping the header. */
.gd-grid-alt .gd-card-hdr-left[b-rm4n3g3zob] { flex: 1 1 auto; min-width: 0; flex-wrap: nowrap; }
.gd-grid-alt .gd-card-title[b-rm4n3g3zob] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gd-grid-alt .gd-card-hdr-left .gd-select[b-rm4n3g3zob] { flex: 0 0 auto; width: auto; }
.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: 5px 10px;
    min-height: 30px;
    box-sizing: border-box;
    border-bottom: 1px solid #e7eaec;
    transition: background .07s;
}
.gd-dash1-row:nth-child(even)[b-rm4n3g3zob] { background: #f7f9fc; }
.gd-dash1-row:hover[b-rm4n3g3zob] { background: #e6f4f0; }
.gd-dash1-row:last-child[b-rm4n3g3zob] { border-bottom: none; }
.gd-dash1-month[b-rm4n3g3zob] { font-size: 13px; color: #1a2537; }
.gd-dash1-amt[b-rm4n3g3zob] { font-size: 13px; font-weight: 400; 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: 8px; }

/* 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: 8px;
}

.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;
}
/* First-row cards get a fixed height so a long table scrolls inside its card
   (sticky header/footer) instead of stretching the whole row. */
.gd-sales-row .gd-sales-card[b-rm4n3g3zob] { height: 440px; min-height: 0; }
/* 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;
}
/* Table cards: table runs edge to edge (no body padding). */
.gd-sales-card-body-flush[b-rm4n3g3zob] { padding: 0; }
.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; }
}

/* ── Expanded card popup — the card itself is lifted out of the grid and
   centered over a dimmed backdrop, so a graph or list shows larger. ── */
.gd-expand-backdrop[b-rm4n3g3zob] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    z-index: 1040;
}
.gd-card-expanded[b-rm4n3g3zob] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(1100px, 94vw);
    max-width: none;
    height: 88vh;
    min-height: 0;
    aspect-ratio: auto;
    z-index: 1050;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.gd-card-expanded .gd-card-body[b-rm4n3g3zob] { flex: 1; min-height: 0; }
.gd-card-expanded .gd-highcharts-pie[b-rm4n3g3zob] { height: 100%; }

/* ── Dashboard1 widget Settings popup ── */
.gd-set-overlay[b-rm4n3g3zob] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    z-index: 1060;
}
.gd-set-dialog[b-rm4n3g3zob] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(1080px, 95vw);
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    background: #f4f7fa;
    border-radius: 12px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35);
    z-index: 1070;
    overflow: hidden;
}
.gd-set-hdr[b-rm4n3g3zob] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom: 1px solid #cdeee4;
}
.gd-set-title[b-rm4n3g3zob] { font-size: 16px; font-weight: 700; color: #0f766e; display: flex; align-items: center; gap: 8px; }
.gd-set-sub[b-rm4n3g3zob] { margin-top: 2px; font-size: 12px; color: #64748b; }
.gd-set-x[b-rm4n3g3zob] {
    width: 30px; height: 30px; border: none; border-radius: 6px; cursor: pointer;
    background: rgba(15, 118, 110, 0.08); color: #0f766e;
}
.gd-set-x:hover[b-rm4n3g3zob] { background: rgba(15, 118, 110, 0.18); }
.gd-set-grid[b-rm4n3g3zob] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    padding: 14px;
    overflow-y: auto;
}
.gd-set-card[b-rm4n3g3zob] {
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.gd-set-card-hdr[b-rm4n3g3zob] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid #eef2f7;
}
.gd-set-badge[b-rm4n3g3zob] {
    width: 22px; height: 22px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: #1ab99a; color: #fff; font-size: 12px; font-weight: 700;
}
.gd-set-card-title[b-rm4n3g3zob] { font-size: 13.5px; font-weight: 700; color: #1e293b; }
.gd-set-current[b-rm4n3g3zob] {
    margin-left: auto;
    max-width: 50%;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 11px; color: #64748b; background: #f1f5f9; border-radius: 10px; padding: 2px 8px;
}
.gd-set-body[b-rm4n3g3zob] { padding: 12px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.gd-set-seg[b-rm4n3g3zob] {
    display: inline-flex;
    border: 1px solid #cdeee4;
    border-radius: 8px;
    overflow: hidden;
    align-self: flex-start;
}
.gd-set-seg button[b-rm4n3g3zob] {
    display: inline-flex; align-items: center; gap: 6px;
    height: 30px; padding: 0 14px; border: none; cursor: pointer;
    background: #fff; color: #0f766e; font: 600 12.5px inherit;
}
.gd-set-seg button + button[b-rm4n3g3zob] { border-left: 1px solid #cdeee4; }
.gd-set-seg button.on[b-rm4n3g3zob] { background: #1ab99a; color: #fff; }
.gd-set-lbl[b-rm4n3g3zob] { font-size: 11.5px; font-weight: 650; color: #64748b; margin-top: 4px; }
.gd-set-input[b-rm4n3g3zob] {
    width: 100%;
    box-sizing: border-box;
    height: 34px;
    padding: 0 10px;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    background: #fff;
    font: 13px inherit;
    color: #1a2537;
    outline: none;
}
.gd-set-input:focus[b-rm4n3g3zob] { border-color: #1ab99a; }
.gd-set-pick[b-rm4n3g3zob] { display: flex; gap: 6px; }
.gd-set-pick .gd-set-input[b-rm4n3g3zob] { cursor: pointer; background: #f8fafc; }
.gd-set-search[b-rm4n3g3zob] {
    width: 34px; height: 34px; flex: 0 0 34px; border: none; border-radius: 6px; cursor: pointer;
    background: #1ab99a; color: #fff;
}
.gd-set-search:hover[b-rm4n3g3zob] { background: #159a80; }
.gd-set-foot[b-rm4n3g3zob] { margin-top: auto; padding-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.gd-set-msg[b-rm4n3g3zob] { font-size: 12px; }
.gd-set-msg.ok[b-rm4n3g3zob] { color: #15803d; }
.gd-set-msg.err[b-rm4n3g3zob] { color: #dc2626; }
.gd-set-save[b-rm4n3g3zob] {
    display: inline-flex; align-items: center; gap: 6px;
    height: 32px; padding: 0 16px; border: none; border-radius: 6px; cursor: pointer;
    background: #1ab99a; color: #fff; font: 600 13px inherit;
}
.gd-set-save:hover:not(:disabled)[b-rm4n3g3zob] { background: #159a80; }
.gd-set-save:disabled[b-rm4n3g3zob] { opacity: 0.5; cursor: not-allowed; }
@media (max-width: 1000px) { .gd-set-grid[b-rm4n3g3zob] { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .gd-set-grid[b-rm4n3g3zob] { grid-template-columns: 1fr; } }

/* Searchable group picker (inside a widget settings card) */
.gd-set-combo[b-rm4n3g3zob] { display: flex; flex-direction: column; gap: 6px; }
.gd-set-combo-btn[b-rm4n3g3zob] {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    text-align: left; cursor: pointer;
}
.gd-set-combo-btn span[b-rm4n3g3zob] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gd-set-combo-btn span.ph[b-rm4n3g3zob] { color: #94a3b8; }
.gd-set-panel[b-rm4n3g3zob] {
    border: 1px solid #cdeee4; border-radius: 8px; padding: 8px; background: #f8fffc;
    display: flex; flex-direction: column; gap: 6px;
}
.gd-set-list[b-rm4n3g3zob] { max-height: 190px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.gd-set-opt[b-rm4n3g3zob] {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: 6px 8px; border: none; border-radius: 6px; background: transparent; cursor: pointer;
    font: 13px inherit; color: #1a2537; text-align: left;
}
.gd-set-opt:hover[b-rm4n3g3zob] { background: #e6f4f0; }
.gd-set-opt.on[b-rm4n3g3zob] { background: #1ab99a; color: #fff; }
.gd-set-opt small[b-rm4n3g3zob] { color: #94a3b8; font-size: 11px; }
.gd-set-opt.on small[b-rm4n3g3zob] { color: #e6fffa; }
.gd-set-hint[b-rm4n3g3zob] { padding: 8px; text-align: center; font-size: 12px; color: #64748b; }
.gd-set-more[b-rm4n3g3zob] {
    margin-top: 2px; padding: 6px; border: 1px dashed #1ab99a; border-radius: 6px; background: #fff;
    color: #0f766e; font: 600 12px inherit; cursor: pointer;
}
.gd-set-more:hover[b-rm4n3g3zob] { background: #e6f4f0; }
/* /Components/Pages/Daybook.razor.rz.scp.css */
/* CSS for Daybook component */

/* Wrapper only exists so scoped ::deep can reach FiltersActionPanel;
   display: contents keeps it out of the layout entirely. */
.db-filters-host[b-pynfoyz8fy] {
    display: contents;
}

    /* Filters panel — remove the starting gap above the first section bar */
    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-drawer-body:not(.db-action-body) {
        padding-top: 0;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-drawer-body:not(.db-action-body) > .fp-section:first-child {
            margin-top: 0;
        }

    /* Filters panel — Date Range fields sized like Document Grid's
   (32px high, input fills the row, 8px gap before the icon button). */
    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .gdp-field-row {
        display: flex;
        align-items: center;
        gap: 8px;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .gdp-field-row > :first-child {
            flex: 1 1 auto;
            min-width: 0;
        }

        /* Bordered box (the element that directly holds the input + calendar icon) */
        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .gdp-field-row :has(> input) {
            height: 32px;
            min-height: 32px;
            padding-top: 0;
            padding-bottom: 0;
            box-sizing: border-box;
            display: flex;
            align-items: center;
        }

            /* Input inside it — fill the box, no extra padding, text centred */
            .db-filters-host[b-pynfoyz8fy]  .mu-drawer .gdp-field-row :has(> input) > input {
                height: 100%;
                min-height: 0;
                padding-top: 0;
                padding-bottom: 0;
                line-height: normal;
                font-size: 13px;
                border: 0;
                background: transparent;
            }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .gdp-field-row .gcp-trigger {
            width: 32px;
            height: 32px;
            flex: 0 0 32px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
        }
    /* Filters panel — dropdowns use Document Grid's thin chevron
   instead of the browser's native arrow (same as .dg-ext-select). */
    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-drawer-body select:not([size]):not([multiple]) {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-color: #fff;
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>");
        background-repeat: no-repeat;
        background-position: right 12px center;
        height: 32px;
        padding: 0 30px 0 8px;
        line-height: normal;
        font-size: 13px;
        box-sizing: border-box;
        cursor: pointer;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-drawer-body select:not([size]):not([multiple])::-ms-expand {
            display: none;
        }

/* Filters panel — first ledger textbox + "L" search button on one row */
.db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :first-child {
        flex: 1 1 auto;
        min-width: 0;
    }

/* LedgerSearchPopup above the drawer and toast */
.db-filters-host[b-pynfoyz8fy]  .lsp-overlay {
    z-index: 100003;
}

/* First ledger row — textbox + "L" together span exactly the same width
   as the second ledger textbox below (no overflow past its right edge). */
.db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) {
    width: 100%;
    box-sizing: border-box;
    flex-wrap: nowrap;
}

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) {
        flex: 1 1 0;
        width: auto;
        min-width: 0;
        max-width: none;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) input {
            width: 100%;
            box-sizing: border-box;
        }

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > .db-led1-btn {
        flex: 0 0 32px;
        width: 32px;
        height: 32px;
        margin: 0;
        box-sizing: border-box;
    }

/* First ledger row — same look as Query Ledger's ledger box + "L" button:
   textbox 32px high filling the row, 6px gap, solid indigo 36×32 "L". */
.db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) {
    gap: 6px;
}

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) input {
        height: 32px;
        min-height: 32px;
        padding: 0 8px;
        font-size: 13px;
        line-height: normal;
    }

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > .db-led1-btn {
        flex: 0 0 36px;
        width: 36px;
        height: 32px;
        padding: 0;
        border: none;
        border-radius: 4px;
        background: #3949ab;
        color: #fff;
        font-size: 13px;
        font-weight: 700;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > .db-led1-btn:hover {
            background: #303f9f;
        }

/* First ledger row — force a single horizontal row like Group + "G":
   .mu-fld is a column/centred stack elsewhere, which pushed "L" below a
   shrunk, centred textbox. */
.db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
}

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) {
        flex: 1 1 0 !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 0 !important;
        align-self: center !important;
    }

        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) :has(> input),
        .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > :not(.db-led1-btn) input {
            width: 100% !important;
            max-width: none !important;
            margin: 0 !important;
            box-sizing: border-box;
            text-align: left;
        }

    .db-filters-host[b-pynfoyz8fy]  .mu-drawer .mu-fld:has(> .db-led1-btn) > .db-led1-btn {
        margin: 0 !important;
        align-self: center !important;
    }

/* Footer — Copy Voucher button (after Excel) */
.bspl-foot-btn.copy[b-pynfoyz8fy] {
    color: #3949ab;
}

    .bspl-foot-btn.copy:disabled[b-pynfoyz8fy] {
        opacity: .7;
        cursor: wait;
    }

/* Footer — Print Report button (opens the Report flyout) */
.bspl-foot-btn.print[b-pynfoyz8fy] {
    color: #376091;
}

/* Print Report flyout — report rows (always visible, hover highlight) */
.db-rpt-item:hover[b-pynfoyz8fy] {
    background: #e8eef7;
}

/* Footer Delete — status popup (legacy divStatus) */
.db-del-modal[b-pynfoyz8fy] {
    max-width: 640px;
}

.db-del-body[b-pynfoyz8fy] {
    padding: 14px 18px 18px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.db-del-summary[b-pynfoyz8fy] {
    font-weight: 600;
    color: #1a2537;
}

.db-del-scroll[b-pynfoyz8fy] {
    max-height: 360px;
    overflow-y: auto;
}

.db-del-table th[b-pynfoyz8fy],
.db-del-table td[b-pynfoyz8fy] {
    padding: 6px 8px;
    font-size: 13px;
    text-align: left;
}

.db-del-ok[b-pynfoyz8fy] {
    color: #1e8e3e;
    font-weight: 600;
}

.db-del-no[b-pynfoyz8fy] {
    color: #c0392b;
    font-weight: 600;
}

/* Footer Delete — status box in the legacy look (divStatus): white box over the grid,
   red ✕ top-right, blue header row Sr# / VNum / Status / Comment. */
.db-del-box[b-pynfoyz8fy] {
    position: fixed;
    top: 135px;
    left: 160px;
    width: 525px;
    height: 255px;
    background: #fff;
    border: 1px solid #a0a0a0;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
    z-index: 100002;
    padding-top: 24px;
    box-sizing: border-box;
    font-family: Arial, sans-serif;
    font-size: 12px;
}

.db-del-x[b-pynfoyz8fy] {
    position: absolute;
    top: 2px;
    right: 8px;
    width: 20px;
    height: 20px;
    padding: 0;
    border: 1px solid #c0392b;
    background: #fff;
    color: #e74c3c;
    font-size: 13px;
    line-height: 18px;
    text-align: center;
    cursor: pointer;
}

    .db-del-x:hover[b-pynfoyz8fy] {
        background: #fdecea;
    }

.db-del-grid[b-pynfoyz8fy] {
    height: 100%;
    overflow-y: auto;
}

.db-del-tbl[b-pynfoyz8fy] {
    width: 100%;
    border-collapse: collapse;
}

    .db-del-tbl thead th[b-pynfoyz8fy] {
        position: sticky;
        top: 0;
        height: 24px;
        padding: 0 6px;
        background: #3d5a99;
        color: #fff;
        font-weight: bold;
        font-size: 13px;
        text-align: left;
    }

    .db-del-tbl td[b-pynfoyz8fy] {
        padding: 6px;
        color: #000;
        vertical-align: top;
    }

.db-del-c1[b-pynfoyz8fy] { width: 50px; }
.db-del-c2[b-pynfoyz8fy] { width: 100px; }
.db-del-c3[b-pynfoyz8fy] { width: 120px; }

/* Footer Delete — status popup styled like the Voucher Type popup:
   dimmed/blurred page, white card with teal left accent, mint header,
   mint section strip, footer with green OK. */
.db-dsp-overlay[b-pynfoyz8fy] {
    position: fixed;
    inset: 0;
    z-index: 100002;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 60px;
    background: rgba(30, 41, 59, .45);
    backdrop-filter: blur(3px);
}

.db-dsp-card[b-pynfoyz8fy] {
    width: 560px;
    max-width: calc(100vw - 32px);
    background: #fff;
    border-radius: 6px;
    border-left: 4px solid #2bb39a;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .22);
    overflow: hidden;
    font-family: inherit;
}

.db-dsp-head[b-pynfoyz8fy] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 16px 20px 14px;
    background: linear-gradient(90deg, #eefaf6 0%, #dff4ec 100%);
    border-bottom: 1px solid #d6eee5;
}

.db-dsp-title[b-pynfoyz8fy] {
    font-size: 17px;
    font-weight: 700;
    color: #1d6b5d;
}

.db-dsp-sub[b-pynfoyz8fy] {
    margin-top: 2px;
    font-size: 12px;
    color: #4b6b63;
}

.db-dsp-x[b-pynfoyz8fy] {
    border: none;
    background: none;
    color: #1d6b5d;
    font-size: 18px;
    line-height: 1;
    padding: 4px;
    margin-top: 6px;
    cursor: pointer;
}

    .db-dsp-x:hover[b-pynfoyz8fy] {
        color: #c0392b;
    }

.db-dsp-body[b-pynfoyz8fy] {
    padding: 20px 22px;
}

.db-dsp-section[b-pynfoyz8fy] {
    border: 1px solid #d6eee5;
    border-radius: 6px;
    overflow: hidden;
    background: #fbfdfc;
}

.db-dsp-sec-head[b-pynfoyz8fy] {
    padding: 10px 14px;
    background: #e3f5ee;
    color: #1d6b5d;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.db-dsp-scroll[b-pynfoyz8fy] {
    max-height: 300px;
    overflow-y: auto;
}

.db-dsp-tbl[b-pynfoyz8fy] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .db-dsp-tbl thead th[b-pynfoyz8fy] {
        position: sticky;
        top: 0;
        padding: 8px 12px;
        background: #fbfdfc;
        color: #475569;
        font-weight: 600;
        text-align: left;
        border-bottom: 1px solid #e2ece8;
    }

    .db-dsp-tbl td[b-pynfoyz8fy] {
        padding: 8px 12px;
        color: #1a2537;
        border-bottom: 1px solid #f0f4f2;
        vertical-align: top;
    }

    .db-dsp-tbl tbody tr:last-child td[b-pynfoyz8fy] {
        border-bottom: none;
    }

.db-dsp-c1[b-pynfoyz8fy] { width: 44px; }
.db-dsp-c2[b-pynfoyz8fy] { width: 100px; font-weight: 600; }
.db-dsp-c3[b-pynfoyz8fy] { width: 110px; }

.db-dsp-badge[b-pynfoyz8fy] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}

    .db-dsp-badge.ok[b-pynfoyz8fy] {
        background: #e3f5ea;
        color: #1e8e3e;
    }

    .db-dsp-badge.no[b-pynfoyz8fy] {
        background: #fdecea;
        color: #c0392b;
    }

.db-dsp-foot[b-pynfoyz8fy] {
    display: flex;
    justify-content: flex-end;
    padding: 14px 22px;
    border-top: 1px solid #e8eeeb;
}

.db-dsp-ok[b-pynfoyz8fy] {
    padding: 8px 18px;
    border: none;
    border-radius: 4px;
    background: #1a8a4a;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}

    .db-dsp-ok:hover[b-pynfoyz8fy] {
        background: #157a40;
    }

/* Delete status popup — teal accent only beside the heading (like Voucher Type popup) */
.db-dsp-card[b-pynfoyz8fy] {
    border-left: none;
}

.db-dsp-head[b-pynfoyz8fy] {
    border-left: 4px solid #2bb39a;
}

/* Summary — Year-VoucherType (VTTY): compact grid like the legacy page
   (sized to its columns instead of stretching across the screen). */
.db-table.db-yearwise[b-pynfoyz8fy] {
    width: auto !important;
    min-width: 0 !important;
    table-layout: auto !important;
}

    .db-table.db-yearwise th:first-child[b-pynfoyz8fy],
    .db-table.db-yearwise td:first-child[b-pynfoyz8fy] {
        width: 180px !important;
        min-width: 180px !important;
        white-space: nowrap;
    }

    .db-table.db-yearwise th:not(:first-child)[b-pynfoyz8fy],
    .db-table.db-yearwise td:not(:first-child)[b-pynfoyz8fy] {
        width: 72px !important;
        min-width: 72px !important;
        max-width: 90px !important;
        white-space: nowrap;
        padding-left: 8px;
        padding-right: 10px;
    }

/* Details grid — e-invoice (IRN) marker in place of the coloured square (legacy RounDiv2_qr / G_QRCODE_24) */
.db-irn-qr[b-pynfoyz8fy] {
    padding: 0;
    border: none;
    background: transparent;
    color: #1a2537;
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    vertical-align: middle;
}

    .db-irn-qr:hover[b-pynfoyz8fy] {
        color: #3949ab;
    }

/* /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: 8px 10px 14px;
    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;
}

/* Site name / period — same type as BSPL's page title + subtitle
   (.bspl-title-block h1 / .bspl-subtitle in common-page-chrome.css) */
.gl-site-strip-name[b-dv6ihzvhpq] {
    margin: 0 0 2px 0;
    font-size: 22px;
    font-weight: 100;
    color: #1ab394;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.1;
    cursor: pointer;
    transition: opacity 0.15s;
}

    .gl-site-strip-name:hover[b-dv6ihzvhpq] {
        opacity: 0.8;
    }

.gl-site-strip-period[b-dv6ihzvhpq] {
    font-size: 12px;
    font-weight: 400;
    color: #999;
    cursor: pointer;
}

/* From–To dates and SET DEFAULT side by side */
.gl-site-strip-period-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 4px 14px;
}

.gl-set-default-btn[b-dv6ihzvhpq] {
    background: none;
    border: none;
    padding: 0;
    margin-top: 0 !important; /* same row as the dates now */
    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;
    cursor: pointer;
    transition: color .12s;
}

    .gl-change-period-label:hover[b-dv6ihzvhpq] {
        color: #1ab99a;
    }

.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: 28px;
    margin-left: 12px;
    border-radius: 3px;
    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: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
    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;
    }

/* ── "… …" FY-wise vouchers dropdown (legacy drpvcount) ── */
.gl-ot-wrap[b-dv6ihzvhpq] {
    position: relative;
    display: inline-block;
    margin-left: 6px;
    vertical-align: middle;
}

.gl-ot-btn[b-dv6ihzvhpq] {
    border: 1px solid #d1d5db;
    background: #fff;
    color: #374151;
    border-radius: 3px;
    padding: 0 6px;
    height: 18px;
    line-height: 16px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1px;
    cursor: pointer;
}

    .gl-ot-btn:hover[b-dv6ihzvhpq],
    .gl-ot-btn[aria-expanded="true"][b-dv6ihzvhpq] {
        border-color: #1AB99A;
        color: #1AB99A;
    }

/* click-outside closer */
.gl-ot-backdrop[b-dv6ihzvhpq] {
    position: fixed;
    inset: 0;
    z-index: 40;
}

.gl-ot-menu[b-dv6ihzvhpq] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 41;
    width: 300px;
    margin: 0;
    padding: 6px;
    list-style: none;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
}

.gl-ot-row[b-dv6ihzvhpq] {
    display: grid;
    grid-template-columns: 25% 25% 25% 25%;
    align-items: center;
    height: 30px;
    padding: 0 6px;
    font-size: 12px;
    color: #374151;
    border-bottom: 1px solid #f1f5f9;
    text-align: right;
}

    .gl-ot-row:last-child[b-dv6ihzvhpq] {
        border-bottom: none;
    }

    .gl-ot-row:hover[b-dv6ihzvhpq] {
        background: #f0fdf9;
    }

.gl-ot-fy[b-dv6ihzvhpq] {
    font-weight: 600;
}

.gl-ot-cnt[b-dv6ihzvhpq] {
    color: #1AB99A;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* ── 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;
    }

        /* Vouchers / Monthly header icon (was "Y" / "M" letters).
           FA6 name for v4 "fa fa-file-text"; solid glyph lives in the 900
           face, so override the 400 above. text-muted = Bootstrap grey. */
        .gl-hdr-icon-badge i.fa-file-lines[b-dv6ihzvhpq] {
            font-weight: 900;
            font-size: 13px;
        }

.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: #1AB394;
    font-weight: 400;
    width: 145px; /* +65px gap before value (was 80) — Stats/Vouchers keys +65 too */
    font-size: 12px;
}

.gl-info-val[b-dv6ihzvhpq] {
    color: #374151;
    font-weight: 400;
}

    .gl-info-val.gl-teal[b-dv6ihzvhpq] {
        color: #374151 !important;
    }

/* ── 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-size: 13px;
    }

        .gl-stat-icon i.ti[b-dv6ihzvhpq] {
            font-weight: 400; /* Tabler has no bold face */
        }

        .gl-stat-icon i.fa-solid[b-dv6ihzvhpq] {
            font-weight: 900; /* FA6 solid glyphs live only in 900 face */
        }

/* Key column fixed so the value box starts exactly where the Site card's
   values start. Tables here are border-box: icon td 50 + key td 80 (incl.
   its 13px right pad) + value td pad 13 = 143px. Stats: 14 + 26 + 10 gap
   + 83 key + 10 gap = 143px. (Was 96 → 13px too far right.) */
.gl-stat-key[b-dv6ihzvhpq] {
    flex: 0 0 148px; /* was 83 — +65, stays aligned with Site value column */
    color: #1AB394;
}

.gl-stat-val[b-dv6ihzvhpq] {
    flex: 0 0 60px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: #374151;
}

/* ── Voucher types ── */
.gl-vtypes[b-dv6ihzvhpq] {
    padding: 8px 14px;
}

.gl-vtype-row[b-dv6ihzvhpq] {
    display: grid;
    /* 14 pad + 125 key + 4 gap = 143px → same value column as the Site
       and Stats cards above (3 cards line up). */
    /* 2nd key column = 1st (190) + its own 14px padding-left/divider, so
       CrN→value spacing matches CON→value exactly (was 70px → cramped). */
    grid-template-columns: 190px minmax(60px, 1fr) 204px minmax(60px, 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: #1AB394;
    font-weight: 600;
    white-space: nowrap;
}

    .gl-vt-key:nth-child(3)[b-dv6ihzvhpq] {
        padding-left: 14px;
        border-left: 0.5px solid #f3f4f6;
    }

/* Value sits in a fixed 80px box right after its key (right-aligned
   inside it), so the rest of each 1fr column becomes open space before
   the next key — values no longer pushed to the far edge. */
.gl-vt-val[b-dv6ihzvhpq] {
    justify-self: start;
    width: 60px;
    color: #374151;
    text-align: right;
    padding-right: 0;
    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: #1AB99A !important;
    white-space: nowrap;
}

.gl-month-val[b-dv6ihzvhpq] {
    color: #374151;
    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;
}

/* Login details user name — same look as Voucher type keys (.gl-vt-key):
   13px, weight 600, #1AB394. Scoped to the login card only. */
.gl-card-login .gl-rtable td.gl-teal[b-dv6ihzvhpq] {
    color: #1AB394 !important;
    font-weight: 600;
    font-size: 13px;
    white-space: nowrap;
}

/* ── Modals ── */
/* Overlay — same dim + blur as masters-forms.css .uf-overlay */
.gl-modal-overlay[b-dv6ihzvhpq] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}


/* All landing popups: curved 12px card, master shadow/border. Header is
   the global masters-forms.css .uf-header/.uf-title/.uf-close (green
   gradient + left accent bar) — overflow:hidden clips it to the curve. */
.gl-modal[b-dv6ihzvhpq] {
    background: #fff;
    border: 1px solid #e7ebf2;
    border-radius: 12px;
    width: 100%;
    max-width: 420px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
    overflow: hidden;
}

.gl-modal-wide[b-dv6ihzvhpq] {
    max-width: 620px;
}

/* .gl-modal-header / -title / -close removed — replaced by masters-forms.css
   .uf-header / .uf-title / .uf-close in GainsLanding.razor markup. */

.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-submit:focus[b-dv6ihzvhpq] {
        outline: none !important;
        box-shadow: none !important;
    }

    /* keyboard (Tab) focus: no black ring, soft teal ring + darker bg instead */
    .gl-pwd-submit:focus-visible[b-dv6ihzvhpq] {
        outline: none !important;
        background: #15a389;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.35) !important;
    }

.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;
    /* minmax(0,…) — plain 1fr lets a long site name blow the column out */
    grid-template-columns: minmax(0, 50%) minmax(0, 50%) !important;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    gap: 0;
    padding: 0 !important;
}

.gl-cs-left[b-dv6ihzvhpq] {
    border-right: 1px solid #f3f4f6;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    overflow: hidden; /* long names can never widen this column */
}

.gl-cs-right[b-dv6ihzvhpq] {
    min-width: 0;
    max-width: 100%;
}

.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;
    min-width: 0;
    overflow-x: hidden;
    overflow-y: auto;
    max-height: 220px;
    padding: 4px 0;
}

.gl-cs-site-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    min-width: 0;
    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;
    }

    /* Login-picker style: default site highlighted + first */
    .gl-cs-site-row.is-default[b-dv6ihzvhpq] {
        border: 1.5px solid #1AB99A;
        border-radius: 8px;
        margin: 6px 8px;
        background: #fff;
    }

.gl-cs-site-avatar[b-dv6ihzvhpq] {
    width: 30px;
    height: 30px;
    border-radius: 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    background: #eafbf6;
    color: #0d9480;
    border: 1px solid #b9ede1;
    margin-right: 10px;
    flex: 0 0 auto;
}

.gl-cs-site-row.is-default .gl-cs-site-avatar[b-dv6ihzvhpq] {
    background: #1AB99A;
    color: #fff;
    border-color: #1AB99A;
}

.gl-cs-site-info[b-dv6ihzvhpq] {
    flex: 1;
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    min-width: 0;
}

.gl-cs-site-name[b-dv6ihzvhpq] {
    color: inherit;
    font-weight: 600;
    white-space: normal !important; /* long names wrap instead of pushing layout */
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
}

.gl-cs-site-id[b-dv6ihzvhpq] {
    font-size: 11px;
    color: #9ca3af;
}

.gl-cs-site-badge[b-dv6ihzvhpq] {
    background: #1AB99A;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    padding: 3px 8px;
    border-radius: 6px;
    margin-left: 8px;
    flex: 0 0 auto;
}

.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: #2f5fa0;
    cursor: pointer;
}

/* icon + invisible native date input; picker anchors to the input */
.gl-cs-cal-wrap[b-dv6ihzvhpq] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.gl-cs-cal-hidden[b-dv6ihzvhpq] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
    border: 0;
    padding: 0;
    margin: 0;
}

.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 32px 7px 10px; /* right room for the custom arrow */
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
    cursor: pointer;
    /* native arrow off — custom chevron, vertically centred, same inset on all browsers */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 10px center / 12px 12px;
    text-overflow: ellipsis;
    transition: border-color 0.15s, box-shadow 0.15s;
}

    .gl-sd-select[b-dv6ihzvhpq]::-ms-expand {
        display: none;
    }

    .gl-sd-select:hover[b-dv6ihzvhpq] {
        border-color: #1AB99A;
    }

    .gl-sd-select:focus[b-dv6ihzvhpq] {
        border-color: #1AB99A;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231AB99A' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    }

/* Set Default: [-] date [+] */
.gl-sd-date-row[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 6px;
}

    .gl-sd-date-row .gl-sd-date-cell[b-dv6ihzvhpq] {
        flex: 1;
    }

.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: #2f5fa0;
    flex-shrink: 0;
    cursor: pointer; /* clickable → opens native date picker */
}

.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-pl-site[b-dv6ihzvhpq] {
    font-size: 13px;
    font-weight: 600;
    color: #374151;
    margin-bottom: -4px;
}

.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;
}

/* Set Default: date columns shrink to content, Site column takes the rest.
   Scoped to .gl-sd-table — .gl-sd-date-cell is shared with Period Lock. */
.gl-sd-table th:nth-child(2)[b-dv6ihzvhpq], .gl-sd-table th:nth-child(3)[b-dv6ihzvhpq],
.gl-sd-table td:nth-child(2)[b-dv6ihzvhpq], .gl-sd-table td:nth-child(3)[b-dv6ihzvhpq] {
    width: 1%;
    white-space: nowrap;
}

.gl-sd-table td:first-child[b-dv6ihzvhpq] {
    width: auto;
}

.gl-sd-table .gl-sd-select[b-dv6ihzvhpq] {
    min-width: 200px;
}

.gl-sd-table .gl-sd-date-cell[b-dv6ihzvhpq],
.gl-sd-table .gl-sd-date-row .gl-sd-date-cell[b-dv6ihzvhpq] {
    box-sizing: border-box;
    flex: none;
    width: 136px;
    min-width: 0;
}

.gl-sd-table .gl-sd-date-input[b-dv6ihzvhpq] {
    min-width: 0;
    width: 100%;
}

/* ── 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 12px;
        gap: 6px;
    }

    .gl-site-strip[b-dv6ihzvhpq] {
        position: relative;
        padding-right: 52px; /* room for pinned logout */
    }

    .gl-site-strip-right[b-dv6ihzvhpq] {
        gap: 6px;
        width: 100%;
        flex-wrap: nowrap;
    }

    .gl-change-period-label[b-dv6ihzvhpq] {
        width: auto;
        margin: 0 4px 0 0;
        white-space: nowrap;
        font-size: 11px;
    }

    .gl-period-btn[b-dv6ihzvhpq] {
        flex: 1 1 0;
        padding: 5px 4px;
        font-size: 11px;
        white-space: nowrap;
        text-align: center;
    }

    .gl-logout-btn[b-dv6ihzvhpq] {
        position: absolute;
        top: 10px;
        right: 12px;
        margin-left: 0;
    }

    .gl-set-default-btn[b-dv6ihzvhpq] {
        margin-top: 2px;
    }

    .gl-change-period-label[b-dv6ihzvhpq] {
        display: none; /* buttons self-explain; save width */
    }

    .gl-site-strip[b-dv6ihzvhpq] {
        flex-wrap: nowrap;
        align-items: center;
        padding: 8px 10px;
        gap: 6px;
    }

    .gl-site-strip-left-wrap[b-dv6ihzvhpq] {
        flex: 1 1 auto;
        min-width: 0;
    }

    /* BSPL mobile title sizes (16px / 11px) */
    .gl-site-strip-name[b-dv6ihzvhpq] {
        font-size: 16px;
        line-height: 1.2;
    }

    .gl-site-strip-period[b-dv6ihzvhpq] {
        font-size: 11px;
    }

    .gl-set-default-btn[b-dv6ihzvhpq] {
        margin-top: 2px;
        font-size: 10.5px;
    }

    .gl-site-strip-right[b-dv6ihzvhpq] {
        width: auto;
        flex: 0 0 auto;
        gap: 3px;
        flex-wrap: nowrap;
    }

    .gl-change-period-label[b-dv6ihzvhpq] {
        display: none;
    }

    .gl-period-btn[b-dv6ihzvhpq] {
        padding: 3px 5px;
        font-size: 10px;
        border-radius: 3px;
        flex: 0 0 auto;
    }

    .gl-logout-btn[b-dv6ihzvhpq] {
        position: static;
        width: 26px;
        height: 24px;
        margin-left: 4px;
        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] {
        /* 14 + 106 + 4 = 124px → matches mobile Site/Stats value column */
        grid-template-columns: 130px 1fr; /* was 106 — +24 */
        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: 88px; /* was 64 — +24 gap on mobile */
        }

    /* mobile Site value column: 50 + 64 (key, border-box) + 10 = 124px
       stats: 14 + 26 + 10 + 64 + 10 = 124px */
    .gl-stat-key[b-dv6ihzvhpq] {
        flex-basis: 88px;
    }
}

@media (max-width: 480px) {
    .gl-site-strip-name[b-dv6ihzvhpq] {
        font-size: 15px;
    }

    .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;
    }
/* ItemGroup (FA brands dropbox) / Item (FA cube) — same teal */
.gl-stat-icon i.fa-cube[b-dv6ihzvhpq],
.gl-stat-icon i.fa-dropbox[b-dv6ihzvhpq] {
    color: #1AB99A;
}

/* Brands font has only weight 400 — keep the tile's bold (700) off it */
.gl-stat-icon i.fa-dropbox[b-dv6ihzvhpq] {
    font-weight: 400;
}
/* ── Period Lock: typed text date + hidden native picker + clear ── */
.gl-pl-date-cell[b-dv6ihzvhpq] {
    position: relative;
}

.gl-pl-cal-icon[b-dv6ihzvhpq] {
    cursor: pointer;
    pointer-events: auto;
}

.gl-pl-text[b-dv6ihzvhpq] {
    cursor: text;
    min-width: 160px;
}

    .gl-pl-text[b-dv6ihzvhpq]::placeholder {
        color: #9ca3af;
        font-size: 12px;
    }

.gl-pl-picker[b-dv6ihzvhpq] {
    /* invisible native <input type=date>, opened via calendar icon → showPicker() */
    position: absolute;
    left: 0;
    top: 0;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
    border: 0;
    padding: 0;
}

.gl-pl-clear[b-dv6ihzvhpq] {
    border: none;
    background: none;
    color: #9ca3af;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
    margin-left: 4px;
}

    .gl-pl-clear:hover[b-dv6ihzvhpq] {
        color: #dc2626;
    }


/* ══ Footer MENU button ══ */
.gl-footer[b-dv6ihzvhpq] {
    position: relative;
}

.gl-footer-menu-btn[b-dv6ihzvhpq] {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    height: 26px;
    padding: 0 12px;
    border: none;
    border-radius: 3px;
    background: #1AB99A;
    color: #fff;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .3px;
    cursor: pointer;
}

    .gl-footer-menu-btn:hover[b-dv6ihzvhpq] {
        background: #0d9480;
    }

/* ══ Footer DAY CLOSE (always shown) — left edge lined up with the
   "Login Period" button by gainsAlignDayClose (JS sets inline left).
   left:12px is only the fallback before/without alignment. ══ */
.gl-footer-dayclose-btn[b-dv6ihzvhpq] {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1;
    height: 26px;
    padding: 0 12px;
    border: none;
    border-radius: 3px;
    background: #e8590c;
    color: #fff;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .3px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

    .gl-footer-dayclose-btn:hover:not(:disabled)[b-dv6ihzvhpq] {
        background: #c2410c;
    }

    .gl-footer-dayclose-btn:disabled[b-dv6ihzvhpq] {
        opacity: .7;
        cursor: wait;
    }

/* ══ Day Close toast — generated PDF links (backup to auto-download) ══ */
.gl-dc-links[b-dv6ihzvhpq] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-left: 8px;
}

    .gl-dc-links a[b-dv6ihzvhpq] {
        color: inherit;
        font-weight: 600;
        text-decoration: underline;
        white-space: nowrap;
    }

/* ══ Quick menu popup ══ */
.gl-qm-modal[b-dv6ihzvhpq] {
    position: relative;
    width: min(800px, 96vw);
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e7ebf2;
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
    overflow: hidden;
}

    /* Master header stays pinned while the menu body scrolls */
    .gl-qm-modal > .uf-header[b-dv6ihzvhpq] {
        flex-shrink: 0;
    }

.gl-qm-body[b-dv6ihzvhpq] {
    /*background: linear-gradient(135deg, #c9e8ef 0%, #e4f3ef 45%, #cfe8df 100%);*/
}

/* .gl-qm-x / .gl-qm-hdr / .gl-qm-brand / .gl-qm-tag removed — header is .uf-header now. */

.gl-qm-body[b-dv6ihzvhpq] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 20px 30px 56px;
    display: flex;
    flex-direction: column;
    gap: 26px;
}

.gl-qm-row[b-dv6ihzvhpq] {
    display: grid;
    gap: 32px;
}

.gl-qm-row-2[b-dv6ihzvhpq] {
    grid-template-columns: repeat(2, 1fr);
}

.gl-qm-row-3[b-dv6ihzvhpq] {
    grid-template-columns: repeat(3, 1fr);
}

.gl-qm-row-4[b-dv6ihzvhpq] {
    grid-template-columns: repeat(4, 1fr);
}

.gl-qm-card[b-dv6ihzvhpq] {
    background: #fff;
    display: flex;
    flex-direction: column;
}

.gl-qm-card-hdr[b-dv6ihzvhpq] {
    background: #efefef;
    min-height: 48px;
    padding: 0 15px;
    display: flex;
    align-items: center;
    font-size: 12.5px;
    color: #475569;
    text-transform: uppercase;
}

.gl-qm-list[b-dv6ihzvhpq] {
    padding: 0 20px;
}

.gl-qm-item[b-dv6ihzvhpq] {
    display: flex;
    align-items: center;
    gap: 14px;
    height: 39px;
    border-bottom: 1px solid #e5e7eb;
    font-size: 12.5px;
    color: #475569;
    cursor: pointer;
}

    .gl-qm-item:last-child[b-dv6ihzvhpq] {
        border-bottom: none;
    }

    .gl-qm-item:hover .gl-qm-label[b-dv6ihzvhpq] {
        color: #1AB99A;
    }

.gl-qm-ico[b-dv6ihzvhpq] {
    width: 30px;
    flex-shrink: 0;
    font-size: 12px;
    color: #64748b;
}

.gl-qm-label[b-dv6ihzvhpq] {
    flex: 1;
    transition: color .12s;
}

.gl-qm-ico-end[b-dv6ihzvhpq] {
    color: #64748b;
    font-size: 13px;
}

.gl-qm-tile[b-dv6ihzvhpq] {
    height: 48px;
    border: none;
    background: #efefef;
    padding: 0 15px;
    text-align: left;
    font-size: 12.5px;
    color: #475569;
    cursor: pointer;
}

    .gl-qm-tile:hover[b-dv6ihzvhpq] {
        background: #e2e8f0;
        color: #1AB99A;
    }

.gl-qm-foot[b-dv6ihzvhpq] {
    display: flex;
    justify-content: flex-end;
    padding: 8px 8px;
    background: #fff;
    border-top: 1px solid #e5e7eb;
    flex-shrink: 0;
}

.gl-qm-close-btn[b-dv6ihzvhpq] {
    border: none;
    border-radius: 3px;
    background: #1AB99A;
    color: #fff;
    padding: 7px 13px;
    font-size: 13px;
    cursor: pointer;
}

    .gl-qm-close-btn:hover[b-dv6ihzvhpq] {
        background: #0d9480;
    }

@media (max-width: 767px) {
    .gl-qm-body[b-dv6ihzvhpq] {
        padding: 16px 14px 24px;
        gap: 16px;
    }

    .gl-qm-row[b-dv6ihzvhpq] {
        gap: 14px;
    }

    .gl-qm-row-2[b-dv6ihzvhpq], .gl-qm-row-3[b-dv6ihzvhpq] {
        grid-template-columns: 1fr;
    }

    .gl-qm-row-4[b-dv6ihzvhpq] {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* =====================================================================
   RESPONSIVE POLISH — Site / Stats / Vouchers / Monthly cards
   (appended last so it wins over the earlier per-breakpoint rules)
   ===================================================================== */

/* Mid desktop (901–1200px): the left column is narrower here, so the
   desktop 190 + 204 voucher keys would overflow. Keep the 1st column's
   alignment with Site/Stats, shrink only the 2nd key column. */
@media (min-width: 901px) and (max-width: 1200px) {
    .gl-vtype-row[b-dv6ihzvhpq] {
        grid-template-columns: 190px minmax(44px, 1fr) 84px minmax(44px, 1fr);
    }
}

/* Tablet + phone (≤900px): dashboard is stacked, cards are full width */
@media (max-width: 900px) {
    /* Site card — show every row, no tiny inner scrollbar */
    .gl-card-site[b-dv6ihzvhpq] {
        height: auto !important;
    }

        .gl-card-site .gl-info-table-wrap[b-dv6ihzvhpq] {
            max-height: none;
            overflow: visible;
        }

    .gl-info-val[b-dv6ihzvhpq] {
        word-break: break-word;
        line-height: 1.35;
    }

    /* Vouchers — room for two pairs side by side again (was stacked):
       14 + 130 + 4 = 148px → same value column as Site/Stats (88px keys) */
    .gl-vtype-row[b-dv6ihzvhpq] {
        grid-template-columns: 130px minmax(44px, 1fr) 84px minmax(44px, 1fr);
        row-gap: 0;
        padding: 9px 0;
    }

    .gl-vt-key:nth-child(3)[b-dv6ihzvhpq] {
        padding-left: 12px;
        padding-top: 0;
        border-top: none;
        border-left: 0.5px solid #f3f4f6;
    }

    .gl-vt-val:nth-child(4)[b-dv6ihzvhpq] {
        padding-top: 0;
        border-top: none;
    }

    .gl-vt-val[b-dv6ihzvhpq] {
        width: 52px;
    }

    /* Monthly — a touch more breathing room per row */
    .gl-month-row[b-dv6ihzvhpq] {
        padding-top: 7px;
        padding-bottom: 7px;
    }
}

/* Phone (≤480px): tighter keys, vouchers stack one pair per line */
@media (max-width: 480px) {
    .gl-info-table td.gl-info-key[b-dv6ihzvhpq] {
        width: 76px;
    }

    .gl-stat-key[b-dv6ihzvhpq] {
        flex-basis: 76px;
    }

    .gl-stat-row[b-dv6ihzvhpq] {
        padding-top: 7px;
        padding-bottom: 7px;
    }

    /* 14 + 118 + 4 = 136 → Site: 50 + 76 + 10 = 136, Stats: 14+26+10+76+10 = 136 */
    .gl-vtype-row[b-dv6ihzvhpq] {
        grid-template-columns: 118px 1fr;
        row-gap: 0;
        padding: 0;
        border-bottom: none;
    }

        .gl-vtype-row > *[b-dv6ihzvhpq] {
            padding-top: 8px;
            padding-bottom: 8px;
            border-bottom: 0.5px solid #f3f4f6;
        }

    .gl-vt-key:nth-child(3)[b-dv6ihzvhpq] {
        padding-left: 0;
        border-left: none;
    }

    .gl-vt-val[b-dv6ihzvhpq] {
        width: 56px;
    }

    .gl-card-hdr[b-dv6ihzvhpq] {
        font-size: 11px;
        gap: 8px;
    }
}

/* =====================================================================
   MOBILE — Change Site/Period + Set Default popups
   .gl-modal-wide is used only by these two modals, so everything here is
   scoped to it (Change Password / Period Lock untouched).
   Appended last so it wins over the desktop rules above.
   ===================================================================== */
@media (max-width: 640px) {
    /* :has() avoided — Blazor CSS isolation rewriter doesn't reliably scope it */
    .gl-modal-overlay[b-dv6ihzvhpq] {
        padding: 10px;
    }

    /* fit the screen: header + footer fixed, body scrolls */
    .gl-modal-wide[b-dv6ihzvhpq] {
        max-width: 100%;
        max-height: calc(100dvh - 20px);
        display: flex;
        flex-direction: column;
    }

        .gl-modal-wide > .uf-header[b-dv6ihzvhpq],
        .gl-modal-wide > .gl-modal-footer[b-dv6ihzvhpq] {
            flex-shrink: 0;
        }

        .gl-modal-wide > .gl-modal-body[b-dv6ihzvhpq] {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
        }

        .gl-modal-wide .gl-modal-footer[b-dv6ihzvhpq] {
            padding: 10px 14px 12px;
        }

        .gl-modal-wide .gl-modal-submit-btn[b-dv6ihzvhpq] {
            width: 100% !important;
        }

    /* ── Change Site/Period: site list on top, dates below ── */
    .gl-changesite-body[b-dv6ihzvhpq] {
        grid-template-columns: minmax(0, 1fr) !important;
        overflow-y: auto;
    }

    .gl-cs-left[b-dv6ihzvhpq] {
        border-right: none;
        border-bottom: 1px solid #f3f4f6;
    }

    .gl-cs-site-list[b-dv6ihzvhpq] {
        max-height: 180px;
    }

    .gl-cs-right[b-dv6ihzvhpq] {
        padding: 12px 14px;
    }

    .gl-cs-date-row[b-dv6ihzvhpq] {
        padding: 6px 8px;
    }

    /* 16px stops iOS zoom-on-focus */
    .gl-cs-date-input[b-dv6ihzvhpq] {
        font-size: 16px;
        min-width: 0;
    }

    .gl-cs-cal-icon[b-dv6ihzvhpq] {
        font-size: 18px;
    }

    .gl-cs-yr-btn[b-dv6ihzvhpq] {
        width: 28px;
        height: 28px;
    }

    .gl-cs-fy-btns[b-dv6ihzvhpq] {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    /* ── Set Default: table → stacked rows (Site / From Date / To Date) ── */
    .gl-modal-wide > .gl-modal-body:not(.gl-changesite-body)[b-dv6ihzvhpq] {
        padding: 14px 14px 16px;
    }

    .gl-sd-table[b-dv6ihzvhpq],
    .gl-sd-table tbody[b-dv6ihzvhpq],
    .gl-sd-table tr[b-dv6ihzvhpq],
    .gl-sd-table td[b-dv6ihzvhpq] {
        display: block;
        width: 100%;
    }

        .gl-sd-table thead[b-dv6ihzvhpq] {
            display: none;
        }

        .gl-sd-table td[b-dv6ihzvhpq],
        .gl-sd-table td:nth-child(2)[b-dv6ihzvhpq],
        .gl-sd-table td:nth-child(3)[b-dv6ihzvhpq] {
            width: 100%;
            padding: 0 0 12px;
            white-space: normal;
        }

            .gl-sd-table td[b-dv6ihzvhpq]::before {
                display: block;
                margin-bottom: 5px;
                font-size: 12px;
                font-weight: 600;
                color: #374151;
            }

            .gl-sd-table td:nth-child(1)[b-dv6ihzvhpq]::before {
                content: "Site";
            }

            .gl-sd-table td:nth-child(2)[b-dv6ihzvhpq]::before {
                content: "From Date";
            }

            .gl-sd-table td:nth-child(3)[b-dv6ihzvhpq]::before {
                content: "To Date";
            }

        .gl-sd-table .gl-sd-select[b-dv6ihzvhpq] {
            min-width: 0;
            width: 100%;
            font-size: 16px;
            padding: 9px 34px 9px 10px;
            background-position: right 12px center;
        }

        .gl-sd-table .gl-sd-date-cell[b-dv6ihzvhpq],
        .gl-sd-table .gl-sd-date-row .gl-sd-date-cell[b-dv6ihzvhpq] {
            width: 100%;
            flex: 1 1 auto;
            padding: 8px 10px;
        }

        .gl-sd-table .gl-sd-date-display[b-dv6ihzvhpq] {
            font-size: 15px;
        }

        .gl-sd-table .gl-sd-cal-icon[b-dv6ihzvhpq] {
            font-size: 18px;
        }

        .gl-sd-table .gl-cs-yr-btn[b-dv6ihzvhpq] {
            width: 30px;
            height: 30px;
        }
}

/* ══ Day Close popup — GlobalDatepicker From (read-only) / To (editable) ══ */
.gl-dcp-modal[b-dv6ihzvhpq] {
    max-width: 340px;
    overflow: visible; /* let the GlobalDatepicker calendar spill out of the card */
}

    /* overflow is visible now — round the green header ourselves */
    .gl-dcp-modal > .uf-header[b-dv6ihzvhpq] {
        border-radius: 12px 12px 0 0;
    }

.gl-dcp-row[b-dv6ihzvhpq] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* From Date: inert wrapper — greyed, no clicks / focus */
.gl-dcp-ro[b-dv6ihzvhpq] {
    opacity: .6;
    pointer-events: none;
    user-select: none;
}
/* /Components/Pages/Landing/SalesRepLanding.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-2ygbywpw0j], .gains-content[b-2ygbywpw0j] {
    --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-2ygbywpw0j] {
    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-2ygbywpw0j] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    height: 100%;
}

/* ── Site strip ── */
.gl-site-strip[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.gl-site-strip-name[b-2ygbywpw0j] {
    font-size: 14px;
    font-weight: 700;
    color: #1AB99A;
    cursor: pointer;
    letter-spacing: 0.02em;
    transition: opacity 0.15s;
}

    .gl-site-strip-name:hover[b-2ygbywpw0j] {
        opacity: 0.8;
        text-decoration: underline;
    }

.gl-site-strip-period[b-2ygbywpw0j] {
    font-size: 11.5px;
    color: #64748b;
}

.gl-set-default-btn[b-2ygbywpw0j] {
    display: block;
    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-2ygbywpw0j] {
        opacity: 0.75;
    }

.gl-site-strip-right[b-2ygbywpw0j] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.gl-change-period-label[b-2ygbywpw0j] {
    font-size: 11.5px;
    color: #64748b;
    margin-right: 2px;
    font-weight: 500;
}

.gl-period-btn[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #f0f4f9;
    }

    .gl-period-btn.active[b-2ygbywpw0j] {
        border-color: #9ca3af;
        font-weight: 500;
    }

/* ── Welcome bar ── */
.gl-welcome-bar[b-2ygbywpw0j] {
    background: #f0fdf9;
    border-bottom: 1px solid #a7f3d0;
    padding: 6px 20px;
    font-size: 12px;
    color: #374151;
    flex-shrink: 0;
}

    .gl-welcome-bar strong[b-2ygbywpw0j] {
        color: #1AB99A;
        font-weight: 700;
    }

/* ── Error banner ── */
.gl-error-banner[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

    .gl-content-scroll[b-2ygbywpw0j]::-webkit-scrollbar {
        width: 4px;
    }

    .gl-content-scroll[b-2ygbywpw0j]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 4px;
    }

/* ── Loading ── */
.gl-loading-center[b-2ygbywpw0j] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: #1AB99A;
}

.gl-spin[b-2ygbywpw0j] {
    animation: gl-spin-b-2ygbywpw0j 0.85s linear infinite;
    display: inline-block;
}

.gl-spin-lg[b-2ygbywpw0j] {
    font-size: 32px;
}

@keyframes gl-spin-b-2ygbywpw0j {
    to {
        transform: rotate(360deg);
    }
}

/* .gl-footer now lives in common-page-chrome.css (aliased alongside .bspl-footer) */

.gl-footer-link[b-2ygbywpw0j] {
    color: #1AB99A;
    text-decoration: none;
    font-weight: 500;
}

    .gl-footer-link:hover[b-2ygbywpw0j] {
        text-decoration: underline;
    }

/* ── Dashboard grid ── */
.gl-dashboard[b-2ygbywpw0j] {
    display: flex;
    flex-direction: row;
    gap: 14px;
    padding: 16px 20px;
    align-items: stretch; /* both columns same total height */
}

.gl-left-col[b-2ygbywpw0j],
.gl-right-col[b-2ygbywpw0j] {
    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-2ygbywpw0j],
.gl-card-login[b-2ygbywpw0j] {
    flex: 1;
}

/* Vouchers and Monthly grow equally to fill bottom row */
.gl-card-vouchers[b-2ygbywpw0j],
.gl-card-monthly[b-2ygbywpw0j] {
    flex: 1;
}

.gl-col-span-2[b-2ygbywpw0j] {
    width: 100%;
}

/* ── Cards ── */
.gl-card[b-2ygbywpw0j] {
    background: #fff;
    border-radius: 10px;
    border: 0.5px solid #dde3ed;
}

.gl-card-site[b-2ygbywpw0j], .gl-card-login[b-2ygbywpw0j], .gl-card-stats[b-2ygbywpw0j], .gl-card-monthly[b-2ygbywpw0j], .gl-card-vouchers[b-2ygbywpw0j] {
    display: flex;
    flex-direction: column;
}

/* Row 1 fixed height */
.gl-card-site[b-2ygbywpw0j] {
    height: 240px;
}

.gl-card-login[b-2ygbywpw0j] {
    flex: 1;
    min-height: 0;
}

.gl-card-site .gl-info-table-wrap[b-2ygbywpw0j] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    height: 100%;
}

    .gl-card-site .gl-info-table-wrap[b-2ygbywpw0j]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-site .gl-info-table-wrap[b-2ygbywpw0j]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-login-scroll[b-2ygbywpw0j] {
    max-height: 220px;
    overflow-y: auto;
    min-height: 0;
}

    .gl-card-login .gl-login-scroll[b-2ygbywpw0j]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-login .gl-login-scroll[b-2ygbywpw0j]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

.gl-card-login .gl-rtable td[b-2ygbywpw0j] {
    padding: 5px 14px;
    font-size: 12px;
}

.gl-card-login .gl-rtable th[b-2ygbywpw0j] {
    padding: 5px 14px;
    font-size: 10.5px;
    position: sticky;
    top: 0;
    z-index: 1;
    background: #fafafa;
}

.gl-card-stats[b-2ygbywpw0j] {
    justify-content: flex-start;
}

.gl-card-monthly .gl-months[b-2ygbywpw0j] {
    flex: 1;
}

.gl-card-vouchers .gl-vtypes[b-2ygbywpw0j] {
    flex: 1;
    overflow-y: auto;
    max-height: 160px;
}

    .gl-card-vouchers .gl-vtypes[b-2ygbywpw0j]::-webkit-scrollbar {
        width: 3px;
    }

    .gl-card-vouchers .gl-vtypes[b-2ygbywpw0j]::-webkit-scrollbar-thumb {
        background: #dde3ed;
        border-radius: 3px;
    }

/* ── Card header ── */
.gl-card-hdr[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        color: #1AB99A;
    }

    .gl-card-hdr small[b-2ygbywpw0j] {
        font-size: 11px;
        font-weight: 400;
        color: #9ca3af;
    }

/* ── Info table ── */
.gl-info-table[b-2ygbywpw0j] {
    width: 100%;
    border-collapse: collapse;
}

    .gl-info-table tr[b-2ygbywpw0j] {
        border-bottom: 0.5px solid #f3f4f6;
    }

        .gl-info-table tr:last-child[b-2ygbywpw0j] {
            border-bottom: none;
        }

    .gl-info-table td[b-2ygbywpw0j] {
        padding: 5px 14px;
        font-size: 12.5px;
        vertical-align: middle;
    }

.gl-info-icon[b-2ygbywpw0j] {
    width: 32px;
    color: #9ca3af;
    font-size: 15px;
    text-align: center;
}

.gl-info-key[b-2ygbywpw0j] {
    color: #9ca3af;
    font-weight: 400;
    width: 80px;
    font-size: 12px;
}

.gl-info-val[b-2ygbywpw0j] {
    color: #374151;
    font-weight: 400;
}

    .gl-info-val.gl-teal[b-2ygbywpw0j] {
        color: #1AB99A !important;
        font-weight: 500;
    }

/* Party / Depo not assigned — legacy dark-red text */
.gl-info-val.gl-none[b-2ygbywpw0j] {
    color: #8b1a1a;
    font-weight: 600;
}

/* ── Password row ── */
.gl-pwd[b-2ygbywpw0j] {
    color: #9ca3af !important;
    font-size: 11px !important;
    font-style: italic;
    font-weight: 400 !important;
}

.gl-pwd-row[b-2ygbywpw0j] {
    cursor: pointer;
    transition: background 0.12s;
}

    .gl-pwd-row:hover[b-2ygbywpw0j] {
        background: #f8fafc;
    }

.gl-pwd-change-hint[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    opacity: 1;
}

/* ── Stats ── */
.gl-stat-row[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        border-bottom: none;
    }

.gl-stat-icon[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    flex: 1;
    color: #374151;
}

.gl-stat-val[b-2ygbywpw0j] {
    font-weight: 700;
    color: #1AB99A;
}

/* ── Voucher types ── */
.gl-vtypes[b-2ygbywpw0j] {
    padding: 8px 14px;
}

.gl-vtype-row[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        border-bottom: none;
    }

.gl-vt-key[b-2ygbywpw0j] {
    color: #374151;
    font-weight: 600;
}

.gl-vt-val[b-2ygbywpw0j] {
    color: #1AB99A;
    font-weight: 700;
    text-align: right;
    padding-right: 10px;
}

/* ── FY buttons ── */
.gl-fy-btns[b-2ygbywpw0j] {
    display: flex;
    gap: 6px;
    padding: 10px 14px;
    border-top: 0.5px solid #f3f4f6;
    background: #fafafa;
}

.gl-fy-btn[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #f0f4f9;
    }

    .gl-fy-btn.active[b-2ygbywpw0j] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

.gl-fy1-btn[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #1AB99A;
        color: #fff;
        border-color: #1AB99A;
    }

/* ── Right table (login log) ── */
.gl-rtable[b-2ygbywpw0j] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

    .gl-rtable th[b-2ygbywpw0j] {
        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-2ygbywpw0j] {
        padding: 8px 14px;
        border-bottom: 0.5px solid #f9fafb;
        color: #374151;
    }

    .gl-rtable tbody tr:last-child td[b-2ygbywpw0j] {
        border-bottom: none;
    }

/* ── Monthly vouchers ── */
.gl-months[b-2ygbywpw0j] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    padding: 10px 14px;
    gap: 2px;
}

.gl-month-row[b-2ygbywpw0j] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 4px;
    border-bottom: 0.5px solid #f9fafb;
    font-size: 12px;
}

.gl-month-name[b-2ygbywpw0j] {
    font-weight: 600;
    color: #374151;
    min-width: 32px;
}

.gl-month-val[b-2ygbywpw0j] {
    color: #1AB99A;
    font-weight: 700;
}

/* ── Utilities ── */
.gl-teal[b-2ygbywpw0j] {
    color: #1AB99A !important;
}

/* ── Modals ── */
.gl-modal-overlay[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    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-2ygbywpw0j] {
    max-width: 620px;
}

.gl-modal-header[b-2ygbywpw0j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px 14px;
    border-bottom: 0.5px solid #f3f4f6;
}

.gl-modal-title[b-2ygbywpw0j] {
    font-size: 16px;
    font-weight: 600;
    color: #1AB99A;
}

.gl-modal-close[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        color: #374151;
    }

.gl-modal-body[b-2ygbywpw0j] {
    padding: 20px 22px 24px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gl-modal-footer[b-2ygbywpw0j] {
    padding: 12px 22px 16px;
    border-top: 0.5px solid #f3f4f6;
    display: flex;
    justify-content: flex-end;
}

.gl-modal-submit-btn[b-2ygbywpw0j] {
    width: auto !important;
    padding: 9px 28px !important;
    margin-top: 0 !important;
}

/* ── Password inputs ── */
.gl-pwd-input[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }

    .gl-pwd-input[b-2ygbywpw0j]::placeholder {
        color: #9ca3af;
    }

.gl-pwd-submit[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #15a389;
    }

    .gl-pwd-submit:disabled[b-2ygbywpw0j] {
        opacity: 0.6;
        cursor: not-allowed;
    }

.gl-pwd-error[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
    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-2ygbywpw0j] {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    padding: 0 !important;
}

.gl-cs-left[b-2ygbywpw0j] {
    border-right: 1px solid #f3f4f6;
    display: flex;
    flex-direction: column;
}

.gl-cs-col-hdr[b-2ygbywpw0j] {
    padding: 10px 16px;
    font-size: 11.5px;
    color: #64748b;
    background: #fafafa;
    border-bottom: 1px solid #f3f4f6;
    font-weight: 500;
}

.gl-cs-site-list[b-2ygbywpw0j] {
    flex: 1;
    overflow-y: auto;
    max-height: 220px;
    padding: 4px 0;
}

.gl-cs-site-row[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #f0f4f9;
    }

    .gl-cs-site-row.active[b-2ygbywpw0j] {
        background: #f0fdf9;
        color: #1AB99A;
        font-weight: 600;
    }

.gl-cs-site-name[b-2ygbywpw0j] {
    flex: 1;
    color: inherit;
}

.gl-cs-site-id[b-2ygbywpw0j] {
    font-size: 11px;
    color: #9ca3af;
    margin-left: 8px;
}

.gl-cs-right[b-2ygbywpw0j] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px 16px;
}

.gl-cs-date-row[b-2ygbywpw0j] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e5e7eb;
    border-radius: 7px;
    padding: 6px 10px;
    background: #fafafa;
}

.gl-cs-yr-btn[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #1AB99A;
        color: #fff;
    }

.gl-cs-date-input[b-2ygbywpw0j] {
    flex: 1;
    border: none;
    background: none;
    font-size: 13px;
    font-family: inherit;
    color: #374151;
    outline: none;
}

.gl-cs-cal-icon[b-2ygbywpw0j] {
    font-size: 16px;
    color: #9ca3af;
}

.gl-cs-fy-btns[b-2ygbywpw0j] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.gl-cs-fy-btn[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        background: #f0fdf9;
        border-color: #1AB99A;
        color: #1AB99A;
    }

/* ── Set Default modal ── */
.gl-sd-table[b-2ygbywpw0j] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .gl-sd-table th[b-2ygbywpw0j] {
        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-2ygbywpw0j] {
        padding: 10px 12px;
    }

.gl-sd-select[b-2ygbywpw0j] {
    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-2ygbywpw0j] {
        border-color: #1AB99A;
    }

.gl-sd-date-cell[b-2ygbywpw0j] {
    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-2ygbywpw0j], .gl-sd-date-cell:focus-within[b-2ygbywpw0j] {
        border-color: #1AB99A;
    }

.gl-sd-cal-icon[b-2ygbywpw0j] {
    font-size: 16px;
    color: #1AB99A;
    flex-shrink: 0;
    pointer-events: none;
}

.gl-sd-date-input[b-2ygbywpw0j] {
    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-2ygbywpw0j]::-webkit-calendar-picker-indicator {
        cursor: pointer;
        opacity: 0.7;
    }

        .gl-sd-date-input[b-2ygbywpw0j]::-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-2ygbywpw0j] {
        flex-direction: column;
        padding: 12px 14px;
        gap: 12px;
    }

    .gl-left-col[b-2ygbywpw0j],
    .gl-right-col[b-2ygbywpw0j] {
        gap: 12px;
    }

    .gl-toggle-label[b-2ygbywpw0j] {
        display: none;
    }

    .gl-gains-toggle[b-2ygbywpw0j] {
        padding: 8px 10px;
    }

    /* Site strip — let left/right groups stack instead of squeezing */
    .gl-site-strip[b-2ygbywpw0j] {
        padding: 8px 12px 6px;
        gap: 6px;
    }

    .gl-site-strip-right[b-2ygbywpw0j] {
        gap: 4px;
        width: 100%;
    }

    .gl-change-period-label[b-2ygbywpw0j] {
        width: 100%;
        margin-bottom: 2px;
    }

    .gl-period-btn[b-2ygbywpw0j] {
        padding: 4px 9px;
        font-size: 11px;
    }

    .gl-welcome-bar[b-2ygbywpw0j] {
        padding: 6px 12px;
        font-size: 11px;
        line-height: 1.5;
    }

    .gl-error-banner[b-2ygbywpw0j] {
        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-2ygbywpw0j],
    .gl-card-image[b-2ygbywpw0j] {
        height: 180px;
    }

    .gl-card-hdr[b-2ygbywpw0j] {
        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-2ygbywpw0j] {
        grid-template-columns: 1fr 1fr;
        row-gap: 2px;
    }

    /* Monthly vouchers — 3 columns is cramped on phones */
    .gl-months[b-2ygbywpw0j] {
        grid-template-columns: 1fr 1fr;
        padding: 8px 10px;
    }

    .gl-info-table td[b-2ygbywpw0j] {
        padding: 5px 10px;
        font-size: 12px;
    }

    .gl-info-key[b-2ygbywpw0j] {
        width: 64px;
    }
}

@media (max-width: 480px) {
    .gl-site-strip-name[b-2ygbywpw0j] {
        font-size: 13px;
    }

    .gl-card-site[b-2ygbywpw0j],
    .gl-card-image[b-2ygbywpw0j] {
        height: 150px;
    }

    .gl-months[b-2ygbywpw0j] {
        grid-template-columns: 1fr;
    }

    .gl-fy-btns[b-2ygbywpw0j],
    .gl-fy-btn[b-2ygbywpw0j] {
        font-size: 10.5px;
    }
}

/* ── Right column wrapper — image + login stacked ── */
.gl-right-col[b-2ygbywpw0j] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ── Site image card ── */
.gl-card-image[b-2ygbywpw0j] {
    padding: 0;
    overflow: hidden;
    border-radius: 10px;
    height: 240px;
    flex-shrink: 0;
}

.gl-site-image[b-2ygbywpw0j] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.cal-badge[b-2ygbywpw0j] {
    background: linear-gradient(135deg, #f97316, #db2777);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    font-weight: 800;
    letter-spacing: .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%;
}

/* Page title — BSPL's root wrapper is .bspl-page (font-family: 'Open Sans',
   'Segoe UI', Arial), not .mu-page/.lp-page (font-family: Arial) like this
   page. Arial has no real thin/100 face, so masters-forms.css's shared
   ".bspl-title-block h1 { font-weight:100 }" just renders as plain
   Regular here, while Segoe UI (what 'Open Sans' resolves to, since it
   isn't actually loaded) does ship a genuine light face — that's what
   made BSPL's title look visibly thinner despite the identical weight.
   Matched here so this title reads the same thinness as BSPL's. */
.bspl-title-block h1[b-9dgbuyfgnu] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}

.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;
    }

.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;
}

/* Filter panel — From/To date boxes, master text-box look (.gdp-wrap has
   no default height, so without this it renders oversized); same fix as
   QLedger's .ql-date-fld / BSPL's .bspl-date-fld / DocumentGrid's .dg-date-fld. */
.lp-date-fld[b-9dgbuyfgnu]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .lp-date-fld[b-9dgbuyfgnu]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .lp-date-fld[b-9dgbuyfgnu]  .gdp-wrap:focus,
    .lp-date-fld[b-9dgbuyfgnu]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .lp-date-fld[b-9dgbuyfgnu]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.lp-date-fld[b-9dgbuyfgnu]  .gdp-icon {
    color: #1a56a7;
}

.lp-date-fld[b-9dgbuyfgnu]  .gdp-value {
    font-weight: 400;
}

.lp-date-fld .gcp-trigger[b-9dgbuyfgnu],
.lp-date-fld[b-9dgbuyfgnu]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .lp-date-fld .gcp-trigger:hover[b-9dgbuyfgnu],
    .lp-date-fld[b-9dgbuyfgnu]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.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;
    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;
    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: 6px;
    width: 95%;
    max-width: 460px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.2);
    overflow: visible; /* ISD dropdown must escape the card */
    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);
    }

/* Forgot password — ISD code dropdown inside the Mobile No input */
.modal-ccode-wrap[b-2ua8mk68tf] {
    position: relative;
}

.modal-ccode[b-2ua8mk68tf] {
    position: absolute;
    left: 8px;
    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;
}

.modal-input.modal-input-ccode[b-2ua8mk68tf] {
    padding-left: 102px;
}

.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;
    }

/* Card no longer clips (ISD dropdown), so round header/footer corners directly */
.modal-card > .uf-header[b-2ua8mk68tf] {
    border-top-left-radius: 6px;
    border-top-right-radius: 6px;
}

.modal-card > .modal-foot[b-2ua8mk68tf] {
    border-bottom-left-radius: 6px;
    border-bottom-right-radius: 6px;
}

/* ══ ISD code picker (flag + dial code) — login form + forgot password ══
   Sits in the same slot the old <select> used (.gains-ccode / .modal-ccode give
   position + width + divider). transform is dropped so the fixed .isd-overlay
   isn't trapped inside this box; top/bottom/margin keep it vertically centred. */
.isd-picker.gains-ccode[b-2ua8mk68tf],
.isd-picker.modal-ccode[b-2ua8mk68tf] {
    transform: none;
    top: 0;
    bottom: 0;
    margin: auto 0;
    padding: 0;
}

.isd-trigger[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 5px;
    width: 100%;
    height: 100%;
    padding: 0 6px 0 4px;
    border: none;
    background: transparent;
    font: inherit;
    font-size: 13px;
    color: #374151;
    cursor: pointer;
}

    .isd-trigger:disabled[b-2ua8mk68tf] {
        cursor: not-allowed;
        opacity: .6;
    }

.isd-flag[b-2ua8mk68tf] {
    width: 20px;
    height: 14px;
    object-fit: cover;
    border-radius: 2px;
    box-shadow: 0 0 0 1px rgba(0,0,0,.08);
    flex-shrink: 0;
}

.isd-caret[b-2ua8mk68tf] {
    font-size: 12px;
    color: #9ca3af;
    margin-left: auto;
}

.isd-overlay[b-2ua8mk68tf] {
    position: fixed;
    inset: 0;
    z-index: 50;
    background: transparent;
}

.isd-list[b-2ua8mk68tf] {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    width: 150px;
    z-index: 60;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    box-shadow: 0 10px 28px rgba(15,23,42,.14);
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.isd-search[b-2ua8mk68tf] {
    width: 100%;
    height: 30px;
    padding: 0 8px;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    font: inherit;
    font-size: 12.5px;
    outline: none;
    box-sizing: border-box;
}

    .isd-search:focus[b-2ua8mk68tf] {
        border-color: #1AB99A;
    }

.isd-items[b-2ua8mk68tf] {
    max-height: 220px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.isd-item[b-2ua8mk68tf] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border: none;
    background: transparent;
    border-radius: 4px;
    font: inherit;
    font-size: 13px;
    color: #374151;
    text-align: left;
    cursor: pointer;
}

    .isd-item:hover[b-2ua8mk68tf] {
        background: #f3fcf9;
    }

.isd-item-active[b-2ua8mk68tf] {
    background: #d6f2ea;
    color: #0f1923;
}

/* Keyboard highlight (arrow keys) */
.isd-item-hl[b-2ua8mk68tf] {
    box-shadow: inset 0 0 0 1.5px #1AB99A;
    background: #f3fcf9;
}

    .isd-item-hl.isd-item-active[b-2ua8mk68tf] {
        background: #d6f2ea;
    }

/* Force Login dialog: Log In btn is auto-focused on open (see Login.razor
   FocusForceLoginJs) — drop browser's thick black focus outline. Button lives
   in shared ConfirmationDialog, so ::deep under this page's scoped root. */
.gains-login-page[b-2ua8mk68tf]  .mu-confirm-login:focus,
.gains-login-page[b-2ua8mk68tf]  .mu-confirm-login:focus-visible {
    outline: none;
}
/* /Components/Pages/Logout.razor.rz.scp.css */
/* =====================================================================
   GAINS — Logout.razor.css
   One idea: signing out = closing the books. The accounting double rule
   (the line under a final total) draws across while the session clears.
   Palette from the app shell: sidebar navy, transaction blue, teal accent.
   ===================================================================== */

.lo-page[b-lct9tkl7i4] {
    --lo-paper: #f4f7fb;
    --lo-ink: #14243b;
    --lo-muted: #5d6f86;
    --lo-navy: #0f2340;
    --lo-blue: #306B9C;
    --lo-teal: #1ab394;

    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background:
        radial-gradient(1200px 600px at 50% -10%, #e6eef8 0%, transparent 60%),
        var(--lo-paper);
    color: var(--lo-ink);
    font-family: inherit;
}

.lo-block[b-lct9tkl7i4] {
    width: 100%;
    max-width: 360px;
    text-align: center;
}

/* Logout circle — same look as the Confirm logout modal's icon circle */
.lo-mark[b-lct9tkl7i4] {
    width: 64px;
    height: 64px;
    margin: 0 auto 26px;
    border-radius: 50%;
    background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
    box-shadow: 0 0 0 8px rgba(254, 226, 226, .35);
    display: flex;
    align-items: center;
    justify-content: center;
}

.lo-mark-ico[b-lct9tkl7i4] {
    font-size: 26px;
    font-weight: 900; /* FA6 solid face */
    color: #b91c1c;
    line-height: 1;
    margin-left: 3px; /* optical centre — arrow points right */
}

.lo-title[b-lct9tkl7i4] {
    margin: 0 0 8px;
    font-size: 24px;
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -.3px;
    color: var(--lo-ink);
}

.lo-sub[b-lct9tkl7i4] {
    margin: 0;
    font-size: 14px;
    line-height: 1.55;
    color: var(--lo-muted);
}

/* ── Double rule ─────────────────────────────────────────────────── */
.lo-rule[b-lct9tkl7i4] {
    position: relative;
    width: 180px;
    height: 7px;
    margin: 28px auto 24px;
}

.lo-rule-line[b-lct9tkl7i4] {
    position: absolute;
    left: 0;
    height: 2px;
    width: 100%;
    border-radius: 2px;
    background: var(--lo-blue);
    transform-origin: left center;
    transform: scaleX(0);
    animation: lo-draw-b-lct9tkl7i4 1.1s cubic-bezier(.65, 0, .35, 1) infinite;
}

.lo-rule-1[b-lct9tkl7i4] {
    top: 0;
}

.lo-rule-2[b-lct9tkl7i4] {
    top: 5px;
    background: var(--lo-teal);
    animation-delay: .18s;
}

@keyframes lo-draw-b-lct9tkl7i4 {
    0%   { transform: scaleX(0);  transform-origin: left center; }
    45%  { transform: scaleX(1);  transform-origin: left center; }
    55%  { transform: scaleX(1);  transform-origin: right center; }
    100% { transform: scaleX(0);  transform-origin: right center; }
}

.lo-foot[b-lct9tkl7i4] {
    margin: 0;
    font-size: 12.5px;
    color: var(--lo-muted);
    opacity: .85;
}

/* Reduced motion — show the finished double rule, no movement */
@media (prefers-reduced-motion: reduce) {
    .lo-rule-line[b-lct9tkl7i4] {
        animation: none;
        transform: scaleX(1);
    }
}

@media (max-width: 480px) {
    .lo-title[b-lct9tkl7i4] {
        font-size: 21px;
    }

    .lo-mark[b-lct9tkl7i4] {
        width: 56px;
        height: 56px;
        margin-bottom: 22px;
    }

    .lo-mark-ico[b-lct9tkl7i4] {
        font-size: 22px;
    }
}
/* /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.
   Page fill, card spacing, title bar and popup shell come from the
   ms-page / ms-title / ms-pop opt-in classes there (same as
   Login Master / ItemBrand). 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;
    }

/* 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;
    }

/* Assign Routes popup's checklist (matches the old form — this list just
   scrolls inside a fixed-height box instead of a pager; the main grid
   above it paginates normally via the shared mu-pages footer). */
.ar-scroll[b-yy89l4gfip] {
    max-height: 420px;
    overflow-y: auto;
}

@media (max-width: 767px) {
    .mu-foot-info[b-yy89l4gfip] {
        display: none;
    }
}

/* =====================================================================
   Level-master theme (page backdrop, footer pinning, pager, popup spacing)
   ===================================================================== */
.mu-page[b-yy89l4gfip] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-yy89l4gfip] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 0;
}

.mu-toolbar[b-yy89l4gfip] {
    flex-shrink: 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;
}

.mu-pager[b-yy89l4gfip] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.db-page-current[b-yy89l4gfip] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-yy89l4gfip] {
    font-size: 12px;
}

.uf-field[b-yy89l4gfip] {
    margin-bottom: 11px;
}
/* /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). */
/* Gray page backdrop + square card corners — same as Login / Level master.
   Plain (not ::deep) selector: .mu-page is this component's own root
   element, so a "[b-x] .mu-page" descendant selector would never match. */
.mu-page[b-k0607ulibo] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

[b-k0607ulibo] .mu-card {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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 pinning + pager — same as Login / Level master.
   ===================================================================== */
[b-k0607ulibo] .mu-foot {
    flex-shrink: 0;
}

[b-k0607ulibo] .bspl-footer-right {
    font-size: inherit;
    color: inherit;
}

[b-k0607ulibo] .mu-pager {
    display: flex;
    align-items: center;
    gap: 12px;
}

[b-k0607ulibo] .db-page-current {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

[b-k0607ulibo] .bspl-footer .db-page-current {
    font-size: 12px;
}

/* ── Mobile: "New" header button — icon only, stays top-right ── */
@media (max-width: 767px) {
    [b-k0607ulibo] .bspl-title-actions {
        margin-left: auto;
    }

        [b-k0607ulibo] .bspl-title-actions .mu-btn-label {
            display: none;
        }

    [b-k0607ulibo] .mu-foot-info {
        display: none;
    }
}
/* /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;
    }

/* Page-end footer pinning + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-oqjgkcjxq5] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-oqjgkcjxq5] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

.mu-pager[b-oqjgkcjxq5] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-oqjgkcjxq5] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-oqjgkcjxq5] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-oqjgkcjxq5] {
        display: none;
    }
}

/* 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 + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-je5kgbbh6g] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-je5kgbbh6g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-je5kgbbh6g] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-je5kgbbh6g] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-je5kgbbh6g] {
        display: none;
    }
}

/* 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: 0; /* .mu-page.pg-gap10 already gives the 10px gap; 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. */
    /* Card fills the entry pane (whatever room the page leaves below the
       title bar), body scrolls, footer stays pinned at the bottom. The
       viewport-based max-height is only a safety cap — a hard
       100vh - 100px height overshot the real free space and clipped the
       footer. */
    height: auto;
    max-height: calc(100vh - 100px);
    min-height: 0;
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    border-radius: 10px;
    border: 1px solid #e7eaec;
    box-shadow: 0 2px 10px rgba(15, 23, 42, .08);
    overflow: hidden;
    /* Same width cap as SalesRep's popup (.srx-popup-modal max-width). */
    width: 100%;
    max-width: 1100px;
}

@media (max-width: 767px) {
    .clx-popup-modal.clx-inline[b-n08s5bx5gs] {
        height: auto;
        /* 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. */
        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. */
/* ::deep — the <form> is rendered by EditForm (a child component), so it
   carries no scoped-CSS attribute; a plain .clx-popup-form rule never matched
   and the body/footer never got their flex sizing (no scroll, footer not
   pinned). Same pattern as SalesRepEdit's .srx-popup-form. */
.clx-popup-modal[b-n08s5bx5gs]  .clx-popup-form {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    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). */
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 18px;
    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. */
    flex-shrink: 0;
    z-index: 5;
    background: #ffffff;
}

/* 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(2, minmax(0, 1fr));
    column-gap: 48px;
    row-gap: 12px;
    align-items: center;
}

.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;
}

@media (max-width: 1365px) {
    .clx-fgrid[b-n08s5bx5gs] { column-gap: 32px; }
}

@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: 12px;
}

.clx-field-h .clx-label[b-n08s5bx5gs] {
    flex: 0 0 140px;
    width: 140px;
    max-width: 140px;
    margin: 0;
    font-size: 13px;
    font-weight: 400;
    color: #334155;
    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] {
    /* Controls take 80% of the space right of the label. */
    flex: 0 1 80%;
    min-width: 0;
    max-width: 80%;
}

.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: 80%;
}

@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). */

/* Input / select / textarea box styling comes from the shared .ms-box rules
   in wwwroot/CSS/masters-forms.css (no local override). */

.clx-upper[b-n08s5bx5gs] {
    text-transform: uppercase;
}

.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;
    min-height: 34px;
    /* Box lines up with the input column: 140px label + 12px gap. */
    padding-left: 152px;
}

@media (max-width: 480px) {
    .clx-check[b-n08s5bx5gs] { padding-left: 0; }
}

.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: #306b9c;
        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;
}

/* Fill the entry card: body scrolls, footer stays pinned at the bottom. */
.cet-root[b-urzpxltou9] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.cet-body[b-urzpxltou9] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 18px;
    background: #F5F7F8;
}

.cet-footer[b-urzpxltou9] {
    flex-shrink: 0;
    /* .bspl-footer is a fixed 40px bar — too short for 12px padding + the
       Goto Page select, which got clipped. */
    height: auto;
    min-height: 56px;
    margin: 0;
    padding: 12px 18px;
    border-top: 1px solid #D9E4EC;
    background: #ffffff;
}

.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%;
    }
}

/* ── Grid uses the shared ClientGrid look (masters-forms.css .mu-table /
   .mu-foot / .mu-del); only the bits it has no class for live here. ── */

.cet-table-wrap[b-urzpxltou9] {
    height: auto;
    overflow: visible;
}

.mu-del.cet-edit[b-urzpxltou9] {
    color: #1a56a7;
    border-color: #cfdcf0;
}

    .mu-del.cet-edit:hover[b-urzpxltou9] {
        background: #eef4fb;
        border-color: #a9c0e6;
    }

.cet-no-rows[b-urzpxltou9] {
    text-align: center;
    padding: 14px;
    color: #94a3b8;
}
/* /Components/Pages/Masters/ClientFilterPanel.razor.rz.scp.css */
/* Small accents on top of the shared mu-drawer styling (masters-forms.css). */

/* Drawer chrome (header / body / Clear Filters + GO footer) is the shared
   mu-drawer styling — same as the Yarn filter drawers. */

/* Date boxes + clear-date icon — same as YarnPackingGrid's filter drawer
   (.ypg-date-fld / .gcp-trigger). ::deep because .gdp-wrap is rendered by
   GlobalDatepicker. Label-free: only the controls show. */
.ypg-date-fld[b-kwpkm45yzr]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-kwpkm45yzr]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-kwpkm45yzr]  .gdp-wrap:focus,
    .ypg-date-fld[b-kwpkm45yzr]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-kwpkm45yzr]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-kwpkm45yzr]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-kwpkm45yzr]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-kwpkm45yzr] {
    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-kwpkm45yzr] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-kwpkm45yzr] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/* /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%;
    /* No page-level scrollbar: the grid / entry card scroll internally when
       they have many rows or fields. */
    overflow: hidden;
}

.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;
    /* Same side gap as .mu-page.pg-gap10 > .mu-card — keeps the entry view
       off the navigation panel edge. */
    margin: 0 var(--pg-gap, 10px) var(--pg-gap, 10px);
}

.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: #306b9c;
        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. Grid / footer / Save button use the
   shared ClientGrid look (masters-forms.css .mu-table, .mu-foot, .uf-btn-save). */

.cln-toolbar[b-2f2m08xajk] {
    display: flex;
    padding: 0 2px 14px;
}

.cln-field[b-2f2m08xajk] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 260px;
    max-width: 420px;
    flex: 1 1 320px;
}

    .cln-field label[b-2f2m08xajk] {
        font-size: 12.5px;
        font-weight: 600;
        color: #475569;
    }

.cln-table-wrap[b-2f2m08xajk] {
    height: auto;
    overflow: visible;
}

.cln-chk[b-2f2m08xajk] {
    width: 40px;
    text-align: center;
}

.cln-row-selected td[b-2f2m08xajk] {
    background: #EAF8F4;
}

/* Fill the entry card: body scrolls, uf-footer (same as MLoginEdit) stays
   pinned at the bottom. */
.cln-root[b-2f2m08xajk] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.cln-body[b-2f2m08xajk] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 18px;
    background: #F5F7F8;
}

.cln-footer[b-2f2m08xajk] {
    flex-shrink: 0;
    justify-content: space-between;
    padding: 12px 18px;
    border-top: 1px solid #D9E4EC;
    background: #ffffff;
}

@media (max-width: 767px) {
    .cln-field[b-2f2m08xajk] {
        min-width: 100%;
        max-width: 100%;
    }
}
/* /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/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;
    }

/* =====================================================================
   Login/Level-master theme (page backdrop, footer pinning, pager) —
   same block as LevelMaster.razor.css / RouteMaster.razor.css.
   ===================================================================== */
.mu-page[b-zng4dm9t9x] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-zng4dm9t9x] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 0;
}

.mu-toolbar[b-zng4dm9t9x] {
    flex-shrink: 0;
}

.mu-table-wrap[b-zng4dm9t9x] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-zng4dm9t9x] {
    flex-shrink: 0;
}

.bspl-footer-right[b-zng4dm9t9x] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-zng4dm9t9x] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.db-page-current[b-zng4dm9t9x] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-zng4dm9t9x] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-zng4dm9t9x] {
        display: none;
    }
}
/* /Components/Pages/Masters/GST.razor.rz.scp.css */
/* GST.razor.css — scoped styles for the GST list page.
   Page fill, card spacing, green pager and title bar come from
   masters-forms.css (ms-page). */

/* 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;
}

/* /Components/Pages/Masters/GSTEdit.razor.rz.scp.css */
/* GSTEdit.razor.css — scoped styles for the GST Master modal.
   Popup shell, field rows and entry boxes come from masters-forms.css
   (ms-pop / ms-form). */

.uf-modal-sm.gst-modal[b-wain6udpxg] { max-width: 480px; }

.gst-select[b-wain6udpxg] {
    appearance: auto;
}

.uf-footer-right[b-wain6udpxg] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.gst-modal[b-wain6udpxg] {
    border-radius: 6px;
}
/* /Components/Pages/Masters/HSNDescriptionEdit.razor.rz.scp.css */
/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.ms-form[b-zfkvhrd7ut] {
    border-radius: 6px;
    max-width: 480px;   /* compact popup - default .uf-modal is 780px */
}
/* /Components/Pages/Masters/ICategoryEdit.razor.rz.scp.css */
/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.ms-form[b-4ky5qk8if4] {
    border-radius: 6px;
    max-width: 480px;   /* compact popup - default .uf-modal is 780px */
}
/* /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 */
/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.ms-form[b-pgo6529jwl] {
    border-radius: 6px;
    max-width: 480px;   /* compact popup - default .uf-modal is 780px */
}
/* /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;
    }

/* Page-end footer pinning + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-txhrgv78nx] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-txhrgv78nx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-txhrgv78nx] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-txhrgv78nx] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-txhrgv78nx] {
        display: none;
    }
}

/* 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/ItemGallery.razor.rz.scp.css */
/* Item Gallery (ITEMGALLERY tab) — laid out like the old page: site band, Select All /
   DOWNLOAD / Excel bar, responsive cards, footer with Total Records. Palette = the app's
   (teal #1ab394 accent, light grey bands). */
.ig-wrap[b-2lmttxs2hg] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    padding: 12px 16px 16px;
    text-align: left;
}

/* Cards scroll in their own area; site band, tool bar and footer stay put. */
.ig-scroll[b-2lmttxs2hg] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.ig-site[b-2lmttxs2hg] {
    flex-shrink: 0;
    background: #f3f3f3;
    border-bottom: 1px solid #d9d9d9;
    padding: 10px 12px;
    margin-bottom: 12px;
    font-size: 14px;
    font-weight: 700;
    color: #0f172a;
}

.ig-bar[b-2lmttxs2hg],
.ig-foot[b-2lmttxs2hg] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
    color: #334155;
}

.ig-bar[b-2lmttxs2hg] { margin-bottom: 12px; flex-shrink: 0; }

.ig-foot[b-2lmttxs2hg] {
    flex-shrink: 0;
    margin-top: 10px;
    padding: 10px 12px;
    background: #f3f3f3;
}

.ig-chk[b-2lmttxs2hg],
.ig-only[b-2lmttxs2hg] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}

.ig-only[b-2lmttxs2hg] { margin-left: auto; }

.ig-btn[b-2lmttxs2hg] {
    background: #1ab394;
    color: #fff;
    border: 1px solid #1ab394;
    border-radius: 4px;
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

    .ig-btn:hover:not(:disabled)[b-2lmttxs2hg] { background: #159a80; border-color: #159a80; }
    .ig-btn:disabled[b-2lmttxs2hg] { opacity: .5; cursor: not-allowed; }

.ig-xls[b-2lmttxs2hg] {
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    color: #1d6f42;
    font-size: 16px;
    padding: 3px 9px;
    cursor: pointer;
}

    .ig-xls:hover:not(:disabled)[b-2lmttxs2hg] { background: #eef7f1; }
    .ig-xls:disabled[b-2lmttxs2hg] { opacity: .5; cursor: not-allowed; }

.ig-note[b-2lmttxs2hg] { color: #64748b; font-size: 12px; }
.ig-total[b-2lmttxs2hg] { font-weight: 600; }

.ig-msg[b-2lmttxs2hg] {
    padding: 40px 16px;
    text-align: center;
    color: #64748b;
    font-size: 14px;
}

.ig-grid[b-2lmttxs2hg] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}

.ig-card[b-2lmttxs2hg] {
    border: 1px solid #cfd6df;
    background: #fff;
    display: flex;
    flex-direction: column;
    padding: 0 0 8px;
}

    .ig-card.ig-off[b-2lmttxs2hg] { opacity: 0.78; }
    .ig-card.ig-picked[b-2lmttxs2hg] { border-color: #1ab394; box-shadow: 0 0 0 1px #1ab394; }

.ig-head[b-2lmttxs2hg] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    background: #f1f3f6;
    font-size: 12.5px;
}

.ig-code[b-2lmttxs2hg] { font-weight: 700; color: #1e293b; }
.ig-ok[b-2lmttxs2hg] { color: #00b050; }
.ig-no[b-2lmttxs2hg] { color: #dc2626; }
.ig-id[b-2lmttxs2hg] { margin-left: auto; color: #94a3b8; font-size: 11px; }

.ig-name[b-2lmttxs2hg] {
    padding: 6px 10px 4px;
    font-size: 12.5px;
    color: #0f172a;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.8em;
}

.ig-photo[b-2lmttxs2hg] {
    height: 150px;
    margin: 4px 10px 8px;
    background: #f8fafc;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

    .ig-photo.ig-click[b-2lmttxs2hg] { cursor: zoom-in; }

    .ig-photo img[b-2lmttxs2hg] {
        width: 100%;
        height: 100%;
        object-fit: contain;
        display: block;
    }

.ig-ph[b-2lmttxs2hg] {
    color: #cbd5e1;
    font-size: 34px;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    display: flex;
}

.ig-meta[b-2lmttxs2hg] {
    display: flex;
    justify-content: space-between;
    margin: 0 10px;
    font-size: 12px;
    color: #1a2537;
}
/* /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%;
    background: #f3f3f4;
}

.mu-card[b-83zcw6pn4d] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

.mu-pager[b-83zcw6pn4d] {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-83zcw6pn4d] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-83zcw6pn4d] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-83zcw6pn4d] {
        display: none;
    }
}

/* 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/ItemRateEdit.razor.rz.scp.css */
/* ItemRateEdit.razor.css — let the GlobalDatepicker popup overflow the modal/body
   instead of being clipped (modal is overflow:hidden, .uf-body overflow-y:auto in
   masters-forms.css), which forced an inner scrollbar. */
.uf-modal.ms-form[b-lvvttk513n] { overflow: visible; }
.uf-modal.ms-form .uf-body[b-lvvttk513n] { overflow: visible; max-height: none; }
.uf-modal.ms-form .uf-header[b-lvvttk513n] { border-radius: 6px 6px 0 0; }
.uf-modal.ms-form .uf-footer[b-lvvttk513n] { border-radius: 0 0 6px 6px; }

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.ms-form[b-lvvttk513n] {
    border-radius: 6px;
    max-width: 480px;   /* compact popup - default .uf-modal is 780px */
}
/* /Components/Pages/Masters/ItemSummaryReport.razor.rz.scp.css */
/* Item Summary (REPORT tab) — plain on-screen report like the old mItemSummary
   page and the Ledger Summary: Arial 13px, white, no card. Label column ~28%,
   values start after it (old: 200px label / 500px value). */
.isr-wrap[b-ypkbscaarj] {
    flex: 1;
    overflow: auto;
    background: #fff;
    padding: 12px 16px 24px;
}

.isr-msg[b-ypkbscaarj] {
    padding: 40px 16px;
    text-align: center;
    color: #64748b;
    font-size: 14px;
}

.isr-err[b-ypkbscaarj] { color: #b91c1c; }

.isr-toolbar[b-ypkbscaarj] {
    max-width: 700px;
    margin: 0 0 6px;
    text-align: right;
}

    .isr-toolbar i[b-ypkbscaarj] {
        color: #555;
        cursor: pointer;
        font-size: 18px;
    }

        .isr-toolbar i:hover[b-ypkbscaarj] { color: #1565c0; }

.isr-sheet[b-ypkbscaarj] {
    max-width: 700px;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    color: #000;
}

.isr-title[b-ypkbscaarj] {
    text-align: left;
    font-weight: 700;
    font-size: 14px;
    padding-top: 6px;
    margin: 0 0 18px;
}

.isr-row[b-ypkbscaarj] {
    display: flex;
    padding: 4px 0;
}

.isr-l[b-ypkbscaarj] { flex: 0 0 200px; padding-right: 8px; }
.isr-v[b-ypkbscaarj] { flex: 1 1 auto; min-width: 0; word-break: break-word; }
.isr-code[b-ypkbscaarj] { font-weight: 700; }
.isr-name[b-ypkbscaarj] { font-weight: 700; }
.isr-comment[b-ypkbscaarj] { white-space: pre-line; }

.isr-ok[b-ypkbscaarj] { color: #00b050; font-weight: 700; margin-left: 24px; }
.isr-no[b-ypkbscaarj] { color: #ff0000; font-weight: 700; margin-left: 24px; }

.isr-hr[b-ypkbscaarj] {
    border: 0;
    border-top: 1px solid gray;
    margin: 12px 0 20px;
}

.isr-item[b-ypkbscaarj] {
    margin-bottom: 30px;
    padding-bottom: 6px;
}

    .isr-item + .isr-item[b-ypkbscaarj] {
        border-top: 2px solid #cbd5e1;
        padding-top: 18px;
    }
/* /Components/Pages/Masters/LedgerAuditReport.razor.rz.scp.css */
/* Ledger master AUDIT tab: entries table + "Ledger Audit" report (legacy print look). */
/* ---- 40 / 60 split: entries left, clicked report right (same page) ---- */
.la-wrap[b-wvtqg0bef7] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    background: #fff;
    padding: 12px 16px 16px;
    display: flex;
    flex-direction: column;
}

.la-split[b-wvtqg0bef7] {
    flex: 1;
    min-height: 0;
    display: flex;
    gap: 16px;
}

.la-left[b-wvtqg0bef7] {
    flex: 0 0 40%;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid #e2e8f0;
}

.la-right[b-wvtqg0bef7] {
    flex: 0 0 calc(60% - 16px);
    min-width: 0;
    min-height: 0;
    overflow: auto;
    border: 1px solid #e2e8f0;
    padding: 12px 16px 24px;
}

@media (max-width: 900px) {
    .la-wrap[b-wvtqg0bef7] { overflow: auto; }
    .la-split[b-wvtqg0bef7] { flex-direction: column; }
    .la-left[b-wvtqg0bef7], .la-right[b-wvtqg0bef7] { flex: 0 0 auto; }
    .la-left[b-wvtqg0bef7] { max-height: 45vh; }
}

/* ---- list: shared grid look (mu-card / mu-table-wrap / mu-table from masters-forms.css) ---- */
/* The shared wrap is a fixed 540px; here it fills the left panel instead, and
   the shared thead stays sticky, so only the rows scroll. */
.la-left.mu-card[b-wvtqg0bef7] { min-height: 0; border-radius: 0; }

.la-left .mu-table-wrap[b-wvtqg0bef7] {
    height: auto;
    flex: 1;
    min-height: 0;
}

.mu-table tbody tr.la-sel td[b-wvtqg0bef7] { background: #dbe8ff; }

/* ---- report toolbar ---- */
.la-toolbar[b-wvtqg0bef7] {
    margin: 0 0 8px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.la-msg[b-wvtqg0bef7] {
    padding: 40px 16px;
    text-align: center;
    color: #64748b;
    font-size: 14px;
}

.la-err[b-wvtqg0bef7] { color: #b91c1c; }

.la-print[b-wvtqg0bef7] {
    border: 1px solid #1565c0;
    background: #1565c0;
    color: #fff;
    border-radius: 4px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
}


/* ---- report sheet ---- */
.la-sheet[b-wvtqg0bef7] {
    max-width: 940px;
    margin: 0 auto;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000;
}

.la-sr[b-wvtqg0bef7] {
    color: #1a1ae6;
    font-weight: 700;
    margin-bottom: 4px;
}

.la-title[b-wvtqg0bef7] {
    text-align: center;
    font-weight: 700;
    font-size: 14px;
    margin: 6px 0 22px;
}

.la-sec[b-wvtqg0bef7] {
    font-weight: 700;
    padding: 12px 0 4px;
}

.la-hr[b-wvtqg0bef7] {
    border: 0;
    border-top: 1px solid #555;
    margin: 8px 0;
}

    .la-hr.la-thin[b-wvtqg0bef7] { border-top-color: #ccc; margin: 2px 0 10px; }

/* label | value | label | value */
.la-grid[b-wvtqg0bef7] {
    display: grid;
    grid-template-columns: 17% 33% 17% 33%;
    row-gap: 12px;
    padding: 4px 0;
}

.la-k[b-wvtqg0bef7] { font-weight: 700; padding-left: 6px; }
.la-v[b-wvtqg0bef7] { word-break: break-word; padding-right: 8px; }
.la-span[b-wvtqg0bef7] { grid-column: span 3; }
.la-print:hover[b-wvtqg0bef7] { background: #0f4f99; }

/* Show All toggle + toolbar spacing */
.la-toolbar[b-wvtqg0bef7] { gap: 8px; }

.la-showall[b-wvtqg0bef7] {
    border: 1px solid #c8c8c8;
    background: #fff;
    border-radius: 4px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
}

    .la-showall:hover[b-wvtqg0bef7] { background: #f1f5f9; }
    .la-showall.on[b-wvtqg0bef7] { background: #dbe8ff; border-color: #306b9c; }

/* Legacy: opening balance of income / expense ledgers is shown in red. */
.la-red[b-wvtqg0bef7] { color: #d00000; }

/* between reports when Show All is on */
.la-break[b-wvtqg0bef7] { margin-bottom: 28px; }

.la-th-sort[b-wvtqg0bef7] { cursor: pointer; user-select: none; }
.la-th-sort i[b-wvtqg0bef7] { margin-left: 4px; font-size: 13px; opacity: .8; }
/* /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 + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-u7fas7tt6a] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-u7fas7tt6a] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-u7fas7tt6a] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-u7fas7tt6a] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-u7fas7tt6a] {
        display: none;
    }
}

/* 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/LedgerContactsGrid.razor.rz.scp.css */
/* CONTACTS tab — uses the shared grid look (mu-alpha / mu-card / mu-table-wrap /
   mu-table / bspl-footer from masters-forms.css); only layout glue lives here. */
.lc-wrap[b-u8bavxf1cd] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.lc-alpha[b-u8bavxf1cd] {
    background: white;
    padding: 10px;
    margin-bottom: 12px;
}

.lc-card[b-u8bavxf1cd] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border-radius: 0;
}

/* ---- filter bar ---- */
.lc-filters[b-u8bavxf1cd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px 28px;
    padding: 12px 14px;
    border-bottom: 1px solid #eef2f7;
    background: #fff;
}

.lc-inputs[b-u8bavxf1cd] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

    .lc-inputs input[b-u8bavxf1cd] {
        width: 170px;
        padding: 7px 10px;
        border: 1px solid #cbd5e1;
        border-radius: 6px;
        font-size: 13px;
    }

        .lc-inputs input:focus[b-u8bavxf1cd] {
            outline: none;
            border-color: #306b9c;
            box-shadow: 0 0 0 2px rgba(48, 107, 156, .15);
        }

        .lc-inputs input:disabled[b-u8bavxf1cd] { background: #f1f5f9; cursor: not-allowed; }

.lc-go[b-u8bavxf1cd] { padding: 7px 12px; }

.lc-radios[b-u8bavxf1cd] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lc-radio[b-u8bavxf1cd], .lc-check[b-u8bavxf1cd] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    cursor: pointer;
}

.lc-hint[b-u8bavxf1cd] { font-size: 12px; margin-left: 6px; }
.lc-hint-v[b-u8bavxf1cd] { color: #8b1a1a; }
.lc-hint-c[b-u8bavxf1cd] { color: #1d6fb8; }

/* ---- grid: the shared wrap is a fixed 540px; here it fills the card instead ---- */
.lc-tablewrap[b-u8bavxf1cd] {
    height: auto;
    flex: 1;
    min-height: 0;
}

/* Fixed column widths so the footer OB total can line up under the OB column. */
.lc-table[b-u8bavxf1cd] { table-layout: fixed; }
.lc-table td[b-u8bavxf1cd], .lc-table th[b-u8bavxf1cd] { overflow: hidden; text-overflow: ellipsis; }
.lc-table thead th:nth-child(2)[b-u8bavxf1cd] { width: 110px; }   /* Led Code */
.lc-table thead th:nth-child(4)[b-u8bavxf1cd] { width: 150px; }   /* OB */
.lc-table thead th:nth-child(5)[b-u8bavxf1cd] { width: 240px; }   /* Person Name */
.lc-table thead th:nth-child(6)[b-u8bavxf1cd] { width: 140px; }   /* Mobile */
.lc-table thead th:nth-child(7)[b-u8bavxf1cd] { width: 260px; }   /* Email */

.lc-person[b-u8bavxf1cd] { margin-left: 6px; }

.mu-table td.mu-num[b-u8bavxf1cd] { text-align: right; font-variant-numeric: tabular-nums; }
.mu-table th.mu-th-num[b-u8bavxf1cd] { text-align: right; }
.mu-table td.ob-dr[b-u8bavxf1cd] { color: #1d4ed8; }
.mu-table td.ob-cr[b-u8bavxf1cd] { color: #8b1a1a; }

.lc-foot[b-u8bavxf1cd] { flex-shrink: 0; }

.lc-foot[b-u8bavxf1cd] { position: relative; }

/* OB total in the footer bar. With contacts shown, its right end sits under the OB
   column's right end: columns after OB (Person 240 + Mobile 140 + Email 260 = 640px)
   minus the chip's own 14px right padding. */
.lc-ob[b-u8bavxf1cd] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-left: auto;
    margin-right: 12px;
    padding: 4px 14px;
    font-size: 13px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.lc-ob-label[b-u8bavxf1cd] { color: #8b1a1a; }
.lc-ob-val.ob-dr[b-u8bavxf1cd] { color: #1d4ed8; }
.lc-ob-val.ob-cr[b-u8bavxf1cd] { color: #8b1a1a; }

.lc-ob-aligned[b-u8bavxf1cd] {
    position: absolute;
    right: 626px;
    top: 50%;
    transform: translateY(-50%);
    margin: 0;
}

/* Narrow screens: the grid scrolls sideways, so alignment is moot -- normal flow. */
@media (max-width: 1250px) {
    .lc-ob-aligned[b-u8bavxf1cd] {
        position: relative;
        right: auto;
        top: auto;
        transform: none;
        margin-left: auto;
        margin-right: 12px;
    }
}

/* Same colours as the GRID tab's status icons: tick green (shared .mu-check), cross red.
   .mu-cross has no colour in the shared CSS (MLedger / MItem each set it page-scoped),
   so without this the cross here rendered in the default dark text colour. */
.mu-cross[b-u8bavxf1cd] { color: #dc2626; }

/* Ledger name is a link to the ENTRY tab. */
.lc-link[b-u8bavxf1cd] {
    color: #1a56a7;
    cursor: pointer;
    text-decoration: none;
}

    .lc-link:hover[b-u8bavxf1cd] { text-decoration: underline; }
    .lc-link:focus-visible[b-u8bavxf1cd] { outline: 2px solid #306b9c; outline-offset: 2px; border-radius: 2px; }
/* /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;
    }

/* Page-end footer pinning + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-87etxmtd5l] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-87etxmtd5l] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-87etxmtd5l] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-87etxmtd5l] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-87etxmtd5l] {
        display: none;
    }
}

/* 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;
}

/* 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 "Showing a–b of N" line, inside the modal body
   (its pager lives in the modal footer, right side). */
.lsr-inner-footer[b-87etxmtd5l] {
    display: flex;
    align-items: center;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #e5e7eb;
    font-size: 12px;
    color: #6b7280;
}
/* /Components/Pages/Masters/LedgerViewReport.razor.rz.scp.css */
/* Ledger Summary (REPORT tab) — plain on-screen report like the legacy
   level2.aspx view (same look as the Sales Invoice report: Arial 12px, white,
   no "paper" card). Label column = ~half width, values start at the midline. */
.lv-wrap[b-uvhhudqf4d] {
    flex: 1;
    overflow: auto;
    background: #fff;
    padding: 12px 16px 24px;
}

.lv-msg[b-uvhhudqf4d] {
    padding: 40px 16px;
    text-align: center;
    color: #64748b;
    font-size: 14px;
}

.lv-err[b-uvhhudqf4d] { color: #b91c1c; }

.lv-toolbar[b-uvhhudqf4d] {
    max-width: 940px;
    margin: 0 auto 6px;
}

    .lv-toolbar i[b-uvhhudqf4d] {
        color: #555;
        cursor: pointer;
        font-size: 16px;
    }

        .lv-toolbar i:hover[b-uvhhudqf4d] { color: #1565c0; }

.lv-sheet[b-uvhhudqf4d] {
    max-width: 940px;
    margin: 0 auto;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000;
}

.lv-title[b-uvhhudqf4d] {
    text-align: center;
    font-weight: 700;
    padding-top: 20px;
    margin: 6px 0 22px;
}

.lv-row[b-uvhhudqf4d] {
    display: flex;
    gap: 0;
    padding: 4px 0;
}

.lv-l[b-uvhhudqf4d] { flex: 0 0 49%; padding-right: 8px; }
.lv-v[b-uvhhudqf4d] { flex: 1 1 auto; min-width: 0; word-break: break-word; }
.lv-indent[b-uvhhudqf4d] { padding-left: 6px; }
.lv-addr[b-uvhhudqf4d] { white-space: pre-line; padding-left: 6px; }

/* group path (italic, right column) */
.lv-group[b-uvhhudqf4d] { font-size: 11px; }
.lv-maroon[b-uvhhudqf4d] { color: #8b1a1a; }
.lv-name[b-uvhhudqf4d] { font-weight: 700; }

.lv-ok[b-uvhhudqf4d] { color: #16a34a; font-weight: 700; margin-left: 10px; }
.lv-no[b-uvhhudqf4d] { color: #dc2626; font-weight: 700; margin-left: 10px; }

.lv-hr[b-uvhhudqf4d] {
    border: 0;
    border-top: 1px solid #555;
    margin: 8px 0;
}

.lv-sec[b-uvhhudqf4d] {
    font-weight: 700;
    padding: 6px 0 4px;
}

.lv-city[b-uvhhudqf4d] { padding: 2px 0; }
.lv-city b[b-uvhhudqf4d] { font-weight: 700; }

/* Bank / statutory labels are blue in the legacy view. */
.lv-blue[b-uvhhudqf4d] { color: #1a3f9c; }

/* bills under Opening Balance */
.lv-bills[b-uvhhudqf4d] {
    border-collapse: collapse;
    font-size: 9px;
    margin-top: 6px;
}

    .lv-bills th[b-uvhhudqf4d] {
        text-align: left;
        text-decoration: underline;
        font-weight: 700;
        padding: 1px 34px 1px 0;
    }

    .lv-bills td[b-uvhhudqf4d] { padding: 1px 34px 1px 0; }

.lv-contacts[b-uvhhudqf4d] {
    width: 100%;
    border-collapse: collapse;
    margin: 12px 0 8px;
}

    .lv-contacts th[b-uvhhudqf4d] {
        background: #e6e6e6;
        text-align: left;
        font-weight: 700;
        padding: 3px 6px;
    }

    .lv-contacts td[b-uvhhudqf4d] { padding: 2px 6px; }

    .lv-contacts th:nth-child(1)[b-uvhhudqf4d], .lv-contacts td:nth-child(1)[b-uvhhudqf4d] { width: 29%; }
    .lv-contacts th:nth-child(2)[b-uvhhudqf4d], .lv-contacts td:nth-child(2)[b-uvhhudqf4d] { width: 19%; }
    .lv-contacts th:nth-child(3)[b-uvhhudqf4d], .lv-contacts td:nth-child(3)[b-uvhhudqf4d] { width: 22%; }

/* statutory: label | value | issue date (three columns) */
.lv-stat .lv-l[b-uvhhudqf4d] { flex: 0 0 30%; }
.lv-statv[b-uvhhudqf4d] { display: flex; }
.lv-statval[b-uvhhudqf4d] { flex: 0 0 38%; }

.lv-comment[b-uvhhudqf4d] { padding-left: 6px; white-space: pre-line; }
/* /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.
   ===================================================================== */
/* Gray page backdrop — same as Login master (MLogin.razor.css). */
.mu-page[b-xhmdizcxj8] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-xhmdizcxj8] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-xhmdizcxj8] {
    font-size: 12px;
}

/* Square off the grid card's corners — same as Login master. */
.mu-card[b-xhmdizcxj8] {
    border-radius: 0;
}

/* Popup field spacing — same as Login master's edit popup (MLoginEdit). */
.uf-field[b-xhmdizcxj8] {
    margin-bottom: 11px;
}

/* ── 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; }

/* Short form: let the GlobalDatepicker popup overflow the modal/body instead of
   being clipped (and forcing an inner scrollbar) — modal is overflow:hidden and
   .uf-body overflow-y:auto in masters-forms.css. */
.uf-modal-sm.lut-modal[b-alb9oesarj] { overflow: visible; }
.lut-modal[b-alb9oesarj]  .uf-body { overflow: visible; max-height: none; }
.lut-modal[b-alb9oesarj]  .uf-header { border-radius: 6px 6px 0 0; }
.lut-modal[b-alb9oesarj]  .uf-footer { border-radius: 0 0 6px 6px; }

.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;
}

@media (max-width: 540px) {
    .uf-field.lut-field[b-alb9oesarj] { grid-template-columns: 1fr; gap: 4px; }
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.lut-modal[b-alb9oesarj] { border-radius: 6px; }
/* /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;
}

/* City autofill (shared CityAutofill) in the toolbar. */
.ma-city[b-mc1jiy8648] {
    min-width: 240px;
}

/* ── 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;
    }

    .ma-city[b-mc1jiy8648] {
        flex: 1;
        min-width: 0;
    }

    .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;
    margin-top: -16px;
}

.mu-toolbar[b-7aciujvnht] {
    flex-shrink: 0;
    background-color: #eef2f7;
}

.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;
    margin-top: -16px;
}

/* Left column: header card on top, NEW / SAVE buttons right under it. */
.bom-left-col[b-7aciujvnht] {
    display: flex;
    flex-direction: column;
    align-self: start;
    min-width: 0;
}

/* Header card hugs its content at the top of the left column. */
.bom-hdr-card[b-7aciujvnht] {
    align-self: stretch;
    flex: none; /* .mu-card is flex:1 — don't let it stretch and push the buttons away */
    overflow: visible; /* let the item autocomplete escape the card */
    margin-top: -12px;
}

.bom-lines-card[b-7aciujvnht] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    margin-top: -12px;
}

@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;
    }

/* Boxed white top tab bar for the entry view (GRID only) — same look
   as NavigationSetting's .itb-toptabs: white bar, 3px radius, border,
   uppercase 11.5px/600 tabs with 5px vertical padding. */
.bom-toptabs[b-7aciujvnht] {
    flex-shrink: 0;
    margin-top: -16px; /* flush under the title block */
    margin-bottom: 12px;
    padding: 5px 16px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
}

/* NEW / SAVE under the header form — layout only. Look comes from the master
   .uf-btn / .uf-btn-new / .uf-btn-save classes in masters-forms.css. */
.bom-hdr-actions[b-7aciujvnht] {
    flex-shrink: 0;
    margin-top: 12px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.bom-toptabs button[b-7aciujvnht] {
    padding: 5px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background .12s, color .12s, border-color .12s;
}

    .bom-toptabs button:hover:not(:disabled)[b-7aciujvnht] {
        background: #f5f5f5;
    }

    .bom-toptabs button.active[b-7aciujvnht] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }

        .bom-toptabs button.active:hover:not(:disabled)[b-7aciujvnht] {
            background: #16a589;
            border-color: #16a589;
        }

    .bom-toptabs button:disabled[b-7aciujvnht] {
        opacity: 0.5;
        cursor: not-allowed;
    }

.bom-lines-wrap[b-7aciujvnht] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

/* Bottom strip of the components card — holds the blue "Add line" button.
   Stays pinned while the table above scrolls. Button colours come from the
   shared .mu-btn.primary in masters-forms.css (#1a56a7 / hover #0f3d82). */
.bom-lines-foot[b-7aciujvnht] {
    flex-shrink: 0;
    padding: 10px 12px;
    background: #fff;
    border-top: 1px solid #e2e8f0;
    display: flex;
    justify-content: flex-start;
}

    .bom-lines-foot .bom-add-line:disabled[b-7aciujvnht] {
        opacity: 0.5;
        cursor: not-allowed;
    }

.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;
    }
}

.uf-btn[b-7aciujvnht]{
    border-radius:3px;
}
/* /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: 10px;
    min-height: 0;
    padding: 0 10px;
}

.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] {
    min-width: 160px;
    transition: border-color 0.12s, box-shadow 0.12s;
}

/* ── 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: flex-start;
    gap: 14px;
    padding: 15px 22px;
    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;
    }

/* Save — shared .uf-btn .uf-btn-save size, same as the Login Master popup. */

/* ── 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;
    }
}

/* ── Pagination pill — QG/HSNDescription green square instead of
   masters-forms.css's blue, scoped to this page only. ── */
.bspl-footer .mu-pagenum.active[b-dpg2ushzqy],
.bspl-footer .mu-pagenum.active:hover[b-dpg2ushzqy] {
    background: #16a085;
    border-color: #16a085;
    box-shadow: 0 1px 3px rgba(22,160,133,.35);
}

.bspl-footer .mu-nav:hover:not(:disabled)[b-dpg2ushzqy],
.bspl-footer .mu-pagenum:hover[b-dpg2ushzqy] {
    background: #e8f5f0;
    border-color: #16a085;
    color: #16a085;
}

/* Box look comes from ms-box (masters-forms.css); the two filter selects
   keep 30px right padding so the mu-pagesize caret has room. */
.ccl-page .ccl-group-select[b-dpg2ushzqy],
.ccl-page .ccl-ledger-select[b-dpg2ushzqy] { padding-right: 30px; }

.ccl-ledger-wrap[b-dpg2ushzqy] {
    position: relative;
    flex: 1 1 140px;
    min-width: 0;
}

.ccl-ledger-wrap .ccl-ledger-input[b-dpg2ushzqy] {
    width: 100%;
    box-sizing: border-box;
}

.ccl-suggest[b-dpg2ushzqy] {
    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;
}

.ccl-suggest li[b-dpg2ushzqy] {
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    color: #1a2537;
}

.ccl-suggest li:hover[b-dpg2ushzqy],
.ccl-suggest li.active[b-dpg2ushzqy] {
    background: #eef4fb;
}

.ccl-suggest li.ccl-suggest-empty[b-dpg2ushzqy] {
    cursor: default;
    color: #94a3b8;
    font-size: 12.5px;
}
/* /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 */

/* 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-footer-right[b-5l53lmku0p] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.ccg-modal[b-5l53lmku0p] {
    border-radius: 6px;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-7t3i8aisog] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-kfxna4o1o1] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-msfkb8qf60] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-cbde1xhacl] {
    margin-bottom: 10px !important;
}
/* /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;
}

/* Vertical spacing between stacked text boxes (each row of fields). */
.uf-modal .uf-sec-body .uf-field[b-u9y4odutsd] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-w40hlb6ty4] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-nd172c9u0r] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-4qzap7j4tc] {
    margin-bottom: 10px !important;
}
/* /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. */

/* Round "+" button beside the search box in the toolbar — a quick-add
   shortcut alongside the existing "New group" button in the page header.
   Wraps .mu-search so the button sits directly next to it, rather than
   being pushed to the far end of .mu-toolbar's space-between layout. */
.mu-search-row[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.mu-round-btn[b-ukuv8fcuje] {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}

    .mu-round-btn:hover[b-ukuv8fcuje] {
        background: #154488;
        border-color: #154488;
    }

/* ── Site / class segmented filters — rendered in the title-actions
   header next to "New group". The "mu-seg" pattern matches the
   Mappings/Report toggle on MCostLedger.razor.css; no shared equivalent
   yet, so it's repeated here. ── */
/* Wraps the site-filter segment (All Groups / System / Local) and the
   class-filter segment (Assets / Liability / Income / Expense) with
   consistent spacing between the two groups. Kept on one line (no wrap)
   so A/L/I/E never drops below All Groups/System/Local. */
.mu-seg-group[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: nowrap;
    flex-shrink: 0;
    white-space: nowrap;
    margin-left: 24px; /* space after the Group tree button */
}

/* Desktop: line the filters up above the Parent Group column. That column
   starts at 44% of the table (5% + 27% + 12% — see the fixed column widths
   at the bottom of this file), and the toolbar spans the same card width,
   so left: 44% on the toolbar puts the filters right over it. Below 1100px
   the search box would reach that point, so fall back to the inline
   margin-left above. */
@media (min-width: 1100px) {
    .mu-toolbar[b-ukuv8fcuje] {
        position: relative;
    }

    .mu-seg-group[b-ukuv8fcuje] {
        position: absolute;
        left: 44%;
        top: 50%;
        transform: translateY(-50%);
        margin-left: 0;
    }
}

.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;
    }

/* Class-filter segment (Assets / Liability / Income / Expense) — round,
   colour-filled pills matching the .mu-plbs badge used for the same
   classes in the grid (blue = Assets/Income, maroon = Liability/Expense),
   instead of the plain connected-segment look used by the System/Local
   toggle above. */
.mu-seg-pills[b-ukuv8fcuje] {
    border: none;
    background: transparent;
    overflow: visible;
    gap: 8px;
}

    .mu-seg-pills .mu-seg-btn[b-ukuv8fcuje] {
        width: 28px;
        height: 28px;
        padding: 0;
        border-radius: 50%;
        justify-content: center;
        font-size: 12px;
    }

        .mu-seg-pills .mu-seg-btn + .mu-seg-btn[b-ukuv8fcuje] {
            border-left: none;
        }

    .mu-seg-pills .mu-seg-blue[b-ukuv8fcuje] {
        background: #dbeafe;
        color: #1a56a7;
    }

        .mu-seg-pills .mu-seg-blue:hover[b-ukuv8fcuje] {
            background: #c7ddf9;
        }

        .mu-seg-pills .mu-seg-blue.active[b-ukuv8fcuje] {
            background: #1a56a7;
            color: #fff;
        }

    .mu-seg-pills .mu-seg-maroon[b-ukuv8fcuje] {
        background: #f5d9dd;
        color: #8b1e3f;
    }

        .mu-seg-pills .mu-seg-maroon:hover[b-ukuv8fcuje] {
            background: #edc3cb;
        }

        .mu-seg-pills .mu-seg-maroon.active[b-ukuv8fcuje] {
            background: #8b1e3f;
            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;
}

/* Page header (title, subtitle, title-bar buttons incl. their mobile
   icon-only look) comes from the master .bspl-title-* rules in
   wwwroot/CSS/masters-forms.css — nothing page-specific here. */
@media (max-width: 767px) {
    .mu-foot-info[b-ukuv8fcuje] {
        display: none;
    }


    .bspl-footer-left[b-ukuv8fcuje] {
        flex: 0 0 auto;
    }
}

/* =====================================================================
   "Group Tree" popup (opened from the round "+" button beside search).
   Page-scoped here for the modal chrome (overlay/modal/header/body) and
   the company-root row, which MGroup.razor renders directly. The
   recursive per-group rows below the root live in GroupTreeNode.razor,
   a separate component, so their matching styles (ul.gt-tree, .gt-node,
   .gt-row, .gt-toggle-spacer, .gt-label, etc.) are intentionally
   duplicated in GroupTreeNode.razor.css — Blazor's CSS isolation scopes
   each .razor.css to only the elements its own component renders, so a
   style defined here would not reach markup rendered by that component.
   ===================================================================== */
.gt-overlay[b-ukuv8fcuje] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 40px 16px;
    overflow-y: auto;
}

.gt-modal[b-ukuv8fcuje] {
    width: 100%;
    max-width: 460px;
    max-height: 80vh;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.3);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.gt-header[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: #3d4f7d;
    color: #fff;
}

.gt-title[b-ukuv8fcuje] {
    font-size: 15px;
    font-weight: 650;
}

.gt-close[b-ukuv8fcuje] {
    background: transparent;
    border: none;
    color: #fff;
    width: 26px;
    height: 26px;
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0.9;
}

    .gt-close:hover[b-ukuv8fcuje] {
        background: rgba(255, 255, 255, 0.15);
        opacity: 1;
    }

.gt-body[b-ukuv8fcuje] {
    padding: 14px 16px;
    overflow: auto;
    border: 1px solid #dde3ed;
    margin: 10px;
    border-radius: 4px;
}

/* ── Tree list / connector lines — duplicated in GroupTreeNode.razor.css,
   see the file banner above for why. ── */
ul.gt-tree[b-ukuv8fcuje] {
    list-style: none;
    margin: 0;
    padding-left: 18px;
}

ul.gt-tree-root[b-ukuv8fcuje] {
    padding-left: 0;
}

ul.gt-tree:not(.gt-tree-root)[b-ukuv8fcuje] {
    border-left: 1px dashed #aab6c9;
    margin-left: 9px;
}

.gt-node[b-ukuv8fcuje] {
    position: relative;
}

.gt-row[b-ukuv8fcuje] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 3px 0;
    white-space: nowrap;
}

.gt-row-root[b-ukuv8fcuje] {
    padding-bottom: 6px;
}

.gt-toggle-spacer[b-ukuv8fcuje] {
    flex: 0 0 auto;
    display: inline-block;
    width: 14px;
    height: 14px;
}

.gt-label[b-ukuv8fcuje] {
    font-size: 13px;
    color: #1f2937;
}

/* Assets/Income vs Liability/Expense text color — see GroupTreeNode.PlbsClass. */
.gt-plbs-blue[b-ukuv8fcuje] {
    color: #1a56a7;
}

.gt-plbs-maroon[b-ukuv8fcuje] {
    color: #800000;
}

/* Company-root row only — not used by GroupTreeNode. */
.gt-root-icon[b-ukuv8fcuje] {
    flex: 0 0 auto;
    color: #c0392b;
    font-size: 14px;
}

.gt-root-label[b-ukuv8fcuje] {
    font-weight: 700;
    letter-spacing: 0.02em;
}

/* Square off the grid card's corners. */
.mu-card[b-ukuv8fcuje] {
    border-radius: 0;
}

/* ── Lock column widths ──
   .mu-table normally uses table-layout: auto, which re-measures every
   column from whatever content is currently visible. Since the footer's
   All/System/Local and class-filter buttons swap the row set (and each
   set has different text lengths — "Assets" vs "A", long vs short group
   names, etc.), the columns kept shrinking/growing/jumping sideways on
   every click. table-layout: fixed makes column widths come only from
   this header row, once, so filtering/paging/sorting can no longer
   resize them — every column (including ## and the action column,
   which masters-forms.css sizes in px elsewhere) gets an explicit
   percentage here instead, since fixed layout can't split "auto" columns
   proportionally the way normal auto layout does. */
.mu-table[b-ukuv8fcuje] {
    table-layout: fixed;
}

    .mu-table thead th:nth-child(1)[b-ukuv8fcuje] { width: 5%; }  /* ## */
    .mu-table thead th:nth-child(2)[b-ukuv8fcuje] { width: 27%; } /* Group Name */
    .mu-table thead th:nth-child(3)[b-ukuv8fcuje] { width: 12%; } /* Code */
    .mu-table thead th:nth-child(4)[b-ukuv8fcuje] { width: 24%; } /* Parent Group */
    .mu-table thead th:nth-child(5)[b-ukuv8fcuje] { width: 8%; }  /* Class */
    .mu-table thead th:nth-child(6)[b-ukuv8fcuje] { width: 8%; }  /* Depth */
    .mu-table thead th:nth-child(7)[b-ukuv8fcuje] { width: 10%; } /* Ledgers */
    .mu-table thead th:nth-child(8)[b-ukuv8fcuje] { width: 6%; }  /* actions */

/* Long values in a fixed-width column need to clip instead of forcing the
   column wider (nowrap alone would just overflow visibly). */
.mu-table tbody td[b-ukuv8fcuje] {
    overflow: hidden;
    text-overflow: ellipsis;
}
/* /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; }

/* 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; }
}

/* Textbox / dropdown look comes from the master .uf-input
   (wwwroot/CSS/masters-forms.css); .uf-compact on .uf-body gives the
   MLedgerEdit-style natural width. */
/* /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/MHSNTaxClassEdit.razor.rz.scp.css */
/* =====================================================================
   GAINS — MHSNTaxClassEdit.razor.css   (HSN Tax Class add/edit popup)
   This component has no scoped CSS file until now — it was relying
   entirely on the shared "uf-" classes in wwwroot/CSS/masters-forms.css,
   which only defines the default-width .uf-modal (max-width: 780px).
   .uf-modal-sm (460px) exists, but only as CSS *scoped to* MGroupEdit/
   MItemGroupEdit's own .razor.css files — adding that class name here
   had no effect, since Blazor's per-component CSS isolation means a
   class defined in another component's scoped file never applies here.
   Hence a dedicated class in this component's own file instead.
   ===================================================================== */

.uf-modal-hsntaxclass[b-src7iwsg6b] {
    max-width: 380px;
}
/* /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;
}

.mu-cross[b-vozfp7j4gg] {
    color: #dc2626;
}

/* Small green square before the item name — shown only when the row's
   IPhoto (from api/Item/getItemGrid's "iPhoto") is non-empty, i.e. the
   item has an image. Clickable — opens the image preview popup below
   (OpenPhotoPopup), with @onclick:stopPropagation so it doesn't also
   trigger the row's own click-to-edit. */
.mu-photo-dot[b-vozfp7j4gg] {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 6px;
    background: #1ab394;
    border-radius: 2px;
    vertical-align: middle;
    cursor: pointer;
}

    .mu-photo-dot:hover[b-vozfp7j4gg] {
        background: #0f9c7e;
    }

/* Item photo preview popup (.uf-overlay/.uf-modal/.uf-header/.uf-close/.uf-body
   are shared classes from masters-forms.css — only the size/body/image rules
   below are page-specific). */
.mu-modal-photo[b-vozfp7j4gg] {
    max-width: 420px;
}

.mu-photo-popup-body[b-vozfp7j4gg] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
}

.mu-photo-popup-img[b-vozfp7j4gg] {
    max-width: 100%;
    max-height: 60vh;
    display: block;
    border-radius: 6px;
}

.mu-photo-popup-empty[b-vozfp7j4gg] {
    color: #94a3b8;
    font-size: 13px;
}

.le-toptabs[b-vozfp7j4gg] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px;
    background: white;
    /* Visible gap before the inline Grid/Entry/placeholder content below
       (.le-body) — same fix as MLedger.razor.css's .le-toptabs. Margin
       (not extra padding) so the white strip itself still hugs just the
       buttons and the page's own background shows through the gap. */
    margin-bottom: 0;
}

.le-toptab[b-vozfp7j4gg] {
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    padding: 5px 16px;
    margin: 0;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    font-family: inherit;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    transition: all .12s;
}

/* Quick search box in the top-tabs strip. The box's own look (border,
   radius, font, focus ring) now lives once in the shared .le-toptabs-search
   rule in wwwroot/CSS/masters-forms.css, matching MLedgerEdit.razor's
   .le-inp entry-form textboxes — only this page's own layout choice stays
   here: margin-left/right: auto splits whatever free space is left after
   the tab buttons evenly on both sides, i.e. it centers the box in the
   remaining white strip space to the right of AUDIT, rather than hugging
   either the buttons or the far edge. Typing just updates the box; only
   Enter (OnTopSearchKeyDown) runs the grid search. */
.le-toptabs-search[b-vozfp7j4gg] {
    margin-left: auto;
    margin-right: auto;
    /* Nudges the (still auto-centered) box a little left of dead-center
       within the strip's remaining space, without upsetting the centering
       math above — a plain margin split can't be biased, so a small
       translate does the shift instead. */
    transform: translateX(-24px);
    width: 300px;
}

    .le-toptab:hover[b-vozfp7j4gg] {
        background: #f5f5f5;
    }

    .le-toptab.active[b-vozfp7j4gg] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

.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.
   ===================================================================== */
/* Page background matches QLedger's own .mu-page override (QLedger.razor.css) —
   see MLedger.razor.css for the full explanation; same fix, same reason. */
/* Cancel masters-forms.css's .mu-page { gap: 16px } for this page only —
   this page's own chrome (title block / le-toptabs / le-body) doesn't want
   that 16px flex gap between them. Overridden here (page-scoped), not in
   masters-forms.css, so every other "mu-page" page keeps the shared gap. */
.mu-page[b-vozfp7j4gg] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    gap: 10px;
}

.le-toptabs[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;
}

/* Page header (title, subtitle, title-bar buttons incl. their mobile
   icon-only look) comes from the master .bspl-title-* rules in
   wwwroot/CSS/masters-forms.css — nothing page-specific here. */
@media (max-width: 767px) {
    .mu-foot-info[b-vozfp7j4gg] {
        display: none;
    }
}

/* Square off the grid card's corners (leave other .mu-card tab panes,
   e.g. .le-tabpane, untouched). */
.mu-card:not(.le-tabpane)[b-vozfp7j4gg] {
    border-radius: 0;
}

/* Photo popup footer — empty uf-footer strip (no buttons), kept at the same
   height as MGroupEdit's footer with its 34px button row: 15 + 34 + 15 + 1px border. */
.mu-photo-footer[b-vozfp7j4gg] {
    min-height: 65px;
    box-sizing: border-box;
}

/* Grid checkbox column (pick an item for the REPORT tab) */
.mu-th-chk[b-vozfp7j4gg],
.mu-chk[b-vozfp7j4gg] {
    width: 40px;
    text-align: center;
}

    .mu-chk input[b-vozfp7j4gg] {
        cursor: pointer;
    }

/* Entry form sits inside the same page gutter as the grid card (ms-page: margin 12px 16px 8px). */
.mie-pad[b-vozfp7j4gg] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin: 12px 16px 8px;
}
/* /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);
    /* Without a cap the form stretches across the whole page width,
       leaving a dead white area to the right of the fields/history row —
       same fix as MLedgerEdit's .le-inline. Sized to this form's own
       content: .ie-side is a fixed 210px rail (now holding the photo
       upload box too); .ie-form's widest row (the price-history row, up
       to 300px) plus its own 20px*2 padding = ~340px; plus the 2px root
       border — then a bit of extra breathing room (fields/labels were
       reading as cramped right against the edges at the tighter fit). */
    max-width: 820px;
    /* .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;
}

/* Textbox / dropdown look + uf-sm/uf-xs/uf-amt sizes come from the master
   controls in wwwroot/CSS/masters-forms.css; .uf-compact on .ie-form gives
   the natural-width layout. */


.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: 0;
    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: 0;
    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: 6px;
    /* Upload Image (shrunk below) and the Remove-photo "x" button stay
       on one line in the .ie-side rail now that Upload Image is small
       enough to fit beside it. */
    flex-wrap: nowrap;
}

/* Upload-photo label — shared .uf-btn/.uf-btn-new look (masters-forms.css),
   just smaller so it + the 32px Remove-photo button both fit on one line in
   the 210px .ie-side rail. .uf-btn.ie-photo-upload-btn (two classes) so it
   wins over the global .uf-btn padding/height. */
.uf-btn.ie-photo-upload-btn[b-8xc7kmihi6] {
    height: 32px;
    cursor: pointer;
    padding: 5px 8px;
    font-size: 11.5px;
    gap: 5px;
}

/* Save-first gate for a brand-new, unsaved item (see OnPhotoSelected's ItemId
   guard) — the label itself can't take a "disabled" attribute like a real
   button, so grey it out and block clicks here; pointer-events:none also
   stops the label from forwarding a click to the (already disabled)
   InputFile underneath in browsers that'd otherwise still open the picker. */
.uf-btn.ie-photo-upload-btn.ie-disabled[b-8xc7kmihi6] {
    cursor: not-allowed;
    opacity: 0.5;
    pointer-events: none;
}

.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: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.ie-hist-scroll[b-8xc7kmihi6] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;

    /* Thin custom scrollbar instead of the browser's default thick one with
       up/down arrow buttons — same convention as LedgerPopup.razor.css's
       .lgp-table-wrap / MTaskRole.razor.css's .tr-panel-body, just in a
       neutral slate to match this box's own border/header palette. */
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}

    .ie-hist-scroll[b-8xc7kmihi6]::-webkit-scrollbar {
        width: 6px;
    }

    .ie-hist-scroll[b-8xc7kmihi6]::-webkit-scrollbar-track {
        background: transparent;
    }

    .ie-hist-scroll[b-8xc7kmihi6]::-webkit-scrollbar-thumb {
        background: #cbd5e1;
        border-radius: 3px;
    }

        .ie-hist-scroll[b-8xc7kmihi6]::-webkit-scrollbar-thumb:hover {
            background: #94a3b8;
        }

.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 210px;
    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;
}

.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;
    }


    .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 .uf-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;
        }
}

/* ── Set Rate ("Rate Entry") popup — MRP/Rate fields ──
   These are keyed in as plain amounts, not stepped through, so the browser's
   native increment/decrement spinner controls just clutter the field — same
   treatment MLedgerEdit.razor.css already gives its own numeric inputs.
   Scoped to .ie-sr-input specifically so it only affects this popup's two
   fields, not every other number input sharing the global .uf-input class. */
[b-8xc7kmihi6] input.ie-sr-input[type="number"]::-webkit-outer-spin-button,
[b-8xc7kmihi6] input.ie-sr-input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

[b-8xc7kmihi6] input.ie-sr-input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}
/* /Components/Pages/Masters/MItemEntry.razor.rz.scp.css */
/* =====================================================================
   GAINS — MItemEntry.razor.css  (legacy-style Item entry form, UI only)
   Textbox/dropdown/button looks come from masters-forms.css (uf-input,
   uf-btn, uf-compact); this file only does layout.
   ===================================================================== */

.mie-root[b-ss4wu6kta5] {
    background: #fff;
    border: 1px solid #dde3ed;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    max-width: 860px;
    overflow: hidden;
    /* Fill the page (.mu-page is a fixed-height flex column): tabs above and
       footer below stay put, only .mie-main scrolls. */
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;

}

.mie-idbar[b-ss4wu6kta5] {
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    color: #0f766e;
    font-weight: 700;
    font-size: 14px;
    text-align: right;
    padding: 6px 16px;
    border-bottom: 1px solid #cdeee4;
    flex-shrink: 0;
}

.mie-main[b-ss4wu6kta5] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

/* Columns live in their own auto-height flex row: it grows to fill the visible area and
   never shrinks below the content, so the grey side panel runs the full height. */
.mie-cols[b-ss4wu6kta5] {
    display: flex;
    align-items: stretch;
    flex: 1 0 auto;
    /* right 220px column (the .mie-side width) painted on the row itself, so it is grey
       for the full height whatever the panel content height is */
    background: linear-gradient(to right, transparent calc(100% - 220px), #e5e9f0 calc(100% - 220px), #e5e9f0 calc(100% - 219px), #f7f9fc calc(100% - 219px));
}

.mie-form[b-ss4wu6kta5] {
    flex: 1;
    min-width: 0;
    padding: 14px 20px 32px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.mie-row[b-ss4wu6kta5] {
    display: grid;
    grid-template-columns: 140px 1fr;
    align-items: center;
    gap: 12px;
}

.mie-row-top[b-ss4wu6kta5] {
    align-items: start;
}

/* label beside a control that wraps to two lines (HSN box + Add HSNTax):
   line it up with the box, not the middle of the pair */
.mie-row > label.mie-lbl-box[b-ss4wu6kta5] {
    padding-top: 9px;
}

.mie-row > label[b-ss4wu6kta5] {
    font-size: 13px;
    font-weight: 600;
    color: #334155;
}

.mie-row > label.mie-b[b-ss4wu6kta5] {
    font-weight: 700;
}

.mie-req[b-ss4wu6kta5] {
    color: #dc2626;
}

.mie-pair[b-ss4wu6kta5] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mie-pair-wrap[b-ss4wu6kta5] {
    flex-wrap: wrap;
}

.mie-inline-lbl[b-ss4wu6kta5] {
    font-size: 13px;
    font-weight: 600;
    color: #334155;
    margin-left: 6px;
    white-space: nowrap;
}

.mie-band[b-ss4wu6kta5] {
    background: #eef1f6;
    padding: 10px 12px;
    margin: 0 -12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Metal block (isMetal … Rate per Gram): same band shape as the Opening Stock /
   Tags / yarn bands, light mint tint (from the teal UI accent) so it reads as its own
   section without being dark. */
.mie-band.mie-band-metal[b-ss4wu6kta5] {
    background: #e6f5f0;
}

.mie-sep[b-ss4wu6kta5] {
    border-top: 1px solid #e5e9f0;
    margin: 4px -20px;
}

.mie-taxpct[b-ss4wu6kta5] {
    color: #15803d;
    font-weight: 700;
    font-size: 13px;
    white-space: nowrap;
}

.mie-taxpct-link[b-ss4wu6kta5] {
    cursor: pointer;
    text-decoration: underline;
}

.mie-hsn-add[b-ss4wu6kta5] {
    white-space: nowrap;
}

.mie-info[b-ss4wu6kta5] {
    color: #1a56a7;
    font-size: 15px;
    cursor: help;
}

.mie-link-lbl[b-ss4wu6kta5] {
    cursor: pointer;
}

    .mie-link-lbl:hover[b-ss4wu6kta5] {
        color: #1ab394;
        text-decoration: underline;
    }

.mie-static[b-ss4wu6kta5] {
    font-size: 13px;
    color: #1a2537;
}

.mie-comments[b-ss4wu6kta5] {
    max-width: 320px;
}

/* ── Right: image / rate panel ── */
.mie-side[b-ss4wu6kta5] {
    flex: 0 0 220px;
    background: #f7f9fc;
    border-left: 1px solid #e5e9f0;
    padding: 16px 14px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Photo box = MItem edit form (MItemEdit .ie-photo-*): 150px square frame,
   #f8fafc fill, picture cropped to fill (cover). */
.mie-photo-box[b-ss4wu6kta5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.mie-photo-frame[b-ss4wu6kta5] {
    width: 150px;
    height: 150px;
    border: 1px solid #dde3ed;
    background: #f8fafc;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.mie-photo-img[b-ss4wu6kta5] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.mie-photo-placeholder[b-ss4wu6kta5] {
    color: #cbd5e1;
    font-size: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

.mie-photo-btn-row[b-ss4wu6kta5] {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 150px;
}

.uf-btn.mie-upload-btn[b-ss4wu6kta5] {
    height: 32px;
    cursor: pointer;
    flex: 1;
    justify-content: center;
    padding: 5px 8px;
    font-size: 11.5px;
    gap: 5px;
}

/* Upload Image while the item is unsaved or a file is uploading */
.uf-btn.mie-upload-btn.mie-disabled[b-ss4wu6kta5] {
    cursor: not-allowed;
    opacity: 0.5;
    pointer-events: none;
}

.mie-photo-remove-btn[b-ss4wu6kta5] {
    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;
}

    .mie-photo-remove-btn:hover[b-ss4wu6kta5] {
        background: #fee2e2;
        border-color: #f1aab2;
        color: #dc2626;
    }

.mie-history[b-ss4wu6kta5] {
    height: 150px;
    border: 1px solid #dde3ed;
    border-radius: 4px;
    background: #fff;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Grid = the standard master list grid (.mu-table / .mu-table-wrap in
   masters-forms.css: dark header, zebra rows, hover, teal scrollbar).
   Only the size is tightened here to fit the narrow side panel. */
.mie-hist-scroll[b-ss4wu6kta5] {
    flex: 1;
    min-height: 0;
    height: auto;
}

.mie-hist-table[b-ss4wu6kta5] {
    font-size: 12px;
}

    .mie-hist-table thead th[b-ss4wu6kta5] {
        font-size: 11.5px;
        padding: 6px 8px;
    }

    .mie-hist-table tbody td[b-ss4wu6kta5] {
        padding: 5px 8px;
    }

    .mie-hist-table .mie-num[b-ss4wu6kta5] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .mie-hist-table .mie-hist-empty[b-ss4wu6kta5] {
        padding: 18px 0;
        font-size: 12px;
        white-space: normal;
    }

.mie-side-btns[b-ss4wu6kta5] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: center;
}

.mie-side-btn[b-ss4wu6kta5] {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    color: #334155;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
}

    .mie-side-btn:hover[b-ss4wu6kta5] {
        background: #f8fafc;
        border-color: #94a3b8;
    }

/* ── Footer ── */
.mie-foot[b-ss4wu6kta5] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px;
    border-top: 1px solid #e5e9f0;
    background: #f7f9fc;
    flex-shrink: 0;
}

.mie-gear[b-ss4wu6kta5] {
    margin-left: auto;
    color: #94a3b8;
    font-size: 16px;
    cursor: pointer;
    background: none;
    border: none;
    padding: 4px;
}

    .mie-gear:hover[b-ss4wu6kta5] {
        color: #64748b;
    }

/* ── Tablet / mobile ── */
@media (max-width: 720px) {
    .mie-cols[b-ss4wu6kta5] {
        background: none;
        flex-direction: column;
    }

    .mie-form[b-ss4wu6kta5] {
        padding: 14px 14px 32px;
    }

    .mie-row[b-ss4wu6kta5] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .mie-band[b-ss4wu6kta5] {
        margin: 0 -14px;
        padding: 10px 14px;
    }

    .mie-sep[b-ss4wu6kta5] {
        margin: 4px -14px;
    }

    .mie-side[b-ss4wu6kta5] {
        flex: 0 0 auto;
        width: 100%;
        box-sizing: border-box;
        border-left: none;
        border-top: 1px solid #e5e9f0;
    }

    .mie-foot[b-ss4wu6kta5] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

@media (max-width: 480px) {
    .mie-btn-label[b-ss4wu6kta5] {
        display: none;
    }

    .mie-foot .uf-btn[b-ss4wu6kta5] {
        padding: 8px 10px;
        gap: 0;
    }
}

/* ── One size for every control (Ledger Name box): full row width, max 320px,
   height from padding/line-height (ms-box). Overrides uf-sm/uf-xs/uf-amt. ── */
.mie-form input.uf-input[b-ss4wu6kta5],
.mie-form select.uf-input[b-ss4wu6kta5],
.mie-form textarea.uf-input[b-ss4wu6kta5] {
    width: 100%;
    max-width: 320px;
    text-align: left;
}

/* amounts right-aligned so the digits line up (every number box:
   stock, value, qty, MRP, rates, weights, Set Rate popup) */
.mie-form input.uf-input.mie-amt-r[b-ss4wu6kta5],
.mie-rate-body input.uf-input.mie-amt-r[b-ss4wu6kta5] {
    text-align: right;
}

/* Several controls sharing one row split the same 320px between them. */
.mie-pair[b-ss4wu6kta5] {
    max-width: 320px;
}

    .mie-pair input.uf-input[b-ss4wu6kta5],
    .mie-pair select.uf-input[b-ss4wu6kta5] {
        flex: 1 1 0;
        width: auto;
        min-width: 0;
    }

.mie-pair.mie-pair-wrap[b-ss4wu6kta5] {
    max-width: none;
}

    .mie-pair.mie-pair-wrap input.uf-input[b-ss4wu6kta5] {
        flex: 0 1 320px;
        min-width: 120px;
    }

/* ── Delete / Set Rate popups (shared uf- modal system) ── */
.mie-modal[b-ss4wu6kta5] {
    max-width: 380px;
}

.mie-rate-body[b-ss4wu6kta5] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Set Rate, Set PPRate, Batch Lot, BOM and Add HSNTax buttons: light grey fill
   #f0f3f7 with a #cbd5e1 edge (overrides the white .mie-side-btn / .uf-btn-new background). */
.mie-grey-btn[b-ss4wu6kta5] {
    background: #f0f3f7;
    border-color: #cbd5e1;
    color: #1e293b;
    /* one size for all five: Save-button height (34px), roomy fixed min width */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    height: 34px;
    min-width: 116px;
    padding: 0 18px;
    line-height: 1;
    font-size: 13px;
    font-weight: 600;
    border-radius: 6px;
}

/* side panel pair: full panel width, same 34px height */
.mie-side-btn.mie-grey-btn[b-ss4wu6kta5] {
    width: 100%;
}

    .mie-grey-btn:hover:not(:disabled)[b-ss4wu6kta5] {
        background: #e2e8f0;
        border-color: #b8c4d3;
        color: #1e293b;
    }

/* ── Standard control height (32px) — same rule as Site Master. The shared
   masters-forms.css ms-box rule leaves height:auto (~34px); here every
   single-line box (textboxes, dropdowns, GlobalDatepicker in the Set Rate
   popup) is pinned to 32px: 5 + 5px padding + 20px line + 2px border.
   Textareas keep their rows height. Padding per side so left/right (and the
   select-arrow room) stay as the global rule sets them. Master CSS untouched. ── */
.mie-form input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input)[b-ss4wu6kta5],
.mie-form select[b-ss4wu6kta5],
.mie-form[b-ss4wu6kta5]  .gdp-wrap,
.mie-rate-body input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input)[b-ss4wu6kta5],
.mie-rate-body select[b-ss4wu6kta5],
.mie-rate-body[b-ss4wu6kta5]  .gdp-wrap,
.mie-modal input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input)[b-ss4wu6kta5],
.mie-modal select[b-ss4wu6kta5] {
    box-sizing: border-box;
    height: 32px;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 20px;
}

/* ── Every control in the form takes 60% of its column (the box, dropdown,
   textarea, or the box + button pair), instead of the full row. Popups keep
   their own full width; phones go back to full width. ── */
.mie-form .mie-row > div[b-ss4wu6kta5] {
    width: 60%;
    min-width: 0;
}

@media (max-width: 540px) {
    .mie-form .mie-row > div[b-ss4wu6kta5] {
        width: 100%;
    }
}

/* HSN row: the box keeps the same 60% width as every other control and the tax %
   badge / Add HSNTax button sits on its right (same line), not wrapped below. */
.mie-form .mie-row > div.mie-pair-wrap[b-ss4wu6kta5] {
    width: 100%;
    flex-wrap: nowrap;
}

    .mie-form .mie-pair.mie-pair-wrap input.uf-input[b-ss4wu6kta5] {
        flex: 0 0 60%;
        width: 60%;
        min-width: 0;
    }

    .mie-form .mie-pair.mie-pair-wrap .mie-taxpct[b-ss4wu6kta5],
    .mie-form .mie-pair.mie-pair-wrap .mie-hsn-add[b-ss4wu6kta5] {
        flex: 0 0 auto;
        white-space: nowrap;
    }
/* /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;
}

/* Page header (title, subtitle, title-bar buttons incl. their mobile
   icon-only look) comes from the master .bspl-title-* rules in
   wwwroot/CSS/masters-forms.css — nothing page-specific here. */
@media (max-width: 767px) {
    .mu-foot-info[b-r0e2nyz8pf] {
        display: none;
    }
}

/* Square off the grid card's corners. */
.mu-card[b-r0e2nyz8pf] {
    border-radius: 0;
}
/* /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.
   ===================================================================== */

/* Modal background — white, from the shared .uf-modal in masters-forms.css. */

.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; }

/* 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; }
}

/* Textbox / dropdown look comes from the master .uf-input
   (wwwroot/CSS/masters-forms.css); .uf-compact on .uf-body gives the
   MLedgerEdit-style natural width. */
/* /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.
   ===================================================================== */

.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;
    }

.mu-cross[b-26ww3l7206] {
    color: #dc2626;
}

.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;
}

.le-toptabs[b-26ww3l7206] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px;
    background: white;
    /* Visible gap before the inline Grid/Entry/placeholder content below
       (.le-body) — shared by every top tab (GRID/CONTACTS/ENTRY/REPORT/
       AUDIT) since they all render as .le-toptabs' next sibling. Margin
       (not extra padding) so the white strip itself still hugs just the
       buttons and the page's own background (#f3f3f4) shows through the
       gap. */
    margin-bottom: 16px;
}

/* Quick search box in the top-tabs strip — positioned same as MItem.razor.css:
   margin-left/right: auto centers the box in the strip space left after the
   tab buttons (right of AUDIT), and a small translate nudges it a little
   left of dead-center. The box's look (border, radius, font, focus ring)
   lives in the shared .le-toptabs-search rule in wwwroot/CSS/masters-forms.css.
   Typing just updates the box; only Enter (OnTopSearchKeyDown) runs the
   grid search. */
.le-toptabs-search[b-26ww3l7206] {
    margin-left: auto;
    margin-right: auto;
    transform: translateX(-24px);
    width: 300px;
}

/* Alphabet (name-starts-with) strip directly below the tab buttons. The
   button look comes from the shared .mu-alpha rule in masters-forms.css.
   White background + negative top margin cancels .le-toptabs'
   margin-bottom so the strip reads as the lower row of the same white
   tab strip; its own margin-bottom restores the gap before .le-body. */
.le-alpha-strip[b-26ww3l7206] {
    background: white;
    /* Divider line between the tab buttons row and this alphabet row;
       padding-top gives the letters breathing room below the line. */
    border-top: 1px solid #e7eaec;
    padding: 10px;
    margin: -16px 0 16px;
}

/* Cancel masters-forms.css's .mu-page { gap: 16px } for this page only —
   this page's own chrome (title block / le-toptabs / le-body) doesn't want
   that 16px flex gap between them. Overridden here (page-scoped), not in
   masters-forms.css, so every other "mu-page" page keeps the shared gap. */
.mu-page[b-26ww3l7206] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    gap: 0;
}

.le-body[b-26ww3l7206] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.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;
}

/* Fixed column widths -- keeps every column's width constant regardless of
   which rows a search or filter leaves in the grid. .mu-table (shared,
   masters-forms.css) has no table-layout set, so it defaults to "auto" and
   re-measures/re-sizes columns from whatever content is currently visible
   -- that's what was making columns jump around while typing a search or
   applying a filter. Scoped here (page-specific .razor.css, not the shared
   file) so only this page's grid switches to a fixed layout. */
.mu-table[b-26ww3l7206] {
    table-layout: fixed;
}

    .mu-table th[b-26ww3l7206],
    .mu-table td[b-26ww3l7206] {
        overflow: hidden;
        text-overflow: ellipsis;
    }

    /* Column order: ## | stat button | Code | Ledger Name | Depth | ALIE | OB | Group | Status | LCurr | GSTIN
       ## keeps its existing 56px width from .mu-th-idx (masters-forms.css).
       Ledger Name is left unset so it absorbs whatever width is left over. */
    .mu-table thead th:nth-child(2)[b-26ww3l7206] { width: 26px; }   /* stat button */
    .mu-table thead th:nth-child(3)[b-26ww3l7206] { width: 110px; }  /* Code */
    .mu-table thead th:nth-child(5)[b-26ww3l7206] { width: 80px; }   /* Depth */
    .mu-table thead th:nth-child(6)[b-26ww3l7206] { width: 70px; }   /* ALIE */
    .mu-table thead th:nth-child(7)[b-26ww3l7206] { width: 150px; }  /* OB */
    .mu-table thead th:nth-child(8)[b-26ww3l7206] { width: 220px; }  /* Group */
    .mu-table thead th:nth-child(9)[b-26ww3l7206] { width: 80px; }   /* Status */
    .mu-table thead th:nth-child(10)[b-26ww3l7206] { width: 80px; }  /* LCurr */
    .mu-table thead th:nth-child(11)[b-26ww3l7206] { width: 170px; } /* GSTIN (15 chars) */

    .mu-table th[b-26ww3l7206],
    .mu-table td[b-26ww3l7206] {
        white-space: nowrap;
    }

/* Dr = blue, Cr = maroon (grid OB cells, footer total, popup). */
.mu-table td.ob-dr[b-26ww3l7206] { color: #1d4ed8; }
.mu-table td.ob-cr[b-26ww3l7206] { color: #8b1a1a; }

/* Difference-in-OB total inside the bspl footer bar, between "Showing…" and
   the pager. Clickable; popup opens upward. */
.mu-foot-ob[b-26ww3l7206] {
    /* Pinned so the chip's right end lines up with the OB column's right end:
       columns after OB (Group 220 + Status 80 + LCurr 80 + GSTIN 170 = 550px)
       minus the chip's own 14px right padding. */
    position: absolute;
    right: 536px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    gap: 20px;
    margin-left: auto;
    margin-right: 0px;
    padding: 4px 14px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.mu-foot-ob-label[b-26ww3l7206] { color: #8b1a1a; }
.mu-foot-ob-val.ob-dr[b-26ww3l7206] { color: #1d4ed8; }
.mu-foot-ob-val.ob-cr[b-26ww3l7206] { color: #8b1a1a; }

/* Narrow screens: the grid scrolls sideways, so column alignment is moot --
   fall back to normal flow beside the pager. */
@media (max-width: 1100px) {
    .mu-foot-ob[b-26ww3l7206] {
        position: relative;
        right: auto;
        top: auto;
        transform: none;
        margin-left: auto;
        margin-right: 12px;
    }
}

@media (max-width: 767px) {
    .mu-foot-ob-label[b-26ww3l7206] { display: none; }
}


.mu-obdiff[b-26ww3l7206] {
    position: absolute;
    right: 0;
    bottom: 100%;
    z-index: 20;
    min-width: 230px;
    margin-bottom: 4px;
    background: #fff;
    border: 1px solid #94a3b8;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .2);
    cursor: default;
    text-align: right;
    font-weight: 600;
}

.mu-obdiff-hdr[b-26ww3l7206] {
    padding: 6px 10px;
    text-align: center;
    background: #e5e7eb;
    border-bottom: 1px solid #94a3b8;
    color: #374151;
}

.mu-obdiff table[b-26ww3l7206] {
    width: 100%;
    border-collapse: collapse;
}

.mu-obdiff th[b-26ww3l7206],
.mu-obdiff td[b-26ww3l7206] {
    padding: 6px 10px;
    border: 1px solid #cbd5e1;
    background: #f8fafc;
    position: static;
}

.mu-obdiff th[b-26ww3l7206] {
    width: 56px;
    text-align: center;
    color: #374151;
}

.mu-obdiff td[b-26ww3l7206] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mu-obdiff td.dr[b-26ww3l7206], .mu-obdiff td.ob-dr[b-26ww3l7206] { color: #1d4ed8; }
.mu-obdiff td.cr[b-26ww3l7206], .mu-obdiff td.ob-cr[b-26ww3l7206] { color: #8b1a1a; }
.mu-obdiff-unit[b-26ww3l7206] { font-size: 11px; }

.mu-foot[b-26ww3l7206] {
    flex-shrink: 0;
    position: relative;
}

/* 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;
}

/* Page header (title, subtitle, title-bar buttons incl. their mobile
   icon-only look) comes from the master .bspl-title-* rules in
   wwwroot/CSS/masters-forms.css — nothing page-specific here. */
@media (max-width: 767px) {
    .mu-foot-info[b-26ww3l7206] {
        display: none;
    }
}

.mu-ob-val[b-26ww3l7206] {
    text-align: right;
}

/* Square off the grid card's corners (leave other .mu-card tab panes,
   e.g. .le-tabpane, untouched). */
.mu-card:not(.le-tabpane)[b-26ww3l7206] {
    border-radius: 0;
}

/* Square button before Led Code — opens the shared ledger statistics popup. */
.lc-statdot[b-26ww3l7206] {
    background: #8b1a1a;
    margin-right: 0;
}

    .lc-statdot:hover[b-26ww3l7206] { background: #6b1414; }

/* Tight spacing between the square and the Led Code text: the button column keeps
   only a small right-hand gap, and the Led Code column drops its left padding. */
.mu-table thead th.mu-th-btn[b-26ww3l7206],
.mu-table td.mu-btn-cell[b-26ww3l7206] {
    padding-left: 4px;
    padding-right: 0;
    text-align: center;
}

.mu-table thead th:nth-child(3)[b-26ww3l7206],
.mu-table tbody td:nth-child(3)[b-26ww3l7206] { padding-left: 4px; }
/* /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;
    /* Outer form card — square corners per design update (buttons/inputs/
       tabs/dropdowns keep their own rounded corners; only layout
       containers like this one were squared off). */
    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;
    /* Without a cap the pane's 1fr column stretches across the whole page
       width, leaving a huge dead white area to the right of the fields on
       every tab. Cap the card so it hugs its content instead. 810px would
       fit General/Limits/Contacts/Tax/Category/Schedule's single-column
       .le-row (140px label + up to 320px input), but Address/Statutory's
       two-field .le-row2 rows need 140+210+140+210+3*12(gap) = 736px of
       content width — so the cap is sized to that widest tab
       (200px rail + 736px content + 2*18px .le-body padding + 2px border)
       so no tab's fields get clipped. */
    max-width: 980px;
}
@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;
    }


    .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; }
/* Textbox / dropdown / checkbox look + uf-sm/uf-xs/uf-amt sizes come from the
   master controls in wwwroot/CSS/masters-forms.css (.uf-input, .uf-chk);
   .uf-compact on .le-body gives the natural-width layout. */

.le-ta[b-7cxrak7dj5] { 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: 0; margin: 2px 0 6px;
}
.le-checks[b-7cxrak7dj5] { display: flex; flex-direction: column; gap: 9px; margin-bottom: 4px; }
.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]  .uf-input { width: 100%; max-width: none; }
.le-geo[b-7cxrak7dj5] { display: flex; align-items: center; gap: 6px; width: 100%; }
.le-geo[b-7cxrak7dj5]  .uf-input { flex: 1; min-width: 0; width: auto; max-width: none; }
.le-geo .uf-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 */

/* 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;
    /* The 9-column contacts table (##/Default/First Name/Last Name/Name/
       Designation/ISD Code/Mobile/Email, all white-space:nowrap) is wider
       than the pane, so it still needs to scroll horizontally. Hiding the
       scrollbar entirely (an earlier version of this rule set height:0 on
       it) also hides the mouse's only way to *drag* it, so — rather than
       trying to fake that back in with JS — the bar stays visible here,
       just restyled thin + themed (teal, matching .mu-table-wrap
       elsewhere in the app) instead of the OS's default chunky one with
       arrow buttons. */
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}
    .le-contacts-wrap[b-7cxrak7dj5]::-webkit-scrollbar {
        height: 8px;
        width: 8px;
    }
    .le-contacts-wrap[b-7cxrak7dj5]::-webkit-scrollbar-track {
        background: transparent;
    }
    .le-contacts-wrap[b-7cxrak7dj5]::-webkit-scrollbar-thumb {
        background: #b6e8db;
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }
        .le-contacts-wrap[b-7cxrak7dj5]::-webkit-scrollbar-thumb:hover {
            background: #1ab99a;
            background-clip: content-box;
        }
    .le-contacts-wrap[b-7cxrak7dj5]::-webkit-scrollbar-corner {
        background: transparent;
    }
.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-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 — reuses the shared "uf-" system (uf-overlay/uf-modal/
   uf-header/uf-section/uf-field/uf-input/uf-footer/uf-btn) that MGroupEdit's
   Edit Group popup is built from, defined globally in
   wwwroot/CSS/masters-forms.css. Only the small per-form tweaks below are
   set locally — the same pattern MGroupEdit.razor.css itself uses on top of
   that shared stylesheet. */
.uf-modal-sm[b-7cxrak7dj5] { max-width: 460px; }
.uf-field[b-7cxrak7dj5] { margin-bottom: 13px; }
.uf-field:last-child[b-7cxrak7dj5] { margin-bottom: 0; }

/* 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-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;
}
/* /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.
   ===================================================================== */
/* Page background matches QLedger's/MLedger's/MItem's own .mu-page
   override — consistent gray page backdrop across every Masters grid. */
.mu-page[b-nha6g8xbow] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.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;
}

/* Page header (title, subtitle, "New user" button incl. its mobile
   icon-only look) comes from the master .bspl-title-* rules in
   wwwroot/CSS/masters-forms.css — nothing page-specific here. */
@media (max-width: 767px) {
    .mu-foot-info[b-nha6g8xbow] {
        display: none;
    }
}

/* "Page N" indicator sitting between the global .db-page-btn
   Previous/Next buttons (see wwwroot/CSS/standard.css .db-pagination /
   .db-page-btn) — those are styled globally, this one isn't, so without
   this it rendered as plain unstyled text next to the two buttons. */
.db-page-current[b-nha6g8xbow] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-nha6g8xbow] {
    font-size: 12px;
}

/* Square off the grid card's corners. */
.mu-card[b-nha6g8xbow] {
    border-radius: 0;
}

/* Status column — centred check / cross (displaylogins "isActive"). */
.mu-th-status[b-nha6g8xbow] {
    width: 70px;
    text-align: center !important;
}

.mu-status-cell[b-nha6g8xbow] {
    text-align: center;
}

    .mu-status-cell .mu-check[b-nha6g8xbow] {
        color: #16a34a;
    }

    .mu-status-cell .mu-cross[b-nha6g8xbow] {
        color: #dc2626;
        font-size: 16px;
        vertical-align: -3px;
    }
/* /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: minmax(0, 1fr) minmax(0, 1fr);
    gap: 4px 32px;
}

.uf-col[b-94tnkwqe1u] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* Kill unneeded horizontal scrollbar — grid columns now shrink (minmax(0,1fr)
   + min-width:0) so nothing overflows; overflow-x hidden as safety net. */
.uf-body[b-94tnkwqe1u] {
    overflow-x: hidden;
}

/* 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. */

/* ── Identity fields: one width for every box in the two columns ──
   uf-compact gives natural (auto) widths, so text boxes, the Login Role /
   Language dropdowns, the password boxes and the Mobile row all came out
   different sizes (role short, mobile overflowing). Same fixed width here. */
.uf-grid .uf-field > div > input.uf-input[b-94tnkwqe1u],
.uf-grid .uf-field > div > select.uf-input[b-94tnkwqe1u],
.uf-grid .uf-pwd[b-94tnkwqe1u],
.uf-grid .uf-mobile[b-94tnkwqe1u] {
    width: 100%;
    max-width: 220px;
    box-sizing: border-box;
}

.uf-grid .uf-pwd > input.uf-input[b-94tnkwqe1u] {
    width: 100%;
    max-width: 100%;
}

/* Mobile (cc + number): fixed ISD dropdown + number box filling the rest,
   whole row = same 220px as the other boxes. */
.uf-mobile[b-94tnkwqe1u] {
    display: flex;
    align-items: stretch;
    gap: 6px;
    min-width: 0;
}

    .uf-mobile > select.uf-input[b-94tnkwqe1u] {
        flex: 0 0 80px;
        width: 80px;
        max-width: 80px;
        min-width: 0;
        box-sizing: border-box;
    }

    .uf-mobile > input.uf-input[b-94tnkwqe1u] {
        flex: 1 1 0;
        width: auto;
        max-width: none;
        min-width: 0;
        box-sizing: border-box;
    }

@media (max-width: 700px) {
    .uf-grid .uf-field > div > input.uf-input[b-94tnkwqe1u],
    .uf-grid .uf-field > div > select.uf-input[b-94tnkwqe1u],
    .uf-grid .uf-pwd[b-94tnkwqe1u],
    .uf-grid .uf-mobile[b-94tnkwqe1u] {
        max-width: 100%;
    }
}

/* 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;
}
/* Checkbox labels use the master .uf-chk (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: minmax(0, 1fr);
        gap: 0;
    }
}

/* Textbox / dropdown look comes from the master .uf-input
   (wwwroot/CSS/masters-forms.css); .uf-compact on .uf-body gives the
   MLedgerEdit-style natural width. */

/* ── Dropdowns: one chevron arrow, same spacing on every select in this
   modal (Login Role, ISD, Language, Time In/Out, Depot). Native arrows sat
   tight against the text and differed per browser. Only background-image is
   set (not background-color) so the global grey disabled/read-only look and
   the red .uf-invalid look still apply. ── */
select.uf-input[b-94tnkwqe1u] {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 28px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 9px center;
    background-size: 11px 8px;
    text-overflow: ellipsis;
}

    select.uf-input[b-94tnkwqe1u]::-ms-expand {
        display: none;
    }

    select.uf-input:disabled[b-94tnkwqe1u] {
        opacity: 1;
    }
/* /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;
}

/* ── 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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-576xrhr1y2] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-78jdn1psen] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-50delwa6ng] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-fgc0phyair] {
    margin-bottom: 10px !important;
}
/* /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 */

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-79i2xnpm9w] {
    margin-bottom: 10px !important;
}
/* /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%;
    }
}

/* Footer icon buttons — same as Daybook's footer (.bspl-foot-btn shared
   styles; Excel keeps its green from standard.css). Copy in indigo like
   Daybook's Copy Voucher, Clear Filter in the GAINS red. */
.bspl-foot-btn.copy[b-s2wpgs0exw] {
    color: #3949ab;
}

.bspl-foot-btn.clear[b-s2wpgs0exw] {
    color: #e53935;
}

.bspl-foot-btn:disabled[b-s2wpgs0exw] {
    opacity: .7;
    cursor: wait;
}

/* Toolbar Copy / Clear Filter / Excel buttons share Daybook's footer icon-button
   look (.bspl-foot-btn); keep them in one row, level with the selects. */
.rt-btn-group[b-s2wpgs0exw] {
    display: flex;
    align-items: center;
    gap: 6px;
    height: 36px;
}

/* Clear Filters — drawer-footer style text button (white, grey border,
   rounded, dark bold label), sized to sit level with the selects/icons. */
.rt-btn-group .rt-clear-btn[b-s2wpgs0exw] {
    height: 36px;
    padding: 0 18px;
    white-space: nowrap;
}

/* Save — primary (filled) version of the Clear Filters button, same height;
   shows the number of unsaved changes, dimmed when there is nothing to save. */
.rt-btn-group .rt-save-btn[b-s2wpgs0exw] {
    height: 36px;
    padding: 0 18px;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

    .rt-btn-group .rt-save-btn:disabled[b-s2wpgs0exw] {
        opacity: .55;
        cursor: not-allowed;
    }
/* /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 (Point 8) ──
   Matches the master transaction-page tab bar look (TDS.razor.css's
   .itb-toptabs / .itb-toptabs button — same boxed white bar, border,
   3px radius, uppercase 11.5px buttons, teal-active) so Settings' tabs
   render identically to TDS/other master forms instead of its own
   one-off pill style. */
.st-tabs[b-u04olbf61x] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex-shrink: 0;
    padding: 5px 16px;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
    /* Cancels .st-page's flex gap:16px for just this top edge, so the tab
       bar sits flush under the title block instead of floating with a gap
       (red-marked in your screenshot). Bottom edge (tabs -> card) keeps
       its normal 16px, since that spacing is untouched by this margin. */
    margin-top: -16px;
}

.st-tab[b-u04olbf61x] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    /* TDS's .itb-toptabs button declares padding twice (7px 16px, then
       5px 16px) — CSS cascade means the SECOND wins, so its real, live
       height is 5px vertical, not 7px. That was the actual size mismatch
       you saw (Settings' button was taller). Matched to the real value. */
    padding: 5px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    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: 11.5px;
        opacity: 0.8;
    }

    .st-tab:hover[b-u04olbf61x] {
        background: #f5f5f5;
    }

    .st-tab.active[b-u04olbf61x] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
        font-weight: 700;
    }

        .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;
    /*margin-left: 16px;*/
}

.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;
}

/* ── Point 5: serial numbers — small muted index before each setting's label. ── */
.st-serial[b-u04olbf61x] {
    color: #64748b;
    font-weight: 600;
    margin-right: 6px;
}

/* ── Point 7: leading icon per EnableFeature row. ── */
.st-set-icon[b-u04olbf61x] {
    color: #1ab99a;
    width: 14px;
    text-align: center;
    margin-right: 7px;
    font-size: 12px;
}

.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-input:disabled[b-u04olbf61x] {
        background: #eef1f5;
        color: #94a3b8;
        cursor: not-allowed;
        opacity: 0.75;
    }

.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;
    /* Unchecked border darkened (was #dde3ec, barely visible) so an off/unset
       toggle reads clearly against the row background. */
    border: 1.5px solid #94a3b8;
    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);
        }

    .st-checkbox:disabled[b-u04olbf61x] {
        cursor: not-allowed;
        opacity: 0.5;
        background: #e5e7eb;
    }

        .st-checkbox:disabled:checked[b-u04olbf61x] {
            background: #9ca3af;
            border-color: #9ca3af;
        }

/* ── Point 2: Enable Inventory parent row + its 5 subsettings ──
   Parent gets a dark gray band (clearly a section header); subsettings get
   a lighter gray band, indented, so the parent/child relationship reads at
   a glance without changing the shared .st-field layout other tabs use. */
.st-inv-parent[b-u04olbf61x] {
    background: #4b5563;
    border-radius: 8px;
    padding-left: 12px;
    padding-right: 12px;
    border-bottom-color: transparent;
}

    .st-inv-parent .st-label[b-u04olbf61x],
    .st-inv-parent .st-serial[b-u04olbf61x] {
        color: #fff;
    }

    .st-inv-parent .st-note[b-u04olbf61x] {
        color: #cfe8ff;
    }

    .st-inv-parent .st-set-icon[b-u04olbf61x] {
        color: #fff;
    }

.st-inv-sub[b-u04olbf61x] {
    background: #f1f3f5;
    border-radius: 6px;
    margin-left: 22px;
    padding-left: 12px;
    padding-right: 12px;
    border-bottom-color: transparent;
}

    .st-inv-sub .st-label[b-u04olbf61x] {
        color: #475569;
    }

/* ── 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;
    }

    .st-inv-sub[b-u04olbf61x] {
        margin-left: 12px;
    }
}
/* /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;
    }
}

/* Both panel headers (Task filters / All roles) the same height and padding,
   so "All roles" sits level with "Task" and both grids start on the same line. */
.tr-panels .tr-panel-hdr[b-6nidxwhebt] {
    min-height: 82px;
    box-sizing: border-box;
}

.tr-panel-roles .tr-panel-hdr[b-6nidxwhebt] {
    align-items: flex-start;
}
/* /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;
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-z131x4le0j] {
    margin-bottom: 10px !important;
}
/* /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; }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-cpxsih6m9b] {
    margin-bottom: 10px !important;
}
/* /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 T&C, page-scoped).
   Page layout (flex fill, card margins, green pager) now comes from the
   shared  ms-page / ms-title / ms-pop  classes in masters-forms.css.
   Only rules specific to this page remain here.
   ===================================================================== */

/* Pager text stays readable (shared footer-right is 11px / grey). */
.bspl-footer-right[b-7e53b6ti8a] {
    font-size: inherit;
    color: inherit;
}

/* ── 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;
    }

/* Voucher-type dropdown — keep its height in step with the date box. */
.vtc-select[b-7e53b6ti8a] {
    height: 37px;
    cursor: pointer;
    background: #fff;
}

/* ── Content field (Summernote WYSIWYG) ── */
.vtc-field-terms > label[b-7e53b6ti8a] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.vtc-editor-host[b-7e53b6ti8a] {
    background: #fff;
}

    /* Placeholder box while Summernote loads — same border/radius as .uf-input. */
    .vtc-editor-host:empty[b-7e53b6ti8a] {
        min-height: 220px;
        border: 1px solid #cbd5e1;
        border-radius: 5px;
    }

.vtc-field-terms .note-editor.note-frame[b-7e53b6ti8a] {
    border-color: #cbd5e1;
    border-radius: 5px;
    font-family: inherit;
}

/* ── Mobile ── (the "New" button icon-only rule is global in masters-forms.css) */
@media (max-width: 767px) {
    .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;
        }
}

/* Vertical spacing between stacked text boxes (same as MDepotEdit). */
.uf-modal .uf-sec-body .uf-field[b-rx8keas2v1] {
    margin-bottom: 10px !important;
}
/* /Components/Pages/Masters/NavigationSetting.razor.rz.scp.css */
/* =====================================================================
   NavigationSetting.razor.css — page-scoped.
   Shared chrome (bspl-title-block / ms-title / bspl-footer / mu-table /
   uf-btn-save / mu-toast / mu-confirm) comes from masters-forms.css.
   Only this page's own layout lives here.
   ===================================================================== */

.itb-page[b-tvug04tfev] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* Boxed tab bar (same look as TDS / Settings). margin-top cancels .mu-page's
   16px flex gap so the bar sits flush under the title block. */
.itb-toptabs[b-tvug04tfev] {
    flex-shrink: 0;
    margin-top: -16px;
    padding: 5px 16px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
}

    .itb-toptabs button[b-tvug04tfev] {
        padding: 5px 16px;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .2px;
        text-transform: uppercase;
        background: #fff;
        color: #555;
        border: 1px solid #d5d5d5;
        border-radius: 3px;
        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: half width on desktop, full width on tablet/mobile. */
.itb-page .mu-card[b-tvug04tfev] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width: 100%;
    max-width: 50%;
    border: none;
    box-shadow: none;
    background: #fff;
}

@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, code kept. display:none leaves no flex gap. */
.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;
    }

    /* One vertical rule per column boundary (border-right only). */
    .itb-grid-table tbody td[b-tvug04tfev] {
        border-right: 1px solid #eef0f2;
        border-bottom: 1px solid #eef0f2;
        border-top: 0;
        padding: 8px 10px;
    }

    .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;
    }

    .itb-grid-table .mu-th-chk[b-tvug04tfev],
    .itb-grid-table .mu-td-chk[b-tvug04tfev] {
        text-align: center;
    }

    .itb-grid-table tr.row-selected td[b-tvug04tfev] {
        background: #fff;
    }

/* 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;
}

/* 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;
    }
/* /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.
   Page fill, card spacing, title bar and popup shell come from the
   ms-page / ms-title / ms-pop / ms-form opt-in classes there (same as
   Login Master / ItemBrand). 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;
    }

/* 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;
    }
}

/* =====================================================================
   Level-master theme (page backdrop, footer pinning, pager, popup spacing)
   ===================================================================== */
.mu-page[b-vez7y59n81] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-vez7y59n81] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

.db-page-current[b-vez7y59n81] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-vez7y59n81] {
    font-size: 12px;
}

.uf-field[b-vez7y59n81] {
    margin-bottom: 11px;
}
/* /Components/Pages/Masters/SalesRep.razor.rz.scp.css */
/* Small accents on top of the shared mu-* grid/toolbar styling (masters-forms.css). */

.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-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] {
    padding: 24px 16px;
}

/* Same popup size as Site Master (SiteMaster.razor.css .smm-modal):
   desktop 75% up to 1100px, 85vh tall / tablet 90% / mobile 100%, 92vh. */
.srx-popup-modal[b-ie4yu14ccd] {
    width: 75%;
    max-width: 1100px;
    max-height: 85vh;
    min-height: 0;
    background: #ffffff;
    animation: srxModalIn-b-ie4yu14ccd .18s ease-out;
}

@keyframes srxModalIn-b-ie4yu14ccd {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@media (max-width: 991px) {
    .srx-popup-modal[b-ie4yu14ccd] { width: 90%; }
}

@media (max-width: 576px) {
    .srx-popup-overlay[b-ie4yu14ccd] { padding: 10px; }
    .srx-popup-modal[b-ie4yu14ccd]   { width: 100%; max-height: 92vh; }
}

/* Header — soft mint theme matching the old ERP's SalesRep screen.
   flex-shrink:0 — the modal is a flex column capped at 85vh; without it
   the long form squeezed the header on tall screens (title touching the
   top edge, bottom padding gone). */
.srx-popup-header[b-ie4yu14ccd] {
    flex-shrink: 0;
    background: #EAF8F4;
    border-bottom: 1px solid #BFE7DA;
}

/* Clip the header's green left stripe to the modal's rounded corners. */
.srx-popup-modal[b-ie4yu14ccd] {
    overflow: hidden;
}

    .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.
   ::deep — the <form> is rendered by the EditForm child component, so it
   doesn't carry this file's scope attribute; a plain ".srx-popup-form"
   never matched, the form stayed display:block and the footer got pushed
   past the modal's 85vh cap (buttons touching the bottom edge). */
.srx-popup-modal[b-ie4yu14ccd]  .srx-popup-form {
    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;
    background: #F5F7F8;
    /* Same font as Site Master's .smm-body, forced on every child below. */
    font-family: Arial, 'Segoe UI', sans-serif;
}

.srx-popup-body[b-ie4yu14ccd]  *:not(i) {
    font-family: inherit;
}

.srx-popup-footer[b-ie4yu14ccd] {
    flex-shrink: 0;
}

/* CL / CDT / UL / UDT — shown in edit mode only, just above the footer toolbar */
.srx-audit-strip[b-ie4yu14ccd] {
    flex-shrink: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px 16px;
    padding: 9px 24px;
    background: #f3fcf9;
    border-top: 1px solid #f1f5f9;
    font-size: 12px;
    color: #475569;
}

    .srx-child-check[b-ie4yu14ccd] {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        grid-column: 1 / -1;
        margin: 0;
        cursor: pointer;
    }

    .srx-audit-strip span[b-ie4yu14ccd] {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .srx-audit-strip b[b-ie4yu14ccd] {
        font-weight: 600;
        color: #0f172a;
        margin-right: 4px;
    }

/* 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: 10px;
    padding: 16px 24px;
    background: #f8fafd;
    border-top: 1px solid #f1f5f9;
    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;
    /* visible (not hidden), same as Site Master's .smm-body .cc-card — the
       date picker's calendar popup is position:absolute inside the field and
       was being cut off at the card edge. */
    overflow: visible;
}

    .srx-popup-body[b-ie4yu14ccd]  .cc-card:last-child {
        margin-bottom: 0;
    }

    .srx-popup-body[b-ie4yu14ccd]  .cc-card {
        transition: box-shadow .2s, border-color .2s;
    }

        .srx-popup-body[b-ie4yu14ccd]  .cc-card:hover,
        .srx-popup-body[b-ie4yu14ccd]  .cc-card:focus-within {
            border-color: #9FD9C2;
            box-shadow: 0 4px 14px rgba(15, 107, 88, .08);
        }

    .srx-popup-body[b-ie4yu14ccd]  .cc-header {
        cursor: pointer;
        user-select: none;
    }

/* 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: same as Site Master — 2 equal columns (42px gutter, like
   its .smx-row), each field = 140px label + control filling the rest
   (.smx-field: 140px 1fr, 12px gap, 12px between rows). Only long text
   (Address, Comments) spans the full row. 1 column < 820px. */

.srx-fgrid[b-ie4yu14ccd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    /* Site Master puts each card in its own half-row (42px gutter + 20px
       padding on both cards), so its two control columns sit 84px apart —
       84px here gives the same control width. */
    column-gap: 84px;
    row-gap: 12px;
    align-items: start;
}

.srx-fcell[b-ie4yu14ccd] {
    min-width: 0;
}

.srx-fspan-2[b-ie4yu14ccd],
.srx-fspan-full[b-ie4yu14ccd] {
    grid-column: 1 / -1;
}

/* Site Master stacks its cards (col-xl-6) below 1200px viewport. */
@media (max-width: 1199px) {
    .srx-fgrid[b-ie4yu14ccd] { grid-template-columns: minmax(0, 1fr); }
}

/* ── Field row: fixed 140px label column + control filling the rest ──── */

.srx-field-h[b-ie4yu14ccd] {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 12px;
    /* Site Master .smx-field padding (0 4px); the -3px/+3px pair lets the
       focus highlight show without adding space between rows. */
    padding: 3px 4px;
    margin: -3px 0;
    border-radius: 6px;
    transition: background .15s;
}

    /* Row lights up while one of its controls has focus. */
    .srx-field-h:focus-within[b-ie4yu14ccd] {
        background: #F0FAF6;
    }

.srx-field-h.smx-field-top[b-ie4yu14ccd] {
    align-items: flex-start;
}

    .srx-field-h.smx-field-top .srx-label[b-ie4yu14ccd] {
        padding-top: 8px;
    }

.srx-field-h .srx-label[b-ie4yu14ccd] {
    flex: 0 0 140px;
    width: 140px;
    max-width: 140px;
    margin: 0;
    font-size: 13px;
    font-weight: 400;
    color: #334155;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color .15s;
}

.srx-field-h:focus-within .srx-label[b-ie4yu14ccd] {
    color: #0F6B58;
    font-weight: 600;
}

.srx-req[b-ie4yu14ccd] {
    color: #dc2626;
    margin-left: 2px;
}

.srx-field-h .srx-input-wrap[b-ie4yu14ccd] {
    flex: 1 1 auto;
    min-width: 0;
}

/* All controls (incl. the shared datepicker wrapper) fill the column —
   no max-width cap, so right edges line up across rows. */
.srx-popup-modal[b-ie4yu14ccd]  .srx-input-wrap input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input),
.srx-popup-modal[b-ie4yu14ccd]  .srx-input-wrap select,
.srx-popup-modal[b-ie4yu14ccd]  .srx-input-wrap textarea,
.srx-popup-modal[b-ie4yu14ccd]  .srx-input-wrap .gdp-wrap {
    width: 100%;
    max-width: none;
}

@media (max-width: 480px) {
    .srx-field-h[b-ie4yu14ccd] {
        flex-wrap: wrap;
        gap: 4px;
    }

        .srx-field-h .srx-label[b-ie4yu14ccd] {
            flex: 0 0 100%;
            width: 100%;
            max-width: 100%;
        }

        .srx-field-h.smx-field-top .srx-label[b-ie4yu14ccd] {
            padding-top: 0;
        }

        .srx-field-h .srx-input-wrap[b-ie4yu14ccd] {
            flex: 1 1 100%;
        }
}

/* ── Controls: Site Master box (global .ms-box: height auto, 6px 8px,
   1px #cbd5e1, 5px, 13px / 1.5 line-height ≈ 34px) + hover / focus /
   invalid states ─────────────────────────────────────────────────── */

.srx-popup-modal[b-ie4yu14ccd]  .smx-input {
    height: auto;
    min-height: 0;
    box-sizing: border-box;
    padding: 6px 8px;
    font-size: 13px;
    line-height: 1.5;
    font-family: inherit;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #ffffff;
    transition: border-color .15s, box-shadow .15s, background-color .15s;
}

    .srx-popup-modal[b-ie4yu14ccd]  .smx-input:hover:not([readonly]):not(:disabled) {
        border-color: #9FD9C2;
    }

    .srx-popup-modal[b-ie4yu14ccd]  .smx-input:focus {
        border-color: #27AE60;
        box-shadow: 0 0 0 3px rgba(39, 174, 96, .15);
        outline: none;
    }

    /* Blazor marks fields after edit/validation: red when invalid. */
    .srx-popup-modal[b-ie4yu14ccd]  .smx-input.invalid {
        border-color: #DC3545;
        background-color: #FFF8F8;
    }

        .srx-popup-modal[b-ie4yu14ccd]  .smx-input.invalid:focus {
            box-shadow: 0 0 0 3px rgba(220, 53, 69, .15);
        }

    .srx-popup-modal[b-ie4yu14ccd]  .smx-input::placeholder {
        color: #A0AEC0;
    }

.srx-popup-modal[b-ie4yu14ccd]  textarea.smx-input {
    height: auto;
    min-height: 72px;
    resize: vertical;
}

/* Bootstrap form-select adds a right arrow — keep room for it at 32px. */
.srx-popup-modal[b-ie4yu14ccd]  select.smx-input {
    padding-right: 28px;
    background-position: right 8px center;
}

/* Standard control height (32px) — same rule as Site Master's .smm-body:
   every single-line box (textbox, dropdown, number, GlobalDatepicker) is
   5 + 5px padding + 20px line + 2px border. Textareas keep their rows height. */
.srx-popup-modal[b-ie4yu14ccd]  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input),
.srx-popup-modal[b-ie4yu14ccd]  select,
.srx-popup-modal[b-ie4yu14ccd]  .gdp-wrap {
    box-sizing: border-box;
    height: 32px;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 20px;
}

.smx-field-top[b-ie4yu14ccd] {
    justify-content: flex-start;
}

.srx-popup-modal[b-ie4yu14ccd]  .srx-readonly {
    background: #F5F7F8;
    color: #6B7280;
    cursor: default;
}

    .srx-popup-modal[b-ie4yu14ccd]  .srx-readonly:focus {
        box-shadow: none;
        border-color: #cbd5e1;
    }

/* ── Yes/No switches (Active, Factory, App Change, Change Password) ── */

.srx-switch[b-ie4yu14ccd] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 34px;
    margin: 0;
    padding-left: 0;
}

    .srx-switch .form-check-input[b-ie4yu14ccd] {
        width: 38px;
        height: 20px;
        margin: 0;
        float: none;
        cursor: pointer;
        border-color: #C5D0DB;
        transition: background-color .15s, border-color .15s, background-position .15s;
    }

        .srx-switch .form-check-input:checked[b-ie4yu14ccd] {
            background-color: #27AE60;
            border-color: #27AE60;
        }

        .srx-switch .form-check-input:focus[b-ie4yu14ccd] {
            border-color: #27AE60;
            box-shadow: 0 0 0 3px rgba(39, 174, 96, .15);
        }

    .srx-switch .form-check-label[b-ie4yu14ccd] {
        font-size: 13px;
        font-weight: 600;
        color: #6B7280;
        cursor: pointer;
        user-select: none;
    }

    .srx-switch .form-check-input:checked + .form-check-label[b-ie4yu14ccd] {
        color: #1E8449;
    }

/* ── Mobile prefix + number combo ─────────────────────────────────── */

.srx-mobile-row[b-ie4yu14ccd] {
    display: flex;
    gap: 6px;
}

.srx-popup-modal[b-ie4yu14ccd]  .srx-mobile-row .srx-prefix {
    width: 76px;
    flex: 0 0 76px;
}

.srx-popup-modal[b-ie4yu14ccd]  .srx-mobile-row input {
    flex: 1;
    min-width: 0;
}

/* ── Password + show/hide eye ─────────────────────────────────────── */

.srx-pwd[b-ie4yu14ccd] {
    position: relative;
}

.srx-popup-modal[b-ie4yu14ccd]  .srx-pwd input {
    padding-right: 38px;
}

.srx-pwd-eye[b-ie4yu14ccd] {
    position: absolute;
    top: 50%;
    right: 4px;
    transform: translateY(-50%);
    width: 28px;
    height: 26px;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: #6B7280;
    cursor: pointer;
    transition: color .15s, background .15s;
}

    .srx-pwd-eye:hover[b-ie4yu14ccd] {
        color: #0F6B58;
        background: #EAF8F4;
    }

/* ── Photo section ─────────────────────────────────────────────────── */

/* Photo card + Upload Photo popup — copied from SiteMaster.razor.css (Logo card / Upload Logo popup). */
/* ── Logo card — back to the old-UI reference look: "Upload Logo" button
   (now opens the popup below instead of picking a file directly) beside
   an optional remove "x", then a big box with a text placeholder until
   something's actually saved. ── */
.smx-logo-toolbar[b-ie4yu14ccd] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.smx-btn-upload[b-ie4yu14ccd] {
    height: 36px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    background: #1ab99a;
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 0 18px;
    font-size: 14px;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s;
}

    .smx-btn-upload:hover[b-ie4yu14ccd] {
        background: #149c81;
    }

.smx-file-hidden[b-ie4yu14ccd] {
    display: none;
}

.smx-logo-remove[b-ie4yu14ccd] {
    background: none;
    border: none;
    color: #546e7a;
    font-size: 18px;
    cursor: pointer;
    padding: 4px 8px;
    line-height: 1;
}

    .smx-logo-remove:hover[b-ie4yu14ccd] {
        color: #b91c1c;
    }

.smx-logo-box[b-ie4yu14ccd] {
    min-height: 240px;
    max-width: 320px;
    margin-top: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed #D5DDE5;
    border-radius: 10px;
    background: #FAFCFD;
    transition: border-color .15s, background .15s;
}

    .smx-logo-box:hover[b-ie4yu14ccd] {
        border-color: #27AE60;
        background: #F2FBF8;
    }

.smx-logo-placeholder[b-ie4yu14ccd] {
    color: #c9a227;
    font-weight: 600;
    font-size: 14px;
    text-align: center;
    line-height: 1.5;
}

.smx-logo-img[b-ie4yu14ccd] {
    max-width: 100%;
    max-height: 220px;
    object-fit: contain;
}

/* ── Upload Logo popup — matches the old-UI reference exactly: green
   uf-header, "Note: File size…" text, filename+Browse row, its own Save
   button in the footer. Stacks above the Site Master modal the same way
   the TDS Deductor popup does (same uf-overlay/uf-modal shell). ── */
.smx-logo-overlay[b-ie4yu14ccd] {
    z-index: 1060;
    padding: 24px 16px;
}

.smx-logo-modal[b-ie4yu14ccd] {
    width: 480px;
    max-width: 94vw;
    animation: smx-pop-in-b-ie4yu14ccd .18s ease-out;
}

@keyframes smx-pop-in-b-ie4yu14ccd {
    from { opacity: 0; transform: translateY(8px) scale(.98); }
    to   { opacity: 1; transform: none; }
}

.smx-logo-title-ic[b-ie4yu14ccd] {
    margin-right: 6px;
    opacity: .9;
}

.smx-logo-upload-body[b-ie4yu14ccd] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* ── Drop zone — InputFile (.smx-drop-input) is stretched invisibly over
   the whole zone, so click-to-browse AND drag-and-drop both land on the
   native file input. ── */
.smx-drop[b-ie4yu14ccd] {
    position: relative;
    min-height: 190px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 20px;
    text-align: center;
    border: 2px dashed #b9c6d6;
    border-radius: 10px;
    background: #f8fafc;
    color: #475569;
    transition: border-color .15s, background .15s, box-shadow .15s, transform .15s;
    cursor: pointer;
}

    .smx-drop:hover[b-ie4yu14ccd] {
        border-color: #1ab99a;
        background: #f2fbf8;
    }

    .smx-drop:focus-within[b-ie4yu14ccd] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.16);
    }

    .smx-drop.is-over[b-ie4yu14ccd] {
        border-color: #1ab99a;
        border-style: solid;
        background: #e6f7f2;
        transform: scale(1.01);
    }

    .smx-drop.has-file[b-ie4yu14ccd] {
        border-style: solid;
        border-color: #cbd5e1;
        background: #fff;
    }

        .smx-drop.has-file:hover[b-ie4yu14ccd] {
            border-color: #1ab99a;
        }

    .smx-drop.is-error[b-ie4yu14ccd] {
        border-color: #f1aab2;
        background: #fff5f6;
    }

.smx-drop[b-ie4yu14ccd]  .smx-drop-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
}

    .smx-drop[b-ie4yu14ccd]  .smx-drop-input:disabled {
        cursor: progress;
    }

.smx-drop-icon[b-ie4yu14ccd] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e6f7f2;
    color: #1ab99a;
    font-size: 24px;
    margin-bottom: 4px;
    transition: transform .15s;
}

.smx-drop:hover .smx-drop-icon[b-ie4yu14ccd],
.smx-drop.is-over .smx-drop-icon[b-ie4yu14ccd] {
    transform: translateY(-3px);
}

.smx-drop-title[b-ie4yu14ccd] {
    font-size: 14px;
    font-weight: 600;
    color: #1e293b;
}

.smx-drop-sub[b-ie4yu14ccd] {
    font-size: 12.5px;
    color: #64748b;
}

.smx-drop-link[b-ie4yu14ccd] {
    color: #149c81;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.smx-drop-preview[b-ie4yu14ccd] {
    width: 100%;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    /* checkerboard so transparent PNG/SVG logos stay visible */
    background-color: #fff;
    background-image:
        linear-gradient(45deg, #eef2f6 25%, transparent 25%),
        linear-gradient(-45deg, #eef2f6 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #eef2f6 75%),
        linear-gradient(-45deg, transparent 75%, #eef2f6 75%);
    background-size: 16px 16px;
    background-position: 0 0, 0 8px, 8px -8px, -8px 0;
}

    .smx-drop-preview img[b-ie4yu14ccd] {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

.smx-drop-hint[b-ie4yu14ccd] {
    font-size: 12px;
    color: #64748b;
}

    .smx-drop-hint i[b-ie4yu14ccd] {
        margin-right: 4px;
    }

.smx-logo-meta[b-ie4yu14ccd] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
    color: #64748b;
}

    .smx-logo-meta i[b-ie4yu14ccd] {
        margin-right: 4px;
    }

/* Selected-file chip */
.smx-file-chip[b-ie4yu14ccd] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border: 1px solid #dde3ec;
    border-radius: 8px;
    background: #f8fafc;
}

.smx-file-chip-ic[b-ie4yu14ccd] {
    font-size: 20px;
    color: #1ab99a;
    flex: 0 0 auto;
}

.smx-file-chip-txt[b-ie4yu14ccd] {
    flex: 1;
    min-width: 0;
}

.smx-file-chip-name[b-ie4yu14ccd] {
    font-size: 13px;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.smx-file-chip-size[b-ie4yu14ccd] {
    font-size: 11.5px;
    color: #64748b;
}

.smx-logo-upload-foot[b-ie4yu14ccd] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 16px 24px;
    border-top: 1px solid #f1f5f9;
    background: #f8fafd;
}

.smx-btn-cancel[b-ie4yu14ccd] {
    background: #fff;
    color: #475569;
    border-color: #dde3ec;
}

    .smx-btn-cancel:hover:not(:disabled)[b-ie4yu14ccd] {
        background: #f1f5f9;
        border-color: #c7d0dd;
    }

@media (max-width: 576px) {
    .smx-drop[b-ie4yu14ccd] {
        min-height: 160px;
    }

    .smx-logo-meta[b-ie4yu14ccd] {
        flex-direction: column;
        gap: 2px;
    }
}


/* ── 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-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;
    }
}

/* Header / close — same as the shared uf-header used by Reset Password. */
.srx-popup-header[b-ie4yu14ccd] {
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom: 1px solid #cdeee4;
}

    .srx-popup-header[b-ie4yu14ccd]::before {
        display: block;
    }

    .srx-popup-header .uf-title > span:first-child[b-ie4yu14ccd] {
        color: #0f766e;
        font-weight: 650;
        letter-spacing: 0.2px;
    }

    .srx-popup-header .uf-title-sub[b-ie4yu14ccd] {
        color: #5b8a82;
        font-size: 11.5px;
    }

.srx-popup-close[b-ie4yu14ccd] {
    background: rgba(15, 118, 110, 0.08);
    color: #0f766e;
    border-radius: 8px;
}

    .srx-popup-close:hover[b-ie4yu14ccd] {
        background: rgba(15, 118, 110, 0.16);
        color: #0f766e;
    }

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.srx-popup-modal[b-ie4yu14ccd] {
    border-radius: 6px;
}
/* /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;
}

/* No underline on hover/click/focus — pointer cursor + blue text already
   mark it clickable. Mouse click leaves no focus ring; keyboard (Tab)
   focus still gets a ring via :focus-visible. */
.sr-link[b-9nlezsp5p3],
.sr-link:hover[b-9nlezsp5p3],
.sr-link:focus[b-9nlezsp5p3],
.sr-link:active[b-9nlezsp5p3] {
    text-decoration: none;
    outline: none;
    box-shadow: none;
}

.sr-link:hover[b-9nlezsp5p3] {
    color: #0f3f80;
}

.sr-link:focus-visible[b-9nlezsp5p3] {
    outline: 2px solid #1ab99a;
    outline-offset: 2px;
    border-radius: 2px;
}

.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 tint is shifted from the
   default blue to green here, scoped to this table only. Selected rows
   get no background tint — the ticked checkbox shows the selection, so
   "select all" doesn't paint the whole grid green. */
.sr-table tbody tr:hover td[b-9nlezsp5p3] {
    background: #E2F5EE;
}
/* /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: 10px;
    min-height: 0;
    padding: 0 10px;
}

.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;
    }

/* Save — shared .uf-btn .uf-btn-save size, same as the Login Master popup. */

/* ── 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;
    }
}
/* /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;
    }
}


/* =====================================================================
   Schedule.razor.css (scoped)
   Page layout (flex fill, card margins, green pager) comes from the shared
   ms-page / ms-title / ms-pop / ms-form classes in masters-forms.css.
   Only Schedule-page-specific rules remain here.
   ===================================================================== */

/* Pager text stays readable (shared footer-right is 11px / grey). */
.bspl-footer-right[b-ua45m7kmwi] {
    font-size: inherit;
    color: inherit;
}

/* 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 ── (the "New" button icon-only rule is global in masters-forms.css) */
@media (max-width: 767px) {
    .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;
    }

/* Page-end footer pinning + Login/Level-master theme (gray page backdrop,
   square card corners). */
.mu-page[b-hpaxu29nkd] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-hpaxu29nkd] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 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;
}

/* "…" gap between the global .db-page-btn Previous / page / Next buttons
   (wwwroot/CSS/standard.css .db-pagination) — same as Login master. */
.db-page-current[b-hpaxu29nkd] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-hpaxu29nkd] {
    font-size: 12px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-hpaxu29nkd] {
        display: none;
    }
}

/* "# 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;
}

/* =====================================================================
   Footer pinning — same flex pattern as Login / Level master.
   .mu-page is a full-height flex column; .se-body (header card + rows
   grid) takes all remaining space, so the action footer is always the
   last row at the true bottom of the page — not floating right under
   short content the way the old position:sticky footer did.
   Plain selector for .mu-page: it is this component's root element, so a
   "[b-x] .mu-page" ::deep selector would never match it.
   ===================================================================== */
.mu-page[b-qsgwfedjyd] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

[b-qsgwfedjyd] .se-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: auto;
}

[b-qsgwfedjyd] .se-hdr-card {
    flex-shrink: 0;
    border-radius: 0;
}

/* Rows grid grows to fill the space between header card and footer. */
[b-qsgwfedjyd] .se-grid-card {
    padding: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 220px;
    border-radius: 0;
}

[b-qsgwfedjyd] .se-grid-wrap {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

[b-qsgwfedjyd] .se-pgfoot {
    flex-shrink: 0;
    background: #fff;
    border-top: 1px solid #dde3ed;
}

[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;
}

/* =====================================================================
   Login/Level-master theme (page backdrop, footer pinning, pager, popup
   spacing) — same block as LevelMaster.razor.css / RouteMaster.razor.css.
   ===================================================================== */
.mu-page[b-plsnuvr3mm] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

.mu-card[b-plsnuvr3mm] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 0;
}

.mu-toolbar[b-plsnuvr3mm] {
    flex-shrink: 0;
}

.mu-table-wrap[b-plsnuvr3mm] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-plsnuvr3mm] {
    flex-shrink: 0;
}

.bspl-footer-right[b-plsnuvr3mm] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-plsnuvr3mm] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.db-page-current[b-plsnuvr3mm] {
    font-size: 13px;
    color: #555;
    padding: 5px 4px;
    white-space: nowrap;
}

.bspl-footer .db-page-current[b-plsnuvr3mm] {
    font-size: 12px;
}

.uf-field[b-plsnuvr3mm] {
    margin-bottom: 11px;
}

@media (max-width: 767px) {
    .mu-foot-info[b-plsnuvr3mm] {
        display: none;
    }
}
/* /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, card spacing (12px 16px 8px), toolbar/foot
   flex-shrink and green pager now come from the shared ms-page class
   (masters-forms.css). Only the page-specific extras stay here. */
.mu-page[b-mwg0eb1fj8] {
    background: #f3f3f4; /* same gray backdrop as QG (.qg-page) */
}

.mu-card[b-mwg0eb1fj8] {
    overflow: hidden;
}

.mu-loading-cell[b-mwg0eb1fj8] {
    text-align: center;
    padding: 32px 0;
    color: #64748b;
    font-size: 14px;
}

/* Edit (pen) button removed per request — row itself opens the edit form now
   (see .mu-row-clickable below). */

/* Whole row opens Edit Site on click (replaces the old pencil-button
   column) — hover feedback matches the pen button's old green (#1ab394,
   same hex as .bspl-title-block h1 "SITE MASTER" text). */
.mu-row-clickable[b-mwg0eb1fj8] {
    cursor: pointer;
    transition: background 0.12s;
}

    .mu-row-clickable:hover[b-mwg0eb1fj8] {
        background: #e6f7f3;
    }

/* User's current (default) site — grid row from api/SiteMaster/companygrid,
   flagged by AuthState.SiteId match. */
.mu-row-current td[b-mwg0eb1fj8] {
    background: #d6f2ea;
}

    .mu-row-current:hover td[b-mwg0eb1fj8] {
        background: #e6f7f3;
    }

/* Title font/size/weight/color come from masters-forms.css .bspl-title-block h1. */
/* /Components/Pages/Masters/SiteMaster.razor.rz.scp.css */
/* SiteMaster.razor.css — reformatted to the Login-master ("uf-") popup
   standard (MLoginEdit.razor): green uf-header (no more white override),
   112px uf-field label grid (was 130px/uppercase), uf-input sizing/colors,
   uf-btn-save/uf-btn-new colors on the footer, and CollapsibleCard section
   headers reskinned (::deep, scoped to this popup only) to the same green.
   Two-column row/col-xl-6 card layout kept as-is — only the format/colors
   changed. Popup sizing (.smm-overlay/.smm-modal/.smm-body) and the shell
   itself (dark backdrop, centered card, radius, shadow) still come from
   the shared uf-overlay/uf-modal system in wwwroot/CSS/masters-forms.css. */

/* ── Title bar — was a plain white strip with light teal title, off the
   Login-master ("uf-") standard. Per request, dropped that override so the
   shared uf-header green gradient + accent bar (masters-forms.css) shows
   here exactly like MLoginEdit's header. Only the font-family stays pinned
   to Arial (page-wide standard already applied below via smm-body). ── */
.uf-title > span:first-child[b-j78nag58oz] {
    font-family: Arial, 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] {
    padding: 24px 16px;
}

.smm-modal[b-j78nag58oz] {
    width: 75%;
    max-width: 1100px;
    max-height: 85vh;
}

    /* The modal is a flex column capped at 85vh — without flex-shrink:0 the
       long body squeezed the header and footer on tall screens (title
       touching the top edge, Save touching the bottom edge; looked fine
       with DevTools open only because the window was shorter). Only
       .smm-body shrinks/scrolls. FooterToolbar's .ft-bar is a child
       component, so ::deep. */
    .smm-modal > .uf-header[b-j78nag58oz],
    .smm-modal[b-j78nag58oz]  .ft-bar {
        flex-shrink: 0;
    }

.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;
}

/* ── Standard control height (32px) — Site Master only; the shared
   masters-forms.css ms-box rule leaves height:auto. Every single-line box
   in the popup (textboxes, dropdowns, GlobalDatepicker, City autofill) is
   pinned to 32px: 5 + 5px padding + 20px line + 2px border. Textareas keep
   their rows height. ::deep reaches into child components (datepicker,
   City), and .smm-body + scope attribute out-weighs the global
   .ms-box input:not(...) rule. Padding per side so left/right (and the
   select arrow room) stay as the global rule sets them. ── */
.smm-body[b-j78nag58oz]  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not(.gdp-input),
.smm-body[b-j78nag58oz]  select,
.smm-body[b-j78nag58oz]  .gdp-wrap {
    box-sizing: border-box;
    height: 32px;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 20px;
}

    /* 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;
    }

    /* Reskin the card headers ("Registration"/"Address"/etc.) from
       CollapsibleCard's default gray-green gradient to the same uf-section
       green (masters-forms.css) MLoginEdit uses for its "SECURITY"/"DEPO"
       bars — keeps the whole popup on one green accent, scoped ::deep so
       CollapsibleCard.razor.css itself (used elsewhere) is untouched. */
    .smm-body[b-j78nag58oz]  .cc-header {
        background-image: none;
        background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
        border-bottom: 1px solid #cdeee4;
    }

    .smm-body[b-j78nag58oz]  .cc-title {
        font-family: inherit;
        font-size: 11.5px;
        font-weight: 650;
        letter-spacing: 0.8px;
        text-transform: uppercase;
        color: #0f766e;
    }

    .smm-body[b-j78nag58oz]  .cc-caret {
        color: #1ab99a;
    }

    /* City's SiteCityAutofill suggestion list (.sca-list) is
       position:absolute inside the "Address" card — CollapsibleCard.razor.css's
       default .cc-card{overflow:hidden} (there to clip the header/body to the
       card's rounded corners) would otherwise cut the list off at the card's
       bottom edge. Scoped to this popup only; other CollapsibleCard users are
       untouched. */
    .smm-body[b-j78nag58oz]  .cc-card {
        overflow: visible;
    }

@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;
}

.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) — standardized on
   MLoginEdit's uf-field layout (112px label column, align-items:start,
   label padding-top:8px) instead of the old 130px/center-aligned grid,
   per request ("edit site entry popup formate like login"). ── */
.smx-field[b-j78nag58oz] {
    display: grid;
    /* Matched to MLedgerEdit's .le-row: 140px label column, centered, 12px gap */
    grid-template-columns: 140px 1fr;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    padding: 0 4px;
}

    .smx-field:last-child[b-j78nag58oz] {
        margin-bottom: 4px;
    }

    /* Label typography standardized on uf-field's label (masters-forms.css:
       plain-case, 12.5px/500, #475569) — was uppercase/letter-spaced/11px,
       the Login sign-in-page style, not the Login-MASTER-popup style this
       is now matching. */
    .smx-field > label[b-j78nag58oz] {
        /* Matched to MLedgerEdit's .le-row > label */
        color: #334155;
        font-size: 13px;
        font-weight: normal;
        letter-spacing: normal;
        text-transform: none;
        padding-top: 0;
    }

.smx-field-top[b-j78nag58oz] {
    align-items: start;
}

    .smx-field-top > label[b-j78nag58oz] {
        padding-top: 7px;
    }

.smx-static[b-j78nag58oz] {
    padding: 7px 2px;
    color: #37474f;
}

/* Box look (padding/border/radius/13px/line-height/focus ring) comes from
   the shared ms-box class on .smm-modal (masters-forms.css) — only the
   width/transition/disabled/readonly/textarea extras stay here. */
.smx-input[b-j78nag58oz],
.form-control.smx-input[b-j78nag58oz],
.form-select.smx-input[b-j78nag58oz] {
    transition: border-color .12s, box-shadow .12s, background .12s;
}

    .smx-input:disabled[b-j78nag58oz],
    .form-control.smx-input:disabled[b-j78nag58oz] {
        background-color: #f1f5f9;
        color: #64748b;
        cursor: not-allowed;
    }

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. */
    resize: none;
    overflow-y: auto;
}

.form-control.smx-input[readonly][b-j78nag58oz] {
    background-color: #fff;
}

/* ── Real fix for "City font/size different from other fields" ──
   City's <input> is rendered INSIDE CityStateCountryAutofill — a CHILD
   component. Blazor CSS isolation stamps the CHILD's own scope attribute
   on elements the child renders, not this file's scope, so the plain
   ".smx-input" rule above (compiled to ".smx-input[b-thisfile]") never
   matched it — font-size/border/padding/color on the City box silently
   fell back to the browser default the whole time, no matter how many
   times the class list was "already correct" on the SiteMaster side.
   ::deep drops the scope requirement on the target selector so it can
   reach through into the child's markup instead. */
/* (Box look now reaches it through the global ms-box rule, which has no
   scope attribute.) Only the disabled state stays here. */
    .smm-body[b-j78nag58oz]  .sca-wrap input.smx-input:disabled {
        background-color: #f1f5f9;
        color: #64748b;
        cursor: not-allowed;
    }

.smx-divider[b-j78nag58oz] {
    border: 0;
    border-top: 1px solid #e4e9ed;
    margin: 18px 4px;
    opacity: 1;
}

/* ── TCS / TDS card ── */
.smx-tcstds[b-j78nag58oz] {
    padding: 4px 2px;
}

.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;
    }

/* ── TDS Deductor tile — whole card is the button. Hover: teal border,
   lift, arrow slides right. Press: settles back. States: is-set (current
   deductor shown), is-empty (dashed, call to action), is-loading
   (shimmer line), is-disabled (unsaved site), is-open (popup showing). ── */
.smx-tds-tile[b-j78nag58oz] {
    width: 100%;
    margin-top: 16px;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    border: 1px solid #dfe6ee;
    border-radius: 10px;
    background: #fff;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.12s, background 0.15s;
}

    .smx-tds-tile:hover:not(:disabled)[b-j78nag58oz] {
        border-color: #1ab99a;
        box-shadow: 0 6px 18px rgba(15, 118, 110, 0.12);
        transform: translateY(-1px);
    }

    .smx-tds-tile:active:not(:disabled)[b-j78nag58oz] {
        transform: translateY(0);
        box-shadow: 0 2px 6px rgba(15, 118, 110, 0.12);
    }

    .smx-tds-tile:focus-visible[b-j78nag58oz] {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.25);
    }

    .smx-tds-tile.is-empty[b-j78nag58oz] {
        border-style: dashed;
        border-color: #c9d3df;
        background: #fbfcfd;
    }

    .smx-tds-tile.is-open[b-j78nag58oz] {
        border-color: #1ab99a;
        background: #f3fcf9;
    }

    .smx-tds-tile:disabled[b-j78nag58oz] {
        cursor: not-allowed;
        background: #f6f7f9;
        opacity: 0.8;
    }

.smx-tds-ic[b-j78nag58oz] {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #e6f7f2;
    color: #0f766e;
    font-size: 17px;
    transition: background 0.15s, color 0.15s;
}

.smx-tds-tile:hover:not(:disabled) .smx-tds-ic[b-j78nag58oz],
.smx-tds-tile.is-open .smx-tds-ic[b-j78nag58oz] {
    background: #1ab99a;
    color: #fff;
}

.smx-tds-tile:disabled .smx-tds-ic[b-j78nag58oz] {
    background: #eceff3;
    color: #94a3b8;
}

.smx-tds-txt[b-j78nag58oz] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.smx-tds-lbl[b-j78nag58oz] {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #64748b;
}

.smx-tds-name[b-j78nag58oz] {
    font-size: 14px;
    font-weight: 700;
    color: #1e293b;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.smx-tds-sub[b-j78nag58oz] {
    font-size: 12px;
    color: #64748b;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.smx-tds-skel[b-j78nag58oz] {
    display: block;
    width: 70%;
    height: 12px;
    margin-top: 4px;
    border-radius: 4px;
    background: linear-gradient(90deg, #eef1f5 25%, #f8fafc 50%, #eef1f5 75%);
    background-size: 200% 100%;
    animation: smx-tds-shimmer-b-j78nag58oz 1.1s linear infinite;
}

@keyframes smx-tds-shimmer-b-j78nag58oz {
    from { background-position: 200% 0; }
    to { background-position: -200% 0; }
}

.smx-tds-count[b-j78nag58oz] {
    flex: 0 0 auto;
    min-width: 26px;
    height: 22px;
    padding: 0 8px;
    border-radius: 11px;
    background: #e6f7f2;
    color: #0f766e;
    font-size: 12px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.smx-tds-arrow[b-j78nag58oz] {
    flex: 0 0 auto;
    color: #94a3b8;
    font-size: 13px;
    transition: transform 0.15s, color 0.15s;
}

.smx-tds-tile:hover:not(:disabled) .smx-tds-arrow[b-j78nag58oz],
.smx-tds-tile.is-open .smx-tds-arrow[b-j78nag58oz] {
    color: #0f766e;
    transform: translateX(3px);
}

.smx-tds-tile:disabled .smx-tds-arrow[b-j78nag58oz] {
    visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .smx-tds-tile[b-j78nag58oz],
    .smx-tds-arrow[b-j78nag58oz],
    .smx-tds-ic[b-j78nag58oz] {
        transition: none;
    }

    .smx-tds-tile:hover:not(:disabled)[b-j78nag58oz] {
        transform: none;
    }

    .smx-tds-skel[b-j78nag58oz] {
        animation: none;
    }
}

/* ── Images card (Signature / Seal / Logo) — old UI's
   "Images(Signature\Stamp\Logo)" strip: 3 equal tiles, title + remove "x"
   on top, image centered below. Whole box is a button that opens the
   upload popup for that type. 3 across >= 640px, stacked below. ── */
.smx-img-grid[b-j78nag58oz] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.smx-img-tile[b-j78nag58oz] {
    display: flex;
    flex-direction: column;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}

    .smx-img-tile:hover[b-j78nag58oz] {
        border-color: #a7e3d3;
        box-shadow: 0 4px 14px rgba(15, 118, 110, 0.08);
    }

.smx-img-head[b-j78nag58oz] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 8px 8px 12px;
    border-bottom: 1px solid #eef1f5;
    background: #fafbfc;
}

.smx-img-title[b-j78nag58oz] {
    font-size: 13px;
    font-weight: 700;
    color: #334155;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

    .smx-img-title i[b-j78nag58oz] {
        color: #1ab99a;
    }

.smx-img-pending[b-j78nag58oz] {
    padding: 1px 7px;
    border-radius: 10px;
    background: #fff7ed;
    color: #b45309;
    font-size: 10.5px;
    font-weight: 700;
}

.smx-img-actions[b-j78nag58oz] {
    display: flex;
    gap: 4px;
    margin-left: auto;
}

.smx-img-act[b-j78nag58oz] {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

    .smx-img-act:hover[b-j78nag58oz] {
        background: #e6f7f2;
        color: #0f766e;
    }

    .smx-img-act.is-del:hover[b-j78nag58oz] {
        background: #fee2e2;
        color: #dc2626;
    }

    .smx-img-act:disabled[b-j78nag58oz] {
        opacity: 0.6;
        cursor: default;
    }

.smx-img-box[b-j78nag58oz] {
    position: relative;
    height: 190px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 14px;
    border: none;
    background: #fff;
    cursor: pointer;
    font-family: inherit;
}

    .smx-img-box:focus-visible[b-j78nag58oz] {
        outline: 2px solid #1ab99a;
        outline-offset: -2px;
    }

.smx-img-img[b-j78nag58oz] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* "Replace" hint fades in over an existing image */
.smx-img-hover[b-j78nag58oz] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: rgba(15, 23, 42, 0.45);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    opacity: 0;
    transition: opacity 0.15s;
}

.smx-img-box:hover .smx-img-hover[b-j78nag58oz],
.smx-img-box:focus-visible .smx-img-hover[b-j78nag58oz] {
    opacity: 1;
}

.smx-img-empty[b-j78nag58oz] {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 2px dashed #d5dde8;
    border-radius: 8px;
    color: #94a3b8;
    font-size: 12.5px;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

    .smx-img-empty i[b-j78nag58oz] {
        font-size: 24px;
    }

.smx-img-box:hover .smx-img-empty[b-j78nag58oz] {
    border-color: #1ab99a;
    color: #0f766e;
    background: #f3fcf9;
}

@media (max-width: 640px) {
    .smx-img-grid[b-j78nag58oz] {
        grid-template-columns: 1fr;
    }

    .smx-img-box[b-j78nag58oz] {
        height: 160px;
    }
}


/* ── Upload Logo popup — matches the old-UI reference exactly: green
   uf-header, "Note: File size…" text, filename+Browse row, its own Save
   button in the footer. Stacks above the Site Master modal the same way
   the TDS Deductor popup does (same uf-overlay/uf-modal shell). ── */
.smx-logo-overlay[b-j78nag58oz] {
    z-index: 1060;
    padding: 24px 16px;
}

.smx-logo-modal[b-j78nag58oz] {
    width: 480px;
    max-width: 94vw;
    animation: smx-pop-in-b-j78nag58oz .18s ease-out;
}

@keyframes smx-pop-in-b-j78nag58oz {
    from { opacity: 0; transform: translateY(8px) scale(.98); }
    to   { opacity: 1; transform: none; }
}

.smx-logo-title-ic[b-j78nag58oz] {
    margin-right: 6px;
    opacity: .9;
}

.smx-logo-upload-body[b-j78nag58oz] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* ── Drop zone — InputFile (.smx-drop-input) is stretched invisibly over
   the whole zone, so click-to-browse AND drag-and-drop both land on the
   native file input. ── */
.smx-drop[b-j78nag58oz] {
    position: relative;
    min-height: 190px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 20px;
    text-align: center;
    border: 2px dashed #b9c6d6;
    border-radius: 10px;
    background: #f8fafc;
    color: #475569;
    transition: border-color .15s, background .15s, box-shadow .15s, transform .15s;
    cursor: pointer;
}

    .smx-drop:hover[b-j78nag58oz] {
        border-color: #1ab99a;
        background: #f2fbf8;
    }

    .smx-drop:focus-within[b-j78nag58oz] {
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.16);
    }

    .smx-drop.is-over[b-j78nag58oz] {
        border-color: #1ab99a;
        border-style: solid;
        background: #e6f7f2;
        transform: scale(1.01);
    }

    .smx-drop.has-file[b-j78nag58oz] {
        border-style: solid;
        border-color: #cbd5e1;
        background: #fff;
    }

        .smx-drop.has-file:hover[b-j78nag58oz] {
            border-color: #1ab99a;
        }

    .smx-drop.is-error[b-j78nag58oz] {
        border-color: #f1aab2;
        background: #fff5f6;
    }

.smx-drop[b-j78nag58oz]  .smx-drop-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
}

    .smx-drop[b-j78nag58oz]  .smx-drop-input:disabled {
        cursor: progress;
    }

.smx-drop-icon[b-j78nag58oz] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e6f7f2;
    color: #1ab99a;
    font-size: 24px;
    margin-bottom: 4px;
    transition: transform .15s;
}

.smx-drop:hover .smx-drop-icon[b-j78nag58oz],
.smx-drop.is-over .smx-drop-icon[b-j78nag58oz] {
    transform: translateY(-3px);
}

.smx-drop-title[b-j78nag58oz] {
    font-size: 14px;
    font-weight: 600;
    color: #1e293b;
}

.smx-drop-sub[b-j78nag58oz] {
    font-size: 12.5px;
    color: #64748b;
}

.smx-drop-link[b-j78nag58oz] {
    color: #149c81;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.smx-drop-preview[b-j78nag58oz] {
    width: 100%;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    /* checkerboard so transparent PNG/SVG logos stay visible */
    background-color: #fff;
    background-image:
        linear-gradient(45deg, #eef2f6 25%, transparent 25%),
        linear-gradient(-45deg, #eef2f6 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #eef2f6 75%),
        linear-gradient(-45deg, transparent 75%, #eef2f6 75%);
    background-size: 16px 16px;
    background-position: 0 0, 0 8px, 8px -8px, -8px 0;
}

    .smx-drop-preview img[b-j78nag58oz] {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

.smx-drop-hint[b-j78nag58oz] {
    font-size: 12px;
    color: #64748b;
}

    .smx-drop-hint i[b-j78nag58oz] {
        margin-right: 4px;
    }

.smx-logo-meta[b-j78nag58oz] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
    color: #64748b;
}

    .smx-logo-meta i[b-j78nag58oz] {
        margin-right: 4px;
    }

/* Selected-file chip */
.smx-file-chip[b-j78nag58oz] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border: 1px solid #dde3ec;
    border-radius: 8px;
    background: #f8fafc;
}

.smx-file-chip-ic[b-j78nag58oz] {
    font-size: 20px;
    color: #1ab99a;
    flex: 0 0 auto;
}

.smx-file-chip-txt[b-j78nag58oz] {
    flex: 1;
    min-width: 0;
}

.smx-file-chip-name[b-j78nag58oz] {
    font-size: 13px;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.smx-file-chip-size[b-j78nag58oz] {
    font-size: 11.5px;
    color: #64748b;
}



.smx-logo-upload-foot[b-j78nag58oz] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 20px;
    border-top: 1px solid #e4e9ed;
    background: #fafbfc;
}

.smx-btn-cancel[b-j78nag58oz] {
    background: #fff;
    color: #475569;
    border-color: #dde3ec;
}

    .smx-btn-cancel:hover:not(:disabled)[b-j78nag58oz] {
        background: #f1f5f9;
        border-color: #c7d0dd;
    }

@media (max-width: 576px) {
    .smx-drop[b-j78nag58oz] {
        min-height: 160px;
    }

    .smx-logo-meta[b-j78nag58oz] {
        flex-direction: column;
        gap: 2px;
    }
}

/* ── Footer buttons (ChildContent of FooterToolbar — scoped here, see
   FooterToolbar.razor.css comment) — matched EXACTLY to MLoginEdit's
   uf-btn/uf-btn-save spec (masters-forms.css): 7px/13px padding, 13px/700
   font, 0.04em letter-spacing, 6px radius — not the old taller 38px/22px-
   padding/14px/600 look. Grid button removed per request (no .smx-btn-grid
   rule anymore — do not re-add). ── */
.smx-btn[b-j78nag58oz] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 7px 13px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.04em;
    border-radius: 6px;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s;
}

    .smx-btn i[b-j78nag58oz] {
        font-size: 14px;
    }

    .smx-btn:disabled[b-j78nag58oz] {
        opacity: 0.65;
        cursor: default;
    }

.smx-btn-save[b-j78nag58oz] {
    background: #15803d;
    color: #fff;
    border-color: #15803d;
    box-shadow: 0 1px 3px rgba(21, 128, 61, 0.35);
}

    .smx-btn-save:hover[b-j78nag58oz] {
        background: #116630;
        border-color: #116630;
    }



.smx-info-strip[b-j78nag58oz] {
    font-size: 12.5px;
    color: #6b7280;
    margin-left: auto;
    align-self: center;
}


@media (max-width: 576px) {
    .smx-info-strip[b-j78nag58oz] {
        margin-left: 0;
        width: 100%;
        text-align: center;
    }
}

/* ── Responsive (field grid) — uf-field (Login master) never stacks;
   raised the old 991px break down to 576px (phones only) so the label-left
   layout holds at the popup's normal desktop/tablet widths, matching the
   Login-master standard. ── */
@media (max-width: 576px) {
    .smx-field[b-j78nag58oz] {
        grid-template-columns: 1fr;
        gap: 6px;
        margin-bottom: 14px;
    }

    .smx-field-top > label[b-j78nag58oz] {
        padding-top: 0;
    }
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.smm-modal[b-j78nag58oz] {
    border-radius: 6px;
}
/* /Components/Pages/Masters/TagMasterPage.razor.rz.scp.css */
/* TagMasterPage.razor.css — scoped styles for the Tag1/Tag2/Tag3 grid page.
   Page fill, card spacing, green pager, title bar, popup shells, field rows
   and entry boxes come from masters-forms.css (ms-page / ms-pop /
   ms-form). */

.bspl-footer-right[b-kmz8t6t39g] {
    font-size: inherit;
    color: inherit;
}

/* Pager gap — matches 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;
}

.tag-table[b-kmz8t6t39g] {
    min-width: 420px;
}

/* Add/Edit popup width — .uf-modal-sm has no bare rule in masters-forms.css,
   so the "-sm" modal needs this modifier or it falls back to 780px. */
.uf-modal-sm.tag-modal[b-kmz8t6t39g] {
    max-width: 480px;
}

/* 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;
}


@media (max-width: 640px) {
    .tag-table[b-kmz8t6t39g] {
        min-width: 360px;
    }
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.tag-modal[b-kmz8t6t39g] {
    border-radius: 6px;
}
/* /Components/Pages/Masters/TaxClass.razor.rz.scp.css */
/* TaxClass.razor.css — scoped styles for the TaxClass Master page shell.
   Page fill, card spacing, green pager and title bar come from
   masters-forms.css (ms-page). This page uses .tcm-toolbar /
   .tcm-foot instead of .mu-toolbar / .mu-foot, so those keep their own
   flex-shrink:0. The child grid's .mu-table-wrap flex-fill is in
   TaxClassGrid.razor.css. */

/* 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-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 — popup shell, field rows and entry boxes come from
   masters-forms.css (uf-* + ms-pop / ms-form). Only the form-specific bits
   (width, open animation) live here. */

.uf-modal-sm.tcp-modal[b-4eqi9i3tyj] {
    max-width: 500px;
    animation: tcp-in-b-4eqi9i3tyj 0.18s ease-out;
}

.uf-footer-right[b-4eqi9i3tyj] {
    display: flex;
    align-items: center;
    gap: 10px;
}

@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) {
    .uf-modal-sm.tcp-modal[b-4eqi9i3tyj] {
        max-width: 95%;
    }
}

/* Popup corner radius = login popup (.uf-modal, 6px) instead of the 18px .ms-pop default. */
.ms-pop .uf-modal.tcp-modal[b-4eqi9i3tyj] {
    border-radius: 6px;
}
/* /Components/Pages/Masters/TdsDeductorPopup.razor.rz.scp.css */
/* TdsDeductorPopup.razor.css — shell (uf-overlay/uf-modal/uf-header/
   uf-field/uf-input/uf-btn) comes from wwwroot/CSS/masters-forms.css, same
   as SiteMaster. This file only adds the list + form split, the city
   suggest list and the responsive breakpoints:
     > 900px  list | form side by side
     <= 900px list stacked above form (list capped height, scrolls)
     <= 576px full-screen sheet, single-column fields, sticky footer. */

/* ── Shell ── stacks above Site Master (same z-index trick as the old iframe popup) */
.tdp-overlay[b-5zduu8y9xx] {
    z-index: 1060;
    padding: 24px 16px;
}

.tdp-modal[b-5zduu8y9xx] {
    width: 100%;
    max-width: 1080px;
    max-height: 90vh;
    font-family: Arial, 'Segoe UI', sans-serif;
    animation: tdp-pop-b-5zduu8y9xx 0.18s ease-out;
}

    /* The modal is a flex column capped at 90vh — without flex-shrink:0 the
       tall list/form squeezed the header and footer on tall screens (title
       touching the top edge, Save/Cancel touching the bottom edge; fine
       with DevTools open only because the window was shorter). Only
       .tdp-body shrinks/scrolls. */
    .tdp-modal > .uf-header[b-5zduu8y9xx],
    .tdp-modal > .tdp-footer[b-5zduu8y9xx] {
        flex-shrink: 0;
    }

@keyframes tdp-pop-b-5zduu8y9xx {
    from { opacity: 0; transform: translateY(10px) scale(0.985); }
    to { opacity: 1; transform: none; }
}

.tdp-title-ic[b-5zduu8y9xx] {
    margin-right: 6px;
    color: #1ab99a;
}

/* .tdp-modal prefix beats the shared .ms-pop .uf-body padding */
.tdp-modal .tdp-body[b-5zduu8y9xx] {
    flex: 1;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    padding: 18px 20px;
}

.tdp-layout[b-5zduu8y9xx] {
    display: grid;
    grid-template-columns: minmax(300px, 380px) 1fr;
    gap: 18px;
    /* stretch: list panel matches the form's height (was start) */
    align-items: stretch;
}

/* ═════════ List ═════════ */
.tdp-list[b-5zduu8y9xx] {
    display: flex;
    flex-direction: column;
    border: 1px solid #e4e9ef;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}

.tdp-list-toolbar[b-5zduu8y9xx] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px;
    border-bottom: 1px solid #eef1f5;
    background: #fafbfc;
}

.tdp-search[b-5zduu8y9xx] {
    flex: 1;
    position: relative;
    display: flex;
    align-items: center;
}

    .tdp-search > i[b-5zduu8y9xx] {
        position: absolute;
        left: 10px;
        font-size: 12px;
        color: #94a3b8;
        pointer-events: none;
    }

    .tdp-search input[b-5zduu8y9xx] {
        width: 100%;
        height: 32px;
        padding: 0 30px 0 30px;
        border: 1px solid #dde3ec;
        border-radius: 8px;
        font-size: 13px;
        font-family: inherit;
        outline: none;
        transition: border-color 0.12s, box-shadow 0.12s;
    }

        .tdp-search input:focus[b-5zduu8y9xx] {
            border-color: #1ab99a;
            box-shadow: 0 0 0 3px rgba(26, 185, 154, 0.16);
        }

.tdp-search-clear[b-5zduu8y9xx] {
    position: absolute;
    right: 4px;
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: #94a3b8;
    cursor: pointer;
}

    .tdp-search-clear:hover[b-5zduu8y9xx] {
        background: #eef2f6;
        color: #475569;
    }

.tdp-table-area[b-5zduu8y9xx] {
    flex: 1;
    position: relative;
    min-height: 200px;
}

.tdp-table-wrap[b-5zduu8y9xx] {
    position: absolute;
    inset: 0;
    overflow-y: auto;
}

.tdp-table[b-5zduu8y9xx] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .tdp-table thead th[b-5zduu8y9xx] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #1f6f8b;
        color: #fff;
        font-weight: 700;
        text-align: left;
        padding: 9px 10px;
        white-space: nowrap;
    }

        .tdp-table thead th.tdp-col-no[b-5zduu8y9xx] {
            padding: 9px 8px;
            text-align: center;
        }

.tdp-table td[b-5zduu8y9xx] {
    padding: 9px 10px;
    border-bottom: 1px solid #eef1f5;
    color: #1e293b;
    vertical-align: middle;
}

.tdp-col-no[b-5zduu8y9xx] {
    width: 40px;
    text-align: center;
    color: #64748b;
}

.tdp-col-date[b-5zduu8y9xx] {
    width: 120px;
    white-space: nowrap;
}

.tdp-row[b-5zduu8y9xx] {
    cursor: pointer;
    transition: background 0.1s;
}

    .tdp-row:nth-child(even)[b-5zduu8y9xx] {
        background: #f8fafc;
    }

    .tdp-row:hover[b-5zduu8y9xx] {
        background: #eefaf6;
    }

    .tdp-row:focus-visible[b-5zduu8y9xx] {
        outline: 2px solid #1ab99a;
        outline-offset: -2px;
    }

    .tdp-row.is-active[b-5zduu8y9xx] {
        background: #d9f3eb;
        box-shadow: inset 3px 0 0 #1ab99a;
    }

        .tdp-row.is-active td[b-5zduu8y9xx] {
            font-weight: 600;
        }

    .tdp-row.is-loading[b-5zduu8y9xx] {
        opacity: 0.6;
    }

.tdp-name[b-5zduu8y9xx] {
    word-break: break-word;
}

    .tdp-name > span:first-child[b-5zduu8y9xx] {
        margin-right: 6px;
    }

.tdp-badge[b-5zduu8y9xx] {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 10px;
    background: #15803d;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.02em;
    vertical-align: 1px;
}

/* Skeleton rows while the list loads */
.tdp-skel td span[b-5zduu8y9xx] {
    display: block;
    height: 12px;
    border-radius: 4px;
    background: linear-gradient(90deg, #eef1f5 25%, #f8fafc 50%, #eef1f5 75%);
    background-size: 200% 100%;
    animation: tdp-shimmer-b-5zduu8y9xx 1.1s linear infinite;
}

@keyframes tdp-shimmer-b-5zduu8y9xx {
    from { background-position: 200% 0; }
    to { background-position: -200% 0; }
}


.tdp-empty-row td[b-5zduu8y9xx] {
    border-bottom: none;
}

.tdp-empty[b-5zduu8y9xx] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 36px 12px;
    color: #94a3b8;
    text-align: center;
    font-size: 12.5px;
}

    .tdp-empty i[b-5zduu8y9xx] {
        font-size: 26px;
    }

/* ═════════ Form ═════════ */
.tdp-form[b-5zduu8y9xx] {
    position: relative;
    border: 1px solid #e4e9ef;
    border-radius: 10px;
    padding: 14px 16px 16px;
    background: #fcfdfe;
    min-width: 0;
}

.tdp-form-head[b-5zduu8y9xx] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding-bottom: 12px;
    margin-bottom: 14px;
    border-bottom: 1px dashed #e2e8f0;
}

.tdp-dirty[b-5zduu8y9xx] {
    margin-left: auto;
    font-size: 11.5px;
    color: #b45309;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

    .tdp-dirty i[b-5zduu8y9xx] {
        font-size: 7px;
    }

.tdp-form-loading[b-5zduu8y9xx] {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.7);
    border-radius: 10px;
    color: #0f766e;
    font-weight: 600;
}

/* Single field column (old UI order: Effective Date, Name, Designation,
   Phone, Email, City, State, Country, Address, Flat No., Building, Street,
   PIN); fieldset reset so disabled state is the only effect */
.tdp-grid[b-5zduu8y9xx] {
    display: grid;
    grid-template-columns: 1fr;
    column-gap: 22px;
    row-gap: 12px;
    border: none;
    margin: 0;
    padding: 0;
    min-width: 0;
}

    .tdp-grid:disabled[b-5zduu8y9xx] {
        opacity: 0.75;
    }

/* .ms-form .uf-field sets 140px labels + margin — tighten for 2-up grid */
.tdp-form .tdp-f[b-5zduu8y9xx] {
    grid-template-columns: 110px minmax(0, 1fr);
    margin-bottom: 0;
}

.tdp-f-wide[b-5zduu8y9xx] {
    grid-column: 1 / -1;
}

.tdp-form .tdp-f > label[b-5zduu8y9xx] {
    font-size: 13px;
}

/* multi-line field: label sits at the top, not centred against the tall box */
.tdp-form .tdp-f:has(textarea)[b-5zduu8y9xx] {
    align-items: start;
}

.tdp-form .tdp-f:has(textarea) > label[b-5zduu8y9xx] {
    padding-top: 7px;
}

.tdp-form textarea.uf-input[b-5zduu8y9xx] {
    resize: none;
    height: 76px;
    min-height: 76px;
    max-height: 76px;
}

/* State / Country — read-only inputs so they share the exact box of every
   other field (global .ms-form input rule); only the fill differs. Selector
   carries enough classes to beat that rule's white background. */
.tdp-form input.uf-input.tdp-auto[readonly][b-5zduu8y9xx] {
    background-color: #f5f7fa;
    color: #1e293b;
    cursor: default;
}

    .tdp-form input.uf-input.tdp-auto[readonly]:focus[b-5zduu8y9xx] {
        border-color: #cbd5e1;
        box-shadow: none;
    }


/* ═════════ Footer ═════════ */
.tdp-footer[b-5zduu8y9xx] {
    min-height: 62px;
}

.tdp-foot-btns[b-5zduu8y9xx] {
    display: flex;
    gap: 10px;
    margin-left: auto;
}



/* ═════════ Responsive ═════════ */
@media (max-width: 900px) {
    .tdp-layout[b-5zduu8y9xx] {
        grid-template-columns: 1fr;
    }

    /* stacked: list sits above the form, own capped height */
    .tdp-table-area[b-5zduu8y9xx] {
        flex: none;
        min-height: 0;
    }

    .tdp-table-wrap[b-5zduu8y9xx] {
        position: static;
        max-height: 230px;
    }
}

@media (max-width: 576px) {
    .tdp-overlay[b-5zduu8y9xx] {
        padding: 0;
        align-items: stretch;
    }

    .tdp-modal[b-5zduu8y9xx] {
        max-width: none;
        max-height: none;
        height: 100%;
        border-radius: 0 !important;
    }

    .tdp-modal .tdp-body[b-5zduu8y9xx] {
        padding: 12px;
    }

    .tdp-form[b-5zduu8y9xx] {
        padding: 12px;
    }

    .tdp-form .tdp-f[b-5zduu8y9xx] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .tdp-col-date[b-5zduu8y9xx] {
        width: 100px;
    }

    .tdp-footer[b-5zduu8y9xx] {
        position: sticky;
        bottom: 0;
        padding: 10px 12px;
    }

    .tdp-foot-btns[b-5zduu8y9xx] {
        width: 100%;
    }

        .tdp-foot-btns .uf-btn[b-5zduu8y9xx] {
            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;
}

/* ── 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;
    }
}

@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/BankSlip.razor.rz.scp.css */
/* BankSlip.razor.css — page chrome (bspl-*, mu-*) from shared CSS;
   slip layout mirrors legacy frmOpenBankSlip.aspx print output. */

.bs-page[b-mu1og0h7i5] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

    .bs-page h1[b-mu1og0h7i5] {
        font-weight: 300 !important;
    }

    .bs-page .bspl-filter-toggle.filter-default[b-mu1og0h7i5] {
        background: #1ab99a !important;
        border-color: #1ab99a !important;
        color: #fff !important;
    }

    .bs-page .bspl-footer-right[b-mu1og0h7i5] {
        display: flex;
        align-items: center;
        gap: 16px;
    }

.bs-error[b-mu1og0h7i5] {
    margin: 10px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
}

.bs-info[b-mu1og0h7i5] {
    margin: 10px 16px 0;
    padding: 8px 14px;
    background: #eef7f4;
    border-left: 4px solid #1ab99a;
    font-size: 13px;
}

.bs-content[b-mu1og0h7i5] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

/* ── One slip = one A4 page — layout copied from legacy frmOpenBankSlip ── */
.bs-slip[b-mu1og0h7i5] {
    width: 100%;
    max-width: 800px;
    background: #fff;
    border: 1px solid #e5e8ec;
    padding-left: 10px;
    padding-right: 10px;
    font-family: Arial, Helvetica, sans-serif;
    color: #000;
    box-sizing: border-box;
}

.bs-print-date[b-mu1og0h7i5] {
    text-align: right;
    font-weight: bold;
    font-size: 15px;
    padding-right: 36px;
    margin-bottom: 14px;
}

.bs-bank-name[b-mu1og0h7i5] {
    text-align: center;
    font-weight: bold;
    font-size: 17px;
}

.bs-bank-branch[b-mu1og0h7i5] {
    text-align: center;
    font-weight: bold;
    font-size: 14px;
    margin-top: 4px;
}

.bs-meta[b-mu1og0h7i5] {
    margin-top: 10px;
    font-size: 14px;
}

.bs-meta-row[b-mu1og0h7i5] {
    display: flex;
    align-items: center;
    padding: 4px 10px;
    font-weight: bold;
}

.bs-meta-left[b-mu1og0h7i5] {
    flex: 1;
    min-width: 0;
}

.bs-meta-right[b-mu1og0h7i5] {
    width: 210px;
    flex: 0 0 210px;
}

/* ── lines table ── */
.bs-table[b-mu1og0h7i5] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 14px;
}

    .bs-table .c-sr[b-mu1og0h7i5] {
        width: 45px;
    }

    .bs-table .c-chq[b-mu1og0h7i5] {
        width: 95px;
    }

    .bs-table .c-office[b-mu1og0h7i5] {
        width: 80px;
    }

    .bs-table .c-remark[b-mu1og0h7i5] {
        width: 240px;
    }

    .bs-table .c-amt[b-mu1og0h7i5] {
        width: 125px;
    }

    .bs-table th[b-mu1og0h7i5],
    .bs-table td[b-mu1og0h7i5] {
        text-align: left;
        padding: 4px 10px;
        vertical-align: middle;
        word-wrap: break-word;
    }

    .bs-table .num[b-mu1og0h7i5] {
        text-align: right;
        padding-right: 40px;
        white-space: nowrap;
    }

.bs-head[b-mu1og0h7i5] {
    border-top: 1px solid #000;
    border-bottom: 1px solid #000;
}

    .bs-head th[b-mu1og0h7i5] {
        font-weight: bold;
        padding-top: 6px;
        padding-bottom: 6px;
    }

/* fixed body height — legacy slip area; few rows spread over it (like old form) */
.bs-body[b-mu1og0h7i5] {
    height: 300px;
}

    .bs-body td[b-mu1og0h7i5] {
        font-weight: normal;
    }

/* ── total ── */
.bs-total-line[b-mu1og0h7i5] {
    margin-left: auto;
    width: 200px;
    border-top: 1px solid #000;
    margin-top: 8px;
}

    .bs-total-line.thick[b-mu1og0h7i5] {
        border-top-width: 3px;
        margin-top: 6px;
    }

.bs-total[b-mu1og0h7i5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 14px;
    font-weight: bold;
    padding: 12px 10px 0;
}

.bs-total-words[b-mu1og0h7i5] {
    flex: 1;
    min-width: 0;
}

.bs-total-amt[b-mu1og0h7i5] {
    width: 200px;
    text-align: right;
    padding-right: 40px;
    white-space: nowrap;
}

.bs-margin-row[b-mu1og0h7i5] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

/* ── Top filter bar (From / To / Generate Pay Slip / GO) ── */
.bs-filterbar[b-mu1og0h7i5] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #e5e8ec;
    flex-shrink: 0;
}

.bs-fb-date[b-mu1og0h7i5] {
    width: 210px;
}

    .bs-fb-date .gdp-field-row[b-mu1og0h7i5] {
        display: flex;
        align-items: center;
        gap: 6px;
    }

.bs-fb-chk[b-mu1og0h7i5] {
    margin-left: 24px; /* extra gap after To date */
}

    .bs-fb-chk label[b-mu1og0h7i5] {
        display: flex;
        align-items: center;
        gap: 6px;
        margin: 0;
        font-size: 13px;
        white-space: nowrap;
        cursor: pointer;
    }

/* GO — fixed-size solid button, text centred (shared .mu-btn stretches / left-aligns it) */
.bs-page .bs-fb-go[b-mu1og0h7i5] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    min-width: 50px;
    height: 32px;
    padding: 0 16px;
    margin-left: 12px;
    border: 1px solid #1a56a7;
    border-radius: 3px;
    background: #1a56a7;
    color: #fff;  
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .3px;
    text-align: center;
    line-height: 1;
    cursor: pointer;
}

    .bs-page .bs-fb-go:hover:not(:disabled)[b-mu1og0h7i5] {
        background: #154a90;
        border-color: #154a90;
    }

    .bs-page .bs-fb-go:disabled[b-mu1og0h7i5] {
        opacity: .6;
        cursor: not-allowed;
    }

/* ── Date boxes — same look as ITB.razor.css ── */
.bspl-date-fld[b-mu1og0h7i5]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-mu1og0h7i5]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-mu1og0h7i5]  .gdp-wrap:focus,
    .bspl-date-fld[b-mu1og0h7i5]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-mu1og0h7i5]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-mu1og0h7i5]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-mu1og0h7i5]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-mu1og0h7i5] {
    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-icon[b-mu1og0h7i5] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.bspl-date-fld .gcp-trigger[b-mu1og0h7i5],
.bspl-date-fld[b-mu1og0h7i5]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .bspl-date-fld .gcp-trigger:hover[b-mu1og0h7i5],
    .bspl-date-fld[b-mu1og0h7i5]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* teal section banner — same as ITB .itb-section-hdr */
.bs-section-hdr[b-mu1og0h7i5] {
    background: #1ab99a;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 7px 14px;
    margin: 14px -16px 8px;
}

@media screen and (max-width: 767px) {
    .bs-fb-date[b-mu1og0h7i5] {
        width: 100%;
    }

    .bs-meta-row[b-mu1og0h7i5] {
        flex-wrap: wrap;
    }

    .bs-meta-right[b-mu1og0h7i5] {
        width: 100%;
        flex-basis: 100%;
    }

    .bs-table .c-remark[b-mu1og0h7i5] {
        width: 140px;
    }
}

/* ── Browser print: only the slips, one per page ── */
@media print {
    .bs-filterbar[b-mu1og0h7i5], .bspl-title-block[b-mu1og0h7i5], .bspl-footer[b-mu1og0h7i5], .bs-error[b-mu1og0h7i5], .bs-info[b-mu1og0h7i5],
    .mu-drawer[b-mu1og0h7i5], .mu-drawer-overlay[b-mu1og0h7i5] {
        display: none !important;
    }

    .bs-page[b-mu1og0h7i5], .bs-content[b-mu1og0h7i5] {
        background: #fff;
        overflow: visible;
        padding: 0;
        height: auto;
    }

    /* flex blocks page breaks in Chrome -> plain block in print */
    .bs-content[b-mu1og0h7i5] {
        display: block;
    }

    .bs-slip[b-mu1og0h7i5] {
        border: none;
        border-radius: 0;
        max-width: none;
        margin: 0;
        page-break-after: always;
        break-after: page;
        page-break-inside: avoid;
    }

        .bs-slip:last-child[b-mu1og0h7i5] {
            page-break-after: auto;
        }
}
/* /Components/Pages/Others1/BrokerSummary.razor.rz.scp.css */
/* =====================================================================
   BrokerSummary.razor.css
   Header (bspl-title-block), filter drawer (mu-drawer/mu-fld), tab bar
   (db-tabbar/db-tab), footer (bspl-footer/...) and pagination
   (db-pagination/db-page-btn) all come from the shared
   common-page-chrome.css / masters-forms.css / standard.css — same as ITB.
   Only Broker Summary-specific bits live here.
   ===================================================================== */

/* FILTERS button — green while only defaults are active, red (has-filter,
   from shared chrome CSS) once a real filter is applied. */
.bs-page .bspl-filter-toggle.filter-default[b-hb84wysoga] {
    background: #1ab99a !important;
    border-color: #1ab99a !important;
    color: #fff !important;
}

    .bs-page .bspl-filter-toggle.filter-default:hover[b-hb84wysoga] {
        background: #159c82 !important;
        border-color: #159c82 !important;
    }

    .bs-page .bspl-filter-toggle.filter-default i[b-hb84wysoga],
    .bs-page .bspl-filter-toggle.filter-default .bspl-filter-label[b-hb84wysoga] {
        color: #fff !important;
    }

/* Page-end footer pinning */
.bs-page[b-hb84wysoga] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .bs-page h1[b-hb84wysoga] {
        font-weight: 300 !important;
    }

    .bs-page .bspl-footer-right[b-hb84wysoga] {
        display: flex;
        align-items: center;
        flex-wrap: nowrap;
        gap: 16px;
    }

    .bs-page .mu-card[b-hb84wysoga] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 10px 16px;
    }

    .bs-page .mu-table-wrap[b-hb84wysoga] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* Tab bar spacing — same nudge as ITB */
.db-tabbar[b-hb84wysoga] {
    padding: 7px 16px 6px;
    margin-top: -16px;
    margin-bottom: -19px;
}

/* Numeric column alignment (not defined globally in masters-forms.css) */
.mu-table thead th.num[b-hb84wysoga] {
    text-align: right;
}

.mu-table td.num[b-hb84wysoga] {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.bs-error[b-hb84wysoga] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Grid table ── */
.bs-grid-table[b-hb84wysoga] {
    border-collapse: separate;
    border-spacing: 0;
    table-layout: auto;
    width: 100%;
}

    .bs-grid-table thead th[b-hb84wysoga] {
        text-align: left;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.3;
        padding: 8px 10px;
        position: sticky;
        top: 0;
        z-index: 20;
        border: none !important;
        box-shadow: none !important;
        outline: none !important;
    }

        .bs-grid-table thead th.mu-th-idx[b-hb84wysoga] {
            text-align: right;
        }

        .bs-grid-table thead th.num[b-hb84wysoga] {
            text-align: right;
        }

    .bs-grid-table tbody td.mu-idx[b-hb84wysoga] {
        text-align: right;
        padding-right: 8px;
    }

    .bs-grid-table tbody td[b-hb84wysoga],
    .bs-grid-table tfoot td[b-hb84wysoga] {
        border-left: 1px solid #E2E5E8;
        border-right: 1px solid #E2E5E8;
        border-top: 0;
    }

    /* Data-row height matched to ITB / GAINS_TB */
    .bs-grid-table tbody td[b-hb84wysoga] {
        padding: 8px 12px;
    }

.bs-th-sort[b-hb84wysoga] {
    cursor: pointer;
    user-select: none;
}

.bs-sort-ic[b-hb84wysoga] {
    font-size: 10px;
    margin-left: 3px;
    color: #1ab99a;
}

.bs-code[b-hb84wysoga] {
    color: #2f8fd1;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bs-name[b-hb84wysoga] {
    max-width: 380px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bs-site[b-hb84wysoga] {
    white-space: nowrap;
    color: #55606e;
}

/* Sticky footer total row */
.bs-grid-table tfoot td[b-hb84wysoga] {
    position: sticky;
    bottom: 0;
    z-index: 15;
    background: #E1EAF1;
    height: 40px;
    padding: 4px 8px;
    box-sizing: border-box;
    font-weight: 700;
}

.bs-total-label[b-hb84wysoga] {
    text-align: right;
}

/* ── Print view (server-built HTML) ── */
.bs-html-wrap[b-hb84wysoga] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    padding: 16px;
    background: #fff;
}

/* ── Filter drawer ── */
.bspl-date-fld[b-hb84wysoga]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-hb84wysoga]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-hb84wysoga]  .gdp-wrap:focus,
    .bspl-date-fld[b-hb84wysoga]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-hb84wysoga]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-hb84wysoga]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-hb84wysoga]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-hb84wysoga] {
    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-hb84wysoga] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-hb84wysoga] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.bspl-date-fld .gcp-trigger[b-hb84wysoga],
.bspl-date-fld[b-hb84wysoga]  .gcp-trigger {
    border: 1px solid #cbd5e1;
    border-radius: 5px;
}

    .bspl-date-fld .gcp-trigger:hover[b-hb84wysoga],
    .bspl-date-fld[b-hb84wysoga]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Section banner — "FORMAT" full-width teal strip */
.bs-section-hdr[b-hb84wysoga] {
    background: #1ab99a;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 7px 14px;
    margin: 14px -16px 8px;
}

.bs-format-grid[b-hb84wysoga] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px;
}

.bs-format-divider[b-hb84wysoga] {
    border-top: 1px dashed #d6dbe0;
    margin: 6px 0;
}

.bs-arap[b-hb84wysoga] {
    display: flex;
    gap: 24px;
    align-items: center;
}

    .bs-arap .le-chk[b-hb84wysoga] {
        margin-bottom: 0;
    }

.bs-hint[b-hb84wysoga] {
    font-size: 11.5px;
    color: #767b82;
    margin-top: 2px;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .bspl-footer[b-hb84wysoga] {
        flex-wrap: wrap;
        gap: 8px;
    }

    .mu-drawer[b-hb84wysoga] {
        width: 100%;
        max-width: 360px;
    }
}

@media (max-width: 767px) {
    .bs-page .mu-card[b-hb84wysoga] {
        margin: 0 10px;
    }
}

/* Party autofill fills the drawer width (separate component → ::deep needed) */
.bs-auto-fld[b-hb84wysoga]  .lga-wrap {
    width: 100% !important;
    max-width: 100% !important;
}

    .bs-auto-fld[b-hb84wysoga]  .lga-wrap input {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
    }
/* /Components/Pages/Others1/DepotReportMain.razor.rz.scp.css */
/* =====================================================================
   GAINS — DepotReportMain.razor.css   (Others1 → Depot Report, page-scoped)
   Same shell as Indent Grid: title bar, mu-card, mu-table, mu-drawer, footer
   all come from the shared wwwroot/CSS/masters-forms.css. Only accents here.
   ===================================================================== */

.dr-page[b-br0qhb7tt7] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .dr-page .mu-card[b-br0qhb7tt7] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .dr-page .mu-toolbar[b-br0qhb7tt7] {
        flex-shrink: 0;
    }

.dr-wrap[b-br0qhb7tt7] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-br0qhb7tt7] {
    flex-shrink: 0;
}

.bspl-footer-right[b-br0qhb7tt7] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-br0qhb7tt7] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.dr-foot-left[b-br0qhb7tt7] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.dr-table .ch-num[b-br0qhb7tt7],
.dr-table thead th.ch-num[b-br0qhb7tt7] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.dr-table td[b-br0qhb7tt7] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Total row pinned to the true bottom of the grid — same as Sales Register
   (Registergridshared). app.js measureWrap sets --gains-filler-h on ".ql-body .mu-table-wrap";
   the padding below turns it into the gap that lets position:sticky clamp flush with the bottom. */
.dr-table tfoot td[b-br0qhb7tt7] {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #fbfcfe;
    font-weight: 700;
}

.dr-table tfoot tr.dr-total[b-br0qhb7tt7] {
    height: 40px;
    background: #fff;
}

.ql-body .dr-table tbody tr:last-child td[b-br0qhb7tt7] {
    padding-bottom: calc(10px + var(--gains-filler-h, 0px));
}

.dr-table tbody tr:hover td[b-br0qhb7tt7] {
    background: #e9f5ec;
}

.dr-ck[b-br0qhb7tt7] {
    width: 32px;
    text-align: center;
}

.dr-rec[b-br0qhb7tt7] {
    width: 90px;
    padding: 3px 6px;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    font-size: 12px;
    text-align: right;
}

/* Summary type picker in the filter drawer */
.dr-types[b-br0qhb7tt7] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.dr-type[b-br0qhb7tt7] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    cursor: pointer;
}

/* Filter drawer date boxes + clear-date icon — same as QG (.qg-date-fld / .gcp-trigger).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.dr-date-fld[b-br0qhb7tt7]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .dr-date-fld[b-br0qhb7tt7]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .dr-date-fld[b-br0qhb7tt7]  .gdp-wrap:focus,
    .dr-date-fld[b-br0qhb7tt7]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .dr-date-fld[b-br0qhb7tt7]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.dr-date-fld[b-br0qhb7tt7]  .gdp-icon {
    color: #1a56a7;
}

.dr-date-fld[b-br0qhb7tt7]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-br0qhb7tt7] {
    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-br0qhb7tt7] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-br0qhb7tt7] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}


/* Lifted / Unlifted stock popup */
.dr-pop[b-br0qhb7tt7] { width: 900px; max-width: 95vw; }
.dr-pop-body[b-br0qhb7tt7] { padding: 0; }
.dr-pop-wrap[b-br0qhb7tt7] { max-height: 60vh; overflow: auto; }
.dr-pop-msg[b-br0qhb7tt7] { padding: 24px; text-align: center; color: #64748b; font-size: 13px; }

/* VNum cell (Unlifted / Lifted) — blue square + blue text, as in Sales Register */
.dr-vnum-cell[b-br0qhb7tt7] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.dr-vsq[b-br0qhb7tt7] {
    flex: 0 0 10px;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    background: #1a56a7;   /* fallback — real colour set inline per voucher type */
    border: none;
    padding: 0;
}

button.dr-vsq[b-br0qhb7tt7] {
    cursor: pointer;
}

    button.dr-vsq:hover[b-br0qhb7tt7] {
        opacity: 0.75;
    }

.dr-vnum[b-br0qhb7tt7] {
    color: #1a56a7;
    font-weight: 500;
}

.dr-vnum-link[b-br0qhb7tt7] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-weight: 500;
    cursor: pointer;
}

    .dr-vnum-link:hover[b-br0qhb7tt7] {
        text-decoration: underline;
    }

/* Depot Summary 2 — one card per depot */
.dr-cards[b-br0qhb7tt7] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
    grid-auto-rows: 420px;
    gap: 16px;
    padding: 12px;
    align-content: start;
}

.dr-card[b-br0qhb7tt7] {
    border: 1px solid #cbd5e1;
    background: #fff;
    height: 420px;   /* fixed: every card same size, whatever the row count */
    overflow: auto;
}

.dr-card-title[b-br0qhb7tt7] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #4a78b0;
    color: #fff;
    text-align: center;
    font-weight: 700;
    font-size: 13px;
    padding: 2px 6px;
}

.dr-card-table[b-br0qhb7tt7] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

    .dr-card-table th[b-br0qhb7tt7] {
        position: sticky;
        top: 22px;
        z-index: 1;
        background: #2f4f7f;
        color: #fff;
        text-align: left;
        padding: 5px 6px;
        font-size: 12px;
    }

    .dr-card-table td[b-br0qhb7tt7] {
        padding: 5px 6px;
        border-bottom: 1px solid #eef1f5;
    }

    .dr-card-table .ch-num[b-br0qhb7tt7] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

/* No spinner arrows on the qty boxes */
.dr-rec[b-br0qhb7tt7]::-webkit-outer-spin-button,
.dr-rec[b-br0qhb7tt7]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.dr-rec[b-br0qhb7tt7] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* Default view before the first GO */
.dr-welcome[b-br0qhb7tt7] {
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px;
    overflow: hidden;
}

    .dr-welcome img[b-br0qhb7tt7] {
        width: min(800px, 100%);   /* image is 580x300: enlarged a bit, not full screen */
        height: auto;
        max-height: 100%;
        object-fit: contain;
    }
/* /Components/Pages/Others1/FourColumnReport.razor.rz.scp.css */
/* =====================================================================
   FourColumnReport.razor.css  (PurFourColumnReport.razor.css is identical)
   Modern 4-panel layout: main grid (left) + stacked drill cards (right).
   Master CSS still does the chrome: bspl-title-block / bspl-footer
   (common-page-chrome.css), mu-table / mu-drawer / mu-fld / uf-input /
   uf-chk / mu-pages / mu-toast / mu-vnum-dot (masters-forms.css),
   ms-page (green pager). Only layout + card look live here.
   ===================================================================== */

.fcr-page[b-5vgmiv36n3] {
    --fcr-maroon: #7d1a24;
    --fcr-blue: #306B9C;
    --fcr-line: #e3e8ef;
    --fcr-muted: #64748b;
    --fcr-sel: #fff4d6;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f5f8;
}

/* ── Header: Purchase / Sales segmented toggle ── */
.fcr-seg[b-5vgmiv36n3] {
    display: inline-flex;
    border: 1px solid #1ab99a;
    border-radius: 4px;
    overflow: hidden;
}

    .fcr-seg button[b-5vgmiv36n3] {
        padding: 5px 14px;
        border: 0;
        background: #fff;
        color: #0f766e;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.03em;
        cursor: pointer;
        font-family: inherit;
    }

        .fcr-seg button + button[b-5vgmiv36n3] {
            border-left: 1px solid #1ab99a;
        }

        .fcr-seg button.on[b-5vgmiv36n3] {
            background: #1ab99a;
            color: #fff;
        }

        .fcr-seg button:disabled[b-5vgmiv36n3] {
            cursor: default;
        }

/* ── Body: main grid + side column ── */
.fcr-body[b-5vgmiv36n3] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
    /* one row capped to the available height — without this the row grows to the
       table's content and pushes the footer below the viewport */
    grid-template-rows: minmax(0, 1fr);
    gap: 12px;
    padding: 12px 16px;
}

.fcr-page > .bspl-title-block[b-5vgmiv36n3],
.fcr-page > .bspl-footer[b-5vgmiv36n3] {
    flex-shrink: 0;
}

.fcr-side[b-5vgmiv36n3] {
    display: grid;
    gap: 12px;
    min-height: 0;
}

.fcr-body-4 .fcr-side[b-5vgmiv36n3] {
    grid-template-rows: repeat(3, minmax(0, 1fr));
}

.fcr-body-3 .fcr-side[b-5vgmiv36n3] {
    grid-template-rows: repeat(2, minmax(0, 1fr));
}

/* ── Card ── */
.fcr-card[b-5vgmiv36n3] {
    --fcr-accent: var(--fcr-blue);
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: #fff;
    border: 1px solid var(--fcr-line);
    border-top: 3px solid var(--fcr-accent);
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 4px 14px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

    .fcr-card.fcr-maroon[b-5vgmiv36n3] {
        --fcr-accent: var(--fcr-maroon);
    }

    .fcr-card.fcr-blue[b-5vgmiv36n3] {
        --fcr-accent: var(--fcr-blue);
    }

.fcr-card-hdr[b-5vgmiv36n3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--fcr-line);
    flex-shrink: 0;
}

.fcr-card-title[b-5vgmiv36n3] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 700;
    color: var(--fcr-accent);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

    .fcr-card-title i[b-5vgmiv36n3] {
        font-size: 13px;
        opacity: 0.85;
    }

.fcr-chip[b-5vgmiv36n3] {
    padding: 2px 10px;
    border-radius: 999px;
    background: #f1f5f9;
    color: var(--fcr-muted);
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}

    .fcr-chip.fcr-chip-sel[b-5vgmiv36n3] {
        background: var(--fcr-accent);
        color: #fff;
    }

/* Main grid only: table fills the card so the Total row sits at the card bottom;
   the filler row soaks up the spare height (gap goes between last row and Total). */
.fcr-table.fcr-fill[b-5vgmiv36n3] {
    height: 100%;
}

    .fcr-table.fcr-fill tbody tr.fcr-fillrow[b-5vgmiv36n3],
    .fcr-table.fcr-fill tbody tr.fcr-fillrow:hover[b-5vgmiv36n3] {
        height: 100%;
        background: transparent;
    }

        .fcr-table.fcr-fill tbody tr.fcr-fillrow td[b-5vgmiv36n3] {
            height: 100%;
            padding: 0;
            border: 0;
            background: transparent;
        }

.fcr-scroll[b-5vgmiv36n3] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}

/* ── Table (compact, accent header per card) ── */
.fcr-table[b-5vgmiv36n3] {
    font-size: 12.5px;
}

    .fcr-table thead th[b-5vgmiv36n3] {
        background: var(--fcr-accent);
        color: #fff;
        padding: 7px 10px;
        font-size: 11.5px;
        line-height: 1.25;
        vertical-align: bottom;
        border-bottom: 0;
        z-index: 2;
    }

        .fcr-table thead th span[b-5vgmiv36n3] {
            font-weight: 500;
            opacity: 0.8;
        }

    .fcr-table tbody td[b-5vgmiv36n3] {
        padding: 6px 10px;
        vertical-align: top;
    }

    .fcr-table tfoot td[b-5vgmiv36n3] {
        position: sticky;
        bottom: 0;
        z-index: 1;
        padding: 6px 10px;
        background: #fbf7ea;
        border-top: 2px solid var(--fcr-accent);
        color: #1a2537;
        font-weight: 700;
        white-space: nowrap;
    }

    .fcr-table .text-end[b-5vgmiv36n3] {
        text-align: right;
    }

    .fcr-table td.fcr-hint[b-5vgmiv36n3] {
        padding: 34px 12px;
        text-align: center;
        color: #94a3b8;
        font-size: 12.5px;
        background: #fff !important;
    }

.fcr-c-idx[b-5vgmiv36n3] {
    width: 40px;
    color: var(--fcr-muted);
}

/* Clickable rows + selected row */
.fcr-row[b-5vgmiv36n3] {
    cursor: pointer;
}

.fcr-table tbody tr.fcr-sel td[b-5vgmiv36n3] {
    background: var(--fcr-sel);
}

    .fcr-table tbody tr.fcr-sel td:first-child[b-5vgmiv36n3] {
        box-shadow: inset 3px 0 0 var(--fcr-accent);
    }

/* Two-line cells */
.fcr-l1[b-5vgmiv36n3] {
    line-height: 1.35;
}

.fcr-l2[b-5vgmiv36n3] {
    line-height: 1.35;
    color: var(--fcr-muted);
    font-size: 11.5px;
}

.fcr-strong[b-5vgmiv36n3] {
    font-weight: 600;
    color: #1a2537;
}

.fcr-muted[b-5vgmiv36n3] {
    color: var(--fcr-muted);
}

.fcr-bal[b-5vgmiv36n3] {
    color: #0f766e;
    font-weight: 600;
}

.fcr-neg[b-5vgmiv36n3] {
    color: #b91c1c;
}

.fcr-table td.fcr-nowrap[b-5vgmiv36n3] {
    white-space: nowrap;
}

.fcr-table td.fcr-wrap[b-5vgmiv36n3] {
    white-space: normal;
    min-width: 150px;
    max-width: 280px;
}

.fcr-site[b-5vgmiv36n3] {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    background: #eef2f7;
    color: #334155;
    font-size: 11px;
    font-weight: 700;
}

.fcr-vnum[b-5vgmiv36n3] {
    color: #1a56a7;
    font-weight: 600;
    cursor: pointer;
}

    .fcr-vnum:hover[b-5vgmiv36n3] {
        text-decoration: underline;
    }

.fcr-vtype[b-5vgmiv36n3] {
    margin-left: 6px;
    padding: 0 6px;
    border-radius: 3px;
    background: #f1f5f9;
    color: var(--fcr-muted);
    font-size: 10.5px;
    font-weight: 700;
}

.fcr-days[b-5vgmiv36n3] {
    display: inline-block;
    min-width: 28px;
    padding: 1px 7px;
    border-radius: 999px;
    background: #fef3c7;
    color: #92400e;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
}

/* ── Footer pager: page-size + pages on one line ── */
.fcr-pager[b-5vgmiv36n3] {
    flex-wrap: nowrap;
    gap: 10px;
}

    .fcr-pager .mu-pagesize[b-5vgmiv36n3] {
        height: 28px;
        font-size: 12px;
    }

    .fcr-pager .mu-nav[b-5vgmiv36n3],
    .fcr-pager .mu-pagenum[b-5vgmiv36n3] {
        min-width: 28px;
        height: 28px;
    }

/* ── Drawer ── */
.fcr-page .mu-drawer-section:first-child[b-5vgmiv36n3] {
    margin-top: -18px;
}

/* GlobalDatepicker → 32px uf-input look (::deep — child renders .gdp-wrap) */
.fcr-date-fld .gdp-field-row[b-5vgmiv36n3] {
    align-items: center;
}

.fcr-date-fld[b-5vgmiv36n3]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border-color: #cbd5e1;
    border-radius: 5px;
}

    .fcr-date-fld[b-5vgmiv36n3]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

.fcr-date-fld[b-5vgmiv36n3]  .gdp-value {
    font-weight: 400;
}

.fcr-date-fld .gcp-trigger[b-5vgmiv36n3],
.fcr-date-fld[b-5vgmiv36n3]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .fcr-date-fld .gcp-trigger:hover[b-5vgmiv36n3],
    .fcr-date-fld[b-5vgmiv36n3]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.fcr-date-fld .gcp-icon[b-5vgmiv36n3] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Ledger / Item autofill inputs → 32px uf-input look (child markup) */
.fcr-ac[b-5vgmiv36n3]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
}

    .fcr-ac[b-5vgmiv36n3]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* Dropdowns: slim chevron instead of the native arrow */
.fcr-sel-fld select[b-5vgmiv36n3] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

/* Pending / Sales checkboxes in one row */
.fcr-chk-row[b-5vgmiv36n3] {
    flex-direction: row;
    align-items: center;
    gap: 22px;
    min-height: 32px;
}

/* ── Narrow screens: stack the panels, page scrolls ── */
@media (max-width: 1100px) {
    .fcr-body[b-5vgmiv36n3] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        overflow-y: auto;
        padding: 10px;
    }

    .fcr-main[b-5vgmiv36n3] {
        height: 62vh;
    }

    .fcr-body-4 .fcr-side[b-5vgmiv36n3],
    .fcr-body-3 .fcr-side[b-5vgmiv36n3] {
        grid-template-rows: none;
        grid-auto-rows: 360px;
    }
}
/* /Components/Pages/Others1/PurchaseReport.razor.rz.scp.css */
/* PurchaseReport.razor — master CSS does the chrome (bspl-title-block, mu-table, mu-drawer, mu-fld, uf-input). */
.pr-page[b-t27u1wsbxq] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f5f8;
    gap: 10px;
}

.pr-body[b-t27u1wsbxq] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin: 0 10px;
    overflow: hidden;
}

.pr-wrap[b-t27u1wsbxq] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.pr-table th span[b-t27u1wsbxq] {
    font-weight: 500;
    opacity: .75;
}

.pr-l1[b-t27u1wsbxq] {
    line-height: 1.25;
}

.pr-l2[b-t27u1wsbxq] {
    line-height: 1.25;
    font-size: 11.5px;
    color: #64748b;
}

.pr-nowrap[b-t27u1wsbxq] {
    white-space: nowrap;
}

.pr-vnum[b-t27u1wsbxq] {
    color: #1a56a7;
    cursor: pointer;
}

/* date lines up under VNum text: dot 10px + 6px margin */
.pr-nowrap .pr-l2[b-t27u1wsbxq] {
    padding-left: 16px;
}

    .pr-vnum:hover[b-t27u1wsbxq] {
        text-decoration: underline;
    }

.pr-site td[b-t27u1wsbxq] {
    background: #eef2f7;
    font-weight: 700;
    color: #1f2d3d;
}

.pr-total td[b-t27u1wsbxq] {
    font-weight: 700;
}

/* ── Filter drawer — same control sizing as Dr/Cr Register (32px, radius 3px) ── */
.bspl-date-fld[b-t27u1wsbxq]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-t27u1wsbxq]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-t27u1wsbxq]  .gdp-wrap:focus,
    .bspl-date-fld[b-t27u1wsbxq]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-t27u1wsbxq]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-t27u1wsbxq]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-t27u1wsbxq]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-t27u1wsbxq],
.bspl-date-fld[b-t27u1wsbxq]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-t27u1wsbxq],
    .bspl-date-fld[b-t27u1wsbxq]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.gcp-icon[b-t27u1wsbxq] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.pr-ac[b-t27u1wsbxq]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
}

    .pr-ac[b-t27u1wsbxq]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

.pr-sel-fld select[b-t27u1wsbxq] {
    -webkit-appearance: none;
    appearance: none;
    height: 32px;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

.pr-chk-row[b-t27u1wsbxq] {
    flex-direction: row;
    align-items: center;
    min-height: 32px;
}

.mu-drawer[b-t27u1wsbxq]  select,
.mu-drawer[b-t27u1wsbxq]  input[type="text"],
.mu-drawer[b-t27u1wsbxq]  .mu-input,
.mu-drawer[b-t27u1wsbxq]  .mu-btn {
    border-radius: 3px;
}

.pr-page .mu-card[b-t27u1wsbxq],
.pr-page .mu-table-wrap[b-t27u1wsbxq] {
    border-radius: 3px;
}

/* ── HTML Report (old IL print layout) ── */
.pr-html-body[b-t27u1wsbxq] {
    position: relative;
    background: #fff;
    margin: 0 10px;
}

.pr-paper-tools[b-t27u1wsbxq] {
    padding: 0;
}

.pr-print[b-t27u1wsbxq] {
    border: 0;
    background: none;
    font-size: 20px;
    color: #475569;
    cursor: pointer;
}

    .pr-print:hover[b-t27u1wsbxq] {
        color: #1a56a7;
    }

.pr-paper-scroll[b-t27u1wsbxq] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.pr-paper[b-t27u1wsbxq] {
    width: 780px;
    margin: 0;
    padding: 0 0 20px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000;
}

.pr-pageno[b-t27u1wsbxq] {
    text-align: right;
    font-weight: 700;
    padding: 6px 40px;
}

.pr-ptitle[b-t27u1wsbxq] {
    text-align: center;
    font-weight: 700;
    padding: 6px 0;
    border-bottom: 1px solid #000;
}

.pr-ptable[b-t27u1wsbxq] {
    width: 100%;
    border-collapse: collapse;
}

    .pr-ptable th[b-t27u1wsbxq] {
        font-weight: 700;
        padding: 6px;
        border-bottom: 1px solid #000;
        vertical-align: middle;
    }

    .pr-ptable td[b-t27u1wsbxq] {
        padding: 4px 6px;
        vertical-align: middle;
    }

    .pr-ptable .l[b-t27u1wsbxq] {
        text-align: left;
    }

    .pr-ptable .r[b-t27u1wsbxq] {
        text-align: right;
    }

.pr-psite td[b-t27u1wsbxq] {
    font-weight: 700;
    padding-top: 10px;
}

.pr-prow td[b-t27u1wsbxq] {
    height: 52px;
}

.pr-ptotal td[b-t27u1wsbxq] {
    font-weight: 700;
    border-top: 1px solid silver;
    border-bottom: 1px solid silver;
}

.pr-pempty[b-t27u1wsbxq] {
    text-align: center;
    padding: 24px;
    color: #64748b;
}

/* ── Footer: [xls] [pdf]  Total Records : N ── */
/* Footer + total rows — same look as Sales Register (Registergridshared.razor.css). */
.ql-footer-fixed[b-t27u1wsbxq] {
    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;
}

.mu-total-row[b-t27u1wsbxq] {
    height: 40px;
    background: #e8e8e8;
}

/* Footer details — same as QLedger.razor.css: pager keeps its own size/colour,
   teal active page, and the totals rows use the Daybook totals look. */
.bspl-footer-right[b-t27u1wsbxq] {
    font-size: inherit;
    color: inherit;
}

.ql-footer-fixed .mu-pagenum.active[b-t27u1wsbxq],
.ql-footer-fixed .mu-pagenum.active:hover[b-t27u1wsbxq] {
    background: #16a085;
    border-color: #16a085;
    box-shadow: 0 1px 3px rgba(22,160,133,.35);
}

.ql-footer-fixed .mu-nav:hover:not(:disabled)[b-t27u1wsbxq],
.ql-footer-fixed .mu-pagenum:hover[b-t27u1wsbxq] {
    background: #e8f5f0;
    border-color: #16a085;
    color: #16a085;
}

.pr-table tfoot td[b-t27u1wsbxq] {
    padding: 6px 10px;
    font-weight: 700;
    color: #1a2537;
    background: #e8e8e8;
    border-top: 2px solid #d0d0d0;
    position: sticky;
    bottom: 0;
    z-index: 3;
}
/* /Components/Pages/Others1/PurFourColumnReport.razor.rz.scp.css */
/* =====================================================================
   FourColumnReport.razor.css  (PurFourColumnReport.razor.css is identical)
   Modern 4-panel layout: main grid (left) + stacked drill cards (right).
   Master CSS still does the chrome: bspl-title-block / bspl-footer
   (common-page-chrome.css), mu-table / mu-drawer / mu-fld / uf-input /
   uf-chk / mu-pages / mu-toast / mu-vnum-dot (masters-forms.css),
   ms-page (green pager). Only layout + card look live here.
   ===================================================================== */

.fcr-page[b-sc3emj5ryu] {
    --fcr-maroon: #7d1a24;
    --fcr-blue: #306B9C;
    --fcr-line: #e3e8ef;
    --fcr-muted: #64748b;
    --fcr-sel: #fff4d6;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f5f8;
}

/* ── Header: Purchase / Sales segmented toggle ── */
.fcr-seg[b-sc3emj5ryu] {
    display: inline-flex;
    border: 1px solid #1ab99a;
    border-radius: 4px;
    overflow: hidden;
}

    .fcr-seg button[b-sc3emj5ryu] {
        padding: 5px 14px;
        border: 0;
        background: #fff;
        color: #0f766e;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.03em;
        cursor: pointer;
        font-family: inherit;
    }

        .fcr-seg button + button[b-sc3emj5ryu] {
            border-left: 1px solid #1ab99a;
        }

        .fcr-seg button.on[b-sc3emj5ryu] {
            background: #1ab99a;
            color: #fff;
        }

        .fcr-seg button:disabled[b-sc3emj5ryu] {
            cursor: default;
        }

/* ── Body: main grid + side column ── */
.fcr-body[b-sc3emj5ryu] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
    /* one row capped to the available height — without this the row grows to the
       table's content and pushes the footer below the viewport */
    grid-template-rows: minmax(0, 1fr);
    gap: 12px;
    padding: 12px 16px;
}

.fcr-page > .bspl-title-block[b-sc3emj5ryu],
.fcr-page > .bspl-footer[b-sc3emj5ryu] {
    flex-shrink: 0;
}

.fcr-side[b-sc3emj5ryu] {
    display: grid;
    gap: 12px;
    min-height: 0;
}

.fcr-body-4 .fcr-side[b-sc3emj5ryu] {
    grid-template-rows: repeat(3, minmax(0, 1fr));
}

.fcr-body-3 .fcr-side[b-sc3emj5ryu] {
    grid-template-rows: repeat(2, minmax(0, 1fr));
}

/* ── Card ── */
.fcr-card[b-sc3emj5ryu] {
    --fcr-accent: var(--fcr-blue);
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: #fff;
    border: 1px solid var(--fcr-line);
    border-top: 3px solid var(--fcr-accent);
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 4px 14px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

    .fcr-card.fcr-maroon[b-sc3emj5ryu] {
        --fcr-accent: var(--fcr-maroon);
    }

    .fcr-card.fcr-blue[b-sc3emj5ryu] {
        --fcr-accent: var(--fcr-blue);
    }

.fcr-card-hdr[b-sc3emj5ryu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--fcr-line);
    flex-shrink: 0;
}

.fcr-card-title[b-sc3emj5ryu] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 700;
    color: var(--fcr-accent);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

    .fcr-card-title i[b-sc3emj5ryu] {
        font-size: 13px;
        opacity: 0.85;
    }

.fcr-chip[b-sc3emj5ryu] {
    padding: 2px 10px;
    border-radius: 999px;
    background: #f1f5f9;
    color: var(--fcr-muted);
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}

    .fcr-chip.fcr-chip-sel[b-sc3emj5ryu] {
        background: var(--fcr-accent);
        color: #fff;
    }

/* Main grid only: table fills the card so the Total row sits at the card bottom;
   the filler row soaks up the spare height (gap goes between last row and Total). */
.fcr-table.fcr-fill[b-sc3emj5ryu] {
    height: 100%;
}

    .fcr-table.fcr-fill tbody tr.fcr-fillrow[b-sc3emj5ryu],
    .fcr-table.fcr-fill tbody tr.fcr-fillrow:hover[b-sc3emj5ryu] {
        height: 100%;
        background: transparent;
    }

        .fcr-table.fcr-fill tbody tr.fcr-fillrow td[b-sc3emj5ryu] {
            height: 100%;
            padding: 0;
            border: 0;
            background: transparent;
        }

.fcr-scroll[b-sc3emj5ryu] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}

/* ── Table (compact, accent header per card) ── */
.fcr-table[b-sc3emj5ryu] {
    font-size: 12.5px;
}

    .fcr-table thead th[b-sc3emj5ryu] {
        background: var(--fcr-accent);
        color: #fff;
        padding: 7px 10px;
        font-size: 11.5px;
        line-height: 1.25;
        vertical-align: bottom;
        border-bottom: 0;
        z-index: 2;
    }

        .fcr-table thead th span[b-sc3emj5ryu] {
            font-weight: 500;
            opacity: 0.8;
        }

    .fcr-table tbody td[b-sc3emj5ryu] {
        padding: 6px 10px;
        vertical-align: top;
    }

    .fcr-table tfoot td[b-sc3emj5ryu] {
        position: sticky;
        bottom: 0;
        z-index: 1;
        padding: 6px 10px;
        background: #fbf7ea;
        border-top: 2px solid var(--fcr-accent);
        color: #1a2537;
        font-weight: 700;
        white-space: nowrap;
    }

    .fcr-table .text-end[b-sc3emj5ryu] {
        text-align: right;
    }

    .fcr-table td.fcr-hint[b-sc3emj5ryu] {
        padding: 34px 12px;
        text-align: center;
        color: #94a3b8;
        font-size: 12.5px;
        background: #fff !important;
    }

.fcr-c-idx[b-sc3emj5ryu] {
    width: 40px;
    color: var(--fcr-muted);
}

/* Clickable rows + selected row */
.fcr-row[b-sc3emj5ryu] {
    cursor: pointer;
}

.fcr-table tbody tr.fcr-sel td[b-sc3emj5ryu] {
    background: var(--fcr-sel);
}

    .fcr-table tbody tr.fcr-sel td:first-child[b-sc3emj5ryu] {
        box-shadow: inset 3px 0 0 var(--fcr-accent);
    }

/* Two-line cells */
.fcr-l1[b-sc3emj5ryu] {
    line-height: 1.35;
}

.fcr-l2[b-sc3emj5ryu] {
    line-height: 1.35;
    color: var(--fcr-muted);
    font-size: 11.5px;
}

.fcr-strong[b-sc3emj5ryu] {
    font-weight: 600;
    color: #1a2537;
}

.fcr-muted[b-sc3emj5ryu] {
    color: var(--fcr-muted);
}

.fcr-bal[b-sc3emj5ryu] {
    color: #0f766e;
    font-weight: 600;
}

.fcr-neg[b-sc3emj5ryu] {
    color: #b91c1c;
}

.fcr-table td.fcr-nowrap[b-sc3emj5ryu] {
    white-space: nowrap;
}

.fcr-table td.fcr-wrap[b-sc3emj5ryu] {
    white-space: normal;
    min-width: 150px;
    max-width: 280px;
}

.fcr-site[b-sc3emj5ryu] {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    background: #eef2f7;
    color: #334155;
    font-size: 11px;
    font-weight: 700;
}

.fcr-vnum[b-sc3emj5ryu] {
    color: #1a56a7;
    font-weight: 600;
    cursor: pointer;
}

    .fcr-vnum:hover[b-sc3emj5ryu] {
        text-decoration: underline;
    }

.fcr-vtype[b-sc3emj5ryu] {
    margin-left: 6px;
    padding: 0 6px;
    border-radius: 3px;
    background: #f1f5f9;
    color: var(--fcr-muted);
    font-size: 10.5px;
    font-weight: 700;
}

.fcr-days[b-sc3emj5ryu] {
    display: inline-block;
    min-width: 28px;
    padding: 1px 7px;
    border-radius: 999px;
    background: #fef3c7;
    color: #92400e;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
}

/* ── Footer pager: page-size + pages on one line ── */
.fcr-pager[b-sc3emj5ryu] {
    flex-wrap: nowrap;
    gap: 10px;
}

    .fcr-pager .mu-pagesize[b-sc3emj5ryu] {
        height: 28px;
        font-size: 12px;
    }

    .fcr-pager .mu-nav[b-sc3emj5ryu],
    .fcr-pager .mu-pagenum[b-sc3emj5ryu] {
        min-width: 28px;
        height: 28px;
    }

/* ── Drawer ── */
.fcr-page .mu-drawer-section:first-child[b-sc3emj5ryu] {
    margin-top: -18px;
}

/* GlobalDatepicker → 32px uf-input look (::deep — child renders .gdp-wrap) */
.fcr-date-fld .gdp-field-row[b-sc3emj5ryu] {
    align-items: center;
}

.fcr-date-fld[b-sc3emj5ryu]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border-color: #cbd5e1;
    border-radius: 5px;
}

    .fcr-date-fld[b-sc3emj5ryu]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

.fcr-date-fld[b-sc3emj5ryu]  .gdp-value {
    font-weight: 400;
}

.fcr-date-fld .gcp-trigger[b-sc3emj5ryu],
.fcr-date-fld[b-sc3emj5ryu]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .fcr-date-fld .gcp-trigger:hover[b-sc3emj5ryu],
    .fcr-date-fld[b-sc3emj5ryu]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.fcr-date-fld .gcp-icon[b-sc3emj5ryu] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Ledger / Item autofill inputs → 32px uf-input look (child markup) */
.fcr-ac[b-sc3emj5ryu]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
}

    .fcr-ac[b-sc3emj5ryu]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* Dropdowns: slim chevron instead of the native arrow */
.fcr-sel-fld select[b-sc3emj5ryu] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

/* Pending / Sales checkboxes in one row */
.fcr-chk-row[b-sc3emj5ryu] {
    flex-direction: row;
    align-items: center;
    gap: 22px;
    min-height: 32px;
}

/* ── Narrow screens: stack the panels, page scrolls ── */
@media (max-width: 1100px) {
    .fcr-body[b-sc3emj5ryu] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        overflow-y: auto;
        padding: 10px;
    }

    .fcr-main[b-sc3emj5ryu] {
        height: 62vh;
    }

    .fcr-body-4 .fcr-side[b-sc3emj5ryu],
    .fcr-body-3 .fcr-side[b-sc3emj5ryu] {
        grid-template-rows: none;
        grid-auto-rows: 360px;
    }
}
/* /Components/Pages/Others/BankReconciliation.razor.rz.scp.css */
/* =====================================================================
   BankReconciliation.razor.css  (scoped)
   Header (bspl-title-block) + filter drawer (mu-drawer/mu-fld) come from
   the shared common-page-chrome.css / masters-forms.css. Top tab bar
   (db-tabbar/db-tab), footer (bspl-footer/bspl-foot-btn/bspl-footer-count)
   and pagination (db-pagination/db-page-btn) come straight from
   standard.css — same as ITB. Only bank-recon-specific bits live here.
   ===================================================================== */

/* ═══════════ ITB-STYLE PAGE CHROME ═══════════ */

/* Page-end footer pinning — same pattern as ITB/MLedger/Daybook/BSPL:
   page is a flex column, card grows, footer sits at the bottom. */
.bre-page[b-2inb7x3zwb] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    /* Title weight — same as ITB */
    .bre-page .bspl-title-block h1[b-2inb7x3zwb],
    .bre-page .bspl-title-row h1[b-2inb7x3zwb],
    .bre-page .bspl-title-left h1[b-2inb7x3zwb],
    .bre-page h1[b-2inb7x3zwb] {
        font-weight: 300 !important;
    }

    /* FILTERS button — green when no filter applied (ITB "filter-default"),
       red (has-filter, from shared chrome CSS) once a filter is applied. */
    .bre-page .bspl-filter-toggle.filter-default[b-2inb7x3zwb] {
        background: #1ab99a !important;
        border-color: #1ab99a !important;
        color: #fff !important;
    }

        .bre-page .bspl-filter-toggle.filter-default:hover[b-2inb7x3zwb] {
            background: #159c82 !important;
            border-color: #159c82 !important;
        }

        .bre-page .bspl-filter-toggle.filter-default i[b-2inb7x3zwb],
        .bre-page .bspl-filter-toggle.filter-default .bspl-filter-label[b-2inb7x3zwb] {
            color: #fff !important;
        }

    /* Tab bar spacing — same as ITB */
    .bre-page .db-tabbar[b-2inb7x3zwb] {
        padding: 7px 16px 6px;
        margin-top: -16px;
        margin-bottom: -19px;
    }

    /* Card fills the space between tabs and footer */
    .bre-page .mu-card[b-2inb7x3zwb] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 10px 16px;
    }

        .bre-page .mu-card > .bre-toolbar[b-2inb7x3zwb],
        .bre-page .mu-card > .bre-summary[b-2inb7x3zwb] {
            flex: 0 0 auto;
        }

    /* Bank Reco grid scrolls inside the card (ITB .mu-table-wrap) */
    .bre-page .bre-reco-card .mu-table-wrap[b-2inb7x3zwb] {
        flex: 1;
        height: auto;
        overflow: auto;
        min-height: 200px;
    }

    /* Footer — same as ITB */
    .bre-page .bspl-footer-right[b-2inb7x3zwb] {
        display: flex;
        align-items: center;
        flex-wrap: nowrap;
        gap: 16px;
    }

    .bre-page .bspl-footer-left[b-2inb7x3zwb] {
        display: flex;
        align-items: center;
        gap: 14px;
    }

    /* Save PDF / Saved PDF — boxed icon (same bspl-foot-btn as Excel) + label */
    .bre-page .bre-foot-item[b-2inb7x3zwb] {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        white-space: nowrap;
    }

    /* PDF colour on the shared footer icon button (Excel uses .xls) */
    .bre-page .bspl-foot-btn.pdf[b-2inb7x3zwb] {
        color: #c0392b;
    }

        .bre-page .bspl-foot-btn.pdf.active[b-2inb7x3zwb] {
            background: #fdecea;
            border-color: #f1b0a9;
        }

        .bre-page .bspl-foot-btn.pdf:disabled[b-2inb7x3zwb] {
            opacity: .5;
            cursor: default;
        }

    /* Rows-per-page control — SVG caret over native select (ITB) */
    .bre-page .mu-pagesize-wrap[b-2inb7x3zwb] {
        position: relative;
        display: inline-flex;
        align-items: center;
    }

    .bre-page .mu-pagesize-caret[b-2inb7x3zwb] {
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        width: 14px;
        height: 14px;
        color: #767b82;
        pointer-events: none;
    }

    /* Saved-PDFs panel (Report 1 / 2) — sits between card and footer */
    .bre-page .bre-pdfs-wrap[b-2inb7x3zwb] {
        flex: 0 0 auto;
        height: auto;
        max-height: 220px;
        overflow: auto;
        margin: 0 16px 10px;
    }

@media (max-width: 900px) {
    .bre-page .bspl-footer[b-2inb7x3zwb] {
        flex-wrap: wrap;
        gap: 8px;
    }

    [b-2inb7x3zwb] .mu-drawer {
        width: 100%;
        max-width: 360px;
    }
}

@media (max-width: 767px) {
    .bre-page .mu-card[b-2inb7x3zwb] {
        margin: 0 10px;
    }
}

/* ═══════════ FLEX CARD (Bank Trans / Report 1 / Report 2) ═══════════ */
[b-2inb7x3zwb] .bre-flex-card {
    overflow: hidden; /* card itself never scrolls — only its grid child does */
}

[b-2inb7x3zwb] .bre-flex-grid {
    flex: 1 1 auto;
    min-height: 0; /* without this the flex child ignores overflow and the page scrolls */
    height: auto !important;
    overflow-y: auto;
}

/* ═══════════ BANK OBCB master-detail ═══════════ */
[b-2inb7x3zwb] .obcb-wrap {
    flex: 1;
    min-height: 0;
    display: flex;
    gap: 14px;
    align-items: stretch;
    margin: 10px 16px;
}

[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;
    min-height: 0;
}

[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;
    min-height: 0;
}

[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;
    }
}

/* ═══════════ Primary filter bar: ledger + dates + load ═══════════ */
/* Fields packed tight on the left, Apply pushed to the right */
[b-2inb7x3zwb] .bre-toolbar {
    display: flex;
    align-items: flex-end;
    justify-content: flex-start !important; /* beat shared .mu-toolbar space-between */
    gap: 8px !important;
    flex-wrap: wrap;
}

    [b-2inb7x3zwb] .bre-toolbar > .bre-fld:not(.bre-fld-btn) {
        margin: 0 !important;
    }

[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);
    }

/* Bank Ledger — fixed compact width (was flex:1 → stretched full row) */
[b-2inb7x3zwb] .bre-fld-led {
    flex: 0 0 280px;
    width: 280px;
    max-width: 100%;
}

    [b-2inb7x3zwb] .bre-fld-led input {
        width: 100%;
        box-sizing: border-box;
    }

/* GlobalDatepicker From / To */
[b-2inb7x3zwb] .bre-fld-dt {
    flex: 0 0 150px;
    width: 150px;
}

    [b-2inb7x3zwb] .bre-fld-dt .gdp-field-block,
    [b-2inb7x3zwb] .bre-fld-dt .gdp-wrap {
        width: 100%;
    }

[b-2inb7x3zwb] .obcb-dates .gdp-field-block {
    flex: 1;
    min-width: 0;
}

[b-2inb7x3zwb] .bre-fld-btn {
    margin-left: auto; /* Apply on the far right */
    display: flex;
    gap: 8px;
    align-items: flex-end;
}

    [b-2inb7x3zwb] .bre-fld-btn .mu-btn {
        min-width: 90px;
        justify-content: center;
    }

[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;
    }

/* ═══════════ BANK RECO — legacy filter block (.brf) ═══════════
   COL1 Bank/Rs · PYM RCP CON · Vid ChqNo isChequeDate
   COL2 Date From · Date To
   COL3 Apply · Show UnReconciled
   RIGHT Set Reconcile Date panel                                   */
[b-2inb7x3zwb] .brf {
    display: flex !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    flex-wrap: wrap;
    gap: 10px 28px !important;
    flex: 0 0 auto;
}

[b-2inb7x3zwb] .brf-col {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

[b-2inb7x3zwb] .brf-row {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 32px;
}

[b-2inb7x3zwb] .brf-lbl {
    font-size: 12px;
    font-weight: 700;
    color: #1a2537;
    text-transform: uppercase;
    white-space: nowrap;
    margin: 0;
}

[b-2inb7x3zwb] .brf-lbl-dt {
    width: 78px;
    text-transform: none;
}

[b-2inb7x3zwb] .brf-ledger {
    width: 260px;
}

    [b-2inb7x3zwb] .brf-ledger input {
        width: 100%;
        box-sizing: border-box;
    }

[b-2inb7x3zwb] .brf-cur {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 30px;
    height: 22px;
    padding: 0 6px;
    background: #b3261e;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    border-radius: 3px;
}

[b-2inb7x3zwb] .brf-chk {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: #1a2537;
    cursor: pointer;
    white-space: nowrap;
    margin: 0;
}

    [b-2inb7x3zwb] .brf-chk input {
        width: auto;
        margin: 0;
    }

[b-2inb7x3zwb] .brf-vtypes {
    gap: 22px;
}

[b-2inb7x3zwb] .brf-pym {
    color: #c0392b;
}

[b-2inb7x3zwb] .brf-rcp {
    color: #1a56a7;
}

[b-2inb7x3zwb] .brf-con {
    color: #7a8594;
}

[b-2inb7x3zwb] .brf-inp {
    padding: 6px 8px;
    border: 1px solid #dde3ed;
    border-radius: 5px;
    font-size: 12.5px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
}

    [b-2inb7x3zwb] .brf-inp:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 2px rgba(26,86,167,0.12);
    }

[b-2inb7x3zwb] .brf-inp-sm {
    width: 110px;
}

[b-2inb7x3zwb] .brf-dt {
    width: 150px;
}

    [b-2inb7x3zwb] .brf-dt .gdp-field-block,
    [b-2inb7x3zwb] .brf-dt .gdp-wrap {
        width: 100%;
    }

[b-2inb7x3zwb] .brf-apply {
    min-width: 90px;
    justify-content: center;
}

/* Set panel — grey box pushed to the right, like legacy */
[b-2inb7x3zwb] .brf-set {
    margin-left: auto;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px 12px;
    background: #eef1f4;
    border: 1px solid #e0e4e9;
    border-radius: 6px;
}

[b-2inb7x3zwb] .brf-set-btn {
    min-width: 54px;
    padding: 4px 12px;
    justify-content: center;
}

[b-2inb7x3zwb] .brf-set-txt {
    font-size: 12.5px;
    color: #1a2537;
    white-space: nowrap;
}

@media (max-width: 1100px) {
    [b-2inb7x3zwb] .brf-set {
        margin-left: 0;
    }
}

@media (max-width: 767px) {
    [b-2inb7x3zwb] .brf-col,
    [b-2inb7x3zwb] .brf-set {
        width: 100%;
    }

    [b-2inb7x3zwb] .brf-ledger {
        flex: 1;
        width: auto;
    }

    [b-2inb7x3zwb] .brf-row {
        flex-wrap: wrap;
    }
}

/* ═══════════ 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;
}

/* VNum — always blue, like legacy grid */
[b-2inb7x3zwb] .bre-vnum {
    font-weight: 600;
    cursor: pointer;
    color: #1565c0;
}

/* VType — colour comes inline from typeColor */
[b-2inb7x3zwb] .bre-vtype {
    font-weight: 500;
    white-space: nowrap;
}

[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;
}

/* ═══════════ 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-led,
    [b-2inb7x3zwb] .bre-fld-dt {
        flex: 1 1 100%;
        width: 100%;
    }

    [b-2inb7x3zwb] .bre-fld-btn {
        margin-left: 0;
        width: 100%;
    }

        [b-2inb7x3zwb] .bre-fld-btn .mu-btn {
            flex: 1;
            justify-content: center;
        }
}

/* ═══ Add at the END of BankReconciliation.razor.css ═══ */

/* Footer label click target */
.bre-page .bre-foot-lbl[b-2inb7x3zwb] {
    cursor: pointer;
    user-select: none;
}

/* Saved PDFs popup width (shell/header/body come from masters-forms.css) */
[b-2inb7x3zwb] .bre-pdf-modal {
    max-width: 900px;
}

    [b-2inb7x3zwb] .bre-pdf-modal .uf-body {
        max-height: calc(100vh - 220px);
        overflow: auto;
    }

    /* Scrollbar — thumb #b6e8db, transparent track, on every tab's scroll area */
    [b-2inb7x3zwb] .bre-flex-grid,
    [b-2inb7x3zwb] .obcb-grid-wrap,
    [b-2inb7x3zwb] .obcb-banklist,
    [b-2inb7x3zwb] .bre-report,
    [b-2inb7x3zwb] .bre-pdf-modal .uf-body {
        scrollbar-width: thin; /* Firefox */
        scrollbar-color: #b6e8db transparent;
    }

        [b-2inb7x3zwb] .bre-flex-grid::-webkit-scrollbar,
        [b-2inb7x3zwb] .obcb-grid-wrap::-webkit-scrollbar,
        [b-2inb7x3zwb] .obcb-banklist::-webkit-scrollbar,
        [b-2inb7x3zwb] .bre-report::-webkit-scrollbar,
        [b-2inb7x3zwb] .bre-pdf-modal .uf-body::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }

        [b-2inb7x3zwb] .bre-flex-grid::-webkit-scrollbar-track,
        [b-2inb7x3zwb] .obcb-grid-wrap::-webkit-scrollbar-track,
        [b-2inb7x3zwb] .obcb-banklist::-webkit-scrollbar-track,
        [b-2inb7x3zwb] .bre-report::-webkit-scrollbar-track,
        [b-2inb7x3zwb] .bre-pdf-modal .uf-body::-webkit-scrollbar-track {
            background: transparent;
        }

        [b-2inb7x3zwb] .bre-flex-grid::-webkit-scrollbar-thumb,
        [b-2inb7x3zwb] .obcb-grid-wrap::-webkit-scrollbar-thumb,
        [b-2inb7x3zwb] .obcb-banklist::-webkit-scrollbar-thumb,
        [b-2inb7x3zwb] .bre-report::-webkit-scrollbar-thumb,
        [b-2inb7x3zwb] .bre-pdf-modal .uf-body::-webkit-scrollbar-thumb {
            background: #b6e8db;
            border-radius: 6px;
        }

.mu-table-wrap[b-2inb7x3zwb] {
    height: 395px;
    overflow: auto;
}
/* /Components/Pages/Others/ConsolidatedReport.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════
   ConsolidatedReport.razor.css — Others → Consolidated Report
   Visual template: GAINS_TB.razor.css.

   From GLOBAL CSS (not redefined here):
     masters-forms.css (incl. common-page-chrome block)
       bspl-title-block / bspl-gains-toggle / bspl-filter-toggle   header
       bspl-footer / bspl-foot-btn                                   footer
       mu-drawer* / mu-fld / mu-drawer-section / mu-btn             filter drawer
       .t-page .tb2-table thead th  → #306B9C header banner
     standard.css
       db-pagination / db-page-btn, bspl-footer-count,
       bspl-footer-right (flex row), gcp-trigger / gcp-icon,
       mu-drawer-body scroll

   The tb2-* rules below are COPIES of GAINS_TB.razor.css (same names,
   same values) — Blazor CSS isolation scopes TB's file to TB only. If
   they're lifted into standard.css later, delete this block AND the
   matching one in GAINS_TB.razor.css; markup needs no change.
   ═══════════════════════════════════════════════════════════════ */

/* ── Page shell (TB: .tb2-page) ── */
.tb2-page[b-xwc522vz9z] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', sans-serif;
}

/* ── Grid card (TB: .tb2-grid-card / body-row / table-wrap / scroll) ── */
.tb2-grid-card[b-xwc522vz9z] {
    border: 1px solid #e5e8ec;
    border-radius: 4px;
    overflow: hidden;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 10px 16px;
}

.tb2-body-row[b-xwc522vz9z] {
    display: flex;
    flex: 1;
    min-height: 0;
}

.tb2-table-wrap[b-xwc522vz9z] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.tb2-scroll[b-xwc522vz9z] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

    .tb2-scroll[b-xwc522vz9z]::-webkit-scrollbar {
        width: 8px;
        height: 8px;
    }

    .tb2-scroll[b-xwc522vz9z]::-webkit-scrollbar-track {
        background: transparent;
    }

    .tb2-scroll[b-xwc522vz9z]::-webkit-scrollbar-thumb {
        background-color: #b6e8db;
        border-radius: 4px;
    }

        .tb2-scroll[b-xwc522vz9z]::-webkit-scrollbar-thumb:hover {
            background-color: #8fd9c4;
        }

.tb2-loading[b-xwc522vz9z] {
    padding: 40px;
    text-align: center;
    color: #888;
}

/* ── Table (TB: .tb2-table) ──
   Only deviation from TB: table-layout:auto instead of fixed. TB pairs
   "fixed" with a <colgroup> of known widths; this report's columns are
   dynamic per ReportType (no colgroup possible), and fixed layout without
   declared widths would size every column off the header row alone. */
.tb2-table[b-xwc522vz9z] {
    width: max-content;
    table-layout: auto;
    border-collapse: collapse;
    font-size: 12.5px;
    white-space: nowrap;
}

    .tb2-table th[b-xwc522vz9z], .tb2-table td[b-xwc522vz9z] {
        padding: 8px 12px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .tb2-table thead th[b-xwc522vz9z] {
        font-weight: 700;
        position: sticky;
        top: 0;
        cursor: pointer;
        user-select: none;
        z-index: 1;
    }

    .tb2-table tbody td[b-xwc522vz9z] {
        background: #fff;
    }

    .tb2-table tbody tr.tb2-row-even td[b-xwc522vz9z] {
        background: #fafbfc;
    }

.tb2-row-even[b-xwc522vz9z] {
    background: #fafbfc;
}

/* # column — frozen on the left, same as TB's .tb2-idx */
.tb2-idx[b-xwc522vz9z] {
    width: 56px;
    min-width: 56px;
    color: #999;
    text-align: right;
}

.tb2-table .tb2-idx[b-xwc522vz9z] {
    position: sticky;
    left: 0;
    z-index: 2;
}

.tb2-table tbody .tb2-idx[b-xwc522vz9z] {
    background: #fff;
}

.tb2-table tbody tr.tb2-row-even .tb2-idx[b-xwc522vz9z] {
    background: #fafbfc;
}

.tb2-table thead th.tb2-idx[b-xwc522vz9z] {
    z-index: 3;
}

/* ── Filter drawer overrides (TB-local) ── */
.mu-drawer-body[b-xwc522vz9z] {
    gap: 5px;
}

    .mu-drawer-body > .mu-drawer-section[b-xwc522vz9z] {
        margin: 12px -18px 6px;
    }

.le-chk[b-xwc522vz9z] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    margin-bottom: 6px;
}

.tb2-col-hint[b-xwc522vz9z] {
    font-size: 11.5px;
    color: #64748b;
}

/* Date boxes — TB's .tb2-date-fld (GlobalDatepicker, ::deep) */
.tb2-date-fld[b-xwc522vz9z]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .tb2-date-fld[b-xwc522vz9z]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .tb2-date-fld[b-xwc522vz9z]  .gdp-wrap:focus,
    .tb2-date-fld[b-xwc522vz9z]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .tb2-date-fld[b-xwc522vz9z]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.tb2-date-fld[b-xwc522vz9z]  .gdp-icon {
    color: #1a56a7;
}

.tb2-date-fld[b-xwc522vz9z]  .gdp-value {
    font-weight: 400;
}

.tb2-date-fld .gcp-trigger[b-xwc522vz9z],
.tb2-date-fld[b-xwc522vz9z]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .tb2-date-fld .gcp-trigger:hover[b-xwc522vz9z],
    .tb2-date-fld[b-xwc522vz9z]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Dropdowns — TB's .tb2-sel-fld */
.tb2-sel-fld select[b-xwc522vz9z] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
}

    .tb2-sel-fld select:focus[b-xwc522vz9z] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .tb2-sel-fld select:disabled[b-xwc522vz9z] {
        background-color: #f1f5f9 !important;
        color: #64748b;
        cursor: not-allowed;
    }

/* ═══════════════════════════════════════════════════════════════
   Balance Sheet tree — port of legacy ifrConsolidate_BS (css + DepthFilter).
   Asset/Income side = #003366, Liability/Expense side = #660000.
   ═══════════════════════════════════════════════════════════════ */
.bs-title[b-xwc522vz9z] {
    display: flex;
    gap: 40px;
    padding: 8px 18px 0;
    background: #fff;
    font: 700 12px Arial, sans-serif;
}

.bs-title-name[b-xwc522vz9z] {
    min-width: 260px;
}

/* width is set inline: 300px description + 130px per amount column (legacy td_Desc / td_Sites) */
.bs-table[b-xwc522vz9z] {
    table-layout: fixed;
    border-collapse: collapse;
    font-family: Arial, sans-serif;
    font-size: 12px;
    background: #fff;
}

    .bs-table th[b-xwc522vz9z], .bs-table td[b-xwc522vz9z] {
        height: 25px;
        padding: 0 4px 0 5px;
        border-right: 1px solid #e2e3e5;
    }

    /* header: #376091 / #213957 alternating site columns, white text */
    .bs-table thead th[b-xwc522vz9z] {
        position: sticky;
        top: 0;
        z-index: 2;
        color: #fff;
        font-weight: 400;
        background: #376091;
    }

        .bs-table thead th.bs-h-a[b-xwc522vz9z] {
            background: #213957;
        }

        .bs-table thead th.bs-h-b[b-xwc522vz9z] {
            background: #376091;
        }

.bs-desc[b-xwc522vz9z] {
    width: 300px;
    min-width: 300px;
    text-align: left;
    white-space: normal;
    word-wrap: break-word;
    position: sticky;
    left: 0;
    z-index: 1;
}

.bs-table thead th.bs-desc[b-xwc522vz9z] {
    z-index: 3;
    background: #376091;
}

.bs-amt[b-xwc522vz9z] {
    width: 130px;
    min-width: 130px;
    text-align: right;
    white-space: nowrap;
}

.bs-bold[b-xwc522vz9z] {
    font-weight: 700;
}

/* rows */
.bs-row[b-xwc522vz9z] {
    --bs-c: #003366;
    background: #fff;
}

    .bs-row td[b-xwc522vz9z] {
        background: inherit;
        border-bottom: 1px solid silver;
    }

    .bs-row.bs-asset[b-xwc522vz9z] {
        --bs-c: #003366;
    }

    .bs-row.bs-liab[b-xwc522vz9z] {
        --bs-c: #660000;
    }

    /* depth 2 — coloured band, white text, indent 2px */
    .bs-row.bs-d2[b-xwc522vz9z] {
        background: var(--bs-c);
        color: #fff;
    }

    /* depth 3 — light grey band */
    .bs-row.bs-d3[b-xwc522vz9z] {
        background: #f7f7f7;
    }

    /* depth 4 — plain */
    .bs-row.bs-d4[b-xwc522vz9z] {
        background: #fff;
    }

    /* depth 5+ — text tinted by side, indent = depth*10 */
    .bs-row.bs-dn[b-xwc522vz9z] {
        color: var(--bs-c);
    }

    .bs-row:not(.bs-d2) .bs-neg[b-xwc522vz9z] {
        color: #660000;
    }

.bs-spacer td[b-xwc522vz9z] {
    height: 25px;
    background: #fff;
    border-right: none;
    border-bottom: none;
}

/* drill-down: clickable description cells (legacy OpenQL) */
.bs-click[b-xwc522vz9z] {
    cursor: pointer;
}

    .bs-click:hover[b-xwc522vz9z] {
        text-decoration: underline;
    }

/* ── Trial Balance (legacy ifrConsolidate_TB) ── */
.tbf-sr[b-xwc522vz9z] {
    width: 40px;
    min-width: 40px;
    text-align: left;
    color: #999;
    position: sticky;
    left: 0;
    z-index: 1;
}

.tbf-table .bs-desc[b-xwc522vz9z] {
    left: 40px;
}

.tbf-table thead th.tbf-sr[b-xwc522vz9z] {
    z-index: 3;
    color: #fff;
    font-weight: 700;
    background: #376091;
}

.bs-row.tbf-row td[b-xwc522vz9z] {
    border-bottom: 1px solid #e2e3e5;
}

.bs-row.tbf-even[b-xwc522vz9z] {
    background: #f7f7f7;
}

.tbf-table tfoot td[b-xwc522vz9z] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    color: #fff;
    height: 25px;
    border-right: 1px solid #e2e3e5;
}

    .tbf-table tfoot td.tbf-sr[b-xwc522vz9z],
    .tbf-table tfoot td.bs-desc[b-xwc522vz9z] {
        z-index: 4;
        color: #fff;
    }

    .tbf-table tfoot td.bs-h-a[b-xwc522vz9z] {
        background: #213957;
    }

    .tbf-table tfoot td.bs-h-b[b-xwc522vz9z] {
        background: #376091;
    }

/* depth switcher — circled 1 / 2 / 3 above the grid (legacy One/Two/Three images) */
.bs-toolbar[b-xwc522vz9z] {
    display: flex;
    align-items: center;
    gap: 30px;
    padding: 6px 18px;
    background: #fff;
}

.bs-circ[b-xwc522vz9z] {
    width: 20px;
    height: 20px;
    padding: 0;
    border: 1.5px solid #222;
    border-radius: 50%;
    background: #fff;
    color: #222;
    font: 700 11px/1 Arial, sans-serif;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .bs-circ:hover[b-xwc522vz9z] {
        background: #eef2f7;
    }

    .bs-circ.active[b-xwc522vz9z] {
        background: #222;
        color: #fff;
    }

/* ── Consolidated-only: Ledger/Item autofill fill the drawer width.
   Separate components (own CSS scope) → ::deep is required to reach them. ── */
.cr-auto-fld[b-xwc522vz9z]  .lga-wrap,
.cr-auto-fld[b-xwc522vz9z]  .ia-wrap {
    width: 100% !important;
    max-width: 100% !important;
}

    .cr-auto-fld[b-xwc522vz9z]  .lga-wrap input,
    .cr-auto-fld[b-xwc522vz9z]  .ia-wrap input {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
    }

/* ── PO / POV / POQ (legacy print reports as screen table) ── */
.pv-table[b-xwc522vz9z] {
    border-collapse: collapse;
    font-size: 12px;
    min-width: 760px;
}

    .pv-table td[b-xwc522vz9z] {
        padding: 3px 6px;
        vertical-align: top;
    }

.pv-title[b-xwc522vz9z] {
    text-align: center;
    font-weight: 700;
    font-size: 16px;
    height: 28px;
}

.pv-site[b-xwc522vz9z] {
    font-weight: 700;
    font-size: 16px;
    height: 28px;
}

.pv-party[b-xwc522vz9z] {
    font-size: 12px;
    padding-top: 8px;
    white-space: pre-line;
}

.pv-hdr td[b-xwc522vz9z], .pv-tot td[b-xwc522vz9z] {
    background: lightgray;
    font-weight: 700;
    border-top: 1px solid silver;
    height: 28px;
}

.pv-row td[b-xwc522vz9z] {
    border-top: 1px solid silver;
    min-width: 100px;
}

.pv-b td[b-xwc522vz9z] {
    font-weight: 700;
}

.pv-row td.pv-b[b-xwc522vz9z] {
    font-weight: 700;
}

.pv-r[b-xwc522vz9z] {
    text-align: right;
}

/* PO: legacy prints plain — no grey bands, no row lines; only header underline and silver lines on total amounts */
.pv-plain[b-xwc522vz9z] {
    background: #fff;
}

    .pv-plain .pv-hdr td[b-xwc522vz9z] {
        background: none;
        border-top: 1px solid #000;
        border-bottom: 1px solid #000;
    }

    .pv-plain .pv-row td[b-xwc522vz9z] {
        border-top: none;
        height: 30px;
    }

    .pv-plain .pv-tot td[b-xwc522vz9z] {
        background: none;
        border-top: none;
        height: 30px;
    }

        .pv-plain .pv-tot td.pv-r[b-xwc522vz9z] {
            border-top: 1px solid silver;
            border-bottom: 1px solid silver;
        }

    .pv-plain .pv-party[b-xwc522vz9z] {
        font-weight: 700;
    }

/* SETTINGS help (legacy imghelp) */
.pv-help-btn[b-xwc522vz9z] {
    float: right;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: 2px solid #fff;
    background: #1e4f9c;
    color: #fff;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
}

.pv-help-overlay[b-xwc522vz9z] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.35);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.pv-help[b-xwc522vz9z] {
    position: relative;
    background: #fff;
    padding: 34px 20px 20px;
    width: 900px;
    max-width: 96vw;
    max-height: 90vh;
    overflow: auto;
    box-shadow: 0 6px 24px rgba(0,0,0,.3);
    font-family: Arial, sans-serif;
}

.pv-help-x[b-xwc522vz9z] {
    position: absolute;
    top: 4px;
    right: 6px;
    width: 22px;
    height: 22px;
    border: 1px solid #a33;
    border-radius: 3px;
    background: #d9442f;
    color: #fff;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}

.pv-help-note[b-xwc522vz9z] {
    font-weight: 700;
    font-size: 13px;
    margin: -22px 0 14px;
}

.pv-help-grid[b-xwc522vz9z] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-flow: row;
    gap: 36px 30px;
    align-items: start;
}

.pv-help-box[b-xwc522vz9z] {
    border: 1px solid #ddd;
    background: #f8f8f8;
    padding: 6px 12px;
}

.pv-help-row[b-xwc522vz9z] {
    display: grid;
    grid-template-columns: 190px 14px 1fr;
    gap: 4px;
    padding: 8px 0 8px 18px;
    font-size: 12.5px;
    align-items: center;
}

.pv-help-name[b-xwc522vz9z] {
    color: #555;
}

.pv-help-no[b-xwc522vz9z] {
    color: #800000;
}

.pv-help-yes[b-xwc522vz9z] {
    color: #2e8b2e;
}

/* filter not applicable to the chosen report (legacy help: "No Filters Applicable") */
.pv-dis[b-xwc522vz9z] {
    opacity: .45;
    pointer-events: none;
}
/* /Components/Pages/Others/CustomerTransaction.razor.rz.scp.css */
/* =====================================================================
   CustomerTransaction.razor.css  —  Appointment Calendar
   Scoped to this component. Header (bspl-title-block), footer
   (bspl-footer), card (mu-card) and filter drawer (mu-drawer / mu-fld)
   come from the shared masters-forms.css / common-page-chrome.css.
   ===================================================================== */

.ct-page[b-hyyvtbvcgn] {
    display: flex;
    flex-direction: column;
    height: 100%;
    font-family: 'Segoe UI', sans-serif;
}

/* ── Tab / toolbar bar (same boxed look as TDS / TB) ─────────────── */
.ct-toptabs[b-hyyvtbvcgn] {
    flex-shrink: 0;
    margin: -19px 0px 4px;
    padding: 3px 16px;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.ct-tab[b-hyyvtbvcgn] {
    padding: 5px 16px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    text-transform: uppercase;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    font-family: inherit;
    transition: background .12s, color .12s, border-color .12s;
}

    .ct-tab:hover[b-hyyvtbvcgn] {
        background: #f5f5f5;
    }

    .ct-tab.active[b-hyyvtbvcgn] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
        font-weight: 700;
    }

.ct-range[b-hyyvtbvcgn] {
    margin-left: auto;
    font-size: 12.5px;
    font-weight: 600;
    color: #334155;
    white-space: nowrap;
}

.ct-nav[b-hyyvtbvcgn] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.ct-nav-btn[b-hyyvtbvcgn] {
    width: 30px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    font-size: 11px;
    transition: background .12s, color .12s, border-color .12s;
}

.ct-nav-today[b-hyyvtbvcgn] {
    height: 28px;
    padding: 0 12px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .2px;
    background: #fff;
    color: #555;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    font-family: inherit;
    transition: background .12s, color .12s, border-color .12s;
}

    .ct-nav-btn:hover[b-hyyvtbvcgn],
    .ct-nav-today:hover[b-hyyvtbvcgn] {
        background: #eafaf5;
        border-color: #1ab99a;
        color: #1ab99a;
    }

/* ── Layout ──────────────────────────────────────────────────────── */
.ct-layout[b-hyyvtbvcgn] {
    flex: 1;
    display: flex;
    gap: 12px;
    min-height: 0;
    margin: 0 16px;
}

.ct-cal-card[b-hyyvtbvcgn] {
    flex: 1;
    min-width: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ct-error[b-hyyvtbvcgn] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Grid ────────────────────────────────────────────────────────── */
.ct-scroll[b-hyyvtbvcgn] {
    flex: 1;
    min-height: 200px;
    overflow: auto;
}

    .ct-scroll[b-hyyvtbvcgn]::-webkit-scrollbar {
        width: 8px;
        height: 8px;
    }

    .ct-scroll[b-hyyvtbvcgn]::-webkit-scrollbar-track {
        background: #eafaf5;
    }

    .ct-scroll[b-hyyvtbvcgn]::-webkit-scrollbar-thumb {
        background: rgba(0, 0, 0, .28);
        border-radius: 10px;
    }

        .ct-scroll[b-hyyvtbvcgn]::-webkit-scrollbar-thumb:hover {
            background: #888;
        }

.ct-table[b-hyyvtbvcgn] {
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    width: max-content;
    min-width: 100%;
    background: #fff;
}

/* Header */
.ct-th[b-hyyvtbvcgn] {
    position: sticky;
    top: 0;
    z-index: 10;
    background: #f2f2f2;
    color: #555;
    font-size: 11.5px;
    font-weight: 700;
    padding: 6px 8px;
    text-align: center;
    white-space: nowrap;
    border-bottom: 1px solid #d6dbe0;
    border-right: 1px solid #eef0f2;
    user-select: none;
}

.ct-th-num[b-hyyvtbvcgn] {
    left: 0;
    z-index: 20;
    text-align: right;
}

.ct-th-time[b-hyyvtbvcgn] {
    left: 42px;
    z-index: 20;
    text-align: left;
    border-right: 2px solid #d6dbe0;
}

.ct-th-day[b-hyyvtbvcgn] {
    line-height: 1.25;
}

.ct-dname[b-hyyvtbvcgn] {
    display: block;
    font-size: 10px;
    font-weight: 600;
    color: #1ab99a;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.ct-dnum[b-hyyvtbvcgn] {
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    color: #334155;
}

.ct-dnum-today[b-hyyvtbvcgn] {
    background: #1ab99a;
    color: #fff;
    border-radius: 10px;
    padding: 0 8px;
}

.ct-today-hdr[b-hyyvtbvcgn] {
    background: #eafaf5;
}

/* Body */
.ct-td[b-hyyvtbvcgn] {
    height: 30px;
    padding: 0;
    border-right: 1px solid #eef0f2;
    border-bottom: 1px solid #eef0f2;
    vertical-align: middle;
}

.ct-td-num[b-hyyvtbvcgn],
.ct-td-time[b-hyyvtbvcgn] {
    position: sticky;
    z-index: 15;
    background: #f7f9fa;
    color: #8a97a6;
    font-size: 11px;
    padding: 0 6px;
    white-space: nowrap;
}

.ct-td-num[b-hyyvtbvcgn] {
    left: 0;
    text-align: right;
}

.ct-td-time[b-hyyvtbvcgn] {
    left: 42px;
    color: #555;
    border-right: 2px solid #d6dbe0;
}

.ct-td-cell[b-hyyvtbvcgn] {
    padding: 2px 4px;
}

.ct-today-cell[b-hyyvtbvcgn] {
    background: #f5fcf9;
}

.ct-tr.ct-booked .ct-td-num[b-hyyvtbvcgn],
.ct-tr.ct-booked .ct-td-time[b-hyyvtbvcgn] {
    color: #1a7f4b;
    font-weight: 600;
}

.ct-tr:hover .ct-td-cell[b-hyyvtbvcgn] {
    background: #f6f9fd;
}

/* Appointment chip */
.ct-chip[b-hyyvtbvcgn] {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 2px 8px 2px 6px;
    border-radius: 4px;
    background: #eafaf5;
    border: 1px solid rgba(26, 185, 154, .35);
    overflow: hidden;
}

.ct-chip-dot[b-hyyvtbvcgn] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #1ab99a;
    flex-shrink: 0;
}

.ct-chip-name[b-hyyvtbvcgn] {
    flex: 1;
    min-width: 0;
    font-size: 11.5px;
    font-weight: 600;
    color: #0f6b57;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ct-chip-more[b-hyyvtbvcgn] {
    flex-shrink: 0;
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    background: #1ab99a;
    border-radius: 8px;
    padding: 0 5px;
}

/* ── Today sidebar ───────────────────────────────────────────────── */
.ct-sidebar[b-hyyvtbvcgn] {
    width: 260px;
    flex-shrink: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ct-sb-head[b-hyyvtbvcgn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 9px 12px;
    background: #f2f2f2;
    border-bottom: 2px solid #1ab99a;
    flex-shrink: 0;
}

.ct-sb-title[b-hyyvtbvcgn] {
    font-size: 11.5px;
    font-weight: 700;
    color: #555;
    letter-spacing: .08em;
}

.ct-sb-date[b-hyyvtbvcgn] {
    font-size: 11px;
    color: #1a7f4b;
    font-weight: 600;
}

.ct-sb-body[b-hyyvtbvcgn] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

.ct-sb-item[b-hyyvtbvcgn] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid #eef0f2;
}

    .ct-sb-item:hover[b-hyyvtbvcgn] {
        background: #eafaf5;
    }

.ct-sb-time[b-hyyvtbvcgn] {
    flex-shrink: 0;
    font-size: 10.5px;
    font-weight: 600;
    color: #1a7f4b;
    background: #eafaf5;
    border: 1px solid rgba(26, 185, 154, .35);
    border-radius: 4px;
    padding: 1px 6px;
    white-space: nowrap;
}

.ct-sb-info[b-hyyvtbvcgn] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.ct-sb-name[b-hyyvtbvcgn] {
    font-size: 12.5px;
    font-weight: 600;
    color: #1a2537;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ct-sb-dr[b-hyyvtbvcgn] {
    font-size: 10.5px;
    color: #64748b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ct-sb-amt[b-hyyvtbvcgn] {
    flex-shrink: 0;
    font-size: 11.5px;
    font-weight: 600;
    color: #1a7f4b;
    font-variant-numeric: tabular-nums;
}

.ct-sb-empty[b-hyyvtbvcgn] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 34px 16px;
    color: #94a3b8;
    font-size: 20px;
}

    .ct-sb-empty p[b-hyyvtbvcgn] {
        margin: 0;
        font-size: 12.5px;
        color: #64748b;
    }

.ct-sb-foot[b-hyyvtbvcgn] {
    flex-shrink: 0;
    padding: 8px 12px;
    background: #fafbfc;
    border-top: 1px solid #eef0f2;
    font-size: 11.5px;
    color: #64748b;
}

/* ── Filter drawer fields (same rules as TDS / BSPL / DocumentGrid) ── */
.ct-date-fld[b-hyyvtbvcgn]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ct-date-fld[b-hyyvtbvcgn]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ct-date-fld[b-hyyvtbvcgn]  .gdp-wrap:focus,
    .ct-date-fld[b-hyyvtbvcgn]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ct-date-fld[b-hyyvtbvcgn]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ct-date-fld[b-hyyvtbvcgn]  .gdp-icon {
    color: #1a56a7;
}

.ct-date-fld[b-hyyvtbvcgn]  .gdp-value {
    font-weight: 400;
}

.mu-drawer-body > .mu-drawer-section:first-child[b-hyyvtbvcgn] {
    margin-top: -18px;
}

.ct-sel-fld select[b-hyyvtbvcgn] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
    text-overflow: ellipsis;
}

    .ct-sel-fld select:focus[b-hyyvtbvcgn] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* ── Responsive ──────────────────────────────────────────────────── */
@media (max-width: 960px) {
    .ct-layout[b-hyyvtbvcgn] {
        flex-direction: column;
    }

    .ct-sidebar[b-hyyvtbvcgn] {
        width: 100%;
        max-height: 220px;
    }

    .ct-range[b-hyyvtbvcgn] {
        display: none;
    }
}

/* =====================================================================
   Grid + Summary tabs, extra filters
   ===================================================================== */
.ct-sep[b-hyyvtbvcgn] {
    width: 1px;
    height: 20px;
    background: #d5d5d5;
    margin: 0 6px;
}

.ct-tab-sub[b-hyyvtbvcgn] {
    padding: 4px 12px;
    font-size: 11px;
}

.ct-grid-card[b-hyyvtbvcgn] {
    flex: 1;
    min-height: 0;
    margin: 0 16px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ct-gtable[b-hyyvtbvcgn] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12.5px;
}

.ct-gth[b-hyyvtbvcgn] {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 8px 10px;
    background: #f3f6f8;
    color: #334155;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .2px;
    text-align: left;
    border-bottom: 1px solid #dfe5ea;
    white-space: nowrap;
}

.ct-gtd[b-hyyvtbvcgn] {
    padding: 7px 10px;
    border-bottom: 1px solid #eef1f4;
    color: #334155;
    vertical-align: middle;
}

.ct-gtr:hover .ct-gtd[b-hyyvtbvcgn] {
    background: #f4fbf9;
}

.ct-c[b-hyyvtbvcgn] {
    text-align: center;
}

.ct-r[b-hyyvtbvcgn] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ct-nowrap[b-hyyvtbvcgn] {
    white-space: nowrap;
}

.ct-comment[b-hyyvtbvcgn] {
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ct-gempty[b-hyyvtbvcgn] {
    padding: 32px;
    text-align: center;
    color: #94a3b8;
    font-size: 13px;
}

.ct-gfoot .ct-gtd[b-hyyvtbvcgn] {
    position: sticky;
    bottom: 0;
    background: #eafaf5;
    font-weight: 700;
    color: #0f766e;
    border-top: 1px solid #1ab99a;
}

.ct-clickable[b-hyyvtbvcgn] {
    cursor: pointer;
}

.ct-cancelled .ct-gtd[b-hyyvtbvcgn] {
    color: #94a3b8;
    text-decoration: line-through;
}

/* Action badge (colour comes from the SP's color column, inline) */
.ct-badge[b-hyyvtbvcgn] {
    display: inline-block;
    padding: 2px 9px;
    font-size: 11px;
    font-weight: 600;
    border-radius: 10px;
    background: #e8f0fe;
    border: 1px solid #c7d7f7;
    color: #3b5bdb;
    white-space: nowrap;
}

.ct-badge-cancel[b-hyyvtbvcgn] {
    margin-left: 4px;
    background: #fdf3f3;
    border-color: #f1c0bb;
    color: #c0392b;
}

/* Calendar chip: cancelled appointment */
.ct-chip-cancel .ct-chip-name[b-hyyvtbvcgn] {
    text-decoration: line-through;
    opacity: .6;
}

/* Summary header */
.ct-sum-head[b-hyyvtbvcgn] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-bottom: 1px solid #eef1f4;
}

.ct-sum-title[b-hyyvtbvcgn] {
    font-size: 13px;
    font-weight: 700;
    color: #334155;
}

.ct-back[b-hyyvtbvcgn] {
    padding: 4px 12px;
    font-size: 11.5px;
    font-weight: 600;
    color: #555;
    background: #fff;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    cursor: pointer;
    font-family: inherit;
}

    .ct-back:hover[b-hyyvtbvcgn] {
        background: #eafaf5;
        border-color: #1ab99a;
        color: #1ab99a;
    }

/* Drawer: radio list + checkbox */
.ct-radio-group[b-hyyvtbvcgn] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 2px 4px 8px;
}

.ct-radio[b-hyyvtbvcgn],
.ct-check[b-hyyvtbvcgn] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
}

.ct-check[b-hyyvtbvcgn] {
    margin: 10px 4px 0;
}

.ct-radio-dot[b-hyyvtbvcgn] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #94a3b8;
    flex-shrink: 0;
}

.ct-radio input[b-hyyvtbvcgn],
.ct-check input[b-hyyvtbvcgn] {
    accent-color: #1ab99a;
}

/* Total row pinned to the bottom of the card: table fills the scroll area,
   the empty filler row absorbs the spare height, tfoot sits under it. */
.ct-gtable.ct-fill[b-hyyvtbvcgn] {
    height: 100%;
}

.ct-gfill td[b-hyyvtbvcgn] {
    height: 100%;
    padding: 0;
    border: 0;
}
/* /Components/Pages/Others/Employee.razor.rz.scp.css */
/* =====================================================================
   Employee.razor.css — Others → Employee (grid + registration form)
   Master CSS does the look; only layout lives here.
     common-page-chrome.css : bspl-title-block, bspl-footer
     standard.css           : db-pagination / db-page-btn (GAINS_TB pager)
     masters-forms.css      : mu-page/ms-page (card fill), mu-card, mu-toolbar,
                              mu-search, mu-table (+ .t-page #306B9C header),
                              mu-row-click, uf-header/uf-section/uf-sec-body,
                              ms-form rows (uf-field 140px label + uf-input box),
                              uf-footer/uf-btn*, mu-btn, mu-toast
   ===================================================================== */

.emp-page[b-jju5p5jr9a] {
    background: #f3f3f4;
}

/* ── Grid ── */
.emp-table[b-jju5p5jr9a] {
    min-width: 1000px;
}

.emp-id[b-jju5p5jr9a] {
    color: #1a56a7;
    font-weight: 600;
}

.emp-name[b-jju5p5jr9a] {
    font-weight: 600;
}

/* =====================================================================
   Registration form — card fills the page (ms-page), rail + content
   ===================================================================== */
.emp-form-card[b-jju5p5jr9a] {
    overflow: hidden;
}

/* Header — master uf-header (green strip) + ID / Name on the right */
.emp-form-hdr[b-jju5p5jr9a] {
    flex-shrink: 0;
}

.emp-hdr-info[b-jju5p5jr9a] {
    display: flex;
    gap: 28px;
    position: relative;
    z-index: 1;
}

    .emp-hdr-info div[b-jju5p5jr9a] {
        display: flex;
        flex-direction: column;
        line-height: 1.25;
    }

    .emp-hdr-info span[b-jju5p5jr9a] {
        font-size: 10.5px;
        color: #5b8a82;
        text-transform: uppercase;
        letter-spacing: 0.04em;
    }

    .emp-hdr-info strong[b-jju5p5jr9a] {
        font-size: 13px;
        color: #0f766e;
    }

.emp-form-body[b-jju5p5jr9a] {
    flex: 1;
    min-height: 0;
    display: flex;
}

/* Left tab rail */
.emp-rail[b-jju5p5jr9a] {
    width: 190px;
    flex-shrink: 0;
    padding: 6px 0;
    border-right: 1px solid #eef2f7;
    background: #f8fafc;
    overflow-y: auto;
}

.emp-rail-tab[b-jju5p5jr9a] {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 14px;
    border: 0;
    border-left: 3px solid transparent;
    background: transparent;
    color: #334155;
    font-size: 12.5px;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
}

    .emp-rail-tab i[b-jju5p5jr9a] {
        width: 16px;
        text-align: center;
        color: #94a3b8;
    }

    .emp-rail-tab:hover:not(:disabled)[b-jju5p5jr9a] {
        background: #eef4fb;
    }

    .emp-rail-tab.active[b-jju5p5jr9a] {
        border-left-color: #1ab99a;
        background: #e8f8f4;
        color: #0f766e;
        font-weight: 700;
    }

        .emp-rail-tab.active i[b-jju5p5jr9a] {
            color: #1ab99a;
        }

    .emp-rail-tab:disabled[b-jju5p5jr9a] {
        color: #b6bfcc;
        cursor: not-allowed;
    }

        .emp-rail-tab:disabled i[b-jju5p5jr9a] {
            color: #cbd5e1;
        }

/* Content */
.emp-content[b-jju5p5jr9a] {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    padding: 16px 20px;
}

/* Two-column field grid inside each uf-sec-body (ms-form rows: 140px label + box) */
.emp-grid[b-jju5p5jr9a] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 28px;
}

    .emp-grid .uf-field[b-jju5p5jr9a] {
        margin-bottom: 0;
    }

    .emp-grid .emp-span2[b-jju5p5jr9a] {
        grid-column: 1 / -1;
    }

        .emp-grid .emp-span2 .uf-input[b-jju5p5jr9a] {
            max-width: none;
        }

    .emp-grid textarea.uf-input[b-jju5p5jr9a] {
        resize: vertical;
    }

.emp-sec-gap[b-jju5p5jr9a] {
    margin-top: 16px;
}

/* Footer — master uf-footer, pinned under the content */
.emp-form-card .uf-footer[b-jju5p5jr9a] {
    flex-shrink: 0;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .emp-grid[b-jju5p5jr9a] {
        grid-template-columns: minmax(0, 1fr);
    }

    .emp-hdr-info[b-jju5p5jr9a] {
        display: none;
    }
}

@media (max-width: 767px) {
    .emp-form-body[b-jju5p5jr9a] {
        flex-direction: column;
    }

    .emp-rail[b-jju5p5jr9a] {
        width: 100%;
        display: flex;
        overflow-x: auto;
        overflow-y: hidden;
        padding: 0;
        border-right: 0;
        border-bottom: 1px solid #eef2f7;
    }

    .emp-rail-tab[b-jju5p5jr9a] {
        flex: 0 0 auto;
        width: auto;
        border-left: 0;
        border-bottom: 3px solid transparent;
        white-space: nowrap;
    }

        .emp-rail-tab.active[b-jju5p5jr9a] {
            border-bottom-color: #1ab99a;
        }

    .emp-content[b-jju5p5jr9a] {
        padding: 12px;
    }
}
/* /Components/Pages/Others/FrmGST.razor.rz.scp.css */
/* =====================================================================
   GST.razor.css
   Header (bspl-title-block), footer (bspl-footer), tabs (db-tabbar/db-tab),
   table (mu-table), and filter drawer (mu-drawer/mu-fld) all come from
   the shared common-page-chrome.css / masters-forms.css / standard.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 */
}

/* Tab bar spacing only — button look now comes from the shared db-tab/db-tabbar classes
   (same ones ITB/CrossLink use), not a local re-implementation. Pulls the bar snug under
   the title block, copied verbatim from ITB.razor.css's own .itb-toptabs tweak. */
.gst-toptabs[b-bzwnqhqljm] {
    padding: 7px 16px 6px;
    margin-top: -16px;
    margin-bottom: -19px;
}

/* UPLOAD / FILE — visible, faded, not clickable (no backing endpoint yet). Layered on top
   of db-tab, so it only needs to override opacity/cursor/hover here. */
.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: 10px 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;
}

/* ── Section-mode footer only (Excel button + "no paging" note) — invoice/exception mode now
   uses ITB's own db-pagination/mu-pagesize-wrap classes directly, no local pager CSS needed. ── */
.gst-pager[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ── "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 ──
   The visible gap under the Month toolbar isn't this card's own padding — it's
   ".gst-page .mu-card"'s shared `margin: 10px 16px` (every mu-card on this page gets that,
   including Invoice Grid's wrapper, which is the gap the person said is already correct and
   NOT to touch). Zeroing just the top margin here, scoped to .gst-dash-card only, closes the
   Dash tab's oversized blank strip without touching that shared rule or any other tab. */
.gst-dash-card[b-bzwnqhqljm] {
    margin-top: 0;
    padding: 4px 16px 16px;
    overflow: auto;
    gap: 16px;
}

/* Toolbar's own bottom padding (8px, from the shared .gst-toolbar rule) plus the label/select
   row's natural line-height was still leaving a visible strip below the Month dropdown even
   after the card's margin-top was zeroed above — that remainder is THIS element's own box, not
   spacing between two elements, so it needs trimming here directly. Scoped to
   .gst-dash-toolbar only (a class added just on the Dash tab's toolbar) — the Exceptions tab's
   toolbar (.gst-toolbar.gst-grid-toolbar) keeps the original padding untouched. */
.gst-dash-toolbar[b-bzwnqhqljm] {
    padding-bottom: 0;
    margin-bottom: -6px;
}

/* .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;
    }

/* ── Drawer section demarcators (TIME / MONTH, TYPE, LEDGER / ITEM, STATUS, EXCEL,
   EXCEPTION) — look comes from shared .mu-drawer-section (masters-forms.css). Only
   spacing tweaks here: first bar sits flush under the drawer header (cancel body's 18px
   top padding), like the legacy panel. ── */
.mu-drawer-body > .mu-drawer-section:first-child[b-bzwnqhqljm] {
    margin-top: -18px;
}

/* TIME / MONTH date fields.
   Grid auto-places: [From date | green picker] [To date | C]. Col 2 = widest of green
   picker / C, so both date boxes share col 1 → same width. */
.gst-date-grid[b-bzwnqhqljm] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 8px;
    row-gap: 8px;
    align-items: center;
}

    /* Date box = EXACT master drawer textbox spec (.mu-fld input in masters-forms.css:
       32px, 6px 8px, 1px #cbd5e1, 5px radius, 13px #1a2537, white, blue focus ring), so
       From/To match GSTIN / HSN boxes 1:1. ::deep needed — .gdp-wrap is rendered by the
       GlobalDatepicker child component, page CSS isolation can't reach it otherwise. */
    .gst-date-grid[b-bzwnqhqljm]  .gdp-wrap {
        width: 100%;
        height: 32px;
        box-sizing: border-box;
        padding: 6px 8px;
        border: 1px solid #cbd5e1;
        border-radius: 5px;
        background: #fff;
        font-size: 13px;
        font-family: inherit;
        color: #1a2537;
        transition: border-color 0.12s, box-shadow 0.12s;
    }

        .gst-date-grid[b-bzwnqhqljm]  .gdp-wrap:hover,
        .gst-date-grid[b-bzwnqhqljm]  .gdp-wrap:focus-within {
            border-color: #1a56a7;
            box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
        }

    /* Textbox text weight (master inputs are 400; gdp-value default is 500). */
    .gst-date-grid[b-bzwnqhqljm]  .gdp-value {
        font-weight: 400;
    }

    /* Keep master red invalid border — rule above is more specific than the shared
       .gdp-wrap.gdp-invalid, so re-assert it here or the From>To error border is lost. */
    .gst-date-grid[b-bzwnqhqljm]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
        box-shadow: none;
    }

    /* "C" clear-dates button — shared .mu-btn look, sized to the 32px date box. */
    .gst-date-grid > .gst-date-clear[b-bzwnqhqljm] {
        height: 32px;
        min-width: 32px;
        box-sizing: border-box;
        justify-content: center;
        padding: 0 8px;
    }

/* Two EXCEL button grids (local-data + OTP sections) read as one grid — close the 16px
   body gap down to the grid's own 8px gap. */
.gst-others-btn-grid + .gst-others-btn-grid[b-bzwnqhqljm] {
    margin-top: -8px;
}

/* STATUS checkboxes — 2-column grid, legacy colors for Pending / Reconciled. */
.gst-status-chk-grid[b-bzwnqhqljm] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 10px;
}

    .gst-status-chk-grid .uf-chk[b-bzwnqhqljm] {
        font-size: 12.5px;
    }

        .gst-status-chk-grid .uf-chk:has(input:disabled)[b-bzwnqhqljm] {
            opacity: .6;
            cursor: not-allowed;
        }

.gst-chk-pending[b-bzwnqhqljm] {
    color: #a52a2a;
}

.gst-chk-reconciled[b-bzwnqhqljm] {
    color: #1e8449;
}

/* ── OTHERS drawer body: EXCEL export grid + EXCEPTION buttons ── */
.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;
}

/* ── Footer left side (Total Records + Excel button, invoice mode) — same bspl-foot-btn "xls"
   class TB/TDS use, just laid out inline with the count text here since GST's bspl-footer-left
   didn't previously hold anything besides the count span. ── */
.bspl-footer-left[b-bzwnqhqljm] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* ── 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;
}

/* ── Ledger / Items columns (Invoice grid) — same fixed width so both line up, long values
   truncate with an ellipsis instead of stretching the row. Full text still available via the
   native title="" tooltip set on each <td> in the markup.
   BUG FIX: max-width/overflow on the <td> itself did nothing — this table has NO
   table-layout:fixed, so under the default "auto" layout the browser sizes each column to fit
   its longest content first and only THEN applies overflow rules to the (now-already-widened)
   cell box; a plain <td> max-width is not part of that column-width calculation at all. Fixing
   it needs the width cap on something the auto-layout algorithm DOES measure as the cell's
   content — an inline-block span with its own fixed width — so wrap the cell text in
   <span class="gst-clip-inner"> (done in the markup) instead of styling the <td> directly. ── */
.gst-dyn-table td.gst-col-clip[b-bzwnqhqljm] {
    max-width: 160px;
}

.gst-clip-inner[b-bzwnqhqljm] {
    display: inline-block;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/*.gst-dyn-table thead th:hover,
.gst-dyn-table thead th.gst-th-sort:hover {
    background-color: inherit;
}*/


/* ===== Append at END of FrmGST.razor.css (later rules override earlier ones) ===== */

/* 1) Dash tab — gray back colour */
.gst-dash-card[b-bzwnqhqljm] {
    background: #eef0f3;
}

/* 2) Ledger "L" search button — copied from QLedger.razor.css (.ql-led-row / .ql-led-btn).
      LedgerAutofill is a child component → ::deep to size its root so the button sits beside it. */
.ql-led-row[b-bzwnqhqljm] {
    display: flex;
    gap: 6px;
}

    .ql-led-row[b-bzwnqhqljm] >  *:first-child {
        flex: 1;
        min-width: 0;
    }

.ql-led-btn[b-bzwnqhqljm] {
    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-bzwnqhqljm] {
        background: #0f3d82;
    }
/* /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;
}


/* ── 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;
}

/* =====================================================================
   View tabs — Details + Summary (Item / Ledger / Ledger-Item / VType)
   ===================================================================== */
.bp-tabbar[b-8vo7um1myz] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    flex-shrink: 0;
}

.bp-tab[b-8vo7um1myz] {
    padding: 5px 14px;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    background: #fff;
    color: #1a2537;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.03em;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .bp-tab:hover:not(:disabled)[b-8vo7um1myz] {
        background: #f1f5f9;
    }

    .bp-tab.active[b-8vo7um1myz],
    .bp-tab.active:hover[b-8vo7um1myz] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

    .bp-tab:disabled[b-8vo7um1myz] {
        cursor: default;
    }

.bp-tab-sep[b-8vo7um1myz] {
    margin: 0 2px 0 10px;
    padding-left: 12px;
    border-left: 1px solid #dde3ed;
    color: #94a3b8;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ── Grid cells ── */
.bp-nowrap[b-8vo7um1myz] {
    white-space: nowrap;
}

.bp-vnum[b-8vo7um1myz] {
    color: #1a56a7;
    font-weight: 600;
    cursor: pointer;
}

    .bp-vnum:hover[b-8vo7um1myz] {
        text-decoration: underline;
    }

/* Party / Ledger → QLedger */
.bp-led[b-8vo7um1myz] {
    color: #2f8fd1;
    cursor: pointer;
}

    .bp-led:hover[b-8vo7um1myz] {
        text-decoration: underline;
    }

.bp-muted[b-8vo7um1myz] {
    color: #64748b;
    font-size: 11.5px;
}

.bp-vt-badge[b-8vo7um1myz] {
    background: #306B9C;
}

/* =====================================================================
   Filter drawer — master look (uf-input 32px boxes)
   ===================================================================== */
.bp-drawer .mu-drawer-section:first-child[b-8vo7um1myz] {
    margin-top: -18px;
}

/* GlobalDatepicker → uf-input look (::deep — child renders .gdp-wrap) */
.bp-date-fld .gdp-field-row[b-8vo7um1myz] {
    align-items: center;
}

.bp-date-fld[b-8vo7um1myz]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bp-date-fld[b-8vo7um1myz]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bp-date-fld[b-8vo7um1myz]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

    .bp-date-fld[b-8vo7um1myz]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bp-date-fld[b-8vo7um1myz]  .gdp-value {
    font-weight: 400;
}

/* Calendar + "C" reset — 32px boxes lined up with the date box */
.bp-date-fld .gcp-trigger[b-8vo7um1myz],
.bp-date-fld[b-8vo7um1myz]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .bp-date-fld .gcp-trigger:hover[b-8vo7um1myz],
    .bp-date-fld[b-8vo7um1myz]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.bp-date-fld .gcp-icon[b-8vo7um1myz] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Sales / Purchase checkboxes stacked */
.bp-chk-col[b-8vo7um1myz] {
    gap: 8px;
}

/* --VType-- dropdown: slim chevron */
.bp-sel-fld select[b-8vo7um1myz] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    cursor: pointer;
}

/* Ledger / Item autofill → full width uf-input look (child markup) */
.bp-ac[b-8vo7um1myz]  .lga-wrap,
.bp-ac[b-8vo7um1myz]  .ia-wrap {
    width: 100%;
    max-width: 100%;
}

.bp-ac[b-8vo7um1myz]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
}

    .bp-ac[b-8vo7um1myz]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* Ledger box + "L" search button on one row */
.bp-led-row[b-8vo7um1myz] {
    display: flex;
    align-items: center;
    gap: 6px;
}

    .bp-led-row[b-8vo7um1myz]  .lga-wrap {
        flex: 1;
        min-width: 0;
    }

.ql-led-btn[b-8vo7um1myz] {
    height: 32px;
}
/* /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.
   Pager = global standard.css db-pagination (GAINS_TB look).
   ===================================================================== */

.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;
}

/* ── 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;
    }

@media (max-width: 767px) {
    .cc-page .mu-toolbar[b-3mjh8tw3lh] {
        flex-wrap: wrap;
    }

    .ch-party[b-3mjh8tw3lh] {
        max-width: 120px;
    }
}

/* =====================================================================
   Tabs — Drill Down / Pivot / Details (MAUI CostCenterGrid)
   ===================================================================== */
.cc-tabbar[b-3mjh8tw3lh] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    flex-shrink: 0;
}

.cc-tab[b-3mjh8tw3lh] {
    padding: 5px 14px;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    background: #fff;
    color: #1a2537;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
}

    .cc-tab:hover:not(:disabled)[b-3mjh8tw3lh] {
        background: #f1f5f9;
    }

    .cc-tab.active[b-3mjh8tw3lh],
    .cc-tab.active:hover[b-3mjh8tw3lh] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

    .cc-tab:disabled[b-3mjh8tw3lh] {
        cursor: default;
    }

/* ── Common cells ── */
.cc-nowrap[b-3mjh8tw3lh] {
    white-space: nowrap;
}

.cc-vnum[b-3mjh8tw3lh] {
    color: #1a56a7;
    font-weight: 600;
    cursor: pointer;
}

    .cc-vnum:hover[b-3mjh8tw3lh] {
        text-decoration: underline;
    }

.cc-dr[b-3mjh8tw3lh] {
    color: #306B9C;
}

.cc-cr[b-3mjh8tw3lh] {
    color: #800000;
}

/* =====================================================================
   Drill Down — CC Group → Cost Center → Ledger → voucher line
   ===================================================================== */
.cc-drill td[b-3mjh8tw3lh] {
    white-space: nowrap;
}

.cc-exp-all[b-3mjh8tw3lh] {
    margin-left: 12px;
}

    .cc-exp-all button[b-3mjh8tw3lh] {
        padding: 1px 8px;
        border: 1px solid rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        background: transparent;
        color: inherit;
        font-size: 11px;
        font-weight: 600;
        font-family: inherit;
        cursor: pointer;
    }

        .cc-exp-all button + button[b-3mjh8tw3lh] {
            margin-left: 4px;
        }

        .cc-exp-all button:hover[b-3mjh8tw3lh] {
            background: rgba(255, 255, 255, 0.15);
        }

.cc-indent[b-3mjh8tw3lh] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.cc-caret[b-3mjh8tw3lh] {
    width: 10px;
    color: #64748b;
}

.cc-lv[b-3mjh8tw3lh] {
    cursor: pointer;
}

.cc-table tbody tr.cc-lv0[b-3mjh8tw3lh] {
    background: #dbe9f6;
    font-weight: 700;
    color: #1a2537;
}

.cc-table tbody tr.cc-lv1[b-3mjh8tw3lh] {
    background: #eef4fb;
    font-weight: 600;
}

.cc-table tbody tr.cc-lv2[b-3mjh8tw3lh] {
    background: #f6f7f9;
}

.cc-table tbody tr.cc-line[b-3mjh8tw3lh] {
    background: #fff;
}

.cc-table tbody tr.cc-lv:hover[b-3mjh8tw3lh] {
    background: #e8f5f0;
}

/* =====================================================================
   Pivot / Details
   ===================================================================== */
.cc-pivot td[b-3mjh8tw3lh],
.cc-pivot th[b-3mjh8tw3lh] {
    white-space: nowrap;
}

.cc-ytd[b-3mjh8tw3lh] {
    font-weight: 700;
}

.cc-drcr[b-3mjh8tw3lh] {
    display: inline-block;
    min-width: 24px;
    margin-right: 6px;
    padding: 1px 5px;
    border-radius: 3px;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    text-align: center;
}

    .cc-drcr.dr[b-3mjh8tw3lh] {
        background: #306B9C;
    }

    .cc-drcr.cr[b-3mjh8tw3lh] {
        background: #800000;
    }

.cc-led[b-3mjh8tw3lh] {
    cursor: pointer;
}

    .cc-led.dr[b-3mjh8tw3lh] {
        color: #306B9C;
    }

    .cc-led.cr[b-3mjh8tw3lh] {
        color: #800000;
    }

    .cc-led:hover[b-3mjh8tw3lh] {
        text-decoration: underline;
    }

.cc-bal[b-3mjh8tw3lh] {
    color: #475569;
    white-space: nowrap;
}

.cc-narr[b-3mjh8tw3lh] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #64748b;
}

/* Footer total next to the record count */
.cc-foot-total[b-3mjh8tw3lh] {
    margin-left: 16px;
    font-size: 12px;
    color: #475569;
}

    .cc-foot-total strong[b-3mjh8tw3lh] {
        color: #1a2537;
    }

/* =====================================================================
   Filter drawer — master look (uf-input 32px boxes)
   ===================================================================== */
.cc-drawer .mu-drawer-section:first-child[b-3mjh8tw3lh] {
    margin-top: -18px;
}

.cc-date-fld .gdp-field-row[b-3mjh8tw3lh] {
    align-items: center;
}

.cc-date-fld[b-3mjh8tw3lh]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .cc-date-fld[b-3mjh8tw3lh]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .cc-date-fld[b-3mjh8tw3lh]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

    .cc-date-fld[b-3mjh8tw3lh]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.cc-date-fld[b-3mjh8tw3lh]  .gdp-value {
    font-weight: 400;
}

.cc-date-fld .gcp-trigger[b-3mjh8tw3lh],
.cc-date-fld[b-3mjh8tw3lh]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .cc-date-fld .gcp-trigger:hover[b-3mjh8tw3lh],
    .cc-date-fld[b-3mjh8tw3lh]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.cc-date-fld .gcp-icon[b-3mjh8tw3lh] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Dropdowns: slim chevron */
.cc-sel-fld select[b-3mjh8tw3lh] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}
/* /Components/Pages/Others/MCustomerEntry.razor.rz.scp.css */
/* =====================================================================
   MCustomerEntry.razor.css — Customer Profile entry page
   Master CSS does the look:
     masters-forms.css : mu-page/ms-page (card fill), uf-section / uf-sec-body
                         (green section strip + body), ms-form rows (140px label
                         + uf-input box), uf-input, uf-chk, uf-err, uf-invalid,
                         uf-footer / uf-btn*, mu-confirm*, mu-toast
   Only layout (columns, address/photo blocks) lives here.
   ===================================================================== */

.cust-page[b-1jlxszipsx] {
    background: #f3f3f4;
}

.cust-card[b-1jlxszipsx] {
    overflow: hidden;
}

.cust-body[b-1jlxszipsx] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 16px 20px;
}

/* ── Sections (master uf-section) ── */
.cust-sec[b-1jlxszipsx] {
    margin-top: 16px;
}

.cust-sec-first[b-1jlxszipsx] {
    margin-top: 0;
}

.cust-sec-note[b-1jlxszipsx] {
    margin-left: auto;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
}

/* Dispatch header: "Same as above" on the right */
.cust-dispatch-hdr[b-1jlxszipsx] {
    justify-content: space-between;
}

.cust-same-as[b-1jlxszipsx] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    cursor: pointer;
}

    .cust-same-as input[type="checkbox"][b-1jlxszipsx] {
        margin: 0;
    }

/* ── Top: Customer Type / GSTIN / Date, Is Active / Grade / Rating ── */
.cust-top-row[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px 24px;
}

    .cust-top-row + .cust-top-row[b-1jlxszipsx] {
        margin-top: 12px;
    }

/* ── Two-column field grid (Personal / Marital) ── */
.cust-2col[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 28px;
}

.cust-top-row .uf-field[b-1jlxszipsx],
.cust-2col .uf-field[b-1jlxszipsx],
.cust-addr-fields .uf-field[b-1jlxszipsx] {
    margin-bottom: 0;
}

/* Input + inline validation message (PAN / GSTIN) */
.cust-inp-wrap[b-1jlxszipsx] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* Mobile number: ISD code + number side by side */
.cust-mobile-wrap[b-1jlxszipsx] {
    display: flex;
    gap: 8px;
    max-width: 320px;
}

    .cust-mobile-wrap .cust-isd[b-1jlxszipsx] {
        width: 56px !important;
        flex: 0 0 56px;
        text-align: center;
    }

    .cust-mobile-wrap input:not(.cust-isd)[b-1jlxszipsx] {
        flex: 1;
        min-width: 0;
    }

/* ── Address / Dispatch Address: textarea left, stacked fields right ── */
.cust-addr-row[b-1jlxszipsx] {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: 24px;
}

.cust-addr-textarea[b-1jlxszipsx] {
    align-items: start;
}

    .cust-addr-textarea textarea.uf-input[b-1jlxszipsx] {
        max-width: none !important;
        min-height: 140px;
        resize: vertical;
    }

.cust-addr-fields[b-1jlxszipsx] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* ── 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;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border: 1px dashed #cbd5e1;
    border-radius: 8px;
    background: #f8fafc;
    color: #94a3b8;
    font-size: 12px;
}

    .cust-photo-preview img[b-1jlxszipsx] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

/* Footer pinned under the scrolling body */
.cust-card .uf-footer[b-1jlxszipsx] {
    flex-shrink: 0;
}

/* ── Narrow screens: one column ── */
@media (max-width: 1100px) {
    .cust-top-row[b-1jlxszipsx] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .cust-top-row[b-1jlxszipsx],
    .cust-2col[b-1jlxszipsx],
    .cust-addr-row[b-1jlxszipsx] {
        grid-template-columns: minmax(0, 1fr);
    }

    .bspl-title-actions .mu-btn-label[b-1jlxszipsx] {
        display: none;
    }
}
/* /Components/Pages/Others/MCustomerGrid.razor.rz.scp.css */
/* =====================================================================
   MCustomerGrid.razor.css — Others → Customer (grid)
   Master CSS does the look; only page bits live here.
     common-page-chrome.css : bspl-title-block, bspl-filter-toggle, bspl-footer
     standard.css           : db-pagination / db-page-btn (GAINS_TB pager)
     masters-forms.css      : mu-page/ms-page (card fill), mu-card, mu-toolbar,
                              mu-search, mu-count, mu-table (+ .t-page #306B9C
                              header), mu-row-click, mu-del, mu-drawer*, mu-fld,
                              uf-input, mu-btn, mu-confirm*, mu-toast
   ===================================================================== */

.cust-grid-page[b-lj3ii0ahrf] {
    background: #f3f3f4;
}

/* 13 columns — scroll sideways inside the card on narrow screens */
.mu-table[b-lj3ii0ahrf] {
    min-width: 1100px;
}

/* =====================================================================
   Filter drawer — master look (uf-input 32px boxes, no labels)
   ===================================================================== */
.cust-drawer .mu-drawer-section:first-child[b-lj3ii0ahrf] {
    margin-top: -18px;
}

/* GlobalDatepicker → uf-input look (::deep — child renders .gdp-wrap) */
.cust-date-fld .gdp-field-row[b-lj3ii0ahrf] {
    align-items: center;
}

.cust-date-fld[b-lj3ii0ahrf]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .cust-date-fld[b-lj3ii0ahrf]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .cust-date-fld[b-lj3ii0ahrf]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

    .cust-date-fld[b-lj3ii0ahrf]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.cust-date-fld[b-lj3ii0ahrf]  .gdp-value {
    font-weight: 400;
}

.cust-date-fld .gcp-trigger[b-lj3ii0ahrf],
.cust-date-fld[b-lj3ii0ahrf]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .cust-date-fld .gcp-trigger:hover[b-lj3ii0ahrf],
    .cust-date-fld[b-lj3ii0ahrf]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.cust-date-fld .gcp-icon[b-lj3ii0ahrf] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Several boxes on one row (Active/Grade/Rating, Mobile/Phone, PAN/Zip) */
.cust-row2[b-lj3ii0ahrf],
.cust-row3[b-lj3ii0ahrf] {
    flex-direction: row;
    gap: 8px;
}

    .cust-row2 > *[b-lj3ii0ahrf],
    .cust-row3 > *[b-lj3ii0ahrf] {
        flex: 1;
        min-width: 0;
    }

/* Dropdowns: slim chevron instead of the native arrow */
.cust-sel-fld select[b-lj3ii0ahrf] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 26px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 9px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

/* ── 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;
        }
}
/* /Components/Pages/Others/MPhysicalStock.razor.rz.scp.css */
/* =====================================================================
   MPhysicalStock.razor.css — Others → Physical Stock
   Master CSS does the look; only page bits live here.
     common-page-chrome.css : bspl-title-block, bspl-filter-toggle, bspl-footer
     standard.css           : db-pagination / db-page-btn (GAINS_TB pager)
     masters-forms.css      : mu-page/ms-page (card fill), mu-card, mu-toolbar,
                              mu-search, mu-count, mu-table (+ .t-page #306B9C
                              header), mu-btn, mu-drawer*, mu-fld, uf-input /
                              uf-cell / uf-nospin, uf-chk, uf-modal*, mu-toast
   ===================================================================== */

.ps-page[b-yb05wosydk] {
    background: #f3f3f4;
}

/* ── Toolbar: search left, actions right ── */
.ps-toolbar[b-yb05wosydk] {
    flex-wrap: wrap;
}

.ps-tools[b-yb05wosydk] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

    .ps-tools .mu-count[b-yb05wosydk] {
        margin-right: 4px;
    }

.ps-genvoucher-btn:disabled[b-yb05wosydk] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* ── Grid ── */
.ps-table thead th[b-yb05wosydk] {
    white-space: nowrap;
}

.ps-table tbody td[b-yb05wosydk] {
    padding-top: 6px;
    padding-bottom: 6px;
}

.ps-item[b-yb05wosydk] {
    white-space: normal;
    min-width: 220px;
}

.ps-code[b-yb05wosydk] {
    color: #64748b;
    font-size: 11.5px;
}

.ps-num-col[b-yb05wosydk] {
    width: 110px;
    text-align: right;
}

td.ps-num-col[b-yb05wosydk] {
    font-variant-numeric: tabular-nums;
}

.ps-neg[b-yb05wosydk] {
    color: #800000;
}

.ps-chk-col[b-yb05wosydk] {
    width: 40px;
    text-align: center;
}

    .ps-chk-col input[b-yb05wosydk] {
        margin: 0;
    }

.ps-qty-col[b-yb05wosydk] {
    width: 130px;
}

.ps-qty-inp[b-yb05wosydk] {
    min-width: 90px;
    text-align: right;
}

.ps-comment-inp[b-yb05wosydk] {
    min-width: 180px;
}

/* Rows with unsaved edits */
.ps-table tbody tr.ps-dirty td[b-yb05wosydk] {
    background: #fff8e1;
}

    .ps-table tbody tr.ps-dirty td:first-child[b-yb05wosydk] {
        box-shadow: inset 3px 0 0 #f59e0b;
    }

/* Footer: selected count beside total */
.ps-foot-sel[b-yb05wosydk] {
    margin-left: 14px;
}

/* =====================================================================
   Filter drawer — master look (uf-input 32px boxes, no labels)
   ===================================================================== */
.ps-drawer .mu-drawer-section:first-child[b-yb05wosydk] {
    margin-top: -18px;
}

.ps-date-fld .gdp-field-row[b-yb05wosydk] {
    align-items: center;
}

.ps-date-fld[b-yb05wosydk]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ps-date-fld[b-yb05wosydk]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ps-date-fld[b-yb05wosydk]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

.ps-date-fld[b-yb05wosydk]  .gdp-value {
    font-weight: 400;
}

.ps-date-fld .gcp-trigger[b-yb05wosydk] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .ps-date-fld .gcp-trigger:hover[b-yb05wosydk] {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.ps-date-fld .gcp-icon[b-yb05wosydk] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.ps-sel-fld select[b-yb05wosydk] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

/* =====================================================================
   Compare / Summary popups — master uf-modal, widened
   ===================================================================== */
.ps-cmp-modal[b-yb05wosydk] {
    max-width: 680px;
}

.ps-summary-modal[b-yb05wosydk] {
    width: 95vw;
    max-width: 1200px;
}

.ps-cmp-body[b-yb05wosydk] {
    padding: 0;
    max-height: calc(100vh - 240px);
    overflow: auto;
}

.ps-cmp-table[b-yb05wosydk] {
    font-size: 12.5px;
}

    .ps-cmp-table thead th[b-yb05wosydk] {
        position: sticky;
        top: 0;
    }

.ps-summary-wrap table[b-yb05wosydk] {
    min-width: 1400px; /* 31 day columns — real horizontal scroll instead of squeezing */
}

.ps-summary-wrap th[b-yb05wosydk],
.ps-summary-wrap td[b-yb05wosydk] {
    white-space: nowrap;
}

.ps-strong[b-yb05wosydk] {
    font-weight: 700;
}

.ps-diff-neg[b-yb05wosydk] {
    color: #b91c1c;
    font-weight: 700;
}

.ps-diff-pos[b-yb05wosydk] {
    color: #15803d;
    font-weight: 700;
}

/* ── Narrow screens ── */
@media (max-width: 767px) {
    .ps-tools .mu-btn-label[b-yb05wosydk],
    .bspl-title-actions .mu-btn-label[b-yb05wosydk] {
        display: none;
    }

    .ps-tools .mu-btn[b-yb05wosydk] {
        padding: 8px 10px;
        gap: 0;
    }

    .ps-comment-inp[b-yb05wosydk] {
        min-width: 120px;
    }
}
/* /Components/Pages/Others/Sr_collection.razor.rz.scp.css */
/* =====================================================================
   SR_Collection.razor.css
   Same structure as ITB.razor.css: page is a flex column, .mu-card grows to
   fill the screen, Total row is sticky at the bottom of the grid, footer
   (bspl-footer / db-pagination) comes from shared standard.css.
   ===================================================================== */

.src-page[b-8imz113g9b] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    /* Grid card fills ALL remaining height (was content-height => half screen) */
    .src-page .mu-card[b-8imz113g9b] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 6px 16px 10px;
    }

    /* Scroll area is pinned to the card with position:absolute, so it ALWAYS fills the
       card height (flex:1 on the wrapper was not growing). Table is 100% tall and a
       filler row soaks up the spare space, so the Total row sits at the very bottom. */
    .src-page .mu-card[b-8imz113g9b] {
        position: relative;
        min-height: 200px;
    }

        .src-page .mu-card > .src-table-wrap[b-8imz113g9b] {
            position: absolute;
            inset: 0;
            min-height: 0;
            height: auto !important;
            max-height: none !important; /* shared .mu-table-wrap max-height was cutting the area short */
            overflow: auto;
        }

    .src-page .src-grid-table[b-8imz113g9b] {
        height: 100%;
    }

        .src-page .src-grid-table tbody tr.src-fill-row[b-8imz113g9b],
        .src-page .src-grid-table tbody tr.src-fill-row:hover[b-8imz113g9b] {
            background: transparent;
        }

            .src-page .src-grid-table tbody tr.src-fill-row td[b-8imz113g9b] {
                height: 100%;
                padding: 0;
                border-bottom: 0;
            }

    .src-page .bspl-footer-right[b-8imz113g9b] {
        display: flex;
        align-items: center;
        flex-wrap: nowrap;
        gap: 16px;
    }

    .src-page .bspl-footer-left[b-8imz113g9b] {
        display: flex;
        align-items: center;
        gap: 10px;
    }

.src-error[b-8imz113g9b] {
    margin: 8px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Top block: section label + toolbar, pulled up like ITB's .db-tabbar so the
   gap under the page title is tight. ── */
.src-topbar[b-8imz113g9b] {
    flex-shrink: 0;
    margin-top: -12px;
}

.src-section-hdr[b-8imz113g9b] {
    padding: 0 16px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
    color: #306b9c;
}

.src-toolbar[b-8imz113g9b] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    padding: 6px 16px 0;
    font-size: 12.5px;
    color: #555;
}

    .src-toolbar .mu-fld[b-8imz113g9b] {
        margin: 0;
    }

/* Party/Ledger — fixed width (was flex-grow: stretched across the whole bar) */
.src-fld-ledger[b-8imz113g9b] {
    flex: 0 0 300px;
    width: 300px;
    max-width: 100%;
}

.src-fld-sr[b-8imz113g9b] {
    flex: 0 0 200px;
    width: 200px;
}

    .src-fld-sr select[b-8imz113g9b] {
        width: 100%;
    }

.src-fld-date[b-8imz113g9b] {
    flex: 0 0 150px;
}

.src-toolbar-actions[b-8imz113g9b] {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

/* ── Date box — same master text-box look as ITB / BSPL (GlobalDatepicker) ── */
.bspl-date-fld[b-8imz113g9b]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-8imz113g9b]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-8imz113g9b]  .gdp-wrap:focus,
    .bspl-date-fld[b-8imz113g9b]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-8imz113g9b]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-8imz113g9b]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-8imz113g9b]  .gdp-value {
    font-weight: 400;
}

/* ── Grid ── */
.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;
        padding: 4px 8px;
        border: none !important;
        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;
    }

/* Total row — sticky at the bottom of the scrolling grid, always visible
   (same treatment as ITB's tfoot). */
.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;
}

/* ── Footer buttons (Total Records / pagination come from shared CSS) ── */
.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;
    }

/* ── Add-voucher dialog ── */
.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-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;
    }

    .src-fld-ledger[b-8imz113g9b],
    .src-fld-sr[b-8imz113g9b],
    .src-fld-date[b-8imz113g9b] {
        flex: 1 1 auto;
        width: 100%;
    }

    .src-page .mu-card[b-8imz113g9b] {
        margin: 6px 10px 10px;
    }

    .bspl-footer[b-8imz113g9b] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

.mu-card[b-8imz113g9b] {
    border-radius : 3px;
}
/* /Components/Pages/Others/Sr_dispatch.razor.rz.scp.css */
/* =====================================================================
   Sr_dispatch.razor.css — mirrors Sr_collection.razor.css (srd- prefix).
   Shared chrome (bspl-title-block, bspl-footer, mu-card, mu-table-wrap)
   comes from common-page-chrome.css / masters-forms.css.
   ===================================================================== */

.srd-page[b-m31l3jjh5v] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.srd-section-hdr[b-m31l3jjh5v] {
    flex-shrink: 0;
    padding: 8px 16px 0;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
    color: #306b9c;
}

.srd-toolbar[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 16px;
    padding: 8px 16px;
    font-size: 12.5px;
    color: #555;
}

.srd-toolbar-actions[b-m31l3jjh5v] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin-left: auto;
}

.srd-chk-lbl[b-m31l3jjh5v] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    cursor: pointer;
}

.srd-fld-ledger[b-m31l3jjh5v] {
    flex: 1 1 320px;
    min-width: 260px;
}

/* Uniform 32px control height (matches .uf-input): inputs, selects, date boxes, buttons. */
.srd-date-fld[b-m31l3jjh5v] {
    min-width: 150px;
}

    .srd-date-fld[b-m31l3jjh5v]  .gdp-wrap {
        height: 32px;
        padding: 0 8px;
        box-sizing: border-box;
        border: 1px solid #cbd5e1;
        border-radius: 5px;
        font-size: 13px;
        color: #1a2537;
    }

        .srd-date-fld[b-m31l3jjh5v]  .gdp-wrap:focus-within {
            border-color: #1a56a7;
            box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        }

.srd-toolbar .mu-btn[b-m31l3jjh5v],
.srd-modal-filters .mu-btn[b-m31l3jjh5v] {
    height: 32px;
    box-sizing: border-box;
    padding-top: 0;
    padding-bottom: 0;
}

/* ── Grid ── */
.mu-table-wrap[b-m31l3jjh5v] {
    min-height: 200px;
}

.srd-table-wrap[b-m31l3jjh5v] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

.srd-grid-table[b-m31l3jjh5v] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

    .srd-grid-table thead th[b-m31l3jjh5v] {
        position: sticky;
        top: 0;
        z-index: 10;
        background: #306b9c;
        text-align: left;
        font-size: 11.5px;
        font-weight: 700;
        line-height: 1.15;
        padding: 4px 8px;
        border: none !important;
        box-shadow: none !important;
        outline: none !important;
    }

    .srd-grid-table tbody td[b-m31l3jjh5v] {
        padding: 6px 8px;
        vertical-align: top;
        font-size: 12.5px;
        border-left: 1px solid #eef0f2;
        border-right: 1px solid #eef0f2;
        border-bottom: 1px solid #eef0f2;
        border-top: 0;
    }

    .srd-grid-table tbody tr:hover[b-m31l3jjh5v] {
        background: #f8fafc;
    }

    .srd-grid-table td.num[b-m31l3jjh5v],
    .srd-grid-table th.num[b-m31l3jjh5v] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

.srd-row-disp[b-m31l3jjh5v] {
    background: whitesmoke;
    font-weight: 600;
}

.srd-chk[b-m31l3jjh5v] {
    width: 28px;
    text-align: center;
}

.srd-del-col[b-m31l3jjh5v] {
    width: 32px;
    text-align: center;
}

.srd-vid[b-m31l3jjh5v] {
    color: #2f8fd1;
    font-weight: 600;
    cursor: pointer;
}

.srd-sub[b-m31l3jjh5v] {
    color: #64748b;
    font-size: 11px;
}

.srd-party[b-m31l3jjh5v] {
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Row delete uses the global .mu-del; only the disabled (reconciled) state is page-specific. */
.srd-del-col .mu-del:disabled[b-m31l3jjh5v] {
    opacity: .4;
    cursor: not-allowed;
}

/* ── Assigned / Dispatched / Balance strip (legacy grey bar) ── */
.srd-summary[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    justify-content: space-around;
    padding: 8px 16px;
    background: #E1EAF1;
    font-size: 12px;
    color: #333;
}

/* ── Footer buttons ── */
.srd-add-btn[b-m31l3jjh5v] {
    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;
}

.srd-reconcile-btn[b-m31l3jjh5v] {
    background: #0B648E;
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

    .srd-reconcile-btn:disabled[b-m31l3jjh5v] {
        opacity: .6;
        cursor: not-allowed;
    }

/* ── Add dialog ── */
.srd-modal-overlay[b-m31l3jjh5v] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 1000;
}

.srd-modal[b-m31l3jjh5v] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(1000px, 94vw);
    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;
}

.srd-modal-hdr[b-m31l3jjh5v] {
    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;
}

.srd-modal-close[b-m31l3jjh5v] {
    background: none;
    border: none;
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.srd-modal-body[b-m31l3jjh5v] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 10px 14px;
    overflow: auto;
}

    .srd-modal-body .srd-table-wrap[b-m31l3jjh5v] {
        max-height: 55vh;
    }

.srd-modal-filters[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 12px;
    padding-bottom: 8px;
}

.srd-vid-search[b-m31l3jjh5v] {
    width: 110px;
}

.srd-modal-foot[b-m31l3jjh5v] {
    flex-shrink: 0;
    padding: 10px 14px;
    border-top: 1px solid #e3e6ea;
    display: flex;
    justify-content: flex-end;
}

.srd-move-btn-wide[b-m31l3jjh5v] {
    background: #5c6d20;
    color: #fff;
    border: none;
    padding: 8px 20px;
    border-radius: 4px;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
}

    .srd-move-btn-wide:disabled[b-m31l3jjh5v] {
        opacity: .6;
        cursor: not-allowed;
    }

@media (max-width: 900px) {
    .srd-toolbar[b-m31l3jjh5v] {
        flex-direction: column;
        align-items: stretch;
    }

    .bspl-footer[b-m31l3jjh5v] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

/* ── Reconcile dialog ── */
.srd-modal-wide[b-m31l3jjh5v] {
    width: min(1150px, 96vw);
}

.srd-recon-info[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    gap: 40px;
    padding-bottom: 8px;
    font-size: 12.5px;
    color: #334155;
}

.srd-modal-foot-left[b-m31l3jjh5v] {
    justify-content: flex-start;
}

.srd-qty-inp[b-m31l3jjh5v] {
    width: 90px;
    text-align: right;
}

/* ── Interactivity ── */
.srd-row[b-m31l3jjh5v] {
    cursor: pointer;
    transition: background .12s;
}

    .srd-row:hover[b-m31l3jjh5v] {
        background: #eef4fa;
    }

.srd-grid-table tbody tr.srd-row-sel[b-m31l3jjh5v],
.srd-grid-table tbody tr.srd-row-sel:hover[b-m31l3jjh5v] {
    background: #dbeafe;
}

.srd-grid-table input[type=checkbox][b-m31l3jjh5v] {
    cursor: pointer;
    width: 15px;
    height: 15px;
}

.srd-add-btn[b-m31l3jjh5v], .srd-reconcile-btn[b-m31l3jjh5v], .srd-move-btn-wide[b-m31l3jjh5v] {
    transition: filter .12s, transform .06s;
}

    .srd-add-btn:hover:not(:disabled)[b-m31l3jjh5v], .srd-reconcile-btn:hover:not(:disabled)[b-m31l3jjh5v], .srd-move-btn-wide:hover:not(:disabled)[b-m31l3jjh5v] {
        filter: brightness(1.12);
    }

    .srd-add-btn:active:not(:disabled)[b-m31l3jjh5v], .srd-reconcile-btn:active:not(:disabled)[b-m31l3jjh5v], .srd-move-btn-wide:active:not(:disabled)[b-m31l3jjh5v] {
        transform: translateY(1px);
    }

    .srd-add-btn:focus-visible[b-m31l3jjh5v], .srd-reconcile-btn:focus-visible[b-m31l3jjh5v], .srd-move-btn-wide:focus-visible[b-m31l3jjh5v], .srd-modal-close:focus-visible[b-m31l3jjh5v] {
        outline: 2px solid #1a56a7;
        outline-offset: 2px;
    }

.srd-modal-close:hover[b-m31l3jjh5v] {
    opacity: .75;
}

.srd-modal[b-m31l3jjh5v] {
    animation: srd-pop-b-m31l3jjh5v .14s ease-out;
}

@keyframes srd-pop-b-m31l3jjh5v {
    from { opacity: 0; transform: translate(-50%, -48%); }
    to   { opacity: 1; transform: translate(-50%, -50%); }
}

/* ── Responsive ── */
.srd-grid-table[b-m31l3jjh5v] {
    min-width: 560px;
}

.srd-table-wrap[b-m31l3jjh5v] {
    overflow-x: auto;
}

@media (max-width: 1100px) {
    .srd-toolbar-actions[b-m31l3jjh5v] {
        margin-left: 0;
        width: 100%;
    }
}

@media (max-width: 900px) {
    .srd-summary[b-m31l3jjh5v] {
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 6px 20px;
    }

    .srd-date-fld[b-m31l3jjh5v] {
        min-width: 0;
        width: 100%;
    }

    .srd-recon-info[b-m31l3jjh5v] {
        flex-direction: column;
        gap: 4px;
    }

    .srd-modal-filters > *[b-m31l3jjh5v] {
        flex: 1 1 100%;
    }

    .srd-vid-search[b-m31l3jjh5v] {
        width: 100%;
    }
}

@media (max-width: 640px) {
    .srd-modal[b-m31l3jjh5v] {
        width: 100vw;
        max-height: 100vh;
        height: 100vh;
        border-radius: 0;
    }

    .srd-modal-body .srd-table-wrap[b-m31l3jjh5v] {
        max-height: none;
    }

    .srd-toolbar[b-m31l3jjh5v] {
        padding: 8px 10px;
        gap: 10px;
    }

    .srd-toolbar-actions .mu-btn[b-m31l3jjh5v] {
        flex: 1 1 auto;
        justify-content: center;
    }

    .srd-modal-foot .srd-move-btn-wide[b-m31l3jjh5v],
    .srd-modal-foot .srd-reconcile-btn[b-m31l3jjh5v] {
        width: 100%;
    }
}

/* ── Reconcile dialog polish ── */
.srd-recon-info i[b-m31l3jjh5v] {
    color: #306b9c;
    margin-right: 4px;
}

.srd-modal:focus[b-m31l3jjh5v] {
    outline: none;
}

.srd-recon-chips[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding-bottom: 10px;
}

.srd-chip[b-m31l3jjh5v] {
    background: #eef3f8;
    border: 1px solid #d9e2ec;
    border-radius: 999px;
    padding: 3px 12px;
    font-size: 12px;
    color: #475569;
}

    .srd-chip b[b-m31l3jjh5v] {
        color: #1a2537;
        margin-left: 4px;
        font-variant-numeric: tabular-nums;
    }

.srd-chip-warn[b-m31l3jjh5v] { background: #fff7e6; border-color: #fde0a8; }
.srd-chip-sel[b-m31l3jjh5v]  { background: #dbeafe; border-color: #bcd3f5; }

.srd-recon-quick[b-m31l3jjh5v] {
    margin-left: auto;
    display: inline-flex;
    gap: 6px;
}

.srd-link-btn[b-m31l3jjh5v] {
    background: none;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    padding: 3px 10px;
    font-size: 12px;
    color: #306b9c;
    cursor: pointer;
    transition: background .12s;
}

    .srd-link-btn:hover:not(:disabled)[b-m31l3jjh5v] { background: #eef4fa; }
    .srd-link-btn:disabled[b-m31l3jjh5v] { opacity: .5; cursor: not-allowed; }

.srd-recon-table[b-m31l3jjh5v] {
    table-layout: fixed;
}

    .srd-recon-table thead th[b-m31l3jjh5v] {
        vertical-align: middle;
        white-space: nowrap;
    }

    .srd-recon-table tbody td[b-m31l3jjh5v] {
        vertical-align: middle;
    }

.srd-th-sm[b-m31l3jjh5v] {
    font-size: 11px;
    font-weight: 700;
}

.srd-qty-wrap[b-m31l3jjh5v] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.srd-qty-inp[b-m31l3jjh5v] {
    width: 90px;
    height: 28px;
    text-align: right;
}

.srd-full-btn[b-m31l3jjh5v] {
    background: #fff;
    border: 1px solid #306b9c;
    color: #306b9c;
    border-radius: 4px;
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
    transition: background .12s, color .12s;
}

    .srd-full-btn:hover[b-m31l3jjh5v] {
        background: #306b9c;
        color: #fff;
    }

.srd-badge[b-m31l3jjh5v] {
    display: inline-block;
    min-width: 48px;
    text-align: center;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.srd-badge-ok[b-m31l3jjh5v]   { background: #dcfce7; color: #166534; }
.srd-badge-warn[b-m31l3jjh5v] { background: #fff1d6; color: #92580a; }

.srd-empty[b-m31l3jjh5v] {
    text-align: center;
    padding: 36px 12px !important;
    color: #64748b;
    font-size: 13px;
}

    .srd-empty i[b-m31l3jjh5v] {
        font-size: 28px;
        color: #cbd5e1;
        margin-bottom: 8px;
        display: block;
    }

.srd-modal-foot-split[b-m31l3jjh5v] {
    justify-content: space-between;
    gap: 8px;
}

    .srd-modal-foot-split .srd-reconcile-btn:disabled[b-m31l3jjh5v] {
        opacity: .5;
    }

@media (max-width: 900px) {
    .srd-recon-quick[b-m31l3jjh5v] { margin-left: 0; }
    .srd-recon-table[b-m31l3jjh5v] { table-layout: auto; min-width: 760px; }
}

/* ── Two-row toolbar (old form layout) ── */
.srd-toolbar[b-m31l3jjh5v] {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
}

.srd-row-flds[b-m31l3jjh5v] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
}

.srd-fld-sp[b-m31l3jjh5v]  { width: 190px; }
.srd-fld-vid[b-m31l3jjh5v] { width: 120px; }
.srd-fld-tr[b-m31l3jjh5v]  { width: 220px; }
.srd-fld-veh[b-m31l3jjh5v] { width: 150px; }

.srd-row-flds .srd-fld-ledger[b-m31l3jjh5v] {
    flex: 1 1 260px;
    min-width: 220px;
    max-width: 380px;
}

.srd-go-btn[b-m31l3jjh5v] {
    height: 32px;
    width: 40px;
    border: none;
    border-radius: 4px;
    background: #2f8f4e;
    color: #fff;
    cursor: pointer;
    transition: filter .12s, transform .06s;
}

    .srd-go-btn:hover:not(:disabled)[b-m31l3jjh5v] { filter: brightness(1.12); }
    .srd-go-btn:active:not(:disabled)[b-m31l3jjh5v] { transform: translateY(1px); }
    .srd-go-btn:disabled[b-m31l3jjh5v] { opacity: .6; cursor: not-allowed; }

@media (max-width: 900px) {
    .srd-fld-sp[b-m31l3jjh5v], .srd-fld-vid[b-m31l3jjh5v], .srd-fld-tr[b-m31l3jjh5v], .srd-fld-veh[b-m31l3jjh5v] {
        width: 100%;
    }

    .srd-row-flds .srd-fld-ledger[b-m31l3jjh5v] {
        max-width: none;
    }
}

/* ── Tighter vertical spacing (.mu-page default gap is 16px) ── */
.srd-page[b-m31l3jjh5v] {
    gap: 10px;
}

.srd-toolbar[b-m31l3jjh5v] {
    padding: 2px 10px;
    gap: 6px;
}

/* Grid card takes all spare height so the Assigned/Dispatched/Balance strip
   sits at the bottom, directly above the Total Records footer. */
.srd-page > .mu-card[b-m31l3jjh5v] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

    .srd-page > .mu-card > .srd-table-wrap[b-m31l3jjh5v] {
        flex: 1 1 auto;
    }

/* ── Split view: Unassigned | >> | Assigned ── */
.srd-split[b-m31l3jjh5v] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    align-items: stretch;
    gap: 0;
    padding: 0 10px;
}

.srd-pane[b-m31l3jjh5v] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

    .srd-pane > .mu-card[b-m31l3jjh5v] {
        flex: 1 1 auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }

.srd-pane-hdr[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 2px 2px 4px;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
    color: #306b9c;
}

.srd-pane-count[b-m31l3jjh5v] {
    font-size: 11px;
    font-weight: 400;
    text-transform: none;
    color: #64748b;
}

.srd-mid[b-m31l3jjh5v] {
    flex: 0 0 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 8px;
    background: #1e8e3e;
    border-radius: 3px;
}

.srd-move-btn[b-m31l3jjh5v] {
    width: 32px;
    height: 56px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #f1f5f9;
    color: #1a2537;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background .12s, transform .06s;
}

    .srd-move-btn:hover:not(:disabled)[b-m31l3jjh5v] { background: #fff; }
    .srd-move-btn:active:not(:disabled)[b-m31l3jjh5v] { transform: translateY(1px); }
    .srd-move-btn:disabled[b-m31l3jjh5v] { opacity: .55; cursor: not-allowed; }

.srd-split .srd-summary[b-m31l3jjh5v] {
    margin-top: 4px;
    padding: 6px 8px;
    gap: 6px 14px;
}

@media (max-width: 900px) {
    .srd-split[b-m31l3jjh5v] {
        flex-direction: column;
        padding: 0 10px;
    }

    .srd-pane[b-m31l3jjh5v] {
        flex: none;
    }

    .srd-mid[b-m31l3jjh5v] {
        flex: 0 0 auto;
        margin: 8px 0;
        height: 40px;
    }

    .srd-move-btn[b-m31l3jjh5v] {
        width: 100%;
        height: 32px;
    }

    .srd-move-txt[b-m31l3jjh5v] {
        display: inline-block;
        transform: rotate(90deg);
    }
}

/* ── Unassigned grid is the only pane on the page now ── */
.srd-split[b-m31l3jjh5v] {
    display: block;
}

.srd-split > .srd-pane[b-m31l3jjh5v] {
    height: 100%;
}

.srd-assigned-bar[b-m31l3jjh5v] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 16px;
    padding-bottom: 8px;
}

.srd-assigned-actions[b-m31l3jjh5v] {
    display: contents;
}

.srd-modal .srd-summary[b-m31l3jjh5v] {
    margin-top: 6px;
}

.srd-modal .mu-card[b-m31l3jjh5v] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.srd-move-foot[b-m31l3jjh5v] {
    background: #5c6d20;
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: filter .12s, transform .06s;
}

    .srd-move-foot:hover:not(:disabled)[b-m31l3jjh5v] { filter: brightness(1.12); }
    .srd-move-foot:active:not(:disabled)[b-m31l3jjh5v] { transform: translateY(1px); }
    .srd-move-foot:disabled[b-m31l3jjh5v] { opacity: .55; cursor: not-allowed; }

/* Assigned popup: grid area 30px taller than the default 200px minimum */
.srd-modal-assigned .srd-table-wrap[b-m31l3jjh5v] {
    min-height: 230px;
}

/* Assigned popup: tall — grid area grows to fill (≈ down to the marked line) */
.srd-modal-assigned[b-m31l3jjh5v] {
    height: min(80vh, 600px);
}

    .srd-modal-assigned .srd-modal-body > .mu-card[b-m31l3jjh5v] {
        flex: 1 1 auto;
        min-height: 0;
    }

    .srd-modal-assigned .srd-modal-body .srd-table-wrap[b-m31l3jjh5v] {
        max-height: none;
        height: 100%;
    }

/* Reconcile popup: same tall size as the Assigned popup */
.srd-modal-recon[b-m31l3jjh5v] {
    height: min(80vh, 600px);
}

    .srd-modal-recon .srd-modal-body > .srd-table-wrap[b-m31l3jjh5v] {
        flex: 1 1 auto;
        min-height: 230px;
        max-height: none;
    }

/* Reconcile popup: grid frame fills the whole popup body (no blank gap under the grid) */
.srd-modal-recon .srd-modal-body > .srd-table-wrap[b-m31l3jjh5v] {
    border: 1px solid #e3e6ea;
    border-radius: 6px;
    background: #fff;
}

/* ── voucher grouping (old form: VID/date/party once, then one line per item) ── */
.srd-grid-table tbody tr.srd-vgrp td[b-m31l3jjh5v] {
    border-top: 1px solid #dbe3ec;
}

.srd-grid-table tbody tr:not(.srd-vgrp) td[b-m31l3jjh5v] {
    padding-top: 2px;
}

.srd-qtytotal[b-m31l3jjh5v] {
    flex-shrink: 0;
    text-align: right;
    padding: 4px 8px 0;
    font-size: 12px;
    color: #334155;
}

.srd-modal-item[b-m31l3jjh5v] {
    width: min(620px, 94vw);
    height: min(60vh, 460px);
    z-index: 1101;
}

.srd-overlay-top[b-m31l3jjh5v] {
    z-index: 1100;
}

/* Required-field errors sit under the field (global .uf-invalid / .uf-err) — keep row aligned to the top */
.srd-row-flds[b-m31l3jjh5v] {
    align-items: flex-start;
}

.srd-date-fld.uf-invalid[b-m31l3jjh5v]  .gdp-wrap {
    border-color: #e11d48 !important;
    background: #fff5f6;
}

/* ── Fix toolbar row spacing: every field is exactly 32px tall; validation text is
   laid over the gap (absolute) so it never stretches the row. ── */
.srd-toolbar[b-m31l3jjh5v] {
    gap: 20px;
}

.srd-row-flds > .mu-fld[b-m31l3jjh5v] {
    position: relative;
    height: 32px;
}

.srd-date-fld[b-m31l3jjh5v]  .gdp-error-msg {
    display: none;
}

/* Desktop: each filter row is exactly one field tall, whatever the children render
   (LedgerAutofill / date pickers were stretching row 1). Wraps naturally on small screens. */
@media (min-width: 901px) {
    .srd-row-flds[b-m31l3jjh5v] {
        height: 32px;
        flex-wrap: nowrap;
        align-content: flex-start;
    }

    .srd-toolbar[b-m31l3jjh5v] {
        gap: 24px;
    }
}
/* /Components/Pages/Others/TransporterDetails.razor.rz.scp.css */
/* =====================================================================
   TransporterDetails.razor.css
   Master CSS does the look — this file only adds what master lacks.
     common-page-chrome.css : bspl-title-block, bspl-filter-toggle, bspl-footer
     standard.css           : db-pagination / db-page-btn (GAINS_TB pager)
     masters-forms.css      : mu-card, mu-table (+ .t-page #306B9C header,
                              sticky), mu-drawer*, mu-fld, uf-input, uf-chk,
                              mu-btn, mu-toast,
                              gdp-* (GlobalDatepicker), ms-page (card fill)
   ===================================================================== */

/* Page = flex column: header fixed, content flexes, footer pinned bottom
   (common-page-chrome NOTE). ms-page on root handles card/table-wrap fill. */
.td-page[b-c9xewzsgyc] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
}

/* Middle region — ms-page's .mu-card { flex:1 } needs a flex-column parent. */
.td-content[b-c9xewzsgyc] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* 15 columns → scroll sideways inside mu-table-wrap, never the page. */
.td-table[b-c9xewzsgyc] {
    min-width: 1500px;
}

    .td-table td.td-wrap[b-c9xewzsgyc] {
        white-space: normal;
        min-width: 160px;
        max-width: 260px;
    }

    .td-table .text-end[b-c9xewzsgyc] {
        text-align: right;
    }

/* ── Drawer: green section bar flush under the dark header.
   Master: body padding 18px + section margin 0 -18px → 18px white gap on top. ── */
.td-page .mu-drawer-section:first-child[b-c9xewzsgyc] {
    margin-top: -18px;
}

/* ── Drawer: GlobalDatepicker box → same 32px look as .uf-input
   (master .gdp-wrap is 5px pad / #dde3ed / 6px radius). ::deep — rendered by child. ── */
.td-date-fld[b-c9xewzsgyc]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border-color: #cbd5e1;
    border-radius: 5px;
}

    .td-date-fld[b-c9xewzsgyc]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

.td-date-fld[b-c9xewzsgyc]  .gdp-value {
    font-weight: 400;
}

/* Calendar (GreenCalendarPicker) + "C" reset — not in master; 32px square,
   lined up with the date box. Plain <img> reuses .gcp-* names. */
.td-date-fld .gdp-field-row[b-c9xewzsgyc] {
    align-items: center;
}

.td-date-fld .gcp-trigger[b-c9xewzsgyc],
.td-date-fld[b-c9xewzsgyc]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .td-date-fld .gcp-trigger:hover[b-c9xewzsgyc],
    .td-date-fld[b-c9xewzsgyc]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.td-date-fld .gcp-icon[b-c9xewzsgyc] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Drawer: PUR / SLS / Link status in one row.
   mu-fld is a column → switch to row; checkbox look = master uf-chk. ── */
.td-chk-row[b-c9xewzsgyc] {
    flex-direction: row;
    align-items: center;
    gap: 14px;
}

    .td-chk-row .uf-chk[b-c9xewzsgyc] {
        flex: 0 0 auto;
    }

    .td-chk-row .td-pending[b-c9xewzsgyc] {
        flex: 1;
        min-width: 0;
        width: auto;
    }

/* ── VNum cell: master .mu-vnum-dot rect + clickable VNum ── */
.td-table td.td-nowrap[b-c9xewzsgyc] {
    white-space: nowrap;
}

.td-vnum[b-c9xewzsgyc] {
    cursor: pointer;
    font-weight: 600;
}

    .td-vnum:hover[b-c9xewzsgyc] {
        text-decoration: underline;
    }

/* Sortable header icon on right-aligned (numeric) columns stays beside label */
.td-table thead th.mu-th-sort.text-end[b-c9xewzsgyc] {
    text-align: right;
}

/* ── Drawer dropdowns (TransporterDropdown + Link status): native arrow
   replaced with a chevron, same as master .mu-pagesize look.
   ::deep — TransporterDropdown's <select> is rendered by the child. ── */
.td-sel[b-c9xewzsgyc]  select {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

    .td-sel[b-c9xewzsgyc]  select:disabled {
        background-color: #f1f5f9;
    }
/* /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;
    }
}

/* ── Title block parity with BSPL ─────────────────────────────────
   BSPL's heading/subtitle inherit font + colour from .bspl-page
   (Open Sans 13px #333). COA sits under .t-page/.mu-page instead, so
   re-establish that same inherited context on the title block only. */
.coa-page .bspl-title-block[b-g4g9shsguj] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

   
/* /Components/Pages/Reports/CustBSPL.razor.rz.scp.css */
/* CustBSPL.razor.css — Customized BS PL Entry */

/* Flex-fill layout (same as MRole) — page fills .gains-content, only the
   table body scrolls, footer stays pinned at the bottom. height:100%, never 100vh. */
.mu-page[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-wrzxuzmdm0] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 0; /* square corners, same as Group */
}

.mu-toolbar[b-wrzxuzmdm0] {
    flex-shrink: 0;
}

.mu-table-wrap[b-wrzxuzmdm0] {
    flex: 1;
    height: auto;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-wrzxuzmdm0] {
    flex-shrink: 0;
}

.cb-bar[b-wrzxuzmdm0] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 10px;
}

.cb-bar[b-wrzxuzmdm0] { align-items: center; }

.cb-fld-dd[b-wrzxuzmdm0]   { width: 200px; }
.cb-fld-name[b-wrzxuzmdm0] { width: 220px; }
.cb-fld-bspl[b-wrzxuzmdm0] { width: 100px; }
.cb-fld-id[b-wrzxuzmdm0]   { width: 90px; }

.cb-bar select:disabled[b-wrzxuzmdm0],
.cb-bar input[readonly][b-wrzxuzmdm0] {
    background: #f3f4f6;
}

.cb-sq[b-wrzxuzmdm0] {
    padding-left: 10px;
    padding-right: 10px;
}

.cb-actions[b-wrzxuzmdm0] {
    display: flex;
    gap: 6px;
    margin-left: auto;
}

.cb-table th[b-wrzxuzmdm0],
.cb-table td[b-wrzxuzmdm0] {
    white-space: nowrap;
}

.cb-table th[b-wrzxuzmdm0] { text-align: center; }
.cb-table .cb-th-text[b-wrzxuzmdm0] { text-align: left; }

.cb-c[b-wrzxuzmdm0] { text-align: center; }

.cb-text[b-wrzxuzmdm0] {
    min-width: 220px;
}

/* Save / Cancel (and the rest of the row): full strength only while usable. */
.cb-bar .mu-btn[b-wrzxuzmdm0],
.cb-foot .mu-btn[b-wrzxuzmdm0] {
    transition: opacity .15s;
}

    .cb-bar .mu-btn:disabled[b-wrzxuzmdm0],
    .cb-foot .mu-btn:disabled[b-wrzxuzmdm0] {
        opacity: .4;
        cursor: not-allowed;
    }

.cb-ico[b-wrzxuzmdm0],
.cb-link[b-wrzxuzmdm0] {
    border: none;
    background: none;
    cursor: pointer;
    padding: 2px 6px;
    color: #306B9C;
    font-size: 13px;
}

    .cb-ico.cb-del[b-wrzxuzmdm0] { color: #dc2626; }
    .cb-link:hover[b-wrzxuzmdm0] { text-decoration: underline; }

.cb-integral[b-wrzxuzmdm0] {
    font-size: 17px;
    font-family: "Times New Roman", serif;
}

.cb-foot .bspl-footer-left[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cb-foot .bspl-footer-right[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.cb-excel[b-wrzxuzmdm0] {
    border: none;
    background: none;
    cursor: pointer;
    font-size: 20px;
    color: #1d6f42;
}

    .cb-excel:disabled[b-wrzxuzmdm0] {
        opacity: .4;
        cursor: default;
    }

@media (max-width: 640px) {
    .cb-actions[b-wrzxuzmdm0] { margin-left: 0; }
    .cb-fld-dd[b-wrzxuzmdm0], .cb-fld-name[b-wrzxuzmdm0] { min-width: 100%; }
}

/* ── Info modal (format legend) ── */
.cb-info-overlay[b-wrzxuzmdm0] {
    align-items: center;
}

.cb-info-modal[b-wrzxuzmdm0] {
    max-width: 380px;
}

.cb-info-body[b-wrzxuzmdm0] {
    padding: 14px 20px 18px;
}

.cb-info-group[b-wrzxuzmdm0] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .6px;
    color: #64748b;
    margin: 10px 0 6px;
}

    .cb-info-group:first-child[b-wrzxuzmdm0] { margin-top: 0; }

.cb-info-row[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 7px 10px;
    border-radius: 6px;
    background: #f8fafc;
    font-size: 13px;
    color: #1f2937;
}

    .cb-info-row + .cb-info-row[b-wrzxuzmdm0] { margin-top: 4px; }

    .cb-info-row em[b-wrzxuzmdm0] {
        font-style: normal;
        color: #6b7280;
    }

.cb-info-key[b-wrzxuzmdm0] {
    flex: 0 0 32px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #dde3ed;
    border-radius: 5px;
    background: #fff;
    font-family: "Times New Roman", serif;
    font-size: 20px;
    color: #111827;
}

/* Line samples drawn in CSS (old page used line images). */
.cb-ln[b-wrzxuzmdm0] {
    display: block;
    width: 20px;
}

.cb-ln-sep[b-wrzxuzmdm0]    { border-top: 2px solid #111827; }
.cb-ln-single[b-wrzxuzmdm0] { border-top: 1px solid #111827; }
.cb-ln-dbl[b-wrzxuzmdm0]    { height: 4px; border-top: 1px solid #111827; border-bottom: 1px solid #111827; }
.cb-ln-above[b-wrzxuzmdm0]  { height: 10px; border-top: 1px solid #111827; background: linear-gradient(#9ca3af, #9ca3af) center 7px / 14px 2px no-repeat; }

.cb-del-btn[b-wrzxuzmdm0] {
    color: #dc2626;
}

    .cb-del-btn:hover[b-wrzxuzmdm0] {
        background: #fef2f2;
        border-color: #fca5a5;
    }

/* ── NewRow / Add New Row After modal ── */
.cb-row-modal[b-wrzxuzmdm0] {
    max-width: 520px;
}

.cb-row-body[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cb-row-lbl[b-wrzxuzmdm0] {
    font-size: 12px;
    font-weight: 600;
    color: #475569;
    margin-top: 6px;
}

    .cb-row-lbl:first-child[b-wrzxuzmdm0] { margin-top: 0; }

.cb-row-hdr[b-wrzxuzmdm0] {
    margin-top: 6px;
}

/* ── Grid row Format modal ── */
.cb-fmt-modal[b-wrzxuzmdm0] {
    max-width: 420px;
}

.cb-fmt-body[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

    .cb-fmt-body em[b-wrzxuzmdm0] {
        color: #6b7280;
        font-size: 12px;
    }

/* "Row ID : n" bold; the row text after it slightly smaller, normal weight. */
.cb-fmt-row[b-wrzxuzmdm0] {
    font-weight: 700;
    font-size: 13px;
    color: #1f2937;
    padding-bottom: 8px;
    border-bottom: 1px solid #e2e8f0;
}

.cb-fmt-cr[b-wrzxuzmdm0] {
    align-items: flex-start;
    padding-top: 8px;
    border-top: 1px dashed #e2e8f0;
}

.cb-cr[b-wrzxuzmdm0] { color: #800000; } /* maroon */

/* SET left, Cancel right. */
.cb-fmt-foot[b-wrzxuzmdm0] {
    display: flex;
    justify-content: space-between;
}

/* ── ∫ Ledger / Group modal ── */
/* Same height on every radio; only the list area scrolls. */
.cb-lgf-modal[b-wrzxuzmdm0] {
    max-width: 560px;
    height: min(600px, 90vh);
    display: flex;
    flex-direction: column;
}

    .cb-lgf-modal .uf-body[b-wrzxuzmdm0] {
        flex: 1;
        min-height: 0;
        overflow: hidden;
    }

    .cb-lgf-modal .uf-header[b-wrzxuzmdm0],
    .cb-lgf-modal .uf-footer[b-wrzxuzmdm0] {
        flex-shrink: 0;
    }

.cb-lgf-head[b-wrzxuzmdm0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}

    .cb-lgf-head .uf-chk[b-wrzxuzmdm0] { font-weight: 600; }

.cb-lgf-wrap[b-wrzxuzmdm0] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    border: 1px solid #e2e8f0;
}

    .cb-lgf-wrap thead th[b-wrzxuzmdm0] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

.cb-lgf-opts[b-wrzxuzmdm0] {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

/* Grid Select: maroon when the row is linked to a PL row (pL_CUSTBSPLID > 0), blue otherwise. */
.cb-sel[b-wrzxuzmdm0] {
    background-color: #376091;
    color: white;
    border: none;
    cursor: pointer;
    padding: 2px 10px;
    font-size: 12px;
    border-radius: 3px;
}

    .cb-sel.cb-sel-on[b-wrzxuzmdm0] { background-color: #800000; }

    .cb-sel:disabled[b-wrzxuzmdm0] {
        opacity: .4;
        cursor: not-allowed;
    }

/* ── View Report modal ── */
.cb-rpt-modal[b-wrzxuzmdm0] {
    max-width: 460px;
}

.cb-rpt-body[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* One row: BSPLID label + dropdown left, "BSPL : XX" right. */
.cb-rpt-line[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.cb-rpt-id[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    min-width: 0;
}

    .cb-rpt-id .cb-row-lbl[b-wrzxuzmdm0] { margin: 0; }
    .cb-rpt-id select[b-wrzxuzmdm0] { width: 220px; max-width: 100%; }

.cb-rpt-bspl[b-wrzxuzmdm0] {
    font-size: 13px;
    white-space: nowrap;
}

.cb-rpt-dates[b-wrzxuzmdm0] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

    .cb-rpt-dates > div[b-wrzxuzmdm0] {
        display: flex;
        flex-direction: column;
        gap: 4px;
    }

/* PDF viewer: near full screen, iframe fills below the header. */
.cb-pdf-modal[b-wrzxuzmdm0] {
    max-width: 1100px;
    width: 95vw;
    height: 92vh;
    display: flex;
    flex-direction: column;
}

    .cb-pdf-modal .uf-header[b-wrzxuzmdm0],
    .cb-pdf-modal .uf-footer[b-wrzxuzmdm0] {
        flex-shrink: 0;
    }

.cb-pdf-frame[b-wrzxuzmdm0] {
    flex: 1;
    width: 100%;
    border: none;
}

/* ── PLSELECT modal ── */
.cb-pl-modal[b-wrzxuzmdm0] {
    max-width: 680px;
}

.cb-pl-info[b-wrzxuzmdm0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 20px;
    font-size: 13px;
    color: #374151;
}

.cb-pl-dd[b-wrzxuzmdm0] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}


.cb-pl-table tbody tr[b-wrzxuzmdm0] { cursor: pointer; }
.cb-pl-table tbody tr:nth-child(even) td[b-wrzxuzmdm0] { background: #f8fafc; }
.cb-pl-table tbody tr:hover td[b-wrzxuzmdm0] { background: #eef4fb; }
/* Ticked PL row — on open this is the pre-linked pL_CustBSPLRowID. */
.cb-pl-table tbody tr.cb-pl-on td[b-wrzxuzmdm0] {
    background: #376091;
    color: #fff;
    font-weight: 600;
}

.cb-pl-dd .uf-input[b-wrzxuzmdm0] { width: 200px; }

.cb-ob-dd[b-wrzxuzmdm0] {
    min-width: 110px;
    padding-top: 2px;
    padding-bottom: 2px;
}

.cb-lgf-chk[b-wrzxuzmdm0] { width: 36px; }

/* Name wraps when long; code sits right after it (narrow, left-aligned) instead of far right. */
.cb-lgf-table .cb-lgf-name[b-wrzxuzmdm0] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cb-lgf-table .cb-lgf-code[b-wrzxuzmdm0] {
    width: 1%;
    white-space: nowrap;
    text-align: left;
    padding-left: 8px;
}

.cb-lgf-hint[b-wrzxuzmdm0] {
    font-size: 12px;
    color: #6b7280;
}

.cb-lgf-empty[b-wrzxuzmdm0] {
    padding: 24px;
    text-align: center;
    color: #6b7280;
    border: 1px dashed #e2e8f0;
}

/* ── Inline row edit ── */
.cb-table tr.cb-editing td[b-wrzxuzmdm0] {
    background: #fffbeb;
}

.cb-table tr.cb-editing .uf-input[b-wrzxuzmdm0] {
    min-width: 220px;
}

.cb-ico.cb-save[b-wrzxuzmdm0] { color: #15803d; }

.cb-ico:disabled[b-wrzxuzmdm0] {
    opacity: .35;
    cursor: not-allowed;
}


/* ── Exception Reports modal ── */
/* Largest popup: Ledgers Used / View Report grids are wide. */
.cb-exc-modal[b-wrzxuzmdm0] {
    max-width: 1400px;
    width: 96vw;
    height: 92vh;
}

    .cb-exc-modal .uf-footer[b-wrzxuzmdm0] {
        display: flex;
        align-items: center;
        gap: 12px;
    }

    .cb-exc-modal .db-pagination[b-wrzxuzmdm0] { margin-left: auto; }
    .cb-exc-modal .db-pagination + .cb-excel[b-wrzxuzmdm0] { margin-left: 0; }

.cb-exc-btns[b-wrzxuzmdm0] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

    .cb-exc-btns .uf-btn[b-wrzxuzmdm0] { font-weight: 600; }

.cb-exc-notused[b-wrzxuzmdm0] { color: #800000; }   /* maroon */
.cb-exc-used[b-wrzxuzmdm0]    { color: #15803d; }   /* green */

.cb-exc-opts .uf-chk[b-wrzxuzmdm0] { font-weight: 600; cursor: pointer; }
.cb-exc-notused input[b-wrzxuzmdm0] { accent-color: #800000; }
.cb-exc-used input[b-wrzxuzmdm0]    { accent-color: #15803d; }

.cb-exc-btns .cb-exc-on[b-wrzxuzmdm0] {
    border-color: #800000;
    background: #fdf2f2;
}

.cb-exc-title[b-wrzxuzmdm0] {
    font-weight: 700;
    font-size: 13px;
    color: #1f2937;
}

.cb-exc-table tbody tr[b-wrzxuzmdm0] { cursor: default; }
.cb-exc-table .cb-r[b-wrzxuzmdm0] { text-align: right; white-space: nowrap; }
.cb-exc-table th.cb-r[b-wrzxuzmdm0] { text-align: right; }

.cb-exc-count[b-wrzxuzmdm0] {
    font-size: 13px;
    color: #374151;
}

.cb-exc-btns .cb-exc-on-used[b-wrzxuzmdm0] {
    border-color: #15803d;
    background: #f0fdf4;
}

/* Ledgers Used (Row Wise): dynamic RowID columns → horizontal + vertical scroll. */
.cb-exc-xwrap[b-wrzxuzmdm0] { overflow: auto; }

.cb-exc-used-table[b-wrzxuzmdm0] {
    width: max-content;
    min-width: 100%;
}

    .cb-exc-used-table th[b-wrzxuzmdm0],
    .cb-exc-used-table td[b-wrzxuzmdm0] { white-space: nowrap; }

    .cb-exc-used-table .cb-exc-name[b-wrzxuzmdm0] {
        white-space: normal;
        min-width: 220px;
        max-width: 320px;
    }

.cb-exc-btns .cb-exc-on-view[b-wrzxuzmdm0] {
    border-color: #376091;
    background: #eef4fb;
}

/* ── Group Tree button + popup — copied from MGroup.razor.css (CSS isolation:
   page-scoped styles don't cross pages). Node rows come from GroupTreeNode.razor.css. ── */
.mu-round-btn[b-wrzxuzmdm0] {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid #1a56a7;
    background: #1a56a7;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}

    .mu-round-btn:hover[b-wrzxuzmdm0] {
        background: #154488;
        border-color: #154488;
    }

.gt-overlay[b-wrzxuzmdm0] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 40px 16px;
    overflow-y: auto;
}

.gt-modal[b-wrzxuzmdm0] {
    width: 100%;
    max-width: 460px;
    max-height: 80vh;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.3);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.gt-header[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: #3d4f7d;
    color: #fff;
}

.gt-title[b-wrzxuzmdm0] {
    font-size: 15px;
    font-weight: 650;
}

.gt-close[b-wrzxuzmdm0] {
    background: transparent;
    border: none;
    color: #fff;
    width: 26px;
    height: 26px;
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0.9;
}

    .gt-close:hover[b-wrzxuzmdm0] {
        background: rgba(255, 255, 255, 0.15);
        opacity: 1;
    }

.gt-body[b-wrzxuzmdm0] {
    padding: 14px 16px;
    overflow: auto;
    border: 1px solid #dde3ed;
    margin: 10px;
    border-radius: 4px;
}

/* ── Tree list / connector lines — duplicated in GroupTreeNode.razor.css,
   see the file banner above for why. ── */
ul.gt-tree[b-wrzxuzmdm0] {
    list-style: none;
    margin: 0;
    padding-left: 18px;
}

ul.gt-tree-root[b-wrzxuzmdm0] {
    padding-left: 0;
}

ul.gt-tree:not(.gt-tree-root)[b-wrzxuzmdm0] {
    border-left: 1px dashed #aab6c9;
    margin-left: 9px;
}

.gt-node[b-wrzxuzmdm0] {
    position: relative;
}

.gt-row[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 3px 0;
    white-space: nowrap;
}

.gt-row-root[b-wrzxuzmdm0] {
    padding-bottom: 6px;
}

.gt-toggle-spacer[b-wrzxuzmdm0] {
    flex: 0 0 auto;
    display: inline-block;
    width: 14px;
    height: 14px;
}

.gt-label[b-wrzxuzmdm0] {
    font-size: 13px;
    color: #1f2937;
}

/* Assets/Income vs Liability/Expense text color — see GroupTreeNode.PlbsClass. */
.gt-plbs-blue[b-wrzxuzmdm0] {
    color: #1a56a7;
}

.gt-plbs-maroon[b-wrzxuzmdm0] {
    color: #800000;
}

/* Company-root row only — not used by GroupTreeNode. */
.gt-root-icon[b-wrzxuzmdm0] {
    flex: 0 0 auto;
    color: #c0392b;
    font-size: 14px;
}

.gt-root-label[b-wrzxuzmdm0] {
    font-weight: 700;
    letter-spacing: 0.02em;
}

/* Exception top line: BSPL Type, BSPL Name and report radios on one row. */
.cb-exc-top[b-wrzxuzmdm0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 24px;
    font-size: 13px;
    color: #374151;
}

    .cb-exc-top .cb-exc-opts[b-wrzxuzmdm0] { margin-left: auto; }

/* Two header rows (caption colspan + columns): stick the whole thead, not each th,
   so the rows don't stack on top of each other at top:0. */
.cb-lgf-wrap .cb-exc-table thead[b-wrzxuzmdm0] {
    position: sticky;
    top: 0;
    z-index: 2;
}

    .cb-lgf-wrap .cb-exc-table thead th[b-wrzxuzmdm0] { position: static; }

.cb-exc-table th.cb-exc-cap[b-wrzxuzmdm0] {
    text-align: center;
    font-weight: 700;
}

/* Header Save while creating a NEW CustBSPL: green (same as .uf-btn-save). */
.mu-btn.cb-btn-green[b-wrzxuzmdm0] {
    background: #15803d;
    border-color: #15803d;
    color: #fff;
}

    .mu-btn.cb-btn-green:hover:not(:disabled)[b-wrzxuzmdm0] {
        background: #116630;
        border-color: #116630;
    }

.cb-fmt-text[b-wrzxuzmdm0] {
    font-weight: 400;
    font-size: 12px;
    color: #4b5563;
}

/* Grid headers: pointer everywhere (they carry tooltips); H/B/I/U drawn as their format. */
.cb-table thead th[b-wrzxuzmdm0],
.cb-exc-table thead th[b-wrzxuzmdm0] { cursor: pointer; }

.cb-th-h[b-wrzxuzmdm0], .cb-th-b[b-wrzxuzmdm0], .cb-th-i[b-wrzxuzmdm0], .cb-th-u[b-wrzxuzmdm0] { font-family: 'Times New Roman', Times, serif; font-size: 15px; }
.cb-th-b[b-wrzxuzmdm0] { font-weight: 700; }
.cb-th-i[b-wrzxuzmdm0] { font-style: italic; }
.cb-th-u[b-wrzxuzmdm0] { text-decoration: underline; }

/* On-load hero (no layout selected): image scales to the grid area, never overflows. */
.cb-hero[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px;
    background: #f8fafc;
}

    .cb-hero img[b-wrzxuzmdm0] {
        max-width: 100%;
        max-height: calc(100% - 40px);
        object-fit: contain;
        border-radius: 8px;
    }

.cb-hero-hint[b-wrzxuzmdm0] {
    margin: 0;
    font-size: 13px;
    color: #475569;
    text-align: center;
}

/* ── SHOW: on-screen report — mirrors GAINSMAUI CUSTBSPL.xaml RptView ──
   White, Arial 12 black; grid "*,130" (+130 with previous year), ColumnSpacing 2;
   title padding 5,8,10,4; column header padding 10,4 (5,4,10,4 for 3-col), 11px bold;
   rows padding 5,3,10,3; amount rules 1px black, indented 15px, double = 2 × 1px with 2px gap. */
.cb-rv[b-wrzxuzmdm0] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    background: #fff;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000;
}

.cb-rv-sheet[b-wrzxuzmdm0] { min-width: 380px; }
.cb-rv-sheet.cb-rv-3[b-wrzxuzmdm0] { min-width: 510px; }

.cb-rv-title[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px 4px 5px;
}

.cb-rv-tline[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 2px;
}

.cb-rv-ttext[b-wrzxuzmdm0] {
    white-space: nowrap;
    text-align: left;
    min-height: 14px;
}

.cb-rv-rule[b-wrzxuzmdm0] {
    height: 1px;
    background: #000;
}

.cb-rv-dbl[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cb-rv-colhead[b-wrzxuzmdm0],
.cb-rv-row[b-wrzxuzmdm0] {
    display: grid;
    grid-template-columns: 1fr 130px;
    column-gap: 2px;
}

.cb-rv-3 .cb-rv-colhead[b-wrzxuzmdm0],
.cb-rv-3 .cb-rv-row[b-wrzxuzmdm0] { grid-template-columns: 1fr 130px 130px; }

.cb-rv-colhead[b-wrzxuzmdm0] { padding: 4px 10px; }
.cb-rv-3 .cb-rv-colhead[b-wrzxuzmdm0] { padding: 4px 10px 4px 5px; }

.cb-rv-ch[b-wrzxuzmdm0] {
    font-size: 11px;
    font-weight: 700;
    text-align: right;
}

.cb-rv-row[b-wrzxuzmdm0] { padding: 3px 10px 3px 5px; }

.cb-rv-desc[b-wrzxuzmdm0] {
    align-self: center;
    overflow-wrap: anywhere;
}

.cb-rv-amt[b-wrzxuzmdm0] {
    align-self: center;
    text-align: right;
    overflow-wrap: anywhere;
}

.cb-rv-nowrap[b-wrzxuzmdm0] { white-space: nowrap; }

.cb-rv-amtline[b-wrzxuzmdm0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-left: 15px;
}

.cb-rv-below[b-wrzxuzmdm0] { margin-top: 2px; }

.cb-rv-empty[b-wrzxuzmdm0] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #6b7280;
}

.cb-rpt-runs[b-wrzxuzmdm0] {
    display: flex;
    gap: 8px;
}
/* /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: -8px 16px 10px;
    }

    .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;
}

/* ── Standard (same as Item Print / ITB) ── */

/* Title weight */
.itb-page .bspl-title-block h1[b-5t38xzxzj5],
.itb-page .bspl-title-row h1[b-5t38xzxzj5],
.itb-page .bspl-title-left h1[b-5t38xzxzj5],
.itb-page h1[b-5t38xzxzj5] {
    font-weight: 300 !important;
}

/* FILTERS button — green when no filter applied, red (has-filter) when one is */
.itb-page .bspl-filter-toggle.filter-default[b-5t38xzxzj5] {
    background: #1ab99a !important;
    border-color: #1ab99a !important;
    color: #fff !important;
}

    .itb-page .bspl-filter-toggle.filter-default:hover[b-5t38xzxzj5] {
        background: #159c82 !important;
        border-color: #159c82 !important;
    }

    .itb-page .bspl-filter-toggle.filter-default i[b-5t38xzxzj5],
    .itb-page .bspl-filter-toggle.filter-default .bspl-filter-label[b-5t38xzxzj5] {
        color: #fff !important;
    }

.itb-error[b-5t38xzxzj5] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* Footer */
.itb-page .bspl-footer-right[b-5t38xzxzj5] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

@media (max-width: 900px) {
    .bspl-footer[b-5t38xzxzj5] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

/* Filter drawer — date boxes copied from ITB.razor.css, radius 3px */
.bspl-date-fld[b-5t38xzxzj5]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-5t38xzxzj5]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-5t38xzxzj5]  .gdp-wrap:focus,
    .bspl-date-fld[b-5t38xzxzj5]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-5t38xzxzj5]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-5t38xzxzj5]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-5t38xzxzj5]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-5t38xzxzj5],
.bspl-date-fld[b-5t38xzxzj5]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-5t38xzxzj5],
    .bspl-date-fld[b-5t38xzxzj5]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.gcp-icon[b-5t38xzxzj5] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.mu-drawer[b-5t38xzxzj5]  select,
.mu-drawer[b-5t38xzxzj5]  input[type="text"],
.mu-drawer[b-5t38xzxzj5]  .mu-input,
.mu-drawer[b-5t38xzxzj5]  .mu-btn {
    border-radius: 3px;
}

/* Border radius 3px on the grid card and its header row */
.itb-page .mu-card[b-5t38xzxzj5],
.itb-page .mu-table-wrap[b-5t38xzxzj5] {
    border-radius: 3px;
}

.dc-table thead th:first-child[b-5t38xzxzj5] {
    border-top-left-radius: 3px;
}

.dc-table thead th:last-child[b-5t38xzxzj5] {
    border-top-right-radius: 3px;
}
/* /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%;
}

    /* Header treatment matched to ITB's top section — CSS isolation scopes
   ITB.razor.css to that component only, so the same rules are mirrored
   here for Item Print's header. */

    /* ITEM PRINT title — same lighter weight as ITB's "ITEM TRIAL BALANCE". */
    .itb-page .bspl-title-block h1[b-zd2rawhdb0],
    .itb-page .bspl-title-row h1[b-zd2rawhdb0],
    .itb-page .bspl-title-left h1[b-zd2rawhdb0],
    .itb-page h1[b-zd2rawhdb0] {
        font-weight: 300 !important;
    }

    /* FILTERS button — green "default" state (no filter applied), red
   "has-filter" state (from shared chrome CSS) once a real filter is set.
   Mirrors ITB's .filter-default treatment. */
    .itb-page .bspl-filter-toggle.filter-default[b-zd2rawhdb0] {
        background: #1ab99a !important;
        border-color: #1ab99a !important;
        color: #fff !important;
    }

        .itb-page .bspl-filter-toggle.filter-default:hover[b-zd2rawhdb0] {
            background: #159c82 !important;
            border-color: #159c82 !important;
        }

        .itb-page .bspl-filter-toggle.filter-default i[b-zd2rawhdb0],
        .itb-page .bspl-filter-toggle.filter-default .bspl-filter-label[b-zd2rawhdb0] {
            color: #fff !important;
        }

    .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;
}

/* Footer, matched to ITB — CSS isolation scopes ITB.razor.css to that
   component only, so the page-size dropdown's caret positioning and the
   footer's mobile wrap are mirrored here. .bspl-footer/.bspl-foot-btn/
   .bspl-footer-count/.db-pagination/.db-page-btn/.mu-pagesize themselves are
   unscoped, from standard.css / masters-forms.css, so they already render
   correctly without any local override — only this positioning bit needs
   duplicating. */
/* Missed on the first pass — without this, .bspl-footer-right's children
   (the pager and the pagesize dropdown) have no flex row of their own to
   sit in and wrap onto separate lines instead of staying inline like
   ITB's footer. */
.itb-page .bspl-footer-right[b-zd2rawhdb0] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.itb-page .mu-pagesize-wrap[b-zd2rawhdb0] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.itb-page .mu-pagesize-caret[b-zd2rawhdb0] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: #767b82;
    pointer-events: none;
}

@media (max-width: 900px) {
    .bspl-footer[b-zd2rawhdb0] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

/* ── Print Statement view — laid out to match the legacy ItemPrint1.aspx
   print output (item banner, Opening/Total/Closing Balance rows) while
   staying a normal scrolling web view; real pagination for an actual
   browser print job is handled by ip-page-break's page-break-after,
   not by the legacy's manual row-height counters. ── */
.ip-print-wrap[b-zd2rawhdb0] {
    padding: 12px 16px;
}

.ip-stmt-header[b-zd2rawhdb0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: bold;
    padding: 4px 0 10px;
    border-bottom: 1px solid #e3e6ea;
    margin-bottom: 10px;
}

.ip-item-block[b-zd2rawhdb0] {
    margin-bottom: 18px;
}

    .ip-item-block.ip-page-break[b-zd2rawhdb0] {
        page-break-before: always;
    }

.ip-item-banner[b-zd2rawhdb0] {
    background: #e2e2e2;
    text-align: center;
    font-weight: bold;
    padding: 6px 8px;
    margin-bottom: 4px;
}

.ip-stmt-table[b-zd2rawhdb0] {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 10px;
    font-size: 12px;
}

    .ip-stmt-table thead th[b-zd2rawhdb0] {
        text-align: left;
        font-weight: bold;
        padding: 6px 8px;
        border-top: 1pt solid black;
        border-bottom: 1pt solid black;
    }

        .ip-stmt-table thead th.num[b-zd2rawhdb0] {
            text-align: right;
        }

    .ip-stmt-table tbody td[b-zd2rawhdb0] {
        padding: 5px 8px;
        vertical-align: middle;
    }

        .ip-stmt-table tbody td.num[b-zd2rawhdb0] {
            text-align: right;
            font-variant-numeric: tabular-nums;
        }

.ip-stmt-bold td[b-zd2rawhdb0] {
    font-weight: bold;
}

.ip-stmt-total td[b-zd2rawhdb0],
.ip-stmt-closing td[b-zd2rawhdb0] {
    border-bottom: 1pt solid grey;
}

.ip-screen-hide[b-zd2rawhdb0] {
    display: none;
}

@media print {
    .ip-screen-hide[b-zd2rawhdb0] {
        display: block !important;
    }

    .bspl-footer[b-zd2rawhdb0], .bspl-title-block[b-zd2rawhdb0], .db-tabbar[b-zd2rawhdb0], .mu-drawer[b-zd2rawhdb0], .mu-drawer-overlay[b-zd2rawhdb0] {
        display: none !important;
    }
}

/* ── Legacy option groups in the filter drawer (Balancing / Show-Hide /
   Header / Footer) — one option per line, like ItemPrint1.aspx. ── */
.ip-opt-group[b-zd2rawhdb0] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

    .ip-opt-group .le-chk input:disabled + *[b-zd2rawhdb0],
    .ip-opt-group .le-chk:has(input:disabled)[b-zd2rawhdb0] {
        opacity: .55;
    }

/* Print Statement footer — Printed By / Print Date / Powered By GAINS */
.ip-stmt-footer[b-zd2rawhdb0] {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 12px;
    padding-top: 6px;
    border-top: 1px solid #e3e6ea;
    font-size: 10px;
    color: #64748b;
}


/* ── Gap fix — same spacing as ITB (tab bar pulled up, card margin 10px) ── */
.db-tabbar[b-zd2rawhdb0] {
    padding: 7px 16px 6px;
    margin-top: -16px;
    margin-bottom: -19px;
}

.itb-page .mu-card[b-zd2rawhdb0] {
    margin: 10px 16px;
}

.itb-error[b-zd2rawhdb0] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: #fdf3f3;
    border-left: 4px solid #c0392b;
    color: #c0392b;
    font-size: 13px;
    flex-shrink: 0;
}

/* ── Filter drawer — copied from ITB.razor.css ── */
.bspl-date-fld[b-zd2rawhdb0]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-zd2rawhdb0]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-zd2rawhdb0]  .gdp-wrap:focus,
    .bspl-date-fld[b-zd2rawhdb0]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-zd2rawhdb0]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-zd2rawhdb0]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-zd2rawhdb0]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-zd2rawhdb0],
.bspl-date-fld[b-zd2rawhdb0]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-zd2rawhdb0],
    .bspl-date-fld[b-zd2rawhdb0]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.gcp-icon[b-zd2rawhdb0] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.itb-section-hdr[b-zd2rawhdb0] {
    background: #1ab99a;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 7px 14px;
    margin: 14px -16px 8px;
}

/* Border radius 3px on all drawer controls */
.mu-drawer[b-zd2rawhdb0]  select,
.mu-drawer[b-zd2rawhdb0]  input[type="text"],
.mu-drawer[b-zd2rawhdb0]  .mu-input,
.mu-drawer[b-zd2rawhdb0]  .mu-btn {
    border-radius: 3px;
}

/* Print Statement company header — logo | name + regn | address */
.ip-co-header[b-zd2rawhdb0] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 4px 0 10px;
    font-size: 12px;
}

.ip-co-logo-box[b-zd2rawhdb0] {
    flex: 0 0 240px;
    min-height: 28px;
}

.ip-co-logo[b-zd2rawhdb0] {
    max-width: 240px;
    max-height: 60px;
    object-fit: contain;
}

.ip-co-mid[b-zd2rawhdb0] {
    flex: 1;
    text-align: center;
}

.ip-co-name[b-zd2rawhdb0] {
    font-weight: bold;
    text-transform: uppercase;
}

.ip-co-addr[b-zd2rawhdb0] {
    flex: 0 1 320px;
    text-align: right;
}

/* Date column: keep dd/MMM/yyyy on one line (was wrapping to 2-3 lines) */
.ip-stmt-table tbody td:first-child[b-zd2rawhdb0] {
    white-space: nowrap;
}
/* /Components/Pages/Reports/PosReport.razor.rz.scp.css */
/* PosReport — 10px gap from the filter bar and from the left/right edges. */
.rd-scroll[b-1fuqykslkt] {
    padding: 10px;
}

.rd-grid-layout[b-1fuqykslkt] {
    gap: 10px;
}
/* /Components/Pages/Reports/Statistics.razor.rz.scp.css */
/* Statistics — scoped. Literal colours (scoped CSS can't rely on :root tokens). */
.st-page[b-dcblz1lx0p] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: #f5f7f9;
    font-size: 13px;
    color: #1f2a37;
}

/* ── Header ── */
.st-header[b-dcblz1lx0p] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    padding: 12px 18px;
    background: #ffffff;
    border-bottom: 1px solid #e3e8ee;
}

/* Title — same look as BSPL ("BALANCE SHEET" / "As on …") */
.st-title-block[b-dcblz1lx0p] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.st-title[b-dcblz1lx0p] {
    margin: 0;
    font-size: 22px;
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: #1AB99A;
}

.st-subtitle[b-dcblz1lx0p] {
    font-size: 12.5px;
    color: #8a949e;
}

.st-filters[b-dcblz1lx0p] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.st-field[b-dcblz1lx0p] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

    .st-field label[b-dcblz1lx0p] {
        font-size: 11px;
        color: #6b7785;
    }

/* ── Buttons ── */
.st-btn[b-dcblz1lx0p] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 14px;
    border: 1px solid #d5dce3;
    border-radius: 6px;
    background: #ffffff;
    color: #1f2a37;
    font-size: 12.5px;
    cursor: pointer;
}

    .st-btn:hover:not(:disabled)[b-dcblz1lx0p] {
        background: #f0f3f6;
    }

    .st-btn:disabled[b-dcblz1lx0p] {
        opacity: .6;
        cursor: default;
    }

.st-btn-primary[b-dcblz1lx0p] {
    background: #1AB99A;
    border-color: #1AB99A;
    color: #ffffff;
}

    .st-btn-primary:hover:not(:disabled)[b-dcblz1lx0p] {
        background: #16a387;
    }

/* Footer export icons — same as BSPL (green Excel, red PDF, icon only) */
.st-foot-btn[b-dcblz1lx0p] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px 4px;
    border: none;
    background: transparent;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

    .st-foot-btn.xls[b-dcblz1lx0p] { color: #1e7e45; }
    .st-foot-btn.pdf[b-dcblz1lx0p] { color: #dc3545; }

    .st-foot-btn:hover:not(:disabled)[b-dcblz1lx0p] { opacity: .8; }

    .st-foot-btn:disabled[b-dcblz1lx0p] {
        opacity: .5;
        cursor: default;
    }

/* ── Alert ── */
.st-alert[b-dcblz1lx0p] {
    flex-shrink: 0;
    margin: 10px 18px 0;
    padding: 8px 12px;
    border: 1px solid #f3c2bd;
    border-radius: 6px;
    background: #fdf0ee;
    color: #b03a2e;
    font-size: 12.5px;
}

/* ── Body ── */
.st-body[b-dcblz1lx0p] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 14px 18px;
}

.st-empty[b-dcblz1lx0p] {
    padding: 40px 0;
    text-align: center;
    color: #6b7785;
}

.st-kpis[b-dcblz1lx0p] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 14px;
}

.st-kpi[b-dcblz1lx0p] {
    padding: 12px 14px;
    background: #ffffff;
    border: 1px solid #e3e8ee;
    border-left: 3px solid #1AB99A;
    border-radius: 8px;
}

.st-kpi-lbl[b-dcblz1lx0p] {
    font-size: 11.5px;
    color: #6b7785;
}

.st-kpi-val[b-dcblz1lx0p] {
    margin-top: 4px;
    font-size: 20px;
    font-weight: 600;
}

.st-grid[b-dcblz1lx0p] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 14px;
    align-items: start;
}

.st-card[b-dcblz1lx0p] {
    background: #ffffff;
    border: 1px solid #e3e8ee;
    border-radius: 8px;
    overflow: hidden;
}

.st-card-hdr[b-dcblz1lx0p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    background: #f7f9fb;
    border-bottom: 1px solid #e3e8ee;
    font-weight: 600;
}

    .st-card-hdr i[b-dcblz1lx0p] {
        color: #1AB99A;
    }

.st-table[b-dcblz1lx0p] {
    width: 100%;
    border-collapse: collapse;
}

    .st-table td[b-dcblz1lx0p] {
        padding: 7px 12px;
        border-bottom: 1px solid #eef1f4;
    }

    .st-table tr:last-child td[b-dcblz1lx0p] {
        border-bottom: none;
    }

    .st-table tr:hover td[b-dcblz1lx0p] {
        background: #f7fbfa;
    }

.st-num[b-dcblz1lx0p] {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
}

.st-zero[b-dcblz1lx0p] {
    color: #a0aab4;
    font-weight: 400;
}

.st-muted[b-dcblz1lx0p] {
    color: #6b7785;
    font-size: 12px;
}

/* ── Footer ── */
.st-footer[b-dcblz1lx0p] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 18px;
    background: #ffffff;
    border-top: 1px solid #e3e8ee;
}

.st-exports[b-dcblz1lx0p] {
    display: flex;
    gap: 8px;
}

@media (max-width: 700px) {
    .st-title[b-dcblz1lx0p] {
        font-size: 16px;
    }

    .st-subtitle[b-dcblz1lx0p] {
        font-size: 11px;
    }

    .st-header[b-dcblz1lx0p] {
        flex-direction: column;
        align-items: stretch;
    }

    .st-grid[b-dcblz1lx0p] {
        grid-template-columns: 1fr;
    }
}

@media print {
    .st-filters[b-dcblz1lx0p], .st-footer[b-dcblz1lx0p] {
        display: none !important;
    }
}
/* /Components/Pages/Reports/UserLog.razor.rz.scp.css */
/* User Log — scoped extras only. Page chrome (title block, drawer, grid card,
   table, pager, tabs) comes from masters-forms.css / standard.css. */

.ul-radios[b-8hwjfb5l8c] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 22px;
    padding: 4px 2px;
}

.ul-radio[b-8hwjfb5l8c] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #475569;
    cursor: pointer;
}

    .ul-radio input[b-8hwjfb5l8c] {
        accent-color: #1ab394;
        cursor: pointer;
    }

.ul-alert[b-8hwjfb5l8c] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border: 1px solid #f5c2c7;
    border-radius: 6px;
    background: #fdf0f1;
    color: #b02a37;
    font-size: 13px;
}

.ul-lbl[b-8hwjfb5l8c] {
    display: block;
    margin-bottom: 3px;
    font-size: 11px;
    color: #6b7785;
}

/* Weekday checkboxes in the drawer */
.ul-days[b-8hwjfb5l8c] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.ul-day[b-8hwjfb5l8c] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #334155;
    cursor: pointer;
}

    .ul-day input[b-8hwjfb5l8c] {
        accent-color: #1ab394;
    }

/* Summary matrices can be wide — the table wrap already scrolls; keep columns compact */
.ul-summary th[b-8hwjfb5l8c],
.ul-summary td[b-8hwjfb5l8c] {
    white-space: nowrap;
}

.ul-first[b-8hwjfb5l8c] {
    text-align: left;
}

.ul-num[b-8hwjfb5l8c] {
    text-align: right;
}

.ul-dow[b-8hwjfb5l8c] {
    color: #8a949e;
    font-size: 11px;
}

/* Total row — same as ARAP Pivot's Grand Total: blue bar (same as grid header),
   white bold, pinned to the bottom of the scrolling grid. Selector kept at
   3 classes to beat the shared ".mu-table tfoot td" light footer rule. */
.mu-table.ul-summary tfoot tr.ul-total td[b-8hwjfb5l8c] {
    position: sticky;
    bottom: 0;
    z-index: 1;
    padding: 8px 12px;
    background: #306B9C;
    color: #fff;
    font-weight: 700;
    border-top: none;
}

/* Page fill, card spacing and radius come from ms-page (masters-forms.css),
   same as Sales Person — no overrides here. */
.ul-foot-left[b-8hwjfb5l8c] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.db-page-current[b-8hwjfb5l8c] {
    font-size: 12px;
    color: #555;
    padding: 5px 4px;
}

/* Tabs / radios / alert line up with the card's 16px side margin */
.ul-page .le-toptabs[b-8hwjfb5l8c] {
    margin: 6px 16px 0;
    padding: 0;
}

.ul-page .ul-radios[b-8hwjfb5l8c] {
    margin: 6px 16px 0;
    padding: 0;
}

.ul-page .ul-alert[b-8hwjfb5l8c] {
    margin: 6px 16px 0;
}

/* card sits close under the tabs / radios */
.ul-page .mu-card[b-8hwjfb5l8c] {
    margin-top: 6px;
}

/* Filters button — classic Gains green, same as Sales Person's .sr-filters-btn */
.mu-btn.ul-filters-btn[b-8hwjfb5l8c] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ul-filters-btn:hover[b-8hwjfb5l8c] {
        background: #23923e;
        border-color: #23923e;
    }

/* Summary grid fills the scroll area; the filler row takes the leftover height so the
   Total footer is always pinned to the bottom of the grid, not right under the last row. */
.mu-table.ul-summary[b-8hwjfb5l8c] {
    height: 100%;
}

    .mu-table.ul-summary tbody tr.ul-fill[b-8hwjfb5l8c] {
        height: 100%;
    }

        .mu-table.ul-summary tbody tr.ul-fill td[b-8hwjfb5l8c] {
            padding: 0;
            border: none;
        }

/* ── Filter drawer — same look as QG (Transactions/QG.razor.css) ── */
.mu-drawer-body > .mu-drawer-section:first-child[b-8hwjfb5l8c] {
    margin-top: -18px;
}

.ul-date-fld[b-8hwjfb5l8c]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ul-date-fld[b-8hwjfb5l8c]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ul-date-fld[b-8hwjfb5l8c]  .gdp-wrap:focus,
    .ul-date-fld[b-8hwjfb5l8c]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ul-date-fld[b-8hwjfb5l8c]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ul-date-fld[b-8hwjfb5l8c]  .gdp-icon {
    color: #1a56a7;
}

.ul-date-fld[b-8hwjfb5l8c]  .gdp-value {
    font-weight: 400;
}

/* Clear-date icon button (To row) */
.gcp-trigger[b-8hwjfb5l8c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .gcp-trigger:hover[b-8hwjfb5l8c] {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.gcp-icon[b-8hwjfb5l8c] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}
/* /Components/Pages/Reports/Voucher/TaxInvoice.razor.rz.scp.css */
/* CSS for TaxInvoice component */
/* /Components/Pages/SalesRep/ClientsVisited.razor.rz.scp.css */
/* =====================================================================
   ClientsVisited.razor.css
   Same approach as ITB.razor.css: header (bspl-*), grid (mu-*), footer +
   pager (bspl-footer / db-pagination) all come from the shared masters-forms.css + standard.css. Only the
   page-shell pinning ITB does for .itb-page lives here, scoped to .cv-page.
   ===================================================================== */

.cv-page[b-ycaj65psu2] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    /* Title weight — same override ITB applies for its page. */
    .cv-page .bspl-title-block h1[b-ycaj65psu2],
    .cv-page h1[b-ycaj65psu2] {
        font-weight: 300 !important;
    }

    /* Filter strip snug under the title block — same position/tweak as ITB's .db-tabbar. */
    .cv-page .cv-toptabs[b-ycaj65psu2] {
        padding: 7px 16px 6px;
        margin-top: -16px;
        margin-bottom: -19px;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
    }

.cv-fbar-date[b-ycaj65psu2] {
    width: 300px;
    max-width: 100%;
}

.cv-fbar-led[b-ycaj65psu2] {
    width: 340px;
    max-width: 100%;
}

/* GO button — pinned to the right end of the filter strip. */
.cv-go-btn[b-ycaj65psu2] {
    margin-left: auto;
    height: 32px;
    padding: 0 10px;
    border: 1px solid #1a56a7;
    border-radius: 3px;
    background: #1a56a7;
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    letter-spacing: 0.5px;
    cursor: pointer;
    transition: background 0.12s;
}

    .cv-go-btn:hover:not(:disabled)[b-ycaj65psu2] {
        background: #0f3d82;
    }

    .cv-go-btn:disabled[b-ycaj65psu2] {
        opacity: 0.6;
        cursor: default;
    }

/* Ledger autofill input — master textbox look (it used to inherit this from .mu-fld). */
.cv-fbar-led[b-ycaj65psu2]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
    background: #fff;
    outline: none;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .cv-fbar-led[b-ycaj65psu2]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

.cv-page .mu-card[b-ycaj65psu2] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 10px 16px;
}

.cv-page .mu-table-wrap[b-ycaj65psu2] {
    flex: 1;
    overflow: auto;
    min-height: 200px;
}

/* Purpose / Comments are free text — shared .mu-table td is nowrap. */
.cv-page .mu-table tbody td.cv-wrap[b-ycaj65psu2] {
    white-space: normal;
    word-break: break-word;
}

@media (max-width: 767px) {
    .cv-page .mu-card[b-ycaj65psu2] {
        margin: 0 10px;
    }
}

@media (max-width: 900px) {
    .bspl-footer[b-ycaj65psu2] {
        flex-wrap: wrap;
        gap: 8px;
    }
}

/* Filter strip date box — ITB keeps these in ITB.razor.css (scoped, so not
   global); same values as ITB/BSPL so the picker looks identical. */
.bspl-date-fld[b-ycaj65psu2]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-ycaj65psu2]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-ycaj65psu2]  .gdp-wrap:focus,
    .bspl-date-fld[b-ycaj65psu2]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

.bspl-date-fld[b-ycaj65psu2]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-ycaj65psu2]  .gdp-value {
    font-weight: 400;
}

.bspl-date-fld .gcp-trigger[b-ycaj65psu2] {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 3px;
    background: #fff;
}

    .bspl-date-fld .gcp-trigger:hover[b-ycaj65psu2] {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Date row: picker box + small square C button side by side. */
.bspl-date-fld .gdp-field-row[b-ycaj65psu2] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Greyed date text = no date filter applied (GlobalDatepicker can't be empty). */
.cv-nodate[b-ycaj65psu2]  .gdp-value {
    color: #94a3b8;
}

/* Ledger "L" search button — copied from FrmGST / QLedger (.ql-led-row / .ql-led-btn).
   LedgerAutofill is a child component → ::deep to size its root so the button sits beside it. */
.ql-led-row[b-ycaj65psu2] {
    display: flex;
    gap: 6px;
}

    .ql-led-row[b-ycaj65psu2] >  *:first-child {
        flex: 1;
        min-width: 0;
    }

.ql-led-btn[b-ycaj65psu2] {
    flex: 0 0 36px;
    border-radius: 3px;
    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-ycaj65psu2] {
        background: #0f3d82;
    }
/* /Components/Pages/SalesRep/LogVisit.razor.rz.scp.css */
/* LogVisit — tokens redeclared locally (scoped CSS doesn't inherit page tokens). */
.lv-page[b-ye1r3huism] {
    --lv-teal: #1ab394;
    --lv-teal-dark: #18a689;
    --lv-ink: #333;
    --lv-muted: #999;
    --lv-line: #e7eaec;
    --lv-surface: #ffffff;

    display: flex;
    flex-direction: column;
    height: calc(100dvh - 60px);
    min-height: 460px;
    background: #f3f3f4;
}

/* ── Title block parity with BSPL ─────────────────────────────────
   BSPL's heading/subtitle inherit font + colour from .bspl-page
   (Open Sans 13px #333) — re-establish that context here. */
.lv-page .bspl-title-block[b-ye1r3huism] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

    .lv-page .bspl-title-block h1[b-ye1r3huism],
    .lv-page .bspl-title-block .bspl-subtitle[b-ye1r3huism] {
        font-family: inherit;
    }

/* ── Button bar (BSPL btnbar look: white strip, pill buttons, teal) ── */
.lv-btnbar[b-ye1r3huism] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px;
    background: var(--lv-surface);
    border-bottom: 1px solid var(--lv-line);
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}

.lv-btnbar-group[b-ye1r3huism] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.lv-dep-btn[b-ye1r3huism] {
    height: 30px;
    padding: 0 12px;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid var(--lv-teal);
    border-radius: 4px;
    background: var(--lv-surface);
    color: var(--lv-teal);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .03em;
    cursor: pointer;
    transition: background .15s, color .15s;
}

    .lv-dep-btn:hover:not(:disabled)[b-ye1r3huism],
    .lv-dep-btn.active[b-ye1r3huism] {
        background: var(--lv-teal);
        color: #fff;
    }

    .lv-dep-btn:disabled[b-ye1r3huism] {
        opacity: .45;
        cursor: default;
    }

.lv-bar-select[b-ye1r3huism] {
    height: 30px;
    padding: 0 8px;
    border: 1px solid var(--lv-line);
    border-radius: 4px;
    background: var(--lv-surface);
    color: var(--lv-ink);
    font-size: 12px;
    font-weight: 600;
    max-width: 220px;
}

.lv-bar-info[b-ye1r3huism] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lv-muted);
    letter-spacing: .03em;
}

.lv-dep-btn:focus-visible[b-ye1r3huism],
.lv-bar-select:focus-visible[b-ye1r3huism],
.lv-stop:focus-visible[b-ye1r3huism] {
    outline: 2px solid var(--lv-teal);
    outline-offset: 2px;
}

/* ── Map ── */
.lv-map-wrap[b-ye1r3huism] {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    margin: 12px 16px;
    border: 1px solid var(--lv-line);
    border-radius: 4px;
    overflow: hidden;
    background: #eef2f1;
}

.lv-map[b-ye1r3huism] {
    position: absolute;
    inset: 0;
}

/* Stop-route button — bottom-right, like MAUI StopButton */
.lv-stop[b-ye1r3huism] {
    position: absolute;
    right: 16px;
    bottom: 24px;
    z-index: 5;
    width: 50px;
    height: 50px;
    border: 0;
    border-radius: 50%;
    background: var(--lv-teal);
    opacity: .85;
    color: #fff;
    font-size: 1.1rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(26, 179, 148, .35);
}

.lv-stop:hover[b-ye1r3huism] { opacity: 1; }

.lv-overlay[b-ye1r3huism] {
    position: absolute;
    inset: 0;
    z-index: 6;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: rgba(255, 255, 255, .7);
    color: var(--lv-ink);
    font-size: .9rem;
}

.lv-spinner[b-ye1r3huism] {
    width: 32px;
    height: 32px;
    border: 3px solid #d1f2eb;
    border-top-color: var(--lv-teal);
    border-radius: 50%;
    animation: lv-spin-b-ye1r3huism .8s linear infinite;
}

@keyframes lv-spin-b-ye1r3huism { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .lv-spinner[b-ye1r3huism] { animation-duration: 2.4s; }
}

.lv-msg[b-ye1r3huism] {
    position: absolute;
    top: 12px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    max-width: calc(100% - 24px);
    padding: 8px 14px;
    border-radius: 8px;
    background: var(--lv-surface);
    border: 1px solid var(--lv-line);
    color: var(--lv-ink);
    font-size: .85rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}

@media (max-width: 600px) {
    .lv-page[b-ye1r3huism] { height: calc(100dvh - 56px); }
    .lv-btnbar[b-ye1r3huism] { padding: 6px 10px; }
    .lv-bar-select[b-ye1r3huism] { max-width: 150px; }
    .lv-map-wrap[b-ye1r3huism] { margin: 8px; }
}
/* /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.
   ===================================================================== */

/* FIX: .bspl-title-block used to be bumped to z-index 1300 here so the
   AR/AP + FILTERS buttons stayed above the drawer (1200). That also put the
   page header ON TOP of the open drawer, hiding the drawer's own dark
   "AR/AP (Filters)" header and its top rows. Removed — the drawer now opens
   over the full page height exactly like DocumentGrid; clicking outside it
   (overlay) or × closes it. */

/* Modals (Ledger picker, Send Mail) use the shared .uf-overlay/.uf-modal
   chrome (z-index 1000 globally). Kept above the filter drawer (1200) since
   the Ledger picker opens from inside it. */
.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;
    /* Same spacing as QG.razor.css's .qg-body — card no longer sits flush
       against the title block / page edges. */
    padding: 0 10px;
}

    .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;
}

/* Every ARAP grid header: #306B9C blue, white text (overrides the global
   masters-forms.css #4b5563 gray). Sticky pin kept. */
.mu-table thead th[b-hh3n09puyr] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #306B9C;
    color: #fff;
    border-bottom-color: #285a84;
}

.arap-nowrap[b-hh3n09puyr] {
    white-space: nowrap;
}

.arap-ledger[b-hh3n09puyr] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Clickable ledger names (Clientwise → ageing popup, Invoices → QLedger). */
.arap-ledger-link[b-hh3n09puyr] {
    color: inherit; /* plain black like the other grids' ledger names — still clickable */
    cursor: pointer;
}

    .arap-ledger-link:hover[b-hh3n09puyr] {
        text-decoration: none; /* no hover underline on ledger/voucher links */
    }

/* ── Clientwise ledger-click ageing popup (legacy #myModal5) ── */
.arap-la-modal[b-hh3n09puyr] {
    width: min(520px, calc(100vw - 32px));
}

.arap-la-head[b-hh3n09puyr] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 14px 20px;
    background: #f8fafc;
    font-weight: 700;
    font-size: 13px;
    color: #1a2537;
}

.arap-la-ql[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 700;
    text-decoration: underline;
}

.arap-la-body[b-hh3n09puyr] {
    max-height: 70vh;
    overflow: auto;
}

.arap-la-table .arap-la-total td[b-hh3n09puyr] {
    font-weight: 700;
}

.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: none; /* no hover underline on ledger/voucher links */
    }

.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-spin[b-hh3n09puyr] {
    color: #16a085;
    font-size: 14px;
}

.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;
}

/* ── Pagination pill — Daybook teal instead of masters-forms.css's blue,
   scoped to this page only, same as QG.razor.css's
   ".qg-footer-fixed .mu-pagenum.active" override (square, not circle). ── */
.arap-footer-fixed .mu-pagenum.active[b-hh3n09puyr],
.arap-footer-fixed .mu-pagenum.active:hover[b-hh3n09puyr] {
    background: #16a085;
    border-color: #16a085;
    box-shadow: 0 1px 3px rgba(22,160,133,.35);
}

.arap-footer-fixed .mu-nav:hover:not(:disabled)[b-hh3n09puyr],
.arap-footer-fixed .mu-pagenum:hover[b-hh3n09puyr] {
    background: #e8f5f0;
    border-color: #16a085;
    color: #16a085;
}

/* 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-hh3n09puyr] {
    font-size: inherit;
    color: inherit;
}

/* ── 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: rgb(26, 185, 154); /* same teal as the row checkbox (was #22c55e / rgb(34,197,94)) */
    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 sub-tabs (CLIENTWISE/INVOICES/PIVOT + DETAILS/ABRIDGED/
   SEARCH) — same .qg-sections / .qg-section bar as QG.razor.css (Daybook's
   standard.css .db-tabbar / .db-tab formatting), sitting directly under the
   title block. -16px pull-up cancels .mu-page's 16px flex gap, same as QG. ── */
.qg-sections[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 4px;
    background: #fff;
    border-top: 1px solid #e7eaec;
    border-bottom: 1px solid #e7eaec;
    padding: 8px 16px 6px;
    flex-shrink: 0;
    margin-top: -16px;
    /* Daybook's bar sits inside .db-wrap (standard.css: 'Segoe UI') — same
       font here so button text/height match Daybook exactly. */
    font-family: 'Segoe UI', sans-serif;
    line-height: normal;
}

/* Gap between the CLIENTWISE/INVOICES/PIVOT cluster and DETAILS/ABRIDGED/SEARCH. */
.qg-sections-gap[b-hh3n09puyr] {
    width: 20px;
}

.qg-section[b-hh3n09puyr] {
    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;
    font-family: inherit;
    white-space: nowrap;
    transition: all .12s;
}

    .qg-section:hover[b-hh3n09puyr] {
        background: #f5f5f5;
    }

    .qg-section.active[b-hh3n09puyr] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

.arap-ls-grid[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: minmax(0, 1fr);
    gap: 20px;
    padding: 20px;
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 0;
}

.arap-ls-panel[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    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] {
    flex-shrink: 0;
    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] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

/* Total row pinned to the bottom of the scrolling panel body (same trick
   as .arap-ap-table's Page Total): background on the td so rows scrolling
   underneath don't show through. */
.arap-ls-panel-body tfoot .arap-party-total td[b-hh3n09puyr] {
    position: sticky;
    bottom: 0;
    z-index: 1;
    background: #233645;
}

@media (max-width: 900px) {
    /* Stacked panels: let the grid scroll as a whole, each panel capped. */
    .arap-ls-grid[b-hh3n09puyr] {
        grid-template-columns: 1fr;
        grid-template-rows: none;
        overflow: auto;
    }

    .arap-ls-panel-body[b-hh3n09puyr] {
        max-height: 480px;
    }
}

/* ── 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] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    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;
}

/* Pivot UnadjBal column — maroon (negatives too, over the red .cr class). */
.arap-pivot-table td.arap-pv-unadj[b-hh3n09puyr],
.arap-pivot-table td.arap-pv-unadj.cr[b-hh3n09puyr] {
    color: #800000;
}

.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: 52px; /* a little wider (was 42px) */
    padding: 3px 12px;
    border-radius: 0; /* square corners (was 4px rounded) */
    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] {
    cursor: pointer; /* was a hard-coded not-allowed (🚫) cursor + 0.7 opacity from when the button was unwired */
    padding: 5px 14px;
    font-size: 13px;
    border-radius: 6px;
}

    /* Nothing ticked yet — just dimmed, no 🚫 cursor icon. */
    .arap-ap-pay-btn:disabled[b-hh3n09puyr] {
        opacity: 0.6;
        cursor: default;
    }

/* 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: 400; /* not bold */
    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: #0578a8 !important;
}

.arap-ap-stat.cleared[b-hh3n09puyr] {
    background: #0094cf !important;
}

.arap-ap-stat.due[b-hh3n09puyr] {
    background: #efb51d !important;
}

.arap-ap-stat.ytd[b-hh3n09puyr] {
    background: #da3138 !important;
}

.arap-ap-stat.unadj[b-hh3n09puyr] {
    background: #50af42 !important;
}

/* 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: 400; /* grid values normal — only header + Page Total are bold */
    color: #1a2537;
}

.arap-ap-table .arap-ap-sub[b-hh3n09puyr] {
    font-weight: 400;
    color: #1a2537;
}

/* VNum / Type / Due Days badge carry their own 500-600 weight elsewhere —
   normal inside this grid too. */
.arap-ap-table tbody .arap-vnum[b-hh3n09puyr],
.arap-ap-table tbody .arap-vtype[b-hh3n09puyr],
.arap-ap-table tbody .arap-dd-badge[b-hh3n09puyr] {
    font-weight: 400;
}

/* 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: 400;
}

/* 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;
}

/* Checkbox column is only 32px — with the table's normal cell padding the
   15px checkbox overflowed and the table-wide text-overflow: ellipsis drew
   a stray "…" (two black dots) after every checkbox. Clip instead of
   ellipsis and trim the side padding for this column only. */
.arap-ap-table .arap-ap-chk[b-hh3n09puyr] {
    text-overflow: clip;
    padding-left: 4px;
    padding-right: 4px;
}

/* 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] {
    /* Drawn by CSS instead of the browser's native renderer so the colours
       are exact: checked = teal rgb(26,185,154) fill + white tick. */
    appearance: none;
    -webkit-appearance: none;
    width: 15px;
    height: 15px;
    margin: 0;
    border: 1px solid #9aa5b1;
    border-radius: 3px;
    background: #fff;
    vertical-align: middle;
    cursor: pointer;
}

    .arap-ap-table .arap-ap-chk input[type="checkbox"]:checked[b-hh3n09puyr] {
        background: rgb(26, 185, 154) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='rgb(255,255,255)' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px 12px no-repeat;
        border-color: rgb(26, 185, 154);
        color: rgb(255, 255, 255);
    }

    .arap-ap-table .arap-ap-chk input[type="checkbox"]:focus-visible[b-hh3n09puyr] {
        outline: 2px solid rgba(26, 185, 154, .35);
        outline-offset: 1px;
    }

/* 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;
}

/* Invoices Type/Date cell — type (SLS/PUR) centred above the date. */
.arap-ap-typedate[b-hh3n09puyr] {
    display: inline-flex;
    align-items: center;
}

.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: 66px; /* a little wider (was 54px) */
    padding: 2px 16px;
    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;
    }
}

/* ── Grid footer (Total rows in <tfoot>) — same look as QG.razor.css's
   ".mu-table tfoot td": light #fbfcfe, dark text, 2px top rule, bold,
   negatives maroon. Overrides the dark-navy .arap-party-total bar for
   tfoot rows only (Party-wise subtotal bars inside tbody keep theirs).
   Last in file so it wins over the sticky Total rules above. ── */
.mu-table tfoot tr.arap-party-total[b-hh3n09puyr],
.mu-table tfoot tr.arap-party-total td[b-hh3n09puyr],
.mu-table tfoot td[b-hh3n09puyr] {
    background: #e8e8e8; /* QLedger footer bar (.ql-body .mu-table tfoot td) */
    color: #1a2537;
    font-weight: 700;
}

.mu-table tfoot td[b-hh3n09puyr] {
    padding: 11px 14px;
    border-top: 2px solid #d0d0d0;
    position: sticky;
    bottom: 0;
    z-index: 3;
}

    .mu-table tfoot td.num[b-hh3n09puyr] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

    .mu-table tfoot td.cr[b-hh3n09puyr] {
        color: #800000;
    }

/* ── Invoices stat strip — VAmount / Cleared / Due / Yet to Due / Unadjusted
   stay one joined, square-cornered strip (no gap between them), but get
   breathing room above/below instead of being glued to the grid header.
   Same colours (per .arap-ap-stat.* above); larger value text, strip
   shadow, slight brighten on hover. Wraps on narrow screens. ── */
.arap-ap-stats[b-hh3n09puyr] {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    width: fit-content;
    max-width: 100%;
    margin: 8px 0 10px; /* no side margin — left edge lines up with the grid header */
    padding: 0;
    background: transparent;
    border-radius: 0;
    overflow: hidden;
    box-shadow: 0 2px 6px rgba(15, 23, 42, 0.14);
}

.arap-ap-stat[b-hh3n09puyr] {
    height: auto;
    min-width: 150px;
    padding: 4px 14px; /* shorter strip (was 8px 16px) */
    gap: 1px;
    line-height: 1.15;
    border-radius: 0;
    transition: filter 0.12s ease;
    cursor: default;
}

    .arap-ap-stat:hover[b-hh3n09puyr] {
        filter: brightness(1.08);
    }

.arap-ap-stat-lbl[b-hh3n09puyr] {
    font-size: 11px;
    letter-spacing: 0.3px;
    text-transform: none; /* labels as written (VAmount, Cleared, Due…), not ALL CAPS */
}

.arap-ap-stat-val[b-hh3n09puyr] {
    font-size: 12.5px;
    font-weight: 400; /* not bold */
    font-variant-numeric: tabular-nums;
}

@media (max-width: 640px) {
    .arap-ap-stat[b-hh3n09puyr] {
        flex: 1 1 50%;
        min-width: 0;
    }
}

/* Count badge on the FILTERS button (button itself turns red via the global
   .bspl-filter-toggle.has-filter) — white pill, red number. */
.arap-filter-count[b-hh3n09puyr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    margin-left: 4px;
    border-radius: 9px;
    background: #fff;
    color: #d9534f;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

/* ═════════════════════════════════════════════════════════════════════
   FILTER DRAWER — master look (masters-forms.css)
   ═════════════════════════════════════════════════════════════════════ */

/* First bar (FILTERS) flush under the drawer header — cancels
   .mu-drawer-body's 18px top padding for that bar only. */
.mu-drawer-body > .mu-drawer-section:first-child[b-hh3n09puyr] {
    margin-top: -18px;
}

/* Checkbox runs — tight vertical rhythm inside the 16px-gap body */
.arap-check-group[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.arap-check-row[b-hh3n09puyr] {
    margin-bottom: 0;
}

/* SUMMARY — 2x2: Pivot | Show in % Format / Not Pivot | Top 20 only */
.arap-sum-grid[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 12px;
    row-gap: 2px;
}

/* Ledger row + Group dropdown: spacing now comes from the body gap */
.arap-led-row[b-hh3n09puyr] {
    margin-bottom: 0;
}

.arap-led-btn[b-hh3n09puyr] {
    flex: 0 0 32px;
    height: 32px;
    padding: 0;
}

.arap-sel-fld select.uf-input[b-hh3n09puyr] {
    margin-bottom: 0;
}

/* As On / From / To date boxes — master text-box look: 32px, #cbd5e1
   border, 5px radius, blue focus ring. ::deep because .gdp-wrap is rendered
   by GlobalDatepicker. Same rules as BSPL / TB / QG / Challan / Order / TDS. */
.arap-date-fld[b-hh3n09puyr]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .arap-date-fld[b-hh3n09puyr]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .arap-date-fld[b-hh3n09puyr]  .gdp-wrap:focus,
    .arap-date-fld[b-hh3n09puyr]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .arap-date-fld[b-hh3n09puyr]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.arap-date-fld[b-hh3n09puyr]  .gdp-icon {
    color: #1a56a7;
}

.arap-date-fld[b-hh3n09puyr]  .gdp-value {
    font-weight: 400;
}

/* Group / Unit / Convert dropdowns — native arrow hidden, same grey SVG
   chevron as the other grids; 32px, no vertical padding (no clipping). */
.arap-sel-fld select[b-hh3n09puyr] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    cursor: pointer;
}

    .arap-sel-fld select[b-hh3n09puyr]::-ms-expand {
        display: none;
    }

/* Drawer layout — same as DocumentGrid.razor.css: header + footer pinned,
   only the body scrolls, so the Clear Filters / GO footer never overlaps
   the last fields and the dark header is always visible at the top. */
.mu-drawer[b-hh3n09puyr] {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
}

.mu-drawer-hdr[b-hh3n09puyr] {
    flex-shrink: 0;
}

.mu-drawer-body[b-hh3n09puyr] {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    position: static !important;
}

.mu-drawer-foot[b-hh3n09puyr] {
    position: static !important;
    flex-shrink: 0 !important;
}

/* ── Party-wise detail grid (drawer ARAP + GO) ── */
.arap-pw-icon.arap-pw-icon-on[b-hh3n09puyr] {
    cursor: pointer;
    opacity: 1;
}

    .arap-pw-icon.arap-pw-icon-on:hover[b-hh3n09puyr] {
        opacity: 0.75;
    }

.arap-pw-table tbody tr.arap-row-selected td[b-hh3n09puyr] {
    background: #e8f1fb;
}

.arap-pw-selcount[b-hh3n09puyr] {
    margin-left: 12px;
    font-weight: 600;
}

/* AP ageing grid: only Grand Total stays pinned; Page Total scrolls with rows. */
.mu-table tfoot tr.arap-pv-pgtotal td[b-hh3n09puyr] {
    position: static;
}

/* ── Party-wise / AR / AP grids — old-UI colours: blue Total bars, blue VNum
   link with steel-blue square, dark-red VType. Scoped to .arap-pw-table so
   the other ARAP tabs keep their look; 3-class selectors beat the light
   ".mu-table tfoot tr.arap-party-total td" footer rule above. ── */
.mu-table.arap-pw-table tr.arap-party-total[b-hh3n09puyr],
.mu-table.arap-pw-table tr.arap-party-total td[b-hh3n09puyr] {
    background: #306B9C; /* same as grid header (thead th) */
    color: #fff;
    font-weight: 700;
    border-top: none;
}

/* Footer Total rows (<tfoot>) use the QLedger footer look: grey #e8e8e8 bar, dark bold
   text, 2px #d0d0d0 top rule. In-body party subtotal bars above stay blue. */
.mu-table.arap-pw-table tfoot tr.arap-party-total td[b-hh3n09puyr] {
    background: #e8e8e8;
    color: #1a2537;
    font-weight: 700;
    border-top: 2px solid #d0d0d0;
}

.mu-table.arap-pw-table .arap-vnum[b-hh3n09puyr] {
    color: #1414e6;
    font-weight: 500;
}

.mu-table.arap-pw-table .arap-vtype[b-hh3n09puyr] {
    color: #a52a2a;
    font-weight: 500;
}

.mu-table.arap-pw-table .arap-dot[b-hh3n09puyr] {
    background: #7b96c2;
}

/* DueDays badge — old-UI bar: wide, thin, centred in its column. */
.mu-table.arap-pw-table td:has(> .arap-dd-badge)[b-hh3n09puyr] {
    text-align: center;
}

.mu-table.arap-pw-table .arap-dd-badge[b-hh3n09puyr] {
    width: 100px;
    min-width: 100px;
    padding: 0 4px;
    line-height: 15px;
    font-size: 12px;
    font-weight: 500;
}

/* Party-wise / AR / AP grids — interactive rows: hover tint, clicked-row
   highlight, pointer on clickable bits. */
.mu-table.arap-pw-table tbody tr.arap-click-row[b-hh3n09puyr] {
    cursor: pointer;
}

    .mu-table.arap-pw-table tbody tr.arap-click-row:hover td[b-hh3n09puyr] {
        background: #eef4fb;
    }

.mu-table.arap-pw-table tbody tr.arap-row-active td[b-hh3n09puyr],
.mu-table.arap-pw-table tbody tr.arap-row-active:hover td[b-hh3n09puyr] {
    background: #d6e6f5;
}

.mu-table.arap-pw-table tbody tr.arap-row-active td:first-child[b-hh3n09puyr] {
    box-shadow: inset 3px 0 0 #306B9C;
}

/* No hover underline on Party / VNum links (same as every other ARAP grid). */
.mu-table.arap-pw-table .arap-vnum:hover[b-hh3n09puyr],
.mu-table.arap-pw-table .arap-ledger:hover[b-hh3n09puyr] {
    text-decoration: none;
}

.mu-table.arap-pw-table .arap-dot:hover[b-hh3n09puyr] {
    transform: scale(1.4);
}

.mu-table.arap-pw-table thead th.mu-th-sort[b-hh3n09puyr] {
    cursor: pointer;
    user-select: none;
}

    .mu-table.arap-pw-table thead th.mu-th-sort:hover[b-hh3n09puyr] {
        background: #285a84;
    }

/* Sr no (##) column — normal weight in every ARAP grid (global .mu-idx is 600). */
.mu-table td.mu-idx[b-hh3n09puyr] {
    font-weight: 400;
}

/* ── Party-wise / AR / AP grids — responsive. Columns never squash: below the
   table's min-width the grid scrolls sideways inside .mu-table-wrap, with the
   Party column pinned on the left. Rows/fonts/badge tighten as the screen
   narrows; the footer wraps on phones. ── */
.mu-table.arap-pw-table[b-hh3n09puyr] {
    min-width: 1100px;
}

    .mu-table.arap-pw-table td[b-hh3n09puyr],
    .mu-table.arap-pw-table th[b-hh3n09puyr] {
        white-space: nowrap;
    }

    .mu-table.arap-pw-table tbody td[b-hh3n09puyr] {
        padding-top: 8px;
        padding-bottom: 8px;
    }

    /* Pin the Party column: 3rd in Party-wise (##, ☐, Party), 2nd in AR/AP (##, Party). */
    .mu-table.arap-pw-table:has(th.arap-ap-chk) tbody tr:not(.arap-party-total) td:nth-child(3)[b-hh3n09puyr],
    .mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) tbody tr:not(.arap-party-total) td:nth-child(2)[b-hh3n09puyr] {
        position: sticky;
        left: 0;
        z-index: 1;
        background: #fff;
        box-shadow: 1px 0 0 #e3e8ef;
    }

@media (max-width: 1280px) {
    .mu-table.arap-pw-table[b-hh3n09puyr] {
        font-size: 12px;
    }

        .mu-table.arap-pw-table thead th[b-hh3n09puyr] {
            padding: 10px 8px;
            font-size: 12px;
        }

        .mu-table.arap-pw-table tbody td[b-hh3n09puyr],
        .mu-table.arap-pw-table tfoot td[b-hh3n09puyr] {
            padding: 6px 8px;
        }

        .mu-table.arap-pw-table .arap-dd-badge[b-hh3n09puyr] {
            width: 80px;
            min-width: 80px;
        }

        .mu-table.arap-pw-table .arap-ledger[b-hh3n09puyr] {
            max-width: 200px;
        }
}

@media (max-width: 768px) {
    .mu-table.arap-pw-table[b-hh3n09puyr] {
        min-width: 920px;
        font-size: 11.5px;
    }

        .mu-table.arap-pw-table thead th[b-hh3n09puyr] {
            padding: 8px 6px;
            font-size: 11.5px;
        }

        .mu-table.arap-pw-table tbody td[b-hh3n09puyr],
        .mu-table.arap-pw-table tfoot td[b-hh3n09puyr] {
            padding: 5px 6px;
        }

        .mu-table.arap-pw-table .arap-dd-badge[b-hh3n09puyr] {
            width: 56px;
            min-width: 56px;
            font-size: 11px;
        }

        .mu-table.arap-pw-table .arap-ledger[b-hh3n09puyr] {
            max-width: 130px;
        }

    .arap-footer-fixed[b-hh3n09puyr] {
        flex-wrap: wrap;
        row-gap: 6px;
    }

        .arap-footer-fixed .bspl-footer-left[b-hh3n09puyr],
        .arap-footer-fixed .bspl-footer-right[b-hh3n09puyr] {
            flex-wrap: wrap;
            row-gap: 6px;
        }
}

/* Pinned Party cell follows the row's stripe / hover / checked / clicked colour. */
.mu-table.arap-pw-table tbody tr:nth-child(even):not(.arap-party-total) td[b-hh3n09puyr] {
    background: #f7f9fc !important;
}

.mu-table.arap-pw-table tbody tr.arap-click-row:hover td[b-hh3n09puyr] {
    background: #eef4fb !important;
}

.mu-table.arap-pw-table tbody tr.arap-row-selected td[b-hh3n09puyr] {
    background: #e8f1fb !important;
}

.mu-table.arap-pw-table tbody tr.arap-row-active td[b-hh3n09puyr] {
    background: #d6e6f5 !important;
}

/* Party column capped — long names cut with "…" (full name in tooltip);
   the leftover width goes to the other columns instead. */
.mu-table.arap-pw-table:has(th.arap-ap-chk) th:nth-child(3)[b-hh3n09puyr],
.mu-table.arap-pw-table:has(th.arap-ap-chk) tbody tr:not(.arap-party-total) td:nth-child(3)[b-hh3n09puyr],
.mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) th:nth-child(2)[b-hh3n09puyr],
.mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) tbody tr:not(.arap-party-total) td:nth-child(2)[b-hh3n09puyr] {
    width: 200px;
    max-width: 200px;
}

.mu-table.arap-pw-table .arap-ledger[b-hh3n09puyr] {
    max-width: 180px;
}

@media (max-width: 1280px) {
    .mu-table.arap-pw-table:has(th.arap-ap-chk) th:nth-child(3)[b-hh3n09puyr],
    .mu-table.arap-pw-table:has(th.arap-ap-chk) tbody tr:not(.arap-party-total) td:nth-child(3)[b-hh3n09puyr],
    .mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) th:nth-child(2)[b-hh3n09puyr],
    .mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) tbody tr:not(.arap-party-total) td:nth-child(2)[b-hh3n09puyr] {
        width: 170px;
        max-width: 170px;
    }

    .mu-table.arap-pw-table .arap-ledger[b-hh3n09puyr] {
        max-width: 150px;
    }
}

@media (max-width: 768px) {
    .mu-table.arap-pw-table:has(th.arap-ap-chk) th:nth-child(3)[b-hh3n09puyr],
    .mu-table.arap-pw-table:has(th.arap-ap-chk) tbody tr:not(.arap-party-total) td:nth-child(3)[b-hh3n09puyr],
    .mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) th:nth-child(2)[b-hh3n09puyr],
    .mu-table.arap-pw-table:not(:has(th.arap-ap-chk)) tbody tr:not(.arap-party-total) td:nth-child(2)[b-hh3n09puyr] {
        width: 140px;
        max-width: 140px;
    }

    .mu-table.arap-pw-table .arap-ledger[b-hh3n09puyr] {
        max-width: 120px;
    }
}

/* DueDays column (header + badge) centred. */
.mu-table thead th.arap-dd-cell[b-hh3n09puyr],
.mu-table td.arap-dd-cell[b-hh3n09puyr] {
    text-align: center;
}

/* From / To row extras — GreenCalendarPicker trigger + "C" clear button,
   same 32px boxes as QG.razor.css's .qg-date-fld .gcp-trigger. */
.arap-date-fld .gdp-field-row[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.arap-date-fld .gcp-trigger[b-hh3n09puyr],
.arap-date-fld[b-hh3n09puyr]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

    .arap-date-fld .gcp-trigger:hover[b-hh3n09puyr],
    .arap-date-fld[b-hh3n09puyr]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.arap-date-fld .gcp-icon[b-hh3n09puyr] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Ledger Info card (square next to Party) — old-UI popover anchored at the
   click: navy border, blue EDIT / red PDF, light-blue period + OB band,
   scrolling contact list. Position comes from OpenLedgerInfo (inline style). ── */
.arap-lip-catch[b-hh3n09puyr] {
    position: fixed;
    inset: 0;
    z-index: 1090;
    background: transparent;
}

.arap-lip[b-hh3n09puyr] {
    position: fixed;
    z-index: 1100;
    width: 380px;
    max-width: calc(100vw - 16px);
    max-height: 430px;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #1f3f7a;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.22);
    font-size: 12.5px;
    color: #1a2537;
}

.arap-lip-x[b-hh3n09puyr] {
    position: absolute;
    top: 2px;
    right: 6px;
    border: none;
    background: none;
    font-size: 18px;
    line-height: 1;
    color: #64748b;
    cursor: pointer;
}

    .arap-lip-x:hover[b-hh3n09puyr] {
        color: #1a2537;
    }

.arap-lip-status[b-hh3n09puyr] {
    padding: 18px 14px;
    text-align: center;
}

.arap-lip-head[b-hh3n09puyr] {
    padding: 8px 26px 10px 14px;
    border-bottom: 1px solid #cbd5e1;
}

.arap-lip-code[b-hh3n09puyr],
.arap-lip-name[b-hh3n09puyr] {
    font-weight: 700;
}

.arap-lip-name[b-hh3n09puyr] {
    font-size: 13px;
    margin-bottom: 4px;
}

.arap-lip-addr[b-hh3n09puyr] {
    white-space: pre-line;
}

.arap-lip-contact[b-hh3n09puyr] {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 4px 8px 14px;
}

.arap-lip-lines[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
    overflow-wrap: anywhere;
}

.arap-lip-link[b-hh3n09puyr] {
    color: #3b6fc4;
    text-decoration: none;
}

.arap-lip-btns[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 22px;
    flex: 0 0 56px;
}

.arap-lip-btn[b-hh3n09puyr] {
    border: none;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    padding: 2px 0;
    cursor: pointer;
}

    .arap-lip-btn.edit[b-hh3n09puyr] {
        background: #5b9bd5;
    }

    .arap-lip-btn.pdf[b-hh3n09puyr] {
        background: #e61919;
    }

    .arap-lip-btn:hover[b-hh3n09puyr] {
        filter: brightness(0.92);
    }

.arap-lip-bal[b-hh3n09puyr] {
    background: #c5d9f1;
    border-top: 1px solid #1f3f7a;
    border-bottom: 1px solid #1f3f7a;
    padding: 4px 6px;
}

.arap-lip-period[b-hh3n09puyr] {
    font-weight: 700;
}

.arap-lip-balrow[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 40px 1fr;
}

    .arap-lip-balrow span:last-child[b-hh3n09puyr] {
        text-align: left;
        padding-left: 80px;
        font-variant-numeric: tabular-nums;
    }

.arap-lip-people[b-hh3n09puyr] {
    overflow-y: auto;
    max-height: 110px;
    padding: 4px 6px 6px;
}

.arap-lip-person[b-hh3n09puyr] {
    padding: 3px 0;
}

    .arap-lip-person + .arap-lip-person[b-hh3n09puyr] {
        border-top: 1px dashed #e2e8f0;
    }

.arap-lip-pname[b-hh3n09puyr] {
    font-weight: 700;
}

.arap-lip-btn:disabled[b-hh3n09puyr] {
    opacity: 0.55;
    cursor: not-allowed;
    filter: none;
}

/* Drawer option not usable in the current Pivot / Not Pivot mode — only the
   checkbox is greyed (browser disabled look); label text stays normal. */
.arap-check.arap-check-off input[type="checkbox"][b-hh3n09puyr] {
    cursor: not-allowed;
}

/* Summary section: keep label text normal colour even when its checkbox is disabled. */
.arap-sum-grid .arap-check:has(input:disabled)[b-hh3n09puyr],
.arap-sum-grid .arap-check.arap-check-off[b-hh3n09puyr] {
    color: #1a2537;
    opacity: 1;
}

/* ── Not Pivot — old UI split: ledger list (left) + Ageing Details (right). ── */
.arap-np-split[b-hh3n09puyr] {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    flex: 1;
    min-height: 0;
    padding: 0 0 4px;
}

    /* Ledger list fills the card height down to the footer (rows scroll
       inside, TOTAL stays pinned at its bottom); width unchanged. */
    .arap-np-split .arap-np-left[b-hh3n09puyr] {
        flex: 0 1 620px;
        align-self: stretch;
        height: 100%;
        max-height: 100%;
    }

    /* Ageing Details + selected-ledger box: full card height too, so the
       ledger box below isn't cut off; scrolls inside only if still taller. */
    .arap-np-split .arap-np-right[b-hh3n09puyr] {
        flex: 0 1 420px;
        align-self: stretch;
        height: 100%;
        max-height: 100%;
        overflow-y: auto;
    }

.mu-table.arap-pw-table.arap-np-table[b-hh3n09puyr] {
    min-width: 0;
}

.mu-table.arap-np-ageing tbody tr.arap-np-total td[b-hh3n09puyr] {
    background: #306B9C !important;
    color: #fff;
    font-weight: 700;
}

.mu-table.arap-np-ageing tbody tr.arap-np-unadj td[b-hh3n09puyr] {
    font-style: italic;
}

@media (max-width: 1024px) {
    .arap-np-split[b-hh3n09puyr] {
        flex-direction: column;
    }

        .arap-np-split .arap-np-left[b-hh3n09puyr],
        .arap-np-split .arap-np-right[b-hh3n09puyr] {
            flex: 0 0 auto;
            width: 100%;
        }
}

.mu-table.arap-pw-table tbody tr.arap-np-synth td[b-hh3n09puyr] {
    font-weight: 700;
    background: #e8f1fb !important;
}

/* Format section rows — label left, control right (old UI layout). */
.arap-fmt-row[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 90px minmax(0, 1fr);
    align-items: center;
    column-gap: 10px;
}

.arap-fmt-lbl[b-hh3n09puyr] {
    font-size: 13px;
    font-weight: 400;
    color: #1a2537;
    margin: 0;
}

/* ── Group picker popup (drawer "G") — copy of QLedger's Ledger popup
   (QLedger.razor.css .ql-lp-* / .ql-modal-*): 760px uf-modal, search row,
   scrolling grid, mu-foot pager. ── */
.arap-gp-overlay[b-hh3n09puyr] {
    z-index: 1300; /* above the filter drawer (1200) */
}

.arap-gp-modal[b-hh3n09puyr] {
    max-width: 760px;
    max-height: 80vh;
    border-radius: 8px;
}

.arap-gp-search[b-hh3n09puyr] {
    display: flex;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .arap-gp-search .uf-input[b-hh3n09puyr] {
        flex: 1 1 auto;
        min-width: 0;
    }

.arap-gp-code[b-hh3n09puyr] {
    flex: 0 1 120px !important;
}

.arap-gp-go[b-hh3n09puyr] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .arap-gp-go:hover[b-hh3n09puyr] {
        background: #159a80;
    }

.arap-gp-body[b-hh3n09puyr] {
    flex: 1;
    overflow-y: auto;
}

.arap-gp-row[b-hh3n09puyr] {
    cursor: pointer;
}

    .arap-gp-row:hover td[b-hh3n09puyr] {
        background: #f1f5f9;
    }

.arap-gp-idx[b-hh3n09puyr] {
    width: 56px;
}

.mu-table tbody td.arap-gp-idx[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 600;
}

.arap-gp-name[b-hh3n09puyr] {
    color: #1a56a7;
    font-weight: 500;
}

.arap-gp-sel td[b-hh3n09puyr] {
    background: #e8f1fb !important;
}

@media (max-width: 768px) {
    .arap-gp-search[b-hh3n09puyr] {
        flex-wrap: wrap;
    }

        .arap-gp-search .uf-input[b-hh3n09puyr],
        .arap-gp-code[b-hh3n09puyr] {
            flex: 1 1 100% !important;
        }
}

/* ── Every ARAP grid header = QLedger's Month grid header (global
   standard.css ".db-table th", used across QLedger/QG): 8px 10px padding,
   13px, bold, left aligned (num columns right), sortable headers nowrap,
   #306B9C. Last in file so it also wins over the responsive ≤1280 / ≤768
   header overrides above — same height on every screen size. ── */
.mu-table thead th[b-hh3n09puyr],
.mu-table.arap-pw-table thead th[b-hh3n09puyr] {
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: normal;
    vertical-align: middle;
    text-align: left;
    background: #306B9C;
    color: #fff;
}

    .mu-table thead th.num[b-hh3n09puyr],
    .mu-table.arap-pw-table thead th.num[b-hh3n09puyr] {
        text-align: right;
    }

    .mu-table thead th.mu-th-sort[b-hh3n09puyr] {
        white-space: nowrap;
        cursor: pointer;
        user-select: none;
    }

    .mu-table thead th.arap-dd-cell[b-hh3n09puyr] {
        text-align: center;
    }

/* WhatsApp / Email / PDF icons — the app's own images (wwwroot/images). */
.arap-ico[b-hh3n09puyr] {
    width: 18px;
    height: 18px;
    object-fit: contain;
    vertical-align: middle;
    cursor: pointer;
}

.arap-pw-icon.arap-ico[b-hh3n09puyr] {
    margin-left: 10px;
    opacity: 1;
}

.bspl-foot-btn .arap-ico[b-hh3n09puyr] {
    width: 16px;
    height: 16px;
}

/* PDF icon while its ledger PDF is being generated. */
.arap-ico.arap-ico-busy[b-hh3n09puyr] {
    opacity: 0.4;
    cursor: progress;
}

/* "continues on the next page" note inside the Grand Total row. */
.mu-table.arap-pw-table tfoot td.arap-pw-contmsg[b-hh3n09puyr] {
    font-weight: 600;
    font-style: italic;
    white-space: nowrap;
}

    .mu-table.arap-pw-table tfoot td.arap-pw-contmsg i[b-hh3n09puyr] {
        margin-right: 6px;
    }

/* PDF icon — same as BSPL's footer PDF button (masters-forms.css
   ".bspl-foot-btn.pdf": red #c0392b fa-file glyph, no background). */
.arap-pdf-ico[b-hh3n09puyr] {
    color: #c0392b;
    font-size: 17px;
    line-height: 1;
    cursor: pointer;
    vertical-align: middle;
}

    .arap-pdf-ico:hover[b-hh3n09puyr] {
        color: #a93226;
    }

    .arap-pdf-ico.arap-ico-busy[b-hh3n09puyr] {
        opacity: 0.4;
        cursor: progress;
    }

/* On the blue Total strap, a white disc keeps the red icon readable. */
.arap-party-total .arap-pdf-ico[b-hh3n09puyr] {
    background: #fff;
    border-radius: 3px;
    padding: 2px 3px;
}

/* Not Pivot: ledger name in maroon when its Amount is negative ( … ). */
.mu-table.arap-pw-table .arap-ledger.arap-neg[b-hh3n09puyr],
.mu-table.arap-pw-table .arap-ledger-link.arap-neg[b-hh3n09puyr] {
    color: #800000;
}

/* Not Pivot — selected ledger's ageing box (under Ageing Details). */
.arap-np-selhdr[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 16px;
    padding: 6px 8px;
    background: #e8f1e4;
    border: 1px solid #d6e2ef;
    border-bottom: none;
    font-weight: 700;
    color: #1a2537;
}

.arap-np-selname[b-hh3n09puyr] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.arap-np-selcode[b-hh3n09puyr] {
    color: #306B9C;
    white-space: nowrap;
}

.arap-np-ql[b-hh3n09puyr] {
    margin-left: auto;
    color: #1a56a7;
    text-decoration: underline;
    cursor: pointer;
    white-space: nowrap;
}

/* Summary → Pivot grid: UnadjBal values plain (no maroon), like Not Pivot.
   The Clientwise Pivot tab keeps its maroon UnadjBal column. */
.mu-table.arap-pw-table.arap-pivot-table td.arap-pv-unadj[b-hh3n09puyr],
.mu-table.arap-pw-table.arap-pivot-table td.arap-pv-unadj.cr[b-hh3n09puyr] {
    color: #1a2537;
}

/* Summary → Pivot grid: TOTAL and % columns bold (only these two). */
.mu-table.arap-pw-table td.arap-pv-total[b-hh3n09puyr] {
    font-weight: 700;
}

/* Detail / Summary section bars carry their own checkbox (old UI). */
.arap-sec-chk label[b-hh3n09puyr] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    margin: 0;
}

    .arap-sec-chk label input[type="checkbox"][b-hh3n09puyr] {
        margin: 0;
        cursor: pointer;
    }

/* Detail options greyed while Summary is active — label text stays normal. */
.arap-check-group .arap-check.arap-check-off[b-hh3n09puyr] {
    color: #1a2537;
    opacity: 1;
    cursor: not-allowed;
}

/* ── GRAPH tab — ARAP/AR/AP + Bar/Line/Pie button rows over the chart. ── */
.arap-graph[b-hh3n09puyr] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px 16px;
    flex: 1;
    min-height: 0;
}

.arap-graph-bar[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.arap-graph-btns[b-hh3n09puyr] {
    display: flex;
    gap: 4px;
    font-family: 'Segoe UI', sans-serif;
}

.arap-graph-chart[b-hh3n09puyr] {
    width: 100%;
    min-height: 420px;
    flex: 1;
}

/* Ledger Info card (QLInfo): value | button rows — email|EDIT, website, mobile|PDF, phone. */
.arap-lip-grid[b-hh3n09puyr] {
    display: grid;
    grid-template-columns: 1fr 56px;
    align-items: center;
    row-gap: 4px;
    column-gap: 10px;
    padding: 8px 6px 8px 14px;
}

.arap-lip-cell[b-hh3n09puyr] {
    min-width: 0;
    overflow-wrap: anywhere;
}

.arap-lip-pdf[b-hh3n09puyr] {
    justify-self: center;
    border: none;
    background: none;
    padding: 0;
    color: #c0392b;
    font-size: 20px;
    cursor: pointer;
    line-height: 1;
}

    .arap-lip-pdf:hover[b-hh3n09puyr] {
        color: #962d22;
    }

/* OB in Cr → maroon. */
.arap-lip-cr[b-hh3n09puyr] {
    color: #800000;
}

/* Not Pivot "Unadjusted" rows open the Unadjusted Details popup. */
.arap-unadj-click[b-hh3n09puyr] {
    cursor: pointer;
}

.arap-unadj-link[b-hh3n09puyr] {
    color: #1414e6;
}

.arap-unadj-click:hover .arap-unadj-link[b-hh3n09puyr] {
    text-decoration: underline;
}

/* Unadjusted Details popup — party-wise style grid with Total straps. */
.arap-ua-modal[b-hh3n09puyr] {
    max-width: 980px;
    width: 96vw;
    max-height: 86vh;
    display: flex;
    flex-direction: column;
}

/* No top padding: the sticky header sits flush at the top of the scroll
   area, so rows never show above it while scrolling. */
.arap-ua-body[b-hh3n09puyr] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 0 14px 10px;
}

/* Header stays fixed while scrolling — above the sticky Party cells (z 1). */
.mu-table.arap-pw-table.arap-ua-table thead th[b-hh3n09puyr] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #306B9C;
}

    /* Party header also pinned left, like its column. */
    .mu-table.arap-pw-table.arap-ua-table thead th:nth-child(2)[b-hh3n09puyr] {
        left: 0;
        z-index: 4;
    }

/* Fits the popup — no forced 1100px width / horizontal scroll. */
.mu-table.arap-pw-table.arap-ua-table[b-hh3n09puyr] {
    min-width: 0;
    width: 100%;
}

.arap-ua-party[b-hh3n09puyr] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.arap-ua-foot[b-hh3n09puyr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 14px;
    border-top: 1px solid #e2e8f0;
    font-size: 12.5px;
    color: #475569;
}

.arap-ua-count[b-hh3n09puyr] {
    font-weight: 600;
    color: #1a2537;
}

/* Long lists: the flex column was squeezing the title bar — keep its normal
   height (same as a short popup); only the grid body shrinks and scrolls. */
.arap-ua-modal > .uf-header[b-hh3n09puyr],
.arap-ua-modal > .arap-ua-foot[b-hh3n09puyr] {
    flex-shrink: 0;
}

/* Visible full-width line under the title bar. Fixed minimum height (72px) so the
   tab bar's top border (-6px under it) lands on the sidebar header's bottom edge
   (66px) at any browser zoom — a content-sized title block drifted off it. */
.bspl-title-block[b-hh3n09puyr] {
    box-sizing: border-box;
    min-height: 72px;
    border-bottom: 1px solid #cfd6e1;
}
/* /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: #1a56a7; /* non-active: blue */
    color: #fff;
    border: 1px solid #1a56a7;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
    min-width: 34px;
    text-align: center;
}

    .bspl-yr-btn:hover[b-a9m088rzdg] {
        background: #154a8f;
        border-color: #154a8f;
    }

    .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: #1a56a7; /* non-active: blue */
    color: #fff;
    border: 1px solid #1a56a7;
    border-radius: 3px;
    cursor: pointer;
    transition: all .12s;
    min-width: 30px;
    text-align: center;
}

    .bspl-qm-btn:hover[b-a9m088rzdg] {
        background: #154a8f;
        border-color: #154a8f;
    }

    .bspl-qm-btn.active[b-a9m088rzdg] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* Selected unit label (after M button) */
.bspl-unit-lbl[b-a9m088rzdg] {
    margin-left: 10px;
    padding: 4px 8px;
    font-size: 12px;
    font-weight: 600;
    color: #306B9C;
    /*background: #eef4f9;*/
    /* border: 1px solid #cfe0ee;*/
    border-radius: 3px;
    white-space: nowrap;
    align-self: center;
}

@media (max-width: 480px) {
    .bspl-unit-lbl[b-a9m088rzdg] {
        margin-left: 6px;
        padding: 3px 5px;
        font-size: 10px;
    }
}

/* 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;
}

    /* 50px empty space between EXPAND and FY: 8px bar gap + 42px margin */
    .bspl-btnbar-group + .bspl-btnbar-group[b-a9m088rzdg] {
        margin-left: 42px;
    }

/* 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-btnbar-group + .bspl-btnbar-group[b-a9m088rzdg] {
        margin-left: 12px;
    }

    .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;
}

/* REAL FIX for the blank gap on the right of 3Y/4Y panels (content stuck
   to the left, no scrollbar): tried making nc/vc flex-grow to fill the
   panel — reverted. Giving a flex item flex-grow > 0 makes the browser use
   the item's own unclipped text size (not its flex-basis) as its
   contribution to the row's max-content width, so a single very long
   ledger name silently re-inflated the whole row again — same family of
   bug as the original percentage circularity, different trigger. nc/vc
   stay flex:none (the base rule above), rigid at 220px/165px, ellipsis
   truncation stays reliable.

   The actual bug was never "content doesn't grow" — it's "the PANEL
   (.bspl-mc-scroll) is forced to flex:1 1 0, an equal 50/50 split with
   its sibling panel, regardless of how wide its own table actually needs
   to be." A 4-column table (880px) sitting inside a panel stretched to
   ~1000px (half the viewport) leaves the other ~120px empty — that's the
   gap. The actual override for this (shrink the panel to its own content
   instead of a forced 50/50 split) is at the very bottom of this file —
   search for "REAL FIX (part 2)" — because several earlier rules already
   set `flex: 1 1 0` on this exact selector and CSS ties break on source
   order, so the override has to physically be last to win. */

/* 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;
}

/* Was 120px — below the file's own 165px "never truncate a currency
   value" floor (see .bspl-mc-scroll[class*=bspl-cols-] .bspl-mc-vc
   further up). Same selector specificity as that floor rule, but this one
   sits later in the file so it was silently winning and clipping Q/M's
   longer crore amounts without any ellipsis showing (right-aligned text
   overflowing a fixed box gets cut from the START, which just looks like
   misaligned/wrong numbers, not truncation). Bumped to 165px to match. */
.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: 165px !important;
    min-width: 165px !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 (165px, matching this file's desktop
       "never truncate a currency value" floor — was 140px, which is what
       let long crore amounts get cut on real mobile widths for 1Y/2Y/Q;
       right-aligned text cut by overflow:hidden loses its LEADING digits
       with no ellipsis shown, which just looks like broken/misaligned
       numbers, not truncation), 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: 165px !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)
   ═══════════════════════════════════════════════════════════════════ */
/* Overlay — same dim + blur as masters-forms.css .uf-overlay */
.coa-modal-overlay[b-a9m088rzdg] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
    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: 1px solid #e7ebf2;
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
    font-family: Arial, sans-serif;
    box-sizing: border-box;
}

    /* Header = global .uf-header (green gradient + left accent bar);
       only pinned here so the body scrolls under it. */
    .coa-modal-card > .uf-header[b-a9m088rzdg] {
        flex: 0 0 auto;
    }

/* .coa-modal-x / .coa-modal-header / h2 / .coa-modal-sub removed —
   replaced by master .uf-header / .uf-title / .uf-close in the markup. */

.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-modal-spin[b-a9m088rzdg] {
    font-size: 22px;
    color: #306B9C;
}

.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 — master .uf-footer supplies padding / top border / background;
   here only: icons left, Close pushed right. ── */
.coa-modal-footer[b-a9m088rzdg] {
    flex: 0 0 auto;
    justify-content: flex-start;
    gap: 16px;
}

/* Excel / PDF — plain icons, no box/border (original look) */
.coa-footer-icon[b-a9m088rzdg] {
    font-size: 21px;
    cursor: pointer;
    line-height: 1;
    display: flex;
    align-items: center;
    transition: opacity .15s;
    background: none;
    border: none;
    padding: 0;
    text-decoration: none !important;
}

    .coa-footer-icon:hover[b-a9m088rzdg],
    .coa-footer-icon:focus[b-a9m088rzdg] {
        opacity: .75;
        text-decoration: none !important;
        outline: none;
    }

    .coa-footer-icon:disabled[b-a9m088rzdg] {
        opacity: .5;
        pointer-events: none;
    }

    .coa-footer-icon i[b-a9m088rzdg] {
        text-decoration: none !important;
    }

/* Close — master .uf-btn .uf-btn-new; only pushed to the right here */
.coa-footer-close[b-a9m088rzdg] {
    margin-left: auto;
}

/* ── 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-card > .uf-header[b-a9m088rzdg] {
            padding: 14px 16px;
        }

    .coa-modal-body[b-a9m088rzdg] {
        padding: 12px 12px 6px;
    }

    .coa-grid-row[b-a9m088rzdg] {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        margin-bottom: 14px;
    }

    /* FIX: data not showing on mobile. Desktop .coa-col is
       "flex: 1 1 0" + overflow:hidden. Once the row turns into a COLUMN,
       that 0 flex-basis becomes the card's HEIGHT, and overflow:hidden
       makes min-height:auto resolve to 0 — so every section collapsed to
       0px tall and the rows were clipped away. Size by content instead. */
    .coa-col[b-a9m088rzdg] {
        flex: 0 0 auto;
        width: 100%;
        min-height: auto;
    }

    .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: 8px;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   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. */

/* REAL FIX (part 2) — blank gap on the right of 3Y/4Y side-by-side panels.
   See the long comment near the cols-4/cols-5 nc/vc width rules for the
   full explanation. Short version: those panels were forced to
   `flex: 1 1 0` (an equal 50/50 split with their sibling), independent of
   how wide their own 4/5-column table actually is, so a table narrower
   than its half-share left blank space on the right. This makes the
   panel shrink-wrap to its own content instead. Deliberately placed as
   the LAST rule in the file: several earlier rules already set
   `flex: 1 1 0` on this exact selector, equal specificity, and CSS
   resolves ties by source order — last one wins. Do not move this above
   any of them, and do not add a later rule that re-sets flex on this
   selector without checking here first. */
.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: 0 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
}

/* ══════════════════════════════════════════════════════════════════
   FY view — 12-col style split: left panel 4 | right panel 4 | image 4
   Only where the image is visible (≥1100px). Below that the existing
   rules apply (901–1099: 2 panels side by side; ≤900: stacked).
   Kept LAST so it wins over the earlier flex/260px/auto image rules.
   ══════════════════════════════════════════════════════════════════ */
@media (min-width: 1100px) {
    .bspl-std-wrap.bspl-std-fy[b-a9m088rzdg] {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
        align-items: start !important;
    }

        .bspl-std-wrap.bspl-std-fy .bspl-std-panel[b-a9m088rzdg] {
            flex: none !important;
            width: auto !important;
            min-width: 0 !important;
        }

        .bspl-std-wrap.bspl-std-fy .bspl-img-col[b-a9m088rzdg] {
            display: flex !important;
            flex: none !important;
            width: auto !important;
            margin-left: 0;
            padding: 0;
            justify-content: center;
        }

            .bspl-std-wrap.bspl-std-fy .bspl-img-col .bspl-report-img[b-a9m088rzdg] {
                width: 100%;
                max-width: 100%;
            }
}

/* ══════════════════════════════════════════════════════
   FILTER DRAWER — From / To date boxes, master text-box look
   (.uf-input / .mu-fld input: 32px, #cbd5e1 border, 5px radius, blue
   focus ring). ::deep because .gdp-wrap is rendered by GlobalDatepicker;
   GreenCalendarPicker trigger + "C" clear button matched to 32px so the
   row lines up. Same rules as DocumentGrid's .dg-date-fld.
   ══════════════════════════════════════════════════════ */
.bspl-date-fld[b-a9m088rzdg]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-a9m088rzdg]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-a9m088rzdg]  .gdp-wrap:focus,
    .bspl-date-fld[b-a9m088rzdg]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-a9m088rzdg]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-a9m088rzdg]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-a9m088rzdg]  .gdp-value {
    font-weight: 400;
}

.bspl-date-fld .gcp-trigger[b-a9m088rzdg],
.bspl-date-fld[b-a9m088rzdg]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .bspl-date-fld .gcp-trigger:hover[b-a9m088rzdg],
    .bspl-date-fld[b-a9m088rzdg]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* FILTER DRAWER — Unit dropdown: native arrow hidden, same grey SVG
   chevron as ChallanGrid / OrderGrid / DocumentGrid. 32px master box, no
   vertical padding (text centred, never clipped), right padding clears
   the chevron. */
.bspl-sel-fld select[b-a9m088rzdg] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
}

    .bspl-sel-fld select:focus[b-a9m088rzdg] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-sel-fld select[b-a9m088rzdg]::-ms-expand {
        display: none;
    }

/* ── Filter drawer: Multi Currency block — label | control rows ── */
.bspl-mc-grid[b-a9m088rzdg] {
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr);
    align-items: center;
    gap: 10px 12px;
}

    .bspl-mc-grid > label[b-a9m088rzdg] {
        font-size: 12px;
        font-weight: 600;
        color: #1a2537;
        line-height: 1.2;
    }

    .bspl-mc-grid .mu-fld[b-a9m088rzdg] {
        gap: 0;
        min-width: 0;
    }

    .bspl-mc-grid #bspl-rev[b-a9m088rzdg] {
        color: #475569;
    }
/* /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;
    }

/* Footer table (Total row) — a separate <table> rendered after
       .mu-table-wrap (see CrossLink.razor), not a <tfoot> inside the
       scrollable one. That's what pins it to the true bottom of the
       panel even when there are only a few rows — position:sticky only
       keeps an element in view once the container actually scrolls, so
       with few rows (nothing to scroll) a sticky tfoot just renders
       right after the last row instead, leaving a gap below it. No
       sticky/z-index needed now since it's already outside the scroll
       area. .xl-table-fixed + matching <colgroup> on both tables keeps
       this footer's columns aligned with the scrollable table above it. */
.xl-table-foot td[b-jtvv6whuoc] {
    background: #f2f2f2;
    font-weight: 600;
    font-size: 12px;
    padding: 7px 10px;
    box-sizing: border-box;
    border-top: 1px solid #d6dbe0;
}

    .xl-table-foot td.num[b-jtvv6whuoc] {
        text-align: right;
    }

.xl-table-fixed[b-jtvv6whuoc] {
    table-layout: fixed;
}

.xl-table-foot[b-jtvv6whuoc] {
    flex-shrink: 0;
}

.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%;
}

    /* CROSS LINKS title — same override ITB uses on itself: some shared
       rule (not this file) renders h1 bold by default, and ITB opts out
       to a lighter 300 weight. CrossLink never had this override, so its
       title was still rendering bold like MLedger/BSPL do. Every
       plausible ancestor selector is covered with !important, same
       reasoning as ITB.razor.css, since it's not certain which shared
       rule actually wins otherwise. */
    .itb-page .bspl-title-block h1[b-jtvv6whuoc],
    .itb-page .bspl-title-row h1[b-jtvv6whuoc],
    .itb-page .bspl-title-left h1[b-jtvv6whuoc],
    .itb-page h1[b-jtvv6whuoc] {
        font-weight: 300 !important;
    }

    .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) — now uses db-tabbar/db-tab, same
   as ITB (those come straight from the global standard.css, not a local
   .le-toptabs/.le-toptab reimplementation), so it matches ITB's tab bar
   exactly. Only this one ITB-specific spacing tweak (copied from
   ITB.razor.css) is needed here, same reason it was needed there. ── */
.db-tabbar[b-jtvv6whuoc] {
    padding: 7px 16px 6px;
    margin-top: -16px;
    margin-bottom: -19px;
}

.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;
    }
}

/* ══════════════════════════════════════════════════════
   FILTER DRAWER — From/To date boxes, copied verbatim from
   BSPL.razor.css / ITB.razor.css (.bspl-date-fld ::deep .gdp-wrap etc.).
   Same master text-box look (32px, #cbd5e1 border, 5px radius, blue
   focus ring) so the date fields don't render oversized like
   GlobalDatepicker's own .gdp-wrap default (8px/10px padding, no fixed
   height). ::deep is required because GlobalDatepicker/GreenCalendarPicker
   are child components — their markup never carries this page's own
   scope attribute. Requires each date .mu-fld to also carry
   class="bspl-date-fld" in CrossLink.razor, same as BSPL/ITB.
   The "FILTERS" section banner needs no CSS here — it reuses
   masters-forms.css' shared .mu-drawer-section bar directly.
   ══════════════════════════════════════════════════════ */
.bspl-date-fld[b-jtvv6whuoc]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-jtvv6whuoc]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-jtvv6whuoc]  .gdp-wrap:focus,
    .bspl-date-fld[b-jtvv6whuoc]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-jtvv6whuoc]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-jtvv6whuoc]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-jtvv6whuoc]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-jtvv6whuoc] {
    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-icon[b-jtvv6whuoc] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.bspl-date-fld .gcp-trigger[b-jtvv6whuoc],
.bspl-date-fld[b-jtvv6whuoc]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .bspl-date-fld .gcp-trigger:hover[b-jtvv6whuoc],
    .bspl-date-fld[b-jtvv6whuoc]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }
/* /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;
    }
}

/* ── Footer pagination — same as GAINS_TB / OrderGrid: footer
   (bspl-footer/bspl-footer-count) and pagination (db-pagination/
   db-page-btn) come from the shared masters-forms.css classes; the old
   local dg-pager/dg-pg-btn look was removed. Only the right-side flex
   row is page-local (verbatim from GAINS_TB.razor.css). ── */
.bspl-footer-right[b-tyvb7jqz8m] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

/* "…" between page windows — TB has none (1–10 only), so kept local. */
.db-page-gap[b-tyvb7jqz8m] {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}

.dg-vnum-text[b-tyvb7jqz8m] {
    cursor: pointer;
    font-weight: 600;
}

    .dg-vnum-text:hover[b-tyvb7jqz8m] {
        text-decoration: underline;
    }

/* ── Compact table density — Daybook-style: header ~34px, rows ~32px.
   Shared .mu-table (masters-forms.css) pads too generously here; this
   scoped override applies to this page's tables only. ── */
.dg-content .mu-table[b-tyvb7jqz8m] {
    font-size: 12.5px;
    line-height: 1.25;
    border-collapse: collapse;
}

.dg-content .mu-table thead th[b-tyvb7jqz8m] {
    padding: 8px 10px;
    height: 34px;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    vertical-align: middle;
}

.dg-content .mu-table tbody td[b-tyvb7jqz8m] {
    padding: 6px 10px;
    height: 32px;
    line-height: 1.25;
    vertical-align: middle;
}

.dg-content .mu-table tbody tr:nth-child(even)[b-tyvb7jqz8m] {
    background: #f6f9fc;
}

.dg-content .mu-table tfoot td[b-tyvb7jqz8m] {
    padding: 6px 10px;
    height: 32px;
    font-weight: 700;
    vertical-align: middle;
}

/* dot + VNum on one tight line */
.dg-content .mu-table td .mu-vnum-dot[b-tyvb7jqz8m] {
    display: inline-block;
    width: 10px;
    height: 10px;
    padding: 0;
    margin-right: 6px;
    vertical-align: middle;
    border-radius: 2px;
    border-width: 1px;
    border-style: solid;
    /* hide the &#9632; glyph — background color IS the dot */
    font-size: 0;
    line-height: 0;
    color: transparent;
    overflow: hidden;
    cursor: pointer;
}

.dg-content .mu-table td .dg-file-btn[b-tyvb7jqz8m],
.dg-content .mu-table td .dg-uploaded[b-tyvb7jqz8m],
.dg-content .mu-table td .dg-uploaded-by[b-tyvb7jqz8m] {
    line-height: 1.2;
}

.dg-content .mu-table td .dg-uploaded-by[b-tyvb7jqz8m] {
    display: block;
    margin-top: 1px;
}

/* ── Extension <select> — was a bare native <select> (no mu-input class),
   so it rendered with the browser's default arrow instead of matching
   DocumentTypeDropdown's custom chevron. mu-input alone still leaves the
   native arrow showing (mu-input is written for text inputs), so this page
   draws its own chevron and hides the native one, matching the other
   dropdown's look. */
.dg-ext-select[b-tyvb7jqz8m] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 30px;
    cursor: pointer;
}

    .dg-ext-select[b-tyvb7jqz8m]::-ms-expand {
        display: none;
    }

/* ═════════════════════════════════════════════════════════════════════
   Filter drawer — master look (masters-forms.css)
   ═════════════════════════════════════════════════════════════════════ */

/* Add Gen Doc — full-width master button under the ADD NEW section bar */
.dg-addgen-btn[b-tyvb7jqz8m] {
    width: 100%;
}

    .dg-addgen-btn i[b-tyvb7jqz8m] {
        color: #1ab99a;
    }

/* From / To date boxes — GlobalDatepicker's .gdp-wrap restyled to the
   master text-box look (.uf-input / .mu-fld input): 32px, #cbd5e1 border,
   5px radius, blue focus ring. ::deep because .gdp-wrap is rendered by
   the child component. */
.dg-date-fld[b-tyvb7jqz8m]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .dg-date-fld[b-tyvb7jqz8m]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .dg-date-fld[b-tyvb7jqz8m]  .gdp-wrap:focus,
    .dg-date-fld[b-tyvb7jqz8m]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .dg-date-fld[b-tyvb7jqz8m]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.dg-date-fld[b-tyvb7jqz8m]  .gdp-icon {
    color: #1a56a7;
}

.dg-date-fld[b-tyvb7jqz8m]  .gdp-value {
    font-weight: 400;
}

/* Calendar (GreenCalendarPicker) + clear-date "C" buttons: same 32px
   height, master border/radius, so they line up with the date box. */
.dg-date-fld .gcp-trigger[b-tyvb7jqz8m],
.dg-date-fld[b-tyvb7jqz8m]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .dg-date-fld .gcp-trigger:hover[b-tyvb7jqz8m],
    .dg-date-fld[b-tyvb7jqz8m]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Login box — master .uf-input look forced through ::deep in case
   LoginAutofill's own scoped CSS restyles its <input>. */
.dg-login-fld[b-tyvb7jqz8m]  input {
    width: 100%;
    height: 32px;
    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;
    transition: border-color 0.12s, box-shadow 0.12s;
}

    .dg-login-fld[b-tyvb7jqz8m]  input::placeholder {
        color: #94a3b8;
    }

    .dg-login-fld[b-tyvb7jqz8m]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
    }

/* ── SELECT section — 2x2 checkbox grid:
       row 1:  [☐ Doc List]      [☐ Doc Tiles]
       row 2:  [☐ Voucher Docs]  [☐ General Docs]
   Two equal columns, every cell left-aligned, so the column-1 boxes sit
   exactly above each other and the column-2 boxes do too. Label/input
   margins zeroed (!important) because global label / bootstrap rules add
   margin-bottom / inline-block that push rows and boxes out of line. ── */
.dg-sel-grid[b-tyvb7jqz8m] {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-rows: 22px;
    column-gap: 12px;
    row-gap: 10px;
    align-items: center;
    justify-items: start;
    width: 100%;
}

    .dg-sel-grid > .uf-chk[b-tyvb7jqz8m] {
        display: flex !important;
        align-items: center;
        gap: 8px;
        width: 100%;
        height: 22px;
        margin: 0 !important;
        padding: 0 !important;
        font-size: 13px;
        font-weight: 400;
        line-height: 1;
        color: #1a2537;
        white-space: nowrap;
        cursor: pointer;
    }

        .dg-sel-grid > .uf-chk > input[type="checkbox"][b-tyvb7jqz8m] {
            width: 15px;
            height: 15px;
            flex: 0 0 15px;
            margin: 0 !important;
            padding: 0;
            vertical-align: middle;
            position: static;
        }

/* First demarcator (SELECT) sits flush under the drawer header — cancels
   .mu-drawer-body's 18px top padding for that bar only. */
.mu-drawer-body > .mu-drawer-section:first-child[b-tyvb7jqz8m] {
    margin-top: -18px;
}

/* Doc Type dropdown — text was clipped at the bottom ("--Doc Type--"
   descenders cut): master's 32px height + 6px top/bottom padding left too
   little room for the component's own font/line-height. Vertical padding
   removed so the browser centres the text in the 32px box; right padding
   keeps clear of the chevron. ::deep — <select> is rendered by
   DocumentTypeDropdown. Extension select gets the same box for a match. */
.dg-doctype-fld[b-tyvb7jqz8m]  select,
.mu-fld .dg-ext-select[b-tyvb7jqz8m] {
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    box-sizing: border-box;
}
/* /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.

   Header (bspl-title-block) matches ITB/Daybook. Footer
   (bspl-footer/bspl-foot-btn/bspl-footer-count), pagination
   (db-pagination/db-page-btn) and the rows-per-page control
   (mu-pagesize-wrap/mu-pagesize/mu-pagesize-caret) all come from the
   same shared classes ITB uses — no tb2-specific footer/pagination
   CSS needed any more (removed below). The tb2-btnbar mode/period
   button bar is functionally different from ITB's view tabs (these
   are filters, not view switches), so it keeps its own card/box, but
   .tb2-btn is now re-skinned to the same teal pill look as db-tab.
   ═══════════════════════════════════════════════════════════════ */
.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: 3px 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;
}

/* Pill / teal-active style — matches db-tab (ITB/Daybook) look. */
.tb2-btn[b-q3cgykc38x] {
    background: #fff;
    border: 1px solid #d6dbe0;
    color: #555;
    border-radius: 3px;
    padding: 5px 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    cursor: pointer;
}

    .tb2-btn.tb2-btn-sm[b-q3cgykc38x] {
        padding: 5px 14px;
    }

    .tb2-btn.active[b-q3cgykc38x] {
        background: #1ab99a;
        color: #fff;
        border-color: #1ab99a;
    }

    /* Right-side period group only (Y/Q/M/1Y/2Y — carries tb2-btn-sm, the left
       CB ONLY/OB CB/5 COLUMN group doesn't) — active state uses #306b9c instead
       of the shared teal above. Same specificity shape as .tb2-btn.active, just
       scoped with the extra .tb2-btn-sm class so it wins by selector order and
       leaves the left group's active color alone. */
    .tb2-btn.tb2-btn-sm.active[b-q3cgykc38x] {
        background: #306b9c;
        color: #fff;
        border-color: #306b9c;
    }

    .tb2-btn:hover:not(.active):not(:disabled)[b-q3cgykc38x] {
        background: #f5f7fa;
        border-color: #1ab99a;
        color: #1ab99a;
    }

    .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] {
    border: 1px solid #e5e8ec;
    border-radius: 4px;
    overflow: hidden;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 10px 16px;
}

.tb2-toolbar[b-q3cgykc38x] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    padding: 10px 14px;
    font-size: 13px;
    color: #555;
    flex-wrap: wrap;
    gap: 8px;
    flex-shrink: 0;
}

.tb2-search-input[b-q3cgykc38x] {
    border: 1px solid #d6dbe0;
    border-radius: 3px;
    padding: 3px 8px;
    margin-left: 6px;
}

/* Rows-per-page control — sits to the right of the pagination in the
   footer, e.g. "100 / page". Wrapper positions the SVG caret over the
   native select. Same pattern as ITB. */
.tb2-page .mu-pagesize-wrap[b-q3cgykc38x],
.mu-pagesize-wrap[b-q3cgykc38x] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

/*.mu-pagesize {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding: 6px 28px 6px 14px;
    border: 1px solid #d6dbe0;
    border-radius: 999px;
    background: #f7f8fa;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: #1ab99a;
    cursor: pointer;
}
*/
/* .mu-pagesize:focus {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }*/

.mu-pagesize-caret[b-q3cgykc38x] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: #767b82;
    pointer-events: none;
}

.bspl-footer-right[b-q3cgykc38x] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.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;
}
/* Non-frozen body cells had no background of their own — only the frozen #/LedCode/
   Name cells got one (needed so sticky positioning shows an opaque cell). Odd rows
   have no background anywhere up the chain either, so those cells showed the page's
   grey (.tb2-page) through them instead of white, looking inconsistent next to the
   frozen columns. Give every body cell the same white/zebra fill the frozen columns
   already have. */
.tb2-table tbody td[b-q3cgykc38x] {
    background: #fff;
}

.tb2-table tbody tr.tb2-row-even td[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-footer-row-toggle .tb2-footer-letter[b-q3cgykc38x] {
    text-align: left;
    padding-left: 20px;
}

/*//////////////////////////////////////////////////////////////////////////////////////*/

.tb2-footer-row-toggle[b-q3cgykc38x] {
    cursor: pointer;
    user-select: none;
}

    .tb2-footer-row-toggle:hover .tb2-footer-toggle[b-q3cgykc38x] {
        color: #1a73e8;
    }

.tb2-footer-chev[b-q3cgykc38x] {
    font-size: 10px;
    width: 12px;
    margin-right: 4px;
}

/* collapsed: thin strip, chevron only */
.tb2-footer-row-min[b-q3cgykc38x] {
    background-color: #eaf3fb;
}

    .tb2-footer-row-min > span[b-q3cgykc38x] {
        padding-top: 0;
        padding-bottom: 0;
        line-height: 11px;
        font-size: 10px;
    }

table.tb2-table:not(.tb2-group-table) + .tb2-sticky-footer .tb2-footer-row-min > span[b-q3cgykc38x] {
    background: #eaf3fb;
}

/* row C collapsed: hide the line above it (B/C) and the line below it (C/D) */
.tb2-footer-row + .tb2-footer-row.tb2-footer-row-min[b-q3cgykc38x],
.tb2-footer-row-min + .tb2-footer-row[b-q3cgykc38x] {
    border-top-color: transparent;
}

/*//////////////////////////////////////////////////////////////////////////////////////*/





.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[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;
    }

.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;
}


.gcp-trigger[b-q3cgykc38x] {
    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-q3cgykc38x] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-q3cgykc38x] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ═════════════════════════════════════════════════════════════════════
   FILTER DRAWER — master demarcator bars + master field look
   ═════════════════════════════════════════════════════════════════════ */

/* Section bars (master .mu-drawer-section). Master spacing assumes the
   default 16px body gap; this drawer's body gap is 5px (override above),
   so the bar's vertical margins are re-set here to keep clear space above
   and a small gap below. Side margins still cancel the 18px body padding
   so the bar runs edge to edge. */
.mu-drawer-body > .mu-drawer-section[b-q3cgykc38x] {
    margin: 12px -18px 6px;
}

/* Legacy colouring inside the COLUMNS labels */
.tb2-col-hint[b-q3cgykc38x] {
    font-size: 11.5px;
    color: #64748b;
}

.tb2-col-dr[b-q3cgykc38x] {
    color: #1976d2;
}

.tb2-col-cr[b-q3cgykc38x] {
    color: #b91c1c;
}

.le-chk input:disabled + label[b-q3cgykc38x] {
    opacity: .5;
    cursor: not-allowed;
}

/* Y / Q / M / 1Y / 2Y — master .mu-alpha buttons, a little space above */
.tb2-period-row[b-q3cgykc38x] {
    margin-top: 6px;
}

/* From / To date boxes — master text-box look (.uf-input / .mu-fld input:
   32px, #cbd5e1 border, 5px radius, blue focus ring). ::deep because
   .gdp-wrap is rendered by GlobalDatepicker. Same rules as BSPL /
   DocumentGrid / ChallanGrid / OrderGrid. */
.tb2-date-fld[b-q3cgykc38x]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .tb2-date-fld[b-q3cgykc38x]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .tb2-date-fld[b-q3cgykc38x]  .gdp-wrap:focus,
    .tb2-date-fld[b-q3cgykc38x]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .tb2-date-fld[b-q3cgykc38x]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.tb2-date-fld[b-q3cgykc38x]  .gdp-icon {
    color: #1a56a7;
}

.tb2-date-fld[b-q3cgykc38x]  .gdp-value {
    font-weight: 400;
}

.tb2-date-fld .gcp-trigger[b-q3cgykc38x],
.tb2-date-fld[b-q3cgykc38x]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .tb2-date-fld .gcp-trigger:hover[b-q3cgykc38x],
    .tb2-date-fld[b-q3cgykc38x]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Group / Depot / Query Type dropdowns — native arrow hidden, same grey
   SVG chevron as the other grids; 32px, no vertical padding (no clipping). */
.tb2-sel-fld select[b-q3cgykc38x] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
}

    .tb2-sel-fld select:focus[b-q3cgykc38x] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .tb2-sel-fld select:disabled[b-q3cgykc38x] {
        background-color: #f1f5f9 !important;
        color: #64748b;
        cursor: not-allowed;
    }
/* /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 — no page-scoped .db-pagination/.db-page-btn rules:
   same as GAINS_TB, shared global classes style it. Only .db-page-gap
   (ellipsis, ChallanGrid-only) lives here. ── */
.db-page-gap[b-d5exzse6n8] {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}

/* Footer right — same as GAINS_TB. */
.bspl-footer-right[b-d5exzse6n8] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.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;
}

/* Sortable headers — pointer + no wrap; numeric ones stay right-aligned */
.db-table th.mu-th-sort[b-d5exzse6n8] {
    cursor: pointer;
    white-space: nowrap;
    user-select: none;
}

    .db-table th.mu-th-sort i[b-d5exzse6n8] {
        margin-left: 4px;
        font-size: 12px;
        opacity: .75;
    }

.db-table th.ch-num.mu-th-sort[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;
    }

/* ── Print Gate Pass / Print Report — full-width drawer buttons below the trip row ── */
.ch-trip-full-btn[b-d5exzse6n8] {
    width: 100%;
}

/* ── Print Report dropdown — anchored under the button, same look and
   slide-down animation as DashboardLayout's .sb-profile-dropdown / .sb-pd-*.
   Vars carry fallbacks in case the global tokens aren't in scope. ── */
.ch-report-wrap[b-d5exzse6n8] {
    position: relative;
}

/* invisible click-catcher: click anywhere else closes the dropdown */
.ch-report-dd-catch[b-d5exzse6n8] {
    position: fixed;
    inset: 0;
    z-index: 199;
    background: transparent;
}

.ch-report-dd[b-d5exzse6n8] {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    background: var(--card, #fff);
    border-radius: var(--radius-lg, 10px);
    box-shadow: var(--shadow-lg, 0 10px 30px rgba(15, 23, 42, .18));
    z-index: 200;
    border: 1px solid var(--border, #e2e8f0);
    overflow: hidden;
    opacity: 0;
    transform: translateY(-8px) scaleY(0.95);
    transform-origin: top center;
    pointer-events: none;
    transition: opacity 0.2s var(--ease, ease), transform 0.2s var(--ease, ease);
}

    .ch-report-dd.open[b-d5exzse6n8] {
        opacity: 1;
        transform: translateY(0) scaleY(1);
        pointer-events: all;
    }

.ch-rd-header[b-d5exzse6n8] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border, #e2e8f0);
    background: linear-gradient(135deg, #f8fafc 0%, #f0f4f9 100%);
    font-size: 13px;
    font-weight: 700;
    color: var(--text, #1e293b);
}

    .ch-rd-header i[b-d5exzse6n8] {
        color: #1AB99A;
        font-size: 13px;
    }

.ch-rd-item[b-d5exzse6n8] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    cursor: pointer;
    font-size: 13px;
    color: var(--text, #1e293b);
    background: none;
    border: none;
    width: 100%;
    font-family: inherit;
    text-align: left;
    transition: background 0.12s, padding-left 0.12s;
}

    .ch-rd-item:hover[b-d5exzse6n8] {
        background: #f1f5f9;
        padding-left: 18px;
    }

    .ch-rd-item i[b-d5exzse6n8] {
        width: 17px;
        text-align: center;
        color: var(--muted, #64748b);
        font-size: 15px;
        flex-shrink: 0;
    }

.ch-rd-divider[b-d5exzse6n8] {
    height: 1px;
    background: var(--border, #e2e8f0);
    margin: 0;
}

@media (max-width: 767px) {
    .ch-page .mu-toolbar[b-d5exzse6n8] {
        flex-wrap: wrap;
    }

    .ch-party[b-d5exzse6n8] {
        max-width: 140px;
    }
}

/* ── Filter drawer — From / To date boxes, master text-box look
   (.uf-input / .mu-fld input: 32px, #cbd5e1 border, 5px radius, blue
   focus ring). ::deep because .gdp-wrap is rendered by GlobalDatepicker.
   Calendar trigger + "C" clear button matched to 32px so each row lines
   up. Same rules as BSPL / DocumentGrid date boxes. ── */
.ch-date-fld[b-d5exzse6n8]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ch-date-fld[b-d5exzse6n8]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ch-date-fld[b-d5exzse6n8]  .gdp-wrap:focus,
    .ch-date-fld[b-d5exzse6n8]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ch-date-fld[b-d5exzse6n8]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ch-date-fld[b-d5exzse6n8]  .gdp-icon {
    color: #1a56a7;
}

.ch-date-fld[b-d5exzse6n8]  .gdp-value {
    font-weight: 400;
}

.ch-date-fld[b-d5exzse6n8]  .gcp-trigger,
.ch-date-fld .ch-date-clear-btn[b-d5exzse6n8] {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .ch-date-fld[b-d5exzse6n8]  .gcp-trigger:hover,
    .ch-date-fld .ch-date-clear-btn:hover[b-d5exzse6n8] {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* "C" clear-date button — letterc.png inside the 32px master box (same
   look as BSPL / DocumentGrid's .gcp-trigger + .gcp-icon). */
.ch-date-fld .ch-date-clear-btn[b-d5exzse6n8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.ch-date-fld .gcp-icon[b-d5exzse6n8] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Voucher Type + Depot dropdowns — native arrow hidden, same grey SVG
   chevron as DocumentGrid's Doc Type / Extension and AddGeneralDocument.
   32px master box, no vertical padding (text centred, never clipped),
   right padding so text doesn't run under the chevron. ::deep covers the
   <select> inside DepotDropdown; the VType <select> is this page's own. ── */
.ch-sel-fld select[b-d5exzse6n8],
.ch-sel-fld[b-d5exzse6n8]  select {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
}

    .ch-sel-fld select:focus[b-d5exzse6n8],
    .ch-sel-fld[b-d5exzse6n8]  select:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ch-sel-fld select[b-d5exzse6n8]::-ms-expand,
    .ch-sel-fld[b-d5exzse6n8]  select::-ms-expand {
        display: none;
    }

/* Toast — master .mu-toast; lifted above the filter drawer (z 1200) so a
   message raised from inside the drawer (Make Trip validation) is visible. */
.ch-toast[b-d5exzse6n8] {
    z-index: 1400;
}

/* ── Title block parity with BSPL ─────────────────────────────────
   BSPL's heading/subtitle inherit font + colour from .bspl-page
   (Open Sans 13px #333). This page sits under .t-page/.mu-page instead,
   so re-establish that same inherited context on the title block only. */
.ch-page .bspl-title-block[b-d5exzse6n8] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

    .ch-page .bspl-title-block h1[b-d5exzse6n8],
    .ch-page .bspl-title-block .bspl-subtitle[b-d5exzse6n8] {
        font-family: inherit;
    }
/* /Components/Pages/Transactions/Inventory/ITB.razor.rz.scp.css */
/* =====================================================================
   ITB.razor.css
   Header (bspl-title-block) and filter drawer (mu-drawer/mu-fld) come
   from the shared common-page-chrome.css / masters-forms.css — same as
   MLedger. Top tab bar (db-tabbar/db-tab), footer
   (bspl-footer/bspl-foot-btn/bspl-footer-count), and pagination
   (db-pagination/db-page-btn) come straight from standard.css, same as
   Daybook — no ITB overrides on any of those. Only ITB-specific bits
   (gallery cards, numeric column alignment) remain fully custom here.

   Requires standard.css to be loaded on this page alongside
   masters-forms.css, e.g.:
       <link rel="stylesheet" href="css/standard.css" />
   ===================================================================== */

/* FILTERS button — "Hide zero values" is ON by default, so alone it isn't
   a filter the user applied. Green = only default active. Red (has-filter,
   from shared chrome CSS) = a real filter (group/item/other checkbox, or
   HideZeroValues switched OFF) is applied. Scoped to .itb-page only. */
.itb-page .bspl-filter-toggle.filter-default[b-e1uf9e3hb8] {
    background: #1ab99a !important;
    border-color: #1ab99a !important;
    color: #fff !important;
}

    .itb-page .bspl-filter-toggle.filter-default:hover[b-e1uf9e3hb8] {
        background: #159c82 !important;
        border-color: #159c82 !important;
    }

    .itb-page .bspl-filter-toggle.filter-default i[b-e1uf9e3hb8],
    .itb-page .bspl-filter-toggle.filter-default .bspl-filter-label[b-e1uf9e3hb8] {
        color: #fff !important;
    }

/* Page-end footer pinning — same pattern as MLedger/MGroup/Daybook/BSPL. */
.itb-page[b-e1uf9e3hb8] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    /* ITEM TRIAL BALANCE title — override the shared title weight for this
   page only (scoped to .itb-page so MLedger/BSPL/etc. keep their bold).
   Targets every plausible ancestor the shared CSS might key its own
   h1 rule off of, so this wins on specificity no matter which one
   that shared rule actually uses. */
    .itb-page .bspl-title-block h1[b-e1uf9e3hb8],
    .itb-page .bspl-title-row h1[b-e1uf9e3hb8],
    .itb-page .bspl-title-left h1[b-e1uf9e3hb8],
    .itb-page h1[b-e1uf9e3hb8] {
        font-weight: 300 !important;
    }

    .itb-page .bspl-footer-right[b-e1uf9e3hb8] {
        display: flex;
        align-items: center;
        flex-wrap: nowrap;
        gap: 16px;
    }

    .itb-page .mu-card[b-e1uf9e3hb8] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 10px 16px;
    }

    .itb-page .mu-table-wrap[b-e1uf9e3hb8] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* 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-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;
}

/* Rows-per-page control — sits to the right of the pagination in the
   footer, e.g. "100 / page". Wrapper positions the SVG caret over the
   native select. */
.itb-page .mu-pagesize-wrap[b-e1uf9e3hb8] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

/*.itb-page .mu-pagesize {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding: 6px 28px 6px 14px;
    border: 1px solid #d6dbe0;
    border-radius: 999px;
    background: #f7f8fa;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: #1ab99a;
    cursor: pointer;
}
*/
/*  .itb-page .mu-pagesize:focus {
        outline: none;
        border-color: #1ab99a;
        box-shadow: 0 0 0 3px rgba(26,185,154,0.12);
    }*/

.itb-page .mu-pagesize-caret[b-e1uf9e3hb8] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: #767b82;
    pointer-events: none;
}

.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 #E2E5E8;
    border-right: 1px solid #E2E5E8;
    /*border-bottom: 1px solid #E2E5E8;*/
    border-top: 0;
}

/* Data-row height matched to GAINS_TB's .tb2-table td (padding: 8px 12px) —
   ITB's tbody td had no padding of its own here, so it fell back to the
   shared mu-table padding, which is taller than TB's rows. tfoot keeps its
   own existing padding (4px 8px) / fixed height untouched. */
.itb-grid-table tbody td[b-e1uf9e3hb8] {
    padding: 8px 12px;
}

    /* Darker vertical separators at the group boundaries — Item Name|OB,
   OB|IN, IN|OUT, OUT|CB. Column order: # ,ItemCode, ItemName, OB Qty(4),
   OB Rate(5), OB Value(6), IN Qty(7)... so each group's first (Qty)
   column's left border is the one to darken. Everything else (right/bottom
   borders, all other columns) stays #E2E5E8 as before. */
    .itb-grid-table tbody td:nth-child(4)[b-e1uf9e3hb8],
    .itb-grid-table tbody td:nth-child(7)[b-e1uf9e3hb8],
    .itb-grid-table tbody td:nth-child(10)[b-e1uf9e3hb8],
    .itb-grid-table tbody td:nth-child(13)[b-e1uf9e3hb8],
    .itb-grid-table tfoot td:nth-child(4)[b-e1uf9e3hb8],
    .itb-grid-table tfoot td:nth-child(7)[b-e1uf9e3hb8],
    .itb-grid-table tfoot td:nth-child(10)[b-e1uf9e3hb8],
    .itb-grid-table tfoot td:nth-child(13)[b-e1uf9e3hb8] {
        border-left: 1px solid #9aa3ab;
    }

[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;
}

/* ── 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) {
    .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;
    }


/* ── Group Summary view (GetGroupInfo) ─────────────────────────────────
   Column order: 1 # | 2 Item Group | 3-4 OB (Qty, Value) | 5-6 IN |
   7-8 OUT | 9-10 CB. Two columns per group here (the item grid has
   three), so the group-boundary borders/dividers above (keyed to 3-col
   groups) are re-pointed for .itb-sum-table. Selectors carry both classes
   (.itb-grid-table.itb-sum-table) so they out-rank the item-grid rules
   without needing to touch them. ───────────────────────────────────── */
.itb-grid-table.itb-sum-table thead tr:first-child th:nth-child(2)[b-e1uf9e3hb8] {
    text-align: left;
    min-width: 220px;
}

.itb-grid-table.itb-sum-table thead tr:first-child th:nth-child(3)[b-e1uf9e3hb8] {
    text-align: center;
    min-width: 0;
}

.itb-grid-table.itb-sum-table thead tr:nth-child(2) th[b-e1uf9e3hb8] {
    border-left: 0 !important;
}

    /* Row 2: divider at the start of each group (Qty columns: 1st, 3rd, 5th, 7th th) */
    .itb-grid-table.itb-sum-table thead tr:nth-child(2) th:nth-child(2n+1)[b-e1uf9e3hb8] {
        border-left: 1px solid #eef0f2 !important;
    }

.itb-grid-table.itb-sum-table tbody td[b-e1uf9e3hb8] {
    border-left: 1px solid #E2E5E8;
}

    /* Darker separators: Item Group|OB, OB|IN, IN|OUT, OUT|CB */
    .itb-grid-table.itb-sum-table tbody td:nth-child(3)[b-e1uf9e3hb8],
    .itb-grid-table.itb-sum-table tbody td:nth-child(5)[b-e1uf9e3hb8],
    .itb-grid-table.itb-sum-table tbody td:nth-child(7)[b-e1uf9e3hb8],
    .itb-grid-table.itb-sum-table tbody td:nth-child(9)[b-e1uf9e3hb8] {
        border-left: 1px solid #9aa3ab;
    }


.db-tabbar[b-e1uf9e3hb8] {
    padding: 7px 16px 6px;
    margin-top: -16px;
    margin-bottom: -19px;
}

/* =====================================================================
   FILTER DRAWER — the drawer chrome (mu-drawer/mu-drawer-hdr/mu-fld/
   mu-drawer-foot/mu-btn incl. .primary, gdp-wrap, checkbox/radio accent)
   all come straight from masters-forms.css now — no ITB-only overrides
   for any of that, so it matches every other Masters/transaction page
   exactly. Only what masters-forms.css doesn't already have lives here:
   the teal section banners, the stacked/dashed-divider FORMAT layout,
   and the Batch Wise/Summary toggle buttons.
   ===================================================================== */

/* FILTER DRAWER — From/To date boxes, copied verbatim from BSPL.razor.css
   (.bspl-date-fld ::deep .gdp-wrap etc.) — same master text-box look
   (32px, #cbd5e1 border, 5px radius, blue focus ring) instead of the
   generic ::deep .gdp-wrap 32px guess this had before. Requires the
   .mu-fld wrapping each date field to also carry class="bspl-date-fld"
   in ITB.razor, exactly like BSPL.razor's markup. */
.bspl-date-fld[b-e1uf9e3hb8]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .bspl-date-fld[b-e1uf9e3hb8]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .bspl-date-fld[b-e1uf9e3hb8]  .gdp-wrap:focus,
    .bspl-date-fld[b-e1uf9e3hb8]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .bspl-date-fld[b-e1uf9e3hb8]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.bspl-date-fld[b-e1uf9e3hb8]  .gdp-icon {
    color: #1a56a7;
}

.bspl-date-fld[b-e1uf9e3hb8]  .gdp-value {
    font-weight: 400;
}

.bspl-date-fld .gcp-trigger[b-e1uf9e3hb8],
.bspl-date-fld[b-e1uf9e3hb8]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .bspl-date-fld .gcp-trigger:hover[b-e1uf9e3hb8],
    .bspl-date-fld[b-e1uf9e3hb8]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Section banners — "FORMAT" / "BATCH DETAILS" full-width teal strips. */
.itb-section-hdr[b-e1uf9e3hb8] {
    background: #1ab99a;
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 7px 14px;
    margin: 14px -16px 8px;
}

.itb-format-grid[b-e1uf9e3hb8] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px;
}

.itb-format-divider[b-e1uf9e3hb8] {
    border-top: 1px dashed #d6dbe0;
    margin: 6px 0;
}

/* Batch Wise / Summary toggle */
.itb-batch-toggle[b-e1uf9e3hb8] {
    display: flex;
    gap: 8px;
    margin: 4px 0 12px;
}

.itb-mode-btn[b-e1uf9e3hb8] {
    flex: 1;
    padding: 8px 10px;
    border: 1px solid #d6dbe0;
    border-radius: 4px;
    background: #fff;
    color: #55606e;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
}

    .itb-mode-btn.active[b-e1uf9e3hb8] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #08281f;
    }

.itb-req[b-e1uf9e3hb8] {
    color: #ff6b6b;
}

/* Show Report — same pill look as Batch Wise/Summary, just full width */
.itb-show-report[b-e1uf9e3hb8] {
    width: 100%;
    margin-top: 4px;
}

/* ── Item Info modal — uf-overlay/uf-modal/uf-header come from
   masters-forms.css; only width, backdrop and the small table live here ── */
.itb-info-modal[b-e1uf9e3hb8] {
    max-width: 560px;
    position: relative;
    z-index: 1;
}

/* Image popup (gallery photo click) */
.itb-card-photo-click[b-e1uf9e3hb8] {
    cursor: zoom-in;
}

.itb-img-modal[b-e1uf9e3hb8] {
    max-width: 640px;
}

/* Same layout as the gallery card (photo + code badge + 3 value boxes),
   enlarged; colours come from the master/teal palette. */
.itb-img-modal[b-e1uf9e3hb8] {
    max-width: 340px;
}

.itb-img-body[b-e1uf9e3hb8] {
    padding: 0;
}

.itb-img-photo[b-e1uf9e3hb8] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: #f8f8f9;
}

    .itb-img-photo img[b-e1uf9e3hb8] {
        width: 200px;
        height: 200px;
        object-fit: contain;
    }

.itb-img-boxes[b-e1uf9e3hb8] {
    display: flex;
    gap: 8px;
    padding: 12px 16px;
    background: #ececec;
    border-top: 1px solid #d5d5d5;
}

    .itb-img-boxes .itb-box[b-e1uf9e3hb8] {
        padding: 6px 8px;
        font-size: 13px;
    }

.itb-img-modal .itb-card-code[b-e1uf9e3hb8] {
    right: 14px;
    bottom: 12px;
    font-size: 12px;
}

.itb-info-wrap[b-e1uf9e3hb8] {
    border: 1px solid #e9edf5;
    border-radius: 6px;
    overflow: hidden;
}

.itb-info-table thead th[b-e1uf9e3hb8] {
    position: static;
    background: #306B9C;
    color: #fff;
    padding: 9px 14px;
}

.itb-info-total td[b-e1uf9e3hb8] {
    font-weight: 700;
    border-top: 2px solid #cbd5e1;
}

/* Footer (Clear Filters / GO) — no override here; masters-forms.css'
   .mu-drawer-foot + .mu-btn / .mu-btn.primary already give the white
   bg, flex-1 split, and solid-blue GO button. */
/* /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;
    }

/* ── Drawer report buttons (SLS / PUR Order Report) — full width, same
   as ChallanGrid's .ch-trip-full-btn. ── */
.og-full-btn[b-9nauk2vmio] {
    width: 100%;
}

/* Toast — master .mu-toast; lifted above the filter drawer (z 1200), same
   as ChallanGrid's .ch-toast, so the drawer's "Please select order" shows. */
.og-toast[b-9nauk2vmio] {
    z-index: 1400;
}

.og-inline-error[b-9nauk2vmio] {
    color: #b91c1c;
    font-size: 12.5px;
}

/* ── Footer pagination — same as GAINS_TB: footer (bspl-footer/
   bspl-foot-btn/bspl-footer-count) and pagination (db-pagination/
   db-page-btn) come from the shared masters-forms.css classes; the
   old local DocumentGrid-look overrides were removed so this grid
   matches TB exactly. Only the right-side flex row is page-local
   (copied verbatim from GAINS_TB.razor.css). ── */
.bspl-footer-right[b-9nauk2vmio] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

/* "…" between page windows — TB has no gap marker (shows 1–10 only),
   so this one stays local. */
.db-page-gap[b-9nauk2vmio] {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}

@media (max-width: 767px) {
    .og-tabbar-right[b-9nauk2vmio] {
        gap: 4px;
    }

    .og-party[b-9nauk2vmio] {
        max-width: 140px;
    }
}

/* ── Filter drawer — From / To date boxes, master text-box look
   (.uf-input / .mu-fld input: 32px, #cbd5e1 border, 5px radius, blue
   focus ring). ::deep because .gdp-wrap is rendered by GlobalDatepicker.
   Same rules as BSPL / DocumentGrid / ChallanGrid. ── */
.og-date-fld[b-9nauk2vmio]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .og-date-fld[b-9nauk2vmio]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .og-date-fld[b-9nauk2vmio]  .gdp-wrap:focus,
    .og-date-fld[b-9nauk2vmio]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .og-date-fld[b-9nauk2vmio]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.og-date-fld[b-9nauk2vmio]  .gdp-icon {
    color: #1a56a7;
}

.og-date-fld[b-9nauk2vmio]  .gdp-value {
    font-weight: 400;
}

/* Calendar trigger + "C" clear button (letterc.png) — 32px master box */
.og-date-fld[b-9nauk2vmio]  .gcp-trigger,
.og-date-fld .og-date-clear-btn[b-9nauk2vmio] {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .og-date-fld[b-9nauk2vmio]  .gcp-trigger:hover,
    .og-date-fld .og-date-clear-btn:hover[b-9nauk2vmio] {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.og-date-fld .og-date-clear-btn[b-9nauk2vmio] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.og-date-fld .gcp-icon[b-9nauk2vmio] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ── Depot + Status dropdowns — native arrow hidden, same grey SVG
   chevron as ChallanGrid / DocumentGrid. 32px master box, no vertical
   padding (text centred, never clipped), right padding clears the chevron. ── */
.og-sel-fld select[b-9nauk2vmio] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
}

    .og-sel-fld select:focus[b-9nauk2vmio] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .og-sel-fld select[b-9nauk2vmio]::-ms-expand {
        display: none;
    }

/* ── Title block parity with BSPL ─────────────────────────────────
   BSPL's heading/subtitle inherit font + colour from .bspl-page
   (Open Sans 13px #333). This page sits under .t-page/.mu-page instead,
   so re-establish that same inherited context on the title block only. */
.og-page .bspl-title-block[b-9nauk2vmio] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
    font-size: 13px;
    color: #333;
}

    .og-page .bspl-title-block h1[b-9nauk2vmio],
    .og-page .bspl-title-block .bspl-subtitle[b-9nauk2vmio] {
        font-family: inherit;
    }
/* /Components/Pages/Transactions/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 (QLedger.razor.css, Register.razor.css,
   Registergridshared.razor.css) don't apply here even though this page's
   markup reuses the same ".ql-" and ".bspl-" class names. Blazor CSS
   isolation compiles each .razor.css into rules scoped with that
   component's own generated attribute (e.g. ".ql-vnum[b-xxxxx]"), so
   QLedger's copy of a rule only ever matches QLedger's own rendered
   elements — every .ql-* class this page's markup uses needs its own copy
   of the rule, here. That's why the VNum square/link and empty/error
   states rendered completely unstyled before this file had its own
   .ql-vnum-cell / .ql-vsquare-btn / .ql-vnum / .ql-field / .ql-empty-state
   / .ql-error / .ql-nowrap rules. */

/* Page title — BSPL's own root wrapper is .bspl-page, not .mu-page, so it
   never picks up masters-forms.css's ".mu-page { font-family: Arial }"
   at all; its own .bspl-page sets 'Open Sans','Segoe UI',Arial instead.
   Both render the shared ".bspl-title-block h1 { font-weight:100 }" rule
   at the SAME weight, but Arial has no real thin/100 face (so it just
   falls back to ordinary Regular), while Segoe UI (Open Sans isn't
   actually installed/loaded, so this is what Windows resolves to) does
   ship a genuine light face — that's what made BSPL's title look visibly
   thinner than this page's despite an identical font-weight number.
   Matched here so the title reads the same weight visually as BSPL. */
.bspl-title-block h1[b-0pa3zh164j] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}
/* ── Sizing chain — a literal, faithful copy of QLedger.razor.css's actual
   cascade for these same selectors (QLedger is the confirmed-working
   reference: its header/footer stay pinned while only the grid scrolls).
   QLedger declares .ql-body's rules across TWO separate blocks in its file
   (an early one with display:flex/gap, a later CONSOLIDATED one with
   flex:1/min-height/padding) which plain CSS just merges — reproduced here
   as a single block with the same union of properties.

   The bug that broke this page for three rounds: .ql-body never had
   display:flex declared here at all (only flex:1; min-height:0, copied
   from just the later block). Flex properties on a CHILD only do anything
   when the PARENT is itself a flex container — so .mu-card's "flex:1 1
   auto" was a complete no-op, .mu-card grew to fit the entire table
   instead of being height-bounded, and the whole page (title, grid,
   footer) scrolled together as one block through DashboardLayout's
   .gains-content. Adding display:flex here is what actually fixes it;
   min-height:100vh below is NOT the culprit it was previously assumed to
   be — QLedger has that exact same line and works fine. */
.mu-page[b-0pa3zh164j] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.ql-body[b-0pa3zh164j] {
    display: flex;
    /*gap: 16px;*/
    flex: 1;
    min-height: 0;
    padding: 12px 16px 8px;
}

    .ql-body .mu-card[b-0pa3zh164j] {
        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
       sticks to its top (global masters-forms.css already gives
       .mu-table thead th position:sticky/top:0); the footer below is a
       sibling of .ql-body, not a child of .mu-table-wrap, so it never
       scrolls with the rows at all. */
    /* Grid scroll box — given its OWN height (viewport minus app top bar,
       page title and footer) so it is the element that scrolls, which is
       what lets the sticky header below pin to its top. Page layout itself
       is unchanged, so the grid always shows. */
    .ql-body .mu-table-wrap[b-0pa3zh164j] {
        flex: 1 1 auto;
        height: calc(100vh - 160px);
        min-height: 0;
        max-height: none;
        overflow: auto;
    }

    /* Sticky column header — pinned to the top of the grid's scroll box while
   the rows scroll under it (master gives the th sticky; restated with a
   higher z-index + solid background so row content never shows through). */
    .ql-body .mu-table thead th[b-0pa3zh164j] {
        position: sticky;
        top: 0;
        z-index: 5;
        background: #306B9C;
        color: #fff;
    }

/* 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. */

/* ── Footer — do NOT re-style .bspl-footer/.bspl-foot-btn/.bspl-footer-left/
   -right/-count here: masters-forms.css + standard.css already give every
   bspl-footer page (BSPL, QLedger, Register, ...) the exact same canonical
   look (40px bar, #f5f5f5 background, 20px icon buttons, right-aligned
   pager) via those plain global classes. Re-declaring them locally (as an
   earlier version of this file did — fixed 30x30 boxes, different
   background/padding) is exactly what made this page's footer buttons look
   different from every other grid's. The ONLY thing this page needs on top
   is the sticky-pin behavior via .ql-footer-fixed — copied verbatim from
   QLedger.razor.css (also declared there across two blocks: an early one
   with position/background/shadow, a later CONSOLIDATED one adding
   flex-shrink:0; merged here into one). ── */
.ql-footer-fixed[b-0pa3zh164j] {
    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;
}

/* ── VNum cell — square voucher-type dot (opens the VoucherReportPopup) +
   the VID/ChallanNo link (redirects into Production Entry). Copied
   verbatim from QLedger.razor.css. ── */
.ql-vnum-cell[b-0pa3zh164j] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ql-vsquare-btn[b-0pa3zh164j] {
    display: inline-flex;
    width: 10px;
    height: 10px;
    min-width: 10px;
    background-color: #1ab99a; /* fallback color; this grid always passes one explicitly */
    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-0pa3zh164j] {
        opacity: 0.75;
    }

.ql-vnum[b-0pa3zh164j] {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: #1a56a7;
    text-decoration: none;
    font-weight: 500;
}

    .ql-vnum:hover[b-0pa3zh164j] {
        text-decoration: underline;
    }

.ql-nowrap[b-0pa3zh164j] {
    white-space: nowrap;
}

/* ── Empty / error states (grid load failure, "no records") ── */
.ql-empty-state[b-0pa3zh164j] {
    text-align: center;
    color: #64748b;
    padding: 48px 16px;
    font-size: 13.5px;
}

    .ql-empty-state p[b-0pa3zh164j] {
        margin: 4px 0;
    }

    .ql-empty-state strong[b-0pa3zh164j] {
        color: #1a2537;
    }

.ql-error[b-0pa3zh164j] {
    color: #dc2626;
}

/* ── Filter drawer field labels ── */
.ql-field[b-0pa3zh164j] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12.5px;
    color: #64748b;
}

/* ── "L" button next to the Ledger field, opens <LedgerSearchPopup> —
   copied from Register.razor.css (same CSS-isolation reasoning as the
   file header comment: this page's own copy needed for its own markup). ── */
.ql-led-row[b-0pa3zh164j] {
    display: flex;
    gap: 6px;
}

    .ql-led-row input[b-0pa3zh164j] {
        flex: 1;
        min-width: 0;
    }

.ql-led-btn[b-0pa3zh164j] {
    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-0pa3zh164j] {
        background: #0f3d82;
    }

/* ═══════════════════════════════════════════════════════════════════
   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-0pa3zh164j] {
    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-0pa3zh164j] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-0pa3zh164j] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.gdp-field-row[b-0pa3zh164j] {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ═════════════════════════════════════════════════════════════════════
   FOOTER PAGINATION — same as GAINS_TB: no page-scoped pagination /
   page-button rules, shared global classes style it. Only .db-page-gap
   (ellipsis) lives here.
   ═════════════════════════════════════════════════════════════════════ */
.bspl-footer-right[b-0pa3zh164j] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.db-page-gap[b-0pa3zh164j] {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}

/* Page-size dropdown — defensive !important vs global select rules
   (width:100% etc.) that collapse it inside the flex footer. */
.pg-pgsize[b-0pa3zh164j] {
    position: relative;
    display: inline-flex !important;
    align-items: center;
    flex: 0 0 auto !important;
    width: auto !important;
    margin-right: 10px;
}

    .pg-pgsize select[b-0pa3zh164j] {
        display: inline-block !important;
        width: auto !important;
        min-width: 112px;
        max-width: none !important;
        height: 32px;
        margin: 0 !important;
        padding: 0 30px 0 12px;
        border: 1px solid #e5e7eb;
        border-radius: 6px;
        background: #fff;
        color: #1f2937;
        font-size: 13px;
        cursor: pointer;
        appearance: none;
        -webkit-appearance: none;
    }

        .pg-pgsize select:focus[b-0pa3zh164j] {
            outline: none;
            border-color: #1ab394;
        }

    .pg-pgsize i[b-0pa3zh164j] {
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        font-size: 10px;
        color: #6b7280;
        pointer-events: none;
    }

.bspl-footer-count[b-0pa3zh164j] {
    font-size: 12px;
    color: #666;
    margin-left: 4px;
}

@media (max-width: 640px) {
    .pg-pgsize select[b-0pa3zh164j] {
        min-width: 96px;
        height: 28px;
    }
}
/* /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 (Stock / Summary 1-3 / Item Print) ─ matches
   QLedger.razor's .ql-sections bar: white background, flush under the
   title block with a hairline border, no visible gap. .mu-page
   (masters-forms.css) puts a 16px flex gap between every top-level
   child ─ cancelled here with a matching negative margin-top, scoped to
   this page only. ── */
.ql-sections[b-grsw0ihapw] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px 6px 10px;
    margin-top: -16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.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) ── */
/* Grouping-tab toolbar ─ matches QLedger.razor's gray bar behind the
   white db-tab buttons (Daybook's .db-summary-tabbar look). Only used
   here, so it's safe to give it a background directly rather than
   touching the shared .mu-toolbar definition. */
.mu-toolbar[b-grsw0ihapw] {
    background: #f3f3f4;
    border-bottom: 1px solid #eee;
}

.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 — same treatment as QG.razor.css's .qg-balance
   (flat card, no shadow, 300–360px wide, fixed-layout table with
   Dr/Cr columns at 34% each, bold Closing row with a top rule). ── */
/*.ql-balance {
    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 {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid #e5e7eb;
}

.ql-bal-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .ql-bal-table th,
    .ql-bal-table td {
        padding: 10px 12px;
        white-space: nowrap;
        overflow: visible;
        font-size: 13px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

    .ql-bal-table th {
        text-align: left;
        color: #6b7280;
        font-weight: 500;
        background: #fafafa;
    }

        .ql-bal-table th.num, .ql-bal-table td.num {
            text-align: right;
            font-variant-numeric: tabular-nums;
            width: 34%;
        }

    .ql-bal-table td:first-child {
        width: 32%;
    }

        .ql-bal-table td.cr {
            color: #800000;
        }

.ql-bal-closing td {
    font-weight: 700;
}*/



/* ── 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). ── */
.ql-balance[b-grsw0ihapw] {
    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-grsw0ihapw] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid #e5e7eb;
}

.ql-bal-toggle[b-grsw0ihapw] {
    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-grsw0ihapw] {
        background: #f1f5f9;
    }

    .ql-bal-toggle svg[b-grsw0ihapw] {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
        transition: transform 0.15s;
    }

.ql-bal-table[b-grsw0ihapw] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

    .ql-bal-table th[b-grsw0ihapw],
    .ql-bal-table td[b-grsw0ihapw] {
        padding: 10px 12px;
        white-space: nowrap;
        overflow: visible;
        font-size: 13px;
        border-bottom: 1px solid #eee;
        background: #fff;
    }

    .ql-bal-table th[b-grsw0ihapw] {
        text-align: left;
        color: #6b7280;
        font-weight: 500;
        background: #fafafa;
    }

        .ql-bal-table th.num[b-grsw0ihapw], .ql-bal-table td.num[b-grsw0ihapw] {
            text-align: right;
            font-variant-numeric: tabular-nums;
            width: 34%;
        }

    .ql-bal-table td:first-child[b-grsw0ihapw] {
        width: 32%;
    }

    .ql-bal-table td.cr[b-grsw0ihapw] {
        color: #800000;
    }

.ql-bal-closing td[b-grsw0ihapw] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
    border-bottom: none;
}




    /* Panel-only Closing rule — scoped to .ql-bal-table so the grids'
       special rows (which also use .ql-bal-closing) are unaffected. */
    .ql-bal-table .ql-bal-closing td[b-grsw0ihapw] {
        background: #fff;
        border-top: 2px solid #dcdcdc;
        border-bottom: none;
    }

/* ── 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;
    }

    .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] {
        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;
    }
}

/* =====================================================================
   Column separator lines — same look as ITB.razor.css's grid:
   a light #E2E5E8 line between EVERY body/footer column, plus the
   existing darker silver line at each group boundary (OB | IN | OUT | CB,
   Inward | Outward | Closing …). The silver group rules above are more
   specific (nth-child / .ql-grp-end), so they still win over this base
   line; the last column stays open at the right edge.
   ===================================================================== */
.ql-stock-table tbody td[b-grsw0ihapw],
.ql-stock-table tfoot td[b-grsw0ihapw],
.ql-monthly-table tbody td[b-grsw0ihapw],
.ql-monthly-table tfoot td[b-grsw0ihapw],
.ql-ledgersum-table tbody td[b-grsw0ihapw],
.ql-ledgersum-table tfoot td[b-grsw0ihapw],
.ql-summary-table tbody td[b-grsw0ihapw],
.ql-summary-table tfoot td[b-grsw0ihapw] {
    border-right: 1px solid #E2E5E8;
}

.ql-stock-table tbody td:last-child[b-grsw0ihapw],
.ql-stock-table tfoot td:last-child[b-grsw0ihapw],
.ql-monthly-table tbody td:last-child[b-grsw0ihapw],
.ql-monthly-table tfoot td:last-child[b-grsw0ihapw],
.ql-ledgersum-table tbody td:last-child[b-grsw0ihapw],
.ql-ledgersum-table tfoot td:last-child[b-grsw0ihapw] {
    border-right: none;
}

/* Stock (item-wise) grid had no group separators yet — # | Date/Party |
   VNum/VType | Inward | Outward | Closing, same silver as the other grids. */
.ql-stock-table thead tr:first-child th[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

    .ql-stock-table thead tr:first-child th:last-child[b-grsw0ihapw] {
        border-right: none;
    }

.ql-stock-table thead tr:last-child th:nth-child(3)[b-grsw0ihapw],
.ql-stock-table thead tr:last-child th:nth-child(6)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(1)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(2)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(3)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(6)[b-grsw0ihapw],
.ql-stock-table tbody td:nth-child(9)[b-grsw0ihapw],
.ql-stock-table tfoot td:nth-child(1)[b-grsw0ihapw], /* "Totals" spans #/Date/VNum */
.ql-stock-table tfoot td:nth-child(4)[b-grsw0ihapw], /* Inward Amount */
.ql-stock-table tfoot td:nth-child(7)[b-grsw0ihapw] { /* Outward Amount */
    border-right: 1px solid silver;
}

/* =====================================================================
   Item-wise (Stock) grid — column alignment fix.
   thead / tbody / tfoot are three separate table boxes (see the
   flex/scroll-split block above), so two things pushed them apart:

   1) tbody's vertical scrollbar makes the body narrower than the header
      and footer. Fix: tbody always reserves a fixed 8px scrollbar, and
      thead/tfoot are made exactly that much narrower.

   2) With table-layout:fixed, the header takes its column widths from its
      FIRST row only — where Inward/Outward/Closing are colspan="3" cells
      of 23% — and splits each one evenly (7.67% per column). The body
      used 8% / 7% / 8% instead, so Qty/Rate/Amount drifted. Fix: body and
      footer use the same even 23% / 3 split as the header.
   ===================================================================== */
.ql-stock-table[b-grsw0ihapw] {
    --ql-sb: 8px;
}

    .ql-stock-table tbody[b-grsw0ihapw] {
        overflow-y: scroll; /* always reserve the gutter, even with few rows */
    }

        .ql-stock-table tbody[b-grsw0ihapw]::-webkit-scrollbar {
            width: var(--ql-sb);
        }

        .ql-stock-table tbody[b-grsw0ihapw]::-webkit-scrollbar-thumb {
            background: #c5ccd6;
            border-radius: 4px;
        }

        .ql-stock-table tbody[b-grsw0ihapw]::-webkit-scrollbar-track {
            background: transparent;
        }

    .ql-stock-table thead[b-grsw0ihapw],
    .ql-stock-table tfoot[b-grsw0ihapw] {
        width: calc(100% - var(--ql-sb));
    }

/* Firefox ignores ::-webkit-scrollbar — its "thin" scrollbar is also 8px. */
@supports (-moz-appearance: none) {
    .ql-stock-table tbody[b-grsw0ihapw] {
        scrollbar-width: thin;
    }
}

/* Qty / Rate / Amount — even split of each 23% group, same as the header. */
.ql-stock-table tbody td:nth-child(n+4)[b-grsw0ihapw],
.ql-stock-table tfoot td:nth-child(n+2)[b-grsw0ihapw] {
    width: calc(23% / 3);
}


/* Stock grid — let ::-webkit-scrollbar (8px) apply again in Chrome/Edge.
   A global scrollbar-color / scrollbar-width disables it, so the body's
   scrollbar ends up wider than the 8px gutter on thead/tfoot. */
@supports not (-moz-appearance: none) {
    .ql-stock-table tbody[b-grsw0ihapw] {
        scrollbar-width: auto;
        scrollbar-color: auto;
    }
}
/* Page title — same thin look as BSPL's "BALANCE SHEET" title.
   Explicit Light face + !important so a heavier inherited h1 weight
   can't win over the weight:100 rule at the top of this file. */
.bspl-title-block .bspl-title-left h1[b-grsw0ihapw] {
    font-family: "Segoe UI Light", "Segoe UI", sans-serif !important;
    font-weight: 300 !important;
    letter-spacing: 0.5px;
}

/* Balance panel — match QLedger.
   1) QLedger's .ql-body has 12px 16px 8px padding; QItem's had none, so
      the panel sat flush against the right edge (and .ql-body's
      overflow:hidden clipped its border).
   2) QLedger bolds the Balance/Dr/Cr header row (white bg, top line) and
      the Opening row (2px top line) via .ql-bal-opening1 / .ql-bal-opening.
      Same look here, targeted by position so QItem.razor is untouched. */
.ql-body[b-grsw0ihapw] {
    padding: 12px 16px 8px;
}

.ql-bal-table thead tr th[b-grsw0ihapw] {
    font-weight: 700;
    background: #fff;
    border-top: 1px solid #dcdcdc;
}

.ql-bal-table tbody tr:first-child td[b-grsw0ihapw] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
}

/* Filter drawer section separators — same as Daybook's filter pane
   (.fp-section / .fp-section-hdr): a teal uppercase header bar above
   each group, 18px between groups. CSS-only (headers drawn with ::before),
   so QItem.razor is untouched.
   Groups: 1–2 = From/To date → "Date Range"; 3–4 = Item/Ledger. */
.mu-drawer-body > .ql-field:nth-child(1)[b-grsw0ihapw]::before,
.mu-drawer-body > .mu-fld:nth-child(3)[b-grsw0ihapw]::before {
    display: block;
    width: 100%;
    box-sizing: border-box;
    align-self: stretch;
    margin-bottom: 5px;
    padding: 9px 12px;
    background: #1ab99a;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: 4px;
}

.mu-drawer-body > .ql-field:nth-child(1)[b-grsw0ihapw]::before {
    content: "Date Range";
}

.mu-drawer-body > .mu-fld:nth-child(3)[b-grsw0ihapw]::before {
    content: "Item / Ledger";
}

.mu-drawer-body > .mu-fld:nth-child(3)[b-grsw0ihapw] {
    margin-top: 18px;
}

/* Filter drawer separators — full-width bars like Daybook's filter pane:
   the teal header runs edge to edge (square corners) while the fields
   stay indented. Overrides the rounded ::before headers above. */
.mu-drawer-body[b-grsw0ihapw] {
    padding-left: 0;
    padding-right: 0;
}

    .mu-drawer-body > .ql-field[b-grsw0ihapw],
    .mu-drawer-body > .mu-fld[b-grsw0ihapw] {
        padding-left: 18px;
        padding-right: 18px;
    }

.mu-drawer-body > .ql-field:nth-child(1)[b-grsw0ihapw]::before,
.mu-drawer-body > .mu-fld:nth-child(3)[b-grsw0ihapw]::before {
    width: auto;
    margin: 0 -18px 10px;
    padding: 10px 18px;
    border-radius: 0;
    font-weight: 600;
}

/* Filter drawer — remove the starting gap above the first section bar
   (DATE RANGE) so it sits flush under the drawer header. */
.mu-drawer-body[b-grsw0ihapw] {
    padding-top: 0;
}

    .mu-drawer-body > .ql-field:first-child[b-grsw0ihapw] {
        margin-top: 0;
    }

/* ── Title click + Change Item popup (QI.aspx #MDBOCB) ── */
.ql-title-click[b-grsw0ihapw] { cursor: pointer; }
.ql-title-click:hover[b-grsw0ihapw] { text-decoration: underline; }

.ql-item-modal[b-grsw0ihapw] {
    position: fixed;
    top: 28px;
    left: 50%;
    transform: translateX(-50%);
    width: 92vw;
    max-width: 500px;
    background: #fff;
    border-radius: 4px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
    z-index: 1001;
}

.ql-item-modal-hdr[b-grsw0ihapw] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 40px 14px 30px;
    border-bottom: 1px solid #e5e7eb;
}

    .ql-item-modal-hdr h2[b-grsw0ihapw] {
        margin: 0;
        font-size: 24px;
        font-weight: 300;
        color: #1ab99a;
    }

.ql-item-modal-body[b-grsw0ihapw] {
    padding: 20px 30px 40px 45px;
    background: #f8fafb;
}

.ql-item-modal-row[b-grsw0ihapw] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.ql-item-modal-input[b-grsw0ihapw] { flex: 1 1 auto; min-width: 0; }

.ql-item-modal-foot[b-grsw0ihapw] {
    height: 14px;
    border-top: 1px solid #e5e7eb;
}

/* ── Balance panel (OB / IN / Out / CB) — colours as in QI.aspx ── */
.ql-bal-table .bal-b[b-grsw0ihapw] { font-weight: 700; }
.ql-bal-table .bal-in[b-grsw0ihapw] { color: #1c84c6; }
.ql-bal-table .bal-out[b-grsw0ihapw] { color: #333; }
.ql-bal-table td:first-child[b-grsw0ihapw] { width: 22%; }
.ql-bal-table th.num[b-grsw0ihapw], .ql-bal-table td.num[b-grsw0ihapw] { width: 26%; }
.ql-balance[b-grsw0ihapw] { max-width: 420px; }

/* Balance panel — same header/Opening/Closing treatment as QLedger */
.ql-bal-opening1 th[b-grsw0ihapw] {
    font-weight: 700;
    background: #fff;
    border-top: 1px solid #dcdcdc;
}

.ql-bal-opening td[b-grsw0ihapw] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
}


/* ── Sortable column headings ── */
.ql-sort[b-grsw0ihapw] {
    cursor: pointer;
    user-select: none;
}

    .ql-sort:hover[b-grsw0ihapw] { text-decoration: underline; }
    .ql-sort.asc[b-grsw0ihapw]::after { content: " \25B2"; font-size: 9px; }
    .ql-sort.desc[b-grsw0ihapw]::after { content: " \25BC"; font-size: 9px; }

/* ══ Change Item popup — Daybook "Audit Comments" popup look (Edit Role style):
   light-teal gradient header with a left accent bar, plain teal ✕, green GO
   button, thin footer divider. Added last so it overrides the rules above. ══ */
.ql-item-modal[b-grsw0ihapw] {
    border-radius: 8px;
    box-shadow: 0 12px 36px rgba(0, 0, 0, .25);
    overflow: hidden;
    color: #1f2d3d;
    font-size: 13px;
}

.ql-item-modal-hdr[b-grsw0ihapw] {
    padding: 16px 22px;
    background: linear-gradient(90deg, #f3fbf8 0%, #dcf3eb 100%);
    border-left: 4px solid #1aa37a;
    border-bottom: 1px solid #e3efe9;
}

    .ql-item-modal-hdr h2[b-grsw0ihapw] {
        font-size: 17px;
        font-weight: 700;
        color: #136b5a;
        letter-spacing: .3px;
    }

.ql-item-modal .ql-voucher-modal-x[b-grsw0ihapw] {
    width: 28px;
    height: 28px;
    border-radius: 6px;
    color: #136b5a;
    font-size: 22px;
}

    .ql-item-modal .ql-voucher-modal-x:hover[b-grsw0ihapw] {
        background: rgba(19, 107, 90, .08);
    }

.ql-item-modal-body[b-grsw0ihapw] {
    padding: 20px 22px;
    background: #fff;
}

.ql-item-modal-row[b-grsw0ihapw] {
    align-items: center;
}

.ql-item-modal .ql-go[b-grsw0ihapw] {
    background: #1a8a44 !important;
    border: 1px solid #1a8a44 !important;
    color: #fff !important;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 18px;
}

    .ql-item-modal .ql-go:hover[b-grsw0ihapw] {
        background: #157538 !important;
        border-color: #157538 !important;
    }

.ql-item-modal-foot[b-grsw0ihapw] {
    height: auto;
    padding: 8px 22px;
    border-top: 1px solid #e3efe9;
    background: #fff;
}
.ql-item-modal[b-grsw0ihapw] {
    overflow: visible;
}

.ql-item-modal-hdr[b-grsw0ihapw] {
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
}

.ql-item-modal-foot[b-grsw0ihapw] {
    border-bottom-left-radius: 8px;
    border-bottom-right-radius: 8px;
}

.ql-item-modal-body[b-grsw0ihapw],
.ql-item-modal-row[b-grsw0ihapw],
.ql-item-modal-input[b-grsw0ihapw] {
    position: relative;
    z-index: 2;
}

/* =====================================================================
   Stock (Trans) grid — legacy QItem look for the Totals row, and no
   horizontal scrollbar between the last row and Totals.
   1) tbody is display:block with overflow-y:scroll, which makes the
      browser treat overflow-x as auto: a long amount (e.g. 26,480,610.39)
      spilling out of its fixed-width cell produced a horizontal scrollbar
      just above the Totals row. Horizontal scroll is switched off there;
      the whole grid (header, rows, Totals) scrolls sideways together in
      .mu-table-wrap instead, so that scrollbar sits below the Totals row.
   2) Totals row: legacy footer colours — row #376091, Inward #4171AB,
      Closing #2E5078 — white text, right-aligned under each column,
      qty / weight on two lines.
   ===================================================================== */
.ql-stock-table tbody[b-grsw0ihapw] {
    overflow-x: hidden;
}

/* Amounts stay on one line; the grid gets wider instead and the wrapper
   scrolls sideways, so the scrollbar sits below the Totals row. */
.ql-stock-table tbody td.num[b-grsw0ihapw],
.ql-stock-table tfoot td.num[b-grsw0ihapw] {
    white-space: nowrap;
}

.ql-stock-table[b-grsw0ihapw] {
    min-width: 1450px;
}

.mu-table-wrap:has(.ql-stock-table)[b-grsw0ihapw] {
    overflow-x: auto;
    overflow-y: hidden;
}

.ql-stock-table tfoot[b-grsw0ihapw] {
    margin-top: 0;
}

    .ql-stock-table tfoot td[b-grsw0ihapw] {
        background: #376091;
        color: #fff;
        font-weight: 700;
        vertical-align: middle;
        padding-top: 6px;
        padding-bottom: 6px;
        border-top: none;
    }

        .ql-stock-table tfoot td.num[b-grsw0ihapw] {
            text-align: right;
        }

        .ql-stock-table tfoot td:nth-child(1)[b-grsw0ihapw] {
            text-align: left;
        }

        /* Inward Qty / Rate / Amount */
        .ql-stock-table tfoot td:nth-child(2)[b-grsw0ihapw],
        .ql-stock-table tfoot td:nth-child(3)[b-grsw0ihapw],
        .ql-stock-table tfoot td:nth-child(4)[b-grsw0ihapw] {
            background: #4171AB;
        }

        /* Closing Qty / Rate / Amount */
        .ql-stock-table tfoot td:nth-child(8)[b-grsw0ihapw],
        .ql-stock-table tfoot td:nth-child(9)[b-grsw0ihapw],
        .ql-stock-table tfoot td:nth-child(10)[b-grsw0ihapw] {
            background: #2E5078;
        }

        .ql-stock-table tfoot td.num > div[b-grsw0ihapw] {
            line-height: 1.25;
        }

/* =====================================================================
   Ledger Wise tab — legacy QItem "L" view (QItemSupport Display(), diff L):
   header #2E5078 with IN group #4171AB / OUT group #376091, group titles
   centred; 30px rows in alternating colours; ledger names wrap instead of
   being cut; Qty / Rate / Value right-aligned at 11px with the weight in
   teal under the qty; a silver line after Party/Ledger and each Value.
   ===================================================================== */
.ql-ls-legacy thead th[b-grsw0ihapw] {
    background: #2E5078;
    color: #fff;
}

    .ql-ls-legacy thead th.ql-ls-grp[b-grsw0ihapw] {
        text-align: center;
        border-bottom: 1px solid silver;
    }

.ql-ls-legacy thead tr:first-child th.ql-ls-in[b-grsw0ihapw],
.ql-ls-legacy thead tr:last-child th:nth-child(-n+3)[b-grsw0ihapw] {
    background: #4171AB;
}

.ql-ls-legacy thead tr:first-child th.ql-ls-out[b-grsw0ihapw],
.ql-ls-legacy thead tr:last-child th:nth-child(n+4)[b-grsw0ihapw] {
    background: #376091;
}

.ql-ls-legacy thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-ls-legacy thead tr:first-child th.ql-ls-grp[b-grsw0ihapw],
.ql-ls-legacy thead tr:last-child th:nth-child(3)[b-grsw0ihapw],
.ql-ls-legacy thead tr:last-child th:nth-child(6)[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-ls-legacy tbody tr[b-grsw0ihapw] {
    height: 30px;
}

    .ql-ls-legacy tbody tr:nth-child(odd) td[b-grsw0ihapw] {
        background: #fff;
    }

    .ql-ls-legacy tbody tr:nth-child(even) td[b-grsw0ihapw] {
        background: #f3f6fa;
    }

.ql-ls-legacy tbody td[b-grsw0ihapw] {
    vertical-align: middle;
}

    .ql-ls-legacy tbody td.num[b-grsw0ihapw] {
        font-size: 11px;
        text-align: right;
        white-space: nowrap;
    }

    .ql-ls-legacy tbody td.ql-ledger-name[b-grsw0ihapw] {
        white-space: normal;
        word-break: break-word;
        overflow: visible;
        text-overflow: clip;
        border-right: 1px solid silver;
    }

    .ql-ls-legacy tbody td.ql-ls-val[b-grsw0ihapw] {
        border-right: 1px solid silver;
        padding-right: 5px;
    }

.ql-ls-legacy .ql-ls-wt[b-grsw0ihapw] {
    display: block;
    color: #008b8b;
}

/* Filter drawer — legacy QI options under the Item box:
   Show Running Balance checkbox, then Show Report 1/2 and Regenerate
   Valuation/CB as full-width buttons, one per row like the legacy panel. */
.mu-drawer-body > .ql-opt-fld[b-grsw0ihapw] {
    margin-top: 6px;
}

.ql-opt-chk[b-grsw0ihapw] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    cursor: pointer;
}

    .ql-opt-chk input[b-grsw0ihapw] {
        accent-color: #1ab99a;
    }

.mu-drawer-body > .ql-opt-btns[b-grsw0ihapw] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

    .mu-drawer-body > .ql-opt-btns .mu-btn[b-grsw0ihapw] {
        width: 100%;
        height: 32px;
        font-size: 12.5px;
    }

/* Tab buttons — short labels on narrower screens:
   Trans → T, Day → D, Month → M, Ledger wise → L,
   Summary 1/2/3 → SUM1/SUM2/SUM3. Full name stays in the tooltip. */
.ql-tab-abbr[b-grsw0ihapw] {
    display: none;
}

@media (max-width: 1366px) {
    .ql-tab-full[b-grsw0ihapw] {
        display: none;
    }

    .ql-tab-abbr[b-grsw0ihapw] {
        display: inline;
    }
}

/* =====================================================================
   Summary 1 — alignment. With 5 groups × Qty/Rate/Amt squeezed into
   percentage columns, each sub-column was ~55px, so "75,000.00" spilled
   into the next column and the Totals were cut ("75,000.("). Columns now
   have fixed widths (set in the markup's <colgroup>), every number stays on
   one line right-aligned in its own cell, group titles are centred over
   their three columns, and the grid scrolls sideways when wider than the
   card — the scrollbar sits under the Totals row.
   ===================================================================== */
.mu-table-wrap:has(.ql-sum1)[b-grsw0ihapw] {
    overflow-x: auto;
}

.ql-sum1 thead th[b-grsw0ihapw],
.ql-sum1 tbody td[b-grsw0ihapw],
.ql-sum1 tfoot td[b-grsw0ihapw] {
    padding: 4px 8px;
    vertical-align: middle;
}

    .ql-sum1 thead tr:first-child th.num[b-grsw0ihapw] {
        text-align: center;
    }

    .ql-sum1 thead tr:last-child th.num[b-grsw0ihapw],
    .ql-sum1 tbody td.num[b-grsw0ihapw],
    .ql-sum1 tfoot td.num[b-grsw0ihapw] {
        text-align: right;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: clip;
        font-variant-numeric: tabular-nums;
    }

    .ql-sum1 tbody tr.ql-bal-closing td[b-grsw0ihapw] {
        font-weight: 700;
        border-top: 1px solid silver;
    }

    .ql-sum1 tfoot td[b-grsw0ihapw] {
        border-top: 1px solid silver;
    }

        .ql-sum1 tfoot td:first-child[b-grsw0ihapw] {
            text-align: left;
        }

/* =====================================================================
   Summary 1 — same layout and look as the Stock (Trans) grid:
   1) Totals pinned at the bottom of the card: the table is a flex column,
      thead / tfoot are fixed-height table boxes and ONLY tbody scrolls
      (8px scrollbar gutter, thead/tfoot narrowed by the same 8px so the
      columns stay lined up), exactly like .ql-stock-table.
   2) Because thead / tbody / tfoot are separate table boxes, # (44px) and
      Party/Ledger (240px) are pinned on every row; the Qty/Rate/Amt
      columns share the rest evenly in all three.
   3) Lines: light #E2E5E8 between every cell, silver after # and
      Party/Ledger and at the end of each group (PUR | SLS | DRN …),
      silver between the two header rows.
   4) Totals row: legacy footer — #376091, white bold text.
   ===================================================================== */
.mu-table-wrap:has(.ql-sum1)[b-grsw0ihapw] {
    overflow-y: hidden;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ql-sum1[b-grsw0ihapw] {
    --ql-sb: 8px;
    display: flex;
    flex-direction: column;
    height: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

    .ql-sum1 thead[b-grsw0ihapw],
    .ql-sum1 tfoot[b-grsw0ihapw] {
        display: table;
        width: calc(100% - var(--ql-sb));
        table-layout: fixed;
        flex: 0 0 auto;
        position: static;
    }

        .ql-sum1 thead th[b-grsw0ihapw],
        .ql-sum1 tfoot td[b-grsw0ihapw] {
            position: static;
        }

    .ql-sum1 tbody[b-grsw0ihapw] {
        display: block;
        flex: 1 1 auto;
        overflow-y: scroll;
        overflow-x: hidden;
    }

        .ql-sum1 tbody tr[b-grsw0ihapw] {
            display: table;
            width: 100%;
            table-layout: fixed;
        }

        .ql-sum1 tbody[b-grsw0ihapw]::-webkit-scrollbar {
            width: var(--ql-sb);
        }

        .ql-sum1 tbody[b-grsw0ihapw]::-webkit-scrollbar-thumb {
            background: #c5ccd6;
            border-radius: 4px;
        }

        .ql-sum1 tbody[b-grsw0ihapw]::-webkit-scrollbar-track {
            background: transparent;
        }

@supports (-moz-appearance: none) {
    .ql-sum1 tbody[b-grsw0ihapw] {
        scrollbar-width: thin;
    }
}

/* Fixed # and Party/Ledger widths on every section */
.ql-sum1 thead tr:first-child th:nth-child(1)[b-grsw0ihapw],
.ql-sum1 tbody td:nth-child(1)[b-grsw0ihapw] {
    width: 44px;
}

.ql-sum1 thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-sum1 tbody td:nth-child(2)[b-grsw0ihapw] {
    width: 240px;
}

.ql-sum1 tfoot td:first-child[b-grsw0ihapw] { /* "Totals" spans # + Party/Ledger */
    width: 284px;
}

/* Lines — light between cells, silver at the fixed columns and group ends */
.ql-sum1 tbody td[b-grsw0ihapw],
.ql-sum1 tfoot td[b-grsw0ihapw] {
    border-right: 1px solid #E2E5E8;
    border-bottom: 1px solid #eef0f2;
}

.ql-sum1 thead tr:first-child th[b-grsw0ihapw] {
    border-right: 1px solid silver;
    border-bottom: 1px solid silver;
}

.ql-sum1 thead tr:first-child th:nth-child(1)[b-grsw0ihapw],
.ql-sum1 thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-sum1 tbody td:nth-child(1)[b-grsw0ihapw],
.ql-sum1 tbody td:nth-child(2)[b-grsw0ihapw],
.ql-sum1 tfoot td:first-child[b-grsw0ihapw],
.ql-sum1 .ql-grp-end[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-sum1 thead tr:first-child th:last-child[b-grsw0ihapw],
.ql-sum1 thead tr:last-child th:last-child[b-grsw0ihapw],
.ql-sum1 tbody td:last-child[b-grsw0ihapw],
.ql-sum1 tfoot td:last-child[b-grsw0ihapw] {
    border-right: none;
}

/* OB / CB rows */
.ql-sum1 tbody tr.ql-bal-closing td[b-grsw0ihapw] {
    font-weight: 700;
    border-top: none;
    background: #f3f6fa;
}

/* Totals row — legacy footer colour, like the Stock grid */
.ql-sum1 tfoot td[b-grsw0ihapw] {
    background: #376091;
    color: #fff;
    font-weight: 700;
    border-top: none;
    padding-top: 8px;
    padding-bottom: 8px;
}

    .ql-sum1 tfoot td.cr[b-grsw0ihapw] {
        color: #fff;
    }

/* Summary 1 — row spacing and Totals colours matched to the Stock grid:
   44px rows with 10px padding, numbers centred vertically; Totals cells
   alternate the legacy group colours (#4171AB / #376091) per group, the
   "Totals" label cell stays #376091. */
.ql-sum1 tbody td[b-grsw0ihapw] {
    padding: 10px;
    height: 44px;
    vertical-align: middle;
}

.ql-sum1 thead th[b-grsw0ihapw] {
    padding: 10px;
    vertical-align: middle;
}

.ql-sum1 tfoot td[b-grsw0ihapw] {
    padding: 12px 10px;
    vertical-align: middle;
}

    .ql-sum1 tfoot td.ql-sg-0[b-grsw0ihapw] {
        background: #4171AB;
    }

    .ql-sum1 tfoot td.ql-sg-1[b-grsw0ihapw] {
        background: #376091;
    }

/* =====================================================================
   Summary 2 / Summary 3 — same footer, alignment, position and padding as
   Summary 1 (.ql-sum1). CSS only: both are the .ql-summary-table tables
   that are NOT .ql-sum1, so no markup changes.
   • Totals pinned at the bottom: flex column, only tbody scrolls (8px
     gutter; thead / tfoot narrowed by 8px so columns line up).
   • # 44px and Item/Party name 240px on every section ("Totals" 284px),
     remaining Qty / Rate / Amt columns share the rest evenly.
   • Lines: light #E2E5E8 between cells, silver after # and the name and at
     every group end; 44px rows with 10px padding.
   • Totals row: legacy footer colours — groups of 3 columns alternate
     #4171AB / #376091 (PUR | SLS | …; Summary 3's PROFIT_LOSS = #4171AB).
   ===================================================================== */
.mu-table-wrap:has(.ql-summary-table:not(.ql-sum1))[b-grsw0ihapw] {
    overflow-y: hidden;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ql-summary-table:not(.ql-sum1)[b-grsw0ihapw] {
    --ql-sb: 8px;
    display: flex;
    flex-direction: column;
    height: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

/* Summary 2 has many groups — keep the columns readable and scroll sideways */
.ql-summary-table:not(.ql-sum1):not(:has(.s3-header-row-1))[b-grsw0ihapw] {
    min-width: 1500px;
}

    .ql-summary-table:not(.ql-sum1) thead[b-grsw0ihapw],
    .ql-summary-table:not(.ql-sum1) tfoot[b-grsw0ihapw] {
        display: table;
        width: calc(100% - var(--ql-sb));
        table-layout: fixed;
        flex: 0 0 auto;
        position: static;
    }

        .ql-summary-table:not(.ql-sum1) thead th[b-grsw0ihapw],
        .ql-summary-table:not(.ql-sum1) tfoot td[b-grsw0ihapw] {
            position: static;
        }

    .ql-summary-table:not(.ql-sum1) tbody[b-grsw0ihapw] {
        display: block;
        flex: 1 1 auto;
        overflow-y: scroll;
        overflow-x: hidden;
    }

        .ql-summary-table:not(.ql-sum1) tbody tr[b-grsw0ihapw] {
            display: table;
            width: 100%;
            table-layout: fixed;
        }

        .ql-summary-table:not(.ql-sum1) tbody[b-grsw0ihapw]::-webkit-scrollbar {
            width: var(--ql-sb);
        }

        .ql-summary-table:not(.ql-sum1) tbody[b-grsw0ihapw]::-webkit-scrollbar-thumb {
            background: #c5ccd6;
            border-radius: 4px;
        }

        .ql-summary-table:not(.ql-sum1) tbody[b-grsw0ihapw]::-webkit-scrollbar-track {
            background: transparent;
        }

@supports (-moz-appearance: none) {
    .ql-summary-table:not(.ql-sum1) tbody[b-grsw0ihapw] {
        scrollbar-width: thin;
    }
}

/* Fixed # and name widths on every section */
.ql-summary-table:not(.ql-sum1) thead tr:first-child th:nth-child(1)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td:nth-child(1)[b-grsw0ihapw] {
    width: 44px;
}

.ql-summary-table:not(.ql-sum1) thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td:nth-child(2)[b-grsw0ihapw] {
    width: 240px;
}

.ql-summary-table:not(.ql-sum1) tfoot td:first-child[b-grsw0ihapw] {
    width: 284px;
}

/* Padding / alignment */
.ql-summary-table:not(.ql-sum1) thead th[b-grsw0ihapw] {
    padding: 10px;
    vertical-align: middle;
}

    .ql-summary-table:not(.ql-sum1) thead tr:first-child th.num[b-grsw0ihapw] {
        text-align: center;
    }

.ql-summary-table:not(.ql-sum1) tbody td[b-grsw0ihapw] {
    padding: 10px;
    height: 44px;
    vertical-align: middle;
}

.ql-summary-table:not(.ql-sum1) thead tr:last-child th.num[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td.num[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tfoot td.num[b-grsw0ihapw] {
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: clip;
    font-variant-numeric: tabular-nums;
}

/* Lines */
.ql-summary-table:not(.ql-sum1) tbody td[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tfoot td[b-grsw0ihapw] {
    border-right: 1px solid #E2E5E8;
    border-bottom: 1px solid #eef0f2;
}

.ql-summary-table:not(.ql-sum1) thead tr:first-child th[b-grsw0ihapw] {
    border-right: 1px solid silver;
    border-bottom: 1px solid silver;
}

.ql-summary-table:not(.ql-sum1) thead tr:first-child th:nth-child(1)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) thead tr:first-child th:nth-child(2)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td:nth-child(1)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td:nth-child(2)[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tfoot td:first-child[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) .ql-grp-end[b-grsw0ihapw] {
    border-right: 1px solid silver;
}

.ql-summary-table:not(.ql-sum1) thead tr:first-child th:last-child[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) thead tr:last-child th:last-child[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tbody td:last-child[b-grsw0ihapw],
.ql-summary-table:not(.ql-sum1) tfoot td:last-child[b-grsw0ihapw] {
    border-right: none;
}

/* OB / CB rows */
.ql-summary-table:not(.ql-sum1) tbody tr.ql-bal-closing td[b-grsw0ihapw] {
    font-weight: 700;
    border-top: none;
    background: #f3f6fa;
}

/* Totals row */
.ql-summary-table:not(.ql-sum1) tfoot td[b-grsw0ihapw] {
    background: #376091;
    color: #fff;
    font-weight: 700;
    border-top: none;
    padding: 12px 10px;
    vertical-align: middle;
}

    .ql-summary-table:not(.ql-sum1) tfoot td.cr[b-grsw0ihapw] {
        color: #fff;
    }

    .ql-summary-table:not(.ql-sum1) tfoot td:first-child[b-grsw0ihapw] {
        text-align: left;
    }

    /* 1st, 3rd, 5th… group of three columns (td 2-4, 8-10, …) */
    .ql-summary-table:not(.ql-sum1) tfoot td:nth-child(6n+2)[b-grsw0ihapw],
    .ql-summary-table:not(.ql-sum1) tfoot td:nth-child(6n+3)[b-grsw0ihapw],
    .ql-summary-table:not(.ql-sum1) tfoot td:nth-child(6n+4)[b-grsw0ihapw] {
        background: #4171AB;
    }
/* Summary 3 — Totals row styled like Summary 1 */
.ql-sum3 tfoot td[b-grsw0ihapw] {
    background: #376091;
    color: #fff;
    font-weight: 700;
    border-top: none;
    padding: 12px 10px;
    vertical-align: middle;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

    .ql-sum3 tfoot td:first-child[b-grsw0ihapw] {
        text-align: left;
    }

    .ql-sum3 tfoot td.cr[b-grsw0ihapw] {
        color: #fff;
    }

    .ql-sum3 tfoot td.ql-sg-0[b-grsw0ihapw] {
        background: #4171AB;
    }

    .ql-sum3 tfoot td.ql-sg-1[b-grsw0ihapw] {
        background: #376091;
    }

/* /Components/Pages/Transactions/Inventory/TripGrid.razor.rz.scp.css */
/* =====================================================================
   TripGrid.razor.css  (scoped)
   Header (bspl-title-block), footer (bspl-footer/bspl-foot-btn/
   bspl-footer-count), table (mu-table) and pagination (mu-nav/mu-pagenum/
   mu-pagesize) all come straight from the shared masters-forms.css /
   common-page-chrome.css — same as Bank Reconciliation / every Masters
   grid page. Only Trip-Grid-specific bits live here.
   ===================================================================== */

/* Page-end footer pinning — same pattern as BankReconciliation/ITB/MLedger. */
.trg-page[b-5vcgy0pppd] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .trg-page .bspl-title-block h1[b-5vcgy0pppd] {
        font-weight: 300 !important;
    }

    .trg-page .mu-card[b-5vcgy0pppd] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: 0px 16px;
    }

    .trg-page .trg-card .mu-table-wrap[b-5vcgy0pppd] {
        flex: 1;
        height: auto;
        overflow: auto;
        min-height: 200px;
    }

    .trg-page .bspl-footer-left[b-5vcgy0pppd] {
        display: flex;
        align-items: center;
        gap: 14px;
    }

    .trg-page .bspl-footer-right[b-5vcgy0pppd] {
        display: flex;
        align-items: center;
        gap: 12px;
        flex-wrap: nowrap;
    }

/* ═══════════ Filter toolbar ═══════════ */
[b-5vcgy0pppd] .trg-toolbar {
    display: flex !important;
    align-items: flex-end !important;
    justify-content: flex-start !important; /* beat shared .mu-toolbar space-between */
    flex-wrap: wrap;
    gap: 10px 14px !important;
    flex: 0 0 auto;
}

[b-5vcgy0pppd] .trg-fld {
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex: 0 0 150px;
    width: 150px;
}

    [b-5vcgy0pppd] .trg-fld > label {
        font-size: 12px;
        font-weight: 600;
        color: #1a2537;
    }

[b-5vcgy0pppd] .trg-fld-sm {
    flex: 0 0 120px;
    width: 120px;
}

[b-5vcgy0pppd] .trg-fld-xs {
    flex: 0 0 110px;
    width: 110px;
}

[b-5vcgy0pppd] .trg-fld-kw {
    flex: 1 0 120px;
    width: 120px;
    min-width: 0;
}

/* Buttons wrapper also carries base .trg-fld (for the flex layout/gap), so
   it inherited .trg-fld's width:150px — only flex-basis was overridden
   before, leaving the leftover width squeezing the 3-button row off the
   page. width:auto here is the actual fix. margin-left removed so the
   buttons sit right after Keyword instead of being pushed to the far
   right of the toolbar. */
[b-5vcgy0pppd] .trg-fld-act {
    flex: 0 0 auto;
    width: auto;
}

[b-5vcgy0pppd] .trg-act-row {
    display: flex;
    gap: 8px;
}

[b-5vcgy0pppd] .trg-back-btn {
    font-size: 12px;
}

/* GlobalDatepicker / CityStateCountryAutofill fill their trg-fld box */
[b-5vcgy0pppd] .trg-fld .gdp-field-block,
[b-5vcgy0pppd] .trg-fld .gdp-wrap {
    width: 100%;
}

/* ═══════════ Grid columns ═══════════ */
[b-5vcgy0pppd] .trg-th-chk {
    width: 40px;
    text-align: center;
}

[b-5vcgy0pppd] .trg-chk-cell {
    text-align: center;
}

[b-5vcgy0pppd] .trg-amt {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

[b-5vcgy0pppd] .trg-tripid {
    font-weight: 600;
    color: #1565c0;
}

[b-5vcgy0pppd] tr.row-selected > td {
    background: #eef4fd;
}

@media (max-width: 900px) {
    [b-5vcgy0pppd] .trg-fld {
        flex: 1 1 45%;
        width: auto;
    }

    [b-5vcgy0pppd] .trg-fld-act {
        margin-left: 0;
        width: 100%;
    }

        [b-5vcgy0pppd] .trg-fld-act .trg-act-row {
            width: 100%;
        }

            [b-5vcgy0pppd] .trg-fld-act .trg-act-row .mu-btn {
                flex: 1;
                justify-content: center;
            }
}

@media (max-width: 767px) {
    .trg-page .mu-card[b-5vcgy0pppd] {
        margin: 0 10px;
    }
}

/* ═══════════ Trip Report popup (legacy TripReport.aspx layout) ═══════════ */
[b-5vcgy0pppd] .trr-modal {
    max-width: 860px;
    width: 95vw;
}

[b-5vcgy0pppd] .trr-hdr-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-5vcgy0pppd] .trr-body {
    max-height: calc(100vh - 180px);
    overflow: auto;
    background: #f3f3f4;
    padding: 14px;
}

[b-5vcgy0pppd] .trr-sheet {
    background: #fff;
    border: 1px solid #000;
    padding: 18px 16px;
    margin: 0 auto 16px;
    max-width: 780px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    color: #000;
    box-sizing: border-box;
}

[b-5vcgy0pppd] .trr-site {
    text-align: center;
    font-size: 18px;
    font-weight: bold;
    padding-top: 10px;
}

[b-5vcgy0pppd] .trr-title {
    text-align: center;
    font-size: 17px;
    font-weight: bold;
    margin: 14px 0 18px;
}

[b-5vcgy0pppd] .trr-info {
    border-collapse: collapse;
    width: 100%;
}

    [b-5vcgy0pppd] .trr-info td {
        padding: 4px 4px;
        vertical-align: top;
    }

    [b-5vcgy0pppd] .trr-info .l {
        width: 95px;
        white-space: nowrap;
    }

        [b-5vcgy0pppd] .trr-info .l.r {
            text-align: right;
            width: 80px;
        }

    [b-5vcgy0pppd] .trr-info .c {
        width: 16px;
        text-align: center;
    }

    [b-5vcgy0pppd] .trr-info .v {
        font-weight: bold;
    }

[b-5vcgy0pppd] .trr-cmt {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border: 1px solid #000;
    margin-top: 18px;
    min-height: 100px;
    font-weight: bold;
}

    [b-5vcgy0pppd] .trr-cmt > div {
        padding: 6px 8px;
    }

        [b-5vcgy0pppd] .trr-cmt > div:first-child {
            border-right: 1px solid #000;
        }

[b-5vcgy0pppd] .trr-cmt-txt {
    font-weight: normal;
    margin-top: 4px;
    white-space: pre-wrap;
}

[b-5vcgy0pppd] .trr-tot {
    display: grid;
    grid-template-columns: 200px 1fr;
    border: 1px solid #000;
    margin-top: 16px;
    font-weight: bold;
}

    [b-5vcgy0pppd] .trr-tot > div {
        padding: 7px 8px;
    }

        [b-5vcgy0pppd] .trr-tot > div:first-child {
            border-right: 1px solid #000;
        }

[b-5vcgy0pppd] .trr-for {
    margin-top: 18px;
    padding-left: 5px;
}

[b-5vcgy0pppd] .trr-sign {
    display: flex;
    justify-content: space-between;
    margin-top: 60px;
    padding: 0 5px;
}

@media print {
    [b-5vcgy0pppd] .trr-sheet {
        margin: 0;
        max-width: none;
        break-after: page;
        page-break-after: always;
        page-break-inside: avoid;
    }

        [b-5vcgy0pppd] .trr-sheet:last-child {
            break-after: auto;
            page-break-after: auto;
        }
}

@media screen and (max-width: 767px) {
    [b-5vcgy0pppd] .trr-info .l.r {
        text-align: left;
    }

    [b-5vcgy0pppd] .trr-cmt,
    [b-5vcgy0pppd] .trr-tot {
        grid-template-columns: 1fr;
    }

        [b-5vcgy0pppd] .trr-cmt > div:first-child,
        [b-5vcgy0pppd] .trr-tot > div:first-child {
            border-right: none;
            border-bottom: 1px solid #000;
        }
}
/* /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.
   ===================================================================== */

/* Totals row bold + compact — same as QLedger.razor.css (.db-total-row td): standard.css
   only sets border-top. Padding matches the filler rule above so the row keeps a
   fixed height. */
.db-total-row td[b-bgzookcsj0] {
    font-weight: 700;
    padding: 6px 10px !important;
}

/* Sticky total row for real, even with few rows — see app.js's measureWrap
   (now also queries ".qg-body .mu-table-wrap", not just QLedger's). Same
   fix as QLedger.razor.css's own copy of this rule: position:sticky only
   clamps once there's something to scroll, so with few rows the tfoot
   just sits under the last data row instead of the box's true bottom.
   The filler goes on the LAST DATA ROW's bottom padding, not the total
   row itself — inflating the total row's own padding makes it grow/shrink
   depending on row count instead of staying a fixed height. */
.qg-body .mu-table tbody tr:last-child td[b-bgzookcsj0] {
    padding-bottom: calc(6px + var(--gains-filler-h, 0px));
}

/* 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;
}

/* ── Pagination pill — Daybook teal instead of masters-forms.css's blue,
   scoped to this page only, same as QLedger.razor.css's
   ".ql-footer-fixed .mu-pagenum.active" override. ── */
.qg-footer-fixed .mu-pagenum.active[b-bgzookcsj0],
.qg-footer-fixed .mu-pagenum.active:hover[b-bgzookcsj0] {
    background: #16a085;
    border-color: #16a085;
    box-shadow: 0 1px 3px rgba(22,160,133,.35);
}

.qg-footer-fixed .mu-nav:hover:not(:disabled)[b-bgzookcsj0],
.qg-footer-fixed .mu-pagenum:hover[b-bgzookcsj0] {
    background: #e8f5f0;
    border-color: #16a085;
    color: #16a085;
}

/* ── 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;
}

/* Click the group name to open the "CHANGE GROUP" popup. */
.qg-title-clickable[b-bgzookcsj0] {
    cursor: pointer;
}

/* No underline on hover/click for the group name (per request) — pointer cursor alone marks it clickable. */
.qg-title-clickable:hover[b-bgzookcsj0],
.qg-title-clickable:focus[b-bgzookcsj0],
.qg-title-clickable:active[b-bgzookcsj0] {
    text-decoration: none;
}

.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-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;
}

/* CHANGE GROUP popup's dropdown+G+GO row — deliberately not .mu-fld
   (masters-forms.css forces that to flex-direction:column and
   select{width:100%}, both of which silently beat an inline row-flex
   override since the inline style never redeclared those two props). */
.qg-cg-row[b-bgzookcsj0] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    padding: 16px 18px;
}

    .qg-cg-row select[b-bgzookcsj0] {
        flex: 1 1 auto;
        min-width: 0;
        width: auto;
    }

.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) ──
   Formatting copied 1:1 from Daybook's tab bar (standard.css .db-tabbar /
   .db-tab) — same bar padding/border, same button size, font, colours and
   teal active state. Only QG's -16px pull-up is kept so the bar sits in
   the same spot under the title as before. */
.qg-sections[b-bgzookcsj0] {
    display: flex;
    gap: 4px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
    padding: 8px 16px 6px;
    flex-shrink: 0;
    margin-top: -16px;
}

.qg-section[b-bgzookcsj0] {
    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;
    font-family: inherit;
    transition: all .12s;
}

    .qg-section:hover[b-bgzookcsj0] {
        background: #f5f5f5;
    }

    .qg-section.active[b-bgzookcsj0] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

.qg-dollar[b-bgzookcsj0] {
    font-weight: 600;
    font-size: 13px;
}

/* ── 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;
        /* No background override — same as QLedger.razor.css's ".mu-card"
           (no page-level override there either), so the card stays the
           global white (masters-forms.css's ".mu-card"). Colouring the
           whole card gray here was wrong: it made the tab strip AND the
           blank space under the Total row both read gray, instead of only
           the tab strip — see ".mu-toolbar" below for the actual (and
           correctly scoped) source of that gray band. */
    }

/* QG's own tab strip (TRANS/DAY/MONTH/LEDGER/GROUP) needs a gray
   background + divider — masters-forms.css's ".mu-toolbar" default is
   transparent with only a faint border. QLedger.razor.css gives its own
   ".mu-toolbar" this exact override (its comment: "This toolbar is only
   used here in QLedger, so it's safe to give it a background directly");
   CSS isolation means that rule never reaches QG, so it needs its own
   copy here to look the same. */
.mu-toolbar[b-bgzookcsj0] {
    background: #f3f3f4;
    border-bottom: 1px solid #eee;
}

/* ── 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;
    /* Same height as Daybook's .db-summary-tab (standard.css): default
       button line-height, not 1 — line-height:1 made these tabs ~3px
       shorter than the Month-VoucherType / Summary tabs. */
    line-height: normal;
    padding: 5px 16px;
    /* Equal width for TRANS / DAY / MONTH / LEDGER / GROUP (wide enough for
       the longest label, LEDGER) instead of each sizing to its own text. */
    min-width: 90px;
    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;
}

    .qg-tab:hover[b-bgzookcsj0] {
        background: #f5f5f5;
    }

    .qg-tab.active[b-bgzookcsj0] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

/* ── QG table cell extras (on top of mu-table) ── */

/* Daybook-style zebra: white / light-gray, like .db-row-even/.db-row-odd
   in standard.css. mu-table's own default (#f7f9fc even rows) is too
   faint to read as a stripe — bump contrast to match Daybook's look,
   scoped to QG's own grids only. */
.qg-body .mu-table tbody tr:nth-child(odd) td[b-bgzookcsj0] {
    background: #fff;
}

.qg-body .mu-table tbody tr:nth-child(even) td[b-bgzookcsj0] {
    background: #f5f5f5;
}

.qg-body .mu-table tbody tr:hover td[b-bgzookcsj0] {
    background: #eef4fb;
}

.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;
}

/* ## serial-number column — Trans/Day/Month/Ledger/Group grids, first col */
.qg-srno[b-bgzookcsj0] {
    width: 40px;
    text-align: center;
    color: #64748b;
    font-variant-numeric: tabular-nums;
}

.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;
}

.mu-table tbody td.qg-drcr.cr[b-bgzookcsj0] {
    color: #800000;
}

/* 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;
}

.qg-drcr-inline.cr[b-bgzookcsj0] {
    color: #800000;
}

/* ── Compare mode: two side-by-side tables ──
   Blazor CSS isolation means QLedger.razor.css's .ql-tformat/.ql-thalf
   (see ~line 996/1004 there) don't reach QG's markup even with identical
   class names on the DOM — this is QG's own scoped copy of the same values. */
.qg-tformat[b-bgzookcsj0] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px;
}

.qg-thalf[b-bgzookcsj0] {
    flex: 1 1 50%;
    min-width: 0;
    overflow: auto;
    max-height: 68vh;
}

.mu-table-wrap:has(.qg-tformat)[b-bgzookcsj0] {
    max-height: none;
    overflow: visible;
}

.qg-thalf-title[b-bgzookcsj0] {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 9px 14px;
    font-size: 12.5px;
    font-weight: 700;
    background: #f3f3f4;
    border-bottom: 1px solid #e7eaec;
}

.qg-thalf .mu-table thead th[b-bgzookcsj0] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fff;
    color: #1a2537;
    border-bottom: 2px solid #eef2f7;
}

.qg-thalf .qg-thalf-title + table thead th[b-bgzookcsj0] {
    top: 37px;
}

.qg-thalf .mu-table thead th.qg-cmp-cr[b-bgzookcsj0], .qg-thalf .mu-table thead th.num.qg-cmp-cr[b-bgzookcsj0] {
    color: #800000;
}

@media (max-width: 900px) {
    .qg-tformat[b-bgzookcsj0] {
        flex-direction: column;
    }

    .qg-thalf[b-bgzookcsj0] {
        flex: 1 1 auto;
        width: 100%;
        max-height: none;
    }
}

/* ── Summary section (Type / Ledger / Group) ── */
/* Only 5 narrow columns on a width:100% .mu-table with no per-column
   widths — auto layout dumped all leftover width into the numeric
   columns, showing as a big blank strip before each right-aligned
   number (Dr/Cr/NettTrans/Amount) — that's the gap circled. Cap those
   columns and let the text column (VType/LedName/Code) take the slack
   instead. Class-based (.num/.qg-ledger), not nth-child, so it works
   the same across the Type/Ledger/Group column layouts. */
.qg-summary-table td.num[b-bgzookcsj0],
.qg-summary-table th.num[b-bgzookcsj0] {
    width: 110px;
}

.qg-summary-table .qg-ledger[b-bgzookcsj0] {
    max-width: none;
}

.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: none; /* no hover underline on ledger/voucher links */
}

.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;
    /* Default fallback only — real color set inline per-row via
       style="background-color:@TypeColor(r.VType)" so square matches
       Type text color exactly (same TypeColor() hash fn). No
       !important here, else inline color can never win. */
    background-color: #1ab99a;
    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: none; /* no hover underline on ledger/voucher links */
    }

/* Type badge — colour set inline per-row via TypeColor() */
.qg-vtype[b-bgzookcsj0] {
    font-weight: 500;
    font-size: 13px;
}

/* Totals footer — sticky bottom reinforced with z-index, same as
   QLedger.razor.css's CONSOLIDATED block (".mu-table tfoot td"), so
   scrolling body rows can't paint over the Total row. */
.mu-table tfoot td[b-bgzookcsj0] {
    padding: 6px 10px;
    font-weight: 700;
    background: #e8e8e8; /* same as QLedger .ql-body .mu-table tfoot td */
    border-top: 2px solid #d0d0d0;
    position: sticky;
    bottom: 0;
    z-index: 3;
}

    .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;
}

    /* No underline on hover/click (per request) — link colour + pointer mark it clickable. */
    .qg-period-link:hover[b-bgzookcsj0],
    .qg-period-link:focus[b-bgzookcsj0],
    .qg-period-link:active[b-bgzookcsj0] {
        text-decoration: none;
    }

/* 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;
    }

/* ── 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;
        }

/* Balance panel rows — same as QLedger.razor.css's ql-bal-opening /
   ql-bal-opening1: bold Opening row with a 2px rule above it (separates it
   from the header row), header row on white with a 1px top rule. */
.qg-bal-opening td[b-bgzookcsj0] {
    font-weight: 700;
    background: #fff;
    border-top: 2px solid #dcdcdc;
}

.qg-bal-opening1 th[b-bgzookcsj0] {
    font-weight: 700;
    background: #fff;
    border-top: 1px solid #dcdcdc;
}

.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;
    background: #f3f3f4; /* same gray as QLedger.razor.css's ".mu-page" —
        without this the page area around/below the card was plain white
        instead of matching QLedger's footer/background color. */
}

.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. */
    padding: 0 10px; /* matches QLedger.razor.css's own authoritative
        .ql-body rule (its "last in file wins" block) — QG never had this,
        so the card sat flush against the title block/edges instead of
        QLedger's spacing. */
}

    .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;
    flex-shrink: 0; /* footer is the last flex child of .qg-page — same as
        QLedger.razor.css's ".ql-footer-fixed { flex-shrink: 0; }" reinforcement,
        so it never gets squeezed and always sits at the true bottom */
    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 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;
    }
}

/* ── Change Group popup — same as QLedger.razor.css's Change Ledger popup
   (.ql-cl-overlay / .ql-cl-modal / .ql-cl-body / .ql-go): uf-overlay +
   uf-modal shell, 460px wide, 20px body, one row of box + L/G + GO. ── */
.qg-cl-overlay[b-bgzookcsj0] {
    z-index: 1250;
}

.qg-cl-modal[b-bgzookcsj0] {
    max-width: 460px;
    border-radius: 8px;
}

.qg-cl-body[b-bgzookcsj0] {
    padding: 20px;
}

    .qg-cl-body .qg-cl-row[b-bgzookcsj0] {
        display: flex;
        gap: 8px;
        align-items: stretch;
    }

        .qg-cl-body .qg-cl-row select[b-bgzookcsj0] {
            flex: 1;
            min-width: 0;
            width: auto;
        }

        .qg-cl-body .qg-cl-row .qg-led-btn[b-bgzookcsj0] {
            align-self: stretch;
            flex: 0 0 36px;
            height: auto;
        }

.qg-go[b-bgzookcsj0] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .qg-go:hover[b-bgzookcsj0] {
        background: #159a80;
    }

/* Filters drawer: Group dropdown + "G" on one row — same as QLedger.razor.css's
   .ql-led-row (Ledger box + "L"). .mu-fld stacks its children and forces
   select{width:100%}, so the row + select width are set explicitly here. */
.qg-led-row[b-bgzookcsj0] {
    display: flex;
    gap: 6px;
    align-items: stretch;
}

    .qg-led-row select[b-bgzookcsj0] {
        flex: 1;
        min-width: 0;
        width: auto;
    }

    .qg-led-row .qg-led-btn[b-bgzookcsj0] {
        align-self: stretch;
        flex: 0 0 36px;
        width: 36px;
        height: auto;
    }

/* ═════════════════════════════════════════════════════════════════════
   FILTER DRAWER — master look (masters-forms.css)
   ═════════════════════════════════════════════════════════════════════ */

/* First bar (FILTERS) flush under the drawer header — cancels
   .mu-drawer-body's 18px top padding for that bar only. */
.mu-drawer-body > .mu-drawer-section:first-child[b-bgzookcsj0] {
    margin-top: -18px;
}

/* From / To (and Compare From / To) date boxes — master text-box look:
   32px, #cbd5e1 border, 5px radius, blue focus ring. ::deep because
   .gdp-wrap is rendered by GlobalDatepicker. Same rules as BSPL / TB /
   DocumentGrid / Challan / Order / TDS. */
.qg-date-fld[b-bgzookcsj0]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .qg-date-fld[b-bgzookcsj0]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .qg-date-fld[b-bgzookcsj0]  .gdp-wrap:focus,
    .qg-date-fld[b-bgzookcsj0]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .qg-date-fld[b-bgzookcsj0]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.qg-date-fld[b-bgzookcsj0]  .gdp-icon {
    color: #1a56a7;
}

.qg-date-fld[b-bgzookcsj0]  .gdp-value {
    font-weight: 400;
}

.qg-date-fld .gcp-trigger[b-bgzookcsj0],
.qg-date-fld[b-bgzookcsj0]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .qg-date-fld .gcp-trigger:hover[b-bgzookcsj0],
    .qg-date-fld[b-bgzookcsj0]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* Group dropdown — native arrow hidden, same grey SVG chevron as the other
   grids; 32px, no vertical padding (no clipping). "G" button squared to
   the same 32px height. */
.qg-led-row .qg-group-select[b-bgzookcsj0] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    cursor: pointer;
}

    .qg-led-row .qg-group-select:disabled[b-bgzookcsj0] {
        background-color: #f1f5f9 !important;
        cursor: not-allowed;
    }

.qg-led-row .qg-led-btn[b-bgzookcsj0] {
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    align-self: center;
    border-radius: 5px;
    padding: 0;
}


/* "..." balance popup body — standard uf-body, table edge-to-edge inside it. */
.qg-balpop-body[b-bgzookcsj0] {
    padding: 0;
}


/* Group tab: sub-group rows (Type G) in bold black, ledger rows (Type L)
   below them in the normal ledger style. */
.qg-grp-row td[b-bgzookcsj0],
.qg-grp-row td.qg-ledger[b-bgzookcsj0] {
    font-weight: 700;
    color: #000;
}
/* /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.
   ===================================================================== */

/* Totals row bold — standard.css's .db-total-row only sets border-top, no
   font-weight. Covers Trans tab's existing Total row and Quarter/Year's
   Period-table Total row (same class, same fix).
   Padding forced to match db-table's tfoot exactly (6px 10px, from its
   generic ".db-table td" rule) — SummaryOpp/VType, BillsPending and
   CostCenter's totals sit in a .mu-table instead, whose own tfoot rule
   (11px 14px, further down this file) made them visibly taller than
   Trans tab's total row despite sharing this same .db-total-row class. */
.db-total-row td[b-gba25bxpef] {
    font-weight: 700;
    padding: 6px 10px !important;
}

/* Sticky total row for real, even with few rows — see app.js's measureWrap.
   position:sticky (already set globally on .db-table/.mu-table tfoot td)
   only clamps to the bottom once there's something to scroll; with few
   rows the table is shorter than .mu-table-wrap so it never clamps and
   the row just sits under the last data row instead of at the box's true
   bottom. app.js measures that leftover gap (read-only — it never touches
   Blazor's own rendered rows) and stores it as --gains-filler-h on the
   wrap div.
   The filler goes on the LAST DATA ROW's bottom padding, not on the total
   row itself — inflating the total row's own padding made it grow/shrink
   tall depending on how many rows were above it, which is exactly the
   inconsistent look flagged ("total row taking height from last row,
   somewhere less somewhere greater"). Padding added below the last row
   pushes the tfoot down by the same amount (so sticky still has enough
   content height to clamp against), while the total row itself always
   keeps its fixed 6px/10px padding, matching Trans tab exactly. */
.ql-body .mu-table tbody tr:last-child td[b-gba25bxpef] {
    padding-bottom: calc(10px + var(--gains-filler-h, 0px));
}

.ql-body .db-table tbody tr:last-child td[b-gba25bxpef] {
    padding-bottom: calc(6px + var(--gains-filler-h, 0px));
}

/* ── Pagination pill — Daybook teal instead of masters-forms.css's blue,
   scoped to this page only (mu-pagenum/mu-nav shared globally). Pager
   lives in .ql-footer-fixed, NOT .ql-body — wrong ancestor was why this
   didn't take effect the first time. ── */
.ql-footer-fixed .mu-pagenum.active[b-gba25bxpef],
.ql-footer-fixed .mu-pagenum.active:hover[b-gba25bxpef] {
    background: #16a085;
    border-color: #16a085;
    box-shadow: 0 1px 3px rgba(22,160,133,.35);
}

.ql-footer-fixed .mu-nav:hover:not(:disabled)[b-gba25bxpef],
.ql-footer-fixed .mu-pagenum:hover[b-gba25bxpef] {
    background: #e8f5f0;
    border-color: #16a085;
    color: #16a085;
}

/* =====================================================================
   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;
    /* BSPL's root wrapper is .bspl-page (font-family: 'Open Sans','Segoe UI',
       Arial), not .mu-page (font-family: Arial) like this page — Arial has
       no real thin/100 face so it renders as plain Regular at this weight,
       while Segoe UI (what 'Open Sans' resolves to, unloaded) does have a
       genuine light face. Matched here so this title looks the same
       thinness as BSPL's despite sharing the same font-weight:100. */
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}

/* ── 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) ──
   Matches Daybook's .db-tabbar (Details/Summary row): white background,
   flush under the title block with just a hairline border, no visible
   gap. .mu-page (masters-forms.css) puts a 16px flex gap between every
   top-level child — that's the gap that was showing up here — so it's
   cancelled with a matching negative margin-top (scoped to this page
   only; .mu-page itself is left untouched for every other page that
   uses it). */
.ql-sections[b-gba25bxpef] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px 6px 10px;
    margin-top: -16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.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) — matches Daybook's
   .db-summary-tabbar (Month-VoucherType / VoucherType-Month / etc.): a
   gray bar behind the white db-tab buttons. This toolbar is only used
   here in QLedger, so it's safe to give it a background directly rather
   than touching the shared .mu-toolbar class definition. ── */
.mu-toolbar[b-gba25bxpef] {
    background: #f3f3f4;
    border-bottom: 1px solid #eee;
}

/* ── Sub-tab bars for ArAp / Orders / BillsPending (.ql-docs-toolbar) and
   CostCenter (.ql-cc-tabs) — same gray bar as .mu-toolbar above, these
   just aren't .mu-toolbar so that rule never reached them. ── */
.ql-docs-toolbar[b-gba25bxpef] {
    background: #f3f3f4;
    border-bottom: 1px solid #eee;
    padding: 8px 16px;
    /* ArAp/Orders/BillsPending removed their own nested .mu-table-wrap
       (was collapsing grid height), so this bar is now a sibling of the
       table INSIDE the single shared, scrolling .mu-table-wrap — without
       sticking it, it scrolled away with the grid rows instead of
       staying put like every other section's tab bar. Height pinned to
       an exact value (instead of padding+content auto-sizing) so the
       table's own sticky thead below can be offset by a known amount —
       see ".ql-docs-toolbar + table thead th" below. */
    position: sticky;
    top: 0;
    z-index: 4;
    height: 44px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
}

.ql-cc-tabs[b-gba25bxpef] {
    background: #f3f3f4;
    border-bottom: 1px solid #eee;
    padding: 8px 16px;
    margin: 0;
    position: sticky;
    top: 0;
    z-index: 4;
    height: 44px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
}

    /* The table's own thead is ALSO position:sticky top:0 (masters-forms.css)
   — stacked directly under a sticky toolbar at the same top:0, both were
   competing for the same spot, which is why the header looked like it
   was scrolling (really just sitting underneath the toolbar). Offset it
   by the toolbar's now-fixed 44px height so it sticks just below it. */
    .ql-docs-toolbar + table thead th[b-gba25bxpef],
    .ql-cc-tabs + table thead th[b-gba25bxpef] {
        top: 44px;
    }

.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-docs-cats (ArAp/Orders/BillsPending sub-tab row) — flex+gap like
   .ql-tabs, not each button's own margin, so sizing matches the main
   Trans/Day/Month tabs exactly instead of looking taller/offset. */
.ql-docs-cats[b-gba25bxpef] {
    display: flex;
    gap: 6px;
}

.ql-subtab[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* line-height:1 (removed) was shrinking the text's line box below
       .db-tab's default line-height, so this rendered ~24px tall against
       .db-tab's ~30px despite identical padding/font-size/border. */
    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-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;
}

/* ── Grid row/footer colors — matches Daybook's db-table look (was
   masters-forms.css's blue-tinted #f7f9fc/#eef4fb zebra + near-white
   totals row). Daybook's own idx-based rule (standard.css) paints row 1
   mint, row 2 white, ... i.e. db-row-odd = mint, db-row-even = white —
   the nth-child parity below matches that (odd = mint, first row).
   Also restated at the <td> level for tables that already carry
   Daybook's own db-row-even/odd classes (Accounts → Trans /
   Day-Month-Quarter): masters-forms.css's own
   ".mu-table tbody tr:nth-child(even) td" rule paints the <td> on top of
   the <tr>'s own background, so it has to be restated here to win. ── */
.ql-body .mu-table tbody tr:nth-child(odd) td[b-gba25bxpef],
.ql-body .db-table tbody tr.db-row-odd td[b-gba25bxpef] {
    background: #f5fafa;
}

.ql-body .mu-table tbody tr:nth-child(even) td[b-gba25bxpef],
.ql-body .db-table tbody tr.db-row-even td[b-gba25bxpef] {
    background: #ffffff;
}

/* :not(:last-child) — the last row carries the sticky-footer filler space
   as extra bottom padding (see the padding-bottom rule further down this
   file), so its box extends into what looks like blank space above the
   Total row. Without this exclusion, hovering that blank gap lit up as if
   it were a real row. */
.ql-body .mu-table tbody tr:not(:last-child):hover td[b-gba25bxpef],
.ql-body .db-table tbody tr:not(:last-child):hover td[b-gba25bxpef] {
    background: #e8f5f0;
}

.ql-body .mu-table tfoot td[b-gba25bxpef],
.ql-body .db-table tfoot td[b-gba25bxpef] {
    background: #e8e8e8;
    border-top: 2px solid #d0d0d0;
}

/* ── 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: 10px;
}

/* ── Dedicated Documents column (Trans/RunBal tables) — sits between Date
   and VNum, just the paperclip icon, no header label needed. ── */
.ql-th-doc[b-gba25bxpef] {
    width: 18px;
    padding-left: 0px !important;
    padding-right: 2px !important;
}

.ql-doc-cell[b-gba25bxpef] {
    text-align: center;
    padding-left: 0px !important;
    padding-right: 4px !important;
}

/* 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;
}

/* Was rendering as a plain <button> with default browser chrome (border,
   background, padding) — nothing here overrode it. Strip that so it reads
   as a plain icon link (blue, like the VNum/ledger links beside it),
   not a boxed button. */
.ql-clip-btn[b-gba25bxpef] {
    display: inline-flex;
    align-items: center;
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    line-height: 1;
}

.ql-clip[b-gba25bxpef] {
    color: #1a56a7;
    font-size: 14px;
}

.ql-clip-btn:hover .ql-clip[b-gba25bxpef] {
    color: #0f3d82;
}

.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),
   field wrappers (.mu-fld) and section headers (.mu-drawer-section) now
   all use the shared masters-forms.css classes, same as BSPL/TB/MLedger.
   Only the two rules below stay page-local — .gdp-wrap has no default
   height, so without an override it renders oversized inside a 320px
   drawer; same fix as BSPL's .bspl-date-fld / DocumentGrid's .dg-date-fld. ── */
.ql-date-fld[b-gba25bxpef]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ql-date-fld[b-gba25bxpef]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ql-date-fld[b-gba25bxpef]  .gdp-wrap:focus,
    .ql-date-fld[b-gba25bxpef]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ql-date-fld[b-gba25bxpef]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ql-date-fld[b-gba25bxpef]  .gdp-icon {
    color: #1a56a7;
}

.ql-date-fld[b-gba25bxpef]  .gdp-value {
    font-weight: 400;
}

.ql-date-fld .gcp-trigger[b-gba25bxpef],
.ql-date-fld[b-gba25bxpef]  .gcp-trigger {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
}

    .ql-date-fld .gcp-trigger:hover[b-gba25bxpef],
    .ql-date-fld[b-gba25bxpef]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.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;
    }

/* Group path line (api/QLInfo/GetQLInfoReport) — own line between the ledger
   name and the date range; .bspl-subtitle is an inline span by default. */
.ql-grouppath[b-gba25bxpef] {
    display: block;
    font-style: italic;
}

/* Breadcrumb look: each group is a link, separators stay plain grey. */
.ql-gp-link[b-gba25bxpef] {
    color: #1a56a7;
    text-decoration: none;
}

    .ql-gp-link:hover[b-gba25bxpef] {
        text-decoration: underline;
    }

/* Liabilities / Expenses ledgers — maroon, same as every other Cr value. */
.ql-gp-cr .ql-gp-link[b-gba25bxpef] {
    color: #800000;
}

.ql-gp-sep[b-gba25bxpef] {
    color: #999;
    white-space: pre;
}

/* Page-header ledger name — clickable to open the Change Ledger popup */
.ql-ledname-click[b-gba25bxpef] {
    cursor: pointer;
}

/* ── Change Ledger popup (header click) — small, above the ledger-search
   popup it opens (1300) so that one stacks correctly on top of this. ── */
.ql-cl-overlay[b-gba25bxpef] {
    z-index: 1250;
}

.ql-cl-modal[b-gba25bxpef] {
    max-width: 460px;
    border-radius: 8px;
}

.ql-cl-body[b-gba25bxpef] {
    padding: 20px;
}

    .ql-cl-body .ql-led-row[b-gba25bxpef] {
        display: flex;
        gap: 8px;
        align-items: stretch;
    }

/* ── 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;
    border-radius: 8px;
}

.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 */
    }

    /* Was living outside this media query entirely — applied at EVERY
       screen width, not just phones, which is why .ql-subtab (ArAp/
       Orders/BillsPending sub-tabs) rendered taller than .db-tab
       (Trans/Day/Month) at desktop width. Finger-size touch targets
       belong here, gated to phones, same as everything else in this
       block. */
    .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;
    background: #f3f3f4;
}

/* .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;
    padding: 12px 16px 8px;
}

    .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 {
    color: #800000;
}*/
.mu-table tbody td.num.cr[b-gba25bxpef] {
    color: #800000 !important;
}

.db-table tbody td.num.cr[b-gba25bxpef],
.db-table tfoot td.num.cr[b-gba25bxpef] {
    color: #800000 !important;
}

.db-table tbody td.ql-drcr.cr[b-gba25bxpef],
.db-table tfoot td.ql-drcr.cr[b-gba25bxpef] {
    color: #800000 !important;
}

/* /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.
   ===================================================================== */

/* Page title — BSPL's root wrapper is .bspl-page (font-family: 'Open Sans',
   'Segoe UI', Arial), not .mu-page (font-family: Arial) like this page.
   Arial has no real thin/100 face, so masters-forms.css's shared
   ".bspl-title-block h1 { font-weight:100 }" just renders as plain
   Regular here, while Segoe UI (what 'Open Sans' resolves to, since it
   isn't actually loaded) does ship a genuine light face — that's what
   made BSPL's title look visibly thinner despite the identical weight.
   Matched here so this title reads the same thinness as BSPL's. */
.bspl-title-block h1[b-j7xjuzm8zh] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}

/* ── 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.
   ===================================================================== */

/* Flush under the title block with just a hairline border, no visible gap
   — mirrors QLedger.razor.css exactly. .mu-page (masters-forms.css) puts a
   16px flex gap between every top-level child; that gap is what was
   showing up above this bar, so it's cancelled with a matching negative
   margin-top (scoped to this page only). */
.ql-sections[b-j7xjuzm8zh] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px 6px 10px;
    margin-top: -16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.ql-section[b-j7xjuzm8zh] {
    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-j7xjuzm8zh] {
        font-size: 15px;
    }

    .ql-section:hover[b-j7xjuzm8zh] {
        background: #f5f5f5;
        color: #555;
    }

    .ql-section.active[b-j7xjuzm8zh] {
        background: #1ab394;
        border-color: #1ab394;
        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;
    border-radius: 8px;
}

.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;
}

/* Details grid: Total pinned to bottom with equal row heights. Table fills
   the wrap (height:100%); the empty .rg-fill row (height:100%) soaks up all
   leftover height so data rows keep natural height. With many rows the
   table overflows, filler collapses, sticky tfoot clamps as usual. */
.mu-table.rg-details[b-j7xjuzm8zh] {
    height: 100%;
}

.rg-details tbody tr.rg-fill[b-j7xjuzm8zh],
.rg-details tbody tr.rg-fill:hover[b-j7xjuzm8zh],
.rg-details tbody tr.rg-fill td[b-j7xjuzm8zh] {
    height: 100%;
    padding: 0;
    border: 0;
    background: #fff !important;
}

/* ── 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 */
}

/* Pagination now uses .db-pagination/.db-page-btn (Previous / 1 2 3 / Next),
   styled globally in standard.css with the same teal as QLedger — no
   page-scoped override needed here. */

.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%;
    /* TB's .tb2-page sets this; TDS had no font-family, so text (pagination
       digits, Total Records, buttons) rendered in the browser default font
       instead — slightly wider/chunkier than TB's. Match it. */
    font-family: 'Segoe UI', sans-serif;
}

/* Boxed the same way as GAINS_TB's .tb2-btnbar (mode/period button bar) —
   TDS used to float these tabs bare on the page's gray background with no
   card around them, which is why the top area looked visually different
   from TB's bordered white bar even though the buttons themselves matched. */
.itb-toptabs[b-v12h5cx2bi] {
    flex-shrink: 0;
    /* Negative top pulls the box up against bspl-title-block's own bottom
       margin — box wasn't there before (bare buttons blended into the gray
       page bg), so the same underlying gap now reads as much bigger with a
       visible white card edge. Tighten it to sit close, like TB's tb2-btnbar. */
    margin: -8px 0px -8px;
    padding: 5px 16px;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 3px;
    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: 3px;
        cursor: pointer;
        font-family: inherit;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition: background .12s, color .12s, border-color .12s;
        padding: 5px 16px;
    }


        .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: 4px;
}

    .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;
}

/* ═════════════════════════════════════════════════════════════════════
   TDS GRID — Total row pinned to the bottom of the (unchanged) grid
   height, with left-over space kept ABOVE it instead of after it.

   The grid tab's markup splits the header+data rows and the Total row
   into two <table>s inside one flex column (.tds-grid-flex-wrap):
     - .tds-grid-scroll (flex: 1 1 auto) holds thead+tbody and owns the
       only scrollbar. When there are fewer rows than fit, it simply
       has blank space below the last row — same as any block box with
       under-filled content.
     - .tds-grid-total-table is the second, fixed-size flex item, so it
       always renders flush at the very bottom of the flex column.

   Both tables keep the exact same <colgroup> + table-layout:fixed so
   their columns line up pixel-for-pixel; scrollbar-gutter:stable keeps
   that true whether or not .tds-grid-scroll actually needs to scroll.
   Row height, pagination, and the Total calculations are untouched —
   this only repositions where the already-computed Total row sits.
   ═════════════════════════════════════════════════════════════════════ */
.tds-grid-flex-wrap[b-v12h5cx2bi] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

.tds-grid-scroll[b-v12h5cx2bi] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
}

.tds-grid-total-table[b-v12h5cx2bi] {
    flex-shrink: 0;
}

.tds-grid-table[b-v12h5cx2bi] {
    table-layout: fixed;
}

/* ── 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;
    }

/* Summary tab — group total row (comes from IsTotal row of the API) */
.itb-grid-table tbody tr.tds-sum-total td[b-v12h5cx2bi] {
    background: #f2f2f2;
    font-weight: 700;
    border-top: 1px solid #d6dbe0;
}

/* 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;
}

/* ═════════════════════════════════════════════════════════════════════
   FILTER DRAWER — master look (masters-forms.css)
   ═════════════════════════════════════════════════════════════════════ */

/* First bar (TIME / MONTH) flush under the drawer header — cancels
   .mu-drawer-body's 18px top padding for that bar only. */
.mu-drawer-body > .mu-drawer-section:first-child[b-v12h5cx2bi] {
    margin-top: -18px;
}

/* Report Type radios — one row */
.tds-radio-row[b-v12h5cx2bi] {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}

    .tds-radio-row .le-chk[b-v12h5cx2bi] {
        margin: 0;
    }

/* Generate TDS Challan — full-width master button */
.tds-gen-btn[b-v12h5cx2bi] {
    width: 100%;
    justify-content: center;
}

    .tds-gen-btn:disabled[b-v12h5cx2bi] {
        opacity: .55;
        cursor: not-allowed;
    }

/* From / To date boxes — master text-box look (32px, #cbd5e1 border,
   5px radius, blue focus ring). ::deep because .gdp-wrap is rendered by
   GlobalDatepicker. Same rules as BSPL / DocumentGrid / Challan / Order / TB. */
.tds-date-fld[b-v12h5cx2bi]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .tds-date-fld[b-v12h5cx2bi]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .tds-date-fld[b-v12h5cx2bi]  .gdp-wrap:focus,
    .tds-date-fld[b-v12h5cx2bi]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .tds-date-fld[b-v12h5cx2bi]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.tds-date-fld[b-v12h5cx2bi]  .gdp-icon {
    color: #1a56a7;
}

.tds-date-fld[b-v12h5cx2bi]  .gdp-value {
    font-weight: 400;
}

.tds-date-fld .gcp-trigger[b-v12h5cx2bi],
.tds-date-fld[b-v12h5cx2bi]  .gcp-trigger {
    border-color: #cbd5e1;
    border-radius: 5px;
}

    .tds-date-fld .gcp-trigger:hover[b-v12h5cx2bi],
    .tds-date-fld[b-v12h5cx2bi]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

/* TDS Section / Rate / Voucher Type / TCS-TDS dropdowns — native arrow
   hidden, same grey SVG chevron as the other grids; 32px, no clipping. */
.tds-sel-fld select[b-v12h5cx2bi] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 32px !important;
    padding: 0 30px 0 8px !important;
    line-height: normal !important;
    font-size: 13px;
    color: #1a2537;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
    box-sizing: border-box;
    cursor: pointer;
    text-overflow: ellipsis;
}

    .tds-sel-fld select:focus[b-v12h5cx2bi] {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* ═════════════════════════════════════════════════════════════════════
   FOOTER PAGINATION — same look as GAINS_TB:
   [Export XL] [Export PDF] Total Records: N  ·  [Previous] [1] [2] … [Next]  [100 / page ▾]
   Rules copied 1:1 from GAINS_TB.razor.css so the two footers render
   identically (no local !important overrides that TB doesn't have).
   ═════════════════════════════════════════════════════════════════════ */
/*.bspl-footer-right {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.bspl-footer-count {
    font-size: 13px;
    color: #374151;
}

    .bspl-footer-count strong {
        color: #111827;
        font-weight: 700;
    }

.db-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    padding: 0;
}

.db-page-btn {
    min-width: 28px;
    height: 28px;
    padding: 0 10px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    color: #1f2937;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
    transition: all .12s;
    box-sizing: border-box;
}

    .db-page-btn:hover:not(:disabled):not(.active) {
        border-color: #1ab394;
        color: #1ab394;
    }

    .db-page-btn.active {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

    .db-page-btn:disabled {
        color: #9ca3af;
        background: #f9fafb;
        cursor: default;
    }

.db-page-gap {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}*/

/* Rows-per-page — native select + SVG caret overlay (GAINS_TB pattern) */
.mu-pagesize-wrap[b-v12h5cx2bi] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

    .mu-pagesize-wrap .mu-pagesize[b-v12h5cx2bi] {
        display: inline-block;
        width: auto;
        min-width: 112px;
        height: 32px;
        margin: 0;
        padding: 0 30px 0 12px;
        border: 1px solid #e5e7eb;
        border-radius: 6px;
        background: #fff;
        color: #1f2937;
        font-size: 13px;
        font-family: inherit;
        cursor: pointer;
        appearance: none;
        -webkit-appearance: none;
        -moz-appearance: none;
    }

        .mu-pagesize-wrap .mu-pagesize:focus[b-v12h5cx2bi] {
            outline: none;
            border-color: #1ab394;
        }

.mu-pagesize-caret[b-v12h5cx2bi] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: #767b82;
    pointer-events: none;
}

@media (max-width: 640px) {
    .bspl-footer-right[b-v12h5cx2bi] {
        gap: 8px;
    }

    .db-page-btn[b-v12h5cx2bi] {
        min-width: 28px;
        height: 28px; 
        padding: 0 8px;
        font-size: 12px;
    }

    .mu-pagesize-wrap .mu-pagesize[b-v12h5cx2bi] {
        min-width: 96px;
        height: 28px;
    }
}
/* /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/UntaggedDocumentLink.razor.rz.scp.css */
/* UntaggedDocumentLink.razor.css — full-page two-pane link form */

.ufp-page[b-4mz1qks3w6] {
    --ufp-accent: #1AB99A;
    --ufp-accent-dark: #0d9480;
    --ufp-danger: #dc2626;
    --ufp-text: #1e293b;
    --ufp-muted: #64748b;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', 'Open Sans', Arial, sans-serif;
    font-size: 12.5px;
    color: var(--ufp-text);
}

.ufp-hdr[b-4mz1qks3w6] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 20px 12px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.ufp-hdr-left[b-4mz1qks3w6] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.ufp-hdr-title[b-4mz1qks3w6] {
    font-size: 22px;
    font-weight: 300;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: var(--ufp-accent);
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ufp-hdr-sub[b-4mz1qks3w6] {
    font-size: 11.5px;
    color: #888;
}

.ufp-hdr-filterbtn[b-4mz1qks3w6] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 12px;
    border: none;
    border-radius: 3px;
    background: var(--ufp-accent);
    color: #fff;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    cursor: pointer;
    flex-shrink: 0;
}

    .ufp-hdr-filterbtn:hover[b-4mz1qks3w6] {
        background: var(--ufp-accent-dark);
    }

.ufp-filters-hidden[b-4mz1qks3w6] {
    display: none !important;
}

/* ── Document Grid–style tab strip ── */
.ufp-tabbar[b-4mz1qks3w6] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    padding: 8px 16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.ufp-tabgroup[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.ufp-tab[b-4mz1qks3w6] {
    height: 30px;
    padding: 0 16px;
    border: 1px solid #d5d8dc;
    border-radius: 3px;
    background: #fff;
    color: #555;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
    cursor: pointer;
    white-space: nowrap;
}

    .ufp-tab:hover[b-4mz1qks3w6] {
        border-color: var(--ufp-accent);
        color: var(--ufp-accent-dark);
    }

.ufp-tab-active[b-4mz1qks3w6],
.ufp-tab-active:hover[b-4mz1qks3w6] {
    background: var(--ufp-accent);
    border-color: var(--ufp-accent);
    color: #fff;
}

.ufp-tab-active-alt[b-4mz1qks3w6],
.ufp-tab-active-alt:hover[b-4mz1qks3w6] {
    background: #306B9C;
    border-color: #306B9C;
    color: #fff;
    cursor: default;
}

.ufp-body[b-4mz1qks3w6] {
    flex: 1;
    display: flex;
    gap: 10px;
    padding: 10px;
    min-height: 0;
    overflow: hidden;
}

.ufp-pane[b-4mz1qks3w6] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    background: #fff;
    border: 1px solid #e5e8ec;
    border-radius: 6px;
    overflow: hidden;
}

.ufp-pane-right[b-4mz1qks3w6] {
    flex: 1.3;
}

.ufp-filters[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 12px;
    border-bottom: 1px solid #eef2f6;
    flex-shrink: 0;
}

.ufp-field-grow[b-4mz1qks3w6] {
    flex: 1 1 160px;
}

.ufp-daterow[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 4px;
}

    /* Compact date pickers (GlobalDatepicker is a child component → ::deep) */
    .ufp-daterow[b-4mz1qks3w6]  > *:first-child {
        width: 138px;
        max-width: 138px;
        flex: 0 0 138px;
    }
    /* GlobalDatepicker box — flatten to match .ufp-input (30px, 1px #d5d5d5,
   4px radius). Its own wrapper padding made it ~46px tall (double box). */
    .ufp-daterow[b-4mz1qks3w6]  .gdp-field-block {
        position: relative;
        margin: 0 !important;
        padding: 0 !important;
        gap: 0 !important;
    }

    .ufp-daterow[b-4mz1qks3w6]  .gdp-field-row {
        margin: 0 !important;
        padding: 0 !important;
        gap: 4px;
    }

    .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap {
        display: flex !important;
        align-items: center !important;
        gap: 6px;
        height: 30px !important;
        min-height: 30px !important;
        padding: 0 8px !important;
        margin: 0 !important;
        border: 1px solid #d5d5d5 !important;
        border-radius: 4px !important;
        background: #fff !important;
        box-shadow: none !important;
        box-sizing: border-box;
        transition: border-color .12s;
    }

        .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap:focus-within {
            border-color: var(--ufp-accent) !important;
        }

        .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap.gdp-invalid {
            border-color: #dc2626 !important;
        }

        .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap i,
        .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap svg,
        .ufp-daterow[b-4mz1qks3w6]  .gdp-wrap img {
            font-size: 12px !important;
            width: auto;
            max-height: 13px;
            flex-shrink: 0;
            margin: 0 !important;
        }

    .ufp-daterow[b-4mz1qks3w6]  input {
        width: 100%;
        min-width: 0;
        height: 28px !important;
        padding: 0 !important;
        margin: 0 !important;
        border: none !important;
        outline: none !important;
        box-shadow: none !important;
        background: transparent !important;
        font-size: 12.5px !important;
        line-height: 28px;
        color: var(--ufp-text);
    }
    /* Validation text floats below — doesn't push the filter row taller */
    .ufp-daterow[b-4mz1qks3w6]  .gdp-error-msg {
        position: absolute;
        top: calc(100% + 2px);
        left: 0;
        white-space: nowrap;
        font-size: 11px;
        z-index: 5;
    }

    /* GreenCalendarPicker trigger — same 30px square as C button */
    .ufp-daterow[b-4mz1qks3w6]  .gcp-trigger {
        width: 30px !important;
        height: 30px !important;
        padding: 0 !important;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        border: 1px solid #d5d5d5 !important;
        border-radius: 4px !important;
        background: #fff !important;
        box-sizing: border-box;
        flex-shrink: 0;
    }

    .ufp-daterow[b-4mz1qks3w6]  .gcp-icon {
        width: 16px !important;
        height: 16px !important;
    }

/* LedgerAutofill — match .ufp-input look */
.ufp-ledger-field[b-4mz1qks3w6] {
    min-width: 180px;
}

    .ufp-ledger-field[b-4mz1qks3w6]  > * {
        width: 100%;
    }

    .ufp-ledger-field[b-4mz1qks3w6]  input {
        width: 100%;
        height: 30px;
        padding: 6px 10px;
        border: 1px solid #d5d5d5;
        border-radius: 4px;
        background: #fff;
        font-size: 12.5px;
        color: var(--ufp-text);
        box-shadow: none;
    }

        .ufp-ledger-field[b-4mz1qks3w6]  input:focus {
            outline: none;
            border-color: var(--ufp-accent);
        }

        .ufp-ledger-field[b-4mz1qks3w6]  input::placeholder {
            color: #94a3b8;
        }

.ufp-clear-c-btn[b-4mz1qks3w6] {
    width: 30px;
    height: 30px;
    padding: 0;
    box-sizing: border-box;
    border: 1px solid #d5d5d5;
    background: #f8fafc;
    border-radius: 4px;
    font-weight: 700;
    color: var(--ufp-muted);
    cursor: pointer;
    flex-shrink: 0;
}

    .ufp-clear-c-btn:hover[b-4mz1qks3w6] {
        border-color: var(--ufp-accent);
        color: var(--ufp-accent-dark);
    }

.ufp-input[b-4mz1qks3w6] {
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    padding: 6px 10px;
    font-size: 12.5px;
    background: #fff;
    height: 30px;
}

    .ufp-input:focus[b-4mz1qks3w6] {
        outline: none;
        border-color: var(--ufp-accent);
    }

.ufp-select[b-4mz1qks3w6] {
    cursor: pointer;
}

.ufp-chk-inline[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    color: var(--ufp-muted);
    white-space: nowrap;
}

.ufp-clearbtn[b-4mz1qks3w6], .ufp-back-btn[b-4mz1qks3w6] {
    height: 30px;
    padding: 0 12px;
    border: 1px solid #d5d5d5;
    border-radius: 4px;
    background: #f1f5f9;
    color: var(--ufp-text);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}

    .ufp-clearbtn:hover[b-4mz1qks3w6], .ufp-back-btn:hover[b-4mz1qks3w6] {
        background: #e2e8f0;
    }

.ufp-searchbtn[b-4mz1qks3w6] {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 4px;
    background: var(--ufp-accent);
    color: #fff;
    cursor: pointer;
    flex-shrink: 0;
}

    .ufp-searchbtn:hover[b-4mz1qks3w6] {
        background: var(--ufp-accent-dark);
    }

.ufp-toolbar[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 12px;
    border-bottom: 1px solid #eef2f6;
    flex-shrink: 0;
}

.ufp-segmented[b-4mz1qks3w6] {
    display: flex;
    background: #f1f5f9;
    border-radius: 6px;
    padding: 2px;
    gap: 2px;
}

    .ufp-segmented button[b-4mz1qks3w6] {
        border: none;
        background: none;
        padding: 6px 12px;
        border-radius: 5px;
        font-size: 12px;
        font-weight: 600;
        color: var(--ufp-muted);
        cursor: pointer;
        display: flex;
        align-items: center;
        gap: 5px;
    }

.ufp-seg-active[b-4mz1qks3w6] {
    background: #fff !important;
    color: var(--ufp-accent-dark) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);
}

.ufp-choosefile-btn[b-4mz1qks3w6] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #f1f5f9;
    border-radius: 6px;
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    overflow: hidden;
    white-space: nowrap;
}

    .ufp-choosefile-btn input[type=file][b-4mz1qks3w6] {
        position: absolute;
        inset: 0;
        opacity: 0;
        cursor: pointer;
    }

.ufp-choosefile-name[b-4mz1qks3w6] {
    font-size: 11.5px;
    color: var(--ufp-muted);
    white-space: nowrap;
}

.ufp-uploadbtn[b-4mz1qks3w6] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: none;
    border-radius: 6px;
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 700;
    background: var(--ufp-accent-dark);
    color: #fff;
    cursor: pointer;
}

    .ufp-uploadbtn:hover:not(:disabled)[b-4mz1qks3w6] {
        background: #0b7d6a;
    }

    .ufp-uploadbtn:disabled[b-4mz1qks3w6] {
        opacity: .6;
        cursor: not-allowed;
    }

.ufp-msg[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 8px 12px 0;
    padding: 7px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    flex-shrink: 0;
}

.ufp-msg-err[b-4mz1qks3w6] {
    background: #fef2f2;
    color: var(--ufp-danger);
}

.ufp-msg-ok[b-4mz1qks3w6] {
    background: #eafbf6;
    color: var(--ufp-accent-dark);
}

.ufp-listwrap[b-4mz1qks3w6] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.ufp-state[b-4mz1qks3w6] {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--ufp-muted);
    font-size: 13px;
    padding: 40px;
}

.ufp-state-empty[b-4mz1qks3w6] {
    flex-direction: column;
}

    .ufp-state-empty i[b-4mz1qks3w6] {
        font-size: 26px;
        color: #cbd5e1;
    }

.ufp-table[b-4mz1qks3w6] {
    width: 100%;
    border-collapse: collapse;
}

    .ufp-table thead th[b-4mz1qks3w6] {
        background: #306B9C;
        color: #fff;
        font-size: 11.5px;
        font-weight: 700;
        text-align: left;
        padding: 8px 10px;
        position: sticky;
        top: 0;
        white-space: nowrap;
    }

.ufp-th-chk[b-4mz1qks3w6] {
    width: 34px;
    text-align: center !important;
}

.ufp-th-num[b-4mz1qks3w6] {
    text-align: right !important;
}

.ufp-table tbody tr[b-4mz1qks3w6] {
    cursor: pointer;
}

    .ufp-table tbody tr:nth-child(even)[b-4mz1qks3w6] {
        background: #f6f9fc;
    }

    .ufp-table tbody tr:hover[b-4mz1qks3w6] {
        background: #eef4fb;
    }

.ufp-table tbody td[b-4mz1qks3w6] {
    padding: 7px 10px;
    border-bottom: 1px solid #f0f2f5;
    line-height: 1.3;
}

.ufp-row-sel[b-4mz1qks3w6] {
    background: #eafbf6 !important;
}

.ufp-fname-link[b-4mz1qks3w6] {
    color: var(--ufp-text);
    font-weight: 600;
    cursor: pointer;
}

    .ufp-fname-link:hover[b-4mz1qks3w6] {
        color: var(--ufp-accent-dark);
        text-decoration: underline;
    }

.ufp-ledger[b-4mz1qks3w6] {
    color: #2f8fd1;
    cursor: pointer;
}

    .ufp-ledger:hover[b-4mz1qks3w6] {
        text-decoration: underline;
    }

.ufp-nowrap[b-4mz1qks3w6] {
    white-space: nowrap;
}

.ufp-vnum[b-4mz1qks3w6] {
    cursor: pointer;
    font-weight: 600;
    margin-left: 4px;
}

    .ufp-vnum:hover[b-4mz1qks3w6] {
        text-decoration: underline;
    }

.ufp-narration[b-4mz1qks3w6] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ufp-tiles[b-4mz1qks3w6] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 10px;
    padding: 12px;
}

.ufp-tile[b-4mz1qks3w6] {
    border: 1px solid #eef2f6;
    border-radius: 8px;
    background: #fafbfc;
    padding: 6px 6px 8px;
    cursor: pointer;
}

    .ufp-tile:hover[b-4mz1qks3w6] {
        border-color: #cbd5e1;
    }

.ufp-tile-sel[b-4mz1qks3w6] {
    border-color: var(--ufp-accent) !important;
    background: #eafbf6;
}

.ufp-tile-thumbwrap[b-4mz1qks3w6] {
    position: relative;
    height: 80px;
    border-radius: 6px;
    overflow: hidden;
    background: #eef4fb;
    margin-bottom: 6px;
}

.ufp-tile-chk[b-4mz1qks3w6] {
    position: absolute;
    top: 4px;
    left: 4px;
}

.ufp-tile-thumb[b-4mz1qks3w6] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.ufp-tile-fallback[b-4mz1qks3w6] {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--ufp-accent-dark);
    font-size: 26px;
}

.ufp-tile-name[b-4mz1qks3w6] {
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ufp-tile-meta[b-4mz1qks3w6] {
    font-size: 10px;
    color: var(--ufp-muted);
}

.ufp-pane-foot[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-top: 1px solid #eef2f6;
    background: #f8fafc;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.ufp-iconbtn[b-4mz1qks3w6] {
    width: 28px;
    height: 28px;
    border: 1px solid #e2e8f0;
    background: #fff;
    border-radius: 6px;
    color: var(--ufp-muted);
    cursor: pointer;
}

    .ufp-iconbtn:hover[b-4mz1qks3w6] {
        border-color: #cbd5e1;
        color: var(--ufp-text);
    }

.ufp-count[b-4mz1qks3w6] {
    font-size: 11.5px;
    color: var(--ufp-muted);
    white-space: nowrap;
}

.ufp-muted[b-4mz1qks3w6] {
    color: #94a3b8;
}

.ufp-pager[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    flex-wrap: wrap;
}

.ufp-pgsize[b-4mz1qks3w6] {
    height: 32px;
    padding: 0 28px 0 10px;
    border: 1px solid #d5d8dc;
    border-radius: 4px;
    background: #fff 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' fill='none' stroke='%23475569' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center;
    -webkit-appearance: none;
    appearance: none;
    font-size: 12.5px;
    color: #334155;
    cursor: pointer;
}

    .ufp-pgsize:focus[b-4mz1qks3w6] {
        outline: none;
        border-color: var(--ufp-accent);
    }

.ufp-pgbtn[b-4mz1qks3w6], .ufp-pgnum[b-4mz1qks3w6] {
    height: 32px;
    min-width: 32px;
    padding: 0 12px;
    border: 1px solid #d5d8dc;
    border-radius: 4px;
    background: #fff;
    color: #334155;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
}

.ufp-pgnum[b-4mz1qks3w6] {
    padding: 0 10px;
}

    .ufp-pgbtn:hover:not(:disabled)[b-4mz1qks3w6], .ufp-pgnum:hover[b-4mz1qks3w6] {
        border-color: #1ab394;
        color: #1ab394;
    }

.ufp-pgbtn:disabled[b-4mz1qks3w6] {
    background: #f1f3f5;
    color: #9aa4ae;
    cursor: not-allowed;
}

.ufp-pgnum-active[b-4mz1qks3w6], .ufp-pgnum-active:hover[b-4mz1qks3w6] {
    background: #1ab394;
    border-color: #1ab394;
    color: #fff;
}

.ufp-pgdots[b-4mz1qks3w6] {
    padding: 0 2px;
    color: var(--ufp-muted);
}

.ufp-footer[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    background: #fff;
    border-top: 1px solid #e5e8ec;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.ufp-footer-left[b-4mz1qks3w6] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ufp-savebtn[b-4mz1qks3w6] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: var(--ufp-accent);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 8px 18px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

    .ufp-savebtn:hover:not(:disabled)[b-4mz1qks3w6] {
        background: var(--ufp-accent-dark);
    }

    .ufp-savebtn:disabled[b-4mz1qks3w6] {
        background: #cbd5e1;
        cursor: not-allowed;
    }

@media (max-width: 900px) {
    .ufp-body[b-4mz1qks3w6] {
        flex-direction: column;
        overflow: auto;
    }

    .ufp-pane[b-4mz1qks3w6] {
        min-height: 320px;
    }
}

/* In-app file preview — opened from clicking a filename in list/tiles. */
.uf-prev-overlay[b-4mz1qks3w6] {
    position: fixed;
    inset: 0;
    background: rgba(15, 20, 30, .6);
    z-index: 2100;
}

.uf-prev-modal[b-4mz1qks3w6] {
    --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-4mz1qks3w6] {
    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-4mz1qks3w6] {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.uf-prev-x[b-4mz1qks3w6] {
    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-4mz1qks3w6] {
        background: rgba(255,255,255,.32);
    }

.uf-prev-body[b-4mz1qks3w6] {
    flex: 1;
    overflow: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    min-height: 0;
    background: #f1f5f9;
}

.uf-prev-img[b-4mz1qks3w6] {
    max-width: 100%;
    max-height: 100%;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0,0,0,.15);
}

.uf-prev-frame[b-4mz1qks3w6] {
    width: 100%;
    height: 100%;
    border: none;
    border-radius: 6px;
    background: #fff;
}

.uf-prev-foot[b-4mz1qks3w6] {
    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-4mz1qks3w6] {
    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-4mz1qks3w6] {
        border-color: #cbd5e1;
    }

@media (max-width: 767px) {
    .uf-prev-modal[b-4mz1qks3w6] {
        width: 96vw;
        height: 92vh;
        top: 3%;
    }
}
/* /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-recent-amt[b-1ovu5oocw6] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.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);
    }

/* Tab icon — left of the label, slightly lighter than the text. */
.avc-tab-ico[b-1ovu5oocw6] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

/* Underlined hot letter in each tab label (Voucher, aUdit, dOcuments …). */
.avc-hot[b-1ovu5oocw6] {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* 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;
}

/* Textboxes / dropdowns / narration textarea — including the ones inside
   VoucherTypeDropdown (CssClass="uf-input") and VoucherLedgerItemAutofill
   (InputClass="uf-input uf-cell") — use the master .uf-input look from
   wwwroot/CSS/masters-forms.css. */

/* ── 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-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-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);
}

/* HSN popup: GST rate / tax amount as disabled .uf-input (same look as HSN code box);
   keep muted/error tint from GstRateCssClass over the generic disabled grey. */
.uf-input.avc-hsn-ro.avc-readout-err:disabled[b-1ovu5oocw6] { color: var(--avc-danger); }
.uf-input.avc-hsn-ro.avc-readout-muted:disabled[b-1ovu5oocw6] { color: var(--avc-muted-light); }

.avc-inset-note[b-1ovu5oocw6] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 8px;
}

/* ── 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 — because it is
       rendered by a child component. */
    .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-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;
}

/* ── 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;
}

/* ── 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);
    /* clip MGroupEdit-style .uf-header gradient / .uf-footer to rounded corners */
    overflow: hidden;
}

.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-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-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;
}

@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;
    }
}

/* Footer (i) — opens the shared keyboard-shortcuts popup (same as ChallanEntry). */
.avc-info-btn[b-1ovu5oocw6] {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid #d5dce3;
    border-radius: 8px;
    background: #ffffff;
    color: #306B9C;
    font-size: 16px;
    cursor: pointer;
    transition: background .12s, color .12s;
}

    .avc-info-btn:hover[b-1ovu5oocw6] {
        background: #eef4fb;
        color: #1ab99a;
    }
/* /Components/Pages/Transactions/Voucher/Accounting/RojMel.razor.rz.scp.css */
/* =====================================================================
   RojMel.razor.css
   Re-skinned to match InvVoucher.razor.css's design system (GAINS teal
   palette, rounded cards, uppercase field labels, subtle shadows) — same
   treatment ChallanEntry.razor.css already got. Layout/behavior (flex
   sticky footer, scrollable table, inline add-row) is UNCHANGED — only
   colors/radii/typography/spacing are updated.
   Header (bspl-title-block), footer (bspl-footer), table (mu-table) and
   buttons (mu-btn) still reuse the shared common-page-chrome.css /
   masters-forms.css classes — only RojMel-specific bits (control bar,
   summary controls + modal, 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] {
    --rj-accent: #1AB99A;
    --rj-accent-dark: #0d9480;
    --rj-accent-bg: #eafbf6;
    --rj-border: #e2e8f0;
    --rj-border-strong: #cbd5e1;
    --rj-text: #1e293b;
    --rj-muted: #64748b;
    --rj-muted-light: #94a3b8;
    --rj-danger: #dc2626;
    --rj-danger-bg: #fef2f2;
    display: flex;
    flex-direction: column;
    height: 100%;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    color: var(--rj-text);
    font-size: 13px;
}

    .rojmel-page .mu-card[b-s7freu8609] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        margin: -16px 16px;
        background: #fff;
        border: 1.5px solid var(--rj-border);
        border-radius: 12px;
    }

    .rojmel-page .mu-table-wrap[b-s7freu8609] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* ── Primary control bar: Date / Bank / Go / Summary controls (always visible,
   mirrors the legacy inline form rather than a filter drawer) — now a
   white rounded card with a teal top accent, matching InvVoucher's
   iv-header-card treatment, instead of the old flat lavender strip. ── */
.rojmel-controlbar[b-s7freu8609] {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
    padding: 14px 16px 16px;
    background: #fff;
    border: 1.5px solid var(--rj-border);
    border-top: 3px solid var(--rj-accent);
    border-radius: 12px;
    margin: 0 16px 14px;
}

.rojmel-fld[b-s7freu8609] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    /* Label look = masters-forms.css .mu-fld > label */
    .rojmel-fld label[b-s7freu8609] {
        font-size: 12px;
        font-weight: 600;
        color: #1a2537;
    }

    /* Date field width (Bank field flexes on its own) */
    .rojmel-fld:not(.rojmel-fld-ledger)[b-s7freu8609] {
        width: 150px;
    }

.rojmel-fld-ledger[b-s7freu8609] {
    position: relative;
    min-width: 260px;
}

/* Date + Bank boxes share ONE box spec taken from masters-forms.css (.mu-fld input:
   32px, 1px #cbd5e1, 5px radius, 13px, blue focus ring) so they line up.
   ::deep because both controls are rendered by child components. */
.rojmel-fld[b-s7freu8609]  .gdp-wrap,
.rojmel-fld[b-s7freu8609]  .rojmel-ledger-input {
    box-sizing: border-box;
    width: 100%;
    height: 32px;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    line-height: 1.5;
    color: #1a2537;
    background: #fff;
    outline: none;
    transition: border-color 0.12s, box-shadow 0.12s;
}

.rojmel-fld[b-s7freu8609]  .gdp-wrap {
    display: flex;
    align-items: center;
}

    .rojmel-fld[b-s7freu8609]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

.rojmel-fld[b-s7freu8609]  .rojmel-ledger-input:focus {
    border-color: #1a56a7;
    box-shadow: 0 0 0 3px rgba(26,86,167,0.12);
}

/* Buttons in the bar match the 32px field height so everything sits on one line */
.rojmel-controlbar .mu-btn[b-s7freu8609] {
    height: 30px;
    margin-bottom: 2px;
    box-sizing: border-box;
}

/* ── Summary controls: "Summary" label + [1 Month][3 Month][Selected Ledger] + Apply,
   pushed to the right end of the control bar (wraps on narrow screens). ── */
.rojmel-summary-bar[b-s7freu8609] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-left: auto;
}

.rojmel-summary-link[b-s7freu8609] {
    font-weight: 700;
    color: var(--rj-accent-dark);
    font-size: 12.5px;
}

.rojmel-summary-opts[b-s7freu8609] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
}

/* ── Summary result modal — closes only via the X button (no backdrop click handler). ── */
.rojmel-modal-backdrop[b-s7freu8609] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15,23,42,.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}

.rojmel-modal[b-s7freu8609] {
    background: #fff;
    border: 1.5px solid var(--rj-border);
    border-radius: 12px;
    box-shadow: 0 10px 28px rgba(15,23,42,.25);
    overflow: hidden;
    max-width: 95vw;
    max-height: 90vh;
    min-width: 280px;
    display: flex;
    flex-direction: column;
}

.rojmel-modal-hdr[b-s7freu8609] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 700;
    font-size: 13px;
    background: var(--rj-accent);
    color: #fff;
    padding: 8px 12px;
}

.rojmel-modal-close[b-s7freu8609] {
    background: none;
    border: none;
    color: #fff;
    cursor: pointer;
    font-size: 16px;
    padding: 2px 6px;
    line-height: 1;
    border-radius: 6px;
}

    .rojmel-modal-close:hover[b-s7freu8609] {
        background: rgba(255,255,255,.2);
    }

.rojmel-summary-result[b-s7freu8609] {
    padding: 10px 12px;
    border-top: 1px solid var(--rj-border);
    font-size: 12px;
    color: var(--rj-muted);
    background: #fff;
}

/* Month/day-grid summary (sp_getLedSummaryRojMel) is wide — 31 day columns plus
   ledger/month/total — so it scrolls inside the modal. */
.rojmel-summary-grid[b-s7freu8609] {
    padding: 0;
    max-height: calc(90vh - 44px);
    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: 5px 8px;
        border-bottom: 1px solid var(--rj-border);
        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: var(--rj-accent-bg);
        color: var(--rj-accent-dark);
        font-weight: 700;
    }

    /* ── Summary section (controls + result popup): 12px Arial everywhere ── */
    .rojmel-summary-bar[b-s7freu8609],
    .rojmel-summary-bar .rojmel-summary-link[b-s7freu8609],
    .rojmel-summary-bar .mu-btn[b-s7freu8609],
    .rojmel-modal[b-s7freu8609],
    .rojmel-modal-hdr[b-s7freu8609],
    .rojmel-summary-result[b-s7freu8609],
    .rojmel-summary-table[b-s7freu8609],
    .rojmel-summary-table th[b-s7freu8609],
    .rojmel-summary-table td[b-s7freu8609] {
        font-family: Arial, Helvetica, sans-serif;
        font-size: 12px;
    }

/* ── VType badge ── */
.rojmel-vtype-badge[b-s7freu8609] {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 20px;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .02em;
    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: 3px 6px;
    color: var(--rj-muted);
    font-size: 13px;
    transition: .12s;
}

    .rojmel-icon-btn:hover[b-s7freu8609] {
        color: var(--rj-accent-dark);
    }

/* ── Inline "add new" row (legacy AddNew()/SaveNew() inline entry) ── */
.rojmel-new-row[b-s7freu8609] {
    background: var(--rj-accent-bg);
}

    .rojmel-new-row select[b-s7freu8609],
    .rojmel-new-row input[b-s7freu8609] {
        width: 100%;
        box-sizing: border-box;
        height: 34px;
        padding: 0 8px;
        border: 1.5px solid var(--rj-border);
        border-radius: 8px;
        font-family: inherit;
        font-size: 12.5px;
        background: #fff;
        color: var(--rj-text);
        outline: none;
        transition: .12s;
    }

        .rojmel-new-row select:focus[b-s7freu8609],
        .rojmel-new-row input:focus[b-s7freu8609] {
            border-color: var(--rj-accent);
            box-shadow: 0 0 0 3px rgba(26,185,154,.12);
        }

/* Existing-row cells are always editable: same input look as the inline new row. */
.rojmel-nav-row td[data-col] select[b-s7freu8609],
.rojmel-nav-row td[data-col] input[b-s7freu8609] {
    width: 100%;
    box-sizing: border-box;
    height: 32px;
    padding: 0 8px;
    border: 1.5px solid transparent;
    border-radius: 8px;
    font-family: inherit;
    font-size: 12.5px;
    background: transparent;
    color: var(--rj-text);
    outline: none;
    transition: .12s;
}

.rojmel-nav-row:hover td[data-col] select:not(:disabled)[b-s7freu8609],
.rojmel-nav-row:hover td[data-col] input:not(:disabled)[b-s7freu8609] {
    border-color: var(--rj-border);
    background: #fff;
}

.rojmel-nav-row td[data-col] select:focus[b-s7freu8609],
.rojmel-nav-row td[data-col] input:focus[b-s7freu8609] {
    border-color: var(--rj-accent);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(26,185,154,.12);
}

.rojmel-nav-row td[data-col] input:disabled[b-s7freu8609] {
    background: transparent;
    cursor: not-allowed;
}

.rojmel-amt-input[b-s7freu8609] {
    text-align: right;
}

    .rojmel-amt-input:disabled[b-s7freu8609] {
        background: #f1f5f9;
        color: var(--rj-muted-light);
        cursor: not-allowed;
    }

/* ── Sum row (legacy Div1/HeadTbl1: SDr / SCr / SNet) ── */
.rojmel-sumrow[b-s7freu8609] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    font-size: 13px;
    flex-wrap: wrap;
}

.rojmel-sum-lbl[b-s7freu8609] {
    font-weight: 700;
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: .04em;
    color: var(--rj-muted);
}

.rojmel-sum-val[b-s7freu8609] {
    min-width: 90px;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}

.rojmel-sum-dr[b-s7freu8609] {
    color: #2f5aa8;
}

.rojmel-sum-cr[b-s7freu8609] {
    color: var(--rj-danger);
}

.rojmel-info-msg[b-s7freu8609] {
    margin-left: 10px;
    font-size: 12.5px;
    color: var(--rj-muted);
    font-style: italic;
}

.rojmel-error[b-s7freu8609] {
    margin: 12px 16px 0;
    padding: 10px 14px;
    background: var(--rj-danger-bg);
    border-left: 4px solid var(--rj-danger);
    border-radius: 8px;
    color: var(--rj-danger);
    font-size: 13px;
    flex-shrink: 0;
}

/* New/Save — same rounded/teal-hover treatment as InvVoucher's iv-btn /
   ChallanEntry's che-btn (border/radius/hover/disabled values copied 1:1;
   this page's own CSS vars are used instead of var() references into
   those pages', since Blazor CSS isolation scopes their classes to their
   own .razor files only). */
/* Footer New/Save use the shared .mu-btn (masters-forms.css); only spacing + disabled state here. */
.bspl-footer-left .mu-btn[b-s7freu8609] {
    margin-left: 6px;
}

.rojmel-page .mu-btn:disabled[b-s7freu8609] {
    opacity: .5;
    cursor: not-allowed;
}

.rojmel-grid-table thead th[b-s7freu8609] {
    text-align: center;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--rj-muted);
    background: #f8fafc;
    padding: 9px 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;
}

.rojmel-grid-table tbody tr:hover[b-s7freu8609] {
    background: var(--rj-accent-bg);
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .rojmel-controlbar[b-s7freu8609] {
        flex-direction: column;
        align-items: stretch;
    }

    .rojmel-fld-ledger[b-s7freu8609] {
        min-width: 0;
    }

    .rojmel-summary-bar[b-s7freu8609] {
        margin-left: 0;
    }

    .rojmel-sumrow[b-s7freu8609] {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* =====================================================
   Standard voucher UI — avc-* block copied from ChallanEntry.razor.css
   (itself ported 1:1 from AccVoucher.razor.css), so RojMel looks the
   same as AccVoucher / InvVoucher / ChallanEntry / ProductionEntry.
   (avc-* class names kept identical so the two pages stay easy to
   compare/sync). Blazor CSS isolation scopes these to ChallanEntry,
   so nothing here leaks into or depends on AccVoucher's own file.
   Ranges copied: tokens/shell/sidebar/header/tabs/strip/gfield,
   line-items grid + totals + action row, utilities, "Voucher UX V2"
   three-pane overrides, Phase 2 spacer/help-btn/active-row.
   Skipped (not used here): TDS/HSN inset + modals, Documents/View tab
   blocks, payment-details block, shortcut modal, productivity status bar.
   ===================================================== */

.avc-page[b-s7freu8609] {
    --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-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
    width: 56px;
}

.avc-sidebar-hdr[b-s7freu8609] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-s7freu8609] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

    .avc-recent-list[b-s7freu8609]::-webkit-scrollbar {
        width: 4px;
    }

    .avc-recent-list[b-s7freu8609]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .avc-recent-list[b-s7freu8609]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-s7freu8609] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-s7freu8609] {
    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-s7freu8609],
    .avc-recent-card.active[b-s7freu8609] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-s7freu8609] {
    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-s7freu8609] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-s7freu8609] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-s7freu8609] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-s7freu8609] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-s7freu8609] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-recent-amt[b-s7freu8609] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.avc-status-badge[b-s7freu8609] {
    flex-shrink: 0;
    border-radius: 6px;
    padding: 1px 6px;
    font-size: 10px;
    font-weight: 600;
}

.avc-status-approved[b-s7freu8609] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-status-pending[b-s7freu8609] {
    background: #fffbeb;
    color: #92400e;
    border: 0.5px solid #fde68a;
}

.avc-status-draft[b-s7freu8609] {
    background: #f3f4f6;
    color: #374151;
    border: 0.5px solid var(--avc-border);
}

.avc-status-rejected[b-s7freu8609] {
    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-s7freu8609] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-s7freu8609] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-s7freu8609] {
    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-s7freu8609] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-s7freu8609] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
        color: var(--avc-header-bg);
    }

    .avc-gains-tab.active[b-s7freu8609] {
        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-s7freu8609] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-panel-lead[b-s7freu8609] {
    font-size: 13px;
    color: var(--avc-muted);
    margin: 0 0 10px;
}

.avc-empty-block[b-s7freu8609] {
    color: var(--avc-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

/* ── Entry quick-action strip ── */
.avc-entry-action-strip[b-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
        background: rgba(255, 255, 255, .12);
        border-color: rgba(255, 255, 255, .42);
    }

    .avc-entry-action-btn.active[b-s7freu8609] {
        background: #fff;
        border-color: #fff;
        color: #065f46;
    }

    .avc-entry-action-btn i[b-s7freu8609] {
        font-size: 12px;
    }

.avc-entry-action-badge[b-s7freu8609] {
    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-s7freu8609] {
    background: rgba(6, 95, 70, .10);
}

/* ── Field grid (Voucher type/no/date/reference, Audit/Documents fields) ── */
.avc-gfield-grid[b-s7freu8609] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-bottom: 8px;
}

.avc-gfield[b-s7freu8609] {
    display: block;
    margin-bottom: .35rem;
}

.avc-gfield-grid .avc-gfield[b-s7freu8609] {
    margin-bottom: 0;
}

.avc-gfield-block:last-child[b-s7freu8609] {
    margin-bottom: 0;
}

.avc-gfield span[b-s7freu8609] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--avc-muted);
    margin-bottom: 4px;
}

/* ── Line items grid ── */
.avc-lines-section[b-s7freu8609] {
    border-top: 0.5px solid var(--avc-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.avc-lines-toolbar[b-s7freu8609] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.avc-lines-title[b-s7freu8609] {
    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-s7freu8609] {
    /* 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-s7freu8609]::-webkit-scrollbar {
        width: 8px;
    }

    .avc-lines-scroll[b-s7freu8609]::-webkit-scrollbar-track {
        background: transparent;
    }

    .avc-lines-scroll[b-s7freu8609]::-webkit-scrollbar-thumb {
        background: var(--avc-accent-border);
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .avc-lines-scroll[b-s7freu8609]::-webkit-scrollbar-thumb:hover {
            background: var(--avc-accent);
            background-clip: content-box;
        }

    .avc-lines-scroll[b-s7freu8609]::-webkit-scrollbar-corner {
        background: transparent;
    }

.avc-lines-table[b-s7freu8609] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    table-layout: fixed;
}

    .avc-lines-table thead th[b-s7freu8609] {
        position: sticky;
        top: 0;
        background: #fff;
        z-index: 1;
    }

    .avc-lines-table th[b-s7freu8609] {
        text-align: left;
        font-weight: 600;
        font-size: 11px;
        color: var(--avc-muted);
        padding: 0 8px 10px;
    }

    .avc-lines-table td[b-s7freu8609] {
        padding: 8px 8px;
        border-bottom: 0.5px solid var(--avc-border-soft);
    }

.avc-icon-btn[b-s7freu8609] {
    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-s7freu8609] {
        color: var(--avc-danger);
        border-color: var(--avc-danger-border);
    }

.avc-closing-muted[b-s7freu8609] {
    color: var(--avc-muted-light);
}

.avc-closing-pos[b-s7freu8609] {
    color: #1d4ed8;
    font-weight: 600;
}

.avc-closing-neg[b-s7freu8609] {
    color: #800000;
    font-weight: 600;
}

.avc-lines-hint[b-s7freu8609] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Totals bar ── */
.avc-totals-bar[b-s7freu8609] {
    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-s7freu8609] {
        color: var(--avc-text);
        font-weight: 700;
    }

.avc-balance-pill[b-s7freu8609] {
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 12px;
    font-weight: 600;
}

.avc-balance-ok[b-s7freu8609] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-balance-bad[b-s7freu8609] {
    background: var(--avc-danger-bg);
    color: var(--avc-danger);
    border: 0.5px solid var(--avc-danger-border);
}

.avc-validation-msg[b-s7freu8609] {
    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-s7freu8609] {
    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-s7freu8609] {
    width: 100%;
    max-width: 1300px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 2rem;
}

/* ── Shared utilities ── */
.text-end[b-s7freu8609] {
    text-align: right;
}

.text-center[b-s7freu8609] {
    text-align: center;
}

/* =====================================================
   GAINS Voucher UX V2 — contextual three-pane redesign
   ===================================================== */
.avc-page[b-s7freu8609] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-s7freu8609] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-s7freu8609] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-s7freu8609] {
    width: 52px;
}

.avc-gains-header[b-s7freu8609] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-s7freu8609] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-s7freu8609] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-s7freu8609] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-s7freu8609] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-s7freu8609] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-s7freu8609] {
    padding: 14px 18px 88px;
}

.avc-entry-layout[b-s7freu8609] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 14px;
    align-items: start;
}

.avc-entry-main[b-s7freu8609] {
    min-width: 0;
}

.avc-entry-action-strip[b-s7freu8609] {
    min-height: 36px;
    padding: 4px;
    margin-bottom: 10px;
    background: #f4f7f6;
    border: 1px solid #e2ebe8;
}

.avc-entry-action-btn[b-s7freu8609] {
    min-height: 28px;
    color: #40524d;
    border-color: transparent;
}

    .avc-entry-action-btn:hover[b-s7freu8609] {
        background: #fff;
        border-color: #d7e5e0;
    }

    .avc-entry-action-btn.active[b-s7freu8609] {
        background: #e3f7f1;
        color: #08765f;
        border-color: #b8e8da;
    }

.avc-entry-action-badge[b-s7freu8609] {
    background: rgba(8,118,95,.09);
}

.avc-gfield-grid[b-s7freu8609] {
    grid-template-columns: minmax(230px, 1.35fr) minmax(170px, .75fr) minmax(210px, 1fr);
    gap: 10px;
}

.avc-gfield span[b-s7freu8609] {
    font-size: 10.5px;
    margin-bottom: 3px;
}

.avc-lines-section[b-s7freu8609] {
    padding-top: 12px;
    margin-bottom: 10px;
}

.avc-lines-toolbar[b-s7freu8609] {
    margin-bottom: 9px;
}

.avc-lines-scroll[b-s7freu8609] {
    height: 310px;
    border: 1px solid #e5ece9;
    border-radius: 10px;
    background: #fff;
}

.avc-lines-table thead th[b-s7freu8609] {
    background: #f6f9f8;
    padding: 10px 8px;
    border-bottom: 1px solid #e4ebe8;
}

.avc-lines-table td[b-s7freu8609] {
    padding: 6px 8px;
}

.avc-icon-btn[b-s7freu8609] {
    width: 36px;
    height: 36px;
    border-radius: 7px;
}

.avc-summary-strip[b-s7freu8609] {
    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-s7freu8609] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 10px 14px;
    border-right: 1px solid #dfeae6;
}

    .avc-summary-cell:last-child[b-s7freu8609] {
        border-right: none;
    }

    .avc-summary-cell span[b-s7freu8609] {
        font-size: 10px;
        color: #71817c;
    }

    .avc-summary-cell strong[b-s7freu8609] {
        font-size: 14px;
        color: #17231f;
    }

    .avc-summary-cell small[b-s7freu8609] {
        font-size: 10px;
    }

.avc-balanced-text[b-s7freu8609] {
    color: #078060;
}

.avc-unbalanced-text[b-s7freu8609] {
    color: #b45309;
}

.avc-context-panel[b-s7freu8609] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    position: sticky;
    top: 10px;
}

.avc-context-card[b-s7freu8609] {
    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-s7freu8609] {
    background: linear-gradient(145deg, #effbf7, #fff);
    border-color: #ccebe1;
}

.avc-context-card-head[b-s7freu8609] {
    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-s7freu8609] {
        color: #0f9f81;
    }

.avc-context-empty[b-s7freu8609] {
    font-size: 11px;
    color: #94a19d;
    line-height: 1.5;
}

.avc-context-ledger[b-s7freu8609] {
    font-size: 11px;
    color: #667771;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-context-amount[b-s7freu8609] {
    margin-top: 5px;
    font-size: 22px;
    line-height: 1.2;
    font-weight: 750;
    color: #078060;
}

    .avc-context-amount small[b-s7freu8609] {
        font-size: 11px;
        font-weight: 700;
    }

.avc-context-caption[b-s7freu8609] {
    margin-top: 5px;
    font-size: 10px;
    color: #84918d;
}

.avc-context-row[b-s7freu8609] {
    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-s7freu8609] {
        border-bottom: none;
    }

    .avc-context-row span[b-s7freu8609] {
        color: #7b8984;
    }

    .avc-context-row strong[b-s7freu8609] {
        color: #25332f;
        font-weight: 650;
        text-align: right;
    }

.avc-context-dot[b-s7freu8609] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #cbd5d1;
}

    .avc-context-dot.is-active[b-s7freu8609] {
        background: #16a37f;
        box-shadow: 0 0 0 4px rgba(22,163,127,.12);
    }

.avc-context-action[b-s7freu8609] {
    display: grid;
    grid-template-columns: 34px 1fr auto;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: .12s ease;
}

    .avc-context-action:hover[b-s7freu8609] {
        border-color: #8dd5c1;
        transform: translateY(-1px);
        box-shadow: 0 5px 16px rgba(15, 118, 92, .08);
    }

    .avc-context-action > span:nth-child(2)[b-s7freu8609] {
        display: flex;
        flex-direction: column;
        gap: 3px;
        min-width: 0;
    }

    .avc-context-action strong[b-s7freu8609] {
        font-size: 12px;
        color: #25332f;
    }

    .avc-context-action small[b-s7freu8609] {
        font-size: 10px;
        color: #84918d;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .avc-context-action > i[b-s7freu8609] {
        font-size: 10px;
        color: #96a39f;
    }

.avc-context-action-icon[b-s7freu8609] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    color: #078060;
    background: #e8f8f3;
}

.avc-action-row-inner[b-s7freu8609] {
    max-width: 1600px;
    justify-content: flex-end;
    padding: 9px 22px;
}

@media (max-width: 1180px) {
    .avc-entry-layout[b-s7freu8609] {
        grid-template-columns: 1fr;
    }

    .avc-context-panel[b-s7freu8609] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        position: static;
    }
}

@media (max-width: 900px) {
    .avc-gfield-grid[b-s7freu8609] {
        grid-template-columns: 1fr;
    }

    .avc-summary-strip[b-s7freu8609] {
        grid-template-columns: repeat(2, 1fr);
    }

    .avc-summary-cell:nth-child(2)[b-s7freu8609] {
        border-right: none;
    }

    .avc-context-panel[b-s7freu8609] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   GAINS Voucher Phase 2 — active row + shortcut help
   ===================================================== */
.avc-entry-action-spacer[b-s7freu8609] {
    flex: 1 1 auto;
}

.avc-shortcut-help-btn[b-s7freu8609] {
    margin-left: auto;
}

.avc-lines-table tbody tr[b-s7freu8609] {
    transition: background-color .12s ease, box-shadow .12s ease;
}

    .avc-lines-table tbody tr.avc-row-active[b-s7freu8609] {
        background: #effbf7;
        box-shadow: inset 3px 0 0 var(--avc-accent);
    }

        .avc-lines-table tbody tr.avc-row-active td[b-s7freu8609] {
            border-bottom-color: #d7eee7;
        }

/* =====================================================
   ChallanEntry-specific glue on top of the ported avc-* layout
   ===================================================== */

/* .che-page (above) still supplies --che-* tokens used by the modals /
   toast / confirm; layout look comes from .avc-page. */
.avc-page.che-page[b-s7freu8609] {
    padding: 10px;
    background: #f4f7f9;
    font-size: 13px;
}

/* Header text column. */
.che-gains-head-text[b-s7freu8609] {
    flex: 1;
    min-width: 0;
}

/* Challan has 8 header fields → 4 per row (AccVoucher's 3-col grid is
   sized for its 3 fields). */
.avc-gfield-grid.che-gfield-grid[b-s7freu8609] {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Narration + Address side by side under the field grid. */
.che-gfield-pair[b-s7freu8609] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

/* Field labels: AccVoucher's sentence-case look instead of the old
   uppercase che-field label. */
.avc-gfield.che-field > span[b-s7freu8609] {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 600;
    font-size: 10.5px;
    color: var(--avc-muted);
    margin-bottom: 3px;
}

/* Action row: report buttons left, Save/New/Delete right. */
/* Linked vouchers tab — hide VoucherCrossLink's "Account" category tab
   (always the 1st button in its .vcl-tabs strip: Account / Inventory /
   Order / PUR). Done from here via ::deep so the shared component and
   its other hosts (AccVoucher, ProductionEntry, POSEntry) are untouched. */
.che-crosslink-wrap[b-s7freu8609]  .vcl-tabs > .db-summary-tab:first-child {
    display: none;
}

/* Tab icon (pen / eye / clock / paperclip / link) before the label. */
.che-tab-ico[b-s7freu8609] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

/* Tab hotkey letter (V/U/O/E/L) underline. */
.che-tab-key[b-s7freu8609] {
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

.che-action-spacer[b-s7freu8609] {
    flex: 1 1 auto;
}

.avc-action-row .che-btn[b-s7freu8609] {
    min-height: 38px;
    padding: 0 14px;
}

@media (max-width: 1180px) {
    .avc-gfield-grid.che-gfield-grid[b-s7freu8609] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .avc-shell[b-s7freu8609] {
        flex-direction: column;
        border-radius: 14px;
    }

    .avc-sidebar[b-s7freu8609] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-sidebar-collapsed .avc-sidebar-hdr[b-s7freu8609] {
        justify-content: flex-end;
    }

    .avc-gains-tabs[b-s7freu8609] {
        overflow-x: auto;
    }

    .avc-action-row-inner[b-s7freu8609] {
        flex-wrap: wrap;
        padding: 8px 12px;
    }

    .che-action-spacer[b-s7freu8609] {
        display: none;
    }
}

@media (max-width: 600px) {
    .avc-gfield-grid.che-gfield-grid[b-s7freu8609],
    .che-gfield-pair[b-s7freu8609] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   RojMel glue on top of the standard avc-* shell
   ===================================================== */

/* Page flows like the voucher pages (page scroll + fixed action row)
   instead of the old full-height flex column. */
.avc-page.rojmel-page[b-s7freu8609] {
    height: auto;
    padding: 10px;
    background: #f4f7f9;
    font-size: 13px;
}

.che-gains-head-text[b-s7freu8609] {
    flex: 1;
    min-width: 0;
}

/* Control bar sits inside the avc body now — no side margins. */
.avc-gains-body .rojmel-controlbar[b-s7freu8609] {
    margin: 0 0 12px;
}

/* Grid card: plain block inside the body; the table scrolls inside its
   own wrap (like AccVoucher's .avc-lines-scroll) so the page stays put. */
.avc-page .rojmel-card[b-s7freu8609] {
    flex: none;
    margin: 0;
    border-radius: 12px;
    overflow: hidden;
}

    .avc-page .rojmel-card .mu-table-wrap[b-s7freu8609] {
        flex: none;
        min-height: 220px;
        max-height: calc(100vh - 330px);
        overflow: auto;
    }

.avc-gains-body .rojmel-sumrow[b-s7freu8609] {
    padding: 10px 2px 0;
}

/* Action row: record count + info message next to the Excel button. */
.rojmel-records[b-s7freu8609] {
    font-size: 13px;
    color: var(--avc-muted);
}

.avc-action-row .rojmel-info-msg[b-s7freu8609] {
    margin-left: 4px;
}

.avc-action-row .bspl-foot-btn[b-s7freu8609] {
    font-size: 20px;
}
/* /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; }
/* Standard page-title format (same as CHALLAN ENTRY): light, uppercase,
   teal title + small gray "New · SLS" subtitle. */
.cart-brand-main[b-u8nmqxski4] {
    font-weight: 300; font-size: 22px; line-height: 1.15;
    text-transform: uppercase; letter-spacing: .5px;
    color: #1AB99A; white-space: nowrap;
}
.cart-brand-sub[b-u8nmqxski4] { font-size: 12px; color: #777; margin-top: 2px; }

.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 now uses the shared .mu-toast-host/.mu-toast (masters-forms.css) —
   old page-local .cart-toast removed. */

/* ── 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. Shell is the master popup (masters-forms.css):
   uf-overlay + ms-pop (backdrop, z-index 1000 — above the cart drawer),
   uf-modal (card, radius, shadow), uf-header / uf-close, uf-footer /
   uf-btn. Only size + the tab/option body layout stay page-specific. ── */
.cart-filter-overlay[b-u8nmqxski4] {
    justify-content: center;
}
.cart-filter-modal[b-u8nmqxski4] {
    width: min(560px, 92vw);
    height: min(520px, 84vh);
}
.cart-filter-modal .uf-header[b-u8nmqxski4],
.cart-filter-modal .uf-footer[b-u8nmqxski4] { flex-shrink: 0; }
.cart-filter-title-ic[b-u8nmqxski4] { font-size: 13px; margin-right: 4px; }

.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;
}


/* 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); }

/* Item-wise before-tax discount: original (struck) / green −disc / rule / net */
.cart-drawer-row-price-disc[b-u8nmqxski4] { flex-direction: column; align-items: flex-end; gap: 1px; }
.cart-drawer-row-price-disc .cart-drawer-row-orig[b-u8nmqxski4] { font-size: 11.5px; }
.cart-drawer-row-disc[b-u8nmqxski4] { font-size: 12px; font-weight: 600; color: var(--cart-success); }
.cart-drawer-row-net[b-u8nmqxski4] {
    color: var(--cart-text); font-size: 14px;
    border-top: 1px solid var(--cart-border); padding-top: 2px; margin-top: 1px; min-width: 64px; text-align: right;
}

.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; }
    /* Phone: bottom sheet — beats ms-pop's centred / 18px-radius card. */
    .cart-filter-overlay.ms-pop[b-u8nmqxski4] { align-items: flex-end; padding: 0; }
    .cart-filter-overlay .cart-filter-modal[b-u8nmqxski4] {
        width: 100%;
        max-width: 100%;
        height: 78vh;
        border-radius: 18px 18px 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: 16px; }
    [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;
    }
}

/* ═════════════════════════════════════════════════════════════════════
   Cart drawer — production design system (scoped to .cart-drawer only;
   the product grid is untouched). Flat surfaces, hairline borders, one
   brand colour, no decorative gradients. Legacy cart-* drawer classes are
   overridden with a .cart-drawer prefix so they out-rank the base rules
   and their media queries above; new markup uses cd-*.

   Tokens
     brand   #0F8F77  (teal-700 — AA contrast with white text)
     accent  #1AB99A  (GAINS teal — small marks only)
     wash    #EDF8F5   ink #101828   text #344054   mute #667085
     line    #E4E7EC   paper #F6F7F9  positive #067647  danger #D92D20
     radius  card 14 · control 10 · chip 999
   ═════════════════════════════════════════════════════════════════════ */
.cart-drawer[b-u8nmqxski4] {
    --cd-brand: #0F8F77;
    --cd-brand-hover: #0B7864;
    --cd-accent: #1AB99A;
    --cd-wash: #EDF8F5;
    --cd-ink: #101828;
    --cd-text: #344054;
    --cd-mute: #667085;
    --cd-faint: #98A2B3;
    --cd-line: #E4E7EC;
    --cd-line-strong: #D0D5DD;
    --cd-paper: #F6F7F9;
    --cd-pos: #067647;
    --cd-pos-bg: #ECFDF3;
    --cd-danger: #D92D20;
    --cd-danger-bg: #FEF3F2;
    --cd-r-card: 14px;
    --cd-r-ctl: 10px;
    --cd-ring: 0 0 0 3px rgba(15,143,119,.18);
    width: min(460px, 100vw);
    background: var(--cd-paper);
    color: var(--cd-text);
    box-shadow: -12px 0 32px rgba(16,24,40,.12);
    font-variant-numeric: tabular-nums;
    animation: cd-slide-in-b-u8nmqxski4 .2s ease-out;
}
.cart-drawer-overlay[b-u8nmqxski4] { background: rgba(16,24,40,.40); animation: cd-fade-in-b-u8nmqxski4 .18s ease-out; }
@keyframes cd-slide-in-b-u8nmqxski4 { from { transform: translateX(20px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes cd-fade-in-b-u8nmqxski4 { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
    .cart-drawer[b-u8nmqxski4], .cart-drawer-overlay[b-u8nmqxski4] { animation: none; }
}
.cart-drawer button:focus-visible[b-u8nmqxski4],
.cart-drawer input:focus-visible[b-u8nmqxski4],
.cart-drawer textarea:focus-visible[b-u8nmqxski4] { outline: none; box-shadow: var(--cd-ring); }

/* ── Header ── */
.cart-drawer .cart-drawer-hdr[b-u8nmqxski4] {
    gap: 12px;
    justify-content: flex-start;
    padding: 16px 20px;
    background: #fff;
    border-bottom: 1px solid var(--cd-line);
    color: var(--cd-ink);
}
.cart-drawer .cart-drawer-hdr-icon[b-u8nmqxski4] {
    width: 40px; height: 40px; flex-shrink: 0;
    border-radius: 12px;
    background: var(--cd-wash);
    color: var(--cd-brand);
    display: flex; align-items: center; justify-content: center;
    font-size: 17px;
}
.cart-drawer .cart-drawer-hdr-text[b-u8nmqxski4] { flex: 1; min-width: 0; }
.cart-drawer .cart-drawer-title[b-u8nmqxski4] {
    display: flex; align-items: center; gap: 8px;
    font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--cd-ink);
}
.cart-drawer .cart-drawer-count[b-u8nmqxski4] {
    font-size: 11.5px; font-weight: 600; letter-spacing: 0;
    color: var(--cd-brand); background: var(--cd-wash);
    border-radius: 999px; padding: 2px 9px;
}
.cart-drawer .cart-drawer-subtitle[b-u8nmqxski4] {
    display: flex; align-items: center; gap: 6px;
    color: var(--cd-mute); font-size: 12.5px; margin-top: 2px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cart-drawer .cart-drawer-x[b-u8nmqxski4] {
    width: 36px; height: 36px; flex-shrink: 0;
    border-radius: var(--cd-r-ctl);
    border: 1px solid var(--cd-line);
    background: #fff;
    color: var(--cd-mute); font-size: 15px;
    display: flex; align-items: center; justify-content: center;
    transition: background .15s, color .15s, border-color .15s;
}
.cart-drawer .cart-drawer-x:hover[b-u8nmqxski4] { background: var(--cd-paper); color: var(--cd-ink); border-color: var(--cd-line-strong); }

/* ── Body ── */
.cart-drawer .cart-drawer-body[b-u8nmqxski4] {
    padding: 16px 16px 24px;
    gap: 12px;
    scrollbar-color: var(--cd-line-strong) transparent;
}
.cart-drawer .cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar { width: 6px; }
.cart-drawer .cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar-thumb { background: var(--cd-line-strong); }
.cart-drawer .cart-drawer-body[b-u8nmqxski4]::-webkit-scrollbar-thumb:hover { background: var(--cd-faint); }
/* Scrolling flex column — children must never shrink (cards with
   overflow:hidden would otherwise collapse to 0px). */
.cart-drawer .cart-drawer-body > *[b-u8nmqxski4] { flex-shrink: 0; }

/* Empty state */
.cart-drawer .cart-empty-drawer[b-u8nmqxski4] {
    margin: auto 0;
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 48px 24px; text-align: center;
}
.cart-drawer .cart-empty-drawer > i[b-u8nmqxski4] {
    width: 64px; height: 64px; margin-bottom: 10px;
    border-radius: 50%;
    background: #fff; border: 1px solid var(--cd-line);
    display: flex; align-items: center; justify-content: center;
    font-size: 24px; color: var(--cd-brand);
}
.cd-empty-title[b-u8nmqxski4] { font-size: 15px; font-weight: 700; color: var(--cd-ink); }
.cd-empty-sub[b-u8nmqxski4] { font-size: 13px; color: var(--cd-mute); max-width: 240px; line-height: 1.45; }
.cart-drawer .cart-empty-cta[b-u8nmqxski4] {
    margin-top: 14px;
    height: 40px; padding: 0 18px;
    border: none; border-radius: var(--cd-r-ctl);
    background: var(--cd-brand); color: #fff;
    font-weight: 600; font-size: 13.5px; cursor: pointer;
    transition: background .15s;
}
.cart-drawer .cart-empty-cta:hover[b-u8nmqxski4] { background: var(--cd-brand-hover); }

.cart-drawer .cart-savings-banner[b-u8nmqxski4] {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 10px 12px;
    background: var(--cd-pos-bg); color: var(--cd-pos);
    border: 1px solid #ABEFC6; border-radius: var(--cd-r-ctl);
    font-size: 13px; font-weight: 500;
}

/* ── Cards (items / options / bill share one card language) ── */
.cd-list[b-u8nmqxski4],
.cd-bill[b-u8nmqxski4],
.cart-drawer .cart-more-panel[b-u8nmqxski4] {
    background: #fff;
    border: 1px solid var(--cd-line);
    border-radius: var(--cd-r-card);
    box-shadow: 0 1px 2px rgba(16,24,40,.04);
}
.cd-list[b-u8nmqxski4], .cd-bill[b-u8nmqxski4] { overflow: hidden; }

.cd-list-hdr[b-u8nmqxski4],
.cd-bill-hdr[b-u8nmqxski4] {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--cd-line);
}
.cd-list-title[b-u8nmqxski4],
.cd-bill-hdr[b-u8nmqxski4] {
    font-size: 13.5px; font-weight: 600; color: var(--cd-ink);
}
.cd-bill-hdr[b-u8nmqxski4] { justify-content: flex-start; }
.cd-bill-hdr i[b-u8nmqxski4] { color: var(--cd-brand); font-size: 13px; }

.cd-date-pill[b-u8nmqxski4] {
    display: inline-flex; align-items: center; gap: 6px;
    height: 30px; padding: 0 11px;
    border: 1px solid var(--cd-line); border-radius: 999px; background: #fff;
    color: var(--cd-text); font-size: 12px; font-weight: 500; cursor: pointer;
    transition: border-color .15s, background .15s;
}
.cd-date-pill i[b-u8nmqxski4] { color: var(--cd-brand); }
.cd-date-pill:hover[b-u8nmqxski4] { border-color: var(--cd-line-strong); background: var(--cd-paper); }

/* ── Item row ──
    [thumb] name .................. [×]
    [thumb] ₹rate per uom
            [− qty +] ........ ₹amount */
.cd-item[b-u8nmqxski4] {
    display: grid;
    grid-template-columns: 60px minmax(0, 1fr) auto;
    grid-template-areas:
        "thumb info del"
        "thumb step amt";
    column-gap: 14px;
    row-gap: 12px;
    padding: 16px;
    border-bottom: 1px solid var(--cd-line);
    transition: background .15s;
}
.cd-item:last-of-type[b-u8nmqxski4] { border-bottom: none; }
.cd-item:hover[b-u8nmqxski4] { background: #FCFCFD; }

.cd-thumb[b-u8nmqxski4] {
    grid-area: thumb;
    width: 60px; height: 60px;
    border-radius: 12px;
    border: 1px solid var(--cd-line);
    background: #fff;
    overflow: hidden;
    display: flex; align-items: center; justify-content: center;
}
.cd-thumb img[b-u8nmqxski4] { width: 100%; height: 100%; object-fit: contain; padding: 5px; }
.cd-thumb-ph[b-u8nmqxski4] {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    background: var(--cd-paper);
    color: var(--cd-faint); font-size: 20px;
}

.cd-info[b-u8nmqxski4] { grid-area: info; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.cd-name[b-u8nmqxski4] {
    font-size: 14px; font-weight: 600; line-height: 1.35; color: var(--cd-ink);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.cd-name-blank[b-u8nmqxski4] { color: var(--cd-faint); font-style: italic; font-weight: 500; }
.cd-rate[b-u8nmqxski4] { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px; font-size: 12.5px; color: var(--cd-mute); }
.cd-rate-val[b-u8nmqxski4] { color: var(--cd-text); font-weight: 600; }
.cd-uom[b-u8nmqxski4]::before { content: "/ "; }
.cd-rate-edit[b-u8nmqxski4] { display: inline-flex; align-items: center; gap: 3px; color: var(--cd-text); font-weight: 600; }
.cd-rate-input[b-u8nmqxski4] {
    width: 84px; height: 28px; padding: 0 8px;
    border: 1px solid var(--cd-line-strong); border-radius: 8px;
    font: inherit; color: var(--cd-ink); background: #fff;
    transition: border-color .15s, box-shadow .15s;
}
.cd-rate-input:hover[b-u8nmqxski4] { border-color: var(--cd-faint); }
.cd-rate-input:focus[b-u8nmqxski4] { outline: none; border-color: var(--cd-brand); box-shadow: var(--cd-ring); }
.cd-batch[b-u8nmqxski4] {
    align-self: flex-start;
    display: inline-flex; align-items: center; gap: 6px;
    margin-top: 2px; height: 24px; padding: 0 9px;
    border: 1px solid var(--cd-line); border-radius: 999px;
    background: #fff; color: var(--cd-brand);
    font-size: 11.5px; font-weight: 600; cursor: pointer;
    transition: background .15s, border-color .15s;
}
.cd-batch:hover[b-u8nmqxski4] { background: var(--cd-wash); border-color: #B7E4D8; }

.cd-del[b-u8nmqxski4] {
    grid-area: del; align-self: start;
    width: 32px; height: 32px; margin: -6px -8px 0 0;
    border: none; border-radius: 8px; background: none;
    color: var(--cd-faint); font-size: 14px; cursor: pointer;
    transition: background .15s, color .15s;
}
.cd-del:hover[b-u8nmqxski4] { background: var(--cd-danger-bg); color: var(--cd-danger); }

/* Quantity control — neutral outline, brand on interaction */
.cd-stepper[b-u8nmqxski4] {
    grid-area: step; justify-self: start; align-self: center;
    display: inline-flex; align-items: stretch;
    height: 36px;
    border: 1px solid var(--cd-line-strong);
    border-radius: var(--cd-r-ctl);
    background: #fff;
    overflow: hidden;
    transition: border-color .15s, box-shadow .15s;
}
.cd-stepper:hover[b-u8nmqxski4] { border-color: var(--cd-faint); }
.cd-stepper:focus-within[b-u8nmqxski4] { border-color: var(--cd-brand); box-shadow: var(--cd-ring); }
.cd-stepper button[b-u8nmqxski4] {
    width: 34px;
    border: none; background: none; cursor: pointer;
    color: var(--cd-text); font-size: 11.5px;
    transition: background .12s, color .12s;
}
.cd-stepper button:hover[b-u8nmqxski4] { background: var(--cd-wash); color: var(--cd-brand); }
.cd-stepper button:active[b-u8nmqxski4] { background: #D9F2EB; }
.cd-stepper button:focus-visible[b-u8nmqxski4] { box-shadow: none; background: var(--cd-wash); color: var(--cd-brand); }
.cd-stepper input[b-u8nmqxski4] {
    width: 46px;
    border: none; border-left: 1px solid var(--cd-line); border-right: 1px solid var(--cd-line);
    background: #fff; text-align: center;
    font: inherit; font-size: 14px; font-weight: 600; color: var(--cd-ink);
    -moz-appearance: textfield;
}
.cd-stepper input[b-u8nmqxski4]::-webkit-outer-spin-button,
.cd-stepper input[b-u8nmqxski4]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.cd-stepper input:focus[b-u8nmqxski4] { outline: none; box-shadow: none; }

.cd-amt[b-u8nmqxski4] {
    grid-area: amt; align-self: center;
    display: flex; flex-direction: column; align-items: flex-end; gap: 2px;
    line-height: 1.2; text-align: right;
}
.cd-amt-was[b-u8nmqxski4] { font-size: 12px; color: var(--cd-faint); text-decoration: line-through; }
.cd-amt-disc[b-u8nmqxski4] {
    font-size: 11px; font-weight: 600; color: var(--cd-pos);
    background: var(--cd-pos-bg); border-radius: 999px; padding: 1px 7px;
}
.cd-amt-now[b-u8nmqxski4] { font-size: 15.5px; font-weight: 700; color: var(--cd-ink); letter-spacing: -.01em; }

.cd-addmore[b-u8nmqxski4] {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    width: 100%; height: 46px;
    border: none; border-top: 1px solid var(--cd-line);
    background: #fff;
    color: var(--cd-brand); font-size: 13.5px; font-weight: 600; cursor: pointer;
    transition: background .15s;
}
.cd-addmore:hover[b-u8nmqxski4] { background: var(--cd-wash); }
.cd-addmore i[b-u8nmqxski4] { font-size: 12px; }

/* ── Voucher options (accordion) ── */
.cart-drawer .cart-more-toggle[b-u8nmqxski4] {
    display: flex; align-items: center; gap: 12px;
    width: 100%; padding: 12px 16px;
    background: #fff;
    border: 1px solid var(--cd-line);
    border-radius: var(--cd-r-card);
    box-shadow: 0 1px 2px rgba(16,24,40,.04);
    text-align: left; cursor: pointer;
    transition: border-color .15s, background .15s;
}
.cart-drawer .cart-more-toggle:hover[b-u8nmqxski4] { border-color: var(--cd-line-strong); }
.cart-drawer .cart-more-toggle.open[b-u8nmqxski4] { border-radius: var(--cd-r-card) var(--cd-r-card) 0 0; border-bottom-color: transparent; box-shadow: none; }
.cart-drawer .cart-more-toggle i:first-child[b-u8nmqxski4] {
    width: 32px; height: 32px; flex-shrink: 0;
    border-radius: 9px; background: var(--cd-wash); color: var(--cd-brand);
    display: flex; align-items: center; justify-content: center; font-size: 13px;
}
.cd-more-text[b-u8nmqxski4] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cd-more-text > span[b-u8nmqxski4] { font-size: 13.5px; font-weight: 600; color: var(--cd-ink); }
.cd-more-text > small[b-u8nmqxski4] { font-size: 12px; color: var(--cd-mute); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cart-drawer .cart-more-toggle .cd-more-chev[b-u8nmqxski4] { margin-left: 0; font-size: 12px; color: var(--cd-mute); transition: transform .2s; }
.cart-drawer .cart-more-toggle.open .cd-more-chev[b-u8nmqxski4] { transform: rotate(180deg); }

.cart-drawer .cart-more-panel[b-u8nmqxski4] {
    margin-top: -12px;           /* attach to the open toggle (body gap is 12px) */
    border-top: 1px dashed var(--cd-line);
    border-radius: 0 0 var(--cd-r-card) var(--cd-r-card);
    padding: 4px 16px 16px;
    gap: 0;
}
.cd-opt[b-u8nmqxski4] { padding: 14px 0 0; display: flex; flex-direction: column; gap: 12px; }
.cd-opt + .cd-opt[b-u8nmqxski4] { margin-top: 14px; border-top: 1px solid var(--cd-line); }
.cd-opt-title[b-u8nmqxski4] { font-size: 13px; font-weight: 600; color: var(--cd-ink); }
.cd-opt-grid[b-u8nmqxski4] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cd-field[b-u8nmqxski4] { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.cd-label[b-u8nmqxski4] { font-size: 12px; font-weight: 500; color: var(--cd-text); }
.cd-label small[b-u8nmqxski4] { color: var(--cd-faint); font-weight: 400; margin-left: 4px; font-size: 11.5px; }

/* Inputs */
.cart-drawer .cd-input[b-u8nmqxski4] {
    width: 100%; height: 40px; padding: 0 12px;
    border: 1px solid var(--cd-line-strong); border-radius: var(--cd-r-ctl);
    background: #fff; color: var(--cd-ink);
    font: inherit; font-size: 14px;
    transition: border-color .15s, box-shadow .15s;
}
.cart-drawer .cd-input[b-u8nmqxski4]::placeholder { color: var(--cd-faint); }
.cart-drawer .cd-input:hover[b-u8nmqxski4] { border-color: var(--cd-faint); }
.cart-drawer .cd-input:focus[b-u8nmqxski4] { outline: none; border-color: var(--cd-brand); box-shadow: var(--cd-ring); }
/* Fixed height, no resize handle — long notes scroll inside the box. */
.cart-drawer .cd-textarea[b-u8nmqxski4] { height: 76px; min-height: 76px; max-height: 76px; padding: 10px 12px; resize: none; overflow-y: auto; line-height: 1.45; }
.cd-input-wrap[b-u8nmqxski4] { position: relative; display: block; }
.cd-affix[b-u8nmqxski4] {
    position: absolute; top: 0; bottom: 0; left: 12px;
    display: flex; align-items: center;
    font-size: 13.5px; font-weight: 500; color: var(--cd-mute); pointer-events: none;
}
.cd-affix-end[b-u8nmqxski4] { left: auto; right: 12px; }
.cart-drawer .cd-input-wrap .cd-affix + .cd-input[b-u8nmqxski4] { padding-left: 28px; }
.cart-drawer .cd-input-wrap .cd-input-end[b-u8nmqxski4] { padding-right: 30px; }
.cd-input-wrap .cd-input[b-u8nmqxski4] { -moz-appearance: textfield; }
.cd-input-wrap .cd-input[b-u8nmqxski4]::-webkit-outer-spin-button,
.cd-input-wrap .cd-input[b-u8nmqxski4]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* GlobalDatepicker (child component) — its field is a .gdp-wrap DIV
   (icon + .gdp-value text), not an <input>, styled globally in
   common-page-chrome.css. ::deep re-skins it to match .cd-input exactly:
   40px tall, 10px radius, same border / hover / focus ring. */
.cd-date[b-u8nmqxski4] { width: 100%; position: relative; }
.cd-date[b-u8nmqxski4]  .gdp-field-block { width: 100%; }
.cd-date[b-u8nmqxski4]  .gdp-wrap {
    width: 100%; height: 40px;
    padding: 0 12px; gap: 10px;
    border: 1px solid var(--cd-line-strong);
    border-radius: var(--cd-r-ctl);
    background: #fff;
    font-size: 14px; color: var(--cd-ink);
    transition: border-color .15s, box-shadow .15s;
}
.cd-date[b-u8nmqxski4]  .gdp-wrap:hover { border-color: var(--cd-faint); }
.cd-date[b-u8nmqxski4]  .gdp-wrap:focus-within,
.cd-date[b-u8nmqxski4]  .gdp-wrap:focus { outline: none; border-color: var(--cd-brand); box-shadow: var(--cd-ring); }
.cd-date[b-u8nmqxski4]  .gdp-icon { color: var(--cd-brand); font-size: 14px; }
.cd-date[b-u8nmqxski4]  .gdp-value { font-weight: 500; color: var(--cd-ink); }
.cd-date[b-u8nmqxski4]  .gdp-wrap.gdp-invalid { border-color: var(--cd-danger); }
/* Calendar popup — same card language as the drawer */
.cd-date[b-u8nmqxski4]  .gdp-popup {
    width: 260px; padding: 12px;
    border: 1px solid var(--cd-line);
    border-radius: 12px;
    box-shadow: 0 12px 28px rgba(16,24,40,.14);
}
.cd-date[b-u8nmqxski4]  .gdp-popup-hdr { font-size: 13px; color: var(--cd-ink); }
.cd-date[b-u8nmqxski4]  .gdp-nav:hover { background: var(--cd-paper); color: var(--cd-ink); }
.cd-date[b-u8nmqxski4]  .gdp-weekdays { color: var(--cd-faint); }
.cd-date[b-u8nmqxski4]  .gdp-day { border-radius: 8px; color: var(--cd-ink); }
.cd-date[b-u8nmqxski4]  .gdp-day:hover { background: var(--cd-wash); color: var(--cd-brand); }
.cd-date[b-u8nmqxski4]  .gdp-day-muted { color: #D0D5DD; }
.cd-date[b-u8nmqxski4]  .gdp-day-today { color: var(--cd-brand); font-weight: 700; }
.cd-date[b-u8nmqxski4]  .gdp-day-selected,
.cd-date[b-u8nmqxski4]  .gdp-day-selected:hover { background: var(--cd-brand); color: #fff; }
.cd-date[b-u8nmqxski4]  .gdp-today-btn { color: var(--cd-brand); }

/* Segmented control */
.cd-seg[b-u8nmqxski4] {
    display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
    height: 40px; padding: 3px;
    background: var(--cd-paper);
    border: 1px solid var(--cd-line);
    border-radius: var(--cd-r-ctl);
}
.cd-seg button[b-u8nmqxski4] {
    border: none; border-radius: 7px; background: none;
    font: inherit; font-size: 12.5px; font-weight: 500; color: var(--cd-mute);
    cursor: pointer; white-space: nowrap;
    transition: background .15s, color .15s, box-shadow .15s;
}
.cd-seg button:hover:not(.active)[b-u8nmqxski4] { color: var(--cd-ink); }
.cd-seg button.active[b-u8nmqxski4] {
    background: #fff; color: var(--cd-brand); font-weight: 600;
    box-shadow: 0 1px 2px rgba(16,24,40,.08), 0 0 0 1px var(--cd-line);
}

/* Checkbox */
.cd-check[b-u8nmqxski4] { position: relative; display: inline-flex; align-items: center; gap: 10px; align-self: flex-start; font-size: 13.5px; color: var(--cd-text); cursor: pointer; }
.cd-check input[b-u8nmqxski4] { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cd-check-box[b-u8nmqxski4] {
    width: 18px; height: 18px; flex-shrink: 0;
    border: 1px solid var(--cd-line-strong); border-radius: 5px; background: #fff;
    display: flex; align-items: center; justify-content: center;
    color: transparent; font-size: 10px;
    transition: background .15s, border-color .15s;
}
.cd-check:hover .cd-check-box[b-u8nmqxski4] { border-color: var(--cd-faint); }
.cd-check input:checked + .cd-check-box[b-u8nmqxski4] { background: var(--cd-brand); border-color: var(--cd-brand); color: #fff; }
.cd-check input:focus-visible + .cd-check-box[b-u8nmqxski4] { box-shadow: var(--cd-ring); }

.cd-disc-note[b-u8nmqxski4] {
    display: flex; align-items: center; gap: 8px;
    padding: 9px 12px;
    background: var(--cd-pos-bg); color: var(--cd-pos);
    border-radius: var(--cd-r-ctl);
    font-size: 12.5px; font-weight: 500;
}

/* Tax breakup (options panel) */
.cart-drawer .cart-tax-summary[b-u8nmqxski4] { margin: 0; border: 1px solid var(--cd-line); border-radius: var(--cd-r-ctl); overflow: hidden; }
.cart-drawer .cart-tax-summary-row[b-u8nmqxski4] {
    padding: 9px 12px; font-size: 12.5px; color: var(--cd-text); background: #fff;
    border-bottom: 1px solid var(--cd-line);
}
.cart-drawer .cart-tax-summary-row:last-child[b-u8nmqxski4] { border-bottom: none; }
.cart-drawer .cart-tax-summary-row span:last-child[b-u8nmqxski4] { color: var(--cd-ink); font-weight: 600; }
.cart-drawer .cart-tax-summary-row em[b-u8nmqxski4] { color: var(--cd-faint); margin-left: 6px; }

/* ── Bill Summary ── */
.cd-bill-body[b-u8nmqxski4] { padding: 8px 16px 10px; }
.cd-line[b-u8nmqxski4] {
    display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
    padding: 7px 0;
    font-size: 13.5px; color: var(--cd-mute);
}
.cd-line span:last-child[b-u8nmqxski4] { color: var(--cd-ink); font-weight: 500; }
.cd-line small[b-u8nmqxski4] { font-size: 11.5px; color: var(--cd-faint); margin-left: 4px; }
.cd-line-disc[b-u8nmqxski4], .cd-line-disc span:last-child[b-u8nmqxski4] { color: var(--cd-pos); }
.cd-line-sub[b-u8nmqxski4] {
    margin-top: 4px; padding-top: 11px;
    border-top: 1px dashed var(--cd-line);
    color: var(--cd-text); font-weight: 500;
}
.cd-line-muted span:last-child[b-u8nmqxski4] { color: var(--cd-mute); }
.cd-total[b-u8nmqxski4] {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    margin: 0 16px; padding: 14px 0 16px;
    border-top: 1px solid var(--cd-line);
}
.cd-total-label[b-u8nmqxski4] { font-size: 15px; font-weight: 700; color: var(--cd-ink); }
.cd-total-note[b-u8nmqxski4] { font-size: 11.5px; color: var(--cd-faint); margin-top: 2px; }
.cd-total-val[b-u8nmqxski4] { font-size: 21px; font-weight: 800; letter-spacing: -.02em; color: var(--cd-ink); }

/* ── Footer / checkout CTA ── */
.cart-drawer .cart-drawer-foot[b-u8nmqxski4] {
    gap: 10px;
    padding: 14px 16px calc(14px + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-top: 1px solid var(--cd-line);
    box-shadow: none;
}
.cart-drawer .cart-new-btn[b-u8nmqxski4] {
    width: 52px; height: 52px; padding: 0; flex-shrink: 0;
    border-radius: 12px; border: 1px solid var(--cd-line-strong); background: #fff;
    color: var(--cd-mute); font-size: 17px;
    transition: color .15s, border-color .15s, background .15s;
}
.cart-drawer .cart-new-btn:hover[b-u8nmqxski4] { color: var(--cd-danger); border-color: #FECDCA; background: var(--cd-danger-bg); }
.cart-drawer .cart-new-btn:active[b-u8nmqxski4] { background: #FEE4E2; }
.cart-drawer .cart-pay-btn[b-u8nmqxski4] {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    height: 52px; padding: 0 8px 0 20px;
    border-radius: 12px;
    background: var(--cd-brand);
    box-shadow: 0 1px 2px rgba(16,24,40,.08);
    font-size: 15px; font-weight: 600; letter-spacing: 0;
    transition: background .15s, transform .05s;
}
.cart-drawer .cart-pay-btn:not(:disabled):hover[b-u8nmqxski4] { background: var(--cd-brand-hover); }
.cart-drawer .cart-pay-btn:not(:disabled):active[b-u8nmqxski4] { transform: translateY(1px); }
.cart-drawer .cart-pay-btn:disabled[b-u8nmqxski4] { background: #98A2B3; opacity: 1; }
.cart-drawer .cart-pay-btn > span:only-child[b-u8nmqxski4] { margin: 0 auto; }
.cart-drawer .cart-pay-label[b-u8nmqxski4] { display: inline-flex; align-items: center; gap: 9px; }
.cart-drawer .cart-pay-label i[b-u8nmqxski4] { font-size: 14px; opacity: .9; }
.cart-drawer .cart-pay-amt[b-u8nmqxski4] {
    height: 38px; display: flex; align-items: center;
    padding: 0 14px; border-radius: 9px;
    background: rgba(255,255,255,.16);
    font-size: 16px; font-weight: 700;
}

/* ── Responsive ──
   ≥1280 desktop: a little wider.  641–1024 tablet: 440 drawer.
   ≤640 phone: full-width sheet, tighter gutters, single-column options.  */
@media (min-width: 1280px) {
    .cart-drawer[b-u8nmqxski4] { width: 480px; }
}
@media (min-width: 641px) and (max-width: 1024px) {
    .cart-drawer[b-u8nmqxski4] { width: min(440px, 100vw); }
}
@media (max-width: 640px) {
    .cart-drawer[b-u8nmqxski4] { width: 100vw; box-shadow: none; }
    .cart-drawer .cart-drawer-hdr[b-u8nmqxski4] { padding: 12px 14px; }
    .cart-drawer .cart-drawer-body[b-u8nmqxski4] { padding: 12px 12px 18px; gap: 10px; }
    .cart-drawer .cart-more-panel[b-u8nmqxski4] { margin-top: -10px; padding: 2px 14px 14px; }
    .cd-list-hdr[b-u8nmqxski4], .cd-bill-hdr[b-u8nmqxski4] { padding: 11px 14px; }
    .cd-item[b-u8nmqxski4] { grid-template-columns: 52px minmax(0, 1fr) auto; column-gap: 12px; padding: 14px; }
    .cd-thumb[b-u8nmqxski4] { width: 52px; height: 52px; border-radius: 10px; }
    .cd-bill-body[b-u8nmqxski4] { padding: 6px 14px 8px; }
    .cd-total[b-u8nmqxski4] { margin: 0 14px; }
    .cart-drawer .cart-drawer-foot[b-u8nmqxski4] { padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 400px) {
    .cd-opt-grid[b-u8nmqxski4] { grid-template-columns: 1fr; }
    .cd-item[b-u8nmqxski4] { grid-template-columns: 48px minmax(0, 1fr) auto; column-gap: 10px; }
    .cd-thumb[b-u8nmqxski4] { width: 48px; height: 48px; }
    .cd-stepper[b-u8nmqxski4] { height: 34px; }
    .cd-stepper button[b-u8nmqxski4] { width: 30px; }
    .cd-stepper input[b-u8nmqxski4] { width: 40px; }
    .cd-amt-now[b-u8nmqxski4] { font-size: 14.5px; }
    .cart-drawer .cart-new-btn[b-u8nmqxski4] { width: 48px; height: 48px; }
    .cart-drawer .cart-pay-btn[b-u8nmqxski4] { height: 48px; padding: 0 6px 0 14px; font-size: 14px; }
    .cart-drawer .cart-pay-label i[b-u8nmqxski4] { display: none; }
    .cart-drawer .cart-pay-amt[b-u8nmqxski4] { height: 36px; padding: 0 10px; font-size: 15px; }
}

/* ── Barcode / QR scan box (inside .cart-searchbar, after Filter) ── */
.cart-scan[b-u8nmqxski4] {
    flex: 0 0 220px;
    display: flex;
    align-items: center;
    gap: 8px;
    padding-left: 12px;
    border-left: 1.5px solid var(--cart-border);
    color: var(--cart-text-muted);
}

    .cart-scan:focus-within[b-u8nmqxski4] {
        color: var(--cart-primary);
    }

.cart-scan-input[b-u8nmqxski4] {
    flex: 1;
    min-width: 0;
    border: none;
    outline: none;
    background: transparent;
    font-size: 14px;
    font-family: inherit;
    color: var(--cart-text);
    padding: 2px 0;
}

    .cart-scan-input[b-u8nmqxski4]::placeholder {
        color: var(--cart-text-muted);
    }

@media (max-width: 700px) {
    .cart-scan[b-u8nmqxski4] {
        flex-basis: 140px;
    }
}
/* /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;
}

/* 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;
    }

.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: 56px; /* fixed — no manual stretch (Narration / Address) */
    padding: 8px 10px;
    resize: none;
    overflow-y: auto;
}

    .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);
    }

/* ── Dropdown arrows (VType / Depot / Costing Dept / Sales Person) ──
   The base rules above use the "background:" shorthand, which wipes any
   arrow image and leaves the browser's native arrow jammed against the
   right edge (each browser draws it differently). Here: native arrow off,
   one consistent chevron 10px from the right, text kept clear of it
   (padding-right) and ellipsised. Focus re-states the image because the
   focus rule's "background:#fff" shorthand would reset it. ── */
.che-field select[b-hl6fddptrl],
.che-field[b-hl6fddptrl]  select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding-right: 30px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%2364748b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 12px 12px;
    line-height: 32px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
}

    .che-field select[b-hl6fddptrl]::-ms-expand,
    .che-field[b-hl6fddptrl]  select::-ms-expand {
        display: none;
    }

    .che-field select:focus[b-hl6fddptrl],
    .che-field[b-hl6fddptrl]  select:focus {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%230d9480' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 10px center;
        background-size: 12px 12px;
    }

    .che-field select:disabled[b-hl6fddptrl],
    .che-field[b-hl6fddptrl]  select:disabled {
        cursor: not-allowed;
        opacity: .7;
    }

/* ── GlobalDatepicker (Date / Supplier Date). Real markup (from the
   component, untouched): .gdp-field-block > .gdp-wrap > span.gdp-icon +
   input.gdp-input. The generic ".che-field ::deep input" rule above was
   giving that inner input a 36px height INSIDE .gdp-wrap's own padding →
   ~52px box. Here .gdp-wrap becomes the 36px che-field-styled box and the
   input is left as plain inline text. Scoped to .che-date only. ── */
.che-date[b-hl6fddptrl]  .gdp-field-block {
    display: block;
}

.che-date[b-hl6fddptrl]  .gdp-wrap {
    height: 36px !important;
    min-height: 0 !important;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 10px !important;
    border: 1.5px solid var(--che-border) !important;
    border-radius: 8px !important;
    background: #f8fafc !important;
    transition: .12s;
}

    .che-date[b-hl6fddptrl]  .gdp-wrap:focus-within {
        border-color: var(--che-accent) !important;
        background: #fff !important;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12) !important;
    }

/* .che-field span (label styling) would otherwise hit the icon span too */
.che-date[b-hl6fddptrl]  .gdp-icon {
    font-size: 13px;
    text-transform: none;
    letter-spacing: 0;
    color: var(--che-accent-dark);
    line-height: 1;
    cursor: pointer;
}

.che-date[b-hl6fddptrl]  input.gdp-input {
    height: auto !important;
    min-height: 0 !important;
    line-height: normal;
    font-size: 12.5px;
    color: var(--che-text);
}

.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);
        }

.che-row-clickable[b-hl6fddptrl] {
    cursor: pointer;
    transition: background .12s;
}

    .che-row-clickable:hover[b-hl6fddptrl] {
        background: var(--che-accent-bg);
    }

.che-empty[b-hl6fddptrl] {
    text-align: center;
    color: var(--che-muted-light);
    font-size: 12.5px;
    padding: 20px !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;
}

/* Header = global masters-forms.css .uf-header / .uf-title / .uf-close
   (green gradient + left accent bar); old .che-modal-head rules removed.
   Pinned so the body scrolls under it. */
.che-modal > .uf-header[b-hl6fddptrl] {
    flex-shrink: 0;
}

.che-modal-title-ico[b-hl6fddptrl] {
    margin-right: 8px;
    color: #1ab99a;
}

.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;
}

.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-field-wide[b-hl6fddptrl] {
        grid-column: span 2;
    }
}

@media (max-width: 600px) {
    .che-field-wide[b-hl6fddptrl] {
        grid-column: span 1;
    }
}

/* 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 now uses the shared .mu-toast-host/.mu-toast (masters-forms.css) —
   old page-local .che-toast removed. */

/* ── 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;
    }

/* Delete confirm — red variant of the same modal */
.che-confirm-icon.che-confirm-icon-danger[b-hl6fddptrl] {
    background: #fdecec;
    color: #dc2626;
}

.che-confirm-yes.che-confirm-danger[b-hl6fddptrl] {
    background: #dc2626;
    border-color: #dc2626;
}

    .che-confirm-yes.che-confirm-danger:hover[b-hl6fddptrl] {
        background: #b91c1c;
        border-color: #b91c1c;
    }

@media (max-width: 480px) {
    .che-confirm-modal[b-hl6fddptrl] {
        max-width: 90vw;
        padding: 26px 18px 20px;
    }
}

/* ── aUdit tab — shared VoucherAudit.razor ──
   VoucherAudit's own scoped CSS reads var(--avc-*) tokens that AccVoucher
   defines on .avc-page. Not present on this page, so redeclared here on
   the wrapper — custom properties inherit into the child component's DOM
   even though scoped class rules don't. Values copied from
   AccVoucher.razor.css .avc-page. */
.che-audit-wrap[b-hl6fddptrl] {
    --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;
    color: var(--avc-text);
}

/* Keyboard shortcuts popup → moved to the shared component
   Components/Shared/VoucherShortcutsPopup.razor.css (vsc-* classes). */

/* ── Item details block — original ChallanEntry grid look (restored),
   sitting inside the avc entry column. Top rule + spacing replaces the
   old che-form-grid border-bottom that used to separate it. ── */
.che-items-block[b-hl6fddptrl] {
    border-top: 1.5px solid var(--che-border);
    padding-top: 14px;
    margin-top: 12px;
}

/* ── 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-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);
    }

/* ── Toolbar right side: Add item + "Populate from" Voucher / Order ── */
.che-toolbar-actions[b-hl6fddptrl] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* Button row placed under the item grid's Total row, hugging the left */
.che-grid-actions-below[b-hl6fddptrl] {
    display: flex;
    justify-content: flex-start;
    margin-top: 10px;
}

.che-populate-label[b-hl6fddptrl] {
    margin-left: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--che-muted);
    white-space: nowrap;
}

.che-populate-btn[b-hl6fddptrl] {
    border-style: solid;
    padding: 7px 12px;
}

.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-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;
    }

/* =====================================================
   AccVoucher layout — ported 1:1 from AccVoucher.razor.css
   (avc-* class names kept identical so the two pages stay easy to
   compare/sync). Blazor CSS isolation scopes these to ChallanEntry,
   so nothing here leaks into or depends on AccVoucher's own file.
   Ranges copied: tokens/shell/sidebar/header/tabs/strip/gfield,
   line-items grid + totals + action row, utilities, "Voucher UX V2"
   three-pane overrides, Phase 2 spacer/help-btn/active-row.
   Skipped (not used here): TDS/HSN inset + modals, Documents/View tab
   blocks, payment-details block, shortcut modal, productivity status bar.
   ===================================================== */

.avc-page[b-hl6fddptrl] {
    --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-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
    width: 56px;
}

.avc-sidebar-hdr[b-hl6fddptrl] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-hl6fddptrl] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

    .avc-recent-list[b-hl6fddptrl]::-webkit-scrollbar {
        width: 4px;
    }

    .avc-recent-list[b-hl6fddptrl]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .avc-recent-list[b-hl6fddptrl]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-hl6fddptrl] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-hl6fddptrl] {
    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-hl6fddptrl],
    .avc-recent-card.active[b-hl6fddptrl] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-hl6fddptrl] {
    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-hl6fddptrl] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-hl6fddptrl] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-hl6fddptrl] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-hl6fddptrl] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-hl6fddptrl] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-recent-amt[b-hl6fddptrl] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.avc-status-badge[b-hl6fddptrl] {
    flex-shrink: 0;
    border-radius: 6px;
    padding: 1px 6px;
    font-size: 10px;
    font-weight: 600;
}

.avc-status-approved[b-hl6fddptrl] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-status-pending[b-hl6fddptrl] {
    background: #fffbeb;
    color: #92400e;
    border: 0.5px solid #fde68a;
}

.avc-status-draft[b-hl6fddptrl] {
    background: #f3f4f6;
    color: #374151;
    border: 0.5px solid var(--avc-border);
}

.avc-status-rejected[b-hl6fddptrl] {
    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-hl6fddptrl] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-hl6fddptrl] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-hl6fddptrl] {
    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-hl6fddptrl] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-hl6fddptrl] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
        color: var(--avc-header-bg);
    }

    .avc-gains-tab.active[b-hl6fddptrl] {
        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-hl6fddptrl] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-panel-lead[b-hl6fddptrl] {
    font-size: 13px;
    color: var(--avc-muted);
    margin: 0 0 10px;
}

.avc-empty-block[b-hl6fddptrl] {
    color: var(--avc-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

/* ── Entry quick-action strip ── */
.avc-entry-action-strip[b-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
        background: rgba(255, 255, 255, .12);
        border-color: rgba(255, 255, 255, .42);
    }

    .avc-entry-action-btn.active[b-hl6fddptrl] {
        background: #fff;
        border-color: #fff;
        color: #065f46;
    }

    .avc-entry-action-btn i[b-hl6fddptrl] {
        font-size: 12px;
    }

.avc-entry-action-badge[b-hl6fddptrl] {
    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-hl6fddptrl] {
    background: rgba(6, 95, 70, .10);
}

/* ── Field grid (Voucher type/no/date/reference, Audit/Documents fields) ── */
.avc-gfield-grid[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-bottom: 8px;
}

.avc-gfield[b-hl6fddptrl] {
    display: block;
    margin-bottom: .35rem;
}

.avc-gfield-grid .avc-gfield[b-hl6fddptrl] {
    margin-bottom: 0;
}

.avc-gfield-block:last-child[b-hl6fddptrl] {
    margin-bottom: 0;
}

.avc-gfield span[b-hl6fddptrl] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--avc-muted);
    margin-bottom: 4px;
}

/* ── Line items grid ── */
.avc-lines-section[b-hl6fddptrl] {
    border-top: 0.5px solid var(--avc-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.avc-lines-toolbar[b-hl6fddptrl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.avc-lines-title[b-hl6fddptrl] {
    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-hl6fddptrl] {
    /* 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-hl6fddptrl]::-webkit-scrollbar {
        width: 8px;
    }

    .avc-lines-scroll[b-hl6fddptrl]::-webkit-scrollbar-track {
        background: transparent;
    }

    .avc-lines-scroll[b-hl6fddptrl]::-webkit-scrollbar-thumb {
        background: var(--avc-accent-border);
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .avc-lines-scroll[b-hl6fddptrl]::-webkit-scrollbar-thumb:hover {
            background: var(--avc-accent);
            background-clip: content-box;
        }

    .avc-lines-scroll[b-hl6fddptrl]::-webkit-scrollbar-corner {
        background: transparent;
    }

.avc-lines-table[b-hl6fddptrl] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    table-layout: fixed;
}

    .avc-lines-table thead th[b-hl6fddptrl] {
        position: sticky;
        top: 0;
        background: #fff;
        z-index: 1;
    }

    .avc-lines-table th[b-hl6fddptrl] {
        text-align: left;
        font-weight: 600;
        font-size: 11px;
        color: var(--avc-muted);
        padding: 0 8px 10px;
    }

    .avc-lines-table td[b-hl6fddptrl] {
        padding: 8px 8px;
        border-bottom: 0.5px solid var(--avc-border-soft);
    }

.avc-icon-btn[b-hl6fddptrl] {
    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-hl6fddptrl] {
        color: var(--avc-danger);
        border-color: var(--avc-danger-border);
    }

.avc-closing-muted[b-hl6fddptrl] {
    color: var(--avc-muted-light);
}

.avc-closing-pos[b-hl6fddptrl] {
    color: #1d4ed8;
    font-weight: 600;
}

.avc-closing-neg[b-hl6fddptrl] {
    color: #800000;
    font-weight: 600;
}

.avc-lines-hint[b-hl6fddptrl] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Totals bar ── */
.avc-totals-bar[b-hl6fddptrl] {
    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-hl6fddptrl] {
        color: var(--avc-text);
        font-weight: 700;
    }

.avc-balance-pill[b-hl6fddptrl] {
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 12px;
    font-weight: 600;
}

.avc-balance-ok[b-hl6fddptrl] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-balance-bad[b-hl6fddptrl] {
    background: var(--avc-danger-bg);
    color: var(--avc-danger);
    border: 0.5px solid var(--avc-danger-border);
}

.avc-validation-msg[b-hl6fddptrl] {
    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-hl6fddptrl] {
    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-hl6fddptrl] {
    width: 100%;
    max-width: 1300px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 2rem;
}

/* ── Shared utilities ── */
.text-end[b-hl6fddptrl] {
    text-align: right;
}

.text-center[b-hl6fddptrl] {
    text-align: center;
}

/* =====================================================
   GAINS Voucher UX V2 — contextual three-pane redesign
   ===================================================== */
.avc-page[b-hl6fddptrl] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-hl6fddptrl] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-hl6fddptrl] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-hl6fddptrl] {
    width: 52px;
}

.avc-gains-header[b-hl6fddptrl] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-hl6fddptrl] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-hl6fddptrl] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-hl6fddptrl] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-hl6fddptrl] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-hl6fddptrl] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-hl6fddptrl] {
    padding: 14px 18px 88px;
}

.avc-entry-layout[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 14px;
    align-items: start;
}

.avc-entry-main[b-hl6fddptrl] {
    min-width: 0;
}

.avc-entry-action-strip[b-hl6fddptrl] {
    min-height: 36px;
    padding: 4px;
    margin-bottom: 10px;
    background: #f4f7f6;
    border: 1px solid #e2ebe8;
}

.avc-entry-action-btn[b-hl6fddptrl] {
    min-height: 28px;
    color: #40524d;
    border-color: transparent;
}

    .avc-entry-action-btn:hover[b-hl6fddptrl] {
        background: #fff;
        border-color: #d7e5e0;
    }

    .avc-entry-action-btn.active[b-hl6fddptrl] {
        background: #e3f7f1;
        color: #08765f;
        border-color: #b8e8da;
    }

.avc-entry-action-badge[b-hl6fddptrl] {
    background: rgba(8,118,95,.09);
}

.avc-gfield-grid[b-hl6fddptrl] {
    grid-template-columns: minmax(230px, 1.35fr) minmax(170px, .75fr) minmax(210px, 1fr);
    gap: 10px;
}

.avc-gfield span[b-hl6fddptrl] {
    font-size: 10.5px;
    margin-bottom: 3px;
}

.avc-lines-section[b-hl6fddptrl] {
    padding-top: 12px;
    margin-bottom: 10px;
}

.avc-lines-toolbar[b-hl6fddptrl] {
    margin-bottom: 9px;
}

.avc-lines-scroll[b-hl6fddptrl] {
    height: 310px;
    border: 1px solid #e5ece9;
    border-radius: 10px;
    background: #fff;
}

.avc-lines-table thead th[b-hl6fddptrl] {
    background: #f6f9f8;
    padding: 10px 8px;
    border-bottom: 1px solid #e4ebe8;
}

.avc-lines-table td[b-hl6fddptrl] {
    padding: 6px 8px;
}

.avc-icon-btn[b-hl6fddptrl] {
    width: 36px;
    height: 36px;
    border-radius: 7px;
}

.avc-summary-strip[b-hl6fddptrl] {
    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-hl6fddptrl] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 10px 14px;
    border-right: 1px solid #dfeae6;
}

    .avc-summary-cell:last-child[b-hl6fddptrl] {
        border-right: none;
    }

    .avc-summary-cell span[b-hl6fddptrl] {
        font-size: 10px;
        color: #71817c;
    }

    .avc-summary-cell strong[b-hl6fddptrl] {
        font-size: 14px;
        color: #17231f;
    }

    .avc-summary-cell small[b-hl6fddptrl] {
        font-size: 10px;
    }

.avc-balanced-text[b-hl6fddptrl] {
    color: #078060;
}

.avc-unbalanced-text[b-hl6fddptrl] {
    color: #b45309;
}

.avc-context-panel[b-hl6fddptrl] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    position: sticky;
    top: 10px;
}

.avc-context-card[b-hl6fddptrl] {
    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-hl6fddptrl] {
    background: linear-gradient(145deg, #effbf7, #fff);
    border-color: #ccebe1;
}

.avc-context-card-head[b-hl6fddptrl] {
    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-hl6fddptrl] {
        color: #0f9f81;
    }

.avc-context-empty[b-hl6fddptrl] {
    font-size: 11px;
    color: #94a19d;
    line-height: 1.5;
}

.avc-context-ledger[b-hl6fddptrl] {
    font-size: 11px;
    color: #667771;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-context-amount[b-hl6fddptrl] {
    margin-top: 5px;
    font-size: 22px;
    line-height: 1.2;
    font-weight: 750;
    color: #078060;
}

    .avc-context-amount small[b-hl6fddptrl] {
        font-size: 11px;
        font-weight: 700;
    }

.avc-context-caption[b-hl6fddptrl] {
    margin-top: 5px;
    font-size: 10px;
    color: #84918d;
}

.avc-context-row[b-hl6fddptrl] {
    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-hl6fddptrl] {
        border-bottom: none;
    }

    .avc-context-row span[b-hl6fddptrl] {
        color: #7b8984;
    }

    .avc-context-row strong[b-hl6fddptrl] {
        color: #25332f;
        font-weight: 650;
        text-align: right;
    }

.avc-context-dot[b-hl6fddptrl] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #cbd5d1;
}

    .avc-context-dot.is-active[b-hl6fddptrl] {
        background: #16a37f;
        box-shadow: 0 0 0 4px rgba(22,163,127,.12);
    }

.avc-context-action[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: 34px 1fr auto;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: .12s ease;
}

    .avc-context-action:hover[b-hl6fddptrl] {
        border-color: #8dd5c1;
        transform: translateY(-1px);
        box-shadow: 0 5px 16px rgba(15, 118, 92, .08);
    }

    .avc-context-action > span:nth-child(2)[b-hl6fddptrl] {
        display: flex;
        flex-direction: column;
        gap: 3px;
        min-width: 0;
    }

    .avc-context-action strong[b-hl6fddptrl] {
        font-size: 12px;
        color: #25332f;
    }

    .avc-context-action small[b-hl6fddptrl] {
        font-size: 10px;
        color: #84918d;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .avc-context-action > i[b-hl6fddptrl] {
        font-size: 10px;
        color: #96a39f;
    }

.avc-context-action-icon[b-hl6fddptrl] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    color: #078060;
    background: #e8f8f3;
}

.avc-action-row-inner[b-hl6fddptrl] {
    max-width: 1600px;
    justify-content: flex-end;
    padding: 9px 22px;
}

@media (max-width: 1180px) {
    .avc-entry-layout[b-hl6fddptrl] {
        grid-template-columns: 1fr;
    }

    .avc-context-panel[b-hl6fddptrl] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        position: static;
    }
}

@media (max-width: 900px) {
    .avc-gfield-grid[b-hl6fddptrl] {
        grid-template-columns: 1fr;
    }

    .avc-summary-strip[b-hl6fddptrl] {
        grid-template-columns: repeat(2, 1fr);
    }

    .avc-summary-cell:nth-child(2)[b-hl6fddptrl] {
        border-right: none;
    }

    .avc-context-panel[b-hl6fddptrl] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   GAINS Voucher Phase 2 — active row + shortcut help
   ===================================================== */
.avc-entry-action-spacer[b-hl6fddptrl] {
    flex: 1 1 auto;
}

.avc-shortcut-help-btn[b-hl6fddptrl] {
    margin-left: auto;
}

.avc-lines-table tbody tr[b-hl6fddptrl] {
    transition: background-color .12s ease, box-shadow .12s ease;
}

    .avc-lines-table tbody tr.avc-row-active[b-hl6fddptrl] {
        background: #effbf7;
        box-shadow: inset 3px 0 0 var(--avc-accent);
    }

        .avc-lines-table tbody tr.avc-row-active td[b-hl6fddptrl] {
            border-bottom-color: #d7eee7;
        }

/* =====================================================
   ChallanEntry-specific glue on top of the ported avc-* layout
   ===================================================== */

/* .che-page (above) still supplies --che-* tokens used by the modals /
   toast / confirm; layout look comes from .avc-page. */
.avc-page.che-page[b-hl6fddptrl] {
    padding: 10px;
    background: #f4f7f9;
    font-size: 13px;
}

/* Header text column. */
.che-gains-head-text[b-hl6fddptrl] {
    flex: 1;
    min-width: 0;
}

/* Challan has 8 header fields → 4 per row (AccVoucher's 3-col grid is
   sized for its 3 fields). */
.avc-gfield-grid.che-gfield-grid[b-hl6fddptrl] {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Narration + Address side by side under the field grid. */
.che-gfield-pair[b-hl6fddptrl] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

/* Field labels: AccVoucher's sentence-case look instead of the old
   uppercase che-field label. */
.avc-gfield.che-field > span[b-hl6fddptrl] {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 600;
    font-size: 10.5px;
    color: var(--avc-muted);
    margin-bottom: 3px;
}

/* Action row: report buttons left, Save/New/Delete right. */
/* Linked vouchers tab — hide VoucherCrossLink's "Account" category tab
   (always the 1st button in its .vcl-tabs strip: Account / Inventory /
   Order / PUR). Done from here via ::deep so the shared component and
   its other hosts (AccVoucher, ProductionEntry, POSEntry) are untouched. */
.che-crosslink-wrap[b-hl6fddptrl]  .vcl-tabs > .db-summary-tab:first-child {
    display: none;
}

/* Tab icon (pen / eye / clock / paperclip / link) before the label. */
.che-tab-ico[b-hl6fddptrl] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

/* Tab hotkey letter (V/U/O/E/L) underline. */
.che-tab-key[b-hl6fddptrl] {
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

.che-action-spacer[b-hl6fddptrl] {
    flex: 1 1 auto;
}

.avc-action-row .che-btn[b-hl6fddptrl] {
    min-height: 38px;
    padding: 0 14px;
}

@media (max-width: 1180px) {
    .avc-gfield-grid.che-gfield-grid[b-hl6fddptrl] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .avc-shell[b-hl6fddptrl] {
        flex-direction: column;
        border-radius: 14px;
    }

    .avc-sidebar[b-hl6fddptrl] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-sidebar-collapsed .avc-sidebar-hdr[b-hl6fddptrl] {
        justify-content: flex-end;
    }

    .avc-gains-tabs[b-hl6fddptrl] {
        overflow-x: auto;
    }

    .avc-action-row-inner[b-hl6fddptrl] {
        flex-wrap: wrap;
        padding: 8px 12px;
    }

    .che-action-spacer[b-hl6fddptrl] {
        display: none;
    }
}

@media (max-width: 600px) {
    .avc-gfield-grid.che-gfield-grid[b-hl6fddptrl],
    .che-gfield-pair[b-hl6fddptrl] {
        grid-template-columns: 1fr;
    }
}
/* /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);
}

/* ---------- 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);
}

/* Textbox / dropdown / textarea look (incl. read-only, grid cells
   .uf-cell and .uf-nospin) comes from the master .uf-input in
   wwwroot/CSS/masters-forms.css. */

.iv-mono[b-s3cvf82m4z] {
    font-family: 'Courier New', monospace;
    font-weight: 600;
}

.iv-narration[b-s3cvf82m4z] {
    min-height: 44px;
}

.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-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);
    }

/* Add item + "Populate from" Voucher / Order — one row under the grid,
   left-aligned (same as ChallanEntry's che-grid-actions-below). */
.iv-grid-actions-below[b-s3cvf82m4z] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 10px 0 2px;
}

    .iv-grid-actions-below .iv-add-row-btn[b-s3cvf82m4z] {
        margin: 0;
    }

.iv-populate-label[b-s3cvf82m4z] {
    margin-left: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--iv-muted);
    white-space: nowrap;
}

.iv-populate-btn[b-s3cvf82m4z] {
    border-style: solid;
    padding: 7px 12px;
}

.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 .uf-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 ----------
   Matches AccVoucher.razor.css's own .avc-action-row/.avc-action-row-inner
   1:1 (right-aligned buttons, 1600px cap, 9px/22px padding) instead of the
   old left-aligned 1180px bar. */
.iv-footer-bar[b-s3cvf82m4z] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--iv-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
}

.iv-footer-inner[b-s3cvf82m4z] {
    width: 100%;
    max-width: 1600px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    padding: 9px 22px;
}

@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;
    }
}

/* View tab report card - same width rules as VoucherReportPopup's .vrp-modal
   (+ .vrp-body padding) so the saved voucher reads identically in both. */
.iv-view-report[b-s3cvf82m4z] {
    width: max-content;
    min-width: 420px;
    max-width: min(90vw, 850px);
    overflow-x: auto;
    padding: 14px 16px;
}

/* ---------- Audit tab ----------
   Sizes the tab (not the shared VoucherAudit component, not the form) to
   what AccVoucher gives it: .avc-page 16px side padding, .avc-shell max
   1600px, minus the 230px Recent-vouchers sidebar and .avc-gains-body's
   14px/18px padding - so the audit content has the same width, and the
   same breathing room from the edges, as in AccVoucher. */
.iv-audit-tab[b-s3cvf82m4z] {
    max-width: calc(min(100vw - 32px, 1600px) - 266px);
    margin: 0 auto;
    padding: 14px 18px;
    background: #fff;
    border: 0.5px solid #e5e7eb;
    border-radius: 14px;
    box-sizing: border-box;
}

/* =====================================================
   Shell — same layout as ChallanEntry / AccVoucher: left collapsible
   Recent vouchers sidebar, dark header, underline tabs. avc-* rules copied
   from ChallanEntry.razor.css's ported AccVoucher section (only the
   shell / sidebar / recent card / header / tabs / body parts). Blazor CSS
   isolation scopes them to this page.
   ===================================================== */

.avc-page[b-s3cvf82m4z] {
    --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;
}

.avc-shell[b-s3cvf82m4z] {
    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);
}

.avc-sidebar[b-s3cvf82m4z] {
    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-s3cvf82m4z] {
    width: 56px;
}

.avc-sidebar-hdr[b-s3cvf82m4z] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-s3cvf82m4z] {
    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-s3cvf82m4z] {
    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-s3cvf82m4z] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-s3cvf82m4z] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

.avc-recent-list[b-s3cvf82m4z]::-webkit-scrollbar {
        width: 4px;
    }

.avc-recent-list[b-s3cvf82m4z]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

.avc-recent-list[b-s3cvf82m4z]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-s3cvf82m4z] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-s3cvf82m4z] {
    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-s3cvf82m4z],
    .avc-recent-card.active[b-s3cvf82m4z] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-s3cvf82m4z] {
    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-s3cvf82m4z] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-s3cvf82m4z] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-s3cvf82m4z] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-s3cvf82m4z] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-s3cvf82m4z] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-recent-amt[b-s3cvf82m4z] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.avc-main[b-s3cvf82m4z] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-s3cvf82m4z] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-s3cvf82m4z] {
    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-s3cvf82m4z] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-s3cvf82m4z] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-s3cvf82m4z] {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, .6);
}

/* Footer QR / Barcode → batch label print (Purchase, saved only) */
.iv-label-btn[b-s3cvf82m4z] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

    .iv-label-btn img[b-s3cvf82m4z] {
        width: 16px;
        height: 16px;
        display: block;
    }

.avc-gains-tabs[b-s3cvf82m4z] {
    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-s3cvf82m4z] {
    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-s3cvf82m4z] {
        color: var(--avc-header-bg);
    }

.avc-gains-tab.active[b-s3cvf82m4z] {
        color: var(--avc-header-bg);
        border-bottom-color: var(--avc-accent);
    }

.avc-gains-body[b-s3cvf82m4z] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-page[b-s3cvf82m4z] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-s3cvf82m4z] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-s3cvf82m4z] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-s3cvf82m4z] {
    width: 52px;
}

.avc-gains-header[b-s3cvf82m4z] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-s3cvf82m4z] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-s3cvf82m4z] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-s3cvf82m4z] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-s3cvf82m4z] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-s3cvf82m4z] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-s3cvf82m4z] {
    padding: 14px 18px 88px;
}

/* ── InvVoucher glue ── */
.che-gains-head-text[b-s3cvf82m4z] {
    flex: 1;
    min-width: 0;
}

/* Tab hotkey letter (V/E/U/L) underline — same class/look as ChallanEntry. */
.che-tab-key[b-s3cvf82m4z] {
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

.che-tab-ico[b-s3cvf82m4z] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

@media (max-width: 900px) {
    .avc-shell[b-s3cvf82m4z] {
        flex-direction: column;
    }

    .avc-sidebar[b-s3cvf82m4z] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-gains-tabs[b-s3cvf82m4z] {
        overflow-x: auto;
    }
}

@media print {
    .avc-sidebar[b-s3cvf82m4z], .avc-gains-header[b-s3cvf82m4z], .avc-gains-tabs[b-s3cvf82m4z] {
        display: none !important;
    }

    .avc-shell[b-s3cvf82m4z] {
        border: none;
        box-shadow: none;
    }
}
/* /Components/Pages/Transactions/Voucher/Inventory/ItemBatchPrint.razor.rz.scp.css */
/* ItemBatchPrint.razor.css — label sizes mirror legacy ItemBatchPrint.aspx
   (40mm x 15mm stock, one label per printed page via page-break-after). */

.ibp-page[b-0g8vhs98qo] {
    min-height: 100vh;
    background: #f3f4f6;
    font-family: Arial, sans-serif;
}

/* ── Toolbar (screen only) ── */
.ibp-toolbar[b-0g8vhs98qo] {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 10px 18px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.ibp-title[b-0g8vhs98qo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.ibp-title-main[b-0g8vhs98qo] {
    font-size: 16px;
    font-weight: 700;
    color: #fff;
}

.ibp-title-sub[b-0g8vhs98qo] {
    font-size: 12px;
    color: rgba(255, 255, 255, .65);
}

.ibp-msg[b-0g8vhs98qo] {
    padding: 2rem;
    text-align: center;
    color: #6b7280;
    font-size: 14px;
}

.ibp-err[b-0g8vhs98qo] {
    color: #b91c1c;
}

/* ── Sheet (screen preview) ── */
.ibp-sheet[b-0g8vhs98qo] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2mm;
    padding: 16px 18px;
}

.ibp-lbl[b-0g8vhs98qo] {
    width: 40mm;
    height: 15mm;
    box-sizing: border-box;
    overflow: hidden;
    background: #fff;
    color: #000;
    font-family: Arial, sans-serif;
    font-weight: bold;
    outline: 1px dashed #cbd5e1;   /* label edge, screen only */
    page-break-after: always;
    break-after: page;
}

/* ── QR label (legacy GenQRCodeNew) ── */
.ibp-qrl[b-0g8vhs98qo] {
    display: flex;
    align-items: center;
    padding-left: 2mm;
    font-size: 8px;
    line-height: 1.15;
}

.ibp-qr-text[b-0g8vhs98qo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

    .ibp-qr-text > span[b-0g8vhs98qo] {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.ibp-qr-name[b-0g8vhs98qo] {
    max-width: 25ch;
}

.ibp-qr[b-0g8vhs98qo] {
    width: 12mm;
    height: 12mm;
    flex-shrink: 0;
    margin: 0 1mm;
}

    .ibp-qr[b-0g8vhs98qo]  svg,
    .ibp-qr[b-0g8vhs98qo]  img,
    .ibp-qr[b-0g8vhs98qo]  canvas {
        width: 12mm !important;
        height: 12mm !important;
        display: block;
    }

/* ── Barcode label (legacy BarCode1 — 40mm x 15mm) ── */
.ibp-bc[b-0g8vhs98qo] {
    display: flex;
}

.ibp-bc-date[b-0g8vhs98qo] {
    width: 5mm;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: bold;
    white-space: nowrap;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    border-left: 1px solid #000;   /* rotated 180° → shows as right separator */
}

.ibp-bc-body[b-0g8vhs98qo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    padding-left: 1mm;
}

.ibp-bc-code[b-0g8vhs98qo] {
    height: 9mm;
}

    .ibp-bc-code[b-0g8vhs98qo]  svg {
        width: 100% !important;
        height: 100% !important;
        display: block;
    }

.ibp-bc-name[b-0g8vhs98qo] {
    font-size: 8px;
    line-height: 1.1;
    max-width: 26ch;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ibp-bc-batch[b-0g8vhs98qo] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 4px;
    font-size: 8px;
    line-height: 1.1;
    white-space: nowrap;
}

/* ── Print: labels only ── */
@media print {
    .ibp-toolbar[b-0g8vhs98qo],
    .ibp-msg[b-0g8vhs98qo] {
        display: none !important;
    }

    .ibp-page[b-0g8vhs98qo] {
        min-height: 0;
        background: none;
    }

    .ibp-sheet[b-0g8vhs98qo] {
        display: block;
        padding: 0;
        margin: 1px 0 0 5px;   /* legacy body margin-left:5px; margin-top:1px */
    }

    .ibp-lbl[b-0g8vhs98qo] {
        outline: none;
        margin: 0;
    }

        .ibp-lbl:last-child[b-0g8vhs98qo] {
            page-break-after: auto;
            break-after: auto;
        }
}
/* /Components/Pages/Transactions/Voucher/Inventory/MaterialIndent.razor.rz.scp.css */
/* MaterialIndent — only the rules specific to this form. The shared .mi-* entry-form look lives in wwwroot/CSS/entry-forms.css */

.mi-item-entry[b-axx3d1rmbk] {
    align-items: flex-end;
}

.mi-ef[b-axx3d1rmbk], .mi-item-name[b-axx3d1rmbk] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
}

.mi-ef[b-axx3d1rmbk] {
    flex: 1 1 100px;
}

.mi-ef .mi-item-num[b-axx3d1rmbk] {
    width: 100%;
    flex: none;
}

.mi-item-num[b-axx3d1rmbk]::-webkit-outer-spin-button, .mi-item-num[b-axx3d1rmbk]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.mi-item-num[b-axx3d1rmbk] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* 10px gap from the top; centred horizontally like the Save / New bar. */
.mi-shell[b-axx3d1rmbk] {
    margin: 10px auto 0;
}
/* /Components/Pages/Transactions/Voucher/Inventory/MaterialIssue.razor.rz.scp.css */
/* MaterialIssue — common look comes from wwwroot/CSS/entry-forms.css; only Material-Issue-specific rules live here. */

/* Header + tab bar stay put while the form scrolls: header gets a fixed height so the tabs can stick right under it. */
.mi-header[b-enrh335jsz] {
    height: 96px;
    box-sizing: border-box;
    padding-top: 0;
    padding-bottom: 0;
}

.mi-tabs[b-enrh335jsz] {
    position: sticky;
    top: calc(16px + 96px);
    z-index: 39;
}

/* Item grid: no fixed height (no blank gap under Total) — grows with its rows, scrolls only when the list gets long. */
.mi-items-scroll[b-enrh335jsz] {
    height: auto;
    max-height: 280px;
}

/* Recent vouchers sidebar (shared RecentVoucherSidebar, its own avc-sidebar class): stays put like the header while the form
   scrolls; fixed to the viewport height, so its list scrolls by itself only once it gets long. */
.mi-shell[b-enrh335jsz]  .avc-sidebar {
    position: sticky;
    top: 16px;
    align-self: flex-start;
    height: calc(100vh - 50px);
}

@media (max-width: 900px) {
    .mi-shell[b-enrh335jsz]  .avc-sidebar { position: static; height: auto; max-height: 260px; align-self: stretch; }
    .mi-header[b-enrh335jsz] { height: 80px; }
    .mi-tabs[b-enrh335jsz] { top: calc(16px + 80px); }
}

@media (max-width: 760px) {
    .mi-tabs[b-enrh335jsz] { top: calc(8px + 80px); }
}
/* /Components/Pages/Transactions/Voucher/Inventory/POSEntry.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════
   POSEntry.razor.css — POS Voucher Entry (UI pass)
   Scoped to this page only. Every class the markup uses is kept; only
   presentation changed. Layout model (unchanged): .pos-page is a flex
   column — titlebar + menubar on top, .pos-scroll-body scrolls, footer
   pinned at the bottom.

   Breakpoints
     ≥1100  desktop  items | item form side by side, 3 summary cards
     <1100  tablet   item form above items, 2 cards + full-width summary
     <900   touch    44px controls (also any coarse pointer)
     <640   phone    page scrolls naturally, items as cards, sticky footer
     <400   phone    footer buttons drop icons to stay 4 across
     <360   small    item card actions move to their own row
   ═══════════════════════════════════════════════════════════════════ */

/* Tokens — declared on .pos-page AND on .pos-rcp-modal, because the
   RCP / Documents popup renders as a sibling after .pos-page closes and
   would otherwise resolve every var() to nothing. */
.pos-page[b-t8huazxvw3],
.pos-rcp-modal[b-t8huazxvw3] {
    --pos-primary: #1a56a7;
    --pos-primary-dark: #154a90;
    --pos-primary-soft: #edf3fc;
    --pos-accent: #1ab99a;
    --pos-accent-dark: #0e8f77;
    --pos-accent-ring: rgba(26, 185, 154, .18);
    --pos-success: #16a34a;
    --pos-success-dark: #12803b;
    --pos-danger: #dc2626;
    --pos-danger-soft: #fef2f2;
    --pos-warning: #d97706;
    --pos-bg: #f3f5f8;
    --pos-surface: #ffffff;
    --pos-surface-2: #f8fafc;
    --pos-border: #e3e8ef;
    --pos-border-strong: #cfd6df;
    --pos-text: #172033;
    --pos-text-muted: #5b6b80;
    --pos-text-faint: #8a98ab;
    --pos-grid-head: #306B9C;
    --pos-radius-lg: 10px;
    --pos-radius-md: 8px;
    --pos-radius-sm: 6px;
    --pos-ctl-h: 38px;
    --pos-shadow-card: 0 1px 2px rgba(16, 24, 40, .05);
    --pos-shadow-pop: 0 10px 28px rgba(16, 24, 40, .16);
}

.pos-page[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-width: 0;
    overflow: hidden;
    padding: 0 0 0 16px;
    font-family: 'Inter', 'Segoe UI', 'Open Sans', Arial, sans-serif;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    background: var(--pos-bg);
    color: var(--pos-text);
}

.pos-titlebar[b-t8huazxvw3],
.pos-menubar[b-t8huazxvw3] {
    flex-shrink: 0;
}

.pos-scroll-body[b-t8huazxvw3] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 14px 16px 18px 0;
    -webkit-overflow-scrolling: touch;
}

/* ── Title bar ───────────────────────────────────────────────────
   Look comes from the shared .bspl-title-block + .ms-title (masters-
   forms.css / common page chrome) — same as every other GAINS page.
   Only the bleed into .pos-page's left padding is set here. */
.pos-titlebar[b-t8huazxvw3] {
    margin: 0 0 0 -16px;
}

.pos-titlebar-actions[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 10px;
    position: relative;
}

.pos-internal-chk[b-t8huazxvw3] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: var(--pos-ctl-h);
    padding: 0 12px;
    font-size: 13px;
    font-weight: 500;
    color: var(--pos-text);
    border: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-md);
    background: var(--pos-surface-2);
    white-space: nowrap;
    cursor: pointer;
}

    .pos-internal-chk input[type="checkbox"][b-t8huazxvw3] {
        width: 16px;
        height: 16px;
        margin: 0;
        accent-color: var(--pos-primary);
        cursor: pointer;
    }

.pos-gear-btn[b-t8huazxvw3] {
    width: var(--pos-ctl-h);
    height: var(--pos-ctl-h);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--pos-surface);
    border: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-md);
    color: var(--pos-text-muted);
    font-size: 15px;
    cursor: pointer;
    transition: background .12s, color .12s, border-color .12s;
}

    .pos-gear-btn:hover[b-t8huazxvw3] {
        background: var(--pos-primary-soft);
        border-color: #c9d8ee;
        color: var(--pos-primary);
    }

/* ── Settings popover ── */
.pos-settings-overlay[b-t8huazxvw3] {
    position: fixed;
    inset: 0;
    z-index: 1200;
    background: rgba(15, 23, 42, .18);
}

.pos-settings-pop[b-t8huazxvw3] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: min(320px, calc(100vw - 24px));
    background: var(--pos-surface);
    border: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-md);
    box-shadow: var(--pos-shadow-pop);
    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: 600;
    font-size: 13.5px;
    padding: 11px 16px;
}

.pos-settings-body[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    padding: 16px;
}

.pos-settings-chk[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 28px;
    font-size: 13px;
    color: var(--pos-text);
    cursor: pointer;
}

    .pos-settings-chk input[type="checkbox"][b-t8huazxvw3] {
        width: 16px;
        height: 16px;
        margin: 0;
        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;
    }

/* Toast now uses the shared .mu-toast-host/.mu-toast (masters-forms.css) —
   old page-local .pos-toast removed. */

/* ── Menu bar: date + tax mode | scan | customer ─────────────────── */
.pos-menubar[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    background: var(--pos-surface);
    border-bottom: 1px solid var(--pos-border);
    padding: 10px 20px;
    margin: 0 0 0 -16px;
    /* No overflow here — it would clip the CustomerAutofill dropdown. */
}

.pos-menubar-group[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: nowrap;
    min-width: 0;
}

/* INCL / EXCL as one segmented control */
.pos-pill-btn[b-t8huazxvw3] {
    height: var(--pos-ctl-h);
    padding: 0 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .03em;
    background: var(--pos-surface);
    color: var(--pos-text-muted);
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-md);
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s, color .12s;
}

    .pos-pill-btn + .pos-pill-btn[b-t8huazxvw3] {
        margin-left: -7px;
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
    }

    .pos-pill-btn:has(+ .pos-pill-btn)[b-t8huazxvw3] {
        border-top-right-radius: 0;
        border-bottom-right-radius: 0;
    }

    .pos-pill-btn:hover[b-t8huazxvw3] {
        background: var(--pos-surface-2);
        color: var(--pos-text);
    }

    .pos-pill-btn.active[b-t8huazxvw3] {
        position: relative;
        background: var(--pos-accent);
        border-color: var(--pos-accent);
        color: #fff;
    }

.pos-menubar-scan[b-t8huazxvw3] {
    position: relative;
    display: flex;
    align-items: center;
    flex: 1 1 260px;
    min-width: 200px;
    color: var(--pos-text-faint);
}

    .pos-menubar-scan > i[b-t8huazxvw3] {
        position: absolute;
        left: 13px;
        font-size: 15px;
        pointer-events: none;
    }

.pos-scan-input[b-t8huazxvw3] {
    flex: 1;
    width: 100%;
    min-width: 0;
    height: var(--pos-ctl-h);
    padding: 0 14px 0 38px;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-md);
    background: var(--pos-surface-2);
    font-size: 13px;
    font-family: inherit;
    color: var(--pos-text);
    transition: border-color .12s, box-shadow .12s, background .12s;
}

    .pos-scan-input[b-t8huazxvw3]::placeholder {
        color: var(--pos-text-faint);
    }

    .pos-scan-input:focus[b-t8huazxvw3] {
        outline: none;
        background: var(--pos-surface);
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px var(--pos-accent-ring);
    }

.pos-menubar-cust[b-t8huazxvw3] {
    margin-left: auto;
}

/* Full / short label swap (INCLUSIVE vs INCL), keyed off the sidebar. */
.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: 180px;
    min-width: 150px;
}

/* CustomerAutofill owns its <input> → ::deep */
.pos-cust-input[b-t8huazxvw3],
[b-t8huazxvw3] .pos-cust-input {
    height: var(--pos-ctl-h);
    min-width: 200px;
    padding: 0 14px;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-md);
    background: var(--pos-surface);
    font-size: 13px;
    font-family: inherit;
    color: var(--pos-text);
    box-sizing: border-box;
    transition: border-color .12s, box-shadow .12s;
}

    [b-t8huazxvw3] .pos-cust-input:hover {
        border-color: #b4bfcc;
    }

    .pos-cust-input:focus[b-t8huazxvw3],
    [b-t8huazxvw3] .pos-cust-input:focus {
        outline: none;
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px var(--pos-accent-ring);
    }

    [b-t8huazxvw3] .pos-cust-input::placeholder {
        color: var(--pos-text-faint);
    }

.pos-salesrep-input[b-t8huazxvw3] {
    width: 140px;
    height: var(--pos-ctl-h);
    padding: 0 14px;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-md);
    font-size: 13px;
}

.pos-addcust-btn[b-t8huazxvw3] {
    height: var(--pos-ctl-h);
    padding: 0 16px;
    background: var(--pos-surface);
    color: var(--pos-primary);
    border: 1px solid #bcd0ec;
    border-radius: var(--pos-radius-md);
    font-weight: 600;
    font-size: 12.5px;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s;
}

    .pos-addcust-btn:hover[b-t8huazxvw3] {
        background: var(--pos-primary-soft);
        border-color: var(--pos-primary);
    }

/* ── Cards ───────────────────────────────────────────────────────── */
.pos-card[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    background: var(--pos-surface);
    border: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-lg);
    box-shadow: var(--pos-shadow-card);
    /* visible — hidden would clip ItemAutofill / CustomerAutofill lists */
    overflow: visible;
}

.pos-card-hdr[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 46px;
    padding: 8px 16px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    color: var(--pos-text-muted);
    background: var(--pos-surface);
    border-bottom: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-lg) var(--pos-radius-lg) 0 0;
    box-sizing: border-box;
}

.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] {
    height: 30px;
    padding: 0 12px;
    background: var(--pos-surface);
    color: var(--pos-accent-dark);
    border: 1px solid #a7e3d6;
    border-radius: var(--pos-radius-sm);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s;
}

    .pos-newitem-btn:hover[b-t8huazxvw3] {
        background: #ecfbf7;
        border-color: var(--pos-accent);
    }

/* ── Main grid: items (wide) | item form ── */
.pos-main-grid[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
    gap: 14px;
    align-items: stretch;
}

.pos-main-grid-compact[b-t8huazxvw3] { /* same layout; kept for markup parity */ }

.pos-product-card[b-t8huazxvw3] {
    min-width: 0;
}

    .pos-product-card .pos-table-wrap[b-t8huazxvw3] {
        flex: 1 1 auto;
        min-height: 240px;
        max-height: clamp(260px, 48vh, 560px);
    }

.pos-itemdtl-card[b-t8huazxvw3] {
    min-width: 0;
    padding: 0 16px 16px;
}

.pos-itemdtl-card-compact[b-t8huazxvw3] { /* natural height */ }

    .pos-itemdtl-card .pos-card-hdr[b-t8huazxvw3] {
        margin: 0 -16px 14px;
    }

/* ── Lower grid: tax | discount | summary ── */
.pos-lower-grid[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    align-items: stretch;
}

.pos-lower-grid-compact[b-t8huazxvw3] { /* same layout; kept for markup parity */ }

.pos-tax-card .pos-table-wrap[b-t8huazxvw3] {
    max-height: 260px;
}

.pos-discount-card[b-t8huazxvw3] {
    padding: 0 16px 16px;
}

    .pos-discount-card .pos-card-hdr[b-t8huazxvw3] {
        margin: 0 -16px 12px;
    }

/* ── Tables ──────────────────────────────────────────────────────── */
.pos-table-wrap[b-t8huazxvw3] {
    flex: 1;
    min-height: 0;
    overflow: 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: 13px;
}

    .pos-table thead th[b-t8huazxvw3] {
        position: sticky;
        top: 0;
        z-index: 3;
        padding: 10px 12px;
        background: var(--pos-grid-head);
        color: #fff;
        font-size: 11.5px;
        font-weight: 600;
        letter-spacing: .04em;
        text-transform: uppercase;
        text-align: left;
        white-space: nowrap;
    }

        .pos-table thead th.text-end[b-t8huazxvw3] {
            text-align: right;
        }

    .pos-table td[b-t8huazxvw3] {
        padding: 10px 12px;
        border-bottom: 1px solid #eef1f5;
        vertical-align: middle;
        color: var(--pos-text);
    }

    .pos-table tbody tr:nth-child(even)[b-t8huazxvw3] {
        background: #fafbfd;
    }

    .pos-table tbody tr:hover[b-t8huazxvw3] {
        background: #f0f5fc;
    }

    .pos-table tbody tr.pos-row-editing[b-t8huazxvw3],
    .pos-table tbody tr.pos-row-editing:hover[b-t8huazxvw3] {
        background: #e8f0fd;
        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: 1px solid #c9d8ee;
        font-weight: 700;
        color: var(--pos-text);
        text-align: right;
        white-space: nowrap;
    }

        .pos-table tfoot td:first-child[b-t8huazxvw3] {
            text-align: left;
        }

.pos-items-table .pos-cell-name[b-t8huazxvw3] {
    font-weight: 500;
    min-width: 160px;
}

.pos-items-table .pos-cell-idx[b-t8huazxvw3] {
    width: 36px;
    color: var(--pos-text-faint);
}

.pos-items-table .pos-cell-code[b-t8huazxvw3] {
    color: var(--pos-text-muted);
    white-space: nowrap;
}

.pos-items-table .pos-cell-amt[b-t8huazxvw3] {
    font-weight: 600;
}

.pos-tfoot-amt[b-t8huazxvw3] {
    color: var(--pos-primary);
}

/* Before-tax discount share per row */
.pos-items-table .pos-cell-disc[b-t8huazxvw3],
.pos-tfoot-disc[b-t8huazxvw3] {
    color: var(--pos-danger);
}

.pos-items-table .pos-cell-net[b-t8huazxvw3] {
    font-weight: 600;
}

.text-end[b-t8huazxvw3] {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pos-empty[b-t8huazxvw3] {
    text-align: center;
    color: var(--pos-text-faint);
    padding: 32px 18px !important;
}

.pos-batchlot-note[b-t8huazxvw3] {
    margin-top: 3px;
    font-size: 11.5px;
    font-weight: 400;
    color: var(--pos-text-muted);
    white-space: normal;
}

.pos-row-editing[b-t8huazxvw3] {
    background: #e8f0fd;
}

.pos-row-actions[b-t8huazxvw3] {
    width: 1%;
    white-space: nowrap;
}

.pos-icon-btn-sm[b-t8huazxvw3] {
    width: 30px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: 1px solid transparent;
    border-radius: var(--pos-radius-sm);
    color: var(--pos-text-faint);
    font-size: 12.5px;
    cursor: pointer;
    transition: background .12s, color .12s, border-color .12s;
}

    .pos-icon-btn-sm:hover[b-t8huazxvw3] {
        color: var(--pos-primary);
        background: var(--pos-primary-soft);
        border-color: #c9d8ee;
    }

    .pos-icon-btn-sm.pos-icon-btn-danger:hover[b-t8huazxvw3] {
        color: var(--pos-danger);
        background: var(--pos-danger-soft);
        border-color: #fecaca;
    }

/* ── Summary card header — GAINS standard section strip (same light
   green band + teal text as .uf-section / .uf-header), amount in bold. ── */
.pos-summary-card .pos-card-hdr[b-t8huazxvw3] {
    position: relative;
    min-height: 54px;
    padding-left: 20px;
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom-color: #cdeee4;
    color: #0f766e;
    overflow: hidden;
}

    .pos-summary-card .pos-card-hdr[b-t8huazxvw3]::before {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        width: 4px;
        background: #1ab99a;
    }

.pos-hdr-grand-amt[b-t8huazxvw3] {
    font-size: 20px;
    font-weight: 700;
    color: #0f766e;
    letter-spacing: 0;
    text-transform: none;
    white-space: nowrap;
}

.pos-totals-card[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 6px 16px 14px;
}

.pos-totals-line[b-t8huazxvw3] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    padding: 8px 0;
    font-size: 13px;
    color: var(--pos-text-muted);
    border-bottom: 1px solid #eef1f5;
}

    .pos-totals-line span:last-child[b-t8huazxvw3] {
        font-weight: 600;
        color: var(--pos-text);
        white-space: nowrap;
        text-align: right;
    }

    .pos-totals-line:last-of-type[b-t8huazxvw3] {
        border-bottom: none;
    }

.pos-totals-row[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 12px 16px;
    border-top: 1px solid var(--pos-border);
    font-size: 12.5px;
    font-weight: 600;
    flex-wrap: wrap;
    background: var(--pos-surface-2);
}

.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],
    .pos-totals-grand span:last-child[b-t8huazxvw3] {
        font-weight: 700;
        color: var(--pos-primary);
    }

.pos-grand-total[b-t8huazxvw3] {
    margin-left: auto;
    color: var(--pos-primary);
    font-size: 14px;
    font-weight: 700;
}

/* ── Forms ───────────────────────────────────────────────────────── */
.pos-field[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    margin-bottom: 12px;
    font-size: 12px;
    font-weight: 600;
    color: var(--pos-text-muted);
}

.pos-field-row[b-t8huazxvw3] {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    gap: 12px;
}

.pos-input[b-t8huazxvw3],
[b-t8huazxvw3] .pos-input {
    width: 100%;
    height: var(--pos-ctl-h);
    padding: 0 12px;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    background: var(--pos-surface);
    font-size: 13px;
    font-family: inherit;
    font-weight: 400;
    color: var(--pos-text);
    outline: none;
    box-sizing: border-box;
    transition: border-color .12s, box-shadow .12s;
}

    .pos-input:hover[b-t8huazxvw3],
    [b-t8huazxvw3] .pos-input:hover {
        border-color: #b4bfcc;
    }

    .pos-input:focus[b-t8huazxvw3],
    [b-t8huazxvw3] .pos-input:focus {
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px var(--pos-accent-ring);
    }

    .pos-input:read-only[b-t8huazxvw3] {
        background: var(--pos-surface-2);
        color: var(--pos-text-muted);
    }

    .pos-input[b-t8huazxvw3]::placeholder {
        color: var(--pos-text-faint);
    }

    /* Numbers line up right, like the grid columns they feed. */
    .pos-input[type="number"][b-t8huazxvw3] {
        text-align: right;
    }

textarea.pos-input[b-t8huazxvw3] {
    height: auto;
    min-height: 60px;
    padding: 9px 12px;
    line-height: 1.45;
}

    textarea.pos-input.pos-narration[b-t8huazxvw3] {
        resize: none;
    }

.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: 8px;
    margin-bottom: 12px;
    padding: 9px 11px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--pos-danger);
    background: var(--pos-danger-soft);
    border: 1px solid #fecaca;
    border-radius: var(--pos-radius-sm);
}

/* Joined input group (Item+UOM, HSN+%, Discount+₹/%) — one border. */
.pos-hsn-row[b-t8huazxvw3] {
    display: flex;
    align-items: stretch;
    min-width: 0;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    background: var(--pos-surface);
    transition: border-color .12s, box-shadow .12s;
    overflow: visible; /* ItemAutofill list renders inside */
}

    .pos-hsn-row:hover[b-t8huazxvw3] {
        border-color: #b4bfcc;
    }

    .pos-hsn-row:focus-within[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        box-shadow: 0 0 0 3px var(--pos-accent-ring);
    }

    .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;
        height: calc(var(--pos-ctl-h) - 2px);
    }

    .pos-hsn-row > input:not([readonly])[b-t8huazxvw3] {
        flex: 1 1 auto;
        min-width: 0;
    }

    .pos-hsn-row .pos-hsn-pct[b-t8huazxvw3],
    .pos-hsn-row > input[readonly][b-t8huazxvw3] {
        flex: 0 0 auto;
        border: none;
        border-left: 1px solid var(--pos-border);
        border-radius: 0 var(--pos-radius-sm) var(--pos-radius-sm) 0;
    }

.pos-hsn-pct[b-t8huazxvw3] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 52px;
    padding: 0 8px;
    font-size: 12px;
    font-weight: 600;
    color: var(--pos-text-muted);
    background: var(--pos-surface-2);
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    white-space: nowrap;
    box-sizing: border-box;
}

.pos-uom-box[b-t8huazxvw3] {
    width: 72px;
    height: calc(var(--pos-ctl-h) - 2px);
    text-align: center;
}

.pos-batchlot-input[b-t8huazxvw3] {
    cursor: pointer;
    background: var(--pos-surface-2);
}

    .pos-batchlot-input:hover[b-t8huazxvw3] {
        border-color: var(--pos-accent);
    }

.pos-itemdtl-actions[b-t8huazxvw3] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: auto;
    padding-top: 8px;
}

.pos-itemdtl-actions-tight[b-t8huazxvw3] {
    margin-top: 4px;
}

/* ── Discount ── */
.pos-discount-toggles[b-t8huazxvw3] {
    display: inline-flex;
    align-self: flex-start;
    gap: 4px;
    margin-bottom: 12px;
    padding: 3px;
    background: var(--pos-surface-2);
    border: 1px solid var(--pos-border);
    border-radius: var(--pos-radius-md);
    font-size: 12.5px;
}

    .pos-discount-toggles label[b-t8huazxvw3] {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        min-height: 30px;
        padding: 0 12px;
        border-radius: var(--pos-radius-sm);
        color: var(--pos-text-muted);
        cursor: pointer;
        white-space: nowrap;
    }

        .pos-discount-toggles label:has(input:checked)[b-t8huazxvw3] {
            background: var(--pos-surface);
            color: var(--pos-text);
            font-weight: 600;
            box-shadow: 0 1px 2px rgba(16, 24, 40, .1);
        }

    .pos-discount-toggles input[type="radio"][b-t8huazxvw3] {
        width: 14px;
        height: 14px;
        margin: 0;
        accent-color: var(--pos-primary);
        cursor: pointer;
    }

/* ── Buttons ─────────────────────────────────────────────────────── */
.pos-btn[b-t8huazxvw3] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    height: var(--pos-ctl-h);
    padding: 0 16px;
    font-size: 13px;
    font-weight: 600;
    font-family: inherit;
    border-radius: var(--pos-radius-sm);
    border: 1px solid var(--pos-border-strong);
    background: var(--pos-surface);
    color: #334155;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
}

    .pos-btn:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-surface-2);
        border-color: #b4bfcc;
        color: var(--pos-text);
    }

    .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: 96px;
    background: var(--pos-primary);
    border-color: var(--pos-primary);
    color: #fff;
}

    .pos-btn-primary:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-primary-dark);
        border-color: var(--pos-primary-dark);
        color: #fff;
    }

.pos-btn-clear[b-t8huazxvw3],
.pos-btn-danger[b-t8huazxvw3] {
    background: var(--pos-surface);
    color: var(--pos-danger);
    border-color: #f3c4c4;
}

    .pos-btn-clear:hover:not(:disabled)[b-t8huazxvw3],
    .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] {
    min-width: 112px;
    background: var(--pos-success);
    border-color: var(--pos-success);
    color: #fff;
}

    .pos-btn-save:hover:not(:disabled)[b-t8huazxvw3] {
        background: var(--pos-success-dark);
        border-color: var(--pos-success-dark);
        color: #fff;
    }

/* One consistent keyboard focus ring for every control on the page. */
.pos-btn:focus-visible[b-t8huazxvw3],
.pos-pill-btn:focus-visible[b-t8huazxvw3],
.pos-gear-btn:focus-visible[b-t8huazxvw3],
.pos-gains-toggle:focus-visible[b-t8huazxvw3],
.pos-addcust-btn:focus-visible[b-t8huazxvw3],
.pos-newitem-btn:focus-visible[b-t8huazxvw3],
.pos-icon-btn-sm:focus-visible[b-t8huazxvw3],
.pos-foot-icon-btn:focus-visible[b-t8huazxvw3],
.pos-rcp-x:focus-visible[b-t8huazxvw3] {
    outline: 2px solid var(--pos-accent);
    outline-offset: 2px;
}

/* ── Footer ──────────────────────────────────────────────────────── */
.pos-footer-bar[b-t8huazxvw3] {
    flex-shrink: 0;
    margin: 0 0 0 -16px;
    padding: 10px 20px;
    padding-bottom: max(10px, env(safe-area-inset-bottom));
    background: var(--pos-surface);
    border-top: 1px solid var(--pos-border);
    box-shadow: 0 -4px 16px rgba(16, 24, 40, .06);
}

.pos-footer-inner[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.pos-footer-spacer[b-t8huazxvw3] {
    flex: 1 1 auto;
}

.pos-foot-icon-btn[b-t8huazxvw3] {
    width: var(--pos-ctl-h);
    height: var(--pos-ctl-h);
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    background: var(--pos-surface);
    color: var(--pos-text-muted);
    font-size: 14px;
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
}

    .pos-foot-icon-btn:hover[b-t8huazxvw3] {
        border-color: var(--pos-accent);
        color: var(--pos-accent-dark);
        background: #ecfbf7;
    }

/* ── Receipt popup — standard uf-overlay/ms-pop/uf-modal shell;
   only width, stacking and the amount alignment are page-specific. ── */
.pos-rcp-overlay[b-t8huazxvw3] {
    z-index: 1210;
}

.pos-rcp-pop[b-t8huazxvw3] {
    max-width: 480px;
}

.pos-rcp-amt[b-t8huazxvw3] {
    text-align: right;
    font-weight: 600;
}

/* ── Documents popup (still the page's own small modal) ───────────────────────────────────────── */
.pos-rcp-modal[b-t8huazxvw3] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 460px;
    max-width: calc(100vw - 24px);
    max-height: 85vh;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: var(--pos-radius-lg);
    box-shadow: var(--pos-shadow-pop);
    z-index: 1210;
    font-family: 'Inter', 'Segoe UI', 'Open Sans', Arial, sans-serif;
    color: var(--pos-text);
}

.pos-rcp-hdr[b-t8huazxvw3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid var(--pos-border);
    font-size: 16px;
    font-weight: 600;
}

.pos-rcp-x[b-t8huazxvw3] {
    width: 34px;
    height: 34px;
    background: none;
    border: none;
    border-radius: var(--pos-radius-sm);
    font-size: 16px;
    color: var(--pos-text-muted);
    cursor: pointer;
}

    .pos-rcp-x:hover[b-t8huazxvw3] {
        background: var(--pos-surface-2);
        color: var(--pos-text);
    }

.pos-rcp-body[b-t8huazxvw3] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 120px;
    padding: 18px;
}

.pos-rcp-field[b-t8huazxvw3] {
    display: grid;
    grid-template-columns: 90px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
}

    .pos-rcp-field > label[b-t8huazxvw3] {
        color: var(--pos-text-muted);
        font-size: 13px;
        font-weight: 600;
    }

.pos-rcp-static[b-t8huazxvw3],
.pos-rcp-input[b-t8huazxvw3] {
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 12px;
    font-size: 14px;
    color: var(--pos-text);
    background: #fff;
    border: 1px solid var(--pos-border-strong);
    border-radius: var(--pos-radius-sm);
    box-sizing: border-box;
    min-width: 0;
}

.pos-rcp-static[b-t8huazxvw3] {
    background: var(--pos-surface-2);
}

select.pos-rcp-input[b-t8huazxvw3] {
    appearance: auto;
    font-family: inherit;
}

.pos-rcp-foot[b-t8huazxvw3] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 12px 18px;
    border-top: 1px solid var(--pos-border);
}

/* ═══ Responsive ═════════════════════════════════════════════════ */

/* Tablet & small laptop — form above the item list, summary full row */
@media (max-width: 1099.98px) {
    .pos-main-grid[b-t8huazxvw3] {
        grid-template-columns: minmax(0, 1fr);
    }

    .pos-itemdtl-card[b-t8huazxvw3] {
        order: -1;
    }

    .pos-product-card .pos-table-wrap[b-t8huazxvw3] {
        max-height: none;
        min-height: 0;
    }

    .pos-lower-grid[b-t8huazxvw3] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .pos-summary-card[b-t8huazxvw3] {
        grid-column: 1 / -1;
    }

    .pos-totals-card[b-t8huazxvw3] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 28px;
    }

        .pos-totals-line:nth-last-child(2)[b-t8huazxvw3] {
            border-bottom: none;
        }
}

/* Touch devices / narrower — 44px targets */
@media (max-width: 899.98px), (pointer: coarse) {
    .pos-page[b-t8huazxvw3],
    .pos-rcp-modal[b-t8huazxvw3] {
        --pos-ctl-h: 44px;
    }

    .pos-icon-btn-sm[b-t8huazxvw3] {
        width: 40px;
        height: 40px;
        font-size: 14px;
    }

    .pos-discount-toggles label[b-t8huazxvw3] {
        min-height: 38px;
    }
}

/* Phone */
@media (max-width: 639.98px) {
    /* One natural page scroll on phones: title + menu bars scroll away
       with the content (they were eating half the screen), the footer
       stays reachable as a sticky bar at the bottom. */
    .pos-page[b-t8huazxvw3] {
        display: block;
        padding: 0;
        overflow-x: hidden;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    .pos-scroll-body[b-t8huazxvw3] {
        overflow: visible;
    }

    .pos-footer-bar[b-t8huazxvw3] {
        position: sticky;
        bottom: 0;
        z-index: 20;
    }

    .pos-titlebar[b-t8huazxvw3],
    .pos-menubar[b-t8huazxvw3],
    .pos-footer-bar[b-t8huazxvw3] {
        margin: 0;
    }

    .pos-internal-chk[b-t8huazxvw3] {
        padding: 0 10px;
        font-size: 12px;
    }

    .pos-settings-body[b-t8huazxvw3] {
        grid-template-columns: 1fr;
    }

    /* Menu bar stacks: date + tax mode / scan / customer */
    .pos-menubar[b-t8huazxvw3] {
        padding: 10px 12px;
        gap: 8px;
    }

    .pos-menubar-group[b-t8huazxvw3] {
        width: 100%;
    }

    .pos-menubar-scan[b-t8huazxvw3] {
        flex: 1 1 100%;
        min-width: 0;
        order: 3;
    }

    .pos-menubar-cust[b-t8huazxvw3] {
        margin-left: 0;
        order: 4;
    }

        .pos-menubar-cust > :first-child[b-t8huazxvw3] {
            flex: 1 1 auto;
            min-width: 0;
        }

        .pos-menubar-cust[b-t8huazxvw3]  .pos-cust-input {
            width: 100%;
            min-width: 0;
        }

    .pos-btn-short[b-t8huazxvw3] { display: inline; }
    .pos-btn-full[b-t8huazxvw3] { display: none; }

    .pos-pill-btn[b-t8huazxvw3] {
        padding: 0 14px;
    }

    /* 16px stops iOS zooming into the field on focus */
    .pos-input[b-t8huazxvw3],
    [b-t8huazxvw3] .pos-input,
    [b-t8huazxvw3] .pos-cust-input,
    .pos-scan-input[b-t8huazxvw3],
    .pos-rcp-input[b-t8huazxvw3] {
        font-size: 16px;
    }

    .pos-scroll-body[b-t8huazxvw3] {
        padding: 12px;
        gap: 12px;
    }

    .pos-main-grid[b-t8huazxvw3],
    .pos-lower-grid[b-t8huazxvw3] {
        gap: 12px;
    }

    .pos-lower-grid[b-t8huazxvw3] {
        grid-template-columns: minmax(0, 1fr);
    }

    .pos-totals-card[b-t8huazxvw3] {
        display: flex;
    }

        .pos-totals-line:nth-last-child(2)[b-t8huazxvw3] {
            border-bottom: 1px solid #eef1f5;
        }

    .pos-card-hdr[b-t8huazxvw3] {
        padding: 8px 14px;
    }

    .pos-itemdtl-card[b-t8huazxvw3],
    .pos-discount-card[b-t8huazxvw3] {
        padding: 0 14px 14px;
    }

        .pos-itemdtl-card .pos-card-hdr[b-t8huazxvw3],
        .pos-discount-card .pos-card-hdr[b-t8huazxvw3] {
            margin: 0 -14px 12px;
        }

    .pos-itemdtl-actions .pos-btn[b-t8huazxvw3] {
        flex: 1 1 0;
    }

    /* Items: one card per line instead of a squeezed 8-column grid.
       Every value and both actions stay visible. */
    .pos-items-table[b-t8huazxvw3],
    .pos-items-table tbody[b-t8huazxvw3],
    .pos-items-table tfoot[b-t8huazxvw3] {
        display: block;
        width: 100%;
    }

        .pos-items-table thead[b-t8huazxvw3] {
            display: none;
        }

        .pos-items-table tbody[b-t8huazxvw3] {
            padding: 10px;
            box-sizing: border-box;
        }

            .pos-items-table tbody tr[b-t8huazxvw3] {
                display: grid;
                grid-template-columns: repeat(3, minmax(0, 1fr));
                gap: 8px 10px;
                margin-bottom: 10px;
                padding: 12px;
                background: var(--pos-surface) !important;
                border: 1px solid var(--pos-border);
                border-radius: var(--pos-radius-md);
            }

                .pos-items-table tbody tr:last-child[b-t8huazxvw3] {
                    margin-bottom: 0;
                }

                .pos-items-table tbody tr.pos-row-editing[b-t8huazxvw3] {
                    border-color: #b9cdee;
                    background: #f3f7fe !important;
                }

            .pos-items-table tbody td[b-t8huazxvw3] {
                display: block;
                padding: 0;
                border: none;
                text-align: left;
                white-space: normal;
                min-width: 0;
                overflow-wrap: anywhere;
            }

                .pos-items-table tbody td[data-label][b-t8huazxvw3]::before {
                    content: attr(data-label);
                    display: block;
                    margin-bottom: 2px;
                    font-size: 11px;
                    font-weight: 600;
                    color: var(--pos-text-faint);
                }

        .pos-items-table .pos-cell-idx[b-t8huazxvw3] {
            display: none !important;
        }

        .pos-items-table .pos-cell-name[b-t8huazxvw3] {
            grid-column: 1 / 3;
            order: -2;
            min-width: 0;
            font-size: 14px;
            font-weight: 600;
        }

            .pos-items-table .pos-cell-name[b-t8huazxvw3]::before {
                display: none !important;
            }

        .pos-items-table tbody .pos-row-actions[b-t8huazxvw3] {
            grid-column: 3;
            order: -1;
            width: auto;
            display: flex;
            justify-content: flex-end;
            align-items: flex-start;
            gap: 6px;
        }

        .pos-items-table .pos-cell-rate[b-t8huazxvw3] {
            grid-column: 1;
        }

        .pos-items-table .pos-cell-amt[b-t8huazxvw3] {
            grid-column: 2 / 4;
            text-align: right;
            font-size: 14px;
            color: var(--pos-text);
        }

        .pos-items-table .pos-cell-qty[b-t8huazxvw3],
        .pos-items-table .pos-cell-uom[b-t8huazxvw3] {
            text-align: left;
        }

        .pos-items-table .pos-cell-disc[b-t8huazxvw3] {
            grid-column: 1;
            text-align: left;
        }

        .pos-items-table .pos-cell-net[b-t8huazxvw3] {
            grid-column: 2 / 4;
            text-align: right;
        }

        .pos-items-table tbody td.pos-empty[b-t8huazxvw3] {
            grid-column: 1 / -1;
            text-align: center;
        }

        .pos-items-table tbody tr:has(.pos-empty)[b-t8huazxvw3] {
            display: block;
            border-style: dashed;
        }

        .pos-items-table tfoot tr[b-t8huazxvw3] {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            column-gap: 16px;
            padding: 0 14px;
            background: var(--pos-primary-soft);
            border-top: 1px solid #c9d8ee;
            border-radius: 0 0 var(--pos-radius-lg) var(--pos-radius-lg);
        }

        .pos-items-table tfoot td[b-t8huazxvw3] {
            position: static;
            display: block;
            padding: 10px 0;
            border: none;
            background: none;
        }

            .pos-items-table tfoot td:empty[b-t8huazxvw3] {
                display: none;
            }

            .pos-items-table tfoot td:first-child[b-t8huazxvw3] {
                flex: 1;
            }

            .pos-items-table tfoot td[data-label][b-t8huazxvw3]::before {
                content: attr(data-label) " ";
                font-weight: 500;
                color: var(--pos-text-muted);
            }

    /* Tax grid stays a table (5 short columns); tighter cells so it fits
       a phone, its own box scrolls sideways only if a ledger name can't wrap. */
    .pos-tax-card .pos-table td[b-t8huazxvw3],
    .pos-tax-card .pos-table th[b-t8huazxvw3] {
        padding: 9px 8px;
    }

    .pos-tax-card .pos-table thead th[b-t8huazxvw3] {
        font-size: 10.5px;
        letter-spacing: .02em;
    }

    .pos-hdr-grand-amt[b-t8huazxvw3] {
        font-size: 20px;
    }

    /* Footer: [icons … grand total] / [Delete New Print Save] */
    .pos-footer-bar[b-t8huazxvw3] {
        padding: 8px 12px;
        padding-bottom: max(8px, env(safe-area-inset-bottom));
    }

    .pos-footer-inner[b-t8huazxvw3] {
        gap: 8px;
    }

        .pos-footer-inner[b-t8huazxvw3]::after {
            content: "";
            order: 1;
            flex: 0 0 100%;
            height: 0;
        }

    .pos-footer-inner > .pos-btn[b-t8huazxvw3] {
        order: 2;
        flex: 1 1 0;
        min-width: 0;
        padding: 0 6px;
        gap: 5px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .pos-rcp-field[b-t8huazxvw3] {
        grid-template-columns: 76px minmax(0, 1fr);
    }
}

/* Small phones (<360px) */
@media (max-width: 359.98px) {
    .pos-internal-chk[b-t8huazxvw3] {
        font-size: 11.5px;
        padding: 0 8px;
        gap: 6px;
    }

    .pos-field-row[b-t8huazxvw3] {
        gap: 8px;
    }

    .pos-items-table tbody tr[b-t8huazxvw3] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .pos-items-table .pos-cell-name[b-t8huazxvw3] {
        grid-column: 1 / -1;
    }

    .pos-items-table tbody .pos-row-actions[b-t8huazxvw3] {
        grid-column: 1 / -1;
        order: 10;
        justify-content: flex-end;
        padding-top: 8px;
        border-top: 1px dashed var(--pos-border);
    }

    .pos-items-table .pos-cell-amt[b-t8huazxvw3],
    .pos-items-table .pos-cell-net[b-t8huazxvw3] {
        grid-column: 2;
    }

}

/* ≤399px: footer actions keep their words, drop the icons, so all four
   still fit on one row (two short bars instead of three). */
@media (max-width: 399.98px) {
    .pos-footer-inner > .pos-btn i[b-t8huazxvw3] {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .pos-btn:active:not(:disabled)[b-t8huazxvw3] {
        transform: none;
    }
}
/* /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 now uses the shared .mu-toast-host/.mu-toast (masters-forms.css) —
   old page-local .che-toast removed. */

/* ── 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;
    }

/* ── BOM chip under FG item + BOM picker popup (ProductionEntry) ── */
.prod-bom-chip[b-17euo42ye2] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 4px;
    padding: 2px 8px;
    font-size: 10.5px;
    font-weight: 600;
    color: #64748b;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
    border-radius: 10px;
    cursor: pointer;
    max-width: 100%;
}

    .prod-bom-chip span[b-17euo42ye2] {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .prod-bom-chip:hover[b-17euo42ye2] {
        border-color: #1AB99A;
        color: #0d9480;
    }

    .prod-bom-chip.set[b-17euo42ye2] {
        color: #0d9480;
        background: #eafbf6;
        border: 1px solid #1AB99A;
    }

.prod-bom-modal[b-17euo42ye2] {
    max-width: 560px;
}

.prod-bom-msg[b-17euo42ye2] {
    padding: 18px 0;
    text-align: center;
    color: #64748b;
}

.prod-bom-table tbody tr[b-17euo42ye2] {
    cursor: pointer;
}

    .prod-bom-table tbody tr:hover td[b-17euo42ye2] {
        background: #f3fcf9;
    }

    .prod-bom-table tbody tr.active td[b-17euo42ye2] {
        background: #eafbf6;
    }

.prod-bom-name[b-17euo42ye2] {
    font-weight: 600;
    color: #0f766e;
}

/* ── RM / FG grid cells: Item autofill, Qty, Rate inputs (ProductionEntry) ── */
.prod-dual-grid .che-item-table td[b-17euo42ye2] {
    padding: 6px;
    vertical-align: top;
}

.prod-dual-grid .che-item-table thead th[b-17euo42ye2] {
    padding: 8px 6px;
}

/* ItemAutofill renders its own <input> — reach it via ::deep. */
.prod-dual-grid .che-item-table[b-17euo42ye2]  .che-input {
    height: 32px;
    width: 100%;
    padding: 0 10px;
    border: 1.5px solid #e2e8f0;
    border-radius: 6px;
    background: #f8fafc;
    color: #1e293b;
    font-size: 12.5px;
    font-family: inherit;
    outline: none;
    box-sizing: border-box;
    transition: border-color .12s, background .12s, box-shadow .12s;
}

    .prod-dual-grid .che-item-table[b-17euo42ye2]  .che-input:focus {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.prod-cell-input[b-17euo42ye2] {
    height: 32px;
    width: 100%;
    min-width: 0;
    padding: 0 8px;
    border: 1.5px solid #e2e8f0;
    border-radius: 6px;
    background: #f8fafc;
    color: #1e293b;
    font-size: 12.5px;
    font-family: inherit;
    text-align: right;
    font-variant-numeric: tabular-nums;
    outline: none;
    box-sizing: border-box;
    transition: border-color .12s, background .12s, box-shadow .12s;
}

    .prod-cell-input[b-17euo42ye2]::placeholder {
        color: #cbd5e1;
    }

    .prod-cell-input:hover[b-17euo42ye2] {
        border-color: #cbd5e1;
    }

    .prod-cell-input:focus[b-17euo42ye2] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

/* Text cells (Sr#, Amt) line up with the 32px inputs. */
.prod-cell-txt[b-17euo42ye2] {
    line-height: 32px;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.prod-dual-grid .che-row-actions button[b-17euo42ye2] {
    height: 32px;
}

.prod-dual-grid .che-totals-row td[b-17euo42ye2] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* ── Date field: GlobalDatepicker — master date box (same rules as
   BSPL / DocumentGrid / ChallanGrid / OrderGrid), ::deep because .gdp-wrap
   is rendered by GlobalDatepicker. Height 36px (not the drawers' 32px) so it
   lines up with Depot / Order No / Lot No on the same row. ── */
.prod-date-field[b-17euo42ye2]  .gdp-wrap {
    display: flex;
    align-items: center;
    width: 100%;
    height: 36px;
    padding: 0 10px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
    box-sizing: border-box;
}

    .prod-date-field[b-17euo42ye2]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .prod-date-field[b-17euo42ye2]  .gdp-wrap:focus,
    .prod-date-field[b-17euo42ye2]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .prod-date-field[b-17euo42ye2]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.prod-date-field[b-17euo42ye2]  .gdp-icon {
    color: #1a56a7;
}

.prod-date-field[b-17euo42ye2]  .gdp-value {
    font-weight: 400;
}

/* ── RM / FG totals — bottom of che-card, one box under each grid
   (same 16px gap as .prod-dual-grid so boxes line up with the columns) ── */
.prod-totals-bar[b-17euo42ye2] {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px dashed #e2e8f0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

/* Same scrollbar gutter on grid + totals box, so a grid vertical scrollbar
   never shifts the columns out of line with the totals. */
.prod-dual-grid .che-grid-wrap[b-17euo42ye2] {
    scrollbar-gutter: stable;
}

.prod-total-box[b-17euo42ye2] {
    background: #eafbf6;
    border-radius: 8px;
    box-shadow: inset 0 0 0 1px #c8efe3; /* inset = no width added, cols stay aligned */
    overflow-y: hidden;
    scrollbar-gutter: stable;
}

/* Column widths mirror the grid's thead (## 32 · Item * · Qty 75 · Rate 85 · Amt 95 · Del 32). */
.prod-total-table[b-17euo42ye2] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 12.5px;
    font-variant-numeric: tabular-nums;
}

    .prod-total-table td[b-17euo42ye2] {
        padding: 8px 6px;
        white-space: nowrap;
    }

.prod-total-lbl[b-17euo42ye2] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #0d9480;
    overflow: hidden;
    text-overflow: ellipsis;
}

    .prod-total-lbl i[b-17euo42ye2] {
        margin-right: 6px;
    }

/* Qty sits in an input in the grid: cell pad 6 + border 1.5 + input pad 8. */
.prod-total-qty[b-17euo42ye2] {
    text-align: right;
    padding-right: 15.5px !important;
    font-weight: 700;
    color: #1A2537;
}

/* Amt is plain text in the grid: cell pad 6. */
.prod-total-amt[b-17euo42ye2] {
    text-align: right;
    font-weight: 700;
    color: #1A2537;
}

@media (max-width: 900px) {
    .prod-totals-bar[b-17euo42ye2] {
        grid-template-columns: 1fr;
        gap: 6px;
    }
}

/* ── Fill to the fixed footer: no empty band under the voucher card.
   Page = full viewport height (bottom padding already clears the footer);
   body → main → voucher card → dual grid all grow; the grid scroll areas
   take the spare height, so the totals strip lands just above the footer.
   Grid wraps scroll internally once rows exceed that height. ── */
.prod-page[b-17euo42ye2] {
    min-height: 100vh;
    min-height: 100dvh;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

    .prod-page > .che-body[b-17euo42ye2] {
        flex: 1 1 auto;
        align-items: stretch;
    }

    .prod-page .che-main[b-17euo42ye2] {
        display: flex;
        flex-direction: column;
    }

.prod-voucher-card[b-17euo42ye2] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    margin-bottom: 0;
}

    .prod-voucher-card .prod-dual-grid[b-17euo42ye2] {
        flex: 1 1 auto;
        align-items: stretch;
    }

    .prod-voucher-card .prod-grid-col[b-17euo42ye2] {
        display: flex;
        flex-direction: column;
    }

    .prod-voucher-card .che-grid-wrap[b-17euo42ye2] {
        flex: 1 1 0;
        min-height: 160px;
        max-height: none;
    }

/* ── ItemAutofill dropdown inside RM / FG grids ──
   As position:absolute the list lives inside .che-grid-wrap's overflow box:
   it gets clipped AND stretches the wrap's scroll area (the scrollbars that
   appear on .che-grid-wrap / .che-item-table while it's open).
   position:fixed takes it out of that overflow box completely:
     • JS-positioned build (gainsPositionDropdown sets inline left/top/width)
       → inline styles win over these, placement stays JS-driven.
     • Plain absolute build → offsets reset to auto, so the fixed box sits at
       its static spot right under the input, still outside the clip.
   z-index 1000 clears sticky thead (2) and the fixed footer bar (50). */
.prod-dual-grid[b-17euo42ye2]  .ia-suggest {
    position: fixed;
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    z-index: 1000;
    min-width: 280px;
    max-width: 460px;
    max-height: 240px;
    overflow-y: auto;
    margin-top: 2px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(15,23,42,.18);
}

/* ── GAINS standard scrollbar (thin teal) — RM / FG grid scroll areas,
   ItemAutofill list, BOM / Costing popup bodies.
   .prod-total-box gets it too: it reserves a scrollbar-gutter to stay
   column-aligned with the grids, so its gutter must be the same width. ── */
.prod-voucher-card .che-grid-wrap[b-17euo42ye2],
.prod-total-box[b-17euo42ye2],
.che-modal-body[b-17euo42ye2],
.prod-dual-grid[b-17euo42ye2]  .ia-suggest {
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}

.prod-voucher-card .che-grid-wrap[b-17euo42ye2]::-webkit-scrollbar,
.prod-total-box[b-17euo42ye2]::-webkit-scrollbar,
.che-modal-body[b-17euo42ye2]::-webkit-scrollbar,
.prod-dual-grid[b-17euo42ye2]  .ia-suggest::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

.prod-voucher-card .che-grid-wrap[b-17euo42ye2]::-webkit-scrollbar-track,
.prod-total-box[b-17euo42ye2]::-webkit-scrollbar-track,
.che-modal-body[b-17euo42ye2]::-webkit-scrollbar-track,
.prod-dual-grid[b-17euo42ye2]  .ia-suggest::-webkit-scrollbar-track {
    background: transparent;
}

.prod-voucher-card .che-grid-wrap[b-17euo42ye2]::-webkit-scrollbar-thumb,
.prod-total-box[b-17euo42ye2]::-webkit-scrollbar-thumb,
.che-modal-body[b-17euo42ye2]::-webkit-scrollbar-thumb,
.prod-dual-grid[b-17euo42ye2]  .ia-suggest::-webkit-scrollbar-thumb {
    background: #1ab99a;
    border-radius: 999px;
}

.prod-voucher-card .che-grid-wrap[b-17euo42ye2]::-webkit-scrollbar-thumb:hover,
.prod-total-box[b-17euo42ye2]::-webkit-scrollbar-thumb:hover,
.che-modal-body[b-17euo42ye2]::-webkit-scrollbar-thumb:hover,
.prod-dual-grid[b-17euo42ye2]  .ia-suggest::-webkit-scrollbar-thumb:hover {
    background: #159e83;
}

.prod-voucher-card .che-grid-wrap[b-17euo42ye2]::-webkit-scrollbar-corner,
.prod-total-box[b-17euo42ye2]::-webkit-scrollbar-corner,
.che-modal-body[b-17euo42ye2]::-webkit-scrollbar-corner,
.prod-dual-grid[b-17euo42ye2]  .ia-suggest::-webkit-scrollbar-corner {
    background: transparent;
}

/* ── Narration: fixed size, no stretch/resize handle; long text scrolls
   inside with the GAINS thin teal scrollbar. ── */
.prod-voucher-card .che-field textarea[b-17euo42ye2] {
    resize: none;
    height: 54px;
    min-height: 54px;
    max-height: 54px;
    overflow-y: auto;
    padding: 8px 10px;
    line-height: 1.4;
    box-sizing: border-box;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}

    .prod-voucher-card .che-field textarea[b-17euo42ye2]::-webkit-scrollbar {
        width: 8px;
    }

    .prod-voucher-card .che-field textarea[b-17euo42ye2]::-webkit-scrollbar-track {
        background: transparent;
    }

    .prod-voucher-card .che-field textarea[b-17euo42ye2]::-webkit-scrollbar-thumb {
        background: #1ab99a;
        border-radius: 999px;
    }

        .prod-voucher-card .che-field textarea[b-17euo42ye2]::-webkit-scrollbar-thumb:hover {
            background: #159e83;
        }

/* ── viEw tab — Production report (api/ProductionReport/get) ── */
.prod-rpt[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.prod-rpt-msg[b-17euo42ye2] {
    padding: 28px 0;
    text-align: center;
    color: #64748b;
}

.prod-rpt-head[b-17euo42ye2] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 12px;
    border-bottom: 2px solid #306B9C;
}

.prod-rpt-title[b-17euo42ye2] {
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .06em;
    color: #306B9C;
}

.prod-rpt-vnum[b-17euo42ye2] {
    margin-top: 2px;
    font-size: 13px;
    font-weight: 600;
    color: #1A2537;
}

.prod-rpt-refresh[b-17euo42ye2] {
    width: 32px;
    height: 32px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    color: #475569;
    cursor: pointer;
}

    .prod-rpt-refresh:hover[b-17euo42ye2] {
        border-color: #1AB99A;
        color: #0d9480;
    }

.prod-rpt-info[b-17euo42ye2] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px 18px;
}

    .prod-rpt-info > div[b-17euo42ye2] {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 0;
    }

    .prod-rpt-info span[b-17euo42ye2] {
        font-size: 10.5px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: #64748b;
    }

    .prod-rpt-info b[b-17euo42ye2] {
        font-size: 13px;
        font-weight: 600;
        color: #1A2537;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.prod-rpt-wide[b-17euo42ye2] {
    grid-column: 1 / -1;
}

    .prod-rpt-wide b[b-17euo42ye2] {
        white-space: normal;
        font-weight: 500;
    }

/* Process / Machine names come from their own dropdowns, shown read-only as text. */
.prod-rpt-ro[b-17euo42ye2] {
    pointer-events: none;
}

    .prod-rpt-ro[b-17euo42ye2]  select {
        appearance: none;
        -webkit-appearance: none;
        border: none;
        background: transparent;
        padding: 0;
        margin: 0;
        height: auto;
        width: 100%;
        font: inherit;
        color: inherit;
        box-shadow: none;
    }

.prod-rpt-sec-title[b-17euo42ye2] {
    margin-bottom: 6px;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #475569;
}

.prod-rpt-wrap[b-17euo42ye2] {
    overflow-x: auto;
}

.prod-rpt-table td[b-17euo42ye2] {
    font-variant-numeric: tabular-nums;
}

@media (max-width: 900px) {
    .prod-rpt-info[b-17euo42ye2] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ── Show Report popup — legacy StockTransferReport (PRO) layout ── */
.prod-rptpop[b-17euo42ye2] {
    width: min(860px, 96vw);
    max-height: 90vh;
}

    .prod-rptpop .uf-header[b-17euo42ye2],
    .prod-rptpop .uf-footer[b-17euo42ye2] {
        flex-shrink: 0;
    }

    .prod-rptpop .uf-footer[b-17euo42ye2] {
        justify-content: flex-end;
    }

.prod-rptpop-ico[b-17euo42ye2] {
    margin-right: 8px;
    color: #1ab99a;
}

.prod-rptpop-body[b-17euo42ye2] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 14px 16px;
    background: #fff;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}

    .prod-rptpop-body[b-17euo42ye2]::-webkit-scrollbar {
        width: 8px;
        height: 8px;
    }

    .prod-rptpop-body[b-17euo42ye2]::-webkit-scrollbar-track {
        background: transparent;
    }

    .prod-rptpop-body[b-17euo42ye2]::-webkit-scrollbar-thumb {
        background: #1ab99a;
        border-radius: 999px;
    }

.pvr[b-17euo42ye2] {
    min-width: 720px;
    border: 1px solid #c9ced6;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12.5px;
    color: #111;
}

.pvr-top[b-17euo42ye2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 7px 8px;
    background: #3c6291;
    color: #fff;
    font-size: 16px;
    font-weight: 700;
}

.pvr-info[b-17euo42ye2] {
    width: 100%;
    border-collapse: collapse;
}

    .pvr-info th[b-17euo42ye2],
    .pvr-info td[b-17euo42ye2] {
        padding: 6px 6px;
        border-bottom: 1px solid #c9ced6;
        text-align: left;
        vertical-align: middle;
    }

    .pvr-info th[b-17euo42ye2] {
        width: 100px;
        font-weight: 700;
        white-space: nowrap;
    }

    .pvr-info td[b-17euo42ye2] {
        width: calc(50% - 100px);
    }

.pvr-strong[b-17euo42ye2] {
    font-weight: 700;
}

.pvr-band[b-17euo42ye2] {
    padding: 6px 8px;
    background: #3c6291;
    color: #fff;
    text-align: center;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .02em;
}

.pvr-sec-title[b-17euo42ye2] {
    padding: 5px 6px;
    background: #4f81bd;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
}

.pvr-table[b-17euo42ye2] {
    width: 100%;
    border-collapse: collapse;
}

    .pvr-table th[b-17euo42ye2],
    .pvr-table td[b-17euo42ye2] {
        padding: 7px 6px;
        border: 1px solid #d5d9df;
        vertical-align: middle;
    }

    .pvr-table thead th[b-17euo42ye2] {
        background: #f3f3f3;
        font-weight: 700;
        line-height: 1.15;
    }

    .pvr-table tbody td[b-17euo42ye2] {
        font-variant-numeric: tabular-nums;
    }

    .pvr-table tfoot td[b-17euo42ye2] {
        background: #d9d9d9;
        font-weight: 700;
    }

.pvr-l[b-17euo42ye2] {
    text-align: left;
}

.pvr-c[b-17euo42ye2] {
    text-align: center;
}

.pvr-r[b-17euo42ye2] {
    text-align: right;
}

.pvr-tot[b-17euo42ye2] {
    font-size: 13.5px;
}

.pvr-tot-amt[b-17euo42ye2] {
    font-size: 14.5px;
}

.pvr-empty[b-17euo42ye2] {
    text-align: center;
    color: #64748b;
}

.pvr .prod-rpt-ro[b-17euo42ye2] {
    display: inline-block;
    min-width: 160px;
}

/* ── Machine Setting tab (site setting 255) ── */
.prod-ms[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.prod-ms-head[b-17euo42ye2] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px 24px;
    padding-bottom: 12px;
    border-bottom: 2px solid #306B9C;
}

.prod-ms-title[b-17euo42ye2] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .03em;
    color: #306B9C;
}

.prod-ms-sub[b-17euo42ye2] {
    margin-top: 3px;
    font-size: 12px;
    color: #64748b;
}

.prod-ms-badge[b-17euo42ye2] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: 6px;
    padding: 2px 9px;
    border-radius: 999px;
    background: #eafbf6;
    border: 1px solid #1AB99A;
    color: #0d9480;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0;
}

/* Machine picker — compact, right side of the header. */
.prod-ms-machine[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    width: min(340px, 100%);
}

    .prod-ms-machine > span[b-17euo42ye2] {
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: #475569;
    }

    .prod-ms-machine[b-17euo42ye2]  select {
        width: 100%;
        height: 34px;
        padding: 0 10px;
        border: 1px solid #cbd5e1;
        border-radius: 6px;
        background-color: #fff;
        font-size: 13px;
        color: #1a2537;
    }

.prod-ms-req[b-17euo42ye2] {
    color: #c0392b;
    font-style: normal;
}

/* Section cards — 3 across on wide screens, wrap down to 1. */
.prod-ms-groups[b-17euo42ye2] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 14px;
    align-items: start;
}

.prod-ms-group[b-17euo42ye2] {
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}

.prod-ms-group-hdr[b-17euo42ye2] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: #f1f6fb;
    border-bottom: 1px solid #e2e8f0;
    border-left: 3px solid #1AB99A;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #306B9C;
}

    .prod-ms-group-hdr i[b-17euo42ye2] {
        color: #1AB99A;
    }

.prod-ms-fields[b-17euo42ye2] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px 12px;
    padding: 12px;
}

.prod-ms-field[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
    margin: 0;
}

    .prod-ms-field > span[b-17euo42ye2] {
        font-size: 11.5px;
        font-weight: 600;
        color: #475569;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .prod-ms-field > input[b-17euo42ye2] {
        width: 100%;
        height: 32px;
        padding: 0 9px;
        border: 1px solid #cbd5e1;
        border-radius: 6px;
        background: #fff;
        font-size: 13px;
        color: #1a2537;
        font-family: inherit;
        box-sizing: border-box;
        outline: none;
        transition: border-color .12s, box-shadow .12s;
    }

        .prod-ms-field > input:hover[b-17euo42ye2] {
            border-color: #94a3b8;
        }

        .prod-ms-field > input:focus[b-17euo42ye2] {
            border-color: #1AB99A;
            box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
        }

.prod-ms-err[b-17euo42ye2] {
    padding: 8px 12px;
    border-radius: 8px;
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
    font-size: 12.5px;
}

.prod-ms-actions[b-17euo42ye2] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
}

.prod-ms-confirm[b-17euo42ye2] {
    margin-right: auto;
    font-size: 12.5px;
    font-weight: 600;
    color: #b91c1c;
}

.prod-ms-del[b-17euo42ye2] {
    color: #b91c1c;
    border-color: #fecaca;
}

    .prod-ms-del:hover:not(:disabled)[b-17euo42ye2] {
        background: #fef2f2;
    }

@media (max-width: 640px) {
    .prod-ms-groups[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }

    .prod-ms-fields[b-17euo42ye2] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Non-Voucher tabs have no fixed footer bar → drop its reserved bottom space. */
.prod-page.prod-no-footer[b-17euo42ye2] {
    padding-bottom: 16px;
}

/* =====================================================
   Standard voucher UI — avc-* block copied from ChallanEntry.razor.css
   (itself ported 1:1 from AccVoucher.razor.css), so Production entry
   looks the same as AccVoucher / InvVoucher / ChallanEntry.
   (avc-* class names kept identical so the two pages stay easy to
   compare/sync). Blazor CSS isolation scopes these to ChallanEntry,
   so nothing here leaks into or depends on AccVoucher's own file.
   Ranges copied: tokens/shell/sidebar/header/tabs/strip/gfield,
   line-items grid + totals + action row, utilities, "Voucher UX V2"
   three-pane overrides, Phase 2 spacer/help-btn/active-row.
   Skipped (not used here): TDS/HSN inset + modals, Documents/View tab
   blocks, payment-details block, shortcut modal, productivity status bar.
   ===================================================== */

.avc-page[b-17euo42ye2] {
    --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-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
    width: 56px;
}

.avc-sidebar-hdr[b-17euo42ye2] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-17euo42ye2] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

    .avc-recent-list[b-17euo42ye2]::-webkit-scrollbar {
        width: 4px;
    }

    .avc-recent-list[b-17euo42ye2]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .avc-recent-list[b-17euo42ye2]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-17euo42ye2] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-17euo42ye2] {
    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-17euo42ye2],
    .avc-recent-card.active[b-17euo42ye2] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-17euo42ye2] {
    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-17euo42ye2] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-17euo42ye2] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-17euo42ye2] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-17euo42ye2] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-17euo42ye2] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-recent-amt[b-17euo42ye2] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.avc-status-badge[b-17euo42ye2] {
    flex-shrink: 0;
    border-radius: 6px;
    padding: 1px 6px;
    font-size: 10px;
    font-weight: 600;
}

.avc-status-approved[b-17euo42ye2] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-status-pending[b-17euo42ye2] {
    background: #fffbeb;
    color: #92400e;
    border: 0.5px solid #fde68a;
}

.avc-status-draft[b-17euo42ye2] {
    background: #f3f4f6;
    color: #374151;
    border: 0.5px solid var(--avc-border);
}

.avc-status-rejected[b-17euo42ye2] {
    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-17euo42ye2] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-17euo42ye2] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-17euo42ye2] {
    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-17euo42ye2] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-17euo42ye2] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
        color: var(--avc-header-bg);
    }

    .avc-gains-tab.active[b-17euo42ye2] {
        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-17euo42ye2] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-panel-lead[b-17euo42ye2] {
    font-size: 13px;
    color: var(--avc-muted);
    margin: 0 0 10px;
}

.avc-empty-block[b-17euo42ye2] {
    color: var(--avc-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

/* ── Entry quick-action strip ── */
.avc-entry-action-strip[b-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
        background: rgba(255, 255, 255, .12);
        border-color: rgba(255, 255, 255, .42);
    }

    .avc-entry-action-btn.active[b-17euo42ye2] {
        background: #fff;
        border-color: #fff;
        color: #065f46;
    }

    .avc-entry-action-btn i[b-17euo42ye2] {
        font-size: 12px;
    }

.avc-entry-action-badge[b-17euo42ye2] {
    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-17euo42ye2] {
    background: rgba(6, 95, 70, .10);
}

/* ── Field grid (Voucher type/no/date/reference, Audit/Documents fields) ── */
.avc-gfield-grid[b-17euo42ye2] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-bottom: 8px;
}

.avc-gfield[b-17euo42ye2] {
    display: block;
    margin-bottom: .35rem;
}

.avc-gfield-grid .avc-gfield[b-17euo42ye2] {
    margin-bottom: 0;
}

.avc-gfield-block:last-child[b-17euo42ye2] {
    margin-bottom: 0;
}

.avc-gfield span[b-17euo42ye2] {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--avc-muted);
    margin-bottom: 4px;
}

/* ── Line items grid ── */
.avc-lines-section[b-17euo42ye2] {
    border-top: 0.5px solid var(--avc-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.avc-lines-toolbar[b-17euo42ye2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.avc-lines-title[b-17euo42ye2] {
    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-17euo42ye2] {
    /* 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-17euo42ye2]::-webkit-scrollbar {
        width: 8px;
    }

    .avc-lines-scroll[b-17euo42ye2]::-webkit-scrollbar-track {
        background: transparent;
    }

    .avc-lines-scroll[b-17euo42ye2]::-webkit-scrollbar-thumb {
        background: var(--avc-accent-border);
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .avc-lines-scroll[b-17euo42ye2]::-webkit-scrollbar-thumb:hover {
            background: var(--avc-accent);
            background-clip: content-box;
        }

    .avc-lines-scroll[b-17euo42ye2]::-webkit-scrollbar-corner {
        background: transparent;
    }

.avc-lines-table[b-17euo42ye2] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    table-layout: fixed;
}

    .avc-lines-table thead th[b-17euo42ye2] {
        position: sticky;
        top: 0;
        background: #fff;
        z-index: 1;
    }

    .avc-lines-table th[b-17euo42ye2] {
        text-align: left;
        font-weight: 600;
        font-size: 11px;
        color: var(--avc-muted);
        padding: 0 8px 10px;
    }

    .avc-lines-table td[b-17euo42ye2] {
        padding: 8px 8px;
        border-bottom: 0.5px solid var(--avc-border-soft);
    }

.avc-icon-btn[b-17euo42ye2] {
    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-17euo42ye2] {
        color: var(--avc-danger);
        border-color: var(--avc-danger-border);
    }

.avc-closing-muted[b-17euo42ye2] {
    color: var(--avc-muted-light);
}

.avc-closing-pos[b-17euo42ye2] {
    color: #1d4ed8;
    font-weight: 600;
}

.avc-closing-neg[b-17euo42ye2] {
    color: #800000;
    font-weight: 600;
}

.avc-lines-hint[b-17euo42ye2] {
    font-size: 11px;
    color: var(--avc-muted-light);
    margin-top: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Totals bar ── */
.avc-totals-bar[b-17euo42ye2] {
    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-17euo42ye2] {
        color: var(--avc-text);
        font-weight: 700;
    }

.avc-balance-pill[b-17euo42ye2] {
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 12px;
    font-weight: 600;
}

.avc-balance-ok[b-17euo42ye2] {
    background: var(--avc-accent-bg);
    color: #065f46;
    border: 0.5px solid var(--avc-accent-border);
}

.avc-balance-bad[b-17euo42ye2] {
    background: var(--avc-danger-bg);
    color: var(--avc-danger);
    border: 0.5px solid var(--avc-danger-border);
}

.avc-validation-msg[b-17euo42ye2] {
    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-17euo42ye2] {
    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-17euo42ye2] {
    width: 100%;
    max-width: 1300px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 2rem;
}

/* ── Shared utilities ── */
.text-end[b-17euo42ye2] {
    text-align: right;
}

.text-center[b-17euo42ye2] {
    text-align: center;
}

/* =====================================================
   GAINS Voucher UX V2 — contextual three-pane redesign
   ===================================================== */
.avc-page[b-17euo42ye2] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-17euo42ye2] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-17euo42ye2] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-17euo42ye2] {
    width: 52px;
}

.avc-gains-header[b-17euo42ye2] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-17euo42ye2] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-17euo42ye2] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-17euo42ye2] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-17euo42ye2] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-17euo42ye2] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-17euo42ye2] {
    padding: 14px 18px 88px;
}

.avc-entry-layout[b-17euo42ye2] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 14px;
    align-items: start;
}

.avc-entry-main[b-17euo42ye2] {
    min-width: 0;
}

.avc-entry-action-strip[b-17euo42ye2] {
    min-height: 36px;
    padding: 4px;
    margin-bottom: 10px;
    background: #f4f7f6;
    border: 1px solid #e2ebe8;
}

.avc-entry-action-btn[b-17euo42ye2] {
    min-height: 28px;
    color: #40524d;
    border-color: transparent;
}

    .avc-entry-action-btn:hover[b-17euo42ye2] {
        background: #fff;
        border-color: #d7e5e0;
    }

    .avc-entry-action-btn.active[b-17euo42ye2] {
        background: #e3f7f1;
        color: #08765f;
        border-color: #b8e8da;
    }

.avc-entry-action-badge[b-17euo42ye2] {
    background: rgba(8,118,95,.09);
}

.avc-gfield-grid[b-17euo42ye2] {
    grid-template-columns: minmax(230px, 1.35fr) minmax(170px, .75fr) minmax(210px, 1fr);
    gap: 10px;
}

.avc-gfield span[b-17euo42ye2] {
    font-size: 10.5px;
    margin-bottom: 3px;
}

.avc-lines-section[b-17euo42ye2] {
    padding-top: 12px;
    margin-bottom: 10px;
}

.avc-lines-toolbar[b-17euo42ye2] {
    margin-bottom: 9px;
}

.avc-lines-scroll[b-17euo42ye2] {
    height: 310px;
    border: 1px solid #e5ece9;
    border-radius: 10px;
    background: #fff;
}

.avc-lines-table thead th[b-17euo42ye2] {
    background: #f6f9f8;
    padding: 10px 8px;
    border-bottom: 1px solid #e4ebe8;
}

.avc-lines-table td[b-17euo42ye2] {
    padding: 6px 8px;
}

.avc-icon-btn[b-17euo42ye2] {
    width: 36px;
    height: 36px;
    border-radius: 7px;
}

.avc-summary-strip[b-17euo42ye2] {
    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-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 10px 14px;
    border-right: 1px solid #dfeae6;
}

    .avc-summary-cell:last-child[b-17euo42ye2] {
        border-right: none;
    }

    .avc-summary-cell span[b-17euo42ye2] {
        font-size: 10px;
        color: #71817c;
    }

    .avc-summary-cell strong[b-17euo42ye2] {
        font-size: 14px;
        color: #17231f;
    }

    .avc-summary-cell small[b-17euo42ye2] {
        font-size: 10px;
    }

.avc-balanced-text[b-17euo42ye2] {
    color: #078060;
}

.avc-unbalanced-text[b-17euo42ye2] {
    color: #b45309;
}

.avc-context-panel[b-17euo42ye2] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    position: sticky;
    top: 10px;
}

.avc-context-card[b-17euo42ye2] {
    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-17euo42ye2] {
    background: linear-gradient(145deg, #effbf7, #fff);
    border-color: #ccebe1;
}

.avc-context-card-head[b-17euo42ye2] {
    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-17euo42ye2] {
        color: #0f9f81;
    }

.avc-context-empty[b-17euo42ye2] {
    font-size: 11px;
    color: #94a19d;
    line-height: 1.5;
}

.avc-context-ledger[b-17euo42ye2] {
    font-size: 11px;
    color: #667771;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-context-amount[b-17euo42ye2] {
    margin-top: 5px;
    font-size: 22px;
    line-height: 1.2;
    font-weight: 750;
    color: #078060;
}

    .avc-context-amount small[b-17euo42ye2] {
        font-size: 11px;
        font-weight: 700;
    }

.avc-context-caption[b-17euo42ye2] {
    margin-top: 5px;
    font-size: 10px;
    color: #84918d;
}

.avc-context-row[b-17euo42ye2] {
    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-17euo42ye2] {
        border-bottom: none;
    }

    .avc-context-row span[b-17euo42ye2] {
        color: #7b8984;
    }

    .avc-context-row strong[b-17euo42ye2] {
        color: #25332f;
        font-weight: 650;
        text-align: right;
    }

.avc-context-dot[b-17euo42ye2] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #cbd5d1;
}

    .avc-context-dot.is-active[b-17euo42ye2] {
        background: #16a37f;
        box-shadow: 0 0 0 4px rgba(22,163,127,.12);
    }

.avc-context-action[b-17euo42ye2] {
    display: grid;
    grid-template-columns: 34px 1fr auto;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: .12s ease;
}

    .avc-context-action:hover[b-17euo42ye2] {
        border-color: #8dd5c1;
        transform: translateY(-1px);
        box-shadow: 0 5px 16px rgba(15, 118, 92, .08);
    }

    .avc-context-action > span:nth-child(2)[b-17euo42ye2] {
        display: flex;
        flex-direction: column;
        gap: 3px;
        min-width: 0;
    }

    .avc-context-action strong[b-17euo42ye2] {
        font-size: 12px;
        color: #25332f;
    }

    .avc-context-action small[b-17euo42ye2] {
        font-size: 10px;
        color: #84918d;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .avc-context-action > i[b-17euo42ye2] {
        font-size: 10px;
        color: #96a39f;
    }

.avc-context-action-icon[b-17euo42ye2] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    color: #078060;
    background: #e8f8f3;
}

.avc-action-row-inner[b-17euo42ye2] {
    max-width: 1600px;
    justify-content: flex-end;
    padding: 9px 22px;
}

@media (max-width: 1180px) {
    .avc-entry-layout[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }

    .avc-context-panel[b-17euo42ye2] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        position: static;
    }
}

@media (max-width: 900px) {
    .avc-gfield-grid[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }

    .avc-summary-strip[b-17euo42ye2] {
        grid-template-columns: repeat(2, 1fr);
    }

    .avc-summary-cell:nth-child(2)[b-17euo42ye2] {
        border-right: none;
    }

    .avc-context-panel[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   GAINS Voucher Phase 2 — active row + shortcut help
   ===================================================== */
.avc-entry-action-spacer[b-17euo42ye2] {
    flex: 1 1 auto;
}

.avc-shortcut-help-btn[b-17euo42ye2] {
    margin-left: auto;
}

.avc-lines-table tbody tr[b-17euo42ye2] {
    transition: background-color .12s ease, box-shadow .12s ease;
}

    .avc-lines-table tbody tr.avc-row-active[b-17euo42ye2] {
        background: #effbf7;
        box-shadow: inset 3px 0 0 var(--avc-accent);
    }

        .avc-lines-table tbody tr.avc-row-active td[b-17euo42ye2] {
            border-bottom-color: #d7eee7;
        }

/* =====================================================
   ChallanEntry-specific glue on top of the ported avc-* layout
   ===================================================== */

/* .che-page (above) still supplies --che-* tokens used by the modals /
   toast / confirm; layout look comes from .avc-page. */
.avc-page.che-page[b-17euo42ye2] {
    padding: 10px;
    background: #f4f7f9;
    font-size: 13px;
}

/* Header text column. */
.che-gains-head-text[b-17euo42ye2] {
    flex: 1;
    min-width: 0;
}

/* Challan has 8 header fields → 4 per row (AccVoucher's 3-col grid is
   sized for its 3 fields). */
.avc-gfield-grid.che-gfield-grid[b-17euo42ye2] {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Narration + Address side by side under the field grid. */
.che-gfield-pair[b-17euo42ye2] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

/* Field labels: AccVoucher's sentence-case look instead of the old
   uppercase che-field label. */
.avc-gfield.che-field > span[b-17euo42ye2] {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 600;
    font-size: 10.5px;
    color: var(--avc-muted);
    margin-bottom: 3px;
}

/* Action row: report buttons left, Save/New/Delete right. */
/* Linked vouchers tab — hide VoucherCrossLink's "Account" category tab
   (always the 1st button in its .vcl-tabs strip: Account / Inventory /
   Order / PUR). Done from here via ::deep so the shared component and
   its other hosts (AccVoucher, ProductionEntry, POSEntry) are untouched. */
.che-crosslink-wrap[b-17euo42ye2]  .vcl-tabs > .db-summary-tab:first-child {
    display: none;
}

/* Tab icon (pen / eye / clock / paperclip / link) before the label. */
.che-tab-ico[b-17euo42ye2] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

/* Tab hotkey letter (V/U/O/E/L) underline. */
.che-tab-key[b-17euo42ye2] {
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

.che-action-spacer[b-17euo42ye2] {
    flex: 1 1 auto;
}

.avc-action-row .che-btn[b-17euo42ye2] {
    min-height: 38px;
    padding: 0 14px;
}

@media (max-width: 1180px) {
    .avc-gfield-grid.che-gfield-grid[b-17euo42ye2] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .avc-shell[b-17euo42ye2] {
        flex-direction: column;
        border-radius: 14px;
    }

    .avc-sidebar[b-17euo42ye2] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-sidebar-collapsed .avc-sidebar-hdr[b-17euo42ye2] {
        justify-content: flex-end;
    }

    .avc-gains-tabs[b-17euo42ye2] {
        overflow-x: auto;
    }

    .avc-action-row-inner[b-17euo42ye2] {
        flex-wrap: wrap;
        padding: 8px 12px;
    }

    .che-action-spacer[b-17euo42ye2] {
        display: none;
    }
}

@media (max-width: 600px) {
    .avc-gfield-grid.che-gfield-grid[b-17euo42ye2],
    .che-gfield-pair[b-17euo42ye2] {
        grid-template-columns: 1fr;
    }
}

/* =====================================================
   ProductionEntry glue on top of the standard avc-* shell
   ===================================================== */

/* Narration spans the whole field grid (4 cols → full row). */
.avc-gfield-grid.che-gfield-grid .che-field-full[b-17euo42ye2] {
    grid-column: 1 / -1;
}

/* Voucher card inside the avc body — no extra outer gap. */
.avc-gains-body > .che-card:first-child[b-17euo42ye2] {
    margin-top: 0;
}

/* Save / error message sits between the left buttons and the spacer. */
.avc-action-row .che-save-msg[b-17euo42ye2] {
    margin-left: 4px;
}
/* /Components/Pages/Transactions/Voucher/Inventory/SingleItemSalesVoucher.razor.rz.scp.css */
/* SingleItemSalesVoucher — same look as InvVoucher (copied from InvVoucher.razor.css,
   unchanged), plus the ssv-* additions at the end for the single-item entry line. */

/* =====================================================
   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-i3qako0u2w] {
    --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-i3qako0u2w] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 12px;
}

.iv-topbar-left[b-i3qako0u2w] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

.iv-status[b-i3qako0u2w] {
    font-size: 12px;
    font-weight: 600;
    color: var(--iv-accent-dark);
    min-height: 16px;
}

.iv-status-error[b-i3qako0u2w] {
    color: var(--iv-danger);
}

/* ---------- settings panel ---------- */
.iv-settings-panel[b-i3qako0u2w] {
    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-i3qako0u2w] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    color: var(--iv-muted);
    cursor: pointer;
}

.iv-check-col[b-i3qako0u2w] {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}

/* ---------- tabs ---------- */
.iv-tabs[b-i3qako0u2w] {
    display: flex;
    gap: 4px;
    margin-bottom: 12px;
    border-bottom: 2px solid var(--iv-border);
}

.iv-tab[b-i3qako0u2w] {
    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-i3qako0u2w] {
    color: var(--iv-accent-dark);
    border-color: var(--iv-accent);
}

.iv-tab-locked[b-i3qako0u2w] {
    color: var(--iv-muted-light);
    cursor: not-allowed;
}

/* ---------- layout ---------- */
.iv-panel-split[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 16px;
}

.iv-side[b-i3qako0u2w] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.iv-card[b-i3qako0u2w] {
    background: #fff;
    border: 1.5px solid var(--iv-border);
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 14px;
}

.iv-section-title[b-i3qako0u2w] {
    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-i3qako0u2w] {
    border-top: 4px solid var(--iv-accent);
    transition: border-color .15s, background .15s;
}

    .iv-header-card.iv-mode-sales[b-i3qako0u2w] {
        border-top-color: var(--iv-accent);
        background: linear-gradient(180deg, var(--iv-accent-bg) 0%, #fff 90px);
    }

    .iv-header-card.iv-mode-purchase[b-i3qako0u2w] {
        border-top-color: var(--iv-purchase);
        background: linear-gradient(180deg, var(--iv-purchase-bg) 0%, #fff 90px);
    }

.iv-vtype-strip[b-i3qako0u2w] {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
}

.iv-vtype-pill[b-i3qako0u2w] {
    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-i3qako0u2w] {
        background: var(--iv-accent-bg);
        border-color: var(--iv-accent);
        color: var(--iv-accent-dark);
    }

    .iv-vtype-pill.iv-active[data-vtype="purchase"][b-i3qako0u2w] {
        background: var(--iv-purchase-bg);
        border-color: var(--iv-purchase);
        color: var(--iv-purchase-dark);
    }

/* ---------- fields ---------- */
.iv-field-grid[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.iv-field[b-i3qako0u2w] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.iv-field-wide[b-i3qako0u2w] {
    grid-column: span 2;
}

.iv-field label[b-i3qako0u2w] {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--iv-muted);
}

/* Textbox / dropdown / textarea look (incl. read-only, grid cells
   .uf-cell and .uf-nospin) comes from the master .uf-input in
   wwwroot/CSS/masters-forms.css. */

.iv-mono[b-i3qako0u2w] {
    font-family: 'Courier New', monospace;
    font-weight: 600;
}

.iv-narration[b-i3qako0u2w] {
    min-height: 44px;
}

.iv-currency[b-i3qako0u2w] {
    width: 90px;
}

.iv-exchrate[b-i3qako0u2w] {
    width: 110px;
}

.iv-customer-add[b-i3qako0u2w] {
    display: flex;
    gap: 6px;
    align-items: flex-end;
}

.iv-inline-add[b-i3qako0u2w] {
    display: flex;
    gap: 6px;
    margin-top: 6px;
}

.iv-checks-row[b-i3qako0u2w] {
    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-i3qako0u2w] {
    background: #f9fafb;
    border: 0.5px solid var(--iv-border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-top: 12px;
}

.iv-inset-hdr[b-i3qako0u2w] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.iv-inset-title[b-i3qako0u2w] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--iv-text);
}

    .iv-inset-title i[b-i3qako0u2w] {
        font-size: 16px;
        color: var(--iv-accent);
    }

.iv-pill-group[b-i3qako0u2w] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.iv-pill[b-i3qako0u2w] {
    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-i3qako0u2w] {
        background: var(--iv-accent);
        color: #fff;
        border-color: var(--iv-accent);
    }

    .iv-pill:disabled[b-i3qako0u2w] {
        cursor: not-allowed;
        opacity: 0.55;
    }

/* ---------- autocomplete ---------- */
.iv-auto[b-i3qako0u2w] {
    position: relative;
}

.iv-suggest[b-i3qako0u2w] {
    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-i3qako0u2w] {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 12px;
    cursor: pointer;
    font-size: 12.5px;
}

    .iv-suggest-row:hover[b-i3qako0u2w] {
        background: var(--iv-accent-bg);
    }

    .iv-suggest-row small[b-i3qako0u2w] {
        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-i3qako0u2w] .lga-wrap, [b-i3qako0u2w] .ia-wrap {
    position: relative;
    display: block;
}

[b-i3qako0u2w] .lga-spin, [b-i3qako0u2w] .ia-spin {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--iv-muted-light);
    font-size: 12px;
}

[b-i3qako0u2w] .lga-suggest, [b-i3qako0u2w] .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-i3qako0u2w] .lga-suggest li, [b-i3qako0u2w] .ia-suggest li {
        padding: 8px 10px;
        cursor: pointer;
        font-size: 12.5px;
        border-radius: 6px;
    }

        [b-i3qako0u2w] .lga-suggest li:hover, [b-i3qako0u2w] .ia-suggest li:hover,
        [b-i3qako0u2w] .lga-suggest li.active, [b-i3qako0u2w] .ia-suggest li.active {
            background: var(--iv-accent-bg);
        }

[b-i3qako0u2w] .lga-empty, [b-i3qako0u2w] .ia-empty {
    color: var(--iv-muted-light);
    cursor: default;
}

[b-i3qako0u2w] .lga-name, [b-i3qako0u2w] .ia-name {
    font-size: 12.5px;
}

/* ---------- tables ---------- */
.iv-table-wrap[b-i3qako0u2w] {
    overflow-x: auto;
}

.iv-table[b-i3qako0u2w] {
    width: 100%;
    border-collapse: collapse;
}

    .iv-table thead th[b-i3qako0u2w] {
        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-i3qako0u2w] {
            text-align: right;
        }

    .iv-table tbody td[b-i3qako0u2w] {
        padding: 6px 8px;
        border-bottom: 1px solid var(--iv-border);
        vertical-align: middle;
        font-size: 12px;
    }

    .iv-table tfoot td[b-i3qako0u2w] {
        background: #f8fafc;
        font-weight: 700;
        padding: 8px;
        font-size: 11.5px;
    }

.text-right[b-i3qako0u2w] {
    text-align: right;
}

.iv-bold[b-i3qako0u2w] {
    font-weight: 700;
    color: var(--iv-accent-dark);
}

.iv-sub-line[b-i3qako0u2w] {
    font-size: 10.5px;
    color: var(--iv-muted-light);
    margin-top: 2px;
}

.iv-row-clickable[b-i3qako0u2w] {
    cursor: pointer;
}

    .iv-row-clickable:hover[b-i3qako0u2w] {
        background: var(--iv-accent-bg);
    }

.iv-row-actions[b-i3qako0u2w] {
    display: flex;
    gap: 4px;
    justify-content: center;
}

.iv-icon-btn[b-i3qako0u2w] {
    border: none;
    background: none;
    color: var(--iv-muted);
    cursor: pointer;
    font-size: 13px;
    padding: 3px 5px;
}

    .iv-icon-btn:hover[b-i3qako0u2w] {
        color: var(--iv-accent-dark);
    }

.iv-icon-danger:hover[b-i3qako0u2w] {
    color: var(--iv-danger);
}


.iv-side-table[b-i3qako0u2w] {
    font-size: 12px;
}

.iv-muted[b-i3qako0u2w] {
    color: var(--iv-muted-light);
}

.iv-muted-sm[b-i3qako0u2w] {
    font-size: 11px;
    color: var(--iv-muted-light);
}

.iv-neg[b-i3qako0u2w] {
    color: var(--iv-danger);
}

.iv-add-row-btn[b-i3qako0u2w] {
    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-i3qako0u2w] {
        background: var(--iv-accent-bg);
        border-color: var(--iv-accent);
    }

/* Add item + "Populate from" Voucher / Order — one row under the grid,
   left-aligned (same as ChallanEntry's che-grid-actions-below). */
.iv-grid-actions-below[b-i3qako0u2w] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 10px 0 2px;
}

    .iv-grid-actions-below .iv-add-row-btn[b-i3qako0u2w] {
        margin: 0;
    }

.iv-populate-label[b-i3qako0u2w] {
    margin-left: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--iv-muted);
    white-space: nowrap;
}

.iv-populate-btn[b-i3qako0u2w] {
    border-style: solid;
    padding: 7px 12px;
}

.iv-three-col[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

/* ---------- totals ---------- */
.iv-totals-wrap[b-i3qako0u2w] {
    display: flex;
    justify-content: flex-end;
    margin-top: 12px;
}

.iv-totals-card[b-i3qako0u2w] {
    width: 340px;
    background: #f8fafc;
    border: 1.5px solid var(--iv-border);
    border-radius: 10px;
    padding: 14px 18px;
}

.iv-totals-line[b-i3qako0u2w] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 0;
    font-size: 12.5px;
}

.iv-totals-input[b-i3qako0u2w] {
    width: 100px;
    text-align: right;
    height: 30px;
}

.iv-totals-grand[b-i3qako0u2w] {
    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-i3qako0u2w] {
    background: #f8fafc;
    border: 1px solid var(--iv-border);
    border-radius: 8px;
    padding: 10px 12px;
    margin-top: 10px;
}

.iv-cb[b-i3qako0u2w] {
    font-weight: 700;
    font-size: 13px;
    color: var(--iv-accent-dark);
}

.iv-cb-danger[b-i3qako0u2w] {
    color: var(--iv-danger);
}

.iv-party-line[b-i3qako0u2w] {
    font-size: 11.5px;
    color: var(--iv-muted);
    margin-top: 3px;
}

.iv-btn-row[b-i3qako0u2w] {
    display: flex;
    gap: 8px;
    margin-top: 10px;
}

    .iv-btn-row .uf-btn[b-i3qako0u2w] {
        flex: 1;
        justify-content: center;
    }

.iv-mini-list[b-i3qako0u2w] {
    max-height: 220px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.iv-mini-row[b-i3qako0u2w] {
    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-i3qako0u2w] {
    font-size: 9.5px;
    text-transform: uppercase;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 5px;
    margin-right: 6px;
}

    .iv-tag.sales[b-i3qako0u2w] {
        background: var(--iv-accent-bg);
        color: var(--iv-accent-dark);
    }

    .iv-tag.purchase[b-i3qako0u2w] {
        background: var(--iv-purchase-bg);
        color: var(--iv-purchase-dark);
    }

.iv-link-btn[b-i3qako0u2w] {
    border: none;
    background: none;
    color: var(--iv-muted);
    cursor: pointer;
    font-size: 11px;
    text-decoration: underline;
}

.iv-empty-note[b-i3qako0u2w] {
    font-size: 11.5px;
    color: var(--iv-muted-light);
    padding: 8px 2px;
}

.iv-lock-note[b-i3qako0u2w] {
    padding: 30px;
    text-align: center;
    color: var(--iv-muted-light);
    font-size: 13px;
}

/* ---------- view tab ---------- */
.iv-view-grid[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px 24px;
    margin-bottom: 16px;
}

.iv-view-item[b-i3qako0u2w] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 12.5px;
}

    .iv-view-item span[b-i3qako0u2w] {
        font-size: 10px;
        text-transform: uppercase;
        color: var(--iv-muted-light);
        font-weight: 700;
    }

/* ---------- attachments / links ---------- */
.iv-attach-drop[b-i3qako0u2w] {
    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-i3qako0u2w] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.iv-attach-row[b-i3qako0u2w] {
    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-i3qako0u2w] {
        color: var(--iv-accent-dark);
        text-decoration: none;
        font-weight: 600;
        margin-right: 8px;
    }

.iv-link-form[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr auto;
    gap: 8px;
    margin-bottom: 14px;
}

/* ---------- modals ---------- */
.iv-overlay[b-i3qako0u2w] {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,.5);
    z-index: 100;
}

.iv-modal[b-i3qako0u2w] {
    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-i3qako0u2w] {
    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-i3qako0u2w] {
    padding: 18px 22px;
}

.iv-modal-grid[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.iv-modal-linetotal[b-i3qako0u2w] {
    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-i3qako0u2w] {
    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 ----------
   Matches AccVoucher.razor.css's own .avc-action-row/.avc-action-row-inner
   1:1 (right-aligned buttons, 1600px cap, 9px/22px padding) instead of the
   old left-aligned 1180px bar. */
.iv-footer-bar[b-i3qako0u2w] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--iv-border);
    box-shadow: 0 -6px 20px rgba(15,23,42,.08);
}

.iv-footer-inner[b-i3qako0u2w] {
    width: 100%;
    max-width: 1600px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    padding: 9px 22px;
}

@media print {
    .iv-topbar[b-i3qako0u2w], .iv-settings-panel[b-i3qako0u2w], .iv-tabs[b-i3qako0u2w], .iv-side[b-i3qako0u2w], .iv-add-row-btn[b-i3qako0u2w], .iv-footer-bar[b-i3qako0u2w] {
        display: none !important;
    }

    .iv-panel-split[b-i3qako0u2w] {
        grid-template-columns: 1fr;
    }

    .iv-card[b-i3qako0u2w] {
        border: none;
        box-shadow: none;
    }
}

@media (max-width: 900px) {
    .iv-field-grid[b-i3qako0u2w] {
        grid-template-columns: repeat(2, 1fr);
    }

    .iv-panel-split[b-i3qako0u2w] {
        grid-template-columns: 1fr;
    }

    .iv-settings-panel[b-i3qako0u2w] {
        grid-template-columns: repeat(2, 1fr);
    }

    .iv-three-col[b-i3qako0u2w] {
        grid-template-columns: 1fr;
    }
}

/* View tab report card - same width rules as VoucherReportPopup's .vrp-modal
   (+ .vrp-body padding) so the saved voucher reads identically in both. */
.iv-view-report[b-i3qako0u2w] {
    width: max-content;
    min-width: 420px;
    max-width: min(90vw, 850px);
    overflow-x: auto;
    padding: 14px 16px;
}

/* ---------- Audit tab ----------
   Sizes the tab (not the shared VoucherAudit component, not the form) to
   what AccVoucher gives it: .avc-page 16px side padding, .avc-shell max
   1600px, minus the 230px Recent-vouchers sidebar and .avc-gains-body's
   14px/18px padding - so the audit content has the same width, and the
   same breathing room from the edges, as in AccVoucher. */
.iv-audit-tab[b-i3qako0u2w] {
    max-width: calc(min(100vw - 32px, 1600px) - 266px);
    margin: 0 auto;
    padding: 14px 18px;
    background: #fff;
    border: 0.5px solid #e5e7eb;
    border-radius: 14px;
    box-sizing: border-box;
}

/* =====================================================
   Shell — same layout as ChallanEntry / AccVoucher: left collapsible
   Recent vouchers sidebar, dark header, underline tabs. avc-* rules copied
   from ChallanEntry.razor.css's ported AccVoucher section (only the
   shell / sidebar / recent card / header / tabs / body parts). Blazor CSS
   isolation scopes them to this page.
   ===================================================== */

.avc-page[b-i3qako0u2w] {
    --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;
}

.avc-shell[b-i3qako0u2w] {
    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);
}

.avc-sidebar[b-i3qako0u2w] {
    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-i3qako0u2w] {
    width: 56px;
}

.avc-sidebar-hdr[b-i3qako0u2w] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-label[b-i3qako0u2w] {
    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-i3qako0u2w] {
    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-i3qako0u2w] {
        color: var(--avc-accent);
        border-color: var(--avc-accent);
    }

.avc-recent-list[b-i3qako0u2w] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent) #f3f4f6;
}

.avc-recent-list[b-i3qako0u2w]::-webkit-scrollbar {
        width: 4px;
    }

.avc-recent-list[b-i3qako0u2w]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

.avc-recent-list[b-i3qako0u2w]::-webkit-scrollbar-thumb {
        background: var(--avc-accent);
        border-radius: 4px;
    }

.avc-recent-empty[b-i3qako0u2w] {
    color: var(--avc-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-card[b-i3qako0u2w] {
    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-i3qako0u2w],
    .avc-recent-card.active[b-i3qako0u2w] {
        border-color: var(--avc-accent);
        background: var(--avc-accent-bg);
    }

.avc-avatar[b-i3qako0u2w] {
    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-i3qako0u2w] {
    background: var(--avc-accent-bg);
    border: 0.5px solid var(--avc-accent-border);
    color: #065f46;
}

.avc-avatar-solid[b-i3qako0u2w] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--avc-accent);
    color: #fff;
    font-size: 14px;
}

.avc-recent-main[b-i3qako0u2w] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-i3qako0u2w] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-i3qako0u2w] {
    font-size: 10px;
    color: var(--avc-muted-light);
}

.avc-recent-amt[b-i3qako0u2w] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text);
    white-space: nowrap;
}

.avc-main[b-i3qako0u2w] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.avc-gains-header[b-i3qako0u2w] {
    background: var(--avc-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.avc-gains-icon[b-i3qako0u2w] {
    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-i3qako0u2w] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent);
    margin-bottom: 4px;
}

.avc-gains-title[b-i3qako0u2w] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.avc-gains-vid[b-i3qako0u2w] {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, .6);
}

/* Footer QR / Barcode → batch label print (Purchase, saved only) */
.iv-label-btn[b-i3qako0u2w] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

    .iv-label-btn img[b-i3qako0u2w] {
        width: 16px;
        height: 16px;
        display: block;
    }

.avc-gains-tabs[b-i3qako0u2w] {
    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-i3qako0u2w] {
    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-i3qako0u2w] {
        color: var(--avc-header-bg);
    }

.avc-gains-tab.active[b-i3qako0u2w] {
        color: var(--avc-header-bg);
        border-bottom-color: var(--avc-accent);
    }

.avc-gains-body[b-i3qako0u2w] {
    padding: 1.25rem 2rem 86px;
    flex: 1 0 auto;
}

.avc-page[b-i3qako0u2w] {
    padding: 10px;
    background: #f4f7f9;
}

.avc-shell[b-i3qako0u2w] {
    max-width: 1600px;
    min-height: calc(100vh - 20px);
    border-radius: 14px;
    box-shadow: 0 10px 35px rgba(15, 23, 42, .06);
}

.avc-sidebar[b-i3qako0u2w] {
    width: 230px;
    background: #fbfcfd;
}

.avc-sidebar-collapsed[b-i3qako0u2w] {
    width: 52px;
}

.avc-gains-header[b-i3qako0u2w] {
    min-height: 70px;
    padding: 14px 22px;
    background: linear-gradient(135deg, #063c31 0%, #0a2a1e 100%);
}

.avc-gains-icon[b-i3qako0u2w] {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 18px;
}

.avc-gains-title[b-i3qako0u2w] {
    font-size: 19px;
}

.avc-gains-eyebrow[b-i3qako0u2w] {
    margin-bottom: 2px;
}

.avc-gains-tabs[b-i3qako0u2w] {
    padding: 0 20px;
    background: #fff;
}

.avc-gains-tab[b-i3qako0u2w] {
    padding: 11px 14px;
    font-weight: 500;
}

.avc-gains-body[b-i3qako0u2w] {
    padding: 14px 18px 88px;
}

/* ── InvVoucher glue ── */
.che-gains-head-text[b-i3qako0u2w] {
    flex: 1;
    min-width: 0;
}

/* Tab hotkey letter (V/E/U/L) underline — same class/look as ChallanEntry. */
.che-tab-key[b-i3qako0u2w] {
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

.che-tab-ico[b-i3qako0u2w] {
    margin-right: 6px;
    font-size: 12px;
    opacity: .85;
}

@media (max-width: 900px) {
    .avc-shell[b-i3qako0u2w] {
        flex-direction: column;
    }

    .avc-sidebar[b-i3qako0u2w] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border);
    }

    .avc-gains-tabs[b-i3qako0u2w] {
        overflow-x: auto;
    }
}

@media print {
    .avc-sidebar[b-i3qako0u2w], .avc-gains-header[b-i3qako0u2w], .avc-gains-tabs[b-i3qako0u2w] {
        display: none !important;
    }

    .avc-shell[b-i3qako0u2w] {
        border: none;
        box-shadow: none;
    }
}


/* ═══ SingleItemSalesVoucher additions ═══ */

/* One-line item entry (legacy txtItem … txtFinalAmt): item takes the free width,
   numeric fields stay compact, buttons sit at the end of the row. */
.ssv-entry[b-i3qako0u2w] {
    display: grid;
    grid-template-columns: minmax(220px, 2.4fr) repeat(auto-fit, minmax(84px, 1fr));
    gap: 10px;
    align-items: end;
}

    .ssv-entry .iv-field[b-i3qako0u2w] {
        min-width: 0;
    }

.ssv-entry-btns[b-i3qako0u2w] {
    display: flex;
    gap: 6px;
    align-items: center;
}

    .ssv-entry-btns .uf-btn[b-i3qako0u2w] {
        white-space: nowrap;
    }

.ssv-item-info[b-i3qako0u2w] {
    margin-top: 6px;
}

.ssv-autowt[b-i3qako0u2w] {
    margin-left: auto;
    font-size: 12px;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
}

.ssv-req[b-i3qako0u2w] {
    color: #c0392b;
}

.ssv-row-edit td[b-i3qako0u2w] {
    background: var(--iv-accent-bg);
}

.ssv-scroll[b-i3qako0u2w] {
    max-height: 260px;
    overflow-y: auto;
}

.ssv-lock[b-i3qako0u2w] {
    margin-left: 10px;
    font-size: 12px;
    color: #c0392b;
}

@media (max-width: 900px) {
    .ssv-entry[b-i3qako0u2w] {
        grid-template-columns: 1fr 1fr;
    }

    .ssv-entry .ssv-item[b-i3qako0u2w] {
        grid-column: 1 / -1;
    }
}

/* Freight + TDS/TCS side by side */
.ssv-two-col[b-i3qako0u2w] {
    grid-template-columns: repeat(2, 1fr);
    margin-top: 14px;
}

.ssv-tcs-grid[b-i3qako0u2w] {
    grid-template-columns: repeat(2, 1fr);
}

/* Small popups (sales person, shortcuts) — width cap like InvVoucher's discount popup */
.iv-modal-sm[b-i3qako0u2w] {
    max-width: 440px;
}

.ssv-pick[b-i3qako0u2w] {
    cursor: pointer;
}

    .ssv-pick input[b-i3qako0u2w] {
        margin-right: 6px;
    }

.ssv-trip[b-i3qako0u2w] {
    margin-top: 12px;
}

.ssv-help-btn[b-i3qako0u2w] {
    margin-left: auto;
    font-size: 16px;
}

@media (max-width: 900px) {
    .ssv-two-col[b-i3qako0u2w],
    .ssv-tcs-grid[b-i3qako0u2w] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Transactions/Voucher/Inventory/StockTransferVoucher.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-qmrf9ukg78] {
    --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-qmrf9ukg78] {
    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-qmrf9ukg78] .lga-wrap {
    position: relative;
    display: block;
}

[b-qmrf9ukg78] .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-qmrf9ukg78] .lga-suggest-hidden {
    visibility: hidden;
}

[b-qmrf9ukg78] .lga-suggest li,
[b-qmrf9ukg78] .lga-empty {
    padding: 8px 12px;
    font-size: 12.5px;
    color: var(--oe-text);
}

[b-qmrf9ukg78] .lga-suggest li {
    cursor: pointer;
}

    [b-qmrf9ukg78] .lga-suggest li:hover,
    [b-qmrf9ukg78] .lga-suggest li.active {
        background: var(--oe-accent-bg);
    }

[b-qmrf9ukg78] .lga-empty {
    color: var(--oe-muted-light);
    cursor: default;
}

[b-qmrf9ukg78] .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-qmrf9ukg78] {
    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-qmrf9ukg78] {
    width: 56px;
}

.oe-sidebar-hdr[b-qmrf9ukg78] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.oe-sidebar-label[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    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-qmrf9ukg78] {
        color: var(--oe-accent);
        border-color: var(--oe-accent);
    }

.oe-recent-list[b-qmrf9ukg78] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-border) transparent;
}

.oe-recent-empty[b-qmrf9ukg78] {
    color: var(--oe-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.oe-recent-card[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
        border-color: var(--oe-accent);
        background: var(--oe-accent-bg);
    }

    .oe-recent-card.active[b-qmrf9ukg78] {
        border-color: var(--oe-accent);
        background: var(--oe-accent-bg);
    }

.oe-avatar[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    background: var(--oe-accent-bg);
    border: 0.5px solid var(--oe-accent-border);
    color: #065f46;
}

.oe-recent-main[b-qmrf9ukg78] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.oe-recent-vno[b-qmrf9ukg78] {
    font-size: 12px;
    font-weight: 600;
    color: var(--oe-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.oe-recent-sub[b-qmrf9ukg78] {
    font-size: 10px;
    color: var(--oe-muted-light);
}

/* ── Main column ── */
.oe-main[b-qmrf9ukg78] {
    flex: 1;
    min-width: 0;
}

.oe-gains-header[b-qmrf9ukg78] {
    background: var(--oe-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
}

.oe-gains-icon[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--oe-accent);
    margin-bottom: 4px;
}

.oe-gains-title[b-qmrf9ukg78] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.oe-gains-vid[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    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-qmrf9ukg78] {
    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-qmrf9ukg78] {
        color: var(--oe-header-bg);
    }

    .oe-gains-tab.active[b-qmrf9ukg78] {
        color: var(--oe-header-bg);
        border-bottom-color: var(--oe-accent);
    }

.oe-gains-body[b-qmrf9ukg78] {
    padding: 1.75rem 2rem;
}

.oe-empty-block[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 48px;
    row-gap: 12px;
    padding: 16px 20px;
    border: 1px solid var(--oe-border);
    border-radius: 10px;
    background: #fff;
    margin-bottom: 20px;
}

    /* Vertical divider between the two field columns — runs the full
       card height (checks row included, since .oe-checks sits in the grid). */
    .oe-gfield-grid[b-qmrf9ukg78]::before {
        content: "";
        position: absolute;
        top: 12px;
        bottom: 12px;
        left: 50%;
        width: 1px;
        background: var(--oe-border);
    }

/* Label left, control right (was label stacked above control). */
.oe-gfield[b-qmrf9ukg78] {
    display: grid;
    grid-template-columns: 100px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
}

    .oe-gfield span[b-qmrf9ukg78] {
        /* Label look = MLedgerEdit's .le-row > label */
        display: block;
        font-size: 13px;
        font-weight: 400;
        color: #334155;
        margin-bottom: 0;
    }

    /* Dropdowns (Status / VType + DepotDropdown / SalesRepDropdown, which
   render their own <select> — hence ::deep) — the shared .uf-input look
   strips the native arrow (appearance:none), so draw a chevron back in
   (slate #334155, matches the label colour). */
    .oe-gfield[b-qmrf9ukg78]  select {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        padding-right: 34px !important;
        background-color: #fff;
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' stroke='%23334155' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
        background-repeat: no-repeat;
        background-position: right 12px center;
        background-size: 12px 8px;
        cursor: pointer;
    }

        .oe-gfield[b-qmrf9ukg78]  select:disabled {
            cursor: default;
            opacity: .7;
        }

        .oe-gfield[b-qmrf9ukg78]  select::-ms-expand {
            display: none;
        }

/* Party / Customer — search icon box on the right edge of the input
   (decorative; the autofill itself does the searching as you type). */
.oe-search-right[b-qmrf9ukg78] {
    position: relative;
}

    .oe-search-right[b-qmrf9ukg78]  input {
        padding-right: 42px;
    }

    .oe-search-right > i[b-qmrf9ukg78] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-left: 1px solid var(--oe-border);
        color: #475569;
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

    /* Customer: "+" add-customer button in the same right-edge box */
    .oe-search-right > .oe-addcust-btn[b-qmrf9ukg78] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        border: none;
        border-left: 1px solid var(--oe-border);
        border-radius: 0 4px 4px 0;
        background: #f8fafc;
        color: #0f766e;
        font-size: 13px;
        cursor: pointer;
        z-index: 1;
        transition: background .12s, color .12s;
    }

        .oe-search-right > .oe-addcust-btn:hover[b-qmrf9ukg78] {
            background: #e6f7f3;
            color: #0b5f58;
        }

        .oe-search-right > .oe-addcust-btn:focus-visible[b-qmrf9ukg78] {
            outline: 2px solid #1ab99a;
            outline-offset: -2px;
        }

/* Item search — magnifier inside the input, on the left. */
.oe-search-left[b-qmrf9ukg78] {
    position: relative;
}

    .oe-search-left[b-qmrf9ukg78]  input {
        padding-left: 32px;
    }

    .oe-search-left > i[b-qmrf9ukg78] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--oe-muted-light);
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

.oe-sr-only[b-qmrf9ukg78] {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Textboxes / dropdowns — incl. the ones rendered by DepotDropdown,
   SalesRepDropdown, LedgerAutofill, OrderCustomerAutofill and
   InvItemAutofill via InputClass="uf-input" — use the master .uf-input look
   from wwwroot/CSS/masters-forms.css. */


[b-qmrf9ukg78] .gdp-wrap {
    width: 100%;
    height: 32px;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
    box-sizing: border-box;
}

    [b-qmrf9ukg78] .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, .12) !important;
    }

.oe-customer-row[b-qmrf9ukg78] {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .oe-customer-row > *:first-child[b-qmrf9ukg78] {
        flex: 1;
    }

.oe-inline-add[b-qmrf9ukg78] {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

    .oe-inline-add .uf-input[b-qmrf9ukg78] {
        flex: 1;
    }

/* ── Inset Quotation? / Rate inclusive of GST? blocks — same as AccVoucher's
   "TDS applicable?" inset block ── */
.oe-inset-block[b-qmrf9ukg78] {
    background: #f9fafb;
    border: 0.5px solid var(--oe-border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 16px;
}

.oe-inset-hdr[b-qmrf9ukg78] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.oe-inset-title[b-qmrf9ukg78] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

    .oe-inset-title i[b-qmrf9ukg78] {
        font-size: 16px;
        color: var(--oe-accent);
    }

.oe-pill-group[b-qmrf9ukg78] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.oe-pill[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
        background: var(--oe-accent);
        color: #fff;
        border-color: var(--oe-accent);
    }

/* ── Item / expense line grids ── */
.oe-lines-section[b-qmrf9ukg78] {
    border-top: 0.5px solid var(--oe-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.oe-lines-toolbar[b-qmrf9ukg78] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.oe-lines-title[b-qmrf9ukg78] {
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

.oe-grid-toolbar-row[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    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-qmrf9ukg78] {
    max-height: 280px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-accent-border) transparent;
}

    .oe-grid-wrap-scroll[b-qmrf9ukg78]::-webkit-scrollbar {
        width: 8px;
    }

    .oe-grid-wrap-scroll[b-qmrf9ukg78]::-webkit-scrollbar-thumb {
        background: var(--oe-accent-border);
        border-radius: 8px;
    }

    .oe-grid-wrap-scroll thead th[b-qmrf9ukg78] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

.oe-grid-table[b-qmrf9ukg78] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .oe-grid-table th[b-qmrf9ukg78] {
        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-qmrf9ukg78] {
        padding: 6px 8px;
        border: 1px solid var(--oe-border);
        color: var(--oe-text);
    }

    .oe-grid-table tbody tr:nth-child(even)[b-qmrf9ukg78] {
        background: #f9fafb;
    }

.oe-grid-navy th[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
    cursor: pointer;
}

    .oe-items-table tbody tr:hover[b-qmrf9ukg78] {
        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-qmrf9ukg78],
    .oe-items-table tbody tr.oe-row-editing:hover[b-qmrf9ukg78] {
        background: #fff3cd;
    }

.oe-grid-muted th[b-qmrf9ukg78] {
    background: #4b5563;
}

.oe-grid-total-row td[b-qmrf9ukg78] {
    color: #fff;
    font-weight: 700;
    border-color: rgba(255, 255, 255, .18);
}

.oe-grid-navy .oe-grid-total-row td[b-qmrf9ukg78] {
    background: #306B9C;
}

.oe-grid-muted .oe-grid-total-row td[b-qmrf9ukg78] {
    background: #4b5563;
}

/* ── 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. ── */
/* Taxes (left) + Order total card (right). */
.oe-bottom-grid[b-qmrf9ukg78] {
    display: grid;
    grid-template-columns: minmax(0, 1.75fr) minmax(260px, 1fr);
    gap: 24px;
    align-items: start;
    margin: 4px 0 20px;
}

.oe-tax-col[b-qmrf9ukg78] {
    min-width: 0;
}

.oe-tax-caption[b-qmrf9ukg78] {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #334155;
    margin-bottom: 6px;
}

.oe-total-card[b-qmrf9ukg78] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 14px 14px 10px;
    margin-top: 0; /* TAXES caption removed — card top now level with the sub-tabs */
}

.oe-total-title[b-qmrf9ukg78] {
    font-size: 15px;
    font-weight: 700;
    color: var(--oe-text);
    margin-bottom: 10px;
}

.oe-grandtotal-bar[b-qmrf9ukg78] {
    width: 100%;
    border: 1px solid var(--oe-border);
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}

.oe-grandtotal-row[b-qmrf9ukg78] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    font-size: 13px;
    color: #334155;
    border-bottom: 1px solid var(--oe-border-soft);
}

    .oe-grandtotal-row span:last-child[b-qmrf9ukg78] {
        color: var(--oe-text);
        font-variant-numeric: tabular-nums;
    }

    .oe-grandtotal-row:last-child[b-qmrf9ukg78] {
        border-bottom: none;
    }

.oe-total-grand[b-qmrf9ukg78] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 14px 14px 4px;
    font-weight: 700;
    color: var(--oe-accent-dark);
}

    .oe-total-grand span:first-child[b-qmrf9ukg78] {
        font-size: 16px;
    }

    .oe-total-grand span:last-child[b-qmrf9ukg78] {
        font-size: 22px;
        font-variant-numeric: tabular-nums;
    }

/* ── 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-qmrf9ukg78] {
    display: flex;
    margin-bottom: 12px;
}

.oe-subtab[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
        border-radius: 8px 0 0 8px;
    }

    .oe-subtab:last-child[b-qmrf9ukg78] {
        border-radius: 0 8px 8px 0;
        border-left: none;
    }

    .oe-subtab:hover[b-qmrf9ukg78] {
        color: var(--oe-accent-dark);
    }

    .oe-subtab.active[b-qmrf9ukg78] {
        background: var(--oe-accent-dark);
        border-color: var(--oe-accent-dark);
        color: #fff;
    }


.oe-cell-static[b-qmrf9ukg78] {
    font-weight: 600;
    color: var(--oe-text);
    padding-right: 10px !important;
}

.oe-empty-cell[b-qmrf9ukg78] {
    text-align: center;
    color: var(--oe-muted-light);
    padding: 20px !important;
}

.oe-icon-btn[b-qmrf9ukg78] {
    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-qmrf9ukg78] {
        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. ── */
/* Item details card — light green panel around quick-add row + grid. */
.oe-items-card[b-qmrf9ukg78] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 12px 14px 4px;
}

    .oe-items-card .oe-grid-wrap[b-qmrf9ukg78] {
        background: #fff;
    }

/* Title | Search item | Add | Quantity | Rate | Amount — one row. */
.oe-quickadd-row[b-qmrf9ukg78] {
    display: grid;
    grid-template-columns: auto minmax(180px, 2fr) auto repeat(3, minmax(90px, 1fr));
    gap: 10px;
    align-items: end;
    margin-bottom: 12px;
}

.oe-quickadd-title[b-qmrf9ukg78] {
    font-size: 16px;
    font-weight: 700;
    color: var(--oe-text);
    line-height: 34px;
    margin-right: 28px;
    white-space: nowrap;
}

.oe-quickadd-field[b-qmrf9ukg78] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    .oe-quickadd-field span[b-qmrf9ukg78] {
        font-size: 13px;
        font-weight: 400;
        color: #334155;
    }

/* 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-qmrf9ukg78] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.oe-quickadd-add-btn[b-qmrf9ukg78] {
    height: 34px;
    padding: 0 16px;
    flex-shrink: 0;
    border: none;
    border-radius: 7px;
    background: var(--oe-accent-dark);
    color: #fff;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(14, 163, 132, .25);
}

    .oe-quickadd-add-btn i[b-qmrf9ukg78] {
        font-size: 11px;
    }

    .oe-quickadd-add-btn:hover[b-qmrf9ukg78] {
        background: #0b8a70;
    }

/* InvItemAutofill (Item field) gets InputClass="uf-input", so it uses the
   master .uf-input look like every other field on this row (its own
   fallback style skips .uf-input). */

/* 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(). */

/* Save / New order buttons use the shared uf-btn classes from
   wwwroot/CSS/masters-forms.css (uf-btn-save / uf-btn-new). */

.oe-btn-sm[b-qmrf9ukg78] {
    height: 32px;
    padding: 0 10px;
    font-size: 12px;
}

/* ---------- fixed footer ----------
   Real position:fixed bar pinned to the bottom of the viewport — matches
   AccVoucher.razor.css's own .avc-action-row/.avc-action-row-inner 1:1
   (right-aligned buttons, 1600px cap, 9px/22px padding) instead of the old
   centered 1300px bar, so Save/New order lines up the same way Save/New
   voucher does on AccVoucher. */
.oe-footer-bar[b-qmrf9ukg78] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--oe-border);
    box-shadow: 0 -6px 20px rgba(15, 23, 42, .08);
}

.oe-footer-inner[b-qmrf9ukg78] {
    width: 100%;
    max-width: 1600px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 9px 22px;
}

.text-end[b-qmrf9ukg78] {
    text-align: right;
}

.text-center[b-qmrf9ukg78] {
    text-align: center;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .oe-shell[b-qmrf9ukg78] {
        flex-direction: column;
        border-radius: 14px;
    }

    .oe-sidebar[b-qmrf9ukg78] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--oe-border);
    }

    .oe-sidebar-collapsed .oe-sidebar-hdr[b-qmrf9ukg78] {
        justify-content: flex-end;
    }

    .oe-gfield-grid[b-qmrf9ukg78] {
        grid-template-columns: 1fr;
        padding: 14px;
    }

        .oe-gfield-grid[b-qmrf9ukg78]::before {
            display: none;
        }

    .oe-gfield[b-qmrf9ukg78] {
        grid-template-columns: 90px minmax(0, 1fr);
    }

    .oe-checks[b-qmrf9ukg78] {
        padding-left: 0;
    }

    .oe-quickadd-row[b-qmrf9ukg78] {
        grid-template-columns: 1fr auto;
    }

    .oe-quickadd-title[b-qmrf9ukg78] {
        grid-column: 1 / -1;
        line-height: 1.3;
    }

    .oe-bottom-grid[b-qmrf9ukg78] {
        grid-template-columns: 1fr;
    }

    .oe-total-card[b-qmrf9ukg78] {
        margin-top: 0;
    }

    .oe-gains-body[b-qmrf9ukg78] {
        padding: 1.25rem;
    }

    .oe-gains-tabs[b-qmrf9ukg78] {
        overflow-x: auto;
        overflow-y: hidden;
    }
}

/* Quotation / Rate-inclusive flags — label + checkbox look from the master
   .uf-chk / checkbox rules in wwwroot/CSS/masters-forms.css. */
.oe-checks[b-qmrf9ukg78] {
    grid-column: 1;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 24px;
    padding-left: 110px; /* label col 100px + gap 10px -> lines up under the inputs */
}

.oe-chk[b-qmrf9ukg78] {
    /* label look from the master .uf-chk */
    width: fit-content;

}

/* =====================================================
   Stock Transfer Voucher additions (StockTransferVoucher.razor) — rest of
   this file is OrderEntry / JobWorkOrder .razor.css as-is, so the page
   shares the same voucher UI.
   ===================================================== */

/* Narration spans both columns of the field grid. */
.stv-gfield-wide[b-qmrf9ukg78] {
    grid-column: 1 / -1;
}

.stv-textarea[b-qmrf9ukg78] {
    min-height: 64px;
    height: 64px;
    resize: none;
    font-family: inherit;
}

/* Item toolbar row 1: title + item search + Add/Update. */
.oe-quickadd-row.stv-quickadd-row[b-qmrf9ukg78] {
    grid-template-columns: auto minmax(220px, 1fr) auto;
}

/* Item toolbar row 2: the 10 legacy numeric boxes
   (Qty … Org.Rate, Amount, Dis.Rate, Dis.Amt, Net amt). */
.stv-num-grid[b-qmrf9ukg78] {
    display: grid;
    grid-template-columns: repeat(10, minmax(78px, 1fr));
    gap: 10px;
    align-items: end;
    margin-bottom: 12px;
}

    .stv-num-grid input[readonly][b-qmrf9ukg78] {
        background: var(--oe-border-soft);
        color: var(--oe-text);
        font-weight: 600;
    }

/* Header VNum / VType are display-only. */
.oe-gfield input[readonly][b-qmrf9ukg78] {
    background: var(--oe-border-soft);
    cursor: default;
}

/* Grid column widths (were inline style="width:" on JobWorkOrder). */
.stv-col-sr[b-qmrf9ukg78] { width: 34px; }
.stv-col-uom[b-qmrf9ukg78] { width: 64px; }
.stv-col-qty[b-qmrf9ukg78] { width: 72px; }
.stv-col-num[b-qmrf9ukg78] { width: 86px; }
.stv-col-amt[b-qmrf9ukg78] { width: 100px; }
.stv-col-act[b-qmrf9ukg78] { width: 58px; }

@media (max-width: 1200px) {
    .stv-num-grid[b-qmrf9ukg78] {
        grid-template-columns: repeat(5, minmax(80px, 1fr));
    }
}

@media (max-width: 900px) {
    .oe-quickadd-row.stv-quickadd-row[b-qmrf9ukg78] {
        grid-template-columns: 1fr auto;
    }

    .stv-num-grid[b-qmrf9ukg78] {
        grid-template-columns: 1fr 1fr;
    }

    .stv-gfield-wide[b-qmrf9ukg78] {
        grid-column: 1;
    }
}

/* Footer (i) keyboard-shortcuts button — at the right end of the footer bar, small. */
.stv-info-btn[b-qmrf9ukg78] {
    margin-left: 2px;
    width: 22px;
    height: 22px;
    padding: 0;
    border: none;
    background: transparent;
    color: #1f2f6b;
    font-size: 18px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.stv-info-btn:hover[b-qmrf9ukg78] { color: #2f49a8; }
.stv-info-btn:focus-visible[b-qmrf9ukg78] { outline: 2px solid #2f49a8; outline-offset: 2px; border-radius: 50%; }
/* /Components/Pages/Transactions/Voucher/Order/JobWorkOrder.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-qfddmglku2] {
    --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-qfddmglku2] {
    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-qfddmglku2] .lga-wrap {
    position: relative;
    display: block;
}

[b-qfddmglku2] .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-qfddmglku2] .lga-suggest-hidden {
    visibility: hidden;
}

[b-qfddmglku2] .lga-suggest li,
[b-qfddmglku2] .lga-empty {
    padding: 8px 12px;
    font-size: 12.5px;
    color: var(--oe-text);
}

[b-qfddmglku2] .lga-suggest li {
    cursor: pointer;
}

    [b-qfddmglku2] .lga-suggest li:hover,
    [b-qfddmglku2] .lga-suggest li.active {
        background: var(--oe-accent-bg);
    }

[b-qfddmglku2] .lga-empty {
    color: var(--oe-muted-light);
    cursor: default;
}

[b-qfddmglku2] .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-qfddmglku2] {
    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-qfddmglku2] {
    width: 56px;
}

.oe-sidebar-hdr[b-qfddmglku2] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.oe-sidebar-label[b-qfddmglku2] {
    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-qfddmglku2] {
    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-qfddmglku2] {
        color: var(--oe-accent);
        border-color: var(--oe-accent);
    }

.oe-recent-list[b-qfddmglku2] {
    flex: 1;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-border) transparent;
}

.oe-recent-empty[b-qfddmglku2] {
    color: var(--oe-muted-light);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.oe-recent-card[b-qfddmglku2] {
    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-qfddmglku2] {
        border-color: var(--oe-accent);
        background: var(--oe-accent-bg);
    }

    .oe-recent-card.active[b-qfddmglku2] {
        border-color: var(--oe-accent);
        background: var(--oe-accent-bg);
    }

.oe-avatar[b-qfddmglku2] {
    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-qfddmglku2] {
    background: var(--oe-accent-bg);
    border: 0.5px solid var(--oe-accent-border);
    color: #065f46;
}

.oe-recent-main[b-qfddmglku2] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.oe-recent-vno[b-qfddmglku2] {
    font-size: 12px;
    font-weight: 600;
    color: var(--oe-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.oe-recent-sub[b-qfddmglku2] {
    font-size: 10px;
    color: var(--oe-muted-light);
}

/* ── Main column ── */
.oe-main[b-qfddmglku2] {
    flex: 1;
    min-width: 0;
}

.oe-gains-header[b-qfddmglku2] {
    background: var(--oe-header-bg);
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 14px;
}

.oe-gains-icon[b-qfddmglku2] {
    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-qfddmglku2] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--oe-accent);
    margin-bottom: 4px;
}

.oe-gains-title[b-qfddmglku2] {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}

.oe-gains-vid[b-qfddmglku2] {
    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-qfddmglku2] {
    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-qfddmglku2] {
    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-qfddmglku2] {
        color: var(--oe-header-bg);
    }

    .oe-gains-tab.active[b-qfddmglku2] {
        color: var(--oe-header-bg);
        border-bottom-color: var(--oe-accent);
    }

.oe-gains-body[b-qfddmglku2] {
    padding: 1.75rem 2rem;
}

.oe-empty-block[b-qfddmglku2] {
    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-qfddmglku2] {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 48px;
    row-gap: 12px;
    padding: 16px 20px;
    border: 1px solid var(--oe-border);
    border-radius: 10px;
    background: #fff;
    margin-bottom: 20px;
}

    /* Vertical divider between the two field columns — runs the full
       card height (checks row included, since .oe-checks sits in the grid). */
    .oe-gfield-grid[b-qfddmglku2]::before {
        content: "";
        position: absolute;
        top: 12px;
        bottom: 12px;
        left: 50%;
        width: 1px;
        background: var(--oe-border);
    }

/* Label left, control right (was label stacked above control). */
.oe-gfield[b-qfddmglku2] {
    display: grid;
    grid-template-columns: 100px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
}

    .oe-gfield span[b-qfddmglku2] {
        /* Label look = MLedgerEdit's .le-row > label */
        display: block;
        font-size: 13px;
        font-weight: 400;
        color: #334155;
        margin-bottom: 0;
    }

    /* Dropdowns (Status / VType + DepotDropdown / SalesRepDropdown, which
   render their own <select> — hence ::deep) — the shared .uf-input look
   strips the native arrow (appearance:none), so draw a chevron back in
   (slate #334155, matches the label colour). */
    .oe-gfield[b-qfddmglku2]  select {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        padding-right: 34px !important;
        background-color: #fff;
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' stroke='%23334155' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
        background-repeat: no-repeat;
        background-position: right 12px center;
        background-size: 12px 8px;
        cursor: pointer;
    }

        .oe-gfield[b-qfddmglku2]  select:disabled {
            cursor: default;
            opacity: .7;
        }

        .oe-gfield[b-qfddmglku2]  select::-ms-expand {
            display: none;
        }

/* Party / Customer — search icon box on the right edge of the input
   (decorative; the autofill itself does the searching as you type). */
.oe-search-right[b-qfddmglku2] {
    position: relative;
}

    .oe-search-right[b-qfddmglku2]  input {
        padding-right: 42px;
    }

    .oe-search-right > i[b-qfddmglku2] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-left: 1px solid var(--oe-border);
        color: #475569;
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

    /* Customer: "+" add-customer button in the same right-edge box */
    .oe-search-right > .oe-addcust-btn[b-qfddmglku2] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        border: none;
        border-left: 1px solid var(--oe-border);
        border-radius: 0 4px 4px 0;
        background: #f8fafc;
        color: #0f766e;
        font-size: 13px;
        cursor: pointer;
        z-index: 1;
        transition: background .12s, color .12s;
    }

        .oe-search-right > .oe-addcust-btn:hover[b-qfddmglku2] {
            background: #e6f7f3;
            color: #0b5f58;
        }

        .oe-search-right > .oe-addcust-btn:focus-visible[b-qfddmglku2] {
            outline: 2px solid #1ab99a;
            outline-offset: -2px;
        }

/* Item search — magnifier inside the input, on the left. */
.oe-search-left[b-qfddmglku2] {
    position: relative;
}

    .oe-search-left[b-qfddmglku2]  input {
        padding-left: 32px;
    }

    .oe-search-left > i[b-qfddmglku2] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--oe-muted-light);
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

.oe-sr-only[b-qfddmglku2] {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Textboxes / dropdowns — incl. the ones rendered by DepotDropdown,
   SalesRepDropdown, LedgerAutofill, OrderCustomerAutofill and
   InvItemAutofill via InputClass="uf-input" — use the master .uf-input look
   from wwwroot/CSS/masters-forms.css. */


[b-qfddmglku2] .gdp-wrap {
    width: 100%;
    height: 32px;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
    box-sizing: border-box;
}

    [b-qfddmglku2] .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, .12) !important;
    }

.oe-customer-row[b-qfddmglku2] {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .oe-customer-row > *:first-child[b-qfddmglku2] {
        flex: 1;
    }

.oe-inline-add[b-qfddmglku2] {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

    .oe-inline-add .uf-input[b-qfddmglku2] {
        flex: 1;
    }

/* ── Inset Quotation? / Rate inclusive of GST? blocks — same as AccVoucher's
   "TDS applicable?" inset block ── */
.oe-inset-block[b-qfddmglku2] {
    background: #f9fafb;
    border: 0.5px solid var(--oe-border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 16px;
}

.oe-inset-hdr[b-qfddmglku2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.oe-inset-title[b-qfddmglku2] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

    .oe-inset-title i[b-qfddmglku2] {
        font-size: 16px;
        color: var(--oe-accent);
    }

.oe-pill-group[b-qfddmglku2] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.oe-pill[b-qfddmglku2] {
    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-qfddmglku2] {
        background: var(--oe-accent);
        color: #fff;
        border-color: var(--oe-accent);
    }

/* ── Item / expense line grids ── */
.oe-lines-section[b-qfddmglku2] {
    border-top: 0.5px solid var(--oe-border-soft);
    padding-top: 20px;
    margin-bottom: 20px;
}

.oe-lines-toolbar[b-qfddmglku2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}

.oe-lines-title[b-qfddmglku2] {
    font-size: 13px;
    font-weight: 600;
    color: var(--oe-text);
}

.oe-grid-toolbar-row[b-qfddmglku2] {
    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-qfddmglku2] {
    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-qfddmglku2] {
    max-height: 280px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--oe-accent-border) transparent;
}

    .oe-grid-wrap-scroll[b-qfddmglku2]::-webkit-scrollbar {
        width: 8px;
    }

    .oe-grid-wrap-scroll[b-qfddmglku2]::-webkit-scrollbar-thumb {
        background: var(--oe-accent-border);
        border-radius: 8px;
    }

    .oe-grid-wrap-scroll thead th[b-qfddmglku2] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

.oe-grid-table[b-qfddmglku2] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .oe-grid-table th[b-qfddmglku2] {
        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-qfddmglku2] {
        padding: 6px 8px;
        border: 1px solid var(--oe-border);
        color: var(--oe-text);
    }

    .oe-grid-table tbody tr:nth-child(even)[b-qfddmglku2] {
        background: #f9fafb;
    }

.oe-grid-navy th[b-qfddmglku2] {
    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-qfddmglku2] {
    cursor: pointer;
}

    .oe-items-table tbody tr:hover[b-qfddmglku2] {
        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-qfddmglku2],
    .oe-items-table tbody tr.oe-row-editing:hover[b-qfddmglku2] {
        background: #fff3cd;
    }

.oe-grid-muted th[b-qfddmglku2] {
    background: #4b5563;
}

.oe-grid-total-row td[b-qfddmglku2] {
    color: #fff;
    font-weight: 700;
    border-color: rgba(255, 255, 255, .18);
}

.oe-grid-navy .oe-grid-total-row td[b-qfddmglku2] {
    background: #306B9C;
}

.oe-grid-muted .oe-grid-total-row td[b-qfddmglku2] {
    background: #4b5563;
}

/* ── 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. ── */
/* Taxes (left) + Order total card (right). */
.oe-bottom-grid[b-qfddmglku2] {
    display: grid;
    grid-template-columns: minmax(0, 1.75fr) minmax(260px, 1fr);
    gap: 24px;
    align-items: start;
    margin: 4px 0 20px;
}

.oe-tax-col[b-qfddmglku2] {
    min-width: 0;
}

.oe-tax-caption[b-qfddmglku2] {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #334155;
    margin-bottom: 6px;
}

.oe-total-card[b-qfddmglku2] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 14px 14px 10px;
    margin-top: 0; /* TAXES caption removed — card top now level with the sub-tabs */
}

.oe-total-title[b-qfddmglku2] {
    font-size: 15px;
    font-weight: 700;
    color: var(--oe-text);
    margin-bottom: 10px;
}

.oe-grandtotal-bar[b-qfddmglku2] {
    width: 100%;
    border: 1px solid var(--oe-border);
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}

.oe-grandtotal-row[b-qfddmglku2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    font-size: 13px;
    color: #334155;
    border-bottom: 1px solid var(--oe-border-soft);
}

    .oe-grandtotal-row span:last-child[b-qfddmglku2] {
        color: var(--oe-text);
        font-variant-numeric: tabular-nums;
    }

    .oe-grandtotal-row:last-child[b-qfddmglku2] {
        border-bottom: none;
    }

.oe-total-grand[b-qfddmglku2] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 14px 14px 4px;
    font-weight: 700;
    color: var(--oe-accent-dark);
}

    .oe-total-grand span:first-child[b-qfddmglku2] {
        font-size: 16px;
    }

    .oe-total-grand span:last-child[b-qfddmglku2] {
        font-size: 22px;
        font-variant-numeric: tabular-nums;
    }

/* ── 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-qfddmglku2] {
    display: flex;
    margin-bottom: 12px;
}

.oe-subtab[b-qfddmglku2] {
    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-qfddmglku2] {
        border-radius: 8px 0 0 8px;
    }

    .oe-subtab:last-child[b-qfddmglku2] {
        border-radius: 0 8px 8px 0;
        border-left: none;
    }

    .oe-subtab:hover[b-qfddmglku2] {
        color: var(--oe-accent-dark);
    }

    .oe-subtab.active[b-qfddmglku2] {
        background: var(--oe-accent-dark);
        border-color: var(--oe-accent-dark);
        color: #fff;
    }


.oe-cell-static[b-qfddmglku2] {
    font-weight: 600;
    color: var(--oe-text);
    padding-right: 10px !important;
}

.oe-empty-cell[b-qfddmglku2] {
    text-align: center;
    color: var(--oe-muted-light);
    padding: 20px !important;
}

.oe-icon-btn[b-qfddmglku2] {
    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-qfddmglku2] {
        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. ── */
/* Item details card — light green panel around quick-add row + grid. */
.oe-items-card[b-qfddmglku2] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 12px 14px 4px;
}

    .oe-items-card .oe-grid-wrap[b-qfddmglku2] {
        background: #fff;
    }

/* Title | Search item | Add | Quantity | Rate | Amount — one row. */
.oe-quickadd-row[b-qfddmglku2] {
    display: grid;
    grid-template-columns: auto minmax(180px, 2fr) auto repeat(3, minmax(90px, 1fr));
    gap: 10px;
    align-items: end;
    margin-bottom: 12px;
}

.oe-quickadd-title[b-qfddmglku2] {
    font-size: 16px;
    font-weight: 700;
    color: var(--oe-text);
    line-height: 34px;
    margin-right: 28px;
    white-space: nowrap;
}

.oe-quickadd-field[b-qfddmglku2] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    .oe-quickadd-field span[b-qfddmglku2] {
        font-size: 13px;
        font-weight: 400;
        color: #334155;
    }

/* 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-qfddmglku2] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.oe-quickadd-add-btn[b-qfddmglku2] {
    height: 34px;
    padding: 0 16px;
    flex-shrink: 0;
    border: none;
    border-radius: 7px;
    background: var(--oe-accent-dark);
    color: #fff;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(14, 163, 132, .25);
}

    .oe-quickadd-add-btn i[b-qfddmglku2] {
        font-size: 11px;
    }

    .oe-quickadd-add-btn:hover[b-qfddmglku2] {
        background: #0b8a70;
    }

/* InvItemAutofill (Item field) gets InputClass="uf-input", so it uses the
   master .uf-input look like every other field on this row (its own
   fallback style skips .uf-input). */

/* 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(). */

/* Save / New order buttons use the shared uf-btn classes from
   wwwroot/CSS/masters-forms.css (uf-btn-save / uf-btn-new). */

.oe-btn-sm[b-qfddmglku2] {
    height: 32px;
    padding: 0 10px;
    font-size: 12px;
}

/* ---------- fixed footer ----------
   Real position:fixed bar pinned to the bottom of the viewport — matches
   AccVoucher.razor.css's own .avc-action-row/.avc-action-row-inner 1:1
   (right-aligned buttons, 1600px cap, 9px/22px padding) instead of the old
   centered 1300px bar, so Save/New order lines up the same way Save/New
   voucher does on AccVoucher. */
.oe-footer-bar[b-qfddmglku2] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--oe-border);
    box-shadow: 0 -6px 20px rgba(15, 23, 42, .08);
}

.oe-footer-inner[b-qfddmglku2] {
    width: 100%;
    max-width: 1600px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 9px 22px;
}

.text-end[b-qfddmglku2] {
    text-align: right;
}

.text-center[b-qfddmglku2] {
    text-align: center;
}

/* ── Mobile ── */
@media (max-width: 900px) {
    .oe-shell[b-qfddmglku2] {
        flex-direction: column;
        border-radius: 14px;
    }

    .oe-sidebar[b-qfddmglku2] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--oe-border);
    }

    .oe-sidebar-collapsed .oe-sidebar-hdr[b-qfddmglku2] {
        justify-content: flex-end;
    }

    .oe-gfield-grid[b-qfddmglku2] {
        grid-template-columns: 1fr;
        padding: 14px;
    }

        .oe-gfield-grid[b-qfddmglku2]::before {
            display: none;
        }

    .oe-gfield[b-qfddmglku2] {
        grid-template-columns: 90px minmax(0, 1fr);
    }

    .oe-checks[b-qfddmglku2] {
        padding-left: 0;
    }

    .oe-quickadd-row[b-qfddmglku2] {
        grid-template-columns: 1fr auto;
    }

    .oe-quickadd-title[b-qfddmglku2] {
        grid-column: 1 / -1;
        line-height: 1.3;
    }

    .oe-bottom-grid[b-qfddmglku2] {
        grid-template-columns: 1fr;
    }

    .oe-total-card[b-qfddmglku2] {
        margin-top: 0;
    }

    .oe-gains-body[b-qfddmglku2] {
        padding: 1.25rem;
    }

    .oe-gains-tabs[b-qfddmglku2] {
        overflow-x: auto;
        overflow-y: hidden;
    }
}

/* Quotation / Rate-inclusive flags — label + checkbox look from the master
   .uf-chk / checkbox rules in wwwroot/CSS/masters-forms.css. */
.oe-checks[b-qfddmglku2] {
    grid-column: 1;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 24px;
    padding-left: 110px; /* label col 100px + gap 10px -> lines up under the inputs */
}

.oe-chk[b-qfddmglku2] {
    /* label look from the master .uf-chk */
    width: fit-content;

}

/* =====================================================
   Job Work Order additions (JobWorkOrder.razor) — rest of this file is
   OrderEntry.razor.css as-is, so the page shares Order entry's UI.
   ===================================================== */

/* Item toolbar: Item + Add + 6 numeric boxes (Free qty … Quantity1). */
.oe-quickadd-row.jw-quickadd-row[b-qfddmglku2] {
    grid-template-columns: auto minmax(180px, 2fr) auto repeat(6, minmax(72px, 1fr));
}

/* Locks the whole entry form after a save (insert-only API). Reset the
   browser's default fieldset chrome so layout is unchanged. */
.jw-fieldset[b-qfddmglku2] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.jw-locked[b-qfddmglku2] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    padding: 9px 12px;
    border: 1px solid #b7e4d8;
    border-radius: 8px;
    background: #ecfaf6;
    color: #0f5f4f;
    font-size: 13px;
}

/* Comments tab — three stacked textareas. */
.jw-comments[b-qfddmglku2] {
    display: grid;
    gap: 14px;
    max-width: 760px;
}

.jw-textarea[b-qfddmglku2] {
    min-height: 84px;
    height: 84px;
    resize: none;
    font-family: inherit;
}

@media (max-width: 1200px) {
    .oe-quickadd-row.jw-quickadd-row[b-qfddmglku2] {
        grid-template-columns: auto minmax(180px, 2fr) auto repeat(3, minmax(80px, 1fr));
    }
}

@media (max-width: 900px) {
    .oe-quickadd-row.jw-quickadd-row[b-qfddmglku2] {
        grid-template-columns: 1fr 1fr;
    }
}
/* /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-recent-card.active[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] {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 48px;
    row-gap: 12px;
    padding: 16px 20px;
    border: 1px solid var(--oe-border);
    border-radius: 10px;
    background: #fff;
    margin-bottom: 20px;
}

    /* Vertical divider between the two field columns — runs the full
       card height (checks row included, since .oe-checks sits in the grid). */
    .oe-gfield-grid[b-he2j1s9hod]::before {
        content: "";
        position: absolute;
        top: 12px;
        bottom: 12px;
        left: 50%;
        width: 1px;
        background: var(--oe-border);
    }

/* Label left, control right (was label stacked above control). */
.oe-gfield[b-he2j1s9hod] {
    display: grid;
    grid-template-columns: 100px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
}

    .oe-gfield span[b-he2j1s9hod] {
        /* Label look = MLedgerEdit's .le-row > label */
        display: block;
        font-size: 13px;
        font-weight: 400;
        color: #334155;
        margin-bottom: 0;
    }

    /* Dropdowns (Status / VType + DepotDropdown / SalesRepDropdown, which
   render their own <select> — hence ::deep) — the shared .uf-input look
   strips the native arrow (appearance:none), so draw a chevron back in
   (slate #334155, matches the label colour). */
    .oe-gfield[b-he2j1s9hod]  select {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        padding-right: 34px !important;
        background-color: #fff;
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' stroke='%23334155' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
        background-repeat: no-repeat;
        background-position: right 12px center;
        background-size: 12px 8px;
        cursor: pointer;
    }

        .oe-gfield[b-he2j1s9hod]  select:disabled {
            cursor: default;
            opacity: .7;
        }

        .oe-gfield[b-he2j1s9hod]  select::-ms-expand {
            display: none;
        }

/* Party / Customer — search icon box on the right edge of the input
   (decorative; the autofill itself does the searching as you type). */
.oe-search-right[b-he2j1s9hod] {
    position: relative;
}

    .oe-search-right[b-he2j1s9hod]  input {
        padding-right: 42px;
    }

    .oe-search-right > i[b-he2j1s9hod] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-left: 1px solid var(--oe-border);
        color: #475569;
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

    /* Customer: "+" add-customer button in the same right-edge box */
    .oe-search-right > .oe-addcust-btn[b-he2j1s9hod] {
        position: absolute;
        top: 1px;
        right: 1px;
        bottom: 1px;
        width: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        border: none;
        border-left: 1px solid var(--oe-border);
        border-radius: 0 4px 4px 0;
        background: #f8fafc;
        color: #0f766e;
        font-size: 13px;
        cursor: pointer;
        z-index: 1;
        transition: background .12s, color .12s;
    }

        .oe-search-right > .oe-addcust-btn:hover[b-he2j1s9hod] {
            background: #e6f7f3;
            color: #0b5f58;
        }

        .oe-search-right > .oe-addcust-btn:focus-visible[b-he2j1s9hod] {
            outline: 2px solid #1ab99a;
            outline-offset: -2px;
        }

/* Item search — magnifier inside the input, on the left. */
.oe-search-left[b-he2j1s9hod] {
    position: relative;
}

    .oe-search-left[b-he2j1s9hod]  input {
        padding-left: 32px;
    }

    .oe-search-left > i[b-he2j1s9hod] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--oe-muted-light);
        font-size: 13px;
        pointer-events: none;
        z-index: 1;
    }

.oe-sr-only[b-he2j1s9hod] {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Textboxes / dropdowns — incl. the ones rendered by DepotDropdown,
   SalesRepDropdown, LedgerAutofill, OrderCustomerAutofill and
   InvItemAutofill via InputClass="uf-input" — use the master .uf-input look
   from wwwroot/CSS/masters-forms.css. */


[b-he2j1s9hod] .gdp-wrap {
    width: 100%;
    height: 32px;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
    box-sizing: border-box;
}

    [b-he2j1s9hod] .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, .12) !important;
    }

.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 .uf-input[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: #4b5563;
}

.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: #4b5563;
}

/* ── 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. ── */
/* Taxes (left) + Order total card (right). */
.oe-bottom-grid[b-he2j1s9hod] {
    display: grid;
    grid-template-columns: minmax(0, 1.75fr) minmax(260px, 1fr);
    gap: 24px;
    align-items: start;
    margin: 4px 0 20px;
}

.oe-tax-col[b-he2j1s9hod] {
    min-width: 0;
}

.oe-tax-caption[b-he2j1s9hod] {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #334155;
    margin-bottom: 6px;
}

.oe-total-card[b-he2j1s9hod] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 14px 14px 10px;
    margin-top: 0; /* TAXES caption removed — card top now level with the sub-tabs */
}

.oe-total-title[b-he2j1s9hod] {
    font-size: 15px;
    font-weight: 700;
    color: var(--oe-text);
    margin-bottom: 10px;
}

.oe-grandtotal-bar[b-he2j1s9hod] {
    width: 100%;
    border: 1px solid var(--oe-border);
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}

.oe-grandtotal-row[b-he2j1s9hod] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    font-size: 13px;
    color: #334155;
    border-bottom: 1px solid var(--oe-border-soft);
}

    .oe-grandtotal-row span:last-child[b-he2j1s9hod] {
        color: var(--oe-text);
        font-variant-numeric: tabular-nums;
    }

    .oe-grandtotal-row:last-child[b-he2j1s9hod] {
        border-bottom: none;
    }

.oe-total-grand[b-he2j1s9hod] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 14px 14px 4px;
    font-weight: 700;
    color: var(--oe-accent-dark);
}

    .oe-total-grand span:first-child[b-he2j1s9hod] {
        font-size: 16px;
    }

    .oe-total-grand span:last-child[b-he2j1s9hod] {
        font-size: 22px;
        font-variant-numeric: tabular-nums;
    }

/* ── 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-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. ── */
/* Item details card — light green panel around quick-add row + grid. */
.oe-items-card[b-he2j1s9hod] {
    background: var(--oe-accent-bg);
    border: 1px solid var(--oe-accent-border);
    border-radius: 10px;
    padding: 12px 14px 4px;
}

    .oe-items-card .oe-grid-wrap[b-he2j1s9hod] {
        background: #fff;
    }

/* Title | Search item | Add | Quantity | Rate | Amount — one row. */
.oe-quickadd-row[b-he2j1s9hod] {
    display: grid;
    grid-template-columns: auto minmax(180px, 2fr) auto repeat(3, minmax(90px, 1fr));
    gap: 10px;
    align-items: end;
    margin-bottom: 12px;
}

.oe-quickadd-title[b-he2j1s9hod] {
    font-size: 16px;
    font-weight: 700;
    color: var(--oe-text);
    line-height: 34px;
    margin-right: 28px;
    white-space: nowrap;
}

.oe-quickadd-field[b-he2j1s9hod] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

    .oe-quickadd-field span[b-he2j1s9hod] {
        font-size: 13px;
        font-weight: 400;
        color: #334155;
    }

/* 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] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.oe-quickadd-add-btn[b-he2j1s9hod] {
    height: 34px;
    padding: 0 16px;
    flex-shrink: 0;
    border: none;
    border-radius: 7px;
    background: var(--oe-accent-dark);
    color: #fff;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(14, 163, 132, .25);
}

    .oe-quickadd-add-btn i[b-he2j1s9hod] {
        font-size: 11px;
    }

    .oe-quickadd-add-btn:hover[b-he2j1s9hod] {
        background: #0b8a70;
    }

/* InvItemAutofill (Item field) gets InputClass="uf-input", so it uses the
   master .uf-input look like every other field on this row (its own
   fallback style skips .uf-input). */

/* 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(). */

/* Save / New order buttons use the shared uf-btn classes from
   wwwroot/CSS/masters-forms.css (uf-btn-save / uf-btn-new). */

.oe-btn-sm[b-he2j1s9hod] {
    height: 32px;
    padding: 0 10px;
    font-size: 12px;
}

/* ---------- fixed footer ----------
   Real position:fixed bar pinned to the bottom of the viewport — matches
   AccVoucher.razor.css's own .avc-action-row/.avc-action-row-inner 1:1
   (right-aligned buttons, 1600px cap, 9px/22px padding) instead of the old
   centered 1300px bar, so Save/New order lines up the same way Save/New
   voucher does on AccVoucher. */
.oe-footer-bar[b-he2j1s9hod] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 50;
    display: flex;
    justify-content: center;
    background: #fff;
    border-top: 1px solid var(--oe-border);
    box-shadow: 0 -6px 20px rgba(15, 23, 42, .08);
}

.oe-footer-inner[b-he2j1s9hod] {
    width: 100%;
    max-width: 1600px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 9px 22px;
}

.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;
        padding: 14px;
    }

        .oe-gfield-grid[b-he2j1s9hod]::before {
            display: none;
        }

    .oe-gfield[b-he2j1s9hod] {
        grid-template-columns: 90px minmax(0, 1fr);
    }

    .oe-checks[b-he2j1s9hod] {
        padding-left: 0;
    }

    .oe-quickadd-row[b-he2j1s9hod] {
        grid-template-columns: 1fr auto;
    }

    .oe-quickadd-title[b-he2j1s9hod] {
        grid-column: 1 / -1;
        line-height: 1.3;
    }

    .oe-bottom-grid[b-he2j1s9hod] {
        grid-template-columns: 1fr;
    }

    .oe-total-card[b-he2j1s9hod] {
        margin-top: 0;
    }

    .oe-gains-body[b-he2j1s9hod] {
        padding: 1.25rem;
    }

    .oe-gains-tabs[b-he2j1s9hod] {
        overflow-x: auto;
        overflow-y: hidden;
    }
}

/* Quotation / Rate-inclusive flags — label + checkbox look from the master
   .uf-chk / checkbox rules in wwwroot/CSS/masters-forms.css. */
.oe-checks[b-he2j1s9hod] {
    grid-column: 1;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 24px;
    padding-left: 110px; /* label col 100px + gap 10px -> lines up under the inputs */
}

.oe-chk[b-he2j1s9hod] {
    /* label look from the master .uf-chk */
    width: fit-content;

}
/* /Components/Pages/Transactions/Voucher/VoucherCostCenter.razor.rz.scp.css */
/* VoucherCostCenter — modern card UI. Left: ledgers + inline editor. Right: voucher view. */
.vcc-wrap[b-zer0om170p] {
    --vcc-accent: #1AB99A;
    --vcc-accent-dk: #11806b;
    --vcc-accent-bg: #e8f7f3;
    --vcc-ink: #1e293b;
    --vcc-muted: #64748b;
    --vcc-line: #e2e8f0;
    --vcc-soft: #f8fafc;
    --vcc-dr: #0f766e;
    --vcc-dr-bg: #ccfbf1;
    --vcc-cr: #b45309;
    --vcc-cr-bg: #fef3c7;
    --vcc-danger: #dc2626;
    font-size: 13px;
    color: var(--vcc-ink);
}

/* ── states ── */
.vcc-empty[b-zer0om170p] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 28px;
    justify-content: center;
    color: var(--vcc-muted);
    border: 1px dashed var(--vcc-line);
    border-radius: 12px;
    background: var(--vcc-soft);
}
.vcc-error[b-zer0om170p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    color: var(--vcc-danger);
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 10px;
}
.vcc-error-sm[b-zer0om170p] { margin-top: 10px; font-size: 12px; }
.vcc-btn-ghost[b-zer0om170p] {
    margin-left: auto;
    border: 1px solid currentColor;
    background: transparent;
    color: inherit;
    border-radius: 6px;
    padding: 3px 10px;
    font: inherit;
    cursor: pointer;
}

/* ── voucher header ── */
.vcc-head[b-zer0om170p] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.vcc-head-main[b-zer0om170p] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.vcc-vnum[b-zer0om170p] { font-size: 17px; font-weight: 700; letter-spacing: -.01em; }
.vcc-pill[b-zer0om170p] {
    font-size: 11px;
    font-weight: 600;
    padding: 2px 9px;
    border-radius: 999px;
}
.vcc-pill-type[b-zer0om170p] { background: var(--vcc-accent-bg); color: var(--vcc-accent-dk); }
.vcc-date[b-zer0om170p] { color: var(--vcc-muted); font-size: 12px; }
.vcc-date i[b-zer0om170p] { margin-right: 3px; }
.vcc-icon-btn[b-zer0om170p] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    border: 1px solid var(--vcc-line);
    background: #fff;
    color: var(--vcc-muted);
    cursor: pointer;
}
.vcc-icon-btn:hover:not(:disabled)[b-zer0om170p] { color: var(--vcc-accent-dk); border-color: var(--vcc-accent); }

/* ── layout ── */
.vcc-layout[b-zer0om170p] {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}
.vcc-col[b-zer0om170p] { display: flex; flex-direction: column; gap: 14px; min-width: 0; }

.vcc-card[b-zer0om170p] {
    background: #fff;
    border: 1px solid var(--vcc-line);
    border-radius: 12px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
    overflow: hidden;
}
.vcc-card-hdr[b-zer0om170p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--vcc-line);
}
.vcc-card-title[b-zer0om170p] { font-weight: 600; font-size: 13px; }
.vcc-count[b-zer0om170p] {
    font-size: 11px;
    color: var(--vcc-muted);
    background: var(--vcc-soft);
    border: 1px solid var(--vcc-line);
    border-radius: 999px;
    padding: 0 7px;
}

/* ── tables ── */
.vcc-scroll[b-zer0om170p] { overflow-x: auto; }
.vcc-tbl[b-zer0om170p] { width: 100%; border-collapse: collapse; }
.vcc-tbl th[b-zer0om170p] {
    background: var(--vcc-soft);
    color: var(--vcc-muted);
    font-size: 11.5px;
    font-weight: 600;
    text-align: left;
    padding: 8px 12px;
    border-bottom: 1px solid var(--vcc-line);
    white-space: nowrap;
}
.vcc-tbl td[b-zer0om170p] {
    padding: 9px 12px;
    border-bottom: 1px solid var(--vcc-line);
    vertical-align: middle;
}
.vcc-tbl tbody tr:last-child td[b-zer0om170p] { border-bottom: 0; }
.vcc-tbl tfoot td[b-zer0om170p] {
    background: var(--vcc-soft);
    border-top: 1px solid var(--vcc-line);
    border-bottom: 0;
    color: var(--vcc-muted);
    font-size: 12px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.vcc-none[b-zer0om170p] { padding: 18px 12px !important; }

.vcc-row[b-zer0om170p] { cursor: pointer; transition: background-color .12s; }
.vcc-row:hover td[b-zer0om170p] { background: var(--vcc-soft); }
.vcc-row.vcc-sel td[b-zer0om170p] { background: var(--vcc-accent-bg); }
.vcc-row.vcc-sel td:first-child[b-zer0om170p] { box-shadow: inset 3px 0 0 var(--vcc-accent); }

.vcc-led[b-zer0om170p] { display: block; font-weight: 600; }
.vcc-code[b-zer0om170p] { display: block; font-size: 11.5px; color: var(--vcc-muted); margin-top: 1px; }
.vcc-amt[b-zer0om170p] { font-weight: 600; font-variant-numeric: tabular-nums; }
.vcc-linked[b-zer0om170p] {
    display: block;
    margin-top: 2px;
    font-size: 11.5px;
    font-variant-numeric: tabular-nums;
}
.vcc-linked.full[b-zer0om170p] { color: var(--vcc-accent-dk); }
.vcc-linked.part[b-zer0om170p] { color: var(--vcc-cr); }

.vcc-drcr[b-zer0om170p] {
    display: inline-block;
    min-width: 28px;
    text-align: center;
    font-size: 11px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 999px;
}
.vcc-drcr.dr[b-zer0om170p] { background: var(--vcc-dr-bg); color: var(--vcc-dr); }
.vcc-drcr.cr[b-zer0om170p] { background: var(--vcc-cr-bg); color: var(--vcc-cr); }

.vcc-link-btn[b-zer0om170p] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
    border: 1px solid var(--vcc-line);
    background: #fff;
    color: var(--vcc-accent-dk);
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 7px;
    cursor: pointer;
}
.vcc-link-btn:hover:not(:disabled)[b-zer0om170p] { border-color: var(--vcc-accent); }
.vcc-link-btn.on[b-zer0om170p] { background: var(--vcc-accent); border-color: var(--vcc-accent); color: #fff; }
.vcc-link-btn:disabled[b-zer0om170p] { opacity: .55; cursor: default; }

.vcc-nest-row td[b-zer0om170p] { background: var(--vcc-soft); }
.vcc-nest[b-zer0om170p] { padding: 4px 8px 8px !important; }
.vcc-tbl-item th[b-zer0om170p] { font-size: 11px; padding: 6px 10px; }
.vcc-tbl-item td[b-zer0om170p] { font-size: 12px; padding: 6px 10px; }

.vcc-w-sr[b-zer0om170p] { width: 36px; }
.vcc-w-drcr[b-zer0om170p] { width: 56px; }
.vcc-w-cc[b-zer0om170p] { width: 96px; }
.vcc-r[b-zer0om170p] { text-align: right !important; }
.vcc-c[b-zer0om170p] { text-align: center !important; }
.vcc-muted[b-zer0om170p] { color: var(--vcc-muted); }

.vcc-icon-btn:focus-visible[b-zer0om170p], .vcc-link-btn:focus-visible[b-zer0om170p], .vcc-btn-ghost:focus-visible[b-zer0om170p] {
    outline: 2px solid var(--vcc-accent);
    outline-offset: 2px;
}

@media (max-width: 960px) {
    .vcc-layout[b-zer0om170p] { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .vcc-row[b-zer0om170p] { transition: none; }
}
/* /Components/Pages/Transactions/Voucher/VoucherCostCenterLinkEditor.razor.rz.scp.css */
/* VoucherCostCenterLinkEditor — modern card. Tokens on own root
   (host panel's custom props don't reach this child's scope). */
.ccl-card[b-q5ld4acg67] {
    --ccl-accent: #1AB99A;
    --ccl-accent-dk: #11806b;
    --ccl-accent-bg: #e8f7f3;
    --ccl-ink: #1e293b;
    --ccl-muted: #64748b;
    --ccl-line: #e2e8f0;
    --ccl-soft: #f8fafc;
    --ccl-dr: #0f766e;
    --ccl-dr-bg: #ccfbf1;
    --ccl-cr: #b45309;
    --ccl-cr-bg: #fef3c7;
    --ccl-danger: #dc2626;
    --ccl-new-bg: #fffbeb;
    background: #fff;
    border: 1px solid var(--ccl-line);
    border-top: 3px solid var(--ccl-accent);
    border-radius: 12px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
    padding: 14px;
    font-size: 13px;
    color: var(--ccl-ink);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* ── header ── */
.ccl-hdr[b-q5ld4acg67] { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ccl-hdr-txt[b-q5ld4acg67] { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ccl-title[b-q5ld4acg67] { font-weight: 600; font-size: 14px; }
.ccl-sub[b-q5ld4acg67] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; color: var(--ccl-muted); font-size: 12px; }
.ccl-sub-led[b-q5ld4acg67] { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 360px; }
.ccl-sub-amt[b-q5ld4acg67] {
    font-weight: 600;
    font-size: 11.5px;
    padding: 1px 8px;
    border-radius: 999px;
    font-variant-numeric: tabular-nums;
}
.ccl-sub-amt.dr[b-q5ld4acg67] { background: var(--ccl-dr-bg); color: var(--ccl-dr); }
.ccl-sub-amt.cr[b-q5ld4acg67] { background: var(--ccl-cr-bg); color: var(--ccl-cr); }
.ccl-badge[b-q5ld4acg67] {
    flex: none;
    font-size: 11px;
    font-weight: 600;
    color: var(--ccl-cr);
    background: var(--ccl-cr-bg);
    border-radius: 999px;
    padding: 2px 9px;
}
.ccl-badge i[b-q5ld4acg67] { font-size: 6px; vertical-align: middle; margin-right: 3px; }

/* ── entry row ── */
.ccl-entry[b-q5ld4acg67] { display: flex; gap: 8px; align-items: stretch; }
.ccl-search[b-q5ld4acg67] { position: relative; flex: 1 1 auto; min-width: 0; }
.ccl-ico[b-q5ld4acg67], .ccl-spin[b-q5ld4acg67] {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ccl-muted);
    font-size: 12px;
    pointer-events: none;
}
.ccl-ico[b-q5ld4acg67] { left: 11px; }
.ccl-spin[b-q5ld4acg67] { right: 11px; }
.ccl-in[b-q5ld4acg67] {
    height: 36px;
    border: 1px solid var(--ccl-line);
    border-radius: 8px;
    padding: 0 12px;
    font: inherit;
    color: var(--ccl-ink);
    background: #fff;
    outline: none;
    transition: border-color .12s, box-shadow .12s;
}
.ccl-in:focus[b-q5ld4acg67] { border-color: var(--ccl-accent); box-shadow: 0 0 0 3px rgba(26, 185, 154, .18); }
.ccl-in:disabled[b-q5ld4acg67] { background: var(--ccl-soft); color: var(--ccl-muted); }
.ccl-in-name[b-q5ld4acg67] { width: 100%; padding-left: 32px; }
.ccl-in-amt[b-q5ld4acg67] { width: 140px; flex: none; text-align: right; font-variant-numeric: tabular-nums; }
.ccl-hint[b-q5ld4acg67] { margin-top: -6px; font-size: 12px; color: var(--ccl-muted); }

.ccl-sugg[b-q5ld4acg67] {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    z-index: 5;
    max-height: 240px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--ccl-line);
    border-radius: 10px;
    box-shadow: 0 10px 24px rgba(15, 23, 42, .12);
    padding: 4px;
    scrollbar-width: thin;
    scrollbar-color: var(--ccl-accent) transparent;
}
.ccl-sugg-item[b-q5ld4acg67] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    width: 100%;
    border: 0;
    border-radius: 6px;
    background: transparent;
    padding: 7px 10px;
    text-align: left;
    font: inherit;
    color: var(--ccl-ink);
    cursor: pointer;
}
.ccl-sugg-item:hover[b-q5ld4acg67], .ccl-sugg-item.active[b-q5ld4acg67] { background: var(--ccl-accent-bg); }
.ccl-sugg-grp[b-q5ld4acg67] {
    font-size: 11px;
    color: var(--ccl-muted);
    background: var(--ccl-soft);
    border: 1px solid var(--ccl-line);
    border-radius: 999px;
    padding: 0 7px;
    white-space: nowrap;
}
.ccl-sugg-empty[b-q5ld4acg67] { padding: 10px; color: var(--ccl-muted); font-size: 12px; }

/* ── list ── */
.ccl-grid[b-q5ld4acg67] {
    border: 1px solid var(--ccl-line);
    border-radius: 10px;
    overflow: auto;
    max-height: 260px;
    scrollbar-width: thin;
    scrollbar-color: var(--ccl-accent) transparent;
}
.ccl-tbl[b-q5ld4acg67] { width: 100%; border-collapse: collapse; }
.ccl-tbl th[b-q5ld4acg67] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--ccl-soft);
    color: var(--ccl-muted);
    font-size: 11.5px;
    font-weight: 600;
    text-align: left;
    padding: 8px 12px;
    border-bottom: 1px solid var(--ccl-line);
}
.ccl-tbl td[b-q5ld4acg67] { padding: 8px 12px; border-bottom: 1px solid var(--ccl-line); vertical-align: middle; }
.ccl-tbl tbody tr:last-child td[b-q5ld4acg67] { border-bottom: 0; }
.ccl-tbl tbody tr:hover td[b-q5ld4acg67] { background: var(--ccl-soft); }
.ccl-tbl tr.ccl-unsaved td[b-q5ld4acg67] { background: var(--ccl-new-bg); }
.ccl-none[b-q5ld4acg67] { padding: 20px 12px !important; }
.ccl-grp[b-q5ld4acg67] { color: var(--ccl-muted); }
.ccl-amt[b-q5ld4acg67] { font-weight: 600; font-variant-numeric: tabular-nums; }
.ccl-tag[b-q5ld4acg67] {
    margin-left: 6px;
    font-size: 10.5px;
    font-weight: 600;
    color: var(--ccl-cr);
    background: var(--ccl-cr-bg);
    border-radius: 999px;
    padding: 0 7px;
}
.ccl-w-sr[b-q5ld4acg67] { width: 36px; }
.ccl-w-amt[b-q5ld4acg67] { width: 120px; }
.ccl-w-del[b-q5ld4acg67] { width: 44px; }
.ccl-r[b-q5ld4acg67] { text-align: right !important; }
.ccl-c[b-q5ld4acg67] { text-align: center !important; }
.ccl-muted[b-q5ld4acg67] { color: var(--ccl-muted); }
.ccl-del[b-q5ld4acg67] {
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--ccl-muted);
    cursor: pointer;
}
.ccl-del:hover:not(:disabled)[b-q5ld4acg67] { color: var(--ccl-danger); background: #fef2f2; }

/* ── totals ── */
.ccl-stats[b-q5ld4acg67] { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.ccl-stat[b-q5ld4acg67] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 9px 12px;
    border: 1px solid var(--ccl-line);
    border-radius: 10px;
    background: var(--ccl-soft);
}
.ccl-stat-l[b-q5ld4acg67] { font-size: 11.5px; color: var(--ccl-muted); }
.ccl-stat-v[b-q5ld4acg67] { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ccl-stat-v small[b-q5ld4acg67] { font-size: 11px; font-weight: 600; color: var(--ccl-muted); margin-left: 2px; }
.ccl-stat.done[b-q5ld4acg67] { background: var(--ccl-accent-bg); border-color: #a7e6d7; }
.ccl-stat.done .ccl-stat-v[b-q5ld4acg67] { color: var(--ccl-accent-dk); }
.ccl-stat.open[b-q5ld4acg67] { background: var(--ccl-cr-bg); border-color: #fde68a; }
.ccl-stat.open .ccl-stat-v[b-q5ld4acg67] { color: var(--ccl-cr); }
.ccl-stat.neg[b-q5ld4acg67] { background: #fef2f2; border-color: #fecaca; }
.ccl-stat.neg .ccl-stat-v[b-q5ld4acg67] { color: var(--ccl-danger); }

.ccl-error[b-q5ld4acg67] {
    display: flex;
    gap: 8px;
    align-items: center;
    padding: 8px 12px;
    color: var(--ccl-danger);
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 8px;
    font-size: 12px;
}

/* ── actions ── */
.ccl-actions[b-q5ld4acg67] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--ccl-line);
}
.ccl-btn[b-q5ld4acg67] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 14px;
    border-radius: 8px;
    border: 1px solid var(--ccl-line);
    background: #fff;
    color: var(--ccl-ink);
    font: inherit;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color .12s, border-color .12s;
}
.ccl-btn:disabled[b-q5ld4acg67] { opacity: .5; cursor: not-allowed; }
.ccl-btn-soft[b-q5ld4acg67] { color: var(--ccl-accent-dk); background: var(--ccl-accent-bg); border-color: transparent; }
.ccl-btn-soft:hover:not(:disabled)[b-q5ld4acg67] { border-color: var(--ccl-accent); }
.ccl-btn-primary[b-q5ld4acg67] { background: var(--ccl-accent); border-color: var(--ccl-accent); color: #fff; min-width: 96px; justify-content: center; }
.ccl-btn-primary:hover:not(:disabled)[b-q5ld4acg67] { background: var(--ccl-accent-dk); border-color: var(--ccl-accent-dk); }
.ccl-btn-danger[b-q5ld4acg67] { color: var(--ccl-danger); margin-right: auto; }
.ccl-btn-danger:hover:not(:disabled)[b-q5ld4acg67] { background: #fef2f2; border-color: #fecaca; }

.ccl-btn:focus-visible[b-q5ld4acg67], .ccl-del:focus-visible[b-q5ld4acg67], .ccl-sugg-item:focus-visible[b-q5ld4acg67] {
    outline: 2px solid var(--ccl-accent);
    outline-offset: 2px;
}

@media (max-width: 600px) {
    .ccl-entry[b-q5ld4acg67] { flex-wrap: wrap; }
    .ccl-search[b-q5ld4acg67] { flex: 1 1 100%; }
    .ccl-in-amt[b-q5ld4acg67] { flex: 1 1 auto; width: auto; }
    .ccl-stats[b-q5ld4acg67] { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .ccl-in[b-q5ld4acg67], .ccl-btn[b-q5ld4acg67] { transition: none; }
}
/* /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: 6px;
    font-family: Arial;
    /* Fixed to the viewport so the host page itself never scrolls: grids
       scroll inside, Save footer stays pinned at the bottom. Host pages can
       tune the offset (their own header/tab strip height) by setting
       --vcl-height on a parent. */
    height: var(--vcl-height, calc(100vh - 240px));
    /* Never wider than the host; grids scroll sideways inside instead. */
    width: 100%;
    max-width: var(--vcl-max-width, 1100px);
    min-width: 0;
    box-sizing: border-box;
    min-height: 320px;
    overflow: hidden;
}

/* ── Category tab strip (Account / Inventory / Order / PUR) ── */
.vcl-tabs[b-y8uj7vi9re] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 4px 6px;
    background: #fff;
    flex: 0 0 auto;
}

/* Tab buttons use the global .db-summary-tab (wwwroot/CSS/standard.css),
   same as MLedger.razor's GRID/CONTACTS/ENTRY top tabs. */

/* ── Panel card ── */
.vcl-panel[b-y8uj7vi9re] {
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    /* Fill remaining height of .vcl-root; children shrink, grids scroll. */
    flex: 1 1 auto;
    min-height: 0;
    /* 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: 12px;
    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: 260px;
    max-width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .vcl-summary-table td[b-y8uj7vi9re] {
        padding: 3px 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;
}

/* Compact header + row heights (global .mu-table is 12px/14px th, 10px/14px td). */
.vcl-table thead th[b-y8uj7vi9re] {
    padding: 5px 6px;
    font-size: 11.5px;
    line-height: 1.25;
}

.vcl-table tbody td[b-y8uj7vi9re] {
    padding: 3px 6px;
    font-size: 12px;
    line-height: 1.3;
}

.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] {
    height: auto;
    min-height: 60px;
    overflow: auto;
}

/* Already Linked: size to content, but never more than ~35% of the panel. */
.vcl-linked-wrap[b-y8uj7vi9re] {
    flex: 0 1 auto;
    max-height: 35%;
}

/* Yet to Link: takes all leftover height. */
.vcl-yet-wrap[b-y8uj7vi9re] {
    flex: 1 1 0;
}

.vcl-table thead th[b-y8uj7vi9re] {
    position: sticky;
    top: 0;
    z-index: 1;
}

.vcl-hdr-row[b-y8uj7vi9re],
.vcl-summary-table[b-y8uj7vi9re],
.vcl-section-hdr[b-y8uj7vi9re] {
    flex: 0 0 auto;
}

.vcl-th-delink[b-y8uj7vi9re],
.vcl-th-chk[b-y8uj7vi9re] {
    width: 40px;
    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: 22px;
    width: 22px;
    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: 70px;
    padding: 1px 6px;
    height: 22px;
    box-sizing: border-box;
    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: 10px;
    flex-wrap: wrap;
    padding: 8px 14px;
    background: #f7f9fc;
    border-top: 1px solid #e5e9f0;
    border-radius: 0 0 6px 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: #1a2537;
    flex: 0 0 auto;
    margin: auto -12px -10px;
}

    .vcl-footer-row .num[b-y8uj7vi9re] {
        text-align: right;
        min-width: 70px;
    }

.vcl-footer-sigma[b-y8uj7vi9re] {
    margin-left: auto;
    color: #64748b;
}

.vcl-records-count[b-y8uj7vi9re] {
    color: #64748b;
    font-weight: 600;
}

/* Save button now uses the global .uf-btn .uf-btn-save (masters-forms.css),
   same as InvVoucher's footer Save — local .vcl-save-btn removed. */

/* 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] {
    flex: 0 0 auto;
    /* Pushes the bar to the bottom of the (flex-column) panel even when the
       grids above are empty; flush with the panel's padded edges. */
    margin: auto -12px -10px;
}

/* Inventory/Order/PUR panel fills the visible area so the Save bar sits at
   the bottom of the screen even with no records. Tweak the offset if the
   host page's header/tab strip height changes. */
.vcl-panel-split[b-y8uj7vi9re] {
    min-height: 0;
}

/* Same footer bar MLedgerEdit.razor wraps its Save in (.le-foot). */
.vcl-foot[b-y8uj7vi9re] {
    display: flex;
    gap: 10px;
    padding: 8px 14px;
    border-top: 1px solid #e5e9f0;
    background: #f7f9fc;
    border-radius: 0 0 6px 6px;
}

/* ── Inventory/Order/PUR: item-summary (left) + Linked/Yet-to-Link (right) split ── */
.vcl-split[b-y8uj7vi9re] {
    display: flex;
    gap: 12px;
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 0;
}

.vcl-split-left[b-y8uj7vi9re] {
    flex: 0 0 var(--vcl-left-width, 420px);
    max-width: 100%;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 0;
    overflow: auto;
}

.vcl-split-right[b-y8uj7vi9re] {
    flex: 1 1 360px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 0;
}

@media (max-width: 900px) {
    .vcl-split[b-y8uj7vi9re] {
        flex-wrap: wrap;
        overflow: auto;
    }

    .vcl-split-left[b-y8uj7vi9re],
    .vcl-split-right[b-y8uj7vi9re] {
        flex: 1 1 100%;
    }
}

/* Tables fill their scroll wrap but never force the panel wider. */
.vcl-linked-wrap[b-y8uj7vi9re],
.vcl-yet-wrap[b-y8uj7vi9re],
.vcl-split-left[b-y8uj7vi9re] {
    min-width: 0;
    max-width: 100%;
}

    /* Left item-summary table fills its column; Item Name may wrap so long
   names don't force horizontal scroll. */
    .vcl-split-left .vcl-table[b-y8uj7vi9re] {
        width: 100%;
    }

        .vcl-split-left .vcl-table td:nth-child(2)[b-y8uj7vi9re] {
            white-space: normal;
        }

/* All grid headers (Account / Inventory / Order / PUR): app blue, white text.
   Second-line sub-labels (OrderDt, Rate, Qty1, LinkedQty1, BalanceQty1) are
   white too instead of the grey .vcl-th-sub used in body cells. */
.vcl-table thead th[b-y8uj7vi9re] {
    background: #306B9C;
    color: #fff;
    font-weight: 600;
    border-color: #2a5f8a;
}

    .vcl-table thead th .vcl-th-sub[b-y8uj7vi9re] {
        color: #fff;
        font-weight: 600;
    }

/* Account tab: Yet-to-Link totals live in the table's own <tfoot> so each
   sum lines up under its column (Ledger Amt / Linked Amt / Balance / Cross).
   Sticky to the bottom of the grid's scroll area. */
.vcl-table tfoot td[b-y8uj7vi9re] {
    position: sticky;
    bottom: 0;
    z-index: 1;
    background: #eef3f9;
    border-top: 1px solid #c9d6e6;
    padding: 5px 6px;
    font-size: 12px;
    font-weight: 700;
    color: #1a2537;
    white-space: nowrap;
}

.vcl-tfoot-label[b-y8uj7vi9re] {
    text-align: right;
    color: #475569;
}

/* Loading state still fills the panel so the footer stays at the bottom. */
.vcl-loading[b-y8uj7vi9re] {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

/* Empty-state rows (e.g. "No items.") shouldn't add extra height. */
.vcl-table .mu-empty[b-y8uj7vi9re] {
    padding: 14px 0;
}

/* Account Yet-to-Link: table stretches to the grid's full height; the empty
   filler row takes all spare space, so the Σ Total row always sits at the
   bottom of the grid (and stays sticky there once rows overflow). */
.vcl-fill-table[b-y8uj7vi9re] {
    height: 100%;
}

    .vcl-fill-table tbody tr:not(.vcl-filler-row)[b-y8uj7vi9re] {
        height: 1px; /* natural height; spare height goes to filler */
    }

.vcl-filler-row[b-y8uj7vi9re],
.vcl-filler-row td[b-y8uj7vi9re] {
    height: 100%;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
}

    .vcl-filler-row:hover td[b-y8uj7vi9re] {
        background: transparent !important;
    }

/* Inventory tab: selected item row in the left item-summary grid. */
.vcl-table tbody tr.vcl-row-sel td[b-y8uj7vi9re] {
    background: #dff3fd;
}

/* VNum dot = view (VoucherReportPopup); was referenced but never styled. */
.vcl-vdot-clickable[b-y8uj7vi9re] {
    cursor: pointer;
}

    .vcl-vdot-clickable:hover[b-y8uj7vi9re] {
        background: #0d47a1;
        box-shadow: 0 0 0 2px #bbdefb;
    }
/* /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  (v3 — Login card chrome)
   Right-hand card now mirrors Login.razor.css's .gains-card family
   (dark header w/ step label, progress strip, body, grey footer,
   uppercase field labels, gradient primary button). Duplicated as
   tfa-* classes — CSS isolation keeps Login's rules out of here.
================================================================ */

/* Arial everywhere — same rule as Login.razor.css */
*[b-p2x88xy2dr] {
    font-family: Arial !important;
}

/* Icon fonts must keep their own family (see Login.razor.css note) */
i[class*="ti-"][b-p2x88xy2dr], i.ti[b-p2x88xy2dr] {
    font-family: "tabler-icons" !important;
}

i[class*="fa-"][b-p2x88xy2dr], .fa-solid[b-p2x88xy2dr], .fa-regular[b-p2x88xy2dr], .fa-brands[b-p2x88xy2dr] {
    font-family: "Font Awesome 6 Free" !important;
}

.fa-solid[b-p2x88xy2dr] {
    font-weight: 900 !important;
}

/* ── Page ── */
.tfa-page[b-p2x88xy2dr] {
    display: flex;
    min-height: 100vh;
    width: 100%;
    font-family: Arial;
    font-size: 14px;
}

/* ════════════════════════════════════════════
   LEFT PANEL
════════════════════════════════════════════ */
.tfa-left[b-p2x88xy2dr] {
    width: 42%;
    min-width: 340px;
    background: #071c11;
    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 — same values as Login's .gains-brand-* */
.tfa-brand[b-p2x88xy2dr]          { display: flex; align-items: center; gap: 12px; margin-bottom: 2rem; }
.tfa-brand-icon[b-p2x88xy2dr]     {
    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;
}
.tfa-logo-img[b-p2x88xy2dr]       { width: 30px; height: 30px; object-fit: contain; }
.tfa-brand-name[b-p2x88xy2dr]     { font-size: 18px;  letter-spacing: .13em; color: #fff; line-height: 1.1; }
.tfa-brand-full[b-p2x88xy2dr]     { font-size: 10px; color: rgba(255,255,255,.35); margin-top: 2px; line-height: 1.4; }

/* Heading */
.tfa-mid[b-p2x88xy2dr] { margin-bottom: 1.6rem; }
.tfa-mid h2[b-p2x88xy2dr]      { font-size: 24px;  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 — matches Login's .gains-right
════════════════════════════════════════════ */
.tfa-right[b-p2x88xy2dr] {
    flex: 1;
    background: #f4f6f8;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2.5rem;
    position: relative;
    overflow: visible;
    min-height: 100vh;
}

.tfa-right-dots[b-p2x88xy2dr] {
    position: absolute;
    top: 24px;
    right: 24px;
    display: grid;
    grid-template-columns: repeat(5,1fr);
    gap: 6px;
    opacity: .25;
    pointer-events: none;
}

    .tfa-right-dots span[b-p2x88xy2dr] {
        width: 4px;
        height: 4px;
        border-radius: 50%;
        background: #1AB99A;
        display: block;
    }

/* ── Card — same as .gains-card ── */
.tfa-card[b-p2x88xy2dr] {
    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: tfa-card-in-b-p2x88xy2dr .4s cubic-bezier(.16,1,.3,1) both;
    transition: box-shadow .4s;
}

/* First-time setup carries the QR + key grid — a little wider so the
   two panels + 6 OTP boxes fit without wrapping. */
.tfa-card-setup[b-p2x88xy2dr] {
    max-width: 460px;
}

.tfa-card-success[b-p2x88xy2dr] {
    box-shadow: 0 4px 24px rgba(15,23,42,.06), 0 0 32px rgba(26,185,154,.14);
}

@keyframes tfa-card-in-b-p2x88xy2dr {
    from {
        opacity: 0;
        transform: translateY(14px) scale(.98);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

.tfa-card-header[b-p2x88xy2dr] {
    background: #071c11;
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.tfa-card-step[b-p2x88xy2dr] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #1AB99A;
    margin-bottom: 4px;
}

.tfa-card-title[b-p2x88xy2dr] {
    font-size: 20px;
    font-weight: 700;
    color: #fff;
}

.tfa-card-subtitle[b-p2x88xy2dr] {
    font-size: 13px;
    color: rgba(255,255,255,.5);
    margin-top: 2px;
}

.tfa-card-icon-wrap[b-p2x88xy2dr] {
    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;
    transition: background .3s, border-color .3s, color .3s;
}

.tfa-icon-ok[b-p2x88xy2dr] {
    background: rgba(26,185,154,.28);
    border-color: #1AB99A;
    color: #34d399;
    animation: tfaBounce-b-p2x88xy2dr .5s cubic-bezier(.36,.07,.19,.97);
}

.tfa-icon-err[b-p2x88xy2dr] {
    background: rgba(239,68,68,.15);
    border-color: rgba(239,68,68,.45);
    color: #f87171;
    animation: tfaShake-b-p2x88xy2dr .42s ease;
}

.tfa-card-progress[b-p2x88xy2dr] {
    height: 3px;
    background: rgba(26,185,154,.15);
}

.tfa-card-progress-bar[b-p2x88xy2dr] {
    height: 100%;
    background: #1AB99A;
    transition: width .3s;
}

.tfa-card-body[b-p2x88xy2dr] {
    padding: 1.75rem 2rem;
}

.tfa-card-footer[b-p2x88xy2dr] {
    padding: 1rem 2rem;
    border-top: .5px solid #f3f4f6;
    text-align: center;
    font-size: 13px;
    color: #6b7280;
    background: #fafafa;
    display: flex;
    justify-content: center;
}

.tfa-back-btn[b-p2x88xy2dr] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #1AB99A;
    text-decoration: none;
    transition: color .15s;
}

    .tfa-back-btn:hover[b-p2x88xy2dr] {
        color: #2176C7;
    }

/* ── Field block — label style = Login's .gains-field label ── */
.tfa-field[b-p2x88xy2dr] {
    margin-bottom: 1.1rem;
}

    .tfa-field > label[b-p2x88xy2dr] {
        display: block;
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .08em;
        text-transform: uppercase;
        color: #6b7280;
        margin-bottom: 7px;
    }

/* Account box — looks like a read-only .gains-input */
.tfa-acct-box[b-p2x88xy2dr] {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 46px;
    padding: 0 12px 0 13px;
    border: 1.5px solid #e5e7eb;
    border-radius: 12px;
    background: #f9fafb;
    font-size: 14px;
    color: #111827;
}

    .tfa-acct-box > i[b-p2x88xy2dr] {
        font-size: 17px;
        color: #1AB99A;
        flex-shrink: 0;
    }

    .tfa-acct-box > span:first-of-type[b-p2x88xy2dr] {
        flex: 1;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.tfa-mode-badge[b-p2x88xy2dr] {
    display: inline-flex;
    align-items: center;
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
}

.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; }

/* ════════════════════════════════
   QR / KEY SETUP (first login)
════════════════════════════════ */
.tfa-setup-grid[b-p2x88xy2dr] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
}

.tfa-qr-panel[b-p2x88xy2dr] {
    background: #f9fafb;
    border: 1.5px solid #e5e7eb;
    border-radius: 12px;
    padding: 12px;
    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: .06em;
    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;
}

.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: 1.5px solid #e5e7eb;
    border-radius: 12px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}

.tfa-key-row[b-p2x88xy2dr] { display: flex; flex-direction: column; gap: 4px; }

.tfa-key-lbl[b-p2x88xy2dr] {
    font-size: 10px;
    font-weight: 600;
    color: #9ca3af;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.tfa-key-val[b-p2x88xy2dr] {
    font-size: 13px;
    font-weight: 600;
    color: #111827;
    word-break: break-all;
}

.tfa-key-secret[b-p2x88xy2dr] {
    font-size: 11px;
    font-family: 'Courier New', monospace !important;
    color: #065f46;
    background: #f0fdf9;
    border: .5px solid #a7f3d0;
    border-radius: 8px;
    padding: 6px 8px;
    word-break: break-all;
    line-height: 1.6;
}

.tfa-key-scanned[b-p2x88xy2dr] {
    font-family: Arial !important;
    font-weight: 700;
}

.tfa-copy-btn[b-p2x88xy2dr] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #fff;
    border: 1.5px solid #e5e7eb;
    border-radius: 8px;
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 600;
    color: #374151;
    cursor: pointer;
    transition: border-color .15s, color .15s;
    width: fit-content;
}

    .tfa-copy-btn:hover[b-p2x88xy2dr] { border-color: #1AB99A; color: #1AB99A; }
    .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: 10px;
    padding: 10px 12px;
    font-size: 12px;
    color: #92400e;
    margin-bottom: 1.1rem;
    line-height: 1.5;
}

    .tfa-setup-notice i[b-p2x88xy2dr] { font-size: 16px; color: #d97706; flex-shrink: 0; margin-top: 1px; }

/* ════════════════════════════════
   TIMER + OTP
════════════════════════════════ */
.tfa-timer-pill[b-p2x88xy2dr] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    margin-bottom: 14px;
    border: 1.5px solid #e5e7eb;
    border-radius: 12px;
    background: #f9fafb;
}

.tfa-timer-ring-wrap[b-p2x88xy2dr] {
    position: relative;
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.tfa-timer-svg[b-p2x88xy2dr]   { width: 40px; height: 40px; transform: rotate(-90deg); display: block; position: absolute; inset: 0; }
.tfa-timer-track[b-p2x88xy2dr] { fill: none; stroke: #e5e7eb; 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: 700;
    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; min-width: 0; }
.tfa-timer-label[b-p2x88xy2dr]    { font-size: 12px; font-weight: 600; transition: color .4s; }
.tfa-timer-bar-wrap[b-p2x88xy2dr] { height: 4px; border-radius: 3px; background: #e5e7eb; overflow: hidden; }
.tfa-timer-bar[b-p2x88xy2dr]      { height: 100%; border-radius: 3px; transition: width 1s linear, background .6s; }

.tfa-refresh-btn[b-p2x88xy2dr] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    border: 1.5px solid #e5e7eb;
    background: #fff;
    cursor: pointer;
    color: #6b7280;
    font-size: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color .15s, color .15s;
    flex-shrink: 0;
}

    .tfa-refresh-btn:hover:not(:disabled)[b-p2x88xy2dr] { border-color: #1AB99A; color: #1AB99A; }
    .tfa-refresh-btn:disabled[b-p2x88xy2dr] { opacity: .4; cursor: not-allowed; }

.tfa-otp-row[b-p2x88xy2dr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    margin-bottom: 10px;
}

.tfa-otp-sep[b-p2x88xy2dr] { font-size: 16px; color: #d1d5db; user-select: none; }

/* OTP box = small .gains-input (same border/bg/focus ring) */
.tfa-otp-input[b-p2x88xy2dr] {
    width: 44px;
    height: 50px;
    border-radius: 12px;
    border: 1.5px solid #e5e7eb;
    background: #f9fafb;
    color: #111827;
    font-size: 22px;
    font-weight: 700;
    text-align: center;
    outline: none;
    caret-color: #1AB99A;
    padding: 0;
    transition: border-color .15s, background .15s, box-shadow .15s;
}

    .tfa-otp-input[b-p2x88xy2dr]::placeholder { color: #d1d5db; font-size: 16px; }
    .tfa-otp-input:hover[b-p2x88xy2dr] { border-color: #d1d5db; }

    .tfa-otp-input:focus[b-p2x88xy2dr] {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

.tfa-inp-filled:not(:focus)[b-p2x88xy2dr] {
    border-color: rgba(26,185,154,.5);
    background: #fff;
}

.tfa-inp-err[b-p2x88xy2dr] {
    border-color: #fca5a5 !important;
    background: #fef2f2 !important;
    box-shadow: 0 0 0 3px rgba(239,68,68,.1) !important;
    color: #b91c1c !important;
    animation: tfaShake-b-p2x88xy2dr .42s ease;
}

.tfa-inp-ok[b-p2x88xy2dr] {
    border-color: #1AB99A !important;
    background: #f0fdf9 !important;
    color: #065f46 !important;
}

.tfa-otp-input:disabled[b-p2x88xy2dr] { opacity: .6; cursor: not-allowed; }

/* 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: #e5e7eb;
    transition: background .2s, transform .2s;
}

.tfa-fill-on[b-p2x88xy2dr]              { background: #1AB99A !important; transform: scale(1.3); }
.tfa-fill-err.tfa-fill-on[b-p2x88xy2dr] { background: #ef4444 !important; }

/* ════════════════════════════════
   ALERTS — same as Login's .gains-error
════════════════════════════════ */
.tfa-alert[b-p2x88xy2dr] {
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 1rem;
    animation: tfa-card-in-b-p2x88xy2dr .2s ease both;
}

    .tfa-alert i[b-p2x88xy2dr] { font-size: 16px; flex-shrink: 0; }

.tfa-alert-err[b-p2x88xy2dr] { background: #fef2f2; color: #b91c1c; border: .5px solid #fecaca; }
.tfa-alert-ok[b-p2x88xy2dr]  { background: #f0fdf9; color: #065f46; border: .5px solid #a7f3d0; }

/* ════════════════════════════════
   VERIFY BUTTON — same as Login's .gains-signin-btn
════════════════════════════════ */
.tfa-validate-btn[b-p2x88xy2dr] {
    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;
    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-top: 1.4rem;
}

    .tfa-validate-btn:hover:not(:disabled)[b-p2x88xy2dr] {
        transform: translateY(-1px);
        box-shadow: 0 6px 20px rgba(26,185,154,.4);
    }

    .tfa-validate-btn:active:not(:disabled)[b-p2x88xy2dr] {
        transform: scale(.99);
    }

    .tfa-validate-btn:disabled[b-p2x88xy2dr] {
        opacity: .5;
        cursor: not-allowed;
    }

    .tfa-validate-btn i[b-p2x88xy2dr] {
        font-size: 18px;
    }

.tfa-btn-done[b-p2x88xy2dr],
.tfa-btn-done:disabled[b-p2x88xy2dr] {
    background: linear-gradient(135deg, #059669, #064e3b);
    opacity: 1;
    cursor: default;
}

.tfa-spin[b-p2x88xy2dr] { animation: tfaSpin-b-p2x88xy2dr .85s linear infinite; display: inline-block; }

@keyframes tfaSpin-b-p2x88xy2dr   { to { transform: rotate(360deg); } }
@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)} }

/* ════════════════════════════════
   RESPONSIVE — same breakpoints as Login
════════════════════════════════ */
@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: 2rem 1.5rem; min-height: unset; }
}

@media (max-width: 480px) {
    .tfa-setup-grid[b-p2x88xy2dr] { grid-template-columns: 1fr; }
    .tfa-qr-panel[b-p2x88xy2dr]   { justify-self: center; }
}

@media (max-width: 420px) {
    .tfa-card-body[b-p2x88xy2dr]   { padding: 1.25rem 1.25rem; }
    .tfa-card-header[b-p2x88xy2dr] { padding: 1.25rem 1.25rem; }
    .tfa-card-footer[b-p2x88xy2dr] { padding: .75rem 1.25rem; }
    .tfa-otp-input[b-p2x88xy2dr]   { width: 38px; height: 46px; font-size: 19px; }
    .tfa-otp-row[b-p2x88xy2dr]     { gap: 4px; }
}
/* /Components/Pages/Utility/TToG.razor.rz.scp.css */
/* TToG.razor.css — Tally To GAINS import utility */

/* Flex-fill layout — page fills .gains-content, only the table scrolls. */
.mu-page[b-8nvq3dsagf] {
    cursor: pointer; /* requested: hand cursor across the page (disabled controls keep not-allowed) */
    display: flex;
    flex-direction: column;
    height: 100%;
}

.mu-card[b-8nvq3dsagf] {
    /* 10px page-bg gap between the sidebar and the card (same grey as the gap above it). */
    margin-left: 10px;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-radius: 0;
}

.tg-layout[b-8nvq3dsagf] {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 16px;
    min-height: 0;
}

.tg-main[b-8nvq3dsagf] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    gap: 10px;
}

.mu-table-wrap[b-8nvq3dsagf] {
    flex: 1;
    height: auto;
    overflow: auto;
    min-height: 0;
}

/* Left title bar — reuses .tg-help-head look; sits flush on the card top like the Help header. */
.tg-main-head[b-8nvq3dsagf] {
    border: 1px solid #376091;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Guide header: same logo + text layout as the left "Import utility" bar. */
.tg-guide-head[b-8nvq3dsagf] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* T2G logo in the dark title bar: T2G.png has an off-white margin around its rounded tile, so the image is
   drawn slightly larger than its box and the box clips that margin away (only the blue/green tile shows). */
.tg-logo-sm[b-8nvq3dsagf] {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    border-radius: 5px;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .tg-logo-sm img[b-8nvq3dsagf] {
        width: 24px;
        height: 24px;
        max-width: none;
    }

/* ── Notice ── */
/* One notice block; each line keeps its own icon. */
.tg-note[b-8nvq3dsagf] {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 8px 12px;
    border: 1px solid #dbe6f5;
    border-left: 3px solid #376091;
    border-radius: 0 6px 6px 0;
    background: #f5f8fc;
    font-size: 12px;
    line-height: 1.5;
}

.tg-note-item[b-8nvq3dsagf] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    color: #334155;
}

.tg-note-ico[b-8nvq3dsagf] {
    flex-shrink: 0;
    width: 14px;
    margin-top: 3px;
    color: #376091;
    text-align: center;
}

.tg-note-warn .tg-note-ico[b-8nvq3dsagf] { color: #d97706; }
.tg-site[b-8nvq3dsagf] { color: #8a9a00; font-weight: 600; }
.tg-period[b-8nvq3dsagf] { color: #1e90ff; font-weight: 600; }

/* ── Rows ── */
.tg-c[b-8nvq3dsagf] { text-align: center; }

.tg-gap td[b-8nvq3dsagf] {
    height: 10px;
    padding: 0;
    border: none;
    background: transparent;
}

/* Button · chosen name (takes the spare width, ellipsis) — keeps rows aligned. */
.tg-file[b-8nvq3dsagf] {
    display: grid;
    grid-template-columns: auto minmax(110px, 1fr);
    align-items: center;
    gap: 10px;
}

/* Choose File — same look as VoucherDocumentsPanel's .vdp-file-btn */
.tg-file-btn[b-8nvq3dsagf] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 600;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    padding: 6px 14px;
    color: #1e293b;
    cursor: pointer;
    white-space: nowrap;
    transition: .12s;
}

    .tg-file-btn:hover[b-8nvq3dsagf] {
        border-color: #1AB99A;
        color: #0d9480;
    }

    .tg-file-btn[b-8nvq3dsagf]  input[type="file"] {
        position: absolute;
        inset: 0;
        opacity: 0;
        cursor: pointer;
        width: 100%;
    }

.tg-file-btn-disabled[b-8nvq3dsagf] {
    opacity: .5;
    cursor: not-allowed;
    pointer-events: none;
}

.tg-file-chosen[b-8nvq3dsagf] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12.5px;
    color: #64748b;
}

.tg-file-name[b-8nvq3dsagf] {
    color: #1e90ff;
    font-size: 12px;
    white-space: nowrap;
}

.tg-file-picked[b-8nvq3dsagf] { color: #16a34a; font-weight: 600; }

/* Icon + text start at the left so every Import button lines up. */
.tg-imp[b-8nvq3dsagf] {
    width: 175px;
    justify-content: flex-start;
}

/* Import buttons — POSEntry .pos-btn base with a soft blue tint. */
.tg-btn[b-8nvq3dsagf] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px;
    padding: 0 16px;
    font-size: 13px;
    font-weight: 600;
    font-family: inherit;
    border-radius: 6px;
    border: 1px solid #cfd6df;
    background: #fff;
    color: #334155;
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
}

    .tg-btn:active:not(:disabled)[b-8nvq3dsagf] {
        transform: translateY(1px);
    }

    .tg-btn:disabled[b-8nvq3dsagf] {
        background: #f8fafc;
        border-color: #e5e7eb;
        color: #a3adbb;
        cursor: not-allowed;
    }

    .tg-btn:focus-visible[b-8nvq3dsagf] {
        outline: 2px solid #1ab99a;
        outline-offset: 2px;
    }

/* Option B — soft blue tint, fills solid blue on hover. */
.tg-btn-primary[b-8nvq3dsagf] {
    background: #e8f0fb;
    border-color: #bcd0ee;
    color: #1a56a7;
}

    .tg-btn-primary:hover:not(:disabled)[b-8nvq3dsagf] {
        background: #1a56a7;
        border-color: #1a56a7;
        color: #fff;
    }

.tg-ico[b-8nvq3dsagf] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #376091;
    font-size: 15px;
    padding: 2px 6px;
}

.tg-del[b-8nvq3dsagf] { color: #dc2626; }

.tg-ico:disabled[b-8nvq3dsagf] {
    color: #cbd5e1;
    cursor: not-allowed;
}

.tg-cross[b-8nvq3dsagf] { color: #dc2626; }

/* Status column: yesfile.png / nofile.png (different source sizes → same 22px box). */
.tg-status-img[b-8nvq3dsagf] {
    width: 22px;
    height: 22px;
    object-fit: contain;
    vertical-align: middle;
}

/* ── Import result popup ── */
/* Result popups always fit the window (overlay has 32px top/bottom padding): header, message bar,
   filter bar and footer stay fixed and ONLY the grid body scrolls — no second (page) scrollbar. */
.tg-res-modal[b-8nvq3dsagf] {
    max-width: 480px;
    max-height: calc(100vh - 64px);
}

/* No top padding: the grid header is sticky (top:0), and a top padding left a strip
   above it where scrolled rows showed through. */
.tg-res-body[b-8nvq3dsagf] {
    padding: 0 16px 12px;
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
}

/* Popup scrollbars — same teal theme as the main import table (.mu-table-wrap). */
.tg-res-body[b-8nvq3dsagf],
.tg-info-body[b-8nvq3dsagf] {
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

    .tg-res-body[b-8nvq3dsagf]::-webkit-scrollbar,
    .tg-info-body[b-8nvq3dsagf]::-webkit-scrollbar {
        width: 10px;
        height: 10px;
    }

    .tg-res-body[b-8nvq3dsagf]::-webkit-scrollbar-track,
    .tg-info-body[b-8nvq3dsagf]::-webkit-scrollbar-track,
    .tg-res-body[b-8nvq3dsagf]::-webkit-scrollbar-corner,
    .tg-info-body[b-8nvq3dsagf]::-webkit-scrollbar-corner {
        background: transparent;
    }

    .tg-res-body[b-8nvq3dsagf]::-webkit-scrollbar-thumb,
    .tg-info-body[b-8nvq3dsagf]::-webkit-scrollbar-thumb {
        background: #b6e8db;
        border-radius: 8px;
        border: 2px solid transparent;
        background-clip: content-box;
    }

        .tg-res-body[b-8nvq3dsagf]::-webkit-scrollbar-thumb:hover,
        .tg-info-body[b-8nvq3dsagf]::-webkit-scrollbar-thumb:hover {
            background: #1ab99a;
            background-clip: content-box;
        }

.tg-res-wide[b-8nvq3dsagf] { max-width: 680px; }

.tg-res-no[b-8nvq3dsagf] { width: 50px; }

.tg-r[b-8nvq3dsagf] { text-align: right; white-space: nowrap; }

.tg-res-cap[b-8nvq3dsagf] {
    margin: 14px 0 6px;
    font-weight: 600;
    color: #dc2626;
}

/* API message above a failure / compare grid (e.g. "No Group assigned to these ledgers ( ## 12 )").
   Sits between the popup header and the scroll body, so it stays put while the grid scrolls. */
.tg-res-msgbar[b-8nvq3dsagf] {
    flex-shrink: 0;
    margin: 0;
    padding: 10px 16px;
    border-bottom: 1px solid #e5e7eb;
    background: #fff;
}

/* Compare TB: wider popup (7 columns), green message when Tally and GAINS match, red difference cells. */
/* Large popup = the app's standard (largest) .uf-modal width, 780px — no custom size. Long names wrap
   instead of widening the table, so there is no horizontal scrollbar. */
.tg-res-lg[b-8nvq3dsagf] { max-width: 780px; }

    .tg-res-lg .tg-res-table td[b-8nvq3dsagf] { white-space: normal; word-break: break-word; }

    .tg-res-lg .tg-res-table td.tg-r[b-8nvq3dsagf] { white-space: nowrap; }
.tg-res-ok[b-8nvq3dsagf] { color: #16a34a; font-weight: 600; }

/* Items OB grid captions (legacy: blue "ITEM OB Imported Successfully", maroon "ITEM ID Not Found", "## N" on the right). */
/* Each section (caption + grid) is its own sticky scope: the caption sticks at the top, the column
   header sticks right under it, and both scroll away only when the next section comes up. */
.tg-ob-sec[b-8nvq3dsagf] { margin-top: 12px; }

    .tg-ob-sec:first-child[b-8nvq3dsagf] { margin-top: 0; }

.tg-ob-cap[b-8nvq3dsagf] {
    position: sticky;
    top: 0;
    z-index: 3;
    display: flex;
    justify-content: space-between;
    height: 34px;
    box-sizing: border-box;
    align-items: center;
    padding: 0 10px;
    background: #376091;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
}

.tg-ob-cap-bad[b-8nvq3dsagf] { background: #800000; }

    .tg-ob-table[b-8nvq3dsagf]  thead th,
    .tg-ob-table thead th[b-8nvq3dsagf] { top: 34px; }

/* TB Compare result row (legacy RESULT HEADER): white bold centred text on green (ID 1) / maroon (else). */
.tg-tb-result[b-8nvq3dsagf] {
    flex-shrink: 0;
    padding: 8px 15px;
    color: #fff;
    font-weight: 700;
    text-align: center;
}

.tg-tb-match[b-8nvq3dsagf] { background: #008000; }

.tg-tb-nomatch[b-8nvq3dsagf] { background: #7B2223; }

/* TB Compare: "Show Ledgers which are not matching" bar, sortable headers, Export to Excel button. */
.tg-tb-filter[b-8nvq3dsagf] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-bottom: 1px solid #e5e7eb;
    font-size: 13px;
    cursor: pointer;
}

.tg-sort[b-8nvq3dsagf] { cursor: pointer; user-select: none; white-space: nowrap; }

/* Icon-only Export to Excel button (square). */
.tg-xls[b-8nvq3dsagf] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 30px;
    padding: 0;
    font-size: 16px;
    margin-right: auto;
    border: 1px solid #b7dfc5;
    border-radius: 6px;
    background: #f0faf4;
    color: #15803d;
    cursor: pointer;
}

    .tg-xls:hover:not(:disabled)[b-8nvq3dsagf] { background: #16a34a; border-color: #16a34a; color: #fff; }

    .tg-xls:disabled[b-8nvq3dsagf] { opacity: .5; cursor: not-allowed; }

.tg-diff[b-8nvq3dsagf] { color: #dc2626; font-weight: 600; }

/* Blank item group / unit in the Import Items failure grid. */
.tg-missing[b-8nvq3dsagf] { color: #dc2626; font-style: italic; }

.tg-res-failed[b-8nvq3dsagf] {
    margin-top: 10px;
    color: #dc2626;
    font-size: 12px;
}

/* ── Info (sample image) popup ── */
.tg-info-modal[b-8nvq3dsagf] {
    max-width: 90vw;
    width: auto;
}

.tg-info-body[b-8nvq3dsagf] {
    padding: 12px;
    max-height: 80vh;
    overflow: auto;
    text-align: center;
}

.tg-info-img[b-8nvq3dsagf] {
    max-width: 100%;
    height: auto;
    border: 1px solid #d1d5db;
}

/* ── Help panel ── */
.tg-help[b-8nvq3dsagf] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    border: 1px solid #d1d5db;
}

.tg-help-head[b-8nvq3dsagf] {
    flex-shrink: 0;
    background: #376091;
    color: #fff;
    padding: 6px 10px;
    font-size: 13px;
    font-weight: 600;
}

.tg-help-body[b-8nvq3dsagf] {
    flex: 1;
    display: flex;
    overflow: auto;
    min-height: 0;
}

.tg-help-frame[b-8nvq3dsagf] {
    flex: 1;
    width: 100%;
    border: none;
    background: #fff;
}

@media (max-width: 1100px) {
    .tg-layout[b-8nvq3dsagf] { grid-template-columns: 1fr; }
    .tg-help[b-8nvq3dsagf] { min-height: 300px; }
}

/* ── Import message popup (replaces the toast for Import results) ── */
.tg-msg-modal[b-8nvq3dsagf] {
    max-width: 440px;
}

.tg-msg-body[b-8nvq3dsagf] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 18px 20px;
    font-size: 14px;
    line-height: 1.45;
    word-break: break-word;
}

.tg-msg-body i[b-8nvq3dsagf] { font-size: 22px; flex: 0 0 auto; margin-top: 1px; }
.tg-msg-ok[b-8nvq3dsagf] { color: #16a34a; }
.tg-msg-err[b-8nvq3dsagf] { color: #dc2626; }

.tg-msg-footer[b-8nvq3dsagf] {
    justify-content: flex-end;
}

/* Second line under the message, e.g. "## Vouchers : 1333". */
.tg-msg-detail[b-8nvq3dsagf] {
    margin-top: 4px;
    font-weight: 600;
}
/* /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;
    height: 100dvh; /* mobile: excludes the browser URL bar */
    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;
}


/* ══════════════ Left menu + panel layout (legacy page order) ══════════════ */

.utl-layout[b-cs16jhom5f] {
    display: grid;
    grid-template-columns: 250px minmax(0, 1fr);
    gap: 20px;
    align-items: start;
}

.utl-nav[b-cs16jhom5f] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    position: sticky;
    top: 0;
}

.utl-nav-group[b-cs16jhom5f] {
    background: #fff;
    border: 1px solid var(--utl-border);
    border-radius: 12px;
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.utl-nav-item[b-cs16jhom5f] {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    border: none;
    background: transparent;
    color: var(--utl-text);
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 12.5px;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
    transition: .12s;
}

    .utl-nav-item i[b-cs16jhom5f] {
        width: 16px;
        text-align: center;
        color: var(--utl-muted);
    }

    .utl-nav-item:hover:not(:disabled)[b-cs16jhom5f] {
        background: #f1f5f9;
    }

    .utl-nav-item:disabled[b-cs16jhom5f] {
        cursor: not-allowed;
        opacity: .6;
    }

.utl-nav-active[b-cs16jhom5f],
.utl-nav-active:hover:not(:disabled)[b-cs16jhom5f] {
    background: var(--utl-accent);
    color: #fff;
}

    .utl-nav-active i[b-cs16jhom5f] {
        color: #fff;
    }

/* Short labels ("G Led Code") only show in the mobile chip bar */
.utl-nav-short[b-cs16jhom5f] {
    display: none;
}

.utl-nav-tag[b-cs16jhom5f] {
    margin-left: auto;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 999px;
    background: #f1f5f9;
    color: var(--utl-muted);
}

.utl-nav-active .utl-nav-tag[b-cs16jhom5f] {
    background: rgba(255,255,255,.25);
    color: #fff;
}

.utl-main[b-cs16jhom5f] {
    min-width: 0;
}

.utl-panel-wide[b-cs16jhom5f] {
    max-width: 980px;
}

.utl-card-head[b-cs16jhom5f] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}

    .utl-card-head .utl-card-icon[b-cs16jhom5f] {
        flex-shrink: 0;
    }

/* ResultBanner wrapper — contributes no box, so no stray flex gap when empty */
.utl-res-slot[b-cs16jhom5f] {
    display: contents;
}

.utl-note[b-cs16jhom5f] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 9px 12px;
    border-radius: 9px;
    font-size: 12.5px;
    line-height: 1.45;
}

.utl-note-warn[b-cs16jhom5f] {
    background: #fff7ed;
    color: #b45309;
}

.utl-note-info[b-cs16jhom5f] {
    background: #f1f5f9;
    color: var(--utl-muted);
}

.utl-radio-row[b-cs16jhom5f] {
    display: flex;
    gap: 22px;
    flex-wrap: wrap;
}

.utl-radio[b-cs16jhom5f] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-weight: 600;
    cursor: pointer;
}

    .utl-radio input[b-cs16jhom5f] {
        accent-color: var(--utl-accent);
    }

.utl-btn-sm[b-cs16jhom5f] {
    padding: 7px 14px;
    font-size: 12.5px;
    border-radius: 8px;
}

.utl-btn-danger[b-cs16jhom5f] {
    background: var(--utl-danger);
}

    .utl-btn-danger:hover:not(:disabled)[b-cs16jhom5f] {
        background: #b91c1c;
    }

.utl-icon-btn[b-cs16jhom5f] {
    border: 1px solid var(--utl-border);
    background: #fff;
    color: var(--utl-muted);
    border-radius: 8px;
    width: 32px;
    height: 32px;
    cursor: pointer;
    transition: .12s;
}

    .utl-icon-btn:hover:not(:disabled)[b-cs16jhom5f] {
        border-color: var(--utl-accent);
        color: var(--utl-accent-dark);
    }

    .utl-icon-btn:disabled[b-cs16jhom5f] {
        cursor: not-allowed;
        opacity: .6;
    }

/* ── Clean Up Files ── */

.utl-files-bar[b-cs16jhom5f] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.utl-files-count[b-cs16jhom5f] {
    color: var(--utl-muted);
    font-size: 12px;
    font-weight: 600;
}

.utl-files-right[b-cs16jhom5f] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 8px;
}

.utl-input-sm[b-cs16jhom5f] {
    padding: 6px 10px;
    font-size: 12.5px;
    border-radius: 8px;
}

.utl-seg[b-cs16jhom5f] {
    display: inline-flex;
    border: 1px solid var(--utl-border);
    border-radius: 8px;
    overflow: hidden;
}

.utl-seg-btn[b-cs16jhom5f] {
    border: none;
    background: #fff;
    color: var(--utl-muted);
    width: 34px;
    height: 30px;
    cursor: pointer;
    transition: .12s;
}

    .utl-seg-btn + .utl-seg-btn[b-cs16jhom5f] {
        border-left: 1px solid var(--utl-border);
    }

.utl-seg-active[b-cs16jhom5f] {
    background: var(--utl-accent);
    color: #fff;
}

.utl-files-empty[b-cs16jhom5f] {
    padding: 28px 0;
    text-align: center;
    color: var(--utl-muted);
}

.utl-file-wrap[b-cs16jhom5f] {
    max-height: calc(100vh - 330px);
    overflow: auto;
    border: 1px solid var(--utl-border);
    border-radius: 10px;
}

.utl-table[b-cs16jhom5f] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

    .utl-table thead th[b-cs16jhom5f] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #4b5563;
        color: #fff;
        font-weight: 700;
        text-align: left;
        padding: 9px 12px;
        white-space: nowrap;
    }

    .utl-table tbody td[b-cs16jhom5f] {
        padding: 8px 12px;
        border-top: 1px solid var(--utl-border);
    }

    .utl-table tbody tr[b-cs16jhom5f] {
        cursor: pointer;
    }

        .utl-table tbody tr:nth-child(even)[b-cs16jhom5f] {
            background: #f8fafc;
        }

        .utl-table tbody tr:hover[b-cs16jhom5f] {
            background: #eafbf6;
        }

.utl-row-sel[b-cs16jhom5f],
.utl-table tbody tr.utl-row-sel:nth-child(even)[b-cs16jhom5f] {
    background: #d6f2ea;
}

.utl-col-idx[b-cs16jhom5f] {
    width: 44px;
    color: var(--utl-muted);
}

.utl-col-chk[b-cs16jhom5f] {
    width: 36px;
}

.utl-num[b-cs16jhom5f] {
    text-align: right !important;
}

.utl-file-ico[b-cs16jhom5f] {
    color: var(--utl-muted);
    margin-right: 4px;
}

.utl-col-chk input[b-cs16jhom5f],
.utl-tile-row input[b-cs16jhom5f] {
    accent-color: var(--utl-accent);
    cursor: pointer;
}

.utl-tiles[b-cs16jhom5f] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 14px;
    max-height: calc(100vh - 330px);
    overflow: auto;
    padding: 2px;
}

.utl-tile[b-cs16jhom5f] {
    border: 1px solid var(--utl-border);
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    cursor: pointer;
    transition: .12s;
}

    .utl-tile:hover[b-cs16jhom5f] {
        border-color: #cbd5e1;
        box-shadow: 0 6px 18px rgba(15,23,42,.08);
    }

.utl-tile-sel[b-cs16jhom5f] {
    border-color: var(--utl-accent);
    box-shadow: 0 0 0 2px rgba(26,185,154,.25);
}

.utl-tile-thumb[b-cs16jhom5f] {
    height: 130px;
    background: #f8fafc;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
    font-size: 38px;
}

    .utl-tile-thumb img[b-cs16jhom5f] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.utl-tile-meta[b-cs16jhom5f] {
    padding: 9px 11px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.utl-tile-row[b-cs16jhom5f] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    font-size: 11.5px;
}

.utl-tile-name[b-cs16jhom5f] {
    font-weight: 700;
    font-size: 12.5px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.utl-muted[b-cs16jhom5f] {
    color: var(--utl-muted);
}

.utl-foot-info[b-cs16jhom5f] {
    color: var(--utl-muted);
    font-size: 12px;
    padding: 0 24px;
}

/* ══════════════ Tablet ══════════════ */
@media (max-width: 900px) {
    .utl-layout[b-cs16jhom5f] {
        grid-template-columns: 210px minmax(0, 1fr);
        gap: 14px;
    }

    .utl-nav-item[b-cs16jhom5f] {
        font-size: 12px;
        padding: 7px 8px;
    }
}

/* ══════════════ Mobile — menu becomes a sticky, swipeable chip bar ══════════════ */
@media (max-width: 768px) {
    .utl-page .bspl-title-block[b-cs16jhom5f] {
        padding-left: 12px;
        padding-right: 12px;
    }

    .utl-body[b-cs16jhom5f] {
        padding: 0 12px 16px;
    }

    .utl-layout[b-cs16jhom5f] {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .utl-nav[b-cs16jhom5f] {
        position: sticky;
        top: 0;
        z-index: 5;
        flex-direction: row;
        gap: 0;
        margin: 0 -12px;
        padding: 10px 12px;
        background: #f3f3f4;
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x proximity;
        box-shadow: 0 6px 10px -8px rgba(15,23,42,.25);
    }

        .utl-nav[b-cs16jhom5f]::-webkit-scrollbar {
            display: none;
        }

    .utl-nav-group[b-cs16jhom5f] {
        flex-direction: row;
        flex-shrink: 0;
        gap: 6px;
        padding: 0;
        background: transparent;
        border: none;
        border-radius: 0;
    }

        /* thin divider between the legacy groups */
        .utl-nav-group + .utl-nav-group[b-cs16jhom5f] {
            margin-left: 8px;
            padding-left: 8px;
            border-left: 1px solid #cbd5e1;
        }

    .utl-nav-item[b-cs16jhom5f] {
        width: auto;
        flex-shrink: 0;
        white-space: nowrap;
        scroll-snap-align: start;
        gap: 6px;
        padding: 7px 12px;
        font-size: 12px;
        border-radius: 999px;
        background: #fff;
        border: 1px solid var(--utl-border);
    }

        .utl-nav-item i[b-cs16jhom5f] {
            width: auto;
            font-size: 11px;
        }

    .utl-nav-active[b-cs16jhom5f],
    .utl-nav-active:hover:not(:disabled)[b-cs16jhom5f] {
        background: var(--utl-accent);
        border-color: var(--utl-accent);
    }

    .utl-nav-full[b-cs16jhom5f] {
        display: none;
    }

    .utl-nav-short[b-cs16jhom5f] {
        display: inline;
    }

    .utl-nav-tag[b-cs16jhom5f] {
        margin-left: 2px;
        font-size: 9px;
        padding: 0 5px;
    }

    .utl-panel[b-cs16jhom5f],
    .utl-panel-wide[b-cs16jhom5f] {
        max-width: none;
    }

    .utl-card[b-cs16jhom5f] {
        padding: 16px;
        gap: 12px;
        border-radius: 12px;
    }

        .utl-card:hover[b-cs16jhom5f] {
            box-shadow: 0 1px 3px rgba(15,23,42,.04);
        }

    .utl-card-icon[b-cs16jhom5f] {
        width: 38px;
        height: 38px;
        border-radius: 10px;
        font-size: 16px;
    }

    .utl-card-title[b-cs16jhom5f] {
        font-size: 14px;
    }

    /* full-width, thumb-friendly action button */
    .utl-btn[b-cs16jhom5f] {
        align-self: stretch;
        padding: 12px 18px;
    }

    .utl-input[b-cs16jhom5f] {
        font-size: 16px; /* stops iOS zooming into the field */
    }

    .utl-result-val[b-cs16jhom5f] {
        margin-left: 0;
        width: 100%;
    }

    /* Clean Up Files */
    .utl-files-bar > .utl-btn[b-cs16jhom5f] {
        flex: 1;
        align-self: auto;
        padding: 10px 12px;
    }

    .utl-files-count[b-cs16jhom5f] {
        order: 3;
        width: 100%;
    }

    .utl-files-right[b-cs16jhom5f] {
        order: 4;
        width: 100%;
        margin-left: 0;
    }

        .utl-files-right .utl-input-sm[b-cs16jhom5f] {
            flex: 1;
            min-width: 0;
            font-size: 14px;
        }

    .utl-file-wrap[b-cs16jhom5f],
    .utl-tiles[b-cs16jhom5f] {
        max-height: none;
    }

    .utl-table[b-cs16jhom5f] {
        font-size: 12px;
    }

        .utl-table thead th[b-cs16jhom5f],
        .utl-table tbody td[b-cs16jhom5f] {
            padding: 8px;
        }

        .utl-table tbody td:nth-child(3)[b-cs16jhom5f] {
            word-break: break-all;
        }

    .utl-col-idx[b-cs16jhom5f] {
        width: 30px;
    }

    .utl-tiles[b-cs16jhom5f] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .utl-tile-thumb[b-cs16jhom5f] {
        height: 100px;
        font-size: 30px;
    }

    .utl-foot-info[b-cs16jhom5f] {
        padding: 0 12px;
    }
}

@media (max-width: 420px) {
    .utl-col-date[b-cs16jhom5f] {
        display: none;
    }

    .utl-radio-row[b-cs16jhom5f] {
        gap: 16px;
    }
}
/* /Components/Pages/Yarn/CostingReport.razor.rz.scp.css */
/* =====================================================================
   GAINS — CostingReport.razor.css   (Yarn → Costing Report, page-scoped)
   Same look as MaterialIndentGrid; shell classes come from masters-forms.css.
   ===================================================================== */

.ypg-page[b-1fz0hok9an] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ypg-page .mu-card[b-1fz0hok9an] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .ypg-page .mu-toolbar[b-1fz0hok9an] {
        flex-shrink: 0;
    }

.ypg-wrap[b-1fz0hok9an] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-1fz0hok9an] {
    flex-shrink: 0;
}

.bspl-footer-right[b-1fz0hok9an] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-1fz0hok9an] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ypg-foot-left[b-1fz0hok9an] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ypg-table .ch-num[b-1fz0hok9an] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ypg-table thead th.ch-num[b-1fz0hok9an] {
    text-align: right;
}

.ypg-table .ch-party[b-1fz0hok9an] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Filters button — classic Gains green */
.mu-btn.ypg-filters-btn[b-1fz0hok9an] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ypg-filters-btn:hover[b-1fz0hok9an] {
        background: #23923e;
        border-color: #23923e;
    }

/* Packing Id link */
.ypg-link[b-1fz0hok9an] {
    font-weight: 700;
    color: #4169E1;
    text-decoration: none;
}

    .ypg-link:hover[b-1fz0hok9an] {
        text-decoration: underline;
    }

.ypg-table tbody tr:hover td[b-1fz0hok9an] {
    background: #E2F5EE;
}

@media (max-width: 767px) {
    .ypg-table .ch-party[b-1fz0hok9an] { max-width: 140px; }
}

/* Header colour */
.ypg-table thead th[b-1fz0hok9an] {
    background: #306b9c;
}

/* Filter drawer date boxes + clear-date icon — same as QG (.qg-date-fld / .gcp-trigger).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.ypg-date-fld[b-1fz0hok9an]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-1fz0hok9an]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-1fz0hok9an]  .gdp-wrap:focus,
    .ypg-date-fld[b-1fz0hok9an]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-1fz0hok9an]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-1fz0hok9an]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-1fz0hok9an]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-1fz0hok9an] {
    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-1fz0hok9an] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-1fz0hok9an] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.ypg-chk[b-1fz0hok9an] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}
/* /Components/Pages/Yarn/EnergyConsumption.razor.rz.scp.css */
/* =====================================================================
   EnergyConsumption.razor.css
   Same chrome as DocumentGrid: header (bspl-title-block), footer
   (bspl-footer), table (mu-table in mu-card/mu-table-wrap), filter drawer
   (mu-drawer/mu-fld/mu-drawer-section/mu-btn), popups (uf-*) all come from
   common-page-chrome.css / masters-forms.css. Only page layout + the
   DocumentGrid-style tab buttons live here.
   ===================================================================== */

/* Page = flex column filling the layout: header + tabs fixed, content
   scrolls, footer always pinned at the bottom (same as .dg-page). */
.ec-page[b-mh62657qwz] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', 'Open Sans', Arial, sans-serif;
}

    .ec-page > .bspl-title-block[b-mh62657qwz],
    .ec-page > .ec-tabbar[b-mh62657qwz],
    .ec-page > .bspl-footer[b-mh62657qwz] {
        flex-shrink: 0;
    }

/* Drawer: pinned header/footer, scrolling body (same fix as DocumentGrid). */
.mu-drawer[b-mh62657qwz] {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
}

.mu-drawer-body[b-mh62657qwz] {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    position: static !important;
}

.mu-drawer-foot[b-mh62657qwz] {
    position: static !important;
    flex-shrink: 0 !important;
}

/* First section bar (FILTERS) sits flush under the drawer header —
   no top padding/margin gap. */
.mu-drawer-body[b-mh62657qwz] {
    padding-top: 0 !important;
}

    .mu-drawer-body > .mu-drawer-section:first-child[b-mh62657qwz] {
        margin-top: 0 !important;
    }

.ec-addnew-btn[b-mh62657qwz] {
    width: 100%;
    justify-content: center;
}

/* ── Tab bar — DocumentGrid look: tabs left (green), sub-views right (blue) ── */
.ec-tabbar[b-mh62657qwz] {
    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;
}

.ec-tabbar-left[b-mh62657qwz],
.ec-tabbar-right[b-mh62657qwz] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.ec-tab[b-mh62657qwz] {
    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;
}

    .ec-tab:hover[b-mh62657qwz] {
        background: #f5f5f5;
    }

    .ec-tab.active[b-mh62657qwz] {
        background: #1ab394;
        color: #fff;
        border-color: #1ab394;
    }

.ec-cat-btn[b-mh62657qwz] {
    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;
}

    .ec-cat-btn:hover[b-mh62657qwz] {
        background: #f5f5f5;
    }

    .ec-cat-btn.active[b-mh62657qwz] {
        background: #1a56a7;
        color: #fff;
        border-color: #1a56a7;
    }

/* ── Scrolling middle — the only part that scrolls ── */
.ec-content[b-mh62657qwz] {
    flex: 1;
    overflow-y: auto;
    padding: 12px 16px 8px;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

    .ec-content .mu-card[b-mh62657qwz] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
        background: #fff;
        border: 1px solid #e5e8ec;
        border-radius: 4px;
        overflow: hidden;
    }

    .ec-content .mu-table-wrap[b-mh62657qwz] {
        flex: 1;
        overflow: auto;
        min-height: 200px;
    }

/* ── Compact table (DocumentGrid density) + transaction header colour ── */
.ec-content .mu-table[b-mh62657qwz] {
    width: 100%;
    font-size: 12.5px;
    line-height: 1.25;
    border-collapse: collapse;
}

    .ec-content .mu-table thead th[b-mh62657qwz] {
        position: sticky;
        top: 0;
        z-index: 2;
        background: #306B9C;
        color: #fff;
        padding: 8px 10px;
        height: 34px;
        font-size: 12.5px;
        font-weight: 600;
        line-height: 1.2;
        white-space: nowrap;
        vertical-align: middle;
    }

    .ec-content .mu-table tbody td[b-mh62657qwz] {
        padding: 6px 10px;
        height: 32px;
        line-height: 1.25;
        white-space: nowrap;
        vertical-align: middle;
    }

    .ec-content .mu-table tbody tr:nth-child(even)[b-mh62657qwz] {
        background: #f6f9fc;
    }

    .ec-content .mu-table tfoot td[b-mh62657qwz] {
        position: sticky;
        bottom: 0;
        z-index: 1;
        background: #eef2f7;
        padding: 6px 10px;
        height: 32px;
        font-weight: 700;
        vertical-align: middle;
        border-top: 2px solid #cbd5e1;
    }

    .ec-content .mu-table .text-end[b-mh62657qwz] {
        text-align: right;
        font-variant-numeric: tabular-nums;
    }

.ec-c-act[b-mh62657qwz] {
    width: 40px;
    text-align: center;
}

.ec-link[b-mh62657qwz] {
    color: #306B9C;
    font-weight: 600;
    cursor: pointer;
}

    .ec-link:hover[b-mh62657qwz] {
        text-decoration: underline;
    }

.ec-icon-btn[b-mh62657qwz] {
    border: 0;
    background: transparent;
    color: #dc2626;
    cursor: pointer;
    padding: 2px 6px;
}

    .ec-icon-btn:hover[b-mh62657qwz] {
        opacity: .75;
    }

/* ── Footer — right side flex row (verbatim DocumentGrid / GAINS_TB) ── */
.bspl-footer-right[b-mh62657qwz] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
}

.db-page-gap[b-mh62657qwz] {
    color: #9ca3af;
    padding: 0 2px;
    font-size: 13px;
}

/* ── Popups: master .uf-overlay / .uf-modal; only width, curve, row gap ── */
.ec-overlay[b-mh62657qwz] {
    z-index: 1300;
}

.ec-modal[b-mh62657qwz] {
    max-width: 480px;
    border-radius: 12px;
}

.ec-modal-sm[b-mh62657qwz] {
    max-width: 400px;
}

.ec-form[b-mh62657qwz] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

    .ec-form .uf-input.num[b-mh62657qwz] {
        text-align: right;
    }

    .ec-form .uf-input[readonly][b-mh62657qwz] {
        background: #f1f5f9;
        color: #475569;
    }

.ec-req[b-mh62657qwz] {
    color: #dc2626;
}

.ec-foot[b-mh62657qwz] {
    justify-content: flex-end;
}

.ec-btn-danger[b-mh62657qwz] {
    background: #dc2626 !important;
    border-color: #dc2626 !important;
}

.ec-confirm[b-mh62657qwz] {
    margin: 0;
    font-size: 13px;
}

.ec-loading[b-mh62657qwz] {
    position: absolute;
    inset: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(255, 255, 255, .7);
    font-size: 12.5px;
    font-weight: 600;
    color: #306B9C;
}

/* From / To date boxes (drawer + popup) — verbatim DocumentGrid
   .dg-date-fld: GlobalDatepicker's .gdp-wrap restyled to the master
   text-box look. ::deep because .gdp-wrap is rendered by the child. */
.ec-date-fld[b-mh62657qwz]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
    box-sizing: border-box;
}

    .ec-date-fld[b-mh62657qwz]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ec-date-fld[b-mh62657qwz]  .gdp-wrap:focus,
    .ec-date-fld[b-mh62657qwz]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ec-date-fld[b-mh62657qwz]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ec-date-fld[b-mh62657qwz]  .gdp-icon {
    color: #1a56a7;
}

.ec-date-fld[b-mh62657qwz]  .gdp-value {
    font-weight: 400;
}

/* Calendar (GreenCalendarPicker) + "C" reset — 32px, lined up with date box.
   Plain <img> reuses .gcp-* names; component's scoped CSS doesn't reach it. */
.ec-date-fld .gcp-trigger[b-mh62657qwz],
.ec-date-fld[b-mh62657qwz]  .gcp-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    cursor: pointer;
}

    .ec-date-fld .gcp-trigger:hover[b-mh62657qwz],
    .ec-date-fld[b-mh62657qwz]  .gcp-trigger:hover {
        border-color: #1a56a7;
        background: #f8fafc;
    }

.ec-date-fld .gcp-icon[b-mh62657qwz] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.ec-addnew-btn i[b-mh62657qwz] {
    color: #1ab99a;
}

/* ── Toast ── */
.ec-toast[b-mh62657qwz] {
    position: fixed;
    right: 20px;
    bottom: 70px;
    z-index: 1400;
    max-width: 360px;
    padding: 10px 14px;
    border-radius: 9px;
    background: #15803d;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    box-shadow: 0 6px 18px rgba(15, 23, 42, .2);
}

    .ec-toast.err[b-mh62657qwz] {
        background: #dc2626;
    }

@media (max-width: 767px) {
    .ec-content[b-mh62657qwz] {
        padding: 8px 10px;
    }

    .ec-form .uf-field[b-mh62657qwz] {
        grid-template-columns: 1fr;
        gap: 5px;
    }
}
/* /Components/Pages/Yarn/MachineGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — MachineGrid.razor.css   (Yarn → Machine Grid, page-scoped)
   Same look as MaterialIndentGrid; shell classes come from masters-forms.css.
   ===================================================================== */

.ypg-page[b-1xswkeh6zj] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ypg-page .mu-card[b-1xswkeh6zj] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .ypg-page .mu-toolbar[b-1xswkeh6zj] {
        flex-shrink: 0;
    }

.ypg-wrap[b-1xswkeh6zj] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-1xswkeh6zj] {
    flex-shrink: 0;
}

.bspl-footer-right[b-1xswkeh6zj] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-1xswkeh6zj] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ypg-foot-left[b-1xswkeh6zj] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ypg-err[b-1xswkeh6zj] {
    margin: 8px 12px;
    padding: 8px 12px;
    border: 1px solid #e6b3b3;
    background: #fdf1f1;
    color: #a94442;
    border-radius: 4px;
    font-size: 13px;
}

.ypg-table .ch-num[b-1xswkeh6zj] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ypg-table thead th.ch-num[b-1xswkeh6zj] {
    text-align: right;
}

.ypg-table .ch-party[b-1xswkeh6zj] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Filters button — classic Gains green */
.mu-btn.ypg-filters-btn[b-1xswkeh6zj] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ypg-filters-btn:hover[b-1xswkeh6zj] {
        background: #23923e;
        border-color: #23923e;
    }

/* Packing Id link */
.ypg-link[b-1xswkeh6zj] {
    font-weight: 700;
    color: #4169E1;
    text-decoration: none;
}

    .ypg-link:hover[b-1xswkeh6zj] {
        text-decoration: underline;
    }

.ypg-table tbody tr:hover td[b-1xswkeh6zj] {
    background: #E2F5EE;
}

@media (max-width: 767px) {
    .ypg-table .ch-party[b-1xswkeh6zj] { max-width: 140px; }
}

/* Header colour */
.ypg-table thead th[b-1xswkeh6zj] {
    background: #306b9c;
}

/* Filter drawer date boxes + clear-date icon — same as QG (.qg-date-fld / .gcp-trigger).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.ypg-date-fld[b-1xswkeh6zj]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-1xswkeh6zj]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-1xswkeh6zj]  .gdp-wrap:focus,
    .ypg-date-fld[b-1xswkeh6zj]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-1xswkeh6zj]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-1xswkeh6zj]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-1xswkeh6zj]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-1xswkeh6zj] {
    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-1xswkeh6zj] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-1xswkeh6zj] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.ypg-chk[b-1xswkeh6zj] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}
/* /Components/Pages/Yarn/MaterialIndentGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — MaterialIndentGrid.razor.css   (Yarn → Indent Grid, page-scoped)
   Same look as Masters → Sales Person: title bar, mu-card, mu-toolbar, mu-table
   (dark header, sticky freeze, stripes), mu-drawer and footer all come from the
   shared wwwroot/CSS/masters-forms.css. Only small accents live here.
   ===================================================================== */

/* Same page shell as Masters → Sales Person: the gap around the grid card comes from the shared
   ".ms-page .mu-card" margin (masters-forms.css) — no overrides here. */
.mig-page[b-m5n3h9oecd] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .mig-page .mu-card[b-m5n3h9oecd] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .mig-page .mu-toolbar[b-m5n3h9oecd] {
        flex-shrink: 0;
    }

/* Grid fills the remaining card height and scrolls internally (same as SalesRepGrid). */
.mig-wrap[b-m5n3h9oecd] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-m5n3h9oecd] {
    flex-shrink: 0;
}

/* Same as MItem: pager text at normal size/colour (shared rule makes it 11px grey). */
.bspl-footer-right[b-m5n3h9oecd] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-m5n3h9oecd] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.mig-foot-left[b-m5n3h9oecd] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

/* Numeric columns */
.mig-table .ch-num[b-m5n3h9oecd] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.mig-table thead th.ch-num[b-m5n3h9oecd] {
    text-align: right;
}

.mig-table .ch-party[b-m5n3h9oecd] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mig-ck[b-m5n3h9oecd] {
    width: 34px;
    text-align: center;
}

.mig-info-strip[b-m5n3h9oecd] {
    font-size: .82rem;
    color: #64748b;
}

/* Filters button — classic Gains green (same override as Sales Person's .sr-filters-btn),
   two classes to match ".mu-btn.primary" specificity. */
.mu-btn.mig-filters-btn[b-m5n3h9oecd] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.mig-filters-btn:hover[b-m5n3h9oecd] {
        background: #23923e;
        border-color: #23923e;
    }

/* Indent ID link — bold, coloured by legacy status code */
.mig-link[b-m5n3h9oecd] {
    font-weight: 700;
    text-decoration: none;
}

    .mig-link:hover[b-m5n3h9oecd] {
        text-decoration: underline;
    }

.st-green[b-m5n3h9oecd] { color: #006400; }
.st-blue[b-m5n3h9oecd] { color: #4169E1; }
.st-orange[b-m5n3h9oecd] { color: #FFAC1C; }
.st-pink[b-m5n3h9oecd] { color: #ff69b4; }
.st-red[b-m5n3h9oecd] { color: #C04000; }

.mig-table tbody tr.mig-total td[b-m5n3h9oecd] {
    background: #d1d5db;
    font-weight: 700;
}

/* Green Gains hover tint — same as SalesRepGrid */
.mig-table tbody tr:hover td[b-m5n3h9oecd] {
    background: #E2F5EE;
}

@media (max-width: 767px) {
    .mig-table .ch-party[b-m5n3h9oecd] { max-width: 140px; }
}

/* Filter drawer date boxes + clear-date icon — same as QG (.qg-date-fld / .gcp-trigger).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.mig-date-fld[b-m5n3h9oecd]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .mig-date-fld[b-m5n3h9oecd]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .mig-date-fld[b-m5n3h9oecd]  .gdp-wrap:focus,
    .mig-date-fld[b-m5n3h9oecd]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .mig-date-fld[b-m5n3h9oecd]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.mig-date-fld[b-m5n3h9oecd]  .gdp-icon {
    color: #1a56a7;
}

.mig-date-fld[b-m5n3h9oecd]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-m5n3h9oecd] {
    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-m5n3h9oecd] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-m5n3h9oecd] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* /Components/Pages/Yarn/ProdPlanCapacity.razor.rz.scp.css */
/* =====================================================================
   GAINS — ProdPlanCapacity.razor.css   (Yarn → Prod Plan Capacity, page-scoped)
   Mirrors YarnPackingGrid.razor.css; shell classes come from masters-forms.css.
   ===================================================================== */

.ppc-page[b-wscgus64gq] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ppc-page .mu-card[b-wscgus64gq] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

.ypg-wrap[b-wscgus64gq] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-wscgus64gq] {
    flex-shrink: 0;
}

.bspl-footer-right[b-wscgus64gq] {
    font-size: inherit;
    color: inherit;
}

.ypg-foot-left[b-wscgus64gq] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ypg-table .ch-num[b-wscgus64gq] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ypg-table thead th.ch-num[b-wscgus64gq] {
    text-align: right;
}

.ypg-table thead th[b-wscgus64gq] {
    background: #306b9c;
}

.ypg-table tbody tr:hover td[b-wscgus64gq] {
    background: #E2F5EE;
}

/* Month-Date pivot */
.ppc-day[b-wscgus64gq] {
    min-width: 54px;
}

.ppc-month[b-wscgus64gq] {
    font-weight: 600;
    white-space: nowrap;
}

.ppc-cell[b-wscgus64gq] {
    vertical-align: top;
}

.ppc-lot[b-wscgus64gq] {
    display: block;
    color: #5b6b7f;
    font-size: 11px;
    line-height: 1.2;
}

.ypg-table td.ppc-over[b-wscgus64gq] {
    background: #fdecea;
    color: #a94442;
    font-weight: 600;
}

.ppc-hint[b-wscgus64gq] {
    font-size: 12px;
    color: #5b6b7f;
    margin-top: 4px;
}

/* Filters button — classic Gains green */
.mu-btn.ypg-filters-btn[b-wscgus64gq] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ypg-filters-btn:hover[b-wscgus64gq] {
        background: #23923e;
        border-color: #23923e;
    }

/* Filter drawer date boxes + clear-date icon (::deep: .gdp-wrap is rendered by GlobalDatepicker) */
.ypg-date-fld[b-wscgus64gq]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-wscgus64gq]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-wscgus64gq]  .gdp-wrap:focus,
    .ypg-date-fld[b-wscgus64gq]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-wscgus64gq]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-wscgus64gq]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-wscgus64gq]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-wscgus64gq] {
    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-wscgus64gq] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-wscgus64gq] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Capacity bands + help popup */
.ypg-table td.ppc-b0[b-wscgus64gq] { background: #fff; }
.ypg-table td.ppc-b1[b-wscgus64gq] { background: #8fd0f7; }
.ypg-table td.ppc-b2[b-wscgus64gq] { background: #1e8a2e; color: #fff; }
.ypg-table td.ppc-b3[b-wscgus64gq] { background: #8b0000; color: #fff; }
.ypg-table td.ppc-b2 .ppc-lot[b-wscgus64gq], .ypg-table td.ppc-b3 .ppc-lot[b-wscgus64gq] { color: #eee; }

.ppc-help-btn[b-wscgus64gq] {
    width: 20px; height: 20px; border-radius: 50%; border: 0; margin-left: 6px;
    background: #306b9c; color: #fff; font-weight: 700; cursor: pointer; line-height: 20px; padding: 0;
}
.ppc-help-overlay[b-wscgus64gq] { z-index: 1190; }
.ppc-help[b-wscgus64gq] {
    position: fixed; z-index: 1200; top: 30%; left: 50%; transform: translateX(-50%);
    width: 320px; background: #f1f2f4; border: 1px solid #999; box-shadow: 0 6px 24px rgba(0,0,0,.3);
}
.ppc-help-hdr[b-wscgus64gq] {
    display: flex; justify-content: space-between; align-items: center;
    background: #3d5f8f; color: #fff; font-weight: 700; padding: 6px 10px;
}
.ppc-help-hdr button[b-wscgus64gq] { background: #d9534f; color: #fff; border: 1px solid #fff; width: 22px; height: 22px; cursor: pointer; }
.ppc-help-body[b-wscgus64gq] { list-style: none; margin: 0; padding: 14px 16px; display: grid; gap: 14px; font-weight: 600; }
.ppc-sw[b-wscgus64gq] { display: inline-block; width: 15px; height: 15px; margin-right: 8px; vertical-align: middle; border: 1px solid #ccc; }
.ppc-sw.ppc-b0[b-wscgus64gq] { background: #fff; }
.ppc-sw.ppc-b1[b-wscgus64gq] { background: #8fd0f7; }
.ppc-sw.ppc-b2[b-wscgus64gq] { background: #1e8a2e; }
.ppc-sw.ppc-b3[b-wscgus64gq] { background: #8b0000; }
/* /Components/Pages/Yarn/ProdPlanEntry.razor.rz.scp.css */
/* ProdPlanEntry — only the rules specific to this form. The shared .mi-* entry-form look lives in wwwroot/CSS/entry-forms.css */

.mi-page[b-boiqhznn1r]::before {
    content: "";
    display: block;
    position: sticky;
    top: 0;
    height: 16px;
    margin-top: -16px;
    margin-bottom: 0;
    background: var(--bg);
    z-index: 60;
}

.mi-sticky[b-boiqhznn1r] {
    position: sticky;
    top: 16px;
    z-index: 40;
}

.mi-recent-sub[b-boiqhznn1r] {
    font-size: 10px;
    color: var(--avc-muted-light);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mi-tab:hover:not(:disabled)[b-boiqhznn1r] {
    color: var(--avc-header-bg);
}

.mi-tab:disabled[b-boiqhznn1r] {
    opacity: .55;
    cursor: not-allowed;
}

.mi-input:disabled[b-boiqhznn1r] {
    background: #f3f4f6;
    color: var(--avc-muted-light);
}

.mi-input-ro[b-boiqhznn1r] {
    background: #f3f4f6;
    color: var(--avc-muted);
    display: flex;
    align-items: center;
    overflow: hidden;
    white-space: nowrap;
}

.mi-row[b-boiqhznn1r]  .gdp-input {
    height: 100%;
    box-sizing: border-box;
}

.mi-sec-title[b-boiqhznn1r] {
    margin: 6px 0 10px;
    padding-top: 14px;
    border-top: 1px solid var(--avc-border);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-accent-dark);
}

.mi-checks[b-boiqhznn1r] {
    display: flex;
    align-items: center;
    gap: 18px;
    min-height: 36px;
    font-size: 13px;
}

.mi-checks label[b-boiqhznn1r], .mi-tcheck[b-boiqhznn1r] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    font-size: 13px;
}

.mi-checks input[type=checkbox][b-boiqhznn1r], .mi-tcheck input[type=checkbox][b-boiqhznn1r] {
    width: 16px;
    height: 16px;
    accent-color: var(--avc-accent);
    cursor: pointer;
}

.mi-items[b-boiqhznn1r] {
    margin-top: 10px;
    padding-top: 4px;
}

.mi-lines-scroll[b-boiqhznn1r] {
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    overflow: auto;
}

.mi-gap[b-boiqhznn1r] {
    margin-top: 14px;
}

.mi-lines-table th[b-boiqhznn1r] {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 9px 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    text-align: left;
    background: #306B9C;
    color: #fff;
    border-bottom: none;
}

.mi-lines-table tbody tr:nth-child(even) td[b-boiqhznn1r] {
    background: #f6f8fd;
}

.mi-lines-table tbody tr:hover td[b-boiqhznn1r] {
    background: var(--avc-accent-bg);
}

.mi-lines-table tbody tr:last-child td[b-boiqhznn1r] {
    border-bottom: none;
}

@media (max-width: 900px) {
    .mi-shell[b-boiqhznn1r] {
        flex-direction: column;
        border-radius: 14px;
    }
}

@media (max-width: 760px) {
    .mi-sticky[b-boiqhznn1r], .mi-sidebar[b-boiqhznn1r] {
        top: 8px;
    }
}

.ppr-wrap[b-boiqhznn1r] {
    padding: 16px 24px 24px;
}

.ppr-msg[b-boiqhznn1r] {
    padding: 40px 0;
    text-align: center;
    color: var(--avc-muted);
}

.ppr-sheet[b-boiqhznn1r] {
    max-width: 790px;
    font-family: Arial, 'Segoe UI', sans-serif;
    font-size: 12px;
    color: #111827;
}

.ppr-titlebar[b-boiqhznn1r] {
    position: relative;
    text-align: center;
    padding: 8px 0 14px;
}

.ppr-title[b-boiqhznn1r] {
    font-size: 15px;
    font-weight: 700;
}

.ppr-print[b-boiqhznn1r] {
    position: absolute;
    right: 8px;
    top: 0;
    border: none;
    background: none;
    font-size: 26px;
    color: #6b7280;
    cursor: pointer;
}

.ppr-print:hover[b-boiqhznn1r] {
    color: #111827;
}

.ppr-grid3[b-boiqhznn1r] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    row-gap: 6px;
    padding: 0 8px;
}

.ppr-grid2[b-boiqhznn1r] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    row-gap: 6px;
    column-gap: 24px;
    padding: 8px;
}

.ppr-kv[b-boiqhznn1r] {
    display: grid;
    grid-template-columns: 110px 1fr;
}

.ppr-hr[b-boiqhznn1r] {
    border: none;
    border-top: 1px solid #9ca3af;
    margin: 14px 0;
}

.ppr-tbl[b-boiqhznn1r] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 14px;
}

.ppr-tbl th[b-boiqhznn1r] {
    background: #e5e7eb;
    text-align: left;
    font-weight: 700;
    padding: 5px 8px;
    border-bottom: 1px solid silver;
}

.ppr-tbl td[b-boiqhznn1r] {
    padding: 5px 8px;
}

.ppr-comp[b-boiqhznn1r] {
    display: grid;
    grid-template-columns: 150px 1fr;
    padding: 0 8px;
    margin-bottom: 4px;
}

.ppr-sub[b-boiqhznn1r] {
    font-weight: 700;
    padding: 0 8px;
}

.ppr-challan[b-boiqhznn1r] {
    margin-top: 6px;
}

.ppw-wrap[b-boiqhznn1r] {
    padding: 16px 24px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ppw-band[b-boiqhznn1r] {
    background: #4a7fb5;
    color: #fff;
    padding: 10px 14px;
    border-radius: 6px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 32px;
    font-size: 13px;
}

.ppw-party[b-boiqhznn1r] {
    font-weight: 600;
}

.ppw-k[b-boiqhznn1r] {
    opacity: .8;
}

.ppw-filter[b-boiqhznn1r] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 20px;
    font-size: 13px;
}

.ppw-filter label[b-boiqhznn1r] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.ppw-filter .mi-input[b-boiqhznn1r] {
    width: 150px;
}

.ppw-filter .ppw-mic[b-boiqhznn1r] {
    width: 70px;
}

.ppw-go[b-boiqhznn1r] {
    padding: 6px 12px;
}

.ppw-scroll[b-boiqhznn1r] {
    overflow: auto;
    max-height: 340px;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
}

.ppw-tbl[b-boiqhznn1r] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.ppw-tbl th[b-boiqhznn1r] {
    background: #4a7fb5;
    color: #fff;
    text-align: left;
    padding: 8px 10px;
    position: sticky;
    top: 0;
}

.ppw-tbl td[b-boiqhznn1r] {
    padding: 6px 10px;
    border-bottom: 1px solid #f0f0f0;
}

.ppw-tbl .text-end[b-boiqhznn1r] {
    text-align: right;
}

.ppw-assigned-bar[b-boiqhznn1r] {
    background: #4a7fb5;
    color: #fff;
    padding: 8px 14px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 13px;
}

.ppw-sub[b-boiqhznn1r] {
    font-weight: 700;
    font-size: 14px;
}

.ppo-ordrow[b-boiqhznn1r] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.ppo-ordrow .mi-input[b-boiqhznn1r] {
    flex: 1;
    min-width: 0;
}

.ppo-magnify[b-boiqhznn1r] {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    color: #1a56a7;
    cursor: pointer;
}

.ppo-magnify:hover[b-boiqhznn1r] {
    background: #eef2fd;
}

.ppo-overlay[b-boiqhznn1r] {
    z-index: 1300;
}

.ppo-modal[b-boiqhznn1r] {
    max-width: 860px;
    width: calc(100vw - 32px);
    height: 500px;
    max-height: 80vh;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ppo-search[b-boiqhznn1r] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

.ppo-search .uf-input[b-boiqhznn1r] {
    flex: 1 1 auto;
    min-width: 0;
}

.ppo-code[b-boiqhznn1r] {
    flex: 0 1 180px !important;
}

.ppo-party[b-boiqhznn1r] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
}

.ppo-party[b-boiqhznn1r]  .lga-wrap {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
}

.ppo-party[b-boiqhznn1r]  .lga-wrap input {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    margin: 0;
}

.ppo-go[b-boiqhznn1r] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

.ppo-go:hover[b-boiqhznn1r] {
    background: #159a80;
}

.ppo-body[b-boiqhznn1r] {
    flex: 1 1 0;
    min-height: 0;
    max-height: 340px;
    overflow-y: auto;
    overflow-x: hidden;
}

.ppo-empty[b-boiqhznn1r] {
    padding: 28px 16px;
    text-align: center;
    color: #64748b;
    font-size: 13px;
}

.ppo-row[b-boiqhznn1r] {
    cursor: pointer;
}

.ppo-row:hover td[b-boiqhznn1r] {
    background: #f1f5f9;
}

.ppo-idx[b-boiqhznn1r] {
    width: 56px;
}

.mu-table tbody td.ppo-idx[b-boiqhznn1r] {
    color: #1a56a7;
    font-weight: 600;
}

.ppo-name[b-boiqhznn1r] {
    color: #1a56a7;
    font-weight: 500;
}

.ppo-body .mu-table thead th[b-boiqhznn1r] {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: normal;
    vertical-align: middle;
    text-align: left;
    white-space: nowrap;
    background: #306B9C;
    color: #fff;
}

@media (max-width: 768px) {
    .ppo-search[b-boiqhznn1r] {
        flex-wrap: wrap;
    }
    .ppo-search .uf-input[b-boiqhznn1r], .ppo-code[b-boiqhznn1r], .ppo-party[b-boiqhznn1r] {
        flex: 1 1 100% !important;
    }
}

.mi-row > span.ppl-bold[b-boiqhznn1r] {
    font-weight: 800;
    color: var(--avc-text);
}

.ppl-lot-row[b-boiqhznn1r] {
    display: flex;
    gap: 8px;
    align-items: stretch;
    min-width: 0;
}

.ppl-lot-row .mi-input[b-boiqhznn1r] {
    flex: 1 1 auto;
    min-width: 0;
}

.ppl-lot-btn[b-boiqhznn1r] {
    flex: 0 0 40px;
    justify-content: center;
    padding: 0;
    height: 36px;
}

.ppl-pop-bg[b-boiqhznn1r] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(3px);
}

.ppl-pop[b-boiqhznn1r] {
    width: min(560px, 94vw);
    max-height: 82vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.ppl-pop-hdr[b-boiqhznn1r] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 20px;
    background: #306B9C;
    color: #fff;
    font-weight: 600;
}

.ppl-pop-x[b-boiqhznn1r] {
    background: none;
    border: none;
    color: #fff;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.ppl-pop-filters[b-boiqhznn1r] {
    display: flex;
    gap: 10px;
    padding: 14px 20px;
    border-bottom: 1px solid #e5e7eb;
}

.ppl-pop-filters .mi-input[b-boiqhznn1r] {
    flex: 1;
    min-width: 0;
}

.ppl-pop-body[b-boiqhznn1r] {
    padding: 10px 20px 18px;
    overflow: auto;
    min-height: 120px;
}

.ppl-msg[b-boiqhznn1r] {
    padding: 14px 4px;
    color: #64748b;
    font-size: 13px;
}

.ppl-tbl[b-boiqhznn1r] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.ppl-tbl th[b-boiqhznn1r] {
    position: sticky;
    top: 0;
    background: #306B9C;
    color: #fff;
    padding: 8px 10px;
    text-align: left;
}

.ppl-tbl td[b-boiqhznn1r] {
    padding: 6px 10px;
    border-bottom: 1px solid #f3f4f6;
}

.ppl-link[b-boiqhznn1r] {
    font-weight: 700;
    color: #306B9C;
    text-decoration: none;
}

.ppl-link:hover[b-boiqhznn1r] {
    text-decoration: underline;
}

.mi-short .mi-lines-table tbody tr td[b-boiqhznn1r] {
    background: #ffffff;
    border-bottom: none;
}

.mi-short .mi-lines-table tbody tr:hover td[b-boiqhznn1r] {
    background: #ffffff;
}

/* Spinning Type / Type grids size to their rows (no fixed-height empty gap) — the common fixed height is for the long item grids only */
.mi-items-scroll.mi-short[b-boiqhznn1r] { height: auto; max-height: 260px; }
@media (max-width: 900px) {
    .mi-items-scroll.mi-short[b-boiqhznn1r] { height: auto; }
}
/* /Components/Pages/Yarn/ProdPlanGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — ProdPlanGrid.razor.css   (Yarn → Prod Plan Grid, page-scoped)
   Same look as YarnPackingGrid; shell classes come from masters-forms.css.
   ===================================================================== */

.ypg-page[b-gyn9or45mw] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ypg-page .mu-card[b-gyn9or45mw] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .ypg-page .mu-toolbar[b-gyn9or45mw] {
        flex-shrink: 0;
    }

.ypg-wrap[b-gyn9or45mw] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-gyn9or45mw] {
    flex-shrink: 0;
}

.bspl-footer-right[b-gyn9or45mw] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-gyn9or45mw] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ypg-foot-left[b-gyn9or45mw] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ypg-table .ch-num[b-gyn9or45mw] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ypg-table thead th.ch-num[b-gyn9or45mw] {
    text-align: right;
}

.ypg-table .ch-party[b-gyn9or45mw] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mu-btn.ypg-filters-btn[b-gyn9or45mw] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ypg-filters-btn:hover[b-gyn9or45mw] {
        background: #23923e;
        border-color: #23923e;
    }

.ypg-link[b-gyn9or45mw] {
    font-weight: 700;
    color: #4169E1;
    text-decoration: none;
}

    .ypg-link:hover[b-gyn9or45mw] {
        text-decoration: underline;
    }

.ypg-table tbody tr:hover td[b-gyn9or45mw] {
    background: #E2F5EE;
}

@media (max-width: 767px) {
    .ypg-table .ch-party[b-gyn9or45mw] { max-width: 140px; }
}

.ypg-table thead th[b-gyn9or45mw] {
    background: #306b9c;
}

.ypg-date-fld[b-gyn9or45mw]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-gyn9or45mw]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-gyn9or45mw]  .gdp-wrap:focus,
    .ypg-date-fld[b-gyn9or45mw]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-gyn9or45mw]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-gyn9or45mw]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-gyn9or45mw]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-gyn9or45mw] {
    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-gyn9or45mw] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-gyn9or45mw] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

.ypg-led-row[b-gyn9or45mw] {
    display: flex;
    align-items: stretch;
    gap: 8px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

    .ypg-led-row[b-gyn9or45mw]  .lga-wrap {
        flex: 1 1 auto;
        min-width: 0;
        display: flex;
    }

    .ypg-led-row[b-gyn9or45mw]  .lga-wrap input {
        flex: 1 1 auto;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        height: 34px;
        margin: 0;
    }

.ypg-led-btn[b-gyn9or45mw] {
    flex: 0 0 38px;
    width: 38px;
    height: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}
/* /Components/Pages/Yarn/StockConsumption.razor.rz.scp.css */
/* =====================================================================
   GAINS — StockConsumption.razor.css   (Yarn → Stock Consumption, page-scoped)
   Same look as YarnPackingGrid; shell classes come from masters-forms.css.
   ===================================================================== */

.sc-page[b-wzf5r5x482] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .sc-page .mu-card[b-wzf5r5x482] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .sc-page .mu-toolbar[b-wzf5r5x482] {
        flex-shrink: 0;
    }

.sc-wrap[b-wzf5r5x482] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-wzf5r5x482] {
    flex-shrink: 0;
}

.bspl-footer-right[b-wzf5r5x482] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-wzf5r5x482] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.sc-foot-left[b-wzf5r5x482] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.sc-table .text-end[b-wzf5r5x482] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.sc-table thead th.text-end[b-wzf5r5x482] {
    text-align: right;
}

.sc-table tbody td[b-wzf5r5x482] {
    white-space: nowrap;
}

/* Filters button — classic Gains green */
.mu-btn.sc-filters-btn[b-wzf5r5x482] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.sc-filters-btn:hover[b-wzf5r5x482] {
        background: #23923e;
        border-color: #23923e;
    }

.sc-table tbody tr:hover td[b-wzf5r5x482] {
    background: #E2F5EE;
}

/* Header colour */
.sc-table thead th[b-wzf5r5x482] {
    background: #306b9c;
}

/* Filter drawer date boxes + clear-date icon (same as YarnPackingGrid).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.sc-date-fld[b-wzf5r5x482]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .sc-date-fld[b-wzf5r5x482]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .sc-date-fld[b-wzf5r5x482]  .gdp-wrap:focus,
    .sc-date-fld[b-wzf5r5x482]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .sc-date-fld[b-wzf5r5x482]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.sc-date-fld[b-wzf5r5x482]  .gdp-icon {
    color: #1a56a7;
}

.sc-date-fld[b-wzf5r5x482]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-wzf5r5x482] {
    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-wzf5r5x482] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-wzf5r5x482] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* ItemAutofill → master 32px input look (child component markup) */
.sc-item-fld[b-wzf5r5x482]  input {
    width: 100%;
    height: 32px;
    box-sizing: border-box;
    padding: 6px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    font-size: 13px;
    font-family: inherit;
    color: #1a2537;
}

    .sc-item-fld[b-wzf5r5x482]  input:focus {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

/* ── Toast ── */
.sc-toast[b-wzf5r5x482] {
    position: fixed;
    right: 20px;
    bottom: 70px;
    z-index: 1400;
    max-width: 360px;
    padding: 10px 14px;
    border-radius: 9px;
    background: #15803d;
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    box-shadow: 0 6px 18px rgba(15, 23, 42, .2);
}

    .sc-toast.err[b-wzf5r5x482] {
        background: #dc2626;
    }
/* /Components/Pages/Yarn/YarnDashboard.razor.rz.scp.css */
/* =====================================================================
   YarnDashboard.razor.css
   Uses the app's shared look from masters-forms.css / standard.css:
   .mu-card surface (white, #dde3ed border, 8px radius, soft shadow),
   .mu-table header #306B9C + zebra #f7f9fc + hover #eef4fb, .mu-btn buttons
   (#dde3ed border, primary #1a56a7), text #1a2537, accent teal #1ab394.
   Page chrome (bspl-title-block, mu-drawer, mu-btn, ...) is shared too.
   Only dashboard-specific layout lives here.
   ===================================================================== */

.yd-page[b-35iqv8nprv] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f3f3f4;
    font-family: 'Segoe UI', 'Open Sans', Arial, sans-serif;
}

    .yd-page > .bspl-title-block[b-35iqv8nprv] {
        flex-shrink: 0;
    }

/* Drawer: pinned header/footer, scrolling body (same fix as StockConsumption). */
.mu-drawer[b-35iqv8nprv] {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
}

.mu-drawer-body[b-35iqv8nprv] {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    position: static !important;
    padding-top: 0 !important;
}

    .mu-drawer-body > .mu-drawer-section:first-child[b-35iqv8nprv] {
        margin-top: 0 !important;
    }

.mu-drawer-foot[b-35iqv8nprv] {
    position: static !important;
    flex-shrink: 0 !important;
}

/* ── Scrolling content ── */
.yd-content[b-35iqv8nprv] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 14px 16px 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.yd-empty-page[b-35iqv8nprv] {
    padding: 40px;
    text-align: center;
    color: #5a6577;
}

/* ── Card (same surface as .mu-card) ── */
.yd-box[b-35iqv8nprv] {
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.yd-box-hdr[b-35iqv8nprv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    background: #f7f9fc;
    border-bottom: 1px solid #dde3ed;
    color: #1a2537;
    height: 44px;
    flex-shrink: 0;
    padding: 0 14px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

    .yd-box-hdr small[b-35iqv8nprv] {
        font-size: 11px;
        font-weight: 600;
        color: #5a6577;
        text-transform: none;
        letter-spacing: 0;
        margin-left: 6px;
    }

.yd-box-body[b-35iqv8nprv] {
    padding: 14px;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.yd-row[b-35iqv8nprv] {
    display: grid;
    gap: 16px;
    align-items: stretch;
}

.yd-row-3[b-35iqv8nprv] {
    grid-template-columns: 3fr 4fr 5fr;
}

.yd-row-2b[b-35iqv8nprv] {
    grid-template-columns: 7fr 5fr;
}

.yd-row-2[b-35iqv8nprv] {
    grid-template-columns: 1fr 1fr;
}

/* ── Header buttons (same as .mu-btn) ── */
.yd-btns[b-35iqv8nprv] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.yd-btn[b-35iqv8nprv] {
    background: #fff;
    color: #1a2537;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .04em;
    font-family: inherit;
    padding: 4px 10px;
    cursor: pointer;
    text-transform: none;
}

    .yd-btn:hover[b-35iqv8nprv] {
        background: #f1f5f9;
    }

    .yd-btn.on[b-35iqv8nprv] {
        background: #1a56a7;
        color: #fff;
        border-color: #1a56a7;
    }

.yd-select[b-35iqv8nprv] {
    margin-left: 4px;
    font-size: 12px;
    height: 28px;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    background: #fff;
    color: #1a2537;
}

.yd-tag[b-35iqv8nprv] {
    border: 0;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    font-family: inherit;
    letter-spacing: .04em;
    padding: 4px 10px;
    border-radius: 3px;
    cursor: pointer;
    text-transform: uppercase;
}

    .yd-tag.green[b-35iqv8nprv] {
        background: #1ab394;
    }

    .yd-tag.cyan[b-35iqv8nprv] {
        background: #23c6c8;
    }

    .yd-tag.orange[b-35iqv8nprv] {
        background: #f8ac59;
    }

    .yd-tag.blue[b-35iqv8nprv] {
        background: #1976d2;
    }

.yd-x[b-35iqv8nprv] {
    background: transparent;
    border: 0;
    color: #1a2537;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

/* ── KPI row ── */
.yd-kpis[b-35iqv8nprv] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.yd-big[b-35iqv8nprv] {
    font-size: 26px;
    font-weight: 300;
    color: #1a2537;
    line-height: 1.15;
}

.yd-kpi-split[b-35iqv8nprv] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-top: 8px;
}

.yd-kpi-row[b-35iqv8nprv] {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    color: #5a6577;
    gap: 6px;
}

    .yd-kpi-row b[b-35iqv8nprv] {
        font-weight: 700;
        color: #1a2537;
    }

.yd-pct[b-35iqv8nprv] {
    font-size: 11px;
    color: #5a6577;
    margin-top: 2px;
}

.yd-bar[b-35iqv8nprv] {
    height: 5px;
    background: #e8edf4;
    border-radius: 3px;
    margin-top: 4px;
    overflow: hidden;
}

    .yd-bar i[b-35iqv8nprv] {
        display: block;
        height: 100%;
    }

/* ── Sales / Pur ── */
.yd-sales[b-35iqv8nprv] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 28%);
    gap: 24px;
    align-items: start;
}

.yd-sales-side[b-35iqv8nprv] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 6px;
}

.yd-sbar[b-35iqv8nprv] {
    margin-bottom: 8px;
}

.yd-sbar-row[b-35iqv8nprv] {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    color: #5a6577;
}

/* ── Charts ── */
.yd-chart[b-35iqv8nprv] {
    width: 100%;
    height: 220px;
}

.yd-chart-lg[b-35iqv8nprv] {
    height: 280px;
}

/* ── Plain tables (split / production / monthly) — .mu-table look ── */
.yd-table[b-35iqv8nprv] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    color: #1a2537;
}

    .yd-table thead th[b-35iqv8nprv] {
        background: #306B9C;
        color: #fff;
        text-align: left;
        font-weight: 600;
        font-size: 12.5px;
        padding: 10px 14px;
        white-space: nowrap;
        border-bottom: 1px solid #3f4754;
        position: sticky;
        top: 0;
    }

    .yd-table td[b-35iqv8nprv] {
        padding: 9px 14px;
        color: #1a2537;
        border-bottom: 1px solid #eef2f7;
    }

    .yd-table tbody tr:nth-child(even) td[b-35iqv8nprv] {
        background: #f7f9fc;
    }

    .yd-table tbody tr:hover td[b-35iqv8nprv] {
        background: #eef4fb;
    }

.yd-r[b-35iqv8nprv] {
    text-align: right !important;
}

.yd-empty[b-35iqv8nprv] {
    text-align: center;
    color: #5a6577;
    padding: 14px !important;
}

/* ── Statistics list ── */
.yd-stats[b-35iqv8nprv] {
    list-style: none;
    margin: 0;
    padding: 0;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    overflow: hidden;
}

    .yd-stats li[b-35iqv8nprv] {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 11px 14px;
        font-size: 13px;
        color: #1a2537;
    }

        .yd-stats li + li[b-35iqv8nprv] {
            border-top: 1px solid #eef2f7;
        }

        .yd-stats li:nth-child(even)[b-35iqv8nprv] {
            background: #f7f9fc;
        }

.yd-badge[b-35iqv8nprv] {
    width: 22px;
    height: 22px;
    border-radius: 4px;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.yd-stat-name[b-35iqv8nprv] {
    flex: 1;
}

.yd-stat-val[b-35iqv8nprv] {
    font-weight: 700;
}

/* ── Table + chart side by side (SLS / Production) ── */
.yd-split[b-35iqv8nprv] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}

.yd-split-tbl[b-35iqv8nprv] {
    max-height: 250px;
    overflow-y: auto;
    border: 1px solid #dde3ed;
    border-radius: 6px;
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

.yd-split-chart .yd-chart[b-35iqv8nprv] {
    height: 230px;
}

.yd-caption[b-35iqv8nprv] {
    text-align: center;
    font-size: 11px;
    color: #5a6577;
    margin-top: -4px;
}

/* ── Toast ── */
.yd-toast[b-35iqv8nprv] {
    position: fixed;
    right: 20px;
    bottom: 24px;
    background: #1ab394;
    color: #fff;
    padding: 10px 16px;
    border-radius: 4px;
    font-size: 13px;
    box-shadow: 0 4px 14px rgba(0,0,0,.2);
    z-index: 3000;
}

    .yd-toast.err[b-35iqv8nprv] {
        background: #ed5565;
    }

/* ── Responsive ── */
@media (max-width: 1200px) {
    .yd-kpis[b-35iqv8nprv] {
        grid-template-columns: repeat(2, 1fr);
    }


    .yd-row-3[b-35iqv8nprv],
    .yd-row-2b[b-35iqv8nprv],
    .yd-row-2[b-35iqv8nprv] {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .yd-kpis[b-35iqv8nprv] {
        grid-template-columns: 1fr;
    }

    .yd-split[b-35iqv8nprv] {
        grid-template-columns: 1fr;
    }

    .yd-content[b-35iqv8nprv] {
        padding: 10px;
    }
}

/* ── Desktop: fixed minimum heights so side-by-side cards line up ── */
@media (min-width: 1201px) {
    .yd-chart-lg[b-35iqv8nprv] {
        height: clamp(280px, 34vh, 420px);
    }

    .yd-row .yd-chart-lg[b-35iqv8nprv] {
        height: 340px;
    }

    .yd-split-tbl[b-35iqv8nprv] {
        height: 260px;
        max-height: none;
    }

    .yd-split-chart .yd-chart[b-35iqv8nprv] {
        height: 260px;
    }

    .yd-stats[b-35iqv8nprv] {
        min-height: 260px;
    }
}

/* Clickable header date range + clickable party names */
.yd-date-btn[b-35iqv8nprv] {
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: inherit;
    text-decoration: underline dotted;
}

.yd-date-btn i[b-35iqv8nprv] {
    margin-left: 6px;
}

.yd-link[b-35iqv8nprv] {
    color: #1a56a7;
    cursor: pointer;
    font-weight: 600;
}

    .yd-link:hover[b-35iqv8nprv] {
        text-decoration: underline;
    }

[b-35iqv8nprv] .yd-date-modal {
    max-width: 460px;
}

[b-35iqv8nprv] .yd-date-field {
    grid-template-columns: 110px 1fr;
    margin-bottom: 14px;
    position: relative;
}

/* Sales/Pur: chart + stats panel side by side down to 900px (stacks only below that) */
@media (max-width: 900px) {
    .yd-sales[b-35iqv8nprv] {
        grid-template-columns: 1fr;
    }
}

/* .yd-content is a scrolling flex column: cards (overflow:hidden → min-height 0) must never
   shrink to fit the viewport, or they collapse to a hairline (Sales/Pur card did). */
.yd-content > *[b-35iqv8nprv] {
    flex-shrink: 0;
}
/* /Components/Pages/Yarn/YarnDashGrid.razor.rz.scp.css */
/* YarnDashGrid — same look as masters-forms.css .mu-table (header #306B9C,
   zebra #f7f9fc, hover #eef4fb), plus sort arrows and Previous/Next pager. */

.ydg[b-bcuf73xnoa] {
    font-size: 13px;
    color: #1a2537;
}

.ydg-show[b-bcuf73xnoa] {
    margin-bottom: 10px;
    color: #1a2537;
}

.ydg-show-input[b-bcuf73xnoa] {
    width: 54px;
    height: 28px;
    margin: 0 4px;
    padding: 0 6px;
    text-align: center;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    font-size: 13px;
}

.ydg-scroll[b-bcuf73xnoa] {
    overflow: auto;
    scrollbar-width: thin;
    scrollbar-color: #b6e8db transparent;
}

.ydg-table[b-bcuf73xnoa] {
    width: 100%;
    border-collapse: collapse;
}

    .ydg-table thead th[b-bcuf73xnoa] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #306B9C;
        color: #fff;
        padding: 12px 26px 12px 14px;
        font-size: 12.5px;
        font-weight: 600;
        text-transform: uppercase;
        text-align: left;
        white-space: nowrap;
        cursor: pointer;
        user-select: none;
        border-bottom: 1px solid #3f4754;
    }

    .ydg-table td[b-bcuf73xnoa] {
        padding: 10px 14px;
        color: #1a2537;
        border-bottom: 1px solid #eef2f7;
        white-space: nowrap;
    }

    .ydg-table tbody tr:nth-child(even) td[b-bcuf73xnoa] {
        background: #f7f9fc;
    }

    .ydg-table tbody tr:hover td[b-bcuf73xnoa] {
        background: #eef4fb;
    }

    .ydg-table tfoot td[b-bcuf73xnoa] {
        background: #306B9C;
        color: #fff;
        font-weight: 700;
        border-bottom: 0;
    }

    .ydg-table thead th.ydg-num[b-bcuf73xnoa],
    .ydg-table td.ydg-num[b-bcuf73xnoa] {
        text-align: right;
    }

.ydg-empty[b-bcuf73xnoa] {
    text-align: center;
    padding: 14px !important;
    color: #5a6577 !important;
}

/* Sort arrows */
.ydg-sort[b-bcuf73xnoa] {
    position: absolute;
    right: 9px;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 12px;
}

    .ydg-sort[b-bcuf73xnoa]::before,
    .ydg-sort[b-bcuf73xnoa]::after {
        content: "";
        position: absolute;
        left: 0;
        border-left: 4px solid transparent;
        border-right: 4px solid transparent;
        opacity: .4;
    }

    .ydg-sort[b-bcuf73xnoa]::before {
        top: 0;
        border-bottom: 5px solid #fff;
    }

    .ydg-sort[b-bcuf73xnoa]::after {
        bottom: 0;
        border-top: 5px solid #fff;
    }

    .ydg-sort.asc[b-bcuf73xnoa]::before {
        opacity: 1;
    }

    .ydg-sort.desc[b-bcuf73xnoa]::after {
        opacity: 1;
    }

/* Pager */
.ydg-pager[b-bcuf73xnoa] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 4px;
    margin-top: 10px;
}

    .ydg-pager button[b-bcuf73xnoa] {
        background: #fff;
        border: 1px solid #dde3ed;
        border-radius: 3px;
        color: #1a2537;
        padding: 5px 12px;
        font-size: 12px;
        font-weight: 700;
        font-family: inherit;
        cursor: pointer;
    }

        .ydg-pager button:hover:not(:disabled)[b-bcuf73xnoa] {
            background: #f1f5f9;
        }

        .ydg-pager button:disabled[b-bcuf73xnoa] {
            color: #aab3c2;
            cursor: default;
        }

.ydg-pageno[b-bcuf73xnoa] {
    padding: 5px 12px;
    border: 1px solid #dde3ed;
    border-radius: 3px;
    background: #f7f9fc;
    font-size: 12px;
    color: #1a2537;
}

/* Desktop: grid body keeps a minimum height so cards never collapse to a thin strip. */
@media (min-width: 1201px) {
    .ydg-scroll[b-bcuf73xnoa] {
        min-height: 300px;
    }
}

/* ── Card-filling layout: totals footer pinned to the bottom of the card ── */
.ydg[b-bcuf73xnoa] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.ydg-scroll[b-bcuf73xnoa] {
    flex: 1 1 auto;
    min-height: 0;
}

.ydg-table[b-bcuf73xnoa] {
    height: 100%;
}

    .ydg-table tr.ydg-fill[b-bcuf73xnoa] {
        height: 100%;
    }

        .ydg-table tr.ydg-fill td[b-bcuf73xnoa] {
            padding: 0;
            border-bottom: 0;
            background: transparent !important;
        }

    .ydg-table tfoot td[b-bcuf73xnoa] {
        position: sticky;
        bottom: 0;
        z-index: 1;
    }

.ydg-link[b-bcuf73xnoa] {
    color: #1a56a7;
    cursor: pointer;
    font-weight: 600;
}

    .ydg-link:hover[b-bcuf73xnoa] {
        text-decoration: underline;
    }
/* /Components/Pages/Yarn/YarnPackingEntry.razor.rz.scp.css */
/* YarnPackingEntry — only the rules specific to this form. The shared .mi-* entry-form look lives in wwwroot/CSS/entry-forms.css */

.mi-shell[b-xlixe82ugg] {
    max-width: 1100px;
}

.mi-action-inner[b-xlixe82ugg] {
    max-width: 1100px;
}

.mi-item-entry .mi-item-num[b-xlixe82ugg] {
    flex: 1 1 100px;
    width: auto;
}

.ype-vrow[b-xlixe82ugg] {
    display: flex;
    gap: 6px;
    align-items: center;
}

.ype-vrow .mi-input[b-xlixe82ugg] {
    flex: 1;
    min-width: 0;
}

.mi-icon-box[b-xlixe82ugg] {
    width: 36px;
    height: 36px;
    flex: none;
    border: 1px solid var(--avc-border);
    border-radius: 8px;
    background: #fff;
    color: var(--avc-muted);
    cursor: pointer;
}

.mi-icon-box:hover[b-xlixe82ugg] {
    border-color: var(--avc-accent);
    color: var(--avc-accent-dark);
}

.ype-pop-bg[b-xlixe82ugg] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(3px);
}

.ype-pop[b-xlixe82ugg] {
    width: min(560px, 94vw);
    max-height: 82vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.ype-pop-hdr[b-xlixe82ugg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 20px;
    background: #4a7fb0;
    color: #fff;
    font-weight: 600;
}

.ype-pop-x[b-xlixe82ugg] {
    background: none;
    border: none;
    color: #fff;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.ype-pop-filters[b-xlixe82ugg] {
    padding: 14px 20px;
    border-bottom: 1px solid #1a56a7;
}

.ype-pop-row[b-xlixe82ugg] {
    display: grid;
    grid-template-columns: 60px 1fr auto;
    align-items: center;
    gap: 10px;
    font-size: 13px;
}

.ype-led-row[b-xlixe82ugg] {
    display: flex;
    align-items: stretch;
    gap: 8px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.ype-led-row[b-xlixe82ugg]  .lga-wrap {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
}

.ype-led-row[b-xlixe82ugg]  .lga-wrap input {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    height: 34px;
    margin: 0;
}

.ype-led-btn[b-xlixe82ugg] {
    flex: 0 0 38px;
    width: 38px;
    height: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}

.ype-pop-body[b-xlixe82ugg] {
    padding: 10px 20px 18px;
    overflow: auto;
    min-height: 120px;
}

.ype-vmsg[b-xlixe82ugg] {
    padding: 14px 4px;
    color: #64748b;
    font-size: 13px;
}

.ype-vlink[b-xlixe82ugg] {
    font-weight: 700;
    color: #4169E1;
    text-decoration: none;
}

.ype-vlink:hover[b-xlixe82ugg] {
    text-decoration: underline;
}

.ype-vtable[b-xlixe82ugg] {
    width: 100%;
}

.ype-table thead tr:not(.ype-add-row) th[b-xlixe82ugg], .ype-vtable thead th[b-xlixe82ugg] {
    background: #306b9c;
}

textarea.ype-addr[b-xlixe82ugg] {
    resize: none;
    min-height: 0;
}

.mi-item-entry.ype-entry[b-xlixe82ugg] {
    display: grid;
    grid-template-columns: 6% 22% 12% 13% 13% 13% 13% 8%;
    align-items: center;
    gap: 0;
    min-width: 620px;
    margin-bottom: 8px;
}

.mi-item-entry.ype-entry .mi-item-num[b-xlixe82ugg] {
    width: 100%;
    min-width: 0;
    flex: none;
    box-sizing: border-box;
    padding: 0 8px;
    margin: 0;
    text-align: right;
}

.mi-item-entry.ype-entry .mi-item-num:nth-of-type(1)[b-xlixe82ugg] {
    grid-column: span 2;
    text-align: left;
}

.mi-item-entry.ype-entry .mi-item-num + .mi-item-num[b-xlixe82ugg] {
    margin-left: 6px;
    width: calc(100% - 6px);
}

.mi-item-entry.ype-entry .mi-set-item[b-xlixe82ugg] {
    justify-self: center;
    height: 36px;
    padding: 0 14px;
}

.mi-items[b-xlixe82ugg] {
    overflow-x: auto;
}

.ype-addr-field[b-xlixe82ugg] {
    grid-column: span 2;
}

textarea.ype-addr[b-xlixe82ugg] {
    height: 64px;
    padding: 8px 10px;
    line-height: 1.4;
}

@media (max-width: 1100px) {
    .ype-addr-field[b-xlixe82ugg] {
        grid-column: span 2;
    }
}

@media (max-width: 760px) {
    .ype-addr-field[b-xlixe82ugg] {
        grid-column: 1;
    }
}

.ype-cols[b-xlixe82ugg] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 48px;
    margin-bottom: 4px;
}

.ype-col[b-xlixe82ugg] {
    min-width: 0;
}

.ype-row[b-xlixe82ugg] {
    display: grid;
    grid-template-columns: 130px minmax(0, 1fr);
    align-items: center;
    column-gap: 12px;
    margin-bottom: 12px;
}

.ype-row > span[b-xlixe82ugg] {
    font-size: 13px;
    font-weight: 400;
    color: var(--avc-text);
}

.ype-row-top[b-xlixe82ugg] {
    align-items: start;
}

.ype-row-top > span[b-xlixe82ugg] {
    padding-top: 9px;
}

.ype-row .ype-date[b-xlixe82ugg] {
    min-width: 0;
}

.ype-row .ype-date[b-xlixe82ugg]  .gdp-wrap {
    width: 100%;
    height: 36px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
}

.ype-row .mi-vno[b-xlixe82ugg] {
    height: 36px;
}

.ype-row .ype-vrow[b-xlixe82ugg] {
    min-width: 0;
}

@media (max-width: 900px) {
    .ype-cols[b-xlixe82ugg] {
        grid-template-columns: 1fr;
    }
    .ype-row[b-xlixe82ugg] {
        grid-template-columns: 110px minmax(0, 1fr);
    }
}
/* /Components/Pages/Yarn/YarnPackingGrid.razor.rz.scp.css */
/* =====================================================================
   GAINS — YarnPackingGrid.razor.css   (Yarn → Yarn Packing, page-scoped)
   Same look as MaterialIndentGrid; shell classes come from masters-forms.css.
   ===================================================================== */

.ypg-page[b-ml42mnsa6y] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

    .ypg-page .mu-card[b-ml42mnsa6y] {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .ypg-page .mu-toolbar[b-ml42mnsa6y] {
        flex-shrink: 0;
    }

.ypg-wrap[b-ml42mnsa6y] {
    flex: 1;
    overflow: auto;
    min-height: 0;
}

.mu-foot[b-ml42mnsa6y] {
    flex-shrink: 0;
}

.bspl-footer-right[b-ml42mnsa6y] {
    font-size: inherit;
    color: inherit;
}

.mu-pager[b-ml42mnsa6y] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ypg-foot-left[b-ml42mnsa6y] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.ypg-table .ch-num[b-ml42mnsa6y] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ypg-table thead th.ch-num[b-ml42mnsa6y] {
    text-align: right;
}

.ypg-table .ch-party[b-ml42mnsa6y] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Filters button — classic Gains green */
.mu-btn.ypg-filters-btn[b-ml42mnsa6y] {
    background: #27AE60;
    border-color: #27AE60;
}

    .mu-btn.ypg-filters-btn:hover[b-ml42mnsa6y] {
        background: #23923e;
        border-color: #23923e;
    }

/* Packing Id link */
.ypg-link[b-ml42mnsa6y] {
    font-weight: 700;
    color: #4169E1;
    text-decoration: none;
}

    .ypg-link:hover[b-ml42mnsa6y] {
        text-decoration: underline;
    }

.ypg-table tbody tr:hover td[b-ml42mnsa6y] {
    background: #E2F5EE;
}

@media (max-width: 767px) {
    .ypg-table .ch-party[b-ml42mnsa6y] { max-width: 140px; }
}

/* Header colour */
.ypg-table thead th[b-ml42mnsa6y] {
    background: #306b9c;
}

/* Filter drawer date boxes + clear-date icon — same as QG (.qg-date-fld / .gcp-trigger).
   ::deep because .gdp-wrap is rendered by GlobalDatepicker. */
.ypg-date-fld[b-ml42mnsa6y]  .gdp-wrap {
    height: 32px;
    padding: 0 8px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
    background: #fff;
    font-size: 13px;
    color: #1a2537;
}

    .ypg-date-fld[b-ml42mnsa6y]  .gdp-wrap:hover {
        border-color: #1a56a7;
    }

    .ypg-date-fld[b-ml42mnsa6y]  .gdp-wrap:focus,
    .ypg-date-fld[b-ml42mnsa6y]  .gdp-wrap:focus-within {
        border-color: #1a56a7;
        box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
        outline: none;
    }

    .ypg-date-fld[b-ml42mnsa6y]  .gdp-wrap.gdp-invalid {
        border-color: #c0392b;
    }

.ypg-date-fld[b-ml42mnsa6y]  .gdp-icon {
    color: #1a56a7;
}

.ypg-date-fld[b-ml42mnsa6y]  .gdp-value {
    font-weight: 400;
}

.gcp-trigger[b-ml42mnsa6y] {
    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-ml42mnsa6y] {
        background: #f5f5f5;
        border-color: #bbb;
    }

.gcp-icon[b-ml42mnsa6y] {
    width: 16px;
    height: 16px;
    object-fit: contain;
    display: block;
}

/* Ledger "L" button — same as ARAP (.arap-led-row / .arap-led-btn). LedgerAutofill is a child → ::deep. */
.ypg-led-row[b-ml42mnsa6y] {
    display: flex;
    align-items: stretch;
    gap: 8px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

    /* LedgerAutofill is a child component → ::deep. Box fills the row; same height as the L button. */
    .ypg-led-row[b-ml42mnsa6y]  .lga-wrap {
        flex: 1 1 auto;
        min-width: 0;
        display: flex;
    }

    .ypg-led-row[b-ml42mnsa6y]  .lga-wrap input {
        flex: 1 1 auto;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        height: 34px;
        margin: 0;
    }

.ypg-led-btn[b-ml42mnsa6y] {
    flex: 0 0 38px;
    width: 38px;
    height: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}
/* /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 — standard popup.
   Look comes from global masters-forms.css (.uf-overlay, .uf-modal,
   .uf-header/.uf-title/.uf-close, .uf-body, .uf-field, .uf-input,
   .uf-form-error, .uf-footer, .uf-btn/.uf-btn-new/.uf-btn-save).
   Only popup width, curve, spacing and the file picker live here.
   ===================================================================== */

/* Overlay: master .uf-overlay (dim + blur, top-aligned, z 1000).
   The DocumentGrid filter drawer (z 1200) is closed before this opens. */
.agd-overlay[b-vvw24nd4ad] {
    z-index: 1300;
}

/* Card: master .uf-modal, narrowed to the legacy popup size and curved
   like the other standard popups (GainsLanding, logout). */
.agd-modal[b-vvw24nd4ad] {
    max-width: 460px;
    border-radius: 12px;
}

/* Field rows: master .uf-field (label 112px | control). Spacing between
   rows is page-local by master's own note. */
.agd-body[b-vvw24nd4ad] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.agd-desc[b-vvw24nd4ad] {
    height: 90px;
    resize: none;
}

/* Messages: error = master .uf-form-error; success = same shape, green */
.agd-msg[b-vvw24nd4ad] {
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.agd-msg-ok[b-vvw24nd4ad] {
    padding: 10px 13px;
    border-radius: 9px;
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    color: #15803d;
    font-size: 12.5px;
}

/* File picker — native <input type=file> (InputFile), trimmed to the
   master input look; ::deep because InputFile is a child component. */
.agd-file[b-vvw24nd4ad] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

    .agd-file[b-vvw24nd4ad]  input[type="file"] {
        width: 100%;
        box-sizing: border-box;
        padding: 4px;
        border: 1px dashed #cbd5e1;
        border-radius: 5px;
        background: #fff;
        font-size: 12.5px;
        color: #1a2537;
        font-family: inherit;
        cursor: pointer;
    }

        .agd-file[b-vvw24nd4ad]  input[type="file"]:hover {
            border-color: #1ab99a;
        }

        .agd-file[b-vvw24nd4ad]  input[type="file"]::file-selector-button {
            margin-right: 10px;
            padding: 4px 12px;
            border: 1px solid #dde3ec;
            border-radius: 5px;
            background: #f1f5f9;
            color: #334155;
            font-size: 12px;
            font-weight: 700;
            font-family: inherit;
            cursor: pointer;
        }

.agd-filelist[b-vvw24nd4ad] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.agd-filechip[b-vvw24nd4ad] {
    background: #f0fdf9;
    color: #0f766e;
    border: 1px solid #cdeee4;
    border-radius: 10px;
    padding: 1px 8px;
    font-size: 11.5px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Footer: master .uf-footer, buttons right-aligned (Cancel · Save) */
.agd-foot[b-vvw24nd4ad] {
    justify-content: flex-end;
}

@media (max-width: 480px) {
    .agd-body .uf-field[b-vvw24nd4ad] {
        grid-template-columns: 1fr;
        gap: 5px;
    }

        .agd-body .uf-field > label[b-vvw24nd4ad] {
            padding-top: 0;
        }
}

/* Fiscal Year / Type dropdowns — native arrow sat jammed against the right
   border. Same custom chevron as DocumentTypeDropdown / DocumentGrid's
   Extension select: native arrow hidden, SVG chevron 12px in from the edge,
   right padding so text never runs under it. Vertical padding 0 so the
   text centres in master's 32px box without clipping. */
.agd-select[b-vvw24nd4ad] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    height: 32px;
    padding: 0 30px 0 8px;
    line-height: normal;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23555' stroke-width='1.5' fill='none'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 10px 6px;
    cursor: pointer;
}

    .agd-select[b-vvw24nd4ad]::-ms-expand {
        display: none;
    }
/* /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/CityAutofill.razor.rz.scp.css */
/* CityAutofill — same visual pattern as LedgerAutofill / LoginAutofill (cta- prefix). */
.cta-wrap[b-xrl5gdgoc4] {
    position: relative;
    width: 100%;
}

.cta-spin[b-xrl5gdgoc4] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 12px;
    pointer-events: none;
}

.cta-suggest[b-xrl5gdgoc4] {
    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;
}

    .cta-suggest li[b-xrl5gdgoc4] {
        display: flex;
        flex-direction: column;
        gap: 1px;
        padding: 7px 10px;
        border-radius: 6px;
        cursor: pointer;
        font-size: 13px;
        color: #1a2537;
    }

        .cta-suggest li:hover[b-xrl5gdgoc4],
        .cta-suggest li.active[b-xrl5gdgoc4] {
            background: #eef4fb;
        }

        .cta-suggest li.cta-empty[b-xrl5gdgoc4] {
            cursor: default;
            color: #94a3b8;
            font-size: 12.5px;
        }

            .cta-suggest li.cta-empty:hover[b-xrl5gdgoc4] {
                background: transparent;
            }

.cta-name[b-xrl5gdgoc4] {
    font-weight: 500;
}
/* /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:not(.uf-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:not(.uf-input):focus {
        border-color: #1AB99A;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26,185,154,.12);
    }

    [b-948ollbsmo] input:not(.uf-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 */
/* =====================================================================
   BatchLotQtyModal — popup chrome (overlay, header, body, footer, buttons,
   inputs) comes from the shared "uf-" system, and the grid now uses the
   shared "mu-" master grid (mu-table-wrap / mu-table / mu-idx / mu-del)
   from wwwroot/CSS/masters-forms.css — same look as the MGroup page.
   Only popup-specific sizing and alignment tweaks live here.
   ===================================================================== */

.blq-overlay[b-hr624q4nxj] {
    /* Opens on top of other voucher popups — keep it above the default
       uf-overlay layer. */
    z-index: 1050;
}

.blq-modal[b-hr624q4nxj] {
    max-width: 760px;
}

/* Grid sits edge to edge inside the popup body */
.blq-body[b-hr624q4nxj] {
    padding: 0;
}

/* mu-table-wrap is a fixed 540px on the master pages — let the popup
   grid size to its rows and scroll only when it gets tall. */
.blq-table-wrap[b-hr624q4nxj] {
    height: auto;
    max-height: 60vh;
}

/* Tighter rows than the full-page grid, since cells hold inputs. */
.blq-grid thead th[b-hr624q4nxj] {
    padding: 10px 12px;
}

.blq-grid tbody td[b-hr624q4nxj] {
    padding: 6px 12px;
    vertical-align: middle;
}

.blq-num[b-hr624q4nxj],
.blq-grid thead th.blq-num[b-hr624q4nxj] {
    text-align: right;
}

.blq-center[b-hr624q4nxj],
.blq-grid thead th.blq-center[b-hr624q4nxj] {
    text-align: center;
}

.blq-th-chk[b-hr624q4nxj] {
    width: 40px;
}

/* Right-align text typed into numeric inputs */
.blq-num .uf-input[b-hr624q4nxj] {
    text-align: right;
}

/* GRN/PUR inward grid: Depot dropdown + Mfg Dt datepicker need room. */
.blq-cell-depot[b-hr624q4nxj] {
    min-width: 160px;
}

.blq-cell-date[b-hr624q4nxj] {
    min-width: 150px;
}

.blq-error[b-hr624q4nxj] {
    color: #b91c1c;
    font-size: 12.5px;
    padding: 10px 12px 4px;
}
/* /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;
}

/* When a parent layout stretches sibling cards to equal height
   (align-items:stretch, e.g. SiteMaster's smx-cardrow, so expanded
   cards' bottoms line up), a COLLAPSED card must opt out of that
   stretch — otherwise it keeps the tall sibling's height with only
   the header content, leaving empty space below it. */
.cc-card.cc-collapsed[b-3spza5bpf9] {
    align-self: flex-start;
    flex: 0 0 auto;
}
/* /Components/Shared/DocumentViewer.razor.rz.scp.css */

.dv-documents-button[b-wuiatyrrk7] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    border: 1px solid #d5d9e2;
    background: #fff;
    color: #3156a3;
    border-radius: 6px;
    padding: 5px 10px;
    cursor: pointer;
    font-size: 13px;
}

    .dv-documents-button:hover[b-wuiatyrrk7] {
        background: #f5f7fb;
    }

.dv-doc-icon[b-wuiatyrrk7] {
    font-size: 15px;
}

.dv-single-image[b-wuiatyrrk7] {
    display: inline-block;
    cursor: pointer;
}

.dv-direct-image[b-wuiatyrrk7] {
    width: 80px;
    height: 60px;
    object-fit: cover;
    border-radius: 5px;
    border: 1px solid #ddd;
    transition: transform .15s ease;
}

    .dv-direct-image:hover[b-wuiatyrrk7] {
        transform: scale(1.05);
    }

.dv-document-link[b-wuiatyrrk7] {
    border: none;
    background: none;
    color: #3156a3;
    cursor: pointer;
}

.dv-overlay[b-wuiatyrrk7] {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: rgba(0, 0, 0, .55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 25px;
}

.dv-popup[b-wuiatyrrk7] {
    width: min(850px, 95vw);
    max-height: 85vh;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 15px 50px rgba(0,0,0,.25);
}

.dv-viewer[b-wuiatyrrk7] {
    width: min(1100px, 95vw);
    height: min(90vh, 850px);
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 15px 50px rgba(0,0,0,.3);
}

.dv-header[b-wuiatyrrk7] {
    height: 52px;
    padding: 0 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid #e4e6eb;
    background: #fff;
}

.dv-title[b-wuiatyrrk7] {
    font-weight: 600;
    color: #252a34;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.dv-close[b-wuiatyrrk7] {
    width: 34px;
    height: 34px;
    border: none;
    background: transparent;
    border-radius: 50%;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
    color: #555;
}

    .dv-close:hover[b-wuiatyrrk7] {
        background: #f0f1f4;
    }

.dv-document-list[b-wuiatyrrk7] {
    padding: 10px;
    overflow-y: auto;
}

.dv-document-row[b-wuiatyrrk7] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    border-bottom: 1px solid #eee;
    cursor: pointer;
    border-radius: 6px;
}

    .dv-document-row:hover[b-wuiatyrrk7] {
        background: #f6f8fc;
    }

.dv-file-icon[b-wuiatyrrk7] {
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f3f7;
    border-radius: 6px;
    font-size: 18px;
}

.dv-file-info[b-wuiatyrrk7] {
    flex: 1;
    min-width: 0;
}

.dv-file-name[b-wuiatyrrk7] {
    font-size: 13px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dv-file-type[b-wuiatyrrk7] {
    font-size: 11px;
    color: #777;
    margin-top: 3px;
}

.dv-view[b-wuiatyrrk7] {
    color: #3156a3;
    font-size: 12px;
}

.dv-viewer-body[b-wuiatyrrk7] {
    flex: 1;
    min-height: 0;
    background: #202124;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: auto;
    padding: 15px;
}

.dv-preview-image[b-wuiatyrrk7] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    box-shadow: 0 5px 20px rgba(0,0,0,.3);
}

.dv-preview-pdf[b-wuiatyrrk7] {
    width: 100%;
    height: 100%;
    border: none;
    background: #fff;
}

.dv-unsupported[b-wuiatyrrk7] {
    color: white;
    text-align: center;
}

.dv-viewer-meta[b-wuiatyrrk7] {
    flex-shrink: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
    padding: 10px 16px;
    border-top: 1px solid #e4e6eb;
    background: #fff;
    font-size: 12px;
    color: #555;
}

.dv-meta-item[b-wuiatyrrk7] {
    white-space: nowrap;
}

    .dv-unsupported a[b-wuiatyrrk7] {
        display: block;
        margin-top: 10px;
        color: white;
    }

.dv-vnum[b-wuiatyrrk7] {
    font-size: 13px;
    font-weight: 700;
    color: #252a34;
}

.dv-file-name-header[b-wuiatyrrk7] {
    font-size: 11px;
    color: #777;
    margin-top: 2px;
    max-width: 500px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dv-header-actions[b-wuiatyrrk7] {
    display: flex;
    align-items: center;
    gap: 5px;
}

.dv-download[b-wuiatyrrk7] {
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #3156a3;
    text-decoration: none;
    cursor: pointer;
}

    .dv-download:hover[b-wuiatyrrk7] {
        background: #f0f1f4;
    }

    .dv-download svg[b-wuiatyrrk7] {
        width: 19px;
        height: 19px;
    }

.dv-close[b-wuiatyrrk7] {
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    border-radius: 50%;
    cursor: pointer;
    color: #555;
}

    .dv-close svg[b-wuiatyrrk7] {
        width: 19px;
        height: 19px;
    }

    .dv-close:hover[b-wuiatyrrk7] {
        background: #f0f1f4;
    }
/* /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/Dropdown/LoginDropdown.razor.rz.scp.css */
/* LoginDropdown — slim chevron instead of the native arrow (uf-input does the box). */
.lgd-select[b-vp12g5oczj] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

    .lgd-select:disabled[b-vp12g5oczj] {
        background-color: #f1f5f9;
        cursor: not-allowed;
    }
/* /Components/Shared/Dropdown/SiteDropdown.razor.rz.scp.css */
/* SiteDropdown — slim chevron instead of the native arrow (uf-input does the box). */
.sd-select[b-nhg850p6y4] {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px;
    background: #fff 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' fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    text-overflow: ellipsis;
    cursor: pointer;
}

    .sd-select:disabled[b-nhg850p6y4] {
        background-color: #f1f5f9;
        cursor: not-allowed;
    }
/* /Components/Shared/Dropdown/SiteMultiSelect.razor.rz.scp.css */
/* =====================================================================
   SiteMultiSelect — dropdown-style trigger + checkbox panel.
   Trigger reuses the master uf-input box (32px, #cbd5e1, 5px radius).
   Panel is position:absolute under the trigger, so it works inside
   transformed containers like mu-drawer.
   ===================================================================== */

.sms[b-8izrr6kq1e] {
    position: relative;
    width: 100%;
}

.sms-trigger[b-8izrr6kq1e] {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    text-align: left;
    cursor: pointer;
    background: #fff;
}

    .sms-trigger:disabled[b-8izrr6kq1e] {
        background: #f1f5f9;
        cursor: not-allowed;
    }

.sms.open .sms-trigger[b-8izrr6kq1e] {
    border-color: #1a56a7;
    box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
}

.sms-text[b-8izrr6kq1e] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: #1a2537;
}

    .sms-text.sms-ph[b-8izrr6kq1e] {
        color: #94a3b8;
    }

.sms-badge[b-8izrr6kq1e] {
    flex-shrink: 0;
    min-width: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #1ab99a;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
}

.sms-caret[b-8izrr6kq1e] {
    flex-shrink: 0;
    font-size: 10px;
    color: #64748b;
    transition: transform 0.15s;
}

.sms.open .sms-caret[b-8izrr6kq1e] {
    transform: rotate(180deg);
}

/* Click-outside catcher */
.sms-overlay[b-8izrr6kq1e] {
    position: fixed;
    inset: 0;
    z-index: 1300;
    background: transparent;
}

.sms-panel[b-8izrr6kq1e] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 1301;
    min-width: 220px;
    background: #fff;
    border: 1px solid #dde3ed;
    border-radius: 8px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.16);
    overflow: hidden;
}

/* Search */
.sms-search[b-8izrr6kq1e] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 8px 8px 0;
    padding: 0 8px;
    height: 30px;
    border: 1px solid #cbd5e1;
    border-radius: 5px;
}

    .sms-search:focus-within[b-8izrr6kq1e] {
        border-color: #1a56a7;
    }

    .sms-search i[b-8izrr6kq1e] {
        color: #94a3b8;
        font-size: 12px;
    }

    .sms-search input[b-8izrr6kq1e] {
        flex: 1;
        min-width: 0;
        border: 0;
        outline: none;
        font-size: 12.5px;
        font-family: inherit;
        color: #1a2537;
        background: transparent;
    }

/* Select all / Clear */
.sms-actions[b-8izrr6kq1e] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 6px 8px;
    border-bottom: 1px solid #eef2f7;
}

    .sms-actions button[b-8izrr6kq1e] {
        padding: 3px 8px;
        border: 0;
        border-radius: 4px;
        background: transparent;
        color: #1a56a7;
        font-size: 12px;
        font-weight: 600;
        font-family: inherit;
        cursor: pointer;
    }

        .sms-actions button:hover:not(:disabled)[b-8izrr6kq1e] {
            background: #eef4fb;
        }

        .sms-actions button:disabled[b-8izrr6kq1e] {
            color: #cbd5e1;
            cursor: default;
        }

.sms-count[b-8izrr6kq1e] {
    margin-left: auto;
    color: #94a3b8;
    font-size: 11.5px;
}

/* List */
.sms-list[b-8izrr6kq1e] {
    max-height: 240px;
    overflow-y: auto;
    padding: 4px 0;
    scrollbar-width: thin;
}

.sms-item[b-8izrr6kq1e] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
    user-select: none;
}

    .sms-item:hover[b-8izrr6kq1e] {
        background: #f3f7fb;
    }

    .sms-item.on[b-8izrr6kq1e] {
        background: #f0faf7;
    }

    .sms-item input[b-8izrr6kq1e] {
        flex-shrink: 0;
        width: 15px;
        height: 15px;
        margin: 0;
        accent-color: #1ab99a;
        cursor: pointer;
    }

.sms-name[b-8izrr6kq1e] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.sms-cur[b-8izrr6kq1e] {
    flex-shrink: 0;
    padding: 0 6px;
    border-radius: 3px;
    background: #e0f2fe;
    color: #0369a1;
    font-size: 10.5px;
    font-weight: 700;
}

.sms-empty[b-8izrr6kq1e] {
    padding: 14px 12px;
    color: #94a3b8;
    font-size: 12.5px;
    text-align: center;
}
/* /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/GroupPickerPopup.razor.rz.scp.css */
/* Shared "G" group picker — QLedger Ledger-popup look (QLedger.razor.css
   .ql-lp-* / .ql-modal-*) + old UI's A–Z bar and group tree. */
.gpp-overlay[b-y4qdynpeds] {
    z-index: 1300; /* above filter drawers (1200) */
}

.gpp-modal[b-y4qdynpeds] {
    max-width: 1040px;
    width: calc(100vw - 32px);
    max-height: 80vh;
    border-radius: 8px;
}

.gpp-search[b-y4qdynpeds] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .gpp-search .uf-input[b-y4qdynpeds] {
        flex: 1 1 auto;
        min-width: 0;
    }

.gpp-code[b-y4qdynpeds] {
    flex: 0 1 120px !important;
}

.gpp-starts[b-y4qdynpeds] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    white-space: nowrap;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

    .gpp-starts input[b-y4qdynpeds] {
        accent-color: #1ab99a;
    }

.gpp-go[b-y4qdynpeds] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .gpp-go:hover[b-y4qdynpeds] {
        background: #159a80;
    }

.gpp-alpha[b-y4qdynpeds] {
    display: flex;
    flex-wrap: wrap;
    gap: 3px;
    padding: 8px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fff;
}

.gpp-letter[b-y4qdynpeds] {
    min-width: 28px;
    height: 24px;
    padding: 0 6px;
    border: 1px solid #d6e2ef;
    border-radius: 4px;
    background: #fff;
    color: #1a2537;
    font-size: 12px;
    cursor: pointer;
}

    .gpp-letter:hover[b-y4qdynpeds] {
        border-color: #1ab99a;
    }

    .gpp-letter.active[b-y4qdynpeds] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
        font-weight: 600;
    }

.gpp-panes[b-y4qdynpeds] {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.gpp-body[b-y4qdynpeds] {
    overflow-y: auto;
    border-right: 1px solid #eef2f7;
}

.gpp-empty[b-y4qdynpeds] {
    padding: 28px 16px;
    text-align: center;
    color: #64748b;
    font-size: 13px;
}

.gpp-row[b-y4qdynpeds] {
    cursor: pointer;
}

    .gpp-row:hover td[b-y4qdynpeds] {
        background: #f1f5f9;
    }

.gpp-idx[b-y4qdynpeds] {
    width: 56px;
}

.mu-table tbody td.gpp-idx[b-y4qdynpeds] {
    color: #1a56a7;
    font-weight: 600;
}

.gpp-name[b-y4qdynpeds] {
    color: #1a56a7;
    font-weight: 500;
}

.gpp-row.gpp-sel td[b-y4qdynpeds] {
    background: #e8f1fb !important;
}

.gpp-row.gpp-focusrow td[b-y4qdynpeds] {
    background: #c9dcf2;
}

.gpp-tree[b-y4qdynpeds] {
    overflow: auto;
    padding: 6px 0;
    font-size: 12.5px;
    background: #fbfcfe;
}

.gpp-node[b-y4qdynpeds] {
    padding: 4px 10px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    color: #1a2537;
}

    .gpp-node:hover[b-y4qdynpeds] {
        background: #f1f5f9;
    }

    .gpp-node i[b-y4qdynpeds] {
        color: #7b96c2;
        margin-right: 5px;
    }

        .gpp-node i.gpp-root[b-y4qdynpeds] {
            color: #306B9C;
        }

    .gpp-node.gpp-sel[b-y4qdynpeds] {
        background: #e8f1fb;
        font-weight: 600;
    }

    .gpp-node.gpp-focus[b-y4qdynpeds] {
        background: #6b7280;
        color: #fff;
        font-weight: 700;
    }

        .gpp-node.gpp-focus i[b-y4qdynpeds] {
            color: #fff;
        }

@media (max-width: 768px) {
    .gpp-search[b-y4qdynpeds] {
        flex-wrap: wrap;
    }

        .gpp-search .uf-input[b-y4qdynpeds],
        .gpp-code[b-y4qdynpeds] {
            flex: 1 1 100% !important;
        }

    .gpp-panes[b-y4qdynpeds] {
        grid-template-columns: 1fr;
    }

    .gpp-tree[b-y4qdynpeds] {
        display: none;
    }
}

/* Tree +/− toggle (expand / collapse child groups). */
.gpp-toggle[b-y4qdynpeds] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    margin-right: 4px;
    border: 1px solid #94a3b8;
    border-radius: 2px;
    background: #fff;
    color: #334155;
    font-size: 11px;
    line-height: 1;
    font-weight: 700;
    cursor: pointer;
    vertical-align: middle;
    user-select: none;
}

    .gpp-toggle:hover[b-y4qdynpeds] {
        border-color: #1ab99a;
        color: #1ab99a;
    }

    .gpp-toggle.gpp-toggle-leaf[b-y4qdynpeds] {
        border-color: transparent;
        background: transparent;
        cursor: default;
    }

.gpp-node.gpp-focus .gpp-toggle:not(.gpp-toggle-leaf)[b-y4qdynpeds] {
    color: #334155;
}

/* Grid header = standard QLedger / QG header (global ".db-table th"):
   8px 10px, 13px bold, left aligned, #306B9C. */
.gpp-body .mu-table thead th[b-y4qdynpeds] {
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: normal;
    vertical-align: middle;
    text-align: left;
    white-space: nowrap;
    background: #306B9C;
    color: #fff;
}

/* Standard popup header height (same as Ledger / Site Master popups): the
   modal is a flex column capped at 80vh, and the tall list/tree was
   squeezing the green title bar. Only the list/tree panes shrink + scroll. */
.gpp-modal > .uf-header[b-y4qdynpeds],
.gpp-modal > .gpp-search[b-y4qdynpeds],
.gpp-modal > .gpp-alpha[b-y4qdynpeds],
.gpp-modal > .mu-foot[b-y4qdynpeds] {
    flex-shrink: 0;
}

.gpp-modal > .gpp-panes[b-y4qdynpeds] {
    flex: 1 1 auto;
    min-height: 0;
}
/* /Components/Shared/GroupTreeNode.razor.rz.scp.css */
/* =====================================================================
   Recursive rows of the "Group Tree" popup (Masters → Group). Scoped to
   this component since it's what actually renders every group row below
   the company root.

   The modal chrome (overlay/header/body) and the company-root row live
   in MGroup.razor.css instead, since MGroup.razor renders those directly.
   ul.gt-tree / .gt-node / .gt-row / .gt-toggle-spacer / .gt-label are
   intentionally duplicated between the two files: Blazor's CSS isolation
   only applies a stylesheet's rules to elements the OWNING component
   renders, so a style scoped to MGroup.razor.css never reaches markup
   rendered here, and vice versa.
   ===================================================================== */
ul.gt-tree[b-n1wf4ezfj0] {
    list-style: none;
    margin: 0;
    padding-left: 18px;
}

/* Dashed vertical line running down the left edge of every nested list,
   connecting a parent to each of its children. */
ul.gt-tree:not(.gt-tree-root)[b-n1wf4ezfj0] {
    border-left: 1px dashed #aab6c9;
    margin-left: 9px;
}

.gt-node[b-n1wf4ezfj0] {
    position: relative;
}

.gt-row[b-n1wf4ezfj0] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 3px 0;
    white-space: nowrap;
}

.gt-toggle[b-n1wf4ezfj0] {
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
    border: 1px solid #8fa0bb;
    background: #fff;
    color: #3d4f7d;
    border-radius: 2px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 8px;
    padding: 0;
    line-height: 1;
}

    .gt-toggle:hover[b-n1wf4ezfj0] {
        background: #eef2f9;
    }

.gt-toggle-spacer[b-n1wf4ezfj0] {
    flex: 0 0 auto;
    display: inline-block;
    width: 14px;
    height: 14px;
}

.gt-folder-icon[b-n1wf4ezfj0] {
    flex: 0 0 auto;
    color: #4d7ec9;
    font-size: 13px;
}

.gt-label[b-n1wf4ezfj0] {
    font-size: 13px;
    color: #1f2937;
}

/* Assets/Income vs Liability/Expense text color — see GroupTreeNode.PlbsClass. */
.gt-plbs-blue[b-n1wf4ezfj0] {
    color: #1a56a7;
}

.gt-plbs-maroon[b-n1wf4ezfj0] {
    color: #800000;
}
/* /Components/Shared/HsnTaxModal.razor.rz.scp.css */
/* =====================================================================
   HsnTaxModal — popup chrome comes from the shared "uf-" system (same as
   SetPricePointModal). Only sizing / layout tweaks live here.
   ===================================================================== */

.hsn-overlay[b-yzstxcbkoo] {
    z-index: 1050;
}

.hsn-modal[b-yzstxcbkoo] {
    max-width: 420px;
}

.hsn-body[b-yzstxcbkoo] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.hsn-field[b-yzstxcbkoo] {
    display: grid;
    grid-template-columns: 110px 1fr;
    align-items: center;
    gap: 12px;
}

    .hsn-field > label[b-yzstxcbkoo] {
        font-size: 13px;
        font-weight: 600;
        color: #334155;
    }

    .hsn-field .uf-input[b-yzstxcbkoo],
    .hsn-field[b-yzstxcbkoo]  .gdp-wrap {
        max-width: 240px;
    }

.hsn-band[b-yzstxcbkoo] {
    /* Band colour = a lighter tint of #cdeee4 (the popup header's border
       colour, kept as the band's border below), teal text — was old-UI
       olive (#e8f0dc / #3f5a1c). */
    background: #e3f6f0;
    color: #0f766e;
    font-size: 13px;
    font-weight: 700;
    padding: 6px 10px;
    border-radius: 4px;
    border: 1px solid #cdeee4;
    margin-top: 4px;
}

.hsn-empty[b-yzstxcbkoo] {
    text-align: center;
    color: #94a3b8;
    padding: 14px 0;
}

.hsn-error[b-yzstxcbkoo] {
    color: #b42318;
    font-size: 12px;
}

@media (max-width: 540px) {
    .hsn-field[b-yzstxcbkoo] {
        grid-template-columns: 1fr;
        gap: 4px;
    }
}
/* /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/LedgerSearchPopup.razor.rz.scp.css */
/* Components/Shared/LedgerSearchPopup.razor.css
   Visual styling aligned with GroupPickerPopup (.gpp-*): modal size, search
   bar, green Search button, A-Z letter bar, table header, row hover, empty
   state. Ledger-only pieces (.lsp-filters / .lsp-chk / stats popup) keep
   their own classes but use the same colours/spacing. */

.lsp-overlay[b-j8cpk88aue] {
    z-index: 1300;
}

.lsp-modal[b-j8cpk88aue] {
    position: relative;
    max-width: 1040px;
    width: calc(100vw - 32px);
    max-height: 80vh;
    border-radius: 8px;
}

.lsp-search[b-j8cpk88aue] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .lsp-search .uf-input[b-j8cpk88aue] {
        flex: 1 1 auto;
        min-width: 0;
    }

.lsp-code[b-j8cpk88aue] {
    flex: 0 1 120px !important;
}

.lsp-go[b-j8cpk88aue] {
    background: #1ab99a;
    color: #fff;
    border-color: #1ab99a;
}

    .lsp-go:hover[b-j8cpk88aue] {
        background: #159a80;
    }

.lsp-oc[b-j8cpk88aue] {
    flex: 0 0 auto;
    font-weight: 700;
}

    .lsp-oc.active[b-j8cpk88aue] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
    }

/* ── "##" button's statistics popup — floats over the ledger grid.
   .lsp-modal needs position:relative so this anchors inside it. ── */
.lsp-stats-overlay[b-j8cpk88aue] {
    position: absolute;
    inset: 0;
    z-index: 5;
    background: rgba(15, 23, 42, 0.25);
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 70px;
}

.lsp-stats-popup[b-j8cpk88aue] {
    width: 420px;
    max-width: calc(100% - 40px);
    max-height: 60vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 16px 40px rgba(15, 23, 42, 0.3);
}

.lsp-stats-hdr[b-j8cpk88aue] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: linear-gradient(90deg, #f3fcf9 0%, #d6f2ea 100%);
    border-bottom: 1px solid #cdeee4;
    font-size: 14px;
    font-weight: 650;
    color: #0f766e;
}


/* ── Filter row: Sub Group checkbox + Group/Schedule/Category dropdowns ── */
.lsp-filters[b-j8cpk88aue] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fbfcfe;
}

    .lsp-filters .uf-input[b-j8cpk88aue] {
        flex: 1 1 160px;
        min-width: 120px;
        height: 32px;
    }

.lsp-chk[b-j8cpk88aue] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #1a2537;
    white-space: nowrap;
    cursor: pointer;
}

    .lsp-chk input[type="checkbox"][b-j8cpk88aue] {
        width: 15px;
        height: 15px;
        cursor: pointer;
        accent-color: #1ab99a;
    }

/* ── A-Z quick filter row (same look as group popup letter bar) ── */
.lsp-alpha[b-j8cpk88aue] {
    display: flex;
    flex-wrap: wrap;
    gap: 3px;
    padding: 8px 20px;
    border-bottom: 1px solid #eef2f7;
    background: #fff;
}

.lsp-letter[b-j8cpk88aue] {
    min-width: 28px;
    height: 24px;
    padding: 0 6px;
    border: 1px solid #d6e2ef;
    border-radius: 4px;
    background: #fff;
    color: #1a2537;
    font-size: 12px;
    cursor: pointer;
}

    .lsp-letter:hover[b-j8cpk88aue] {
        border-color: #1ab99a;
    }

    .lsp-letter.active[b-j8cpk88aue] {
        background: #1ab99a;
        border-color: #1ab99a;
        color: #fff;
        font-weight: 600;
    }

/* ── Results table/body ── */
.ql-modal-body[b-j8cpk88aue] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.lsp-empty[b-j8cpk88aue] {
    padding: 28px 16px;
    text-align: center;
    color: #64748b;
    font-size: 13px;
}

.ql-lp-row[b-j8cpk88aue] {
    cursor: pointer;
}

    .ql-lp-row:hover td[b-j8cpk88aue] {
        background: #f1f5f9;
    }

.ql-lp-idx[b-j8cpk88aue] {
    width: 56px;
}

.mu-table tbody td.ql-lp-idx[b-j8cpk88aue] {
    color: #1a56a7;
    font-weight: 600;
}

.lsp-name[b-j8cpk88aue] {
    color: #1a56a7;
    font-weight: 500;
}

.lsp-body .mu-table thead th[b-j8cpk88aue] {
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: normal;
    vertical-align: middle;
    text-align: left;
    white-space: nowrap;
    background: #306B9C;
    color: #fff;
}

@media (max-width: 768px) {
    .lsp-search[b-j8cpk88aue] {
        flex-wrap: wrap;
    }

        .lsp-search .uf-input[b-j8cpk88aue],
        .lsp-code[b-j8cpk88aue] {
            flex: 1 1 100% !important;
        }
}
/* /Components/Shared/LedgerStatPopup.razor.rz.scp.css */
.lsp-overlay[b-dmj03uapdn] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .35);
    z-index: 1000;
}

.lsp-modal[b-dmj03uapdn] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1001;
    width: min(92vw, 560px);
    max-height: 80vh;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #c8d0da;
    border-radius: 4px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .25);
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    color: #111;
    padding: 14px 16px 16px;
}

.lsp-x[b-dmj03uapdn] {
    position: absolute;
    top: 4px;
    right: 8px;
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    color: #888;
    cursor: pointer;
}

    .lsp-x:hover[b-dmj03uapdn] { color: #333; }

.lsp-msg[b-dmj03uapdn] {
    padding: 30px 12px;
    text-align: center;
    color: #64748b;
}

.lsp-err[b-dmj03uapdn] { color: #b91c1c; }

.lsp-head[b-dmj03uapdn] {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    font-weight: 700;
    font-size: 14px;
    padding-right: 18px;
}

.lsp-group[b-dmj03uapdn] {
    color: #8b1a1a;
    font-style: italic;
    padding: 8px 0 14px;
}

/* Only the rows scroll; the header row stays pinned. */
.lsp-tablewrap[b-dmj03uapdn] {
    overflow: auto;
    min-height: 0;
    border: 1px solid #d6dbe2;
}

.lsp-table[b-dmj03uapdn] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

    .lsp-table th[b-dmj03uapdn],
    .lsp-table td[b-dmj03uapdn] {
        padding: 8px 10px;
        border-right: 1px solid #d6dbe2;
        border-bottom: 1px solid #d6dbe2;
        text-align: left;
    }

        .lsp-table th:last-child[b-dmj03uapdn],
        .lsp-table td:last-child[b-dmj03uapdn] { border-right: none; }

    .lsp-table th[b-dmj03uapdn] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #fff;
        font-weight: 700;
    }

    .lsp-table tbody tr:last-child td[b-dmj03uapdn] { border-bottom: none; }

.lsp-num[b-dmj03uapdn] { text-align: right !important; font-variant-numeric: tabular-nums; }
/* /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;
}

/* Error/status banner — now rendered right under the header, outside the
   scrollable .uf-body (see MakeTrip.razor), instead of at the bottom of the
   form where it was invisible without scrolling all the way down. This just
   gives it a bit of its own breathing room in that new spot; .uf-form-error
   itself (color/background/border) still comes from masters-forms.css. */
.mt-top-error[b-jiuopn3ivi] {
    margin: 10px 24px 0;
}

/* ── Edit mode: SUMMARY collapse header (arrow on the right) ── */
.mt-sec-toggle[b-jiuopn3ivi] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
}

    .mt-sec-toggle i[b-jiuopn3ivi] {
        font-size: 11px;
        opacity: .75;
    }

/* ── Edit mode: challan chips + summary ── */
.mt-chips[b-jiuopn3ivi] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
}

.mt-chip[b-jiuopn3ivi] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 4px 3px 10px;
    border-radius: 12px;
    background: #eef4fd;
    color: #1565c0;
    font-size: 12px;
    font-weight: 600;
}

.mt-chip-x[b-jiuopn3ivi] {
    border: 0;
    background: transparent;
    color: #8a97a8;
    cursor: pointer;
    padding: 2px 5px;
    font-size: 11px;
}

    .mt-chip-x:hover:not(:disabled)[b-jiuopn3ivi] {
        color: #c62828;
    }

.mt-add-row[b-jiuopn3ivi] {
    display: flex;
    gap: 8px;
    max-width: 360px;
    margin-bottom: 10px;
}

.mt-muted[b-jiuopn3ivi] {
    color: #7a8699;
    font-size: 12px;
}

.mt-sum[b-jiuopn3ivi] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    margin-top: 4px;
}

    .mt-sum th[b-jiuopn3ivi], .mt-sum td[b-jiuopn3ivi] {
        padding: 4px 8px;
        border-bottom: 1px solid #e3e8ef;
        text-align: left;
    }

    .mt-sum th[b-jiuopn3ivi] {
        background: #f5f7fa;
        font-weight: 600;
    }

.mt-r[b-jiuopn3ivi] {
    text-align: right !important;
}

.mt-sum-foot[b-jiuopn3ivi] {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin-top: 8px;
    font-size: 12px;
    color: #1a2537;
}

@media (max-width: 700px) {
    .uf-grid[b-jiuopn3ivi] {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

/* Add-challan status table (legacy: Sr. # / Challan No. / Status) */
.mt-add-status[b-jiuopn3ivi] {
    max-width: 360px;
    margin-bottom: 10px;
}

.mt-st-ok[b-jiuopn3ivi] {
    color: #1a4fd6;
}

.mt-st-bad[b-jiuopn3ivi] {
    color: #c62828;
}

/* Summary bar actions + Add Challan panel (legacy divMessage) */
.mt-bar-actions[b-jiuopn3ivi] {
    display: inline-flex;
    align-items: center;
    gap: 12px;
}

.mt-addch-btn[b-jiuopn3ivi] {
    padding: 2px 10px;
    font-size: 12px;
}

.mt-addpanel[b-jiuopn3ivi] {
    border: 1px solid #cfc3e0;
    border-radius: 4px;
    background: #fff;
    margin: 8px 0;
    max-width: 420px;
}

.mt-addpanel-head[b-jiuopn3ivi] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #ccc0da;
    padding: 4px 8px;
    font-weight: 700;
    font-size: 13px;
}

.mt-addpanel-body[b-jiuopn3ivi] {
    padding: 10px;
}

.mt-addpanel-row[b-jiuopn3ivi] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}

    .mt-addpanel-row label[b-jiuopn3ivi] {
        min-width: 80px;
        font-size: 12px;
    }

.mt-addpanel-btns[b-jiuopn3ivi] {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
}
/* /Components/Shared/MasterSettingDialog.razor.rz.scp.css */
.msd-modal[b-o9bjy6redl] {
    max-width: 560px;
}

.msd-body[b-o9bjy6redl] {
    padding: 14px 18px;
}

.msd-card[b-o9bjy6redl] {
    border: 1px solid #dde3ed;
    background: #fff;
}

.msd-heading[b-o9bjy6redl] {
    font-size: 13px;
    font-weight: 700;
    color: #1a2537;
    padding: 6px 8px;
    text-transform: uppercase;
}

.msd-bar[b-o9bjy6redl] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #4b6f9e;
    color: #fff;
    font-size: 12.5px;
    font-weight: 700;
    padding: 5px 8px;
}

.msd-bar-actions[b-o9bjy6redl] {
    display: flex;
    gap: 12px;
}

    .msd-bar-actions label[b-o9bjy6redl] {
        display: flex;
        align-items: center;
        gap: 4px;
        cursor: pointer;
        font-weight: 600;
    }

.msd-grid[b-o9bjy6redl] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px 12px;
    padding: 12px 8px;
}

.msd-item[b-o9bjy6redl] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    color: #1a2537;
    cursor: pointer;
}

.msd-newrow[b-o9bjy6redl] {
    grid-column-start: 1;
}

.msd-foot[b-o9bjy6redl] {
    padding: 4px 8px 10px;
}

@media (max-width: 480px) {
    .msd-grid[b-o9bjy6redl] {
        grid-template-columns: 1fr;
    }
}
/* /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/RecentVoucherSidebar.razor.rz.scp.css */
/* RecentVoucherSidebar.razor.css
   Own copy of the avc-sidebar / avc-recent-* rules — host pages' .razor.css
   is scoped to the host, so it never reaches this component's markup.
   Colors read the host's --avc-* variables (CSS variables DO inherit through
   isolation); fallbacks keep it right on pages that don't define them
   (MaterialIssue's mi-shell). Host just needs a flex row container. */

.avc-sidebar[b-kubbppbx9z] {
    width: 230px;
    flex-shrink: 0;
    align-self: stretch;
    background: #fbfcfd;
    border-right: 0.5px solid var(--avc-border, #e5e7eb);
    display: flex;
    flex-direction: column;
    min-height: 0;
    transition: width .18s ease;
}

.avc-sidebar-collapsed[b-kubbppbx9z] {
    width: 52px;
}

.avc-sidebar-hdr[b-kubbppbx9z] {
    padding: 1rem 1.1rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-sidebar-collapsed .avc-sidebar-hdr[b-kubbppbx9z] {
    padding: 1rem 0 .75rem;
    justify-content: center;
}

.avc-sidebar-label[b-kubbppbx9z] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--avc-muted, #6b7280);
    white-space: nowrap;
    overflow: hidden;
}

.avc-sidebar-toggle[b-kubbppbx9z] {
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    border: 1px solid var(--avc-border, #e5e7eb);
    border-radius: 7px;
    background: #fff;
    color: var(--avc-muted, #6b7280);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 12px;
}

    .avc-sidebar-toggle:hover[b-kubbppbx9z] {
        color: var(--avc-accent, #1AB99A);
        border-color: var(--avc-accent, #1AB99A);
    }

.avc-recent-list[b-kubbppbx9z] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 0 .6rem 1rem;
    scrollbar-width: thin;
    scrollbar-color: var(--avc-accent, #1AB99A) #f3f4f6;
}

    .avc-recent-list[b-kubbppbx9z]::-webkit-scrollbar {
        width: 4px;
    }

    .avc-recent-list[b-kubbppbx9z]::-webkit-scrollbar-track {
        background: #f3f4f6;
        border-radius: 4px;
    }

    .avc-recent-list[b-kubbppbx9z]::-webkit-scrollbar-thumb {
        background: var(--avc-accent, #1AB99A);
        border-radius: 4px;
    }

.avc-recent-empty[b-kubbppbx9z] {
    color: var(--avc-muted-light, #9ca3af);
    font-size: 13px;
    padding: 1rem .25rem;
    text-align: center;
}

.avc-recent-err[b-kubbppbx9z] {
    color: var(--avc-danger, #b91c1c);
}

.avc-recent-card[b-kubbppbx9z] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background: #ffffff;
    border: 0.5px solid var(--avc-border, #e5e7eb);
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    width: 100%;
    margin-bottom: 6px;
}

    .avc-recent-card:hover[b-kubbppbx9z],
    .avc-recent-card.active[b-kubbppbx9z] {
        border-color: var(--avc-accent, #1AB99A);
        background: var(--avc-accent-bg, #f0fdf9);
    }

/* Type with no entry screen — still listed, just looks inert. */
.avc-recent-card-off[b-kubbppbx9z] {
    cursor: default;
    opacity: .65;
}

    .avc-recent-card-off:hover[b-kubbppbx9z] {
        border-color: var(--avc-border, #e5e7eb);
        background: #ffffff;
    }

.avc-avatar[b-kubbppbx9z] {
    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-kubbppbx9z] {
    background: var(--avc-accent-bg, #f0fdf9);
    border: 0.5px solid var(--avc-accent-border, #a7f3d0);
    color: #065f46;
}

.avc-recent-main[b-kubbppbx9z] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    text-align: left;
}

.avc-recent-vno[b-kubbppbx9z] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-text, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avc-recent-sub[b-kubbppbx9z] {
    font-size: 10px;
    color: var(--avc-muted-light, #9ca3af);
}

.avc-recent-amt[b-kubbppbx9z] {
    flex-shrink: 0;
    font-size: 11px;
    font-weight: 700;
    color: var(--avc-text, #111827);
    white-space: nowrap;
}

@media (max-width: 900px) {
    .avc-sidebar[b-kubbppbx9z] {
        width: 100% !important;
        border-right: none;
        border-bottom: 0.5px solid var(--avc-border, #e5e7eb);
    }

    .avc-sidebar-collapsed .avc-sidebar-hdr[b-kubbppbx9z] {
        justify-content: flex-end;
        padding: 1rem 1.1rem .75rem;
    }

    .avc-recent-list[b-kubbppbx9z] {
        max-height: 220px;
    }
}
/* /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-

/* Page title — BSPL's root wrapper is .bspl-page (font-family: 'Open
   Sans', 'Segoe UI', Arial), not .mu-page (font-family: Arial) like this
   page. Arial has no real thin/100 face, so masters-forms.css's shared
   ".bspl-title-block h1 { font-weight:100 }" just renders as plain
   Regular here, while Segoe UI (what 'Open Sans' resolves to, since it
   isn't actually loaded) does ship a genuine light face — that's what
   made BSPL's title look visibly thinner despite the identical weight.
   Matched here so this title reads the same thinness as BSPL's. */
.bspl-title-block h1[b-dj50c8u2oa] {
    font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif;
}
/* ── Tabs / section pills (Purchase Reg / Sales Reg / Stock Reg / Summary) ──
   White background, flush under the title block with just a hairline
   border, no visible gap — mirrors QLedger.razor.css / Register.razor.css
   exactly. .mu-page (masters-forms.css) puts a 16px flex gap between every
   top-level child; that gap is what was showing up above this bar, so it's
   cancelled with a matching negative margin-top (scoped to this page only). */
.ql-sections[b-dj50c8u2oa] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 16px 6px 10px;
    margin-top: -16px;
    background: #fff;
    border-bottom: 1px solid #e7eaec;
}

.ql-section[b-dj50c8u2oa] {
    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-dj50c8u2oa] {
        font-size: 15px;
    }

    .ql-section:hover[b-dj50c8u2oa] {
        background: #f5f5f5;
        color: #555;
    }

    .ql-section.active[b-dj50c8u2oa] {
        background: #1ab394;
        border-color: #1ab394;
        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;
    /* Totals footer formatting — same as QLedger.razor.css (.mu-table tfoot td). */
    padding: 11px 14px;
    font-weight: 700;
    color: #1a2537;
    border-top: 2px solid #dde3ed;
}

/* QLedger's .ql-body footer bar: grey fill, grey 2px top rule (Purchase's maroon below still wins). */
.ql-body .mu-table tfoot td[b-dj50c8u2oa] {
    background: #e8e8e8;
    border-top: 2px solid #d0d0d0;
}

.mu-table tfoot td.cr[b-dj50c8u2oa] {
    color: #800000;
}

/* Sticky total row for real, even with few rows — mirrors QLedger.razor.css/
   Register.razor.css's fix (app.js's measureWrap sets --gains-filler-h on
   .ql-body .mu-table-wrap globally, so this only needs the matching padding
   rule here). Without this, a table shorter than its wrap never triggers
   position:sticky's bottom clamp, so the Total row just sits under the last
   data row instead of at the box's true bottom. The filler goes on the last
   data row's own bottom padding (not the total row itself) so the total
   row's own height stays fixed regardless of row count. */
.ql-body .mu-table tbody tr:last-child td[b-dj50c8u2oa] {
    padding-bottom: calc(10px + var(--gains-filler-h, 0px));
}

/* ── 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/Inventory/ChallanReport.razor.rz.scp.css */
/* =====================================================================
   GAINS — ChallanReport.razor.css  (shared popup: Gate Pass / Print Report /
   Print Report A6 from the Challan grid filter drawer).
   Shell = ChallanGrid's .ch-voucher-modal* (VNum-dot voucher popup),
   redeclared here because scoped CSS doesn't cross components.
   Report body = legacy TaxInvoice_New.aspx styles (.maintblgp / .maintbla6 /
   #suranagatepass + the inline styles from headerprint/dataprint/newprint),
   moved out of inline style="" into classes.
   z-index sits above the filter drawer (1200), below the toast (1400).
   ===================================================================== */

/* ── Popup shell ── */
.crp-overlay[b-f0ca3yl6mb] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 1300;
}

.crp-modal[b-f0ca3yl6mb] {
    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: 1301;
}

    .crp-modal.crp-modal-md[b-f0ca3yl6mb] {
        max-width: 820px;
    }

    .crp-modal.crp-modal-sm[b-f0ca3yl6mb] {
        max-width: 560px;
    }

.crp-hdr[b-f0ca3yl6mb] {
    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;
    z-index: 2;
}

.crp-hdr-actions[b-f0ca3yl6mb] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.crp-print-wrap[b-f0ca3yl6mb] {
    display: inline-flex;
}

/* Gate Pass Details entry — compact like the old #divgatepasspp */
.crp-modal.crp-modal-form[b-f0ca3yl6mb] {
    max-width: 470px;
}

.crp-print-btn[b-f0ca3yl6mb] {
    background: none;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    width: 30px;
    height: 28px;
    cursor: pointer;
    color: #306B9C;
    font-size: 14px;
}

    .crp-print-btn:hover[b-f0ca3yl6mb] {
        border-color: #1ab394;
        color: #1ab394;
    }

.crp-x[b-f0ca3yl6mb] {
    background: none;
    border: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: #888;
}

.crp-body[b-f0ca3yl6mb] {
    padding: 14px 16px;
}

.crp-msg[b-f0ca3yl6mb] {
    padding: 24px 0;
    text-align: center;
    color: #666;
    font-size: 13px;
}

.crp-err[b-f0ca3yl6mb] {
    color: #b91c1c;
    font-size: 12.5px;
}

.crp-err-inline[b-f0ca3yl6mb] {
    margin-bottom: 8px;
}

/* ── Gate Pass Details form (legacy #divgatepasspp) — master text-box look ── */
.crp-gp-form[b-f0ca3yl6mb] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-width: 420px;
}

.crp-gp-fld[b-f0ca3yl6mb] {
    display: flex;
    align-items: center;
    gap: 12px;
}

    .crp-gp-fld label[b-f0ca3yl6mb] {
        width: 110px;
        flex-shrink: 0;
        font-size: 13px;
        font-weight: 600;
        color: #1a2537;
    }

    .crp-gp-fld input[b-f0ca3yl6mb] {
        flex: 1;
        height: 32px;
        padding: 0 8px;
        border: 1px solid #cbd5e1;
        border-radius: 5px;
        font-size: 13px;
        color: #1a2537;
        background: #fff;
    }

        .crp-gp-fld input:focus[b-f0ca3yl6mb] {
            border-color: #1a56a7;
            box-shadow: 0 0 0 3px rgba(26, 86, 167, 0.12);
            outline: none;
        }

        .crp-gp-fld input:disabled[b-f0ca3yl6mb] {
            background: #f1f5f9;
            color: #475569;
        }

.crp-gp-foot[b-f0ca3yl6mb] {
    display: flex;
    justify-content: flex-end;
}

/* ── Print area (what gainsPrintElement copies) ── */
.crp-print-area[b-f0ca3yl6mb] {
    font-family: Arial, sans-serif;
    font-size: 12px;
    color: #000;
}

.crp-tbl[b-f0ca3yl6mb] {
    border-collapse: collapse;
    border-spacing: 0;
}

    .crp-tbl td[b-f0ca3yl6mb], .crp-tbl th[b-f0ca3yl6mb] {
        padding: 0;
        vertical-align: top;
    }

/* shared helpers */
.crp-c[b-f0ca3yl6mb] {
    text-align: center;
}

.crp-l[b-f0ca3yl6mb] {
    text-align: left;
}

.crp-r[b-f0ca3yl6mb] {
    text-align: right;
}

.crp-bold[b-f0ca3yl6mb] {
    font-weight: bold;
}

.crp-upper[b-f0ca3yl6mb] {
    text-transform: uppercase;
}

.crp-nowrap[b-f0ca3yl6mb] {
    white-space: nowrap;
}

.crp-vt[b-f0ca3yl6mb] {
    vertical-align: top;
}

.crp-w2[b-f0ca3yl6mb] {
    width: 2%;
}

.crp-w5[b-f0ca3yl6mb] {
    width: 5%;
}

.crp-w16[b-f0ca3yl6mb] {
    width: 16.66%;
}

.crp-w19[b-f0ca3yl6mb] {
    width: 19%;
}

.crp-w21[b-f0ca3yl6mb] {
    width: 21%;
}

.crp-w30[b-f0ca3yl6mb] {
    width: 30%;
}

.crp-w39[b-f0ca3yl6mb] {
    width: 39%;
}

.crp-w45[b-f0ca3yl6mb] {
    width: 45%;
}

.crp-ind[b-f0ca3yl6mb] {
    text-indent: 5px;
}

.crp-lbl[b-f0ca3yl6mb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 5px;
    font-weight: bold;
}

    .crp-lbl.crp-pad5[b-f0ca3yl6mb] {
        padding: 5px;
    }

    .crp-lbl.crp-pad05[b-f0ca3yl6mb] {
        padding: 0 5px 5px;
    }

td.crp-pad5[b-f0ca3yl6mb] {
    padding: 5px;
}

td.crp-pad05[b-f0ca3yl6mb] {
    padding: 0 5px 5px;
}

.crp-powered[b-f0ca3yl6mb] {
    font-size: 6px;
    color: gray;
    text-align: right;
}

.crp-cid[b-f0ca3yl6mb] {
    padding: 2px 0 0;
}

/* ── Gate Pass (legacy .maintblgp, width 10.5cm) ── */
.crp-gp[b-f0ca3yl6mb] {
    width: 10.5cm;
    font-family: 'Arial Narrow', Arial, sans-serif;
    font-size: 12px;
}

    .crp-gp > .crp-tbl[b-f0ca3yl6mb] {
        width: 95%;
    }

.crp-gp-title[b-f0ca3yl6mb] {
    width: 95%;
    font-weight: bold;
    text-align: center;
    text-transform: uppercase;
}

.crp-gp-brand[b-f0ca3yl6mb] {
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid silver;
    border-bottom: none;
    padding: 0 5px;
}

.crp-gp-logo[b-f0ca3yl6mb] {
    height: 65px;
    padding: 5px;
}

    .crp-gp-logo img[b-f0ca3yl6mb] {
        max-height: 100%;
    }

.crp-gp-site[b-f0ca3yl6mb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-weight: bold;
}

.crp-gp-infocell[b-f0ca3yl6mb] {
    height: 30px;
}

.crp-gp-info[b-f0ca3yl6mb],
.crp-rpt-info[b-f0ca3yl6mb] {
    width: 100%;
    border: 1px solid silver;
}

    .crp-gp-info tr[b-f0ca3yl6mb],
    .crp-rpt-info tr[b-f0ca3yl6mb] {
        height: 15px;
    }

.crp-gp-items[b-f0ca3yl6mb] {
    width: 100%;
    border-left: 1px solid silver;
    border-right: 1px solid silver;
    border-bottom: 1px solid silver;
}

    .crp-gp-items th[b-f0ca3yl6mb],
    .crp-gp-items td[b-f0ca3yl6mb] {
        height: 20px;
        padding: 0 5px;
        vertical-align: middle;
        border-right: 1px solid silver;
    }

        .crp-gp-items th:last-child[b-f0ca3yl6mb],
        .crp-gp-items td:last-child[b-f0ca3yl6mb] {
            border-right: none;
        }

        .crp-gp-items td.crp-vb[b-f0ca3yl6mb] {
            vertical-align: bottom;
        }

    .crp-gp-items thead tr[b-f0ca3yl6mb] {
        border-bottom: 1px solid silver;
        background: #f2f2f2;
    }

    .crp-gp-items tfoot tr[b-f0ca3yl6mb] {
        border-top: 1px solid silver;
        border-bottom: 1px solid silver;
        background: #f2f2f2;
    }

.crp-gp-depot[b-f0ca3yl6mb] {
    width: 100%;
    border-left: 1px solid silver;
    border-right: 1px solid silver;
    border-bottom: 1px solid silver;
}

.crp-gp-sign[b-f0ca3yl6mb] {
    width: 100%;
}

    .crp-gp-sign td[b-f0ca3yl6mb] {
        border-left: 1px solid silver;
        border-right: 1px solid silver;
    }

        .crp-gp-sign td.crp-gp-prepared[b-f0ca3yl6mb] {
            border: 1px solid silver;
            border-top: none;
            padding: 5px;
            text-align: right;
        }

/* ── Report A6 / Delivery Order (legacy .maintbla6 + #suranagatepass) ── */
.crp-a6[b-f0ca3yl6mb] {
    width: 10.5cm;
    min-height: 14.8cm;
    font-family: 'Arial Narrow', Arial, sans-serif;
    font-size: 12px;
}

.crp-a6-head[b-f0ca3yl6mb] {
    width: 95%;
    border: 1px solid silver;
    border-bottom: none;
}

.crp-a6-logo[b-f0ca3yl6mb] {
    height: 90px;
}

    .crp-a6-logo img[b-f0ca3yl6mb] {
        max-height: 90px;
    }

.crp-a6-title[b-f0ca3yl6mb] {
    font-weight: bold;
    font-size: 1.6rem;
}

.crp-a6-kv[b-f0ca3yl6mb] {
    width: 100%;
}

    .crp-a6-kv td[b-f0ca3yl6mb] {
        padding: 0 5px;
    }

.crp-a6-grid[b-f0ca3yl6mb] {
    width: 95%;
    border: 1px solid silver;
}

    .crp-a6-grid tr[b-f0ca3yl6mb] {
        height: 20px;
    }

    .crp-a6-grid td[b-f0ca3yl6mb] {
        border: 1px solid silver;
        padding: 5px;
    }

        .crp-a6-grid td:first-child[b-f0ca3yl6mb] {
            width: 35%;
            font-weight: bold;
        }

        .crp-a6-grid td:nth-child(2)[b-f0ca3yl6mb] {
            width: 65%;
        }

    .crp-a6-grid tr.crp-shade[b-f0ca3yl6mb] {
        background: #f3f3f3;
    }

    .crp-a6-grid tr.crp-noborder td[b-f0ca3yl6mb] {
        border: none;
    }

.crp-a6-foot[b-f0ca3yl6mb] {
    display: flex;
}

.crp-a6-foot-l[b-f0ca3yl6mb] {
    width: 47.5%;
    padding: 5px 0 0;
    text-align: left;
}

.crp-a6-foot-r[b-f0ca3yl6mb] {
    width: 47.5%;
    padding: 5px 0 0;
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
}

/* ── Print Report (provisional A5 challan, same visual language) ── */
.crp-rpt[b-f0ca3yl6mb] {
    width: 14.8cm;
    font-family: Arial, sans-serif;
    font-size: 12px;
}

    .crp-rpt > .crp-tbl[b-f0ca3yl6mb] {
        width: 100%;
    }

.crp-rpt-head[b-f0ca3yl6mb] {
    border: 1px solid silver;
    border-bottom: none;
}

.crp-rpt-logo[b-f0ca3yl6mb] {
    width: 90px;
    height: 70px;
    padding: 5px;
}

    .crp-rpt-logo img[b-f0ca3yl6mb] {
        max-height: 60px;
        max-width: 80px;
    }

.crp-rpt-site[b-f0ca3yl6mb] {
    text-align: center;
    vertical-align: middle;
    padding-right: 90px;
}

.crp-rpt-title[b-f0ca3yl6mb] {
    border: 1px solid silver;
    border-bottom: none;
    text-align: center;
    font-weight: bold;
    text-transform: uppercase;
    padding: 3px 0;
}

.crp-rpt-info td[b-f0ca3yl6mb] {
    padding: 3px 0;
}

.crp-rpt-sign[b-f0ca3yl6mb] {
    width: 100%;
    border: 1px solid silver;
    border-top: none;
}

    .crp-rpt-sign td[b-f0ca3yl6mb] {
        padding: 2px 5px;
    }

.crp-w31[b-f0ca3yl6mb] {
    width: 31%;
}

.crp-prewrap[b-f0ca3yl6mb] {
    white-space: pre-wrap;
}

.crp-rpt-sitename[b-f0ca3yl6mb] {
    font-weight: bold;
    font-size: 15px;
}

.crp-rpt-party[b-f0ca3yl6mb] {
    width: 100%;
    border: 1px solid silver;
    border-top: none;
    table-layout: fixed;
}

    .crp-rpt-party th[b-f0ca3yl6mb] {
        text-align: left;
        background: #f2f2f2;
        padding: 3px 5px;
        border-bottom: 1px solid silver;
    }

    .crp-rpt-party td[b-f0ca3yl6mb] {
        padding: 3px 5px 5px;
    }

        .crp-rpt-party th:first-child[b-f0ca3yl6mb],
        .crp-rpt-party td:first-child[b-f0ca3yl6mb] {
            border-right: 1px solid silver;
        }

.crp-rpt-info[b-f0ca3yl6mb] {
    border-top: none;
}

/* ── Print Report DOA5 — old TaxInvoice_A5_Challan_New.aspx look ── */
.crp-a5[b-f0ca3yl6mb] {
    width: 754px;
    font-family: Arial, sans-serif;
    font-size: 12px;
    color: #000;
}

    .crp-a5 > .crp-tbl[b-f0ca3yl6mb] {
        width: 100%;
    }

    .crp-a5 td[b-f0ca3yl6mb] {
        padding: 2px 5px;
        vertical-align: top;
    }

.crp-a5-top td[b-f0ca3yl6mb] {
    vertical-align: middle;
}

.crp-a5-logo[b-f0ca3yl6mb] {
    height: 34px;
}

    .crp-a5-logo img[b-f0ca3yl6mb] {
        max-height: 30px;
    }

.crp-a5-eway[b-f0ca3yl6mb] {
    text-align: right;
    font-weight: bold;
    padding-right: 10px !important;
}

.crp-a5-title[b-f0ca3yl6mb] {
    border-top: 1px solid silver;
    text-align: center;
    font-weight: bold;
    font-size: 12.5px;
    padding: 4px 0 2px;
    margin-top: 4px;
}

.crp-a5-juris[b-f0ca3yl6mb] {
    text-align: center;
    font-size: 9px;
    color: #1a1a8c;
    padding-bottom: 2px;
}

.crp-a5-box[b-f0ca3yl6mb] {
    border-top: 1px solid silver;
}

.crp-a5-half[b-f0ca3yl6mb] {
    width: 50%;
}

.crp-a5-sep[b-f0ca3yl6mb] {
    border-right: 1px solid silver;
}

.crp-a5-sitename[b-f0ca3yl6mb] {
    font-weight: bold;
    padding-top: 12px;
}

.crp-a5-gap[b-f0ca3yl6mb] {
    padding-top: 10px;
}

.crp-a5-party td.crp-a5-half[b-f0ca3yl6mb] {
    height: 118px;
    position: relative;
    padding-bottom: 20px;
}

.crp-a5-kv td[b-f0ca3yl6mb] {
    padding: 2px 4px 2px 0;
}

.crp-a5-k[b-f0ca3yl6mb] {
    width: 60px;
    white-space: nowrap;
}

.crp-a5-addr[b-f0ca3yl6mb] {
    padding-top: 14px !important;
}

.crp-a5-gst[b-f0ca3yl6mb] {
    position: absolute;
    left: 5px;
    bottom: 3px;
}

    .crp-a5-gst .crp-a5-k[b-f0ca3yl6mb] {
        display: inline-block;
        width: auto;
        margin-right: 6px;
    }

.crp-a5-items[b-f0ca3yl6mb] {
    border-top: 1px solid silver;
}

    .crp-a5-items th[b-f0ca3yl6mb] {
        text-align: left;
        font-weight: bold;
        padding: 3px 5px;
        border-bottom: 1px solid silver;
    }

    .crp-a5-items td[b-f0ca3yl6mb] {
        padding: 12px 5px 8px;
    }

        .crp-a5-items th.crp-a5-sr[b-f0ca3yl6mb],
        .crp-a5-items td:first-child[b-f0ca3yl6mb] {
            width: 36px;
            border-right: 1px solid silver;
        }

.crp-a5-desc[b-f0ca3yl6mb] {
    width: 26%;
}

.crp-a5-hsn[b-f0ca3yl6mb] {
    width: 21%;
}

.crp-a5-bags[b-f0ca3yl6mb] {
    width: 23%;
}

.crp-a5-broker[b-f0ca3yl6mb] {
    font-weight: bold;
    border-bottom: 1px solid silver;
    padding-bottom: 2px;
    margin-bottom: 2px;
}

.crp-a5-small[b-f0ca3yl6mb] {
    font-size: 9px;
}

.crp-a5-qr[b-f0ca3yl6mb] {
    text-align: center;
}

.crp-a5-qrimg[b-f0ca3yl6mb] {
    display: block;
    width: 50px;
    height: 50px;
    margin: 6px auto 4px;
}

.crp-a5-dono[b-f0ca3yl6mb] {
    padding-left: 20px !important;
}

.crp-a5-sign[b-f0ca3yl6mb] {
    text-align: center;
    padding-top: 8px !important;
}

.crp-a5-signline[b-f0ca3yl6mb] {
    width: 208px;
    margin: 26px auto 4px;
    border-top: 1px solid #000;
}

.crp-a5-foot[b-f0ca3yl6mb] {
    border-top: 1px solid silver;
    text-align: center;
    font-size: 9px;
    padding: 12px 0 4px;
    margin-top: 6px;
}

@media (max-width: 767px) {
    .crp-modal[b-f0ca3yl6mb] {
        width: 96vw;
    }

    .crp-gp-fld[b-f0ca3yl6mb] {
        flex-direction: column;
        align-items: stretch;
        gap: 4px;
    }

        .crp-gp-fld label[b-f0ca3yl6mb] {
            width: auto;
        }
}
/* /Components/Shared/Reports/Order/OrderReport.razor.rz.scp.css */
/* =====================================================================
   GAINS — OrderReport.razor.css  (PUR / SLS order print, own tab)
   PUR = old Reports/Report1/PurchaseOrder_Report.aspx styles (647px,
         38px side margins, Arial 12px, silver lines, fixed-height item grid).
   SLS = old Orders/OrderInvoice.aspx PrintHeader/PrintData/PrintFooter
         inline styles moved into classes (780px, whitesmoke bands).
   ===================================================================== */

.orp-page[b-8fdre1auj0] {
    font-family: Arial, sans-serif;
    font-size: 12px;
    color: #000;
    background: #fff;
    min-height: 100vh;
    padding: 5px 0 20px;
}

/* ── Toolbar (print icon top-left like the old pages) — hidden on print ── */
.orp-toolbar[b-8fdre1auj0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 647px;
    margin: 0 38px 6px;
    height: 30px;
}

.orp-print[b-8fdre1auj0] {
    background: none;
    border: 1px solid #d5d5d5;
    border-radius: 3px;
    width: 32px;
    height: 28px;
    cursor: pointer;
    color: #306B9C;
    font-size: 15px;
}

    .orp-print:hover[b-8fdre1auj0] {
        border-color: #1ab394;
        color: #1ab394;
    }

.orp-toolbar-right[b-8fdre1auj0] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.orp-download:disabled[b-8fdre1auj0] {
    opacity: .5;
    cursor: default;
}

.orp-dl-link[b-8fdre1auj0] {
    display: none;
}

.orp-dl-err[b-8fdre1auj0] {
    margin-top: 0;
}

.orp-curr-btn[b-8fdre1auj0] {
    width: 170px;
    height: 26px;
    font-size: 12px;
    cursor: pointer;
}

.orp-msg[b-8fdre1auj0] {
    margin: 30px 38px;
    font-size: 13px;
    color: #666;
}

.orp-err[b-8fdre1auj0] {
    color: #b91c1c;
}

/* ── helpers ── */
.orp-tbl[b-8fdre1auj0] {
    border-collapse: collapse;
    border-spacing: 0;
}

    .orp-tbl td[b-8fdre1auj0] {
        padding: 0;
    }

.orp-w100[b-8fdre1auj0] {
    width: 100%;
}

.orp-bold[b-8fdre1auj0] {
    font-weight: bold;
}

.orp-vt[b-8fdre1auj0] {
    vertical-align: top;
}

.orp-r[b-8fdre1auj0] {
    text-align: right;
}

.orp-prewrap[b-8fdre1auj0] {
    white-space: pre-wrap;
    word-wrap: break-word;
}

/* ═════════════════ PURCHASE ORDER ═════════════════ */
.orp-po[b-8fdre1auj0] {
    width: 647px;
    margin: 0 38px;
    border-collapse: collapse;
}

    .orp-po td[b-8fdre1auj0] {
        padding: 0;
    }

.orp-pagebreak[b-8fdre1auj0] {
    page-break-after: always;
    break-after: page;
    margin-bottom: 30px;
}

.orp-po-main[b-8fdre1auj0] {
    width: 100%;
    height: 30px;
    text-align: center;
}

.orp-po-heading[b-8fdre1auj0] {
    font-weight: bold;
    font-size: 14px;
}

.orp-po-title[b-8fdre1auj0] {
    font-weight: bold;
    font-size: 14px;
    line-height: 40px;
}

.orp-po-third[b-8fdre1auj0] {
    height: 120px;
    vertical-align: top;
}

.orp-po-inner[b-8fdre1auj0] {
    width: 100%;
    border-collapse: collapse;
}

.orp-po-left[b-8fdre1auj0] {
    width: 60%;
    vertical-align: top;
}

.orp-po-right[b-8fdre1auj0] {
    width: 40%;
    vertical-align: top;
}

.orp-po-to[b-8fdre1auj0] {
    text-indent: 5px;
}

.orp-po-ledname[b-8fdre1auj0] {
    height: 20px;
    font-weight: bold;
    text-indent: 5px;
}

.orp-po-address[b-8fdre1auj0] {
    height: 40px;
    font-weight: bold;
    font-size: 11px;
    vertical-align: top;
}

    .orp-po-address div[b-8fdre1auj0] {
        padding-left: 5px;
        white-space: pre-line;
    }

.orp-po-lbl[b-8fdre1auj0] {
    height: 20px;
    width: 60px;
    text-indent: 5px;
}

.orp-po-val[b-8fdre1auj0] {
    height: 20px;
    font-weight: bold;
}

.orp-po-lbl1[b-8fdre1auj0] {
    height: 20px;
    width: 60px;
    text-indent: 5px;
    vertical-align: bottom;
}

.orp-po-colon[b-8fdre1auj0] {
    width: 10px;
    vertical-align: bottom;
}

.orp-po-ul[b-8fdre1auj0] {
    width: 200px;
    height: 20px;
    font-weight: bold;
    border-bottom: 1px solid silver;
    vertical-align: bottom;
}

.orp-po-comments[b-8fdre1auj0] {
    vertical-align: top;
    height: 35px;
    border: 1px solid silver;
    border-bottom: none;
}

    .orp-po-comments div[b-8fdre1auj0] {
        height: 35px;
        overflow: hidden;
        padding-left: 5px;
    }

/* item grid: fixed height (old itm_tblHT = 1123 - 76 - 500 ≈ 547px), filler row stretches */
.orp-po-data[b-8fdre1auj0] {
    width: 100%;
    height: 547px;
    border-collapse: collapse;
}

    .orp-po-data td[b-8fdre1auj0] {
        border-left: 1px solid silver;
        vertical-align: top;
        text-align: center;
    }

        .orp-po-data td.c-amt[b-8fdre1auj0] {
            border-right: 1px solid silver;
        }

.c-desc[b-8fdre1auj0] {
    width: 245px;
}

.c-qty[b-8fdre1auj0] {
    width: 69px;
}

.c-rate[b-8fdre1auj0] {
    width: 73px;
}

.c-per[b-8fdre1auj0] {
    width: 28px;
}

.c-disc[b-8fdre1auj0] {
    width: 49px;
}

.c-gst[b-8fdre1auj0] {
    width: 81px;
}

.c-amt[b-8fdre1auj0] {
    width: 102px;
}

.orp-po-hdr td[b-8fdre1auj0] {
    height: 25px;
    vertical-align: middle !important;
    border-top: 1px solid silver;
    border-bottom: 1px solid silver;
}

.orp-po-gsthdr[b-8fdre1auj0] {
    text-align: left !important;
    text-indent: 20px;
}

.orp-po-row td[b-8fdre1auj0] {
    height: 60px;
}

.orp-po-taxrow td[b-8fdre1auj0] {
    height: 25px;
}

.orp-po-fill td[b-8fdre1auj0] {
    height: auto;
}

.orp-po-item[b-8fdre1auj0] {
    font-weight: bold;
    text-align: left;
    padding-left: 5px;
    min-height: 25px;
}

.orp-po-pkg[b-8fdre1auj0] {
    text-align: left;
    padding-left: 15px;
    max-height: 40px;
    overflow: hidden;
}

.orp-po-qty[b-8fdre1auj0] {
    display: flex;
    font-weight: bold;
}

.orp-po-ql[b-8fdre1auj0] {
    width: 50%;
    text-align: right;
}

.orp-po-qr[b-8fdre1auj0] {
    width: 50%;
    text-align: left;
    text-indent: 3px;
}

.orp-po-gst[b-8fdre1auj0] {
    display: flex;
}

.orp-po-gl[b-8fdre1auj0] {
    width: 60%;
    text-align: center;
}

.orp-po-gr[b-8fdre1auj0] {
    width: 40%;
    text-align: right;
}

.orp-po-amt[b-8fdre1auj0] {
    font-weight: bold;
    text-align: right;
    padding-right: 3px;
}

.orp-po-taxname[b-8fdre1auj0] {
    font-weight: bold;
    text-align: left;
    padding-left: 5px;
}

.orp-po-bottomline[b-8fdre1auj0] {
    border-top: 1px solid silver;
    border-left: none !important;
    height: 1px;
}

.orp-po-words[b-8fdre1auj0] {
    height: 15px;
    font-size: 11px;
    text-indent: 5px;
}

.orp-po-wl[b-8fdre1auj0] {
    float: left;
    width: 50%;
}

.orp-po-wr[b-8fdre1auj0] {
    float: right;
    width: 50%;
    text-align: right;
}

.orp-po-continued[b-8fdre1auj0] {
    height: 15px;
    text-align: right;
    font-size: 11px;
}

.orp-po-showamt[b-8fdre1auj0] {
    font-weight: bold;
    text-indent: 5px;
}

.orp-po-site[b-8fdre1auj0] {
    font-weight: bold;
    text-align: right;
}

.orp-po-sign[b-8fdre1auj0] {
    padding-top: 20px !important;
    text-align: right;
    font-size: 11px;
}

/* ═════════════════ SALES ORDER ═════════════════ */
.orp-so[b-8fdre1auj0] {
    width: 780px;
    margin-left: 8px;
    font-size: 12px;
}

.orp-so-main[b-8fdre1auj0] {
    width: 100%;
    border-collapse: collapse;
}

.orp-so-sec[b-8fdre1auj0] {
    width: 100%;
    border-bottom: 1px solid silver;
    padding: 0;
}

.orp-so-shade[b-8fdre1auj0] {
    background: whitesmoke;
}

.orp-so-top[b-8fdre1auj0] {
    height: 60px;
}

.orp-so-logo[b-8fdre1auj0] {
    width: 1%;
}

    .orp-so-logo img[b-8fdre1auj0] {
        display: block;
        max-width: 200px;
        max-height: 80px;
        width: auto;
        height: auto;
    }

.orp-so-title[b-8fdre1auj0] {
    width: 610px;
    height: 20px;
    font-weight: bold;
    text-align: right;
    padding-right: 5px !important;
    vertical-align: top;
}

.orp-so-gap[b-8fdre1auj0] {
    height: 10px;
}

.orp-so-half[b-8fdre1auj0] {
    width: 50%;
    vertical-align: top;
}

.orp-so-site[b-8fdre1auj0] {
    height: 80px;
}

.orp-so-sitename[b-8fdre1auj0] {
    font-size: 16px;
    font-weight: bold;
}

.orp-so-sp[b-8fdre1auj0] {
    height: 10px;
}

.orp-so-small[b-8fdre1auj0] {
    font-size: 11px;
}

.orp-so-siteaddr[b-8fdre1auj0] {
    height: 80px;
    padding-left: 3px !important;
    white-space: pre-wrap;
    word-wrap: break-word;
}

.orp-so-no[b-8fdre1auj0] {
    height: 30px;
    font-weight: bold;
    vertical-align: middle !important;
}

.orp-so-ind[b-8fdre1auj0] {
    text-indent: 5px;
}

.orp-so-r20[b-8fdre1auj0] {
    height: 20px;
}

.orp-so-k[b-8fdre1auj0] {
    width: 70px;
}

.orp-so-v[b-8fdre1auj0] {
    padding-left: 5px !important;
}

.orp-so-addr[b-8fdre1auj0] {
    height: 50px;
    vertical-align: top;
}

/* items */
.orp-so-items td[b-8fdre1auj0] {
    border-bottom: 1px solid silver;
    border-right: 1px solid silver;
}

.orp-so-ihdr[b-8fdre1auj0] {
    font-weight: bold;
    background: whitesmoke;
    text-transform: uppercase;
}

    .orp-so-ihdr td[b-8fdre1auj0] {
        height: 30px;
        text-indent: 3px;
    }

.orp-so-irow[b-8fdre1auj0] {
    height: 30px;
}

.orp-so-items .i-sr[b-8fdre1auj0] {
    width: 3%;
    text-indent: 3px;
}

.orp-so-items .i-desc[b-8fdre1auj0] {
    width: 41%;
    padding-left: 3px;
}

.orp-so-items .i-hsn[b-8fdre1auj0] {
    width: 11%;
    text-align: center;
}

.orp-so-items .i-qty[b-8fdre1auj0] {
    width: 11%;
    text-align: right;
    padding-right: 3px;
    border-right: none;
}

.orp-so-items .i-uom[b-8fdre1auj0] {
    width: 11%;
    text-align: left;
    padding-left: 8px;
}

.orp-so-items .i-rate[b-8fdre1auj0] {
    width: 11%;
    text-align: right;
    padding-right: 3px;
}

.orp-so-items .i-amt[b-8fdre1auj0] {
    width: 11%;
    text-align: right;
    padding-right: 3px;
    border-right: none;
}

.orp-so-ihdr .i-uom[b-8fdre1auj0] {
    text-indent: 8px;
    padding-left: 0;
}

.orp-so-items .orp-vt[b-8fdre1auj0],
.orp-so-items .orp-so-totcell[b-8fdre1auj0] {
    border-bottom: none;
}

.orp-so-items .orp-vt[b-8fdre1auj0] {
    border-right: none;
}

.orp-so-totcell[b-8fdre1auj0] {
    border-left: 1px solid silver;
    border-right: none !important;
    vertical-align: top;
}

.orp-so-tot[b-8fdre1auj0] {
    font-size: 11px;
    border-right: 1px solid silver;
}

    .orp-so-tot td[b-8fdre1auj0] {
        height: 20px;
        border-right: none;
        border-bottom: 1px solid silver;
    }

    .orp-so-tot .t-l[b-8fdre1auj0] {
        width: 66.5%;
        padding-left: 3px;
        border-right: 1px solid silver;
        text-align: left;
    }

    .orp-so-tot .t-r[b-8fdre1auj0] {
        padding-right: 3px;
        text-align: right;
    }

    .orp-so-tot .t-ind[b-8fdre1auj0] {
        text-indent: 15px;
    }

.orp-so-grand[b-8fdre1auj0] {
    height: 30px;
}

.orp-so-grandl[b-8fdre1auj0] {
    text-align: right;
    width: 75%;
}

.orp-so-grandr[b-8fdre1auj0] {
    text-align: right;
    padding-right: 3px !important;
}

.orp-so-words[b-8fdre1auj0] {
    height: 22px;
}

.orp-so-bankcell[b-8fdre1auj0] {
    border-right: 1px solid silver;
    width: 259px;
    vertical-align: top;
}

.orp-so-bank[b-8fdre1auj0] {
    height: 100px;
}

    .orp-so-bank .b-k[b-8fdre1auj0] {
        width: 75px;
        font-weight: bold;
        white-space: nowrap;
    }

    .orp-so-bank .b-v[b-8fdre1auj0] {
        text-indent: 5px;
    }

.orp-so-terms[b-8fdre1auj0] {
    padding-left: 5px !important;
    vertical-align: top;
}

.orp-so-sign td[b-8fdre1auj0] {
    width: 33.3%;
}

.orp-so-sign .s-box[b-8fdre1auj0] {
    height: 70px;
    border-bottom: 1px solid silver;
}

.orp-so-sign .s-mid[b-8fdre1auj0] {
    height: 105px;
    border-left: 1px solid silver;
    border-right: 1px solid silver;
}

.orp-so-sign .s-lbls[b-8fdre1auj0] {
    height: 30px;
}

    .orp-so-sign .s-lbls td[b-8fdre1auj0] {
        text-align: center;
    }

.orp-so-gains[b-8fdre1auj0] {
    color: #396fbe;
    font-size: 12px;
}

    .orp-so-gains a[b-8fdre1auj0] {
        color: #396fbe;
        text-decoration: none;
    }

/* ── Print — @page margin 0 removes the browser's date/title header and
   URL/page-no footer (Ctrl+P too); spacing comes from the report itself. ── */
@page {
    size: A4 portrait;
    margin: 0;
}

@media print {
    .orp-po[b-8fdre1auj0] {
        margin-top: 38px;
    }
    /* old Top = 1cm → 37.8px */
    /* A4 = 210mm wide. Screen width 780px + 8mm left ran past the paper edge
       (no right margin). Print: 8mm each side → 194mm content. */
    .orp-so[b-8fdre1auj0] {
        width: auto;
        max-width: 194mm;
        margin: 10mm 8mm 0 8mm;
        box-sizing: border-box;
    }

    .orp-toolbar[b-8fdre1auj0] {
        display: none !important;
    }

    .orp-page[b-8fdre1auj0] {
        padding: 0;
        min-height: 0;
    }

    .orp-pagebreak[b-8fdre1auj0] {
        margin-bottom: 0;
    }
}
/* /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/SendWhatsAppPopup.razor.rz.scp.css */
/* Shared Send WhatsApp popup (moved from ARAP.razor.css .arap-sm-* / .arap-wa-*). */
.swa-modal[b-7kh4p4i2xj] {
    max-width: 500px;
}

.swa-body[b-7kh4p4i2xj] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.swa-ledger[b-7kh4p4i2xj] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 14px;
}

.swa-ledname[b-7kh4p4i2xj] {
    font-weight: 700;
    color: #1a2537;
}

.swa-ledcode[b-7kh4p4i2xj] {
    color: #64748b;
}

.swa-field[b-7kh4p4i2xj] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    position: relative;
}

    .swa-field label[b-7kh4p4i2xj] {
        font-size: 12.5px;
        color: #475569;
    }

/* Message box: fixed 5 rows, no drag-resize; longer text scrolls inside. */
.swa-msg[b-7kh4p4i2xj] {
    height: calc(5 * 1.4em + 16px);
    min-height: calc(5 * 1.4em + 16px);
    max-height: calc(5 * 1.4em + 16px);
    line-height: 1.4em;
    padding: 8px 10px;
    resize: none;
    overflow-y: auto;
}

.swa-count[b-7kh4p4i2xj] {
    align-self: flex-end;
    font-size: 11px;
    color: #94a3b8;
}

.swa-sep[b-7kh4p4i2xj] {
    border: none;
    border-top: 1px solid #dde3ed;
    margin: 2px 0;
}

.swa-table th[b-7kh4p4i2xj],
.swa-table td[b-7kh4p4i2xj] {
    padding: 6px 8px;
    font-size: 13px;
}

.swa-table thead th[b-7kh4p4i2xj] {
    background: #306B9C;
    color: #fff;
    font-weight: 700;
}

.swa-chk[b-7kh4p4i2xj] {
    width: 40px;
    text-align: center;
}

.swa-row[b-7kh4p4i2xj] {
    cursor: pointer;
}

    .swa-row.swa-row-on td[b-7kh4p4i2xj] {
        background: #e8f1fb !important;
    }

.swa-phone[b-7kh4p4i2xj] {
    display: flex;
    align-items: stretch;
}

.swa-isd[b-7kh4p4i2xj] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 10px;
    border: 1px solid #cbd5e1;
    border-right: none;
    border-radius: 5px 0 0 5px;
    background: #f8fafc;
    font-size: 13px;
    color: #1a2537;
    white-space: nowrap;
}

.swa-flag[b-7kh4p4i2xj] {
    width: 20px;
    height: 14px;
    border: 1px solid #e2e8f0;
}

.swa-phone .uf-input[b-7kh4p4i2xj] {
    flex: 1 1 auto;
    min-width: 0;
    border-radius: 0 5px 5px 0;
}

    /* Locked while a contact is ticked. */
    .swa-phone .uf-input[readonly][b-7kh4p4i2xj] {
        background: #f1f5f9;
        color: #475569;
        cursor: not-allowed;
    }

.swa-error[b-7kh4p4i2xj] {
    color: #c0392b;
    font-size: 12.5px;
    font-weight: 600;
}

.swa-send-btn[b-7kh4p4i2xj] {
    align-self: flex-start;
    padding: 8px 22px;
}
/* /Components/Shared/SendWhatsAppVoucherPopup.razor.rz.scp.css */
/* Shared Send WhatsApp popup for vouchers (legacy sendWhatsapp_A5.aspx look). */
.swv-modal[b-w8gq6uqd9l] {
    max-width: 1160px;
    width: auto;
    position: relative;
}

.swv-body[b-w8gq6uqd9l] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    padding: 14px 18px 18px;
    font-family: Arial, sans-serif;
    font-size: 12px;
    color: #000;
}

.swv-left[b-w8gq6uqd9l] {
    width: 382px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
}

.swv-ledger[b-w8gq6uqd9l] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
    margin-bottom: 4px;
}

.swv-ledname[b-w8gq6uqd9l] {
    font-weight: 700;
    color: #1a2537;
}

.swv-ledcode[b-w8gq6uqd9l] {
    color: #64748b;
}

.swv-lbl[b-w8gq6uqd9l] {
    display: block;
    font-weight: bold;
    margin: 6px 0 3px;
}

.swv-lbl-inline[b-w8gq6uqd9l] {
    margin: 0;
}

.swv-txt[b-w8gq6uqd9l] {
    height: 22px;
    padding: 0 4px;
    border: 1px solid #767676;
    font-size: 12px;
}

.swv-msg[b-w8gq6uqd9l] { width: 170px; }
.swv-cc[b-w8gq6uqd9l] { width: 28px; margin-right: 4px; }
.swv-mob[b-w8gq6uqd9l] { width: 130px; }

.swv-row[b-w8gq6uqd9l] {
    display: flex;
    align-items: center;
}

.swv-between[b-w8gq6uqd9l] {
    justify-content: space-between;
    margin-top: 8px;
}

.swv-end[b-w8gq6uqd9l] {
    justify-content: flex-end;
    margin-top: 6px;
}

.swv-send[b-w8gq6uqd9l] {
    background: green;
    border: 1px solid lightgreen;
    color: #fff;
    font-size: 13px;
    padding: 1px 8px;
    cursor: pointer;
}

    .swv-send:disabled[b-w8gq6uqd9l] {
        opacity: .6;
        cursor: default;
    }

/* Contact grid */
.swv-grid[b-w8gq6uqd9l] {
    width: 380px;
    height: 460px;
    border: 1px solid gray;
    margin-top: 2px;
    display: flex;
    flex-direction: column;
}

.swv-head[b-w8gq6uqd9l] {
    display: flex;
    align-items: center;
    height: 30px;
    background: #306195;
    color: #fff;
    font-weight: bold;
}

.swv-gbody[b-w8gq6uqd9l] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    background: #fff;
}

.swv-r[b-w8gq6uqd9l] {
    display: flex;
    align-items: center;
    min-height: 25px;
}

.swv-even[b-w8gq6uqd9l] { background: #F2F2F2; }
.swv-odd[b-w8gq6uqd9l] { background: #D8D8D8; }

.swv-c-chk[b-w8gq6uqd9l] { width: 30px; text-align: center; flex-shrink: 0; }
.swv-c-name[b-w8gq6uqd9l] { width: 140px; padding-left: 4px; word-wrap: break-word; flex-shrink: 0; }
.swv-c-mob[b-w8gq6uqd9l] { flex: 1; overflow: hidden; white-space: nowrap; padding-left: 4px; }

.swv-empty[b-w8gq6uqd9l] {
    padding: 8px;
    color: #666;
}

.swv-muted[b-w8gq6uqd9l] {
    width: auto;
    color: #666;
}

.swv-error[b-w8gq6uqd9l] {
    color: #c0392b;
    font-weight: 600;
    margin-top: 6px;
}

/* Preview */
.swv-right label[b-w8gq6uqd9l] {
    display: block;
    margin-bottom: 2px;
}

.swv-prev[b-w8gq6uqd9l] {
    display: block;
    width: 700px;
    height: 700px;
    border: 1px solid silver;
    background: #fff;
}

/* Message status panel */
.swv-status[b-w8gq6uqd9l] {
    position: absolute;
    top: 90px;
    left: 40px;
    width: 410px;
    height: 420px;
    background: #fff;
    border: 1px solid silver;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
    z-index: 5;
    font-family: Arial, sans-serif;
    font-size: 12px;
}

.swv-st-title[b-w8gq6uqd9l] {
    height: 30px;
    background: #17375D;
    color: #fff;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 6px;
}

    .swv-st-title button[b-w8gq6uqd9l] {
        background: none;
        border: none;
        color: #fff;
        font-size: 16px;
        cursor: pointer;
    }

.swv-st-head[b-w8gq6uqd9l],
.swv-st-r[b-w8gq6uqd9l] {
    display: flex;
}

.swv-st-head[b-w8gq6uqd9l] {
    height: 35px;
    align-items: center;
    background: #306195;
    color: #fff;
}

.swv-st-body[b-w8gq6uqd9l] {
    height: 320px;
    overflow-y: auto;
}

.swv-st-r[b-w8gq6uqd9l] {
    min-height: 22px;
    align-items: center;
}

    .swv-st-r:nth-child(odd)[b-w8gq6uqd9l] {
        background: #f2f2f2;
    }

.swv-s1[b-w8gq6uqd9l] { width: 50px; padding-left: 5px; }
.swv-s2[b-w8gq6uqd9l] { width: 150px; padding-left: 5px; }
.swv-s3[b-w8gq6uqd9l] { flex: 1; padding-left: 5px; }
.swv-ok[b-w8gq6uqd9l] { color: green; }
.swv-fail[b-w8gq6uqd9l] { color: #c0392b; }

/* Embedded (new-tab page) mode */
.swv-page[b-w8gq6uqd9l] {
    padding: 4px 0;
}

.swv-page-inner[b-w8gq6uqd9l] {
    position: relative;
}
/* /Components/Shared/SetPricePointModal.razor.rz.scp.css */
/* =====================================================================
   SetPricePointModal — popup chrome (overlay, header, body, footer,
   buttons, inputs) comes from the shared "uf-" system and the grid from
   the shared "mu-" master grid (wwwroot/CSS/masters-forms.css) — same
   look as BatchLotQtyModal. Only sizing / alignment tweaks live here.
   ===================================================================== */

.spp-overlay[b-zjg1jyygt3] {
    z-index: 1050;
}

.spp-modal[b-zjg1jyygt3] {
    max-width: 520px;
}

.spp-body[b-zjg1jyygt3] {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.spp-head[b-zjg1jyygt3] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.spp-field[b-zjg1jyygt3] {
    display: grid;
    grid-template-columns: 130px 1fr;
    align-items: center;
    gap: 12px;
}

    .spp-field > label[b-zjg1jyygt3] {
        font-size: 13px;
        font-weight: 600;
        color: #334155;
    }

    .spp-field .uf-input[b-zjg1jyygt3],
    .spp-field[b-zjg1jyygt3]  .gdp-wrap {
        max-width: 200px;
    }

.spp-table-wrap[b-zjg1jyygt3] {
    height: auto;
    max-height: 50vh;
}

.spp-grid thead th[b-zjg1jyygt3] {
    padding: 10px 12px;
}

.spp-grid tbody td[b-zjg1jyygt3] {
    padding: 6px 12px;
    vertical-align: middle;
}

.spp-numcol[b-zjg1jyygt3],
.spp-grid thead th.spp-numcol[b-zjg1jyygt3] {
    width: 110px;
    text-align: right;
}

.spp-num[b-zjg1jyygt3] {
    text-align: right;
}

.spp-grid .spp-num[b-zjg1jyygt3] {
    height: 30px;
    padding: 4px 8px;
}

.spp-empty[b-zjg1jyygt3] {
    text-align: center;
    color: #94a3b8;
    padding: 14px 0 !important;
}

@media (max-width: 540px) {
    .spp-field[b-zjg1jyygt3] {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .spp-numcol[b-zjg1jyygt3],
    .spp-grid thead th.spp-numcol[b-zjg1jyygt3] {
        width: 90px;
    }
}

.spp-error[b-zjg1jyygt3] {
    color: #b42318;
    font-size: 12px;
}

.uf-input.spp-invalid[b-zjg1jyygt3] {
    border-color: #dc2626;
}

.spp-grid input[readonly][b-zjg1jyygt3] {
    background: #f1f5f9;
    color: #334155;
}
/* /Components/Shared/SiteCityAutofill.razor.rz.scp.css */
/* SiteCityAutofill.razor.css — moved from TdsDeductorPopup.razor.css (was
   .tdp-city-*) so Site Master Address and the TDS popup share one look.
   Box look (border/padding/font) comes from the parent: uf-input in the
   popup, the global ms-box rule on Site Master. */

/* ── City autocomplete ── */
.sca-wrap[b-fi80uo69qc] {
    position: relative;
}

.sca-box[b-fi80uo69qc] {
    position: relative;
}

    .sca-box .sca-input[b-fi80uo69qc] {
        width: 100%;
        box-sizing: border-box;
        padding-right: 30px;
    }

.sca-ic[b-fi80uo69qc] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    font-size: 13px;
    pointer-events: none;
}

    .sca-ic.is-ok[b-fi80uo69qc] {
        color: #15803d;
    }

.sca-list[b-fi80uo69qc] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 240px;
    overflow-y: auto;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: #fff;
    border: 1px solid #dde3ec;
    border-radius: 8px;
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
}

.sca-opt[b-fi80uo69qc] {
    display: flex;
    flex-direction: column;
    padding: 7px 10px;
    border-radius: 6px;
    cursor: pointer;
}

    .sca-opt.is-hi[b-fi80uo69qc] {
        background: #e6f7f2;
    }

.sca-name[b-fi80uo69qc] {
    font-size: 13px;
    color: #1e293b;
    font-weight: 600;
}

.sca-none[b-fi80uo69qc] {
    padding: 10px;
    font-size: 12.5px;
    color: #94a3b8;
    text-align: center;
}

/* /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/VoucherAudit.razor.rz.scp.css */
/* ── VoucherAudit.razor — Shared component styles ──
   Duplicated (not shared) out of AccVoucher.razor.css: Blazor's CSS
   isolation scopes rules to their own component, so once this markup moved
   into its own component, the page's stylesheet stopped reaching it.
   CSS custom properties (var(--avc-*), defined in AccVoucher.razor.css's
   :root block) still cascade in fine — only the class rules needed copying. */

/* Root wrapper - carries the same --avc-* variables / font AccVoucher.razor.css
   sets on .avc-page, so this component looks identical when hosted by a page
   that isn't .avc-page (e.g. InvVoucher). Same values -> no change in AccVoucher. */
.avc-audit-root[b-ff1ym8enzg] {
    --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);
    /* Pin every inherited text property + background here, so nothing from
       the host page (InvVoucher's 13px .iv-page, ChallanEntry's card, etc.)
       leaks in - the component looks identical wherever it is dropped in.
       Values = what AccVoucher already renders with (Bootstrap body defaults). */
    font-size: 1rem;
    line-height: 1.5;
    font-weight: 400;
    text-align: left;
    background: #fff;
}

.avc-audit-toolbar[b-ff1ym8enzg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}

.avc-audit-toolbar-actions[b-ff1ym8enzg] {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

/* Small icon-only Print/Excel pair — same neutral (non-danger) icon-button
   shape as .avc-outline-btn's border/hover-accent, just square and without
   a text label, matching DayBook's VoucherViewPopup.razor toolbar buttons
   (not .avc-icon-btn — that one's red delete-row hover is the wrong fit
   for a benign print/export action). */
.avc-audit-icon-btn[b-ff1ym8enzg] {
    width: 32px;
    height: 32px;
    border: 1.5px solid var(--avc-border);
    border-radius: 7px;
    background: #fff;
    color: var(--avc-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    transition: .12s;
}

    .avc-audit-icon-btn:hover[b-ff1ym8enzg] {
        border-color: var(--avc-accent);
        color: var(--avc-accent-dark);
    }

    .avc-audit-icon-btn:disabled[b-ff1ym8enzg] {
        opacity: .5;
        cursor: not-allowed;
    }

.avc-audit-layout[b-ff1ym8enzg] {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 18px;
    align-items: start;
}

@media (max-width: 900px) {
    .avc-audit-layout[b-ff1ym8enzg] {
        grid-template-columns: 1fr;
    }
}

.avc-audit-timelog[b-ff1ym8enzg],
.avc-audit-report[b-ff1ym8enzg] {
    background: #fbfcfe;
    border: 0.5px solid var(--avc-border);
    border-radius: 10px;
    padding: 10px;
    min-width: 0;
}

.avc-audit-timelog-scroll[b-ff1ym8enzg] {
    max-height: 480px;
    overflow-y: auto;
}

.avc-audit-panel-title[b-ff1ym8enzg] {
    font-size: 13px;
    font-weight: 700;
    color: var(--avc-text);
    margin-bottom: 6px;
}

.avc-audit-panel-subtitle[b-ff1ym8enzg] {
    font-size: 12px;
    font-weight: 600;
    color: var(--avc-muted);
    margin: 8px 0 4px;
}

.avc-audit-label[b-ff1ym8enzg] {
    font-size: 10px;
    font-weight: 600;
    color: var(--avc-muted-light);
}

/* ── Generic page-level utility classes this component also uses
   (avc-panel-lead, avc-empty-block, avc-readout-err, avc-doc-table,
   text-end) — duplicated here too, same isolation reason as above, so the
   component has zero dependency on AccVoucher.razor.css. ── */
.avc-panel-lead[b-ff1ym8enzg] {
    font-size: 13px;
    color: var(--avc-muted);
    margin: 0 0 10px;
}

.avc-empty-block[b-ff1ym8enzg] {
    color: var(--avc-muted-light);
    font-size: 14px;
    padding: 2rem 0;
    text-align: center;
}

.avc-readout-err[b-ff1ym8enzg] {
    color: var(--avc-danger);
}

.avc-doc-table[b-ff1ym8enzg] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    margin-top: 4px;
}

    .avc-doc-table th[b-ff1ym8enzg] {
        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-ff1ym8enzg] {
        padding: 8px 10px;
        border: 1px solid var(--avc-border);
        color: var(--avc-text);
    }

    .avc-doc-table tbody tr:nth-child(even)[b-ff1ym8enzg] {
        background: #f9fafb;
    }

.text-end[b-ff1ym8enzg] {
    text-align: right;
}

/* ── Time log table: compact rows, striped, bordered, selected-row highlight ── */
.avc-audit-timelog-table[b-ff1ym8enzg] {
    border: 1px solid #cbd5e1;
}

    .avc-audit-timelog-table th[b-ff1ym8enzg] {
        padding: 4px 8px;
        line-height: 1.3;
    }

    .avc-audit-timelog-table td[b-ff1ym8enzg] {
        padding: 3px 8px;
        line-height: 1.3;
        border: 1px solid #cbd5e1;
    }

    .avc-audit-timelog-table tbody tr[b-ff1ym8enzg] {
        cursor: pointer;
    }

    .avc-audit-timelog-table tbody tr:nth-child(odd)[b-ff1ym8enzg] {
        background: #ffffff;
    }

    .avc-audit-timelog-table tbody tr:nth-child(even)[b-ff1ym8enzg] {
        background: #eef2f7;
    }

    .avc-audit-timelog-table tbody tr:hover[b-ff1ym8enzg] {
        background: #e6f7f2;
    }

    .avc-audit-timelog-table tbody tr.avc-audit-row-selected[b-ff1ym8enzg],
    .avc-audit-timelog-table tbody tr.avc-audit-row-selected:hover[b-ff1ym8enzg] {
        background: #d4f7d4;
    }

        .avc-audit-timelog-table tbody tr.avc-audit-row-selected td[b-ff1ym8enzg] {
            font-weight: 600;
        }

/* ── Time log "Show All" button + stacked Show All report cards ── */
.avc-audit-title-row[b-ff1ym8enzg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.avc-audit-showall-btn[b-ff1ym8enzg] {
    border: 1px solid var(--avc-border);
    background: #fff;
    color: var(--avc-accent-dark);
    font-size: 12px;
    font-weight: 600;
    padding: 2px 10px;
    border-radius: 6px;
    cursor: pointer;
}

    .avc-audit-showall-btn:hover[b-ff1ym8enzg] {
        border-color: var(--avc-accent);
    }

    .avc-audit-showall-btn:disabled[b-ff1ym8enzg] {
        opacity: .6;
        cursor: not-allowed;
    }

/* ── Audit report = the app's own voucher report HTML (VHtmlService.RenderFragment,
   injected via MarkupString). Same base rules VHtml.razor uses for .vh-root, so it
   renders exactly like the voucher report; ::deep because the HTML isn't scoped. ── */
.avc-audit-report[b-ff1ym8enzg]  .vh-root {
    font-family: Arial;
    font-size: 12px;
    color: #000;
    overflow-x: auto;
}

    .avc-audit-report[b-ff1ym8enzg]  .vh-root,
    .avc-audit-report[b-ff1ym8enzg]  .vh-root * {
        font-family: Arial;
        font-size: 12px;
    }

    .avc-audit-report[b-ff1ym8enzg]  .vh-root td,
    .avc-audit-report[b-ff1ym8enzg]  .vh-root th,
    .avc-audit-report[b-ff1ym8enzg]  .vh-root div {
        word-break: break-word;
        overflow-wrap: break-word;
    }

    .avc-audit-report[b-ff1ym8enzg]  .vh-root::after {
        content: "";
        display: block;
        clear: both;
    }

.avc-audit-report[b-ff1ym8enzg]  .vh-cell { border-bottom: solid 1px silver; border-right: solid 1px silver; border-top: solid 1px silver; }
.avc-audit-report[b-ff1ym8enzg]  .vh-cellb { border-bottom: solid 1px silver; border-right: solid 1px silver; }
.avc-audit-report[b-ff1ym8enzg]  .vh-flush-table tr:last-child td { border-bottom: none !important; }
.avc-audit-report[b-ff1ym8enzg]  .vh-flush-table td:last-child { border-right: none !important; }
.avc-audit-report[b-ff1ym8enzg]  .vh-item-table tr:first-child td { border-top: none !important; }
.avc-audit-report[b-ff1ym8enzg]  .vh-flush-table.vh-item-table tr:last-child td { border-bottom: solid 1px silver !important; }
.avc-audit-report[b-ff1ym8enzg]  .GFont-check.select { color: green; font-weight: bold; }
.avc-audit-report[b-ff1ym8enzg]  .GFont-cross.unselect { color: #b00020; font-weight: bold; }
.avc-audit-report[b-ff1ym8enzg]  .GFont-check.select::before { content: "\2713"; }
.avc-audit-report[b-ff1ym8enzg]  .GFont-cross.unselect::before { content: "\2717"; }

/* Item Details header row: keep its bottom border (the flush/first-child resets
   above were stripping it where it meets the first item row). */
.avc-audit-report[b-ff1ym8enzg]  .vh-item-table thead td {
    border-bottom: 1px solid silver !important;
}

/* Create / Update / Verify / Approve / Approve 2 footer: top border, so it's
   separated from the ledger / item table above it. */
.avc-audit-report[b-ff1ym8enzg]  td.vh-fixed-width {
    border-top: 1px solid silver;
}
/* /Components/Shared/VoucherOrderPopup.razor.rz.scp.css */
/* =====================================================================
   Components/Shared/VoucherOrderPopup.razor.css
   Standard popup look from global masters-forms.css:
   .uf-header / .uf-title / .uf-title-sub / .uf-close, .mu-table,
   .uf-form-error, .uf-footer, .uf-btn / .uf-btn-new / .uf-btn-save.
   Only layer positioning, sizing, the Voucher/Order switch, and
   grid-specific cells (checkbox, VNum dot, numbers, selected row) here.
   ===================================================================== */

/* Overlay — master dim + blur (same values as .uf-overlay) */
.vop-overlay[b-kxzpvu3qy6] {
    position: fixed;
    inset: 0;
    z-index: 60;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
}

/* Card — master .uf-modal border/shadow, curved 12px like the other
   standard popups (GainsLanding, Add GENERAL Docs, COA). */
.vop-panel[b-kxzpvu3qy6] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 61;
    width: min(760px, calc(100vw - 32px));
    max-height: min(580px, calc(100vh - 64px));
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e7ebf2;
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
    overflow: hidden;
    font-family: Arial, sans-serif;
}

/* Header = master .uf-header; pinned, with the Voucher/Order switch and
   the close button grouped on the right. */
.vop-head[b-kxzpvu3qy6] {
    flex: 0 0 auto;
    gap: 12px;
}

.vop-head-right[b-kxzpvu3qy6] {
    display: flex;
    align-items: center;
    gap: 10px;
    position: relative;
    z-index: 1;
}

/* Voucher / Order switch — segmented pill in the header's teal palette */
.vop-tabs[b-kxzpvu3qy6] {
    display: flex;
    gap: 2px;
    background: rgba(15, 118, 110, 0.08);
    border-radius: 8px;
    padding: 3px;
}

.vop-tab[b-kxzpvu3qy6] {
    border: none;
    background: transparent;
    padding: 5px 14px;
    font-size: 12.5px;
    font-weight: 700;
    font-family: inherit;
    color: #0f766e;
    border-radius: 6px;
    cursor: pointer;
    transition: background .12s, color .12s;
}

    .vop-tab:hover:not(.active)[b-kxzpvu3qy6] {
        background: rgba(15, 118, 110, 0.10);
    }

    .vop-tab.active[b-kxzpvu3qy6] {
        background: #1ab99a;
        color: #fff;
        box-shadow: 0 1px 3px rgba(26, 185, 154, 0.35);
    }

.vop-body[b-kxzpvu3qy6] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

.vop-loading[b-kxzpvu3qy6],
.vop-empty[b-kxzpvu3qy6] {
    padding: 36px 14px;
    text-align: center;
    font-size: 13px;
    color: #64748b;
}

/* Error = master .uf-form-error, spaced inside the body */
.vop-error[b-kxzpvu3qy6] {
    margin: 16px 22px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ── Grid = master .mu-table; header in transaction blue (same as .t-page
   grids) since this popup may render outside a .t-page wrapper. ── */
.vop-table thead th[b-kxzpvu3qy6] {
    background: #306B9C;
    border-bottom-color: #285a82;
    padding: 9px 10px;
}

.vop-table tbody td[b-kxzpvu3qy6] {
    padding: 8px 10px;
    vertical-align: middle;
}

.vop-table tbody tr[b-kxzpvu3qy6] {
    cursor: pointer;
}

    /* selected row wins over master's even-row striping / hover */
    .vop-table tbody tr.vop-row-selected td[b-kxzpvu3qy6] {
        background: #e6f7f2;
    }

.vop-col-chk[b-kxzpvu3qy6] {
    width: 34px;
    text-align: center;
}

.vop-col-num[b-kxzpvu3qy6] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.vop-table thead th.vop-col-num[b-kxzpvu3qy6] {
    text-align: right;
}

/* Item names can be long — allow wrapping (master cells are nowrap) */
.vop-table td.vop-col-item[b-kxzpvu3qy6] {
    white-space: normal;
    min-width: 160px;
}

/* Editable Qty cell — compact right-aligned box, teal focus like the
   other GAINS inputs; no number spinners. */
.vop-table td.vop-col-qty[b-kxzpvu3qy6] {
    padding-top: 4px;
    padding-bottom: 4px;
}

.vop-qty-input[b-kxzpvu3qy6] {
    width: 90px;
    height: 28px;
    padding: 0 8px;
    border: 1.5px solid #e2e8f0;
    border-radius: 6px;
    background: #f8fafc;
    font-family: inherit;
    font-size: 12.5px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    outline: none;
    box-sizing: border-box;
    -moz-appearance: textfield;
    appearance: textfield;
}

    .vop-qty-input[b-kxzpvu3qy6]::-webkit-outer-spin-button,
    .vop-qty-input[b-kxzpvu3qy6]::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

    .vop-qty-input:focus[b-kxzpvu3qy6] {
        border-color: #1ab99a;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(26, 185, 154, .12);
    }

.vop-col-vnum[b-kxzpvu3qy6] {
    white-space: nowrap;
}

.vop-vnum-link[b-kxzpvu3qy6] {
    color: #306B9C; /* overridden inline by the row's wColor */
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
}

    .vop-vnum-link:hover[b-kxzpvu3qy6] {
        text-decoration: underline;
    }

/* small coloured square before VNum — same look as Daybook / ChallanGrid;
   clickable → opens the voucher/order view layer */
.vop-vnum-dot[b-kxzpvu3qy6] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 2px;
    margin-right: 7px;
    vertical-align: middle;
    cursor: pointer;
}

    .vop-vnum-dot:hover[b-kxzpvu3qy6] {
        opacity: .7;
        outline: 2px solid rgba(48, 107, 156, .35);
        outline-offset: 1px;
    }

/* ── View layer — sits above the list popup ── */
.vop-view-overlay[b-kxzpvu3qy6] {
    z-index: 62;
}

.vop-view-panel[b-kxzpvu3qy6] {
    z-index: 63;
    width: min(960px, calc(100vw - 32px));
    max-height: calc(100vh - 48px);
}

.vop-view-body[b-kxzpvu3qy6] {
    padding: 14px 18px;
    background: #fff;
}

/* ── Footer = master .uf-footer (padding / border / background);
   count left, Cancel + Add Selected right. ── */
.vop-foot[b-kxzpvu3qy6] {
    flex: 0 0 auto;
}

.vop-selcount[b-kxzpvu3qy6] {
    font-size: 12.5px;
    color: #64748b;
}

.vop-foot-btns[b-kxzpvu3qy6] {
    display: flex;
    gap: 8px;
}

@media (max-width: 560px) {
    .vop-head .uf-title-sub[b-kxzpvu3qy6] {
        display: none;
    }

    .vop-tab[b-kxzpvu3qy6] {
        padding: 5px 10px;
    }
}
/* /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;
}
/* /Components/Shared/VoucherShortcutsPopup.razor.rz.scp.css */
/* =====================================================================
   VoucherShortcutsPopup — shared keyboard-shortcuts popup.
   Shell from masters-forms.css (uf-overlay / ms-pop / uf-modal /
   uf-header / uf-footer); only size + table here.
   Table header = transaction blue #306B9C (t-page standard).
   ===================================================================== */
.vsc-modal[b-eaxi2nv4ue] {
    width: min(560px, 94vw);
    max-height: 86vh;
}

    .vsc-modal .uf-header[b-eaxi2nv4ue],
    .vsc-modal .uf-footer[b-eaxi2nv4ue] {
        flex-shrink: 0;
    }

.vsc-title-ico[b-eaxi2nv4ue] {
    margin-right: 8px;
    color: #1ab99a;
}

.vsc-body[b-eaxi2nv4ue] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: #1ab99a transparent;
}

    .vsc-body[b-eaxi2nv4ue]::-webkit-scrollbar {
        width: 8px;
    }

    .vsc-body[b-eaxi2nv4ue]::-webkit-scrollbar-track {
        background: transparent;
    }

    .vsc-body[b-eaxi2nv4ue]::-webkit-scrollbar-thumb {
        background: #1ab99a;
        border-radius: 999px;
    }

        .vsc-body[b-eaxi2nv4ue]::-webkit-scrollbar-thumb:hover {
            background: #159e83;
        }

.vsc-table[b-eaxi2nv4ue] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

    .vsc-table thead th[b-eaxi2nv4ue] {
        position: sticky;
        top: 0;
        z-index: 1;
        background: #306B9C;
        color: #fff;
        text-align: left;
        font-weight: 600;
        font-size: 12.5px;
        padding: 9px 12px;
        white-space: nowrap;
    }

    .vsc-table tbody td[b-eaxi2nv4ue] {
        padding: 8px 12px;
        color: #1a2537;
        border-bottom: 1px solid #eef2f7;
        vertical-align: middle;
    }

        .vsc-table tbody td:first-child[b-eaxi2nv4ue] {
            width: 48px;
            color: #64748b;
            text-align: center;
        }

        .vsc-table tbody td:nth-child(2)[b-eaxi2nv4ue] {
            width: 150px;
            white-space: nowrap;
        }

    .vsc-table tbody tr:nth-child(even) td[b-eaxi2nv4ue] {
        background: #f7f9fc;
    }

    .vsc-table tbody tr:hover td[b-eaxi2nv4ue] {
        background: #eef4fb;
    }

    .vsc-table kbd[b-eaxi2nv4ue] {
        display: inline-block;
        min-width: 22px;
        margin-right: 3px;
        padding: 2px 6px;
        border: 1px solid #cbd5e1;
        border-bottom-width: 2px;
        border-radius: 4px;
        background: #fff;
        color: #1a2537;
        font-family: inherit;
        font-size: 11.5px;
        font-weight: 600;
        line-height: 1.4;
        text-align: center;
    }

.vsc-off td[b-eaxi2nv4ue] {
    color: #94a3b8 !important;
}

    .vsc-off kbd[b-eaxi2nv4ue] {
        color: #94a3b8;
        border-color: #e2e8f0;
    }

.vsc-note[b-eaxi2nv4ue] {
    margin-left: 4px;
    font-size: 11.5px;
    color: #c0392b;
}

.vsc-empty[b-eaxi2nv4ue] {
    text-align: center !important;
    color: #94a3b8 !important;
    padding: 18px 12px !important;
}

.vsc-foot-hint[b-eaxi2nv4ue] {
    font-size: 11.5px;
    color: #94a3b8;
}

@media (max-width: 540px) {
    .vsc-table tbody td:nth-child(2)[b-eaxi2nv4ue] {
        width: auto;
    }

    .vsc-foot-hint[b-eaxi2nv4ue] {
        display: none;
    }
}
