@import '_content/Microsoft.AspNetCore.Components.QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.boiwgh0w5b.bundle.scp.css';
@import '_content/PSC.Blazor.Components.MarkdownEditor/PSC.Blazor.Components.MarkdownEditor.mlg14ggzcc.bundle.scp.css';

/* /Components/Admin/AdminAuditLog.razor.rz.scp.css */
.table-responsive[b-d5ag70o6k5] {
    min-height: 0;
}

.row-click[b-d5ag70o6k5] {
    margin: -1rem -1.25rem;
    padding: 1rem 1.25rem;
    cursor: pointer;
    background: none;
    border: none;
    font: inherit;
    color: inherit;
    text-align: inherit;
    width: calc(100% + 2.5rem);
}

.auditlog-meta-row[b-d5ag70o6k5] {
    padding: 0.625rem 1rem;
}

.auditlog-change-field[b-d5ag70o6k5] {
    padding: 0.625rem 1rem;
}

.auditlog-change-line[b-d5ag70o6k5] {
    padding: 0.75rem 1rem;
}

.auditlog-change-tag[b-d5ag70o6k5] {
    min-width: 4.5rem;
    padding: 0.125rem 0.5rem;
}
/* /Components/Admin/AdminRatingScales.razor.rz.scp.css */
.admin-scales-header[b-78s9t7k5rm] {
    margin-bottom: 1.5rem;
}

.admin-scales-subtitle[b-78s9t7k5rm] {
    color: var(--bs-secondary-color);
    margin: 0.25rem 0 0;
}

/* The cards are SectionCards (rendered by the child component, hence ::deep). */
.admin-scales[b-78s9t7k5rm]  .admin-scale-card {
    margin-bottom: 1.5rem;
}

/* The tables sit edge-to-edge in the card (as in the design): the body padding goes away and the
   table cells / note carry their own insets instead. */
.admin-scales[b-78s9t7k5rm]  .admin-scale-card .section-card-body {
    padding: 0;
    gap: 0;
}

.admin-scales[b-78s9t7k5rm]  .admin-scale-card:last-child {
    margin-bottom: 0;
}

.admin-scale-default-badge[b-78s9t7k5rm] {
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: none;
    letter-spacing: normal;
    color: var(--bs-secondary-color);
    border: 1px solid var(--bs-border-color);
    border-radius: 999px;
    padding: 0.1rem 0.55rem;
}

/* The global .page-section-fill .table-responsive rule frames scrollable list grids with a card
   border; here the table is embedded in a SectionCard (as in the design), so no extra frame. */
.admin-scales .table-responsive[b-78s9t7k5rm] {
    border: none;
    border-radius: 0;
}

.admin-scale-table[b-78s9t7k5rm] {
    width: 100%;
    border-collapse: collapse;
}

.admin-scale-table th:first-child[b-78s9t7k5rm],
.admin-scale-table td:first-child[b-78s9t7k5rm] {
    padding-left: 1.1rem;
}

.admin-scale-table th:last-child[b-78s9t7k5rm],
.admin-scale-table td:last-child[b-78s9t7k5rm] {
    padding-right: 1.1rem;
}

.admin-scale-table th[b-78s9t7k5rm] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--bs-secondary-color);
    text-align: left;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.admin-scale-table td[b-78s9t7k5rm] {
    padding: 0.375rem 0.75rem;
    vertical-align: middle;
}

/* Breathing room between the table and the header divider above / note divider below. */
.admin-scale-table tbody tr:first-child td[b-78s9t7k5rm] {
    padding-top: 0.75rem;
}

.admin-scale-table tbody tr:last-child td[b-78s9t7k5rm] {
    padding-bottom: 0.75rem;
}

.admin-scale-table td input[b-78s9t7k5rm] {
    max-width: 18rem;
    min-width: 7rem;
}

.admin-scale-table input[readonly][b-78s9t7k5rm] {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-secondary-color);
}

.admin-scale-level-col[b-78s9t7k5rm] {
    width: 4rem;
}

.admin-scale-level-badge[b-78s9t7k5rm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background-color: var(--bs-secondary-color);
    color: var(--bs-body-bg);
    font-size: 0.75rem;
    font-weight: 600;
}

.admin-scale-more-col[b-78s9t7k5rm] {
    /* Hugs its content so the language columns keep their width; leftover space stays with them. */
    width: 1%;
    white-space: nowrap;
    text-align: right;
}

.admin-scale-more-languages[b-78s9t7k5rm] {
    padding-top: 0;
    padding-bottom: 0;
    text-decoration: none;
    text-transform: none;
    letter-spacing: normal;
}

.admin-scale-error[b-78s9t7k5rm] {
    padding: 0.5rem 1.1rem 0;
    font-size: 0.875rem;
}

.admin-scale-note[b-78s9t7k5rm] {
    padding: 0.75rem 1.1rem 1.1rem;
    border-top: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color);
    font-size: 0.8125rem;
}
/* /Components/Admin/AdminUserManagement.razor.rz.scp.css */
.admin-users-toolbar[b-p5qs53zgzv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.admin-section-title[b-p5qs53zgzv] {
    font-size: 1.25rem;
    margin: 0;
}

.admin-users-toolbar-actions[b-p5qs53zgzv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

/* Layout only - the input itself is the shared SearchBox component. */
.admin-users-search[b-p5qs53zgzv] {
    min-width: 240px;
}

/* Whole-row click target: stretch each data cell's content over the cell
   padding so clicking anywhere in the row opens the edit panel. Reset
   native button styles so the cell looks like plain table text. */
.row-click[b-p5qs53zgzv] {
    margin: -1rem -1.25rem;
    padding: 1rem 1.25rem;
    cursor: pointer;
    background: none;
    border: none;
    font: inherit;
    color: inherit;
    text-align: inherit;
    width: calc(100% + 2.5rem);
}

/* Status: colored dot + plain label, per design. */
.user-status[b-p5qs53zgzv] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.status-dot[b-p5qs53zgzv] {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.status-dot-active[b-p5qs53zgzv] {
    background: var(--bs-success);
}

.status-dot-inactive[b-p5qs53zgzv] {
    background: var(--bs-danger);
}

.status-dot-locked[b-p5qs53zgzv] {
    background: var(--bs-warning);
}

.status-dot-invited[b-p5qs53zgzv] {
    background: var(--bs-secondary);
}

/* Row action menus (menu look itself is global - see "Dropdown menus" in
   _app-styles.scss): the invisible backdrop closes the open menu on any
   outside click; while a menu is open the scroll container must not clip it. */
.admin-menu-backdrop[b-p5qs53zgzv] {
    position: fixed;
    inset: 0;
    z-index: 1000;
}


.admin-row-actions[b-p5qs53zgzv] {
    position: relative;
    display: inline-block;
}

/* These menus are Blazor-toggled (no Bootstrap JS), so the [data-bs-popper]
   positioning rules never apply - anchor them below the trigger, right-
   aligned, explicitly. */
.admin-row-actions .dropdown-menu[b-p5qs53zgzv],
.sidepanel-user-menu .dropdown-menu[b-p5qs53zgzv] {
    top: 100%;
    right: 0;
    left: auto;
    margin-top: 0.125rem;
    min-width: 250px;
}

.admin-row-actions .dropdown-menu[b-p5qs53zgzv] {
    z-index: 1001;
}

/* Drawer-header actions menu: same menu as the rows, but it must layer
   above the offcanvas (Bootstrap z-index 1045), so it gets its own
   backdrop/menu stack instead of the table's 1000/1001 pair. */
.sidepanel-user-menu[b-p5qs53zgzv] {
    position: relative;
    display: inline-block;
}

.sidepanel-menu-backdrop[b-p5qs53zgzv] {
    position: fixed;
    inset: 0;
    z-index: 1050;
}

.sidepanel-user-menu .dropdown-menu[b-p5qs53zgzv] {
    z-index: 1051;
}

/* The card is a flex column (see .page-section-fill in _app-styles.scss);
   the table scrolls within it while toolbar and footer stay put.
   Row-menu clipping used to be handled by toggling this container to
   overflow: visible while a menu was open (AIG-462), but switching a
   scrolling element to overflow: visible drops its scroll position -
   opening the menu on a row reached by scrolling snapped the table back
   to the top and left the (now relocated) trigger's dropdown positioned
   off-screen (AIG-498). dropdown-position.js now escapes clipping
   ancestors generically via position: fixed (AIG-463), so the scroll
   container itself no longer needs to release its clip. */
.table-responsive[b-p5qs53zgzv] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.admin-users-footer[b-p5qs53zgzv] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.5rem;
    margin-top: 0.75rem;
    font-size: 0.875rem;
    color: var(--bs-secondary-color);
}

/* Edit panel: user summary box (avatar + name + status chip), per design. */
.user-summary[b-p5qs53zgzv] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem;
    margin-bottom: 1.25rem;
    background: var(--bs-secondary-bg);
    border-radius: var(--bs-border-radius);
}

/* Dark filled circle with light initials, per design (token pair flips
   for dark mode: emphasis bg turns light, card-bg text turns dark). */
.user-summary-avatar[b-p5qs53zgzv] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: var(--bs-primary-text-emphasis);
    color: var(--bs-bg-card);
    font-size: 1.125rem;
    font-weight: 600;
    flex-shrink: 0;
}

.user-summary-dot[b-p5qs53zgzv] {
    position: absolute;
    top: 0;
    right: 0;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    border: 2px solid var(--bs-bg-card);
}

.user-summary-info[b-p5qs53zgzv] {
    flex: 1;
    min-width: 0;
}

.user-summary-name[b-p5qs53zgzv] {
    font-size: var(--fs-base);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.user-summary-position[b-p5qs53zgzv] {
    color: var(--bs-text-muted);
    font-size: var(--fs-base);
}

/* Rounded rect (not a pill), pinned to the top edge next to the name. */
.user-chip[b-p5qs53zgzv] {
    padding: 0.25rem 0.75rem;
    border-radius: var(--bs-border-radius);
    font-size: var(--fs-sm);
    font-weight: 500;
    flex-shrink: 0;
    align-self: flex-start;
}

/* Table styling is central: see the "QuickGrid - central table skin"
   section in Styles/_app-styles.scss. (Scoped .quickgrid rules never
   applied here - QuickGrid renders the table, so the page's CSS-isolation
   scope attribute never lands on its <th>/<td>.) */
/* /Components/Admin/AdminWorkspaceManagement.razor.rz.scp.css */
/* Layout only - the input itself is the shared SearchBox component. */
.admin-workspaces-search[b-tggamaeke7] {
    min-width: 240px;
}

/* The card is a flex column (see .page-section-fill in _app-styles.scss);
   the table scrolls within it while toolbar and footer stay put. */
.table-responsive[b-tggamaeke7] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
/* /Components/Admin/CreditUsageBar.razor.rz.scp.css */
/* Stacked credit bar, styled after the dashboard's PotentialStatusBar: full width, no axis,
   rounded outer ends, legend with rounded swatches underneath. Colours live in _app-styles.scss. */
.credit-usage-bar[b-7eouxzdkh6] {
    display: flex;
    height: 0.75rem;
    margin: 0.5rem 0;
    border-radius: 4px;
    overflow: hidden;
}

.credit-usage-segment[b-7eouxzdkh6] {
    display: block;
    height: 100%;
}

.credit-usage-legend[b-7eouxzdkh6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    font-size: var(--fs-sm);
}

.credit-usage-legend li[b-7eouxzdkh6] {
    display: inline-flex;
    align-items: center;
}

.credit-usage-swatch[b-7eouxzdkh6] {
    display: inline-block;
    width: 0.75rem;
    height: 0.75rem;
    margin-right: 0.375rem;
    border-radius: 3px;
}
/* /Components/Chat/ChatMessageView.razor.rz.scp.css */
/* Message rendering shared by TestChat and the Conversation Inspector.
   Matches ChatInterface styling so all three surfaces look identical. */

.message[b-x4pktxzyjo] {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    animation: fadeUp-b-x4pktxzyjo 0.2s ease-out;
}

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

.msg-user[b-x4pktxzyjo] {
    flex-direction: row-reverse;
}

.msg-avatar[b-x4pktxzyjo] {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    flex-shrink: 0;
}

.av-user[b-x4pktxzyjo] {
    border-radius: 50%;
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

/* Brand (Aiguro) avatar: dark rounded square, consistent in both themes. */
.av-ai[b-x4pktxzyjo] {
    border-radius: var(--bs-border-radius);
    background: var(--gray-900);
    color: var(--white);
}

.msg-col[b-x4pktxzyjo] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    max-width: 82%;
    min-width: 0;
}

.msg-user .msg-col[b-x4pktxzyjo] {
    align-items: flex-end;
}

.msg-meta[b-x4pktxzyjo] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 0 2px;
}


.msg-bubble[b-x4pktxzyjo] {
    max-width: 100%;
    padding: 14px 18px;
    border-radius: var(--bs-border-radius-lg);
    font-size: var(--fs-base);
    line-height: 1.55;
    position: relative;
}

.msg-user .msg-bubble[b-x4pktxzyjo] {
    background: var(--accent-blue-light);
    color: var(--bs-body-color);
    border: 0.5px solid color-mix(in srgb, var(--bs-primary) 35%, transparent);
    border-top-right-radius: 4px;
}

.msg-assistant .msg-bubble[b-x4pktxzyjo] {
    background: var(--bs-bg-card);
    color: var(--bs-secondary);
    border: 0.5px solid var(--bs-border-color);
    border-top-left-radius: 4px;
}

/* Blinking cursor shown on the assistant bubble while tokens are streaming in. */
.msg-bubble.msg-streaming[b-x4pktxzyjo]::after {
    content: '\25AE'; /* ▮ filled rectangle */
    display: inline-block;
    margin-left: 2px;
    animation: blink-cursor-b-x4pktxzyjo 1s step-end infinite;
    color: var(--bs-primary);
    vertical-align: baseline;
}

/* Markdig wraps plain text in <p> - make the last paragraph inline so the cursor sits on the same line. */
.msg-bubble.msg-streaming p:last-child[b-x4pktxzyjo] {
    display: inline;
}

@keyframes blink-cursor-b-x4pktxzyjo {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* .msg-currency-note (AIG-453) lives in Styles/_app-styles.scss - shared with
   ChatMessageBubble so the two message renderers cannot drift on its style. */

/* ── Typing indicator (three bouncing dots, shown before the first token arrives) ── */
.typing-indicator[b-x4pktxzyjo] {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 52px;
}

.typing-indicator span[b-x4pktxzyjo] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--bs-primary-border-subtle);
    animation: bounce-b-x4pktxzyjo 1.2s ease-in-out infinite;
}

.typing-indicator span:nth-child(2)[b-x4pktxzyjo] {
    animation-delay: 0.15s;
}

.typing-indicator span:nth-child(3)[b-x4pktxzyjo] {
    animation-delay: 0.3s;
}

@keyframes bounce-b-x4pktxzyjo {
    0%, 60%, 100% { transform: translateY(0); }
    30%           { transform: translateY(-5px); }
}

/* ── System messages: full-width, monospace, visually distinct from chat turns ── */
.system-message[b-x4pktxzyjo] {
    margin: 0 auto 1rem;
    max-width: 90%;
    border: 0.5px solid var(--bs-border-color);
    border-left: 3px solid var(--bs-warning);
    border-radius: var(--bs-border-radius);
    background: var(--bs-warning-bg-subtle);
    padding: 8px 12px;
    animation: fadeUp-b-x4pktxzyjo 0.2s ease-out;
}

/* Tool messages: same layout as system, distinct (blue) accent. */
.system-message.tool[b-x4pktxzyjo] {
    border-left-color: var(--bs-primary);
    background: var(--accent-blue-light);
}

.system-message-header[b-x4pktxzyjo] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 6px;
}

.system-message-content[b-x4pktxzyjo] {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    font-family: var(--bs-font-monospace, monospace);
    font-size: var(--fs-xs);
    line-height: 1.5;
    color: var(--bs-body-color);
}
/* /Components/ChatBlaze/ChatHistory.razor.rz.scp.css */
.chat-history-sidebar[b-uqk68m807e] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    overflow: hidden;
    background: var(--bs-bg-card);
    border-right: 0.5px solid var(--bs-border-color);
}

/* ── Collapsed rail ── */
.chat-history-sidebar--collapsed[b-uqk68m807e] {
    align-items: center;
    gap: 8px;
    padding: 12px 0;
}

/* Layout only - appearance comes from the standard .btn-outline-secondary / .btn-primary
   classes. This only bumps the icon-button to rail size. */
.rail-btn[b-uqk68m807e] {
    width: 36px;
    height: 36px;
}

/* ── Header ── */
.chat-history-header[b-uqk68m807e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 14px 16px;
    border-bottom: 0.5px solid var(--bs-border-color);
    flex-shrink: 0;
}

/* Layout only - appearance comes from the central .btn-primary variant. */
.new-chat-btn[b-uqk68m807e] {
    flex: 1;
}

.search-box[b-uqk68m807e] {
    margin: 8px 8px 0px 8px;
    position: relative;
    display: flex;
    align-items: center;
}

.search-icon[b-uqk68m807e] {
    position: absolute;
    left: 11px;
    font-size: 0.85rem;
    color: var(--bs-text-muted);
    pointer-events: none;
}

.search-input[b-uqk68m807e] {
    width: 100%;
    padding: 7px 12px 7px 32px;
    border-radius: var(--bs-border-radius);
    border: 0.5px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font-size: var(--fs-sm);
    outline: none;
    transition: border-color 0.15s;
}

.search-input:focus[b-uqk68m807e] {
    border-color: var(--bs-primary-border-subtle);
}

.search-input[b-uqk68m807e]::placeholder {
    color: var(--bs-text-muted);
}

/* ── List ── */
.chat-history-list[b-uqk68m807e] {
    flex: 1;
    overflow-y: auto;
    padding: 4px 8px 12px;
}

.empty-hint[b-uqk68m807e] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    padding: 8px 8px;
    margin: 0;
}

.chat-history-group-label[b-uqk68m807e] {
    padding: 12px 8px 4px;
}

.chat-history-group-label--toggle[b-uqk68m807e] {
    display: flex;
    align-items: center;
    gap: 5px;
    width: 100%;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
}

.chat-history-group-label--toggle:hover[b-uqk68m807e] {
    color: var(--bs-secondary);
}

.group-chevron[b-uqk68m807e] {
    font-size: 0.65rem;
}

/* Layout only - appearance comes from the standard .btn-outline-secondary class.
   Sits at the end of the "Older" group, spaced like a list entry. */
.chat-history-load-more[b-uqk68m807e] {
    display: block;
    width: 100%;
    margin-top: 12px;
}

.chat-history-item[b-uqk68m807e] {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 2px;
    border-radius: var(--bs-border-radius);
    transition: background 0.12s;
    background: var(--bs-body-bg);
}

/* Space consecutive entries apart without adding a gap before a group's first item. */
.chat-history-item + .chat-history-item[b-uqk68m807e] {
    margin-top: 12px;
}

.chat-history-item:hover[b-uqk68m807e] {
    background: var(--bs-secondary-bg);
}

.chat-history-item.active[b-uqk68m807e] {
    background: var(--accent-blue-light);
}

.chat-history-item-btn[b-uqk68m807e] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 11px 10px 11px 12px;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    min-width: 0;
}

.chat-history-item-row[b-uqk68m807e] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-width: 0;
}

/* AIG-452: a fixed-width slot for the unread dot / sharing icon, always reserved so the
   title column starts at the same x-position whether or not this item has any markers. */
.chat-history-item-markers[b-uqk68m807e] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 4px;
    width: 18px;
}

.chat-history-item-unread-dot[b-uqk68m807e] {
    flex-shrink: 0;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--bs-primary);
}

/* AIG-343: shared/read-only indicator icon in the chat-history row. */
.chat-history-item-shared[b-uqk68m807e] {
    flex-shrink: 0;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.chat-history-item-title[b-uqk68m807e] {
    /* Grows to fill the space between the fixed-width marker slot and the timestamp, so its
       left edge stays fixed regardless of title/timestamp length (AIG-452 follow-up: plain
       `justify-content: space-between` split the leftover space across every gap, including
       the one before the title, which left it drifting). */
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--fs-base);
    font-weight: 400;
    line-height: 1.3;
    color: var(--bs-body-color);
    min-width: 0;
}

.chat-history-item-time[b-uqk68m807e] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

.chat-history-item-subtitle[b-uqk68m807e] {
    font-size: var(--fs-sm);
    line-height: 1.4;
    color: var(--bs-text-muted);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ── Per-item ... menu ── */
/* The menu overlays the top-right corner where the timestamp normally sits, so
   it can replace the date/time on hover without shifting the title column. */
.chat-history-menu-wrap[b-uqk68m807e] {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    padding-right: 4px;
}

.chat-history-more[b-uqk68m807e] {
    opacity: 0;
    transition: opacity 0.12s;
}

/* Reveal the menu only on hover (or while its dropdown is open)... */
.chat-history-item:hover .chat-history-more[b-uqk68m807e],
.chat-history-item.menu-open .chat-history-more[b-uqk68m807e] {
    opacity: 1;
}

/* ...and hide the timestamp underneath so the menu takes its place. */
.chat-history-item:hover .chat-history-item-time[b-uqk68m807e],
.chat-history-item.menu-open .chat-history-item-time[b-uqk68m807e] {
    visibility: hidden;
}

.menu-backdrop[b-uqk68m807e] {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: transparent;
}

.menu-dropdown[b-uqk68m807e] {
    position: absolute;
    top: calc(100% - 4px);
    right: 4px;
    z-index: 41;
    min-width: 150px;
    padding: 4px;
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow-lg);
}

.menu-item[b-uqk68m807e] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 7px 10px;
    border: none;
    background: none;
    border-radius: var(--bs-border-radius-sm);
    font-size: var(--fs-base);
    color: var(--bs-body-color);
    cursor: pointer;
    text-align: left;
}

.menu-item:hover[b-uqk68m807e] {
    background: var(--bs-secondary-bg);
}

.menu-item--bs-danger[b-uqk68m807e] {
    color: var(--bs-danger);
}

.menu-item--bs-danger:hover[b-uqk68m807e] {
    background: var(--bs-danger-bg-subtle);
}

/* ── Inline rename ── */
.rename-input[b-uqk68m807e] {
    flex: 1;
    margin: 5px 6px;
    padding: 5px 8px;
    border-radius: var(--bs-border-radius-sm);
    border: 0.5px solid var(--bs-primary-border-subtle);
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font-size: var(--fs-sm);
    outline: none;
}
/* /Components/ChatBlaze/ContextPanel.razor.rz.scp.css */
.context-panel[b-omnmfwe8y3] {
    display: flex;
    flex-direction: column;
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    box-shadow: var(--bs-box-shadow);
    margin: 12px 12px 12px 0;
    overflow: hidden;
    min-height: 0;
}

.panel-body[b-omnmfwe8y3] {
    flex: 1;
    overflow-y: auto;
    padding: 24px;
    min-height: 0;
}

/* ── Section headers (Suggested / Promoted) ── */
.ctx-section-header[b-omnmfwe8y3] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 0 10px;
    width: 100%;
}

.ctx-section-header--toggle[b-omnmfwe8y3] {
    margin-top: 16px;
    padding: 8px 0;
    background: none;
    border: none;
    border-top: 0.5px solid var(--bs-border-color);
    cursor: pointer;
    text-align: left;
}


.ctx-section-count[b-omnmfwe8y3] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--bs-secondary-bg);
    border: 0.5px solid var(--bs-border-color);
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--bs-secondary);
}

.ctx-section-chevron[b-omnmfwe8y3] {
    margin-left: auto;
    font-size: 0.7rem;
    color: var(--bs-text-muted);
}

/* ── Discovery empty state ── */
.discovery-hint[b-omnmfwe8y3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 2rem 1rem;
    gap: 0.5rem;
}

.discovery-icon[b-omnmfwe8y3] {
    font-size: 2rem;
    opacity: 0.3;
    margin-bottom: 0.25rem;
}

.discovery-hint-text[b-omnmfwe8y3] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    line-height: 1.5;
    margin: 0;
}
/* /Components/ChatBlaze/DraftCard.razor.rz.scp.css */
/* ── Draft card - surface (bg/border/radius) comes from the .card class;
   the hover below darkens the border and adds a shadow. ── */
[b-gevzzc70wh] .draft-card,
.draft-card[b-gevzzc70wh] {
    padding: 0.85rem 0.9rem;
    margin-bottom: 0.6rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.draft-card:hover[b-gevzzc70wh] {
    border-color: var(--bs-border-color);
    box-shadow: var(--bs-box-shadow-sm);
}

/* ── Header ── */
.draft-card-header[b-gevzzc70wh] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.6rem;
    margin-bottom: 0.5rem;
}

.draft-card-title[b-gevzzc70wh] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
    line-height: 1.35;
    flex: 1;
    min-width: 0;
}

/* ── Description ── */
.draft-card-description[b-gevzzc70wh] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    line-height: 1.5;
    margin-bottom: 0.7rem;
}

.draft-card-description :last-child[b-gevzzc70wh] {
    margin-bottom: 0;
}

/* ── Metrics grid ── */
.draft-card-metrics[b-gevzzc70wh] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    margin-bottom: 0.7rem;
}

.draft-card-metric[b-gevzzc70wh] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    min-width: 0;
    padding: 0.6rem 0.65rem;
    background: var(--bs-body-bg);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.draft-card-metric-label[b-gevzzc70wh] {
    line-height: 1.25;
}

/* Pushes the value/level block to the bottom so the saving figure and the
   complexity/effort levels line up across all three boxes. */
.draft-card-metric-content[b-gevzzc70wh] {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    min-width: 0;
}

.draft-card-metric-value[b-gevzzc70wh] {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--bs-secondary);
    line-height: 1.2;
}

/* Headline saving figure. */
.draft-card-metric--saving[b-gevzzc70wh]  .potential-value {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: -0.01em;
}

.draft-card-metric-empty[b-gevzzc70wh] {
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--bs-text-muted);
}

/* ── Tags ── */
.draft-card-tags[b-gevzzc70wh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-bottom: 0.7rem;
}

.draft-card-tag[b-gevzzc70wh] {
    display: inline-block;
    font-size: var(--fs-xs);
    font-weight: 500;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    background: var(--bs-secondary-bg);
    border: 0.5px solid var(--bs-border-color);
    color: var(--bs-secondary);
    white-space: nowrap;
}

/* ── Actions ── */
.draft-card-actions[b-gevzzc70wh] {
    display: flex;
    flex-wrap: wrap;
    margin-top: 0.7rem;
    justify-content: space-between;
}

.dismiss-btn[b-gevzzc70wh] {
    white-space: nowrap;
}

.draft-card-link[b-gevzzc70wh] {
    flex: 1;
    text-align: center;
}

/* ── Details toggle ── */
.draft-card-details-toggle[b-gevzzc70wh] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.6rem;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
}

.draft-card-details-toggle:hover[b-gevzzc70wh] {
    color: var(--bs-secondary);
}

.draft-card-details[b-gevzzc70wh] {
    border-top: 0.5px solid var(--bs-border-color);
    padding-top: 0.5rem;
    margin-top: 0.5rem;
}

.draft-card-row[b-gevzzc70wh] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    margin-bottom: 0.4rem;
    font-size: var(--fs-sm);
    line-height: 1.4;
    color: var(--bs-secondary);
}


.draft-card-list[b-gevzzc70wh] {
    padding-left: 1.2rem;
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
}

.draft-card-feedback[b-gevzzc70wh] {
    display: flex;
    gap: 5px;
    margin-top: 0.6rem;
    padding-top: 0.5rem;
    border-top: 0.5px dashed var(--bs-border-color);
}
/* /Components/Layout/FeedbackModal.razor.rz.scp.css */
.feedback-backdrop[b-17yvniv3bs] {
    z-index: 1050;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-4ysppfbvsb] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

main[b-4ysppfbvsb] {
    flex: 1;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

main .content[b-4ysppfbvsb] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.sidebar[b-4ysppfbvsb] {
    background: var(--bs-bg-card);
    transition: width 0.2s ease, min-width 0.2s ease;
    /* The sidebar is position:sticky and thus its own stacking context; without
       a z-index the workspace popover (fixed, reaching over the main area in
       collapsed mode) would paint underneath the page content. Stay below
       Bootstrap's fixed/modal layers (1030+). */
    z-index: 1020;
}

@media (min-width: 641px) {
    .page[b-4ysppfbvsb] {
        flex-direction: row;
    }

    .sidebar[b-4ysppfbvsb] {
        width: 260px;
        min-width: 260px;
        height: 100vh;
        position: sticky;
        top: 0;
        overflow: hidden;
    }

    .page.sidebar-collapsed .sidebar[b-4ysppfbvsb] {
        width: 72px;
        min-width: 72px;
    }
}

@media (max-width: 640px) {
    /* Without this, .sidebar sat in normal flow at its content height (the full
       nav-root, unconstrained) inside a column .page with overflow:hidden - it
       covered the viewport, nothing below it could be reached, and its own
       toggle scrolled out of view with it (AIG-434). Off-canvas + a bounded
       height fixes both: it's reachable only via TopBar's hamburger button, and
       NavMenu's .nav-scrollable can finally scroll within a real viewport height. */
    .sidebar[b-4ysppfbvsb] {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        width: min(85vw, 300px);
        min-width: 0;
        transform: translateX(-100%);
        transition: transform 0.2s ease;
    }

    .page.mobile-nav-open .sidebar[b-4ysppfbvsb] {
        transform: translateX(0);
    }

    /* A <button>, not a plain <div>, so keyboard users can reach and activate the
       dismiss surface - reset its default chrome so it still reads as a bare
       full-viewport overlay rather than a visible button. */
    .mobile-nav-backdrop[b-4ysppfbvsb] {
        position: fixed;
        inset: 0;
        border: none;
        padding: 0;
        appearance: none;
        background: rgba(0, 0, 0, 0.4);
        cursor: default;
        /* Below the sidebar's own 1020 so the open drawer stays visible above
           the dimmed backdrop, but above the topbar/content underneath it. */
        z-index: 1015;
    }
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.nav-root[b-7ky1kypq2k] {
    height: 100%;
    display: flex;
    flex-direction: column;
}

.nav-toggle-row[b-7ky1kypq2k] {
    padding: 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 64px;
    gap: 10px;
}

.nav-branding-link[b-7ky1kypq2k] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}

[b-7ky1kypq2k] .app-logo {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    object-fit: contain;
    display: block;
}

.nav-branding[b-7ky1kypq2k] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.1rem;
    text-align: left;
}

.app-name[b-7ky1kypq2k] {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--bs-body-color);
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.app-company[b-7ky1kypq2k] {
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--bs-secondary);
    line-height: 1.2;
    margin-top: 0.1rem;
}

.beta-badge[b-7ky1kypq2k] {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    padding: 0.15rem 0.45rem;
    border-radius: 0.25rem;
    background: var(--bs-warning);

    vertical-align: middle;
    line-height: 1;
    text-transform: uppercase;
}

.navbar-toggler[b-7ky1kypq2k] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}

.navbar-toggler-label[b-7ky1kypq2k] {
    width: 2.25rem;
    height: 2.25rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--bs-secondary);
    background-color: color-mix(in srgb, var(--bs-bg-card) 88%, transparent);
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    cursor: pointer;
}

.navbar-toggler-label:hover[b-7ky1kypq2k] {
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

.navbar-toggler:focus-visible+.navbar-toggler-label[b-7ky1kypq2k] {
    outline: 2px solid var(--bs-primary-border-subtle);
    outline-offset: 2px;
}

.navbar-toggler:checked+.navbar-toggler-label[b-7ky1kypq2k] {
    color: var(--bs-primary);
    background-color: color-mix(in srgb, var(--accent-blue-light) 55%, var(--bs-bg-card));
}

/* Navigation group headers (AIG-541) - Overview sits above them without a header. */
.nav-overview[b-7ky1kypq2k] {
    padding-top: 1rem;
}

.nav-section-header[b-7ky1kypq2k] {
    padding: 0.75rem 0 0.5rem 1.5rem;
}

/* Workspace selector */
.nav-workspace-section[b-7ky1kypq2k] {
    padding: 0.75rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--bs-border-color);
    position: relative;
    background: var(--bs-bg-card);
}

.workspace-selector-card[b-7ky1kypq2k] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: 0.625rem 0.75rem;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease;
    background: var(--bs-body-bg);
}

.workspace-selector-card:hover[b-7ky1kypq2k] {
    background-color: color-mix(in srgb, var(--accent-blue-light) 40%, var(--bs-bg-card));
}

.workspace-selector-card--pulse[b-7ky1kypq2k] {
    animation: workspace-border-pulse-b-7ky1kypq2k 800ms ease-out;
}

.workspace-selector-card:focus-visible[b-7ky1kypq2k] {
    outline: 2px solid var(--bs-primary-border-subtle);
    outline-offset: 2px;
}

.workspace-selector-label[b-7ky1kypq2k] {
    margin-bottom: 0.375rem;
    padding-left: 0.25rem;
}

.workspace-selector-row[b-7ky1kypq2k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.125rem;
}

.workspace-avatar[b-7ky1kypq2k] {
    width: 32px;
    height: 32px;
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-primary-text-emphasis);
    color: var(--bs-bg-card);
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.workspace-avatar--light[b-7ky1kypq2k] {
    background: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
}

.workspace-avatar-sm[b-7ky1kypq2k] {
    width: 24px;
    height: 24px;
}

.workspace-name[b-7ky1kypq2k] {
    flex: 1;
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--bs-body-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.workspace-expand-icon[b-7ky1kypq2k] {
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    flex-shrink: 0;
}

.ws-roll>span[b-7ky1kypq2k] {
    grid-area: 1 / 1;
    min-width: 0;
}

.ws-roll-out[b-7ky1kypq2k] {
    animation: ws-roll-out-b-7ky1kypq2k 320ms ease-in-out both;
}

.ws-roll-out+.ws-roll-in[b-7ky1kypq2k] {
    animation: ws-roll-in-b-7ky1kypq2k 320ms ease-in-out both;
}

@media (prefers-reduced-motion: reduce) {
    .ws-roll-out[b-7ky1kypq2k] {
        display: none;
    }

    .ws-roll-out+.ws-roll-in[b-7ky1kypq2k] {
        animation: none;
    }
}

@keyframes ws-roll-out-b-7ky1kypq2k {
    from {
        transform: translateY(0);
        opacity: 1;
    }

    to {
        transform: translateY(-120%);
        opacity: 0;
    }
}

@keyframes ws-roll-in-b-7ky1kypq2k {
    from {
        transform: translateY(120%);
        opacity: 0;
    }

    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes workspace-border-pulse-b-7ky1kypq2k {
    0% {
        box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.45);
    }

    55% {
        box-shadow: 0 0 0 3px rgba(var(--bs-primary-rgb), 0.22);
    }

    100% {
        box-shadow: 0 0 0 0px transparent;
    }
}

/* AIG-294: shown next to the workspace name when the current user only has Reader access. */
.workspace-readonly-badge[b-7ky1kypq2k] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.1rem 0.5rem;
    border-radius: 99px;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-text-muted);
    background-color: var(--bs-secondary-bg);
    flex-shrink: 0;
    white-space: nowrap;
}

/* Dropdown */
.workspace-dropdown-backdrop[b-7ky1kypq2k] {
    position: fixed;
    inset: 0;
    z-index: 1000;
}

.workspace-dropdown[b-7ky1kypq2k] {
    position: absolute;
    top: calc(100% + 0.25rem);
    left: 0.75rem;
    right: 0.75rem;
    z-index: 1001;
    background: var(--bs-bg-card);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow);
    padding: 0.375rem 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    max-height: min(28rem, calc(100vh - 2rem));
}

@media (min-width: 641px) {

    /* The sidebar clips overflowing children (overflow: hidden), so the panel is
       anchored to the viewport just right of the 260px rail, top-aligned with
       the selector card - it flies out next to the sidebar, not over it. */
    .workspace-dropdown[b-7ky1kypq2k] {
        position: fixed;
        top: 100px;
        left: calc(260px + 8px);
        right: auto;
        width: 320px;
        max-height: calc(100vh - 120px);
    }
}

.workspace-dropdown-search[b-7ky1kypq2k] {
    padding: 0.375rem 0.75rem 0.25rem;
    flex-shrink: 0;
}

/* Only the workspace list scrolls - search, header and footer stay put so the
   "browse all" action is always reachable even on short viewports (AIG-466). */
.workspace-dropdown-list[b-7ky1kypq2k] {
    overflow-y: auto;
    min-height: 0;
}

.workspace-dropdown-empty[b-7ky1kypq2k] {
    padding: 0.375rem 0.75rem;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* flex-wrap keeps longer translations (e.g. German) from overflowing the panel. */
.workspace-dropdown-footer[b-7ky1kypq2k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.125rem 0.25rem;
    padding: 0 0.375rem 0.125rem;
}

.workspace-dropdown-footer .workspace-dropdown-action[b-7ky1kypq2k] {
    width: auto;
}

.workspace-dropdown-header[b-7ky1kypq2k] {
    padding: 0.75rem 1.5rem 0.5rem;
}

.workspace-dropdown-item[b-7ky1kypq2k] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem 0.625rem;
    margin: 0.25rem 1rem;
    border: none;
    background: transparent;
    border-radius: var(--bs-border-radius);
    cursor: pointer;
    color: var(--bs-body-color);
    text-align: left;
    transition: background-color 0.12s ease;
    width: calc(100% - 2rem);
}

.workspace-dropdown-item:hover[b-7ky1kypq2k] {
    background-color: color-mix(in srgb, var(--bs-body-color) 5%, var(--bs-bg-card));
}

.workspace-dropdown-item--active[b-7ky1kypq2k],
.workspace-dropdown-item--active:hover[b-7ky1kypq2k] {
    background-color: var(--accent-blue-light);
}

.workspace-dropdown-item-name[b-7ky1kypq2k] {
    flex: 1;
    font-size: var(--fs-base);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.workspace-dropdown-check[b-7ky1kypq2k] {
    color: var(--bs-primary-text-emphasis);
    font-size: 1rem;
    flex-shrink: 0;
}

.workspace-dropdown-divider[b-7ky1kypq2k] {
    margin: 0.375rem 0.75rem;
    border-color: var(--bs-border-color);
}

.workspace-dropdown-action[b-7ky1kypq2k] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.375rem 0.75rem;
    color: var(--bs-secondary);
    font-size: var(--fs-base);
    text-decoration: none;
    transition: background-color 0.12s ease, color 0.12s ease;
    border-radius: var(--bs-border-radius-sm);
    margin: 0 0.125rem;
    width: calc(100% - 0.25rem);
}

.workspace-dropdown-action:hover[b-7ky1kypq2k] {
    background-color: color-mix(in srgb, var(--accent-blue-light) 25%, var(--bs-bg-card));
    color: var(--bs-body-color);
}

.workspace-dropdown-action .bi[b-7ky1kypq2k] {
    font-size: 1rem;
    flex-shrink: 0;
}

.nav-item[b-7ky1kypq2k] {
    font-size: var(--fs-base);
    padding-bottom: 0.5rem;
}

.nav-item:first-of-type[b-7ky1kypq2k] {
    padding-top: 0.25rem;
}

.nav-item:last-of-type[b-7ky1kypq2k] {
    padding-bottom: 0.5rem;
}

.nav-item[b-7ky1kypq2k]  a {
    color: var(--bs-secondary);
    border-radius: var(--bs-border-radius-sm);
    height: 2.75rem;
    display: flex;
    align-items: center;
    line-height: 1;
    gap: 0.75rem;
    padding: 0 0.5rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.nav-item[b-7ky1kypq2k]  .bi {
    font-size: 1rem;
    line-height: 1;
}

.nav-item[b-7ky1kypq2k]  a.active {
    background-color: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
    font-weight: 600;
}

.nav-item[b-7ky1kypq2k]  a:hover {
    background-color: color-mix(in srgb, var(--accent-blue-light) 40%, var(--bs-bg-card));
    color: var(--bs-body-color);
}

.nav-item[b-7ky1kypq2k]  a.active:hover {
    background-color: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
}

.nav-scrollable[b-7ky1kypq2k] {
    display: block;
    overflow-y: auto;
    flex: 1;
    padding-bottom: 0.5rem;
}

/* Utility section (notifications + administration) */
.nav-utility-section[b-7ky1kypq2k] {
    background: color-mix(in srgb, var(--accent-blue-light) 40%, var(--bs-bg-card));
    border-top: 1px solid var(--bs-border-color);
    padding: 0.5rem 0 0;
}

/* User info section */
.nav-user-info[b-7ky1kypq2k] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem;
    background: var(--bs-bg-card);
    border-top: 1px solid var(--bs-border-color);
}

.nav-user-avatar[b-7ky1kypq2k] {
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: var(--bs-primary-text-emphasis);
    color: var(--bs-bg-card);
    font-size: var(--fs-xs);
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    text-decoration: none;
    overflow: hidden;
}

.nav-user-avatar-img[b-7ky1kypq2k] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

.nav-user-details[b-7ky1kypq2k] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    overflow: hidden;
}

.nav-user-name[b-7ky1kypq2k] {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-body-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-user-role[b-7ky1kypq2k] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.nav-user-menu .dropdown-menu[b-7ky1kypq2k] {
    bottom: 100%;
    right: 0;
    margin-bottom: 0.25rem;
    min-width: 11rem;
}

/* Development menu toggle and plain nav buttons (e.g. Feedback) - mirror
   .nav-item ::deep a but are native buttons, so they can drive a dropdown or
   dialog instead of navigating. */
.nav-dev-menu-toggle[b-7ky1kypq2k],
.nav-button[b-7ky1kypq2k] {
    width: 100%;
    border: none;
    background: none;
    font: inherit;
    text-align: left;
    cursor: pointer;
    color: var(--bs-secondary);
    border-radius: var(--bs-border-radius-sm);
    height: 2.75rem;
    display: flex;
    align-items: center;
    line-height: 1;
    gap: 0.75rem;
    padding: 0 0.5rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.nav-dev-menu-toggle .bi[b-7ky1kypq2k],
.nav-button .bi[b-7ky1kypq2k] {
    font-size: 1rem;
    line-height: 1;
}

.nav-dev-menu-toggle:hover[b-7ky1kypq2k],
.nav-dev-menu-toggle[aria-expanded="true"][b-7ky1kypq2k],
.nav-button:hover[b-7ky1kypq2k] {
    background-color: color-mix(in srgb, var(--accent-blue-light) 40%, var(--bs-bg-card));
    color: var(--bs-body-color);
}

.nav-dev-menu-toggle .nav-dev-menu-caret[b-7ky1kypq2k] {
    margin-left: auto;
    font-size: var(--fs-xs);
    flex-shrink: 0;
}

.nav-dev-menu .dropdown-menu[b-7ky1kypq2k] {
    top: 100%;
    left: 0;
    margin-top: 0.25rem;
    min-width: 11rem;
}

/* Full-viewport click target behind an open nav dropdown (user menu, dev
   menu, ...); the dropdown itself (Bootstrap z-index 1000) stays above it. */
.nav-dropdown-backdrop[b-7ky1kypq2k] {
    position: fixed;
    inset: 0;
    z-index: 999;
}

@media (max-width: 640px) {
    /* This toggle only ever changed the desktop 260px/72px rail width, which
       doesn't apply to the mobile off-canvas drawer (MainLayout.razor.css) - on
       mobile the drawer is opened/closed via TopBar's hamburger button and the
       backdrop, so hide the now-inert control instead of leaving a dead button. */
    .navbar-toggler-label[b-7ky1kypq2k] {
        display: none;
    }
}

@media (min-width: 641px) {

    /* Stack logo above the toggle button - side by side they don't fit
       into the 72px collapsed width and the toggle overlays the logo. */
    .nav-root.collapsed .nav-toggle-row[b-7ky1kypq2k] {
        flex-direction: column;
        justify-content: center;
        height: auto;
        padding: 12px 8px;
        gap: 8px;
    }

    .nav-root.collapsed .nav-branding-link[b-7ky1kypq2k] {
        flex: 0 0 auto;
    }

    .nav-root.collapsed[b-7ky1kypq2k]  .app-logo {
        width: 32px;
        height: 32px;
    }

    .nav-root.collapsed .nav-branding[b-7ky1kypq2k] {
        display: none;
    }

    /* The rail has no room for group labels - a divider keeps the groups apart. */
    .nav-root.collapsed .nav-section-header[b-7ky1kypq2k] {
        font-size: 0;
        padding: 0;
        margin: 0.25rem 1rem 0.5rem;
        border-top: 1px solid var(--bs-border-color);
    }

    /* Workspace selector collapses to the avatar; the dropdown stays usable. */
    .nav-root.collapsed .nav-workspace-section[b-7ky1kypq2k] {
        padding: 0.5rem;
    }

    .nav-root.collapsed .workspace-selector-card[b-7ky1kypq2k] {
        padding: 0.5rem;
    }

    .nav-root.collapsed .workspace-selector-row[b-7ky1kypq2k] {
        justify-content: center;
    }

    .nav-root.collapsed .workspace-selector-label[b-7ky1kypq2k],
    .nav-root.collapsed .workspace-readonly-badge[b-7ky1kypq2k],
    .nav-root.collapsed .workspace-expand-icon[b-7ky1kypq2k] {
        display: none;
    }

    /* The name carries Bootstrap's d-grid (display: grid !important) for the
       rolling animation; left in the row it still takes the gap and pushes
       the avatar off-centre. */
    .nav-root.collapsed .workspace-name[b-7ky1kypq2k] {
        display: none !important;
    }

    /* The sidebar clips overflowing children, so anchor the dropdown to the
       viewport just right of the collapsed 72px rail instead of inside it. */
    .nav-root.collapsed .workspace-dropdown[b-7ky1kypq2k] {
        position: fixed;
        top: 104px;
        left: 80px;
        right: auto;
        width: 280px;
    }

    .nav-root.collapsed .nav-user-menu .dropdown-menu[b-7ky1kypq2k] {
        position: fixed;
        bottom: 1rem;
        left: 80px;
        right: auto;
    }

    .nav-root.collapsed .nav-dev-menu .dropdown-menu[b-7ky1kypq2k] {
        position: fixed;
        top: auto;
        bottom: 1rem;
        left: 80px;
        right: auto;
    }

    /* Buttons don't stretch like the links, so subtract the margin from
       their 100% width or they overflow the rail and sit off-centre. */
    .nav-root.collapsed .nav-dev-menu-toggle[b-7ky1kypq2k],
    .nav-root.collapsed .nav-button[b-7ky1kypq2k] {
        justify-content: center;
        gap: 0;
        padding: 0;
        margin: 0 0.5rem;
        width: calc(100% - 1rem);
    }

    .nav-root.collapsed .nav-dev-menu-toggle .nav-dev-menu-caret[b-7ky1kypq2k] {
        display: none;
    }

    .nav-root.collapsed .nav-item[b-7ky1kypq2k] {
        padding-bottom: 0.25rem;
    }

    .nav-root.collapsed .nav-item.px-3[b-7ky1kypq2k] {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .nav-root.collapsed .nav-item[b-7ky1kypq2k]  a {
        justify-content: center;
        gap: 0;
        padding: 0;
        margin: 0 0.5rem;
        position: relative;
    }

    .nav-root.collapsed .nav-link-text[b-7ky1kypq2k] {
        display: none;
    }

    .nav-root.collapsed .nav-item[b-7ky1kypq2k]  .bi {
        margin: 0;
        font-size: 1.1rem;
    }

    /* User section: stack avatar, memory and settings so every entry
       stays reachable in the collapsed rail. */
    .nav-root.collapsed .nav-user-info[b-7ky1kypq2k] {
        flex-direction: column;
        justify-content: center;
        gap: 0.5rem;
        padding: 0.75rem 0.5rem;
    }

    .nav-scrollable[b-7ky1kypq2k] {
        height: auto;
    }

    /* A scrollbar would push the scrolling icons off the rail's centre line;
       reserving the gutter on both edges keeps them aligned with the rest. */
    .nav-root.collapsed .nav-scrollable[b-7ky1kypq2k] {
        scrollbar-gutter: stable both-edges;
    }
}
/* /Components/Layout/NavNotifications.razor.rz.scp.css */
/* The entry mirrors the NavMenu link styling; it lives in its own component
   (and CSS scope) so the hover popover state can be self-contained. */

.nav-item[b-3grpioqcfn] {
    font-size: var(--fs-base);
    padding-bottom: 0.5rem;
}

.nav-item[b-3grpioqcfn]  a {
    color: var(--bs-secondary);
    border-radius: var(--bs-border-radius-sm);
    height: 2.75rem;
    display: flex;
    align-items: center;
    line-height: 1;
    gap: 0.75rem;
    padding: 0 0.5rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.nav-item[b-3grpioqcfn]  .bi {
    font-size: 1rem;
    line-height: 1;
}

.nav-item[b-3grpioqcfn]  a.active {
    background-color: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
    font-weight: 600;
}

.nav-item[b-3grpioqcfn]  a:hover {
    background-color: color-mix(in srgb, var(--accent-blue-light) 60%, var(--bs-bg-card));
    color: var(--bs-body-color);
}

.nav-item[b-3grpioqcfn]  a.active:hover {
    background-color: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
}

/* Quick view popover - fixed so it can reach over the overflow-hidden sidebar. */
.notification-popover[b-3grpioqcfn] {
    position: fixed;
    left: calc(260px + 8px);
    bottom: 3.5rem;
    width: 320px;
    background: var(--bs-bg-card);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    z-index: 1021;
}

.notification-popover-header[b-3grpioqcfn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.notification-popover-title[b-3grpioqcfn] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
}

.notification-popover-clear[b-3grpioqcfn] {
    border: none;
    background: none;
    padding: 0;
    font-size: var(--fs-sm);
    color: var(--bs-primary);
    cursor: pointer;
    flex-shrink: 0;
}

.notification-popover-clear:hover[b-3grpioqcfn] {
    text-decoration: underline;
}

.notification-popover-clear:disabled[b-3grpioqcfn] {
    opacity: 0.6;
    cursor: default;
}

.notification-popover-body[b-3grpioqcfn] {
    padding: 0.25rem 0;
    max-height: 320px;
    overflow-y: auto;
}

.notification-popover-item[b-3grpioqcfn] {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
    padding: 0.5rem 1rem;
}

.notification-popover-dot[b-3grpioqcfn] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--bs-primary);
    margin-top: 0.35rem;
    flex-shrink: 0;
}

.notification-popover-dot--release-note[b-3grpioqcfn] {
    background: var(--bs-primary-text-emphasis);
}

.notification-popover-dot--review[b-3grpioqcfn] {
    background: var(--bs-warning);
}

.notification-popover-item-text[b-3grpioqcfn] {
    min-width: 0;
}

.notification-popover-item-title[b-3grpioqcfn] {
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    overflow-wrap: anywhere;
}

.notification-popover-item-meta[b-3grpioqcfn] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    margin-top: 0.125rem;
    min-width: 0;
}

.notification-popover-item-time[b-3grpioqcfn] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.notification-popover-empty[b-3grpioqcfn] {
    padding: 0.75rem 1rem;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.notification-popover-footer[b-3grpioqcfn] {
    border-top: 1px solid var(--bs-border-color);
    padding: 0.625rem 1rem;
}

.notification-popover-footer a[b-3grpioqcfn] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    text-decoration: none;
}

.notification-popover-footer a:hover[b-3grpioqcfn] {
    color: var(--bs-primary);
}

@media (min-width: 641px) {
    .collapsed .nav-item.px-3[b-3grpioqcfn] {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .collapsed .nav-item[b-3grpioqcfn]  a {
        justify-content: center;
        gap: 0;
        padding: 0;
        margin: 0 0.5rem;
        position: relative;
    }

    .collapsed .nav-link-text[b-3grpioqcfn] {
        display: none;
    }

    .collapsed .nav-item[b-3grpioqcfn]  .bi {
        margin: 0;
        font-size: 1.1rem;
    }

    .collapsed .notification-popover[b-3grpioqcfn] {
        left: 80px;
    }
}
/* /Components/Layout/OnboardingLayout.razor.rz.scp.css */
/* ── Onboarding layout ────────────────────────────────────────────────── */

.onboarding-layout[b-f0ooaomv5z] {
    min-height: 100vh;
    background-color: var(--bs-secondary-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
}

.onboarding-layout-card[b-f0ooaomv5z] {
    background: var(--bs-body-bg);
    border-radius: 1rem;
    box-shadow: var(--bs-box-shadow-lg);
    width: 100%;
    max-width: 1100px;
    overflow: hidden;
}

.onboarding-layout-header[b-f0ooaomv5z] {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 1.25rem 2rem;
}

[b-f0ooaomv5z] .onboarding-layout-logo {
    height: 2.5rem;
    width: auto;
}

.onboarding-layout-brand[b-f0ooaomv5z] {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.onboarding-layout-brand-name[b-f0ooaomv5z] {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--bs-body-color);
}


.onboarding-layout-body[b-f0ooaomv5z] {
    /* body rendered by @Body */
}
/* /Components/Layout/TopBar.razor.rz.scp.css */
.topbar[b-zi9p0uix6s] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 0 16px;
    background: var(--bs-bg-card);
    height: 65px;
    flex-shrink: 0;
    position: sticky;
    top: 0;
    z-index: 10;
}

/* Page-specific content (title + actions) injected via the page-topbar section. */
.topbar-start[b-zi9p0uix6s] {
    display: flex;
    align-items: center;
    flex: 1;
    min-width: 0;
}

.topbar-btn[b-zi9p0uix6s] {
    min-height: 28px;
    font-size: var(--fs-sm);
}

.topbar-icon-btn[b-zi9p0uix6s] {
    flex-shrink: 0;
}

/* Opens the off-canvas sidebar on narrow viewports (see MainLayout.razor.css);
   the sidebar's own toggle is unreachable there since it lives inside the
   sidebar itself, which starts hidden off-screen. */
.mobile-menu-btn[b-zi9p0uix6s] {
    display: none;
    margin-right: 8px;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .mobile-menu-btn[b-zi9p0uix6s] {
        display: inline-flex;
    }
}

/* /Components/Pages/ChatBlaze.razor.rz.scp.css */
.main-grid[b-c720uc88mi] {
    display: grid;
    grid-template-columns: var(--history-col-width, 240px) 1fr 480px;
    grid-template-rows: 1fr auto;
    grid-template-areas:
        "history chat  panel"
        "history input input";
    height: 100%;
    overflow: hidden;
}

/* Left history sidebar collapsed to a thin icon rail. */
.main-grid.history-collapsed[b-c720uc88mi] {
    --history-col-width: 56px;
}

/* Right hypotheses panel hidden (Panel toggle off): collapse its column (input then spans full width). */
.main-grid.panel-collapsed[b-c720uc88mi] {
    grid-template-columns: var(--history-col-width, 240px) 1fr 0;
}

.main-grid > *[b-c720uc88mi] {
    min-height: 0;
    min-width: 0;
}

/* Grid placement for the chat layout. The history sidebar spans both rows (full height); the
   hypotheses panel only occupies the top row; the input bar spans the chat + panel columns. */
.main-grid[b-c720uc88mi]  .chat-history-sidebar {
    grid-area: history;
}

.chat-column[b-c720uc88mi] {
    grid-area: chat;
}

.main-grid[b-c720uc88mi]  .context-panel {
    grid-area: panel;
}

.chat-input-area[b-c720uc88mi] {
    grid-area: input;
    min-width: 0;
    /* No overflow clipping here: the data-sources popover opens upward out of this row. */
}

/* ── Panel show/hide toggle (rendered in the page top bar) ── */
/* Layout only - appearance comes from the standard .btn-outline-secondary (inactive) /
   .btn-outline-info (active) classes applied in the markup. */
.panel-toggle-btn[b-c720uc88mi] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    --bs-btn-font-weight: 500;
}

/* Count of open (not-promoted) suggested hypotheses - keeps them visible when the panel is collapsed. */
.panel-toggle-badge[b-c720uc88mi] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--bs-primary);
    color: var(--white);
    font-size: var(--fs-xs);
    font-weight: 700;
    border: 1px solid var(--bs-border-color);
}

.chat-column[b-c720uc88mi] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
    position: relative;
}

/* ── Sharing control (AIG-343, rendered in the page top bar) ──
   .menu-backdrop/.menu-dropdown/.menu-item are Blazor-scoped to their own component, so this page's
   own dropdown (rendered directly in ChatBlaze.razor, not inside ChatHistory) needs its own copies -
   kept in sync with Components/ChatBlaze/ChatHistory.razor.css. ── */
.menu-backdrop[b-c720uc88mi] {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: transparent;
}

.menu-dropdown[b-c720uc88mi] {
    position: absolute;
    top: calc(100% - 4px);
    right: 4px;
    z-index: 41;
    min-width: 150px;
    padding: 4px;
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow-lg);
}

.menu-item[b-c720uc88mi] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 7px 10px;
    border: none;
    background: none;
    border-radius: var(--bs-border-radius-sm);
    font-size: var(--fs-base);
    color: var(--bs-body-color);
    cursor: pointer;
    text-align: left;
}

.menu-item:hover[b-c720uc88mi] {
    background: var(--bs-secondary-bg);
}

.sharing-dropdown-wrap[b-c720uc88mi] {
    position: relative;
}

.sharing-toggle-btn[b-c720uc88mi] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.sharing-menu-dropdown[b-c720uc88mi] {
    min-width: 220px;
}

.sharing-menu-item-text[b-c720uc88mi] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
}

.sharing-menu-item-hint[b-c720uc88mi] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    font-weight: 400;
}

/* Read-only badge shown to a viewer of a chat shared with them (AIG-343) - same shape as the
   workspace read-only badge in NavMenu. */
.chat-readonly-badge[b-c720uc88mi] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.1rem 0.5rem;
    border-radius: 99px;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-text-muted);
    background-color: var(--bs-secondary-bg);
    white-space: nowrap;
}

/* Reader's "read-only" info banner replacing the composer (AIG-343, in ChatInputBar). */
.chat-readonly-banner[b-c720uc88mi] {
    display: flex;
    align-items: center;
    font-size: var(--fs-sm);
}

/* Start screen (AIG-517): the composer sits in the middle of the page, right below the start
   hero, instead of at the bottom. Desktop only - the stacked phone layout keeps its order. */
@media (min-width: 641px) {
    .main-grid.is-start[b-c720uc88mi] {
        grid-template-rows: 1fr auto 1fr;
        grid-template-areas:
            "history chat  panel"
            "history input panel"
            "history .     panel";
    }

    /* Compact composer until the first message: centred under the hero instead of a full-width
       band. The chat switches to the full-width bottom bar once it starts. */
    .main-grid.is-start .chat-input-area[b-c720uc88mi] {
        justify-self: center;
        width: 100%;
        max-width: 820px;
    }

    .main-grid.is-start .chat-input-area[b-c720uc88mi]  .input-area {
        border-top: none;
        background: transparent;
    }
}

@media (max-width: 900px) {
    .main-grid[b-c720uc88mi] {
        grid-template-columns: var(--history-col-width, 200px) 1fr 340px;
    }
}

@media (max-width: 640px) {
    .main-grid[b-c720uc88mi] {
        grid-template-columns: 1fr;
        grid-template-rows: auto 1fr auto auto;
        grid-template-areas:
            "history"
            "chat"
            "panel"
            "input";
    }
}
/* /Components/Pages/ConversationInspector.razor.rz.scp.css */
.inspector-layout[b-pgq51ob2vi] {
    display: flex;
    gap: 1rem;
    height: calc(100vh - 280px);
    min-height: 320px;
}

/* Surface comes from the .card class. */
.inspector-sessions[b-pgq51ob2vi] {
    width: 300px;
    flex-shrink: 0;
    overflow-y: auto;
    padding: 6px;
    gap: 4px;
}

.inspector-session[b-pgq51ob2vi] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    text-align: left;
    width: 100%;
    border: none;
    background: transparent;
    border-radius: var(--bs-border-radius-sm);
    padding: 8px 10px;
    cursor: pointer;
    color: var(--bs-body-color);
    transition: background 0.15s;
}

.inspector-session:hover[b-pgq51ob2vi] {
    background: var(--bs-secondary-bg);
}

.inspector-session.active[b-pgq51ob2vi] {
    background: var(--accent-blue-light);
}

.inspector-session-title[b-pgq51ob2vi] {
    font-size: var(--fs-sm);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.inspector-session-meta[b-pgq51ob2vi] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Mirror TestChat's scroll container (its .chat-messages is component-scoped to TestChat). */
.chat-messages[b-pgq51ob2vi] {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
    background: var(--bs-secondary-bg);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

/* Surface comes from the .card class. */
.inspector-context[b-pgq51ob2vi] {
    width: 360px;
    flex-shrink: 0;
    overflow-y: auto;
    padding: 12px;
    gap: 12px;
}

.inspector-context-title[b-pgq51ob2vi] {
    font-size: var(--fs-sm);
    font-weight: 600;
    margin: 0;
    color: var(--bs-body-color);
    display: flex;
    align-items: center;
    gap: 6px;
}

.inspector-context-snapshot[b-pgq51ob2vi] {
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-secondary-bg);
    overflow: scroll;
}

.inspector-context-snapshot-header[b-pgq51ob2vi] {
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--bs-text-muted);
    padding: 6px 8px;
    border-bottom: 0.5px solid var(--bs-border-color);
}

/*
    The snapshot text is rendered in a bare <pre>, so it inherits the browser default (no wrapping)
    and forces horizontal scrolling. ChatMessageView's matching .system-message-content rule is
    component-scoped and does not reach this element, so wrap the long context text here too.
*/
.system-message-content[b-pgq51ob2vi] {
    margin: 0;
    padding: 6px 8px;
    white-space: pre-wrap;
    word-break: break-word;
    overflow-wrap: anywhere;
    font-family: var(--bs-font-monospace, monospace);
    font-size: var(--fs-xs);
    line-height: 1.5;
    color: var(--bs-body-color);
}
/* /Components/Pages/DataExplorer.razor.rz.scp.css */
.data-explorer-search[b-ic7x6aet0e] {
    min-width: 0;
    max-width: 24rem;
}
/* /Components/Pages/DataSources.razor.rz.scp.css */
/* Page-level layout: .page-section, .page-header etc. - wwwroot/app.css
   Item-card base: .item-list, .item-card, .item-card-header, .item-card-actions - wwwroot/app.css */

/* ── Outer card wrapping intro + dropzone ───────────────── */
.upload-card-intro[b-8gcsiu2met] {
    margin: 0;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

/* ── Tab bar: Documents / Data fields (mirrors the Discoveries page tabs) ── */
.datasources-tabs[b-8gcsiu2met] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    list-style: none;
    /* Inset from the card edges so the underline lines up with the panel content
       (p-3 / p-lg-4 on .datasources-tab-panel). */
    margin: 0 1rem;
    padding: 0.75rem 0 0;
    border-bottom: 1px solid var(--bs-border-color);
}

@media (min-width: 992px) {
    .datasources-tabs[b-8gcsiu2met] {
        margin: 0 1.5rem;
    }
}

.datasources-tab[b-8gcsiu2met] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1rem;
    border: none;
    background: none;
    color: var(--bs-text-muted);
    font-size: var(--fs-base);
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.datasources-tab:hover[b-8gcsiu2met] {
    color: var(--bs-body-color);
}

.datasources-tab.active[b-8gcsiu2met] {
    color: var(--bs-primary);
    border-bottom-color: var(--bs-primary);
}

.datasources-tab i[b-8gcsiu2met] {
    font-size: 1rem;
}

.datasources-tab-badge[b-8gcsiu2met] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 0.4rem;
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
    border-radius: 99px;
    font-size: var(--fs-xs);
    font-weight: 600;
}

/* Open field suggestions awaiting review (AIG-441). The badge is now reserved for
   this one case - plain counts are parenthesised beside the label instead. Brand
   blue rather than warning amber: these are an offer to review, not a problem -
   same treatment as the chip on a document card and the panel's own count. */
.datasources-tab-badge--attention[b-8gcsiu2met],
.datasources-tab.active .datasources-tab-badge--attention[b-8gcsiu2met] {
    gap: 0.2rem;
    background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
    color: var(--bs-primary);
}


/* ── Document list (rendered inside the upload card) ───── */
.document-list[b-8gcsiu2met] {
    list-style: none;
    margin: 0.5rem 0 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, max(460px, calc(50% - 0.5rem))), 1fr));
    align-content: start;
    gap: 0.5rem;
}

/* Processing and failed uploads (upload section above the tabs): one column, at most three
   cards tall, scrolling inside the card beyond that so a large upload batch never pushes the
   processed data down the page. The height is three cards plus the gaps between them; the
   failed box is narrower, so its error line may wrap - hence the slightly taller row. */
.document-list--bounded[b-8gcsiu2met] {
    --bounded-row-height: 6rem;
    grid-template-columns: 1fr;
    max-height: calc(3 * var(--bounded-row-height) + 2 * 1rem);
    overflow-y: auto;
    overscroll-behavior: contain;
}

.failed-uploads-box .document-list--bounded[b-8gcsiu2met] {
    --bounded-row-height: 7rem;
}

.failed-uploads-box[b-8gcsiu2met] {
    animation: failed-uploads-in-b-8gcsiu2met 0.3s ease-out;
}

@media (min-width: 1200px) {
    .upload-card[b-8gcsiu2met] {
        min-width: 0;
    }

    .failed-uploads-box[b-8gcsiu2met] {
        flex-basis: min(40%, 600px);
    }
}

@keyframes failed-uploads-in-b-8gcsiu2met {
    from {
        opacity: 0;
        transform: translateX(1rem);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .failed-uploads-box[b-8gcsiu2met] {
        animation: none;
    }
}


/* Plain tab counts (processed documents, data fields) - a parenthesised number rather
   than a pill, so they read as part of the label and not as an attention badge. */
.datasources-tab-count[b-8gcsiu2met] {
    font-weight: 400;
    color: var(--bs-text-muted);
}

.datasources-tab.active .datasources-tab-count[b-8gcsiu2met] {
    color: inherit;
}
/* /Components/Pages/DesignSystem.razor.rz.scp.css */
/* ── Design System page - component-scoped styles ───────── */

.ds-page[b-hh5hlyv3pk] {
    max-width: 960px;
}

.ds-section[b-hh5hlyv3pk] {
    margin-bottom: 3rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.ds-section:last-child[b-hh5hlyv3pk] {
    border-bottom: none;
}

.ds-section-title[b-hh5hlyv3pk] {
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--bs-body-color);
    margin-bottom: 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--bs-primary);
    display: inline-block;
}

.ds-sample-group[b-hh5hlyv3pk] {
    margin-bottom: 1.5rem;
    padding: 1rem;
    background: var(--bs-secondary-bg);
    border-radius: var(--bs-border-radius);
}

.ds-sample-row[b-hh5hlyv3pk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* ── Color swatches ─────────────────────────────────────── */

.ds-color-grid[b-hh5hlyv3pk] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.ds-color-swatch[b-hh5hlyv3pk] {
    height: 80px;
    border-radius: var(--bs-border-radius);
    display: flex;
    align-items: flex-end;
    padding: 0.5rem;
    position: relative;
}

.ds-color-label[b-hh5hlyv3pk] {
    font-size: var(--fs-xs);
    font-family: var(--bs-font-monospace);
    font-weight: 500;
    background: rgba(0, 0, 0, 0.5);
    color: #fff;
    padding: 2px 6px;
    border-radius: 4px;
    line-height: 1.3;
}

/* ── Palette shade ramps ────────────────────────────────── */

.ds-ramps[b-hh5hlyv3pk] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
}

.ds-ramp[b-hh5hlyv3pk] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.ds-ramp-name[b-hh5hlyv3pk] {
    width: 56px;
    padding-top: 0.75rem;
    font-size: var(--fs-sm);
    font-family: var(--bs-font-monospace);
    color: var(--bs-body-color);
    text-transform: capitalize;
    flex-shrink: 0;
}

.ds-ramp-row[b-hh5hlyv3pk] {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    gap: 4px;
    flex: 1;
    min-width: 0;
}

.ds-ramp-cell[b-hh5hlyv3pk] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    cursor: default;
}

.ds-ramp-swatch[b-hh5hlyv3pk] {
    height: 44px;
    border-radius: var(--bs-border-radius-sm);
    border: 1px solid var(--bs-border-color);
}

.ds-ramp-step[b-hh5hlyv3pk] {
    font-size: var(--fs-xs);
    font-family: var(--bs-font-monospace);
    color: var(--bs-text-muted);
    text-align: center;
}
/* /Components/Pages/DesignSystemInventorySection.razor.rz.scp.css */
/* Swatch the border-radius / colour samples are drawn on. */
.ds-inventory-radius[b-b5mw7u9kxe] {
    display: inline-block;
    width: 2.5rem;
    height: 1.5rem;
}
/* /Components/Pages/Discoveries.razor.rz.scp.css */
.discoveries-paper[b-jz5z01kzh9] {
    padding: 2.5rem;
}

/* Tab bar: surfaces Discoveries / Run history / Schedules at the top of the paper */
.discoveries-tabs[b-jz5z01kzh9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    border-bottom: 1px solid var(--bs-border-color);
}

.discoveries-tab[b-jz5z01kzh9] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1rem;
    border: none;
    background: none;
    color: var(--bs-text-muted);
    font-size: var(--fs-base);
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.discoveries-tab:hover[b-jz5z01kzh9] {
    color: var(--bs-body-color);
}

.discoveries-tab.active[b-jz5z01kzh9] {
    color: var(--bs-primary);
    border-bottom-color: var(--bs-primary);
}

.discoveries-tab i[b-jz5z01kzh9] {
    font-size: 1rem;
}

/* Head row inside a tab panel (e.g. hint + primary action on Schedules) */
.discoveries-tab-panel-head[b-jz5z01kzh9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.discoveries-tab-panel-hint[b-jz5z01kzh9] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
}


/* Filter bar: search on the left, status/source/grouping/sort pills on the right */
.discoveries-filter-bar[b-jz5z01kzh9] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* SearchBox is a child component, so it is sized through a wrapper this page owns. */
.discoveries-search[b-jz5z01kzh9] {
    flex: 1;
    min-width: 12rem;
    max-width: 24rem;
}

.discoveries-filter-actions[b-jz5z01kzh9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.discoveries-item-count[b-jz5z01kzh9] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* Run-history "Started" date column: keep the timestamp on one line and
   give it room. ::deep pierces isolation to reach the QuickGrid <th>/<td>
   (rendered by the child component, so it never gets this page's scope). */
[b-jz5z01kzh9] .disc-run-started {
    width: 12rem;
    white-space: nowrap;
}

/* Run scope banner (AIG-314): shown above the filter bar when the findings list is scoped to a
   single run's findings via ?runId=. Colours, spacing and border come from Bootstrap classes. */
.run-scope-text[b-jz5z01kzh9] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

/* Card list */
.discoveries-list[b-jz5z01kzh9] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
/* /Components/Pages/DocumentImport.razor.rz.scp.css */
/* ── Import settings (AIG-589) ─────────────────────────────
   Layout only: a scrolling preview table whose column header (with the
   column controls) and row-number column stay in view.             */
.import-settings[b-pn22flvc9u] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.import-preview-scroll[b-pn22flvc9u] {
    max-height: 70vh;
    overflow: auto;
}

.import-preview thead th[b-pn22flvc9u] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.import-col[b-pn22flvc9u] {
    min-width: 11rem;
    max-width: 16rem;
}

.import-rownum[b-pn22flvc9u] {
    position: sticky;
    left: 0;
    z-index: 1;
    white-space: nowrap;
    width: 1%;
}

.import-preview thead .import-rownum[b-pn22flvc9u] {
    z-index: 3;
}

.import-number-input[b-pn22flvc9u] {
    width: 6rem;
}

.import-token-input[b-pn22flvc9u] {
    width: 10rem;
}
/* /Components/Pages/DocumentInspector.razor.rz.scp.css */
.inspector-layout[b-frbv40xjvi] {
    display: flex;
    gap: 1rem;
    min-height: 320px;
}

/* Surface comes from the .card class, which is already display:flex/flex-direction:column - the
   properties are repeated here explicitly so this container's layout doesn't depend on that. */
.inspector-documents[b-frbv40xjvi] {
    display: flex;
    flex-direction: column;
    width: 300px;
    flex-shrink: 0;
    overflow-y: auto;
    max-height: calc(100vh - 280px);
    padding: 6px;
    gap: 4px;
}

.inspector-document[b-frbv40xjvi] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    text-align: left;
    width: 100%;
    border: none;
    background: transparent;
    border-radius: var(--bs-border-radius-sm);
    padding: 8px 10px;
    cursor: pointer;
    color: var(--bs-body-color);
    transition: background 0.15s;
}

.inspector-document:hover[b-frbv40xjvi] {
    background: var(--bs-secondary-bg);
}

.inspector-document.active[b-frbv40xjvi] {
    background: var(--accent-blue-light);
}

.inspector-document-title[b-frbv40xjvi] {
    font-size: var(--fs-sm);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.inspector-document-meta[b-frbv40xjvi] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Surface comes from the .card class. */
.inspector-document-detail[b-frbv40xjvi] {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    max-height: calc(100vh - 280px);
    padding: 16px;
    gap: 20px;
}

.inspector-field-section + .inspector-field-section[b-frbv40xjvi] {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 0.5px solid var(--bs-border-color);
}

.inspector-field-section-title[b-frbv40xjvi] {
    font-size: var(--fs-sm);
    font-weight: 600;
    margin: 0 0 10px;
    color: var(--bs-body-color);
}

.inspector-field-list[b-frbv40xjvi] {
    display: grid;
    grid-template-columns: minmax(140px, max-content) 1fr;
    column-gap: 12px;
    row-gap: 6px;
    margin: 0;
}

.inspector-field-list dt[b-frbv40xjvi] {
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--bs-text-muted);
    font-family: var(--bs-font-monospace, monospace);
}

.inspector-field-list dd[b-frbv40xjvi] {
    font-size: var(--fs-sm);
    margin: 0;
    word-break: break-word;
    overflow-wrap: anywhere;
}

.inspector-field-subtitle[b-frbv40xjvi] {
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--bs-text-muted);
    margin: 12px 0 4px;
    font-family: var(--bs-font-monospace, monospace);
}

.inspector-raw-text[b-frbv40xjvi] {
    margin: 0;
    padding: 8px 10px;
    background: var(--bs-secondary-bg);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    white-space: pre-wrap;
    word-break: break-word;
    overflow-wrap: anywhere;
    font-family: var(--bs-font-monospace, monospace);
    font-size: var(--fs-xs);
    line-height: 1.5;
    color: var(--bs-body-color);
}

.inspector-reference-count[b-frbv40xjvi] {
    font-size: var(--fs-xl, 1.5rem);
    font-weight: 700;
    color: var(--bs-body-color);
}
/* /Components/Pages/DocumentView.razor.rz.scp.css */
/* ── Document detail page (AIG-362) ────────────────────────
   Two stacked cards: an identity/actions header, then the content itself
   (rendered by DocumentTableSection / DocumentMarkdownSection, which carry the
   shared .docview-section skin from _app-styles.scss).           */
.docview[b-w8sga5xqfc] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.docview-header[b-w8sga5xqfc] {
    padding: 1rem 1.25rem;
}

.docview-header-bar[b-w8sga5xqfc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.docview-header-actions[b-w8sga5xqfc] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.docview-meta[b-w8sga5xqfc] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 0.25rem;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

.docview-title[b-w8sga5xqfc] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 0;
    font-size: var(--fs-xl);
    font-weight: 600;
}

.docview-filename[b-w8sga5xqfc] {
    word-break: break-word;
}

.docview-description[b-w8sga5xqfc] {
    margin: 0.5rem 0 0;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

/* The description doubles as the way into the File details panel, so it is a button -
   stripped back to read as the paragraph it replaces. */
.docview-description-action[b-w8sga5xqfc] {
    display: block;
    width: 100%;
    padding: 0;
    border: none;
    background: none;
    text-align: start;
    cursor: pointer;
}

.docview-description-action:hover[b-w8sga5xqfc] {
    color: var(--bs-body-color);
}

/* Empty state reads as the invitation it is, matching the Data Center card's own
   "Add description..." affordance. */
.docview-description-empty[b-w8sga5xqfc] {
    color: var(--bs-primary);
}

/* Upload facts stay left, the chips go right. margin-left:auto rather than
   justify-content on the parent, so the left group keeps its own spacing. */
.docview-meta-chips[b-w8sga5xqfc] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-left: auto;
}

/* Group and field count in the meta line: quiet by default, but they are buttons into the
   File details panel, so they pick up a border and the primary colour on hover rather than
   sitting there looking like the static text beside them. */
.docview-meta-chip[b-w8sga5xqfc] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.125rem 0.625rem;
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
    background: none;
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    cursor: pointer;
}

.docview-meta-chip:hover[b-w8sga5xqfc],
.docview-meta-chip:focus-visible[b-w8sga5xqfc] {
    color: var(--bs-primary);
    border-color: var(--bs-primary);
}

/* "Not reprocessed" dedup hint (AIG-355), mirroring the Data Sources list card's quiet marker style
   (document-share-badge in DataSources.razor.css) - CSS isolation scopes classes per component, so
   this duplicates rather than shares that rule. */
.document-share-badge[b-w8sga5xqfc] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: var(--fs-xs);
    font-weight: 600;
    padding: 0.15em 0.5em;
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
}
/* /Components/Pages/GuidedAnalysis.razor.rz.scp.css */
.guided-analysis[b-szilr86n87] {
    max-width: 1200px;
    margin: 0 auto;
}

.guided-analysis-subtitle[b-szilr86n87] {
    max-width: 640px;
}

.guided-analysis-placeholder[b-szilr86n87] {
    height: 20rem;
}
/* /Components/Pages/Home.razor.rz.scp.css */
.home-loading[b-saz8nlxv7l] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 60vh;
    color: var(--bs-text-muted);
}

/* ── Greeting header ─────────────────────────────────────── */

.home-greeting[b-saz8nlxv7l] {
    padding: 1.75rem 2rem;
    margin-bottom: 1.5rem;
}

.home-sample[b-saz8nlxv7l] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.5rem;
    margin-bottom: 1.5rem;
    border-left: 3px solid var(--bs-info);
}

.home-sample-icon[b-saz8nlxv7l] {
    font-size: 1.5rem;
    color: var(--bs-info);
    flex-shrink: 0;
}

.home-sample-text[b-saz8nlxv7l] {
    flex: 1;
    min-width: 0;
}

.home-sample-title[b-saz8nlxv7l] {
    font-weight: 600;
}

.home-sample-body[b-saz8nlxv7l] {
    margin: 0.25rem 0 0;
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
}

.home-sample-open[b-saz8nlxv7l] {
    flex-shrink: 0;
}

@media (max-width: 575.98px) {
    .home-sample[b-saz8nlxv7l] {
        flex-direction: column;
        align-items: flex-start;
    }
}

.home-greeting-date[b-saz8nlxv7l] {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--bs-text-muted);
    margin-bottom: 0.5rem;
}

.home-greeting-title[b-saz8nlxv7l] {
    font-size: var(--fs-xl);
    font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--bs-body-color);
    margin: 0 0 0.5rem;
}

.home-greeting-summary[b-saz8nlxv7l] {
    font-size: var(--fs-base);
    color: var(--bs-text-muted);
    margin: 0;
}

/* ── Stat cards ──────────────────────────────────────────── */

/* Two rows: the € tiles on top, the status bar beneath them spanning both tile columns,
   and the findings donut on the right spanning both rows (so it gets the combined height). */
.home-stats[b-saz8nlxv7l] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.home-stat-card--donut[b-saz8nlxv7l] {
    grid-column: 3;
    grid-row: 1 / span 2;
}

.home-chart--status[b-saz8nlxv7l] {
    grid-column: 1 / span 2;
    grid-row: 2;
}

/* Third row: the knowledge strip spans the full width under the money tiles (AIG-491). */
.home-stat-card--knowledge[b-saz8nlxv7l] {
    grid-column: 1 / span 3;
    grid-row: 3;
}

.home-stat-card[b-saz8nlxv7l] {
    gap: 0.6rem;
    padding: 1.25rem 1.5rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease;
}

a.home-stat-card:hover[b-saz8nlxv7l] {
    border-color: var(--bs-border-color);
}

.home-stat-head[b-saz8nlxv7l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}


.home-stat-icon[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
    font-size: 1.1rem;
}

/* Head-right slot of the knowledge card: the "open graph" button sits before the icon (AIG-491). */
.home-stat-head-actions[b-saz8nlxv7l] {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
}

.home-stat-card--findings .home-stat-icon[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
}

.home-stat-value[b-saz8nlxv7l] {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
    color: var(--bs-body-color);
}

.home-stat-foot[b-saz8nlxv7l] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* ── Charts ──────────────────────────────────────────────── */

/* Stacked on purpose: side by side, the flat status bar would stretch to the matrix's
   height and leave the card half empty. */
.home-charts[b-saz8nlxv7l] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

/* Chart cards share the stat tiles' head style (.home-stat-head/.home-stat-label), so
   every dashboard widget title looks the same. */
.home-chart[b-saz8nlxv7l] {
    padding: 1.25rem 1.5rem;
}

.home-chart .home-stat-head[b-saz8nlxv7l] {
    margin-bottom: 0.75rem;
}

/* ── Tasks panel ─────────────────────────────────────────── */

.home-tasks[b-saz8nlxv7l] {
    padding: 1.25rem 1.5rem;
}

.home-panel-head[b-saz8nlxv7l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.home-panel-title[b-saz8nlxv7l] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.home-panel-count[b-saz8nlxv7l] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.home-task-row[b-saz8nlxv7l] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-secondary-bg);
    text-decoration: none;
    color: inherit;
    margin-bottom: 0.5rem;
    cursor: pointer;
}

.home-task-row:last-child[b-saz8nlxv7l] {
    margin-bottom: 0;
}

.home-task-row:hover[b-saz8nlxv7l] {
    background: var(--bs-tertiary-bg);
}

.home-task-dot[b-saz8nlxv7l] {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--bs-primary);
    flex-shrink: 0;
}

.home-task-icon[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.home-task-body[b-saz8nlxv7l] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    flex: 1;
    min-width: 0;
}

.home-task-title[b-saz8nlxv7l] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-primary);
}

.home-task-text[b-saz8nlxv7l] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
}

.home-task-text.md-content[b-saz8nlxv7l] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.home-task-text.md-content p[b-saz8nlxv7l] {
    margin: 0;
    display: inline;
}

.home-task-go[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

/* ── Follow-up (resume) panel ────────────────────────────── */

.home-resume[b-saz8nlxv7l] {
    padding: 1.25rem 1.5rem;
}

.home-resume-row[b-saz8nlxv7l] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.75rem 0;
    border-top: 1px solid var(--bs-border-color);
    text-decoration: none;
    color: inherit;
}

.home-resume-row:first-of-type[b-saz8nlxv7l] {
    border-top: none;
}

.home-resume-icon[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.home-resume-body[b-saz8nlxv7l] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    flex: 1;
    min-width: 0;
}

.home-resume-title[b-saz8nlxv7l] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
}

.home-resume-meta[b-saz8nlxv7l] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.home-resume-go[b-saz8nlxv7l] {
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.home-resume-row:hover .home-resume-title[b-saz8nlxv7l] {
    color: var(--bs-primary);
}

.home-empty[b-saz8nlxv7l] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}

@media (max-width: 900px) {
    .home-stats[b-saz8nlxv7l] {
        grid-template-columns: 1fr;
    }

    .home-stat-card--donut[b-saz8nlxv7l],
    .home-chart--status[b-saz8nlxv7l],
    .home-stat-card--knowledge[b-saz8nlxv7l] {
        grid-column: auto;
        grid-row: auto;
    }
}
/* /Components/Pages/KnowledgeGraph.razor.rz.scp.css */
.kg-loading[b-gsglo0foj7] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
    color: var(--bs-secondary, #6c757d);
    font-size: 0.875rem;
}

.kg-empty[b-gsglo0foj7] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 4rem 2rem;
    color: var(--bs-secondary, #6c757d);
    text-align: center;
    gap: 0.75rem;
}

.kg-empty-icon[b-gsglo0foj7] {
    font-size: 3rem;
    opacity: 0.25;
}

/* ── Relations section ── */

.kg-list-section[b-gsglo0foj7] {
    margin-bottom: 1.75rem;
}

/* ── View toggle (graph / list / both) ── */
.kg-view-toggle[b-gsglo0foj7] {
    display: flex;
    justify-content: flex-end;
    gap: 0.35rem;
    margin-bottom: 0.75rem;
}

/* ── Interactive graph canvas ── */
.kg-canvas-wrapper[b-gsglo0foj7] {
    width: 100%;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.75rem;
    background: var(--bs-bg-card);
    overflow: hidden;
    margin-bottom: 1.75rem;
}

.kg-list-title[b-gsglo0foj7] {
    margin-bottom: 0.75rem;
}

/* ── Relations filter bar ── */

.kg-filter-bar[b-gsglo0foj7] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.75rem;
}

.kg-filter-bar-label[b-gsglo0foj7] {
    display: inline-flex;
    align-items: center;
    margin-right: 0.15rem;
}

.kg-filter-preset[b-gsglo0foj7] {
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary, #6c757d);
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

.kg-filter-preset:hover[b-gsglo0foj7] {
    background: var(--bs-secondary-bg, #e9ecef);
    color: var(--bs-emphasis-color, #000);
}

.kg-filter-preset--active[b-gsglo0foj7] {
    background: var(--bs-body-color, #212529);
    color: var(--bs-body-bg, #fff);
    border-color: var(--bs-body-color, #212529);
}

.kg-filter-divider[b-gsglo0foj7] {
    width: 1px;
    height: 1.2em;
    background: var(--bs-border-color);
    margin: 0 0.15rem;
    flex-shrink: 0;
}

.kg-filter-pill[b-gsglo0foj7] {
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 500;
    border: 1px solid var(--bs-border-color);
    background: transparent;
    color: var(--bs-secondary, #6c757d);
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}

.kg-filter-pill:hover[b-gsglo0foj7] {
    background: var(--bs-secondary-bg, #e9ecef);
    color: var(--bs-emphasis-color, #000);
}

.kg-filter-pill--active.kg-filter-pill--support[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-success, #198754) 12%, transparent);
    border-color: var(--bs-success, #198754);
    color: var(--bs-success, #198754);
}

.kg-filter-pill--active.kg-filter-pill--contradict[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-warning, #ffc107) 15%, transparent);
    border-color: color-mix(in srgb, var(--bs-warning, #ffc107) 70%, #000);
    color: color-mix(in srgb, var(--bs-warning, #ffc107) 85%, #000);
}

.kg-filter-pill--active.kg-filter-pill--related[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 10%, transparent);
    border-color: var(--bs-primary, #0d6efd);
    color: var(--bs-primary, #0d6efd);
}

.kg-filter-pill--active.kg-filter-pill--duplicate[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-danger, #dc3545) 10%, transparent);
    border-color: var(--bs-danger, #dc3545);
    color: var(--bs-danger, #dc3545);
}

/* Node-type pills: squared corners and a leading icon set them apart from the
   fully-rounded edge-type pills sitting on the row above. */
.kg-filter-pill--node[b-gsglo0foj7] {
    border-radius: 0.3rem;
    border-style: dashed;
}

.kg-filter-pill--active.kg-filter-pill--node[b-gsglo0foj7] {
    border-style: solid;
    background: color-mix(in srgb, var(--bs-info, #0dcaf0) 14%, transparent);
    border-color: color-mix(in srgb, var(--bs-info, #0dcaf0) 70%, #000);
    color: color-mix(in srgb, var(--bs-info, #0dcaf0) 80%, #000);
}

/* Darkening info reads well on a light background but sinks into a dark one. */
[data-bs-theme="dark"] .kg-filter-pill--active.kg-filter-pill--node[b-gsglo0foj7] {
    border-color: var(--bs-info, #0dcaf0);
    color: var(--bs-info, #0dcaf0);
}

.kg-filter-pill--active.kg-filter-pill--discovery[b-gsglo0foj7],
.kg-filter-pill--active.kg-filter-pill--entity[b-gsglo0foj7],
.kg-filter-pill--active.kg-filter-pill--structural[b-gsglo0foj7],
.kg-filter-pill--active.kg-filter-pill--other[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-secondary, #6c757d) 15%, transparent);
    border-color: var(--bs-secondary, #6c757d);
    color: var(--bs-secondary, #6c757d);
}

/* ── Relations QuickGrid ── */

.kg-relations-grid[b-gsglo0foj7] {
    width: 100%;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius, 0.375rem);
    overflow: hidden;
    margin-bottom: 0.5rem;
}

.kg-relations-grid[b-gsglo0foj7]  th {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary, #6c757d);
    background: var(--bs-secondary-bg-subtle);
}

.kg-relations-grid[b-gsglo0foj7]  td {
    font-size: 0.8rem;
    padding: 0.4rem 0.6rem;
    word-break: break-word;
    vertical-align: top;
}

.kg-relations-grid .col-justify-center[b-gsglo0foj7] {
    text-align: center;
}

.kg-relations-grid[b-gsglo0foj7]  td .kg-conf-bar {
    display: block;
    height: 3px;
    border-radius: 2px;
    background: var(--bs-primary, #0d6efd);
    opacity: 0.6;
    margin-bottom: 0.15rem;
}

.kg-relations-grid[b-gsglo0foj7]  td:last-child {
    color: var(--bs-secondary, #6c757d);
    font-size: 0.75rem;
    font-style: italic;
}

/* ── Edge type badge ── */

.kg-edge-badge[b-gsglo0foj7] {
    display: inline-block;
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 600;
    white-space: nowrap;
    background: color-mix(in srgb, var(--bs-secondary, #6c757d) 12%, transparent);
    color: var(--bs-secondary, #6c757d);
}

.kg-edge-badge--support[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-success, #198754) 12%, transparent);
    color: var(--bs-success, #198754);
}

.kg-edge-badge--contradict[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-warning, #ffc107) 15%, transparent);
    color: color-mix(in srgb, var(--bs-warning, #ffc107) 85%, #000);
}

.kg-edge-badge--related[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 10%, transparent);
    color: var(--bs-primary, #0d6efd);
}

.kg-edge-badge--duplicate[b-gsglo0foj7] {
    background: color-mix(in srgb, var(--bs-danger, #dc3545) 10%, transparent);
    color: var(--bs-danger, #dc3545);
}
/* ── Pagination ── */

.kg-pagination[b-gsglo0foj7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.35rem 0;
    font-size: 0.8125rem;
}

.kg-pagination-info[b-gsglo0foj7] {
    color: var(--bs-secondary, #6c757d);
}

.kg-pagination-controls[b-gsglo0foj7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.kg-pagination-page[b-gsglo0foj7] {
    font-size: 0.8rem;
    color: var(--bs-secondary, #6c757d);
    min-width: 3rem;
    text-align: center;
}

.kg-relations-empty[b-gsglo0foj7] {
    font-size: 0.8125rem;
    color: var(--bs-secondary, #6c757d);
    padding: 1rem 0;
}

/* Relation endpoints are buttons (they open the node detail panel), styled to read as the plain
   labels they replaced rather than as controls. */
.kg-node-button[b-gsglo0foj7] {
    padding: 0;
    border: none;
    background: none;
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.kg-node-button:hover[b-gsglo0foj7],
.kg-node-button:focus-visible[b-gsglo0foj7] {
    color: var(--bs-link-color);
    text-decoration: underline;
}

.kg-unconnected-hint[b-gsglo0foj7] {
    font-size: 0.8125rem;
    color: var(--bs-secondary, #6c757d);
    margin-bottom: 0.75rem;
}

.kg-node-type[b-gsglo0foj7] {
    white-space: nowrap;
    color: var(--bs-secondary, #6c757d);
}
/* /Components/Pages/Login.razor.rz.scp.css */
.auth-page[b-26xqemrccj] {
  display: flex;
  min-height: 100vh;
}

/* Left form panel */
.auth-form-panel[b-26xqemrccj] {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--bs-body-bg);
  padding: 3rem 3rem;
}

.auth-form-container[b-26xqemrccj] {
  width: 100%;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  max-width: 550px;
}

.auth-card[b-26xqemrccj] {
  margin: auto;
  width: 100%;
  max-width: 420px;
  padding: 2rem;
}


.auth-branding[b-26xqemrccj] {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 2rem;
}

.auth-card .auth-branding[b-26xqemrccj] {
  flex-direction: column;
  text-align: center;
  gap: 0.25rem;
  margin-bottom: 1.5rem;
}

.branding-title[b-26xqemrccj] {
  font-weight: 600;
  color: var(--blue-800);
  margin: 0;
}

.branding-sub-title[b-26xqemrccj] {
  font-size: 10px;
  line-height: 13px;
  letter-spacing: 1.54px;
  color: var(--gray-600);
}

.auth-top-subtitle[b-26xqemrccj] {
  font-weight: 700;
  font-size: 12px;
  line-height: 120%;
  letter-spacing: 1.54px;
}


.auth-heading[b-26xqemrccj] {
  font-weight: 700;
  font-size: 40px;
  line-height: 120%;
  letter-spacing: 2%;
  color: var(--blue-800);
}

.auth-subtitle[b-26xqemrccj] {
  line-height: 150%;
  letter-spacing: 0%;
  color: var(--bs-body-color);
  margin-bottom: 32px;
}

[b-26xqemrccj] .auth-logo {
  width: 48px;
  height: 48px;
  border-radius: var(--bs-border-radius-sm);
}

/* Form styling */
.auth-form-container .form-label[b-26xqemrccj],
.auth-card .form-label[b-26xqemrccj] {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--bs-secondary);
}

.auth-forgot-link[b-26xqemrccj] {
  font-size: var(--fs-sm);
  color: var(--bs-primary);
  text-decoration: none;
}

.auth-password-toggle[b-26xqemrccj],
.auth-password-toggle:hover[b-26xqemrccj],
.auth-password-toggle:active[b-26xqemrccj],
.auth-password-toggle:focus-visible[b-26xqemrccj] {
  border: 1px solid var(--bs-border-color);
  border-left: 0;
  background-color: var(--bs-body-bg);
  color: var(--bs-text-muted);
  box-shadow: none;
}

.auth-forgot-link:hover[b-26xqemrccj] {
  text-decoration: underline;
}

.auth-form-container .btn-primary[b-26xqemrccj],
.auth-card .btn-primary[b-26xqemrccj] {
  padding: 0.625rem 1rem;
  margin-top: 0.5rem;
}

.auth-footer-link[b-26xqemrccj] {
  margin-top: 1.5rem;
  text-align: center;
  font-size: var(--fs-sm);
}

.auth-footer-link a[b-26xqemrccj] {
  color: var(--bs-primary);
  text-decoration: none;
}

.auth-footer-link a:hover[b-26xqemrccj] {
  text-decoration: underline;
}

.auth-terms[b-26xqemrccj] {
  text-align: center;
  margin-top: 32px;
}

/* Footer links */
.auth-footer-links[b-26xqemrccj] {
  display: flex;
  justify-content: center;
  gap: 1.5rem;
  margin-top: auto;
  padding-top: 2rem;
  font-size: var(--fs-sm);
}

.auth-footer-links a[b-26xqemrccj] {
  color: var(--bs-text-muted);
  text-decoration: none;
}

.auth-footer-links a:hover[b-26xqemrccj] {
  color: var(--bs-body-color);
}

.auth-hero-panel[b-26xqemrccj] {
  flex: 1.25;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 24px 24px 0;
}

.auth-hero-container[b-26xqemrccj] {
  background-color: var(--bs-blue);
  background-image: url('/images/ContainerLogin_Bg.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}

.auth-hero-content[b-26xqemrccj] {
  max-width: 480px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.auth-hero-headline[b-26xqemrccj] {
  font-size: 2.5rem;
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: 12px;
  color: var(--white);
}

.auth-hero-text[b-26xqemrccj] {
  margin-bottom: 40px;
}

.auth-hero-description[b-26xqemrccj] {
  font-size: 1.1rem;
  opacity: 0.9;
  line-height: 1.6;
}

.auth-hero-mockup[b-26xqemrccj] {
  filter: drop-shadow(0px 32px 80px rgba(0, 0, 0, 0.25));
}

@media (max-width: 992px) {
  .auth-page[b-26xqemrccj] {
    flex-direction: column;
  }

  .auth-hero-panel[b-26xqemrccj] {
    display: none;
  }
}
/* AdminUser break-glass disclosure shown when SSO is enforced. A native <details> keeps the
   password form reachable without an interactive circuit, so it is styled to read as the
   link-style button it replaced rather than as a default disclosure widget. */
.auth-admin-login[b-26xqemrccj] {
  text-align: center;
}

.auth-admin-login-toggle[b-26xqemrccj] {
  display: inline-block;
  cursor: pointer;
  color: var(--bs-link-color);
  font-size: 0.9rem;
  list-style: none;
}

.auth-admin-login-toggle[b-26xqemrccj]::-webkit-details-marker {
  display: none;
}

.auth-admin-login-toggle:hover[b-26xqemrccj] {
  text-decoration: underline;
}

.auth-admin-login[open] .auth-admin-login-toggle[b-26xqemrccj] {
  margin-bottom: 16px;
}

.auth-admin-login > form[b-26xqemrccj] {
  text-align: start;
}
/* /Components/Pages/LoginTwoFactorSetup.razor.rz.scp.css */
.mfa-qr[b-6gd1dluopk] {
    display: block;
    width: 200px;
    height: 200px;
    margin-inline: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    background: var(--white);
    padding: 0.5rem;
}

.mfa-key[b-6gd1dluopk] {
    font-family: var(--font-mono, monospace);
    letter-spacing: 0.1em;
    text-align: center;
    overflow-wrap: anywhere;
    user-select: all;
}
/* /Components/Pages/McpServers.razor.rz.scp.css */
/* Page-level layout: .page-section, .page-header etc. - wwwroot/app.css
   Item-card base: .item-list, .item-card, .item-card-header, .item-card-actions - wwwroot/app.css */

.server-list[b-wc6sf3wg94] {
    gap: 12px;
}

.server-card[b-wc6sf3wg94] {
    padding: 16px 20px;
    transition: border-color 0.15s ease;
}

.server-card-header[b-wc6sf3wg94] {
    gap: 12px;
}

.server-card-info[b-wc6sf3wg94] {
    min-width: 0;
    flex: 1 1 auto;
}

.server-name[b-wc6sf3wg94] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
    margin: 0;
}

.server-url[b-wc6sf3wg94] {
    font-size: var(--fs-sm);
    font-family: var(--bs-font-monospace);
    margin-bottom: 6px;
    word-break: break-all;
}

.server-meta[b-wc6sf3wg94] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
}

.server-card-actions[b-wc6sf3wg94] {
    gap: 6px;
}

.server-tool-list[b-wc6sf3wg94] {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.server-tool[b-wc6sf3wg94] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-size: var(--fs-sm);
    min-width: 0;
}

.server-tool > .bi[b-wc6sf3wg94] {
    color: var(--bs-secondary);
    flex-shrink: 0;
}

.server-tool-name[b-wc6sf3wg94] {
    font-weight: 600;
    font-family: var(--bs-font-monospace);
    flex-shrink: 0;
    max-width: 60%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.server-tool-access[b-wc6sf3wg94] {
    flex-shrink: 0;
    align-self: center;
    display: inline-flex;
    align-items: center;
    gap: 0.25em;
}

.server-tool-description[b-wc6sf3wg94] {
    color: var(--bs-secondary);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.server-card--inactive[b-wc6sf3wg94] {
    opacity: 0.6;
}

.server-card--inactive .server-name[b-wc6sf3wg94] {
    color: var(--bs-secondary);
}

/* .font-monospace removed - Bootstrap provides this utility class natively */
/* /Components/Pages/Notifications.razor.rz.scp.css */
.notification-list[b-b11ykt4tk0] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.notification-card[b-b11ykt4tk0] {
    overflow: hidden;
}

.notification-card--unread[b-b11ykt4tk0] {
    border-left: 3px solid var(--bs-primary);
}

.notification-card--unread-release-note[b-b11ykt4tk0] {
    border-left-color: var(--bs-primary-text-emphasis);
}

.notification-card--unread-review[b-b11ykt4tk0] {
    border-left-color: var(--bs-warning);
}

.notification-card-header[b-b11ykt4tk0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    cursor: pointer;
    user-select: none;
    width: 100%;
    background: none;
    border: none;
    font: inherit;
    color: inherit;
    text-align: left;
}

.notification-card-header:hover[b-b11ykt4tk0] {
    background: var(--bg-hover);
}

.notification-card-title-row[b-b11ykt4tk0] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
    min-width: 0;
}

.notification-unread-dot[b-b11ykt4tk0] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--bs-primary);
    flex-shrink: 0;
}

.notification-unread-dot--release-note[b-b11ykt4tk0] {
    background: var(--bs-primary-text-emphasis);
}

.notification-unread-dot--review[b-b11ykt4tk0] {
    background: var(--bs-warning);
}

.notification-title[b-b11ykt4tk0] {
    font-weight: 500;
    color: var(--bs-body-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notification-card--read .notification-title[b-b11ykt4tk0] {
    color: var(--bs-secondary);
    font-weight: 400;
}

.notification-card-meta[b-b11ykt4tk0] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

/* Visuals come from the shared .workspace-chip pattern (_app-styles.scss); only the
   context-specific width cap lives here. */
.notification-workspace-badge[b-b11ykt4tk0] {
    max-width: 180px;
}

.notification-date[b-b11ykt4tk0] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    white-space: nowrap;
}

.notification-chevron[b-b11ykt4tk0] {
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

.notification-card-body[b-b11ykt4tk0] {
    padding: 0 16px 16px;
    border-top: 1px solid var(--bs-border-color);
}

.notification-markdown[b-b11ykt4tk0] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    padding-top: 12px;
    line-height: 1.6;
}

.notification-markdown p:last-child[b-b11ykt4tk0] {
    margin-bottom: 0;
}

.notification-actions[b-b11ykt4tk0] {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}
/* /Components/Pages/Onboarding.razor.rz.scp.css */
/* ── Wizard layout ─────────────────────────────────────────────────────── */

.onboarding-wizard[b-4zc5o90npw] {
    display: flex;
    min-height: 560px;
}

/* ── Left sidebar ──────────────────────────────────────────────────────── */

.onboarding-sidebar[b-4zc5o90npw] {
    width: 260px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    padding: 2.5rem 1.75rem;
    border-right: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
}

.onboarding-sidebar-skip[b-4zc5o90npw] {
    margin-top: auto;
    padding-top: 1.5rem;
}

.onboarding-sidebar-heading[b-4zc5o90npw] {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--bs-body-color);
    margin-bottom: .25rem;
}

.onboarding-sidebar-subheading[b-4zc5o90npw] {
    margin-bottom: 2rem;
}

/* ── Step list ──────────────────────────────────────────────────────────── */

.onboarding-steps[b-4zc5o90npw] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.wizard-step[b-4zc5o90npw] {
    display: flex;
    align-items: flex-start;
    gap: .875rem;
    position: relative;
    padding-bottom: 1.75rem;
}

.wizard-step:not(:last-child)[b-4zc5o90npw]::after {
    content: "";
    position: absolute;
    left: 1rem;
    top: 2.25rem;
    bottom: 0;
    width: 2px;
    background: var(--bs-border-color);
}

.wizard-step--done:not(:last-child)[b-4zc5o90npw]::after {
    background: var(--bs-primary);
}

.wizard-step--active:not(:last-child)[b-4zc5o90npw]::after {
    background: var(--bs-border-color);
}

.wizard-step-indicator[b-4zc5o90npw] {
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .875rem;
    font-weight: 600;
    border: 2px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-text-muted);
    z-index: 1;
    position: relative;
    transition: border-color .2s, background .2s, color .2s;
}

.wizard-step--done .wizard-step-indicator[b-4zc5o90npw] {
    border-color: var(--bs-primary);
    background: var(--bs-primary);
    color: #fff;
}

.wizard-step--active .wizard-step-indicator[b-4zc5o90npw] {
    border-color: var(--bs-primary);
    color: var(--bs-primary);
}

.wizard-step-body[b-4zc5o90npw] {
    display: flex;
    flex-direction: column;
    padding-top: .25rem;
}

.wizard-step-label[b-4zc5o90npw] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--bs-text-muted);
    line-height: 1.3;
}

.wizard-step--done .wizard-step-label[b-4zc5o90npw],
.wizard-step--active .wizard-step-label[b-4zc5o90npw] {
    color: var(--bs-body-color);
}

.wizard-step-desc[b-4zc5o90npw] {
    font-size: .8125rem;
    color: var(--bs-text-muted);
    margin-top: .125rem;
}

/* ── Right content panel ────────────────────────────────────────────────── */

.onboarding-content[b-4zc5o90npw] {
    flex: 1;
    padding: 2.5rem 2.75rem;
    overflow-y: auto;
}

.wizard-panel[b-4zc5o90npw] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.wizard-panel-header[b-4zc5o90npw] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 1.75rem;
    gap: 1rem;
}

.wizard-step-indicator-text[b-4zc5o90npw] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--bs-primary);
    margin-bottom: .375rem;
}

.wizard-panel-title[b-4zc5o90npw] {
    font-size: 1.625rem;
    font-weight: 700;
    color: var(--bs-body-color);
    margin: 0 0 .375rem;
}

.wizard-panel-subtitle[b-4zc5o90npw] {
    color: var(--bs-secondary);
    margin: 0;
    max-width: 560px;
}

/* ── Default workspace badge ────────────────────────────────────────────── */

.wizard-default-badge[b-4zc5o90npw] {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    font-size: .8125rem;
    font-weight: 500;
    color: var(--bs-primary);
    border: 1px solid var(--bs-primary);
    border-radius: 999px;
    padding: .25rem .75rem;
    flex-shrink: 0;
}

/* ── Form sections ──────────────────────────────────────────────────────── */

.wizard-form-section[b-4zc5o90npw] {
    margin-bottom: 1.5rem;
}

.wizard-form-section-label[b-4zc5o90npw] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--bs-body-color);
    margin-bottom: .875rem;
}

/* ── Info callout ───────────────────────────────────────────────────────── */

.wizard-info-callout[b-4zc5o90npw] {
    display: flex;
    align-items: flex-start;
    background: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .5rem;
    padding: .75rem 1rem;
    font-size: .875rem;
    color: var(--bs-secondary);
    margin-top: 1.25rem;
}

/* ── Panel footer ───────────────────────────────────────────────────────── */

.wizard-panel-footer[b-4zc5o90npw] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-top: auto;
    padding-top: 2rem;
}

/* ── Dropzone ───────────────────────────────────────────────────────────── */

.onboarding-dropzone[b-4zc5o90npw] {
    position: relative;
    border: 2px dashed var(--bs-border-color);
    border-radius: .75rem;
    padding: 2.5rem 1rem;
    text-align: center;
    cursor: pointer;
    transition: border-color .2s;
}

.onboarding-dropzone:hover[b-4zc5o90npw] {
    border-color: var(--bs-primary);
}

.onboarding-dropzone.is-uploading[b-4zc5o90npw] {
    opacity: .6;
    pointer-events: none;
}

.onboarding-dropzone-input[b-4zc5o90npw] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
    width: 100%;
    height: 100%;
}

.onboarding-dropzone-icon[b-4zc5o90npw] {
    font-size: 2rem;
    color: var(--bs-text-muted);
    margin-bottom: .75rem;
}

.onboarding-dropzone-title[b-4zc5o90npw] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--bs-body-color);
    margin-bottom: .375rem;
}

.onboarding-dropzone-hint[b-4zc5o90npw] {
    font-size: .875rem;
    color: var(--bs-text-muted);
}

/* ── Completion list ────────────────────────────────────────────────────── */

.onboarding-completion-list[b-4zc5o90npw] {
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: .875rem;
}

.onboarding-completion-item[b-4zc5o90npw] {
    display: flex;
    align-items: center;
    gap: .75rem;
    font-size: 1rem;
    color: var(--bs-body-color);
}

.onboarding-completion-icon[b-4zc5o90npw] {
    font-size: 1.25rem;
    color: var(--bs-primary);
    flex-shrink: 0;
}

.onboarding-completion-info[b-4zc5o90npw] {
    color: var(--bs-secondary);
    font-size: .9375rem;
    margin-bottom: 0;
}

/* ── Upload status ──────────────────────────────────────────────────────── */

.upload-status[b-4zc5o90npw] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .875rem;
    color: var(--bs-secondary);
}
/* /Components/Pages/Opportunities.razor.rz.scp.css */
/* Page-level layout is provided by .page-section, .page-header, .page-title,
   .page-subtitle, .page-empty, .page-empty-icon in wwwroot/app.css */

.opp-filter-bar[b-gw5dcvu8q7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
    justify-content: space-between;
}

.opp-filter-bar > :first-child[b-gw5dcvu8q7] {
    flex: 1;
    min-width: 0;
    max-width: 24rem;
}

.opp-filter-bar__actions[b-gw5dcvu8q7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* ── Options menu (top-right overflow) ─────────────────────── */
.opp-options[b-gw5dcvu8q7] {
    position: relative;
}

.opp-options-menu[b-gw5dcvu8q7] {
    position: absolute;
    top: calc(100% + 0.35rem);
    right: 0;
    min-width: 160px;
    z-index: 1050;
}

.opp-menu-backdrop[b-gw5dcvu8q7] {
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: transparent;
}
/* /Components/Pages/OpportunityAnalysisRun.razor.rz.scp.css */
/* AIG-266 run page. Styling is provisional pending AIG-267. */

.analysis-run-apply-bar[b-8xlrolsc9i] {
    border: 1px solid var(--bs-border-color);
}

.analysis-run-suggestion-list[b-8xlrolsc9i] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* AIG-440 thread run: the instruction/answer bubbles reuse ChatMessageBubble's own styling. */
.analysis-run-thread[b-8xlrolsc9i] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.analysis-run-thread-status[b-8xlrolsc9i] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
/* /Components/Pages/OpportunityCharts.razor.rz.scp.css */
/* Same width cap as the hypotheses list search. */
.hypothesis-charts-search[b-7xjz9jpi3k] {
    min-width: 0;
    max-width: 24rem;
}
/* /Components/Pages/OpportunityDetail.razor.rz.scp.css */
/* ── Page wrapper: outer spacing and full height come from the shared .page-section /
     .page-section-fill, the header surface from .page-header - same as every other view. ── */
.opp-detail-page[b-ru53nakifa] {
    overflow: hidden;
}

/* Stacked: ID badge + actions on top, then the title across the full width. */
.opp-detail-header[b-ru53nakifa] {
    flex-direction: column;
    align-items: stretch;
    gap: 0.6rem;
}

.opp-detail-header-top[b-ru53nakifa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    margin-bottom: 4px;
}

.opp-detail-title-row .page-title[b-ru53nakifa] {
    margin: 0;
    min-width: 0;
}

.opp-detail-header-actions[b-ru53nakifa] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* ── Options dropdown (top-right) ──────────────────────────── */
.opp-options[b-ru53nakifa] {
    position: relative;
}

/* AIG-556: ID badge, creator and "from finding" hint, separated by middots.
   Baseline, not center: the badge has line-height 1 and caps styling, so
   centering the boxes puts its text on a different line than the others. */
.opp-detail-header-meta[b-ru53nakifa] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.25rem 0.5rem;
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
}

.opp-detail-header-meta__item[b-ru53nakifa]::before {
    content: "\00B7";
    margin-right: 0.5rem;
}

.opp-options-menu[b-ru53nakifa] {
    position: absolute;
    top: calc(100% + 0.35rem);
    right: 0;
    min-width: 160px;
    z-index: 1050;
}

.opp-menu-backdrop[b-ru53nakifa] {
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: transparent;
}

/* ── Two-pane grid (fills the area below the header) ────────── */
.opp-detail-grid[b-ru53nakifa] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

/* ── Chat card: consistent white surface ───────────────────── */
.opp-card--chat[b-ru53nakifa]  .chat-interface {
    background: var(--bs-bg-card);
}

/* ── Foundation (estimates) card: custom body layout ── */
.opp-card--foundation[b-ru53nakifa]  .section-card-body {
    padding: 0;
    gap: 0;
}

/* ── Foundation header: status select + confidence badge (right-aligned) ── */
.opp-foundation-status[b-ru53nakifa] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
}

.opp-foundation-status-label[b-ru53nakifa] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
    white-space: nowrap;
}

.opp-status-select[b-ru53nakifa] {
    width: auto;
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-secondary-bg-subtle);
    border-color: var(--bs-border-color);
}

.opp-status-select:disabled[b-ru53nakifa] {
    opacity: 0.6;
    cursor: not-allowed;
}

.opp-estimates-grid[b-ru53nakifa] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1.5rem 2rem;
    padding: 1.1rem;
}

.opp-estimate[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 0;
}


.opp-estimate-value[b-ru53nakifa] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    line-height: 1.1;
}


.opp-foundation-method[b-ru53nakifa] {
    padding: 0 1.1rem 1.1rem;
}

/* ── Left column: stacked, independently scrollable cards ──── */
.opp-detail-left[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    overflow-y: auto;
    min-height: 0;
    padding-right: 0.25rem;
}

/* ── Card shell - surface (bg/border/radius) comes from the .card class ── */
.opp-card[b-ru53nakifa] {
    gap: 0.6rem;
    padding: 1rem 1.1rem;
    flex-shrink: 0;
}


/* ── Chat card: fills right column, scrolls only internally ── */
.opp-card--chat[b-ru53nakifa] {
    flex: 1;
    min-height: 0;
    padding: 0;
    overflow: hidden;
}

.opp-detail-title-row[b-ru53nakifa] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
}

/* ── Inline title edit: same footprint as the title, icons inside the input ── */
.opp-title-edit[b-ru53nakifa] {
    position: relative;
}

.opp-title-input[b-ru53nakifa] {
    /* Mirror .page-title so the text stays put when switching into edit mode; the
       negative margin cancels padding + border, so the text lines up and the input
       takes exactly the title's height. */
    --opp-title-edit-pad-y: 0.2rem;
    --opp-title-edit-pad-x: 0.5rem;
    --opp-title-edit-border: var(--bs-border-width, 1px);
    font-size: var(--fs-xl);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.02em;
    padding: var(--opp-title-edit-pad-y) 4.75rem var(--opp-title-edit-pad-y) var(--opp-title-edit-pad-x);
    margin: calc(-1 * (var(--opp-title-edit-pad-y) + var(--opp-title-edit-border)))
            calc(-1 * (var(--opp-title-edit-pad-x) + var(--opp-title-edit-border)));
    width: calc(100% + 2 * (var(--opp-title-edit-pad-x) + var(--opp-title-edit-border)));
}

.opp-title-edit-actions[b-ru53nakifa] {
    position: absolute;
    top: 50%;
    right: -0.25rem;
    transform: translateY(-50%);
    display: flex;
    gap: 0.125rem;
}

.opp-edit-title[b-ru53nakifa] {
    opacity: 0;
    transition: opacity 0.15s ease;
}

.opp-detail-title-row:hover .opp-edit-title[b-ru53nakifa],
.opp-edit-title:focus-visible[b-ru53nakifa] {
    opacity: 1;
}

.opp-detail-scores[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.opp-detail-score-row[b-ru53nakifa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}


.opp-detail-section[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.opp-detail-section-label[b-ru53nakifa] {
    margin: 0;
}

.opp-detail-section-text[b-ru53nakifa] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    margin: 0;
    line-height: 1.55;
}

.opp-detail-section-text--muted[b-ru53nakifa] {
    color: var(--bs-text-muted);
}

/* ── Key assumptions: expandable evidence cards ─────────────── */
.opp-assumptions[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.opp-assumption[b-ru53nakifa] {
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    overflow: hidden;
}

.opp-assumption-index[b-ru53nakifa] {
    flex-shrink: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-text-muted);
    min-width: 1rem;
    text-align: center;
}

.opp-assumption-text[b-ru53nakifa] {
    flex: 1;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    line-height: 1.45;
}

/* ── Edit dialog: structured assumption rows ────────────────── */
.opp-assumption-editor[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.opp-assumption-edit-row[b-ru53nakifa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.opp-assumption-edit-index[b-ru53nakifa] {
    flex-shrink: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-text-muted);
    width: 1.25rem;
    text-align: center;
}

/* Input takes all remaining space so it never collapses to a fixed width. */
.opp-assumption-edit-input[b-ru53nakifa] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Badge + document share a fixed-width, right-aligned column so chips line up across rows. */
.opp-assumption-edit-meta[b-ru53nakifa] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.4rem;
    flex: 0 0 auto;
    width: 11rem;
}

.opp-assumption-edit-doc[b-ru53nakifa] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.opp-assumption-edit-remove[b-ru53nakifa] {
    flex-shrink: 0;
}

.opp-assumption-add[b-ru53nakifa] {
    align-self: flex-start;
}


/* ── Right column: holds the chat card ─────────────────────── */
.opp-detail-right[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
}

/* Transient "a re-calculation is running" banner shown after a manual dialog save. */
.opp-recalc-banner[b-ru53nakifa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    border-radius: 0.5rem;
    border: 1px solid var(--bs-primary-border-subtle);
    background: color-mix(in srgb, var(--bs-primary-border-subtle) 8%, transparent);
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
}

/* ── Potential value basis: light info box inside the foundation card ──
   Background uses --accent-blue-light (the shared light-blue tint defined per
   theme in _app-styles.scss) rather than a color-mix here, per the razor.css =
   layout-only convention - presentation colours belong in the Sass tokens. */
.opp-potential-basis[b-ru53nakifa] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    margin: 0 1.1rem 1rem;
    padding: 0.75rem 0.9rem;
    border-radius: 0.6rem;
    background: var(--accent-blue-light);
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    line-height: 1.5;
}

.opp-potential-basis .bi[b-ru53nakifa] {
    flex-shrink: 0;
    margin-top: 0.1rem;
    color: var(--bs-primary);
}

/* ── Calculation details section inside the foundation card (AIG-96) ── */
.opp-factors-section[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0 1.1rem 1.1rem;
}

.opp-factors-section-toggle[b-ru53nakifa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    width: 100%;
    background: none;
    border: none;
    border-top: 1px solid var(--bs-border-color);
    padding: 0.75rem 0 0;
    color: var(--bs-secondary);
    cursor: pointer;
}

.opp-factors-section-toggle:hover[b-ru53nakifa] {
    color: var(--bs-body-color);
}

.opp-factors-empty[b-ru53nakifa] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* On the detail page the factor rows form one bordered table; the base .opp-factor
   chip look (border + radius per row) is kept for the edit modal's read-only list. */
.opp-factors[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    overflow: hidden;
}

.opp-factors>.opp-factor[b-ru53nakifa] {
    border: none;
    border-radius: 0;
}

.opp-factors>.opp-factor+.opp-factor[b-ru53nakifa] {
    border-top: 1px solid var(--bs-border-color);
}

/* Inside the table a full warning border is no longer possible - keep the tinted
   background and mark the row with an inset accent stripe instead. */
.opp-factors>.opp-factor--contested[b-ru53nakifa] {
    box-shadow: inset 3px 0 0 var(--bs-warning);
}

/* Sum row: visually part of the table, emphasised but not a badge. */
.opp-factors>.opp-factor--total[b-ru53nakifa] {
    background: var(--bs-secondary-bg-subtle);
}

.opp-factors>.opp-factor--total .opp-factor-label[b-ru53nakifa],
.opp-factors>.opp-factor--total .opp-factor-value[b-ru53nakifa] {
    font-weight: 600;
    color: var(--bs-body-color);
}

.opp-factor[b-ru53nakifa] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background: var(--bs-body-bg);
}

.opp-factor--contested[b-ru53nakifa] {
    border-color: var(--bs-warning-border-subtle, var(--bs-warning));
    background: color-mix(in srgb, var(--bs-warning-bg-subtle) 60%, var(--bs-body-bg));
}

.opp-factor-label[b-ru53nakifa] {
    flex: 1;
    min-width: 0;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.opp-factor-value[b-ru53nakifa] {
    flex-shrink: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-secondary);
    font-variant-numeric: tabular-nums;
}

.opp-factor-chip[b-ru53nakifa] {
    flex-shrink: 0;
}

.opp-factor-contested[b-ru53nakifa] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
}

.opp-factor-edit[b-ru53nakifa] {
    flex-shrink: 0;
}

/* Full-width bar that opens the evidence-sources drawer. */
.opp-factors-evidence-bar[b-ru53nakifa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.6rem 0.9rem;
    border: none;
    border-radius: 0.5rem;
    background: var(--bs-secondary-bg-subtle);
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.opp-factors-evidence-bar:hover[b-ru53nakifa] {
    background: color-mix(in srgb, var(--bs-secondary-bg) 60%, var(--bs-secondary-bg-subtle));
    color: var(--bs-body-color);
}

.opp-factors-evidence-bar-open[b-ru53nakifa] {
    margin-left: auto;
}

/* ── Read-only factor list inside the edit modal ────────────── */
.opp-factors-modal-hint[b-ru53nakifa] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    margin: 0 0 0.5rem;
}

.opp-factors-modal-list[b-ru53nakifa] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.opp-factor--readonly[b-ru53nakifa] {
    opacity: 0.9;
}

/* ── Plain-text assumption rows (AIG-96: qualitative only) ──── */
.opp-assumption--plain[b-ru53nakifa] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    padding: 0.55rem 0.75rem;
}

/* ── Field relations (AIG-265) ──────────────────────────────── */
/* Field mappings card (AIG-351 design): settled mappings read as a quiet
   "field -> values" list inside one bordered box; a pending agent suggestion is a
   separate, actionable block below it. */
.opp-field-mappings[b-ru53nakifa] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
}

.opp-field-mapping[b-ru53nakifa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.6rem 0.75rem;
}

.opp-field-mapping-name[b-ru53nakifa] {
    font-size: var(--fs-base);
    color: var(--bs-body-color);
}

/* Values sit right-aligned and wrap onto further lines when a field carries many. */
.opp-field-mapping-values[b-ru53nakifa] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
}

.opp-field-mapping-state[b-ru53nakifa] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary-color);
}

.opp-field-mapping-more[b-ru53nakifa],
.opp-field-mapping-undo[b-ru53nakifa] {
    font-size: var(--fs-xs);
}

/* One pending suggestion: field, proposed values, an "AI suggestion" marker and the
   three decisions. Visually detached from the settled list above so an unreviewed
   proposal is never mistaken for a mapping that already holds. */
.opp-field-suggestion[b-ru53nakifa] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.75rem;
    padding: 0.6rem 0.75rem;
    border: 1px dashed var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.opp-field-suggestion .opp-field-mapping-values[b-ru53nakifa] {
    justify-content: flex-start;
    flex: 1 1 auto;
}

.opp-field-suggestion-label[b-ru53nakifa] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary-color);
    white-space: nowrap;
}

.opp-field-suggestion-actions[b-ru53nakifa] {
    display: flex;
    gap: 0.35rem;
}

/* Square, icon-only, but still outlined: .btn-icon would be the obvious class and is
   wrong here - it forces --bs-btn-border-color to transparent, and the design wants
   Confirm and "Don't adopt" to read as bordered buttons of equal weight. */
.opp-field-suggestion-action[b-ru53nakifa] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    padding: 0;
    line-height: 1;
}

/* AIG-402: "Suggestion is wrong" is the rare quality signal, so it drops the border and
   sits slightly apart - subordinate to the two convention decisions. */
.opp-field-suggestion-action--wrong[b-ru53nakifa] {
    margin-inline-start: 0.25rem;
}

@media (max-width: 575.98px) {
    .opp-field-mapping[b-ru53nakifa],
    .opp-field-suggestion[b-ru53nakifa] {
        flex-direction: column;
        align-items: flex-start;
    }

    .opp-field-mapping-values[b-ru53nakifa] {
        justify-content: flex-start;
    }
}
/* /Components/Pages/Settings.razor.rz.scp.css */
/* Page-level layout is provided by .page-section, .page-section-fill, .page-header,
   .page-title, .page-subtitle, .page-card in wwwroot/app.css / _app-styles.scss */

/* The page-card is a fixed-height flex column (see .page-section-fill in _app-styles.scss);
   the tab content scrolls internally so long sections never overflow the card. Setting
   overflow-y forces the browser to treat overflow-x as non-visible too, which otherwise
   clips the focus ring of inputs sitting flush with the container's edge (AIG-474) - the
   padding/negative-margin pair gives the ring room without shifting the visible layout. */
.settings-tab-body[b-qj7s5d74jn] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 0 0.25rem;
    margin: 0 -0.25rem;
}

/* ::deep so section components (e.g. the welcome tour block in SettingsProfile) can reuse
   the tab headline style for their own sub-headlines. */
.settings-tab-body[b-qj7s5d74jn]  .settings-tab-header {
    margin-bottom: 1.5rem;
}

.settings-tab-body[b-qj7s5d74jn]  .settings-tab-title {
    font-size: 1.25rem;
    margin: 0;
}

.settings-tab-body[b-qj7s5d74jn]  .settings-tab-subtitle {
    color: var(--bs-secondary-color);
    margin: 0.25rem 0 0;
}
/* /Components/Pages/TestChat.razor.rz.scp.css */
/* === 3-Column Grid Layout === */
.testchat-grid[b-8v5ugfdu8e] {
    --sidebar-width: 240px;
    --context-panel-width: 380px;

    display: grid;
    grid-template-columns: var(--sidebar-width) 1fr var(--context-panel-width);
    height: calc(100vh - var(--header-height, 64px));
    overflow: hidden;
}

/* === LEFT: Sidebar === */
.testchat-sidebar[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    border-right: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    overflow: hidden;
}

.sidebar-list[b-8v5ugfdu8e] {
    flex: 1;
    overflow-y: auto;
    padding: 6px;
}

.sidebar-empty[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 2rem 1rem;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    text-align: center;
}

.sidebar-item[b-8v5ugfdu8e] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--bs-border-radius-sm);
    cursor: pointer;
    transition: background 0.15s;
    color: var(--bs-body-color);
    font-size: var(--fs-sm);
}

.sidebar-item:hover[b-8v5ugfdu8e] {
    background: var(--bs-secondary-bg);
}

.sidebar-item.active[b-8v5ugfdu8e] {
    background: rgba(var(--bs-primary-rgb), 0.12);
    color: var(--bs-primary);
    font-weight: 600;
}

.sidebar-item-icon[b-8v5ugfdu8e] {
    font-size: 1.1rem;
    flex-shrink: 0;
}

.sidebar-item-info[b-8v5ugfdu8e] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    gap: 1px;
}

.sidebar-item-name[b-8v5ugfdu8e] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sidebar-item-date[b-8v5ugfdu8e] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    white-space: nowrap;
}

.sidebar-item-close[b-8v5ugfdu8e] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--bs-text-muted);
    font-size: var(--fs-xs);
    padding: 2px;
    border-radius: var(--bs-border-radius-sm);
    opacity: 0;
    transition: opacity 0.15s, color 0.15s;
}

.sidebar-item:hover .sidebar-item-close[b-8v5ugfdu8e] {
    opacity: 1;
}

.sidebar-item-close:hover[b-8v5ugfdu8e] {
    color: var(--bs-danger);
}

/* === MIDDLE: Chat Column === */
.testchat-chat-column[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--bs-secondary-bg);
}

.testchat-config-bar[b-8v5ugfdu8e] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    padding: 10px 14px;
    border-bottom: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    flex-shrink: 0;
}

.config-field[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}


.config-select[b-8v5ugfdu8e] {
    padding: 6px 10px;
    font-size: var(--fs-sm);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    cursor: pointer;
    transition: border-color 0.2s;
    width: 100%;
}

.config-select:hover:not(:disabled)[b-8v5ugfdu8e] {
    border-color: var(--bs-primary);
}

.config-select:focus[b-8v5ugfdu8e] {
    outline: none;
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 2px rgba(var(--bs-primary-rgb), 0.1);
}

.config-select:disabled[b-8v5ugfdu8e] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Layout only - appearance comes from the central .btn-primary variant. */
.start-chat-btn[b-8v5ugfdu8e] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    flex-shrink: 0;
    --bs-btn-font-weight: 600;
}

/* Chat area */
.testchat-chat-area[b-8v5ugfdu8e] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
}

.chat-messages[b-8v5ugfdu8e] {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
    background: var(--bs-secondary-bg);
}

.chat-input-container[b-8v5ugfdu8e] {
    border-top: 0.5px solid var(--bs-border-color);
    padding: 10px 14px;
    background: var(--bs-bg-card);
    flex-shrink: 0;
}

.chat-input-wrapper[b-8v5ugfdu8e] {
    display: flex;
    gap: 8px;
}

.chat-input[b-8v5ugfdu8e] {
    flex: 1;
    padding: 8px 12px;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    font-size: var(--fs-base);
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    transition: border-color 0.2s;
}

.chat-input:focus[b-8v5ugfdu8e] {
    outline: none;
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 2px rgba(var(--bs-primary-rgb), 0.1);
}

.chat-input:disabled[b-8v5ugfdu8e] {
    opacity: 0.5;
    background: var(--bs-secondary-bg);
}

/* Layout only - appearance comes from the central .btn-primary variant. */
.send-button[b-8v5ugfdu8e] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
}

.spinner[b-8v5ugfdu8e] {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin-b-8v5ugfdu8e 0.8s linear infinite;
}

/* Landing */
.chat-landing[b-8v5ugfdu8e] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.chat-landing-content[b-8v5ugfdu8e] {
    text-align: center;
    color: var(--bs-text-muted);
    max-width: 360px;
    padding: 2rem;
}

.chat-landing-content h4[b-8v5ugfdu8e] {
    color: var(--bs-body-color);
    margin-bottom: 0.5rem;
}

/* === RIGHT: Context Panel === */
.testchat-context-panel[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    border-left: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    overflow: hidden;
}

.context-panel-body[b-8v5ugfdu8e] {
    flex: 1;
    overflow-y: auto;
    padding: 0;
}

.context-section[b-8v5ugfdu8e] {
    border-bottom: 0.5px solid var(--bs-border-color);
}

.context-section-header[b-8v5ugfdu8e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    cursor: pointer;
    transition: background 0.15s;
}

.context-section-header:hover[b-8v5ugfdu8e] {
    background: var(--bs-secondary-bg);
}

.context-section-title[b-8v5ugfdu8e] {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-body-color);
    display: flex;
    align-items: center;
    gap: 6px;
}

.context-section-content[b-8v5ugfdu8e] {
    padding: 10px 14px;
}

/* Section toggle icon */
.section-toggle-icon[b-8v5ugfdu8e] {
    display: inline-flex;
    transition: transform 0.2s;
    font-size: var(--fs-xs);
}

.section-toggle-icon.expanded[b-8v5ugfdu8e] {
    transform: rotate(180deg);
}

/* Responsive breakpoints */
@media (max-width: 900px) {
    .testchat-grid[b-8v5ugfdu8e] {
        --sidebar-width: 200px;
        --context-panel-width: 260px;
    }
}

@media (max-width: 640px) {
    .testchat-grid[b-8v5ugfdu8e] {
        grid-template-columns: 1fr;
        grid-template-rows: auto 1fr auto;
    }

    .testchat-sidebar[b-8v5ugfdu8e] {
        border-right: none;
        border-bottom: 0.5px solid var(--bs-border-color);
        max-height: 120px;
    }

    .testchat-context-panel[b-8v5ugfdu8e] {
        border-left: none;
        border-top: 0.5px solid var(--bs-border-color);
        max-height: 40vh;
    }
}

/* Data source items (document scoping) */
.ds-item[b-8v5ugfdu8e] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    border-radius: var(--bs-border-radius-sm);
    cursor: pointer;
    transition: background 0.15s;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.ds-item:hover[b-8v5ugfdu8e] {
    background: var(--bs-secondary-bg);
}

.ds-item--active[b-8v5ugfdu8e] {
    background: rgba(var(--bs-primary-rgb), 0.08);
}

.ds-file-icon[b-8v5ugfdu8e] {
    font-size: var(--fs-xs);
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 3px;
    background: var(--bs-secondary-bg);
    color: var(--bs-secondary);
    flex-shrink: 0;
}

.ds-name[b-8v5ugfdu8e] {
    flex: 1;
    min-width: 0;
}

.ds-check[b-8v5ugfdu8e] {
    color: var(--bs-primary);
    flex-shrink: 0;
}

/* Session info card */
.session-info-card[b-8v5ugfdu8e] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    background: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    padding: 10px;
}

.session-info-row[b-8v5ugfdu8e] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: var(--fs-xs);
}

.session-info-label[b-8v5ugfdu8e] {
    font-weight: 600;
    color: var(--bs-secondary);
    white-space: nowrap;
    min-width: 80px;
}

.session-info-value[b-8v5ugfdu8e] {
    color: var(--bs-body-color);
    word-break: break-all;
    min-width: 0;
}

/* Animations */
@keyframes spin-b-8v5ugfdu8e {
    to { transform: rotate(360deg); }
}
/* /Components/Pages/Workspaces.razor.rz.scp.css */
/* Page-level layout: .page-section, .page-header etc. - wwwroot/app.css
   Item-card base: .item-list, .item-card, .item-card-header, .item-card-actions - wwwroot/app.css */

/* ── Outer paper card (mirrors .discoveries-paper) ────────────────── */

.workspaces-paper[b-jvqj802892] {
    padding: 2rem 2.5rem 2.5rem;
    gap: 0;
}

.workspace-list-header[b-jvqj802892] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.workspace-count[b-jvqj802892],
.workspace-quota[b-jvqj802892] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.workspace-section-label[b-jvqj802892] {
    padding: 16px 0 8px;
    border-bottom: 1px solid var(--bs-border-color);
    margin-bottom: 12px;
}

.workspace-list[b-jvqj802892] {
    gap: 10px;
    margin-bottom: 12px;
}

/* ── Workspace card ────────────────────────────────────────────────── */

.workspace-card[b-jvqj802892] {
    padding: 14px 18px;
    cursor: pointer;
    background: transparent;
    transition: border-color 0.15s ease, background-color 0.1s ease;
}

.workspace-card:hover[b-jvqj802892] {
    background-color: var(--bg-hover, var(--bs-secondary-bg));
    border-color: var(--accent-blue-light, var(--bs-border-color));
}

.workspace-card--active[b-jvqj802892] {
    border-color: var(--bs-primary);
}

.workspace-card-header[b-jvqj802892] {
    gap: 14px;
    align-items: center;
}

/* ── Workspace icon (letter avatar) ───────────────────────────────── */

.workspace-icon[b-jvqj802892] {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border-radius: 6px;
    background-color: var(--bs-primary-text-emphasis);
    color: var(--white);
    font-size: var(--fs-base);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    user-select: none;
}

.workspace-icon--shared[b-jvqj802892] {
    background-color: var(--bs-primary-text-emphasis);
    opacity: 0.75;
}

/* ── Workspace info ───────────────────────────────────────────────── */

.workspace-info[b-jvqj802892] {
    flex: 1;
    min-width: 0;
}

.workspace-name[b-jvqj802892] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
    margin: 0 0 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.workspace-description[b-jvqj802892] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── Card actions ─────────────────────────────────────────────────── */

.workspace-card-actions[b-jvqj802892] {
    gap: 6px;
    align-items: center;
}

.workspace-members-badge[b-jvqj802892] {
    font-size: var(--fs-xs, 11px);
    font-weight: 500;
    background-color: var(--bs-secondary-bg);
    color: var(--bs-secondary);
    border: 1px solid var(--bs-border-color);
    padding: 3px 8px;
    border-radius: 20px;
    white-space: nowrap;
}

/* ── Members management ────────────────────────────────────────────── */

/* Long selections ("Select all" on a large team) scroll instead of pushing the member list away. */
.members-selection[b-jvqj802892] {
    max-height: 240px;
    overflow-y: auto;
}

.members-role-select[b-jvqj802892] {
    width: auto;
}

.members-remove-backdrop[b-jvqj802892] {
    z-index: 1060;
}

.members-remove-modal[b-jvqj802892] {
    z-index: 1065;
}

/* ── Edit form ─────────────────────────────────────────────────────── */

.workspace-form-body[b-jvqj802892] {
    max-height: 70vh;
    overflow-y: auto;
}

.workspace-form-section-heading[b-jvqj802892] {
    font-size: var(--fs-md);
    font-weight: 700;
    color: var(--bs-body-color);
    margin: 0 0 16px;
}

.workspace-form-section-heading + .mb-3[b-jvqj802892],
.workspace-form-section-heading + .mb-4[b-jvqj802892] {
    margin-top: 0;
}

.workspace-form-footer[b-jvqj802892] {
    flex-wrap: nowrap;
    gap: 8px;
}

.workspace-form-footer-hint[b-jvqj802892] {
    font-size: var(--fs-sm);
}

.workspace-enrich-btn[b-jvqj802892] {
    flex-shrink: 0;
    font-size: var(--fs-sm);
}
/* /Components/Settings/SettingsNotifications.razor.rz.scp.css */
.settings-form[b-jmqhgw3l78] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    max-width: 480px;
}
/* /Components/Settings/SettingsProfile.razor.rz.scp.css */
.settings-form[b-qhyjxx0mrx] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    max-width: 480px;
}
/* /Components/Settings/SettingsSecurity.razor.rz.scp.css */
.settings-security-sections[b-6betjn0t19] {
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}

.settings-security-block:not(:last-child)[b-6betjn0t19] {
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.settings-section-title[b-6betjn0t19] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--bs-body-color);
    margin: 0 0 1.25rem;
}

.settings-form[b-6betjn0t19] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    max-width: 480px;
}

.mfa-qr[b-6betjn0t19] {
    width: 200px;
    height: 200px;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    background: var(--white);
    padding: 0.5rem;
}

.mfa-key[b-6betjn0t19] {
    font-family: var(--font-mono, monospace);
    letter-spacing: 0.1em;
    user-select: all;
}

.password-rules[b-6betjn0t19] {
    font-size: 0.85rem;
}

.password-rules-title[b-6betjn0t19] {
    font-weight: 600;
    margin-bottom: 0.25rem;
    color: var(--bs-secondary);
}

.password-rules-list[b-6betjn0t19] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.rule-met[b-6betjn0t19] {
    color: var(--bs-success);
}

.rule-unmet[b-6betjn0t19] {
    color: var(--bs-secondary);
}

.rule-met i[b-6betjn0t19],
.rule-unmet i[b-6betjn0t19] {
    margin-right: 0.35rem;
}
/* /Components/Settings/UserMemory.razor.rz.scp.css */
.memory-sections[b-7jiwu2wn51] {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    max-width: 640px;
}

.memory-section[b-7jiwu2wn51] {
    padding: 1.5rem;
}

.memory-section-title[b-7jiwu2wn51] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--bs-body-color);
    margin: 0 0 1.25rem;
}
/* /Components/Shared/AnalysisActionsMenu.razor.rz.scp.css */
.dropdown-menu[b-4qwx25eoxc] {
    top: 100%;
    right: 0;
    margin-top: 0.25rem;
    min-width: 11rem;
}
/* /Components/Shared/AnalysisChart.razor.rz.scp.css */
.analysis-chart-empty[b-gre47a6fb9] {
    color: var(--bs-secondary-color);
    margin: 0;
}
/* /Components/Shared/AnalysisDrillDialog.razor.rz.scp.css */
.analysis-drill-dialog[b-xpuolb9pv8]  .modal-dialog {
    max-width: 90vw;
}

.analysis-drill-dialog[b-xpuolb9pv8]  .modal-content {
    max-height: 90vh;
}

.analysis-drill-dialog-icon[b-xpuolb9pv8] {
    background: var(--bs-bg-card);
}
/* /Components/Shared/AnalysisLibrary.razor.rz.scp.css */
/* Lets the truncated title/description shrink inside the flex row. */
.analysis-library-card-text[b-ug1qfqm69t] {
    min-width: 0;
}

/* The open button fills the card body next to the pin, so the whole card area stays clickable. */
.analysis-library-open[b-ug1qfqm69t] {
    min-width: 0;
}

/* The description shows up to two lines, then ends with an ellipsis. No d-block on the element:
   its display: block !important would override the -webkit-box the clamp needs. */
.analysis-library-description[b-ug1qfqm69t] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* The pin appears only while its own card (not the surrounding library card) is hovered
   or holds keyboard focus. Touch devices have no hover, so there it stays visible. */
@media (hover: hover) {
    .analysis-library-pin[b-ug1qfqm69t] {
        opacity: 0;
        transition: opacity 0.15s ease;
    }

    .analysis-library-item:hover .analysis-library-pin[b-ug1qfqm69t],
    .analysis-library-item:focus-within .analysis-library-pin[b-ug1qfqm69t] {
        opacity: 1;
    }
}
/* /Components/Shared/AnalysisMatrixGrid.razor.rz.scp.css */
.analysis-chart-empty[b-nur83cpd36] {
    color: var(--bs-secondary-color);
    margin: 0;
}

.analysis-matrix-scroll[b-nur83cpd36] {
    overflow-x: auto;
}

.analysis-matrix[b-nur83cpd36] {
    border-collapse: collapse;
    width: 100%;
    font-size: var(--fs-sm);
}

.analysis-matrix th[b-nur83cpd36],
.analysis-matrix td[b-nur83cpd36] {
    border: 1px solid var(--bs-border-color);
    padding: 0.4rem 0.6rem;
    text-align: right;
    white-space: nowrap;
}

.analysis-matrix thead th[b-nur83cpd36] {
    text-align: center;
    background: var(--bs-secondary-bg);
    font-weight: 600;
}

.analysis-matrix tbody th[b-nur83cpd36] {
    text-align: left;
    background: var(--bs-secondary-bg);
    font-weight: 600;
}

.analysis-matrix-cell[b-nur83cpd36] {
    background-color: color-mix(in srgb, var(--blue-500) calc(var(--cell-intensity, 0) * 55%), transparent);
}

.analysis-matrix-cell--empty[b-nur83cpd36] {
    color: var(--bs-secondary-color);
}

/* Only set when a drill-down handler is attached - the cursor must not promise a click that does nothing. */
.analysis-matrix-cell--clickable[b-nur83cpd36] {
    cursor: pointer;
}

.analysis-matrix-cell--clickable:hover[b-nur83cpd36],
.analysis-matrix-cell--clickable:focus-visible[b-nur83cpd36] {
    outline: 2px solid var(--bs-primary);
    outline-offset: -2px;
}
/* /Components/Shared/AnalysisRunsDrawer.razor.rz.scp.css */
/* AIG-266 analysis runs drawer. Rendered inside the shared SidePanel; only the drawer-specific
   content is styled here - shell, backdrop and header come from .sidepanel. Styling is
   provisional pending AIG-267. */

.analysis-runs-drawer-body[b-wv79p6hkz4] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-height: 0;
}

.analysis-runs-drawer-status[b-wv79p6hkz4] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.analysis-runs-drawer-muted[b-wv79p6hkz4] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.analysis-runs-drawer-item[b-wv79p6hkz4] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background: var(--bs-bg-card);
    text-decoration: none;
    color: inherit;
}

.analysis-runs-drawer-item:hover[b-wv79p6hkz4] {
    border-color: var(--bs-primary);
}

/* AIG-440: a thread run shows its instruction under the action label, single line. */
.analysis-runs-drawer-item-instruction[b-wv79p6hkz4] {
    min-width: 0;
}

.analysis-runs-drawer-item-header[b-wv79p6hkz4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.analysis-runs-drawer-item-name[b-wv79p6hkz4] {
    font-weight: 600;
}

.analysis-runs-drawer-item-meta[b-wv79p6hkz4] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}
/* /Components/Shared/AnalysisRunStatusBadge.razor.rz.scp.css */
/* AIG-266 analysis run status pill. Styling is provisional pending AIG-267. */

.analysis-run-status-badge--running[b-g99v12xfbb] {
    color: var(--bs-primary);
    background: var(--bs-primary-bg-subtle);
}

.analysis-run-status-badge--readyforreview[b-g99v12xfbb] {
    color: var(--bs-warning-text-emphasis, var(--bs-warning));
    background: var(--bs-warning-bg-subtle);
}

.analysis-run-status-badge--completed[b-g99v12xfbb] {
    color: var(--bs-success-text-emphasis);
    background: var(--bs-success-bg-subtle);
}

.analysis-run-status-badge--failed[b-g99v12xfbb],
.analysis-run-status-badge--cancelled[b-g99v12xfbb] {
    color: var(--bs-secondary);
    background: var(--bs-secondary-bg-subtle);
}
/* /Components/Shared/AnalysisSuggestionRow.razor.rz.scp.css */
/* AIG-266: mirrors OpportunityDetail.razor's field-relation card styling (~lines 520-590) so the
   suggestion review UI reads consistently with the existing field-relation review idiom.
   Styling is provisional pending AIG-267. */

.analysis-suggestion-row[b-n2puuuf3yl] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background: var(--bs-body-bg);
}

.analysis-suggestion-row-header[b-n2puuuf3yl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.analysis-suggestion-row-field[b-n2puuuf3yl] {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-body-color);
}

.analysis-suggestion-row-confidence--certain[b-n2puuuf3yl] {
    color: var(--confidence-high-text);
    background: var(--confidence-high-bg);
}

.analysis-suggestion-row-confidence--mentioned[b-n2puuuf3yl] {
    color: var(--bs-secondary);
    background: var(--bs-secondary-bg-subtle);
}

.analysis-suggestion-row-stale[b-n2puuuf3yl] {
    color: var(--bs-warning-text-emphasis, var(--bs-warning));
    background: var(--bs-warning-bg-subtle);
}

.analysis-suggestion-row-state[b-n2puuuf3yl] {
    font-size: var(--fs-xs, 0.75rem);
    font-weight: 500;
    color: var(--bs-secondary);
    background: var(--bs-secondary-bg-subtle);
    opacity: 0.85;
}

.analysis-suggestion-row-reasoning[b-n2puuuf3yl] {
    font-size: var(--fs-xs, 0.75rem);
    margin: 0;
}

.analysis-suggestion-row-values[b-n2puuuf3yl] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.analysis-suggestion-row-value-group[b-n2puuuf3yl] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.analysis-suggestion-row-value-label[b-n2puuuf3yl] {
    font-size: var(--fs-xs, 0.75rem);
    color: var(--bs-secondary);
    min-width: 4.5rem;
}

.analysis-suggestion-row-chips[b-n2puuuf3yl] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.analysis-suggestion-row-chip[b-n2puuuf3yl] {
    font-size: var(--fs-xs, 0.75rem);
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-body-color);
}

.analysis-suggestion-row-chip--proposed[b-n2puuuf3yl] {
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis, var(--bs-primary));
}

.analysis-suggestion-row-actions[b-n2puuuf3yl] {
    display: flex;
    gap: 0.4rem;
}

/* AIG-402: the error action trails the two decisions, visually subordinate. */
.analysis-suggestion-row-action-wrong[b-n2puuuf3yl] {
    margin-inline-start: auto;
}
/* /Components/Shared/AnalysisTableCard.razor.rz.scp.css */
.analysis-table-card[b-mzeiaflpb2]  table.quickgrid {
    border: none;
}

.analysis-table-card[b-mzeiaflpb2]  tbody > tr:last-child > td:first-child,
.analysis-table-card[b-mzeiaflpb2]  tbody > tr:last-child > td:last-child {
    border-radius: 0;
}
/* /Components/Shared/AnalysisValuesTable.razor.rz.scp.css */
.analysis-values-search[b-jix7md5utu] {
    max-width: 24rem;
}

.analysis-share-bar[b-jix7md5utu] {
    width: 7rem;
    height: 0.5rem;
}

.analysis-share-value[b-jix7md5utu] {
    min-width: 3rem;
}
/* /Components/Shared/AnalysisVisibilityMenu.razor.rz.scp.css */
.dropdown-menu[b-pxkklmxur9] {
    top: 100%;
    right: 0;
    margin-top: 0.25rem;
    width: 18rem;
}
/* /Components/Shared/AuthCard.razor.rz.scp.css */
.auth-page[b-5k31iikez6] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

.auth-card[b-5k31iikez6] {
    margin: auto;
    width: 100%;
    max-width: 420px;
    padding: 2rem;
}

.auth-branding[b-5k31iikez6] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    gap: 0.25rem;
    margin-bottom: 1.5rem;
}

.auth-app-name[b-5k31iikez6] {
    font-weight: 600;
    color: var(--blue-800);
    margin: 0;
}

[b-5k31iikez6] .auth-logo {
    width: 48px;
    height: 48px;
    border-radius: var(--bs-border-radius-sm);
}

/* Optional page heading inside the card (e.g. the two-factor pages), below the platform name. */
.auth-card[b-5k31iikez6]  .auth-heading {
    font-weight: 600;
    color: var(--bs-emphasis-color);
    margin-bottom: 0.5rem;
}

/* Page content is rendered by the calling page (ChildContent), so it carries that page's scope
   attribute - reach it with ::deep. */
.auth-subtitle[b-5k31iikez6],
.auth-card[b-5k31iikez6]  .auth-subtitle {
    line-height: 150%;
    color: var(--bs-body-color);
    margin-bottom: 32px;
}

.auth-card[b-5k31iikez6]  .form-label {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--bs-secondary);
}

.auth-card[b-5k31iikez6]  .btn-primary {
    padding: 0.625rem 1rem;
    margin-top: 0.5rem;
}

.auth-card[b-5k31iikez6]  .auth-footer-link {
    margin-top: 1.5rem;
    text-align: center;
    font-size: var(--fs-sm);
}

.auth-card[b-5k31iikez6]  .auth-footer-link a {
    color: var(--bs-primary);
    text-decoration: none;
}

.auth-card[b-5k31iikez6]  .auth-footer-link a:hover {
    text-decoration: underline;
}
/* /Components/Shared/AvatarUpload.razor.rz.scp.css */
.avatar-upload[b-e9begg2o2j] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.avatar-upload-preview[b-e9begg2o2j] {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    background: var(--bs-secondary-bg);
    display: flex;
    align-items: center;
    justify-content: center;
}

.avatar-img[b-e9begg2o2j] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.avatar-initials[b-e9begg2o2j] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--bs-secondary);
    user-select: none;
}

.avatar-upload-actions[b-e9begg2o2j] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.avatar-upload-btn[b-e9begg2o2j] {
    position: relative;
    cursor: pointer;
}

/* Hide the native file input while keeping it accessible.
   ::deep is required because InputFile is a child component, so the
   rendered <input> does not receive this component's CSS-isolation scope. */
.avatar-upload-btn[b-e9begg2o2j]  .avatar-file-input {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
    width: 100%;
    height: 100%;
}

.avatar-upload-error[b-e9begg2o2j] {
    width: 100%;
}
/* /Components/Shared/CapybaraPet.razor.rz.scp.css */
/* Aiguro capybara desk pet - dev mode only. Sits just above the chat input. */

.capybara-pet[b-t8rdzfi9wm] {
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    pointer-events: none;
    user-select: none;
}

.capybara[b-t8rdzfi9wm] {
    width: 44px;
    height: 44px;
    pointer-events: auto;
    cursor: pointer;
    overflow: visible;
    transform-origin: 50% 90%;
}

/* ── Colours (warm orange Aiguro capybara) ── */
.capybara-outline[b-t8rdzfi9wm] {
    fill: var(--capybara-outline, #481F11);
}

.capybara-brown-dark[b-t8rdzfi9wm] {
    fill: var(--capybara-brown-dark, #53291A);
}

.capybara-brown[b-t8rdzfi9wm] {
    fill: var(--capybara-brown, #774837);
}

.capybara-fur[b-t8rdzfi9wm] {
    fill: var(--capybara-fur, #D48233);
}

.capybara-fur-dark[b-t8rdzfi9wm] {
    fill: var(--capybara-fur-dark, #B6692C);
}

.capybara-fur-light[b-t8rdzfi9wm] {
    fill: var(--capybara-fur-light, #DD9D60);
}

.capybara-patch[b-t8rdzfi9wm] {
    fill: var(--capybara-patch, #E4AD76);
}

.capybara-cream[b-t8rdzfi9wm] {
    fill: var(--capybara-cream, #F0C99D);
}

.capybara-tan[b-t8rdzfi9wm] {
    fill: var(--capybara-tan, #D9A87F);
}

.capybara-white[b-t8rdzfi9wm] {
    fill: var(--capybara-white, #F7F5F1);
}

.capybara-tongue[b-t8rdzfi9wm] {
    fill: #e08a9c;
    transform-origin: 50% 0%;
    transform-box: fill-box;
    transform: scaleY(0);
}

.capybara-yuzu-peel[b-t8rdzfi9wm] {
    fill: var(--capybara-yuzu, #F39A1E);
}

.capybara-yuzu-shine[b-t8rdzfi9wm] {
    fill: var(--capybara-yuzu-shine, #FBC46A);
}

.capybara-yuzu-leaf[b-t8rdzfi9wm] {
    fill: var(--capybara-leaf, #6B8F3A);
}

.capybara-zzz[b-t8rdzfi9wm] {
    fill: var(--capybara-outline, #481F11);
    font-family: Georgia, serif;
    font-weight: 700;
}

/* Props stay invisible until their animation plays. They are drawn above the
   viewBox, so they must never catch clicks meant for the page around them. */
.capybara-yuzu[b-t8rdzfi9wm],
.capybara-zzz[b-t8rdzfi9wm] {
    pointer-events: none;
}

.capybara-yuzu[b-t8rdzfi9wm],
.capybara-zzz text[b-t8rdzfi9wm] {
    opacity: 0;
}

/* Dark backing under each animated ear (the stationary silhouette leaves the
   ears out); the stroke closes anti-aliasing seams between the ear layers. */
.capybara-ear-backing[b-t8rdzfi9wm] {
    stroke: var(--capybara-outline, #481F11);
    stroke-width: 2;
}

.capybara-shadow[b-t8rdzfi9wm] {
    fill: rgba(0, 0, 0, 0.12);
}

/* ── Idle: slow, unbothered breathing + long, lazy blink (always on) ── */
/* Origins are in artwork (viewBox user) coordinates: the body pivots on the
   ground between its feet. */
.capybara-body-group[b-t8rdzfi9wm] {
    transform-box: view-box;
    transform-origin: 285px 410px;
    animation: capybara-idle-breathe-b-t8rdzfi9wm 4.5s ease-in-out infinite;
}

.capybara-eye[b-t8rdzfi9wm] {
    transform-origin: center;
    transform-box: fill-box;
    animation: capybara-blink-b-t8rdzfi9wm 7s ease-in-out infinite;
}

@keyframes capybara-idle-breathe-b-t8rdzfi9wm {
    0%, 100% { transform: scaleX(1) scaleY(1); }
    50% { transform: scaleX(1.015) scaleY(0.99); }
}

@keyframes capybara-blink-b-t8rdzfi9wm {
    0%, 94%, 100% { transform: scaleY(1); }
    97% { transform: scaleY(0.1); }
}

/* ── Triggered animations (a JS timer toggles these classes at random times) ── */

/* Chew: the jaw works slowly, completely unbothered */
.capybara-pet.is-chewing .capybara-jaw[b-t8rdzfi9wm] {
    animation: capybara-chew-b-t8rdzfi9wm 1.6s ease-in-out 2;
}

@keyframes capybara-chew-b-t8rdzfi9wm {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(5px); }
}

/* Stretch: body elongates and settles back */
.capybara-pet.is-stretching .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-stretch-b-t8rdzfi9wm 1.8s cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes capybara-stretch-b-t8rdzfi9wm {
    0%, 100% { transform: scaleX(1); }
    50% { transform: scaleX(1.12); }
}

/* Doze: eyes shut for a long moment and the whole capybara slumps - the
   sleepiest animation */
.capybara-pet.is-dozing .capybara-eye[b-t8rdzfi9wm] {
    animation: capybara-doze-eye-b-t8rdzfi9wm 2.2s ease-in-out;
}

.capybara-pet.is-dozing .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-doze-slump-b-t8rdzfi9wm 2.2s ease-in-out;
}

@keyframes capybara-doze-eye-b-t8rdzfi9wm {
    0%, 100% { transform: scaleY(1); }
    30%, 70% { transform: scaleY(0.1); }
}

@keyframes capybara-doze-slump-b-t8rdzfi9wm {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(12px) scaleY(0.97); }
}

/* Blep: tongue pokes out for a moment, as capybaras do */
.capybara-pet.is-blep .capybara-tongue[b-t8rdzfi9wm] {
    animation: capybara-blep-b-t8rdzfi9wm 1.4s ease-in-out;
}

@keyframes capybara-blep-b-t8rdzfi9wm {
    0%, 20%, 100% { transform: scaleY(0); }
    50%, 80% { transform: scaleY(1); }
}

/* Wiggle: a happy little full-body shake */
.capybara-pet.is-wiggling .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-wiggle-b-t8rdzfi9wm 0.6s ease-in-out 2;
}

@keyframes capybara-wiggle-b-t8rdzfi9wm {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-3deg); }
    75% { transform: rotate(3deg); }
}

/* Roam: triggered by a triple-click (see pet-roam.js) - the capybara keeps
   wiggling for as long as it's off wandering the page. */
.capybara-pet.is-roaming .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-wiggle-b-t8rdzfi9wm 0.6s ease-in-out infinite;
}

/* Ear twitch: first the left, then the right ear flicks. Back and front ear
   layers share one origin at the ear base. */
.capybara-ear[b-t8rdzfi9wm] {
    transform-box: view-box;
}

.capybara-ear-left[b-t8rdzfi9wm] {
    transform-origin: 212px 92px;
}

.capybara-ear-right[b-t8rdzfi9wm] {
    transform-origin: 366px 92px;
}

.capybara-pet.is-ear-twitch .capybara-ear-left[b-t8rdzfi9wm] {
    animation: capybara-ear-left-b-t8rdzfi9wm 1s ease-in-out;
}

.capybara-pet.is-ear-twitch .capybara-ear-right[b-t8rdzfi9wm] {
    animation: capybara-ear-right-b-t8rdzfi9wm 1s ease-in-out 0.35s;
}

@keyframes capybara-ear-left-b-t8rdzfi9wm {
    0%, 40%, 100% { transform: rotate(0deg); }
    10% { transform: rotate(-16deg); }
    25% { transform: rotate(-6deg); }
}

@keyframes capybara-ear-right-b-t8rdzfi9wm {
    0%, 40%, 100% { transform: rotate(0deg); }
    10% { transform: rotate(16deg); }
    25% { transform: rotate(6deg); }
}

/* Yuzu: an orange drops onto the head, bounces once and stays a while; the
   capybara half-closes its eyes, content. */
.capybara-yuzu[b-t8rdzfi9wm] {
    transform-box: view-box;
    transform-origin: 288px 53px;
}

.capybara-pet.is-yuzu .capybara-yuzu[b-t8rdzfi9wm] {
    animation: capybara-yuzu-drop-b-t8rdzfi9wm 4.6s ease-in-out;
}

.capybara-pet.is-yuzu .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-yuzu-squash-b-t8rdzfi9wm 4.6s ease-in-out;
}

.capybara-pet.is-yuzu .capybara-eye[b-t8rdzfi9wm] {
    animation: capybara-yuzu-content-b-t8rdzfi9wm 4.6s ease-in-out;
}

@keyframes capybara-yuzu-drop-b-t8rdzfi9wm {
    0% { opacity: 0; transform: translateY(-160px); animation-timing-function: ease-in; }
    8% { opacity: 1; }
    22% { transform: translateY(0); animation-timing-function: ease-out; }
    28% { transform: translateY(-16px); animation-timing-function: ease-in; }
    34%, 84% { opacity: 1; transform: translateY(0); }
    100% { opacity: 0; transform: translateY(0); }
}

@keyframes capybara-yuzu-squash-b-t8rdzfi9wm {
    0%, 20%, 30%, 100% { transform: scaleY(1); }
    23% { transform: scaleX(1.02) scaleY(0.96); }
}

@keyframes capybara-yuzu-content-b-t8rdzfi9wm {
    0%, 36%, 92%, 100% { transform: scaleY(1); }
    44%, 84% { transform: scaleY(0.45); }
}

/* Snooze: a longer doze with floating Zzz */
.capybara-pet.is-snoozing .capybara-eye[b-t8rdzfi9wm] {
    animation: capybara-snooze-eye-b-t8rdzfi9wm 4.2s ease-in-out;
}

.capybara-pet.is-snoozing .capybara-body-group[b-t8rdzfi9wm] {
    animation: capybara-snooze-slump-b-t8rdzfi9wm 4.2s ease-in-out;
}

/* Longhands only: the shorthand would reset the per-letter delays below. */
.capybara-pet.is-snoozing .capybara-zzz text[b-t8rdzfi9wm] {
    animation-name: capybara-z-b-t8rdzfi9wm;
    animation-duration: 2.4s;
    animation-timing-function: ease-out;
}

.capybara-pet.is-snoozing .capybara-zzz .capybara-z1[b-t8rdzfi9wm] {
    animation-delay: 0.8s;
}

.capybara-pet.is-snoozing .capybara-zzz .capybara-z2[b-t8rdzfi9wm] {
    animation-delay: 1.3s;
}

.capybara-pet.is-snoozing .capybara-zzz .capybara-z3[b-t8rdzfi9wm] {
    animation-delay: 1.8s;
}

@keyframes capybara-snooze-eye-b-t8rdzfi9wm {
    0%, 100% { transform: scaleY(1); }
    12%, 88% { transform: scaleY(0.1); }
}

@keyframes capybara-snooze-slump-b-t8rdzfi9wm {
    0%, 100% { transform: translateY(0) scaleY(1); }
    20%, 80% { transform: translateY(10px) scaleY(0.97); }
    50% { transform: translateY(14px) scaleY(0.96); }
}

@keyframes capybara-z-b-t8rdzfi9wm {
    0% { opacity: 0; transform: translate(0, 0); }
    25% { opacity: 1; }
    100% { opacity: 0; transform: translate(14px, -26px); }
}

/* Reduced motion: switch off every animation - idle and triggered alike (the
   triggered .capybara-pet.is-* rules are more specific, hence !important). */
@media (prefers-reduced-motion: reduce) {
    .capybara[b-t8rdzfi9wm],
    .capybara *[b-t8rdzfi9wm] {
        animation: none !important;
    }
}
/* /Components/Shared/ChatInputBar.razor.rz.scp.css */
.input-area[b-6763cba8b8] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 14px 12px;
    border-top: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    flex-shrink: 0;
}

/* ── Tools row (Files pill) ── */
.input-tools[b-6763cba8b8] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.input-tool-pills[b-6763cba8b8] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* - Tool groups (AIG-423): sources (Documents/Web search/MCP) expand the AI's context,
   the framework narrows the analysis - kept visually apart so the framework doesn't read
   as another source. */
.input-tool-group[b-6763cba8b8] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.input-tool-group-divider[b-6763cba8b8] {
    align-self: stretch;
    width: 0.5px;
    background: var(--bs-border-color);
    margin: 2px 0;
}

.ds-pill[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    border: none;
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.ds-pill:hover[b-6763cba8b8] {
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

.ds-pill--active[b-6763cba8b8] {
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

/* ── Workspace currency/language indicator (AIG-453) ── */
/* Plain icon + text, no pill background/padding - the language and currency indicators are
   not interactive controls, so they don't share the Files/Framework/Web-search pill styling. */
.ds-pill--static[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    font-weight: 500;
    cursor: default;
}

.chat-pet-slot[b-6763cba8b8] {
    display: flex;
    align-items: center;
    margin-left: auto;
}

.chat-workspace-meta[b-6763cba8b8] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.chat-workspace-meta-sep[b-6763cba8b8] {
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

.ds-pill-count[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--bs-primary);
    color: var(--white);
    font-size: var(--fs-xs);
    font-weight: 700;
    line-height: 1;
}

/* ── Follow-up suggestion row (AIG-422) ── */
/* Sits between the tools row and the textarea: a muted lead-in ("applies from your next message")
   plus one outlined chip per changed source kind, styled like the empty-state quick-start chips in
   ChatInterface so a suggested action looks the same wherever it appears. */
.chat-followups[b-6763cba8b8] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    animation: ds-pop-in-b-6763cba8b8 0.12s ease-out;
}

.chat-followups-lead[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

.chat-followup-chip[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.chat-followup-chip:hover[b-6763cba8b8] {
    border-color: var(--bs-primary-border-subtle);
    color: var(--bs-primary);
    background: var(--accent-blue-light);
}

/* ── Input shell (textarea + circular send) ── */
.input-shell[b-6763cba8b8] {
    position: relative;
    display: flex;
    align-items: flex-end;
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background: var(--bs-body-bg);
    transition: border-color 0.15s;
}

.input-shell:focus-within[b-6763cba8b8] {
    border-color: var(--bs-primary-border-subtle);
}

.chat-input[b-6763cba8b8] {
    field-sizing: content;
    border: none;
    border-radius: var(--bs-border-radius-lg);
    padding: 11px 52px 11px 14px;
    font-size: var(--fs-base);
    color: var(--bs-body-color);
    background: transparent;
    resize: none;
    outline: none;
    min-height: 120px;
    max-height: calc(8 * 1.5em + 22px);
    line-height: 1.5;
    overflow-y: auto;
    width: 100%;
    font-family: inherit;
}

.chat-input[b-6763cba8b8]::placeholder {
    color: var(--bs-text-muted);
}

/* Layout only - appearance comes from the standard .btn-dark class; icon centring from the
   d-inline-flex/justify-content-center utilities in the markup. This positions it and grows
   it to a 32px circle. */
.send-btn[b-6763cba8b8] {
    position: absolute;
    right: 8px;
    bottom: 8px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    flex-shrink: 0;
    transition: transform 0.1s;
}

.send-btn-icon[b-6763cba8b8] {
    font-size: 0.95rem;
    line-height: 1;
}

.send-btn:active:not(:disabled)[b-6763cba8b8] {
    transform: scale(0.92);
}

/* ── Data-sources popover ── */
.ds-popover-backdrop[b-6763cba8b8] {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: transparent;
}

.ds-popover[b-6763cba8b8] {
    position: absolute;
    left: 14px;
    bottom: calc(100% - 4px);
    z-index: 41;
    width: min(360px, calc(100% - 28px));
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow-lg);
    overflow: hidden;
    animation: ds-pop-in-b-6763cba8b8 0.12s ease-out;
}

/* The data-source popover carries long file names in grouped rows, so it gets
   more room than the framework/MCP popovers - still capped by the input width. */
.ds-popover--docs[b-6763cba8b8] {
    width: min(450px, calc(100% - 28px));
}

@keyframes ds-pop-in-b-6763cba8b8 {
    from {
        opacity: 0;
        transform: translateY(6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.ds-popover-header[b-6763cba8b8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 14px;
    border-bottom: 0.5px solid var(--bs-border-color);
}

.ds-popover-title[b-6763cba8b8] {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--bs-body-color);
}

.ds-popover-count[b-6763cba8b8] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.ds-popover-close[b-6763cba8b8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: none;
    border-radius: var(--bs-border-radius-sm);
    background: transparent;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    cursor: pointer;
    flex-shrink: 0;
}

.ds-popover-close:hover[b-6763cba8b8] {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

.ai-disclaimer[b-6763cba8b8] {
    margin: 4px 0 0;
    padding: 0 4px;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    text-align: center;
}
/* /Components/Shared/ChatInterface.razor.rz.scp.css */
.chat-interface[b-zshtd1ivv7] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
    background: var(--bs-body-bg);
}

/* ── Panel header: heading (avatar + title/subtitle) and right-side badges ── */
.header-badges[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.panel-heading[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.panel-avatar[b-zshtd1ivv7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--accent-blue-light);
    color: var(--bs-primary);
    font-size: 0.95rem;
}

.panel-heading-text[b-zshtd1ivv7] {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
    min-width: 0;
}

/* Brand title (when a subtitle is present) is not upper-cased like the generic panel title. */
.panel-title--brand[b-zshtd1ivv7] {
    text-transform: none;
}

.panel-subtitle[b-zshtd1ivv7] {
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-text-muted);
    text-transform: none;
    letter-spacing: 0;
}

.loading-badge[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: var(--fs-sm);
    color: var(--bs-primary);
    background: var(--accent-blue-light);
    padding: 2px 8px;
    border-radius: 10px;
}

.loading-dot[b-zshtd1ivv7] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--bs-primary);
    animation: pulse-b-zshtd1ivv7 1.2s ease-in-out infinite;
}

@keyframes pulse-b-zshtd1ivv7 {
    0%,
    100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: 0.4;
        transform: scale(0.8);
    }
}

.messages-area[b-zshtd1ivv7] {
    flex: 1;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* Host-owned block below the last message (e.g. the proposed-updates panel). */
.messages-footer[b-zshtd1ivv7] {
    flex-shrink: 0;
}

/* ── Messages wrapper + scroll-to-bottom affordance ── */
.messages-wrapper[b-zshtd1ivv7] {
    position: relative;
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.scroll-to-bottom-btn[b-zshtd1ivv7] {
    position: absolute;
    bottom: 16px;
    right: 0;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    color: var(--bs-secondary);
    box-shadow: var(--bs-box-shadow);
    cursor: pointer;
    z-index: 5;
    transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s;
    animation: scroll-btn-in-b-zshtd1ivv7 0.15s ease-out;
}

.scroll-to-bottom-btn:hover[b-zshtd1ivv7] {
    background: var(--accent-blue-light);
    color: var(--bs-primary);
    border-color: var(--bs-primary-border-subtle);
}

.scroll-to-bottom-btn:active[b-zshtd1ivv7] {
    transform: translateX(-50%) scale(0.92);
}

@keyframes scroll-btn-in-b-zshtd1ivv7 {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(6px);
    }

    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

.template-context-banner[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px;
    background: var(--accent-blue-light);
    border-left: 4px solid var(--bs-primary);
    border-radius: 4px;
    margin-bottom: 8px;
}

.template-context-icon[b-zshtd1ivv7] {
    color: var(--bs-primary);
    font-size: var(--fs-base);
    flex-shrink: 0;
}

.template-context-text[b-zshtd1ivv7] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.template-context-label[b-zshtd1ivv7] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
    font-weight: 500;
}

.template-context-name[b-zshtd1ivv7] {
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    font-weight: 600;
    word-break: break-word;
}

.empty-text[b-zshtd1ivv7] {
    text-align: center;
    margin-top: 8px;
}

/* ── Welcome + quick-start chips (empty session) ───────────────── */
.chat-welcome[b-zshtd1ivv7] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.chat-quickstarts[b-zshtd1ivv7] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding-left: calc(32px + 10px); /* align under the message bubble, past the avatar */
}

.chat-quickstart-chip[b-zshtd1ivv7] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.4rem 0.75rem;
    border-radius: 999px;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.chat-quickstart-chip:hover[b-zshtd1ivv7] {
    border-color: var(--bs-primary-border-subtle);
    color: var(--bs-primary-border-subtle);
    background: color-mix(in srgb, var(--bs-primary-border-subtle) 8%, transparent);
}

.message[b-zshtd1ivv7] {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    animation: fadeUp-b-zshtd1ivv7 0.2s ease-out;
}

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

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.msg-user[b-zshtd1ivv7] {
    flex-direction: row-reverse;
}

.msg-avatar[b-zshtd1ivv7] {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    flex-shrink: 0;
}

.av-user[b-zshtd1ivv7] {
    border-radius: 50%;
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

/* Brand (Aiguro) avatar: dark rounded square, consistent in both themes. */
.av-ai[b-zshtd1ivv7] {
    border-radius: var(--bs-border-radius);
    background: var(--gray-900);
    color: var(--white);
}

.msg-col[b-zshtd1ivv7] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    max-width: 82%;
    min-width: 0;
}

.msg-user .msg-col[b-zshtd1ivv7] {
    align-items: flex-end;
}

.msg-meta[b-zshtd1ivv7] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 0 2px;
}


.msg-bubble[b-zshtd1ivv7] {
    max-width: 100%;
    padding: 14px 18px;
    border-radius: var(--bs-border-radius-lg);
    font-size: var(--fs-base);
    line-height: 1.55;
    position: relative;
}

.msg-user .msg-bubble[b-zshtd1ivv7] {
    background: var(--accent-blue-light);
    color: var(--bs-body-color);
    border: 0.5px solid color-mix(in srgb, var(--bs-primary) 35%, transparent);
    border-top-right-radius: 4px;
}

.msg-assistant .msg-bubble[b-zshtd1ivv7] {
    background: var(--bs-bg-card);
    color: var(--bs-secondary);
    border: 0.5px solid var(--bs-border-color);
    border-top-left-radius: 4px;
}

.msg-time[b-zshtd1ivv7] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    font-family: var(--bs-font-monospace);
}

/* Divider separating messages from different days ("Today", "Yesterday", or a date). */
.msg-date-divider[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 6px 0;
}

.msg-date-divider[b-zshtd1ivv7]::before,
.msg-date-divider[b-zshtd1ivv7]::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--bs-border-color);
}

.msg-date-divider-label[b-zshtd1ivv7] {
    white-space: nowrap;
}

.typing-indicator[b-zshtd1ivv7] {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 52px;
}

.typing-indicator span[b-zshtd1ivv7] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--bs-primary-border-subtle);
    animation: bounce-b-zshtd1ivv7 1.2s ease-in-out infinite;
}

.typing-indicator span:nth-child(2)[b-zshtd1ivv7] {
    animation-delay: 0.15s;
}

.typing-indicator span:nth-child(3)[b-zshtd1ivv7] {
    animation-delay: 0.3s;
}

@keyframes bounce-b-zshtd1ivv7 {
    0%,
    60%,
    100% {
        transform: translateY(0);
    }

    30% {
        transform: translateY(-5px);
    }
}

/* Blinking cursor shown on the last assistant bubble while tokens are streaming in */
.msg-bubble.msg-streaming[b-zshtd1ivv7]::after {
    content: '\25AE'; /* ▮ filled rectangle */
    display: inline-block;
    margin-left: 2px;
    animation: blink-cursor-b-zshtd1ivv7 1s step-end infinite;
    color: var(--bs-primary);
    vertical-align: baseline;
}

/* Markdig wraps plain text in <p> - make the last paragraph inline so the cursor sits on the same line. */
.msg-bubble.msg-streaming p:last-child[b-zshtd1ivv7] {
    display: inline;
}

@keyframes blink-cursor-b-zshtd1ivv7 {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* Input bar + data-sources popover styles live in ChatInputBar.razor.css. */

/* Expert Chat start screen (AIG-517): sits right above the composer, which ChatBlaze centres
   vertically while the chat is empty. */
.chat-start-hero-subtitle[b-zshtd1ivv7] {
    max-width: 560px;
}
/* /Components/Shared/ChatMessageBubble.razor.rz.scp.css */
.message[b-z52ggtkbwi] {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    animation: fadeUp-b-z52ggtkbwi 0.2s ease-out;
}

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

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.msg-user[b-z52ggtkbwi] {
    flex-direction: row-reverse;
}

.msg-avatar[b-z52ggtkbwi] {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    flex-shrink: 0;
}

.av-user[b-z52ggtkbwi] {
    border-radius: 50%;
    background: var(--accent-blue-light);
    color: var(--bs-primary);
    overflow: hidden;
}

.msg-avatar-img[b-z52ggtkbwi] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.av-ai[b-z52ggtkbwi] {
    border-radius: var(--bs-border-radius);
    background: var(--gray-900);
    color: var(--white);
}

.msg-col[b-z52ggtkbwi] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    max-width: 82%;
    min-width: 0;
}

.msg-user .msg-col[b-z52ggtkbwi] {
    align-items: flex-end;
}

.msg-meta[b-z52ggtkbwi] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 0 2px;
}


.msg-time[b-z52ggtkbwi] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    font-family: var(--bs-font-monospace);
}

.msg-bubble[b-z52ggtkbwi] {
    max-width: 100%;
    padding: 14px 18px;
    border-radius: var(--bs-border-radius-lg);
    font-size: var(--fs-base);
    line-height: 1.55;
    position: relative;
}

.msg-user .msg-bubble[b-z52ggtkbwi] {
    background: var(--accent-blue-light);
    color: var(--bs-body-color);
    border: 0.5px solid color-mix(in srgb, var(--bs-primary) 35%, transparent);
    border-top-right-radius: 4px;
}

.msg-assistant .msg-bubble[b-z52ggtkbwi] {
    background: var(--bs-bg-card);
    color: var(--bs-secondary);
    border: 0.5px solid var(--bs-border-color);
    border-top-left-radius: 4px;
}

.msg-bubble.msg-streaming[b-z52ggtkbwi]::after {
    content: '\25AE';
    display: inline-block;
    margin-left: 2px;
    animation: blink-cursor-b-z52ggtkbwi 1s step-end infinite;
    color: var(--bs-primary);
    vertical-align: baseline;
}

.msg-bubble.msg-streaming[b-z52ggtkbwi]  p:last-child {
    display: inline;
}

@keyframes blink-cursor-b-z52ggtkbwi {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}

/* .msg-currency-note (AIG-453) lives in Styles/_app-styles.scss - shared with
   ChatMessageView so the two message renderers cannot drift on its style. */

/* Copy/fork action bar (AIG-436/AIG-458), shown under a completed assistant answer. */
.msg-actions[b-z52ggtkbwi] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 2px;
}

.msg-action-btn[b-z52ggtkbwi] {
    color: var(--bs-text-muted);
}

.msg-action-btn:hover[b-z52ggtkbwi],
.msg-action-btn:focus-visible[b-z52ggtkbwi] {
    color: var(--bs-body-color);
    background: var(--bs-tertiary-bg);
    border-radius: var(--bs-border-radius-sm);
}

.msg-action-feedback[b-z52ggtkbwi] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}
/* /Components/Shared/ChatToolStepList.razor.rz.scp.css */
/* Layout only - colours and type come from Bootstrap utilities (AIG-595). */
.msg-steps li[b-cwg2f303f8] {
    min-width: 0;
}

.msg-step-text[b-cwg2f303f8] {
    min-width: 0;
}

/* One width for the spinner and the check mark, so the step text lines up whichever is shown. */
.msg-step-icon[b-cwg2f303f8] {
    width: 0.75rem;
    height: 0.75rem;
    flex-shrink: 0;
    line-height: 0.75rem;
}

/* The summary is a flex row so the chevron, icon and label share one centre line; the native
   disclosure marker sits on the text baseline instead, so it is replaced by a Bootstrap chevron. */
.msg-steps summary[b-cwg2f303f8] {
    list-style: none;
    cursor: pointer;
}

.msg-steps summary[b-cwg2f303f8]::-webkit-details-marker {
    display: none;
}

.msg-steps-chevron[b-cwg2f303f8] {
    font-size: 0.75rem;
    line-height: 1;
    transition: transform 0.15s ease;
}

.msg-steps[open] .msg-steps-chevron[b-cwg2f303f8] {
    transform: rotate(90deg);
}
/* /Components/Shared/ChinchillaPet.razor.rz.scp.css */
/* Aiguro party chinchilla desk pet - dev mode only. Sits just above the chat input. */

.chinchilla-pet[b-38ba4xsbfl] {
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    pointer-events: none;
    user-select: none;
}

.chinchilla[b-38ba4xsbfl] {
    width: 44px;
    height: 44px;
    pointer-events: auto;
    cursor: pointer;
    overflow: visible;
}

/* ── Colours ── */
.chinchilla-outline[b-38ba4xsbfl] {
    fill: var(--chinchilla-outline, #512F26);
}

.chinchilla-cream-dark[b-38ba4xsbfl] {
    fill: var(--chinchilla-cream-dark, #D1C0AE);
}

.chinchilla-fur[b-38ba4xsbfl] {
    fill: var(--chinchilla-fur, #9096A6);
}

.chinchilla-ear-inner[b-38ba4xsbfl] {
    fill: var(--chinchilla-ear-inner, #8E7C77);
}

.chinchilla-fur-dark[b-38ba4xsbfl] {
    fill: var(--chinchilla-fur-dark, #747A85);
}

.chinchilla-hat-yellow[b-38ba4xsbfl] {
    fill: var(--chinchilla-hat-yellow, #F8BF40);
}

.chinchilla-ear[b-38ba4xsbfl] {
    fill: var(--chinchilla-ear, #726767);
}

.chinchilla-hat-red[b-38ba4xsbfl] {
    fill: var(--chinchilla-hat-red, #EA5955);
}

.chinchilla-hat-blue[b-38ba4xsbfl] {
    fill: var(--chinchilla-hat-blue, #5785AA);
}

.chinchilla-fur-light[b-38ba4xsbfl] {
    fill: var(--chinchilla-fur-light, #B2B2BD);
}

.chinchilla-hat-blue-light[b-38ba4xsbfl] {
    fill: var(--chinchilla-hat-blue-light, #7BA0BB);
}

.chinchilla-hat-yellow-light[b-38ba4xsbfl] {
    fill: var(--chinchilla-hat-yellow-light, #F7CC6E);
}

.chinchilla-cream[b-38ba4xsbfl] {
    fill: var(--chinchilla-cream, #F1EAD8);
}

.chinchilla-white[b-38ba4xsbfl] {
    fill: var(--chinchilla-white, #F6F4F3);
}

/* Patches behind the moving parts - they fill the gap a part leaves behind
   when it moves away from the body. */
.chinchilla-filler > *[b-38ba4xsbfl] {
    stroke: var(--chinchilla-outline, #512F26);
    stroke-width: 5;
}

.chinchilla-shadow[b-38ba4xsbfl] {
    fill: rgba(0, 0, 0, 0.12);
}

.chinchilla-dust-puff[b-38ba4xsbfl] {
    fill: var(--chinchilla-cream-dark, #D1C0AE);
}

/* Props stay invisible until their animation plays. They are drawn outside the
   viewBox, so they must never catch clicks meant for the page around them. */
.chinchilla-confetti[b-38ba4xsbfl],
.chinchilla-dust[b-38ba4xsbfl] {
    pointer-events: none;
}

.chinchilla-confetto[b-38ba4xsbfl],
.chinchilla-dust-puff[b-38ba4xsbfl] {
    opacity: 0;
    transform-box: fill-box;
    transform-origin: center;
}

/* Each confetto flies off in its own direction. */
.chinchilla-confetto:nth-child(1)[b-38ba4xsbfl] { --dx: -70px; --dy: -60px; --r: 260deg; }
.chinchilla-confetto:nth-child(2)[b-38ba4xsbfl] { --dx: 75px; --dy: -50px; --r: -300deg; }
.chinchilla-confetto:nth-child(3)[b-38ba4xsbfl] { --dx: -40px; --dy: -95px; --r: 200deg; }
.chinchilla-confetto:nth-child(4)[b-38ba4xsbfl] { --dx: 45px; --dy: -100px; --r: -220deg; }
.chinchilla-confetto:nth-child(5)[b-38ba4xsbfl] { --dx: -95px; --dy: -15px; --r: 0deg; }
.chinchilla-confetto:nth-child(6)[b-38ba4xsbfl] { --dx: 100px; --dy: -20px; --r: 0deg; }
.chinchilla-confetto:nth-child(7)[b-38ba4xsbfl] { --dx: 0px; --dy: -115px; --r: 340deg; }
.chinchilla-confetto:nth-child(8)[b-38ba4xsbfl] { --dx: -110px; --dy: -70px; --r: -160deg; }

.chinchilla-dust-puff:nth-child(1)[b-38ba4xsbfl] { --dx: -40px; }
.chinchilla-dust-puff:nth-child(2)[b-38ba4xsbfl] { --dx: 0px; }
.chinchilla-dust-puff:nth-child(3)[b-38ba4xsbfl] { --dx: 40px; }

/* Origins below are in artwork (viewBox user) coordinates. */
.chinchilla-body-group[b-38ba4xsbfl],
.chinchilla-part[b-38ba4xsbfl],
.chinchilla-shadow[b-38ba4xsbfl] {
    transform-box: view-box;
}

.chinchilla-shadow[b-38ba4xsbfl] {
    transform-origin: 119px 311px;
}

.chinchilla-body-group[b-38ba4xsbfl] {
    transform-origin: 119px 311px;
    animation: chinchilla-breathe-b-38ba4xsbfl 3.4s ease-in-out infinite;
}

.chinchilla-hat[b-38ba4xsbfl] {
    transform-origin: 120px 106px;
    animation: chinchilla-hat-idle-b-38ba4xsbfl 3.4s ease-in-out infinite;
}

.chinchilla-ear-left[b-38ba4xsbfl] {
    transform-origin: 56px 119px;
}

.chinchilla-ear-right[b-38ba4xsbfl] {
    transform-origin: 183px 119px;
}

.chinchilla-tail[b-38ba4xsbfl] {
    transform-origin: 204px 288px;
    animation: chinchilla-tail-idle-b-38ba4xsbfl 3.4s ease-in-out infinite;
}

.chinchilla-whiskers-left[b-38ba4xsbfl] {
    transform-origin: 41px 180px;
}

.chinchilla-whiskers-right[b-38ba4xsbfl] {
    transform-origin: 198px 180px;
}

/* ── Idle: breathing, a slow hat and tail wobble and blinking (always on) ── */
.chinchilla-eye[b-38ba4xsbfl] {
    transform-box: fill-box;
    transform-origin: center;
    animation: chinchilla-blink-b-38ba4xsbfl 5.5s ease-in-out infinite;
}

@keyframes chinchilla-breathe-b-38ba4xsbfl {
    0%, 100% { transform: scale(1, 1); }
    50% { transform: scale(1.012, 0.99); }
}

@keyframes chinchilla-hat-idle-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-2deg); }
}

@keyframes chinchilla-tail-idle-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-4deg); }
}

@keyframes chinchilla-blink-b-38ba4xsbfl {
    0%, 93%, 100% { transform: scaleY(1); }
    96% { transform: scaleY(0.1); }
}

/* ── Triggered animations (a JS timer toggles these classes at random times) ── */

/* Hat hop: the party hat pops off the head, spins a little and lands again */
.chinchilla-pet.is-hat-hop .chinchilla-hat[b-38ba4xsbfl] {
    animation: chinchilla-hat-hop-b-38ba4xsbfl 1.1s cubic-bezier(0.3, 0, 0.3, 1);
}

.chinchilla-pet.is-hat-hop .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-land-b-38ba4xsbfl 1.1s ease-in-out;
}

@keyframes chinchilla-hat-hop-b-38ba4xsbfl {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    15% { transform: translateY(6px) rotate(0deg); }
    45% { transform: translateY(-80px) rotate(-14deg); }
    70% { transform: translateY(0) rotate(6deg); }
    82% { transform: translateY(-10px) rotate(-3deg); }
}

@keyframes chinchilla-land-b-38ba4xsbfl {
    0%, 60%, 100% { transform: scale(1, 1); }
    12% { transform: scale(1.03, 0.97); }
    72% { transform: scale(1.04, 0.95); }
}

/* Party dance: sways side to side on its feet, the hat lagging behind */
.chinchilla-pet.is-dancing .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-sway-b-38ba4xsbfl 0.55s ease-in-out 4;
}

.chinchilla-pet.is-dancing .chinchilla-hat[b-38ba4xsbfl] {
    animation: chinchilla-hat-lag-b-38ba4xsbfl 0.55s ease-in-out 4;
}

.chinchilla-pet.is-dancing .chinchilla-tail[b-38ba4xsbfl] {
    animation: chinchilla-tail-flick-b-38ba4xsbfl 0.55s ease-in-out 4;
}

@keyframes chinchilla-sway-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg) translateY(0); }
    25% { transform: rotate(-7deg) translateY(-10px); }
    50% { transform: rotate(0deg) translateY(0); }
    75% { transform: rotate(7deg) translateY(-10px); }
}

@keyframes chinchilla-hat-lag-b-38ba4xsbfl {
    0%, 50%, 100% { transform: rotate(0deg); }
    30% { transform: rotate(9deg); }
    80% { transform: rotate(-9deg); }
}

/* Confetti: a little hop and a burst of confetti out of the hat tip */
.chinchilla-pet.is-confetti .chinchilla-confetto[b-38ba4xsbfl] {
    animation: chinchilla-confetto-b-38ba4xsbfl 1.4s cubic-bezier(0.1, 0.7, 0.4, 1);
}

.chinchilla-pet.is-confetti .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-pop-b-38ba4xsbfl 0.5s ease-out;
}

@keyframes chinchilla-confetto-b-38ba4xsbfl {
    0% { opacity: 1; transform: translate(0, 0) rotate(0deg) scale(0.4); }
    60% { opacity: 1; }
    100% { opacity: 0; transform: translate(var(--dx), calc(var(--dy) + 110px)) rotate(var(--r)) scale(1); }
}

@keyframes chinchilla-pop-b-38ba4xsbfl {
    0%, 100% { transform: translateY(0) scale(1, 1); }
    25% { transform: translateY(0) scale(1.05, 0.94); }
    55% { transform: translateY(-24px) scale(0.97, 1.03); }
}

/* Popcorning: the happy chinchilla leap - straight up with a twist mid-air */
.chinchilla-pet.is-popcorn .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-popcorn-b-38ba4xsbfl 0.9s cubic-bezier(0.3, 0, 0.3, 1);
}

.chinchilla-pet.is-popcorn .chinchilla-shadow[b-38ba4xsbfl] {
    animation: chinchilla-shadow-shrink-b-38ba4xsbfl 0.9s cubic-bezier(0.3, 0, 0.3, 1);
}

@keyframes chinchilla-popcorn-b-38ba4xsbfl {
    0%, 100% { transform: translateY(0) rotate(0deg) scale(1, 1); }
    15% { transform: translateY(0) rotate(0deg) scale(1.06, 0.92); }
    45% { transform: translateY(-110px) rotate(-18deg) scale(0.96, 1.04); }
    60% { transform: translateY(-98px) rotate(14deg) scale(1, 1); }
    85% { transform: translateY(0) rotate(0deg) scale(1.05, 0.94); }
}

@keyframes chinchilla-shadow-shrink-b-38ba4xsbfl {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(0.55); opacity: 0.5; }
}

/* Dust bath: chinchillas clean their fur by rolling in dust - a full roll in a
   puff of dust */
.chinchilla-pet.is-dust-bath .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-roll-b-38ba4xsbfl 1.5s cubic-bezier(0.45, 0, 0.3, 1);
}

.chinchilla-pet.is-dust-bath .chinchilla-dust-puff[b-38ba4xsbfl] {
    animation: chinchilla-dust-b-38ba4xsbfl 1.5s ease-out;
}

@keyframes chinchilla-roll-b-38ba4xsbfl {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    15% { transform: translateY(8px) rotate(-10deg); }
    65% { transform: translateY(-16px) rotate(370deg); }
    80%, 99.9% { transform: translateY(0) rotate(360deg); }
}

@keyframes chinchilla-dust-b-38ba4xsbfl {
    0%, 20% { opacity: 0; transform: translate(0, 0) scale(0.3); }
    45% { opacity: 0.9; }
    100% { opacity: 0; transform: translate(var(--dx), -45px) scale(1.8); }
}

/* Ear twitch: first the left, then the right ear flicks */
.chinchilla-pet.is-ear-twitch .chinchilla-ear-left[b-38ba4xsbfl] {
    animation: chinchilla-ear-left-b-38ba4xsbfl 1s ease-in-out;
}

.chinchilla-pet.is-ear-twitch .chinchilla-ear-right[b-38ba4xsbfl] {
    animation: chinchilla-ear-right-b-38ba4xsbfl 1s ease-in-out 0.3s;
}

@keyframes chinchilla-ear-left-b-38ba4xsbfl {
    0%, 45%, 100% { transform: rotate(0deg); }
    10% { transform: rotate(-16deg); }
    25% { transform: rotate(-5deg); }
    35% { transform: rotate(-11deg); }
}

@keyframes chinchilla-ear-right-b-38ba4xsbfl {
    0%, 45%, 100% { transform: rotate(0deg); }
    10% { transform: rotate(16deg); }
    25% { transform: rotate(5deg); }
    35% { transform: rotate(11deg); }
}

/* Sniff: whiskers twitch while the nose bobs */
.chinchilla-pet.is-sniffing .chinchilla-whiskers-left[b-38ba4xsbfl] {
    animation: chinchilla-whiskers-left-b-38ba4xsbfl 0.25s ease-in-out 5;
}

.chinchilla-pet.is-sniffing .chinchilla-whiskers-right[b-38ba4xsbfl] {
    animation: chinchilla-whiskers-right-b-38ba4xsbfl 0.25s ease-in-out 5;
}

.chinchilla-pet.is-sniffing .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-sniff-b-38ba4xsbfl 0.25s ease-in-out 5;
}

@keyframes chinchilla-whiskers-left-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(6deg); }
}

@keyframes chinchilla-whiskers-right-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-6deg); }
}

@keyframes chinchilla-sniff-b-38ba4xsbfl {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(3px); }
}

/* Tail flick: a few quick flicks of the bushy tail */
.chinchilla-pet.is-tail-flick .chinchilla-tail[b-38ba4xsbfl] {
    animation: chinchilla-tail-flick-b-38ba4xsbfl 0.3s ease-in-out 4;
}

@keyframes chinchilla-tail-flick-b-38ba4xsbfl {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-16deg); }
}

/* Roam: triggered by a triple-click (see pet-roam.js) - the chinchilla keeps
   dancing for as long as it's off wandering the page. */
.chinchilla-pet.is-roaming .chinchilla-body-group[b-38ba4xsbfl] {
    animation: chinchilla-sway-b-38ba4xsbfl 0.55s ease-in-out infinite;
}

.chinchilla-pet.is-roaming .chinchilla-hat[b-38ba4xsbfl] {
    animation: chinchilla-hat-lag-b-38ba4xsbfl 0.55s ease-in-out infinite;
}

/* Reduced motion: switch off every animation - idle and triggered alike (the
   triggered .chinchilla-pet.is-* rules are more specific, hence !important).
   At rest the confetti and dust are hidden, so the pet simply sits still. */
@media (prefers-reduced-motion: reduce) {
    .chinchilla[b-38ba4xsbfl],
    .chinchilla *[b-38ba4xsbfl] {
        animation: none !important;
    }
}
/* /Components/Shared/ConfidenceBadge.razor.rz.scp.css */
.confidence-badge[b-nsjhyzkh0w] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: var(--fs-base);
    font-weight: 700;
    padding: 0.2rem 0.6rem;
    border-radius: var(--bs-border-radius-pill);
    letter-spacing: 0.03em;
}

/* Compact: Bootstrap badge metrics, so it matches the tag badges in the same row. */
.confidence-badge.badge[b-nsjhyzkh0w] {
    font-size: var(--bs-badge-font-size);
    padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
    border-radius: var(--bs-badge-border-radius);
    letter-spacing: normal;
}


/* Colours come from the shared confidence palette (--confidence-* in _app-styles.scss). */
.confidence--high[b-nsjhyzkh0w] {
    color: var(--confidence-high-text);
    background: var(--confidence-high-bg);
}

.confidence--medium[b-nsjhyzkh0w] {
    color: var(--confidence-medium-text);
    background: var(--confidence-medium-bg);
}

.confidence--low[b-nsjhyzkh0w] {
    color: var(--confidence-low-text);
    background: var(--confidence-low-bg);
}

.confidence-badge .btn-icon[b-nsjhyzkh0w] {
    --bs-btn-hover-color: var(--bs-btn-color);
    --bs-btn-active-color: var(--bs-btn-color);
}

.tooltip-card[b-nsjhyzkh0w] {
    max-width: 38rem;
}
/* /Components/Shared/ConfigureFieldValuesDialog.razor.rz.scp.css */
.configure-values-zone[b-lvxinboabi] {
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

.configure-values-row[draggable="true"][b-lvxinboabi] {
    cursor: grab;
}
/* /Components/Shared/DiscoveryCard.razor.rz.scp.css */
/* Discovery card - a compact, expandable card with its own border inside the paper (AIG-578) */

.discovery-card[b-lxhh29e2oo] {
    padding: 1.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background: transparent;
}

/* A finding nested in its lead's "Similar findings" section. */
.discovery-card--sibling[b-lxhh29e2oo] {
    padding: 1rem;
}

.discovery-card-row[b-lxhh29e2oo] {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}

.discovery-card-select[b-lxhh29e2oo] {
    flex-shrink: 0;
    margin-top: 0.3rem;
}

.discovery-card-main[b-lxhh29e2oo] {
    flex: 1;
    min-width: 0;
}

/* Top row: relevance · source · tags, then time + expand toggle at the end */
.discovery-card-meta-row[b-lxhh29e2oo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.discovery-card-meta-end[b-lxhh29e2oo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

.discovery-card-time[b-lxhh29e2oo] {
    font-size: var(--fs-xs);
    white-space: nowrap;
}

/* Title - id, then the title text, which toggles the expanded view */
.discovery-card-title[b-lxhh29e2oo] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: var(--fs-base);
    font-weight: 600;
    margin: 0 0 0.25rem;
    line-height: 1.35;
    color: var(--bs-body-color);
}

.discovery-card-toggle[b-lxhh29e2oo] {
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: start;
}

/* Summary body */
.discovery-card-summary[b-lxhh29e2oo] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    margin: 0 0 1rem;
    line-height: 1.6;
}

.discovery-card-summary--compact[b-lxhh29e2oo] {
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Inline paragraphs inside compact summaries so -webkit-line-clamp can clamp across text */
.discovery-card-summary--compact.md-content p[b-lxhh29e2oo] {
    display: inline;
    margin: 0;
}

/* Remove bottom margin on last paragraph in full summary */
.discovery-card-summary.md-content p:last-child[b-lxhh29e2oo] {
    margin-bottom: 0;
}

/* Actions below the text; the timeline toggle sits at the far end */
.discovery-card-actions[b-lxhh29e2oo] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* "Similar findings" / "Similar hypotheses": collapsible sections whose head - caption, a rule
   running to the end, chevron - is one full-width button */
.discovery-card-section[b-lxhh29e2oo] {
    margin-top: 1rem;
}

.discovery-card-section-head[b-lxhh29e2oo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0;
    border: 0;
    background: none;
    text-align: start;
}

.discovery-card-section-head[b-lxhh29e2oo]::after {
    content: "";
    flex: 1;
    order: 1;
    border-top: 1px solid var(--bs-border-color);
}

.discovery-card-section-head .bi[b-lxhh29e2oo] {
    order: 2;
}

@media (max-width: 640px) {
    .discovery-card[b-lxhh29e2oo] {
        padding: 1rem;
    }

    .discovery-card-meta-end[b-lxhh29e2oo] {
        margin-left: 0;
    }
}
/* /Components/Shared/DiscoveryTimeline.razor.rz.scp.css */
.discovery-timeline[b-gzcszwymdp] {
    margin-top: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--bs-secondary-bg-subtle);
    border-radius: var(--bs-border-radius, 0.375rem);
    border: 1px solid var(--bs-border-color);
}

.discovery-timeline-loading[b-gzcszwymdp],
.discovery-timeline-empty[b-gzcszwymdp] {
    font-size: 0.8125rem;
    color: var(--bs-secondary, #6c757d);
    margin: 0;
}

.discovery-timeline-heading[b-gzcszwymdp] {
    margin-bottom: 0.5rem;
}

.discovery-timeline-list[b-gzcszwymdp] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.discovery-timeline-step[b-gzcszwymdp] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.3rem;
    font-size: 0.8125rem;
    padding: 0.25rem 0;
    border-left: 2px solid var(--bs-border-color);
    padding-left: 0.5rem;
}

.discovery-timeline-badge[b-gzcszwymdp] {
    display: inline-flex;
    font-size: 0.675rem;
    font-weight: 600;
    padding: 0.1rem 0.3rem;
    border-radius: var(--bs-border-radius-sm, 0.25rem);
    flex-shrink: 0;
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 12%, transparent);
    color: var(--bs-primary, #0d6efd);
}

.discovery-timeline-badge--sentimentshift[b-gzcszwymdp] {
    background: color-mix(in srgb, var(--bs-warning, #ffc107) 15%, transparent);
    color: color-mix(in srgb, var(--bs-warning, #ffc107) 85%, #000);
}

.discovery-timeline-label[b-gzcszwymdp] {
    font-weight: 500;
}

.discovery-timeline-rationale[b-gzcszwymdp] {
    color: var(--bs-secondary, #6c757d);
    font-style: italic;
    flex: 1 1 100%;
    padding-left: 0.5rem;
}

.discovery-timeline-conf[b-gzcszwymdp] {
    font-size: 0.7rem;
    color: var(--bs-secondary, #6c757d);
    margin-left: auto;
    flex-shrink: 0;
}
/* /Components/Shared/DocumentActionsMenu.razor.rz.scp.css */
/* ── Document actions menu (AIG-362) ───────────────────────
   Moved here with the markup when the menu was extracted from DocumentCard:
   CSS isolation scopes these classes to the component that declares the
   elements, so leaving them behind would have left the dropdown unstyled. */
.document-actions-menu-wrap[b-kgmi5xoqby] {
    position: relative;
    display: flex;
    align-items: center;
}

.menu-backdrop[b-kgmi5xoqby] {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: transparent;
}

.menu-dropdown[b-kgmi5xoqby] {
    position: fixed;
    visibility: hidden;
    z-index: 41;
    min-width: 220px;
    width: max-content;
    padding: 4px;
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow-lg);
}

.menu-item[b-kgmi5xoqby] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 7px 10px;
    border: none;
    background: none;
    border-radius: var(--bs-border-radius-sm);
    font-size: var(--fs-base);
    color: var(--bs-body-color);
    cursor: pointer;
    text-align: left;
    text-decoration: none;
    white-space: nowrap;
}

.menu-item:hover[b-kgmi5xoqby] {
    background: var(--bs-secondary-bg);
}

.menu-item:focus-visible[b-kgmi5xoqby] {
    outline: 2px solid var(--bs-primary);
    outline-offset: -2px;
    background: var(--bs-secondary-bg);
}

/* Delete is the one destructive entry, marked the same way as the chat history's
   own delete item. */
.menu-item--bs-danger[b-kgmi5xoqby] {
    color: var(--bs-danger);
}

.menu-item--bs-danger:hover[b-kgmi5xoqby] {
    background: var(--bs-danger-bg-subtle);
}
/* /Components/Shared/DocumentCard.razor.rz.scp.css */
.document-card[b-dnruguudyi] {
    padding: 0.875rem 1rem;
    min-width: 0;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.document-card[draggable="true"][b-dnruguudyi] {
    cursor: grab;
}

.document-card.dragging[b-dnruguudyi] {
    opacity: 0.3;
    transform: scale(0.97);
}


.document-card-body[b-dnruguudyi] {
    flex: 1;
    min-width: 0;
}

.document-filename[b-dnruguudyi] {
    font-weight: 400;
    color: var(--bs-body-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* The one interactive chip: jumps to the Data fields tab where the suggestions live (AIG-441).
   Same warning palette as .datasources-tab-badge--attention it links to - both mark the same
   "open field suggestions" state and should read as one signal, not two.
   Unlike a plain <span> badge, this is a real <button>: without `font: inherit` and `line-height: 1`
   it keeps the browser's default button line-height, which pushes the text down inside the box and
   makes the 0.15em top/bottom padding look asymmetric (no room above the text). */
.document-suggestion-badge[b-dnruguudyi] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    flex-shrink: 0;
    font: inherit;
    font-size: var(--fs-xs);
    font-weight: 600;
    line-height: 1;
    padding: 0.15em 0.5em;
    border: 0;
    border-radius: var(--bs-border-radius-sm);
    cursor: pointer;
    background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
    color: var(--bs-primary);
}

.document-suggestion-badge:hover[b-dnruguudyi],
.document-suggestion-badge:focus-visible[b-dnruguudyi] {
    background: color-mix(in srgb, var(--bs-primary) 20%, transparent);
}

/* Quiet, non-interactive hints (AIG-563): "no new findings" and "rarely used". Same shape as the
   suggestion chip above, but in the muted palette of the detail page's document-share-badge - they
   inform, they don't ask for action. */
.document-hint-badge[b-dnruguudyi] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    flex-shrink: 0;
    font-size: var(--fs-xs);
    font-weight: 600;
    line-height: 1;
    padding: 0.15em 0.5em;
    border-radius: var(--bs-border-radius-sm);
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
}

.document-card-actions[b-dnruguudyi] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}
/* /Components/Shared/DocumentDetailsPanel.razor.rz.scp.css */
/* ── "File details" side panel (AIG-362) ───────────────────
   Sits inside SidePanel's offcanvas shell, which provides the header and the
   surface; this is the body and the footer bar.                */
.docdetails-body[b-nv0z8l5zlb] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1rem 1.25rem;
    overflow-y: auto;
    flex-grow: 1;
}

.docdetails-field[b-nv0z8l5zlb] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.docdetails-description[b-nv0z8l5zlb] {
    resize: vertical;
}

.docdetails-fields-row[b-nv0z8l5zlb] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.docdetails-chips[b-nv0z8l5zlb] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    min-height: 2rem;
}

.docdetails-map[b-nv0z8l5zlb] {
    flex-shrink: 0;
}

/* /Components/Shared/DocumentFieldsSection.razor.rz.scp.css */
/* Layout only - the visual treatment (surfaces, borders, muted text colours) lives in
   Styles/_app-styles.scss per the frontend convention for component-scoped CSS. */

.fields-section[b-uuyjdl014l] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Header band: .tab-section-header in Styles/_app-styles.scss (shared with the
   processed-data tab) ── */

/* ── Field list - one full-width card per field ──────────── */

.field-list[b-uuyjdl014l] {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
    padding: 0;
}

.field-card[b-uuyjdl014l] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px 16px;
    min-width: 0;
}

.field-card-header[b-uuyjdl014l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.field-card-heading[b-uuyjdl014l] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
    min-width: 0;
}

.field-name[b-uuyjdl014l] {
    font-weight: 600;
}

/* Plain grey, not a <code> face: the monospace switch was one more type style
   on a card that already had too many. */
.field-technical-name[b-uuyjdl014l] {
    font-size: var(--fs-sm);
}

.field-card-actions[b-uuyjdl014l] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.field-description[b-uuyjdl014l] {
    font-size: var(--fs-sm);
}

/* ── Value count ─────────────────────────────────────────
   Clickable (it opens the values viewer) but styled as a quiet pill rather
   than a bordered control, via the button colour tokens rather than raw
   rules. Deliberately not .caps-label anywhere on this card: that is a
   section-header style, and using it inline was the loudest thing on it. */

.field-values-btn[b-uuyjdl014l] {
    --bs-btn-bg: var(--bs-secondary-bg);
    --bs-btn-hover-bg: var(--bs-tertiary-bg);
    --bs-btn-color: var(--bs-body-color);
    padding: 0.25rem 0.625rem;
    border: 0;
    font-size: var(--fs-sm);
    white-space: nowrap;
}

/* ── Mapping band: one block per mapped document ─────────── */

.field-card-mappings[b-uuyjdl014l] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 8px;
}

.field-document-list[b-uuyjdl014l] {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin: 0;
    padding: 0;
}

/* One line per document: the file, then its columns as inset tokens wrapping
   beside it. A column is a few words - giving each one a full row of its own
   just pushed the card long. */
.field-document[b-uuyjdl014l] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 8px;
    min-width: 0;
}

/* Fixed width, so the tokens of every file line up instead of starting
   wherever the file name happens to end. */
.field-document-head[b-uuyjdl014l] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    width: 14rem;
    max-width: 100%;
    font-size: var(--fs-sm);
}

.field-document-name[b-uuyjdl014l] {
    font-size: var(--fs-sm);
    font-weight: 500;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-mapping-list[b-uuyjdl014l] {
    list-style: none;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    margin: 0;
    padding: 0;
    flex: 1 1 0;
    min-width: 0;
}

/* Filled, borderless token - the same surface the example chips above use, so
   everything data-shaped on the card reads as one kind of thing. */
.field-mapping[b-uuyjdl014l] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--fs-sm);
    max-width: 100%;
    padding: 1px 4px 1px 8px;
    border-radius: var(--bs-border-radius);
}

.field-mapping-col[b-uuyjdl014l] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-mapping-excluded[b-uuyjdl014l] {
    font-size: var(--fs-xs);
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

/* Sized down to sit inside the token rather than set its height. */
.field-mapping-remove[b-uuyjdl014l] {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
}

.field-mapping-remove > .bi[b-uuyjdl014l] {
    font-size: 10px;
}

.field-document-toggle[b-uuyjdl014l] {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--fs-sm);
    padding: 0;
}

/* ── Empty state before the first field exists ───────────── */

.fields-empty[b-uuyjdl014l] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 40px 24px;
    text-align: center;
}

.fields-empty-icon[b-uuyjdl014l] {
    font-size: 2.5rem;
    opacity: 0.4;
}

.fields-empty-title[b-uuyjdl014l] {
    margin: 0;
    font-size: var(--fs-md);
    font-weight: 600;
}

.fields-empty-text[b-uuyjdl014l] {
    margin: 0;
    max-width: 44rem;
    font-size: var(--fs-sm);
}

.fields-empty-benefits[b-uuyjdl014l] {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 20px;
    margin: 0;
    padding: 0;
    font-size: var(--fs-sm);
}

.fields-empty-benefits li[b-uuyjdl014l] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.fields-empty-hint[b-uuyjdl014l] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: var(--fs-sm);
}

/* ── Values viewer modal ────────────────────────────────── */

.field-values-list[b-uuyjdl014l] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: var(--fs-sm);
    max-height: 380px;
    overflow-y: auto;
}

.field-values-list li[b-uuyjdl014l] {
    padding: 4px 8px;
}
/* /Components/Shared/DocumentFieldSuggestionList.razor.rz.scp.css */
/* Layout plus light emphasis via Bootstrap tokens only - no literal colours (rule 2). */

.field-suggestions[b-sbzsbtdtws] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px 14px;
    border-color: color-mix(in srgb, var(--bs-primary) 35%, var(--bs-border-color));
    background: color-mix(in srgb, var(--bs-primary) 4%, var(--bs-bg-card));
}

.field-suggestions-header[b-sbzsbtdtws] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* The whole title row toggles the list, so a large open batch can be folded away
   without losing the count that says it is still waiting. */
.field-suggestions-toggle[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
}

.field-suggestions-chevron[b-sbzsbtdtws] {
    margin-left: auto;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.field-suggestions-count[b-sbzsbtdtws] {
    background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
    color: var(--bs-primary);
}

.field-suggestions-intro[b-sbzsbtdtws] {
    font-size: var(--fs-sm);
    margin: 0;
}

/* ── One group per document ─────────────────────────────── */

.field-suggestion-group[b-sbzsbtdtws] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.field-suggestion-doc[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: var(--fs-sm);
    min-width: 0;
}

.field-suggestion-doc-name[b-sbzsbtdtws] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-suggestion-doc-count[b-sbzsbtdtws] {
    font-size: var(--fs-xs);
    flex-shrink: 0;
}

.field-suggestion-list[b-sbzsbtdtws] {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0;
    /* Indented under the document head, matching the field card's mapping list. */
    padding: 0 0 0 1.75rem;
}

.field-suggestion[b-sbzsbtdtws] {
    padding: 10px 12px;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background: var(--bs-body-bg);
}

/* Accept/Reject stay pinned to the right of the row so a column of them lines up
   down the list, however tall the individual reasoning texts are. */
.field-suggestion-row[b-sbzsbtdtws] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.field-suggestion-body[b-sbzsbtdtws] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.field-suggestion-main[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: var(--fs-sm);
}

.field-suggestion-column[b-sbzsbtdtws] {
    font-weight: 500;
}

.field-suggestion-arrow[b-sbzsbtdtws] {
    color: var(--bs-text-muted);
}

.field-suggestion-target[b-sbzsbtdtws] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: 600;
}

/* Blue, not green: this marks what the suggestion IS (a field that does not exist yet),
   not a successful outcome. Bootstrap's .badge padding is built for a dense counter, so
   the label gets room of its own. */
.field-suggestion-new[b-sbzsbtdtws] {
    padding: 0.3em 0.75em;
    background: color-mix(in srgb, var(--bs-primary) 14%, transparent);
    color: var(--bs-primary-text-emphasis);
}

.field-suggestion-samples[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: var(--fs-xs);
}

.field-suggestion-sample[b-sbzsbtdtws] {
    padding: 0.1em 0.5em;
    border-radius: 99px;
    background: var(--bs-secondary-bg);
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.field-suggestion-related[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: var(--fs-xs);
    color: var(--bs-primary);
}

.field-suggestion-reasoning[b-sbzsbtdtws] {
    font-size: var(--fs-xs);
    margin: 0;
}

.field-suggestion-source[b-sbzsbtdtws] {
    font-size: var(--fs-xs);
}

.field-suggestion-actions[b-sbzsbtdtws] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
/* /Components/Shared/DocumentGroupAccordion.razor.rz.scp.css */
.dashed[b-6ch4a434e7] {
    border-style: dashed !important;
}

.accordion-item[b-6ch4a434e7] {
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

.accordion-header[b-6ch4a434e7] {
    cursor: pointer;
}

.accordion-button[b-6ch4a434e7]::after {
    display: none;
}

.accordion-button:focus~.group-chevron[b-6ch4a434e7] {
    border-radius: var(--bs-border-radius-sm);
    box-shadow: var(--bs-accordion-btn-focus-box-shadow);
}

.accordion-item:not(:hover):not(:focus-within) .group-action[b-6ch4a434e7] {
    visibility: hidden;
}
/* /Components/Shared/DocumentGroupFormPanel.razor.rz.scp.css */
.group-name-input[b-3h40n7e1xw] {
    background-color: var(--bs-bg-card);
}
/* /Components/Shared/DocumentMarkdownSection.razor.rz.scp.css */
/* Padding and the header row come from the shared .docview-section skin (AIG-362). */
.mdview-notice[b-z8xfjy9r20] {
    margin-bottom: 0.75rem;
}

.mdview-truncated[b-z8xfjy9r20] {
    margin-bottom: 0.75rem;
}

.mdview-raw[b-z8xfjy9r20] {
    color: var(--bs-secondary-color);
    white-space: pre-wrap;
    word-break: break-word;
    font-size: var(--fs-sm);
    max-height: 60vh;
    overflow-y: auto;
    padding: 0.75rem;
    border-radius: var(--bs-border-radius);
    background: var(--bs-body-bg);
}

/* Extracted content sits back a shade: it is machine-converted source, not the page's own
   copy, and at full --bs-body-color it competes with the page's actual headings. */
.mdview-rendered[b-z8xfjy9r20] {
    color: var(--bs-secondary-color);
    max-height: 60vh;
    overflow-y: auto;
}

/* The global .md-content rules pin headings to --bs-body-color; inside the preview they
   follow the body text instead. ::deep because MarkdownRenderer builds these nodes in C#,
   so they never receive this component's scope attribute - the selector has to hang off
   .mdview-rendered, which does. */
.mdview-rendered[b-z8xfjy9r20]  :is(h1, h2, h3, h4, h5, h6) {
    color: inherit;
}
/* /Components/Shared/DocumentMultiPicker.razor.rz.scp.css */
/* Layout only - colours and the chip pattern come from Bootstrap and .filter-chip in _app-styles.scss. */

.doc-picker__list[b-or4cr6517a] {
    max-height: 14rem;
    overflow-y: auto;
    padding: 0.375rem 0.5rem;
}

.doc-picker__list .form-check[b-or4cr6517a] {
    min-width: 0;
}

.doc-picker__chip-label[b-or4cr6517a] {
    display: inline-block;
    max-width: 14rem;
}
/* /Components/Shared/DocumentQualityBadge.razor.rz.scp.css */
/*
    The document card's single status pill (AIG-236/AIG-275). Colours come from Bootstrap's theme
    tokens, which Bootstrap itself redefines under [data-bs-theme="dark"] - so no explicit dark-mode
    block is needed here. Rendered as either a <button> (clickable, opens the quality report) or a
    <span> (informational only); both share this styling, so `cursor` is set per-tag below instead of
    unconditionally.
*/
.quality-badge[b-945q9a6xr6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    font-size: var(--fs-xs);
    font-weight: 500;
    padding: 0.1rem 0.5rem;
    border: 0;
    border-radius: 999px;
    line-height: 1.4;
    white-space: nowrap;
}

button.quality-badge[b-945q9a6xr6] {
    cursor: pointer;
}

button.quality-badge:hover[b-945q9a6xr6] {
    filter: brightness(0.95);
}

.quality-badge:focus-visible[b-945q9a6xr6] {
    outline: 2px solid var(--bs-primary);
    outline-offset: 1px;
}

/* Pending - not yet processed */
.quality-badge--pending[b-945q9a6xr6] {
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary-color);
}

.quality-badge--processing[b-945q9a6xr6] {
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis);
}

.quality-badge--processing .bi[b-945q9a6xr6] {
    animation: rotating-b-945q9a6xr6 2s linear infinite;
    display: flex;
    justify-content: center;
    align-items: center;
}

@keyframes rotating-b-945q9a6xr6 {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}


/* Error - an infrastructure/pipeline failure, not a content judgment */
.quality-badge--error[b-945q9a6xr6] {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

/* Unusable - the file could not be read at all, or was judged to hold no usable content */
.quality-badge--unusable[b-945q9a6xr6] {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

/* Warning - imported, but the data may distort analysis. Review - held until a user approves the
   import (AIG-589): the same concern, one step earlier. */
.quality-badge--warning[b-945q9a6xr6],
.quality-badge--review[b-945q9a6xr6] {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}

/* Processed - imported cleanly */
.quality-badge--processed[b-945q9a6xr6] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

/* Not reprocessed */
.quality-badge--not-reprocessed[b-945q9a6xr6] {
    background: var(--bs-secondary-bg);
    color: var(--bs-secondary-color);
}
/* /Components/Shared/DocumentQualityIssueList.razor.rz.scp.css */
/*
    Filters and search head the report and must not move: they fill the height they are given and
    only the issue list below them scrolls. min-height: 0 is what lets the scroll area shrink below
    its content inside the flex column - without it the whole report grows and the surrounding
    container (the modal body) scrolls instead, taking the tabs and the search box with it. In an
    unconstrained parent - the document view's Quality tab - the report keeps its natural height and
    nothing scrolls internally.
*/
.quality-report[b-kau77mzx4c] {
    flex: 1 1 auto;
    min-height: 0;
}

.quality-report-scroll[b-kau77mzx4c] {
    min-height: 0;
}

.quality-tabs[b-kau77mzx4c] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--bs-border-color);
}

.quality-tab[b-kau77mzx4c] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1rem;
    border: none;
    background: none;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.quality-tab:hover[b-kau77mzx4c] {
    color: var(--bs-body-color);
}

.quality-tab.active[b-kau77mzx4c] {
    color: var(--bs-primary);
    border-bottom-color: var(--bs-primary);
}

.quality-tab i[b-kau77mzx4c] {
    font-size: 1rem;
}

.quality-tab-badge[b-kau77mzx4c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 0.4rem;
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
    border-radius: 99px;
    font-size: var(--fs-xs);
    font-weight: 600;
}

.quality-tab.active .quality-tab-badge[b-kau77mzx4c] {
    background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
    color: var(--bs-primary);
}

/* ── Sheet groups ── */
.quality-sheet-heading[b-kau77mzx4c] {
    margin-top: 1rem;
    margin-bottom: 0.5rem;
    font-size: var(--fs-xs);
    font-weight: 400;
    color: var(--bs-secondary-color);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.quality-sheet-heading:first-child[b-kau77mzx4c] {
    margin-top: 0;
}

.quality-sheet-heading strong[b-kau77mzx4c] {
    color: var(--bs-body-color);
}

.quality-issue-list[b-kau77mzx4c] {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* ── Issue cards ── */
.quality-issue[b-kau77mzx4c] {
    display: flex;
    gap: 0.75rem;
    padding: 1rem;
    margin-bottom: 0.75rem;
    border-radius: var(--bs-border-radius-lg);
    border: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
}

/* Subtle background + *-text-emphasis foreground - the pairing the design uses for these
   severity swatches. The plain theme colours are far too light to read on their own subtle fill. */
.quality-issue-icon[b-kau77mzx4c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    border-radius: var(--bs-border-radius);
    background: var(--bs-info-bg-subtle);
    color: var(--bs-info-text-emphasis);
}

.quality-issue-text[b-kau77mzx4c] {
    min-width: 0;
    flex-grow: 1;
}

.quality-issue--blocking .quality-issue-icon[b-kau77mzx4c] {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

.quality-issue--warning .quality-issue-icon[b-kau77mzx4c] {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}

.quality-issue-action[b-kau77mzx4c] {
    margin-top: 0.5rem;
    font-size: var(--fs-sm);
}
/* /Components/Shared/DocumentQualityModal.razor.rz.scp.css */
/*
    The report is anchored to the top of the viewport instead of being vertically centred: it still
    grows downwards with its content (up to the viewport, after which the issue list scrolls on its
    own), but filtering by severity or typing in the search box no longer moves the header, the
    filter tabs and the search box away from under the pointer.

    The issue list brings its own scroll container, so the body itself must not scroll - otherwise
    the tabs and the search box would scroll out of view with it.
*/
.quality-report-body[b-kt4s1o7for] {
    overflow: hidden;
}
/* /Components/Shared/DocumentSharePanel.razor.rz.scp.css */
/* Share-into-workspace drawer (AIG-283). Panel chrome comes from SidePanel / Bootstrap offcanvas. */

.document-share-intro[b-dqhkgrrtyf] {
    margin-bottom: 1rem;
}

.document-share-heading[b-dqhkgrrtyf] {
    font-size: var(--fs-sm);
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.document-share-list[b-dqhkgrrtyf] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.document-share-item[b-dqhkgrrtyf] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
}

.document-share-item-icon[b-dqhkgrrtyf] {
    color: var(--bs-text-muted);
    line-height: 1.4;
}

.document-share-item-body[b-dqhkgrrtyf] {
    min-width: 0;
}

.document-share-item-name[b-dqhkgrrtyf] {
    color: var(--bs-body-color);
}

.document-share-item-badge[b-dqhkgrrtyf] {
    margin-left: 0.4rem;
    font-size: var(--fs-xs);
    font-weight: 600;
    vertical-align: middle;
}

.document-share-item-meta[b-dqhkgrrtyf] {
    font-size: var(--fs-xs);
}
/* /Components/Shared/DocumentTableSection.razor.rz.scp.css */
/* Padding and the header row come from the shared .docview-section skin (AIG-362);
   what is left here is the sheet picker sitting inside that header. */
.tbldata-sheet-label[b-cn6u9vnhdp] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin-bottom: 0;
}

.tbldata-sheet-select[b-cn6u9vnhdp] {
    width: auto;
    min-width: 10rem;
}

.tbldata-scroll[b-cn6u9vnhdp] {
    overflow-x: auto;
}

.tbldata-grid[b-cn6u9vnhdp] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-base);
}

.tbldata-grid th[b-cn6u9vnhdp],
.tbldata-grid td[b-cn6u9vnhdp] {
    padding: 8px 12px;
    border-bottom: 0.5px solid var(--bs-border-color);
    text-align: left;
    white-space: nowrap;
}

.tbldata-grid th[b-cn6u9vnhdp] {
    color: var(--bs-text-muted);
    font-weight: 500;
    position: sticky;
    top: 0;
    background: var(--bs-bg-card);
}

/* Colour comes from the Bootstrap -subtle/-emphasis pair the markup picks per severity;
   what is left here is the pill's own geometry. */
.tbldata-column-quality-icon[b-cn6u9vnhdp] {
    margin-left: 0.35rem;
    cursor: help;
    font-size: var(--fs-sm);
    padding: 0.25em 0.5em;
    vertical-align: middle;
}

.tbldata-column-profile[b-cn6u9vnhdp] {
    font-size: var(--fs-xs);
    font-weight: 400;
    color: var(--bs-secondary-color);
    cursor: help;
}

.tbldata-cell[b-cn6u9vnhdp] {
    max-width: 24rem;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tbldata-pagination[b-cn6u9vnhdp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0 0;
    font-size: var(--fs-sm);
}

.tbldata-pagination-info[b-cn6u9vnhdp] {
    color: var(--bs-text-muted);
}

.tbldata-pagination-controls[b-cn6u9vnhdp] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.tbldata-pagination-page[b-cn6u9vnhdp] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    min-width: 3rem;
    text-align: center;
}

.tbldata-download[b-cn6u9vnhdp] {
    margin-left: 0.5rem;
}
/* /Components/Shared/DocumentUploadModal.razor.rz.scp.css */
.upload-list[b-azy27m9ivq] {
    max-height: 60vh;
}

.upload-description[b-azy27m9ivq] {
    background-color: var(--bs-bg-card);
}
/* /Components/Shared/DogPet.razor.rz.scp.css */
/* Aiguro dog desk pet - dev mode only. Sits just above the chat input. */

.dog-pet[b-463b50a5mn] {
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    pointer-events: none;
    user-select: none;
}

.dog[b-463b50a5mn] {
    width: 44px;
    height: 44px;
    pointer-events: auto;
    cursor: pointer;
    overflow: visible;
    transform-origin: 50% 90%;
}

/* ── Colours ── */
.dog-outline[b-463b50a5mn] {
    fill: var(--dog-outline, #4B2921);
}

.dog-fur[b-463b50a5mn] {
    fill: var(--dog-fur, #36383C);
}

.dog-hoodie[b-463b50a5mn] {
    fill: var(--dog-hoodie, #46759E);
}

.dog-fur-sheen[b-463b50a5mn] {
    fill: var(--dog-fur-sheen, #5E5656);
}

.dog-tan[b-463b50a5mn] {
    fill: var(--dog-tan, #B36831);
}

.dog-white[b-463b50a5mn] {
    fill: var(--dog-white, #EAE2D4);
}

.dog-hoodie-dark[b-463b50a5mn] {
    fill: var(--dog-hoodie-dark, #416484);
}

.dog-chest[b-463b50a5mn] {
    fill: var(--dog-chest, #BDB3AB);
}

.dog-string[b-463b50a5mn] {
    fill: var(--dog-string, #404F65);
}

.dog-highlight[b-463b50a5mn] {
    fill: var(--dog-highlight, #E3DCD1);
}

.dog-pads[b-463b50a5mn] {
    fill: var(--dog-pads, #684C43);
}

.dog-shadow[b-463b50a5mn] {
    fill: rgba(0, 0, 0, 0.12);
}

.dog-bark-line[b-463b50a5mn] {
    fill: none;
    stroke: var(--dog-outline, #4B2921);
    stroke-width: 4;
    stroke-linecap: round;
}

/* The bark lines stay invisible until their animation plays. They are drawn
   outside the viewBox, so they must never catch clicks meant for the page. */
.dog-bark[b-463b50a5mn] {
    pointer-events: none;
}

.dog-bark-line[b-463b50a5mn] {
    opacity: 0;
}

/* Origins below are in artwork (viewBox user) coordinates. */
.dog-body-group[b-463b50a5mn],
.dog-part[b-463b50a5mn] {
    transform-box: view-box;
}

.dog-body-group[b-463b50a5mn] {
    transform-origin: 72px 188px;
    animation: dog-idle-breathe-b-463b50a5mn 3s ease-in-out infinite;
}

.dog-ear-left[b-463b50a5mn] {
    transform-origin: 32px 14px;
}

.dog-ear-right[b-463b50a5mn] {
    transform-origin: 108px 14px;
}

.dog-tail[b-463b50a5mn] {
    transform-origin: 128px 152px;
    animation: dog-tail-idle-b-463b50a5mn 1.6s ease-in-out infinite;
}

.dog-string-left[b-463b50a5mn] {
    transform-origin: 57.5px 104px;
}

.dog-string-right[b-463b50a5mn] {
    transform-origin: 82.5px 104px;
}

/* ── Idle: breathing, a lazy tail wag and blinking (always on) ── */
.dog-eye[b-463b50a5mn] {
    transform-box: fill-box;
    transform-origin: center;
    animation: dog-blink-b-463b50a5mn 6s ease-in-out infinite;
}

@keyframes dog-idle-breathe-b-463b50a5mn {
    0%, 100% { transform: scale(1, 1); }
    50% { transform: scale(1.01, 0.99); }
}

@keyframes dog-tail-idle-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-6deg); }
}

@keyframes dog-blink-b-463b50a5mn {
    0%, 94%, 100% { transform: scaleY(1); }
    97% { transform: scaleY(0.1); }
}

/* ── Triggered animations (a JS timer toggles these classes at random times) ── */

/* Wag: the tail goes full speed, the body wiggles along */
.dog-pet.is-wagging .dog-tail[b-463b50a5mn] {
    animation: dog-wag-b-463b50a5mn 0.2s ease-in-out 8;
}

.dog-pet.is-wagging .dog-body-group[b-463b50a5mn] {
    animation: dog-wiggle-b-463b50a5mn 0.4s ease-in-out 4;
}

@keyframes dog-wag-b-463b50a5mn {
    0%, 100% { transform: rotate(6deg); }
    50% { transform: rotate(-20deg); }
}

@keyframes dog-wiggle-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-1.5deg); }
    75% { transform: rotate(1.5deg); }
}

/* Bark: a little hop for each "woof", bark lines popping out beside the head */
.dog-pet.is-barking .dog-body-group[b-463b50a5mn] {
    animation: dog-bark-hop-b-463b50a5mn 0.55s ease-out 3;
}

.dog-pet.is-barking .dog-ear-left[b-463b50a5mn] {
    animation: dog-bark-ear-left-b-463b50a5mn 0.55s ease-out 3;
}

.dog-pet.is-barking .dog-ear-right[b-463b50a5mn] {
    animation: dog-bark-ear-right-b-463b50a5mn 0.55s ease-out 3;
}

.dog-pet.is-barking .dog-bark-line[b-463b50a5mn] {
    animation: dog-bark-line-b-463b50a5mn 0.55s ease-out 3;
}

@keyframes dog-bark-hop-b-463b50a5mn {
    0%, 100% { transform: translateY(0) scale(1, 1); }
    25% { transform: translateY(-12px) scale(0.98, 1.03); }
    55% { transform: translateY(0) scale(1.02, 0.97); }
}

@keyframes dog-bark-ear-left-b-463b50a5mn {
    0%, 55%, 100% { transform: rotate(0deg); }
    30% { transform: rotate(10deg); }
}

@keyframes dog-bark-ear-right-b-463b50a5mn {
    0%, 55%, 100% { transform: rotate(0deg); }
    30% { transform: rotate(-10deg); }
}

@keyframes dog-bark-line-b-463b50a5mn {
    0%, 10% { opacity: 0; transform: translate(-6px, 0); }
    25% { opacity: 1; }
    60%, 100% { opacity: 0; transform: translate(6px, 0); }
}

/* Ear flop: both ears flap up and bounce back */
.dog-pet.is-ear-flop .dog-ear-left[b-463b50a5mn] {
    animation: dog-ear-flop-left-b-463b50a5mn 1.1s ease-in-out;
}

.dog-pet.is-ear-flop .dog-ear-right[b-463b50a5mn] {
    animation: dog-ear-flop-right-b-463b50a5mn 1.1s ease-in-out 0.12s;
}

@keyframes dog-ear-flop-left-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    20% { transform: rotate(15deg); }
    40% { transform: rotate(-6deg); }
    60% { transform: rotate(10deg); }
    80% { transform: rotate(-2deg); }
}

@keyframes dog-ear-flop-right-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    20% { transform: rotate(-15deg); }
    40% { transform: rotate(6deg); }
    60% { transform: rotate(-10deg); }
    80% { transform: rotate(2deg); }
}

/* Head tilt: a curious tilt to one side, the far ear lifting */
.dog-pet.is-tilting .dog-body-group[b-463b50a5mn] {
    animation: dog-tilt-b-463b50a5mn 1.8s ease-in-out;
}

.dog-pet.is-tilting .dog-ear-right[b-463b50a5mn] {
    animation: dog-tilt-ear-b-463b50a5mn 1.8s ease-in-out;
}

@keyframes dog-tilt-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    20%, 75% { transform: rotate(-9deg); }
}

@keyframes dog-tilt-ear-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    20%, 75% { transform: rotate(-12deg); }
}

/* Shake: a wet-dog shake - body, ears and hoodie strings all flying */
.dog-pet.is-shaking .dog-body-group[b-463b50a5mn] {
    animation: dog-shake-b-463b50a5mn 0.18s ease-in-out 6;
}

.dog-pet.is-shaking .dog-ear-left[b-463b50a5mn] {
    animation: dog-shake-ear-left-b-463b50a5mn 0.18s ease-in-out 6;
}

.dog-pet.is-shaking .dog-ear-right[b-463b50a5mn] {
    animation: dog-shake-ear-right-b-463b50a5mn 0.18s ease-in-out 6;
}

.dog-pet.is-shaking .dog-string-left[b-463b50a5mn],
.dog-pet.is-shaking .dog-string-right[b-463b50a5mn] {
    animation: dog-string-swing-b-463b50a5mn 0.18s ease-in-out 6;
}

@keyframes dog-shake-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-5deg); }
    75% { transform: rotate(5deg); }
}

@keyframes dog-shake-ear-left-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(16deg); }
    75% { transform: rotate(-4deg); }
}

@keyframes dog-shake-ear-right-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(4deg); }
    75% { transform: rotate(-16deg); }
}

@keyframes dog-string-swing-b-463b50a5mn {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(16deg); }
    75% { transform: rotate(-16deg); }
}

/* Sniff: the nose dips down a few times, ears swinging forward */
.dog-pet.is-sniffing .dog-body-group[b-463b50a5mn] {
    animation: dog-sniff-b-463b50a5mn 0.35s ease-in-out 5;
}

@keyframes dog-sniff-b-463b50a5mn {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(6px) scaleY(0.96); }
}

/* Zoomies: dashes left and right, tail going wild */
.dog-pet.is-zoomies .dog-body-group[b-463b50a5mn] {
    animation: dog-zoomies-b-463b50a5mn 1.5s ease-in-out;
}

.dog-pet.is-zoomies .dog-tail[b-463b50a5mn] {
    animation: dog-wag-b-463b50a5mn 0.15s ease-in-out 10;
}

.dog-pet.is-zoomies .dog-string-left[b-463b50a5mn],
.dog-pet.is-zoomies .dog-string-right[b-463b50a5mn] {
    animation: dog-string-swing-b-463b50a5mn 0.3s ease-in-out 5;
}

@keyframes dog-zoomies-b-463b50a5mn {
    0%, 100% { transform: translateX(0) rotate(0deg); }
    20% { transform: translateX(-40px) rotate(-8deg); }
    45% { transform: translateX(40px) rotate(8deg); }
    70% { transform: translateX(-24px) rotate(-5deg); }
    85% { transform: translateX(10px) rotate(2deg); }
}

/* Spin: an excited chase-its-tail 360 */
.dog-pet.is-spinning .dog[b-463b50a5mn] {
    animation: dog-spin-b-463b50a5mn 0.75s ease-in-out;
}

@keyframes dog-spin-b-463b50a5mn {
    0% { transform: rotate(0deg) scale(1); }
    50% { transform: rotate(180deg) scale(1.08); }
    100% { transform: rotate(360deg) scale(1); }
}

/* Roam: triggered by a triple-click (see pet-roam.js) - the dog keeps bouncing
   and wagging for as long as it's off running around the page. */
.dog-pet.is-roaming .dog-body-group[b-463b50a5mn] {
    animation: dog-bark-hop-b-463b50a5mn 0.5s ease-out infinite;
}

.dog-pet.is-roaming .dog-tail[b-463b50a5mn] {
    animation: dog-wag-b-463b50a5mn 0.2s ease-in-out infinite;
}

.dog-pet.is-roaming .dog-ear-left[b-463b50a5mn] {
    animation: dog-bark-ear-left-b-463b50a5mn 0.5s ease-out infinite;
}

.dog-pet.is-roaming .dog-ear-right[b-463b50a5mn] {
    animation: dog-bark-ear-right-b-463b50a5mn 0.5s ease-out infinite;
}

/* Reduced motion: switch off every animation - idle and triggered alike (the
   triggered .dog-pet.is-* rules are more specific, hence !important). */
@media (prefers-reduced-motion: reduce) {
    .dog[b-463b50a5mn],
    .dog *[b-463b50a5mn] {
        animation: none !important;
    }
}
/* /Components/Shared/EstimateBar.razor.rz.scp.css */
.estimate-bar[b-wke0c04byt] {
    display: inline-flex;
    flex-direction: column;
    gap: 3px;
}

.estimate-bar__label[b-wke0c04byt] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
    font-weight: 500;
    line-height: 1;
}

.estimate-bar__track[b-wke0c04byt] {
    display: flex;
    gap: 2px;
    align-items: center;
}

.estimate-bar__block[b-wke0c04byt] {
    width: 16px;
    height: 9px;
    border-radius: 999px;
    flex-shrink: 0;
    transition: background 0.15s;
}

/* ── Empty state ──────────────────────────────────────────── */
.estimate-bar__block--empty[b-wke0c04byt] {
    background: var(--bs-tertiary-bg);
    border: 0.5px solid var(--bs-border-color);
}

/* ── Potential (green) ────────────────────────────────────── */
.estimate-bar--potential .estimate-bar__block--filled[b-wke0c04byt] {
    background: var(--green-600);
}

/* ── Effort (amber) ───────────────────────────────────────── */
.estimate-bar--effort .estimate-bar__block--filled[b-wke0c04byt] {
    background: var(--orange-500);
    opacity: 0.85;
}

/* ── Timeframe (blue) ─────────────────────────────────────── */
.estimate-bar--timeframe .estimate-bar__block--filled[b-wke0c04byt] {
    background: var(--blue-400);
}
/* /Components/Shared/FieldSelectOptions.razor.rz.scp.css */
/* Layout only - the visual treatment (surfaces, borders, checked-state colours) lives in
   Styles/_app-styles.scss per the frontend convention for component-scoped CSS. */

.msg-options[b-vf8pop0ov1] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

.msg-options-prompt[b-vf8pop0ov1] {
    font-size: var(--fs-sm);
}

.msg-options-field-search[b-vf8pop0ov1] {
    max-width: 320px;
}

/* Scroll container so a field with many values doesn't blow up the chat bubble. */
.msg-options-field-values[b-vf8pop0ov1] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 320px;
    overflow-y: auto;
    padding-right: 4px;
}

.msg-option-choice[b-vf8pop0ov1] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    font-size: var(--fs-sm);
}

.msg-options-submit[b-vf8pop0ov1] {
    align-self: flex-start;
}
/* /Components/Shared/FieldValueBarChart.razor.rz.scp.css */
.field-value-bars-empty[b-5ez4eyc5xe] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}
/* /Components/Shared/FileUpload.razor.rz.scp.css */
.dropzone[b-5nuxyc5q3l] {
    position: relative;
    /* Greyish canvas tone so the drop area reads as a target inside the white card. */
    background: var(--bs-body-bg);
    border: 1px dashed var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    padding: 2rem 1.5rem;
    text-align: center;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.dropzone:hover[b-5nuxyc5q3l],
.dropzone:focus-within[b-5nuxyc5q3l] {
    border-color: var(--bs-primary);
    background: var(--bs-secondary-bg);
}

.dropzone.is-uploading[b-5nuxyc5q3l] {
    opacity: 0.7;
    pointer-events: none;
}

/* Native file input covers the entire dropzone (incl. the
   visual button) so HTML5 drag-and-drop and click work
   without JS interop. Highest z-index inside the dropzone.
   `::deep` is required because <InputFile> is a Blazor
   component - without it, CSS isolation's scope attribute
   won't match the rendered <input>. */
.dropzone[b-5nuxyc5q3l]  .dropzone-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
}

/* Inert visual layer - events pass through to the input. */
.dropzone-content[b-5nuxyc5q3l] {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: 160px;
    gap: 0.2rem;
    pointer-events: none;
}

.dropzone-icon[b-5nuxyc5q3l] {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--bs-dark-bg-subtle);
    border-radius: var(--bs-border-radius);
    margin-bottom: 0.5rem;
    opacity: 0.55;
}

.dropzone-title[b-5nuxyc5q3l] {
    font-weight: 600;
    color: var(--bs-body-color);
    font-size: var(--fs-md);
}

.dropzone-browse[b-5nuxyc5q3l] {
    color: var(--bs-primary);
}

.dropzone-hint[b-5nuxyc5q3l] {
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

.dropzone-hint:last-of-type[b-5nuxyc5q3l] {
    margin-bottom: 0.75rem;
}

/* Decorative button - the input above handles all input. */
.dropzone-button[b-5nuxyc5q3l] {
    pointer-events: none;
}

/* ── Upload status row ──────────────────────────────────── */
.upload-status[b-5nuxyc5q3l] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
}

/* ── Transient upload queue (shown while a batch is in flight / just settled) ── */
.upload-queue-list[b-5nuxyc5q3l] {
    list-style: none;
    margin: 0.5rem 0 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.upload-queue-item[b-5nuxyc5q3l] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    background: var(--bs-secondary-bg);
    border-radius: var(--bs-border-radius-sm);
    font-size: var(--fs-sm);
}

.upload-queue-filename[b-5nuxyc5q3l] {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--bs-body-color);
}

.upload-queue-size[b-5nuxyc5q3l] {
    color: var(--bs-text-muted);
    font-size: var(--fs-xs);
    flex-shrink: 0;
}
/* /Components/Shared/FilterPill.razor.rz.scp.css */
/* Capsule base + sizing come from the shared .toolbar-pill (Styles/_app-styles.scss).
   Only the inline-select-specific bits live here. */

.filter-pill-icon[b-7n92yujwwp] {
    font-size: 0.8125rem;
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.filter-pill-label[b-7n92yujwwp] {
    color: var(--bs-text-muted);
    font-weight: 400;
}

.filter-pill-select[b-7n92yujwwp] {
    border: none;
    background: transparent;
    font-size: inherit;
    font-family: inherit;
    font-weight: 500;
    color: var(--bs-body-color);
    padding: 0;
    margin: 0;
    cursor: pointer;
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

.filter-pill-chevron[b-7n92yujwwp] {
    font-size: 0.625rem;
    color: var(--bs-text-muted);
    flex-shrink: 0;
    margin-left: -0.125rem;
    pointer-events: none;
}
/* /Components/Shared/FindingsDonut.razor.rz.scp.css */
.findings-donut-empty[b-mazewxcuvq] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}

.findings-donut[b-mazewxcuvq] {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
/* /Components/Shared/FirstRunChecklist.razor.rz.scp.css */
.first-run[b-np1ekb9rxj] {
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
}

.first-run-header[b-np1ekb9rxj] {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.first-run-title[b-np1ekb9rxj] {
    font-size: var(--fs-md, 1.05rem);
    font-weight: 600;
    margin: 0;
}

.first-run-subtitle[b-np1ekb9rxj] {
    margin: 0.25rem 0 0;
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
}

.first-run-dismiss[b-np1ekb9rxj] {
    flex-shrink: 0;
}

.first-run-steps[b-np1ekb9rxj] {
    list-style: none;
    margin: 1rem 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 0.75rem;
}

.first-run-step[b-np1ekb9rxj] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.first-run-step-icon[b-np1ekb9rxj] {
    color: var(--bs-primary);
    flex-shrink: 0;
}

.first-run-step--done .first-run-step-icon[b-np1ekb9rxj] {
    color: var(--bs-success);
}

.first-run-step--done .first-run-step-label[b-np1ekb9rxj] {
    color: var(--bs-secondary-color);
    text-decoration: line-through;
}
/* /Components/Shared/GraphCanvas.razor.rz.scp.css */
.graph-canvas-container[b-ztg6gl0psi] {
    width: 100%;
    height: 100%;
    position: relative;
}

.graph-canvas-mount[b-ztg6gl0psi] {
    width: 100%;
    height: 100%;
}

.graph-canvas-empty[b-ztg6gl0psi],
.graph-canvas-loading[b-ztg6gl0psi] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 2rem 1rem;
    color: var(--bs-secondary, #6c757d);
    font-size: 0.875rem;
    gap: 0.5rem;
    text-align: center;
}

.graph-canvas-empty-icon[b-ztg6gl0psi] {
    font-size: 2.5rem;
    opacity: 0.3;
}
/* /Components/Shared/GraphNodeDetailPanel.razor.rz.scp.css */
/* Knowledge-graph node detail panel. Rendered inside the shared SidePanel; only the panel's own
   content is styled here - shell, backdrop and header come from .sidepanel. Styles are keyed on
   attribute kind, never on node type, so a newly published attribute needs no CSS. */

.node-detail-body[b-xus29leyor] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    /* Same reason as the other drawers: this div is both the offcanvas's flex:1 scroll item and its
       own flex column, so it needs min-height: 0 for overflow-y to actually scroll. */
    min-height: 0;
}

.node-detail-status[b-xus29leyor] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.node-detail-muted[b-xus29leyor] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.node-detail-head[b-xus29leyor] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.node-detail-label[b-xus29leyor] {
    margin: 0;
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--bs-body-color);
    overflow-wrap: anywhere;
}

.node-detail-open[b-xus29leyor] {
    align-self: flex-start;
    font-size: var(--fs-sm);
}

.node-detail-section[b-xus29leyor] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* The one attribute a user opened the node for (a rejection's discard reason). */
.node-detail-section--emphasis[b-xus29leyor] {
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-left: 3px solid var(--bs-danger-border-subtle, var(--bs-border-color));
    border-radius: 0.5rem;
    background: var(--bs-bg-card, var(--bs-body-bg));
}

.node-detail-section-title[b-xus29leyor] {
    margin: 0;
    color: var(--bs-text-muted);
}

.node-detail-text[b-xus29leyor],
.node-detail-term[b-xus29leyor] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    white-space: pre-wrap;
}

.node-detail-term[b-xus29leyor] {
    font-weight: 600;
}

.node-detail-list[b-xus29leyor] {
    margin: 0;
    padding-left: 1.1rem;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.node-detail-list-item[b-xus29leyor] {
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.node-detail-chips[b-xus29leyor] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.node-detail-chip[b-xus29leyor] {
    padding: 0.15rem 0.5rem;
    border-radius: 1rem;
    font-size: var(--fs-xs);
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-body-color);
}
/* /Components/Shared/HypothesisAssigneePicker.razor.rz.scp.css */
.assignee-picker[b-kvts21hap1] {
    position: relative;
}

.assignee-picker__toggle[b-kvts21hap1] {
    display: inline-flex;
    align-items: center;
    max-width: 14rem;
}

.assignee-picker__label[b-kvts21hap1] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.assignee-picker__readonly[b-kvts21hap1] {
    display: inline-flex;
    align-items: center;
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
}

.assignee-picker__menu[b-kvts21hap1] {
    position: absolute;
    top: calc(100% + 0.35rem);
    right: 0;
    min-width: 200px;
    max-height: 320px;
    overflow-y: auto;
    z-index: 1050;
}

.assignee-picker__menu .dropdown-item[b-kvts21hap1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.assignee-picker__backdrop[b-kvts21hap1] {
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: transparent;
}
/* /Components/Shared/HypothesisFilterPanel.razor.rz.scp.css */
/* Quick filters (AIG-556): outlined primary toggle chips on a light bar - plain surface while
   off, the light-blue .filter-chip fill while on. Not --bs-tertiary-bg: this theme sets it to
   gray-300, which makes the bar dark and the chips unreadable against it. */
.quick-filters[b-0782ox013n] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: var(--bs-secondary-bg-subtle);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.quick-filters__label[b-0782ox013n] {
    margin-right: 0.5rem;
    padding-right: 0.75rem;
    border-right: 1px solid var(--bs-border-color);
    color: var(--bs-primary-text-emphasis);
    font-size: var(--fs-sm);
    font-weight: 600;
}

.quick-filters .filter-chip[b-0782ox013n] {
    padding-right: 0.75rem;
    background: var(--bs-body-bg);
    border-color: var(--bs-primary);
    cursor: pointer;
}

.quick-filters .filter-chip:hover[b-0782ox013n],
.quick-filters .filter-chip.quick-filters__chip--on[b-0782ox013n] {
    background: var(--accent-blue-light);
}

/* Filter entries: as many ~14rem columns as fit, stretching to fill the row
   (auto-fit + 1fr) and wrapping onto the next line when space runs out. */
.filter-grid[b-0782ox013n] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1.25rem 1.5rem;
}

/* Let inner controls shrink instead of forcing track overflow. */
.filter-grid__item[b-0782ox013n] {
    min-width: 0;
}

/* Data-field filter row (AIG-351): field, operator, values, remove. The value box takes the
   remaining width; below the grid breakpoint the cells stack so nothing is squeezed to
   unusable width on a narrow viewport. */
.field-filter-row[b-0782ox013n] {
    display: grid;
    grid-template-columns: minmax(9rem, 1fr) minmax(7rem, auto) minmax(12rem, 2.5fr) auto;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

/* The field was deleted while the panel was open - the row stays, flagged, instead of
   silently dropping out and widening the result set. */
.field-filter-row--invalid[b-0782ox013n] {
    border-color: var(--bs-danger-border-subtle);
}

/* Spans the whole grid so the message sits under the controls, not inside a cell. */
.field-filter-row__error[b-0782ox013n] {
    grid-column: 1 / -1;
}

@media (max-width: 767.98px) {
    .field-filter-row[b-0782ox013n] {
        grid-template-columns: 1fr auto;
    }

    .field-filter-row__values[b-0782ox013n] {
        grid-column: 1 / -1;
    }
}

/* Empty state - a dashed drop-zone-style box inviting the first row. */
.field-filter-empty[b-0782ox013n] {
    padding: 1.5rem;
    border: 1px dashed var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background: var(--bs-secondary-bg-subtle);
}
/* /Components/Shared/HypothesisFlowChart.razor.rz.scp.css */
.flow-toolbar[b-fw0jkkufss] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin-bottom: 0.75rem;
}

.flow-hint[b-fw0jkkufss] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.flow-toggles[b-fw0jkkufss] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* The plugin sizes to its container (responsive, no aspect ratio), so the height lives here.
   Labels sit beside the nodes, which needs a bit more room than the other dashboard charts. */
.flow-chart[b-fw0jkkufss] {
    position: relative;
    height: 320px;
}

.flow-empty[b-fw0jkkufss] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}
/* /Components/Shared/HypothesisKnowledgeGraphDrawer.razor.rz.scp.css */
/* Knowledge graph drawers (AIG-491). Rendered inside the shared SidePanel; only the
   drawer-specific content is styled here - shell, backdrop and header come from .sidepanel. */

.kg-drawer-body[b-qsg1pa440f] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    /* See OpportunityRelationsDrawer: without min-height: 0 the body grows to fit its
       content instead of scrolling inside the drawer. */
    min-height: 0;
}

.kg-drawer-status[b-qsg1pa440f] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.kg-drawer-muted[b-qsg1pa440f] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.kg-drawer-empty[b-qsg1pa440f] {
    padding: 2rem 0;
    text-align: center;
}

.kg-drawer-hint[b-qsg1pa440f] {
    font-size: var(--fs-xs);
}
/* /Components/Shared/HypothesisListTable.razor.rz.scp.css */
.opp-list[b-flliwgil11] {
    display: flex;
    flex-direction: column;
    background: var(--bs-bg-card);
    border: 0.5px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg, 0.75rem);
    overflow: hidden;
}

/* Grid template MUST stay in sync with .opp-row in OpportunityCard.razor.css
   so the header and rows resize together (see notes there). */
.opp-list-header[b-flliwgil11] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 120px) repeat(5, 98px) 75px 88px;
    gap: 1rem;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
}

/* Overline/Small - kept in sync with the central QuickGrid header skin
   in _app-styles.scss. */
.opp-list-header span[b-flliwgil11] {
    font-size: var(--fs-2xs);
    font-weight: 600;
    line-height: 1.2;
    color: var(--bs-text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
}

/* /Components/Shared/HypothesisSplitLinks.razor.rz.scp.css */
.split-links[b-j3c7m3ikpq] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.75rem;
    margin-top: 0.25rem;
}
/* /Components/Shared/HypothesisSplitPlanCard.razor.rz.scp.css */
/* ── Split plan card (in-chat, AIG-568) - the surface is Bootstrap's .card; only layout lives here ── */

.split-plan-header[b-3q9z16lboa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
}

.split-plan-avatar[b-3q9z16lboa] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
    font-size: var(--fs-xs);
}

.split-plan-body[b-3q9z16lboa] {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding: 0.75rem 0.9rem;
}

.split-plan-original[b-3q9z16lboa],
.split-plan-note[b-3q9z16lboa] {
    display: flex;
    gap: 0.5rem;
    margin: 0;
    font-size: var(--fs-sm);
}

.split-plan-note[b-3q9z16lboa] {
    color: var(--bs-secondary-color);
}

.split-plan-target[b-3q9z16lboa] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--bs-border-color-translucent);
    border-radius: 0.5rem;
}

.split-plan-target--remainder[b-3q9z16lboa] {
    border-style: dashed;
}

.split-plan-target-head[b-3q9z16lboa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.split-plan-value[b-3q9z16lboa] {
    font-weight: 600;
    white-space: nowrap;
}

.split-plan-title[b-3q9z16lboa] {
    font-weight: 600;
}

.split-plan-text[b-3q9z16lboa] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
}

.split-plan-factors[b-3q9z16lboa] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-sm);
}

.split-plan-factors li[b-3q9z16lboa] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
}

.split-plan-factor-value[b-3q9z16lboa] {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.split-plan-details[b-3q9z16lboa] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.2rem 0.75rem;
    margin: 0;
    font-size: var(--fs-sm);
}

.split-plan-details dt[b-3q9z16lboa] {
    font-weight: 500;
    color: var(--bs-secondary-color);
}

.split-plan-details dd[b-3q9z16lboa] {
    display: flex;
    flex-direction: column;
    margin: 0;
    min-width: 0;
    overflow-wrap: anywhere;
}

.split-plan-expandable summary[b-3q9z16lboa] {
    font-size: var(--fs-sm);
    color: var(--bs-secondary-color);
    cursor: pointer;
}

.split-plan-expandable .md-content[b-3q9z16lboa] {
    font-size: var(--fs-sm);
    margin-top: 0.25rem;
}

.split-plan-footer[b-3q9z16lboa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    border-top: 1px solid var(--bs-border-color);
}

.split-plan-dismiss[b-3q9z16lboa] {
    color: var(--bs-secondary-color);
}
/* /Components/Shared/HypothesisStatCards.razor.rz.scp.css */
.opp-stats-row[b-z1d3219k7i] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.opp-stat-card[b-z1d3219k7i] {
    padding: 1rem 1.25rem;
}

.opp-stat-card__header[b-z1d3219k7i] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
}

.opp-stat-card__icon[b-z1d3219k7i] {
    font-size: 1.1rem;
    color: var(--bs-text-muted);
}

.opp-stat-card__icon--green[b-z1d3219k7i] {
    color: var(--bs-success);
}

.opp-stat-card__value[b-z1d3219k7i] {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--bs-body-color);
    line-height: 1;
    margin-bottom: 0.35rem;
}

.opp-stat-card__sub[b-z1d3219k7i] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}
/* /Components/Shared/IdBadge.razor.rz.scp.css */
.entity-id-badge[b-dnue6c5he9] {
    display: inline-flex;
    align-items: center;
    line-height: 1;
    flex-shrink: 0;
}
/* /Components/Shared/KnowledgeGraphSvg.razor.rz.scp.css */
/* Layout only - colours come from the graph tokens and kgs-node--{type} / kgs-edge--{group}
   classes in _app-styles.scss. Coordinates arrive as percentages of the fixed-aspect box, and
   the box is a size container so label widths can be expressed as a fraction of it (cqw). */

.kgs-wrap[b-75v0jontv6] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 0;
}

.kgs[b-75v0jontv6] {
    position: relative;
    width: 100%;
    container-type: inline-size;
    --kgs-dot: 28px;
    --kgs-font: var(--fs-sm);
}

.kgs--compact[b-75v0jontv6] {
    --kgs-dot: 20px;
    --kgs-font: var(--fs-xs);
}

/* ── Edges ─────────────────────────────────────────────────── */
.kgs-edges[b-75v0jontv6] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.kgs-edge[b-75v0jontv6] {
    fill: none;
    stroke: var(--kgs-edge-color, currentColor);
    stroke-width: 2px;
    stroke-dasharray: var(--kgs-edge-dash, none);
    stroke-linecap: round;
    /* The SVG is stretched to the box (preserveAspectRatio none); keep strokes at 2px anyway. */
    vector-effect: non-scaling-stroke;
    pointer-events: stroke;
}

/* ── Nodes ─────────────────────────────────────────────────── */
.kgs-node[b-75v0jontv6] {
    position: absolute;
    display: flex;
    align-items: center;
    gap: 6px;
    max-width: none;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    font-size: var(--kgs-font);
    text-align: left;
    text-decoration: none;
    transform: translateY(-50%);
    cursor: pointer;
}

.kgs-node--right[b-75v0jontv6] {
    margin-left: calc(var(--kgs-dot) / -2);
}

.kgs-node--left[b-75v0jontv6] {
    flex-direction: row-reverse;
    margin-right: calc(var(--kgs-dot) / -2);
}

.kgs-node--below[b-75v0jontv6] {
    flex-direction: column;
    gap: 4px;
    transform: translate(-50%, calc(var(--kgs-dot) * -0.7));
}

.kgs-node-dot[b-75v0jontv6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: var(--kgs-dot);
    height: var(--kgs-dot);
    border-radius: 50%;
    background: var(--kgs-node-fill, var(--graph-node-other));
    color: var(--bs-white);
    font-size: calc(var(--kgs-dot) * 0.5);
    box-shadow: 0 0 0 2px var(--bs-bg-card);
}

.kgs-node--center .kgs-node-dot[b-75v0jontv6] {
    width: calc(var(--kgs-dot) * 1.4);
    height: calc(var(--kgs-dot) * 1.4);
    font-size: calc(var(--kgs-dot) * 0.7);
}

.kgs-node--ring2 .kgs-node-dot[b-75v0jontv6] {
    width: calc(var(--kgs-dot) * 0.8);
    height: calc(var(--kgs-dot) * 0.8);
    font-size: calc(var(--kgs-dot) * 0.4);
}

.kgs-node-label[b-75v0jontv6] {
    max-width: calc(var(--kgs-label-frac, 0.25) * 100cqw);
    padding: 1px 4px;
    border-radius: 4px;
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.kgs-node--center .kgs-node-label[b-75v0jontv6] {
    font-weight: 600;
    text-align: center;
}

.kgs-node:hover .kgs-node-label[b-75v0jontv6],
.kgs-node:focus-visible .kgs-node-label[b-75v0jontv6] {
    text-decoration: underline;
}

.kgs-node:focus-visible[b-75v0jontv6] {
    outline: none;
}

.kgs-node:focus-visible .kgs-node-dot[b-75v0jontv6] {
    box-shadow: 0 0 0 2px var(--bs-bg-card), 0 0 0 4px var(--bs-primary);
}

/* ── "+N more" placeholder ─────────────────────────────────── */
.kgs-more[b-75v0jontv6] {
    position: absolute;
    transform: translateY(-50%);
    padding: 2px 8px;
    border: 1px dashed var(--bs-border-color);
    border-radius: 999px;
    background: var(--bs-bg-card);
    color: var(--bs-text-muted);
    font-size: var(--fs-xs);
    white-space: nowrap;
}

/* ── Overview column titles and feet ───────────────────────── */
.kgs-column-title[b-75v0jontv6] {
    position: absolute;
    top: 8px;
    transform: translateX(-50%);
    white-space: nowrap;
}

.kgs-column-more[b-75v0jontv6] {
    position: absolute;
    bottom: 2px;
    transform: translateX(-50%);
    color: var(--bs-text-muted);
    font-size: var(--fs-xs);
}

/* ── Legend ────────────────────────────────────────────────── */
.kgs-legend[b-75v0jontv6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--bs-text-muted);
    font-size: var(--fs-xs);
}

.kgs-legend-item[b-75v0jontv6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.kgs-legend-swatch[b-75v0jontv6] {
    display: inline-block;
    width: 18px;
    height: 0;
    border-top: 2px var(--kgs-swatch-style, solid) var(--kgs-edge-color, currentColor);
}
/* /Components/Shared/ListPager.razor.rz.scp.css */
.list-pager[b-v0fax9galw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
}

.list-pager__info[b-v0fax9galw] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.list-pager__controls[b-v0fax9galw] {
    display: flex;
    gap: 0.25rem;
}
/* /Components/Shared/MarkdownEdit.razor.rz.scp.css */
.markdown-edit-wrapper[b-gkbhsgscqi] {
    border-radius: var(--bs-border-radius, 0.5rem);
}

/* Theme-aware overrides for EasyMDE editor */
.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .CodeMirror {
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
    font-family: var(--bs-font-sans-serif);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-toolbar {
    border-color: var(--bs-border-color);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-toolbar button {
    color: var(--bs-secondary);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-toolbar button:hover,
.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-toolbar button.active {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .CodeMirror-cursor {
    border-left-color: var(--bs-body-color);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-preview {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

.markdown-edit-wrapper[b-gkbhsgscqi]  .EasyMDEContainer .editor-statusbar {
    color: var(--bs-text-muted);
}
/* /Components/Shared/MessageOptions.razor.rz.scp.css */
.msg-options[b-0i40u944k7] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

.msg-options-prompt[b-0i40u944k7] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* ── Default / chips: radio/checkbox row ─────────────────────────────── */

.msg-options-chips .msg-options-choices[b-0i40u944k7] {
    flex-direction: row;
    flex-wrap: wrap;
}

.msg-options-choices[b-0i40u944k7] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.msg-option-choice[b-0i40u944k7] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 10px;
    border: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    font-size: var(--fs-sm);
    cursor: pointer;
}

.msg-option-choice.checked[b-0i40u944k7] {
    border-color: var(--bs-primary-border-subtle);
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

.msg-option-choice.consumed[b-0i40u944k7] {
    opacity: 0.55;
    cursor: default;
}

.msg-option-choice-desc[b-0i40u944k7] {
    display: block;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    margin-top: 2px;
    font-weight: 400;
}

.msg-options-submit[b-0i40u944k7] {
    align-self: flex-start;
}

/* ── Cards style ─────────────────────────────────────────────────────── */

.msg-options-list[b-0i40u944k7] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Surface (bg/border/radius) comes from the .card class; row layout overrides the
   card's default column direction. */
.msg-option-card[b-0i40u944k7] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    font-size: var(--fs-sm);
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    width: 100%;
}

.msg-option-card:hover:not(:disabled)[b-0i40u944k7] {
    border-color: var(--bs-primary-border-subtle);
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

.msg-option-card.consumed[b-0i40u944k7] {
    opacity: 0.55;
    cursor: default;
}

.msg-option-card-label[b-0i40u944k7] {
    flex: 1;
    font-weight: 500;
}

.msg-option-card-desc[b-0i40u944k7] {
    display: block;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    font-weight: 400;
    margin-top: 1px;
}

.msg-option-card:hover:not(:disabled) .msg-option-card-desc[b-0i40u944k7] {
    color: inherit;
    opacity: 0.8;
}

.msg-option-card-arrow[b-0i40u944k7] {
    font-size: 0.75rem;
    opacity: 0.45;
    flex-shrink: 0;
}

/* A navigate-style card is a real <a>, not a <button> - strip link defaults so it matches. */
.msg-option-card-link[b-0i40u944k7],
.msg-option-card-link:hover[b-0i40u944k7] {
    text-decoration: none;
    color: inherit;
}

/* A route card (AIG-566) is not itself clickable - its two buttons are ("stay here" / "switch").
   Wraps to a second line on narrow screens. */
.msg-option-route[b-0i40u944k7] {
    cursor: default;
    flex-wrap: wrap;
}

.msg-option-route.msg-option-card:hover:not(:disabled)[b-0i40u944k7] {
    border-color: var(--bs-card-border-color);
    background: var(--bs-card-bg);
    color: inherit;
}

.msg-option-route-text[b-0i40u944k7] {
    flex: 1 1 12rem;
    min-width: 0;
}

.msg-option-route-actions[b-0i40u944k7] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex-shrink: 0;
}

/* ── Cards style, multi-select (AIG-457) ─────────────────────────────── */

.msg-option-card-checkbox.checked[b-0i40u944k7] {
    border-color: var(--bs-primary-border-subtle);
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

.msg-options-cards-multi .msg-options-submit[b-0i40u944k7] {
    align-self: flex-start;
}

/* ── Confirm style ───────────────────────────────────────────────────── */

.msg-options-memory-row[b-0i40u944k7] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    align-items: stretch;
}

.msg-options-memory-btn[b-0i40u944k7] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: start;
}

.msg-options-memory-btn.consumed[b-0i40u944k7] {
    opacity: 0.55;
    cursor: default;
}

.msg-options-memory-note[b-0i40u944k7] {
    font-size: 0.75rem;
    opacity: 0.8;
}

.msg-options-confirm-row[b-0i40u944k7] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.msg-options-confirm-btn[b-0i40u944k7] {
    flex: 1;
    min-width: 100px;
}

.msg-options-confirm-btn.consumed[b-0i40u944k7] {
    opacity: 0.55;
    cursor: default;
}
/* /Components/Shared/MessageTable.razor.rz.scp.css */
.msg-table[b-kfmp4vecv7] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
    padding: 10px 14px;
    border-radius: 10px;
    border: 0.5px solid var(--bs-border-color);
    background: var(--bs-bg-card);
}

.msg-table-title[b-kfmp4vecv7] {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--bs-body-color);
}

.msg-table-scroll[b-kfmp4vecv7] {
    overflow-x: auto;
}

.msg-table-grid[b-kfmp4vecv7] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
}

.msg-table-grid th[b-kfmp4vecv7],
.msg-table-grid td[b-kfmp4vecv7] {
    padding: 6px 10px;
    border-bottom: 0.5px solid var(--bs-border-color);
    text-align: left;
    white-space: nowrap;
}

.msg-table-grid th[b-kfmp4vecv7] {
    color: var(--bs-text-muted);
    font-weight: 500;
}

.msg-table-note[b-kfmp4vecv7] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.msg-table-download[b-kfmp4vecv7] {
    align-self: flex-start;
}
/* /Components/Shared/OnboardingTourCard.razor.rz.scp.css */
.onboarding-tour[b-g0p8aqlpll] {
    position: fixed;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 1045;
    max-width: calc(100vw - 2rem);
}

.onboarding-tour-card[b-g0p8aqlpll] {
    width: min(380px, calc(100vw - 2rem));
    overflow: hidden;
    border-radius: var(--bs-border-radius-lg);
    background: var(--bs-body-bg);
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.25);
}

.onboarding-tour-illustration[b-g0p8aqlpll] {
    position: relative;
    height: 251px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: url("/images/onboarding/background.png") center / 100% 100% no-repeat;
}

.onboarding-tour-illustration img[b-g0p8aqlpll] {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.onboarding-tour-close[b-g0p8aqlpll] {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
}

.onboarding-tour-body[b-g0p8aqlpll] {
    padding: 1.5rem 2rem;
}

.onboarding-tour-title[b-g0p8aqlpll] {
    margin-bottom: 0.75rem;
}

.onboarding-tour-body p[b-g0p8aqlpll] {
    color: var(--bs-secondary-color);
}

.onboarding-tour-footer[b-g0p8aqlpll] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 2rem 1.5rem;
    border-top: none;
}

.onboarding-tour-dots[b-g0p8aqlpll] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.onboarding-tour-dot[b-g0p8aqlpll] {
    width: 8px;
    height: 8px;
    border-radius: var(--bs-border-radius-pill);
    background: var(--bs-secondary-bg);
    transition: background-color 0.15s ease-in-out, width 0.15s ease-in-out;
}

.onboarding-tour-dot--active[b-g0p8aqlpll] {
    width: 18px;
    background: var(--bs-primary);
}

.onboarding-tour-nav[b-g0p8aqlpll] {
    display: flex;
    gap: 0.5rem;
}
/* /Components/Shared/OpportunityBulkAnalysisWizard.razor.rz.scp.css */
/* AIG-266 bulk analysis wizard. Styling is provisional pending AIG-267. */

.analysis-wizard-action-option[b-j229h5m1w0] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
}

.analysis-wizard-selection-list[b-j229h5m1w0] {
    max-height: 18rem;
    overflow-y: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    padding: 0.5rem 0.75rem;
}

.analysis-wizard-selection-row[b-j229h5m1w0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0;
}

.analysis-wizard-selection-row + .analysis-wizard-selection-row[b-j229h5m1w0] {
    border-top: 1px solid var(--bs-border-color);
}

/* Bootstrap's .form-check positions the checkbox/radio via padding-left plus a
   negative margin-left on .form-check-input, which only works in block layout.
   These rows override padding-left for their own layout, so that trick pushes
   the input outside the bordered box. Neutralize it and let flex place the
   input as a normal first item instead. */
.analysis-wizard-action-option.form-check .form-check-input[b-j229h5m1w0],
.analysis-wizard-selection-row.form-check .form-check-input[b-j229h5m1w0] {
    float: none;
    margin-left: 0;
    flex-shrink: 0;
}

.analysis-wizard-action-option.form-check .form-check-label[b-j229h5m1w0],
.analysis-wizard-selection-row.form-check .form-check-label[b-j229h5m1w0] {
    flex: 1;
}

.analysis-wizard-selection-label[b-j229h5m1w0] {
    overflow-wrap: anywhere;
}

/* AIG-440 free-text step: the instruction box and the curated example chips below it. */
.analysis-wizard-instruction[b-j229h5m1w0] {
    resize: vertical;
}

.analysis-wizard-examples[b-j229h5m1w0] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.analysis-wizard-example[b-j229h5m1w0] {
    border-radius: 999px;
}

.analysis-wizard-instruction-preview[b-j229h5m1w0] {
    border-left: 3px solid var(--bs-border-color);
    padding-left: 0.75rem;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}
/* /Components/Shared/OpportunityCard.razor.rz.scp.css */
/* ── Wrapper ───────────────────────────────────────────────── */
.opp-row-wrap[b-twm77uu5yx] {
    background: var(--bs-bg-card);
    border-bottom: 1px solid var(--bs-border-color);
}

.opp-row-wrap:last-child[b-twm77uu5yx] {
    border-bottom: none;
}

.opp-row-wrap--valuedesk[b-twm77uu5yx] {
    opacity: 0.65;
}

/* ── Row ───────────────────────────────────────────────────── */
/* Grid template MUST stay in sync with .opp-list-header in Opportunities.razor.css
   so the header and rows resize together. The first column flexes (minmax(0, 1fr)):
   it fills extra space as a gap after the title (whose content is capped at 750px)
   and shrinks gracefully on narrow screens, while the metric columns stay fixed. The
   assignee column (AIG-556) may shrink to nothing too (its name ellipsizes), so it adds
   no width the row needed before. The last (actions) column fits three 24px icon buttons
   with their 8px gaps - a hypothesis in both Valuedesk and Jira shows both links plus
   delete (AIG-635). */
.opp-row[b-twm77uu5yx] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 120px) repeat(5, 98px) 75px 88px;
    gap: 1rem;
    align-items: center;
    transition: background 0.1s;
    user-select: none;
    padding: 0 1.25rem;
    min-height: 72px;
}

.opp-row:hover[b-twm77uu5yx] {
    background: var(--bs-secondary-bg);
}

.opp-row__link[b-twm77uu5yx] {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -2;
    align-items: center;
    text-decoration: none;
    padding: 1rem 0;
}

.opp-row__link:focus-visible[b-twm77uu5yx] {
    outline: 2px solid var(--bs-primary-border-subtle);
    outline-offset: -2px;
}

/* ── Row cells ─────────────────────────────────────────────── */
.opp-row__title[b-twm77uu5yx] {
    overflow: hidden;
    min-width: 0;
    max-width: 750px;
}

.opp-row__title-inner[b-twm77uu5yx] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.opp-row__title-text[b-twm77uu5yx] {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--bs-body-color);
    overflow: hidden;
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.opp-row__description[b-twm77uu5yx] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 400;
}

/* Data-field count badge (AIG-351) - sits in the title cell under the description so the
   row's column grid is untouched. */
.opp-row__meta[b-twm77uu5yx] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    margin-top: 0.15rem;
    min-width: 0;
}

.opp-row__meta-badge[b-twm77uu5yx] {
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.1rem 0.45rem;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-secondary-color);
    background: var(--bs-secondary-bg);
    border-radius: var(--bs-border-radius);
    white-space: nowrap;
}

.opp-row__meta-badge:hover[b-twm77uu5yx],
.opp-row__meta-badge:focus-visible[b-twm77uu5yx] {
    color: var(--bs-body-color);
    background: var(--gray-200);
}

.opp-row__meta-badge > .bi[b-twm77uu5yx] {
    font-size: 0.7rem;
}

.opp-valuedesk-dot[b-twm77uu5yx] {
    color: var(--bs-text-muted);
    font-size: 0.65rem;
    flex-shrink: 0;
}

.opp-row__confidence[b-twm77uu5yx],
.opp-row__potential[b-twm77uu5yx],
.opp-row__value[b-twm77uu5yx],
.opp-row__effort[b-twm77uu5yx],
.opp-row__timeframe[b-twm77uu5yx],
.opp-row__status[b-twm77uu5yx] {
    display: flex;
    align-items: center;
}

.opp-row__assignee[b-twm77uu5yx] {
    display: flex;
    align-items: center;
    min-width: 0;
}

.opp-row__assignee-name[b-twm77uu5yx] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.opp-row__actions[b-twm77uu5yx] {
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: flex-end;
}
/* /Components/Shared/OpportunityChangeLogPanel.razor.rz.scp.css */
/* ── Empty / loading / error states ─────────────────────────── */
.changelog-empty[b-j3fvrmh47b] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 3rem 1rem;
    text-align: center;
    color: var(--bs-text-muted);
    font-size: var(--fs-sm);
    flex: 1;
}

.changelog-empty-icon[b-j3fvrmh47b] {
    font-size: 1.75rem;
    opacity: 0.4;
}

.changelog-empty-text[b-j3fvrmh47b] {
    margin: 0;
}

/* ── Master-detail layout (list left, diff right) ───────────── */
.changelog-layout[b-j3fvrmh47b] {
    display: flex;
    height: min(70vh, 640px);
    min-height: 320px;
}

.changelog-list[b-j3fvrmh47b] {
    flex: 0 0 300px;
    overflow-y: auto;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    border-right: 1px solid var(--bs-border-color);
}

.changelog-detail[b-j3fvrmh47b] {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.changelog-detail-meta[b-j3fvrmh47b] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    position: sticky;
    top: 0;
    z-index: 1;
}

.changelog-detail-body[b-j3fvrmh47b] {
    display: flex;
    flex-direction: column;
}

/* ── List entries (clickable) ───────────────────────────────── */
.changelog-entry[b-j3fvrmh47b] {
    width: 100%;
    text-align: left;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.45rem;
    padding: 0.55rem 0.75rem;
    background: var(--bs-bg-card);
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}

.changelog-entry:hover[b-j3fvrmh47b] {
    border-color: var(--bs-text-muted);
    background: var(--bg-hover, var(--bs-bg-card));
}

.changelog-entry--active[b-j3fvrmh47b] {
    border-color: var(--bs-primary-border-subtle);
    background: color-mix(in srgb, var(--bs-primary-border-subtle) 8%, var(--bs-bg-card));
}

.changelog-entry-header[b-j3fvrmh47b] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.changelog-timestamp[b-j3fvrmh47b] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    font-variant-numeric: tabular-nums;
}

.changelog-user[b-j3fvrmh47b] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
    font-weight: 500;
}

.changelog-user[b-j3fvrmh47b]::before {
    content: "·";
    margin-right: 0.3rem;
    color: var(--bs-text-muted);
}

.changelog-entry-summary[b-j3fvrmh47b] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.changelog-summary-text[b-j3fvrmh47b] {
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.changelog-summary-text--muted[b-j3fvrmh47b] {
    color: var(--bs-text-muted);
}


.changelog-badge[b-j3fvrmh47b] {
    display: inline-flex;
    align-items: center;
    font-size: var(--fs-xs);
    font-weight: 600;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
}

.changelog-badge--created[b-j3fvrmh47b] {
    background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
    color: var(--bs-primary);
    border: 1px solid color-mix(in srgb, var(--bs-primary) 30%, transparent);
}

/* ── Column headers (before / after) ───────────────────────── */
.diff-col-headers[b-j3fvrmh47b] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
    flex-shrink: 0;
}

.diff-col-header[b-j3fvrmh47b] {
    padding: 0.45rem 0.75rem;
}

.diff-col-header:first-child[b-j3fvrmh47b] {
    border-right: 1px solid var(--bs-border-color);
}

/* ── Creation header ────────────────────────────────────────── */
.diff-creation-header[b-j3fvrmh47b] {
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-bg-card);
}

/* ── Field row ──────────────────────────────────────────────── */
.diff-field[b-j3fvrmh47b] {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--bs-border-color);
}

.diff-field-label[b-j3fvrmh47b] {
    padding: 0.35rem 0.75rem 0;
}


/* ── Two-pane values row ────────────────────────────────────── */
.diff-field-values[b-j3fvrmh47b] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-width: 0;
}

.diff-pane[b-j3fvrmh47b] {
    padding: 0.3rem 0.75rem 0.5rem;
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
    min-width: 0;
    overflow-wrap: break-word;
}

.diff-pane--before[b-j3fvrmh47b] {
    border-right: 1px solid var(--bs-border-color);
}

.diff-field--changed .diff-pane--before[b-j3fvrmh47b] {
    color: var(--bs-text-muted);
}

.diff-field--changed .diff-pane--after[b-j3fvrmh47b] {
    color: var(--bs-body-color);
    font-weight: 500;
}

.diff-pane--text[b-j3fvrmh47b] {
    white-space: pre-wrap;
    line-height: 1.55;
    word-break: break-word;
}

/* Basis sentence under the potential-value badge (visible since the tooltip was removed). */
.diff-pane-basis[b-j3fvrmh47b] {
    margin-top: 0.25rem;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    overflow-wrap: break-word;
}

/* ── Single-column value (creation view) ───────────────────── */
.diff-single-value[b-j3fvrmh47b] {
    padding: 0.3rem 0.75rem 0.5rem;
    font-size: var(--fs-sm);
    color: var(--bs-secondary);
}

.diff-single-value--text[b-j3fvrmh47b] {
    white-space: pre-wrap;
    line-height: 1.55;
    word-break: break-word;
}

/* ── Inline word/line diff spans ────────────────────────────────
   Emitted as raw HTML via MarkupString (WordDiff/LineDiff), so they carry no
   CSS-isolation scope attribute - they must stay behind ::deep. */
[b-j3fvrmh47b] .diff-del {
    background: color-mix(in srgb, var(--bs-danger) 15%, transparent);
    color: var(--bs-danger-text-emphasis);
    border-radius: 2px;
    padding: 0 1px;
    text-decoration: line-through;
    text-decoration-color: var(--bs-danger);
}

[b-j3fvrmh47b] .diff-ins {
    background: color-mix(in srgb, var(--bs-success) 15%, transparent);
    color: var(--bs-success-text-emphasis);
    border-radius: 2px;
    padding: 0 1px;
}
/* /Components/Shared/OpportunityEvidenceDrawer.razor.rz.scp.css */
/* Evidence-sources drawer (AIG-96). Rendered inside the shared SidePanel; only the
   drawer-specific content is styled here - shell, backdrop and header come from .sidepanel. */

/* ── Header ─────────────────────────────────────────────────── */
.evidence-drawer-heading[b-isvelemspo] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.evidence-drawer-heading-icon[b-isvelemspo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.5rem;
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
    font-size: 1rem;
}

.evidence-drawer-heading-text[b-isvelemspo] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.evidence-drawer-subtitle[b-isvelemspo] {
    font-size: var(--fs-xs);
    font-weight: 400;
    color: var(--bs-text-muted);
}

/* ── Body ───────────────────────────────────────────────────── */
.evidence-drawer-body[b-isvelemspo] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    /* This div is both the offcanvas's flex:1 scroll item and its own nested
       flex column; without min-height: 0 it grows to fit all its content
       instead of clipping to the drawer's available height, so overflow-y:
       auto (from .sidepanel .offcanvas-body) never actually scrolls. */
    min-height: 0;
}

.evidence-drawer-status[b-isvelemspo] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.evidence-drawer-muted[b-isvelemspo] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* ── Kind tabs (segmented control) ──────────────────────────── */
.evidence-tabs[b-isvelemspo] {
    display: flex;
    gap: 0.25rem;
    padding: 0.25rem;
    border-radius: 0.5rem;
    background: var(--bs-secondary-bg-subtle);
    flex-shrink: 0;
}

.evidence-tab[b-isvelemspo] {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.35rem 0.5rem;
    border: none;
    border-radius: 0.4rem;
    background: transparent;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.evidence-tab:hover[b-isvelemspo] {
    color: var(--bs-body-color);
}

.evidence-tab--active[b-isvelemspo] {
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    font-weight: 600;
    box-shadow: var(--bs-box-shadow-sm);
}

.evidence-tab-count[b-isvelemspo] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.evidence-tab--active .evidence-tab-count[b-isvelemspo] {
    color: var(--bs-primary);
}

/* ── Search ─────────────────────────────────────────────────── */
.evidence-search[b-isvelemspo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.75rem;
    border-radius: 0.5rem;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.evidence-search-input[b-isvelemspo] {
    flex: 1;
    min-width: 0;
    border: none;
    background: transparent;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    outline: none;
}

.evidence-search-input[b-isvelemspo]::placeholder {
    color: var(--bs-text-muted);
}

/* ── Source groups ──────────────────────────────────────────── */
.evidence-group[b-isvelemspo] {
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background: var(--bs-bg-card);
    overflow: hidden;
    /* Without this, the default flex-shrink: 1 lets the flex column (.evidence-drawer-body)
       shrink each group below its content height to fit the visible area; combined with
       overflow: hidden here, the excess items get silently clipped instead of the drawer
       body actually overflowing and scrolling. */
    flex-shrink: 0;
}

.evidence-group-toggle[b-isvelemspo] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: none;
    background: transparent;
    text-align: left;
}

.evidence-group-icon[b-isvelemspo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: 0.4rem;
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
    flex-shrink: 0;
}

.evidence-group-text[b-isvelemspo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
}

.evidence-group-label[b-isvelemspo] {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-body-color);
    overflow-wrap: anywhere;
}

.evidence-group-sub[b-isvelemspo] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.evidence-group-count[b-isvelemspo] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.5rem;
    padding: 0 0.4rem;
    border-radius: 999px;
    background: var(--bs-secondary-bg-subtle);
    font-size: var(--fs-xs);
    color: var(--bs-secondary);
}

.evidence-group-chevron[b-isvelemspo] {
    flex-shrink: 0;
    color: var(--bs-text-muted);
}

.evidence-group-body[b-isvelemspo] {
    border-top: 1px solid var(--bs-border-color);
}

/* ── Evidence items ─────────────────────────────────────────── */
.evidence-item[b-isvelemspo] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    padding: 0.75rem;
}

.evidence-item+.evidence-item[b-isvelemspo] {
    border-top: 1px solid var(--bs-border-color);
}

.evidence-conf[b-isvelemspo] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.5rem;
    padding: 0.25rem 0.35rem;
    border-radius: 0.4rem;
    font-size: var(--fs-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* The shared confidence palette (--confidence-* in _app-styles.scss). */
.evidence-conf--high[b-isvelemspo] {
    background: var(--confidence-high-bg);
    color: var(--confidence-high-text);
}

.evidence-conf--mid[b-isvelemspo] {
    background: var(--confidence-medium-bg);
    color: var(--confidence-medium-text);
}

.evidence-conf--low[b-isvelemspo] {
    background: var(--confidence-low-bg);
    color: var(--confidence-low-text);
}

.evidence-item-main[b-isvelemspo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.evidence-item-rationale[b-isvelemspo] {
    overflow-wrap: anywhere;
}

.evidence-item-link[b-isvelemspo] {
    align-self: flex-start;
    font-size: var(--fs-xs);
}

.evidence-tag[b-isvelemspo] {
    flex-shrink: 0;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    font-size: var(--fs-xs);
    font-weight: 500;
}

.evidence-tag--document[b-isvelemspo] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

.evidence-tag--benchmark[b-isvelemspo] {
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
}

.evidence-tag--web[b-isvelemspo] {
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary);
}

/* ── Footer legend ──────────────────────────────────────────── */
.evidence-drawer-footer[b-isvelemspo] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.75rem 1.5rem;
    border-top: 1px solid var(--bs-border-color);
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.evidence-legend-label[b-isvelemspo] {
    font-weight: 600;
}

.evidence-legend-items[b-isvelemspo] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.9rem;
}

.evidence-legend-item[b-isvelemspo] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

/* An SVG circle, not a border-radius box: zoom rounds a box's width and height
   independently, squashing it into an oval at some sizes. */
.evidence-legend-dot[b-isvelemspo] {
    width: 0.5rem;
    height: 0.5rem;
    flex-shrink: 0;
}

.evidence-legend-dot--high[b-isvelemspo] {
    fill: var(--confidence-high);
}

.evidence-legend-dot--mid[b-isvelemspo] {
    fill: var(--confidence-medium);
}

.evidence-legend-dot--low[b-isvelemspo] {
    fill: var(--confidence-low);
}

.evidence-drawer-shown[b-isvelemspo] {
    margin-left: auto;
    font-variant-numeric: tabular-nums;
}
/* /Components/Shared/OpportunityFieldsDrawer.razor.rz.scp.css */
/* Header: a muted count eyebrow above the hypothesis title, stacked inside the panel's
   .offcanvas-title so the drawer opens naming both what it shows and what it belongs to. */
.fields-drawer-eyebrow[b-fq8ot9u87h] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-secondary-color);
}

.fields-drawer-title[b-fq8ot9u87h] {
    display: block;
    margin-top: 0.15rem;
}

.fields-drawer-body[b-fq8ot9u87h] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    overflow-y: auto;
}

.fields-drawer-description[b-fq8ot9u87h] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.fields-drawer-muted[b-fq8ot9u87h] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.fields-drawer-group[b-fq8ot9u87h] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.fields-drawer-values[b-fq8ot9u87h] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}

/* Pushed to the bottom of the panel with a divider, matching the other side panels. */
.fields-drawer-footer[b-fq8ot9u87h] {
    display: flex;
    justify-content: flex-end;
    margin-top: auto;
    padding: 1rem;
    border-top: 1px solid var(--bs-border-color);
}
/* /Components/Shared/OpportunityInsightBadges.razor.rz.scp.css */
.opp-insight-badges[b-vpvrpoecgp] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.opp-insight-badge[b-vpvrpoecgp] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.1rem 0.35rem;
    border-radius: var(--bs-border-radius-sm, 0.25rem);
    line-height: 1.4;
}

.opp-insight-badge--support[b-vpvrpoecgp] {
    background: color-mix(in srgb, var(--bs-success, #198754) 12%, transparent);
    color: var(--bs-success, #198754);
}

.opp-insight-badge--contradict[b-vpvrpoecgp] {
    background: color-mix(in srgb, var(--bs-warning, #ffc107) 15%, transparent);
    color: color-mix(in srgb, var(--bs-warning, #ffc107) 85%, #000);
}

.opp-insight-badge--gap[b-vpvrpoecgp] {
    background: color-mix(in srgb, var(--bs-secondary, #6c757d) 12%, transparent);
    color: var(--bs-secondary, #6c757d);
}

.opp-insight-badge--related[b-vpvrpoecgp] {
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 12%, transparent);
    color: var(--bs-primary, #0d6efd);
}
/* /Components/Shared/OpportunityRelationsDrawer.razor.rz.scp.css */
/* Related-hypotheses drawer (AIG-96). Rendered inside the shared SidePanel; only the
   drawer-specific content is styled here - shell, backdrop and header come from .sidepanel. */

.relations-drawer-body[b-eanawxh2pd] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    /* This div is both the offcanvas's flex:1 scroll item and its own nested
       flex column; without min-height: 0 it grows to fit all its content
       instead of clipping to the drawer's available height, so overflow-y:
       auto (from .sidepanel .offcanvas-body) never actually scrolls. */
    min-height: 0;
}

.relations-drawer-status[b-eanawxh2pd] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.relations-drawer-muted[b-eanawxh2pd] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

/* ── Kind tabs (segmented control) ──────────────────────────── */
.relations-tabs[b-eanawxh2pd] {
    display: flex;
    gap: 0.25rem;
    padding: 0.25rem;
    border-radius: 0.5rem;
    background: var(--bs-secondary-bg-subtle);
    flex-shrink: 0;
}

.relations-tab[b-eanawxh2pd] {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.35rem 0.5rem;
    border: none;
    border-radius: 0.4rem;
    background: transparent;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.relations-tab:hover[b-eanawxh2pd] {
    color: var(--bs-body-color);
}

.relations-tab--active[b-eanawxh2pd] {
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    font-weight: 600;
    box-shadow: var(--bs-box-shadow-sm);
}

.relations-tab-count[b-eanawxh2pd] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.relations-tab--active .relations-tab-count[b-eanawxh2pd] {
    color: var(--bs-primary);
}

.relations-group[b-eanawxh2pd] {
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background: var(--bs-bg-card);
    overflow: hidden;
    /* Without this, the default flex-shrink: 1 lets the flex column (.relations-drawer-body)
       shrink each group below its content height to fit the visible area; combined with
       overflow: hidden here, the excess items get silently clipped instead of the drawer
       body actually overflowing and scrolling. */
    flex-shrink: 0;
}

.relations-group-toggle[b-eanawxh2pd] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: none;
    background: transparent;
    text-align: left;
    cursor: pointer;
    font-size: var(--fs-sm);
}

.relations-group-chevron[b-eanawxh2pd] {
    flex-shrink: 0;
    margin-left: auto;
    color: var(--bs-text-muted);
}

.relations-group-badge[b-eanawxh2pd] {
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    font-size: var(--fs-xs);
    font-weight: 600;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary);
}

.relations-group-badge--conflictswith[b-eanawxh2pd] {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

.relations-group-badge--similarto[b-eanawxh2pd] {
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
}

.relations-group-badge--enables[b-eanawxh2pd] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

.relations-group-count[b-eanawxh2pd] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.relations-group-body[b-eanawxh2pd] {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--bs-border-color);
}

.relations-item[b-eanawxh2pd] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.75rem;
    position: relative;
}

.relations-item + .relations-item[b-eanawxh2pd] {
    border-top: 1px solid var(--bs-border-color);
}

.relations-item-link[b-eanawxh2pd] {
    font-size: var(--fs-sm);
    font-weight: 600;
    overflow-wrap: anywhere;
    padding-right: 3rem;
}

.relations-item-rationale[b-eanawxh2pd] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    overflow-wrap: anywhere;
}

.relations-item-conf[b-eanawxh2pd] {
    position: absolute;
    top: 0.6rem;
    right: 0.75rem;
    font-size: var(--fs-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary);
}

/* ── Footer legend ──────────────────────────────────────────── */
.relations-drawer-footer[b-eanawxh2pd] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.75rem 1.5rem;
    border-top: 1px solid var(--bs-border-color);
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.relations-legend-label[b-eanawxh2pd] {
    font-weight: 600;
}

.relations-legend-items[b-eanawxh2pd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.9rem;
}

.relations-legend-item[b-eanawxh2pd] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

/* An SVG circle, not a border-radius box: zoom rounds a box's width and height
   independently, squashing it into an oval at some sizes. */
.relations-legend-dot[b-eanawxh2pd] {
    width: 0.5rem;
    height: 0.5rem;
    flex-shrink: 0;
}

.relations-legend-dot--high[b-eanawxh2pd] {
    fill: var(--bs-success);
}

.relations-legend-dot--mid[b-eanawxh2pd] {
    fill: var(--bs-warning);
}

.relations-legend-dot--low[b-eanawxh2pd] {
    fill: var(--bs-danger);
}

.relations-drawer-shown[b-eanawxh2pd] {
    margin-left: auto;
    font-variant-numeric: tabular-nums;
}
/* /Components/Shared/OptimizeFileTipsModal.razor.rz.scp.css */
.optimize-tips-intro[b-zbg1zpr5nb] {
    margin-bottom: 1rem;
}

.optimize-tip-step[b-zbg1zpr5nb] {
    display: flex;
    gap: 0.85rem;
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: var(--bs-border-radius-lg);
    background: var(--bs-primary-bg-subtle);
}

.optimize-tip-step:last-child[b-zbg1zpr5nb] {
    margin-bottom: 0;
}

.optimize-tip-icon[b-zbg1zpr5nb] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: var(--bs-border-radius);
    background: var(--bs-body-bg);
    color: var(--bs-primary);
}

.optimize-tip-body[b-zbg1zpr5nb] {
    min-width: 0;
}

.optimize-tip-steplabel[b-zbg1zpr5nb] {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--bs-primary);
}

.optimize-tip-title[b-zbg1zpr5nb] {
    margin: 0.15rem 0 0.5rem;
}

.optimize-tip-text[b-zbg1zpr5nb] {
    margin-bottom: 0.5rem;
}

.optimize-tip-bullets[b-zbg1zpr5nb] {
    margin: 0;
    padding-left: 1.1rem;
}

.optimize-tip-bullets li[b-zbg1zpr5nb] {
    margin-bottom: 0.35rem;
}

.optimize-tip-bullets li:last-child[b-zbg1zpr5nb] {
    margin-bottom: 0;
}
/* /Components/Shared/PageTopBar.razor.rz.scp.css */
.page-topbar[b-25ilkob5c5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    min-width: 0;
}

.page-topbar-heading[b-25ilkob5c5] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.page-topbar-avatar[b-25ilkob5c5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--accent-blue-light);
    color: var(--bs-primary);
    font-size: 0.95rem;
}

.page-topbar-text[b-25ilkob5c5] {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
    min-width: 0;
}

.page-topbar-title[b-25ilkob5c5] {
    font-size: var(--fs-xl);
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--bs-body-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.page-topbar-subtitle[b-25ilkob5c5] {
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--bs-text-muted);
}

.page-topbar-actions[b-25ilkob5c5] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
/* /Components/Shared/PigeonClassicPet.razor.rz.scp.css */
/* Classic Aiguro pigeon desk pet - dev mode only. Sits just above the chat input. */

.pigeon-classic-pet[b-zfv01l0wk3] {
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    pointer-events: none;
    user-select: none;
}

.pigeon-classic[b-zfv01l0wk3] {
    width: 44px;
    height: 44px;
    pointer-events: auto;
    cursor: pointer;
    overflow: visible;
    transform-origin: 50% 90%;
}

/* ── Colours (blue Aiguro pigeon) ── */
.pigeon-classic-body[b-zfv01l0wk3] {
    fill: var(--blue-400, #49A6DF);
}

.pigeon-classic-belly[b-zfv01l0wk3] {
    fill: var(--blue-100, #DFF0FB);
}

.pigeon-classic-wing[b-zfv01l0wk3] {
    fill: var(--blue-500, #1373AE);
    transform-origin: center top;
}

.pigeon-classic-tail[b-zfv01l0wk3] {
    fill: var(--blue-500, #1373AE);
}

.pigeon-classic-eye-white[b-zfv01l0wk3] {
    fill: #ffffff;
}

.pigeon-classic-pupil[b-zfv01l0wk3] {
    fill: var(--blue-900, #0C4B73);
}

.pigeon-classic-beak[b-zfv01l0wk3] {
    fill: #f4a23b;
}

.pigeon-classic-foot[b-zfv01l0wk3] {
    stroke: #f4a23b;
    stroke-width: 2;
    stroke-linecap: round;
}

.pigeon-classic-shadow[b-zfv01l0wk3] {
    fill: rgba(0, 0, 0, 0.12);
}

/* ── Idle: gentle breathing bob + occasional blink (always on) ── */
.pigeon-classic-body-group[b-zfv01l0wk3] {
    transform-origin: 50% 90%;
    animation: pigeon-classic-idle-bob-b-zfv01l0wk3 3.2s ease-in-out infinite;
}

.pigeon-classic-eye[b-zfv01l0wk3] {
    transform-origin: center;
    transform-box: fill-box;
    animation: pigeon-classic-blink-b-zfv01l0wk3 5.5s ease-in-out infinite;
}

.pigeon-classic-head[b-zfv01l0wk3] {
    transform-origin: 50% 60%;
    transform-box: fill-box;
}

@keyframes pigeon-classic-idle-bob-b-zfv01l0wk3 {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(-1px) scaleY(1.02); }
}

@keyframes pigeon-classic-blink-b-zfv01l0wk3 {
    0%, 92%, 100% { transform: scaleY(1); }
    96% { transform: scaleY(0.1); }
}

/* ── Triggered animations (a JS timer toggles these classes at random times) ── */

/* Flap: wings beat, body lifts a touch */
.pigeon-classic-pet.is-flapping .pigeon-classic-wing--left[b-zfv01l0wk3] {
    animation: pigeon-classic-flap-left-b-zfv01l0wk3 0.22s ease-in-out 4;
}

.pigeon-classic-pet.is-flapping .pigeon-classic-wing--right[b-zfv01l0wk3] {
    animation: pigeon-classic-flap-right-b-zfv01l0wk3 0.22s ease-in-out 4;
}

.pigeon-classic-pet.is-flapping .pigeon-classic-body-group[b-zfv01l0wk3] {
    animation: pigeon-classic-lift-b-zfv01l0wk3 0.88s ease-in-out;
}

@keyframes pigeon-classic-flap-left-b-zfv01l0wk3 {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-32deg); }
}

@keyframes pigeon-classic-flap-right-b-zfv01l0wk3 {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(32deg); }
}

@keyframes pigeon-classic-lift-b-zfv01l0wk3 {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

/* Hop: a quick little jump with a squash-and-stretch */
.pigeon-classic-pet.is-hopping .pigeon-classic-body-group[b-zfv01l0wk3] {
    animation: pigeon-classic-hop-b-zfv01l0wk3 0.6s cubic-bezier(0.3, 0.7, 0.4, 1);
}

@keyframes pigeon-classic-hop-b-zfv01l0wk3 {
    0% { transform: translateY(0) scaleY(1); }
    20% { transform: translateY(0) scaleY(0.85); }
    55% { transform: translateY(-9px) scaleY(1.08); }
    80% { transform: translateY(0) scaleY(0.92); }
    100% { transform: translateY(0) scaleY(1); }
}

/* Peck: head dips down a couple of times */
.pigeon-classic-pet.is-pecking .pigeon-classic-head[b-zfv01l0wk3] {
    animation: pigeon-classic-peck-b-zfv01l0wk3 0.4s ease-in-out 2;
}

@keyframes pigeon-classic-peck-b-zfv01l0wk3 {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(3px) rotate(4deg); }
}

/* Look: tilt the head left, then right, curiously */
.pigeon-classic-pet.is-looking .pigeon-classic-head[b-zfv01l0wk3] {
    animation: pigeon-classic-look-b-zfv01l0wk3 1.6s ease-in-out;
}

@keyframes pigeon-classic-look-b-zfv01l0wk3 {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-12deg); }
    50% { transform: rotate(0deg); }
    75% { transform: rotate(12deg); }
}

/* Spin: an excited little 360 */
.pigeon-classic-pet.is-spinning .pigeon-classic[b-zfv01l0wk3] {
    animation: pigeon-classic-spin-b-zfv01l0wk3 0.7s ease-in-out;
}

@keyframes pigeon-classic-spin-b-zfv01l0wk3 {
    0% { transform: rotate(0deg) scale(1); }
    50% { transform: rotate(180deg) scale(1.08); }
    100% { transform: rotate(360deg) scale(1); }
}

/* Roam: triggered by a triple-click (see pet-roam.js) - wings keep flapping
   for as long as the pigeon is off flying around the page. */
.pigeon-classic-pet.is-roaming .pigeon-classic-wing--left[b-zfv01l0wk3] {
    animation: pigeon-classic-flap-left-b-zfv01l0wk3 0.22s ease-in-out infinite;
}

.pigeon-classic-pet.is-roaming .pigeon-classic-wing--right[b-zfv01l0wk3] {
    animation: pigeon-classic-flap-right-b-zfv01l0wk3 0.22s ease-in-out infinite;
}

.pigeon-classic-pet.is-roaming .pigeon-classic-body-group[b-zfv01l0wk3] {
    animation: pigeon-classic-lift-b-zfv01l0wk3 0.6s ease-in-out infinite;
}

/* Reduced motion: switch off every animation - idle and triggered alike (the
   triggered .pigeon-classic-pet.is-* rules are more specific, hence !important). */
@media (prefers-reduced-motion: reduce) {
    .pigeon-classic[b-zfv01l0wk3],
    .pigeon-classic *[b-zfv01l0wk3] {
        animation: none !important;
    }
}
/* /Components/Shared/PigeonPet.razor.rz.scp.css */
/* Aiguro pigeon desk pet - dev mode only. Sits just above the chat input. */

.pigeon-pet[b-qv54w7h44n] {
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    pointer-events: none;
    user-select: none;
}

.pigeon[b-qv54w7h44n] {
    width: 44px;
    height: 44px;
    pointer-events: auto;
    cursor: pointer;
    overflow: visible;
    transform-origin: 50% 90%;
}

/* ── Colours ── */
.pigeon-outline[b-qv54w7h44n] {
    fill: var(--pigeon-outline, #512D24);
}

.pigeon-head[b-qv54w7h44n] {
    fill: var(--pigeon-head, #7A9AC3);
}

.pigeon-belly[b-qv54w7h44n] {
    fill: var(--pigeon-belly, #9DA9B9);
}

.pigeon-chest[b-qv54w7h44n] {
    fill: var(--pigeon-chest, #768599);
}

.pigeon-belly-dark[b-qv54w7h44n] {
    fill: var(--pigeon-belly-dark, #7E869B);
}

.pigeon-wing[b-qv54w7h44n] {
    fill: var(--pigeon-wing, #576C83);
}

.pigeon-head-light[b-qv54w7h44n] {
    fill: var(--pigeon-head-light, #9AB6D4);
}

.pigeon-wing-dark[b-qv54w7h44n] {
    fill: var(--pigeon-wing-dark, #364459);
}

.pigeon-feet[b-qv54w7h44n] {
    fill: var(--pigeon-feet, #DA6B52);
}

.pigeon-wing-light[b-qv54w7h44n] {
    fill: var(--pigeon-wing-light, #7D8FA2);
}

.pigeon-white[b-qv54w7h44n] {
    fill: var(--pigeon-white, #F5F2E7);
}

.pigeon-beak-dark[b-qv54w7h44n] {
    fill: var(--pigeon-beak-dark, #F59130);
}

.pigeon-beak[b-qv54w7h44n] {
    fill: var(--pigeon-beak, #F9B73B);
}

/* Patches behind the moving parts - they fill the gap a part leaves behind
   when it swings away from the body. */
.pigeon-filler > *[b-qv54w7h44n] {
    stroke: var(--pigeon-outline, #512D24);
    stroke-width: 5;
}

.pigeon-shadow[b-qv54w7h44n] {
    fill: rgba(0, 0, 0, 0.12);
}

/* Origins below are in artwork (viewBox user) coordinates. */
.pigeon-body-group[b-qv54w7h44n],
.pigeon-part[b-qv54w7h44n] {
    transform-box: view-box;
}

.pigeon-body-group[b-qv54w7h44n] {
    transform-origin: 111px 302px;
    animation: pigeon-idle-bob-b-qv54w7h44n 3.2s ease-in-out infinite;
}

.pigeon-tuft[b-qv54w7h44n] {
    transform-origin: 108px 31px;
    animation: pigeon-tuft-idle-b-qv54w7h44n 3.2s ease-in-out infinite;
}

.pigeon-wing-left[b-qv54w7h44n] {
    transform-origin: 32px 146px;
}

.pigeon-wing-right[b-qv54w7h44n] {
    transform-origin: 190px 146px;
}

/* ── Idle: gentle breathing bob, a swaying head tuft and blinking (always on) ── */
.pigeon-eye[b-qv54w7h44n] {
    transform-box: fill-box;
    transform-origin: center;
    animation: pigeon-blink-b-qv54w7h44n 5.5s ease-in-out infinite;
}

@keyframes pigeon-idle-bob-b-qv54w7h44n {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(-4px) scaleY(1.012); }
}

@keyframes pigeon-tuft-idle-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-4deg); }
}

@keyframes pigeon-blink-b-qv54w7h44n {
    0%, 92%, 100% { transform: scaleY(1); }
    96% { transform: scaleY(0.1); }
}

/* ── Triggered animations (a JS timer toggles these classes at random times) ── */

/* Flap: wings beat, body lifts a touch */
.pigeon-pet.is-flapping .pigeon-wing-left[b-qv54w7h44n] {
    animation: pigeon-flap-left-b-qv54w7h44n 0.22s ease-in-out 4;
}

.pigeon-pet.is-flapping .pigeon-wing-right[b-qv54w7h44n] {
    animation: pigeon-flap-right-b-qv54w7h44n 0.22s ease-in-out 4;
}

.pigeon-pet.is-flapping .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-lift-b-qv54w7h44n 0.88s ease-in-out;
}

@keyframes pigeon-flap-left-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(38deg); }
}

@keyframes pigeon-flap-right-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-38deg); }
}

@keyframes pigeon-lift-b-qv54w7h44n {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-32px); }
}

/* Hop: a quick little jump with a squash-and-stretch */
.pigeon-pet.is-hopping .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-hop-b-qv54w7h44n 0.6s cubic-bezier(0.3, 0.7, 0.4, 1);
}

.pigeon-pet.is-hopping .pigeon-tuft[b-qv54w7h44n] {
    animation: pigeon-tuft-bounce-b-qv54w7h44n 0.6s ease-out;
}

@keyframes pigeon-hop-b-qv54w7h44n {
    0% { transform: translateY(0) scaleY(1); }
    20% { transform: translateY(0) scaleY(0.88); }
    55% { transform: translateY(-58px) scaleY(1.06); }
    80% { transform: translateY(0) scaleY(0.93); }
    100% { transform: translateY(0) scaleY(1); }
}

@keyframes pigeon-tuft-bounce-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    55% { transform: rotate(10deg); }
    80% { transform: rotate(-8deg); }
}

/* Peck: the whole bird bobs forward a couple of times */
.pigeon-pet.is-pecking .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-peck-b-qv54w7h44n 0.4s ease-in-out 2;
}

@keyframes pigeon-peck-b-qv54w7h44n {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(14px) scaleY(0.9); }
}

/* Look: tilt left, then right, curiously */
.pigeon-pet.is-looking .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-look-b-qv54w7h44n 1.6s ease-in-out;
}

@keyframes pigeon-look-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-9deg); }
    50% { transform: rotate(0deg); }
    75% { transform: rotate(9deg); }
}

/* Ruffle: the head tuft shakes out, wings give a short shiver */
.pigeon-pet.is-ruffling .pigeon-tuft[b-qv54w7h44n] {
    animation: pigeon-ruffle-tuft-b-qv54w7h44n 0.2s ease-in-out 5;
}

.pigeon-pet.is-ruffling .pigeon-wing-left[b-qv54w7h44n] {
    animation: pigeon-shiver-left-b-qv54w7h44n 0.2s ease-in-out 5;
}

.pigeon-pet.is-ruffling .pigeon-wing-right[b-qv54w7h44n] {
    animation: pigeon-shiver-right-b-qv54w7h44n 0.2s ease-in-out 5;
}

@keyframes pigeon-ruffle-tuft-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-16deg); }
    75% { transform: rotate(16deg); }
}

@keyframes pigeon-shiver-left-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(8deg); }
}

@keyframes pigeon-shiver-right-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-8deg); }
}

/* Coo: puffs up the chest, wings lifted a little, eyes half shut - content */
.pigeon-pet.is-cooing .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-puff-b-qv54w7h44n 1.8s ease-in-out;
}

.pigeon-pet.is-cooing .pigeon-wing-left[b-qv54w7h44n] {
    animation: pigeon-puff-wing-left-b-qv54w7h44n 1.8s ease-in-out;
}

.pigeon-pet.is-cooing .pigeon-wing-right[b-qv54w7h44n] {
    animation: pigeon-puff-wing-right-b-qv54w7h44n 1.8s ease-in-out;
}

.pigeon-pet.is-cooing .pigeon-eye[b-qv54w7h44n] {
    animation: pigeon-content-b-qv54w7h44n 1.8s ease-in-out;
}

@keyframes pigeon-puff-b-qv54w7h44n {
    0%, 100% { transform: scale(1, 1); }
    25%, 75% { transform: scale(1.08, 1.04); }
    50% { transform: scale(1.1, 1.05); }
}

@keyframes pigeon-puff-wing-left-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    25%, 75% { transform: rotate(10deg); }
}

@keyframes pigeon-puff-wing-right-b-qv54w7h44n {
    0%, 100% { transform: rotate(0deg); }
    25%, 75% { transform: rotate(-10deg); }
}

@keyframes pigeon-content-b-qv54w7h44n {
    0%, 100% { transform: scaleY(1); }
    25%, 75% { transform: scaleY(0.45); }
}

/* Spin: an excited little 360 */
.pigeon-pet.is-spinning .pigeon[b-qv54w7h44n] {
    animation: pigeon-spin-b-qv54w7h44n 0.7s ease-in-out;
}

@keyframes pigeon-spin-b-qv54w7h44n {
    0% { transform: rotate(0deg) scale(1); }
    50% { transform: rotate(180deg) scale(1.08); }
    100% { transform: rotate(360deg) scale(1); }
}

/* Roam: triggered by a triple-click (see pet-roam.js) - wings keep flapping
   for as long as the pigeon is off flying around the page. */
.pigeon-pet.is-roaming .pigeon-wing-left[b-qv54w7h44n] {
    animation: pigeon-flap-left-b-qv54w7h44n 0.22s ease-in-out infinite;
}

.pigeon-pet.is-roaming .pigeon-wing-right[b-qv54w7h44n] {
    animation: pigeon-flap-right-b-qv54w7h44n 0.22s ease-in-out infinite;
}

.pigeon-pet.is-roaming .pigeon-body-group[b-qv54w7h44n] {
    animation: pigeon-lift-b-qv54w7h44n 0.6s ease-in-out infinite;
}

/* Reduced motion: switch off every animation - idle and triggered alike (the
   triggered .pigeon-pet.is-* rules are more specific, hence !important). */
@media (prefers-reduced-motion: reduce) {
    .pigeon[b-qv54w7h44n],
    .pigeon *[b-qv54w7h44n] {
        animation: none !important;
    }
}
/* /Components/Shared/PotentialFactorRows.razor.rz.scp.css */
/* ── Structured calculation-detail rows (AIG-293) ──────────────
   Same row look as OpportunityDetail.razor's .opp-factor* rules - CSS-isolated per component, so
   the styling is duplicated here under its own class names rather than shared across files. */

.factor-rows[b-7pbuelm8ed] {
    display: flex;
    flex-direction: column;
    gap: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    overflow: hidden;
}

.factor-row[b-7pbuelm8ed] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem 0.6rem;
    padding: 0.5rem 0.6rem;
    background: var(--bs-body-bg);
}

.factor-row + .factor-row[b-7pbuelm8ed] {
    border-top: 1px solid var(--bs-border-color);
}

.factor-row--contested[b-7pbuelm8ed] {
    box-shadow: inset 3px 0 0 var(--bs-warning);
}

.factor-row-label[b-7pbuelm8ed] {
    flex: 1;
    min-width: 0;
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
}

.factor-row-value[b-7pbuelm8ed] {
    flex-shrink: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-secondary);
    font-variant-numeric: tabular-nums;
}

.factor-row-chip[b-7pbuelm8ed],
.factor-row-chip-wrap[b-7pbuelm8ed] {
    flex-shrink: 0;
}

.factor-row-note[b-7pbuelm8ed] {
    flex-basis: 100%;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

/* Before/after diff states (used in the history update view). */
.factor-row--removed[b-7pbuelm8ed] {
    background: color-mix(in srgb, var(--bs-danger) 10%, transparent);
}

.factor-row--removed .factor-row-value[b-7pbuelm8ed] {
    text-decoration: line-through;
    text-decoration-color: var(--bs-danger);
}

.factor-row--added[b-7pbuelm8ed] {
    background: color-mix(in srgb, var(--bs-success) 10%, transparent);
}
/* /Components/Shared/PotentialStatusBar.razor.rz.scp.css */
.status-bar-empty[b-7pvrc0l91h] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}
/* /Components/Shared/PotentialValueBadge.razor.rz.scp.css */
.potential-value[b-k0b2ppu6hz] {
    font-weight: 600;
    color: var(--bs-body-color);
    white-space: nowrap;
    cursor: default;
    font-variant-numeric: tabular-nums;
}

.potential-value--compact[b-k0b2ppu6hz] {
    font-size: var(--fs-base);
}

.potential-value--large[b-k0b2ppu6hz] {
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.01em;
}
/* /Components/Shared/ProposedUpdatesPanel.razor.rz.scp.css */
/* ── Proposed updates panel (in-chat per-field accept/decline, AIG-223) ── */

.proposed-updates[b-3p6rpxbq8k] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.75rem;
    background: var(--bs-card-bg);
    overflow: hidden;
}

.proposed-updates-header[b-3p6rpxbq8k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    border-bottom: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
}

.proposed-updates-avatar[b-3p6rpxbq8k] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
    font-size: var(--fs-xs);
}


.proposed-updates-body[b-3p6rpxbq8k] {
    display: flex;
    flex-direction: column;
    padding: 0.5rem 0.9rem;
}

.proposed-field[b-3p6rpxbq8k] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.65rem 0;
}

.proposed-field + .proposed-field[b-3p6rpxbq8k] {
    border-top: 1px solid var(--bs-border-color-translucent);
}

.proposed-field-head[b-3p6rpxbq8k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.proposed-field-label[b-3p6rpxbq8k] {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-secondary);
}

.proposed-field-actions[b-3p6rpxbq8k] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.proposed-icon-btn[b-3p6rpxbq8k] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border: none;
    border-radius: 50%;
    background: var(--bs-secondary-bg);
    color: var(--bs-secondary);
    font-size: var(--fs-sm);
    transition: background 0.15s ease, color 0.15s ease;
}

.proposed-icon-btn:hover:not(:disabled)[b-3p6rpxbq8k] {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

.proposed-icon-btn:disabled[b-3p6rpxbq8k] {
    opacity: 0.5;
}

.proposed-icon-btn--accept[b-3p6rpxbq8k] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

.proposed-icon-btn--accept:hover:not(:disabled)[b-3p6rpxbq8k] {
    background: var(--bs-success-border-subtle);
    color: var(--bs-success-text-emphasis);
}

.proposed-icon-btn--decline:hover:not(:disabled)[b-3p6rpxbq8k] {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

.proposed-field-state[b-3p6rpxbq8k] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: var(--fs-xs);
    font-weight: 600;
}

.proposed-field-state--accepted[b-3p6rpxbq8k] {
    color: var(--bs-success);
}

.proposed-field-state--declined[b-3p6rpxbq8k] {
    color: var(--bs-secondary);
}

/* Scalar values: "€ 820k → € 600k" with the old value struck through. */
.proposed-field-arrow[b-3p6rpxbq8k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.proposed-arrow-before[b-3p6rpxbq8k] {
    color: var(--bs-text-muted);
    text-decoration: line-through;
}

.proposed-arrow-after[b-3p6rpxbq8k] {
    color: var(--bs-body-color);
}

.proposed-field-arrow > .bi[b-3p6rpxbq8k] {
    color: var(--bs-secondary);
    font-size: var(--fs-sm);
}

/* Text fields: stacked BEFORE (neutral) / AFTER (accent) blocks. */
.proposed-diff[b-3p6rpxbq8k] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.6rem 0.75rem;
    border-radius: 0.5rem;
    border-left: 2px solid var(--bs-secondary);
    background: var(--bs-body-bg);
}

.proposed-diff--after[b-3p6rpxbq8k] {
    border-left-color: var(--bs-primary);
    background: var(--accent-blue-light);
}


.proposed-diff-text[b-3p6rpxbq8k] {
    font-size: var(--fs-sm);
    color: var(--bs-body-color);
    line-height: 1.5;
}

.proposed-diff-text[b-3p6rpxbq8k]  p:last-child,
.proposed-diff-text[b-3p6rpxbq8k]  ul:last-child {
    margin-bottom: 0;
}

.proposed-updates-footer[b-3p6rpxbq8k] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6rem 0.9rem;
    border-top: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
}

.proposed-footer-decline[b-3p6rpxbq8k],
.proposed-footer-undo[b-3p6rpxbq8k] {
    color: var(--bs-secondary);
    text-decoration: none;
}

.proposed-footer-decline:hover[b-3p6rpxbq8k],
.proposed-footer-undo:hover[b-3p6rpxbq8k] {
    color: var(--bs-body-color);
}

.proposed-updates-result[b-3p6rpxbq8k] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-secondary);
}

.proposed-updates-result--accepted[b-3p6rpxbq8k] {
    color: var(--bs-success);
}
/* /Components/Shared/QuickWinMatrix.razor.rz.scp.css */
.quick-win-empty[b-6yh4gp6xo2] {
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
    margin: 0;
}

.quick-win-chart[b-6yh4gp6xo2] {
    min-width: 0;
}

/* HTML legend for the confidence color coding - the chart's own legend cannot express
   per-point colors of a single dataset. */
.quick-win-legend[b-6yh4gp6xo2] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 1rem;
    margin-top: 0.75rem;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.quick-win-legend-item[b-6yh4gp6xo2] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--bs-body-color);
}

.quick-win-dot[b-6yh4gp6xo2] {
    width: 0.7rem;
    height: 0.7rem;
    flex-shrink: 0;
    stroke-width: 1.5;
}

/* The same palette and opacity steps as QuickWinMatrix.BubbleColor. */
.quick-win-dot--low[b-6yh4gp6xo2] {
    fill: rgba(var(--confidence-low-rgb), 0.2);
    stroke: rgb(var(--confidence-low-rgb));
}

.quick-win-dot--medium[b-6yh4gp6xo2] {
    fill: rgba(var(--confidence-medium-rgb), 0.2);
    stroke: rgb(var(--confidence-medium-rgb));
}

.quick-win-dot--high[b-6yh4gp6xo2] {
    fill: rgba(var(--confidence-high-rgb), 0.3);
    stroke: rgb(var(--confidence-high-rgb));
}
/* /Components/Shared/RangeSlider.razor.rz.scp.css */
/* Dual-thumb range slider. The two native inputs are transparent and overlaid; the
   visible track + fill are drawn by the divs underneath. */

.range-slider[b-6qpq9vp9u8] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.range-slider__track-wrap[b-6qpq9vp9u8] {
    position: relative;
    height: 1.25rem;
    display: flex;
    align-items: center;
}

.range-slider__track[b-6qpq9vp9u8] {
    position: absolute;
    left: 0;
    right: 0;
    height: 4px;
    border-radius: 2px;
    background: var(--bs-secondary-bg);
}

.range-slider__fill[b-6qpq9vp9u8] {
    position: absolute;
    height: 4px;
    border-radius: 2px;
    background: var(--bs-primary);
}

/* Native inputs: transparent everywhere except the thumb, stacked on top of the track. */
.range-slider__input[b-6qpq9vp9u8] {
    position: absolute;
    left: 0;
    right: 0;
    width: 100%;
    margin: 0;
    height: 1.25rem;
    background: none;
    pointer-events: none; /* re-enabled on the thumb so both thumbs stay grabbable */
    -webkit-appearance: none;
    appearance: none;
}

.range-slider__input--max[b-6qpq9vp9u8] {
    z-index: 4;
}

.range-slider__input[b-6qpq9vp9u8]::-webkit-slider-runnable-track {
    background: none;
    border: none;
}

.range-slider__input[b-6qpq9vp9u8]::-moz-range-track {
    background: none;
    border: none;
}

.range-slider__input[b-6qpq9vp9u8]::-webkit-slider-thumb {
    pointer-events: auto;
    -webkit-appearance: none;
    appearance: none;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--bs-bg-card);
    border: 2px solid var(--bs-primary);
    cursor: pointer;
    box-shadow: var(--bs-box-shadow-sm);
}

.range-slider__input[b-6qpq9vp9u8]::-moz-range-thumb {
    pointer-events: auto;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--bs-bg-card);
    border: 2px solid var(--bs-primary);
    cursor: pointer;
    box-shadow: var(--bs-box-shadow-sm);
}

.range-slider__input:focus-visible[b-6qpq9vp9u8]::-webkit-slider-thumb {
    outline: 2px solid var(--bs-primary);
    outline-offset: 2px;
}

.range-slider__ends[b-6qpq9vp9u8] {
    display: flex;
    justify-content: space-between;
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

/* Currently selected range - centered below the bar, in the slider's blue. */
.range-slider__selected[b-6qpq9vp9u8] {
    text-align: center;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--bs-primary);
}
/* /Components/Shared/SearchBox.razor.rz.scp.css */
/* Reusable search box - rounded input with search icon */

.search-box[b-05wmc4djt2] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius, 0.5rem);
    background: var(--bs-bg-card);
    line-height: 1.5;
    transition: border-color 0.15s, box-shadow 0.15s;
    width: 100%;
}

/* Small - matches btn-sm */
.search-box-sm[b-05wmc4djt2] {
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
}

.search-box:focus-within[b-05wmc4djt2] {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent-blue, var(--accent-blue-light)) 15%, transparent);
}

.search-box-icon[b-05wmc4djt2] {
    font-size: 0.875rem;
    color: var(--bs-text-muted);
    flex-shrink: 0;
}

.search-box-input[b-05wmc4djt2] {
    border: none;
    background: transparent;
    font-size: inherit;
    font-family: inherit;
    color: var(--bs-body-color);
    padding: 0;
    margin: 0;
    outline: none;
    width: 100%;
}

.search-box-input[b-05wmc4djt2]::placeholder {
    color: var(--bs-text-muted);
}

/* Clear (X) button - only shown when input has a value */
.search-box-clear[b-05wmc4djt2] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: var(--bs-text-muted);
    padding: 0;
    margin: 0;
    cursor: pointer;
    flex-shrink: 0;
    font-size: 0.875rem;
    line-height: 1;
    border-radius: var(--bs-border-radius-sm, 0.25rem);
    transition: color 0.15s;
}

.search-box-clear:hover[b-05wmc4djt2],
.search-box-clear:focus-visible[b-05wmc4djt2] {
    color: var(--bs-body-color);
}

.search-box-clear:focus-visible[b-05wmc4djt2] {
    outline: 2px solid var(--bs-primary);
    outline-offset: 1px;
}

/* Regular - matches default btn height */
.search-box-regular[b-05wmc4djt2] {
    padding: 0.375rem 0.75rem;
    font-size: 1rem;
}
/* /Components/Shared/SectionCard.razor.rz.scp.css */
.section-card[b-o53o7e74e3] {
    flex-shrink: 0;
}

/* ── Header ────────────────────────────────────────────────── */
.section-card-header[b-o53o7e74e3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* Long titles plus header actions (e.g. the foundation card's status select + confidence
       badge) must wrap instead of overflowing the card in narrow columns. */
    flex-wrap: wrap;
    gap: 0.35rem 1rem;
    padding: 0.85rem 1.1rem;
    user-select: none;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-top-left-radius: 0.6rem;
    border-top-right-radius: 0.6rem;
}

.section-card-header--divided[b-o53o7e74e3] {
    border-bottom: 1px solid var(--bs-border-color);
}

.section-card-header--collapsed.section-card-header--divided[b-o53o7e74e3] {
    border-bottom: none;
}

.section-card-header[role="button"][b-o53o7e74e3] {
    cursor: pointer;
}

.section-card-header[role="button"]:hover[b-o53o7e74e3] {
    /* --bg-hover is not defined in the app styles, so the light-gray secondary background is the
       effective hover tint (theme-aware via Bootstrap). */
    background: var(--bg-hover, var(--bs-secondary-bg));
}

.section-card-header--collapsed[role="button"]:hover[b-o53o7e74e3] {
    border-radius: 0.6rem;
    border: none
}


.section-card-header-text[b-o53o7e74e3] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.section-card-header-edit-button[b-o53o7e74e3] {
    opacity: 0;
    transition: opacity 0.15s ease;
}

.section-card-header:hover .section-card-header-edit-button[b-o53o7e74e3],
.section-card-header-edit-button:focus[b-o53o7e74e3] {
    opacity: 1;
}

/* ── Header actions (badges/buttons on the right) ──────────── */
.section-card-header-actions[b-o53o7e74e3] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    /* Keeps the actions right-aligned when the header wraps onto multiple lines. */
    margin-left: auto;
}

/* ── Chevron indicator ─────────────────────────────────────── */
.section-card-chevron[b-o53o7e74e3] {
    font-size: 0.75rem;
    color: var(--bs-text-muted);
    transition: transform 0.2s ease;
}

.section-card--collapsed .section-card-chevron[b-o53o7e74e3] {
    transform: rotate(-90deg);
}

/* ── Body ──────────────────────────────────────────────────── */
.section-card-body[b-o53o7e74e3] {
    padding: 1.1rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
/* /Components/Shared/SegmentedControl.razor.rz.scp.css */
.segmented-control__option--active[b-iaztbvogct] {
    background: var(--bs-bg-card);
    color: var(--bs-body-color);
    font-weight: 600;
    box-shadow: var(--bs-box-shadow-sm);
}
/* /Components/Shared/SnackbarHost.razor.rz.scp.css */
/* Fixed container, bottom-right, stacking newest below. Sits above modals (Bootstrap modal z-index 1055). */
.snackbar-host[b-s7c4yvn7qb] {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 1100;
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: min(380px, calc(100vw - 40px));
    pointer-events: none;
}

/* Colours, background, and border come from Bootstrap's .alert .alert-{type}. We only add the
   toast layout (flex row), drop the alert's default bottom margin (the host uses gap), and lift
   it off the page with a shadow plus a subtle entrance animation. */
.snackbar[b-s7c4yvn7qb] {
    pointer-events: auto;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 0;
    box-shadow: var(--bs-box-shadow-lg);
    animation: snackbar-in-b-s7c4yvn7qb 180ms ease-out;
}

.snackbar-icon[b-s7c4yvn7qb] {
    flex-shrink: 0;
    line-height: inherit;
}

.snackbar-text[b-s7c4yvn7qb] {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}

/* .alert-link supplies the weight and colour; we only reset the button chrome and lay out the icon. */
.snackbar-action[b-s7c4yvn7qb] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
    white-space: nowrap;
}

/* .btn-close supplies the icon and sizing; we only stop it from stretching in the flex row. */
.snackbar-close[b-s7c4yvn7qb] {
    flex-shrink: 0;
}

@keyframes snackbar-in-b-s7c4yvn7qb {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .snackbar[b-s7c4yvn7qb] {
        animation: none;
    }
}
/* /Components/Shared/SourceBadge.razor.rz.scp.css */
.source-badge[b-49fgsxxxly] {
    display: inline-block;
    font-size: var(--fs-xs);
    font-weight: 500;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    white-space: nowrap;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-text-muted);
}

/* Validated - document-backed or user-confirmed (green) */
.source-badge--validated[b-49fgsxxxly] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

/* Benchmark & estimated - soft, not yet validated (yellow) */
.source-badge--benchmark[b-49fgsxxxly],
.source-badge--estimated[b-49fgsxxxly] {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}
/* /Components/Shared/StatusBadge.razor.rz.scp.css */
.status-badge[b-w5keomou6g] {
    display: inline-block;
    font-size: var(--fs-xs);
    font-weight: 500;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    white-space: nowrap;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary);
}

/* Draft - neutral */
.status-badge--draft[b-w5keomou6g] {
    color: var(--bs-text-muted);
    background-color: var(--bs-secondary-bg);
}

/* In Progress - blue */
.status-badge--inprogress[b-w5keomou6g] {
    background: var(--accent-blue-light);
    color: var(--bs-primary);
}

/* On Hold - amber */
.status-badge--onhold[b-w5keomou6g] {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}

/* Confirmed - green */
.status-badge--confirmed[b-w5keomou6g] {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}
/* /Components/Shared/Tooltip.razor.rz.scp.css */
/* The bubble itself is styled globally via the shared [data-tooltip] rules in app.css.
   This wrapper only needs to size to its content and carry the hover target for a (possibly
   disabled) wrapped control. */
.blaze-tooltip[b-z844mh5yk0] {
    display: inline-flex;
    align-items: center;
}

/* The wrapped control is disabled - signal it on the wrapper, which still receives pointer events. */
.blaze-tooltip--disabled[b-z844mh5yk0] {
    cursor: not-allowed;
}
/* /Components/Shared/ValuedeskConnected.razor.rz.scp.css */
/* Compact variant shown when the sidebar is collapsed: a single logo tile
   linking to the MCP servers page, with a status dot in the corner. */
.valuedesk-collapsed-link[b-vpmz34961k] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin: 0 auto 12px;
    border-radius: var(--bs-border-radius-lg);
    text-decoration: none;
    transition: filter 0.15s ease;
}

.valuedesk-collapsed-link:hover[b-vpmz34961k],
.valuedesk-collapsed-link:focus-visible[b-vpmz34961k] {
    filter: brightness(0.95);
}

.valuedesk-collapsed-link.connected[b-vpmz34961k] {
    background: var(--accent-blue-light);
    color: var(--bs-primary-text-emphasis);
}

.valuedesk-collapsed-link.disconnected[b-vpmz34961k] {
    background: var(--bs-secondary-bg);
    color: var(--bs-text-muted);
}

.valuedesk-collapsed-logo[b-vpmz34961k] {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.valuedesk-collapsed-logo svg[b-vpmz34961k] {
    width: 24px;
    height: 24px;
}

.valuedesk-collapsed-dot[b-vpmz34961k] {
    position: absolute;
    right: 5px;
    bottom: 5px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.valuedesk-collapsed-dot.active[b-vpmz34961k] {
    background: var(--bs-success);
}

.valuedesk-collapsed-dot.inactive[b-vpmz34961k] {
    background: var(--bs-text-muted);
}

[data-bs-theme="dark"] .valuedesk-collapsed-link.disconnected[b-vpmz34961k] {
    background: var(--bs-tertiary-bg);
}

.valuedesk-connected-box[b-vpmz34961k] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
    margin-left: 8px;
    margin-right: 8px;
    margin-bottom: 12px;
    border: 0;
    border-radius: var(--bs-border-radius-lg);
    background: var(--accent-blue-light);
    min-height: 132px;
    justify-content: space-between;
    transition: all 0.15s ease;
}

.valuedesk-connected-box.connected[b-vpmz34961k] {
    background: var(--accent-blue-light);
    border: 0;
    /* No Connect button in this state, so don't reserve its height. */
    min-height: auto;
}

.valuedesk-connected-box.disconnected[b-vpmz34961k] {
    background: var(--bs-secondary-bg);
    border: 0;
}

.valuedesk-content[b-vpmz34961k] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.valuedesk-settings-link[b-vpmz34961k] {
    flex-shrink: 0;
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: var(--bs-border-radius-sm);
    color: var(--bs-text-muted);
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
    transition: color 0.15s ease, background-color 0.15s ease;
}

.valuedesk-settings-link:hover[b-vpmz34961k],
.valuedesk-settings-link:focus-visible[b-vpmz34961k] {
    background: color-mix(in srgb, currentColor 12%, transparent);
    text-decoration: none;
}

.valuedesk-connected-box.connected .valuedesk-settings-link[b-vpmz34961k] {
    color: var(--bs-primary-text-emphasis);
}

.valuedesk-connected-box.disconnected .valuedesk-settings-link[b-vpmz34961k] {
    color: var(--bs-text-muted);
}

.valuedesk-logo[b-vpmz34961k] {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--bs-primary-text-emphasis);
    transition: color 0.15s ease;
}

.valuedesk-connected-box.connected[b-vpmz34961k]  {
    color: var(--bs-primary-text-emphasis);
}

.valuedesk-connected-box.disconnected[b-vpmz34961k]  {
    color: var(--bs-text-muted);
    opacity: 0.85;
}

.valuedesk-text[b-vpmz34961k] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.valuedesk-title[b-vpmz34961k] {
    margin: 0;
    font-size: var(--fs-md);
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--bs-body-color);
    transition: color 0.15s ease;
}

.valuedesk-connected-box.connected .valuedesk-title[b-vpmz34961k] {
    color: var(--bs-primary-text-emphasis);
}

.valuedesk-connected-box.disconnected .valuedesk-title[b-vpmz34961k] {
    color: var(--bs-secondary);
}

.status-indicator[b-vpmz34961k] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: var(--fs-sm);
    font-weight: 500;
    min-height: 20px;
}

.status-indicator.active[b-vpmz34961k] {
    color: var(--bs-success);
    font-weight: 500;
}

.status-indicator.inactive[b-vpmz34961k] {
    color: var(--bs-text-muted);
    opacity: 1;
}

.status-text[b-vpmz34961k] {
    white-space: nowrap;
    min-width: 13ch;
}

.status-dot[b-vpmz34961k] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

.status-indicator.active .status-dot[b-vpmz34961k] {
    background: var(--bs-success-border-subtle);
}

.status-indicator.inactive .status-dot[b-vpmz34961k] {
    background: var(--bs-text-muted);
}

.connect-btn[b-vpmz34961k] {
    width: 100%;
    min-height: 40px;
    font-size: var(--fs-sm);
    font-weight: 500;
    white-space: nowrap;
}


.connect-btn:active[b-vpmz34961k] {
    transform: scale(0.98);
}

[data-bs-theme="dark"] .valuedesk-connected-box[b-vpmz34961k] {
    background: rgba(91, 164, 230, 0.14);
}

[data-bs-theme="dark"] .valuedesk-connected-box.connected[b-vpmz34961k] {
    background: rgba(91, 164, 230, 0.18);
}

[data-bs-theme="dark"] .valuedesk-connected-box.disconnected[b-vpmz34961k] {
    background: var(--bs-tertiary-bg);
}

[data-bs-theme="dark"] .status-indicator.inactive[b-vpmz34961k] {
    opacity: 1;
}
/* /Components/Shared/WorkspaceCutGuide.razor.rz.scp.css */
.workspace-cut-guide-rules li + li[b-ze89anpz7i] {
    margin-top: .25rem;
}
/* /Components/Shared/WorkspaceKnowledgeGraphDrawer.razor.rz.scp.css */
.kg-drawer-body[b-31ihek1qi0] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-height: 0;
}

.kg-drawer-muted[b-31ihek1qi0] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.kg-drawer-footer[b-31ihek1qi0] {
    margin-top: auto;
    padding-top: 0.5rem;
    border-top: 1px solid var(--bs-border-color);
}
/* /Components/Shared/WorkspaceKnowledgeGraphPreview.razor.rz.scp.css */
.kg-preview-status[b-uluwzf4gfl] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-height: 6rem;
}

.kg-preview-muted[b-uluwzf4gfl] {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--bs-text-muted);
}

.kg-preview-empty[b-uluwzf4gfl] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 6rem;
    text-align: center;
}
/* /Components/Shared/WorkspaceKnowledgeTile.razor.rz.scp.css */
/* Numbers left, optional graph right; stacks on narrow screens. */
.home-knowledge-body[b-idv0urgmvk] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(16rem, 1.4fr);
    gap: 1.5rem;
    align-items: start;
}

.home-knowledge-body--stats-only[b-idv0urgmvk] {
    grid-template-columns: 1fr;
}

.home-knowledge-grid[b-idv0urgmvk] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
    gap: 1rem 1.5rem;
}

.home-knowledge-stat[b-idv0urgmvk] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    text-decoration: none;
    color: inherit;
    border-radius: var(--bs-border-radius);
}

a.home-knowledge-stat:hover .home-knowledge-label[b-idv0urgmvk] {
    color: var(--bs-body-color);
}

.home-knowledge-value[b-idv0urgmvk] {
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1;
    color: var(--bs-body-color);
}

.home-knowledge-delta[b-idv0urgmvk] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.home-knowledge-delta.is-up[b-idv0urgmvk] {
    color: var(--bs-success);
}

.home-knowledge-label[b-idv0urgmvk] {
    font-size: var(--fs-xs);
    color: var(--bs-text-muted);
}

.home-knowledge-graph[b-idv0urgmvk] {
    min-width: 0;
}

@media (max-width: 900px) {
    .home-knowledge-body[b-idv0urgmvk] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/WorkspaceMultiPicker.razor.rz.scp.css */
/* Layout only - colours and the chip pattern come from Bootstrap and .filter-chip in _app-styles.scss. */

.workspace-picker__list[b-youwyrqk3x] {
    max-height: 14rem;
    overflow-y: auto;
    padding: 0.375rem 0.5rem;
}

.workspace-picker__item[b-youwyrqk3x],
.workspace-picker__item label[b-youwyrqk3x] {
    min-width: 0;
}

.workspace-picker__chip-label[b-youwyrqk3x] {
    display: inline-block;
    max-width: 14rem;
}

.workspace-picker__badge[b-youwyrqk3x] {
    flex-shrink: 0;
    font-weight: 500;
}
/* /Components/Shared/WorkspaceOutcomeList.razor.rz.scp.css */
.workspace-outcomes__list[b-6o2lo19xga] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.workspace-outcomes__item[b-6o2lo19xga] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
}

.workspace-outcomes__icon[b-6o2lo19xga] {
    flex-shrink: 0;
    line-height: 1.5;
}

.workspace-outcomes__body[b-6o2lo19xga] {
    min-width: 0;
}

.workspace-outcomes__name[b-6o2lo19xga] {
    font-weight: 500;
    overflow-wrap: anywhere;
}
