/* /Components/Assistant/AssistantChatWidget.razor.rz.scp.css */
.assistant-widget[b-58jj6ft8b5] {
    position: relative;
    /* Above .upload-widget (95) so the drawer covers upload FAB; below upload modal backdrop (120). */
    z-index: 100;
}

/*
 * The legacy corner launcher is no longer rendered (the entry point lives in
 * the top app bar via <AssistantTriggerButton />). The class is kept defined
 * so any third-party stylesheet override the team had stays a no-op.
 */
.assistant-widget__launcher[b-58jj6ft8b5] {
    display: none;
}

/*
 * Right-side drawer. Anchored to the right edge, full viewport height, slides
 * in from off-canvas. Designed to coexist with the page (the user can keep
 * reading documents while chatting). On narrow viewports it falls back to a
 * full-bleed sheet so the composer stays usable on mobile.
 */
.assistant-widget__panel[b-58jj6ft8b5] {
    position: fixed;
    top: env(safe-area-inset-top, 0px);
    right: env(safe-area-inset-right, 0px);
    bottom: env(safe-area-inset-bottom, 0px);
    box-sizing: border-box;
    /*
     * Width + sidebar column are CSS variables so the resize-handle
     * JS module (in this component's .razor.js) can write user-chosen
     * widths to localStorage and re-apply them on subsequent loads
     * without round-tripping through Blazor. The defaults below match
     * the original fixed values so the unresized look is unchanged.
     */
    width: min(
        var(--assistant-panel-width, 36rem),
        calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px))
    );
    max-width: calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px));
    height: auto;
    max-height: none;
    /*
     * min-height: 0 is required so the grid track below can actually
     * shrink under its content. Without it the grid row's intrinsic
     * minimum is the content's height, which pushes the composer past
     * the visible area where overflow: hidden then clips it.
     */
    min-height: 0;
    min-width: 0;
    display: grid;
    /*
     * Three columns: sidebar | inner-resize-handle (6px) | main.
     * minmax(0, 1fr) on the main column (matching the fullscreen
     * variant below) lets the messages list scroll instead of forcing
     * the grid to grow with its content. 1fr alone uses an `auto`
     * minimum, which is what was clipping the composer.
     */
    grid-template-columns: var(--assistant-sidebar-width, 13rem) 6px minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    overflow: hidden;
    border: 0;
    border-left: 1px solid var(--border);
    border-radius: 0;
    background: var(--surface);
    box-shadow: -24px 0 60px rgb(0 0 0 / 0.45);
    color: var(--text);
    z-index: 2;
    animation: assistant-drawer-slide-in-b-58jj6ft8b5 var(--transition-fast, 180ms) ease-out;
}

@keyframes assistant-drawer-slide-in-b-58jj6ft8b5 {
    from {
        transform: translateX(100%);
    }
    to {
        transform: translateX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .assistant-widget__panel[b-58jj6ft8b5] {
        animation: none;
    }
}

@media (max-width: 48rem) {
    .assistant-widget__panel[b-58jj6ft8b5] {
        /*
         * Force-clear the persisted widths on narrow viewports — the
         * floating drawer becomes a full-bleed sheet and there's
         * nowhere to drag to. The handles themselves are also
         * display: none below.
         */
        width: auto !important;
        max-width: none;
        grid-template-columns: minmax(0, 1fr);
        border-left: 0;
        box-shadow: 0 -24px 60px rgb(0 0 0 / 0.45);
    }
}

.assistant-widget:not(.assistant-widget--fullscreen) .assistant-widget__context-rail[b-58jj6ft8b5] {
    display: none;
}

.assistant-widget--fullscreen[b-58jj6ft8b5] {
    position: relative;
    z-index: 1;
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-self: stretch;
}

.assistant-widget--fullscreen .assistant-widget__launcher[b-58jj6ft8b5] {
    display: none;
}

.assistant-widget--fullscreen .assistant-widget__panel[b-58jj6ft8b5] {
    position: relative;
    inset: auto;
    right: auto;
    bottom: auto;
    width: 100%;
    max-width: 100%;
    flex: 1;
    min-height: 0;
    min-width: 0;
    max-height: none;
    height: 100%;
    border-radius: 0;
    border: none;
    box-shadow: none;
    grid-template-columns: minmax(12rem, 14rem) minmax(0, 1fr) minmax(11rem, 17rem);
}

/*
 * Narrow laptop widths: when the assistant is rendered in split view the
 * outer grid takes ~half the viewport, which leaves the inner 3-column
 * fullscreen grid (history | chat | context rail) too cramped. Hide the
 * right-side context rail until we have room for it; sources are still
 * reachable via citations inside chat messages.
 *
 * Threshold chosen from the user-reported problem zone: 1024-1440px laptops.
 * Above 1280px the 3-column layout has breathing room again.
 */
@media (min-width: 48.001rem) and (max-width: 80rem) {
    .assistant-widget--fullscreen .assistant-widget__panel[b-58jj6ft8b5] {
        grid-template-columns: minmax(12rem, 14rem) minmax(0, 1fr);
    }

    .assistant-widget--fullscreen .assistant-widget__context-rail[b-58jj6ft8b5] {
        display: none;
    }
}

.assistant-widget__panel--focus-mode[b-58jj6ft8b5] {
    grid-template-columns: minmax(0, 1fr) !important;
}

.assistant-widget__panel--focus-mode .assistant-widget__sidebar[b-58jj6ft8b5],
.assistant-widget__panel--focus-mode .assistant-widget__context-rail[b-58jj6ft8b5] {
    display: none !important;
}

/*
 * Focus mode collapses the grid to a single column, so the inner
 * sidebar/main divider has nothing to divide. Keep the outer panel
 * resize handle (focus mode still benefits from outer width control).
 */
.assistant-widget__panel--focus-mode .assistant-widget__resize-handle--inner[b-58jj6ft8b5] {
    display: none !important;
}

/*
 * Resize handles. Two of them on the floating drawer:
 *   --outer: thin vertical strip on the LEFT edge of the panel.
 *            Drag left = wider drawer, drag right = narrower. The
 *            panel is anchored to the viewport's right edge so the
 *            outer width grows leftward; the JS handler inverts the
 *            pointer delta accordingly.
 *   --inner: lives in its own 6px grid track between the sidebar and
 *            the main column. Drag right = wider sidebar.
 *
 * Both handles are <button role="separator"> so screen-reader users
 * can announce them and keyboard users can nudge with arrow keys
 * (Shift+arrow for a coarser step). The visual hit area is widened
 * via padding-inline + negative margin so the handle is easy to grab
 * without bloating the resting layout. Background only paints on
 * hover/focus to keep the edge invisible at rest.
 */
.assistant-widget__resize-handle[b-58jj6ft8b5] {
    appearance: none;
    border: 0;
    margin: 0;
    padding: 0;
    background: transparent;
    cursor: ew-resize;
    transition: background-color var(--transition-fast, 180ms);
    touch-action: none;
}

.assistant-widget__resize-handle:hover[b-58jj6ft8b5],
.assistant-widget__resize-handle:focus-visible[b-58jj6ft8b5] {
    background-color: var(--accent-soft, rgb(94 234 212 / 0.18));
    outline: none;
}

.assistant-widget__resize-handle--outer[b-58jj6ft8b5] {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 6px;
    z-index: 4;
}

.assistant-widget__resize-handle--inner[b-58jj6ft8b5] {
    /*
     * Already sized via the panel's grid-template-columns 6px track.
     * Stretch to fill that track on both axes.
     */
    width: 100%;
    height: 100%;
    align-self: stretch;
    justify-self: stretch;
}

/*
 * While dragging, freeze the document cursor + disable text-selection
 * so the user doesn't accidentally select chat content / input text.
 * The body class is added/removed by the JS handler.
 */
body.assistant-widget--resizing[b-58jj6ft8b5],
body.assistant-widget--resizing *[b-58jj6ft8b5] {
    user-select: none !important;
    cursor: ew-resize !important;
}

/*
 * Resize is meaningless when the assistant is fullscreen (it's
 * already filling the viewport) or when the drawer is rendered as a
 * full-bleed mobile sheet (no edge to grab).
 */
.assistant-widget--fullscreen .assistant-widget__resize-handle[b-58jj6ft8b5] {
    display: none;
}

@media (max-width: 48rem) {
    .assistant-widget__resize-handle[b-58jj6ft8b5] {
        display: none;
    }
}

.assistant-widget__focus-toggle[b-58jj6ft8b5] {
    flex-shrink: 0;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.35rem 0.65rem;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast),
                color var(--transition-fast);
}

.assistant-widget__focus-toggle:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    border-color: color-mix(in srgb, var(--accent-ai), var(--border) 55%);
    color: var(--text);
}

.assistant-widget__welcome[b-58jj6ft8b5] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 0 2rem;
}

.assistant-widget__welcome-card[b-58jj6ft8b5] {
    max-width: 26rem;
    text-align: center;
    padding: 1.5rem 1.25rem;
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 70%);
    border-radius: 1rem;
    background: linear-gradient(
        165deg,
        color-mix(in srgb, var(--surface), var(--accent-ai) 6%) 0%,
        var(--elevated) 100%
    );
}

.assistant-widget__welcome-icon[b-58jj6ft8b5] {
    display: inline-flex;
    width: 2.5rem;
    height: 2.5rem;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--accent-ai);
    color: #0e1116;
    font-weight: 800;
    margin-bottom: 0.75rem;
}

.assistant-widget__welcome-title[b-58jj6ft8b5] {
    margin: 0 0 0.45rem;
    font-size: 1.05rem;
    font-weight: 700;
}

.assistant-widget__welcome-copy[b-58jj6ft8b5] {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.88rem;
    line-height: 1.55;
}

.assistant-widget__context-rail[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    background: color-mix(in srgb, var(--canvas), var(--surface) 35%);
    border-left: 1px solid var(--border);
    overflow: hidden;
    /* min-height: 0 lets the inner scrollable .assistant-widget__context-body
     * actually shrink instead of forcing the grid track wider than 100% of
     * the panel — without this the rail can push the page into scroll. */
    min-height: 0;
}

.assistant-widget__context-header[b-58jj6ft8b5] {
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.assistant-widget__context-heading[b-58jj6ft8b5] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-tertiary);
}

.assistant-widget__context-scope[b-58jj6ft8b5] {
    font-size: 0.78rem;
    color: var(--accent-ai);
    font-weight: 500;
}

.assistant-widget__context-body[b-58jj6ft8b5] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    /* Wheel/touchpad scroll inside the rail must NOT bubble out to the page
     * once the rail hits its top/bottom — otherwise the page scrolls when the
     * user is just trying to read sources. */
    overscroll-behavior: contain;
    padding: 0.65rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.assistant-widget__context-empty[b-58jj6ft8b5] {
    margin: 0;
    padding: 0.5rem;
    color: var(--text-tertiary);
    font-size: 0.8rem;
    line-height: 1.45;
}

.assistant-widget__context-card[b-58jj6ft8b5] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.65rem 1.85rem 0.65rem 0.65rem;
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    background: var(--elevated);
    color: inherit;
    text-decoration: none;
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.assistant-widget__context-card:hover[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--accent-ai), var(--border) 40%);
    background: color-mix(in srgb, var(--elevated), var(--accent-ai) 5%);
}

.assistant-widget__context-card-title[b-58jj6ft8b5] {
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--text);
}

.assistant-widget__context-card-meta[b-58jj6ft8b5] {
    font-size: 0.72rem;
    color: var(--text-tertiary);
    line-height: 1.3;
}

.assistant-widget__context-card-external[b-58jj6ft8b5] {
    position: absolute;
    top: 0.45rem;
    right: 0.45rem;
    color: var(--text-tertiary);
}

.assistant-widget__composer-note[b-58jj6ft8b5] {
    margin: 0;
    padding: 0 1rem 0.55rem;
    font-size: 0.68rem;
    color: var(--text-tertiary);
    line-height: 1.35;
}

.assistant-widget__sidebar[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    background: var(--canvas);
    border-right: 1px solid var(--border);
    overflow: hidden;
    /* Same reason as the context rail: ensure the history list scrolls inside
     * the sidebar instead of forcing the outer panel taller. */
    min-height: 0;
}

.assistant-widget__sidebar-header[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 1rem;
    border-bottom: 1px solid var(--border);
}

.assistant-widget__sidebar-close[b-58jj6ft8b5] {
    display: none;
    width: 2.25rem;
    height: 2.25rem;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 1.35rem;
    line-height: 1;
    padding: 0;
}

.assistant-widget__sidebar-close:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
}

.assistant-widget__brand[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 700;
    font-size: 1rem;
}

.assistant-widget__brand-icon[b-58jj6ft8b5] {
    width: 1.75rem;
    height: 1.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--accent-ai);
    color: #0e1116;
    font-size: 0.85rem;
    font-weight: 800;
}

.assistant-widget__new-chat[b-58jj6ft8b5] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.75rem;
    margin-bottom: 0;
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    background: var(--elevated);
    color: var(--text);
    cursor: pointer;
    font: inherit;
    font-weight: 500;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast);
}

.assistant-widget__new-chat:hover[b-58jj6ft8b5] {
    background: color-mix(in srgb, var(--elevated), #ffffff 5%);
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
}

.assistant-widget__new-chat:disabled[b-58jj6ft8b5] {
    cursor: not-allowed;
    opacity: 0.5;
}

.assistant-widget__history-section[b-58jj6ft8b5] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 0.75rem;
}

.assistant-widget__history-label[b-58jj6ft8b5] {
    color: var(--text-tertiary);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.5rem 0.5rem 0.35rem;
    margin-top: 0.5rem;
}

.assistant-widget__history-label:first-child[b-58jj6ft8b5] {
    margin-top: 0;
}

.assistant-widget__history-list[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.assistant-widget__history-button[b-58jj6ft8b5] {
    width: 100%;
    border: none;
    border-radius: 0.5rem;
    background: transparent;
    color: var(--text);
    cursor: pointer;
    display: block;
    font: inherit;
    font-size: 0.875rem;
    padding: 0.55rem 0.6rem;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: background-color var(--transition-fast);
}

.assistant-widget__history-button:hover[b-58jj6ft8b5] {
    background: var(--elevated);
}

.assistant-widget__history-button--active[b-58jj6ft8b5] {
    background: var(--elevated);
}

.assistant-widget__history-button:disabled[b-58jj6ft8b5] {
    cursor: not-allowed;
    opacity: 0.5;
}

.assistant-widget__history-note[b-58jj6ft8b5] {
    color: var(--text-tertiary);
    font-size: 0.85rem;
    padding: 0.5rem;
}

.assistant-widget__main[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    /*
     * Required so the inner flex child (.assistant-widget__messages) can
     * actually shrink and become scrollable instead of expanding to fit all
     * messages — without min-height:0 the column grows past its container
     * and pushes the composer off-screen.
     */
    min-height: 0;
    min-width: 0;
}

.assistant-widget__header[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.65rem 0.85rem;
    border-bottom: 1px solid var(--border);
    min-height: 3rem;
    flex-wrap: nowrap;
}

.assistant-widget__header-left[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
}

.assistant-widget__header-right[b-58jj6ft8b5] {
    flex-shrink: 0;
}

.assistant-widget__title[b-58jj6ft8b5] {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.assistant-widget__scope[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 1;
    min-width: 0;
    max-width: 100%;
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 60%);
    border-radius: 999px;
    background: rgba(79, 209, 197, 0.08);
    color: var(--accent-ai);
    font-size: 0.72rem;
    font-weight: 500;
    line-height: 1.1;
    padding: 0.25rem 0.6rem;
    overflow: hidden;
}

.assistant-widget__scope-icon[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 0.85rem;
    height: 0.85rem;
    color: currentColor;
    flex-shrink: 0;
}

.assistant-widget__scope-eyebrow[b-58jj6ft8b5] {
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 0.62rem;
    font-weight: 600;
    color: color-mix(in srgb, currentColor, var(--text) 30%);
    flex-shrink: 0;
}

.assistant-widget__scope-text[b-58jj6ft8b5] {
    color: var(--text);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/*
 * Wrapper holds the trigger button + the absolutely-positioned dropdown
 * menu. The button's hover/focus states need a stable parent for the
 * menu to anchor against, even when the chip text is short.
 */
.assistant-widget__scope-wrap[b-58jj6ft8b5] {
    position: relative;
    display: inline-flex;
    align-items: center;
    min-width: 0;
    max-width: 100%;
}

.assistant-widget__scope--button[b-58jj6ft8b5] {
    cursor: pointer;
    font: inherit;
    line-height: inherit;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast);
}

.assistant-widget__scope--button:hover[b-58jj6ft8b5],
.assistant-widget__scope--button:focus-visible[b-58jj6ft8b5] {
    background: color-mix(in srgb, var(--accent-ai), transparent 84%);
    border-color: var(--accent-ai);
    outline: none;
}

.assistant-widget__scope--button:focus-visible[b-58jj6ft8b5] {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-ai), transparent 78%);
}

.assistant-widget__scope-caret[b-58jj6ft8b5] {
    flex-shrink: 0;
    margin-left: 0.15rem;
    color: color-mix(in srgb, currentColor, var(--text) 30%);
}

.assistant-widget__scope-backdrop[b-58jj6ft8b5] {
    position: fixed;
    inset: 0;
    z-index: 199;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: default;
}

.assistant-widget__scope-menu[b-58jj6ft8b5] {
    position: absolute;
    top: calc(100% + 0.4rem);
    left: 0;
    z-index: 5;
    width: min(16rem, calc(100vw - 2rem));
    min-width: 0;
    max-width: min(22rem, calc(100vw - 2rem));
    max-height: min(20rem, 50vh);
    overflow-y: auto;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    box-shadow: 0 14px 40px rgb(0 0 0 / 0.45);
    padding: 0.3rem;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.assistant-widget__scope-menu--portal[b-58jj6ft8b5] {
    position: fixed;
    z-index: 200;
    top: 0;
    left: 0;
    visibility: hidden;
}

.assistant-widget__scope-menu-item[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    width: 100%;
    background: transparent;
    border: 0;
    border-radius: 0.4rem;
    color: var(--text);
    cursor: pointer;
    font: inherit;
    font-size: 0.82rem;
    padding: 0.5rem 0.6rem;
    text-align: left;
    transition: background-color var(--transition-fast);
}

.assistant-widget__scope-menu-item:hover[b-58jj6ft8b5],
.assistant-widget__scope-menu-item:focus-visible[b-58jj6ft8b5] {
    background: var(--elevated);
    outline: none;
}

.assistant-widget__scope-menu-item--active[b-58jj6ft8b5] {
    background: color-mix(in srgb, var(--accent-ai), transparent 86%);
    color: var(--accent-ai);
}

.assistant-widget__scope-menu-icon[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    color: currentColor;
}

.assistant-widget__scope-menu-text[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    min-width: 0;
    flex: 1;
}

.assistant-widget__scope-menu-eyebrow[b-58jj6ft8b5] {
    font-size: 0.6rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
}

.assistant-widget__scope-menu-title[b-58jj6ft8b5] {
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/*
 * Ephemeral "scope changed" banner. Lives between the header and the
 * messages container, dismissable by the user or auto-clears after
 * 8 seconds.
 */
.assistant-widget__scope-banner[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0.5rem 0.85rem 0;
    padding: 0.55rem 0.75rem;
    background: color-mix(in srgb, var(--accent-ai), transparent 88%);
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 50%);
    border-radius: 0.5rem;
    color: var(--accent-ai);
    font-size: 0.78rem;
    line-height: 1.35;
}

.assistant-widget__scope-banner-icon[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.assistant-widget__scope-banner-text[b-58jj6ft8b5] {
    flex: 1;
    color: var(--text);
    min-width: 0;
}

.assistant-widget__scope-banner-dismiss[b-58jj6ft8b5] {
    background: transparent;
    border: 0;
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 1.05rem;
    line-height: 1;
    padding: 0 0.25rem;
    flex-shrink: 0;
}

.assistant-widget__scope-banner-dismiss:hover[b-58jj6ft8b5],
.assistant-widget__scope-banner-dismiss:focus-visible[b-58jj6ft8b5] {
    color: var(--text);
    outline: none;
}

.assistant-widget__header-right[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.assistant-widget__history-toggle[b-58jj6ft8b5] {
    /* Desktop: hidden because the persistent sidebar already shows history. */
    display: none;
    width: 2.25rem;
    height: 2.25rem;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    padding: 0;
    flex-shrink: 0;
}

.assistant-widget__history-toggle:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
}

.assistant-widget__new-chat-compact[b-58jj6ft8b5] {
    /* Desktop: hidden because the persistent sidebar already has a New chat button. */
    display: none;
    align-items: center;
    gap: 0.4rem;
    height: 2.25rem;
    padding: 0 0.65rem;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 0.78rem;
    font-weight: 600;
}

.assistant-widget__new-chat-compact:hover:not(:disabled)[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
}

.assistant-widget__new-chat-compact:disabled[b-58jj6ft8b5] {
    opacity: 0.5;
    cursor: not-allowed;
}

.assistant-widget__new-chat-compact-label[b-58jj6ft8b5] {
    display: inline-block;
}

.assistant-widget__export-wrap[b-58jj6ft8b5] {
    position: relative;
    display: inline-flex;
}

.assistant-widget__export-toggle[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    height: 2.25rem;
    padding: 0 0.65rem;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    transition: background-color var(--transition-fast),
                color var(--transition-fast),
                border-color var(--transition-fast);
}

.assistant-widget__export-toggle:hover[b-58jj6ft8b5],
.assistant-widget__export-toggle:focus-visible[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    outline: none;
}

.assistant-widget__export-toggle-label[b-58jj6ft8b5] {
    display: inline-block;
}

.assistant-widget__export-menu[b-58jj6ft8b5] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.4rem);
    width: min(16rem, calc(100vw - 2rem));
    min-width: 0;
    max-width: calc(100vw - 2rem);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.6rem;
    box-shadow: 0 18px 50px rgb(0 0 0 / 0.45);
    padding: 0.4rem;
    z-index: 60;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.assistant-widget__export-menu-item[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    padding: 0.55rem 0.7rem;
    border-radius: 0.4rem;
    border: 0;
    background: transparent;
    color: var(--text);
    text-align: left;
    cursor: pointer;
    font: inherit;
    transition: background-color 0.12s, color 0.12s;
}

.assistant-widget__export-menu-item:hover[b-58jj6ft8b5],
.assistant-widget__export-menu-item:focus-visible[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
    outline: none;
}

.assistant-widget__export-menu-title[b-58jj6ft8b5] {
    font-size: 0.85rem;
    font-weight: 600;
}

.assistant-widget__export-menu-sub[b-58jj6ft8b5] {
    font-size: 0.74rem;
    color: var(--text-tertiary);
    line-height: 1.35;
}

.assistant-widget__close[b-58jj6ft8b5] {
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1;
    padding: 0;
}

.assistant-widget__close:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    border-color: color-mix(in srgb, var(--accent), var(--border) 45%);
    color: var(--text);
}

.assistant-widget__messages[b-58jj6ft8b5] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    overflow-y: auto;
    /* Same wheel-bubbling fix as the side panels — scrolling messages must
     * never escape the chat widget and start scrolling the page. */
    overscroll-behavior: contain;
    padding: 1.25rem;
}

.assistant-widget__empty[b-58jj6ft8b5] {
    color: var(--text-tertiary);
    font-size: 0.9rem;
    text-align: center;
    padding: 2rem 1rem;
}

.assistant-widget__message[b-58jj6ft8b5] {
    display: flex;
    gap: 0.75rem;
    max-width: 85%;
    min-width: 0;
}

.assistant-widget__message--user[b-58jj6ft8b5] {
    align-self: flex-end;
    flex-direction: row-reverse;
}

.assistant-widget__message--assistant[b-58jj6ft8b5] {
    align-self: flex-start;
}

.assistant-widget__avatar[b-58jj6ft8b5] {
    flex-shrink: 0;
    width: 1.75rem;
    height: 1.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--accent-ai);
    color: #0e1116;
    font-size: 0.75rem;
    font-weight: 800;
}

.assistant-widget__message--user .assistant-widget__avatar[b-58jj6ft8b5] {
    display: none;
}

.assistant-widget__bubble[b-58jj6ft8b5] {
    border-radius: 1rem;
    padding: 0.75rem 1rem;
    line-height: 1.5;
    min-width: 0;
    overflow: hidden;
}

.assistant-widget__message--user .assistant-widget__bubble[b-58jj6ft8b5] {
    background: rgba(124, 158, 255, 0.22);
    border: 1px solid color-mix(in srgb, var(--accent), transparent 55%);
    border-radius: 1rem 1rem 0.25rem 1rem;
}

.assistant-widget__message--assistant .assistant-widget__bubble[b-58jj6ft8b5] {
    background: var(--elevated);
    border: 1px solid var(--border);
    border-radius: 1rem 1rem 1rem 0.25rem;
}

.assistant-widget__message--streaming .assistant-widget__bubble[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--accent-ai), var(--border) 45%);
}

.assistant-widget__bubble p[b-58jj6ft8b5] {
    margin: 0;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}

.assistant-widget__markdown[b-58jj6ft8b5] {
    line-height: 1.55;
    overflow-wrap: anywhere;
    min-width: 0;
    max-width: 100%;
}

.assistant-widget__markdown > :first-child[b-58jj6ft8b5] {
    margin-top: 0;
}

.assistant-widget__markdown > :last-child[b-58jj6ft8b5] {
    margin-bottom: 0;
}

.assistant-widget__markdown h1[b-58jj6ft8b5],
.assistant-widget__markdown h2[b-58jj6ft8b5],
.assistant-widget__markdown h3[b-58jj6ft8b5],
.assistant-widget__markdown h4[b-58jj6ft8b5] {
    color: var(--text);
    font-size: 1rem;
    line-height: 1.25;
    margin: 1rem 0 0.45rem;
}

.assistant-widget__markdown h1[b-58jj6ft8b5] {
    font-size: 1.1rem;
}

.assistant-widget__markdown h2[b-58jj6ft8b5] {
    font-size: 1.05rem;
}

.assistant-widget__markdown p[b-58jj6ft8b5],
.assistant-widget__markdown ul[b-58jj6ft8b5],
.assistant-widget__markdown ol[b-58jj6ft8b5],
.assistant-widget__markdown blockquote[b-58jj6ft8b5],
.assistant-widget__markdown pre[b-58jj6ft8b5],
.assistant-widget__markdown table[b-58jj6ft8b5] {
    margin: 0.75rem 0;
}

.assistant-widget__markdown ul[b-58jj6ft8b5],
.assistant-widget__markdown ol[b-58jj6ft8b5] {
    padding-left: 1.25rem;
}

.assistant-widget__markdown li + li[b-58jj6ft8b5] {
    margin-top: 0.25rem;
}

.assistant-widget__markdown strong[b-58jj6ft8b5] {
    color: var(--text);
    font-weight: 800;
}

.assistant-widget__markdown em[b-58jj6ft8b5] {
    color: var(--text-secondary);
}

.assistant-widget__markdown a[b-58jj6ft8b5] {
    color: var(--accent-ai);
}

.assistant-widget__markdown blockquote[b-58jj6ft8b5] {
    border-left: 2px solid var(--accent-ai);
    color: var(--text-secondary);
    padding-left: 0.85rem;
}

.assistant-widget__markdown code[b-58jj6ft8b5] {
    background: var(--canvas);
    border: 1px solid var(--border);
    border-radius: 0.35rem;
    color: var(--accent-ai);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: 0.88em;
    padding: 0.08rem 0.28rem;
}

.assistant-widget__markdown pre[b-58jj6ft8b5] {
    background: var(--canvas);
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    overflow-x: auto;
    padding: 0.85rem;
}

.assistant-widget__markdown pre code[b-58jj6ft8b5] {
    background: transparent;
    border: 0;
    color: var(--text);
    padding: 0;
}

.assistant-widget__markdown table[b-58jj6ft8b5] {
    border-collapse: collapse;
    display: block;
    max-width: 100%;
    overflow-x: auto;
}

.assistant-widget__markdown th[b-58jj6ft8b5],
.assistant-widget__markdown td[b-58jj6ft8b5] {
    border: 1px solid var(--border);
    padding: 0.45rem 0.6rem;
    text-align: left;
}

.assistant-widget__markdown th[b-58jj6ft8b5] {
    background: var(--canvas);
    color: var(--text);
    font-weight: 700;
}

/*
 * NOTE on the visualization styles: the SVG / bar / pie / graph markup is
 * rendered by the child component <AssistantMessageContent />. Blazor scoped
 * CSS would attach this widget's scope id to selectors here but the actual
 * SVG / DOM elements live under the child component's scope id, so selectors
 * like `.assistant-widget__graph text` would NOT match. The visualization
 * styles therefore live in app.css (un-scoped) — see search "Assistant chat
 * visualization styles" in src/DocumentRepository/wwwroot/app.css.
 */

.assistant-widget__citations[b-58jj6ft8b5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.65rem;
    padding-top: 0.5rem;
    border-top: 1px solid color-mix(in srgb, var(--border), transparent 50%);
}

.assistant-widget__citation[b-58jj6ft8b5] {
    border: 1px solid color-mix(in srgb, var(--accent), var(--border) 60%);
    border-radius: 999px;
    background: rgba(124, 158, 255, 0.08);
    color: var(--text);
    font-size: 0.72rem;
    padding: 0.18rem 0.45rem;
    text-decoration: none;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast);
}

.assistant-widget__citation:hover[b-58jj6ft8b5] {
    background: rgba(124, 158, 255, 0.16);
    border-color: var(--accent);
}

.assistant-widget__status[b-58jj6ft8b5] {
    display: flex;
    gap: 0.75rem;
    align-self: flex-start;
    align-items: center;
}

.assistant-widget__status-avatar[b-58jj6ft8b5] {
    flex-shrink: 0;
    width: 1.75rem;
    height: 1.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--accent-ai);
    color: #0e1116;
    font-size: 0.75rem;
    font-weight: 800;
}

.assistant-widget__typing[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.65rem 0.85rem;
    background: var(--elevated);
    border: 1px solid var(--border);
    border-radius: 1rem;
}

.assistant-widget__typing-dot[b-58jj6ft8b5] {
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--text-secondary);
    animation: assistant-typing-b-58jj6ft8b5 1.4s infinite ease-in-out both;
}

.assistant-widget__typing-dot:nth-child(1)[b-58jj6ft8b5] {
    animation-delay: 0s;
}

.assistant-widget__typing-dot:nth-child(2)[b-58jj6ft8b5] {
    animation-delay: 0.2s;
}

.assistant-widget__typing-dot:nth-child(3)[b-58jj6ft8b5] {
    animation-delay: 0.4s;
}

@keyframes assistant-typing-b-58jj6ft8b5 {
    0%, 80%, 100% {
        transform: scale(0.7);
        opacity: 0.5;
    }
    40% {
        transform: scale(1);
        opacity: 1;
    }
}

.assistant-widget__composer[b-58jj6ft8b5] {
    display: flex;
    /*
     * Stacked column so the inline notice region (validation, upload
     * status, "coming soon") and any future pending-attachments rail can
     * sit ABOVE the input row. The inner row keeps its centerline layout
     * (input pill + send button) via .assistant-widget__composer-row.
     */
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.65rem 0.85rem 0.75rem;
    border-top: 1px solid var(--border);
    background: var(--surface);
    /* Composer stays its natural size pinned at the bottom — never shrinks. */
    flex-shrink: 0;
}

.assistant-widget__composer-row[b-58jj6ft8b5] {
    display: flex;
    /*
     * `align-items: center` aligns the input pill and the send button on
     * a single horizontal centerline regardless of pill content height.
     */
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
}

.assistant-widget__composer-input[b-58jj6ft8b5] {
    flex: 1;
    display: flex;
    /*
     * Pill internals are aligned center too so + button, textarea text, and
     * (future inline icons) all sit on the same baseline as each other.
     */
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    min-height: 3rem;
    border: 1px solid var(--border);
    border-radius: 1.5rem;
    background: var(--canvas);
    /* Tighter vertical padding now that the + button & send button each carry
     * their own circular background and the pill itself can be slimmer. */
    padding: 0.4rem 0.55rem 0.4rem 0.5rem;
}

.assistant-widget__composer-input:focus-within[b-58jj6ft8b5] {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(124, 158, 255, 0.12);
}

.assistant-widget__composer-plus[b-58jj6ft8b5] {
    flex-shrink: 0;
    /* Same square footprint as the send button so both buttons read as a
     * matched pair flanking the textarea, with a subtle clickable surface. */
    width: 2.1rem;
    height: 2.1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid color-mix(in srgb, var(--border), transparent 40%);
    border-radius: 50%;
    background: color-mix(in srgb, var(--elevated), transparent 25%);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 1.1rem;
    font-weight: 500;
    line-height: 1;
    padding: 0;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast),
                color var(--transition-fast);
}

.assistant-widget__composer-plus:hover:not(:disabled)[b-58jj6ft8b5],
.assistant-widget__composer-plus:focus-visible[b-58jj6ft8b5] {
    background: var(--elevated);
    border-color: color-mix(in srgb, var(--accent), var(--border) 35%);
    color: var(--text);
    outline: none;
}

.assistant-widget__composer-plus:disabled[b-58jj6ft8b5] {
    opacity: 0.55;
    cursor: not-allowed;
}

/*
 * Plus menu popover.
 *
 * Anchored to the .assistant-widget__composer-plus-wrap so it stays attached
 * to the + button as the textarea grows, and positioned above the button so
 * it doesn't get clipped by the (taller) chat scroll area below the
 * composer. Width is constrained so it doesn't shove the chat layout when
 * opened on a narrow widget.
 */
.assistant-widget__composer-plus-wrap[b-58jj6ft8b5] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.assistant-widget__plus-menu[b-58jj6ft8b5] {
    position: absolute;
    bottom: calc(100% + 0.5rem);
    left: 0;
    z-index: 5;
    /*
     * Wider menu + max-content max so the eyebrow doesn't wrap awkwardly
     * mid-sentence ("ALL DOCUMENTS (ARTIFACT GENERATION REQUIRES A DOCUMENT
     * OR COLLECTION SCOPE)" was breaking after every other word at 22rem).
     * Cap at viewport width minus a margin so the popover never escapes the
     * chat panel on narrow widths.
     */
    width: min(22rem, calc(100vw - 2rem));
    min-width: 0;
    max-width: min(28rem, calc(100vw - 2rem));
    padding: 0.65rem;
    border-radius: 0.7rem;
    border: 1px solid var(--border);
    background: var(--surface);
    box-shadow: 0 12px 28px rgb(0 0 0 / 0.35);
    display: grid;
    gap: 0.25rem;
}

.assistant-widget__plus-menu-eyebrow[b-58jj6ft8b5] {
    margin: 0 0 0.4rem;
    padding: 0 0.45rem;
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-tertiary);
    line-height: 1.4;
    /* Don't wrap mid-sentence — long scope labels stay on a single visual
     * line if they fit, otherwise wrap cleanly at word boundaries. */
    word-spacing: 0.02em;
}

.assistant-widget__plus-menu-disabled-note[b-58jj6ft8b5] {
    margin: 0;
    padding: 0.5rem 0.55rem;
    color: var(--text-secondary);
    font-size: 0.8rem;
}

.assistant-widget__plus-menu-item[b-58jj6ft8b5] {
    display: grid;
    grid-template-columns: 2rem 1fr;
    gap: 0.6rem;
    align-items: center;
    padding: 0.55rem;
    border: 1px solid transparent;
    border-radius: 0.55rem;
    background: transparent;
    color: var(--text);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.assistant-widget__plus-menu-item:hover[b-58jj6ft8b5],
.assistant-widget__plus-menu-item:focus-visible[b-58jj6ft8b5] {
    background: color-mix(in srgb, var(--elevated), transparent 50%);
    border-color: var(--border);
    outline: none;
}

.assistant-widget__plus-menu-icon[b-58jj6ft8b5] {
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.45rem;
    background: color-mix(in srgb, var(--accent-ai), var(--surface) 60%);
    color: var(--text);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.assistant-widget__plus-menu-text[b-58jj6ft8b5] {
    display: grid;
    gap: 0.15rem;
    min-width: 0;
}

.assistant-widget__plus-menu-title[b-58jj6ft8b5] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text);
}

.assistant-widget__plus-menu-sub[b-58jj6ft8b5] {
    font-size: 0.72rem;
    color: var(--text-secondary);
    line-height: 1.35;
}

.assistant-widget__plus-menu-item--upload[b-58jj6ft8b5] {
    position: relative;
    cursor: pointer;
}

/*
 * The actual file <input> hide rule lives in app.css (un-scoped) — Blazor
 * scoped CSS doesn't match the <InputFile> child component's render output
 * because it gets a different scope attribute, so the rule never applied
 * here and the native "Choose File" button was leaking through. See
 * "Assistant chat composer file input hide" in app.css.
 */

/*
 * Inline composer notice region. Sits above the textarea so users see
 * validation, upload progress, and "coming soon" copy in the same place
 * they took the action — replaces the older one-shot toast that drifted
 * below the composer and was easy to miss.
 *
 * Colour treatment is keyed to the notice kind so an error reads as red,
 * a success as green, and "coming soon" / info reads as the assistant's
 * accent tint (subtle, not alarming).
 */
.assistant-widget__composer-notices[b-58jj6ft8b5] {
    list-style: none;
    margin: 0 0 0.5rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    width: 100%;
}

.assistant-widget__composer-notice[b-58jj6ft8b5] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.45rem 0.55rem 0.45rem 0.7rem;
    border-radius: 0.55rem;
    border: 1px solid var(--border);
    background: color-mix(in srgb, var(--accent-ai), var(--surface) 80%);
    color: var(--text);
    font-size: 0.78rem;
    line-height: 1.4;
}

.assistant-widget__composer-notice--info[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    background: color-mix(in srgb, var(--accent), var(--surface) 86%);
}

.assistant-widget__composer-notice--coming-soon[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--accent-ai), var(--border) 40%);
    background: color-mix(in srgb, var(--accent-ai), var(--surface) 84%);
}

.assistant-widget__composer-notice--success[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--green, #4ade80), var(--border) 40%);
    background: color-mix(in srgb, var(--green, #4ade80), var(--surface) 85%);
}

.assistant-widget__composer-notice--error[b-58jj6ft8b5] {
    border-color: color-mix(in srgb, var(--red, #ef6b6b), var(--border) 30%);
    background: color-mix(in srgb, var(--red, #ef6b6b), var(--surface) 80%);
    color: #ffd9d9;
}

.assistant-widget__composer-notice-text[b-58jj6ft8b5] {
    flex: 1;
    word-break: break-word;
}

.assistant-widget__composer-notice-dismiss[b-58jj6ft8b5] {
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 0.4rem;
    background: transparent;
    color: inherit;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    transition: background-color var(--transition-fast);
}

.assistant-widget__composer-notice-dismiss:hover[b-58jj6ft8b5],
.assistant-widget__composer-notice-dismiss:focus-visible[b-58jj6ft8b5] {
    background: color-mix(in srgb, currentColor, transparent 88%);
    outline: none;
}

/* Pending attachments staged in the composer. Thumb + name + size + remove
 * button laid out horizontally so the strip wraps onto a second row when
 * 3+ images are queued in a narrow widget. */
.assistant-widget__composer-attachments[b-58jj6ft8b5] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    width: 100%;
}

.assistant-widget__composer-attachment[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.3rem 0.45rem 0.3rem 0.35rem;
    border-radius: 0.55rem;
    border: 1px solid var(--border);
    background: var(--canvas);
    max-width: 16rem;
}

.assistant-widget__composer-attachment-thumb[b-58jj6ft8b5] {
    width: 2.25rem;
    height: 2.25rem;
    flex-shrink: 0;
    border-radius: 0.4rem;
    object-fit: cover;
    background: var(--elevated);
}

.assistant-widget__composer-attachment-thumb--placeholder[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
}

.assistant-widget__composer-attachment-meta[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.25;
}

.assistant-widget__composer-attachment-name[b-58jj6ft8b5] {
    font-size: 0.78rem;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 9rem;
}

.assistant-widget__composer-attachment-size[b-58jj6ft8b5] {
    font-size: 0.7rem;
}

.assistant-widget__composer-attachment-remove[b-58jj6ft8b5] {
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
}

.assistant-widget__composer-attachment-remove:hover[b-58jj6ft8b5],
.assistant-widget__composer-attachment-remove:focus-visible[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
    outline: none;
}

/* Message-bubble inline attachment thumbnails. Same shape on both user and
 * assistant turns; the bubble background takes care of the colour. */
.assistant-widget__message-attachments[b-58jj6ft8b5] {
    list-style: none;
    margin: 0 0 0.4rem;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.assistant-widget__message-attachment-link[b-58jj6ft8b5] {
    display: inline-block;
    border-radius: 0.5rem;
    overflow: hidden;
    border: 1px solid var(--border);
    background: var(--elevated);
    transition: transform var(--transition-fast), border-color var(--transition-fast);
}

.assistant-widget__message-attachment-link:hover[b-58jj6ft8b5],
.assistant-widget__message-attachment-link:focus-visible[b-58jj6ft8b5] {
    transform: scale(1.03);
    border-color: var(--accent);
    outline: none;
}

.assistant-widget__message-attachment-thumb[b-58jj6ft8b5] {
    display: block;
    width: 6rem;
    height: 6rem;
    object-fit: cover;
}

.assistant-widget__composer textarea[b-58jj6ft8b5] {
    flex: 1;
    resize: none;
    /*
     * Single-line default keeps everything centered with the + and send
     * buttons; grows up to ~6 lines before scrolling internally.
     */
    min-height: 1.5rem;
    min-width: 0;
    max-height: 9rem;
    align-self: center;
    border: none;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: 0.9rem;
    line-height: 1.5;
    padding: 0.1rem 0;
}

.assistant-widget__composer textarea[b-58jj6ft8b5]::placeholder {
    color: var(--text-tertiary);
}

.assistant-widget__composer textarea:focus[b-58jj6ft8b5] {
    outline: none;
}

.assistant-widget__composer-send[b-58jj6ft8b5] {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: 50%;
    background: var(--accent-ai);
    color: #0e1116;
    cursor: pointer;
    font-size: 1rem;
    transition: background-color var(--transition-fast),
                transform var(--transition-fast);
}

.assistant-widget__composer-send:hover:not(:disabled)[b-58jj6ft8b5] {
    background: color-mix(in srgb, var(--accent-ai), #ffffff 15%);
    transform: scale(1.05);
}

.assistant-widget__composer-send:disabled[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text-tertiary);
    cursor: not-allowed;
}

.assistant-widget__composer-stop[b-58jj6ft8b5] {
    flex-shrink: 0;
    min-height: 2.25rem;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--canvas);
    color: var(--text);
    cursor: pointer;
    font: inherit;
    font-size: 0.8rem;
    padding: 0 0.75rem;
}

.assistant-widget__composer-stop:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
}

.assistant-widget__error[b-58jj6ft8b5] {
    margin: 0 1rem 0.75rem;
    border: 1px solid color-mix(in srgb, var(--red), #ffffff 18%);
    border-radius: 0.75rem;
    background: rgb(220 95 95 / 0.14);
    color: #ffd9d9;
    padding: 0.65rem 0.75rem;
    font-size: 0.85rem;
}

@media (max-width: 48rem) {
    /*
     * Mobile assistant: fullscreen sheet over the page with a single-column layout.
     * History is opt-in via a slide-in overlay so the chat itself uses the full panel.
     * Composer-side new-chat lives inline with the close button (icon-only on small phones).
     */
    .assistant-widget__launcher[b-58jj6ft8b5] {
        right: max(clamp(0.75rem, 3vw, 1.5rem), env(safe-area-inset-right, 0px));
        left: auto;
    }

    .assistant-widget__panel[b-58jj6ft8b5] {
        position: fixed;
        inset: 0;
        top: env(safe-area-inset-top, 0px);
        right: env(safe-area-inset-right, 0px);
        bottom: env(safe-area-inset-bottom, 0px);
        left: env(safe-area-inset-left, 0px);
        width: auto;
        max-width: none;
        height: auto;
        max-height: none;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: minmax(0, 1fr);
        border-radius: 0;
        border-left: 0;
        border-right: 0;
        border-top: 0;
        border-bottom: 0;
    }

    /* History becomes a slide-in tab overlay on top of the chat. */
    .assistant-widget__sidebar[b-58jj6ft8b5] {
        position: absolute;
        inset: 0;
        z-index: 5;
        display: flex;
        flex-direction: column;
        border: 0;
        background: var(--surface);
        transform: translateX(-100%);
        visibility: hidden;
        transition: transform var(--transition-slow), visibility var(--transition-slow);
    }

    .assistant-widget__sidebar--mobile-open[b-58jj6ft8b5] {
        transform: translateX(0);
        visibility: visible;
    }

    .assistant-widget__sidebar-close[b-58jj6ft8b5] {
        display: inline-flex;
    }

    .assistant-widget__history-section[b-58jj6ft8b5] {
        flex: 1;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        padding: 0.6rem 0.85rem 0.85rem;
        -webkit-overflow-scrolling: touch;
    }

    .assistant-widget__history-button[b-58jj6ft8b5] {
        white-space: normal;
        text-overflow: unset;
        line-height: 1.3;
        padding: 0.65rem 0.6rem;
    }

    .assistant-widget__main[b-58jj6ft8b5] {
        min-width: 0;
        min-height: 0;
    }

    /* Header: fit history toggle, title, and right-side actions on a single row. */
    .assistant-widget__header[b-58jj6ft8b5] {
        gap: 0.5rem;
        padding: 0.6rem 0.75rem;
    }

    .assistant-widget__scope-menu--portal[b-58jj6ft8b5] {
        max-width: min(22rem, calc(100vw - 2rem));
    }

    .assistant-widget__history-toggle[b-58jj6ft8b5] {
        display: inline-flex;
    }

    .assistant-widget__new-chat-compact[b-58jj6ft8b5] {
        display: inline-flex;
    }

    .assistant-widget__title[b-58jj6ft8b5] {
        font-size: 0.9rem;
    }

    /* Focus toggle hidden on mobile to save space for essentials. */
    .assistant-widget__focus-toggle[b-58jj6ft8b5] {
        display: none;
    }

    .assistant-widget--fullscreen .assistant-widget__panel[b-58jj6ft8b5] {
        position: relative;
        inset: auto;
        width: 100%;
        height: 100%;
        max-width: none;
        max-height: none;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: minmax(0, 1fr);
    }

    .assistant-widget--fullscreen .assistant-widget__context-rail[b-58jj6ft8b5] {
        display: none;
    }
}

@media (max-width: 30rem) {
    .assistant-widget__launcher[b-58jj6ft8b5] {
        left: auto;
        right: max(clamp(0.75rem, 3vw, 1.5rem), env(safe-area-inset-right, 0px));
        width: 3rem;
        height: 3rem;
        max-width: none;
    }

    .assistant-widget__header[b-58jj6ft8b5] {
        padding-inline: max(0.6rem, env(safe-area-inset-left, 0px)) max(0.6rem, env(safe-area-inset-right, 0px));
    }

    /* Drop the textual label on tiny screens; the icon + a11y label keep meaning. */
    .assistant-widget__new-chat-compact[b-58jj6ft8b5] {
        width: 2.25rem;
        padding: 0;
        justify-content: center;
    }

    .assistant-widget__new-chat-compact-label[b-58jj6ft8b5] {
        display: none;
    }

    .assistant-widget__messages[b-58jj6ft8b5] {
        padding-inline: max(0.65rem, env(safe-area-inset-left, 0px)) max(0.65rem, env(safe-area-inset-right, 0px));
    }

    .assistant-widget__composer[b-58jj6ft8b5] {
        padding-inline: max(0.65rem, env(safe-area-inset-left, 0px)) max(0.65rem, env(safe-area-inset-right, 0px));
        padding-bottom: max(0.85rem, env(safe-area-inset-bottom, 0px));
    }

    .assistant-widget__composer-note[b-58jj6ft8b5] {
        padding-inline: max(1rem, env(safe-area-inset-left, 0px)) max(1rem, env(safe-area-inset-right, 0px));
    }

    .assistant-widget__error[b-58jj6ft8b5] {
        margin-inline: max(1rem, env(safe-area-inset-left, 0px)) max(1rem, env(safe-area-inset-right, 0px));
    }

    .assistant-widget__message[b-58jj6ft8b5] {
        max-width: 95%;
    }

    .assistant-widget__welcome[b-58jj6ft8b5] {
        padding-inline: max(0.5rem, env(safe-area-inset-left, 0px)) max(0.5rem, env(safe-area-inset-right, 0px));
    }
}

/* Artifact prompt dialog */
.assistant-widget__prompt-dialog-backdrop[b-58jj6ft8b5] {
    position: fixed;
    inset: 0;
    z-index: 200;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(2px);
}

.assistant-widget__prompt-dialog[b-58jj6ft8b5] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 201;
    width: min(32rem, calc(100vw - 2rem));
    max-height: calc(100vh - 4rem);
    display: flex;
    flex-direction: column;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
    overflow: hidden;
}

.assistant-widget__prompt-dialog-header[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface), var(--canvas) 30%);
}

.assistant-widget__prompt-dialog-title[b-58jj6ft8b5] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--text);
}

.assistant-widget__prompt-dialog-close[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}

.assistant-widget__prompt-dialog-close:hover[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
}

.assistant-widget__prompt-dialog-body[b-58jj6ft8b5] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.assistant-widget__prompt-dialog-field[b-58jj6ft8b5] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.assistant-widget__prompt-dialog-label[b-58jj6ft8b5] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text-secondary);
}

.assistant-widget__prompt-dialog-input[b-58jj6ft8b5] {
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    background: var(--canvas);
    color: var(--text);
    font: inherit;
    font-size: 0.9rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.assistant-widget__prompt-dialog-input:focus[b-58jj6ft8b5] {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);
}

.assistant-widget__prompt-dialog-textarea[b-58jj6ft8b5] {
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    background: var(--canvas);
    color: var(--text);
    font: inherit;
    font-size: 0.9rem;
    resize: vertical;
    min-height: 6rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.assistant-widget__prompt-dialog-textarea:focus[b-58jj6ft8b5] {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);
}

.assistant-widget__prompt-dialog-helper[b-58jj6ft8b5] {
    margin: 0 0 0.75rem;
    padding: 0.55rem 0.75rem;
    border-radius: 0.5rem;
    background: color-mix(in srgb, var(--accent-ai) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-ai) 30%, var(--border));
    color: var(--text-secondary);
    font-size: 0.82rem;
    line-height: 1.45;
}

.assistant-widget__prompt-dialog-preview[b-58jj6ft8b5] {
    margin: 0;
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    background: var(--canvas);
    color: var(--text-secondary);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.78rem;
    line-height: 1.4;
    max-height: 8rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
}

.assistant-widget__message-actions[b-58jj6ft8b5] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.assistant-widget__message-save[b-58jj6ft8b5] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.55rem;
    border: 1px solid var(--border);
    border-radius: 0.45rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    font-size: 0.72rem;
    font-weight: 600;
    transition: background-color 0.12s, color 0.12s, border-color 0.12s;
}

.assistant-widget__message-save:hover:not(:disabled)[b-58jj6ft8b5],
.assistant-widget__message-save:focus-visible:not(:disabled)[b-58jj6ft8b5] {
    background: var(--elevated);
    color: var(--text);
    border-color: color-mix(in srgb, var(--accent-ai), var(--border) 50%);
    outline: none;
}

.assistant-widget__message-save:disabled[b-58jj6ft8b5] {
    opacity: 0.5;
    cursor: not-allowed;
}

.assistant-widget__prompt-dialog-footer[b-58jj6ft8b5] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.65rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface), var(--canvas) 30%);
}

@media (max-width: 480px) {
    .assistant-widget__prompt-dialog[b-58jj6ft8b5] {
        width: calc(100vw - 1rem);
        max-height: calc(100vh - 2rem);
        border-radius: 0.65rem;
    }

    .assistant-widget__prompt-dialog-header[b-58jj6ft8b5],
    .assistant-widget__prompt-dialog-footer[b-58jj6ft8b5] {
        padding: 0.85rem 1rem;
    }

    .assistant-widget__prompt-dialog-body[b-58jj6ft8b5] {
        padding: 1rem;
    }
}
/* /Components/Assistant/AssistantDrawer.razor.rz.scp.css */
.assistant-drawer[b-i9n9bwhpss] {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: 24rem;
    max-width: 100vw;
    background: var(--surface);
    color: var(--text);
    border-left: 1px solid var(--border);
    box-shadow: -1rem 0 2rem rgba(0, 0, 0, 0.45);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 200ms ease-in-out;
    z-index: 50;
}

.assistant-drawer--open[b-i9n9bwhpss] {
    transform: translateX(0);
}

.assistant-drawer--closed[b-i9n9bwhpss] {
    pointer-events: none;
}

.assistant-drawer__header[b-i9n9bwhpss] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border);
}

.assistant-drawer__title[b-i9n9bwhpss] {
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.125rem;
    margin: 0;
    color: var(--text);
}

.assistant-drawer__close[b-i9n9bwhpss] {
    background: var(--canvas);
    border: 1px solid var(--border);
    color: var(--text);
    border-radius: 0.375rem;
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast);
}

.assistant-drawer__close:hover[b-i9n9bwhpss] {
    background: var(--elevated);
    border-color: color-mix(in srgb, var(--border), #ffffff 15%);
}

.assistant-drawer__close:focus-visible[b-i9n9bwhpss] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.assistant-drawer__body[b-i9n9bwhpss] {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 1rem 1.25rem;
}

@media (max-width: 30rem) {
    .assistant-drawer[b-i9n9bwhpss] {
        width: 100vw;
    }
}
/* /Components/Assistant/AssistantTriggerButton.razor.rz.scp.css */
.assistant-trigger[b-2z9batfnpn] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.75rem;
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 55%);
    border-radius: 999px;
    background: color-mix(in srgb, var(--accent-ai), transparent 92%);
    color: var(--accent-ai);
    cursor: pointer;
    font: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.01em;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast),
                color var(--transition-fast),
                transform var(--transition-fast);
}

.assistant-trigger:hover[b-2z9batfnpn],
.assistant-trigger:focus-visible[b-2z9batfnpn] {
    background: color-mix(in srgb, var(--accent-ai), transparent 80%);
    border-color: var(--accent-ai);
    color: color-mix(in srgb, var(--accent-ai), #ffffff 12%);
    outline: none;
    transform: translateY(-1px);
}

.assistant-trigger:focus-visible[b-2z9batfnpn] {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-ai), transparent 78%);
}

.assistant-trigger[data-active="true"][b-2z9batfnpn] {
    background: var(--accent-ai);
    color: var(--surface);
    border-color: var(--accent-ai);
}

.assistant-trigger__icon[b-2z9batfnpn] {
    flex-shrink: 0;
}

@media (max-width: 36rem) {
    /*
     * Mobile top-bar already shows account + upload icons — drop the
     * label so the trigger collapses to a 32x32-ish circle. The
     * accessible name lives in aria-label; we just hide the text.
     */
    .assistant-trigger[b-2z9batfnpn] {
        padding: 0.45rem;
        gap: 0;
    }

    .assistant-trigger__label[b-2z9batfnpn] {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
        border: 0;
    }
}
/* /Components/Documents/DocumentTablePreview.razor.rz.scp.css */
.document-table-preview[b-77wn46lh5r] {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding: 1rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    color: var(--text);
    /* Match the iframe-based stage so swapping between the two doesn't
       collapse the layout. */
    min-height: 0;
    flex: 1;
    overflow: hidden;
}

.document-table-preview__status[b-77wn46lh5r] {
    margin: 0;
    padding: 1rem;
    text-align: center;
    font-size: 0.9rem;
}

/*
 * Sheet tabs migrated to the shared <MaterialTabs/> component.
 * The host class .document-table-preview__tabs is forwarded as
 * AdditionalClass for any document-table-preview-specific overrides
 * (none required today) — leaving the hook in place so future
 * styling can attach without re-wiring.
 */
.document-table-preview__tabs[b-77wn46lh5r] {
    margin-bottom: 0.25rem;
}

.document-table-preview__truncated[b-77wn46lh5r] {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.45;
}

.document-table-preview__scroll[b-77wn46lh5r] {
    /*
     * `overflow-x: auto` (paired with the table sizing below) lets the
     * spreadsheet scroll horizontally when the natural column widths add
     * up to more than the viewport. `overflow-y: auto` keeps the sticky
     * header row pinned while the body scrolls.
     */
    overflow-x: auto;
    overflow-y: auto;
    border: 1px solid var(--border);
    border-radius: 0.4rem;
    flex: 1;
    min-height: 0;
}

.document-table-preview__scroll:focus-visible[b-77wn46lh5r] {
    outline: 2px solid color-mix(in srgb, var(--accent-ai), transparent 65%);
    outline-offset: 0;
}

.document-table-preview__table[b-77wn46lh5r] {
    /*
     * `width: max-content` + `min-width: 100%` is the spreadsheet-friendly
     * sizing combo: each column auto-sizes to its content (so 30-column
     * sheets don't squeeze every cell to ~30px), the whole table grows
     * past the viewport when needed, and the surrounding scroll container
     * (overflow-x: auto) takes the horizontal scroll. When the natural
     * width is narrower than the viewport, the `min-width: 100%` keeps
     * the header bar stretched to the container so it doesn't look
     * orphaned for a small CSV.
     *
     * Switched away from `table-layout: fixed` + a per-cell `max-width: 28ch`
     * after that combo was rendering every cell as 3-4 ellipsised characters
     * for typical user spreadsheets (≥10 columns). Auto layout still has a
     * per-cell guard against pathological multi-paragraph cells; see
     * `tbody td` below.
     */
    width: max-content;
    min-width: 100%;
    border-collapse: collapse;
    table-layout: auto;
    background: var(--surface);
    color: var(--text);
    font-size: 0.82rem;
}

.document-table-preview__table thead th[b-77wn46lh5r] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--elevated);
    color: var(--text);
    text-align: left;
    font-weight: 600;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--border);
    /* Sticky-positioned thead doesn't inherit the parent border, so
       paint our own bottom rule instead. */
    box-shadow: 0 1px 0 0 var(--border);
    /*
     * Headers shouldn't wrap or ellipsise — column names are short and
     * letting them push the column wider is fine because the body cells
     * size to their own content via auto layout.
     */
    white-space: nowrap;
}

.document-table-preview__table tbody td[b-77wn46lh5r] {
    padding: 0.45rem 0.75rem;
    border-bottom: 1px solid color-mix(in srgb, var(--border), transparent 55%);
    vertical-align: top;
    /*
     * Default behaviour: keep cell text on a single line so the column
     * is readable at a glance, and let the cell expand to fit its
     * contents. The wrapping scroll container handles overflow when the
     * sheet is wider than the viewport.
     */
    white-space: nowrap;
    /*
     * Soft cap for pathological cells (a paragraph or three crammed into
     * one Excel cell). At 60ch the cell still shows a substantial
     * preview before the ellipsis kicks in, and the title attribute on
     * the <td> exposes the full value on hover. Combined with the
     * `text-overflow: ellipsis` clipping below, this stops a single
     * 5,000-character cell from pushing the rest of the row miles off
     * to the right.
     */
    max-width: 60ch;
    overflow: hidden;
    text-overflow: ellipsis;
}

.document-table-preview__table tbody tr:nth-child(even) td[b-77wn46lh5r] {
    background: color-mix(in srgb, var(--canvas), transparent 50%);
}

.document-table-preview__empty[b-77wn46lh5r] {
    text-align: center;
    color: var(--text-secondary);
    font-style: italic;
    padding: 1rem !important;
    white-space: normal !important;
    max-width: none !important;
}
/* /Components/Documents/DocumentUploadWidget.razor.rz.scp.css */
.upload-widget[b-0p6wmatdrs] {
    position: relative;
    z-index: 95;
}

.upload-widget--inline[b-0p6wmatdrs] {
    z-index: auto;
    display: inline-flex;
}

.upload-widget__launcher[b-0p6wmatdrs] {
    position: fixed;
    right: calc(clamp(0.75rem, 3vw, 1.5rem) + var(--floating-fab-upload-inline-shift));
    bottom: calc(var(--floating-fab-offset-y) + var(--floating-fab-safe-bottom));
    min-height: 3rem;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    border: 1px solid color-mix(in srgb, var(--accent-ai), #ffffff 16%);
    border-radius: 999px;
    background: color-mix(in srgb, var(--accent-ai) 18%, var(--surface));
    color: var(--text);
    box-shadow: 0 18px 48px rgb(0 0 0 / 0.32);
    cursor: pointer;
    font: inherit;
    font-weight: 800;
    padding: 0 1rem;
    z-index: 85;
}

.upload-widget__launcher:hover[b-0p6wmatdrs],
.upload-widget__launcher:focus-visible[b-0p6wmatdrs] {
    border-color: var(--accent-ai);
    background: color-mix(in srgb, var(--accent-ai) 26%, var(--surface));
}

.upload-widget__launcher--inline[b-0p6wmatdrs] {
    position: static;
    right: auto;
    bottom: auto;
    min-height: 2.4rem;
    padding: 0 0.85rem;
    font-size: 0.85rem;
    font-weight: 700;
    box-shadow: none;
    z-index: auto;
}

.upload-widget__launcher--icon[b-0p6wmatdrs] {
    width: 2.4rem;
    height: 2.4rem;
    min-height: 0;
    padding: 0;
    justify-content: center;
}

.upload-widget__launcher--icon svg[b-0p6wmatdrs] {
    flex-shrink: 0;
}

.upload-widget__launcher-icon[b-0p6wmatdrs] {
    flex-shrink: 0;
    opacity: 0.9;
}

.upload-widget__backdrop[b-0p6wmatdrs] {
    position: fixed;
    inset: 0;
    z-index: 120;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(0.75rem, 2vw, 1.5rem);
    padding-left: max(clamp(0.75rem, 2vw, 1.5rem), env(safe-area-inset-left, 0px));
    padding-right: max(clamp(0.75rem, 2vw, 1.5rem), env(safe-area-inset-right, 0px));
    padding-top: max(clamp(0.75rem, 2vw, 1.5rem), env(safe-area-inset-top, 0px));
    padding-bottom: max(clamp(0.75rem, 2vw, 1.5rem), env(safe-area-inset-bottom, 0px));
    background: rgb(0 0 0 / 0.72);
    backdrop-filter: blur(5px);
}

.upload-widget__dialog[b-0p6wmatdrs] {
    width: min(100%, 44rem);
    max-height: min(94dvh, 52rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--border), var(--accent-ai) 24%);
    border-radius: 1rem;
    background: var(--panel);
    box-shadow: 0 30px 90px rgb(0 0 0 / 0.55);
}

.upload-widget__header[b-0p6wmatdrs] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.85rem;
    flex-shrink: 0;
    border-bottom: 1px solid var(--border);
    padding: 0.95rem 1.25rem;
    background: var(--panel);
}

.upload-widget__header h2[b-0p6wmatdrs] {
    margin: 0;
    font-size: clamp(1.15rem, 2.8vw, 1.45rem);
}

.upload-widget__header p:last-child[b-0p6wmatdrs] {
    margin: 0.3rem 0 0;
    color: var(--muted);
    font-size: 0.88rem;
    line-height: 1.35;
}

.upload-widget__body[b-0p6wmatdrs] {
    flex: 1 1 auto;
    min-height: 0;
    padding: 0.75rem 1.15rem 1rem;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--accent) 55%, var(--border)) color-mix(in srgb, var(--canvas), transparent 12%);
}

.upload-widget__body[b-0p6wmatdrs]::-webkit-scrollbar {
    width: 10px;
}

.upload-widget__body[b-0p6wmatdrs]::-webkit-scrollbar-track {
    background: var(--canvas);
    border-radius: 999px;
    margin: 4px 0;
}

.upload-widget__body[b-0p6wmatdrs]::-webkit-scrollbar-thumb {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--accent) 70%, var(--border)),
        color-mix(in srgb, var(--accent-ai) 45%, var(--accent))
    );
    border-radius: 999px;
    border: 2px solid var(--canvas);
}

.upload-widget__body[b-0p6wmatdrs]::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--accent) 85%, #ffffff 8%),
        color-mix(in srgb, var(--accent-ai) 55%, var(--accent))
    );
}

@media (max-width: 40rem) {
    .upload-widget__launcher:not(.upload-widget__launcher--inline)[b-0p6wmatdrs] {
        right: calc(clamp(0.75rem, 3vw, 1.5rem) + var(--floating-fab-upload-inline-shift-narrow));
    }

    .upload-widget__backdrop[b-0p6wmatdrs] {
        align-items: stretch;
        justify-content: flex-start;
        padding: max(0.35rem, env(safe-area-inset-top, 0px))
            max(0.5rem, env(safe-area-inset-right, 0px))
            max(0.35rem, env(safe-area-inset-bottom, 0px))
            max(0.5rem, env(safe-area-inset-left, 0px));
    }

    .upload-widget__dialog[b-0p6wmatdrs] {
        flex: 1 1 auto;
        min-height: 0;
        width: 100%;
        max-width: none;
        max-height: none;
        border-radius: 0.85rem;
    }

    .upload-widget__header[b-0p6wmatdrs] {
        flex-direction: column;
        padding: 1rem;
    }

    .upload-widget__header .secondary-button[b-0p6wmatdrs] {
        width: 100%;
    }

    .upload-widget__body[b-0p6wmatdrs] {
        padding: 0.65rem 0.85rem 0.85rem;
        padding-bottom: calc(0.85rem + var(--floating-widget-clearance));
    }
}

@media (max-width: 30rem) {
    /* Bottom-left: avoids covering assistant composer (full-width panel, FABs no longer stacked on right). */
    .upload-widget__launcher:not(.upload-widget__launcher--inline)[b-0p6wmatdrs] {
        left: clamp(0.75rem, 3vw, 1.5rem);
        right: auto;
        bottom: calc(var(--floating-fab-offset-y) + var(--floating-fab-safe-bottom));
    }
}
/* /Components/Filings/TrackedStateEditDialog.razor.rz.scp.css */
/*
 * Tracked-state dialog — extends the shared .admin-dialog scaffolding (defined
 * in wwwroot/app.css). Mirrors the sizing of the vendor dialog for visual
 * consistency; only the annual-report fieldset needs a state-specific tweak
 * to match the rest of the form's spacing.
 */
.tracked-state-dialog[b-x4nsgu839g] {
    width: min(100% - 2rem, 38rem);
}

.tracked-state-dialog__header[b-x4nsgu839g] {
    margin-bottom: 1.25rem;
    padding-bottom: 0.85rem;
    border-bottom: 1px solid var(--border);
}

.tracked-state-dialog__header h2[b-x4nsgu839g] {
    margin: 0.25rem 0 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text);
}

.tracked-state-dialog__header .eyebrow[b-x4nsgu839g] {
    margin: 0;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-tertiary);
}

.tracked-state-dialog__row[b-x4nsgu839g] {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr 1fr;
}

.tracked-state-dialog__row .form-field[b-x4nsgu839g] {
    margin-bottom: 0;
}

@media (max-width: 540px) {
    .tracked-state-dialog__row[b-x4nsgu839g] {
        grid-template-columns: 1fr;
    }
}

.tracked-state-dialog__textarea[b-x4nsgu839g] {
    min-height: 5rem;
    resize: vertical;
    line-height: 1.5;
    padding: 0.65rem 0.85rem;
}

.tracked-state-dialog__annual-due[b-x4nsgu839g] {
    border: 1px solid var(--border);
    border-radius: 0.6rem;
    padding: 0.85rem 1rem 1rem;
    margin: 0 0 1rem;
}

.tracked-state-dialog__annual-due legend[b-x4nsgu839g] {
    padding: 0 0.4rem;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted);
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-96ft1apt5f] {
    color-scheme: light only;
    background: #fef3c7;
    border-top: 1px solid #d97706;
    bottom: 0;
    box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.15);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.75rem 1.5rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
    font-size: 0.9rem;
    color: #92400e;
}

#blazor-error-ui .dismiss[b-96ft1apt5f] {
    cursor: pointer;
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
    transition: background-color 150ms ease;
}

#blazor-error-ui .dismiss:hover[b-96ft1apt5f] {
    background: rgba(0, 0, 0, 0.1);
}

#blazor-error-ui .reload[b-96ft1apt5f] {
    color: #92400e;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}
/* /Components/Layout/NotificationCenter.razor.rz.scp.css */
/*
 * Notification center bell + dropdown. Sized to match
 * .assistant-trigger so the top app bar trail has a consistent
 * rhythm.
 */

.notification-center[b-futytn2tr8] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.notification-center__trigger[b-futytn2tr8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 0.45rem;
    border: 1px solid var(--border, rgba(255, 255, 255, 0.12));
    border-radius: 0.55rem;
    background: var(--surface, rgba(255, 255, 255, 0.04));
    color: var(--text, #fff);
    cursor: pointer;
    transition: background-color var(--transition-fast, 180ms),
                border-color var(--transition-fast, 180ms),
                color var(--transition-fast, 180ms);
}

.notification-center__trigger:hover[b-futytn2tr8],
.notification-center__trigger:focus-visible[b-futytn2tr8] {
    border-color: var(--accent, #5eead4);
    color: var(--accent, #5eead4);
    outline: none;
}

.notification-center__trigger[data-active="true"][b-futytn2tr8] {
    border-color: var(--accent, #5eead4);
    color: var(--accent, #5eead4);
    background: color-mix(in srgb, var(--accent, #5eead4) 12%, transparent);
}

.notification-center__icon[b-futytn2tr8] {
    flex-shrink: 0;
}

.notification-center__badge[b-futytn2tr8] {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: #ef4444;
    color: #fff;
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    border: 2px solid var(--canvas, #0e1116);
    box-sizing: content-box;
    pointer-events: none;
}

/*
 * Dropdown panel. position: absolute against the relative-positioned
 * .notification-center container so the panel anchors right-aligned
 * to the bell. Width clamps to the viewport on narrow screens.
 */
.notification-center__panel[b-futytn2tr8] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: min(400px, calc(100vw - 1rem));
    /*
     * Tall enough to read a screenful of notifications, but never
     * extends past the bottom of the viewport (panel top sits at
     * ~3.75rem top bar + 8px gap; 6rem covers that plus breathing room).
     */
    max-height: min(40rem, calc(100dvh - 6rem));
    display: flex;
    flex-direction: column;
    background: var(--surface, #1c2230);
    border: 1px solid var(--border, rgba(255, 255, 255, 0.08));
    border-radius: 0.75rem;
    box-shadow: 0 12px 36px rgb(0 0 0 / 0.45);
    z-index: 50;
    overflow: hidden;
    animation: notification-panel-in-b-futytn2tr8 var(--transition-fast, 180ms) ease-out;
}

@keyframes notification-panel-in-b-futytn2tr8 {
    from {
        opacity: 0;
        transform: translateY(-4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .notification-center__panel[b-futytn2tr8] {
        animation: none;
    }
}

.notification-center__panel-header[b-futytn2tr8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem 0.65rem;
    border-bottom: 1px solid var(--border, rgba(255, 255, 255, 0.08));
}

.notification-center__panel-title[b-futytn2tr8] {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text, #fff);
}

.notification-center__mark-all[b-futytn2tr8] {
    border: 0;
    background: transparent;
    color: var(--accent, #5eead4);
    font: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 0.25rem 0.4rem;
    border-radius: 0.4rem;
    cursor: pointer;
    transition: background-color var(--transition-fast, 180ms);
}

.notification-center__mark-all:hover[b-futytn2tr8],
.notification-center__mark-all:focus-visible[b-futytn2tr8] {
    background: color-mix(in srgb, var(--accent, #5eead4) 15%, transparent);
    outline: none;
}

.notification-center__list[b-futytn2tr8] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.notification-center__empty[b-futytn2tr8] {
    margin: 0;
    padding: 2rem 1rem;
    text-align: center;
    color: var(--text-secondary, rgba(255, 255, 255, 0.55));
    font-size: 0.85rem;
}

.notification-center__row[b-futytn2tr8] {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    width: 100%;
    border: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--border, rgba(255, 255, 255, 0.08)), transparent 50%);
    background: transparent;
    color: var(--text, #fff);
    text-align: left;
    padding: 0.75rem 1rem;
    cursor: pointer;
    transition: background-color var(--transition-fast, 180ms);
    font: inherit;
}

.notification-center__row:hover[b-futytn2tr8],
.notification-center__row:focus-visible[b-futytn2tr8] {
    background: color-mix(in srgb, var(--elevated, #232a3a) 65%, transparent);
    outline: none;
}

.notification-center__row:last-child[b-futytn2tr8] {
    border-bottom: 0;
}

.notification-center__row--unread[b-futytn2tr8] {
    background: color-mix(in srgb, var(--accent, #5eead4) 5%, transparent);
}

.notification-center__row-dot[b-futytn2tr8] {
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    margin-top: 0.4rem;
    border-radius: 50%;
    background: transparent;
}

.notification-center__row-dot[data-unread="true"][b-futytn2tr8] {
    background: var(--accent, #5eead4);
}

.notification-center__row-body[b-futytn2tr8] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.notification-center__row-title[b-futytn2tr8] {
    font-weight: 600;
    font-size: 0.875rem;
    line-height: 1.3;
    color: var(--text, #fff);
}

.notification-center__row-text[b-futytn2tr8] {
    font-size: 0.8rem;
    line-height: 1.4;
    color: var(--text-secondary, rgba(255, 255, 255, 0.65));
}

.notification-center__row-meta[b-futytn2tr8] {
    font-size: 0.72rem;
    color: var(--text-tertiary, rgba(255, 255, 255, 0.45));
    margin-top: 0.1rem;
}

/*
 * Narrow widths: the bell stays in the trail, but the panel
 * stretches to almost-full-viewport width so the rows stay
 * readable on a phone.
 */
@media (max-width: 30rem) {
    .notification-center__panel[b-futytn2tr8] {
        right: -0.5rem;
        width: calc(100vw - 1rem);
    }
}
/* /Components/Layout/OrganizationSwitcher.razor.rz.scp.css */
.org-switcher[b-x3bicnv76s] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 0.5rem;
    position: relative;
}

.org-switcher__label[b-x3bicnv76s] {
    margin: 0;
    color: var(--text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.org-switcher__chip[b-x3bicnv76s],
.org-switcher__trigger[b-x3bicnv76s] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    background: var(--elevated);
    color: var(--text);
    font: inherit;
    text-align: left;
    width: 100%;
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.org-switcher__trigger[b-x3bicnv76s] {
    cursor: pointer;
}

.org-switcher__trigger:hover[b-x3bicnv76s],
.org-switcher__trigger:focus-visible[b-x3bicnv76s] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    background: color-mix(in srgb, var(--elevated), #ffffff 4%);
}

.org-switcher__trigger--open[b-x3bicnv76s] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 30%);
}

.org-switcher__dot[b-x3bicnv76s] {
    flex-shrink: 0;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), var(--accent-ai));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent), transparent 80%);
}

.org-switcher__name[b-x3bicnv76s] {
    flex: 1;
    min-width: 0;
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.org-switcher__chevron[b-x3bicnv76s] {
    flex-shrink: 0;
    color: var(--text-secondary);
    opacity: 0.85;
    transition: transform 200ms ease;
}

.org-switcher__trigger--open .org-switcher__chevron[b-x3bicnv76s] {
    transform: rotate(180deg);
}

.org-switcher__backdrop[b-x3bicnv76s] {
    position: fixed;
    inset: 0;
    z-index: 75;
    border: 0;
    padding: 0;
    margin: 0;
    background: transparent;
    cursor: default;
}

.org-switcher__menu[b-x3bicnv76s] {
    position: absolute;
    top: calc(100% + 0.4rem);
    left: 0;
    right: 0;
    z-index: 80;
    margin: 0;
    padding: 0.3rem;
    list-style: none;
    border: 1px solid var(--border);
    border-radius: 0.7rem;
    background: var(--surface);
    box-shadow: 0 22px 50px rgb(0 0 0 / 0.5);
    max-height: 18rem;
    overflow-y: auto;
}

.org-switcher__item[b-x3bicnv76s] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    padding: 0.55rem 0.65rem;
    border: 0;
    border-radius: 0.5rem;
    background: transparent;
    color: var(--text);
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: background-color var(--transition-fast);
}

.org-switcher__item:hover[b-x3bicnv76s],
.org-switcher__item:focus-visible[b-x3bicnv76s] {
    background: var(--elevated);
}

.org-switcher__item--active[b-x3bicnv76s] {
    background: color-mix(in srgb, var(--accent), transparent 88%);
}

.org-switcher__item-name[b-x3bicnv76s] {
    font-size: 0.85rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.org-switcher__item-role[b-x3bicnv76s] {
    flex-shrink: 0;
    font-size: 0.68rem;
    color: var(--text-tertiary);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-1vd21tmtma],
.components-reconnect-repeated-attempt-visible[b-1vd21tmtma],
.components-reconnect-failed-visible[b-1vd21tmtma],
.components-pause-visible[b-1vd21tmtma],
.components-resume-failed-visible[b-1vd21tmtma],
.components-rejoining-animation[b-1vd21tmtma] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-retrying[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-failed[b-1vd21tmtma],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-1vd21tmtma] {
    display: block;
}


#components-reconnect-modal[b-1vd21tmtma] {
    background-color: var(--surface, #161A22);
    color: var(--text, #E6E8EC);
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 1px solid var(--border, #2A2F38);
    border-radius: 0.75rem;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-1vd21tmtma 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-1vd21tmtma 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-1vd21tmtma 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-1vd21tmtma]::backdrop {
    background-color: rgba(0, 0, 0, 0.65);
    animation: components-reconnect-modal-fadeInOpacity-b-1vd21tmtma 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-1vd21tmtma {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-1vd21tmtma {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-1vd21tmtma {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-1vd21tmtma] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-1vd21tmtma] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-1vd21tmtma] {
    border: 0;
    background: linear-gradient(135deg, var(--accent, #7C9EFF), #6B8AE6);
    color: white;
    padding: 0.5rem 1.5rem;
    border-radius: 0.5rem;
    font-weight: 600;
    cursor: pointer;
    transition: filter 150ms ease;
}

    #components-reconnect-modal button:hover[b-1vd21tmtma] {
        filter: brightness(1.08);
    }

    #components-reconnect-modal button:active[b-1vd21tmtma] {
        filter: brightness(0.95);
    }

.components-rejoining-animation[b-1vd21tmtma] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-1vd21tmtma] {
        position: absolute;
        border: 3px solid var(--accent-ai, #4FD1C5);
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-1vd21tmtma 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-1vd21tmtma] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-1vd21tmtma {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Layout/UserAccountMenu.razor.rz.scp.css */
.user-account-menu[b-v2voqoqjbn] {
    position: relative;
    flex-shrink: 0;
}

.user-account-menu__trigger[b-v2voqoqjbn] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    /*
     * Width is shared with the popover so the two read as one expanded badge.
     * `width: 100%` lets the trigger fill the menu container; `max-width` caps
     * how wide the badge gets when the meta column is shown.
     */
    width: 100%;
    max-width: min(22rem, 72vw);
    padding: 0.35rem 0.55rem 0.35rem 0.35rem;
    /*
     * Lighter chrome so the badge stands clearly off the surface-tinted top
     * bar — softer-than-default border + a slightly brighter background.
     */
    border: 1px solid color-mix(in srgb, var(--border), #ffffff 14%);
    border-radius: 999px;
    background: color-mix(in srgb, var(--elevated), #ffffff 8%);
    color: var(--text);
    cursor: pointer;
    font: inherit;
    text-align: left;
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast),
                border-radius 200ms ease,
                border-bottom-color 200ms ease;
}

.user-account-menu__trigger:hover[b-v2voqoqjbn] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 30%);
    background: color-mix(in srgb, var(--elevated), #ffffff 14%);
}

/*
 * When the menu is open, the trigger flattens its bottom edge so it merges
 * flush with the top of the popover (forming one continuous capsule).
 */
.user-account-menu__trigger--open[b-v2voqoqjbn],
.user-account-menu__trigger--open:hover[b-v2voqoqjbn] {
    border-radius: 1.25rem 1.25rem 0 0;
    border-bottom-color: transparent;
    background: color-mix(in srgb, var(--elevated), #ffffff 10%);
}

.user-account-menu__avatar[b-v2voqoqjbn] {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    /*
     * Lighter teal disk so the initial reads cleanly against the badge.
     * Dark glyph color is preserved for AA contrast on the bright fill.
     */
    background: color-mix(in srgb, var(--accent-ai), #ffffff 22%);
    color: #0b1120;
    font-size: 0.85rem;
    font-weight: 800;
}

.user-account-menu__meta[b-v2voqoqjbn] {
    display: flex;
    flex-direction: column;
    gap: 0.08rem;
    min-width: 0;
    flex: 1;
}

.user-account-menu__name[b-v2voqoqjbn] {
    font-size: 0.82rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.user-account-menu__sub[b-v2voqoqjbn] {
    font-size: 0.68rem;
    /* Bumped from text-tertiary to text-secondary so the email + role line is legible. */
    color: var(--text-secondary);
    line-height: 1.25;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
}

.user-account-menu__chevron[b-v2voqoqjbn] {
    flex-shrink: 0;
    color: var(--text-secondary);
    opacity: 1;
    transition: transform 200ms ease;
}

.user-account-menu__trigger--open .user-account-menu__chevron[b-v2voqoqjbn] {
    transform: rotate(180deg);
}

.user-account-menu__backdrop[b-v2voqoqjbn] {
    position: fixed;
    inset: 0;
    z-index: 75;
    border: 0;
    padding: 0;
    margin: 0;
    background: transparent;
    cursor: default;
}

/*
 * Popover is anchored flush to the bottom of the trigger and sized to span
 * the menu container's full width, so trigger + popover read as one badge
 * that's expanded vertically. The accordion animation grows from the top
 * (transform-origin: top) and clamps overflow during the expand pass.
 */
.user-account-menu__popover[b-v2voqoqjbn] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 80;
    min-width: 12rem;
    padding: 0.4rem;
    border: 1px solid color-mix(in srgb, var(--border), #ffffff 14%);
    border-top: 0;
    border-radius: 0 0 1.25rem 1.25rem;
    /* Match the brighter trigger so the expanded badge reads as one piece. */
    background: color-mix(in srgb, var(--elevated), #ffffff 10%);
    box-shadow: 0 20px 44px rgb(0 0 0 / 0.32);
    overflow: hidden;
    transform-origin: top center;
    animation: user-account-menu-expand-b-v2voqoqjbn 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

@keyframes user-account-menu-expand-b-v2voqoqjbn {
    from {
        max-height: 0;
        opacity: 0;
        transform: scaleY(0.96);
    }
    to {
        max-height: 24rem;
        opacity: 1;
        transform: scaleY(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .user-account-menu__popover[b-v2voqoqjbn] {
        animation: none;
    }

    .user-account-menu__chevron[b-v2voqoqjbn],
    .user-account-menu__trigger[b-v2voqoqjbn] {
        transition: none;
    }
}

.user-account-menu__item[b-v2voqoqjbn] {
    display: block;
    padding: 0.6rem 0.8rem;
    border-radius: 0.6rem;
    color: var(--text);
    font-size: 0.875rem;
    text-decoration: none;
    transition: background-color var(--transition-fast);
}

.user-account-menu__item:hover[b-v2voqoqjbn] {
    /* Hover sits brighter than the now-lighter popover surface so it stays visible
     * against the matching trigger background without breaking the cohesive look. */
    background: color-mix(in srgb, var(--elevated), #ffffff 18%);
}

@media (max-width: 1024px) {
    .user-account-menu__meta[b-v2voqoqjbn] {
        display: none;
    }

    .user-account-menu__trigger[b-v2voqoqjbn] {
        width: auto;
        max-width: none;
        padding: 0.3rem;
    }

    .user-account-menu__chevron[b-v2voqoqjbn] {
        display: none;
    }

    /*
     * Mobile: trigger collapses to icon-only, so width-matching no longer makes
     * sense. Anchor the popover to the trigger's right edge and let it use its
     * own min-width. Keep the flush top + matching background for cohesion.
     */
    .user-account-menu__popover[b-v2voqoqjbn] {
        left: auto;
        right: 0;
        min-width: 13rem;
        border-top: 1px solid var(--border);
        border-radius: 0.85rem;
    }

    .user-account-menu__trigger--open[b-v2voqoqjbn],
    .user-account-menu__trigger--open:hover[b-v2voqoqjbn] {
        border-radius: 999px;
        border-bottom-color: var(--border);
    }
}
/* /Components/Pages/Admin.razor.rz.scp.css */
.admin-panel[b-k0gyogguy3] {
    max-width: 1280px;
}

.admin-tabs[b-k0gyogguy3] {
    margin-bottom: 1.5rem;
}

.admin-section[b-k0gyogguy3] {
    animation: fadeIn-b-k0gyogguy3 200ms ease;
}

@keyframes fadeIn-b-k0gyogguy3 {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}

.section-header[b-k0gyogguy3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.section-header h2[b-k0gyogguy3] {
    margin: 0;
    font-size: 1.5rem;
}

.primary-button[b-k0gyogguy3] {
    gap: 0.5rem;
    padding: 0.65rem 1.1rem;
}

.primary-button:focus-visible[b-k0gyogguy3] {
    outline: 3px solid var(--accent);
    outline-offset: 3px;
}

.secondary-button[b-k0gyogguy3] {
    gap: 0.35rem;
    font-weight: 500;
}

.danger-button[b-k0gyogguy3] {
    gap: 0.5rem;
    font-weight: 600;
}

.admin-grid[b-k0gyogguy3] {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
}

.admin-card[b-k0gyogguy3] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    padding: 1.25rem;
    box-shadow: 0 12px 40px rgb(0 0 0 / 0.2);
}

.admin-card h3[b-k0gyogguy3] {
    margin: 0 0 1rem;
    font-size: 1.2rem;
}

.card-stats[b-k0gyogguy3] {
    display: flex;
    gap: 2rem;
    margin: 0;
}

.card-stats > div[b-k0gyogguy3] {
    display: flex;
    flex-direction: column;
}

.card-stats dt[b-k0gyogguy3] {
    color: var(--muted);
    font-size: 0.85rem;
}

.card-stats dd[b-k0gyogguy3] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
}

.card-meta[b-k0gyogguy3] {
    margin: 1rem 0 0;
    font-size: 0.85rem;
}

.user-list[b-k0gyogguy3] {
    display: grid;
    gap: 1rem;
}

.user-card[b-k0gyogguy3] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    padding: 1.25rem;
    box-shadow: 0 12px 40px rgb(0 0 0 / 0.2);
    display: grid;
    gap: 1rem;
}

.user-info h3[b-k0gyogguy3] {
    margin: 0;
    font-size: 1.15rem;
}

.user-info p[b-k0gyogguy3] {
    margin: 0.25rem 0 0;
}

.user-memberships[b-k0gyogguy3] {
    display: grid;
    gap: 0.5rem;
}

.membership-row[b-k0gyogguy3] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    background: var(--panel-strong);
    border-radius: 0.5rem;
}

.firm-name[b-k0gyogguy3] {
    flex: 1;
    font-weight: 500;
}

.role-select[b-k0gyogguy3] {
    min-width: 7rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text);
    font: inherit;
    font-size: 0.9rem;
}

.role-select:focus-visible[b-k0gyogguy3] {
    outline: 3px solid var(--accent);
    outline-offset: 2px;
}

.user-actions[b-k0gyogguy3] {
    display: flex;
    gap: 0.5rem;
}

.error-message[b-k0gyogguy3] {
    margin: 1rem 0 0;
    padding: 0.75rem;
    border: 1px solid var(--red);
    border-radius: 0.5rem;
    background: rgba(220, 95, 95, 0.14);
    color: #ffd9d9;
    font-size: 0.9rem;
}

@media (max-width: 48rem) {
    .admin-tabs[b-k0gyogguy3] {
        margin-bottom: 1rem;
    }
}

@media (max-width: 36rem) {
    .section-header[b-k0gyogguy3] {
        flex-direction: column;
        align-items: stretch;
    }

    .section-header > .primary-button[b-k0gyogguy3],
    .section-header > .secondary-button[b-k0gyogguy3] {
        align-self: stretch;
        justify-content: center;
    }

    .membership-row[b-k0gyogguy3] {
        flex-wrap: wrap;
    }

    .firm-name[b-k0gyogguy3] {
        width: 100%;
        margin-bottom: 0.25rem;
    }
}
/* /Components/Pages/ArtifactDetail.razor.rz.scp.css */
.artifact-detail[b-xljs8yp2z6] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
}

.artifact-detail__header[b-xljs8yp2z6] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    margin-bottom: 1.5rem;
}

.artifact-detail__header-content[b-xljs8yp2z6] {
    flex: 1;
    min-width: 0;
}

.artifact-detail__eyebrow[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-tertiary);
    margin-bottom: 0.5rem;
}

.artifact-detail__eyebrow-divider[b-xljs8yp2z6] {
    color: var(--border);
}

.artifact-detail__status[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.artifact-detail__status--ready[b-xljs8yp2z6] {
    background: rgba(79, 209, 197, 0.15);
    color: var(--green);
}

.artifact-detail__status--pending[b-xljs8yp2z6] {
    background: rgba(229, 166, 61, 0.15);
    color: var(--amber);
}

.artifact-detail__status--failed[b-xljs8yp2z6] {
    background: rgba(239, 107, 107, 0.15);
    color: var(--red);
}

.artifact-detail__title[b-xljs8yp2z6] {
    margin: 0 0 0.5rem;
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--text);
}

.artifact-detail__description[b-xljs8yp2z6] {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.95rem;
    line-height: 1.5;
    max-width: 60ch;
}

.artifact-detail__actions[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.artifact-detail__meta[b-xljs8yp2z6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.5rem;
    padding: 1rem 1.25rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    margin-bottom: 1.5rem;
}

.artifact-detail__meta-item[b-xljs8yp2z6] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.artifact-detail__meta-label[b-xljs8yp2z6] {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-tertiary);
}

.artifact-detail__meta-value[b-xljs8yp2z6] {
    font-size: 0.85rem;
    color: var(--text);
}

.artifact-detail__error[b-xljs8yp2z6] {
    padding: 0.85rem 1rem;
    background: color-mix(in srgb, var(--red) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--red) 30%, transparent);
    border-radius: 0.65rem;
    color: #ffd9d9;
    font-size: 0.88rem;
    margin-bottom: 1.5rem;
}

.artifact-detail__panel[b-xljs8yp2z6] {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    overflow: hidden;
    min-width: 0;
}

.artifact-detail__panel + .artifact-detail__panel[b-xljs8yp2z6] {
    margin-top: 1rem;
}

.artifact-detail__panel-content[b-xljs8yp2z6] {
    padding: 1.25rem 1.5rem;
    line-height: 1.6;
    min-width: 0;
    overflow-x: auto;
    scrollbar-gutter: stable;
}

.artifact-detail__panel-content[b-xljs8yp2z6] (.assistant-widget__markdown),
.artifact-detail__panel-content[b-xljs8yp2z6] (.assistant-widget__visualization) {
    min-width: 0;
    max-width: 100%;
}

.artifact-detail__panel-content[b-xljs8yp2z6] (.assistant-widget__visualization) {
    margin-inline: 0;
}

.artifact-detail__panel-content[b-xljs8yp2z6] (.assistant-widget__markdown table) {
    max-width: 100%;
}

.artifact-detail__panel-content--centered[b-xljs8yp2z6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 200px;
    text-align: center;
    color: var(--text-secondary);
}

.artifact-detail__diagram-container[b-xljs8yp2z6] {
    padding: 1.5rem;
    background: linear-gradient(145deg, #0d1117 0%, #161b22 100%);
    /* Cap the container height to the viewport so tall diagrams are scrollable
     * in place instead of pushing the page. Users can go fullscreen for more.
     * overflow: auto so zoom-in lets the user pan around. */
    max-height: calc(100vh - 16rem);
    min-height: 500px;
    overflow: auto;
    display: block;
}

/* Don't constrain the wrap to the container width — let the inline SVG's
 * intrinsic size win so a naturally wide diagram (e.g. mermaid's 1600px
 * coordinate space) overflows horizontally. The outer
 * .artifact-detail__diagram-container has overflow: auto, which provides
 * the scrollbar. `safe center` keeps small diagrams centered while
 * preventing the well-known flexbox quirk where wider items get clipped
 * symmetrically and the user can't reach the left edge. */
.artifact-detail__diagram-container .assistant-widget__mermaid-wrap[b-xljs8yp2z6] {
    display: flex;
    justify-content: safe center;
    overflow: visible;
    max-height: none;
}

.artifact-detail__diagram-container .assistant-widget__mermaid--rendered[b-xljs8yp2z6] {
    background: transparent;
    padding: 0;
    display: inline-block;
}

/* Let the SVG paint at the size mermaid actually computed (the explicit
 * width/height attributes it now emits with useMaxWidth: false). max-width
 * is reset to none so we override the global app.css rule that would
 * otherwise shrink wide diagrams to fit the container. The outer
 * .artifact-detail__diagram-container scrolls when the SVG is too wide. */
.artifact-detail__diagram-container .assistant-widget__mermaid--rendered svg[b-xljs8yp2z6] {
    height: auto;
    max-width: none;
    max-height: none;
    display: block;
    filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3));
}

.artifact-detail__prompt-section[b-xljs8yp2z6] {
    border-top: 1px solid var(--border);
    padding: 1rem 1.5rem;
}

.artifact-detail__prompt-toggle[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-secondary);
    list-style: none;
    user-select: none;
}

.artifact-detail__prompt-toggle[b-xljs8yp2z6]::-webkit-details-marker {
    display: none;
}

.artifact-detail__prompt-toggle[b-xljs8yp2z6]::before {
    content: "";
    display: inline-block;
    width: 0.5em;
    height: 0.5em;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(-45deg);
    transition: transform 0.15s ease;
}

details[open] .artifact-detail__prompt-toggle[b-xljs8yp2z6]::before {
    transform: rotate(45deg);
}

.artifact-detail__prompt-toggle:hover[b-xljs8yp2z6] {
    color: var(--text);
}

.artifact-detail__prompt-code[b-xljs8yp2z6] {
    margin: 0.75rem 0 0;
    padding: 0.85rem 1rem;
    border-radius: 0.55rem;
    background: var(--canvas);
    border: 1px solid var(--border);
    color: var(--text-secondary);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.82rem;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    overflow-x: auto;
}

.artifact-detail__empty[b-xljs8yp2z6] {
    color: var(--text-tertiary);
    font-style: italic;
}

.artifact-detail__panel-toolbar[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface), var(--canvas) 50%);
    flex-wrap: wrap;
}

.artifact-detail__zoom-control[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.5rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.6rem;
}

.artifact-detail__zoom-control--fullscreen[b-xljs8yp2z6] {
    flex: 1 1 auto;
    max-width: 22rem;
    margin: 0 1rem;
    justify-content: center;
}

.artifact-detail__zoom-btn[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border: none;
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
    flex-shrink: 0;
}

.artifact-detail__zoom-btn:hover:not(:disabled)[b-xljs8yp2z6] {
    background: var(--elevated);
    color: var(--text);
}

.artifact-detail__zoom-btn:disabled[b-xljs8yp2z6] {
    opacity: 0.4;
    cursor: not-allowed;
}

.artifact-detail__zoom-slider[b-xljs8yp2z6] {
    flex: 1 1 8rem;
    min-width: 6rem;
    max-width: 14rem;
    height: 0.4rem;
    -webkit-appearance: none;
    appearance: none;
    background: var(--border);
    border-radius: 999px;
    cursor: pointer;
    margin: 0;
}

.artifact-detail__zoom-slider[b-xljs8yp2z6]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background: var(--accent);
    border: 2px solid var(--surface);
    cursor: pointer;
    transition: transform 0.1s, background-color 0.15s;
}

.artifact-detail__zoom-slider[b-xljs8yp2z6]::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

.artifact-detail__zoom-slider[b-xljs8yp2z6]::-moz-range-thumb {
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background: var(--accent);
    border: 2px solid var(--surface);
    cursor: pointer;
    transition: transform 0.1s;
}

.artifact-detail__zoom-slider[b-xljs8yp2z6]::-moz-range-thumb:hover {
    transform: scale(1.15);
}

.artifact-detail__zoom-slider:focus-visible[b-xljs8yp2z6] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.artifact-detail__zoom-reset[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 3rem;
    height: 1.75rem;
    padding: 0 0.5rem;
    border: none;
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
    flex-shrink: 0;
}

.artifact-detail__zoom-reset:hover[b-xljs8yp2z6] {
    background: var(--elevated);
    color: var(--text);
}

/* The stage applies the scale transform around the artifact content. We
 * use transform-origin: top center so zooming-in keeps the content anchored
 * to the top of the panel and the user can scroll the container to reach
 * the rest. width: max-content prevents the scaled content from being
 * clipped by its parent's content-box width. */
.artifact-detail__zoom-stage[b-xljs8yp2z6] {
    width: 100%;
    min-width: 0;
    transform-origin: top center;
    transition: transform 0.15s ease-out;
    will-change: transform;
}

.artifact-detail__fullscreen-btn[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.75rem;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--surface);
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.8rem;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}

.artifact-detail__fullscreen-btn:hover[b-xljs8yp2z6] {
    background: var(--elevated);
    color: var(--text);
    border-color: color-mix(in srgb, var(--border), #ffffff 15%);
}

.artifact-fullscreen[b-xljs8yp2z6] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    background: var(--canvas);
}

.artifact-fullscreen__header[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1.25rem;
    border-bottom: 1px solid var(--border);
    background: var(--surface);
    flex-shrink: 0;
}

.artifact-fullscreen__title[b-xljs8yp2z6] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.artifact-fullscreen__close[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    background: var(--canvas);
    color: var(--text-secondary);
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}

.artifact-fullscreen__close:hover[b-xljs8yp2z6] {
    background: var(--elevated);
    color: var(--text);
}

.artifact-fullscreen__content[b-xljs8yp2z6] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    display: block;
    padding: 2rem;
    background: linear-gradient(145deg, #0d1117 0%, #161b22 100%);
}

.artifact-fullscreen__content .artifact-detail__zoom-stage--fullscreen[b-xljs8yp2z6] {
    display: block;
    width: 100%;
    min-width: 100%;
    min-height: 100%;
    transform: none !important;
    transition: none;
}

.artifact-fullscreen__diagram[b-xljs8yp2z6] {
    width: 100%;
    min-width: 100%;
    min-height: 100%;
    max-width: none;
    margin: 0;
}

.artifact-fullscreen__diagram-canvas[b-xljs8yp2z6],
.artifact-fullscreen__diagram[b-xljs8yp2z6]  .artifact-fullscreen__diagram-canvas {
    position: relative;
    min-width: 100%;
    min-height: 100%;
}

.artifact-fullscreen__diagram-scale[b-xljs8yp2z6],
.artifact-fullscreen__diagram[b-xljs8yp2z6]  .artifact-fullscreen__diagram-scale {
    position: absolute;
    transform-origin: top left;
    will-change: transform;
}

.artifact-fullscreen__diagram-status[b-xljs8yp2z6],
.artifact-fullscreen__diagram[b-xljs8yp2z6]  .artifact-fullscreen__diagram-status {
    margin: 0;
    padding: 1rem 1.25rem;
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.artifact-fullscreen__diagram[b-xljs8yp2z6]  .artifact-fullscreen__diagram-clone {
    display: inline-block;
    width: max-content;
    max-width: none;
    overflow: visible;
}

.artifact-fullscreen__diagram[b-xljs8yp2z6]  .assistant-widget__mermaid--rendered {
    background: transparent;
    padding: 0;
    display: inline-block;
    width: max-content;
    max-width: none;
}

/* Same intent as the inline rule: let mermaid's intrinsic width win so a
 * wide flowchart renders crisp at its natural size. The fullscreen
 * container itself (.artifact-fullscreen__content) is overflow: auto and
 * occupies the full viewport, so very wide diagrams scroll horizontally.
 * The JS-managed scaler handles further zoom in/out. */
.artifact-fullscreen__diagram[b-xljs8yp2z6]  .assistant-widget__mermaid--rendered svg,
.artifact-fullscreen__diagram[b-xljs8yp2z6]  .artifact-fullscreen__diagram-svg {
    height: auto;
    max-width: none;
    max-height: none;
    display: block;
}

.artifact-fullscreen__content .assistant-widget__markdown[b-xljs8yp2z6] {
    max-width: 80ch;
    padding: 2rem;
    background: var(--surface);
    border-radius: 0.75rem;
    border: 1px solid var(--border);
}

.artifact-detail__export-group[b-xljs8yp2z6] {
    position: relative;
    display: inline-flex;
}

.artifact-detail__export-toggle[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.artifact-detail__export-menu[b-xljs8yp2z6] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.4rem);
    min-width: 18rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    box-shadow: 0 18px 50px rgb(0 0 0 / 0.45);
    padding: 0.4rem;
    z-index: 50;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.artifact-detail__export-menu-item[b-xljs8yp2z6] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    padding: 0.55rem 0.7rem;
    border-radius: 0.4rem;
    border: 0;
    background: transparent;
    color: var(--text);
    text-align: left;
    cursor: pointer;
    font: inherit;
    transition: background-color 0.12s, color 0.12s;
}

.artifact-detail__export-menu-item:hover[b-xljs8yp2z6],
.artifact-detail__export-menu-item:focus-visible[b-xljs8yp2z6] {
    background: var(--elevated);
    color: var(--text);
    outline: none;
}

.artifact-detail__export-menu-title[b-xljs8yp2z6] {
    font-size: 0.85rem;
    font-weight: 600;
}

.artifact-detail__export-menu-sub[b-xljs8yp2z6] {
    font-size: 0.75rem;
    color: var(--text-tertiary);
    line-height: 1.35;
}

/*
 * "Update this artifact" panel — formerly named "Refine with AI". Renamed
 * 2026-05 to share visual language with the assistant chat composer so the
 * user reads the panel as the same AI surface acting on this single row.
 * The accent-AI border + sparkle icon mirror AssistantTriggerButton; the
 * textarea matches assistant-widget__composer-textarea sizing for muscle
 * memory across surfaces.
 */
.artifact-detail__update-panel[b-xljs8yp2z6] {
    margin-top: 1rem;
    background: var(--surface);
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 60%);
    border-radius: 0.85rem;
    padding: 1.1rem 1.25rem 1.25rem;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-ai), transparent 92%);
}

.artifact-detail__update-header[b-xljs8yp2z6] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}

.artifact-detail__update-icon[b-xljs8yp2z6] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.55rem;
    background: color-mix(in srgb, var(--accent-ai) 18%, transparent);
    color: var(--accent-ai);
}

.artifact-detail__update-title[b-xljs8yp2z6] {
    margin: 0 0 0.15rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
}

.artifact-detail__update-description[b-xljs8yp2z6] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.45;
}

.artifact-detail__update-body[b-xljs8yp2z6] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.artifact-detail__update-textarea[b-xljs8yp2z6] {
    width: 100%;
    min-height: 4.25rem;
    padding: 0.65rem 0.8rem;
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    background: var(--canvas);
    color: var(--text);
    font: inherit;
    font-size: 0.92rem;
    line-height: 1.45;
    resize: vertical;
    transition: border-color 0.12s, box-shadow 0.12s;
}

.artifact-detail__update-textarea:focus-visible[b-xljs8yp2z6] {
    outline: none;
    border-color: var(--accent-ai);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-ai) 25%, transparent);
}

.artifact-detail__update-textarea[disabled][b-xljs8yp2z6] {
    opacity: 0.6;
    cursor: not-allowed;
}

.artifact-detail__update-error[b-xljs8yp2z6] {
    margin: 0;
    padding: 0.6rem 0.8rem;
    background: color-mix(in srgb, var(--red) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--red) 30%, transparent);
    border-radius: 0.5rem;
    color: #ffd9d9;
    font-size: 0.85rem;
}

.artifact-detail__update-actions[b-xljs8yp2z6] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.artifact-detail__update-status[b-xljs8yp2z6] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.artifact-detail__update-spinner[b-xljs8yp2z6] {
    width: 0.95rem;
    height: 0.95rem;
    border-radius: 50%;
    border: 2px solid color-mix(in srgb, var(--accent-ai) 35%, transparent);
    border-top-color: var(--accent-ai);
    animation: artifact-detail-spin-b-xljs8yp2z6 0.85s linear infinite;
}

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

@media (max-width: 768px) {
    .artifact-detail[b-xljs8yp2z6] {
        padding: 1.25rem 1rem 3rem;
    }

    .artifact-detail__header[b-xljs8yp2z6] {
        flex-direction: column;
        gap: 1rem;
    }

    .artifact-detail__actions[b-xljs8yp2z6] {
        width: 100%;
    }

    .artifact-detail__title[b-xljs8yp2z6] {
        font-size: 1.4rem;
    }

    .artifact-detail__meta[b-xljs8yp2z6] {
        gap: 0.75rem 1rem;
        padding: 0.85rem 1rem;
    }

    .artifact-detail__diagram-container[b-xljs8yp2z6] {
        padding: 1rem;
    }

    .artifact-fullscreen__content[b-xljs8yp2z6] {
        padding: 0.5rem;
    }
}
/* /Components/Pages/CollectionDetail.razor.rz.scp.css */
/*
 * Collection Detail page redesign.
 *
 * Replaces the previous stack of three full-width "dashboard-panel" cards
 * (Group scope / Add documents / Documents list) with:
 *   1. A single compact toolbar row that owns the two settings inline
 *      (group select on the left, add-document search on the right).
 *   2. A flat documents grid (no bullet markers, no nested card chrome) using
 *      the same density rhythm as MyDocuments.
 *
 * Goals:
 *   - Eliminate the wasted vertical space the old layout consumed.
 *   - Drop redundant card-on-card chrome that made the page feel heavy.
 *   - Make the per-document actions (View file / Details / Remove) discoverable.
 */

.collection-detail__scope-eyebrow[b-2lg74qf65o] {
    margin-left: 0.45rem;
    color: var(--accent-ai);
    text-transform: none;
    letter-spacing: 0;
    font-weight: 500;
}

/* Toolbar -------------------------------------------------------------- */
.collection-detail__toolbar[b-2lg74qf65o] {
    display: grid;
    gap: 0.85rem;
    grid-template-columns: minmax(14rem, 0.7fr) minmax(18rem, 1.3fr) auto;
    align-items: end;
    margin: 0 0 1rem;
    padding: 0.95rem 1.1rem;
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    background: var(--surface);
}

@media (max-width: 760px) {
    .collection-detail__toolbar[b-2lg74qf65o] {
        grid-template-columns: 1fr;
    }
}

/* Aligns the upload launcher to the right of the add-documents search,
   mirroring the end-aligned controls in the rest of the toolbar. */
.collection-detail__field--action[b-2lg74qf65o] {
    justify-self: end;
    align-self: end;
}

.collection-detail__field--action .collection-detail__field-label[b-2lg74qf65o] {
    visibility: hidden;
}

.collection-detail__field[b-2lg74qf65o] {
    display: grid;
    gap: 0.35rem;
    min-width: 0;
}

.collection-detail__field--grow[b-2lg74qf65o] {
    min-width: 0;
}

.collection-detail__field-label[b-2lg74qf65o] {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-secondary);
    letter-spacing: 0.02em;
}

.collection-detail__select[b-2lg74qf65o],
.collection-detail__search[b-2lg74qf65o] {
    width: 100%;
}

/* Add-documents inline search + dropdown of matches ------------------- */
.collection-detail__add-doc-control[b-2lg74qf65o] {
    position: relative;
    display: grid;
    gap: 0.35rem;
}

.collection-detail__add-doc-results[b-2lg74qf65o] {
    list-style: none;
    margin: 0;
    padding: 0.3rem;
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    background: var(--canvas);
    max-height: 16rem;
    overflow-y: auto;
}

.collection-detail__add-doc-row[b-2lg74qf65o] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.6rem;
    width: 100%;
    padding: 0.5rem 0.6rem;
    border: 0;
    border-radius: 0.5rem;
    background: transparent;
    color: var(--text);
    cursor: pointer;
    font: inherit;
    text-align: left;
    transition: background-color var(--transition-fast);
}

.collection-detail__add-doc-row:hover[b-2lg74qf65o],
.collection-detail__add-doc-row:focus-visible[b-2lg74qf65o] {
    background: color-mix(in srgb, var(--elevated), #ffffff 6%);
    outline: none;
}

.collection-detail__add-doc-title[b-2lg74qf65o] {
    font-size: 0.88rem;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.collection-detail__add-doc-action[b-2lg74qf65o] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--accent-ai);
}

.collection-detail__add-doc-empty[b-2lg74qf65o] {
    margin: 0;
    padding: 0.4rem 0.55rem;
    font-size: 0.82rem;
}

/* Inline status messages ---------------------------------------------- */
.collection-detail__status[b-2lg74qf65o] {
    margin: 0 0 0.85rem;
    padding: 0.55rem 0.8rem;
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 50%);
    border-radius: 0.55rem;
    background: color-mix(in srgb, var(--accent-ai), transparent 88%);
    color: var(--text);
    font-size: 0.82rem;
}

/* Documents section --------------------------------------------------- */
.collection-detail__docs[b-2lg74qf65o] {
    margin: 0;
}

.collection-detail__docs-heading[b-2lg74qf65o] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.85rem;
    margin: 0 0 0.7rem;
}

.collection-detail__docs-title[b-2lg74qf65o] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text);
}

.collection-detail__docs-count[b-2lg74qf65o] {
    font-size: 0.78rem;
}

.collection-detail__empty[b-2lg74qf65o] {
    text-align: left;
    padding: 1rem 0;
}

.collection-detail__doc-grid[b-2lg74qf65o] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
}

.collection-detail__doc-card[b-2lg74qf65o] {
    display: grid;
    gap: 0.5rem;
    padding: 0.85rem 0.95rem 0.75rem;
    border: 1px solid var(--border);
    border-radius: 0.7rem;
    background: var(--surface);
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.collection-detail__doc-card:hover[b-2lg74qf65o] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    background: color-mix(in srgb, var(--surface), #ffffff 3%);
}

.collection-detail__doc-card-header[b-2lg74qf65o] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.collection-detail__doc-title[b-2lg74qf65o] {
    display: block;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--text);
    text-decoration: none;
    overflow: hidden;
    /* Two-line clamp keeps card heights uniform across long & short titles. */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.collection-detail__doc-title:hover[b-2lg74qf65o],
.collection-detail__doc-title:focus-visible[b-2lg74qf65o] {
    color: var(--accent);
}

.collection-detail__doc-actions[b-2lg74qf65o] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    flex-wrap: wrap;
    padding-top: 0.45rem;
    border-top: 1px solid color-mix(in srgb, var(--border), transparent 45%);
    font-size: 0.78rem;
}

.collection-detail__doc-action[b-2lg74qf65o] {
    border: 0;
    padding: 0;
    margin: 0;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    font: inherit;
    text-decoration: none;
    transition: color var(--transition-fast);
}

.collection-detail__doc-action:hover[b-2lg74qf65o],
.collection-detail__doc-action:focus-visible[b-2lg74qf65o] {
    color: var(--text);
    outline: none;
}

.collection-detail__doc-action--danger[b-2lg74qf65o] {
    margin-left: auto;
    color: color-mix(in srgb, var(--red), #ffffff 8%);
}

.collection-detail__doc-action--danger:hover[b-2lg74qf65o],
.collection-detail__doc-action--danger:focus-visible[b-2lg74qf65o] {
    color: var(--red);
}
/* /Components/Pages/Collections.razor.rz.scp.css */
/*
 * Collections page: only owns the *wrapper* + label rhythm for the inline
 * "New collection" form. Inputs and the submit button reuse the global
 * .upload-form__input and .upload-form__submit so look-and-feel stays
 * consistent with every other create form in the app (no bespoke chrome).
 */
.collections-create[b-vmowe5cktm] {
    margin: 0 0 1.25rem;
    padding: 1rem 1.15rem 1.15rem;
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    background: var(--surface);
}

.collections-create__heading[b-vmowe5cktm] {
    margin: 0 0 0.85rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
}

.collections-create__row[b-vmowe5cktm] {
    display: grid;
    gap: 0.65rem 0.85rem;
    grid-template-columns: minmax(12rem, 0.85fr) minmax(14rem, 1.4fr) auto;
    align-items: end;
}

@media (max-width: 720px) {
    .collections-create__row[b-vmowe5cktm] {
        grid-template-columns: 1fr;
        align-items: stretch;
    }
}

.collections-create__field[b-vmowe5cktm] {
    display: grid;
    gap: 0.35rem;
    min-width: 0;
}

.collections-create__field--grow[b-vmowe5cktm] {
    min-width: 0;
}

.collections-create__label[b-vmowe5cktm] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-secondary);
    letter-spacing: 0.02em;
    /* Keep "(optional)" inline with the label rather than wrapping. */
    white-space: nowrap;
}

/*
 * Compact override of the global .upload-form__submit min-width — that one is
 * 10rem (sized for full-width upload forms); inline here we want the button to
 * sit naturally at the end of the row without forcing extra horizontal space.
 */
.collections-create__submit[b-vmowe5cktm] {
    min-width: auto;
    padding: 0 1.25rem;
}
/* /Components/Pages/ConversationPrint.razor.rz.scp.css */
/* Print-friendly styles for /conversations/{id}/print. We render this on a
 * white background with dark text regardless of the host theme so the
 * browser's "Save as PDF" produces a readable document. The .no-print
 * helper hides the toolbar inside print previews. */

.conversation-print[b-6asdnzivjn] {
    max-width: 8.5in;
    margin: 0 auto;
    padding: 1.5rem 1.5rem 4rem;
    background: #ffffff;
    color: #1f2937;
    font-family: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    font-size: 11pt;
    line-height: 1.55;
}

.conversation-print__status[b-6asdnzivjn] {
    text-align: center;
    color: #4b5563;
    padding: 3rem 1rem;
}

.conversation-print__notice[b-6asdnzivjn] {
    border: 1px solid #d1d5db;
    background: #f9fafb;
    padding: 1.25rem 1.5rem;
    border-radius: 0.5rem;
    color: #1f2937;
}

.conversation-print__notice h1[b-6asdnzivjn] {
    margin: 0 0 0.4rem;
    font-size: 1.25rem;
}

.conversation-print__header[b-6asdnzivjn] {
    border-bottom: 1px solid #d1d5db;
    padding-bottom: 1rem;
    margin-bottom: 1.5rem;
}

.conversation-print__title[b-6asdnzivjn] {
    margin: 0 0 0.4rem;
    font-size: 1.6rem;
    font-weight: 700;
    color: #111827;
    line-height: 1.2;
}

.conversation-print__meta[b-6asdnzivjn] {
    margin: 0;
    color: #4b5563;
    font-size: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.conversation-print__toolbar[b-6asdnzivjn] {
    display: flex;
    gap: 0.5rem;
    margin-top: 1rem;
    flex-wrap: wrap;
}

.conversation-print__action[b-6asdnzivjn] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.85rem;
    border-radius: 0.4rem;
    background: #1f2937;
    color: #ffffff;
    text-decoration: none;
    border: 0;
    font: inherit;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background-color 0.12s, color 0.12s;
}

.conversation-print__action:hover[b-6asdnzivjn],
.conversation-print__action:focus-visible[b-6asdnzivjn] {
    background: #111827;
    outline: none;
    color: #ffffff;
}

.conversation-print__action--ghost[b-6asdnzivjn] {
    background: transparent;
    color: #1f2937;
    border: 1px solid #d1d5db;
}

.conversation-print__action--ghost:hover[b-6asdnzivjn],
.conversation-print__action--ghost:focus-visible[b-6asdnzivjn] {
    background: #f3f4f6;
    color: #111827;
}

.conversation-print__transcript[b-6asdnzivjn] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.conversation-print__message[b-6asdnzivjn] {
    border: 1px solid #e5e7eb;
    border-radius: 0.55rem;
    padding: 0.85rem 1rem;
    background: #ffffff;
    page-break-inside: avoid;
    break-inside: avoid;
}

.conversation-print__message--user[b-6asdnzivjn] {
    background: #f3f4f6;
    border-color: #d1d5db;
}

.conversation-print__message--assistant[b-6asdnzivjn] {
    background: #ffffff;
    border-color: #e5e7eb;
}

.conversation-print__message-header[b-6asdnzivjn] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.conversation-print__message-role[b-6asdnzivjn] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #4b5563;
}

.conversation-print__message-timestamp[b-6asdnzivjn] {
    font-size: 0.72rem;
    color: #6b7280;
}

.conversation-print__message-body[b-6asdnzivjn] {
    color: #1f2937;
}

.conversation-print__message-body :global(.assistant-widget__markdown)[b-6asdnzivjn] {
    color: #1f2937;
}

.conversation-print__message-body :global(.assistant-widget__markdown p)[b-6asdnzivjn] {
    margin: 0 0 0.65rem;
}

.conversation-print__message-body :global(.assistant-widget__markdown a)[b-6asdnzivjn] {
    color: #1d4ed8;
}

.conversation-print__message-body :global(.assistant-widget__markdown pre)[b-6asdnzivjn],
.conversation-print__message-body :global(.assistant-widget__markdown code)[b-6asdnzivjn] {
    background: #f3f4f6;
    color: #1f2937;
    border: 1px solid #e5e7eb;
    border-radius: 0.3rem;
}

.conversation-print__message-body :global(.assistant-widget__markdown pre)[b-6asdnzivjn] {
    padding: 0.6rem 0.75rem;
    overflow: auto;
}

.conversation-print__message-body :global(.assistant-widget__markdown table)[b-6asdnzivjn] {
    width: 100%;
    border-collapse: collapse;
    margin: 0.6rem 0;
}

.conversation-print__message-body :global(.assistant-widget__markdown th)[b-6asdnzivjn],
.conversation-print__message-body :global(.assistant-widget__markdown td)[b-6asdnzivjn] {
    border: 1px solid #d1d5db;
    padding: 0.4rem 0.6rem;
}

.conversation-print__message-body :global(.assistant-widget__markdown th)[b-6asdnzivjn] {
    background: #f9fafb;
}

.conversation-print__message-body :global(.assistant-widget__mermaid-wrap)[b-6asdnzivjn] {
    background: transparent;
    padding: 0;
}

.conversation-print__message-attachments[b-6asdnzivjn] {
    margin: 0.65rem 0 0;
    padding-left: 1.1rem;
    color: #4b5563;
    font-size: 0.85rem;
}

.conversation-print__message-attachments .muted[b-6asdnzivjn] {
    color: #6b7280;
}

.conversation-print__citations[b-6asdnzivjn] {
    margin-top: 2rem;
    border-top: 1px solid #d1d5db;
    padding-top: 1rem;
}

.conversation-print__citations h2[b-6asdnzivjn] {
    margin: 0 0 0.5rem;
    font-size: 1rem;
}

.conversation-print__citations ol[b-6asdnzivjn] {
    margin: 0;
    padding-left: 1.25rem;
    color: #1f2937;
}

.conversation-print__citations a[b-6asdnzivjn] {
    color: #1d4ed8;
    text-decoration: underline;
}

@media print {
    @page {
        size: auto;
        margin: 0.5in;
    }

    body[b-6asdnzivjn] {
        background: #ffffff !important;
        color: #1f2937 !important;
    }

    .conversation-print[b-6asdnzivjn] {
        max-width: none;
        padding: 0;
    }

    .no-print[b-6asdnzivjn] {
        display: none !important;
    }

    .conversation-print__message--user[b-6asdnzivjn] {
        background: #f9fafb !important;
    }
}
/* /Components/Pages/DeadlineMonitor.razor.rz.scp.css */
.deadline-list[b-svy1tateth] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.85rem;
}

.deadline-row[b-svy1tateth] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-left-width: 4px;
    border-radius: 1rem;
    box-shadow: var(--shadow-lg);
    padding: 1.1rem 1.25rem;
    display: grid;
    gap: 0.6rem;
    transition: border-color var(--transition-fast),
                box-shadow var(--transition-fast),
                transform var(--transition-fast);
}

.deadline-row:hover[b-svy1tateth] {
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-xl);
}

.deadline-row-header[b-svy1tateth] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.deadline-row-title[b-svy1tateth] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.deadline-row h2[b-svy1tateth] {
    margin: 0;
    font-size: 1.15rem;
    line-height: 1.35;
}

.urgency-indicator[b-svy1tateth] {
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 0.28rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    background: rgba(16, 24, 34, 0.8);
    color: var(--text);
    white-space: nowrap;
    transition: transform var(--transition-fast);
}

.urgency-indicator.urgency-overdue[b-svy1tateth] {
    color: #fff;
    background: var(--red);
    border-color: var(--red);
    animation: pulse-overdue-b-svy1tateth 2s ease-in-out infinite;
}

@keyframes pulse-overdue-b-svy1tateth {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.85;
    }
}

.urgency-indicator.urgency-upcoming[b-svy1tateth] {
    color: var(--text);
    background: rgba(217, 154, 43, 0.18);
    border-color: color-mix(in srgb, var(--amber), var(--border) 55%);
}

.deadline-progress[b-svy1tateth] {
    width: 100%;
    height: 0.5rem;
    background: var(--canvas);
    border: 1px solid var(--border);
    border-radius: 999px;
    overflow: hidden;
}

.deadline-progress .bar[b-svy1tateth] {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--accent-ai), var(--amber));
    border-radius: inherit;
    transition: width 0.35s ease-out;
}

.deadline-row.status-overdue .deadline-progress .bar[b-svy1tateth] {
    background: var(--red);
}

.reminder-badges[b-svy1tateth] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.reminder-badges li[b-svy1tateth] {
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 0.22rem 0.6rem;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--muted);
    background: rgba(16, 24, 34, 0.8);
    transition: background-color var(--transition-fast);
}

/* Recurring payments section */

.recurring-payments-section[b-svy1tateth] {
    margin-bottom: 2.5rem;
}

.recurring-payment-row[b-svy1tateth] {
    border-left-color: var(--accent-ai);
}

.recurring-amount[b-svy1tateth] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--accent-ai);
    white-space: nowrap;
}

.recurring-actions[b-svy1tateth] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.icon-button[b-svy1tateth] {
    appearance: none;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    padding: 0.35rem 0.75rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text);
    cursor: pointer;
    transition: background-color var(--transition-fast), border-color var(--transition-fast);
}

.icon-button:hover[b-svy1tateth],
.icon-button:focus-visible[b-svy1tateth] {
    background: rgba(255, 255, 255, 0.05);
    border-color: var(--accent-ai);
}

.icon-button--danger:hover[b-svy1tateth],
.icon-button--danger:focus-visible[b-svy1tateth] {
    border-color: var(--red);
    color: var(--red);
}

.frequency-pill[b-svy1tateth] {
    background: rgba(79, 209, 197, 0.15);
    border-color: var(--accent-ai);
    color: var(--accent-ai);
}

/* Form */

.recurring-form-card[b-svy1tateth] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    padding: 1.5rem;
    margin-bottom: 1rem;
}

.recurring-form-card h3[b-svy1tateth] {
    margin: 0 0 1rem;
    font-size: 1.1rem;
}

.recurring-form[b-svy1tateth] {
    display: grid;
    gap: 1rem;
}

.form-row[b-svy1tateth] {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.form-field[b-svy1tateth] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    flex: 1 1 200px;
}

.form-field--narrow[b-svy1tateth] {
    flex: 0 1 160px;
}

.form-field label[b-svy1tateth] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--muted);
    letter-spacing: 0.01em;
}

.form-input[b-svy1tateth] {
    appearance: none;
    background: var(--canvas);
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    padding: 0.55rem 0.75rem;
    font: inherit;
    font-size: 0.9rem;
    color: var(--text);
    transition: border-color var(--transition-fast);
}

.form-input:focus[b-svy1tateth] {
    outline: none;
    border-color: var(--accent-ai);
}

.form-actions[b-svy1tateth] {
    display: flex;
    gap: 0.75rem;
    padding-top: 0.5rem;
}

.form-error[b-svy1tateth] {
    color: var(--red);
    font-size: 0.85rem;
    margin: 0;
}

.danger-button[b-svy1tateth] {
    appearance: none;
    background: var(--red);
    border: none;
    border-radius: 0.5rem;
    padding: 0.55rem 1.1rem;
    font: inherit;
    font-size: 0.9rem;
    font-weight: 600;
    color: #fff;
    cursor: pointer;
    transition: opacity var(--transition-fast);
}

.danger-button:hover[b-svy1tateth] {
    opacity: 0.9;
}

.danger-button:disabled[b-svy1tateth] {
    opacity: 0.6;
    cursor: not-allowed;
}

/* Confirmation overlay */

.confirm-overlay[b-svy1tateth] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    padding: 1rem;
}

.confirm-card[b-svy1tateth] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    padding: 1.5rem 2rem;
    max-width: 420px;
    width: 100%;
    box-shadow: var(--shadow-xl);
}

.confirm-card h3[b-svy1tateth] {
    margin: 0 0 0.75rem;
    font-size: 1.15rem;
}

.confirm-card p[b-svy1tateth] {
    margin: 0 0 1.25rem;
    color: var(--muted);
    line-height: 1.5;
}

@media (max-width: 640px) {
    .deadline-row-header[b-svy1tateth] {
        align-items: flex-start;
    }

    .deadline-row[b-svy1tateth] {
        padding: 1rem;
    }

    .form-row[b-svy1tateth] {
        flex-direction: column;
    }

    .form-field--narrow[b-svy1tateth] {
        flex: 1 1 100%;
    }
}
/* /Components/Pages/DocumentDetail.razor.rz.scp.css */
.document-detail-shell[b-tiidu7hxri] {
    display: grid;
    gap: 0.85rem;
}

/*
 * Density pass: tighter rhythm, smaller meta cells, no card chrome leftover
 * from the legacy hero-panel — header now sits on the page background.
 */
.document-detail-hero[b-tiidu7hxri] {
    margin-bottom: 0;
}

.document-hero-top[b-tiidu7hxri],
.document-hero-content[b-tiidu7hxri],
.document-pdf-header[b-tiidu7hxri] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.document-hero-top[b-tiidu7hxri] {
    margin-bottom: 0.6rem;
}

.document-hero-content[b-tiidu7hxri] {
    align-items: flex-end;
}

.document-detail-summary-row[b-tiidu7hxri] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.65rem 1rem;
    margin-top: 0.4rem;
}

.document-detail-actions[b-tiidu7hxri] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 0.3rem;
    max-width: 100%;
    margin-left: auto;
    padding-bottom: 0.05rem;
}

.document-detail-actions > .secondary-button[b-tiidu7hxri],
.document-detail-actions > .danger-button[b-tiidu7hxri] {
    min-height: 1.85rem;
    padding: 0.25rem 0.55rem;
    border-radius: 0.45rem;
    font-size: 0.78rem;
    font-weight: 650;
    line-height: 1;
}

.document-detail-actions .delete-confirmation[b-tiidu7hxri] {
    flex-basis: 100%;
    margin: 0 0 0.1rem;
    padding: 0.4rem 0.55rem;
    border-radius: 0.45rem;
    background: color-mix(in srgb, var(--red), transparent 88%);
    color: var(--text);
    font-size: 0.78rem;
    line-height: 1.35;
}

.danger-button--subtle[b-tiidu7hxri] {
    opacity: 0.75;
}

.danger-button--subtle:hover[b-tiidu7hxri],
.danger-button--subtle:focus-visible[b-tiidu7hxri] {
    opacity: 1;
}

/*
 * AI summary card.
 *
 * Sits directly under the metadata grid on the Document Detail page so users
 * get a high-level read of the document without leaving the page. Shares the
 * surface tone of other content panels but with a slightly tighter rhythm so
 * it doesn't dominate the page.
 */
/*
 * Unified AI panel: hosts the document summary AND the "Chat about this
 * document" CTA in one card so the user reads both as a single AI surface
 * scoped to this document. Visually keyed with the same accent-AI border
 * + sparkle icon as <AssistantTriggerButton /> and the artifact "Update
 * this artifact" panel so AI affordances feel consistent across pages.
 *
 * Legacy class names (`document-summary-card*`) are intentionally NOT
 * preserved — no other consumer references them after this refactor.
 */
.document-ai-panel[b-tiidu7hxri] {
    display: grid;
    gap: 0.65rem;
    padding: 1rem 1.15rem;
    border: 1px solid color-mix(in srgb, var(--accent-ai), var(--border) 60%);
    border-radius: 0.85rem;
    background: var(--surface);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-ai), transparent 92%);
}

.document-ai-panel__header[b-tiidu7hxri] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: flex-start;
    column-gap: 0.85rem;
    row-gap: 0.55rem;
}

.document-ai-panel__icon[b-tiidu7hxri] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.55rem;
    background: color-mix(in srgb, var(--accent-ai) 18%, transparent);
    color: var(--accent-ai);
}

.document-ai-panel__heading[b-tiidu7hxri] {
    min-width: 0;
}

.document-ai-panel__heading h2[b-tiidu7hxri] {
    margin: 0.1rem 0 0;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
}

.document-ai-panel__heading .eyebrow[b-tiidu7hxri] {
    color: var(--accent-ai);
}

.document-ai-panel__actions[b-tiidu7hxri] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    grid-column: 3 / 4;
}

.document-ai-panel__chat-cta:disabled[b-tiidu7hxri] {
    opacity: 0.55;
    cursor: not-allowed;
}

.document-ai-panel__body[b-tiidu7hxri] {
    color: var(--text);
    font-size: 0.92rem;
    line-height: 1.55;
}

.document-ai-panel__meta[b-tiidu7hxri] {
    margin: 0;
    padding-top: 0.45rem;
    border-top: 1px solid color-mix(in srgb, var(--border), transparent 45%);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.document-ai-panel__footer[b-tiidu7hxri] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    padding-top: 0.5rem;
    border-top: 1px dashed color-mix(in srgb, var(--border), transparent 45%);
    font-size: 0.78rem;
}

.document-ai-panel__split-link[b-tiidu7hxri] {
    color: var(--accent-ai);
    font-weight: 600;
    text-decoration: none;
}

.document-ai-panel__split-link:hover[b-tiidu7hxri],
.document-ai-panel__split-link:focus-visible[b-tiidu7hxri] {
    text-decoration: underline;
}

/*
 * AI suggestions review panel — second card on the document detail
 * page when the metadata extractor produced pending suggestions.
 * Uses the same border/shadow tinting as the summary card so they
 * read as a pair, but the wand icon + intro copy make it clear
 * the user has decisions to make here.
 */
.document-ai-panel--review[b-tiidu7hxri] {
    /*
     * Slightly cooler accent so the eye doesn't conflate the two
     * AI panels visually. Pulls from --accent (brand teal) instead
     * of --accent-ai.
     */
    border-color: color-mix(in srgb, var(--accent), var(--border) 60%);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent), transparent 92%);
}

.document-ai-panel--review .document-ai-panel__icon[b-tiidu7hxri] {
    background: color-mix(in srgb, var(--accent) 18%, transparent);
    color: var(--accent);
}

.document-ai-panel--review .document-ai-panel__heading .eyebrow[b-tiidu7hxri] {
    color: var(--accent);
}

.document-ai-panel__suggestion-intro[b-tiidu7hxri] {
    margin: 0;
    font-size: 0.85rem;
    line-height: 1.5;
}

.document-ai-suggestions[b-tiidu7hxri] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.55rem;
}

.document-ai-suggestion[b-tiidu7hxri] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid color-mix(in srgb, var(--border), transparent 35%);
    border-radius: 0.6rem;
    background: color-mix(in srgb, var(--canvas), transparent 35%);
}

.document-ai-suggestion__body[b-tiidu7hxri] {
    min-width: 0;
    display: grid;
    gap: 0.25rem;
}

.document-ai-suggestion__label[b-tiidu7hxri] {
    margin: 0;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-secondary);
}

.document-ai-suggestion__values[b-tiidu7hxri] {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 0.6rem;
    font-size: 0.92rem;
    line-height: 1.4;
}

.document-ai-suggestion__current[b-tiidu7hxri] {
    color: var(--text-secondary);
    text-decoration: line-through;
    text-decoration-color: color-mix(in srgb, var(--text-secondary), transparent 40%);
}

.document-ai-suggestion__arrow[b-tiidu7hxri] {
    color: var(--text-tertiary);
    font-size: 0.85rem;
}

.document-ai-suggestion__suggested[b-tiidu7hxri] {
    color: var(--text);
    font-weight: 600;
}

.document-ai-suggestion__confidence[b-tiidu7hxri] {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 12%, transparent);
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
}

.document-ai-suggestion__rationale[b-tiidu7hxri] {
    margin: 0.15rem 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
}

.document-ai-suggestion__actions[b-tiidu7hxri] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: flex-start;
}

@media (max-width: 36rem) {
    .document-ai-suggestion[b-tiidu7hxri] {
        grid-template-columns: minmax(0, 1fr);
    }

    .document-ai-suggestion__actions[b-tiidu7hxri] {
        justify-self: flex-end;
    }
}

@media (max-width: 36rem) {
    /*
     * On narrow screens drop the icon column and let the heading + actions
     * stack so nothing gets cut off; the icon already has subtle visual
     * weight and the eyebrow already says "AI assistant".
     */
    .document-ai-panel__header[b-tiidu7hxri] {
        grid-template-columns: 1fr;
    }

    .document-ai-panel__icon[b-tiidu7hxri] {
        display: none;
    }

    .document-ai-panel__actions[b-tiidu7hxri] {
        grid-column: 1 / -1;
    }
}

/*
 * Ingestion-section action row: hosts the "Reprocess document" button plus its
 * inline status message. Sits below the ingestion status / error explanation
 * with a slim margin so it reads as part of the same panel.
 */
.document-ingestion-actions[b-tiidu7hxri] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    flex-wrap: wrap;
    margin-top: 0.85rem;
}

.document-ingestion-actions__status[b-tiidu7hxri] {
    font-size: 0.82rem;
}

/*
 * Ingestion progress indicator: small "Indexing X of Y chunks" label plus a
 * thin bar that uses the existing accent surface tokens. Reuses the same
 * vocabulary as other panels (border, surface, accent) so it inherits theming
 * without introducing new color names.
 */
.ingestion-progress[b-tiidu7hxri] {
    display: grid;
    gap: 0.4rem;
    margin-top: 0.6rem;
}

.ingestion-progress__label[b-tiidu7hxri] {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.85rem;
    font-weight: 600;
}

.ingestion-progress__bar[b-tiidu7hxri] {
    position: relative;
    width: 100%;
    height: 0.5rem;
    border-radius: 999px;
    background: color-mix(in srgb, var(--border), transparent 40%);
    overflow: hidden;
}

.ingestion-progress__fill[b-tiidu7hxri] {
    display: block;
    height: 100%;
    background: var(--accent);
    transition: width 200ms ease-out;
}

/*
 * Labeled-badge row that sits between the page title and the metadata grid.
 * Each cell pairs a tiny uppercase label with a single status badge so the
 * meaning of "Partial Success" / "Receipt" / etc. is immediately scannable
 * (vs. floating naked badges next to the title with no context).
 */
.document-detail-badges[b-tiidu7hxri] {
    list-style: none;
    flex: 1 1 30rem;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem 1.25rem;
}

.document-detail-badges__item[b-tiidu7hxri] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    min-width: 0;
}

.document-detail-badges__label[b-tiidu7hxri] {
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-tertiary);
    line-height: 1;
}

.document-detail-badges .type-pill[b-tiidu7hxri],
.document-detail-badges .status-badge[b-tiidu7hxri],
.document-detail-badges .info-chip[b-tiidu7hxri] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    margin: 0;
    padding: 0.2rem 0.55rem;
    border: none;
    border-radius: 0.35rem;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 600;
    text-align: center;
    line-height: 1.3;
    cursor: default;
    pointer-events: none;
}

.document-detail-badges .status-badge.status-active[b-tiidu7hxri] {
    background: rgba(79, 209, 197, 0.12);
    color: var(--green);
}

.document-detail-badges .status-badge.status-warning[b-tiidu7hxri] {
    background: rgba(229, 166, 61, 0.12);
    color: var(--amber);
}

.document-detail-badges .status-badge.status-pending[b-tiidu7hxri] {
    background: rgba(229, 166, 61, 0.12);
    color: var(--amber);
}

.document-detail-badges .status-badge.status-completed[b-tiidu7hxri] {
    background: rgba(79, 209, 197, 0.12);
    color: var(--green);
}

.document-detail-badges .status-badge.status-overdue[b-tiidu7hxri] {
    background: rgba(239, 107, 107, 0.12);
    color: var(--red);
}

.info-chip[b-tiidu7hxri] {
    gap: 0.35rem;
    white-space: nowrap;
}

.info-chip__icon[b-tiidu7hxri] {
    flex-shrink: 0;
    opacity: 0.7;
}

.info-chip--access[b-tiidu7hxri] {
    color: var(--text-secondary);
}

/*
 * Auto-fit grid: cards lay out 4-5 across on wide desktops, 3 on laptop
 * widths, 2 on tablets, 1 on phones — all five metadata cards stay visible
 * at every breakpoint instead of being clipped off the right edge.
 */
.document-meta-grid[b-tiidu7hxri] {
    display: grid;
    gap: 0.45rem;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
    margin: 0.75rem 0 0;
}

.document-meta-grid > div[b-tiidu7hxri] {
    min-width: 0;
    border: 1px solid var(--border);
    border-radius: 0.55rem;
    background: color-mix(in srgb, var(--canvas) 76%, transparent);
    padding: 0.5rem 0.65rem;
}

.document-meta-grid dt[b-tiidu7hxri] {
    color: var(--text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.document-meta-grid dd[b-tiidu7hxri] {
    margin: 0.2rem 0 0;
    color: var(--text);
    font-size: 0.88rem;
    font-weight: 650;
    line-height: 1.25;
}

.document-detail-grid[b-tiidu7hxri] {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
}

.document-tags-panel .tag-list[b-tiidu7hxri] {
    margin-top: 0;
}

.table-scroll[b-tiidu7hxri] {
    overflow-x: auto;
}

.table-scroll table[b-tiidu7hxri] {
    width: 100%;
    border-collapse: collapse;
    min-width: 36rem;
}

.table-scroll caption[b-tiidu7hxri] {
    margin-bottom: 0.75rem;
    text-align: left;
}

.table-scroll th[b-tiidu7hxri],
.table-scroll td[b-tiidu7hxri] {
    border-bottom: 1px solid var(--border);
    padding: 0.75rem;
    text-align: left;
    vertical-align: top;
}

.table-scroll th[b-tiidu7hxri] {
    color: var(--text-secondary);
    font-size: 0.8rem;
    font-weight: 650;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.table-scroll tbody tr:last-child td[b-tiidu7hxri] {
    border-bottom: 0;
}

.table-scroll:focus-visible[b-tiidu7hxri] {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
}

/*
 * NOTE: `.document-modal-backdrop`, `.document-edit-dialog`, and
 * `.document-pdf-header` live in global `app.css` so they style the
 * matching markup on BOTH /documents (bulk-edit / bulk-delete) and
 * /documents/{id} (edit metadata, PDF preview). Defining them here would
 * Blazor-scope them and silently break the Documents-page modals.
 */

.document-pdf-dialog[b-tiidu7hxri] {
    display: flex;
    flex-direction: column;
    width: min(96vw, 92rem);
    height: min(92vh, 62rem);
    min-height: min(46rem, 92vh);
    border: 1px solid color-mix(in srgb, var(--border), var(--accent) 24%);
    border-radius: 1rem;
    background: var(--panel);
    box-shadow: 0 30px 90px rgb(0 0 0 / 0.55);
    overflow: hidden;
}

.document-pdf-header[b-tiidu7hxri] {
    align-items: center;
    border-bottom: 1px solid var(--border);
    padding: 1rem 1.25rem;
}

.document-pdf-header h2[b-tiidu7hxri] {
    margin: 0;
    font-size: clamp(1.1rem, 2vw, 1.35rem);
}

.document-pdf-frame[b-tiidu7hxri] {
    flex: 1;
    min-height: 0;
    width: 100%;
    border: 0;
    background: var(--canvas);
}

@media (max-width: 900px) {
    .document-hero-top[b-tiidu7hxri],
    .document-hero-content[b-tiidu7hxri],
    .document-pdf-header[b-tiidu7hxri] {
        align-items: stretch;
        flex-direction: column;
    }

    .document-detail-summary-row[b-tiidu7hxri] {
        flex-direction: column;
        align-items: stretch;
    }

    .document-detail-actions[b-tiidu7hxri] {
        justify-content: flex-start;
        margin-left: 0;
    }

    .document-meta-grid[b-tiidu7hxri],
    .document-detail-grid[b-tiidu7hxri] {
        grid-template-columns: 1fr;
    }

    .document-pdf-dialog[b-tiidu7hxri] {
        width: 100%;
        height: 94vh;
        min-height: 0;
    }
}

@media (max-width: 540px) {
    .document-detail-actions > .secondary-button[b-tiidu7hxri],
    .document-detail-actions > .danger-button[b-tiidu7hxri] {
        flex: 0 0 auto;
        width: auto;
    }

    .document-pdf-header[b-tiidu7hxri] {
        padding: 0.85rem;
    }
}

[b-tiidu7hxri] .document-detail-tabs {
    margin-bottom: 0.35rem;
}

[b-tiidu7hxri] .document-viewer-stage {
    height: calc(100vh - 20rem);
    min-height: 24rem;
    overflow: auto;
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    background: var(--surface);
    display: flex;
    flex-direction: column;
}

[b-tiidu7hxri] .document-viewer-stage .document-auth-preview {
    height: 100%;
    min-height: 0;
}

[b-tiidu7hxri] .document-viewer-stage .document-auth-preview--frame,
[b-tiidu7hxri] .document-viewer-stage .document-auth-preview--text,
[b-tiidu7hxri] .document-viewer-stage .document-auth-preview--table,
[b-tiidu7hxri] .document-viewer-stage .document-auth-preview--image {
    min-height: 0;
    height: 100%;
}

[b-tiidu7hxri] .document-viewer-stage .document-auth-preview--frame iframe {
    height: 100%;
}

[b-tiidu7hxri] .document-viewer-stage .document-table-preview {
    height: 100%;
    overflow: hidden;
}

[b-tiidu7hxri] .document-viewer-stage .document-table-preview__scroll {
    overflow: auto;
}

[b-tiidu7hxri] .document-viewer-stage .document-extracted-text-preview {
    height: 100%;
    overflow: hidden;
}

[b-tiidu7hxri] .document-viewer-stage .document-extracted-text-preview__scroll {
    overflow: auto;
}
/* /Components/Pages/GroupDetail.razor.rz.scp.css */
/*
 * Group tabs migrated to the shared <MaterialTabs/> component.
 * The legacy .group-tab / .group-tab--active classes are gone —
 * those elements are no longer rendered. The .group-tabs hook is
 * forwarded as AdditionalClass on the tablist so this file keeps
 * a place to hang group-specific spacing without colliding with
 * the component's own styling.
 */
.group-tabs[b-f11prbndnb] {
    margin: 1rem 0 1.1rem;
}

.group-add-member[b-f11prbndnb] {
    display: grid;
    gap: 0.55rem;
    margin: 0 0 1rem;
    padding: 1rem;
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    background: var(--surface);
}

.group-add-member__heading[b-f11prbndnb] {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
}

.group-add-member__hint[b-f11prbndnb] {
    margin: 0;
    font-size: 0.8rem;
    line-height: 1.4;
}

.group-add-member__row[b-f11prbndnb] {
    display: grid;
    gap: 0.55rem;
    grid-template-columns: minmax(12rem, 2fr) minmax(7rem, 0.5fr) auto;
    align-items: center;
}

@media (max-width: 720px) {
    .group-add-member__row[b-f11prbndnb] {
        grid-template-columns: 1fr;
    }
}

.group-member-list[b-f11prbndnb] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.4rem;
}

.group-member-row[b-f11prbndnb] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 0.85rem;
    padding: 0.7rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 0.65rem;
    background: var(--surface);
}

/*
 * iPhone-class widths: drop to a single column so the user's name + email
 * keeps its full width and the role / remove-action sit underneath instead
 * of squeezing the name column.
 */
@media (max-width: 30rem) {
    .group-member-row[b-f11prbndnb] {
        grid-template-columns: 1fr;
        gap: 0.55rem;
    }

    .group-member-row__role[b-f11prbndnb] {
        justify-content: flex-start;
    }
}

.group-member-row__main[b-f11prbndnb] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    min-width: 0;
}

.group-member-row__name[b-f11prbndnb] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.group-member-row__email[b-f11prbndnb] {
    font-size: 0.78rem;
}

.group-member-row__role[b-f11prbndnb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.group-member-row__creator-badge[b-f11prbndnb] {
    padding: 0.12rem 0.5rem;
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: color-mix(in srgb, var(--accent-ai), transparent 80%);
    color: var(--accent-ai);
}

.group-collection-grid[b-f11prbndnb] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
}

.group-collection-card[b-f11prbndnb] {
    display: grid;
    gap: 0.3rem;
    padding: 0.85rem 0.95rem;
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    background: var(--surface);
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.group-collection-card:hover[b-f11prbndnb] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
}

.group-collection-card__title[b-f11prbndnb] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text);
    text-decoration: none;
}

.group-collection-card__title:hover[b-f11prbndnb] {
    color: var(--accent);
}

.group-collection-card__desc[b-f11prbndnb] {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.4;
}

.group-collection-card__meta[b-f11prbndnb] {
    margin: 0;
    font-size: 0.75rem;
}

.upload-form__input--compact[b-f11prbndnb] {
    padding: 0.35rem 0.5rem;
    font-size: 0.8rem;
}

/* Inline heading row used by the Documents / Collections tabs to pair a
   section title with the upload launcher on the right. */
.group-section-heading[b-f11prbndnb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
    flex-wrap: wrap;
    margin: 0 0 0.85rem;
}

.group-section-heading__title[b-f11prbndnb] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text);
}
/* /Components/Pages/Groups.razor.rz.scp.css */
.groups-create[b-ovo2miu6cu] {
    margin: 1rem 0 1.25rem;
    padding: 1rem 1.15rem;
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    background: var(--surface);
}

.groups-create__heading[b-ovo2miu6cu] {
    margin: 0 0 0.65rem;
    font-size: 0.95rem;
    font-weight: 700;
}

.groups-create__row[b-ovo2miu6cu] {
    display: grid;
    gap: 0.65rem;
    grid-template-columns: minmax(12rem, 0.8fr) minmax(12rem, 1.3fr) auto;
    align-items: end;
}

@media (max-width: 720px) {
    .groups-create__row[b-ovo2miu6cu] {
        grid-template-columns: 1fr;
    }
}

.groups-create__field[b-ovo2miu6cu] {
    display: grid;
    gap: 0.3rem;
    min-width: 0;
}

.groups-create__field--grow[b-ovo2miu6cu] {
    min-width: 0;
}

.groups-grid[b-ovo2miu6cu] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
}

.group-card[b-ovo2miu6cu] {
    display: grid;
    gap: 0.35rem;
    padding: 0.95rem 1rem;
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    background: var(--surface);
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.group-card:hover[b-ovo2miu6cu] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    background: color-mix(in srgb, var(--surface), #ffffff 3%);
}

.group-card__title[b-ovo2miu6cu] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    text-decoration: none;
    line-height: 1.25;
}

.group-card__title:hover[b-ovo2miu6cu] {
    color: var(--accent);
}

.group-card__desc[b-ovo2miu6cu] {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.4;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.group-card__meta[b-ovo2miu6cu] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
    font-size: 0.75rem;
}

.group-card__sep[b-ovo2miu6cu] {
    color: var(--text-tertiary);
}

.group-card__role[b-ovo2miu6cu] {
    margin-left: auto;
    padding: 0.12rem 0.5rem;
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: color-mix(in srgb, var(--accent), transparent 80%);
    color: var(--accent);
}

.group-card__role--member[b-ovo2miu6cu] {
    background: color-mix(in srgb, var(--accent-ai), transparent 86%);
    color: var(--accent-ai);
}
/* /Components/Pages/Me.razor.rz.scp.css */
.me-grid[b-qnyvrkb0i7] {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

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

.profile-card[b-qnyvrkb0i7] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    box-shadow: var(--shadow-lg);
    padding: 1.5rem;
    display: grid;
    gap: 1.25rem;
    align-self: start;
    transition: border-color var(--transition-fast),
                box-shadow var(--transition-fast);
}

.profile-card:hover[b-qnyvrkb0i7] {
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
    box-shadow: var(--shadow-xl);
}

.profile-card-header[b-qnyvrkb0i7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.profile-card-header h2[b-qnyvrkb0i7] {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
    letter-spacing: -0.02em;
}

.profile-icon[b-qnyvrkb0i7] {
    width: 1.75rem;
    height: 1.75rem;
    color: var(--accent);
    flex-shrink: 0;
}

.profile-details[b-qnyvrkb0i7] {
    margin: 0;
    display: grid;
    gap: 1rem;
}

.detail-row[b-qnyvrkb0i7] {
    display: grid;
    gap: 0.35rem;
}

.detail-row dt[b-qnyvrkb0i7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--muted);
    font-size: 0.8rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.detail-icon[b-qnyvrkb0i7] {
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
}

.detail-row dd[b-qnyvrkb0i7] {
    margin: 0;
    font-size: 0.95rem;
    word-break: break-all;
}

.user-id[b-qnyvrkb0i7] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.85rem;
    background: rgba(0, 0, 0, 0.25);
    padding: 0.5rem 0.75rem;
    border-radius: 0.5rem;
    border: 1px solid var(--border);
}

.firms-section[b-qnyvrkb0i7] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    box-shadow: var(--shadow-lg);
    padding: 1.5rem;
    display: grid;
    gap: 1.25rem;
    align-content: start;
    transition: border-color var(--transition-fast),
                box-shadow var(--transition-fast);
}

.firms-section:hover[b-qnyvrkb0i7] {
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
    box-shadow: var(--shadow-xl);
}

.firms-header[b-qnyvrkb0i7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.firms-header h2[b-qnyvrkb0i7] {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
    letter-spacing: -0.02em;
}

.firms-icon[b-qnyvrkb0i7] {
    width: 1.75rem;
    height: 1.75rem;
    color: var(--accent);
    flex-shrink: 0;
}

.firm-count[b-qnyvrkb0i7] {
    margin-left: auto;
    background: rgba(124, 158, 255, 0.15);
    color: var(--accent);
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
}

.empty-firms[b-qnyvrkb0i7] {
    text-align: center;
    padding: 2rem 1rem;
}

.empty-icon[b-qnyvrkb0i7] {
    width: 3rem;
    height: 3rem;
    color: var(--muted);
    margin-bottom: 1rem;
}

.empty-firms p[b-qnyvrkb0i7] {
    margin: 0;
}

.empty-firms p:first-of-type[b-qnyvrkb0i7] {
    font-size: 0.95rem;
    margin-bottom: 0.35rem;
}

.firms-grid[b-qnyvrkb0i7] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.75rem;
}

.firm-card[b-qnyvrkb0i7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    background: var(--elevated);
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    transition: border-color var(--transition-fast),
                transform var(--transition-fast),
                box-shadow var(--transition-fast);
}

.firm-card:hover[b-qnyvrkb0i7] {
    border-color: color-mix(in srgb, var(--border), #ffffff 15%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.firm-card-content[b-qnyvrkb0i7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.firm-icon[b-qnyvrkb0i7] {
    width: 1.35rem;
    height: 1.35rem;
    color: var(--muted);
    flex-shrink: 0;
}

.firm-name[b-qnyvrkb0i7] {
    font-weight: 500;
    font-size: 0.95rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.role-badge[b-qnyvrkb0i7] {
    flex-shrink: 0;
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border: 1px solid transparent;
}

.role-admin[b-qnyvrkb0i7],
.role-owner[b-qnyvrkb0i7] {
    background: rgba(167, 139, 250, 0.15);
    border-color: rgba(167, 139, 250, 0.3);
    color: var(--purple);
}

.role-member[b-qnyvrkb0i7] {
    background: rgba(124, 158, 255, 0.15);
    border-color: rgba(124, 158, 255, 0.3);
    color: var(--accent);
}

.role-viewer[b-qnyvrkb0i7] {
    background: rgba(107, 114, 128, 0.2);
    border-color: rgba(107, 114, 128, 0.3);
    color: var(--muted);
}

.role-default[b-qnyvrkb0i7] {
    background: rgba(79, 209, 197, 0.12);
    border-color: rgba(79, 209, 197, 0.25);
    color: var(--green);
}

.default-org-picker[b-qnyvrkb0i7] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0 0 1rem;
    padding: 1rem;
    border: 1px solid var(--border);
    border-radius: 0.85rem;
    background: color-mix(in srgb, var(--canvas) 76%, transparent);
}

.default-org-picker__heading[b-qnyvrkb0i7] {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--text);
}

.default-org-picker__hint[b-qnyvrkb0i7] {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.4;
}

.default-org-picker__select[b-qnyvrkb0i7] {
    margin-top: 0.25rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--border);
    border-radius: 0.6rem;
    background: var(--surface);
    color: var(--text);
    font: inherit;
    font-size: 0.9rem;
}

.default-org-picker__select:focus-visible[b-qnyvrkb0i7] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.default-org-picker__status[b-qnyvrkb0i7] {
    margin: 0.35rem 0 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.default-org-tag[b-qnyvrkb0i7] {
    margin-left: 0.4rem;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: color-mix(in srgb, var(--accent), transparent 80%);
    color: var(--accent);
}
/* /Components/Pages/MyDocuments.razor.rz.scp.css */
/*
 * My Documents page composes two stacked sections (collections + uploads)
 * using the same density rhythm as the main Documents and Collections pages
 * to keep the navigation experience consistent.
 */
.my-docs-section[b-wy7fdi6g6x] {
    margin-top: 1.5rem;
}

.my-docs-section__heading[b-wy7fdi6g6x] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.85rem;
    margin: 0 0 0.65rem;
    flex-wrap: wrap;
}

.my-docs-section__title[b-wy7fdi6g6x] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
}

.my-docs-section__count[b-wy7fdi6g6x] {
    font-size: 0.78rem;
}

.my-docs-collection-grid[b-wy7fdi6g6x] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
}

.my-docs-collection-card[b-wy7fdi6g6x] {
    display: grid;
    gap: 0.3rem;
    padding: 0.85rem 0.95rem;
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    background: var(--surface);
    transition: border-color var(--transition-fast),
                background-color var(--transition-fast);
}

.my-docs-collection-card:hover[b-wy7fdi6g6x] {
    border-color: color-mix(in srgb, var(--accent), var(--border) 40%);
    background: color-mix(in srgb, var(--surface), #ffffff 3%);
}

.my-docs-collection-card__title[b-wy7fdi6g6x] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text);
    text-decoration: none;
    line-height: 1.25;
}

.my-docs-collection-card__title:hover[b-wy7fdi6g6x] {
    color: var(--accent);
}

.my-docs-collection-card__desc[b-wy7fdi6g6x] {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.4;
}

.my-docs-collection-card__meta[b-wy7fdi6g6x] {
    margin: 0;
    font-size: 0.75rem;
}

.my-docs-collection-card__group[b-wy7fdi6g6x] {
    margin-left: 0.25rem;
    color: var(--accent-ai);
}
/* /Components/Pages/StateEntities.razor.rz.scp.css */
.section-heading[b-e4c0hnys0p] {
    font-size: 1.35rem;
    margin: 1.75rem 0 0.9rem;
    letter-spacing: -0.02em;
}

.tracked-states-chips[b-e4c0hnys0p] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin: 0 0 1.25rem;
    padding: 0;
    list-style: none;
}

.tracked-state-chip[b-e4c0hnys0p] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 0.25rem 0.4rem 0.25rem 0.75rem;
    font-size: 0.85rem;
    transition: border-color var(--transition-fast), background-color var(--transition-fast);
}

.tracked-state-chip:hover[b-e4c0hnys0p] {
    border-color: color-mix(in srgb, var(--border), #ffffff 14%);
}

.tracked-state-chip__label[b-e4c0hnys0p] {
    background: transparent;
    border: 0;
    padding: 0.1rem 0.3rem;
    font: inherit;
    color: var(--text);
    font-weight: 600;
    letter-spacing: 0.04em;
    cursor: pointer;
    border-radius: 0.4rem;
}

.tracked-state-chip__label:disabled[b-e4c0hnys0p] {
    cursor: default;
}

.tracked-state-chip__label:focus-visible[b-e4c0hnys0p] {
    outline: 2px solid var(--blue);
    outline-offset: 2px;
}

.tracked-state-chip__remove[b-e4c0hnys0p] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 0;
    width: 1.4rem;
    height: 1.4rem;
    border-radius: 999px;
    color: var(--muted);
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

.tracked-state-chip__remove:hover[b-e4c0hnys0p],
.tracked-state-chip__remove:focus-visible[b-e4c0hnys0p] {
    background: color-mix(in srgb, var(--red) 15%, transparent);
    color: var(--red);
    outline: none;
}

.tracked-state-chip__confirm[b-e4c0hnys0p] {
    background: var(--red);
    color: #fff;
    border: 0;
    border-radius: 999px;
    padding: 0.15rem 0.55rem;
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
}

.tracked-state-chip__confirm:disabled[b-e4c0hnys0p] {
    opacity: 0.7;
    cursor: progress;
}

.tracked-state-chip__cancel[b-e4c0hnys0p] {
    background: transparent;
    border: 0;
    padding: 0.15rem 0.4rem;
    font-size: 0.75rem;
    color: var(--muted);
    cursor: pointer;
    border-radius: 999px;
}

.tracked-state-chip__cancel:hover[b-e4c0hnys0p],
.tracked-state-chip__cancel:focus-visible[b-e4c0hnys0p] {
    color: var(--text);
    background: color-mix(in srgb, var(--border), transparent 60%);
    outline: none;
}

.empty-cta-card[b-e4c0hnys0p] {
    background: var(--panel);
    border: 1px dashed var(--border);
    border-radius: 1rem;
    padding: 2rem 1.5rem;
    text-align: center;
    display: grid;
    gap: 0.5rem;
    justify-items: center;
    margin-bottom: 1.75rem;
}

.empty-cta-card__title[b-e4c0hnys0p] {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text);
}

.empty-cta-card__lead[b-e4c0hnys0p] {
    margin: 0;
    color: var(--muted);
    max-width: 36rem;
    line-height: 1.5;
}

.state-card-meta--registration[b-e4c0hnys0p] {
    border-top: 1px dashed var(--border);
    padding-top: 0.5rem;
    margin-top: 0.1rem;
}

.state-grid[b-e4c0hnys0p] {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fit, minmax(15.5rem, 1fr));
    margin-bottom: 1.75rem;
}

.state-card[b-e4c0hnys0p] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-left-width: 4px;
    border-radius: 1rem;
    box-shadow: var(--shadow-lg);
    padding: 1.1rem 1.2rem;
    display: grid;
    gap: 0.55rem;
    transition: border-color var(--transition-fast),
                box-shadow var(--transition-fast),
                transform var(--transition-fast);
}

.state-card:hover[b-e4c0hnys0p] {
    border-color: color-mix(in srgb, var(--border), #ffffff 10%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-xl);
}

.state-card-header[b-e4c0hnys0p] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.state-card .state-code[b-e4c0hnys0p] {
    font-family: "Public Sans", ui-sans-serif, system-ui, sans-serif;
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.state-card .state-status[b-e4c0hnys0p] {
    border: none;
    border-radius: 0.35rem;
    padding: 0.22rem 0.6rem;
    font-size: 0.72rem;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-secondary);
    white-space: nowrap;
}

.state-card.status-completed .state-status[b-e4c0hnys0p] {
    background: rgba(79, 209, 197, 0.15);
    color: var(--green);
}

.state-card.status-pending .state-status[b-e4c0hnys0p] {
    background: rgba(229, 166, 61, 0.15);
    color: var(--amber);
}

.state-card.status-overdue .state-status[b-e4c0hnys0p] {
    background: rgba(239, 107, 107, 0.15);
    color: var(--red);
}

.state-card .state-filing-type[b-e4c0hnys0p] {
    margin: 0;
    font-weight: 600;
    font-size: 0.95rem;
}

.state-card-meta[b-e4c0hnys0p] {
    margin: 0;
    display: grid;
    gap: 0.4rem;
    font-size: 0.85rem;
}

.state-card-meta > div[b-e4c0hnys0p] {
    display: grid;
    grid-template-columns: 6rem 1fr;
    gap: 0.5rem;
    align-items: baseline;
}

.state-card-meta dt[b-e4c0hnys0p] {
    color: var(--muted);
    margin: 0;
    font-size: 0.8rem;
}

.state-card-meta dd[b-e4c0hnys0p] {
    margin: 0;
}

.filings-table[b-e4c0hnys0p] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 1rem;
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}

.filing-row[b-e4c0hnys0p] {
    display: grid;
    grid-template-columns:
        4rem
        minmax(12rem, 2fr)
        minmax(7rem, 1fr)
        minmax(7rem, 1fr)
        minmax(6rem, 1fr)
        minmax(6rem, 1fr);
    gap: 0.75rem;
    padding: 0.85rem 1.1rem;
    border-bottom: 1px solid var(--border);
    align-items: center;
    font-size: 0.875rem;
    transition: background-color var(--transition-fast);
}

.filing-row:last-child[b-e4c0hnys0p] {
    border-bottom: 0;
}

.filing-row:not(.filing-row-header):hover[b-e4c0hnys0p] {
    background: rgba(255, 255, 255, 0.02);
}

.filing-row-header[b-e4c0hnys0p] {
    background: var(--panel-strong);
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.7rem;
    font-weight: 600;
}

.filing-row.status-overdue[b-e4c0hnys0p] {
    border-left: 4px solid var(--red);
    padding-left: calc(1.1rem - 4px);
}

.filing-row.status-completed[b-e4c0hnys0p] {
    border-left: 4px solid var(--purple);
    padding-left: calc(1.1rem - 4px);
}

.filing-row.status-pending[b-e4c0hnys0p] {
    border-left: 4px solid var(--blue);
    padding-left: calc(1.1rem - 4px);
}

.filing-row .filing-state[b-e4c0hnys0p] {
    font-weight: 600;
    letter-spacing: 0.03em;
}

.filing-row .filing-type[b-e4c0hnys0p] {
    display: block;
    font-weight: 500;
}

.filing-row .filing-document[b-e4c0hnys0p] {
    display: block;
    font-size: 0.78rem;
    margin-top: 0.2rem;
}

.filing-row .filing-status[b-e4c0hnys0p] {
    border: none;
    border-radius: 0.35rem;
    padding: 0.2rem 0.55rem;
    font-size: 0.72rem;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-secondary);
}

.filing-row.status-completed .filing-status[b-e4c0hnys0p] {
    background: rgba(79, 209, 197, 0.15);
    color: var(--green);
}

.filing-row.status-pending .filing-status[b-e4c0hnys0p] {
    background: rgba(229, 166, 61, 0.15);
    color: var(--amber);
}

.filing-row.status-overdue .filing-status[b-e4c0hnys0p] {
    background: rgba(239, 107, 107, 0.15);
    color: var(--red);
}

@media (max-width: 900px) {
    .filing-row[b-e4c0hnys0p] {
        grid-template-columns:
            3.5rem
            minmax(10rem, 2fr)
            minmax(5.5rem, 1fr)
            minmax(5.5rem, 1fr)
            minmax(5rem, 1fr)
            minmax(5rem, 1fr);
        gap: 0.5rem;
        font-size: 0.82rem;
    }
}

@media (max-width: 720px) {
    .filing-row[b-e4c0hnys0p] {
        grid-template-columns: 1fr;
        gap: 0.35rem;
        padding: 1rem;
    }

    .filing-row-header[b-e4c0hnys0p] {
        display: none;
    }

    .filing-row > [role="cell"][b-e4c0hnys0p]::before {
        content: attr(data-label);
    }
}
/* /Components/Pages/UploadDocument.razor.rz.scp.css */
.upload-form[b-slkrspd0ib] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1.5rem;
    border-radius: 0.75rem;
    background: var(--surface);
    border: 1px solid var(--border);
}

.upload-form fieldset[b-slkrspd0ib] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    border: none;
    margin: 0;
    padding: 0;
}

.upload-form__legend[b-slkrspd0ib] {
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.upload-form__row[b-slkrspd0ib] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}

.upload-form__field[b-slkrspd0ib] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.upload-form__field label[b-slkrspd0ib] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    font-weight: 500;
}

.upload-form__input[b-slkrspd0ib] {
    width: 100%;
    padding: 0.55rem 0.75rem;
    border-radius: 0.5rem;
    border: 1px solid var(--border);
    background: var(--canvas);
    color: inherit;
    font: inherit;
}

.upload-form__input:hover[b-slkrspd0ib] {
    border-color: color-mix(in srgb, var(--border), #ffffff 20%);
}

.upload-form__input:focus-visible[b-slkrspd0ib] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/*
 * Native file inputs render the "Choose Files | No file chosen" UI inside the
 * input box. Without targeted styling the browser leaves a visible gap between
 * the button and the input's background, and the button has no border. Below:
 *  - Pad the container so the button visually fills the left side flush
 *  - Style ::file-selector-button to match the dark theme with a slightly
 *    lighter 1px border so the button is clearly delineated.
 */
input[type="file"].upload-form__input[b-slkrspd0ib] {
    /* Reset internal padding so the button sits flush with the rounded corners. */
    padding: 0;
    overflow: hidden;
    /* Vertically center the "No file chosen" text relative to the button. */
    display: flex;
    align-items: center;
    min-height: 2.6rem;
    color: var(--text-secondary);
    font-size: 0.88rem;
}

input[type="file"].upload-form__input[b-slkrspd0ib]::file-selector-button {
    margin-right: 0.85rem;
    padding: 0.55rem 0.95rem;
    border: 1px solid color-mix(in srgb, var(--border), #ffffff 18%);
    border-radius: 0.5rem 0 0 0.5rem;
    background: color-mix(in srgb, var(--surface), #ffffff 4%);
    color: var(--text);
    cursor: pointer;
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    transition: background-color var(--transition-fast),
                border-color var(--transition-fast);
}

input[type="file"].upload-form__input[b-slkrspd0ib]::file-selector-button:hover {
    background: color-mix(in srgb, var(--surface), #ffffff 8%);
    border-color: color-mix(in srgb, var(--border), #ffffff 28%);
}

.upload-form__hint[b-slkrspd0ib] {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin: 0;
}

.upload-form__actions[b-slkrspd0ib] {
    display: flex;
    justify-content: flex-end;
}

.upload-form__submit[b-slkrspd0ib] {
    padding: 0.6rem 1.4rem;
    border-radius: 0.5rem;
    border: 0;
    background: linear-gradient(135deg, var(--accent), #6B8AE6);
    color: #fff;
    font-weight: 600;
    cursor: pointer;
    transition: filter var(--transition-fast);
}

.upload-form__submit:hover:not(:disabled)[b-slkrspd0ib],
.upload-form__submit:focus-visible:not(:disabled)[b-slkrspd0ib] {
    filter: brightness(1.08);
}

.upload-form__submit:disabled[b-slkrspd0ib] {
    opacity: 0.6;
    cursor: not-allowed;
}

.upload-error[b-slkrspd0ib] {
    padding: 0.85rem 1rem;
    border-radius: 0.5rem;
    background: rgba(239, 107, 107, 0.12);
    border: 1px solid var(--red);
    color: #ffd9d9;
}
/* /Components/Shared/Breadcrumb.razor.rz.scp.css */
.breadcrumb-nav[b-q5jvx2t0re] {
    padding: 0.5rem 0 0.25rem;
}

.breadcrumb-list[b-q5jvx2t0re] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 0.8125rem;
    line-height: 1.4;
}

.breadcrumb-item a[b-q5jvx2t0re] {
    color: var(--text-secondary);
    text-decoration: none;
    transition: color 0.15s ease;
}

.breadcrumb-item a:hover[b-q5jvx2t0re],
.breadcrumb-item a:focus-visible[b-q5jvx2t0re] {
    color: var(--accent);
    text-decoration: underline;
}

.breadcrumb-separator[b-q5jvx2t0re] {
    color: var(--text-secondary);
    opacity: 0.5;
    font-size: 0.6875rem;
    user-select: none;
}

.breadcrumb-current[b-q5jvx2t0re] {
    color: var(--text-primary);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 28rem;
}
/* /Components/Shared/MaterialTabs.razor.rz.scp.css */
/*
 * Material-style tab strip.
 *
 * Anatomy:
 *   .md-tabs                 -> the tablist (flex row, scrolls
 *                                horizontally if it overflows)
 *     .md-tab                -> each tab (button OR anchor)
 *       .md-tab__icon
 *       .md-tab__label
 *       .md-tab__badge
 *       .md-tab__ripple      -> centered scale-up pulse on click
 *     .md-tabs__indicator    -> animated underline; position +
 *                                width are written as CSS
 *                                variables by MaterialTabs.razor.js
 *
 * Theming hooks (with --accent fallbacks so it works without
 * configuration in the existing dark theme):
 *   --md-tab-active-color    -> active label/icon color
 *   --md-tab-inactive-color  -> resting label/icon color
 *   --md-tab-indicator-color -> underline + ripple color
 *   --md-tab-hover-bg        -> resting hover background
 */

.md-tabs[b-hmfw4vt3zo] {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 0;
    margin: 0;
    padding: 0 0 0 0;
    border-bottom: 1px solid var(--border, rgba(255, 255, 255, 0.08));
    overflow-x: auto;
    overflow-y: hidden;
    /*
     * Use scroll-snap so the active tab snaps cleanly into view
     * when the JS module scrollIntoView's after activation.
     */
    scroll-snap-type: x proximity;
    scroll-behavior: smooth;
    /* Hide horizontal scrollbar visually; keep accessible. */
    scrollbar-width: thin;
    scrollbar-color: var(--border, rgba(255, 255, 255, 0.12)) transparent;
    -webkit-overflow-scrolling: touch;
    /*
     * Consumed by MaterialTabs.razor.js via setProperty(). The
     * indicator below uses these variables in a transform + width.
     * Default to (0, 0) so an unmeasured tablist hides the
     * indicator instead of flashing it across the screen.
     */
    --md-tab-indicator-x: 0px;
    --md-tab-indicator-w: 0px;
}

.md-tabs[b-hmfw4vt3zo]::-webkit-scrollbar {
    height: 4px;
}

.md-tabs[b-hmfw4vt3zo]::-webkit-scrollbar-thumb {
    background-color: var(--border, rgba(255, 255, 255, 0.12));
    border-radius: 2px;
}

.md-tab[b-hmfw4vt3zo] {
    position: relative;
    flex: 0 0 auto;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-width: 90px;
    height: 48px;
    padding: 0 1rem;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--md-tab-inactive-color, var(--text-secondary, rgba(255, 255, 255, 0.65)));
    font: inherit;
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0.025em;
    text-transform: none;
    text-decoration: none;
    cursor: pointer;
    overflow: hidden;
    transition: color var(--transition-fast, 180ms),
                background-color var(--transition-fast, 180ms);
    scroll-snap-align: start;
    /* Reset anchor underline/inheritance for link-mode tabs. */
    -webkit-tap-highlight-color: transparent;
}

.md-tab--dense[b-hmfw4vt3zo] {
    height: 36px;
    font-size: 0.8125rem;
    padding: 0 0.85rem;
    min-width: 72px;
}

.md-tab:hover:not(.md-tab--disabled)[b-hmfw4vt3zo] {
    color: var(--md-tab-active-color, var(--text, #fff));
    background-color: var(--md-tab-hover-bg, rgb(255 255 255 / 0.04));
}

.md-tab:focus-visible[b-hmfw4vt3zo] {
    outline: 2px solid var(--accent, #5eead4);
    outline-offset: -2px;
    /*
     * Inset outline keeps it inside the tab so adjacent tabs don't
     * get visually clipped by an outset ring. This is the same
     * pattern Material Web uses.
     */
}

.md-tab--active[b-hmfw4vt3zo] {
    color: var(--md-tab-active-color, var(--accent, #5eead4));
    font-weight: 600;
}

.md-tab--disabled[b-hmfw4vt3zo] {
    cursor: not-allowed;
    opacity: 0.45;
    pointer-events: none;
}

.md-tab__icon[b-hmfw4vt3zo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
}

.md-tab__icon svg[b-hmfw4vt3zo] {
    width: 100%;
    height: 100%;
    stroke: currentColor;
    fill: none;
}

.md-tab__label[b-hmfw4vt3zo] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.md-tab__badge[b-hmfw4vt3zo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--accent, #5eead4);
    color: var(--canvas, #0e1116);
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1;
}

/*
 * Ripple. Pure-CSS centered scale-up — not the off-cursor Material
 * ripple that Material Web ships, but visually consistent and
 * adds zero JS surface area. The pseudo-element grows from a
 * collapsed circle to fill the tab on :active, then fades on
 * release. transform-origin: center keeps it centered regardless
 * of click position (an acceptable trade-off for the simplicity).
 */
.md-tab__ripple[b-hmfw4vt3zo] {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    border-radius: inherit;
}

.md-tab__ripple[b-hmfw4vt3zo]::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 180%;
    height: 180%;
    transform: translate(-50%, -50%) scale(0);
    border-radius: 50%;
    background: var(--md-tab-indicator-color, var(--accent, #5eead4));
    opacity: 0;
    transition: transform 350ms ease-out, opacity 450ms ease-out;
}

.md-tab:active:not(.md-tab--disabled) .md-tab__ripple[b-hmfw4vt3zo]::before {
    transform: translate(-50%, -50%) scale(1);
    opacity: 0.18;
    transition-duration: 0ms, 0ms;
}

@media (prefers-reduced-motion: reduce) {
    .md-tab__ripple[b-hmfw4vt3zo]::before {
        transition-duration: 0ms;
    }
}

.md-tabs__indicator[b-hmfw4vt3zo] {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 3px;
    width: var(--md-tab-indicator-w);
    background: var(--md-tab-indicator-color, var(--accent, #5eead4));
    border-radius: 3px 3px 0 0;
    transform: translateX(var(--md-tab-indicator-x));
    transition: transform 220ms cubic-bezier(0.4, 0, 0.2, 1),
                width 220ms cubic-bezier(0.4, 0, 0.2, 1),
                opacity var(--transition-fast, 180ms);
    pointer-events: none;
    /*
     * Hide the indicator while it has no measured width — prevents
     * a 0-width sliver from flashing on first paint before the JS
     * module has run.
     */
    opacity: 0;
}

.md-tabs[data-md-tab-indicator-ready="true"] .md-tabs__indicator[b-hmfw4vt3zo] {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .md-tabs__indicator[b-hmfw4vt3zo] {
        transition: opacity var(--transition-fast, 180ms);
    }
}
/* /Components/Shared/TagPicker.razor.rz.scp.css */
.tag-picker[b-xo67xjfvky] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
    padding: 0.35rem 0.5rem;
    border: 1px solid var(--border);
    border-radius: 0.375rem;
    background: var(--surface);
    min-height: 2.25rem;
    transition: border-color 0.15s ease;
}

.tag-picker:focus-within[b-xo67xjfvky] {
    border-color: var(--accent);
}

.tag-picker__chip[b-xo67xjfvky] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.15rem 0.45rem;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: color-mix(in srgb, var(--accent), transparent 88%);
    color: var(--text-primary);
    font-size: 0.75rem;
    line-height: 1.4;
    white-space: nowrap;
}

.tag-picker__remove[b-xo67xjfvky] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: none;
    color: var(--text-secondary);
    cursor: pointer;
    padding: 0;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    transition: color 0.12s ease, background 0.12s ease;
}

.tag-picker__remove:hover[b-xo67xjfvky] {
    color: var(--red, #ef6b6b);
    background: color-mix(in srgb, var(--red, #ef6b6b), transparent 85%);
}

.tag-picker__input[b-xo67xjfvky] {
    flex: 1 1 6rem;
    min-width: 6rem;
    border: none;
    background: transparent;
    color: var(--text-primary);
    font-size: 0.8125rem;
    outline: none;
    padding: 0.15rem 0;
}

.tag-picker__input[b-xo67xjfvky]::placeholder {
    color: var(--text-tertiary, var(--text-secondary));
}
/* /Components/Vendors/VendorEditDialog.razor.rz.scp.css */
/*
 * Vendor edit dialog — extends the shared .admin-dialog scaffolding (defined
 * in wwwroot/app.css) with a wider max-width and a 2-column grid for paired
 * fields. Form chrome (backdrop, inputs, label spacing) inherits from the
 * global rules, so this file is intentionally tiny.
 */
.vendor-dialog[b-tvh6m452jc] {
    width: min(100% - 2rem, 38rem);
}

.vendor-dialog__header[b-tvh6m452jc] {
    margin-bottom: 1.25rem;
    padding-bottom: 0.85rem;
    border-bottom: 1px solid var(--border);
}

.vendor-dialog__header h2[b-tvh6m452jc] {
    margin: 0.25rem 0 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text);
}

.vendor-dialog__header .eyebrow[b-tvh6m452jc] {
    margin: 0;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-tertiary);
}

.vendor-dialog__row[b-tvh6m452jc] {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr 1fr;
}

.vendor-dialog__row .form-field[b-tvh6m452jc] {
    margin-bottom: 0;
}

@media (max-width: 540px) {
    .vendor-dialog__row[b-tvh6m452jc] {
        grid-template-columns: 1fr;
    }
}

.vendor-dialog__textarea[b-tvh6m452jc] {
    min-height: 5rem;
    resize: vertical;
    line-height: 1.5;
    padding: 0.65rem 0.85rem;
}
