@import '_content/Blazored.Toast/Blazored.Toast.bundle.scp.css';

/* /Components/Errors/BoundaryAlert.razor.rz.scp.css */
.cpd-boundary-alert .cpd-boundary-copy-row[b-whttqk5z4t] {
    display: flex;
    align-items: center;
    gap: var(--cpd-space-sm);
    margin: var(--cpd-space-sm) 0;
}

.cpd-boundary-alert .token-copied-flash[b-whttqk5z4t] {
    min-width: 4.5rem;
    font-size: 0.85rem;
    color: var(--cpd-success);
}

.cpd-boundary-alert .token-copied-flash[data-state="err"][b-whttqk5z4t] {
    color: var(--cpd-error);
}

.cpd-boundary-trace[b-whttqk5z4t] {
    width: 100%;
    min-height: 12rem;
    max-height: 40vh;
    resize: vertical;
    font-family: var(--cpd-font-mono);
    font-size: 0.85rem;
    white-space: pre;
}
/* /Components/Errors/ErrorDetailsHost.razor.rz.scp.css */
.cpd-error-modal-meta[b-hxak4tajux] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.25rem var(--cpd-space-md);
    margin-bottom: var(--cpd-space-lg);
}

.cpd-error-modal-meta dt[b-hxak4tajux] {
    font-weight: 600;
    opacity: 0.7;
}

.cpd-error-modal-meta dd[b-hxak4tajux] {
    margin: 0;
}

.cpd-error-modal-copy-row[b-hxak4tajux] {
    display: flex;
    align-items: center;
    gap: var(--cpd-space-sm);
    margin-bottom: var(--cpd-space-sm);
}

.cpd-error-modal-copy-row .token-copied-flash[b-hxak4tajux] {
    min-width: 4.5rem;
    font-size: 0.85rem;
    color: var(--cpd-success);
}

.cpd-error-modal-copy-row .token-copied-flash[data-state="err"][b-hxak4tajux] {
    color: var(--cpd-error);
}

.cpd-error-modal-trace[b-hxak4tajux] {
    width: 100%;
    min-height: 20rem;
    max-height: 50vh;
    resize: vertical;
    font-family: var(--cpd-font-mono);
    font-size: 0.85rem;
    white-space: pre;
    background: rgba(var(--cpd-contrast-rgb), 0.06);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.18);
    border-radius: var(--cpd-radius-md);
    color: inherit;
    padding: var(--cpd-space-md);
}
/* /Components/Errors/ErrorToast.razor.rz.scp.css */
.cpd-error-toast[b-fmqt7omnit] {
    min-width: 18rem;
    max-width: 26rem;
    padding: var(--cpd-space-sm) 0;
}

.cpd-error-toast-header[b-fmqt7omnit] {
    display: flex;
    align-items: center;
    gap: var(--cpd-space-sm);
    font-weight: 600;
    margin-bottom: 0.3rem;
}

.cpd-error-toast-header .bi[b-fmqt7omnit] {
    color: var(--cpd-error);
}

.cpd-error-toast-message[b-fmqt7omnit] {
    margin: 0 0 var(--cpd-space-sm);
    opacity: 0.9;
    overflow-wrap: anywhere;
}

.cpd-error-toast-details[b-fmqt7omnit] {
    color: inherit;
    border-color: rgba(var(--cpd-contrast-rgb), 0.4);
}
/* /Components/Ftp/FtpCurveChart.razor.rz.scp.css */
.ftp-curve-chart[b-cr0a4vo3vn] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 100%;
    min-width: 0;
}

.ftp-curve-chart-header[b-cr0a4vo3vn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--cpd-space-lg);
    font-weight: 600;
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--cpd-gold);
}

.ftp-curve-chart-legend[b-cr0a4vo3vn] {
    display: flex;
    gap: 0.85rem;
    font-size: 0.62rem;
    text-transform: none;
    letter-spacing: 0;
}

.ftp-curve-chart-legend-item[b-cr0a4vo3vn] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--cpd-text-muted);
}

.ftp-curve-chart-swatch[b-cr0a4vo3vn] {
    width: 10px;
    height: 2px;
    display: inline-block;
}

.ftp-curve-chart-swatch-hedge[b-cr0a4vo3vn] { background: var(--token-date); }
.ftp-curve-chart-swatch-liquidity[b-cr0a4vo3vn] { background: var(--token-rate); }
.ftp-curve-chart-swatch-allin[b-cr0a4vo3vn] { background: var(--cpd-gold); }

.ftp-curve-chart-empty[b-cr0a4vo3vn] {
    padding: var(--cpd-space-xl) 0;
    text-align: center;
    color: var(--cpd-text-subtle);
    font-size: 0.8rem;
}

.ftp-curve-chart-body[b-cr0a4vo3vn] {
    display: flex;
    align-items: stretch;
    gap: 6px;
    width: 100%;
}

.ftp-curve-chart-gutter[b-cr0a4vo3vn] {
    position: relative;
    width: 46px;
    flex: none;
}

.ftp-curve-chart-y-label[b-cr0a4vo3vn] {
    position: absolute;
    right: 0;
    transform: translateY(-50%);
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
    white-space: nowrap;
}

.ftp-curve-chart-plot[b-cr0a4vo3vn] {
    position: relative;
    flex: 1;
    min-width: 0;
    padding-bottom: 20px;
}

.ftp-curve-chart-svg[b-cr0a4vo3vn] {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
    font-family: var(--cpd-font-mono);
}

.ftp-curve-chart-gridline-h[b-cr0a4vo3vn] {
    stroke: rgba(var(--cpd-light-rgb), 0.06);
    stroke-width: 1;
}

.ftp-curve-chart-gridline-v[b-cr0a4vo3vn] {
    stroke: rgba(var(--cpd-light-rgb), 0.04);
    stroke-width: 1;
}

.ftp-curve-chart-baseline[b-cr0a4vo3vn] {
    stroke: rgba(var(--cpd-light-rgb), 0.18);
    stroke-width: 1;
}

.ftp-curve-chart-band[b-cr0a4vo3vn] {
    stroke: none;
}

.ftp-curve-chart-band-liquidity[b-cr0a4vo3vn] { fill: var(--token-rate-bg); }
.ftp-curve-chart-band-allin[b-cr0a4vo3vn] { fill: var(--cpd-gold-soft); }

.ftp-curve-chart-line[b-cr0a4vo3vn] {
    fill: none;
    stroke-width: 2;
    stroke-linejoin: round;
}

.ftp-curve-chart-line-hedge[b-cr0a4vo3vn] { stroke: var(--token-date); }
.ftp-curve-chart-line-liquidity[b-cr0a4vo3vn] { stroke: var(--token-rate); }
.ftp-curve-chart-line-allin[b-cr0a4vo3vn] { stroke: var(--cpd-gold); stroke-width: 2.5; }

.ftp-curve-chart-pillar-group[b-cr0a4vo3vn] {
    cursor: default;
}

.ftp-curve-chart-pillar[b-cr0a4vo3vn] {
    opacity: 0;
    transition: opacity var(--cpd-transition-fast);
}

.ftp-curve-chart-pillar-group:hover .ftp-curve-chart-pillar[b-cr0a4vo3vn] {
    opacity: 1;
}

.ftp-curve-chart-pillar-hedge[b-cr0a4vo3vn] { fill: var(--token-date); }
.ftp-curve-chart-pillar-liquidity[b-cr0a4vo3vn] { fill: var(--token-rate); }
.ftp-curve-chart-pillar-allin[b-cr0a4vo3vn] { fill: var(--cpd-gold); }

.ftp-curve-chart-marker-line[b-cr0a4vo3vn] {
    stroke: rgba(var(--cpd-light-rgb), 0.45);
    stroke-width: 1;
    stroke-dasharray: 3 3;
}

.ftp-curve-chart-marker-dot[b-cr0a4vo3vn] {
    fill: var(--cpd-gold);
}

.ftp-curve-chart-x-label[b-cr0a4vo3vn] {
    position: absolute;
    transform: translateX(-50%);
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
    white-space: nowrap;
    pointer-events: none;
}

.ftp-curve-chart-callout[b-cr0a4vo3vn] {
    position: absolute;
    transform: translate(-50%, -160%);
    background: var(--cpd-surface-dialog);
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-md);
    padding: 3px 8px;
    font-family: var(--cpd-font-mono);
    font-size: 0.62rem;
    color: var(--cpd-gold);
    white-space: nowrap;
    pointer-events: none;
    box-shadow: var(--cpd-shadow-soft);
}
/* /Components/Ftp/FtpPaymentBarsChart.razor.rz.scp.css */
.ftp-bars-chart[b-3xpw980n3q] {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
}

.ftp-bars-chart-legend[b-3xpw980n3q] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    font-size: 0.62rem;
    margin-bottom: 0.5rem;
}

.ftp-bars-chart-legend-item[b-3xpw980n3q] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--cpd-text-muted);
}

.ftp-bars-chart-swatch[b-3xpw980n3q] {
    width: 8px;
    height: 8px;
    display: inline-block;
    border-radius: var(--cpd-radius-sm);
}

.ftp-bars-chart-swatch-principal[b-3xpw980n3q] { background: var(--token-position); }
.ftp-bars-chart-swatch-interest[b-3xpw980n3q] { background: var(--token-rate); }

.ftp-bars-chart-empty[b-3xpw980n3q] {
    padding: var(--cpd-space-xl) 0;
    text-align: center;
    color: var(--cpd-text-subtle);
    font-size: 0.8rem;
}

.ftp-bars-chart-body[b-3xpw980n3q] {
    display: flex;
    gap: 6px;
    align-items: stretch;
}

.ftp-bars-chart-gutter[b-3xpw980n3q] {
    position: relative;
    width: 104px;
    flex: none;
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
}

.ftp-bars-chart-y-label[b-3xpw980n3q] {
    position: absolute;
    right: 0;
}

.ftp-bars-chart-y-label-top[b-3xpw980n3q] { top: 0; }
.ftp-bars-chart-y-label-bottom[b-3xpw980n3q] { bottom: 22px; }

.ftp-bars-chart-plot[b-3xpw980n3q] {
    flex: 1;
    min-width: 0;
}

.ftp-bars-chart-svg[b-3xpw980n3q] {
    display: block;
    width: 100%;
    height: auto;
}

.ftp-bars-chart-holiday-band[b-3xpw980n3q] {
    fill: var(--cpd-gold-soft);
}

.ftp-bars-chart-rect-interest[b-3xpw980n3q] { fill: var(--token-rate); }
.ftp-bars-chart-rect-principal[b-3xpw980n3q] { fill: var(--token-position); }

.ftp-bars-chart-baseline[b-3xpw980n3q] {
    stroke: rgba(var(--cpd-light-rgb), 0.18);
    stroke-width: 1;
}

.ftp-bars-chart-x-labels[b-3xpw980n3q] {
    display: flex;
    justify-content: space-between;
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
    margin-top: 4px;
}

.ftp-bars-chart-caption[b-3xpw980n3q] {
    margin-top: 0.5rem;
    font-size: 0.66rem;
    color: var(--cpd-text-muted);
    opacity: 0.55;
    line-height: 1.5;
}
/* /Components/Ftp/FtpRateBuildUp.razor.rz.scp.css */
.ftp-buildup[b-98cfc1wiev] {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
}

.ftp-buildup-header[b-98cfc1wiev] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--cpd-space-lg);
    font-weight: 600;
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--cpd-gold);
    margin-bottom: var(--cpd-space-lg);
}

.ftp-buildup-subtitle[b-98cfc1wiev] {
    font-size: 0.65rem;
    color: var(--cpd-text-muted);
    text-transform: none;
    letter-spacing: 0;
    font-family: var(--cpd-font-mono);
}

.ftp-buildup-empty[b-98cfc1wiev] {
    padding: var(--cpd-space-xl) 0;
    text-align: center;
    color: var(--cpd-text-subtle);
    font-size: 0.8rem;
}

.ftp-buildup-rows[b-98cfc1wiev] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* PricingDetail.razor's row grammar, re-declared here because Blazor CSS isolation scopes
   .razor.css rules to their own component — the class names match so both components read as one
   visual language, but the rules themselves cannot be shared at runtime. */
.pricing-row[b-98cfc1wiev] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding: 4px 0;
}

.pricing-row-emphasis[b-98cfc1wiev] {
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid var(--cpd-border);
}

.pricing-label[b-98cfc1wiev] {
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--cpd-text-subtle);
}

.pricing-value[b-98cfc1wiev] {
    font-family: var(--cpd-font-mono);
    font-size: 1.1rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* The bar-behind-row treatment: an absolutely positioned span sitting behind the row's own
   label/value text, sized by the caller's SpanStart/SpanWidth fractions. */
.ftp-buildup-row[b-98cfc1wiev] {
    position: relative;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

.ftp-buildup-bar[b-98cfc1wiev] {
    position: absolute;
    top: 2px;
    bottom: 2px;
    background: var(--cpd-gold-soft);
    border-radius: var(--cpd-radius-sm);
    z-index: 0;
}

.ftp-buildup-fg[b-98cfc1wiev] {
    position: relative;
    z-index: 1;
}

.ftp-buildup-footer[b-98cfc1wiev] {
    margin-top: 0.85rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--cpd-border);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.ftp-buildup-footer-row[b-98cfc1wiev] {
    display: flex;
    justify-content: space-between;
    font-size: 0.8rem;
}

.ftp-buildup-footer-row-emphasis[b-98cfc1wiev] {
    padding-top: 0.5rem;
    border-top: 1px dashed var(--cpd-border);
}

.ftp-buildup-footer-label[b-98cfc1wiev] {
    color: var(--cpd-text-muted);
}

.ftp-buildup-footer-value[b-98cfc1wiev] {
    font-family: var(--cpd-font-mono);
    color: var(--cpd-text);
}

.ftp-buildup-footer-value-emphasis[b-98cfc1wiev] {
    color: var(--cpd-error);
}

.ftp-buildup-note[b-98cfc1wiev] {
    margin-top: 0.85rem;
    font-size: 0.68rem;
    color: var(--cpd-text-muted);
    opacity: 0.55;
    line-height: 1.5;
}
/* /Components/Ftp/FtpRunoffChart.razor.rz.scp.css */
.ftp-runoff-chart[b-gcqi9f0p7m] {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
}

.ftp-runoff-chart-empty[b-gcqi9f0p7m] {
    padding: var(--cpd-space-xl) 0;
    text-align: center;
    color: var(--cpd-text-subtle);
    font-size: 0.8rem;
}

.ftp-runoff-chart-body[b-gcqi9f0p7m] {
    display: flex;
    gap: 6px;
    align-items: stretch;
}

.ftp-runoff-chart-gutter[b-gcqi9f0p7m] {
    position: relative;
    width: 104px;
    flex: none;
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
}

.ftp-runoff-chart-y-label[b-gcqi9f0p7m] {
    position: absolute;
    right: 0;
}

.ftp-runoff-chart-y-label-top[b-gcqi9f0p7m] { top: 0; }
.ftp-runoff-chart-y-label-bottom[b-gcqi9f0p7m] { bottom: 22px; }

.ftp-runoff-chart-plot[b-gcqi9f0p7m] {
    flex: 1;
    min-width: 0;
}

.ftp-runoff-chart-svg[b-gcqi9f0p7m] {
    display: block;
    width: 100%;
    height: auto;
}

.ftp-runoff-chart-holiday-band[b-gcqi9f0p7m] {
    fill: var(--cpd-gold-soft);
}

.ftp-runoff-chart-area[b-gcqi9f0p7m] {
    fill: var(--token-notional-bg);
}

.ftp-runoff-chart-line[b-gcqi9f0p7m] {
    fill: none;
    stroke: var(--token-notional);
    stroke-width: 2;
}

.ftp-runoff-chart-baseline[b-gcqi9f0p7m] {
    stroke: rgba(var(--cpd-light-rgb), 0.18);
    stroke-width: 1;
}

.ftp-runoff-chart-x-labels[b-gcqi9f0p7m] {
    display: flex;
    justify-content: space-between;
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: var(--cpd-text-subtle);
    margin-top: 4px;
}

.ftp-runoff-chart-caption[b-gcqi9f0p7m] {
    margin-top: 0.5rem;
    font-size: 0.66rem;
    color: var(--cpd-text-muted);
    opacity: 0.55;
    line-height: 1.5;
}
/* /Components/HistoryTable.razor.rz.scp.css */
.date-range[b-i2criiyi23] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.date-separator[b-i2criiyi23] {
    color: var(--cpd-accent);
}

.status-cell[b-i2criiyi23] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.status-indicator[b-i2criiyi23] {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: 0.85rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    animation: pulse-b-i2criiyi23 2s infinite;
}

@keyframes pulse-b-i2criiyi23 {
    0% { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); }
    50% { box-shadow: 0 2px 12px rgba(246, 212, 107, 0.3); }
    100% { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); }
}

.status-indicator.status-completed[b-i2criiyi23] {
    background: linear-gradient(135deg, rgba(39, 174, 96, 0.3) 0%, rgba(39, 174, 96, 0.2) 100%);
    color: var(--cpd-success);
    border: 1px solid rgba(39, 174, 96, 0.4);
}

.status-indicator.status-failed[b-i2criiyi23] {
    background: linear-gradient(135deg, rgba(231, 76, 60, 0.3) 0%, rgba(231, 76, 60, 0.2) 100%);
    color: var(--cpd-error);
    border: 1px solid rgba(231, 76, 60, 0.4);
}

.status-indicator.status-processing[b-i2criiyi23] {
    background: linear-gradient(135deg, rgba(246, 212, 107, 0.3) 0%, rgba(246, 212, 107, 0.2) 100%);
    color: var(--cpd-gold);
    border: 1px solid rgba(246, 212, 107, 0.4);
    animation: spin-b-i2criiyi23 2s linear infinite;
}

@keyframes spin-b-i2criiyi23 {
    to { transform: rotate(360deg); }
}

.history-table-container[b-i2criiyi23]  .action-badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: rgba(246, 212, 107, 0.1);
    border: 1px solid rgba(246, 212, 107, 0.3);
    border-radius: 4px;
    color: var(--cpd-gold);
    font-size: 0.85rem;
    font-weight: 500;
}

.date-cell[b-i2criiyi23] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.date-primary[b-i2criiyi23] {
    color: var(--cpd-contrast);
    font-weight: 500;
}

.date-secondary[b-i2criiyi23] {
    color: var(--cpd-accent);
    font-size: 0.85rem;
}

.duration-badge[b-i2criiyi23] {
    display: inline-block;
    padding: 0.3rem 0.6rem;
    background: linear-gradient(135deg, rgba(var(--cpd-contrast-rgb), 0.08) 0%, rgba(var(--cpd-contrast-rgb), 0.05) 100%);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.15);
    border-radius: 6px;
    color: var(--cpd-accent);
    font-size: 0.85rem;
    font-weight: 500;
}

.action-buttons[b-i2criiyi23] {
    display: flex;
    gap: 0.5rem;
}

.btn-icon[b-i2criiyi23] {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.1);
    border-radius: 6px;
    color: var(--cpd-accent);
    cursor: pointer;
    transition: all 0.3s ease;
}

.btn-icon:hover[b-i2criiyi23] {
    background: rgba(246, 212, 107, 0.1);
    border-color: var(--cpd-gold);
    color: var(--cpd-gold);
}

.text-muted[b-i2criiyi23] {
    color: var(--cpd-accent);
    opacity: 0.5;
}


.history-table[b-i2criiyi23] {
    width: auto;
}

.history-table-container[b-i2criiyi23] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    overflow-x: auto;
    overflow-y: visible;
    box-shadow: var(--cpd-shadow-card);
    padding: var(--cpd-space-md);
}

/* Pager Styling */
.history-table-container[b-i2criiyi23]  .pagination {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
    padding: 0.5rem 0;
}

/* Page buttons */
.history-table-container[b-i2criiyi23]  .page-item .page-link {
    background: transparent !important;
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.4) !important;
    color: var(--cpd-gold) !important;
    font-weight: 500 !important;
    border-radius: var(--cpd-radius-lg) !important;
    padding: 0.4rem 0.8rem !important;
    transition: all 0.2s ease-in-out;
}

/* Hover effect */
.history-table-container[b-i2criiyi23]  .page-item .page-link:hover {
    background: var(--cpd-gold-ring) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-contrast) !important;
}

/* Active page */
.history-table-container[b-i2criiyi23]  .page-item.active .page-link {
    background: var(--cpd-gold) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-dark) !important;
    font-weight: 600 !important;
}

/* Disabled buttons */
.history-table-container[b-i2criiyi23]  .page-item.disabled .page-link {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
}
/* CRITICAL FIX: Apply padding directly to table cells */
.history-table-container[b-i2criiyi23]  td,
.history-table-container[b-i2criiyi23]  th {
    padding: 0.75rem 1rem !important;
    border: none !important;
}

/* Add extra padding to first and last columns for better edge spacing */
.history-table-container[b-i2criiyi23]  td:first-child,
.history-table-container[b-i2criiyi23]  th:first-child {
    padding-left: 1.25rem !important;
}

.history-table-container[b-i2criiyi23]  td:last-child,
.history-table-container[b-i2criiyi23]  th:last-child {
    padding-right: 1.25rem !important;
}

/* Style the header cells */
.history-table-container[b-i2criiyi23]  thead th {
    background: rgba(var(--cpd-gold-rgb), 0.05) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    font-size: 0.9rem !important;
    letter-spacing: 0.5px !important;
    border-bottom: 2px solid var(--cpd-gold-border) !important;
    padding-top: 0.85rem !important;
    padding-bottom: 0.85rem !important;
}

/* Style the body cells */
.history-table-container[b-i2criiyi23]  tbody td {
    color: var(--cpd-text) !important;
    background: transparent !important;
    border-bottom: 1px solid var(--cpd-border-subtle) !important;
    padding-top: 0.7rem !important;
    padding-bottom: 0.7rem !important;
}

/* Add hover effect to rows */
.history-table-container[b-i2criiyi23]  tbody tr:hover td {
    background: rgba(var(--cpd-gold-rgb), 0.05) !important;
}

/* Ensure table takes full width and has minimum width for readability */
.history-table-container[b-i2criiyi23]  table {
    width: 100% !important;
    min-width: 900px !important;
}

/* Ensure no text wrapping in date columns */
.history-table-container[b-i2criiyi23]  td:nth-child(3),
.history-table-container[b-i2criiyi23]  th:nth-child(3),
.history-table-container[b-i2criiyi23]  td:nth-child(4),
.history-table-container[b-i2criiyi23]  th:nth-child(4) {
    white-space: nowrap !important;
}

/* Add visual separator between columns for clarity */
.history-table-container[b-i2criiyi23]  td:not(:last-child),
.history-table-container[b-i2criiyi23]  th:not(:last-child) {
    border-right: 1px solid var(--cpd-border-subtle) !important;
    padding-right: 1rem !important;
}

/* Ensure action buttons have proper spacing */
.history-table-container[b-i2criiyi23]  .action-buttons {
    display: flex !important;
    gap: 0.5rem !important;
}

/* Override any Bootstrap table compact styles that might reduce padding */
.history-table-container[b-i2criiyi23]  .table-sm > :not(caption) > * > * {
    padding: 0.75rem 1rem !important;
}

/* Force spacing even if Grid component uses divs instead of table elements */
.history-table-container[b-i2criiyi23]  .bb-grid-row > div,
.history-table-container[b-i2criiyi23]  .grid-row > div {
    padding: 0.75rem 1rem !important;
}

/* Target BlazorBootstrap's specific table classes */
.history-table-container[b-i2criiyi23]  .bb-grid table td,
.history-table-container[b-i2criiyi23]  .bb-grid table th {
    padding: 0.75rem 1rem !important;
}
/* /Components/Inputs/InputSelector.razor.rz.scp.css */
.dark-dropdown option[b-aqlnx5arux] {
    background-color: #1b2631;
    color: #e0e6ed;
}

.input-field[b-aqlnx5arux] {
    display: flex;
    flex-direction: column;
}

.input-field label[b-aqlnx5arux] {
    display: block;
    color: var(--cpd-text);
    font-weight: 600;
    margin-bottom: var(--cpd-space-sm);
    font-size: 0.9rem;
}

.form-input[b-aqlnx5arux] {
    width: 100%;
    padding: 0.6rem 0.8rem;
    background: var(--cpd-surface-2);
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    color: var(--cpd-text);
    font-size: 0.9rem;
    transition: all var(--cpd-transition-slow);
}

.form-input:focus[b-aqlnx5arux] {
    outline: none;
    border-color: var(--cpd-gold);
    background: var(--cpd-surface-3);
    box-shadow: 0 0 0 3px var(--cpd-gold-ring);
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-godiwx8sp7] { display: flex; flex-direction: column; min-height: 100vh; }
main[b-godiwx8sp7]  { flex: 1; }

.sidebar[b-godiwx8sp7] {
    width: 250px;
    background: var(--cpd-surface-0);
}
@media (max-width: 640.98px) {
    .sidebar[b-godiwx8sp7] { width: 100%; height: auto; }
}

.top-row[b-godiwx8sp7] {
    height: 3.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--cpd-space-md);
    padding: 0 var(--cpd-space-xl);
    background: var(--cpd-surface-0);
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
}

.top-row[b-godiwx8sp7]  .claims-line {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1 1 auto;
    color: var(--cpd-text);
}

.top-row[b-godiwx8sp7]  .valuation-date-bar {
    flex-shrink: 0;
    width: 160px;
}

.top-row[b-godiwx8sp7]  .notification-bell-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0;
    border: none;
    background: transparent;
    line-height: 1;
}

.top-row[b-godiwx8sp7]  .notification-bell-btn .bi {
    font-size: 1.5rem;
    line-height: 1;
}
.top-row a[b-godiwx8sp7] {
    margin-left: var(--cpd-space-xl);
    font-weight: 500;
    color: var(--cpd-text);
}
.top-row a:hover[b-godiwx8sp7] { color: var(--cpd-gold); }

@media (max-width: 640.98px) {
    .top-row[b-godiwx8sp7] { justify-content: space-between; padding: 0 var(--cpd-space-lg); }
    .top-row a[b-godiwx8sp7] { margin-left: 0; }
}

@media (min-width: 641px) {
    .page[b-godiwx8sp7]     {
        flex-direction: row;
        height: 100vh;
        overflow: hidden;
    }
    .sidebar[b-godiwx8sp7]  {
        width: 250px;
        flex-shrink: 0;
        height: 100vh;
        overflow: hidden;
    }
    main[b-godiwx8sp7] {
        flex: 1;
        min-width: 0;
        display: flex;
        flex-direction: column;
        min-height: 0;
        height: 100vh;
    }
    .top-row[b-godiwx8sp7]  { flex-shrink: 0; z-index: 1; }
    article[b-godiwx8sp7]   { flex: 1; min-width: 0; overflow: auto; }
    .top-row[b-godiwx8sp7],
    article[b-godiwx8sp7]   { padding-left: var(--cpd-space-2xl) !important; padding-right: var(--cpd-space-xl) !important; }
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.brand-bar[b-sni3sudt4l] {
    height: 3.5rem;
    display: flex;
    align-items: center;
    background: var(--cpd-surface-0);
    padding: 0 var(--cpd-space-lg);
    border-bottom: 1px solid var(--cpd-border-subtle);
}
.navbar-brand[b-sni3sudt4l] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--cpd-text);
}
.logo-accent[b-sni3sudt4l] { color: var(--cpd-gold); }

.navbar-toggler[b-sni3sudt4l] {
    position: absolute;
    top: .5rem; right: 1rem;
    width: 3.5rem; height: 2.5rem;
    appearance: none; cursor: pointer;
    border: 1px solid var(--cpd-border-strong);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(var(--cpd-contrast-rgb), 0.1);
    z-index: 1001;
}

.navbar-toggler:checked[b-sni3sudt4l] { background: rgba(var(--cpd-contrast-rgb), 0.25); }
@media (min-width: 641px) { .navbar-toggler[b-sni3sudt4l] { display: none; } }

.nav-scrollable[b-sni3sudt4l]       { display: none; }
.navbar-toggler:checked ~ .nav-scrollable[b-sni3sudt4l] { display: block; }
@media (min-width: 641px) {
    .nav-scrollable[b-sni3sudt4l] {
        display: block;
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}

.nav-list[b-sni3sudt4l]    { list-style: none; margin: 0; padding: var(--cpd-space-lg) 0; }
.nav-list li[b-sni3sudt4l] { padding: var(--cpd-space-xs) 1.25rem; }

.nav-list li[b-sni3sudt4l]  .nav-link {
    display: flex; align-items: center; gap: .75rem;
    height: 3rem;
    border-radius: var(--cpd-radius-sm);
    background: none; border: none;
    color: var(--cpd-text);
    width: 100%;
    font-weight: 500;
}
.nav-list li[b-sni3sudt4l]  .nav-link:hover {
    background: rgba(var(--cpd-contrast-rgb), 0.10);
    color: var(--cpd-gold);
}
.nav-list li[b-sni3sudt4l]  .nav-link.active {
    background: rgba(var(--cpd-gold-rgb), 0.25);
    color: var(--cpd-gold);
}

.nav-list:has(.nav-link:hover:not(.active))[b-sni3sudt4l]  .nav-link.active,
.nav-list:has(.nav-link:focus:not(.active))[b-sni3sudt4l]  .nav-link.active {
    background: transparent;
    color: var(--cpd-text);
}
/* /Components/Market/Capture/CurveCaptureDialog.razor.rz.scp.css */
.capture-header[b-bijiyomxgj] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.capture-key-chip[b-bijiyomxgj] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-family: var(--cpd-font-mono);
    font-size: 0.69rem;
    color: rgba(78, 205, 196, 0.75);
    background: rgba(78, 205, 196, 0.06);
    border: 1px solid rgba(78, 205, 196, 0.2);
    border-radius: var(--cpd-radius-sm);
    padding: 2px 8px;
}

.capture-key-lock[b-bijiyomxgj] {
    font-size: 0.8rem;
    opacity: 0.7;
}

.capture-key-caption[b-bijiyomxgj] {
    font-size: 0.66rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.3 * var(--cpd-text-alpha-scale)));
}

.capture-body[b-bijiyomxgj] {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 1.25rem;
}

.capture-rail[b-bijiyomxgj] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.capture-main[b-bijiyomxgj] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
}

.capture-section-label[b-bijiyomxgj] {
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    text-transform: uppercase;
}

.capture-field[b-bijiyomxgj] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.capture-field-label[b-bijiyomxgj] {
    font-size: 0.66rem;
    color: var(--cpd-accent);
}

.capture-field-caption[b-bijiyomxgj] {
    font-size: 0.62rem;
    color: var(--cpd-text-subtle);
    line-height: 1.45;
}

.capture-field-extrap .mud-select .mud-input-outlined[b-bijiyomxgj] {
    border-color: rgba(var(--cpd-gold-rgb), 0.35);
}

.capture-caption[b-bijiyomxgj] {
    font-size: 0.62rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

.capture-segmented .mud-toggle-item[b-bijiyomxgj] {
    font-size: 0.72rem;
}

.capture-gold-btn[b-bijiyomxgj] {
    color: var(--cpd-gold);
    border-color: rgba(var(--cpd-gold-rgb), 0.5);
    font-size: 0.66rem;
}

.capture-chart-box[b-bijiyomxgj] {
    background: var(--cpd-surface-inset);
    border: 1px solid var(--cpd-border);
    border-radius: var(--cpd-radius-lg);
    padding: 0.7rem 0.6rem 0.35rem;
}

.capture-hint-chip[b-bijiyomxgj] {
    font-size: 0.6rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
    background: rgba(var(--cpd-contrast-rgb), 0.05);
    border-radius: var(--cpd-radius-sm);
    padding: 3px 8px;
}

.capture-grid-container[b-bijiyomxgj] {
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.25);
    border-radius: var(--cpd-radius-lg);
    max-height: 260px;
    overflow: auto;
}

table.capture-grid[b-bijiyomxgj] {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--cpd-font-mono);
    font-size: 0.72rem;
}

table.capture-grid th[b-bijiyomxgj] {
    position: sticky;
    top: 0;
    text-align: left;
    padding: 7px 12px;
    background: var(--cpd-surface-table-header);
    color: var(--cpd-gold);
    font-size: 0.6rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-bottom: 2px solid rgba(var(--cpd-gold-rgb), 0.3);
}

table.capture-grid td[b-bijiyomxgj] {
    padding: 4px 12px;
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.05);
}

table.capture-grid .capture-grid-derived[b-bijiyomxgj] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
}

table.capture-grid tr.capture-grid-split-row td[b-bijiyomxgj] {
    color: var(--cpd-gold);
}

.capture-footer-note[b-bijiyomxgj] {
    font-size: 0.69rem;
    color: var(--cpd-text-subtle);
}
/* /Components/Market/Capture/CurveChart.razor.rz.scp.css */
.curve-chart[b-juxd2062mp] {
    display: flex;
    align-items: stretch;
    gap: 6px;
    width: 100%;
}

.curve-chart-gutter[b-juxd2062mp] {
    position: relative;
    width: 56px;
    flex: none;
}

.curve-chart-y-label[b-juxd2062mp] {
    position: absolute;
    right: 0;
    transform: translateY(-50%);
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.42 * var(--cpd-text-alpha-scale)));
    white-space: nowrap;
}

.curve-chart-plot[b-juxd2062mp] {
    position: relative;
    flex: 1;
    min-width: 0;
}

.curve-chart-svg[b-juxd2062mp] {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
    font-family: var(--cpd-font-mono);
}

.curve-chart-extrap-region[b-juxd2062mp] {
    fill: var(--cpd-gold-faint);
}

.curve-chart-extrap-split[b-juxd2062mp] {
    stroke: rgba(var(--cpd-gold-rgb), 0.35);
    stroke-width: 1;
    stroke-dasharray: 3 3;
}

.curve-chart-gridline-h[b-juxd2062mp] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.06);
    stroke-width: 1;
}

.curve-chart-gridline-v[b-juxd2062mp] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.04);
    stroke-width: 1;
}

.curve-chart-baseline[b-juxd2062mp] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.18);
    stroke-width: 1;
}

.curve-chart-line[b-juxd2062mp] {
    fill: none;
    stroke: var(--cpd-gold);
    stroke-width: 2;
    stroke-linejoin: round;
}

.curve-chart-line-tail[b-juxd2062mp] {
    stroke-dasharray: 5 4;
}

.curve-chart-pillar[b-juxd2062mp] {
    fill: var(--cpd-dark);
    stroke: var(--cpd-gold);
    stroke-width: 1.6;
}

.curve-chart-crosshair-v[b-juxd2062mp] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.45);
    stroke-width: 1;
}

.curve-chart-crosshair-h[b-juxd2062mp] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.2);
    stroke-width: 1;
    stroke-dasharray: 2 3;
}

.curve-chart-hover-dot[b-juxd2062mp] {
    fill: var(--cpd-gold);
}

.curve-chart-extrap-label[b-juxd2062mp] {
    position: absolute;
    top: 2px;
    font-family: var(--cpd-font-mono);
    font-size: 0.56rem;
    letter-spacing: 0.08em;
    color: rgba(var(--cpd-gold-rgb), 0.6);
    white-space: nowrap;
    pointer-events: none;
}

.curve-chart-x-label[b-juxd2062mp] {
    position: absolute;
    transform: translateX(-50%);
    font-family: var(--cpd-font-mono);
    font-size: 0.6rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.42 * var(--cpd-text-alpha-scale)));
    white-space: nowrap;
    pointer-events: none;
}

.curve-chart-readout[b-juxd2062mp] {
    position: absolute;
    top: 16px;
    transform: translateX(-50%);
    display: flex;
    gap: 10px;
    align-items: baseline;
    background: var(--cpd-surface-dialog);
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.35);
    border-radius: var(--cpd-radius-md);
    padding: 5px 10px;
    font-family: var(--cpd-font-mono);
    font-size: 0.69rem;
    white-space: nowrap;
    pointer-events: none;
    box-shadow: var(--cpd-shadow-soft);
}

.curve-chart-readout-date[b-juxd2062mp] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
}

.curve-chart-readout-tenor[b-juxd2062mp] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

.curve-chart-readout-value[b-juxd2062mp] {
    color: var(--cpd-gold);
    font-weight: 600;
}
/* /Components/Market/MarketDataRequirements.razor.rz.scp.css */
.status-ok[b-c3mawdkb9w],
.status-missing[b-c3mawdkb9w] {
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 2px 8px;
    border-radius: 10px;
}

.status-ok[b-c3mawdkb9w] {
    color: var(--token-rate);
    background: var(--token-rate-bg);
}

.status-missing[b-c3mawdkb9w] {
    color: var(--token-position);
    background: var(--token-position-bg);
}
/* /Components/PageDescription/PageRenderer.razor.rz.scp.css */
.page-tile-header[b-py0y6088jl] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.page-tile-header-controls[b-py0y6088jl] {
    display: flex;
    gap: 0.5rem;
}

/* The optional two-column flat-tile layout (PageRenderer.RailTileIds): a fixed-width capture rail
   beside a column that takes whatever is left. minmax(0, 1fr) rather than 1fr on the main column so
   a wide child that cannot shrink (a schedule grid, an SVG chart) scrolls inside its own tile
   instead of forcing the whole grid wider and pushing the rail off-screen — the classic
   grid-blowout. The rail collapses to a full-width row on narrow viewports, where a 330px gutter
   plus a results column is unreadable; 1100px is where the results column stops fitting a
   twelve-column schedule grid. */
.page-renderer-rail-layout[b-py0y6088jl] {
    display: grid;
    grid-template-columns: 330px minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}

.page-renderer-rail[b-py0y6088jl],
.page-renderer-rail-main[b-py0y6088jl] {
    min-width: 0;
}

@media (max-width: 1100px) {
    .page-renderer-rail-layout[b-py0y6088jl] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.page-tile-pane-layout[b-py0y6088jl] {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.page-tile-pane-left[b-py0y6088jl] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.page-tile-pane-right[b-py0y6088jl] {
    flex: 0 0 280px;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

[b-py0y6088jl] .page-description-error {
    border: 1px dashed var(--mud-palette-error, #d32f2f);
    color: var(--mud-palette-error, #d32f2f);
    padding: 0.5rem 0.75rem;
    border-radius: 4px;
    font-weight: 600;
}

[b-py0y6088jl] .page-key-values-row {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
}

[b-py0y6088jl] .page-field-select {
    min-width: 220px;
}

/* Body.ControlGroup is a short field set (a Designation pane's three fields, a Details pane's
   legal name + recovery rate) — it had no CSS at all, so its MudTextField/MudSelect/MudNumericField
   children stacked one per line like a long form instead of sitting together as the short row they
   are. A wrapping flex row is the fix everywhere at once: fields sit side by side on a normal
   desktop width, and drop to their own line only when the row genuinely runs out of room, rather
   than every page hand-rolling its own MudStack/MudGrid wrapper for this. This is now the layout
   contract for every form section in the app — no per-page CSS should be needed on top of it. */
[b-py0y6088jl] .page-control-group {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 1rem;
}

/* flex-basis 220px matches .page-field-select's own min-width so a select's longest option still
   fits before the row wraps; the 320px cap stops a lone short field (a numeric recovery rate) from
   stretching to fill whatever space the row has left, which read as "the field is broken", not
   "the field is short". */
[b-py0y6088jl] .page-control-group > * {
    flex: 1 1 220px;
    max-width: 320px;
}

[b-py0y6088jl] .page-grid {
    width: 100%;
    border-collapse: collapse;
}

[b-py0y6088jl] .page-grid-row-nav {
    cursor: pointer;
}

/* The row's icon buttons are a single horizontal cluster, never a stack. Without this they are
   inline-blocks that wrap inside the (narrow, content-sized) sticky column — on Trades/View, whose
   rows carry three lens links plus a hedge link, they stacked one-per-line and quadrupled every
   row's height. nowrap makes the column size to the cluster instead of the cluster to the column. */
[b-py0y6088jl] .page-grid-row-controls {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.125rem;
}

/* A sticky column floats over the cells it covers, so it needs its own opaque background or the
   scrolled-under text shows through the lens icons. MudBlazor's own sticky styling assumes the
   default surface colour; this app themes the grid darker, hence the explicit surface token. The
   left border is what tells you the column is pinned rather than merely last.

   Specificity, not just source order: MudBlazor ships its own
   `.mud-data-grid .mud-table-cell.sticky-left, .mud-data-grid .mud-table-cell.sticky-right`
   rule (3 classes = 0,3,0) setting `background-color: var(--mud-palette-background-gray)` — its
   dark-theme default grey (#27272f), which clashes with this app's navy `--mud-palette-surface`.
   A plain `.page-grid-controls-header`/`.page-grid-controls-cell` selector (0,2,0) LOSES to that
   rule regardless of source order, so the pinned actions column rendered as a grey band on the
   Trades list and inside the hedge Composition pane. Repeating MudBlazor's own selector shape here
   plus our own marker class (0,4,0) beats it on specificity instead of relying on cascade order,
   which a future "simplify this selector" pass could silently break. Don't shorten this back to
   `.page-grid-controls-header`/`.page-grid-controls-cell` alone. */
[b-py0y6088jl] .mud-data-grid .mud-table-cell.sticky-right.page-grid-controls-header,
[b-py0y6088jl] .mud-data-grid .mud-table-cell.sticky-right.page-grid-controls-cell {
    background-color: var(--mud-palette-surface);
    border-left: 1px solid var(--mud-palette-table-lines);
}

[b-py0y6088jl] .mud-table-row:hover .mud-table-cell.sticky-right.page-grid-controls-cell {
    background-color: var(--mud-palette-table-hover);
}

[b-py0y6088jl] .tone-good {
    color: var(--mud-palette-success, #2e7d32);
}

[b-py0y6088jl] .tone-attention {
    color: var(--mud-palette-warning, #ed6c02);
}

[b-py0y6088jl] .tone-bad {
    color: var(--mud-palette-error, #d32f2f);
}

[b-py0y6088jl] .tone-neutral {
    color: inherit;
}
/* /Components/Pages/Analytics/Recon.razor.rz.scp.css */
.recon-card[b-1c2nyoxpjp] {
    animation: fadeUp-b-1c2nyoxpjp 0.3s cubic-bezier(0.16, 1, 0.3, 1) both 0.04s;
}

@keyframes fadeUp-b-1c2nyoxpjp {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.recon-topbar[b-1c2nyoxpjp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    gap: 12px;
    flex-wrap: wrap;
}

.recon-title-group[b-1c2nyoxpjp] {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 32px;
    flex-wrap: wrap;
}

.recon-title-block[b-1c2nyoxpjp] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.recon-page-title[b-1c2nyoxpjp] {
    font-size: 20px;
    font-weight: 700;
    color: var(--cpd-contrast);
    letter-spacing: -0.03em;
}

/* Matches the secondary-coloured subtitle every Page-DU analytics lens gets for free from
   PageRenderer's Typo.body2/Color.Secondary title row — this file already uses the same
   rgba(255, 255, 255, *) scale for muted text elsewhere (.recon-date-label, .recon-empty-hint), so
   this follows that established convention rather than introducing a new token. */
.recon-page-subtitle[b-1c2nyoxpjp] {
    font-size: 13px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
}

.recon-status-chip[b-1c2nyoxpjp] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.06);
    border: 1px solid rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.25);
    border-radius: 6px;
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    color: var(--cpd-contrast);
}

.recon-status-chip i[b-1c2nyoxpjp] {
    color: var(--cpd-gold);
    font-size: 13px;
}

.recon-status-count[b-1c2nyoxpjp] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
}

.recon-scope-clear[b-1c2nyoxpjp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
    padding: 0;
    margin-left: 2px;
    font-size: 11px;
}

.recon-scope-clear:hover[b-1c2nyoxpjp] {
    opacity: 1;
    color: var(--cpd-gold);
}

.recon-meta-group[b-1c2nyoxpjp] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.recon-date-label[b-1c2nyoxpjp] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
    margin: 0;
}

.recon-tolerance-group[b-1c2nyoxpjp] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 0 6px 0 0;
    border-right: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
    margin-right: 2px;
}

.recon-tolerance-value[b-1c2nyoxpjp] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    color: var(--cpd-contrast);
    border-radius: 6px;
    padding: 6px 8px;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    width: 90px;
}

.recon-tolerance-mode[b-1c2nyoxpjp] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    color: var(--cpd-contrast);
    border-radius: 6px;
    padding: 6px 8px;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
}

.recon-tolerance-value:focus[b-1c2nyoxpjp],
.recon-tolerance-mode:focus[b-1c2nyoxpjp] {
    outline: none;
    border-color: var(--cpd-gold);
    box-shadow: 0 0 0 2px rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.15);
}

.recon-date-select[b-1c2nyoxpjp] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    color: var(--cpd-contrast);
    border-radius: 6px;
    padding: 6px 10px;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    min-width: 160px;
}

.recon-date-select:focus[b-1c2nyoxpjp] {
    outline: none;
    border-color: var(--cpd-gold);
    box-shadow: 0 0 0 2px rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.15);
}

.recon-table-card[b-1c2nyoxpjp] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    box-shadow: var(--cpd-shadow-card);
    padding: 0.5rem 0;
    overflow-x: auto;
}

.recon-table[b-1c2nyoxpjp] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

.recon-table thead th[b-1c2nyoxpjp] {
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.05);
    color: var(--cpd-gold);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.78rem;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--cpd-gold-border);
    padding: 0;
    white-space: nowrap;
    text-align: left;
}

.recon-table thead th:first-child[b-1c2nyoxpjp] { padding-left: 0.4rem; }
.recon-table thead th:last-child[b-1c2nyoxpjp]  { padding-right: 0.4rem; }

.recon-sort-btn[b-1c2nyoxpjp] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 0.7rem 0.85rem;
    background: transparent;
    border: none;
    color: inherit;
    font: inherit;
    text-transform: inherit;
    letter-spacing: inherit;
    cursor: pointer;
    text-align: left;
}

.recon-sort-btn.num[b-1c2nyoxpjp] {
    justify-content: flex-end;
    text-align: right;
}

/* ::deep is required here. The sort icon is rendered from Recon.razor.cs rather than
   from this component's .razor markup, so it never receives the scope attribute that
   scoped CSS rewrites these selectors to expect — without ::deep these three rules
   match nothing, which is why the sort indicators were previously unstyled.
   Sizing is width/height rather than font-size because the icon is now inline SVG. */
.recon-sort-btn:hover[b-1c2nyoxpjp]  .recon-sort-icon {
    color: var(--cpd-gold);
    opacity: 1;
}

.recon-sort-btn[b-1c2nyoxpjp]  .recon-sort-icon {
    width: 14px;
    height: 14px;
    color: var(--cpd-gold);
    opacity: 0.85;
}

.recon-sort-btn[b-1c2nyoxpjp]  .recon-sort-icon.recon-sort-idle {
    opacity: 0.25;
}

.recon-table tbody td[b-1c2nyoxpjp] {
    color: var(--cpd-text);
    background: transparent;
    border-bottom: 1px solid var(--cpd-border-subtle);
    padding: 0.55rem 0.85rem;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
}

.recon-table tbody tr:hover td[b-1c2nyoxpjp] {
    background: var(--cpd-gold-faint);
}

.recon-table tbody td:first-child[b-1c2nyoxpjp],
.recon-table thead th:first-child[b-1c2nyoxpjp] { padding-left: 1.25rem; }

.recon-table tbody td:last-child[b-1c2nyoxpjp],
.recon-table thead th:last-child[b-1c2nyoxpjp]  { padding-right: 1.25rem; }

.recon-table .col-text[b-1c2nyoxpjp]  { width: 1%; white-space: nowrap; }
.recon-table .col-date[b-1c2nyoxpjp]  { width: 1%; white-space: nowrap; }
.recon-table .col-ccy[b-1c2nyoxpjp]   { width: 1%; white-space: nowrap; }
.recon-table .col-action[b-1c2nyoxpjp]{ width: 1%; white-space: nowrap; text-align: right; }
.recon-table .num[b-1c2nyoxpjp]       { text-align: right; white-space: nowrap; }

.recon-ccy-cell[b-1c2nyoxpjp] {
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    letter-spacing: 0.05em;
    color: rgba(var(--cpd-contrast-rgb), calc(0.7 * var(--cpd-text-alpha-scale)));
}

.recon-ccy-cell.ccy-multi[b-1c2nyoxpjp] {
    color: var(--cpd-gold);
    cursor: help;
    border-bottom: 1px dotted rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.4);
}

.recon-chevron-btn[b-1c2nyoxpjp] {
    background: transparent;
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    color: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
    width: 28px;
    height: 28px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}

.recon-chevron-btn:hover[b-1c2nyoxpjp] {
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.10);
    border-color: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.5);
    color: var(--cpd-gold);
}

.recon-table tfoot tr.recon-total-foot td[b-1c2nyoxpjp] {
    border-top: 2px solid var(--cpd-gold-border);
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.05);
    color: var(--cpd-contrast);
    font-family: var(--cpd-font-mono);
    font-size: 14px;
    font-weight: 600;
    padding: 0.85rem 0.85rem;
}

.recon-table tfoot tr.recon-total-foot + tr.recon-total-foot td[b-1c2nyoxpjp] {
    border-top: 1px solid var(--cpd-gold-border);
}

.recon-table tfoot td.recon-total-label[b-1c2nyoxpjp] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--cpd-gold);
}

.recon-empty-row td[b-1c2nyoxpjp] {
    padding: 0 !important;
}

.recon-empty-state[b-1c2nyoxpjp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 3rem 1rem;
    text-align: center;
}

.recon-empty-icon[b-1c2nyoxpjp] {
    font-size: 32px;
    color: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.35);
}

.recon-empty-title[b-1c2nyoxpjp] {
    font-size: 15px;
    font-weight: 600;
    color: var(--cpd-contrast);
}

.recon-empty-hint[b-1c2nyoxpjp] {
    font-size: 13px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
    max-width: 480px;
}

.recon-error[b-1c2nyoxpjp] {
    margin-bottom: 14px;
    padding: 10px 14px;
    background: var(--token-position-bg);
    border: 1px solid var(--token-position-border);
    border-radius: 8px;
    color: var(--token-position);
    font-size: 13px;
}

.recon-error-cell[b-1c2nyoxpjp] {
    font-family: var(--cpd-font-sans);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--token-position);
    padding: 2px 8px;
    background: var(--token-position-bg);
    border-radius: 10px;
    border: 1px solid var(--token-position-border);
    cursor: help;
}

.recon-total-note[b-1c2nyoxpjp] {
    margin-top: 10px;
    padding: 8px 14px;
    font-size: 12px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
    border-left: 2px solid rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.3);
    background: rgba(var(--cpd-contrast-rgb), 0.02);
    border-radius: 4px;
}

.recon-total-note strong[b-1c2nyoxpjp] {
    color: var(--cpd-contrast);
    font-weight: 600;
}

.val-zero[b-1c2nyoxpjp]          { color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale))); }
.val-within-tolerance[b-1c2nyoxpjp] { color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale))); }
.val-breach[b-1c2nyoxpjp]        { color: var(--token-position); font-weight: 600; }
.val-neutral[b-1c2nyoxpjp]       { color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale))); }
/* /Components/Pages/Analytics/ReconTrade.razor.rz.scp.css */
.recon-card[b-0v1qksw7cd] {
    animation: fadeUp-b-0v1qksw7cd 0.3s cubic-bezier(0.16, 1, 0.3, 1) both 0.04s;
}

@keyframes fadeUp-b-0v1qksw7cd {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.recon-topbar[b-0v1qksw7cd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    gap: 12px;
    flex-wrap: wrap;
}

.recon-title-group[b-0v1qksw7cd] {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 32px;
}

.recon-page-title[b-0v1qksw7cd] {
    font-size: 20px;
    font-weight: 700;
    color: var(--cpd-contrast);
    letter-spacing: -0.03em;
}

.recon-back-link[b-0v1qksw7cd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 6px;
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
    font-size: 14px;
    text-decoration: none;
    transition: background .15s, color .15s, border-color .15s;
}

.recon-back-link:hover[b-0v1qksw7cd] {
    background: var(--cpd-gold-ring);
    border-color: rgba(var(--cpd-gold-rgb), 0.5);
    color: var(--cpd-gold);
}

.recon-meta-group[b-0v1qksw7cd] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.recon-chip[b-0v1qksw7cd] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 8px;
}

.recon-chip-label[b-0v1qksw7cd] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--cpd-text-subtle);
}

.recon-chip-value[b-0v1qksw7cd] {
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    font-weight: 500;
    color: var(--cpd-contrast);
}

.recon-date-input[b-0v1qksw7cd] {
    background: transparent;
    border: none;
    color: var(--cpd-contrast);
    padding: 0;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
}

.recon-date-input:focus[b-0v1qksw7cd] {
    outline: none;
}

.recon-detail-card[b-0v1qksw7cd] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    padding: var(--cpd-space-lg) 1.25rem;
    box-shadow: var(--cpd-shadow-card);
    overflow-x: auto;
}

.recon-table[b-0v1qksw7cd] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

.recon-table thead th[b-0v1qksw7cd] {
    background: rgba(var(--cpd-gold-rgb), 0.05);
    color: var(--cpd-gold);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.85rem;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--cpd-gold-border);
    padding: 0.85rem var(--cpd-space-lg);
    text-align: left;
}

.recon-table th.num[b-0v1qksw7cd],
.recon-table td.num[b-0v1qksw7cd] {
    text-align: right;
    white-space: nowrap;
}

.recon-table tbody td[b-0v1qksw7cd] {
    padding: 0.7rem 1rem;
    color: var(--cpd-contrast);
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.05);
    font-family: var(--cpd-font-mono);
    font-size: 13px;
}

.recon-table tbody tr:hover td[b-0v1qksw7cd] {
    background: var(--cpd-gold-faint);
}

.recon-table .col-date[b-0v1qksw7cd] { white-space: nowrap; width: 1%; }
.recon-table .col-match[b-0v1qksw7cd] { white-space: nowrap; width: 1%; }
.recon-table .col-ccy[b-0v1qksw7cd] { white-space: nowrap; width: 1%; color: rgba(var(--cpd-contrast-rgb), calc(0.6 * var(--cpd-text-alpha-scale))); letter-spacing: 0.05em; }

.recon-empty[b-0v1qksw7cd] {
    text-align: center;
    padding: 2.5rem 1rem;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    font-style: italic;
    font-family: inherit;
}

.recon-total-foot td[b-0v1qksw7cd] {
    padding: 0.85rem var(--cpd-space-lg);
    border-top: 2px solid var(--cpd-gold-border);
    background: var(--cpd-gold-faint);
    color: var(--cpd-text);
    font-family: var(--cpd-font-mono);
    font-size: 14px;
    font-weight: 600;
}

.recon-total-foot td.num[b-0v1qksw7cd] {
    text-align: right;
}

.recon-total-foot-diff[b-0v1qksw7cd] {
    margin-right: 12px;
}

.recon-total-foot-label[b-0v1qksw7cd] {
    font-family: var(--cpd-font-sans);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--cpd-gold);
}

.val-positive[b-0v1qksw7cd] { color: var(--token-rate); }
.val-negative[b-0v1qksw7cd] { color: var(--token-position); }
.val-neutral[b-0v1qksw7cd]  { color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale))); }
.val-zero[b-0v1qksw7cd]          { color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale))); }
.val-within-tolerance[b-0v1qksw7cd] { color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale))); }
.val-breach[b-0v1qksw7cd]        { color: var(--token-position); font-weight: 600; }

.recon-view-trade-link[b-0v1qksw7cd] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.06);
    border: 1px solid rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.25);
    border-radius: 6px;
    color: var(--cpd-contrast);
    font-size: 12px;
    text-decoration: none;
    transition: background .15s, border-color .15s, color .15s;
}

.recon-view-trade-link:hover[b-0v1qksw7cd] {
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.12);
    border-color: var(--cpd-gold);
    color: var(--cpd-gold);
}

.recon-view-trade-link i[b-0v1qksw7cd] {
    font-size: 12px;
    color: var(--cpd-gold);
}

.recon-tolerance-group[b-0v1qksw7cd] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 8px;
}

.recon-tolerance-value[b-0v1qksw7cd] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    color: var(--cpd-contrast);
    border-radius: 6px;
    padding: 4px 8px;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    width: 80px;
}

.recon-tolerance-mode[b-0v1qksw7cd] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    color: var(--cpd-contrast);
    border-radius: 6px;
    padding: 4px 8px;
    font-family: var(--cpd-font-mono);
    font-size: 13px;
}

.recon-tolerance-value:focus[b-0v1qksw7cd],
.recon-tolerance-mode:focus[b-0v1qksw7cd] {
    outline: none;
    border-color: var(--cpd-gold);
    box-shadow: 0 0 0 2px rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.15);
}

.recon-fuzzy-banner[b-0v1qksw7cd] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 14px;
    padding: 10px 14px;
    background: rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.06);
    border: 1px solid rgba(var(--cpd-gold-rgb, 246, 212, 107), 0.3);
    border-radius: 8px;
    color: var(--cpd-contrast);
    font-size: 13px;
}

.recon-fuzzy-banner i[b-0v1qksw7cd] {
    color: var(--cpd-gold);
    font-size: 14px;
}

.recon-fuzzy-banner strong[b-0v1qksw7cd] {
    color: var(--cpd-gold);
}

.recon-fuzzy-banner-hint[b-0v1qksw7cd] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
}

.recon-date-stack[b-0v1qksw7cd] {
    display: inline-flex;
    flex-direction: column;
    line-height: 1.25;
}

.recon-date-stack .recon-date-stored[b-0v1qksw7cd] {
    font-size: 12px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
}

.recon-date-stack .recon-date-live[b-0v1qksw7cd] {
    font-size: 13px;
    color: var(--cpd-contrast);
}

.match-exact[b-0v1qksw7cd],
.match-fuzzy[b-0v1qksw7cd],
.match-stored[b-0v1qksw7cd],
.match-live[b-0v1qksw7cd] {
    display: inline-block;
    font-family: var(--cpd-font-sans);
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px 8px;
    border-radius: 10px;
    border: 1px solid transparent;
}

.match-exact[b-0v1qksw7cd]   { color: var(--token-rate);     background: var(--token-rate-bg);     border-color: var(--token-rate-border); }
.match-fuzzy[b-0v1qksw7cd]   { color: var(--cpd-gold);       background: var(--cpd-gold-soft); border-color: var(--cpd-gold-border); }
.match-stored[b-0v1qksw7cd]  { color: rgba(var(--cpd-contrast-rgb), calc(.55 * var(--cpd-text-alpha-scale))); background: rgba(var(--cpd-contrast-rgb),.04);    border-color: rgba(var(--cpd-contrast-rgb),.10); }
.match-live[b-0v1qksw7cd]    { color: var(--token-position); background: var(--token-position-bg); border-color: var(--token-position-border); }

.recon-error[b-0v1qksw7cd] {
    margin-bottom: 14px;
    padding: 10px 14px;
    background: var(--token-position-bg);
    border: 1px solid var(--token-position-border);
    border-radius: 8px;
    color: var(--token-position);
    font-size: 13px;
}

.recon-warn[b-0v1qksw7cd] {
    margin-bottom: 14px;
    padding: 10px 14px;
    background: var(--cpd-gold-soft);
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-lg);
    color: var(--cpd-text);
    font-size: 13px;
}

.recon-warn strong[b-0v1qksw7cd] { color: var(--cpd-gold); }
.recon-warn-detail[b-0v1qksw7cd] { color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale))); }
/* /Components/Pages/CPStudioBasePage.razor.rz.scp.css */
/* Scoped styles for CPStudioBasePage's own template (header, loading overlay).
   Page-level layout primitives (.page-container, .page-title, .summary-*,
   buttons) live in wwwroot/common-page-styles.css so child pages can share
   them. */

.page-container[b-ukz8m5i10g] {
    position: relative;
}

.loading-overlay[b-ukz8m5i10g] {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(var(--cpd-dark-rgb), 0.95);
    backdrop-filter: blur(10px);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.loading-content[b-ukz8m5i10g] {
    text-align: center;
}

.spinner-container[b-ukz8m5i10g] {
    margin-bottom: var(--cpd-space-2xl);
}

.spinner[b-ukz8m5i10g] {
    width: 60px;
    height: 60px;
    border: 4px solid rgba(var(--cpd-gold-rgb), 0.2);
    border-top-color: var(--cpd-gold);
    border-radius: 50%;
    animation: spin-b-ukz8m5i10g 1s linear infinite;
    margin: 0 auto;
}

.loading-text[b-ukz8m5i10g] {
    color: var(--cpd-text);
    font-size: 1.1rem;
}

@keyframes spin-b-ukz8m5i10g {
    to {
        transform: rotate(360deg);
    }
}

.option-select[b-ukz8m5i10g] {
    padding: var(--cpd-space-sm) var(--cpd-space-lg);
    background: var(--cpd-surface-2);
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    color: var(--cpd-text);
    min-width: 150px;
    transition: all var(--cpd-transition-slow);
}

.option-select:focus[b-ukz8m5i10g] {
    outline: none;
    border-color: var(--cpd-gold);
    background: var(--cpd-surface-3);
    box-shadow: 0 0 0 3px var(--cpd-gold-ring);
}
/* /Components/Pages/Ftp/FtpCustomRunoff.razor.rz.scp.css */
.ftp-runoff-dropzone[b-7zikuk2yph] {
    position: relative;
}

.ftp-runoff-dropzone-input[b-7zikuk2yph] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.ftp-runoff-dropzone-label[b-7zikuk2yph] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    padding: 2rem 1rem;
    border: 2px dashed var(--cpd-border, #ccc);
    border-radius: var(--cpd-radius-sm, 6px);
    text-align: center;
    cursor: pointer;
    transition: border-color 150ms ease, background 150ms ease;
}

.ftp-runoff-dropzone-label:hover[b-7zikuk2yph] {
    border-color: var(--cpd-gold, #b8860b);
    background: var(--cpd-surface-3, rgba(0, 0, 0, 0.02));
}

.ftp-runoff-dropzone-icon[b-7zikuk2yph] {
    font-size: 2rem;
    opacity: 0.7;
}

.ftp-runoff-dropzone-title[b-7zikuk2yph] {
    font-weight: 600;
}

.ftp-runoff-dropzone-hint[b-7zikuk2yph] {
    font-size: 0.8rem;
    opacity: 0.7;
    max-width: 28rem;
}

.ftp-runoff-dropzone-status[b-7zikuk2yph] {
    font-size: 0.8rem;
    font-weight: 600;
    margin-top: 0.25rem;
}

.ftp-runoff-dropzone-status-ok[b-7zikuk2yph] {
    color: var(--cpd-success, #2e7d32);
}

.ftp-runoff-dropzone-status-error[b-7zikuk2yph] {
    color: var(--cpd-danger, #c62828);
}
/* /Components/Pages/Market/CurveAccordionNode.razor.rz.scp.css */
.curve-section[b-s94zkyzmml] {
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.18);
    border-radius: var(--cpd-radius-xl);
    padding: 0.85rem;
    margin-bottom: 0.75rem;
    box-shadow: 0 6px 22px rgba(0, 0, 0, 0.22);
}

.curve-section.level-0[b-s94zkyzmml] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.96), rgba(var(--cpd-nest-1-rgb), 0.96));
}

.curve-section.level-1[b-s94zkyzmml] {
    background: linear-gradient(135deg, rgba(var(--cpd-nest-1-rgb), 0.96), rgba(var(--cpd-nest-3-rgb), 0.96));
    margin-left: 0.75rem;
}

.curve-section.level-2[b-s94zkyzmml] {
    background: linear-gradient(135deg, rgba(var(--cpd-nest-2-rgb), 0.96), rgba(var(--cpd-nest-6-rgb), 0.96));
    margin-left: 1.5rem;
}

.curve-section.level-3[b-s94zkyzmml] {
    background: linear-gradient(135deg, rgba(var(--cpd-nest-4-rgb), 0.96), rgba(var(--cpd-nest-7-rgb), 0.96));
    margin-left: 2.25rem;
}

@media (max-width: 767.98px) {
    .curve-section.level-1[b-s94zkyzmml],
    .curve-section.level-2[b-s94zkyzmml],
    .curve-section.level-3[b-s94zkyzmml] {
        margin-left: 0;
    }
}

[b-s94zkyzmml] .curve-accordion {
    margin-top: 0.75rem;
}

[b-s94zkyzmml] .curve-accordion .accordion-item {
    background: rgba(var(--cpd-nest-1-rgb), 0.95) !important;
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.22) !important;
    border-radius: 10px !important;
    overflow: hidden;
    margin-bottom: 0.5rem;
}

[b-s94zkyzmml] .curve-accordion .accordion-header {
    background: rgba(var(--cpd-nest-5-rgb), 0.96) !important;
}

[b-s94zkyzmml] .curve-accordion .accordion-button {
    background: rgba(var(--cpd-nest-5-rgb), 0.96) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600;
    padding: 0.55rem 0.8rem;
}

[b-s94zkyzmml] .curve-accordion .accordion-button:not(.collapsed) {
    background: rgba(var(--cpd-nest-8-rgb), 0.98) !important;
    color: var(--cpd-gold) !important;
    box-shadow: none !important;
}

[b-s94zkyzmml] .curve-accordion .accordion-body {
    background: rgba(var(--cpd-dark-rgb), 0.95) !important;
    color: var(--cpd-text);
    padding: 0.65rem;
}
/* /Components/Pages/Market/CurveSummary.razor.rz.scp.css */
.curve-summary[b-repg2piqdw] {
    margin-top: 0.4rem;
}

.curve-summary-heading[b-repg2piqdw] {
    color: var(--cpd-contrast);
    font-size: 0.95rem;
    font-weight: 600;
    margin: 0 0 0.5rem;
}

.curve-summary-grid[b-repg2piqdw] {
    display: grid;
    grid-template-columns: minmax(18rem, 0.9fr) minmax(20rem, 1.1fr);
    gap: 0.55rem;
    align-items: start;
}

.curve-summary-grid.single-panel[b-repg2piqdw] {
    grid-template-columns: minmax(0, 1fr);
}

.history-table[b-repg2piqdw] {
    width: auto;
}

.history-table-container[b-repg2piqdw] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-lg);
    overflow-x: auto;
    overflow-y: auto;
    box-shadow: var(--cpd-shadow-card);
    padding: 0.35rem;
    max-height: 24rem;
}

.history-table-container[b-repg2piqdw]  td,
.history-table-container[b-repg2piqdw]  th {
    padding: 0.32rem 0.48rem !important;
    border: none !important;
    white-space: nowrap !important;
}

.history-table-container[b-repg2piqdw]  thead th {
    background: var(--cpd-gold-faint) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    font-size: 0.72rem !important;
    letter-spacing: 0.5px !important;
    border-bottom: 2px solid var(--cpd-gold-border) !important;
}

.history-table-container[b-repg2piqdw]  tbody td {
    color: var(--cpd-text) !important;
    background: transparent !important;
    border-bottom: 1px solid var(--cpd-border-subtle) !important;
}

.history-table-container[b-repg2piqdw]  tbody tr:hover td {
    background: var(--cpd-gold-faint) !important;
}

.history-table-container[b-repg2piqdw]  table {
    width: 100% !important;
    min-width: max-content !important;
}

.history-table-container[b-repg2piqdw]  td:not(:last-child),
.history-table-container[b-repg2piqdw]  th:not(:last-child) {
    border-right: 1px solid var(--cpd-border-subtle) !important;
}

.curve-properties-container[b-repg2piqdw]  td:last-child {
    min-width: 14rem;
    white-space: normal !important;
}

.curve-values-container[b-repg2piqdw] {
    max-height: 28rem;
}

@media (max-width: 991.98px) {
    .curve-summary-grid[b-repg2piqdw] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Market/CurveValueChart.razor.rz.scp.css */
.curve-value-chart[b-g4b1u0c3l0] {
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-lg);
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    padding: 0.6rem;
    margin-bottom: 0.6rem;
}

.curve-value-chart svg[b-g4b1u0c3l0] {
    display: block;
    width: 100%;
    height: auto;
}

.axis[b-g4b1u0c3l0] {
    stroke: var(--cpd-border-strong);
    stroke-width: 1;
}

.curve-line[b-g4b1u0c3l0] {
    fill: none;
    stroke: var(--cpd-gold);
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.curve-point[b-g4b1u0c3l0] {
    fill: var(--cpd-dark);
    stroke: var(--cpd-gold);
    stroke-width: 1.8;
}

.axis-label[b-g4b1u0c3l0] {
    fill: var(--cpd-accent);
    font-size: 0.72rem;
}
/* /Components/Pages/Market/InstrumentQuoteChart.razor.rz.scp.css */
.quote-chart[b-jbqd1bd4iu] {
    min-height: 18rem;
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.92), rgba(var(--cpd-panel-sheen-rgb), 0.92));
    padding: var(--cpd-space-md);
}

.quote-chart svg[b-jbqd1bd4iu] {
    display: block;
    width: 100%;
    height: auto;
}

.axis[b-jbqd1bd4iu] {
    stroke: var(--cpd-border-strong);
    stroke-width: 1;
}

.quote-line[b-jbqd1bd4iu] {
    fill: none;
    stroke: var(--cpd-gold);
    stroke-width: 2.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.quote-point[b-jbqd1bd4iu] {
    fill: var(--cpd-dark);
    stroke: var(--cpd-gold);
    stroke-width: 2;
}

.axis-label[b-jbqd1bd4iu] {
    fill: var(--cpd-accent);
    font-size: 0.75rem;
}

.chart-empty[b-jbqd1bd4iu] {
    min-height: 15rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    color: var(--cpd-accent);
}

.chart-empty i[b-jbqd1bd4iu] {
    color: var(--cpd-gold);
}
/* /Components/Pages/Market/InstrumentSwitchOptions.razor.rz.scp.css */
.instrument-switch-options[b-3zbw9gqc2v] {
    display: flex;
    flex-direction: column;
    gap: var(--cpd-space-md);
    margin-bottom: var(--cpd-space-xl);
}

.instrument-switch-card[b-3zbw9gqc2v] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.94), rgba(var(--cpd-panel-sheen-rgb), 0.94));
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-lg);
    padding: var(--cpd-space-md);
}

.switch-label[b-3zbw9gqc2v] {
    display: block;
    color: var(--cpd-accent);
    font-size: 0.76rem;
    font-weight: 600;
    margin-bottom: var(--cpd-space-xs);
    text-transform: uppercase;
}

.hero-select[b-3zbw9gqc2v] {
    display: grid;
    grid-template-columns: minmax(12rem, 1fr) minmax(16rem, 24rem);
    gap: var(--cpd-space-md);
    align-items: center;
    border-left: 4px solid var(--cpd-gold);
}

.switch-copy[b-3zbw9gqc2v] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.switch-copy strong[b-3zbw9gqc2v] {
    color: var(--cpd-contrast);
    font-size: 1.15rem;
}

.switch-copy span:last-child[b-3zbw9gqc2v] {
    color: var(--cpd-gold);
    font-size: 0.85rem;
}

.instrument-select[b-3zbw9gqc2v] {
    width: 100%;
    min-height: 2.6rem;
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-md);
    background: rgba(var(--cpd-dark-rgb), 0.88);
    color: var(--cpd-contrast);
    padding: 0.45rem 0.65rem;
}

.instrument-select-hero[b-3zbw9gqc2v] {
    border-color: var(--cpd-gold);
    box-shadow: 0 0 0 3px var(--cpd-gold-ring);
}

.instrument-select:focus-visible[b-3zbw9gqc2v] {
    outline: 2px solid var(--cpd-gold);
    outline-offset: 2px;
}

@media (max-width: 767.98px) {
    .hero-select[b-3zbw9gqc2v] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Market/InstrumentView.razor.rz.scp.css */
.history-table[b-px2e1n7tcd] {
    width: auto;
}

.history-table-container[b-px2e1n7tcd] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    overflow-x: auto;
    overflow-y: visible;
    box-shadow: var(--cpd-shadow-card);
    padding: var(--cpd-space-md);
}

.history-table-container[b-px2e1n7tcd]  .pagination {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
    padding: 0.5rem 0;
}

.history-table-container[b-px2e1n7tcd]  .page-item .page-link {
    background: transparent !important;
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.4) !important;
    color: var(--cpd-gold) !important;
    font-weight: 500 !important;
    border-radius: var(--cpd-radius-lg) !important;
    padding: 0.4rem 0.8rem !important;
}

.history-table-container[b-px2e1n7tcd]  .page-item .page-link:hover {
    background: var(--cpd-gold-ring) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-contrast) !important;
}

.history-table-container[b-px2e1n7tcd]  .page-item.active .page-link {
    background: var(--cpd-gold) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-dark) !important;
}

.history-table-container[b-px2e1n7tcd]  td,
.history-table-container[b-px2e1n7tcd]  th {
    padding: 0.75rem 1rem !important;
    border: none !important;
}

.history-table-container[b-px2e1n7tcd]  thead th {
    background: var(--cpd-gold-faint) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.5px !important;
    border-bottom: 2px solid var(--cpd-gold-border) !important;
}

.history-table-container[b-px2e1n7tcd]  tbody td {
    color: var(--cpd-text) !important;
    background: transparent !important;
    border-bottom: 1px solid var(--cpd-border-subtle) !important;
    vertical-align: top !important;
}

.history-table-container[b-px2e1n7tcd]  tbody tr:hover td {
    background: var(--cpd-gold-faint) !important;
}

.history-table-container[b-px2e1n7tcd]  table {
    width: 100% !important;
    min-width: 72rem !important;
}

.history-table-container[b-px2e1n7tcd]  td:not(:last-child),
.history-table-container[b-px2e1n7tcd]  th:not(:last-child) {
    border-right: 1px solid var(--cpd-border-subtle) !important;
}

.history-table-container[b-px2e1n7tcd]  .bb-grid-filter.btn-light {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.35rem !important;
    min-height: 2rem !important;
    border: 1px solid var(--cpd-gold-border) !important;
    border-radius: var(--cpd-radius-md) !important;
    background: rgba(var(--cpd-dark-rgb), 0.82) !important;
    color: var(--cpd-gold) !important;
    box-shadow: none !important;
    padding: 0.25rem 0.55rem !important;
}

.history-table-container[b-px2e1n7tcd]  .bb-grid-filter.btn-light:hover,
.history-table-container[b-px2e1n7tcd]  .bb-grid-filter.btn-light:focus {
    border-color: var(--cpd-gold) !important;
    background: var(--cpd-gold-ring) !important;
    color: var(--cpd-contrast) !important;
}

.history-table-container[b-px2e1n7tcd]  .bb-grid-filter.btn-light::after {
    margin-left: 0.25rem !important;
}

.history-table-container[b-px2e1n7tcd]  .dropdown-menu {
    border: 1px solid var(--cpd-gold-border) !important;
    border-radius: var(--cpd-radius-lg) !important;
    background: rgba(var(--cpd-dark-rgb), 0.98) !important;
    box-shadow: var(--cpd-shadow-card) !important;
    color: var(--cpd-text) !important;
}

.history-table-container[b-px2e1n7tcd]  .dropdown-item {
    color: var(--cpd-text) !important;
}

.history-table-container[b-px2e1n7tcd]  .dropdown-item:hover,
.history-table-container[b-px2e1n7tcd]  .dropdown-item:focus {
    background: var(--cpd-gold-faint) !important;
    color: var(--cpd-gold) !important;
}

.quote-value[b-px2e1n7tcd] {
    display: block;
    white-space: nowrap;
}

.quote-kind[b-px2e1n7tcd] {
    display: inline-block;
    margin-top: 0.2rem;
    padding: 0.15rem 0.4rem;
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-sm);
    color: var(--cpd-gold);
    font-size: 0.72rem;
}

.instrument-detail[b-px2e1n7tcd] {
    padding: var(--cpd-space-lg);
}

.detail-header[b-px2e1n7tcd] {
    display: flex;
    justify-content: space-between;
    gap: var(--cpd-space-md);
    align-items: flex-start;
    margin-bottom: var(--cpd-space-md);
}

.detail-title[b-px2e1n7tcd] {
    color: var(--cpd-contrast);
    font-weight: 600;
}

.detail-subtitle[b-px2e1n7tcd] {
    color: var(--cpd-accent);
    font-size: 0.85rem;
}

.detail-pill[b-px2e1n7tcd] {
    color: var(--cpd-gold);
    border: 1px solid var(--cpd-gold-border);
    background: var(--cpd-gold-faint);
    border-radius: var(--cpd-radius-sm);
    padding: 0.25rem 0.5rem;
    font-size: 0.8rem;
}

.quote-instances[b-px2e1n7tcd] {
    margin-top: var(--cpd-space-md);
}

.quote-instances[b-px2e1n7tcd]  table {
    min-width: 24rem !important;
}

.quote-instances[b-px2e1n7tcd]  .instance-table {
    width: 100%;
}

.quote-instances[b-px2e1n7tcd]  td,
.quote-instances[b-px2e1n7tcd]  th {
    padding: 0.6rem 0.8rem !important;
}

.quote-instances[b-px2e1n7tcd]  tbody td {
    vertical-align: middle !important;
}
/* /Components/Pages/Market/MarketRailTabs.razor.rz.scp.css */
.market-rail-tabs[b-djjralgkr6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-bottom: var(--cpd-space-xl);
    border-bottom: 1px solid var(--cpd-border);
}

.rail-tab[b-djjralgkr6] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 2.4rem;
    border: none;
    border-bottom: 3px solid transparent;
    background: transparent;
    color: var(--cpd-accent);
    padding: 0.45rem 0.65rem;
}

.rail-tab:hover[b-djjralgkr6],
.rail-tab.active[b-djjralgkr6] {
    border-bottom-color: var(--cpd-gold);
    color: var(--cpd-gold);
}

.rail-count[b-djjralgkr6] {
    color: inherit;
    font-size: 0.75rem;
    opacity: 0.75;
}

.rail-tab:focus-visible[b-djjralgkr6] {
    outline: 2px solid var(--cpd-gold);
    outline-offset: 2px;
}
/* /Components/Pages/Market/MarketView.razor.rz.scp.css */
.border-block[b-2bj7ocpcb9] {
    background: var(--cpd-surface-1);
    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-lg);
    padding: var(--cpd-space-md);
    transition: border-color var(--cpd-transition), background var(--cpd-transition);
    margin-bottom: var(--cpd-space-xl);
}

.border-block:hover[b-2bj7ocpcb9] {
    border-color: rgba(var(--cpd-gold-rgb), 0.5);
    background: var(--cpd-surface-2);
}

.history-table[b-2bj7ocpcb9] {
    width: auto;
}

.history-table-container[b-2bj7ocpcb9] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    overflow-x: auto;
    overflow-y: visible;
    box-shadow: var(--cpd-shadow-card);
    padding: var(--cpd-space-md);
}

.history-table-container[b-2bj7ocpcb9]  .pagination {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
    padding: 0.5rem 0;
}

.history-table-container[b-2bj7ocpcb9]  .page-item .page-link {
    background: transparent !important;
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.4) !important;
    color: var(--cpd-gold) !important;
    font-weight: 500 !important;
    border-radius: var(--cpd-radius-lg) !important;
    padding: 0.4rem 0.8rem !important;
    transition: all 0.2s ease-in-out;
}

.history-table-container[b-2bj7ocpcb9]  .page-item .page-link:hover {
    background: var(--cpd-gold-ring) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-contrast) !important;
}

.history-table-container[b-2bj7ocpcb9]  .page-item.active .page-link {
    background: var(--cpd-gold) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-dark) !important;
    font-weight: 600 !important;
}

.history-table-container[b-2bj7ocpcb9]  .page-item.disabled .page-link {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
}

.history-table-container[b-2bj7ocpcb9]  td,
.history-table-container[b-2bj7ocpcb9]  th {
    padding: 0.75rem 1rem !important;
    border: none !important;
}

.history-table-container[b-2bj7ocpcb9]  td:first-child,
.history-table-container[b-2bj7ocpcb9]  th:first-child {
    padding-left: 1.25rem !important;
}

.history-table-container[b-2bj7ocpcb9]  td:last-child,
.history-table-container[b-2bj7ocpcb9]  th:last-child {
    padding-right: 1.25rem !important;
}

.history-table-container[b-2bj7ocpcb9]  thead th {
    background: var(--cpd-gold-faint) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    font-size: 0.9rem !important;
    letter-spacing: 0.5px !important;
    border-bottom: 2px solid var(--cpd-gold-border) !important;
    padding-top: 0.85rem !important;
    padding-bottom: 0.85rem !important;
}

.history-table-container[b-2bj7ocpcb9]  tbody td {
    color: var(--cpd-text) !important;
    background: transparent !important;
    border-bottom: 1px solid var(--cpd-border-subtle) !important;
    padding-top: 0.7rem !important;
    padding-bottom: 0.7rem !important;
}

.history-table-container[b-2bj7ocpcb9]  tbody tr:hover td {
    background: var(--cpd-gold-faint) !important;
}

.history-table-container[b-2bj7ocpcb9]  table {
    width: 100% !important;
    min-width: 32rem !important;
}

.history-table-container[b-2bj7ocpcb9]  td:not(:last-child),
.history-table-container[b-2bj7ocpcb9]  th:not(:last-child) {
    border-right: 1px solid var(--cpd-border-subtle) !important;
    padding-right: 1rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .table-sm > :not(caption) > * > * {
    padding: 0.75rem 1rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .bb-grid-row > div,
.history-table-container[b-2bj7ocpcb9]  .grid-row > div {
    padding: 0.75rem 1rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .bb-grid table td,
.history-table-container[b-2bj7ocpcb9]  .bb-grid table th {
    padding: 0.75rem 1rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .bb-grid-filter.btn-light {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.35rem !important;
    min-height: 2rem !important;
    border: 1px solid var(--cpd-gold-border) !important;
    border-radius: var(--cpd-radius-md) !important;
    background: rgba(var(--cpd-dark-rgb), 0.82) !important;
    color: var(--cpd-gold) !important;
    box-shadow: none !important;
    padding: 0.25rem 0.55rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .bb-grid-filter.btn-light:hover,
.history-table-container[b-2bj7ocpcb9]  .bb-grid-filter.btn-light:focus {
    border-color: var(--cpd-gold) !important;
    background: var(--cpd-gold-ring) !important;
    color: var(--cpd-contrast) !important;
}

.history-table-container[b-2bj7ocpcb9]  .bb-grid-filter.btn-light::after {
    margin-left: 0.25rem !important;
}

.history-table-container[b-2bj7ocpcb9]  .dropdown-menu {
    border: 1px solid var(--cpd-gold-border) !important;
    border-radius: var(--cpd-radius-lg) !important;
    background: rgba(var(--cpd-dark-rgb), 0.98) !important;
    box-shadow: var(--cpd-shadow-card) !important;
    color: var(--cpd-text) !important;
}

.history-table-container[b-2bj7ocpcb9]  .dropdown-item {
    color: var(--cpd-text) !important;
}

.history-table-container[b-2bj7ocpcb9]  .dropdown-item:hover,
.history-table-container[b-2bj7ocpcb9]  .dropdown-item:focus {
    background: var(--cpd-gold-faint) !important;
    color: var(--cpd-gold) !important;
}

.button-strip[b-2bj7ocpcb9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    width: 100%;
}

.button-strip .my-button[b-2bj7ocpcb9] {
    flex: 0 0 auto;
    min-width: 11rem;
    padding: 0.55rem 0.9rem;

    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;

    white-space: nowrap;
}

.button-strip .badge[b-2bj7ocpcb9],
.button-strip .category-count[b-2bj7ocpcb9] {
    background-color: #2f3e4e;
    color: var(--cpd-gold);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.14);
}

.button-strip .my-button .badge[b-2bj7ocpcb9] {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
}

.border-block.category-frame[b-2bj7ocpcb9] {
    width: fit-content;
    max-width: 100%;
    margin: 0 auto var(--cpd-space-xl) auto;
}

.button-strip.category-strip[b-2bj7ocpcb9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    width: fit-content;
    max-width: 100%;
}

.button-strip.category-strip .my-button[b-2bj7ocpcb9] {
    flex: 0 0 auto;
    min-width: unset;
    width: auto;
    padding: 0.5rem 0.75rem;
    justify-content: center;
}

.button-strip.category-strip .my-button.active[b-2bj7ocpcb9],
.button-strip.category-strip .my-button[aria-pressed="true"][b-2bj7ocpcb9] {
    box-shadow: 0 0 0 2px var(--cpd-gold-ring);
}

.button-strip.category-strip .my-button:focus-visible[b-2bj7ocpcb9] {
    outline: 2px solid var(--cpd-gold);
    outline-offset: 2px;
}

.stoch-section[b-2bj7ocpcb9] {
    display: flex;
    flex-direction: column;
    gap: var(--cpd-space-xl);
}

.stoch-panel[b-2bj7ocpcb9] {
    background: linear-gradient(135deg, rgba(var(--cpd-dark-rgb), 0.95) 0%, rgba(var(--cpd-panel-sheen-rgb), 0.95) 100%);
    border: 1px solid var(--cpd-gold-strong);
    border-radius: var(--cpd-radius-xl);
    padding: var(--cpd-space-lg);
    box-shadow: var(--cpd-shadow-card);
}

.stoch-panel-title[b-2bj7ocpcb9] {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--cpd-gold);
    margin-bottom: var(--cpd-space-md);
}

.stoch-form[b-2bj7ocpcb9] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--cpd-space-md);
    align-items: flex-end;
}

.stoch-field[b-2bj7ocpcb9] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 130px;
}

.stoch-field.stoch-action[b-2bj7ocpcb9] {
    justify-content: flex-end;
}

.stoch-label[b-2bj7ocpcb9] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--cpd-text-subtle);
}

.stoch-table[b-2bj7ocpcb9] {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--cpd-space-lg);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

.stoch-table th[b-2bj7ocpcb9] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--cpd-gold);
    padding: 6px 12px;
    border-bottom: 1px solid var(--cpd-gold-border);
    text-align: left;
}

.stoch-table td[b-2bj7ocpcb9] {
    padding: 5px 12px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.65 * var(--cpd-text-alpha-scale)));
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.04);
    font-family: var(--cpd-font-mono);
}
/* /Components/Pages/Market/ScheduledImports.razor.rz.scp.css */
/* MudSimpleTable's dense mode still pads cells looser than the compact
   file-listing look this page needs. Keep the 4px padding Bootstrap's
   table-sm used to give us, and restore the table's bottom margin now
   that MudBlazor renders the table inside its own container div. */
.table-responsive[b-zvel6fey5d]  .sandbox-files-table th,
.table-responsive[b-zvel6fey5d]  .sandbox-files-table td {
    padding: 4px;
}

/* Bootstrap's .table gave th font-weight 700; MudSimpleTable uses 500. These are
   dense file listings where bold headers carry the scan, so hold the old weight. */
.table-responsive[b-zvel6fey5d]  .sandbox-files-table th {
    font-weight: 700;
}

.table-responsive[b-zvel6fey5d]  .sandbox-files-table {
    margin-bottom: var(--cpd-space-lg);
}
/* /Components/Pages/Schedule Based History.razor.rz.scp.css */
.filters-section[b-glmn19ezdl] {
    display: flex;
    gap: var(--cpd-space-lg);
    align-items: flex-end;
    margin-bottom: var(--cpd-space-xl);
    padding: var(--cpd-space-lg);
    background: var(--cpd-surface-1);
    border: 1px solid var(--cpd-border-subtle);
    border-radius: var(--cpd-radius-xl);
    flex-wrap: wrap;
}

.filter-group[b-glmn19ezdl] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.filter-label[b-glmn19ezdl] {
    color: var(--cpd-text-muted);
    font-size: 0.9rem;
    font-weight: 500;
}

.filter-select[b-glmn19ezdl],
.filter-input[b-glmn19ezdl] {
    padding: var(--cpd-space-sm) var(--cpd-space-lg);
    background: var(--cpd-surface-2);
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    color: var(--cpd-text);
    min-width: 150px;
    transition: all var(--cpd-transition-slow);
}

.filter-select:focus[b-glmn19ezdl],
.filter-input:focus[b-glmn19ezdl] {
    outline: none;
    border-color: var(--cpd-gold);
    background: var(--cpd-surface-3);
    box-shadow: 0 0 0 3px var(--cpd-gold-ring);
}

@media (max-width: 768px) {
    .simm-history-container[b-glmn19ezdl] {
        padding: var(--cpd-space-sm);
    }

    .filters-section[b-glmn19ezdl] {
        padding: var(--cpd-space-md);
        gap: var(--cpd-space-md);
    }
}
/* /Components/Pages/SIMM History.razor.rz.scp.css */
/* SIMM History.razor.css - Component-specific styles with CSS isolation */

.filters-section[b-kvmtkgapr7] {
    display: flex;
    gap: var(--cpd-space-lg);
    align-items: flex-end;
    margin-bottom: var(--cpd-space-xl);
    padding: var(--cpd-space-lg);
    background: var(--cpd-surface-1);
    border: 1px solid var(--cpd-border-subtle);
    border-radius: var(--cpd-radius-xl);
    flex-wrap: wrap;
}

.filter-group[b-kvmtkgapr7] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.filter-label[b-kvmtkgapr7] {
    color: var(--cpd-text-muted);
    font-size: 0.9rem;
    font-weight: 500;
}

.filter-select[b-kvmtkgapr7],
.filter-input[b-kvmtkgapr7] {
    padding: var(--cpd-space-sm) var(--cpd-space-lg);
    background: var(--cpd-surface-2);
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    color: var(--cpd-text);
    min-width: 150px;
    transition: all var(--cpd-transition-slow);
}

.filter-select:focus[b-kvmtkgapr7],
.filter-input:focus[b-kvmtkgapr7] {
    outline: none;
    border-color: var(--cpd-gold);
    background: var(--cpd-surface-3);
    box-shadow: 0 0 0 3px var(--cpd-gold-ring);
}

@media (max-width: 768px) {
    .filters-section[b-kvmtkgapr7] {
        padding: var(--cpd-space-md);
        gap: var(--cpd-space-md);
    }
}
/* /Components/Pages/Trades/Capture.razor.rz.scp.css */
.trade-topbar[b-qkiqfh3wuv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    gap: 12px;
    flex-wrap: wrap;
    position: sticky;
    top: 0;
    z-index: 5;
    background: var(--cpd-surface-0);
    padding: 8px 0;
}

.trade-title-group[b-qkiqfh3wuv] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 32px;
}

.trade-page-title[b-qkiqfh3wuv] {
    font-size: 20px;
    font-weight: 700;
    color: var(--cpd-text);
    letter-spacing: -0.03em;
}

.trade-badge[b-qkiqfh3wuv] {
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--cpd-text-subtle);
    padding: 3px 8px;
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 4px;
}

.trade-type-switcher[b-qkiqfh3wuv] {
    display: inline-flex;
    gap: 1px;
    padding: 2px;
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
    border-radius: 6px;
}

.trade-type-btn[b-qkiqfh3wuv] {
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--cpd-text-subtle);
    padding: 4px 12px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 4px;
    cursor: pointer;
    transition: background 0.1s, color 0.1s, border-color 0.1s;
}

.trade-type-btn:hover[b-qkiqfh3wuv] {
    color: rgba(var(--cpd-contrast-rgb), calc(0.6 * var(--cpd-text-alpha-scale)));
}

.trade-type-btn.active[b-qkiqfh3wuv] {
    color: var(--cpd-contrast);
    background: rgba(var(--cpd-contrast-rgb), 0.06);
    border-color: rgba(var(--cpd-contrast-rgb), 0.10);
}

.trade-meta-group[b-qkiqfh3wuv] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.trade-ref-input[b-qkiqfh3wuv],
.trade-val-input[b-qkiqfh3wuv] {
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    color: var(--cpd-text);
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid var(--cpd-border);
    border-radius: var(--cpd-radius-md);
    padding: 5px 10px;
    color-scheme: var(--cpd-color-scheme);
    outline: none;
    transition: border-color 0.15s, background 0.15s;
}

.trade-ref-input[b-qkiqfh3wuv] { width: 160px; }
.trade-val-input[b-qkiqfh3wuv] { width: 150px; }

.trade-ref-input:focus[b-qkiqfh3wuv],
.trade-val-input:focus[b-qkiqfh3wuv] {
    border-color: rgba(246, 212, 107, 0.5);
    background: rgba(var(--cpd-contrast-rgb), 0.05);
}

.trade-btn-go[b-qkiqfh3wuv] {
    flex: 1;
    height: 44px;
    border-radius: 8px;
    background: var(--cpd-gold);
    border: none;
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cpd-dark);
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s, transform 0.1s;
    box-shadow: 0 2px 12px rgba(246, 212, 107, 0.15);
    position: relative;
    overflow: hidden;
}

/* Gloss sheen on the gold Go button. Deliberately a literal white, NOT
   rgba(var(--cpd-contrast-rgb), …) like every other overlay in this file: the
   button's background is --cpd-gold, which is the same gold in both themes, so
   the highlight has to lighten it in both. The contrast token would flip to a
   dark overlay in light mode and shade the button instead of glossing it. */
.trade-btn-go[b-qkiqfh3wuv]::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.10) 0%, transparent 55%);
    pointer-events: none;
}

.trade-btn-go:hover[b-qkiqfh3wuv] {
    background: #fad96f;
    box-shadow: 0 4px 20px rgba(246, 212, 107, 0.30);
    transform: translateY(-1px);
}

.trade-btn-go:active[b-qkiqfh3wuv] {
    transform: scale(0.99);
}

.trade-btn-save[b-qkiqfh3wuv] {
    height: 44px;
    padding: 0 18px;
    border-radius: 8px;
    background: transparent;
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    font-family: inherit;
    font-size: 12px;
    font-weight: 500;
    color: rgba(var(--cpd-contrast-rgb), calc(0.6 * var(--cpd-text-alpha-scale)));
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
    white-space: nowrap;
}

.trade-btn-save:hover[b-qkiqfh3wuv] {
    background: rgba(var(--cpd-contrast-rgb), 0.04);
    border-color: rgba(var(--cpd-contrast-rgb), 0.22);
    color: var(--cpd-contrast);
}

@media (prefers-reduced-motion: reduce) {
    *[b-qkiqfh3wuv], *[b-qkiqfh3wuv]::before, *[b-qkiqfh3wuv]::after {
        animation: none !important;
        transition: none !important;
    }
}

.parties-group[b-qkiqfh3wuv] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.party-input[b-qkiqfh3wuv] {
    font-family: var(--cpd-font-mono);
    font-size: 13px;
    color: var(--cpd-text);
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 6px;
    padding: 5px 10px;
    outline: none;
    width: 140px;
    transition: border-color 0.15s;
}

.party-input:focus[b-qkiqfh3wuv] {
    border-color: rgba(var(--cpd-contrast-rgb), 0.3);
}

.party-input[b-qkiqfh3wuv]::placeholder {
    color: rgba(var(--cpd-contrast-rgb), calc(0.2 * var(--cpd-text-alpha-scale)));
}

.trade-form-card[b-qkiqfh3wuv] {
    background: rgba(var(--cpd-contrast-rgb), 0.025);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.06);
    border-radius: 10px;
    overflow: hidden;
    margin-top: 6px;
    padding: 6px 0;
    min-width: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token {
    min-width: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row {
    min-width: 0;
}

.trade-form-card[b-qkiqfh3wuv]  > .json-component-row > .json-token,
.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-full,
.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-detailed,
.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-compact {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 4px 12px;
    border-radius: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-full:hover,
.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-detailed:hover,
.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-compact:hover {
    border: none;
    box-shadow: none;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token > .token-label-row {
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.06);
    padding: 8px 8px 6px;
    margin: 0 -4px 6px;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token > .token-label-row > .token-label {
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
    opacity: 1;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token .form-input,
.trade-form-card[b-qkiqfh3wuv]  .json-token .detail-spin,
.trade-form-card[b-qkiqfh3wuv]  .json-token .detail-select,
.trade-form-card[b-qkiqfh3wuv]  .json-token select {
    font-family: var(--cpd-font-mono);
    font-size: 16px;
    color-scheme: var(--cpd-color-scheme);
}

.trade-form-card[b-qkiqfh3wuv]  .json-token .token-label-row .token-repr-summary {
    display: none;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-detailed .json-token.mode-compact > .token-label-row > .token-label {
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.75;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token .form-input:focus,
.trade-form-card[b-qkiqfh3wuv]  .json-token .detail-spin:focus,
.trade-form-card[b-qkiqfh3wuv]  .json-token .detail-select:focus,
.trade-form-card[b-qkiqfh3wuv]  .json-token select:focus {
    outline: none;
    border-color: var(--token-color, var(--cpd-gold));
    box-shadow: 0 0 0 2px rgba(246, 212, 107, 0.10);
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-detailed > .child-flow {
    padding: 10px 8px 12px;
    gap: 0.6rem;
    flex-wrap: wrap;
    overflow: visible;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-detailed > .child-flow > .json-token {
    flex: 0 1 auto;
    min-width: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-compact {
    padding: 14px 16px;
}

.trade-form-card[b-qkiqfh3wuv]  .json-component-row > .json-token.mode-compact .repr-overlay-wrapper > .repr-overlay {
    padding: 0.65rem 0.9rem;
    font-size: 16px;
    letter-spacing: 0.01em;
    line-height: 1.4;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow {
    flex-direction: column;
    gap: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 4px 20px;
    min-height: 52px;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.06);
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-top: none;
    background: transparent;
    position: relative;
    transition: background 0.1s;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token:last-child {
    border-bottom: none;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token:focus-within {
    background: rgba(var(--cpd-contrast-rgb), 0.02);
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 20px;
    right: 20px;
    height: 1px;
    background: var(--token-color);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token:focus-within::after {
    transform: scaleX(1);
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token:hover {
    box-shadow: none;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token > .token-label-row {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token > .token-label-row > .token-label {
    font-family: var(--cpd-font-mono);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.07em;
    color: var(--token-color, rgba(var(--cpd-contrast-rgb), calc(0.4 * var(--cpd-text-alpha-scale))));
    opacity: 0.7;
    flex-shrink: 0;
    width: 100px;
    transition: opacity 0.15s;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token:focus-within > .token-label-row > .token-label {
    opacity: 1;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .property-detail-row {
    padding-top: 0;
    gap: 6px;
    justify-content: flex-end;
    flex: 1;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .property-detail-row > * {
    max-width: 100%;
    min-width: 0;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .form-input,
.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .detail-spin,
.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .detail-select {
    background: var(--token-bg, rgba(var(--cpd-contrast-rgb), 0.05));
    border: 1px solid var(--token-border, rgba(var(--cpd-contrast-rgb), 0.12));
    border-radius: 6px;
    font-family: var(--cpd-font-mono);
    font-size: 16px;
    color: var(--cpd-contrast);
    padding: 7px 12px;
    transition: border-color 0.15s, background 0.15s;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .form-input:focus,
.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .detail-spin:focus,
.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full > .child-flow > .json-token .detail-select:focus {
    border-color: var(--token-color, rgba(var(--cpd-contrast-rgb), 0.22));
    box-shadow: 0 0 0 2px var(--token-bg, rgba(var(--cpd-contrast-rgb), 0.04));
    background: rgba(var(--cpd-contrast-rgb), 0.06);
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="rate"] {
    min-height: 68px;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="rate"] .detail-spin {
    font-size: 22px;
    font-weight: 300;
    letter-spacing: -0.03em;
    width: 90px;
    max-width: 100%;
    text-align: right;
    background: transparent;
    border: none;
    padding: 0;
    color: var(--token-color);
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="rate"] .detail-suffix {
    font-family: var(--cpd-font-mono);
    font-size: 16px;
    font-weight: 300;
    color: var(--token-color);
    opacity: 0.6;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="notional"] {
    min-height: 76px;
    align-items: flex-start;
    padding-top: 14px;
    padding-bottom: 10px;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-detail {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    flex: 1;
    min-width: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-detail > .notional-readout,
.trade-form-card[b-qkiqfh3wuv]  .notional-detail > .notional-edit-input {
    align-self: flex-end;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider-wrap {
    width: 85%;
    align-self: flex-end;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-readout {
    font-family: var(--cpd-font-mono);
    font-size: 24px;
    font-weight: 300;
    letter-spacing: -0.03em;
    color: var(--token-color);
    line-height: 1;
    user-select: none;
    cursor: text;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-readout:hover {
    opacity: 0.8;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-edit-input {
    font-family: var(--cpd-font-mono);
    font-size: 22px;
    font-weight: 300;
    letter-spacing: -0.03em;
    color: var(--token-color);
    background: rgba(var(--cpd-contrast-rgb), 0.05);
    border: 1px solid var(--token-border);
    border-radius: 6px;
    padding: 4px 8px;
    width: 180px;
    text-align: right;
    outline: none;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-edit-input:focus {
    border-color: var(--token-color);
    box-shadow: 0 0 0 2px var(--token-bg);
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider-wrap {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    background: rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 3px;
    outline: none;
    cursor: pointer;
    margin: 0;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--token-notional);
    border: 2px solid var(--token-notional);
    box-shadow: 0 0 6px rgba(201, 148, 26, 0.35);
    cursor: grab;
    transition: box-shadow 0.15s, transform 0.1s;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider::-webkit-slider-thumb:hover {
    box-shadow: 0 0 12px rgba(201, 148, 26, 0.5);
    transform: scale(1.15);
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider::-webkit-slider-thumb:active {
    cursor: grabbing;
    transform: scale(1.05);
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--token-notional);
    border: 2px solid var(--token-notional);
    box-shadow: 0 0 6px rgba(201, 148, 26, 0.35);
    cursor: grab;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider::-moz-range-track {
    height: 6px;
    background: rgba(var(--cpd-contrast-rgb), 0.10);
    border-radius: 3px;
    border: none;
}

.trade-form-card[b-qkiqfh3wuv]  .notional-slider-labels {
    display: flex;
    justify-content: space-between;
    padding: 0 2px;
}

/* Notional slider tick labels (1K … 10B). 0.3 measured 2.7:1 in dark mode —
   a pre-existing shortfall, not something the light-mode work introduced, but
   the same 10px-caption problem and the same one-line fix. 0.35 clears 3:1 in
   dark and, scaled, ~3.6:1 in light. */
.trade-form-card[b-qkiqfh3wuv]  .notional-slider-labels span {
    font-family: var(--cpd-font-mono);
    font-size: 10px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    user-select: none;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full .detail-suffix {
    color: var(--token-color, rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale))));
    opacity: 0.6;
    font-size: 0.8rem;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="type"] .token-control {
    flex: 1;
    display: flex;
    justify-content: flex-end;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="type"] .token-control select {
    background: var(--token-bg, rgba(var(--cpd-contrast-rgb), 0.05));
    border: 1px solid var(--token-border, rgba(var(--cpd-contrast-rgb), 0.12));
    border-radius: 6px;
    padding: 7px 24px 7px 12px;
    color: var(--cpd-contrast);
    font-family: var(--cpd-font-mono);
    font-size: 16px;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%236b7487' stroke-width='1.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 6px center;
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="position"] .property-detail-row {
    justify-content: flex-end;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="position"] .detail-select {
    min-width: 0;
    width: auto;
    max-width: 100%;
    padding: 6px 28px 6px 12px;
    border-radius: 6px;
    font-weight: 500;
    font-size: 16px;
}

.trade-form-card[b-qkiqfh3wuv]  select option {
    background-color: var(--cpd-surface-raised);
    color: var(--cpd-text);
}


.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="instrument"] {
    min-height: auto;
    padding-top: 12px;
    padding-bottom: 12px;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="instrument"] .child-flow {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
    justify-content: flex-end;
}

.trade-form-card[b-qkiqfh3wuv]  .json-token.mode-full [data-role="instrument"] .input-field > label {
    font-size: 9px;
    opacity: 0.5;
    color: var(--cpd-text-subtle);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}


.trade-form-card[b-qkiqfh3wuv]  .json-separator {
    display: none;
}

/* The "Trade" tile's collapsed preview: the colourised compact-grammar repr text (Phase 9 B7).
   Colours come from the global repr.css token classes; this wrapper only sets the typography. */
.trade-summary-repr[b-qkiqfh3wuv] {
    font-family: var(--cpd-font-mono);
    font-size: 0.8rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
}
/* /Components/Pages/Trades/Import.razor.rz.scp.css */

/* MudSimpleTable's dense mode still pads cells looser than the compact
   file-listing look this page needs. Keep the 4px padding Bootstrap's
   table-sm used to give us, and restore the table's bottom margin now
   that MudBlazor renders the table inside its own container div. */
.table-responsive[b-gi218g99rb]  .sandbox-files-table th,
.table-responsive[b-gi218g99rb]  .sandbox-files-table td {
    padding: 4px;
}

/* Bootstrap's .table gave th font-weight 700; MudSimpleTable uses 500. These are
   dense file listings where bold headers carry the scan, so hold the old weight. */
.table-responsive[b-gi218g99rb]  .sandbox-files-table th {
    font-weight: 700;
}

.table-responsive[b-gi218g99rb]  .sandbox-files-table {
    margin-bottom: var(--cpd-space-lg);
}

.import-kind-row[b-gi218g99rb] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--cpd-space-sm);
    margin-top: var(--cpd-space-md);
}

.import-kind-button[b-gi218g99rb] {
    border: 1px solid var(--cpd-border-strong);
    background: var(--cpd-surface-2);
    color: var(--cpd-text);
    border-radius: var(--cpd-radius-pill);
    padding: 0.45rem 0.9rem;
    transition: border-color var(--cpd-transition-fast), background var(--cpd-transition-fast), color var(--cpd-transition-fast);
}

.import-kind-button:hover:not(:disabled)[b-gi218g99rb] {
    border-color: var(--cpd-gold);
    background: var(--cpd-gold-tint);
}

.import-kind-button:disabled[b-gi218g99rb] {
    opacity: 0.5;
    cursor: not-allowed;
}

.import-kind-button-selected[b-gi218g99rb] {
    border-color: var(--cpd-gold);
    background: var(--cpd-gold-soft);
    color: var(--cpd-gold);
}

.extension-select[b-gi218g99rb] {
    max-width: 120px;
    background: var(--cpd-surface-2);
    color: var(--cpd-text);
    border-color: var(--cpd-border-strong);
}

.extension-select:focus[b-gi218g99rb] {
    background: var(--cpd-surface-3);
    color: var(--cpd-text);
}

.extension-select option[b-gi218g99rb] {
    background: rgba(6, 18, 33);
    color: var(--cpd-text);
}

.schema-collapsible[b-gi218g99rb] {
    margin-top: var(--cpd-space-sm);
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    background: var(--cpd-surface-2);
}

.schema-collapsible summary[b-gi218g99rb] {
    cursor: pointer;
    padding: 0.5rem 0.75rem;
    color: var(--cpd-text-muted);
    font-weight: 600;
    user-select: none;
}

.schema-collapsible summary:hover[b-gi218g99rb] {
    color: var(--cpd-text);
}

.schema-collapsible-body[b-gi218g99rb] {
    border-top: 1px solid var(--cpd-border-subtle);
    padding: 0.6rem 0.75rem;
}

.schema-collapsible-body a[b-gi218g99rb] {
    word-break: break-word;
}

.schema-example[b-gi218g99rb] {
    margin-top: var(--cpd-space-sm);
    margin-bottom: 0;
}

.python-script-hero[b-gi218g99rb] {
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.4);
    background: linear-gradient(180deg, rgba(var(--cpd-gold-rgb), 0.14) 0%, rgba(var(--cpd-gold-rgb), 0.03) 100%);
    box-shadow: 0 0 0 1px rgba(var(--cpd-gold-rgb), 0.15), 0 12px 26px rgba(0, 0, 0, 0.18);
}

.python-script-hero > label[b-gi218g99rb] {
    font-size: 1.06rem;
}

.btn-execute-hero[b-gi218g99rb] {
    padding: 0.65rem 1.2rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    border-color: rgba(var(--cpd-gold-rgb), 0.8);
    box-shadow: 0 0 0 1px rgba(var(--cpd-gold-rgb), 0.25);
}

.output-collapse-toggle[b-gi218g99rb] {
    margin-top: var(--cpd-space-sm);
    margin-bottom: var(--cpd-space-sm);
}

.output-tabs[b-gi218g99rb] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--cpd-space-sm);
    margin-bottom: var(--cpd-space-sm);
}

.output-tab-button[b-gi218g99rb] {
    border: 1px solid var(--cpd-border-strong);
    background: var(--cpd-surface-2);
    color: var(--cpd-text);
    border-radius: var(--cpd-radius-pill);
    padding: 0.4rem 0.8rem;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.output-tab-button-selected[b-gi218g99rb] {
    border-color: var(--cpd-gold);
    background: var(--cpd-gold-soft);
    color: var(--cpd-gold);
}

.output-tab-pill[b-gi218g99rb] {
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    font-size: 0.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.output-tab-pill-error[b-gi218g99rb] {
    background: rgba(var(--cpd-error-rgb), 0.9);
    color: #fff;
}

.output-summary[b-gi218g99rb] {
    border: 1px solid var(--cpd-border-strong);
    border-radius: var(--cpd-radius-md);
    background: var(--cpd-surface-2);
    padding: 0.65rem 0.8rem;
    margin-bottom: var(--cpd-space-sm);
}

.output-summary-title[b-gi218g99rb] {
    color: var(--cpd-text);
}

.output-summary-counts[b-gi218g99rb] {
    color: var(--cpd-text-muted);
    margin-top: 0.2rem;
}

.output-summary-messages[b-gi218g99rb] {
    margin: 0.45rem 0 0 1rem;
    color: var(--cpd-text);
}

.output-failed-list[b-gi218g99rb] {
    display: flex;
    flex-direction: column;
    gap: var(--cpd-space-sm);
}

.output-failed-item[b-gi218g99rb] {
    border: 1px solid rgba(var(--cpd-error-rgb), 0.35);
    border-radius: var(--cpd-radius-md);
    background: rgba(var(--cpd-error-rgb), 0.08);
    padding: 0.55rem 0.7rem;
}

.output-failed-item-header[b-gi218g99rb] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--cpd-space-sm);
}
/* /Components/Tiles/DetailPane.razor.rz.scp.css */
/* Heading / inner-container look lifted from XvaSection.razor.css. */
.detail-pane[b-2peu3nosu3] {
    margin-bottom: 24px;
}

.detail-pane-header[b-2peu3nosu3] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.detail-pane-title[b-2peu3nosu3] {
    font-size: 14px;
    font-weight: 600;
    color: rgba(var(--cpd-contrast-rgb), calc(0.8 * var(--cpd-text-alpha-scale)));
    margin: 0 0 4px;
}

.detail-pane-subtitle[b-2peu3nosu3] {
    font-size: 11px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    margin: 0;
}

.detail-pane-header-actions[b-2peu3nosu3] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.detail-pane-close[b-2peu3nosu3] {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.12);
    border-radius: var(--cpd-radius-lg);
    color: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
}

.detail-pane-close:hover[b-2peu3nosu3] {
    color: var(--cpd-contrast);
    border-color: rgba(var(--cpd-contrast-rgb), 0.25);
    background: rgba(var(--cpd-contrast-rgb), 0.04);
}

/* min-width:0 + overflow-x lets wide MudDataGrids scroll instead of stretching the column. */
.detail-pane-body[b-2peu3nosu3] {
    min-width: 0;
    overflow-x: auto;
    background: rgba(var(--cpd-contrast-rgb), 0.02);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.07);
    border-radius: var(--cpd-radius-lg);
    padding: var(--cpd-space-lg);
}
/* /Components/Tiles/MissingMarketData.razor.rz.scp.css */
.missing-data-msg[b-it22sywbzv] {
    font-size: 12px;
    color: var(--cpd-text-subtle);
}

.missing-data-title[b-it22sywbzv] {
    margin-bottom: 8px;
}

.missing-data-list[b-it22sywbzv] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.missing-data-list li[b-it22sywbzv] {
    display: flex;
    gap: 8px;
}

.missing-data-tag[b-it22sywbzv] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    white-space: nowrap;
}

.missing-data-items[b-it22sywbzv] {
    font-family: var(--cpd-font-mono);
    color: rgba(var(--cpd-contrast-rgb), calc(0.55 * var(--cpd-text-alpha-scale)));
}
/* /Components/Tiles/SummaryTile.razor.rz.scp.css */
/* Card base lifted from Capture's .results-card; hover + chevron from XvaTile.
   The gold left border is the active-tile indicator. */
.summary-tile[b-vzwbg2q27b] {
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    border: 1px solid rgba(var(--cpd-contrast-rgb), 0.07);
    border-left: 3px solid transparent;
    border-radius: var(--cpd-radius-lg);
    padding: var(--cpd-space-lg);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    user-select: none;
}

.summary-tile:hover[b-vzwbg2q27b] {
    background: rgba(var(--cpd-contrast-rgb), 0.06);
    border-color: rgba(var(--cpd-contrast-rgb), 0.14);
}

/* Declared after :hover so the gold left border persists while hovering. */
.summary-tile.active[b-vzwbg2q27b] {
    border-left-color: var(--cpd-gold);
}

.summary-tile-header[b-vzwbg2q27b] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.summary-tile-title[b-vzwbg2q27b] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--cpd-text-subtle);
}

.summary-tile-chevron[b-vzwbg2q27b] {
    font-size: 12px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.3 * var(--cpd-text-alpha-scale)));
    transition: transform 0.2s;
}

.summary-tile-chevron.active[b-vzwbg2q27b] {
    transform: rotate(180deg);
}

.summary-tile-body[b-vzwbg2q27b] {
    margin-top: 12px;
}

/* Optional header controls (e.g. XvaTile's simulation-settings gear), sitting between the title and
   the chevron. `margin-left: auto` keeps the title left and this cluster hard against the chevron
   even though the header is a space-between flex row. Carries no padding of its own, so a caller
   that renders nothing into the slot leaves the header pixel-identical. */
.summary-tile-actions[b-vzwbg2q27b] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: auto;
}
/* /Components/Trades/CashFlowGrid.razor.rz.scp.css */
.history-table-container[b-ft3v6cmhvz] {
    margin: 2rem 0;
}

.history-table-container[b-ft3v6cmhvz]  .pagination {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
    padding: 0.5rem 0;
}

.history-table-container[b-ft3v6cmhvz]  .page-item .page-link {
    background: transparent !important;
    border: 1px solid rgba(var(--cpd-gold-rgb), 0.4) !important;
    color: var(--cpd-gold) !important;
    font-weight: 500 !important;
    border-radius: var(--cpd-radius-lg) !important;
    padding: 0.4rem 0.8rem !important;
    transition: all 0.2s ease-in-out;
}

.history-table-container[b-ft3v6cmhvz]  .page-item .page-link:hover {
    background: var(--cpd-gold-ring) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-contrast) !important;
}

.history-table-container[b-ft3v6cmhvz]  .page-item.active .page-link {
    background: var(--cpd-gold) !important;
    border-color: var(--cpd-gold) !important;
    color: var(--cpd-dark) !important;
    font-weight: 600 !important;
}

.history-table-container[b-ft3v6cmhvz]  .page-item.disabled .page-link {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
}

.history-table-container[b-ft3v6cmhvz]  td,
.history-table-container[b-ft3v6cmhvz]  th {
    padding: 0.75rem 1rem !important;
    border: none !important;
}

.history-table-container[b-ft3v6cmhvz]  td:first-child,
.history-table-container[b-ft3v6cmhvz]  th:first-child {
    padding-left: 1.25rem !important;
}

.history-table-container[b-ft3v6cmhvz]  td:last-child,
.history-table-container[b-ft3v6cmhvz]  th:last-child {
    padding-right: 1.25rem !important;
}

.history-table-container[b-ft3v6cmhvz]  thead th {
    background: var(--cpd-dark) !important;
    color: var(--cpd-gold) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    font-size: 0.9rem !important;
    letter-spacing: 0.5px !important;
    border-bottom: 2px solid var(--cpd-gold-border) !important;
    padding-top: 0.85rem !important;
    padding-bottom: 0.85rem !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 10 !important;
}

.history-table-container[b-ft3v6cmhvz]  tbody td {
    color: var(--cpd-text) !important;
    background: transparent !important;
    border-bottom: 1px solid var(--cpd-border-subtle) !important;
    padding-top: 0.2rem !important;
    padding-bottom: 0.2rem !important;
}

.history-table-container[b-ft3v6cmhvz]  tbody tr:hover td {
    background: rgba(var(--cpd-gold-rgb), 0.05) !important;
}

.history-table-container[b-ft3v6cmhvz]  table {
    width: 100% !important;
    min-width: 900px !important;
}

.history-table-container[b-ft3v6cmhvz]  td:nth-child(3),
.history-table-container[b-ft3v6cmhvz]  th:nth-child(3),
.history-table-container[b-ft3v6cmhvz]  td:nth-child(4),
.history-table-container[b-ft3v6cmhvz]  th:nth-child(4) {
    white-space: nowrap !important;
}

.history-table-container[b-ft3v6cmhvz]  td:not(:last-child),
.history-table-container[b-ft3v6cmhvz]  th:not(:last-child) {
    border-right: 1px solid var(--cpd-border-subtle) !important;
    padding-right: 1rem !important;
}

.history-table-container[b-ft3v6cmhvz]  .action-buttons {
    display: flex !important;
    gap: 0.5rem !important;
}

.history-table-container[b-ft3v6cmhvz]  .table-sm > :not(caption) > * > * {
    padding: 0.75rem 1rem !important;
}

.history-table-container[b-ft3v6cmhvz]  .bb-grid-row > div,
.history-table-container[b-ft3v6cmhvz]  .grid-row > div {
    padding: 0.75rem 1rem !important;
}

.history-table-container[b-ft3v6cmhvz]  .bb-grid table td,
.history-table-container[b-ft3v6cmhvz]  .bb-grid table th {
    padding: 0.75rem 1rem !important;
}
/* /Components/Trades/PricingDetail.razor.rz.scp.css */
.pricing-rows[b-sbyzjgm4a0] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pricing-row[b-sbyzjgm4a0] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding: 4px 0;
}

.pricing-row-emphasis[b-sbyzjgm4a0] {
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
}

.pricing-label[b-sbyzjgm4a0] {
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--cpd-text-subtle);
}

.pricing-value[b-sbyzjgm4a0] {
    font-family: var(--cpd-font-mono);
    font-size: 1.1rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.val-positive[b-sbyzjgm4a0] { color: var(--token-rate); }
.val-negative[b-sbyzjgm4a0] { color: var(--token-position); }

.pricing-ccy-table[b-sbyzjgm4a0] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
    margin-top: 20px;
    font-size: 11px;
}

.pricing-ccy-table th[b-sbyzjgm4a0] {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    padding: 5px 8px;
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
    text-align: right;
}

.pricing-ccy-table th:first-child[b-sbyzjgm4a0] { text-align: left; }

.pricing-ccy-table td[b-sbyzjgm4a0] {
    padding: 4px 8px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.65 * var(--cpd-text-alpha-scale)));
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.03);
    font-family: var(--cpd-font-mono);
    text-align: right;
}

.pricing-ccy-table td.ccy-cell[b-sbyzjgm4a0] {
    text-align: left;
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
}

.pricing-ccy-table td.date-cell[b-sbyzjgm4a0] { white-space: nowrap; }
/* /Components/Trades/SensitivitySection.razor.rz.scp.css */
/* Sensitivities risk-ladder body: measure selector + per-curve tables + skipped-curve
   notes. DetailPane provides the surrounding heading and card. */

.val-positive[b-atw80945f3] { color: var(--token-rate); }
.val-negative[b-atw80945f3] { color: var(--token-position); }

/* .results-table / .results-empty are TradeAnalysisPanel.razor.css conventions; scoped
   CSS doesn't cross component boundaries, so the rules are duplicated here verbatim. */
.results-table[b-atw80945f3] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

.results-table th[b-atw80945f3] {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    padding: 5px 6px;
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
    text-align: left;
}

.results-table td[b-atw80945f3] {
    padding: 5px 6px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.65 * var(--cpd-text-alpha-scale)));
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.03);
    font-family: var(--cpd-font-mono);
    font-size: 11px;
}

.results-table .date-cell[b-atw80945f3] { white-space: nowrap; }

.results-empty[b-atw80945f3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 40px 16px;
    text-align: center;
}

.results-empty-icon[b-atw80945f3] {
    font-size: 28px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.15 * var(--cpd-text-alpha-scale)));
}

.results-empty-text[b-atw80945f3] {
    font-size: 13px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.3 * var(--cpd-text-alpha-scale)));
}

.sensitivity-measure-switcher[b-atw80945f3] {
    margin-bottom: var(--cpd-space-lg);
    width: fit-content;
}

/* .trade-mode-btn (trade-mode-switcher.css, global) is a fixed 28x28px square — sized for the
   single-glyph icon buttons it was built for (Capture's Full/Detailed/Compact/undo/redo cluster).
   This switcher reuses the same class for text labels ("Zero (exact)", "Par"), so the fixed square
   clipped "Zero (exact)" outright. Auto width/height + horizontal padding + no-wrap lets each
   button size to its own label at any viewport width, without touching the shared icon-button
   sizing other switchers still depend on. */
.sensitivity-measure-switcher .trade-mode-btn[b-atw80945f3] {
    width: auto;
    height: auto;
    min-height: 28px;
    padding: 5px 12px;
    font-size: 11px;
    white-space: nowrap;
}

.sensitivity-group[b-atw80945f3] {
    margin-bottom: 20px;
}

.sensitivity-group:last-child[b-atw80945f3] {
    margin-bottom: 0;
}

.sensitivity-group-title[b-atw80945f3] {
    font-size: 11px;
    font-weight: 600;
    color: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
    margin: 0 0 8px;
}

.sensitivity-table th.num[b-atw80945f3],
.sensitivity-table td.num[b-atw80945f3] {
    text-align: right;
}

.sensitivity-magnitude-value[b-atw80945f3] {
    font-size: 10px;
    color: var(--cpd-text-subtle);
    margin-right: 6px;
    vertical-align: middle;
}

.sensitivity-bar-track[b-atw80945f3] {
    display: inline-block;
    width: 80px;
    height: 6px;
    background: rgba(var(--cpd-contrast-rgb), 0.06);
    border-radius: 3px;
    overflow: hidden;
    vertical-align: middle;
}

.sensitivity-bar-fill[b-atw80945f3] {
    height: 100%;
    border-radius: 3px;
    background: currentcolor;
}

.sensitivity-skipped[b-atw80945f3] {
    margin-top: 20px;
    padding-top: 12px;
    border-top: 1px solid rgba(var(--cpd-contrast-rgb), 0.06);
}

.sensitivity-skipped-list[b-atw80945f3] {
    margin: 0;
    padding-left: 18px;
    font-size: 11px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.sensitivity-missing-msg[b-atw80945f3] {
    font-size: 12px;
    color: var(--cpd-text-subtle);
}
/* /Components/Trades/SensitivityTile.razor.rz.scp.css */
/* Card / header / chevron styling now lives in SummaryTile; this file styles only the
   Sensitivities tile body. Mirrors XvaTile.razor.css's stat-grid so sibling summary
   tiles share the same visual language (scoped CSS can't be shared across components). */

.val-positive[b-7evcjp4pbd] { color: var(--token-rate); }
.val-negative[b-7evcjp4pbd] { color: var(--token-position); }

.sensitivity-stat-grid[b-7evcjp4pbd] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.sensitivity-stat[b-7evcjp4pbd] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.sensitivity-stat-label[b-7evcjp4pbd] {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

.sensitivity-stat-value[b-7evcjp4pbd] {
    font-family: var(--cpd-font-mono);
    font-size: 15px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.sensitivity-missing-msg[b-7evcjp4pbd] {
    font-size: 12px;
    color: var(--cpd-text-subtle);
}
/* /Components/Trades/XvaExposureChart.razor.rz.scp.css */
/* Series colours for the EE/EPE/ENE exposure profile.
   Kept as channel triplets rather than hexes so the solid strokes and the
   0.4-alpha error bars/whiskers derive from one value each — the previous
   version spelled every colour twice (#a78bfa and rgba(167, 139, 250, …)) and
   the two had to be kept in step by hand.

   Both themes are written out because these are different colours, not a flip
   of one: the dark set is the pastel Tailwind-400 family, which lands at
   1.7:1–2.6:1 against the ivory light background (--cpd-dark in light mode) and
   reads as barely-there wash. The light set is the -700 family, 4.6:1–5.6:1.
   3:1 is the floor for graphical objects, so the dark set is not merely
   unattractive in light mode, it's below contrast minimum.

   These are local to this component on purpose — no other chart in the app
   uses this palette (checked), so there's nothing to share with. */
.xva-chart[b-80su8eslie] {
    --xva-ee-rgb: 167, 139, 250;
    --xva-epe-rgb: 52, 211, 153;
    --xva-ene-rgb: 248, 113, 113;

    border: 1px solid var(--cpd-gold-border);
    border-radius: var(--cpd-radius-lg);
    background: rgba(var(--cpd-contrast-rgb), 0.03);
    padding: 0.6rem;
    margin-top: 16px;
    margin-bottom: 16px;
}

:root[data-cpd-theme="light"] .xva-chart[b-80su8eslie] {
    --xva-ee-rgb: 109, 40, 217;
    --xva-epe-rgb: 4, 120, 87;
    --xva-ene-rgb: 185, 28, 28;
}

.xva-chart svg[b-80su8eslie] {
    display: block;
    width: 100%;
    height: auto;
}

.axis[b-80su8eslie] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.12);
    stroke-width: 1;
}

.zero-line[b-80su8eslie] {
    stroke: rgba(var(--cpd-contrast-rgb), 0.15);
    stroke-width: 1;
    stroke-dasharray: 4 4;
}

.series-line[b-80su8eslie] {
    fill: none;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.series-line.ee[b-80su8eslie] { stroke: rgb(var(--xva-ee-rgb)); }
.series-line.epe[b-80su8eslie] { stroke: rgb(var(--xva-epe-rgb)); }
.series-line.ene[b-80su8eslie] { stroke: rgb(var(--xva-ene-rgb)); }

.err-bar[b-80su8eslie] {
    stroke-width: 1;
}

.err-bar.ee[b-80su8eslie] { stroke: rgba(var(--xva-ee-rgb), 0.4); }
.err-bar.epe[b-80su8eslie] { stroke: rgba(var(--xva-epe-rgb), 0.4); }
.err-bar.ene[b-80su8eslie] { stroke: rgba(var(--xva-ene-rgb), 0.4); }

.err-whisker[b-80su8eslie] {
    stroke-width: 1;
}

.err-whisker.ee[b-80su8eslie] { stroke: rgba(var(--xva-ee-rgb), 0.4); }
.err-whisker.epe[b-80su8eslie] { stroke: rgba(var(--xva-epe-rgb), 0.4); }
.err-whisker.ene[b-80su8eslie] { stroke: rgba(var(--xva-ene-rgb), 0.4); }

.series-pt[b-80su8eslie] {
    fill: var(--cpd-dark, #0f1117);
    stroke-width: 1.5;
}

.series-pt.ee[b-80su8eslie] { stroke: rgb(var(--xva-ee-rgb)); }
.series-pt.epe[b-80su8eslie] { stroke: rgb(var(--xva-epe-rgb)); }
.series-pt.ene[b-80su8eslie] { stroke: rgb(var(--xva-ene-rgb)); }

/* Cum-flow markers (left limit V(tᵢ⁻)) are filled to distinguish them from the hollow ex-flow points. */
.series-pt.cum.ee[b-80su8eslie] { fill: rgb(var(--xva-ee-rgb)); }
.series-pt.cum.epe[b-80su8eslie] { fill: rgb(var(--xva-epe-rgb)); }
.series-pt.cum.ene[b-80su8eslie] { fill: rgb(var(--xva-ene-rgb)); }

.axis-label[b-80su8eslie] {
    fill: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    font-size: 0.65rem;
}

.legend-swatch[b-80su8eslie] {
    rx: 2;
}

.legend-swatch.ee[b-80su8eslie] { fill: rgb(var(--xva-ee-rgb)); }
.legend-swatch.epe[b-80su8eslie] { fill: rgb(var(--xva-epe-rgb)); }
.legend-swatch.ene[b-80su8eslie] { fill: rgb(var(--xva-ene-rgb)); }

.legend-label[b-80su8eslie] {
    fill: rgba(var(--cpd-contrast-rgb), calc(0.5 * var(--cpd-text-alpha-scale)));
    font-size: 0.65rem;
}
/* /Components/Trades/XvaSection.razor.rz.scp.css */
/* Chart + table only; DetailPane provides the surrounding heading and card. */
.val-negative[b-avsf6qhfdm] { color: var(--token-position); }

.xva-missing-msg[b-avsf6qhfdm] {
    font-size: 12px;
    color: var(--cpd-text-subtle);
}

.xva-profile-table[b-avsf6qhfdm] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
    margin-top: 20px;
    font-size: 11px;
}

.xva-profile-table th[b-avsf6qhfdm] {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
    padding: 5px 8px;
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.08);
    text-align: right;
}

.xva-profile-table th:first-child[b-avsf6qhfdm] { text-align: left; }

.xva-profile-table td[b-avsf6qhfdm] {
    padding: 4px 8px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.65 * var(--cpd-text-alpha-scale)));
    border-bottom: 1px solid rgba(var(--cpd-contrast-rgb), 0.03);
    font-family: var(--cpd-font-mono);
    text-align: right;
}

.xva-profile-table td:first-child[b-avsf6qhfdm] {
    text-align: left;
    font-family: inherit;
    color: rgba(var(--cpd-contrast-rgb), calc(0.45 * var(--cpd-text-alpha-scale)));
}
/* /Components/Trades/XvaSimSettingsDialog.razor.rz.scp.css */
/* "Simulation settings" — design handoff §5. The dialog shell and fields are MudBlazor; only the
   disclosed accrual-rule panel (a plain JsonComponent, not Mud) still needs its own styling. */

.sim-rule-panel[b-tqfij6yk8f] {
    /* Indented past the checkbox so the rule reads as that row's detail. */
    margin-left: 25px;
    padding: 12px;
    background: var(--cpd-surface-inset);
    border: 1px solid var(--cpd-border);
    border-radius: var(--cpd-radius-sm);
}

/* StoppingRuleCaption is injected as raw HTML via @((MarkupString)...), so it never gets this
   file's scope attribute — ::deep drops the scoping restriction to reach it anyway. */
[b-tqfij6yk8f] .sim-caption-value {
    font-family: var(--cpd-font-mono);
    font-weight: 600;
    color: var(--cpd-gold);
}
/* /Components/Trades/XvaTile.razor.rz.scp.css */
/* Card / header / chevron styling now lives in SummaryTile; this file styles only the
   XVA tile body (stat grid + parties). */

.val-positive[b-zgkw83p25b] { color: var(--token-rate); }
.val-negative[b-zgkw83p25b] { color: var(--token-position); }

.xva-stat-grid[b-zgkw83p25b] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.xva-stat[b-zgkw83p25b] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.xva-stat-label[b-zgkw83p25b] {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

.xva-stat-value[b-zgkw83p25b] {
    font-family: var(--cpd-font-mono);
    font-size: 15px;
    font-weight: 600;
}

/* The "± 8" Monte Carlo standard error under each figure. 0.3 measured 2.7:1 in
   dark mode; 0.35 is the lowest rung that clears 3:1 in both themes, and is the
   tier the other 10px captions use. */
.xva-stat-se[b-zgkw83p25b] {
    font-family: var(--cpd-font-mono);
    font-size: 10px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

.xva-missing-msg[b-zgkw83p25b] {
    font-size: 12px;
    color: var(--cpd-text-subtle);
}

.xva-tile-parties[b-zgkw83p25b] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid rgba(var(--cpd-contrast-rgb), 0.05);
}

.xva-party-label[b-zgkw83p25b] {
    font-size: 10px;
    font-family: var(--cpd-font-mono);
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

/* The "↔" between the two party names. It was 0.2, which measured 2.1:1 in light
   and 2.0:1 in dark — too faint in both, not just under the new light-mode
   scale. Raised to the same 0.35 rung as the labels either side of it and
   .xva-stat-se above: 0.3 still fell short of 3:1 in dark (2.7:1), and the
   hierarchy this was reaching for is already carried by the glyph being a bare
   arrow between two mono-cased names. */
.xva-party-sep[b-zgkw83p25b] {
    font-size: 10px;
    color: rgba(var(--cpd-contrast-rgb), calc(0.35 * var(--cpd-text-alpha-scale)));
}

/* Handoff §7 open question 1: this readout is a 95% interval (1.96σ). The simulation-settings dialog
   now states its accuracy target at a user-selected threshold defaulting to the same 95%, so the two
   agree by default — and both say which basis they are on, so a non-default threshold can't be
   silently mistaken for this one. */
.xva-stat-se-basis[b-zgkw83p25b] {
    font-size: 0.75em;
    letter-spacing: 0.03em;
    opacity: 0.6;
}
