/* /Pages/Admin/AuditLogPage.razor.rz.scp.css */
/* ============================================================
   AuditLog viewer — modern table style + JSON snapshot expand
   Same visual language as Invoices / Meetings tables.
   ============================================================ */

.al-page[b-sq4jjyqftz] {
    padding: 4px 4px 24px 4px;
}

.al-header[b-sq4jjyqftz] {
    margin: 8px 0 16px 0;
}

/* Filter bar -------------------------------------------------- */

.al-filters[b-sq4jjyqftz] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    padding: 12px;
    background: #f8fafc;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    margin-bottom: 12px;
}

.al-filter[b-sq4jjyqftz] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 140px;
}

.al-filter label[b-sq4jjyqftz] {
    font-size: 0.78rem;
    font-weight: 500;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.al-filter-actions[b-sq4jjyqftz] {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

/* Summary pills ----------------------------------------------- */

.al-summary[b-sq4jjyqftz] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.al-pill[b-sq4jjyqftz] {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 500;
    background: #eef2f7;
    color: #475569;
}
.al-pill-info[b-sq4jjyqftz]   { background: #e0f2fe; color: #075985; }
.al-pill-warn[b-sq4jjyqftz]   { background: #fef3c7; color: #92400e; }
.al-pill-danger[b-sq4jjyqftz] { background: #fee2e2; color: #991b1b; }

/* Modern table ------------------------------------------------ */

.al-grid[b-sq4jjyqftz] {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
    background: #ffffff;
}

.al-grid th[b-sq4jjyqftz] {
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 8px;
    border-bottom: 1px solid #e5e9ee;
    font-weight: 600;
    background: #f8fafc;
}

.al-grid th.text-center[b-sq4jjyqftz],
.al-grid td.text-center[b-sq4jjyqftz] { text-align: center; }

.al-grid td[b-sq4jjyqftz] {
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #f1f5f9;
}

.al-grid tbody tr:hover[b-sq4jjyqftz] {
    background: #f8fafc;
}

.al-grid-readonly[b-sq4jjyqftz] {
    color: #64748b;
    font-size: 0.85rem;
}

.al-grid-empty[b-sq4jjyqftz] {
    text-align: center;
    color: #94a3b8;
    font-style: italic;
    padding: 24px;
}

.al-when[b-sq4jjyqftz] {
    color: #475569;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* Per-action row tints — soft so the grid still reads as a list. */
.al-row-delete[b-sq4jjyqftz] { background: #fef2f2; }
.al-row-create[b-sq4jjyqftz] { background: #f0fdf4; }
.al-row-delete:hover[b-sq4jjyqftz], .al-row-create:hover[b-sq4jjyqftz] { filter: brightness(0.98); }

/* Action badges — same vocabulary as the Invoices badge family. */
.al-badge[b-sq4jjyqftz] {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.al-badge-create[b-sq4jjyqftz] { background: #dcfce7; color: #166534; }
.al-badge-update[b-sq4jjyqftz] { background: #fef3c7; color: #92400e; }
.al-badge-delete[b-sq4jjyqftz] { background: #fee2e2; color: #991b1b; }

/* Snapshot row + JSON pane ----------------------------------- */

.al-row-toggle[b-sq4jjyqftz] {
    cursor: pointer;
    color: #64748b;
    transition: color 0.12s ease;
}
.al-row-toggle:hover[b-sq4jjyqftz] {
    color: #0f172a;
}

.al-snapshot-row td[b-sq4jjyqftz] {
    background: #f8fafc;
    border-bottom: 1px solid #e5e9ee;
}

.al-snapshot[b-sq4jjyqftz] {
    padding: 8px 4px;
}

.al-snapshot-head[b-sq4jjyqftz] {
    display: flex;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 6px;
}

.al-snapshot-title[b-sq4jjyqftz] {
    font-weight: 600;
    color: #0f172a;
    font-size: 0.85rem;
}

.al-snapshot-origin[b-sq4jjyqftz] {
    color: #64748b;
    font-size: 0.78rem;
}

.al-snapshot-json[b-sq4jjyqftz] {
    margin: 0;
    padding: 10px 12px;
    background: #0f172a;
    color: #e2e8f0;
    border-radius: 6px;
    font-family: 'SF Mono', Menlo, Consolas, monospace;
    font-size: 0.78rem;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 320px;
    overflow: auto;
}
/* /Pages/Admin/CCAEdit.razor.rz.scp.css */
/* /Pages/Admin/CustomerInvoicePage.razor.rz.scp.css */
/* ============================================================
   Customer Invoice page — modern HTML layout, no DxGrid.
   Pattern mirrors POS/Quote/Activities pages (.fc-grid /
   .mm-grid / .al-grid family), kept page-scoped so the form
   styling can't leak into other admin screens.
   ============================================================ */

.ci-page[b-n8iwbcgrhe] {
    padding: 12px 16px 24px 16px;
}

/* ---- sticky title bar ---- */
.ci-titlebar[b-n8iwbcgrhe] {
    position: sticky;
    top: 0;
    z-index: 5;
    background: #fff;
    border-bottom: 1px solid #e6e6e6;
    padding: 10px 4px 12px 4px;
    margin-bottom: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}
.ci-titlebar-left h2[b-n8iwbcgrhe] {
    line-height: 1.1;
    color: #285481;
}
.ci-titlebar-actions[b-n8iwbcgrhe] {
    display: flex;
    gap: 8px;
}

/* ---- form grouping ---- */
.ci-form label[b-n8iwbcgrhe] {
    font-size: 0.78rem;
    font-weight: 600;
    color: #4a4a4a;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin-bottom: 2px;
    display: block;
}
.ci-form .row[b-n8iwbcgrhe] {
    margin-bottom: 10px;
}

.ci-section-title[b-n8iwbcgrhe] {
    color: #285481;
    margin-top: 18px;
    margin-bottom: 6px;
    font-weight: 600;
    border-bottom: 1px solid #e6e6e6;
    padding-bottom: 4px;
}

/* ---- lines grid ---- */
.ci-grid[b-n8iwbcgrhe] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    border: 1px solid #dadada;
    border-radius: 4px;
    overflow: hidden;
    font-size: 0.92rem;
}
.ci-grid thead th[b-n8iwbcgrhe] {
    background: #f4f6f9;
    color: #285481;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.74rem;
    padding: 8px 10px;
    text-align: left;
    border-bottom: 1px solid #dadada;
}
.ci-grid thead th.text-right[b-n8iwbcgrhe] { text-align: right; }
.ci-grid tbody td[b-n8iwbcgrhe] {
    padding: 6px 8px;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
}
.ci-grid tbody tr:last-child td[b-n8iwbcgrhe] {
    border-bottom: none;
}
.ci-grid tbody tr:hover[b-n8iwbcgrhe] {
    background: #fafbfc;
}
.ci-grid .ci-money[b-n8iwbcgrhe] {
    font-variant-numeric: tabular-nums;
    color: #285481;
    font-weight: 500;
}
.ci-grid .ci-row-del[b-n8iwbcgrhe] {
    color: #b34a4a;
    cursor: pointer;
    font-size: 0.95rem;
}
.ci-grid .ci-row-del:hover[b-n8iwbcgrhe] {
    color: #872c2c;
}
.ci-grid-empty[b-n8iwbcgrhe] {
    text-align: center;
    color: #888;
    padding: 16px;
    font-style: italic;
}

/* ---- add-line button row ---- */
.ci-row-actions[b-n8iwbcgrhe] {
    margin: 6px 0 0 0;
}

/* ---- totals strip ---- */
.ci-totals[b-n8iwbcgrhe] {
    margin-top: 12px;
    padding: 10px 12px;
    background: #f7faff;
    border: 1px solid #d6e3f2;
    border-radius: 4px;
    max-width: 360px;
    margin-left: auto;
}
.ci-total-row[b-n8iwbcgrhe] {
    display: flex;
    justify-content: space-between;
    font-size: 0.95rem;
    color: #285481;
    font-weight: 600;
}
.ci-total-row + .ci-total-row[b-n8iwbcgrhe] {
    margin-top: 4px;
    padding-top: 4px;
    border-top: 1px dashed #c9d8eb;
}

/* ---- payment notes ---- */
.ci-payment-note[b-n8iwbcgrhe] {
    display: block;
    margin-top: 6px;
    color: #666;
    font-style: italic;
}

/* ---- bottom actions ---- */
.ci-bottom-actions[b-n8iwbcgrhe] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 14px;
    border-top: 1px solid #e6e6e6;
}

/* ---- error banner ---- */
.ci-error[b-n8iwbcgrhe] {
    background: #fff4f4;
    color: #872c2c;
    border: 1px solid #f0c0c0;
    padding: 14px 18px;
    border-radius: 4px;
    font-weight: 500;
}
.ci-error i[b-n8iwbcgrhe] {
    margin-right: 8px;
}
/* /Pages/Admin/InvoicesPage.razor.rz.scp.css */
/* ============================================================
   Master Invoices view — custom HTML rows
   ============================================================
   Replaces the wall-of-DxGrid Master view. Each franchise gets
   a collapsible card; per-invoice rows show status badge, dates,
   reference, money (with partial-payment breakdown), actions.

   Blazor scopes these selectors to InvoicesPage.razor.
   ============================================================ */

/* Page banner -------------------------------------------------- */

.inv-master-banner[b-83eqen7yyl] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

.inv-summary[b-83eqen7yyl] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-left: auto;
}

/* Summary pills ----------------------------------------------- */

.inv-pill[b-83eqen7yyl] {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 500;
    background: #eef2f7;
    color: #475569;
    white-space: nowrap;
}

.inv-pill-info[b-83eqen7yyl]    { background: #e0f2fe; color: #075985; }
.inv-pill-warn[b-83eqen7yyl]    { background: #fef3c7; color: #92400e; }
.inv-pill-danger[b-83eqen7yyl]  { background: #fee2e2; color: #991b1b; }
.inv-pill-money[b-83eqen7yyl]   { background: #ecfccb; color: #3f6212; font-weight: 600; }
.inv-pill-tight[b-83eqen7yyl]   { padding: 2px 8px; font-size: 0.75rem; margin-left: 4px; }

/* Income breakdown cards (Marketing / Franchise / Other) ----- */

/* Scope toggle — small segmented control above the cards. */
.inv-cat-toggle[b-83eqen7yyl] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 14px 0 8px 0;
}

.inv-cat-toggle-label[b-83eqen7yyl] {
    font-weight: 600;
    color: #0f172a;
    font-size: 0.95rem;
}

.inv-cat-toggle-group[b-83eqen7yyl] {
    display: inline-flex;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    background: #ffffff;
}

.inv-cat-toggle-btn[b-83eqen7yyl] {
    border: 0;
    background: transparent;
    padding: 5px 12px;
    font-size: 0.82rem;
    color: #475569;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}

.inv-cat-toggle-btn + .inv-cat-toggle-btn[b-83eqen7yyl] {
    border-left: 1px solid #cbd5e1;
}

.inv-cat-toggle-btn:hover[b-83eqen7yyl] {
    background: #f1f5f9;
}

.inv-cat-toggle-btn.is-active[b-83eqen7yyl] {
    background: #0f172a;
    color: #ffffff;
}

.inv-cat-toggle-btn.is-active:hover[b-83eqen7yyl] {
    background: #1e293b;
}

.inv-categories[b-83eqen7yyl] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
    margin: 0 0 18px 0;     /* toggle owns the top margin now */
}

.inv-cat-card[b-83eqen7yyl] {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #ffffff;
    padding: 14px 16px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    border-top: 3px solid #94a3b8;       /* neutral default */
}

/* Per-bucket accent — keeps the cards distinguishable at a
   glance without screaming. */
.inv-cat-marketing[b-83eqen7yyl] { border-top-color: #38bdf8; }   /* sky blue   */
.inv-cat-franchise[b-83eqen7yyl] { border-top-color: #a3e635; }   /* lime       */
.inv-cat-other[b-83eqen7yyl]     { border-top-color: #c4b5fd; }   /* soft purple */

.inv-cat-head[b-83eqen7yyl] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.inv-cat-icon[b-83eqen7yyl] {
    font-size: 1.2rem;
}

.inv-cat-title[b-83eqen7yyl] {
    font-weight: 600;
    font-size: 1rem;
    color: #0f172a;
}

.inv-cat-count[b-83eqen7yyl] {
    margin-left: auto;
    color: #64748b;
    font-size: 0.8rem;
}

.inv-cat-body[b-83eqen7yyl] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.inv-cat-line[b-83eqen7yyl] {
    display: flex;
    justify-content: space-between;
    font-size: 0.9rem;
}

.inv-cat-label[b-83eqen7yyl] {
    color: #64748b;
}

.inv-cat-value[b-83eqen7yyl] {
    font-variant-numeric: tabular-nums;     /* dollar columns line up */
    font-weight: 500;
    color: #0f172a;
}

.inv-cat-billed .inv-cat-value[b-83eqen7yyl] { font-weight: 600; }
.inv-cat-paid   .inv-cat-value[b-83eqen7yyl] { color: #65a30d; }

.inv-cat-owing.is-owing .inv-cat-value[b-83eqen7yyl] {
    color: #b91c1c;
    font-weight: 600;
}

/* List scope toggle (All vs Outstanding only) -----------------
   Mirrors the Income breakdown scope toggle visually — same
   segmented control vocabulary so the page reads as one family. */

.inv-list-toggle[b-83eqen7yyl] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 6px 0 10px 0;
}

.inv-list-toggle-label[b-83eqen7yyl] {
    font-weight: 600;
    color: #0f172a;
    font-size: 0.95rem;
}

.inv-list-toggle-group[b-83eqen7yyl] {
    display: inline-flex;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    background: #ffffff;
}

.inv-list-toggle-btn[b-83eqen7yyl] {
    border: 0;
    background: transparent;
    padding: 5px 12px;
    font-size: 0.82rem;
    color: #475569;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}

.inv-list-toggle-btn + .inv-list-toggle-btn[b-83eqen7yyl] {
    border-left: 1px solid #cbd5e1;
}

.inv-list-toggle-btn:hover[b-83eqen7yyl] {
    background: #f1f5f9;
}

.inv-list-toggle-btn.is-active[b-83eqen7yyl] {
    background: #0f172a;
    color: #ffffff;
}

.inv-list-toggle-btn.is-active:hover[b-83eqen7yyl] {
    background: #1e293b;
}

/* Empty-state message when the filter excludes every franchise. */
.inv-list-empty[b-83eqen7yyl] {
    padding: 24px;
    text-align: center;
    color: #94a3b8;
    font-style: italic;
}

/* Franchise group cards --------------------------------------- */

.inv-master[b-83eqen7yyl] {
    margin-top: 12px;
}

.inv-franchise[b-83eqen7yyl] {
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    margin-bottom: 8px;
    background: #ffffff;
    overflow: hidden;
}

.inv-franchise-head[b-83eqen7yyl] {
    width: 100%;
    border: 0;
    background: #f8fafc;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    text-align: left;
    font: inherit;
    transition: background 0.12s ease;
}

.inv-franchise-head:hover[b-83eqen7yyl] {
    background: #f1f5f9;
}

.inv-chev[b-83eqen7yyl] {
    width: 14px;
    color: #64748b;
    flex-shrink: 0;
}

.inv-franchise-code[b-83eqen7yyl] {
    font-weight: 600;
    color: #0f172a;
    min-width: 110px;
}

.inv-franchise-count[b-83eqen7yyl] {
    color: #64748b;
    font-size: 0.85rem;
    min-width: 36px;
}

/* Right-side cluster on each franchise header: pills (if any) +
   the owing dollar value, pushed as a group to the row's right
   edge so the dollar column stays vertically aligned across all
   franchise cards. */
.inv-franchise-right[b-83eqen7yyl] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.inv-franchise-owing[b-83eqen7yyl] {
    font-weight: 600;
    color: #94a3b8;       /* muted when zero */
    min-width: 110px;
    text-align: right;
}

.inv-franchise-owing.is-owing[b-83eqen7yyl] {
    color: #b91c1c;       /* red when non-zero */
}

/* Invoice rows ------------------------------------------------- */

.inv-rows[b-83eqen7yyl] {
    border-top: 1px solid #e5e7eb;
}

.inv-row[b-83eqen7yyl] {
    display: grid;
    grid-template-columns:
        100px        /* status   */
        160px        /* num + dates */
        1fr          /* reference */
        180px        /* money     */
        150px;       /* actions   */
    gap: 12px;
    align-items: center;
    padding: 10px 14px;
    border-bottom: 1px solid #f1f5f9;
    font-size: 0.88rem;
}

.inv-row:last-child[b-83eqen7yyl] {
    border-bottom: 0;
}

.inv-row.is-overdue[b-83eqen7yyl] {
    background: #fff7ed;       /* soft amber tint */
}

.inv-row.is-paid[b-83eqen7yyl] {
    color: #64748b;            /* dim paid rows so live AR pops */
}

/* Per-row pieces ---------------------------------------------- */

.inv-row-num .inv-num[b-83eqen7yyl] {
    font-weight: 600;
    color: #0f172a;
}

.inv-row.is-paid .inv-num[b-83eqen7yyl] {
    color: #475569;
}

.inv-dates[b-83eqen7yyl] {
    display: flex;
    gap: 8px;
    font-size: 0.78rem;
    color: #64748b;
    margin-top: 2px;
}

.inv-due.is-overdue[b-83eqen7yyl] {
    color: #b91c1c;
    font-weight: 600;
}

.inv-row-ref[b-83eqen7yyl] {
    color: #475569;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inv-row-money[b-83eqen7yyl] {
    text-align: right;
}

.inv-money-total[b-83eqen7yyl] {
    font-weight: 600;
    color: #0f172a;
}

.inv-row.is-paid .inv-money-total[b-83eqen7yyl] {
    color: #65a30d;            /* paid totals get a quiet green */
}

.inv-money-parts[b-83eqen7yyl] {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    font-size: 0.78rem;
    margin-top: 2px;
}

.inv-paid[b-83eqen7yyl]  { color: #65a30d; }
.inv-owing[b-83eqen7yyl] { color: #b91c1c; font-weight: 600; }

.inv-row-actions[b-83eqen7yyl] {
    display: flex;
    gap: 6px;
    justify-content: flex-end;
}

/* Status badges ----------------------------------------------- */

.inv-badge[b-83eqen7yyl] {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 4px;
    font-size: 0.74rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.inv-badge-paid[b-83eqen7yyl]     { background: #dcfce7; color: #166534; }
.inv-badge-partial[b-83eqen7yyl]  { background: #dbeafe; color: #1e40af; }
.inv-badge-overdue[b-83eqen7yyl]  { background: #fee2e2; color: #991b1b; }
.inv-badge-open[b-83eqen7yyl]     { background: #fef3c7; color: #92400e; }
.inv-badge-muted[b-83eqen7yyl]    { background: #e5e7eb; color: #475569; }

/* =============================================================
   Invoice-detail popup — modernised detail card.
   Replaces the DxFormLayout + DxTextBox-as-label crutch with a
   clean header strip / two-column meta+totals / HTML tables for
   line items + payments.
   ============================================================= */

[b-83eqen7yyl] .inv-detail {
    padding: 18px 24px 20px;
    font-size: 0.9rem;
}

/* Loading state */
[b-83eqen7yyl] .inv-detail-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 48px;
    color: #6b7280;
    font-style: italic;
}
[b-83eqen7yyl] .inv-detail-loading i { font-size: 1.2rem; color: #285481; }

/* ---- Header strip ---- */
[b-83eqen7yyl] .inv-detail-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid #e6e6e6;
    margin-bottom: 14px;
}
[b-83eqen7yyl] .inv-detail-num {
    color: #285481;
    font-size: 1.45rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    line-height: 1.1;
}
[b-83eqen7yyl] .inv-detail-contact {
    color: #374151;
    font-size: 1rem;
    font-weight: 500;
    margin-top: 4px;
}
[b-83eqen7yyl] .inv-detail-ref {
    color: #6b7280;
    font-size: 0.82rem;
    margin-top: 2px;
}
[b-83eqen7yyl] .inv-detail-head-right .inv-badge {
    font-size: 0.78rem;
    padding: 4px 10px;
}

/* ---- Meta + totals columns ---- */
[b-83eqen7yyl] .inv-detail-cols {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 14px;
    margin-bottom: 18px;
}
@media (max-width: 800px) {
    [b-83eqen7yyl] .inv-detail-cols { grid-template-columns: 1fr; }
}

[b-83eqen7yyl] .inv-detail-meta {
    background: #f7faff;
    border: 1px solid #d6e3f2;
    border-radius: 6px;
    padding: 12px 14px;
}
[b-83eqen7yyl] .inv-detail-meta-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px dashed #d6e3f2;
}
[b-83eqen7yyl] .inv-detail-meta-row:last-child { border-bottom: none; }
[b-83eqen7yyl] .inv-detail-meta-row .lbl {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #5b6b80;
    font-weight: 500;
}
[b-83eqen7yyl] .inv-detail-meta-row .val {
    color: #285481;
    font-weight: 500;
}
[b-83eqen7yyl] .inv-detail-meta-row .val.is-overdue {
    color: #b34a4a;
    font-weight: 600;
}

[b-83eqen7yyl] .inv-detail-totals {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 12px 14px;
    align-self: flex-start;
}
[b-83eqen7yyl] .inv-detail-totals .t-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 0;
    font-size: 0.88rem;
}
[b-83eqen7yyl] .inv-detail-totals .t-row .lbl  { color: #6b7280; }
[b-83eqen7yyl] .inv-detail-totals .t-row .val  {
    font-variant-numeric: tabular-nums;
    color: #285481;
    font-weight: 500;
}
[b-83eqen7yyl] .inv-detail-totals .t-row-total {
    border-top: 1px solid #e2e8f0;
    margin-top: 4px;
    padding-top: 8px;
    font-weight: 600;
}
[b-83eqen7yyl] .inv-detail-totals .t-row-total .lbl,
[b-83eqen7yyl] .inv-detail-totals .t-row-total .val { color: #285481; font-weight: 700; }
[b-83eqen7yyl] .inv-detail-totals .t-row-paid  .val { color: #166534; }
[b-83eqen7yyl] .inv-detail-totals .t-row-owing {
    border-top: 1px dashed #e2e8f0;
    margin-top: 4px;
    padding-top: 8px;
}
[b-83eqen7yyl] .inv-detail-totals .t-row-owing .val {
    color: #b34a4a;
    font-weight: 700;
    font-size: 0.95rem;
}

/* ---- Section header ---- */
[b-83eqen7yyl] .inv-detail-section {
    color: #285481;
    margin-top: 16px;
    margin-bottom: 6px;
    font-weight: 600;
    border-bottom: 1px solid #e6e6e6;
    padding-bottom: 4px;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ---- Tables (line items + payments) ---- */
[b-83eqen7yyl] .inv-detail-table-wrap {
    border: 1px solid #dadada;
    border-radius: 6px;
    overflow: hidden;
    max-height: 280px;
    overflow-y: auto;
}
[b-83eqen7yyl] .inv-detail-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    font-size: 0.85rem;
}
[b-83eqen7yyl] .inv-detail-grid thead th {
    background: #f4f6f9;
    color: #285481;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-size: 0.7rem;
    padding: 8px 10px;
    text-align: left;
    border-bottom: 1px solid #dadada;
    font-weight: 600;
    position: sticky;
    top: 0;
    z-index: 1;
}
[b-83eqen7yyl] .inv-detail-grid thead th.text-right { text-align: right; }
[b-83eqen7yyl] .inv-detail-grid tbody td {
    padding: 7px 10px;
    border-bottom: 1px solid #eef2f7;
    vertical-align: middle;
}
[b-83eqen7yyl] .inv-detail-grid tbody tr:last-child td { border-bottom: none; }
[b-83eqen7yyl] .inv-detail-grid tbody tr:hover { background: #fafbfc; }
[b-83eqen7yyl] .inv-detail-grid .money {
    font-variant-numeric: tabular-nums;
    color: #285481;
    font-weight: 500;
}

[b-83eqen7yyl] .inv-detail-empty {
    padding: 16px;
    text-align: center;
    color: #6b7280;
    font-style: italic;
    background: #f9fafb;
    border: 1px dashed #e2e8f0;
    border-radius: 6px;
}

/* ---- Footer ---- */
[b-83eqen7yyl] .inv-detail-footer {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 6px 6px 0;
}
/* /Pages/Admin/MarketingFundsPage.razor.rz.scp.css */
/* Scope toggle on Marketing Funds — same segmented-control vocabulary
   as the FY toggle on the Invoices page. */

.mf-scope-toggle[b-s1mc0k3fq4] {
    display: flex;
    align-items: center;
}

.mf-scope-group[b-s1mc0k3fq4] {
    display: inline-flex;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    overflow: hidden;
    background: #ffffff;
}

.mf-scope-btn[b-s1mc0k3fq4] {
    border: 0;
    background: transparent;
    padding: 6px 14px;
    font-size: 0.85rem;
    color: #475569;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
    white-space: nowrap;
}

.mf-scope-btn + .mf-scope-btn[b-s1mc0k3fq4] {
    border-left: 1px solid #cbd5e1;
}

.mf-scope-btn:hover[b-s1mc0k3fq4] {
    background: #f1f5f9;
}

.mf-scope-btn.is-active[b-s1mc0k3fq4] {
    background: #0f172a;
    color: #ffffff;
}

.mf-scope-btn.is-active:hover[b-s1mc0k3fq4] {
    background: #1e293b;
}
/* /Pages/Admin/POSPage.razor.rz.scp.css */
.pos-page[b-mfx4a64df8] {
    max-width: 1080px;
    margin: 0 auto;
    padding: 20px 16px 48px;
}

.pos-header[b-mfx4a64df8] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 24px;
}

.pos-header h1[b-mfx4a64df8] {
    font-size: 24px;
    margin: 0 0 4px;
    color: #1f2a44;
}

.pos-subtitle[b-mfx4a64df8] {
    color: #6b7280;
    margin: 0;
    font-size: 14px;
}

/* ---- Sections ---- */
.pos-section[b-mfx4a64df8] {
    background: #ffffff;
    border: 1px solid #e5e9ee;
    border-radius: 10px;
    padding: 18px 20px;
    margin-bottom: 16px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.03);
}

.pos-section h2[b-mfx4a64df8] {
    font-size: 16px;
    margin: 0 0 14px;
    color: #1f2a44;
    display: flex;
    align-items: center;
    gap: 10px;
}

.pos-step[b-mfx4a64df8] {
    display: inline-flex;
    width: 24px; height: 24px;
    background: #0d72b9;
    color: #ffffff;
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
}

/* ---- Customer search ---- */
.pos-search-box[b-mfx4a64df8] { width: 100%; max-width: 480px; }

.pos-hits[b-mfx4a64df8] {
    margin-top: 12px;
    border: 1px solid #e5e9ee;
    border-radius: 8px;
    overflow: hidden;
    max-width: 720px;
}

.pos-hit[b-mfx4a64df8] {
    padding: 10px 14px;
    cursor: pointer;
    border-bottom: 1px solid #f1f5f9;
}
.pos-hit:last-child[b-mfx4a64df8] { border-bottom: none; }
.pos-hit:hover[b-mfx4a64df8]     { background: #f8fafc; }

.pos-hit-name[b-mfx4a64df8] { font-weight: 600; color: #1f2a44; }
.pos-hit-meta[b-mfx4a64df8] { font-size: 13px; color: #4b5563; display: flex; gap: 12px; flex-wrap: wrap; margin-top: 2px; }
.pos-hit-meta .text-muted[b-mfx4a64df8] { color: #94a3b8; }

.pos-no-hits[b-mfx4a64df8] {
    margin-top: 10px;
    color: #6b7280;
    font-size: 14px;
}

.pos-search-hint[b-mfx4a64df8] {
    margin-top: 6px;
    font-size: 13px;
    color: #6b7280;
    display: flex;
    align-items: center;
    gap: 6px;
}
.pos-search-hint a[b-mfx4a64df8] { color: #0d72b9; text-decoration: none; }
.pos-search-hint a:hover[b-mfx4a64df8] { text-decoration: underline; }
.pos-search-hint-sep[b-mfx4a64df8] { color: #cbd5e1; }

/* ---- Customer card ---- */
.pos-customer-card[b-mfx4a64df8] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    padding: 12px;
    background: #f8fafc;
    border: 1px solid #e5e9ee;
    border-radius: 10px;
}

.pos-customer-avatar[b-mfx4a64df8] {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: linear-gradient(135deg, #0d72b9, #123b7a);
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    font-weight: 600;
    flex-shrink: 0;
}

.pos-customer-meta[b-mfx4a64df8] { flex-grow: 1; }
.pos-customer-name[b-mfx4a64df8] { font-weight: 600; font-size: 16px; color: #1f2a44; }
.pos-customer-line[b-mfx4a64df8] { font-size: 13px; color: #4b5563; margin-top: 2px; display: flex; gap: 12px; flex-wrap: wrap; }
.pos-customer-line .text-muted[b-mfx4a64df8] { color: #94a3b8; }

.pos-pill[b-mfx4a64df8] {
    display: inline-block;
    font-size: 12px;
    padding: 2px 8px;
    border-radius: 999px;
}
.pos-pill-ok[b-mfx4a64df8]   { background: #d1fae5; color: #065f46; }
.pos-pill-warn[b-mfx4a64df8] { background: #fef3c7; color: #92400e; }

/* ---- Lines table ---- */
.pos-lines[b-mfx4a64df8] {
    width: 100%;
    border-collapse: collapse;
}
.pos-lines th[b-mfx4a64df8] {
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 8px;
    border-bottom: 1px solid #e5e9ee;
}
.pos-lines td[b-mfx4a64df8] {
    padding: 8px;
    vertical-align: middle;
    border-bottom: 1px solid #f1f5f9;
}
.pos-lines .text-right[b-mfx4a64df8] { text-align: right; }
.pos-line-cancelled td[b-mfx4a64df8] { opacity: 0.45; text-decoration: line-through; }

.pos-row-actions[b-mfx4a64df8] {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}

.pos-freight[b-mfx4a64df8] { max-width: 200px; }

/* ---- Totals ---- */
.pos-totals-section[b-mfx4a64df8] { background: #f8fafc; }

.pos-totals[b-mfx4a64df8] {
    max-width: 360px;
    margin-left: auto;
}
.pos-total-row[b-mfx4a64df8] {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    font-size: 14px;
}
.pos-total-row.pos-grand[b-mfx4a64df8] {
    font-size: 18px;
    font-weight: 700;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid #cbd5e1;
}

/* ---- Feedback ---- */
.pos-error[b-mfx4a64df8] {
    margin-top: 12px;
    background: #fff1f2;
    color: #b91c1c;
    border: 1px solid #fecdd3;
    border-radius: 6px;
    padding: 10px 12px;
    font-size: 14px;
}
.pos-success[b-mfx4a64df8] {
    margin-top: 12px;
    background: #ecfdf5;
    color: #047857;
    border: 1px solid #a7f3d0;
    border-radius: 6px;
    padding: 10px 12px;
    font-size: 14px;
}
/* /Pages/Admin/ProductBuildKitsPage.razor.rz.scp.css */
/* Build Kits — keep Build + Print buttons inline on the same row as
   Build Qty without DxFormLayout's default vertical stacking. */
.bk-action-row[b-b0fpgbxh42] {
    display: flex;
    align-items: center;
    gap: 6px;
    height: 100%;
}
/* /Pages/Admin/UsherPage.razor.rz.scp.css */
.section-title[b-jrll9vehhp] {
    margin-top: 2rem;
    font-size: 1.5rem;
    font-weight: 600;
    color: #2c3e50;
}

.tool-grid[b-jrll9vehhp] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}

.dx-button[b-jrll9vehhp] {
    width: 100%;
    text-align: left;
    font-weight: 500;
    font-size: 1rem;
}

/* SMS test panel — sits in its own narrow column under the tools grid so it
   doesn't compete for the .tool-grid auto-fill space. */
.sms-test-row[b-jrll9vehhp] {
    max-width: 520px;
    margin: 12px 0 24px 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.sms-test-status[b-jrll9vehhp] {
    font-size: 0.9rem;
    padding: 6px 10px;
    border-radius: 4px;
}
.sms-test-status.ok[b-jrll9vehhp]      { background: #dcfce7; color: #166534; border: 1px solid #86efac; }
.sms-test-status.missing[b-jrll9vehhp] { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
.sms-test-form[b-jrll9vehhp] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Xero on-demand sync — busy strip shown under the Xero tool grid while
   any of the three sync calls is in flight. Matches the toaster but
   stays on the page so the user can see it without checking the corner. */
.xero-sync-busy[b-jrll9vehhp] {
    margin: -10px 0 20px 0;
    padding: 8px 12px;
    border-radius: 4px;
    background: #e0f2fe;
    color: #075985;
    font-size: 0.9rem;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.xero-sync-busy i[b-jrll9vehhp] { color: #0284c7; }

/* Overdue-reminder preview surface ----------------------------- */

.overdue-test[b-jrll9vehhp] {
    margin: -8px 0 24px 0;
}

.overdue-controls[b-jrll9vehhp] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.overdue-picker[b-jrll9vehhp] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 360px;
}

.overdue-picker label[b-jrll9vehhp] {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #475569;
    font-weight: 500;
}

.overdue-summary[b-jrll9vehhp] {
    margin-top: 10px;
    padding: 10px 12px;
    background: #fef3c7;
    color: #92400e;
    border-radius: 6px;
    font-size: 0.9rem;
    line-height: 1.5;
}

.overdue-summary code[b-jrll9vehhp] {
    background: rgba(0, 0, 0, 0.06);
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.85rem;
}

.overdue-busy[b-jrll9vehhp],
.overdue-empty[b-jrll9vehhp] {
    padding: 10px 12px;
    border-radius: 6px;
    font-size: 0.9rem;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.overdue-busy[b-jrll9vehhp] {
    background: #e0f2fe;
    color: #075985;
}
.overdue-busy i[b-jrll9vehhp] { color: #0284c7; }

.overdue-empty[b-jrll9vehhp] {
    background: #dcfce7;
    color: #166534;
}
.overdue-empty i[b-jrll9vehhp] { color: #16a34a; }
/* /Pages/AssetLibraryPage.razor.rz.scp.css */
/* /Pages/ConnectCCS.razor.rz.scp.css */

.mainLayout[b-avnk24q9tc]{
    margin-top:0px !important;
}

.selectedFranchisee[b-avnk24q9tc]{
    color: white;
    font-weight: bold;
    float: left;
    padding-bottom: 15px;
    margin-left: 0px;
    background-color: #0d72b9;
    width: 100%;
    padding-top: 15px;
}

.franchiseeCheck[b-avnk24q9tc]{
    color: white;
    font-weight: bold;
    float: left;
    padding-bottom: 15px;
    margin-left: 0px;
    background-color: #0d72b9;
    width: 100%;
    padding-top: 15px;
}

.header[b-avnk24q9tc] {
    position: relative;
    text-align: center;
    background: linear-gradient(60deg, rgba(151,202,255,1) 0%, rgba(224,235,237,1) 100%);
    color: white;
    margin-top: -40px;
}

.logoCCS[b-avnk24q9tc] {
    margin-top:30px;
    width: 450px;
}

.inner-header[b-avnk24q9tc] {
    /*height: 30vh;*/
    width: 100%;
    margin: 0;
    padding: 0;
}
.inner-subheader[b-avnk24q9tc] {
    /*height: 10vh;*/
    width: 100%;
    margin: 0;
    padding: 0;
}

.flex[b-avnk24q9tc] { 
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.waves[b-avnk24q9tc] {
    position: relative;
    width: 100%;
    height: 15vh;
    margin-bottom: -7px; /*Fix for safari gap*/
    min-height: 100px;
    max-height: 150px;
}

.content[b-avnk24q9tc] {
    position: relative;
    /*height: 60vh;*/
    text-align: center;
    background-color: white;
}


/* Animation */

.parallax > use[b-avnk24q9tc] {
    animation: move-forever-b-avnk24q9tc 25s cubic-bezier(.55,.5,.45,.5) infinite;
}

.parallax > use:nth-child(1)[b-avnk24q9tc] {
    animation-delay: -2s;
    animation-duration: 7s;
}

.parallax > use:nth-child(2)[b-avnk24q9tc] {
    animation-delay: -3s;
    animation-duration: 10s;
}

.parallax > use:nth-child(3)[b-avnk24q9tc] {
    animation-delay: -4s;
    animation-duration: 13s;
}

.parallax > use:nth-child(4)[b-avnk24q9tc] {
    animation-delay: -5s;
    animation-duration: 20s;
}

@keyframes move-forever-b-avnk24q9tc {
    0% {
        transform: translate3d(-90px,0,0);
    }

    100% {
        transform: translate3d(85px,0,0);
    }
}
/*Shrinking for mobile*/
@media (max-width: 768px) {
    .waves[b-avnk24q9tc] {
        height: 40px;
        min-height: 40px;
    }

    .content[b-avnk24q9tc] {
        height: 60vh;
    }

    h1[b-avnk24q9tc] {
        font-size: 24px;
    }
}
/* /Pages/ConnectCCSAudit.razor.rz.scp.css */

.mainLayout[b-hkllfyoo3e]{
    margin-top:0px !important;
}

.selectedFranchisee[b-hkllfyoo3e]{
    color: white;
    font-weight: bold;
    float: left;
    padding-bottom: 15px;
    margin-left: 0px;
    background-color: #0d72b9;
    width: 100%;
    padding-top: 15px;
}

.franchiseeCheck[b-hkllfyoo3e]{
    color: white;
    font-weight: bold;
    float: left;
    padding-bottom: 15px;
    margin-left: 0px;
    background-color: #0d72b9;
    width: 100%;
    padding-top: 15px;
}

.header[b-hkllfyoo3e] {
    position: relative;
    text-align: center;
    background: linear-gradient(60deg, rgba(151,202,255,1) 0%, rgba(224,235,237,1) 100%);
    color: white;
    margin-top: -40px;
}

.logoCCS[b-hkllfyoo3e] {
    margin-top:30px;
    width: 450px;
}

.inner-header[b-hkllfyoo3e] {
    /*height: 30vh;*/
    width: 100%;
    margin: 0;
    padding: 0;
}
.inner-subheader[b-hkllfyoo3e] {
    /*height: 10vh;*/
    width: 100%;
    margin: 0;
    padding: 0;
}

.flex[b-hkllfyoo3e] {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.waves[b-hkllfyoo3e] {
    position: relative;
    width: 100%;
    height: 15vh;
    margin-bottom: -7px; /*Fix for safari gap*/
    min-height: 100px;
    max-height: 150px;
}

.content[b-hkllfyoo3e] {
    position: relative;
    /*height: 60vh;*/
    text-align: center;
    background-color: white;
}


/* Animation */

.parallax > use[b-hkllfyoo3e] {
    animation: move-forever-b-hkllfyoo3e 25s cubic-bezier(.55,.5,.45,.5) infinite;
}

.parallax > use:nth-child(1)[b-hkllfyoo3e] {
    animation-delay: -2s;
    animation-duration: 7s;
}

.parallax > use:nth-child(2)[b-hkllfyoo3e] {
    animation-delay: -3s;
    animation-duration: 10s;
}

.parallax > use:nth-child(3)[b-hkllfyoo3e] {
    animation-delay: -4s;
    animation-duration: 13s;
}

.parallax > use:nth-child(4)[b-hkllfyoo3e] {
    animation-delay: -5s;
    animation-duration: 20s;
}

@keyframes move-forever-b-hkllfyoo3e {
    0% {
        transform: translate3d(-90px,0,0);
    }

    100% {
        transform: translate3d(85px,0,0);
    }
}
/*Shrinking for mobile*/
@media (max-width: 768px) {
    .waves[b-hkllfyoo3e] {
        height: 40px;
        min-height: 40px;
    }

    .content[b-hkllfyoo3e] {
        height: 60vh;
    }

    h1[b-hkllfyoo3e] {
        font-size: 24px;
    }
}
/* /Pages/FranchiseeCard.razor.rz.scp.css */
/* ============================================================
   FranchiseeCard — modern child-collection tables for the
   meeting editor (Attendees / Topics / Action Items).
   Mirrors the .mm-grid styles on MyMeetings — kept as
   .fc-grid here because Blazor scoped CSS rewrites per
   component, so the same selectors couldn't be shared
   without lifting them to global site CSS.
   ============================================================ */

.fc-section-title[b-gkq9dvaghc] {
    margin-bottom: 4px;
}

.fc-grid[b-gkq9dvaghc] {
    width: 100%;
    border-collapse: collapse;
}

.fc-grid th[b-gkq9dvaghc] {
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 8px;
    border-bottom: 1px solid #e5e9ee;
    font-weight: 600;
    background: #f8fafc;
}

.fc-grid th.text-center[b-gkq9dvaghc],
.fc-grid td.text-center[b-gkq9dvaghc] { text-align: center; }

.fc-grid td[b-gkq9dvaghc] {
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #f1f5f9;
}

.fc-grid tr:last-child td[b-gkq9dvaghc] {
    border-bottom: 0;
}

.fc-grid-readonly[b-gkq9dvaghc] {
    color: #64748b;
    font-size: 0.85rem;
}

.fc-grid-empty[b-gkq9dvaghc] {
    text-align: center;
    color: #94a3b8;
    font-style: italic;
    padding: 14px;
}

/* Dim completed action rows so the live items pop. */
.fc-row-done td[b-gkq9dvaghc] {
    background: #f8fafc;
    color: #64748b;
}

/* Per-row trash icon. */
.fc-row-del[b-gkq9dvaghc] {
    cursor: pointer;
    color: #94a3b8;
    transition: color 0.12s ease;
}
.fc-row-del:hover[b-gkq9dvaghc] {
    color: #b91c1c;
}

/* "+ Add" action buttons under each table. */
.fc-row-actions[b-gkq9dvaghc] {
    display: flex;
    justify-content: flex-start;
    margin: 8px 0 16px 0;
}

/* Meetings list-table extras --------------------------------- */

/* Soft highlight on whichever meeting the editor is currently
   bound to — keeps a visual anchor between the list and the
   editor panel directly below. */
.fc-meetings-grid tbody tr:hover[b-gkq9dvaghc] {
    background: #f8fafc;
}
.fc-meetings-grid tbody tr.fc-row-selected[b-gkq9dvaghc] {
    background: #eff6ff;
}
.fc-meetings-grid tbody tr.fc-row-selected td[b-gkq9dvaghc] {
    border-bottom-color: #bfdbfe;
}

/* Pen icon mirror of the existing .fc-row-del — same colour
   ramp, blue instead of red on hover so it doesn't read as
   destructive. */
.fc-row-edit[b-gkq9dvaghc] {
    cursor: pointer;
    color: #94a3b8;
    transition: color 0.12s ease;
}
.fc-row-edit:hover[b-gkq9dvaghc] {
    color: #2563eb;
}

/* Pill badges used in the Open / Shared columns — same visual
   language as the Invoices page summary pills (scaled down). */
.fc-badge[b-gkq9dvaghc] {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 500;
    background: #eef2f7;
    color: #475569;
    white-space: nowrap;
}
.fc-badge-warn[b-gkq9dvaghc] { background: #fef3c7; color: #92400e; }
.fc-badge-ok[b-gkq9dvaghc]   { background: #dcfce7; color: #166534; }
/* /Pages/Index.razor.rz.scp.css */
/* ============================================================
   Franchisee dashboard — Outstanding Invoices card.
   Scoped to Index.razor (Blazor isolation appends a generated
   attribute), so these don't leak into the Master KPI strip
   in the same component.
   ============================================================ */

.fc-inv[b-h8vd3kgw08] {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    padding: 14px 16px;
    margin-bottom: 16px;
}

/* ---- Header row -------------------------------------------- */
.fc-inv-header[b-h8vd3kgw08] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eef2f7;
}
.fc-inv-titles[b-h8vd3kgw08] { display: flex; flex-direction: column; gap: 2px; }
.fc-inv-title[b-h8vd3kgw08] {
    margin: 0;
    color: #285481;
    font-weight: 700;
    letter-spacing: 0.01em;
}
.fc-inv-sub[b-h8vd3kgw08] {
    color: #6b7280;
    font-size: 0.78rem;
}

/* ---- Summary strip ----------------------------------------- */
.fc-inv-summary[b-h8vd3kgw08] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-bottom: 14px;
}
.fc-inv-cell[b-h8vd3kgw08] {
    background: #f7faff;
    border: 1px solid #d6e3f2;
    border-radius: 6px;
    padding: 8px 12px;
}
.fc-inv-cell .lbl[b-h8vd3kgw08] {
    font-size: 0.7rem;
    color: #5b6b80;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 2px;
}
.fc-inv-cell .val[b-h8vd3kgw08] {
    font-variant-numeric: tabular-nums;
    color: #285481;
    font-weight: 600;
    font-size: 1.05rem;
}
.fc-inv-cell .val small[b-h8vd3kgw08] {
    font-size: 0.7rem;
    font-weight: 500;
    color: #6b7280;
    margin-left: 4px;
}
.fc-inv-cell .val.overdue[b-h8vd3kgw08]  { color: #b34a4a; }
.fc-inv-cell .val.due-soon[b-h8vd3kgw08] { color: #c2842a; }

/* ---- Empty / loading state --------------------------------- */
.fc-inv-empty[b-h8vd3kgw08] {
    padding: 18px;
    text-align: center;
    color: #6b7280;
    font-style: italic;
    background: #f9fafb;
    border: 1px dashed #e2e8f0;
    border-radius: 6px;
}
.fc-inv-empty i[b-h8vd3kgw08] { margin-right: 6px; color: #16a34a; }

/* ---- Invoice list (stacked two-line rows) -------------------
   At dashboard width a 7-column grid collapses badly. Each
   invoice gets its own card with the top line carrying identity
   + status pill and the bottom line carrying dates + money.
   ------------------------------------------------------------ */
.fc-inv-list[b-h8vd3kgw08] {
    max-height: 380px;
    overflow-y: auto;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    background: #fff;
}
.fc-inv-row[b-h8vd3kgw08] {
    padding: 10px 12px;
    border-bottom: 1px solid #eef2f7;
    transition: background-color 0.12s ease;
}
.fc-inv-row:last-child[b-h8vd3kgw08]       { border-bottom: none; }
.fc-inv-row:hover[b-h8vd3kgw08]            { background: #fafbfc; }
.fc-inv-row.row-overdue[b-h8vd3kgw08]      { background: #fff5f5; }
.fc-inv-row.row-overdue:hover[b-h8vd3kgw08]{ background: #ffeded; }
.fc-inv-row.row-due-soon[b-h8vd3kgw08]     { background: #fffbef; }
.fc-inv-row.row-due-soon:hover[b-h8vd3kgw08] { background: #fff5d9; }

/* Top line: invoice id + ref + region + status pill (right) */
.fc-inv-row-top[b-h8vd3kgw08] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    margin-bottom: 4px;
}
.fc-inv-id[b-h8vd3kgw08] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    flex-wrap: wrap;
}
.fc-inv-tags[b-h8vd3kgw08] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.fc-inv-num[b-h8vd3kgw08] {
    font-weight: 700;
    color: #285481;
    font-variant-numeric: tabular-nums;
    font-size: 0.9rem;
}
.fc-inv-ref[b-h8vd3kgw08] {
    color: #374151;
    font-size: 0.88rem;
}

/* Bottom line: dates left, amounts right */
.fc-inv-row-bot[b-h8vd3kgw08] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 0.78rem;
    color: #6b7280;
}
.fc-inv-row-bot .flex-grow[b-h8vd3kgw08] { flex: 1; }
.fc-inv-date[b-h8vd3kgw08] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}
.fc-inv-date i[b-h8vd3kgw08] { font-size: 0.78rem; color: #9ca3af; }
.fc-inv-date.overdue[b-h8vd3kgw08],
.fc-inv-date.overdue i[b-h8vd3kgw08]  { color: #b34a4a; font-weight: 500; }
.fc-inv-date.due-soon[b-h8vd3kgw08],
.fc-inv-date.due-soon i[b-h8vd3kgw08] { color: #c2842a; font-weight: 500; }

.fc-inv-money[b-h8vd3kgw08] {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.fc-inv-money.paid[b-h8vd3kgw08] {
    color: #166534;
    font-size: 0.78rem;
}
.fc-inv-money.owing[b-h8vd3kgw08] {
    color: #285481;
    font-weight: 700;
    font-size: 0.95rem;
    letter-spacing: 0.01em;
}

/* ---- Region badge (HQ-owned invoices on another region) ----- */
.fc-inv-region[b-h8vd3kgw08] {
    display: inline-block;
    padding: 1px 6px;
    font-size: 0.65rem;
    font-weight: 600;
    background: #e0e7ff;
    color: #3730a3;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

/* ---- Status pill ------------------------------------------- */
.fc-inv-status[b-h8vd3kgw08] {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.7rem;
    font-weight: 600;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.fc-inv-status.overdue[b-h8vd3kgw08]   { background: #fee2e2; color: #991b1b; }
.fc-inv-status.due-soon[b-h8vd3kgw08]  { background: #fef3c7; color: #92400e; }
.fc-inv-status.part-paid[b-h8vd3kgw08] { background: #e0e7ff; color: #3730a3; }
.fc-inv-status.neutral[b-h8vd3kgw08]   { background: #f1f5f9; color: #475569; }
/* /Pages/MapPage.razor.rz.scp.css */
.map-wrapper[b-2dv8bqn6wt] {
    height: calc(100vh - 100px);
    display: flex;
    flex-direction: column;
}

.above-map[b-2dv8bqn6wt] {
    height: 60px;
}

#map[b-2dv8bqn6wt] {
    flex: 1 1 auto;
    min-height: 300px;   /* 👈 key */
    width: 100%;
}
/* /Pages/MyMeetings.razor.rz.scp.css */
/* ============================================================
   MyMeetings — read-mode header + edit-mode (full-page) editor
   ============================================================
   Read mode  : left list + right detail panel (Bootstrap row).
   Edit mode  : full-page editor with its own sticky title bar.
   ============================================================ */

/* Read-mode page header ---------------------------------------- */

.mm-header[b-c6ag3bparw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 8px 0 16px 0;
}

/* Edit-mode title bar ----------------------------------------- */

.mm-edit-titlebar[b-c6ag3bparw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 10px 14px;
    margin: 8px 0 16px 0;
    background: #f8fafc;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    position: sticky;
    top: 0;
    z-index: 5;          /* keep it above the form when scrolling */
}

.mm-edit-titlebar-left[b-c6ag3bparw] {
    display: flex;
    align-items: baseline;
    gap: 12px;
}

.mm-edit-subtitle[b-c6ag3bparw] {
    color: #64748b;
    font-size: 0.85rem;
}

.mm-edit-titlebar-actions[b-c6ag3bparw] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* Edit form body --------------------------------------------- */

.mm-editor[b-c6ag3bparw] {
    padding: 4px 8px 8px 8px;
}

.mm-editor label[b-c6ag3bparw] {
    font-size: 0.85rem;
    font-weight: 500;
    color: #475569;
    margin-bottom: 2px;
    display: block;
}

/* Plain text display for the franchisee on an edit (locked) row. */
.mm-editor-fixed[b-c6ag3bparw] {
    padding: 6px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    background: #f8fafc;
    color: #0f172a;
    font-weight: 500;
}

/* Bottom action row — duplicates the title bar's Save/Cancel so
   the user doesn't have to scroll back to the top after a long edit. */
.mm-edit-bottom-actions[b-c6ag3bparw] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid #e5e7eb;
}

/* Per-row edit/delete on the left list ----------------------- */

.mm-row-actions-inline[b-c6ag3bparw] {
    display: flex;
    align-items: center;
    color: #475569;
    padding-left: 8px;
}

.mm-row-actions-inline i[b-c6ag3bparw] {
    cursor: pointer;
}

/* Modern child-collection tables (Attendees / Topics / Action Items).
   Mirrors the POS / QuoteCard line-item style. */

.mm-section-title[b-c6ag3bparw] {
    margin-bottom: 4px;
}

.mm-grid[b-c6ag3bparw] {
    width: 100%;
    border-collapse: collapse;
}

.mm-grid th[b-c6ag3bparw] {
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 8px;
    border-bottom: 1px solid #e5e9ee;
    font-weight: 600;
    background: #f8fafc;
}

.mm-grid th.text-center[b-c6ag3bparw],
.mm-grid td.text-center[b-c6ag3bparw] { text-align: center; }

.mm-grid td[b-c6ag3bparw] {
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #f1f5f9;
}

.mm-grid tr:last-child td[b-c6ag3bparw] {
    border-bottom: 0;
}

.mm-grid-readonly[b-c6ag3bparw] {
    color: #64748b;
    font-size: 0.85rem;
}

.mm-grid-empty[b-c6ag3bparw] {
    text-align: center;
    color: #94a3b8;
    font-style: italic;
    padding: 14px;
}

/* Dim completed action rows so the live items pop. */
.mm-row-done td[b-c6ag3bparw] {
    background: #f8fafc;
    color: #64748b;
}

/* Per-row trash icon — same hover gesture used on the meeting list. */
.mm-row-del[b-c6ag3bparw] {
    cursor: pointer;
    color: #94a3b8;
    transition: color 0.12s ease;
}
.mm-row-del:hover[b-c6ag3bparw] {
    color: #b91c1c;
}

/* "+ Add" action buttons under each table — small, secondary,
   left-aligned. */
.mm-row-actions[b-c6ag3bparw] {
    display: flex;
    justify-content: flex-start;
    margin: 8px 0 16px 0;
}

/* Delete-confirmation popup body ------------------------------ */

.mm-delete-confirm[b-c6ag3bparw] {
    padding: 8px 4px;
}

.mm-delete-confirm-actions[b-c6ag3bparw] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
}
/* /Pages/PdfViewer.razor.rz.scp.css */
.row-container[b-eb5h8nqmqe] {
    display: flex;
    width: 100%;
    height: 100%;
    flex-direction: column;
    background-color: blue;
    overflow: hidden;
}

.first-row[b-eb5h8nqmqe] {
    background-color: lime;
}

.second-row[b-eb5h8nqmqe] {
    flex-grow: 1;
    border: none;
    margin: 0;
    padding: 0;
}
/* /Pages/ProductViewerPage.razor.rz.scp.css */
/* /Pages/QuoteCard.razor.rz.scp.css */
/* Quote line entry — POS-style table.
   Always-visible inputs per row (no edit-mode toggle). Borrows the POS
   palette so the two screens feel like siblings. */

.quote-lines[b-o0caemc65m] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 4px;
}

.quote-lines th[b-o0caemc65m] {
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 8px 10px;
    border-bottom: 1px solid #e5e9ee;
    background: #f8fafc;
}

.quote-lines td[b-o0caemc65m] {
    padding: 6px 10px;
    vertical-align: middle;
    border-bottom: 1px solid #f1f5f9;
}

.quote-lines .text-right[b-o0caemc65m] { text-align: right; }

.ql-input-center[b-o0caemc65m]  .dxbl-text-edit-input,
.ql-input-center[b-o0caemc65m]  input {
    text-align: center;
}

.ql-input-right[b-o0caemc65m]  .dxbl-text-edit-input,
.ql-input-right[b-o0caemc65m]  input {
    text-align: right;
}

.ql-total[b-o0caemc65m] {
    font-variant-numeric: tabular-nums;
    color: #1f2a44;
}

.ql-trash[b-o0caemc65m] {
    color: #b91c1c;
    cursor: pointer;
    padding: 4px;
}
.ql-trash:hover[b-o0caemc65m] { color: #7f1d1d; }

.ql-totals-row td[b-o0caemc65m] {
    font-weight: 600;
    background: #f8fafc;
    border-top: 1px solid #cbd5e1;
    border-bottom: none;
    font-size: 14px;
}

.ql-grand[b-o0caemc65m] {
    font-size: 16px;
    color: #1f2a44;
    font-variant-numeric: tabular-nums;
}

.ql-empty[b-o0caemc65m] {
    margin: 8px 0 16px;
    color: #6b7280;
}

.ql-add-row[b-o0caemc65m] {
    margin-top: 12px;
}
/* /Pages/Training.razor.rz.scp.css */
body[b-nqmwn917pj] {
    margin: 0; /* Remove default margin */
}

iframe[b-nqmwn917pj] {
    display: block; /* iframes are inline by default */
    height: 90vh; /* Set height to 100% of the viewport height */
    width: 95vw; /* Set width to 100% of the viewport width */
    border: none; /* Remove default border */
    background: lightyellow; /* Just for styling */
}
/* /Shared/Timeline.razor.rz.scp.css */
.timeline[b-mj3x3p461j] {
    position: relative;
    padding-left: 50px;
}

.timeline-item[b-mj3x3p461j] {
    position: relative;
    margin-bottom: 0px;
}

.timeline-date[b-mj3x3p461j] {
    position: absolute;
    left: -60px;
    width: 115px;
    text-align: right;
    margin-top: 5px;
    
}

.timeline-circle-empty[b-mj3x3p461j] {
    width: 14px;
    height: 14px;
    background-color: #ffffff;
    border-radius: 50%;
    position: absolute;
    left: 69px;
    top: 5px;
    border-color: black;
    border-width: 1px;
    border-style: dotted;
}

.timeline-circle-full[b-mj3x3p461j] {
    width: 14px;
    height: 14px;
    background-color: #007bff;
    border-radius: 50%;
    position: absolute;
    left: 69px;
    top: 5px;
}

.timeline-circle-approved[b-mj3x3p461j] {
    width: 14px;
    height: 14px;
    background-color: green;
    border-radius: 50%;
    position: absolute;
    left: 69px;
    top: 5px;
}

.timeline-circle-rejected[b-mj3x3p461j] {
    width: 14px;
    height: 14px;
    background-color: red;
    border-radius: 50%;
    position: absolute;
    left: 69px;
    top: 5px;
}


.timeline-details[b-mj3x3p461j] {
    padding-left: 20px;
    border-left: 2px solid #007bff; /* Bootstrap primary color */
    padding-bottom: 5px;
    margin-left:75px;
    padding-top:5px;
}

.historyButton[b-mj3x3p461j]{
    width: 100px;
}

.withPointer[b-mj3x3p461j]{
    cursor: pointer;
    color: #0d72b9;
}
