/* /Layout/MainLayout.razor.rz.scp.css */
.page[b-cuw5qvsjsa] {
    min-height: 100vh;
    background: var(--rz-body-background-color, var(--rz-base-background-color));
    color: var(--rz-text-color);
}

.page[b-cuw5qvsjsa]  .app-layout {
    height: 100vh;
    height: 100dvh;
    background: var(--rz-layout-background-color, var(--rz-body-background-color));
}

.page[b-cuw5qvsjsa]  .app-sidebar {
    --rz-sidebar-width: 250px;
}

.page[b-cuw5qvsjsa]  .app-header {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-inline: 1rem;
}

.app-heading[b-cuw5qvsjsa] {
    min-width: 0;
    overflow: hidden;
    color: var(--rz-text-title-color);
    font-size: 1.25rem;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.session-bar[b-cuw5qvsjsa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

/* Where the reader is, and the way back. Kept in the header so it is in the same place on every
   page rather than moving with a page's own heading, and allowed to take the free width so a long
   tenant name or a long trail cannot push the session bar off the edge. The markup belongs to the
   BreadCrumbs component, hence ::deep. */
.page[b-cuw5qvsjsa]  .app-breadcrumb {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
    margin-left: 0.75rem;
    overflow: hidden;
    color: var(--rz-text-secondary-color);
    font-size: 0.85rem;
}

.page[b-cuw5qvsjsa]  .app-breadcrumb-link,
.page[b-cuw5qvsjsa]  .app-breadcrumb-current {
    max-width: 16rem;
    overflow: hidden;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.page[b-cuw5qvsjsa]  .app-breadcrumb-link {
    cursor: pointer;
}

.page[b-cuw5qvsjsa]  .app-breadcrumb-link:hover,
.page[b-cuw5qvsjsa]  .app-breadcrumb-link:focus-visible {
    color: var(--ae-primary);
    text-decoration: underline;
}

.page[b-cuw5qvsjsa]  .app-breadcrumb-current {
    color: var(--rz-text-title-color);
    font-weight: 600;
}

.page[b-cuw5qvsjsa]  .app-breadcrumb-sep {
    flex: 0 0 auto;
    font-size: 1rem;
    opacity: 0.6;
}

.session-tenant[b-cuw5qvsjsa] {
    max-width: 14rem;
    overflow: hidden;
    padding: 0.25rem 0.65rem;
    border-radius: var(--rz-border-radius);
    background: var(--rz-base-200);
    color: var(--rz-text-color);
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.session-role[b-cuw5qvsjsa] {
    color: var(--rz-text-secondary-color);
}

.page[b-cuw5qvsjsa]  .layout-body {
    min-width: 0;
    padding: 0;
}

article.content[b-cuw5qvsjsa] {
    min-height: 100%;
    padding: 1.5rem 1.75rem 2.5rem !important;
}

@media (max-width: 640.98px) {
    .page[b-cuw5qvsjsa]  .app-header {
        gap: 0.5rem;
        padding-inline: 0.5rem;
    }

    .app-heading[b-cuw5qvsjsa] {
        font-size: 1rem;
    }

    .session-role[b-cuw5qvsjsa] {
        display: none;
    }

    /* Narrow: the page being read is worth the room, the steps back are not - each of those pages
       carries its own way back, and the sidebar is a tap away. Leaving the current page named is
       what keeps "where am I" answerable on a phone. */
    .page[b-cuw5qvsjsa]  .app-breadcrumb-parent,
    .page[b-cuw5qvsjsa]  .app-breadcrumb-sep {
        display: none;
    }

    .session-tenant[b-cuw5qvsjsa] {
        max-width: 6rem;
    }

    article.content[b-cuw5qvsjsa] {
        padding: 1rem !important;
    }
}

@media (max-width: 380px) {
    .session-tenant[b-cuw5qvsjsa] {
        display: none;
    }

    .app-heading[b-cuw5qvsjsa] {
        font-size: 0.875rem;
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */
.nav-menu[b-1ssn6kkenh] {
    display: flex;
    height: 100%;
    min-height: 0;
    flex-direction: column;
}

.brand[b-1ssn6kkenh] {
    display: flex;
    min-height: 3.5rem;
    align-items: center;
    justify-content: center;
    padding: 0.5rem 1rem;
}

.brand img[b-1ssn6kkenh] {
    display: block;
    width: min(100%, 190px);
    max-height: 1.75rem;
    object-fit: contain;
    opacity: 0.82;
}

.primary-menu[b-1ssn6kkenh] {
    flex: 1;
    overflow-y: auto;
}

.nav-footer[b-1ssn6kkenh] {
    flex-shrink: 0;
    border-top: 1px solid var(--rz-base-300);
}
/* /Pages/AccountingSetup/AccountBookDialog.razor.rz.scp.css */
/* The book form. Radzen renders a dialog's content outside the page's own DOM, but the markup is
   rendered by this component, so these rules reach it - and its Radzen internals through ::deep.

   The form's density is not set here but in the markup: every field carries
   InputSize="InputSize.Small", which is the variable Radzen actually reads. A --rz-input-height rule on
   this form would do nothing - see the comment on the form itself. */

/* Fields are a grid, not a stack: the name and the description are both short and share a row at this
   dialog's width. Each cell holds the field and, under it, the message that field's validation puts
   there - which is why a cell is an element of ours rather than the field itself. */
.account-book-form-grid[b-2vk8azbuob] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem 0.75rem;
}

.account-book-form-cell[b-2vk8azbuob] {
    min-width: 0;
}

/* The linked sources, two to a row rather than one: ten of them stacked is the height of everything
   else in the dialog put together, which is what used to make it scroll. */
.account-book-form-sources[b-2vk8azbuob] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.35rem 1.25rem;
}

.account-book-form-source[b-2vk8azbuob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-width: 0;
}

/* A phone: one field to a row, and one source to a row. */
@media (max-width: 520px) {
    .account-book-form-grid[b-2vk8azbuob],
    .account-book-form-sources[b-2vk8azbuob] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/AccountingSetup/AccountBookViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the register's
   and the sub-ledger view dialogs (see AssetViewDialog.razor.css). Three across on a wide dialog,
   two on a narrow one, one on a phone. */
.book-detail[b-hhywxgr52c] {
    padding: 0.25rem;
}

.book-detail-fields[b-hhywxgr52c] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.book-detail-wide[b-hhywxgr52c] {
    width: 100%;
}

.book-detail-divider[b-hhywxgr52c] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.book-detail[b-hhywxgr52c]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .book-detail-fields[b-hhywxgr52c] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .book-detail-fields[b-hhywxgr52c] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/AccountingSetup/TransactionSourceViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the register's
   and the sub-ledger view dialogs (see AssetViewDialog.razor.css). Three across on a wide dialog,
   two on a narrow one, one on a phone. */
.source-detail[b-v80euff38r] {
    padding: 0.25rem;
}

.source-detail-fields[b-v80euff38r] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.source-detail-wide[b-v80euff38r] {
    width: 100%;
}

.source-detail-divider[b-v80euff38r] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.source-detail[b-v80euff38r]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .source-detail-fields[b-v80euff38r] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .source-detail-fields[b-v80euff38r] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/Accounts/Accounts.razor.rz.scp.css */
.accounts-parent[b-m02m8ltnbg] {
    opacity: 0.65;
}

.accounts-error[b-m02m8ltnbg] {
    border-left: 4px solid #d13438;
}

.accounts-grid-card[b-m02m8ltnbg] {
    overflow-x: auto;
}

.accounts-mobile-summary-content[b-m02m8ltnbg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.account-detail-pill[b-m02m8ltnbg] {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    background: var(--rz-base-200, #edf1f5);
    color: var(--rz-text-secondary-color, #3d4b5c);
    font-size: 0.75rem;
    line-height: 1.25;
}

.account-detail-pill.is-active[b-m02m8ltnbg] {
    background: var(--rz-success-lighter, #e8f5e9);
    color: var(--rz-success-dark, #107c10);
}

.account-detail-pill.is-inactive[b-m02m8ltnbg] {
    background: var(--rz-base-200, #f1f1f1);
    color: var(--rz-text-secondary-color, #686868);
}

@media (max-width: 640.98px) {
    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table th:nth-child(n+3),
    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table td:nth-child(n+3) {
        display: none;
    }

    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table {
        width: 100% !important;
        min-width: 0 !important;
        table-layout: fixed;
    }

    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table th:nth-child(1),
    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table td:nth-child(1) {
        width: 48% !important;
    }

    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table th:nth-child(2),
    .accounts-grid-scope[b-m02m8ltnbg]  .rz-grid-table td:nth-child(2) {
        width: 52% !important;
    }
}

.account-badge[b-m02m8ltnbg] {
    display: inline-block;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

/* Type badges: translucent fills tint with the active Radzen theme (the same
   --rz-*-lighter tokens Radzen uses), so they read on light and dark cards.
   NOTE: page-scoped CSS cannot see the html[data-theme] attribute, so no
   html[...] selectors here — the variables resolve per theme instead. */
.account-badge--asset[b-m02m8ltnbg] { background: var(--rz-info-lighter); color: var(--rz-info-dark, #0d47a1); }
.account-badge--liability[b-m02m8ltnbg] { background: var(--rz-warning-lighter); color: var(--rz-warning-dark, #e65100); }
.account-badge--equity[b-m02m8ltnbg] { background: var(--rz-success-lighter); color: var(--rz-success-dark, #1b5e20); }
.account-badge--revenue[b-m02m8ltnbg] { background: rgba(149, 117, 205, 0.2); color: var(--rz-primary-dark, #4527a0); }
.account-badge--expense[b-m02m8ltnbg] { background: var(--rz-danger-lighter); color: var(--rz-danger-dark, #b71c1c); }

.account-status[b-m02m8ltnbg] {
    font-size: 0.8rem;
    font-weight: 600;
}

.account-status.is-active[b-m02m8ltnbg] { color: #107c10; }
.account-status.is-inactive[b-m02m8ltnbg] { color: #8a8a8a; }
/* /Pages/Aging/Aging.razor.rz.scp.css */
/* The five bucket figures across one row rather than down the page. They are one reading - the aging
   at a glance - and five full-width cards pushed the counterparties they summarize below the fold.
   auto-fit with a floor holds all five on one row on a wide screen and folds to three and then two as
   the window narrows, so the layout needs no breakpoints of its own. */
.aging-buckets[b-fzergrbqw6] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.75rem;
}
/* /Pages/BookEntries/BookEntries.razor.rz.scp.css */
.book-entries-header[b-ii7ej3aq6f] {
    display: flex;
    width: 100%;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.book-entries-actions[b-ii7ej3aq6f] {
    display: flex;
    min-width: 0;
    flex: 1 1 auto;
    align-items: flex-end;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.book-entries-filters[b-ii7ej3aq6f] {
    align-items: center;
}

@media (max-width: 900px) {
    .book-entries-actions[b-ii7ej3aq6f] {
        flex-basis: 100%;
    }
}
/* /Pages/BookEntries/BookEntryEditDialog.razor.rz.scp.css */
/* The entry form. Radzen renders dialog content outside the page's own DOM, but the markup
   is rendered by this component, so these rules reach it - and its Radzen internals through
   ::deep. */

.book-entry-form[b-ycc9n1sz9x] {
    max-height: 72vh;
    overflow-y: auto;
    padding-right: 0.25rem;

    /* Radzen sizes every input from --rz-input-height, which defaults to its medium height
       (--rz-input-size-md). A book can carry a dozen fields, and at the default height the
       form ran past the bottom of the dialog - so the fields are dense here, and that is what
       lets a whole entry be read on one screen. */
    --rz-input-height: 2.125rem;
    --rz-input-font-size: 0.8125rem;
}

/* Fields are a grid, not a stack: three columns hold the whole form at this dialog's width,
   and the read-only view lays its fields out the same way, so an entry reads the same whether
   it is being looked at or edited. */
.book-entry-form-grid[b-ycc9n1sz9x] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem 0.75rem;
}

.book-entry-form-grid > *[b-ycc9n1sz9x] {
    min-width: 0;
}

.book-entry-form[b-ycc9n1sz9x]  .rz-form-field {
    width: 100%;
    min-width: 0;
}

/* The one field that decides the rest of the form. */
.book-entry-form-wide[b-ycc9n1sz9x] {
    width: 100%;
}

/* How the entry was posted: derived, re-derived on every save, and never typed here. One line
   of context with the description in its balloon, rather than a block of labelled rows
   repeating what the fields below already say. */
.book-entry-form-summary[b-ycc9n1sz9x] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--rz-base-300, #dee2e6);
    font-size: 0.8rem;
    opacity: 0.8;
}

.book-entry-form-summary-glue[b-ycc9n1sz9x] {
    opacity: 0.6;
}

.book-entry-form-summary-help[b-ycc9n1sz9x] {
    font-size: 0.95rem;
    opacity: 0.7;
}

.book-entry-form-heading[b-ycc9n1sz9x] {
    margin-top: 0.1rem;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    opacity: 0.8;
}

.book-entry-form-section[b-ycc9n1sz9x] {
    margin-top: 0.25rem;
}

/* A posting column is one a source rule posts journal lines from; a calculated column is one
   the engine fills in. The read-only view marks the same two, the same way. */
.book-entry-form[b-ycc9n1sz9x]  .book-entry-posting-field .rz-inputtext {
    font-weight: 600;
}

.book-entry-form[b-ycc9n1sz9x]  .book-entry-derived-field .rz-inputtext {
    font-style: italic;
    opacity: 0.85;
}

.book-entry-form-actions[b-ycc9n1sz9x] {
    margin-top: 0.35rem;
}

@media (max-width: 900px) {
    .book-entry-form-grid[b-ycc9n1sz9x] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .book-entry-form-grid[b-ycc9n1sz9x] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/BookEntries/BookEntryViewDialog.razor.rz.scp.css */
.book-entry-detail[b-rwd1jtpvg2] {
    padding: 0.25rem;
}

.book-entry-detail-fields[b-rwd1jtpvg2] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.book-entry-detail-description[b-rwd1jtpvg2] {
    width: 100%;
}

.book-entry-column-fields[b-rwd1jtpvg2] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
}

.book-entry-detail-divider[b-rwd1jtpvg2] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.book-entry-detail[b-rwd1jtpvg2]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

.book-entry-detail[b-rwd1jtpvg2]  .book-entry-posting-field .rz-inputtext {
    font-weight: 700;
}

.book-entry-detail .source-tx-hint[b-rwd1jtpvg2] {
    margin: 0.25rem 0 0;
}

@media (max-width: 640px) {
    .book-entry-detail-fields[b-rwd1jtpvg2],
    .book-entry-column-fields[b-rwd1jtpvg2] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .book-entry-detail-fields[b-rwd1jtpvg2],
    .book-entry-column-fields[b-rwd1jtpvg2] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/FinancialStatements/FinancialStatements.razor.rz.scp.css */
.statements-tabs[b-6zoxbfjrdv] {
    min-width: 0;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-tab {
    min-width: 0;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-column-head {
    border-bottom: 1px solid var(--rz-base-300, #d0d7de);
    padding-bottom: 0.25rem;
    margin-bottom: 0.25rem;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-column-head h2 {
    margin: 0;
    font-size: 1.1rem;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-column h3 {
    margin: 0;
    font-size: 0.95rem;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-figure {
    border-top: 1px solid var(--rz-base-300, #e6e9ec);
    padding-top: 0.35rem;
    font-variant-numeric: tabular-nums;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-footer {
    border-top: 1px solid var(--rz-base-300, #d0d7de);
    padding-top: 0.5rem;
    font-variant-numeric: tabular-nums;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-badge {
    display: inline-block;
    padding: 0.2rem 0.75rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 700;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-badge.is-balanced {
    background: var(--rz-success-lighter, #e8f5e9);
    color: var(--rz-success-dark, #1b5e20);
}

.statements-tabs[b-6zoxbfjrdv]  .statements-badge.is-unbalanced {
    background: var(--rz-danger-lighter, #fdecea);
    color: var(--rz-danger-dark, #b71c1c);
}

.statements-tabs[b-6zoxbfjrdv]  .statements-net-income strong {
    font-size: 1.05rem;
}

.statements-tabs[b-6zoxbfjrdv]  .statements-section-subtotal {
    border-top: 1px dashed var(--rz-base-300, #d0d7de);
    padding-top: 0.35rem;
    font-variant-numeric: tabular-nums;
}

/* -------------------------------------------------------------------------
   Section blocks (heading + account DataGrid) are rendered by the shared
   SectionBlock / CashFlowSectionBlock components and are styled globally in
   wwwroot/css/app.css (.fs-section-*, .fs-indent-*, .stk-*): those rules must
   reach inside Radzen components, which page-scoped CSS cannot do reliably.
   ------------------------------------------------------------------------- */

/* /Pages/FixedAssets/AssetCategoryViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the asset
   view dialog (see AssetViewDialog.razor.css) and the sub-ledger dialogs. Three across on a wide
   dialog, two on a narrow one, one on a phone. */
.class-detail[b-s4vvur8q4a] {
    padding: 0.25rem;
}

.class-detail-fields[b-s4vvur8q4a] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.class-detail-divider[b-s4vvur8q4a] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

/* The account fields carry a code and a name, so they get two columns rather than three. Declared
   before the media queries below so the narrow-screen rules still win by document order. */
.class-detail-pairs[b-s4vvur8q4a] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.class-detail[b-s4vvur8q4a]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .class-detail-fields[b-s4vvur8q4a] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .class-detail-fields[b-s4vvur8q4a] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/FixedAssets/AssetViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the
   Customer and Supplier sub-ledger dialogs (see BookEntryViewDialog.razor.css). Three across
   on a wide dialog, two on a narrow one, one on a phone. */
.asset-detail[b-onaggqg4nw] {
    padding: 0.25rem;
}

.asset-detail-fields[b-onaggqg4nw] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.asset-detail-wide[b-onaggqg4nw] {
    width: 100%;
}

.asset-detail-divider[b-onaggqg4nw] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.asset-detail[b-onaggqg4nw]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .asset-detail-fields[b-onaggqg4nw] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .asset-detail-fields[b-onaggqg4nw] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/GeneralLedger/GeneralLedger.razor.rz.scp.css */
.ledger-reference[b-lgdii3ky8t] {
    font-weight: 600;
    font-family: "Cascadia Code", Consolas, monospace;
    font-size: 0.85rem;
}

.ledger-description[b-lgdii3ky8t] {
    max-width: 360px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ledger-meta[b-lgdii3ky8t] {
    opacity: 0.85;
    font-size: 0.9rem;
    margin-bottom: 0.5rem;
}

.ledger-totals[b-lgdii3ky8t] {
    margin-top: 0.75rem;
    font-variant-numeric: tabular-nums;
}

.ledger-card[b-lgdii3ky8t] {
    overflow-x: auto;
}
/* /Pages/Home.razor.rz.scp.css */
/* Owner dashboard: the month's revenue, cost and profit up top, the year's shape
   below it, then the postings behind the month's two figures. Scoped CSS reaches
   only the elements this page renders, so the rules below target plain elements
   (div/span/h1/p) rather than Radzen component roots, and the cards are sized by
   their inline Style instead. */

.hero-title[b-rtwaqyjcb4] {
    margin: 0;
    font-size: 1.7rem;
}

.hero-subtitle[b-rtwaqyjcb4] {
    margin: 0.25rem 0 0;
    opacity: 0.75;
}

.api-dot[b-rtwaqyjcb4] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    display: inline-block;
}

.api-dot.on[b-rtwaqyjcb4] { background: #107c10; }
.api-dot.off[b-rtwaqyjcb4] { background: #d13438; }

/* Figures are tabular so the three cards line up and every amount in the
   transaction lists sits on the same rhythm. */
.stat-label[b-rtwaqyjcb4] {
    font-size: 0.9rem;
}

.stat-value[b-rtwaqyjcb4] {
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

.stat-note[b-rtwaqyjcb4] {
    opacity: 0.65;
    font-size: 0.8rem;
}

.panel-title[b-rtwaqyjcb4] {
    margin: 0 0 0.25rem;
    font-size: 1.05rem;
}

.panel-subtitle[b-rtwaqyjcb4] {
    margin: 0 0 0.75rem;
    opacity: 0.65;
    font-size: 0.85rem;
}

/* A month can hold dozens of postings, so the list scrolls inside its card
   rather than growing the page. */
.tx-list[b-rtwaqyjcb4] {
    max-height: 340px;
    overflow-y: auto;
}

.tx-row[b-rtwaqyjcb4] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    padding: 0.35rem 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.tx-row:last-child[b-rtwaqyjcb4] {
    border-bottom: none;
}

.tx-date[b-rtwaqyjcb4] {
    flex: 0 0 4.4rem;
    font-size: 0.8rem;
    opacity: 0.8;
    font-variant-numeric: tabular-nums;
}

.tx-body[b-rtwaqyjcb4] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.tx-ref[b-rtwaqyjcb4] {
    font-family: Consolas, monospace;
    font-size: 0.85rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tx-source[b-rtwaqyjcb4] {
    font-size: 0.75rem;
    opacity: 0.65;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tx-amount[b-rtwaqyjcb4] {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
}

.tx-empty[b-rtwaqyjcb4],
.home-note[b-rtwaqyjcb4] {
    margin: 0;
    opacity: 0.7;
    font-size: 0.85rem;
}
/* /Pages/JournalEntries/JournalEntries.razor.rz.scp.css */
.journals-source[b-z1cqxiukhr] {
    font-family: "Cascadia Code", Consolas, monospace;
    font-size: 0.8rem;
    opacity: 0.85;
}

.journals-description[b-z1cqxiukhr] {
    max-width: 360px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.journals-money[b-z1cqxiukhr] {
    font-variant-numeric: tabular-nums;
}

.journals-grid-card[b-z1cqxiukhr] {
    overflow-x: auto;
}
/* /Pages/Parties/PartyViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the register's
   and the sub-ledger view dialogs (see AssetViewDialog.razor.css). Three across on a wide dialog,
   two on a narrow one, one on a phone. */
.party-detail[b-2kaf1sw39x] {
    padding: 0.25rem;
}

.party-detail-fields[b-2kaf1sw39x] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.party-detail-divider[b-2kaf1sw39x] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.party-detail[b-2kaf1sw39x]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .party-detail-fields[b-2kaf1sw39x] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .party-detail-fields[b-2kaf1sw39x] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/SourceRules/SourceRules.razor.rz.scp.css */
.source-type[b-ei50e7zq26] {
    font-weight: 600;
    font-family: "Cascadia Code", Consolas, monospace;
    font-size: 0.85rem;
}

.source-rules-detail[b-ei50e7zq26] {
    display: block;
    opacity: 0.65;
    max-width: 420px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.source-rules-flag[b-ei50e7zq26] {
    display: inline-block;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    background: var(--rz-success-lighter, #e8f5e9);
    color: var(--rz-success-dark, #1b5e20);
}

.source-rule-lines-list[b-ei50e7zq26] {
    max-height: 320px;
    overflow-y: auto;
}

.source-rule-lines-empty[b-ei50e7zq26] {
    opacity: 0.7;
    margin: 0;
    font-size: 0.85rem;
}
/* /Pages/SourceRules/SourceRuleViewDialog.razor.rz.scp.css */
/* The fields are laid out as a grid of disabled RadzenFormFields, the same shape as the register's
   and the sub-ledger view dialogs (see AssetViewDialog.razor.css). Three across on a wide dialog,
   two on a narrow one, one on a phone. */
.rule-detail[b-q01e91v4s4] {
    padding: 0.25rem;
}

.rule-detail-fields[b-q01e91v4s4] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.rule-detail-wide[b-q01e91v4s4] {
    width: 100%;
}

.rule-detail-divider[b-q01e91v4s4] {
    width: 100%;
    margin: 0.25rem 0;
    border: 0;
    border-top: 1px solid var(--rz-base-300);
}

.rule-detail[b-q01e91v4s4]  .rz-form-field {
    min-width: 0;
    width: 100%;
}

@media (max-width: 640px) {
    .rule-detail-fields[b-q01e91v4s4] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 420px) {
    .rule-detail-fields[b-q01e91v4s4] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Pages/TrialBalance/TrialBalance.razor.rz.scp.css */
.trial-balance-badge[b-c04myyc09o] {
    display: inline-block;
    padding: 0.2rem 0.75rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 700;
}

.trial-balance-badge.is-balanced[b-c04myyc09o] {
    background: var(--rz-success-lighter, #e8f5e9);
    color: var(--rz-success-dark, #1b5e20);
}

.trial-balance-badge.is-unbalanced[b-c04myyc09o] {
    background: var(--rz-danger-lighter, #fdecea);
    color: var(--rz-danger-dark, #b71c1c);
}

.trial-balance-meta[b-c04myyc09o] {
    opacity: 0.8;
    font-size: 0.85rem;
    margin-bottom: 0.5rem;
}

.trial-balance-totals[b-c04myyc09o] {
    margin-top: 0.75rem;
    font-variant-numeric: tabular-nums;
}

.trial-balance-card[b-c04myyc09o] {
    overflow-x: auto;
}
