/* /Components/Layout/ActionItemsBadge.razor.rz.scp.css */
/* FILE: ActionItemsBadge.razor.css
   PATH: Components/Layout/ActionItemsBadge.razor.css
   CREATED: 2026-08-06 12:44:00 EST
   PURPOSE: Scoped styles for the global action-items badge + dropdown in the top-row bar.
            Mirrors FontSizeWidget/NavControlsWidget sizing and the terminal --bbg-* palette. */

.aib-wrap[b-u3shbl165s] {
    position: relative;
    display: flex;
    align-items: center;
    margin-right: 12px;
}

.aib-badge[b-u3shbl165s] {
    display: flex;
    align-items: center;
    gap: 4px;
    background: transparent;
    border: 1px solid var(--bbg-amber);
    color: var(--bbg-amber);
    font-family: var(--bbg-font);
    font-size: 0.8rem;
    padding: 2px 8px;
    cursor: pointer;
    border-radius: 2px;
    line-height: 1.3;
}

.aib-badge:hover[b-u3shbl165s] {
    background: rgba(199, 125, 255, 0.12);
}

.aib-count[b-u3shbl165s] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.aib-dropdown[b-u3shbl165s] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    min-width: 220px;
    background: var(--bbg-bg-alt);
    border: 1px solid var(--bbg-border);
    border-radius: 2px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
    z-index: 20;
    display: flex;
    flex-direction: column;
}

.aib-row[b-u3shbl165s] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    color: var(--bbg-foreground);
    text-decoration: none;
    font-family: var(--bbg-font);
    font-size: 0.8rem;
    border-bottom: 1px solid var(--bbg-border);
}

.aib-row:last-child[b-u3shbl165s] {
    border-bottom: none;
}

.aib-row:hover[b-u3shbl165s] {
    background: rgba(0, 229, 255, 0.08);
    color: var(--bbg-cyan);
    text-decoration: none;
}

.aib-row-icon[b-u3shbl165s] {
    color: var(--bbg-cyan);
    width: 1.1em;
    text-align: center;
}

.aib-row-category[b-u3shbl165s] {
    flex: 1;
}

.aib-row-count[b-u3shbl165s] {
    font-variant-numeric: tabular-nums;
    color: var(--bbg-amber);
    font-weight: 600;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/*
FILE: MainLayout.razor.css
PATH: Components/Layout/MainLayout.razor.css
UPDATED: 2026-10-08 00:40:00 EST — .content: the 12px top gap is now a transparent border-top
         instead of padding-top. As padding it was part of the scrollport, and sticky
         `top: 0` headers resolve against the content box, so scrolled-away rows ghosted
         through a 12px band above every .terminal-sticky-header (~40 pages).
PRIOR:   2026-09-24 10:45:00 EST — .top-row z-index 1 -> 100 so the action-items badge dropdown
         is no longer covered by a terminal's sticky header (z-index 10); found live on the
         Symbol Sectors page, where only the first dropdown row was visible.
         (2026-05-23 00:00:00 EST)
PURPOSE: Page shell geometry — scoped to MainLayout.
         Follows the classic Blazor Server template structure:
           .page     → flex row container (sidebar + main)
           .sidebar  → fixed-width left panel
           main      → right-side content column
           .top-row  → sticky header strip (holds the clock)
           .content  → scrollable page body

         NAV STYLES ARE NOT HERE. They live in NavMenu.razor.css,
         scoped to the NavMenu component.
*/

/* ============================================================
   PAGE SHELL
   ============================================================ */

.page[b-ppvyo1zou4] {
    position: relative;
    display: flex;
    flex-direction: column; /* stacked on mobile */
}

main[b-ppvyo1zou4] {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* ============================================================
   SIDEBAR
   ============================================================ */

.sidebar[b-ppvyo1zou4] {
    background-color: #000;
    border-right: 1px solid var(--bbg-border);
}

/* ============================================================
   TOP ROW (clock / auth strip)
   ============================================================ */

.top-row[b-ppvyo1zou4] {
    background-color: #000;
    border-bottom: 1px solid var(--bbg-border);
    height: 3rem;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

    .top-row[b-ppvyo1zou4]  a,
    .top-row[b-ppvyo1zou4]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
        color: var(--bbg-cyan);
        font-family: var(--bbg-font);
        font-size: 0.8rem;
    }

        .top-row[b-ppvyo1zou4]  a:hover,
        .top-row[b-ppvyo1zou4]  .btn-link:hover {
            text-decoration: underline;
        }

/* ============================================================
   CONTENT AREA (scrollable page body)
   ============================================================ */

/* The 12px gap under the top bar MUST be a border, never padding-top. This element is the
   scroll container, and a sticky `top: 0` header (.terminal-sticky-header) resolves against
   the scroller's CONTENT box: with padding-top the header stuck 12px below the top bar and
   scrolled-away rows showed through that padding band above it. A border sits outside the
   overflow clip, so nothing can scroll into it; the transparent border still shows this
   element's own background. */
.content[b-ppvyo1zou4] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    padding-top: 0;
    border-top: 12px solid transparent;
    background-color: var(--bbg-bg);
    color: var(--bbg-cyan);
    font-family: var(--bbg-font);
    font-size: 0.85rem;
}

/* ============================================================
   BLAZOR ERROR UI
   ============================================================ */

#blazor-error-ui[b-ppvyo1zou4] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-ppvyo1zou4] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* ============================================================
   RESPONSIVE BREAKPOINT
   Below 641px: sidebar collapses (NavMenu handles its own toggle).
   Above 641px: sidebar is fixed-width column alongside main.
   ============================================================ */

@media (max-width: 640.98px) {
    .top-row[b-ppvyo1zou4] {
        justify-content: space-between;
    }

        .top-row[b-ppvyo1zou4]  a,
        .top-row[b-ppvyo1zou4]  .btn-link {
            margin-left: 0;
        }
}

@media (min-width: 641px) {
    .page[b-ppvyo1zou4] {
        flex-direction: row; /* sidebar left, main right */
        height: 100vh;       /* constrain to viewport so flex children can scroll */
        overflow: hidden;    /* prevent sidebar overflow bleeding out */
    }

    .sidebar[b-ppvyo1zou4] {
        width: 200px;
        height: 100vh;
        position: sticky;
        top: 0;
        flex-shrink: 0;
    }

    main[b-ppvyo1zou4] {
        min-height: 0;    /* allow flex column to shrink below intrinsic content size */
        overflow: hidden; /* delegate scrolling to article.content */
    }

    /* z-index must beat every terminal sticky header (.terminal-sticky-header = 10 in
       bloomberg-terminal.css): the sticky top row is its own stacking context, so the
       action-items dropdown's inner z-index can never outrank a sibling layer above the
       row's own level. At 1 the dropdown's lower rows hid behind the page header. Kept
       below the tooltip/popover layers (200/300) and the error bar (1000). */
    .top-row[b-ppvyo1zou4] {
        position: sticky;
        top: 0;
        z-index: 100;
    }

        .top-row.auth[b-ppvyo1zou4]  a:first-child {
            flex: 1;
            text-align: right;
            width: 0;
        }

    .top-row[b-ppvyo1zou4],
    article[b-ppvyo1zou4] {
        padding-left: 1.5rem !important;
        padding-right: 1.5rem !important;
    }
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/*
FILE: NavMenu.razor.css
PATH: Components/Layout/NavMenu.razor.css
PURPOSE: Scoped styles for the NavMenu sidebar component.
         All rules here are automatically scoped by Blazor to this component.
         Nothing here bleeds into pages or other components.
UPDATED: 2026-07-14 09:45:00 EST — the expanded section's header stays at full opacity (the hover
         look) as a persistent "selected" cue.
         (2026-07-14 09:30) section headers enlarged to 0.9rem (larger than the 0.8rem items)
         and section items indented (padding-left 30px) so headers read as distinct from their items.
         (2026-07-13 15:30) added collapsible <details>/<summary> section styling (marker hidden,
         chevron rotates on [open]). The .nav-schwab-* rules are now unused (the sidebar status badge
         was removed) but kept for reuse.
*/

/* ============================================================
   MOBILE: hamburger bar at top of sidebar
   ============================================================ */

.top-row[b-rjp0s1x73y] {
    background-color: #000;
    border-bottom: 1px solid var(--bbg-border);
    height: 3.5rem;
}

.navbar-toggler[b-rjp0s1x73y] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: var(--bbg-cyan);
    border: 1px solid var(--bbg-border);
    background: none;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.navbar-toggler-icon[b-rjp0s1x73y] {
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%2300e5ff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-size: 100%;
}

/* ============================================================
   BRAND TITLE
   ============================================================ */

.bbg-brand[b-rjp0s1x73y] {
    color: var(--bbg-lime) !important;
    font-family: var(--bbg-font);
    font-weight: bold;
    font-size: 0.9rem;
    letter-spacing: 0.08em;
    text-decoration: none;
}

    .bbg-brand:hover[b-rjp0s1x73y] {
        color: var(--bbg-lime) !important;
        text-decoration: none;
    }

/* ============================================================
   NAV SCROLL AREA
   ============================================================ */

.nav-scrollable[b-rjp0s1x73y] {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    padding: 8px 0;
}

/* ============================================================
   SECTION LABELS
   ============================================================ */

.nav-section-label[b-rjp0s1x73y] {
    color: var(--bbg-lime);
    font-family: var(--bbg-font);
    font-size: 0.9rem;          /* larger than the 0.8rem section items */
    letter-spacing: 0.1em;
    padding: 12px 16px 4px;
    opacity: 0.7;
}

/* ============================================================
   COLLAPSIBLE SECTIONS (<details>/<summary>, native, no JS)
   ============================================================ */

.nav-section[b-rjp0s1x73y] {
    margin: 0;
}

/* The <summary> carries .nav-section-label + .nav-section-toggle; hide the
   browser's default disclosure triangle so only our chevron shows. */
.nav-section > summary[b-rjp0s1x73y] {
    list-style: none;
}

    .nav-section > summary[b-rjp0s1x73y]::-webkit-details-marker {
        display: none;
    }

    .nav-section > summary[b-rjp0s1x73y]::marker {
        content: "";
    }

.nav-section-toggle[b-rjp0s1x73y] {
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    user-select: none;
}

    .nav-section-toggle:hover[b-rjp0s1x73y] {
        opacity: 1;
    }

    .nav-section-toggle i[b-rjp0s1x73y] {
        font-size: 0.6rem;
    }

/* Chevron points right when collapsed, rotates down when the section is open. */
.nav-chevron[b-rjp0s1x73y] {
    transition: transform 0.15s ease;
}

.nav-section[open] > summary .nav-chevron[b-rjp0s1x73y] {
    transform: rotate(90deg);
}

/* The expanded section's header stays at full emphasis (the same brightening as hover) so the
   currently-open section reads as selected — a persistent state cue, not just a hover affordance. */
.nav-section[open] > summary.nav-section-label[b-rjp0s1x73y] {
    opacity: 1;
}

/* Indent items inside a section so they read as children of the header above them,
   delineating each section's header from the items of the sections above/below. */
.nav-section[b-rjp0s1x73y]  .nav-link {
    padding-left: 30px;
}

.nav-section[b-rjp0s1x73y]  .nav-link.active {
    padding-left: 28px; /* compensate for the 2px active border */
}

/* ============================================================
   NAV LINKS
   Uses ::deep so active/hover apply to the <a> rendered by <NavLink>
   ============================================================ */

[b-rjp0s1x73y] .nav-link {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    color: var(--bbg-cyan);
    font-family: var(--bbg-font);
    font-size: 0.8rem;
    text-decoration: none;
    transition: background-color 120ms ease;
    border-radius: 0;
}

    [b-rjp0s1x73y] .nav-link:hover {
        background-color: var(--bbg-bg-alt);
        color: var(--bbg-cyan);
        text-decoration: none;
    }

    [b-rjp0s1x73y] .nav-link.active {
        background-color: var(--bbg-bg-alt);
        color: var(--bbg-amber);
        border-left: 2px solid var(--bbg-amber);
        padding-left: 14px; /* compensate for border */
    }

    [b-rjp0s1x73y] .nav-link i {
        font-size: 0.85rem;
        width: 14px;
        text-align: center;
    }

/* ============================================================
   LOGOUT BUTTON (styled as a nav-link)
   ============================================================ */

.logout-btn[b-rjp0s1x73y] {
    background: none;
    border: none;
    width: 100%;
    text-align: left;
    cursor: pointer;
}

/* ============================================================
   DESKTOP: sidebar is always visible, mobile collapses
   ============================================================ */

/* ============================================================
   SCHWAB CONNECTION STATUS (compact sidebar variant)
   ============================================================ */

.nav-schwab-section[b-rjp0s1x73y] {
    padding: 8px 0 4px;
    border-top: 1px solid var(--bbg-border);
    margin-top: 4px;
}

.nav-schwab-status[b-rjp0s1x73y] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 5px 16px;
    font-family: var(--bbg-font);
    font-size: 0.75rem;
    letter-spacing: 0.04em;
}

.nav-schwab-ok[b-rjp0s1x73y] {
    color: #00c853;
    opacity: 0.85;
}

.nav-schwab-off[b-rjp0s1x73y] {
    color: #dc3545;
    opacity: 0.7;
}

.nav-schwab-loading[b-rjp0s1x73y] {
    color: var(--bbg-foreground);
    opacity: 0.4;
}

@media (min-width: 641px) {
    .navbar-toggler[b-rjp0s1x73y] {
        display: none;
    }

    .collapse[b-rjp0s1x73y] {
        display: block;
    }

    .nav-scrollable[b-rjp0s1x73y] {
        /* on desktop fill the remaining height below the top-row */
        height: calc(100vh - 3.5rem);
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-if659sf3p2],
.components-reconnect-repeated-attempt-visible[b-if659sf3p2],
.components-reconnect-failed-visible[b-if659sf3p2],
.components-pause-visible[b-if659sf3p2],
.components-resume-failed-visible[b-if659sf3p2],
.components-rejoining-animation[b-if659sf3p2] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-retrying[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-failed[b-if659sf3p2],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-if659sf3p2] {
    display: block;
}


#components-reconnect-modal[b-if659sf3p2] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-if659sf3p2 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-if659sf3p2 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-if659sf3p2 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-if659sf3p2]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-if659sf3p2 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-if659sf3p2 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-if659sf3p2 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-if659sf3p2 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-if659sf3p2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-if659sf3p2] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-if659sf3p2] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-if659sf3p2] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-if659sf3p2] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-if659sf3p2] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-if659sf3p2] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-if659sf3p2 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-if659sf3p2] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-if659sf3p2 {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Terminals/Audit/AuditTerminal.razor.rz.scp.css */
/* FILE: AuditTerminal.razor.css
   PATH: Components/Terminals/Audit/AuditTerminal.razor.css
   CREATED: 2026-05-25 10:00:00 EST
   PURPOSE: Scoped styles for the AuditTerminal component. */

/* ── Monospace cells ─────────────────────────────────────────── */

.audit-mono[b-r854lgmn0c] {
    font-variant-numeric: tabular-nums;
    font-size: 0.78rem;
    white-space: nowrap;
}

/* ── Action badge ────────────────────────────────────────────── */

.audit-action-badge[b-r854lgmn0c] {
    font-size: 0.72rem;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.audit-action-create[b-r854lgmn0c]  { background: rgba(0,200,83,.15);  color: #00c853; border: 1px solid rgba(0,200,83,.3); }
.audit-action-update[b-r854lgmn0c]  { background: rgba(0,188,212,.12); color: #00bcd4; border: 1px solid rgba(0,188,212,.3); }
.audit-action-delete[b-r854lgmn0c]  { background: rgba(220,53,69,.15); color: #dc3545; border: 1px solid rgba(220,53,69,.3); }
.audit-action-neutral[b-r854lgmn0c] { background: rgba(255,255,255,.06); color: var(--bbg-foreground); border: 1px solid var(--bbg-border); }

/* ── Expanded JSON detail panel ──────────────────────────────── */

.audit-detail-panel[b-r854lgmn0c] {
    border: 1px solid var(--bbg-border);
    border-top: none;
    background: var(--bbg-row-bg);
    padding: 10px 14px;
    margin-bottom: 4px;
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.audit-detail-section[b-r854lgmn0c] {
    flex: 1;
    min-width: 240px;
}

.audit-detail-label[b-r854lgmn0c] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--bbg-cyan);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}

.audit-json[b-r854lgmn0c] {
    font-size: 0.75rem;
    color: var(--bbg-foreground);
    background: #0d0d0d;
    border: 1px solid var(--bbg-border);
    padding: 8px 10px;
    margin: 0;
    max-height: 240px;
    overflow-y: auto;
    white-space: pre-wrap;
    word-break: break-all;
}
/* /Components/Terminals/Campaigns/CampaignDetailTerminal.razor.rz.scp.css */
/* FILE: CampaignDetailTerminal.razor.css
   PATH: Components/Terminals/Campaigns/CampaignDetailTerminal.razor.css
   CREATED: 2026-09-24 16:30:00 EST
   PURPOSE: Header, message and empty-state spacing for the campaign detail page. The status colours
            (.campaign-status-*) and the meta strip (.campaign-rollup-strip) are the shared campaign CSS. */

.cd-back[b-408m2y4l6i] {
    font-size: 0.8rem;
    margin-bottom: 4px;
}

.cd-title[b-408m2y4l6i] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 4px;
}

.cd-message[b-408m2y4l6i] {
    margin: 4px 0 12px;
    opacity: 0.75;
}

.cd-empty[b-408m2y4l6i] {
    padding: 14px 4px;
    opacity: 0.7;
}
/* /Components/Terminals/Campaigns/CampaignSummaryPanel.razor.rz.scp.css */
/* FILE: CampaignSummaryPanel.razor.css
   PATH: Components/Terminals/Campaigns/CampaignSummaryPanel.razor.css
   CREATED: 2026-09-24 16:30:00 EST
   PURPOSE: Layout of the campaign detail summary: the live-status toolbar and the wrapping tile grid.
            Tile label / value typography comes from the shared .pf-tile-label / .pf-tile-val classes. */

.cd-toolbar[b-v8wyzzobxg] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0.25rem 0 0.5rem;
}

.cd-live-status[b-v8wyzzobxg] {
    font-size: 0.75rem;
    opacity: 0.7;
}

/* Amber: live values are unavailable, or some positions had no quote. Visible but non-blocking. */
.cd-live-warn[b-v8wyzzobxg] {
    color: var(--bbg-amber);
    opacity: 0.9;
}

/* Every tile owns its right and bottom border and the grid owns top and left, so the borders stay
   single-width however many tiles end up on a row. */
.cd-summary[b-v8wyzzobxg] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11.5rem, 1fr));
    border-top: 1px solid var(--bbg-border);
    border-left: 1px solid var(--bbg-border);
    background: var(--bbg-row-bg, #0c0c0c);
    margin-bottom: 0.5rem;
}

.cd-tile[b-v8wyzzobxg] {
    padding: 8px 14px;
    min-width: 0;
    border-right: 1px solid var(--bbg-border);
    border-bottom: 1px solid var(--bbg-border);
}

.cd-tile-note[b-v8wyzzobxg] {
    font-size: 0.7rem;
    line-height: 1.35;
    opacity: 0.65;
}

.cd-activity[b-v8wyzzobxg] {
    font-size: 0.75rem;
    opacity: 0.6;
    margin-bottom: 1rem;
}
/* /Components/Terminals/Campaigns/CampaignTradeDetail.razor.rz.scp.css */
/* FILE: CampaignTradeDetail.razor.css
   PATH: Components/Terminals/Campaigns/CampaignTradeDetail.razor.css
   CREATED: 2026-09-24 23:40:00 EST
   UPDATED: 2026-09-25 01:00:00 EST - the trade context is a 4-column grid like the shared trade panel's
            (idea bank and comment full width) instead of a wrapping flex row.
   PURPOSE: Layout of the read-only trade detail inside an expanded campaign-trade row: the header fact
            cards, the section labels, the strategy line, the legs table (scrolls sideways in a narrow
            window instead of squeezing its columns) and the plain-text trade context. The row / header /
            column geometry itself is the shared terminal CSS (.terminal-row, .terminal-col, ...). Nothing
            here is clickable: there is no hover-pointer, no link style and no control. */

.ctd-loading[b-3z8y1gr6kh],
.ctd-error[b-3z8y1gr6kh] {
    padding: 8px 0;
    opacity: 0.6;
    font-size: 0.82rem;
}

/* -- Header fact cards ---------------------------------------------------------------------------- */

.ctd-cards[b-3z8y1gr6kh] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--bbg-border);
    margin-bottom: 10px;
}

.ctd-card[b-3z8y1gr6kh] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 90px;
}

.ctd-card-label[b-3z8y1gr6kh],
.ctd-section-label[b-3z8y1gr6kh],
.ctd-label[b-3z8y1gr6kh] {
    font-size: 0.63rem;
    letter-spacing: 0.08em;
    color: var(--bbg-cyan);
    text-transform: uppercase;
}

.ctd-card-value[b-3z8y1gr6kh] {
    font-size: 0.85rem;
}

/* -- Sections ------------------------------------------------------------------------------------- */

.ctd-section[b-3z8y1gr6kh] {
    margin-bottom: 12px;
}

.ctd-section-label[b-3z8y1gr6kh] {
    display: block;
    margin-bottom: 6px;
}

.ctd-none[b-3z8y1gr6kh] {
    opacity: 0.6;
}

.ctd-strategy-info[b-3z8y1gr6kh] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ctd-strategy-name[b-3z8y1gr6kh] {
    font-size: 0.9rem;
    font-weight: 600;
}

.ctd-strategy-meta[b-3z8y1gr6kh] {
    font-size: 0.75rem;
    opacity: 0.65;
    border: 1px solid var(--bbg-border);
    padding: 1px 6px;
}

/* -- Legs table ----------------------------------------------------------------------------------- */

/* The columns need about 85rem (72.5rem fixed plus at least 12rem for the symbol); below that the table
   scrolls sideways inside the panel instead of truncating cells. */
.ctd-legs-scroll[b-3z8y1gr6kh] {
    overflow-x: auto;
}

.ctd-legs-grid[b-3z8y1gr6kh] {
    min-width: 85rem;
}

.ctd-legs-grid .terminal-header-row[b-3z8y1gr6kh],
.ctd-legs-grid .terminal-row[b-3z8y1gr6kh] {
    font-size: 0.8rem;
}

.ctd-leg-symbol[b-3z8y1gr6kh] {
    font-size: 0.75rem;
}

.ctd-neg[b-3z8y1gr6kh] {
    color: var(--bbg-red);
}

.ctd-total-row[b-3z8y1gr6kh] {
    font-weight: 600;
    border-top: 1px solid var(--bbg-border);
}

.ctd-total-label[b-3z8y1gr6kh] {
    color: var(--bbg-cyan);
}

.ctd-manual-badge[b-3z8y1gr6kh] {
    display: inline-block;
    margin-left: 5px;
    font-size: 0.65rem;
    letter-spacing: 0.05em;
    padding: 1px 5px;
    border: 1px solid var(--bbg-border);
    opacity: 0.55;
    vertical-align: middle;
}

/* -- Trade context: plain label / value text ------------------------------------------------------- */

.ctd-context[b-3z8y1gr6kh] {
    border-top: 1px solid var(--bbg-border);
    padding-top: 10px;
    margin-top: 12px;
}

/* Same grid as the shared trade panel's context section: four equal columns, 10px / 16px gaps. */
.ctd-context-grid[b-3z8y1gr6kh] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 16px;
    margin-top: 6px;
}

.ctd-field[b-3z8y1gr6kh] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

/* Idea bank and comment take the whole row. */
.ctd-field-full[b-3z8y1gr6kh] {
    grid-column: 1 / -1;
}

.ctd-value[b-3z8y1gr6kh] {
    font-size: 0.85rem;
    overflow-wrap: anywhere;
}

/* Free text keeps its line breaks and wraps instead of running off the panel. */
.ctd-value-long[b-3z8y1gr6kh] {
    white-space: pre-wrap;
}

/* A narrow window gets two columns instead of four squeezed ones. */
@media (max-width: 720px) {
    .ctd-context-grid[b-3z8y1gr6kh] {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Terminals/Campaigns/CampaignTradeGrid.razor.rz.scp.css */
/* FILE: CampaignTradeGrid.razor.css
   PATH: Components/Terminals/Campaigns/CampaignTradeGrid.razor.css
   CREATED: 2026-09-24 16:30:00 EST
   PURPOSE: Small additions to the shared terminal grid for the campaign trade list: clickable rows,
            wrapping column headers (several names are longer than their column) and an ellipsis for
            long text cells. The row / header / column geometry itself is the shared terminal CSS. */

.cd-row[b-udaj7iakmo] {
    cursor: pointer;
}

/* The shared header is nowrap; here a long name ("Max loss as opened") wraps onto a second line
   instead of being cut off. */
.cd-head .terminal-col-header[b-udaj7iakmo] {
    white-space: normal;
    line-height: 1.15;
}

/* .terminal-col is a flex container, where text-overflow has no effect on bare text: the text sits in
   a span, which is a flex item and can therefore show the ellipsis. */
.cd-ellipsis[b-udaj7iakmo] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cd-empty[b-udaj7iakmo] {
    padding: 8px 12px;
    opacity: 0.6;
}
/* /Components/Terminals/Import/ImportReviewPanel.razor.rz.scp.css */
/* FILE: ImportReviewPanel.razor.css
   PATH: Components/Terminals/Import/ImportReviewPanel.razor.css
   CREATED: 2026-06-13
   UPDATED: 2026-07-13 14:30:00 EST — moved the shared wizard chrome (.wizard-*) to the global
            bloomberg-terminal.css; only review/summary-specific styles remain here.
   PURPOSE: Scoped styles for the shared import review + completion panel (terminal-* and import-*
            classes are global in bloomberg-terminal.css). */

/* ── Inputs ─────────────────────────────────────────────────────────────── */

.terminal-input[b-s1g5i76sd1] {
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    padding: 3px 6px;
    font-family: inherit;
    font-size: 0.8rem;
    width: 100%;
}

    .terminal-input:focus[b-s1g5i76sd1] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

/* ── Strategy group rows ────────────────────────────────────────────────── */

.group-row-rejected .terminal-col:not(:last-child)[b-s1g5i76sd1] {
    opacity: 0.35;
}

/* ── Completion summary grid ────────────────────────────────────────────── */

.summary-grid[b-s1g5i76sd1] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 10px;
    margin-top: 1rem;
}

.summary-stat[b-s1g5i76sd1] {
    border: 1px solid var(--bbg-border);
    padding: 14px 10px;
    text-align: center;
}

.summary-stat-value[b-s1g5i76sd1] {
    display: block;
    font-size: 1.6rem;
    color: var(--bbg-cyan);
    line-height: 1.1;
}

.summary-stat-label[b-s1g5i76sd1] {
    display: block;
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.55;
    margin-top: 4px;
}

.summary-stat-warning .summary-stat-value[b-s1g5i76sd1] {
    color: var(--bbg-amber);
}

.summary-stat-warning[b-s1g5i76sd1] {
    border-color: var(--bbg-amber);
}
/* /Components/Terminals/Import/ImportWizardTerminal.razor.rz.scp.css */
/* FILE: ImportWizardTerminal.razor.css
   PATH: Components/Terminals/Import/ImportWizardTerminal.razor.css
   UPDATED: 2026-07-13 14:30:00 EST — moved the shared wizard chrome (.wizard-* + .form-group) to
            the global bloomberg-terminal.css; only CSV-wizard-specific styles remain here.
   PURPOSE: Scoped styles for the CSV import wizard terminal. */

/* ── Form inputs ────────────────────────────────────────────────────────── */

.terminal-input[b-vjk04ckc7y],
.terminal-select[b-vjk04ckc7y] {
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    padding: 5px 9px;
    font-family: inherit;
    font-size: 0.84rem;
    width: 100%;
}

    .terminal-input:focus[b-vjk04ckc7y],
    .terminal-select:focus[b-vjk04ckc7y] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

    .terminal-select option[b-vjk04ckc7y] {
        background: #0a0a0a;
    }

.terminal-input[type="text"][b-vjk04ckc7y] {
    padding: 3px 6px;
    font-size: 0.8rem;
}

/* ── File info ──────────────────────────────────────────────────────────── */

.file-info[b-vjk04ckc7y] {
    margin-top: 6px;
    font-size: 0.8rem;
    color: var(--bbg-cyan);
}

/* ── Strategy group rows ────────────────────────────────────────────────── */

.group-row-rejected .terminal-col:not(:last-child)[b-vjk04ckc7y] {
    opacity: 0.35;
}

/* ── Completion summary grid ────────────────────────────────────────────── */

.summary-grid[b-vjk04ckc7y] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 10px;
    margin-top: 1rem;
}

.summary-stat[b-vjk04ckc7y] {
    border: 1px solid var(--bbg-border);
    padding: 14px 10px;
    text-align: center;
}

.summary-stat-value[b-vjk04ckc7y] {
    display: block;
    font-size: 1.6rem;
    color: var(--bbg-cyan);
    line-height: 1.1;
}

.summary-stat-label[b-vjk04ckc7y] {
    display: block;
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.55;
    margin-top: 4px;
}

.summary-stat-warning .summary-stat-value[b-vjk04ckc7y] {
    color: var(--bbg-amber);
}

.summary-stat-warning[b-vjk04ckc7y] {
    border-color: var(--bbg-amber);
}

/* ── Overlap warning panel ──────────────────────────────────────────────── */

.overlap-panel[b-vjk04ckc7y] {
    border: 2px solid #dc3545;
    background: rgba(220, 53, 69, 0.05);
}

.overlap-banner[b-vjk04ckc7y] {
    color: #dc3545;
    font-size: 0.88rem;
    font-weight: bold;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 0.4rem;
    animation: overlap-pulse-b-vjk04ckc7y 1.4s ease-in-out 3;
}

.overlap-banner-count[b-vjk04ckc7y] {
    font-size: 2.4rem;
    line-height: 1;
    font-weight: bold;
    color: #dc3545;
    margin-bottom: 0.2rem;
}

.overlap-banner-desc[b-vjk04ckc7y] {
    font-size: 0.8rem;
    opacity: 0.7;
    margin-bottom: 1rem;
}

.overlap-sample-label[b-vjk04ckc7y] {
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--bbg-cyan);
    margin-bottom: 6px;
}

.overlap-ref[b-vjk04ckc7y] {
    font-size: 0.76rem;
    opacity: 0.65;
}

.overlap-prompt[b-vjk04ckc7y] {
    font-size: 0.82rem;
    opacity: 0.75;
}

@keyframes overlap-pulse-b-vjk04ckc7y {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.4; }
}
/* /Components/Terminals/Ledger/AccountLedgerTerminal.razor.rz.scp.css */
/* FILE: AccountLedgerTerminal.razor.css
   PATH: Components/Terminals/Ledger/AccountLedgerTerminal.razor.css
   UPDATED: 2026-07-03 04:43:29 EST
   PURPOSE: Scoped styles for the Account Ledger terminal including filter bar,
            summary panel, date-sort header, and live-quote mark-to-market panel. */

/* -- Account bar ---------------------------------------------------------- */

.ledger-account-bar[b-kmj2zpz077] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 1rem;
}

/* -- Inputs --------------------------------------------------------------- */

.ledger-select[b-kmj2zpz077] {
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    padding: 5px 9px;
    font-family: inherit;
    font-size: 0.84rem;
    min-width: 320px;
}

    .ledger-select:focus[b-kmj2zpz077] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

    .ledger-select option[b-kmj2zpz077] {
        background: #0a0a0a;
    }

.ledger-select-sm[b-kmj2zpz077] {
    padding: 3px 6px;
    font-size: 0.8rem;
    min-width: unset;
    width: 100%;
}

.ledger-input[b-kmj2zpz077] {
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    padding: 3px 7px;
    font-family: inherit;
    font-size: 0.8rem;
    width: 100%;
}

    .ledger-input:focus[b-kmj2zpz077] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

.ledger-amount-input[b-kmj2zpz077] {
    text-align: right;
}

/* -- Amount column -------------------------------------------------------- */

.ledger-amount-col[b-kmj2zpz077] {
    justify-content: flex-end;   /* .terminal-col is display:flex — text-align alone is inert */
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ledger-amount-positive[b-kmj2zpz077] {
    color: var(--bbg-cyan);
}

.ledger-amount-negative[b-kmj2zpz077] {
    color: #dc3545;
}

/* -- Source badge ---------------------------------------------------------- */

.ledger-source[b-kmj2zpz077] {
    font-size: 0.72rem;
    letter-spacing: 0.05em;
    opacity: 0.6;
    text-transform: uppercase;
}

/* Locked (non-editable) field shown in place of an input on the opening-balance
   row: the type label and the pinned-first date. */
.ledger-locked-field[b-kmj2zpz077] {
    font-style: italic;
    opacity: 0.7;
}

/* -- Total row ------------------------------------------------------------ */

.ledger-total-row[b-kmj2zpz077] {
    border-top: 1px solid var(--bbg-border);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
}

/* -- Empty state ---------------------------------------------------------- */

.ledger-empty[b-kmj2zpz077] {
    opacity: 0.5;
    font-size: 0.84rem;
    margin: 1rem 0;
}

.ledger-empty-row[b-kmj2zpz077] {
    opacity: 0.5;
    font-size: 0.82rem;
}

/* -- Filter bar ----------------------------------------------------------- */

.ledger-filter-bar[b-kmj2zpz077] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.ledger-filter-field[b-kmj2zpz077] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

    .ledger-filter-field label[b-kmj2zpz077] {
        font-size: 0.68rem;
        color: var(--bbg-cyan);
        letter-spacing: 0.04em;
        text-transform: uppercase;
        opacity: 0.7;
    }

    .ledger-filter-field .ledger-input[b-kmj2zpz077],
    .ledger-filter-field .ledger-select[b-kmj2zpz077] {
        min-width: unset;
        width: 140px;
    }

.ledger-filter-clear[b-kmj2zpz077] {
    margin-bottom: 1px;
}

/* -- Summary panel -------------------------------------------------------- */

.ledger-summary-panel[b-kmj2zpz077] {
    display: flex;
    gap: 24px;
    padding: 10px 14px;
    margin-bottom: 1rem;
    border: 1px solid var(--bbg-border);
    background: var(--bbg-row-bg, #0c0c0c);
    font-size: 0.8rem;
}

.ledger-summary-section[b-kmj2zpz077] {
    flex: 1;
    min-width: 180px;
}

.ledger-summary-divider[b-kmj2zpz077] {
    width: 1px;
    background: var(--bbg-border);
}

.ledger-summary-title[b-kmj2zpz077] {
    font-size: 0.7rem;
    color: var(--bbg-cyan);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    margin-bottom: 6px;
    font-weight: bold;
}

.ledger-summary-row[b-kmj2zpz077] {
    display: flex;
    justify-content: space-between;
    padding: 1px 0;
    font-variant-numeric: tabular-nums;
}

.ledger-summary-highlight[b-kmj2zpz077] {
    border-top: 1px solid var(--bbg-border);
    margin-top: 4px;
    padding-top: 4px;
    font-weight: bold;
}

.ledger-summary-muted[b-kmj2zpz077] {
    opacity: 0.5;
    font-size: 0.76rem;
}

/* Emphasis (bold) without the divider line that .ledger-summary-highlight adds. */
.ledger-summary-bold[b-kmj2zpz077] {
    font-weight: bold;
}

/* Underline a section (or sub-section) title. */
.ledger-title-ul[b-kmj2zpz077] {
    border-bottom: 1px solid var(--bbg-border);
    padding-bottom: 3px;
}

/* Border-top separator on a summary row (e.g. Open Pos. P&L). */
.ledger-summary-topline[b-kmj2zpz077] {
    border-top: 1px solid var(--bbg-border);
    margin-top: 4px;
    padding-top: 4px;
}

/* -- Recalc message ------------------------------------------------------- */

.ledger-recalc-msg[b-kmj2zpz077] {
    font-size: 0.78rem;
    color: var(--bbg-cyan);
    margin-bottom: 0.75rem;
    opacity: 0.85;
}

/* Clickable date column header for sorting */
.ledger-sortable[b-kmj2zpz077] {
    cursor: pointer;
    user-select: none;
}

.ledger-sortable:hover[b-kmj2zpz077] {
    color: var(--bbg-cyan);
}

.ledger-sort-arrow[b-kmj2zpz077] {
    font-size: 0.7rem;
    opacity: 0.7;
}

/* Mark-to-market live quotes panel */
.ledger-quote-actions[b-kmj2zpz077] {
    margin-top: 0.4rem;
}

.ledger-quote-asof[b-kmj2zpz077] {
    font-size: 0.7rem;
    opacity: 0.6;
    margin-top: 0.25rem;
}

.ledger-quote-error[b-kmj2zpz077] {
    border-left: 3px solid #c0392b;
    color: #e67e22;
}

.ledger-quote-panel[b-kmj2zpz077] {
    margin: 0.5rem 0 1rem;
    border: 1px solid var(--bbg-border);
}

.ledger-quote-grid[b-kmj2zpz077] {
    grid-template-columns: 1fr 6rem 8rem 6rem 6rem 6rem 6rem 8rem 8rem;
}
/* /Components/Terminals/SpreadFinder/CandidateGrid.razor.rz.scp.css */
/*
FILE: CandidateGrid.razor.css
PATH: Components/Terminals/SpreadFinder/CandidateGrid.razor.css
CREATED: 2026-09-25 15:09:41 EST
UPDATED: 2026-10-11 20:00:00 EST - .sf-key-spot td also gets the terminal's hover green (#1a2a1a), so the spot row of the key-levels table stands out.
UPDATED: 2026-10-10 11:00:00 EST - the "Key levels at expiration" section: .sf-zone-profit / .sf-zone-loss (zone and best / worst case lines), .sf-key-table, .sf-key-spot,
         .sf-pnl-profit / .sf-pnl-loss (table P&L cells) and .sf-note (the muted estimate note). Plain colours only, so the copy-as-image clone draws them as they look.
UPDATED: 2026-10-09 16:00:00 EST - .sf-copy-btn and its icon states (the copy-trade-as-image button in the expanded panel's top right corner).
PURPOSE: Scoped styling for CandidateGrid.razor: the flag / Pareto badges (amber for a warning, red for
         unlimited risk, muted for information), the two-line cost cell, the expanded legs table and its
         small section headings. Everything is themed with the existing --bbg-* custom properties so it
         follows whichever theme is active; the grid itself reuses the shared terminal-* classes.
*/

.sf-ellipsis[b-0m59xc4n7j] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.sf-row[b-0m59xc4n7j] {
    cursor: pointer;
}

.sf-net[b-0m59xc4n7j] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
    min-width: 0;
}

.sf-net-main[b-0m59xc4n7j] {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.sf-sub[b-0m59xc4n7j] {
    color: var(--bbg-muted);
    font-size: 0.72rem;
    font-weight: 400;
    white-space: nowrap;
}

.sf-flags[b-0m59xc4n7j] {
    flex-wrap: wrap;
    gap: 3px;
    white-space: normal;
    overflow: visible;
}

.sf-badge[b-0m59xc4n7j] {
    display: inline-block;
    padding: 0 5px;
    font-size: 0.68rem;
    line-height: 1.5;
    border: 1px solid var(--bbg-border);
    border-radius: 2px;
    white-space: nowrap;
}

.sf-flag-amber[b-0m59xc4n7j] {
    color: var(--bbg-amber);
    border-color: var(--bbg-amber);
}

.sf-flag-red[b-0m59xc4n7j] {
    color: var(--bbg-red);
    border-color: var(--bbg-red);
    font-weight: 600;
}

.sf-flag-info[b-0m59xc4n7j] {
    color: var(--bbg-muted);
    border-color: var(--bbg-muted);
}

.sf-pareto[b-0m59xc4n7j] {
    color: var(--bbg-cyan);
    border-color: var(--bbg-cyan);
}

/* Copy-trade button: top right corner of the expanded panel (the panel is position:relative). The icon
   states are driven by data-state, which spread-finder-snapshot.js sets (busy / done / fail) and Blazor
   never touches. The solid background hides the "Legs" underline running behind the button. */
.sf-copy-btn[b-0m59xc4n7j] {
    position: absolute;
    top: 5px;
    right: 6px;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    padding: 2px 7px;
    line-height: 1;
    background-color: var(--bbg-bg);
}

.sf-copy-btn svg[b-0m59xc4n7j] {
    width: 1.1rem;
    height: 1.1rem;
    display: block;
}

.sf-copy-btn .sf-icon-done[b-0m59xc4n7j],
.sf-copy-btn .sf-icon-fail[b-0m59xc4n7j] {
    display: none;
}

.sf-copy-btn[data-state="busy"][b-0m59xc4n7j] {
    opacity: 0.6;
    pointer-events: none;
}

.sf-copy-btn[data-state="done"][b-0m59xc4n7j] {
    color: var(--bbg-green, #2ecc71);
    border-color: var(--bbg-green, #2ecc71);
}

.sf-copy-btn[data-state="fail"][b-0m59xc4n7j] {
    color: var(--bbg-red);
    border-color: var(--bbg-red);
}

.sf-copy-btn[data-state="done"] .sf-icon-copy[b-0m59xc4n7j],
.sf-copy-btn[data-state="fail"] .sf-icon-copy[b-0m59xc4n7j] {
    display: none;
}

.sf-copy-btn[data-state="done"] .sf-icon-done[b-0m59xc4n7j],
.sf-copy-btn[data-state="fail"] .sf-icon-fail[b-0m59xc4n7j] {
    display: block;
}

.sf-detail-title[b-0m59xc4n7j] {
    color: var(--bbg-amber);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--bbg-border);
    padding-bottom: 2px;
    margin: 10px 0 4px;
}

.sf-detail-title:first-child[b-0m59xc4n7j] {
    margin-top: 0;
}

.sf-legs-wrap[b-0m59xc4n7j] {
    overflow-x: auto;
}

.sf-legs[b-0m59xc4n7j] {
    border-collapse: collapse;
    font-size: 0.8rem;
}

.sf-legs th[b-0m59xc4n7j] {
    color: var(--bbg-cyan);
    font-weight: 600;
    text-align: left;
    padding: 2px 14px 2px 0;
    border-bottom: 1px solid var(--bbg-border);
    white-space: nowrap;
}

.sf-legs td[b-0m59xc4n7j] {
    padding: 2px 14px 2px 0;
    border-bottom: 1px solid var(--bbg-border);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.sf-legs .sf-num[b-0m59xc4n7j] {
    text-align: right;
}

.sf-buy[b-0m59xc4n7j] {
    color: var(--bbg-cyan);
}

.sf-sell[b-0m59xc4n7j] {
    color: var(--bbg-amber);
}

.sf-line[b-0m59xc4n7j] {
    font-size: 0.8rem;
    margin: 2px 0;
}

/* Key levels at expiration: profit sentences and the best case in the accent colour, loss sentences and the worst case in red. */
.sf-zone-profit[b-0m59xc4n7j] {
    color: var(--bbg-cyan);
}

.sf-zone-loss[b-0m59xc4n7j] {
    color: var(--bbg-red);
}

.sf-key-table[b-0m59xc4n7j] {
    margin-top: 4px;
}

/* The spot row carries the same faded green the terminal rows take on hover (.terminal-row:hover), plus bold text. */
.sf-key-spot td[b-0m59xc4n7j] {
    font-weight: 600;
    background-color: #1a2a1a;
}

.sf-pnl-profit[b-0m59xc4n7j] {
    color: var(--bbg-cyan);
}

.sf-pnl-loss[b-0m59xc4n7j] {
    color: var(--bbg-red);
}

.sf-note[b-0m59xc4n7j] {
    color: var(--bbg-muted);
    font-size: 0.75rem;
    margin-top: 4px;
}

.sf-flag-line[b-0m59xc4n7j] {
    font-size: 0.8rem;
    margin: 2px 0;
    display: flex;
    gap: 6px;
    align-items: baseline;
}
/* /Components/Terminals/Trades/CompositeTradeDialog.razor.rz.scp.css */
/*
FILE: CompositeTradeDialog.razor.css
PATH: Components/Terminals/Trades/CompositeTradeDialog.razor.css
CREATED: 2026-10-11 18:00:00 EST
UPDATED: 2026-10-11 20:00:00 EST - the spot row of the "At expiration" table (.ct-key-spot) gets the terminal's
         hover green (#1a2a1a) so it shows at a glance where the trade is now; the summary rows under the legs
         table (.ct-foot*) were added earlier the same day.
UPDATED: 2026-10-11 23:30:00 EST - the "By trade" blocks (.ct-trade-block / .ct-trade-head / .ct-trade-name).
UPDATED: 2026-10-11 22:30:00 EST - the toolbar (.ct-toolbar: "As of" selector, capture note, "Capture now").
PURPOSE: Scoped styling of the combined-trade dialog. Bootstrap's CSS (loaded app-wide) supplies the modal
         frame; here its CSS variables are mapped to the --bbg-* terminal theme so the dialog is dark like
         the rest of the app, and the body reuses the look of an expanded Spread Finder result (the same
         look as CandidateGrid.razor.css, under ct-* names). The body rules do NOT depend on an ancestor
         selector: the copy-as-image clone is laid out outside the dialog and must look the same.
*/

.ct-modal[b-5fwvwis44e] {
    --bs-modal-bg: var(--bbg-bg);
    --bs-modal-color: var(--bbg-foreground);
    --bs-modal-border-color: var(--bbg-cyan);
    --bs-modal-border-width: 2px;
    --bs-modal-border-radius: 0;
    --bs-modal-inner-border-radius: 0;
    --bs-modal-header-border-color: var(--bbg-border);
    --bs-modal-width: 1140px;
}

.ct-header[b-5fwvwis44e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.ct-title[b-5fwvwis44e] {
    display: flex;
    align-items: baseline;
    gap: 16px;
    flex-wrap: wrap;
    min-width: 0;
}

.ct-ticker[b-5fwvwis44e] {
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--bbg-cyan);
}

.ct-subtitle[b-5fwvwis44e] {
    font-size: 0.85rem;
    color: var(--bbg-muted);
}

/* Copy button (top right, beside the close button). Icon states are driven by data-state, which
   spread-finder-snapshot.js sets (busy / done / fail) and Blazor never touches. */
.ct-actions[b-5fwvwis44e] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ct-copy-btn[b-5fwvwis44e] {
    display: inline-flex;
    align-items: center;
    padding: 2px 7px;
    line-height: 1;
}

.ct-copy-btn svg[b-5fwvwis44e] {
    width: 1.1rem;
    height: 1.1rem;
    display: block;
}

.ct-copy-btn .sf-icon-done[b-5fwvwis44e],
.ct-copy-btn .sf-icon-fail[b-5fwvwis44e] {
    display: none;
}

.ct-copy-btn[data-state="busy"][b-5fwvwis44e] {
    opacity: 0.6;
    pointer-events: none;
}

.ct-copy-btn[data-state="done"][b-5fwvwis44e] {
    color: var(--bbg-green, #2ecc71);
    border-color: var(--bbg-green, #2ecc71);
}

.ct-copy-btn[data-state="fail"][b-5fwvwis44e] {
    color: var(--bbg-red);
    border-color: var(--bbg-red);
}

.ct-copy-btn[data-state="done"] .sf-icon-copy[b-5fwvwis44e],
.ct-copy-btn[data-state="fail"] .sf-icon-copy[b-5fwvwis44e] {
    display: none;
}

.ct-copy-btn[data-state="done"] .sf-icon-done[b-5fwvwis44e],
.ct-copy-btn[data-state="fail"] .sf-icon-fail[b-5fwvwis44e] {
    display: block;
}

.ct-close[b-5fwvwis44e] {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* ---- toolbar: "As of" selector and "Capture now" (outside the copied body) ---- */

.ct-toolbar[b-5fwvwis44e] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 10px;
    padding: 6px 16px;
    border-bottom: 1px solid var(--bbg-border);
    background-color: var(--bbg-bg);
}

.ct-tool-label[b-5fwvwis44e] {
    font-size: 0.75rem;
    color: var(--bbg-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.ct-asof[b-5fwvwis44e] {
    width: auto;
    min-width: 14rem;
    max-width: 24rem;
}

.ct-note-input[b-5fwvwis44e] {
    width: auto;
    flex: 1 1 14rem;
    max-width: 26rem;
}

.ct-capture-msg[b-5fwvwis44e] {
    font-size: 0.75rem;
    color: var(--bbg-muted);
}

/* ---- "By trade": one chart per combined trade, each with its own copy button ---- */

.ct-trade-block[b-5fwvwis44e] {
    margin-top: 12px;
}

.ct-trade-head[b-5fwvwis44e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    border-bottom: 1px solid var(--bbg-border);
    padding-bottom: 2px;
    margin-bottom: 4px;
}

.ct-trade-name[b-5fwvwis44e] {
    font-size: 0.8rem;
    color: var(--bbg-foreground);
}

.ct-trade-name strong[b-5fwvwis44e] {
    color: var(--bbg-cyan);
}

/* ---- body: the look of an expanded Spread Finder result ---- */

.ct-body[b-5fwvwis44e] {
    background-color: var(--bbg-bg);
    color: var(--bbg-foreground);
}

.ct-sources[b-5fwvwis44e] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
    font-size: 0.8rem;
    margin-bottom: 4px;
}

.ct-source strong[b-5fwvwis44e] {
    color: var(--bbg-cyan);
}

.ct-section-title[b-5fwvwis44e] {
    color: var(--bbg-amber);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--bbg-border);
    padding-bottom: 2px;
    margin: 12px 0 4px;
}

.ct-legs-wrap[b-5fwvwis44e] {
    overflow-x: auto;
}

.ct-legs[b-5fwvwis44e] {
    border-collapse: collapse;
    font-size: 0.8rem;
}

.ct-legs th[b-5fwvwis44e] {
    color: var(--bbg-cyan);
    font-weight: 600;
    text-align: left;
    padding: 2px 14px 2px 0;
    border-bottom: 1px solid var(--bbg-border);
    white-space: nowrap;
}

.ct-legs td[b-5fwvwis44e] {
    padding: 2px 14px 2px 0;
    border-bottom: 1px solid var(--bbg-border);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.ct-legs .ct-num[b-5fwvwis44e] {
    text-align: right;
}

/* Summary rows under the legs table: labels right-aligned across the leg columns, the value under the P&L column. */
.ct-legs tfoot td[b-5fwvwis44e] {
    border-bottom: none;
}

.ct-foot-label[b-5fwvwis44e] {
    color: var(--bbg-muted);
    text-align: right;
}

.ct-foot-total td[b-5fwvwis44e] {
    font-weight: 600;
    border-top: 1px solid var(--bbg-border);
}

.ct-buy[b-5fwvwis44e] {
    color: var(--bbg-cyan);
}

.ct-sell[b-5fwvwis44e] {
    color: var(--bbg-amber);
}

.ct-line[b-5fwvwis44e] {
    font-size: 0.8rem;
    margin: 4px 0;
}

.ct-zone-profit[b-5fwvwis44e] {
    color: var(--bbg-cyan);
}

.ct-zone-loss[b-5fwvwis44e] {
    color: var(--bbg-red);
}

.ct-key-table[b-5fwvwis44e] {
    margin-top: 4px;
}

/* The spot row ("where the trade is now") carries the same faded green the terminal rows take on hover
   (.terminal-row:hover in bloomberg-terminal.css), plus bold text. A plain colour on the cells, so the
   copy-as-image clone draws it as it looks. */
.ct-key-spot td[b-5fwvwis44e] {
    font-weight: 600;
    background-color: #1a2a1a;
}

.ct-pnl-profit[b-5fwvwis44e] {
    color: var(--bbg-cyan);
}

.ct-pnl-loss[b-5fwvwis44e] {
    color: var(--bbg-red);
}

.ct-note[b-5fwvwis44e] {
    color: var(--bbg-muted);
    font-size: 0.75rem;
}

.ct-flag-line[b-5fwvwis44e] {
    font-size: 0.8rem;
    margin: 2px 0;
    display: flex;
    gap: 6px;
    align-items: baseline;
}

/* The flag badges use the class names SpreadFinderDisplay.FlagCssClass returns. */
.sf-badge[b-5fwvwis44e] {
    display: inline-block;
    padding: 0 5px;
    font-size: 0.68rem;
    line-height: 1.5;
    border: 1px solid var(--bbg-border);
    border-radius: 2px;
    white-space: nowrap;
}

.sf-flag-amber[b-5fwvwis44e] {
    color: var(--bbg-amber);
    border-color: var(--bbg-amber);
}

.sf-flag-red[b-5fwvwis44e] {
    color: var(--bbg-red);
    border-color: var(--bbg-red);
    font-weight: 600;
}

.sf-flag-info[b-5fwvwis44e] {
    color: var(--bbg-muted);
    border-color: var(--bbg-muted);
}
/* /Components/Terminals/Trades/TradeChartPanel.razor.rz.scp.css */
/*
FILE: TradeChartPanel.razor.css
PATH: Components/Terminals/Trades/TradeChartPanel.razor.css
CREATED: 2026-10-11 23:55:00 EST
PURPOSE: Scoped styling of the per-trade payoff chart block under the Trades screen's details panel: a title
         row, then the summary line and the chart. The rules do NOT depend on an ancestor selector: the
         copy-as-image clone of the whole expanded trade is laid out outside the page and must look the same.
*/

.tcp-block[b-ylfbdsuvi1] {
    margin-top: 12px;
    padding: 8px 12px 10px;
    border-top: 1px solid var(--bbg-border);
    background-color: var(--bbg-bg);
    color: var(--bbg-foreground);
}

.tcp-head[b-ylfbdsuvi1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 4px;
}

.tcp-title[b-ylfbdsuvi1] {
    color: var(--bbg-amber);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.tcp-sub[b-ylfbdsuvi1] {
    color: var(--bbg-muted);
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
}

.tcp-line[b-ylfbdsuvi1] {
    font-size: 0.8rem;
    margin: 4px 0;
}

.tcp-note[b-ylfbdsuvi1] {
    color: var(--bbg-muted);
    font-size: 0.75rem;
}

.tcp-profit[b-ylfbdsuvi1] {
    color: var(--bbg-cyan);
}

.tcp-loss[b-ylfbdsuvi1] {
    color: var(--bbg-red);
}
/* /Components/Terminals/Trades/TradeDetailPanel.razor.rz.scp.css */
/* FILE: TradeDetailPanel.razor.css
   PATH: Components/Terminals/Trades/TradeDetailPanel.razor.css
   UPDATED: 2026-05-28 00:00:00 EST */

.tdp-loading[b-9ybtpg1a62], .tdp-error[b-9ybtpg1a62], .tdp-hint[b-9ybtpg1a62] {
    padding: 8px 0;
    opacity: .6;
    font-size: .82rem;
}

/* ── Info cards ──────────────────────────────────────────────────────────── */

.tdp-cards[b-9ybtpg1a62] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--bbg-border);
    margin-bottom: 10px;
}

.tdp-card[b-9ybtpg1a62] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 90px;
}

.tdp-card-label[b-9ybtpg1a62] {
    font-size: .63rem;
    letter-spacing: .08em;
    color: var(--bbg-cyan);
    text-transform: uppercase;
}

.tdp-card-value[b-9ybtpg1a62] {
    font-size: .85rem;
}

.tdp-pos[b-9ybtpg1a62] { color: var(--bbg-cyan); }
.tdp-neg[b-9ybtpg1a62] { color: #dc3545; }


/* ── Section ─────────────────────────────────────────────────────────────── */

.tdp-section[b-9ybtpg1a62] {
    margin-bottom: 12px;
}

.tdp-section-label[b-9ybtpg1a62] {
    display: block;
    font-size: .63rem;
    letter-spacing: .08em;
    color: var(--bbg-cyan);
    text-transform: uppercase;
    margin-bottom: 6px;
}

/* ── Strategy info ───────────────────────────────────────────────────────── */

.tdp-strategy-info[b-9ybtpg1a62] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.tdp-strategy-name[b-9ybtpg1a62] {
    font-size: .9rem;
    font-weight: 600;
}

.tdp-strategy-meta[b-9ybtpg1a62] {
    font-size: .75rem;
    opacity: .65;
    border: 1px solid var(--bbg-border);
    padding: 1px 6px;
}

/* ── Legs grid ───────────────────────────────────────────────────────────── */

.tdp-legs-grid .terminal-header-row[b-9ybtpg1a62],
.tdp-legs-grid .terminal-row[b-9ybtpg1a62] {
    font-size: .8rem;
}

.tdp-leg-symbol[b-9ybtpg1a62] {
    font-size: .75rem;
    word-break: break-all;
}

/* ── Drill navigation bar ────────────────────────────────────────────────── */

.tdp-drill[b-9ybtpg1a62] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--bbg-border);
}

.tdp-back[b-9ybtpg1a62] {
    background: none;
    border: none;
    color: var(--bbg-cyan);
    cursor: pointer;
    font-size: .8rem;
    padding: 0;
}

.tdp-drill-title[b-9ybtpg1a62] {
    font-size: .8rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    opacity: .8;
}

/* ── Pick list ───────────────────────────────────────────────────────────── */

.tdp-pick-list[b-9ybtpg1a62] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* Two-column strategy grid, centered */
.tdp-strategy-grid[b-9ybtpg1a62] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 16px;
    max-width: 640px;
    margin: 0 auto;
}

.tdp-strategy-grid .tdp-pick-row[b-9ybtpg1a62] {
    min-width: 0;
}

.tdp-pick-row[b-9ybtpg1a62] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 4px 0;
    border-bottom: 1px solid var(--bbg-border);
}

.tdp-pick-name[b-9ybtpg1a62] { flex: 1; font-size: .85rem; }

.tdp-pick-code[b-9ybtpg1a62] {
    font-size: .72rem;
    color: var(--bbg-cyan);
    border: 1px solid var(--bbg-border);
    padding: 1px 5px;
    letter-spacing: .05em;
}

/* ── Form ────────────────────────────────────────────────────────────────── */

.tdp-form[b-9ybtpg1a62] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 480px;
}

.tdp-field[b-9ybtpg1a62] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.tdp-label[b-9ybtpg1a62] {
    font-size: .63rem;
    letter-spacing: .08em;
    color: var(--bbg-cyan);
    text-transform: uppercase;
}

.tdp-input-sm[b-9ybtpg1a62] { max-width: 120px; }

.tdp-row-inline[b-9ybtpg1a62] {
    display: flex;
    gap: 6px;
    align-items: center;
}

.tdp-nav[b-9ybtpg1a62] {
    margin-top: 12px;
}

/* ── Candidate pick lists (merge / leg-move) ─────────────────────────────── */

.tdp-legs-grid .terminal-row:hover[b-9ybtpg1a62] {
    background: rgba(255, 255, 255, .05);
    cursor: pointer;
}

/* ── Trade Context section ───────────────────────────────────────────────── */

.tdp-context-section[b-9ybtpg1a62] {
    border-top: 1px solid var(--bbg-border);
    padding-top: 10px;
    margin-top: 12px;
}

.tdp-context-grid[b-9ybtpg1a62] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 16px;
    margin-top: 6px;
}

.tdp-field-wide[b-9ybtpg1a62] {
    grid-column: span 2;
}

.tdp-field-full[b-9ybtpg1a62] {
    grid-column: 1 / -1;
}

.tdp-textarea[b-9ybtpg1a62] {
    resize: vertical;
    min-height: 60px;
    font-family: inherit;
    font-size: .82rem;
}

/* ── Manual-entry leg badge ──────────────────────────────────────────────── */

.tdp-manual-badge[b-9ybtpg1a62] {
    display: inline-block;
    margin-left: 5px;
    font-size: .65rem;
    letter-spacing: .05em;
    padding: 1px 5px;
    border: 1px solid var(--bbg-border);
    opacity: .55;
    vertical-align: middle;
}
/* /Components/Terminals/Transactions/TransactionsTerminal.razor.rz.scp.css */
/* FILE: TransactionsTerminal.razor.css
   PATH: Components/Terminals/Transactions/TransactionsTerminal.razor.css
   TIMESTAMP: 2026-05-12
   UPDATED: 2026-08-01 14:57:10 EST — added .txn-cash-resolved for the $CASH -> resolved-ticker
            display overlay (matches .txn-symbol-desc's muted styling).
   PURPOSE: Scoped styles for the Transactions terminal. */

/* ── Filter bar ─────────────────────────────────────────────────────────── */

.txn-filter-bar[b-1wef6tkx98] {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-end;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--bbg-border);
}

.txn-filter-group[b-1wef6tkx98] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.txn-filter-label[b-1wef6tkx98] {
    font-size: 0.65rem;
    letter-spacing: 0.09em;
    color: var(--bbg-cyan);
    text-transform: uppercase;
}

.txn-filter-actions[b-1wef6tkx98] {
    flex-direction: row;
    align-items: flex-end;
    gap: 6px;
}

/* ── Inputs ─────────────────────────────────────────────────────────────── */

.txn-select[b-1wef6tkx98],
.txn-input[b-1wef6tkx98] {
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    padding: 4px 8px;
    font-family: inherit;
    font-size: 0.82rem;
    min-width: 140px;
}

    .txn-select:focus[b-1wef6tkx98],
    .txn-input:focus[b-1wef6tkx98] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

    .txn-select option[b-1wef6tkx98] {
        background: #0a0a0a;
    }

.txn-input-date[b-1wef6tkx98] {
    min-width: 130px;
}

.txn-pagesize[b-1wef6tkx98] {
    min-width: 110px;
}

/* ── Column alignment ───────────────────────────────────────────────────── */

.txn-right[b-1wef6tkx98] {
    text-align: right;
    justify-content: flex-end;
}

/* ── Monospace numbers ──────────────────────────────────────────────────── */

.txn-mono[b-1wef6tkx98] {
    font-variant-numeric: tabular-nums;
}

/* ── Symbol (allow wrap for long OCC symbols) ───────────────────────────── */

.txn-symbol[b-1wef6tkx98] {
    word-break: break-all;
    font-size: 0.8rem;
}

/* Broker description shown beside a cash/ledger symbol (e.g. dividend payer name). */
.txn-symbol-desc[b-1wef6tkx98] {
    margin-left: 0.4rem;
    color: var(--bbg-foreground);
    opacity: 0.55;
    font-size: 0.72rem;
}

/* Resolved-ticker overlay for a $CASH row (e.g. "$CASH → FNV") — display only, matches
   .txn-symbol-desc's muted styling so it reads as metadata, not as the actual Symbol value. */
.txn-cash-resolved[b-1wef6tkx98] {
    margin-left: 0.4rem;
    color: var(--bbg-foreground);
    opacity: 0.55;
    font-size: 0.72rem;
}

/* ── Amount coloring ────────────────────────────────────────────────────── */

.txn-positive[b-1wef6tkx98] { color: var(--bbg-cyan); }
.txn-negative[b-1wef6tkx98] { color: #dc3545; }

/* ── Routing / Status badges ────────────────────────────────────────────── */

.txn-badge[b-1wef6tkx98] {
    display: inline-block;
    padding: 1px 6px;
    font-size: 0.68rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border: 1px solid currentColor;
}

.txn-badge-trade[b-1wef6tkx98]     { color: var(--bbg-cyan); }
.txn-badge-ledger[b-1wef6tkx98]    { color: #6c757d; }
.txn-badge-discarded[b-1wef6tkx98] { color: #dc3545; }
.txn-badge-neutral[b-1wef6tkx98]   { color: #6c757d; }
.txn-badge-promoted[b-1wef6tkx98]  { color: #28a745; }
.txn-badge-pending[b-1wef6tkx98]   { color: #ffc107; }

/* ── Empty state ────────────────────────────────────────────────────────── */

.txn-empty[b-1wef6tkx98] {
    opacity: 0.45;
    font-size: 0.82rem;
    padding: 8px 0;
}

/* ── Pagination bar ─────────────────────────────────────────────────────── */

.txn-pager[b-1wef6tkx98] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 0.75rem;
}

.txn-pager-info[b-1wef6tkx98] {
    font-size: 0.78rem;
    opacity: 0.6;
    flex: 1;
    text-align: center;
}

/* ── Note indicator dot ─────────────────────────────────────────────────── */

.txn-note-dot[b-1wef6tkx98] {
    font-size: 0.5rem;
    margin-left: 4px;
    vertical-align: middle;
    line-height: 1;
}

.txn-note-dot-pending[b-1wef6tkx98]  { color: #ffc107; }
.txn-note-dot-resolved[b-1wef6tkx98] { color: #28a745; }

/* ── Row expand ─────────────────────────────────────────────────────────── */

.txn-row-clickable[b-1wef6tkx98] {
    cursor: pointer;
}

.txn-row-expanded[b-1wef6tkx98] {
    border-bottom: none;
    background: rgba(255,255,255,.03);
}

/* ── Note editor panel ──────────────────────────────────────────────────── */

.txn-note-panel[b-1wef6tkx98] {
    padding: 8px 12px 10px;
    border-bottom: 1px solid var(--bbg-border);
    background: rgba(255,255,255,.03);
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.txn-note-textarea[b-1wef6tkx98] {
    width: 100%;
    max-width: 640px;
    background: #0a0a0a;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    font-family: inherit;
    font-size: 0.82rem;
    padding: 6px 8px;
    resize: vertical;
}

    .txn-note-textarea:focus[b-1wef6tkx98] {
        outline: none;
        border-color: var(--bbg-cyan);
    }

.txn-note-footer[b-1wef6tkx98] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.txn-note-resolved-label[b-1wef6tkx98] {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.78rem;
    cursor: pointer;
}

.txn-note-hint[b-1wef6tkx98] {
    font-size: 0.75rem;
    opacity: 0.6;
}

/* ── Discard inline confirm ─────────────────────────────────────────────── */

.txn-discard-confirm[b-1wef6tkx98] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.72rem;
    white-space: nowrap;
}

/* Extra-small button variant for inline confirms */
.btn-xs[b-1wef6tkx98] {
    padding: 1px 6px;
    font-size: 0.7rem;
    line-height: 1.4;
}
/* /Components/Terminals/WallFinder/InfoPopover.razor.rz.scp.css */
/*
FILE: InfoPopover.razor.css
PATH: Components/Terminals/WallFinder/InfoPopover.razor.css
CREATED: 2026-09-21 23:40:00 EST
UPDATED: 2026-10-09 20:00:00 EST - .wf-info-wide, the Fixed-mode layer, the heading, plain-text line breaks and ::deep
         styling for rich content (bold terms, rows, the highlighted current option).
PURPOSE: Scoped styling for InfoPopover.razor — a hover/focus-revealed explanation box, themed
         with the existing --bbg-* custom properties so it matches whichever theme is active.
*/

.wf-info[b-sir7ev282s] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 13px;
    height: 13px;
    margin-left: 5px;
    border-radius: 50%;
    border: 1px solid var(--bbg-muted);
    color: var(--bbg-muted);
    font-size: 0.62rem;
    font-style: italic;
    font-weight: 600;
    line-height: 1;
    cursor: help;
    position: relative;
    vertical-align: middle;
}

.wf-info:hover[b-sir7ev282s],
.wf-info:focus[b-sir7ev282s] {
    border-color: var(--bbg-cyan);
    color: var(--bbg-cyan);
    outline: none;
}

.wf-info-popover[b-sir7ev282s] {
    display: none;
    position: absolute;
    top: 130%;
    left: 0;
    z-index: 20;
    width: 15rem;
    padding: 8px 10px;
    background: var(--bbg-bg-alt);
    border: 1px solid var(--bbg-border);
    color: var(--bbg-foreground);
    font-size: 0.75rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1.35;
    letter-spacing: normal;
    white-space: normal;
    text-align: left;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.4);
}

.wf-info:hover .wf-info-popover[b-sir7ev282s],
.wf-info:focus .wf-info-popover[b-sir7ev282s] {
    display: block;
}

/* Longer explanations. */
.wf-info-wide[b-sir7ev282s] {
    width: 24rem;
}

/* A Fixed popover sits above every neighbouring layer once placed (bbg-popover.js sets position:fixed). */
.wf-info-fixed .wf-info-popover[b-sir7ev282s] {
    z-index: 400;
}

.wf-info-head[b-sir7ev282s] {
    display: block;
    margin-bottom: 4px;
    color: var(--bbg-header-fg, var(--bbg-cyan));
    font-weight: 600;
}

/* Plain-text popovers: honour the line breaks in the text, collapse everything else. */
.wf-info-text[b-sir7ev282s] {
    white-space: pre-line;
}

/* Content passed in from another component carries that component's scope id, so style it with ::deep. */
.wf-info-popover[b-sir7ev282s]  b {
    color: var(--bbg-cyan);
}

.wf-info-popover[b-sir7ev282s]  .wf-info-row {
    display: block;
    margin: 3px 0;
}

.wf-info-popover[b-sir7ev282s]  .wf-info-current {
    color: var(--bbg-amber);
}
/* /Components/Theme/FontSizeSliderWidget.razor.rz.scp.css */
/* FILE: FontSizeSliderWidget.razor.css
   PATH: Components/Theme/FontSizeSliderWidget.razor.css
   CREATED: 2026-10-09 18:00:00 EST
   PURPOSE: Scoped styles for the slider font-size widget in the top-row bar. Everything is in px on purpose:
            the widget (and the sample's fixed-width box) must not change size while a size is being
            previewed, or the slider would slide under the pointer mid-drag. */

.fss-wrap[b-rfexq068f3] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-right: 12px;   /* breathing room before the next control, like the other top-row widgets */
}

/* ── Slider ─────────────────────────────────────────────── */

.fss-range[b-rfexq068f3] {
    -webkit-appearance: none;
    appearance: none;
    width: 120px;
    height: 20px;
    margin: 0;
    background: transparent;
    cursor: pointer;
}

.fss-range[b-rfexq068f3]::-webkit-slider-runnable-track {
    height: 4px;
    background: var(--bbg-border);
    border-radius: 2px;
}

.fss-range[b-rfexq068f3]::-moz-range-track {
    height: 4px;
    background: var(--bbg-border);
    border-radius: 2px;
}

.fss-range[b-rfexq068f3]::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 12px;
    height: 18px;
    margin-top: -7px;      /* centre the 18px thumb on the 4px track */
    background: var(--bbg-cyan);
    border: 0;
    border-radius: 2px;
}

.fss-range[b-rfexq068f3]::-moz-range-thumb {
    width: 12px;
    height: 18px;
    background: var(--bbg-cyan);
    border: 0;
    border-radius: 2px;
}

.fss-range:hover[b-rfexq068f3]::-webkit-slider-thumb {
    background: var(--bbg-amber);
}

.fss-range:hover[b-rfexq068f3]::-moz-range-thumb {
    background: var(--bbg-amber);
}

.fss-range:focus-visible[b-rfexq068f3] {
    outline: 1px solid var(--bbg-cyan);
    outline-offset: 3px;
}

/* ── Sample and readout ─────────────────────────────────── */

/* Fixed-width box: wide enough for "Aa 123" at the largest size (22px), so the preview never changes the
   widget's width. The text itself takes the previewed font-size inline. */
.fss-sample[b-rfexq068f3] {
    display: inline-flex;
    align-items: center;
    width: 84px;
    height: 26px;
    overflow: hidden;
    white-space: nowrap;
    line-height: 1;
    font-family: var(--bbg-font);
    color: var(--bbg-foreground);
}

.fss-val[b-rfexq068f3] {
    width: 34px;
    font-family: var(--bbg-font);
    font-size: 11px;
    color: var(--bbg-muted);
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* /Components/Theme/FontSizeWidget.razor.rz.scp.css */
/* FILE: FontSizeWidget.razor.css
   PATH: Components/Theme/FontSizeWidget.razor.css
   UPDATED: 2026-05-22 00:00:00 EST
   PURPOSE: Scoped styles for the A− / A+ font size widget in the top-row. */

.fsw-wrap[b-f921wb9vy8] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-right: 12px;   /* breathing room before clock */
}

.fsw-btn[b-f921wb9vy8] {
    background: transparent;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-cyan);
    font-family: var(--bbg-font);
    font-size: 0.72rem;
    padding: 2px 7px;
    cursor: pointer;
    border-radius: 2px;
    line-height: 1.3;
}

.fsw-btn:hover:not(:disabled)[b-f921wb9vy8] {
    border-color: var(--bbg-cyan);
    background: rgba(0, 229, 255, 0.08);
}

.fsw-btn:disabled[b-f921wb9vy8] {
    color: var(--bbg-muted);
    border-color: var(--bbg-border);
    cursor: default;
}

.fsw-val[b-f921wb9vy8] {
    font-family: var(--bbg-font);
    font-size: 0.72rem;
    color: var(--bbg-foreground);
    min-width: 20px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.fsw-reset[b-f921wb9vy8] {
    margin-left: 4px;  /* visual gap between A+ and ↺ */
}
/* /Components/Theme/NavControlsWidget.razor.rz.scp.css */
/* FILE: NavControlsWidget.razor.css
   PATH: Components/Theme/NavControlsWidget.razor.css
   CREATED: 2026-05-23 00:00:00 EST
   PURPOSE: Scoped styles for the back/refresh navigation widget in the top-row bar.
            Mirrors FontSizeWidget sizing and terminal aesthetic. */

.ncw-wrap[b-7w9srq2yqd] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-right: 12px;
}

.ncw-btn[b-7w9srq2yqd] {
    background: transparent;
    border: 1px solid var(--bbg-border);
    color: var(--bbg-cyan);
    font-family: var(--bbg-font);
    font-size: 0.85rem;
    padding: 2px 8px;
    cursor: pointer;
    border-radius: 2px;
    line-height: 1.3;
}

.ncw-btn:hover[b-7w9srq2yqd] {
    border-color: var(--bbg-cyan);
    background: rgba(0, 229, 255, 0.08);
}
/* /Components/Theme/ThemeSwitcher.razor.rz.scp.css */
/* FILE: ThemeSwitcher.razor.css
   PATH: /Components/Theme/ThemeSwitcher.razor.css
   PURPOSE: Scoped styles for the ThemeSwitcher sidebar widget.
   CREATED: 2026-05-20 14:30:00 EST */

.theme-switcher[b-h5fm3ljyvd] {
    padding: 12px 16px 8px;
}

.theme-label[b-h5fm3ljyvd] {
    color: var(--bbg-lime);
    font-family: var(--bbg-font);
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    opacity: 0.7;
    margin-bottom: 6px;
}
