/* /Components/Feedback/FeedbackLauncher.razor.rz.scp.css */
/* Sidebar-footer control (PO refinement 2026-08-28): the trigger sits in the sidebar's footer, above the version
   line. The panel is VIEWPORT-positioned rather than an absolute dropdown, and that is load-bearing, not a
   style: the sidebar sets `overflow: hidden` (it animates its own width), so an absolutely-positioned child
   would be clipped by that box — and anchoring it to `top: 100%` would open it below the sidebar's bottom edge,
   off-screen. Fixed escapes both, because no ancestor of the sidebar establishes a containing block (the one
   backdrop-filter in the shell is on .app-topbar, which is not on this path). It opens upward from the bottom
   left, over the content area. */

.feedback-launcher[b-qlhmmkfyxd] {
    position: relative;
    display: block;
}

.feedback-launcher-panel[b-qlhmmkfyxd] {
    position: fixed;
    left: 0.75rem;
    bottom: 3.5rem;
    width: min(24rem, calc(100vw - 1.5rem));
    max-height: min(38rem, calc(100vh - 5rem));
    overflow: auto;
    padding: 1.1rem 1.2rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--app-radius-xl, 1rem);
    background: var(--bs-body-bg);
    box-shadow: var(--app-shadow-lg, 0 14px 30px rgba(0, 0, 0, 0.18));
    z-index: 1050;
}

.feedback-launcher-header[b-qlhmmkfyxd] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.feedback-launcher-eyebrow[b-qlhmmkfyxd] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary-color);
}

.feedback-launcher-heading[b-qlhmmkfyxd] {
    margin: 0.15rem 0 0;
    font-size: 1.05rem;
}

.feedback-launcher-note[b-qlhmmkfyxd] {
    margin-bottom: 0.85rem;
}

/* The Bootstrap .btn btn-sm btn-outline-secondary classes carry the look (matching the bell + Logout); the
   scoped rule only sets the icon/label gap and an open-state emphasis. */
.feedback-launcher-toggle[b-qlhmmkfyxd] {
    /* Bootstrap's .btn-outline-secondary text (#6c757d) measured 3.65:1 on the sidebar ground. The
       button keeps its outline look; only the label colour is ours. */
    color: var(--app-text-secondary);
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    /* Full-width in the sidebar footer so the icon+label line up with the nav items above it. */
    width: 100%;
    justify-content: center;
}

.feedback-launcher--open .feedback-launcher-toggle[b-qlhmmkfyxd] {
    border-color: var(--bs-primary);
    color: var(--bs-primary);
}

/* PO defect 2026-09-13: the label used to be hidden on phones with Bootstrap's d-none d-md-inline. That utility
   is `display: inline !important`, and !important beats every scoped rule regardless of specificity — so the
   rail's ::deep rule in NavMenu, which collapses this trigger to its icon like every other rail item, lost
   silently and the word "Feedback" ran past the rail's edges. The phone rule is written here instead, at
   normal weight, so the rail can still override it. */
@media (max-width: 767.98px) {
    .feedback-launcher-toggle-label[b-qlhmmkfyxd] {
        display: none;
    }
}
/* /Components/Layout/BrandLockup.razor.rz.scp.css */
/* The lockup's own geometry and type. Placement — where on the page, how large, what it sits on — stays
   with the surface that asks for it, which is why nothing here sets a margin or a position. */

.brand-lockup[b-zvbohkboen] {
    /* One knob for scale. Everything else is expressed against it, so a surface that wants a bigger
       lockup overrides this alone and the proportions hold. */
    --brand-mark-size: 2.15rem;

    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
    color: var(--brand-ink);
    text-decoration: none;
}

.brand-mark[b-zvbohkboen] {
    width: var(--brand-mark-size);
    height: var(--brand-mark-size);
    flex: 0 0 auto;
    /* The structure is stroked in currentColor, so the mark takes the brand ink from the line above and
       one drawing serves the light sidebar and the dark one. This is what the inline SVG buys that the
       <img> it replaced could not do at any price. */
    color: inherit;
    transition: transform var(--app-motion-standard) var(--app-motion-ease);
}

/* max-width and opacity are animatable and display is not, which is what lets the sidebar rail reduce the
   lockup to its mark by collapsing this to nothing rather than by removing it. The rail rule that does the
   collapsing lives in NavMenu, where the viewport is known; the transition belongs here, with the thing
   being transitioned. */
.brand-text[b-zvbohkboen] {
    display: inline-flex;
    flex-direction: column;
    min-width: 0;
    max-width: 12rem;
    overflow: hidden;
    opacity: 1;
    line-height: 1;
    transition:
        max-width var(--app-motion-fast) var(--app-motion-ease),
        opacity var(--app-motion-fast) var(--app-motion-ease);
}

/* The name and its build number share a line and a baseline. The version is small and sits after the
   name it describes rather than under it — a third line does not fit the 56px band. */
.brand-name-line[b-zvbohkboen] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    min-width: 0;
}

.brand-company[b-zvbohkboen] {
    color: var(--brand-ink);
    font-family: var(--app-font-body);
    /* 600 rather than the 500 the design asked for: Source Sans 3 is loaded at 400 and 600 only, and a
       500 would resolve down to 400 — too light to hold at 10px under 0.2em of tracking. The hierarchy
       is carried by size and tracking either way, which is the point; this line just has to stay legible. */
    font-weight: 600;
    /* Leading above 1 for the same reason the product line has it: .brand-text clips what overflows, and a
       line box the height of the font size shaves the tops off capitals. This line is all capitals. */
    line-height: 1.2;
    text-transform: uppercase;
    white-space: nowrap;
}

/* Small and wide is what a company line above a product name is supposed to look like. It used to be
   0.82rem at weight 700 against a product also at weight 700 — two lines of equal insistence, so neither
   led. Size and tracking carry the hierarchy now.

   line-height above 1 because .brand-text clips what overflows it (that is what lets the rail collapse the
   wordmark), and a display serif's ascenders do not fit inside a line box the height of its font size. */
.brand-product[b-zvbohkboen] {
    color: var(--brand-ink);
    font-family: var(--app-font-brand);
    font-weight: 400;
    line-height: 1.12;
    letter-spacing: -0.005em;
    white-space: nowrap;
    transition: color var(--app-motion-fast) var(--app-motion-ease);
}

/* The i is true north, in the same amber as the needle's north half — the one thing that makes the
   drawing and the word read as a single object. The whole letter, not its dot: colour applies to glyphs, and
   isolating a tittle would need a dotless ı and a positioned pseudo-element, which stakes one letter of
   the wordmark on a webfont subset.

   This is the app's only text that does not clear 4.5:1 (2.13:1 on the light band), kept under WCAG
   1.4.3's logotype exception on a PO ruling. It is bounded rather than safe: one glyph of nine. Do not
   extend this colour to any other text — on a light ground #ff8c00 is a colour for drawings, not words. */
.brand-tittle[b-zvbohkboen] {
    color: var(--brand-north);
}

.brand-version[b-zvbohkboen] {
    color: var(--app-text-secondary);
    font-family: var(--app-font-body);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    text-transform: none;
    user-select: text;
}

/* ---- Horizontal: sign-in, print header, export footer ---- */

.brand-lockup--horizontal[b-zvbohkboen] {
    --brand-mark-size: 2.75rem;
}

.brand-lockup--horizontal .brand-company[b-zvbohkboen] {
    margin-bottom: 0.4rem;
    font-size: 0.72rem;
    letter-spacing: 0.19em;
}

.brand-lockup--horizontal .brand-product[b-zvbohkboen] {
    font-size: 2.15rem;
}

/* ---- Stacked: the sidebar band ----

   The band is exactly --app-topbar-height with overflow:hidden, and the 3px signal ribbon along its
   bottom edge has to stay level with the ribbon on the command bar — CommandBarE2ETests pins that the
   two halves meet. So this form had to get SHORTER while the product name got bigger.

   Three lines became two: the version moved up beside the product name, which is what it describes.
   10px company at 1.2 + 3px + 21px product at 1.12 is about 39px inside a 56px band, against roughly 41px
   before. So the product name grew by a third and the block still got no taller — the ribbon does not
   move and the lockup keeps its breathing room. */

.brand-lockup--stacked[b-zvbohkboen] {
    --brand-mark-size: 2.125rem;

    gap: 0.6rem;
}

.brand-lockup--stacked .brand-company[b-zvbohkboen] {
    margin-bottom: 0.1875rem;
    font-size: 0.625rem;
    letter-spacing: 0.2em;
}

.brand-lockup--stacked .brand-version[b-zvbohkboen] {
    font-size: 0.625rem;
    font-weight: 600;
}

.brand-lockup--stacked .brand-product[b-zvbohkboen] {
    font-size: 1.3125rem;
}

@media (prefers-reduced-motion: reduce) {
    .brand-mark[b-zvbohkboen],
    .brand-text[b-zvbohkboen],
    .brand-product[b-zvbohkboen] {
        transition: none;
    }
}
/* /Components/Layout/ConfirmHost.razor.rz.scp.css */
/* System-safety S1 — confirmation modal cosmetic detail (scoped). The blocking z-index fallback that keeps
   this above all app chrome + the toast host lives globally in app.css. */
.modal-dialog[b-z2exv09s39] {
    max-width: 32rem;
}

.confirm-message[b-z2exv09s39] {
    white-space: pre-wrap; /* preserve intentional line breaks in a confirm message */
}
/* /Components/Layout/InboxIndicator.razor.rz.scp.css */
/* Top-bar inbox envelope: mirrors the notification bell's badge placement (absolute top-right pill). */
.inbox-indicator[b-f6l9kfwkof] {
    position: relative;
}

.inbox-indicator-badge[b-f6l9kfwkof] {
    position: absolute;
    top: -6px;
    right: -6px;
    font-size: 0.6rem;
    line-height: 1;
    padding: 0.2em 0.4em;
    border-radius: 999px;
}

/* The popover mirrors the bell's panel to the pixel: two adjacent icons that behave the same way. */
.inbox-indicator-host[b-f6l9kfwkof] {
    position: relative;
    display: inline-block;
}

.inbox-panel[b-f6l9kfwkof] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.4rem);
    width: 340px;
    max-width: 90vw;
    max-height: 70vh;
    overflow-y: auto;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.15);
    z-index: 1050;
}

.inbox-panel-header[b-f6l9kfwkof] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.6rem 0.85rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.inbox-panel-empty[b-f6l9kfwkof],
.inbox-panel-note[b-f6l9kfwkof] {
    padding: 1.25rem 0.85rem;
    text-align: center;
    color: var(--bs-secondary-color, #6c757d);
}

.inbox-list[b-f6l9kfwkof] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.inbox-item[b-f6l9kfwkof] {
    border-bottom: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.075));
}

.inbox-item-link[b-f6l9kfwkof] {
    display: block;
    padding: 0.6rem 0.85rem;
    text-decoration: none;
    color: var(--bs-body-color, #212529);
}

.inbox-item-link:hover[b-f6l9kfwkof] {
    background: var(--bs-secondary-bg, rgba(0, 0, 0, 0.04));
    color: var(--bs-body-color, #212529);
}

.inbox-item-title[b-f6l9kfwkof] {
    display: block;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-item-announcement[b-f6l9kfwkof] {
    margin-right: 0.2rem;
}

.inbox-item-preview[b-f6l9kfwkof] {
    display: block;
    font-size: 0.8rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-panel-footer[b-f6l9kfwkof] {
    padding: 0.4rem 0.85rem;
    border-top: 1px solid var(--bs-border-color, #dee2e6);
    text-align: center;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.app-shell[b-4i7s1ysys1] {
    --app-sidebar-transition-duration: var(--app-motion-standard);
    --app-sidebar-transition-easing: var(--app-motion-ease);
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    color: var(--app-text-primary);
    background:
        radial-gradient(circle at top left, rgba(0, 120, 212, 0.08), transparent 30rem),
        linear-gradient(180deg, #fbfdff 0%, var(--app-bg-page) 42rem),
        var(--app-bg-page);
}

.app-main[b-4i7s1ysys1] {
    flex: 1;
    min-width: 0;
    background:
        var(--app-bg-page);
}

.app-sidebar[b-4i7s1ysys1] {
    background:
        var(--app-sidebar-bg);
    border-right: 1px solid var(--app-border-subtle);
    z-index: 25;
}

.app-topbar[b-4i7s1ysys1] {
    position: relative;
    isolation: isolate;
    /* No overflow:hidden — it clips layout-level dropdowns that escape below the bar (e.g. the notification
       bell panel). The decorative ::before/::after are inset-bounded and fade to transparent, so they do not
       bleed without the clip; .app-topbar-user keeps its own overflow for the name ellipsis. */
    /* The same ground as the sidebar's brand row: they are one band across the top of the app, and were
       previously two different tints meeting in the middle of it. */
    background: var(--app-sidebar-bg-elevated);
    box-shadow: 0 8px 22px rgba(23, 32, 51, 0.08);
    backdrop-filter: blur(12px);
    padding-inline: 1.5rem;
    justify-content: space-between;
    gap: 0.75rem;
    height: var(--app-topbar-height);
    min-height: var(--app-topbar-height);
    display: flex;
    align-items: center;
}

    /* The bar carried a gradient band along its bottom edge and a radial wash behind its left third.
       Both were there to make an empty caption look like something. The bar now carries the breadcrumb
       and the brandmark, so the identity is in the mark and the information is in the trail - the two
       decorations were competing with both. The border-bottom above is the whole separator now. */

    /* The content half of the header band's ribbon; the sidebar draws the other half at the same offset
       and height, so the two meet as one continuous line across the whole app. */
    .app-topbar[b-4i7s1ysys1]::after {
        content: "";
        position: absolute;
        inset: auto 0 0 0;
        height: 3px;
        background: var(--app-signal-ribbon);
        pointer-events: none;
        z-index: 2;
    }

    .app-topbar > *[b-4i7s1ysys1] {
        position: relative;
        z-index: 1;
    }

    .app-topbar-context[b-4i7s1ysys1],
    .app-topbar-actions[b-4i7s1ysys1] {
        display: inline-flex;
        align-items: center;
        min-width: 0;
    }

    .app-topbar-context[b-4i7s1ysys1] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.05rem;
        line-height: 1.1;
    }

    .app-topbar-context strong[b-4i7s1ysys1] {
        color: var(--app-text-primary);
        font-family: var(--app-font-display);
        font-size: 0.98rem;
        font-weight: 700;
        letter-spacing: -0.01em;
    }

    .app-topbar-kicker[b-4i7s1ysys1] {
        color: var(--app-accent-secondary);
        font-family: var(--app-font-display);
        font-size: 0.7rem;
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
    }

    .app-topbar-actions[b-4i7s1ysys1] {
        justify-content: flex-end;
        gap: 0.75rem;
    }

    .app-topbar a[b-4i7s1ysys1] {
        color: var(--app-text-secondary);
        text-decoration: none;
        transition:
            color var(--app-motion-fast) var(--app-motion-ease),
            border-color var(--app-motion-fast) var(--app-motion-ease),
            background-color var(--app-motion-fast) var(--app-motion-ease),
            box-shadow var(--app-motion-fast) var(--app-motion-ease);
    }

    .app-topbar a:hover[b-4i7s1ysys1] {
        color: var(--app-accent-primary);
    }

    .app-topbar-user[b-4i7s1ysys1] {
        color: var(--app-text-secondary);
        font-family: var(--app-font-display);
        font-size: 0.9rem;
        font-weight: 600;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .app-topbar .btn[b-4i7s1ysys1] {
        border-radius: var(--app-radius-pill);
        box-shadow: var(--app-shadow-sm);
    }

    @media (max-width: 575.98px) {
        .app-topbar[b-4i7s1ysys1] {
            padding-inline: 1rem;
        }

        .app-topbar-context strong[b-4i7s1ysys1] {
            font-size: 0.9rem;
        }

        .app-topbar-kicker[b-4i7s1ysys1] {
            display: none;
        }

        .app-topbar-user[b-4i7s1ysys1] {
            max-width: 9rem;
        }
    }

    .app-topbar .btn-outline-secondary[b-4i7s1ysys1] {
        --bs-btn-color: var(--app-text-secondary);
        --bs-btn-border-color: var(--app-border-strong);
        --bs-btn-hover-color: var(--app-text-inverse);
        --bs-btn-hover-bg: var(--app-accent-secondary);
        --bs-btn-hover-border-color: var(--app-accent-secondary);
    }

    .app-topbar .btn-outline-primary[b-4i7s1ysys1] {
        --bs-btn-color: var(--app-accent-primary);
        --bs-btn-border-color: rgba(0, 120, 212, 0.42);
        --bs-btn-hover-bg: var(--app-accent-primary);
        --bs-btn-hover-border-color: var(--app-accent-primary);
    }

.app-content[b-4i7s1ysys1] {
    width: 100%;
    padding-top: 1.35rem;
    padding-bottom: 2rem;
    max-width: var(--app-content-max-width);
    margin-inline: auto;
}

.app-content--wide[b-4i7s1ysys1] {
    max-width: min(100%, var(--app-workspace-max-width));
}

@media (min-width: 768px) {
    .app-shell[b-4i7s1ysys1] {
        flex-direction: row;
    }

    .app-sidebar[b-4i7s1ysys1] {
        width: var(--app-sidebar-expanded-width);
        height: 100vh;
        overflow: hidden;
        position: sticky;
        top: 0;
        transition:
            width var(--app-sidebar-transition-duration) var(--app-sidebar-transition-easing),
            box-shadow var(--app-sidebar-transition-duration) var(--app-sidebar-transition-easing);
    }

    .app-shell--sidebar-collapsed .app-sidebar[b-4i7s1ysys1] {
        width: var(--app-sidebar-collapsed-width);
    }

    .app-topbar[b-4i7s1ysys1] {
        position: sticky;
        top: 0;
        z-index: 30;
    }
}

@media (max-width: 767.98px) {
    .app-sidebar[b-4i7s1ysys1] {
        border-right: none;
        border-bottom: 1px solid var(--app-border-subtle);
        box-shadow: 0 8px 20px rgba(23, 32, 51, 0.08);
    }

    .app-topbar[b-4i7s1ysys1] {
        justify-content: flex-end;
        min-height: calc(var(--app-topbar-height) + 0.25rem);
    }
}

@media (prefers-reduced-motion: reduce) {
    .app-sidebar[b-4i7s1ysys1] {
        transition: none;
    }

    .app-topbar a[b-4i7s1ysys1] {
        transition: none;
    }
}

#blazor-error-ui[b-4i7s1ysys1] {
    color-scheme: light only;
    background:
        linear-gradient(90deg, rgba(255, 140, 0, 0.18), transparent),
        var(--app-surface-0);
    bottom: 0;
    border-top: 1px solid var(--app-border-strong);
    box-shadow: 0 -8px 24px rgba(23, 32, 51, 0.14);
    box-sizing: border-box;
    color: var(--app-text-primary);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-4i7s1ysys1] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.nav-menu[b-deaf72oocf] {
    min-height: 100%;
    background:
        var(--app-sidebar-bg);
    color: var(--app-text-primary);
}

.navbar-toggler[b-deaf72oocf] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: var(--app-text-primary);
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid var(--app-border-subtle);
    border-radius: var(--app-radius-lg);
    padding: 0;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2879, 95, 117, 0.88%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem var(--app-surface-0);
    box-shadow: var(--app-shadow-sm);
    transition:
        background-color var(--app-motion-fast) var(--app-motion-ease),
        border-color var(--app-motion-fast) var(--app-motion-ease),
        box-shadow var(--app-motion-fast) var(--app-motion-ease);
}

.navbar-toggler--open[b-deaf72oocf] {
    background-color: var(--app-nav-hover-bg);
    border-color: var(--app-nav-active-border);
}

.navbar-toggler:hover[b-deaf72oocf],
.navbar-toggler:focus-visible[b-deaf72oocf] {
    background-color: var(--app-nav-hover-bg);
    border-color: var(--app-border-focus);
    box-shadow: var(--app-focus-ring);
}

/* I5 §D4: an explicit flex band sized by the shared --app-topbar-height token so the sidebar brand band and
   the top bar are provably equal height and vertically centred. padding-block:0 neutralises Bootstrap
   .navbar's default 0.5rem block padding — the actual cause of the two-line brand lockup sitting a few px
   low; box-sizing keeps the 1px bottom border inside the band height (matching the top bar). */
.top-row[b-deaf72oocf] {
    position: relative;
    display: flex;
    align-items: center;
    box-sizing: border-box;
    height: var(--app-topbar-height);
    min-height: var(--app-topbar-height);
    padding-block: 0;
    padding-inline: 1rem;
    overflow: hidden;
    background: var(--app-sidebar-bg-elevated);
}

/* The lockup inside this band is two lines now, not three: the version moved up onto the company line
   when the product name grew. About 39px of content inside a 56px band, against roughly 41px before — so
   the name got bigger and the block got no taller, and the ribbon below did not have to move.

   The header band's bottom edge is one continuous ribbon from the sidebar across the command bar. It
   separates the chrome from the content, and it is the one place in the app the gradient runs full width
   - which is what it was for before it got stamped on every panel. The sidebar half is drawn here and
   the content half on .app-topbar; both are 3px at the same offset, so they meet as one line. */
.top-row[b-deaf72oocf]::after {
    content: "";
    position: absolute;
    inset: auto 0 0 0;
    height: 3px;
    background: var(--app-signal-ribbon);
    pointer-events: none;
}

.container-fluid[b-deaf72oocf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    min-width: 0;
    padding-inline: 0;
}

/* The lockup's own geometry and type live in BrandLockup.razor.css. What is left here is the band's side
   of the arrangement: where the anchor sits, and how it answers to hover, focus and the rail. */
.navbar-brand[b-deaf72oocf] {
    display: inline-flex;
    min-width: 0;
    /* margin as well as padding: Bootstrap gives .navbar-brand a 1rem margin-end, which in the rail pushed
       the centred mark 8px left of centre. The band lays this anchor out itself. */
    margin: 0;
    padding: 0;
    text-decoration: none;
}

/* ::deep because the lockup is a child component and carries its own scope id. The hover belongs to the
   anchor rather than to the lockup: the whole band-left is the home link, including the space around the
   mark, and an effect that only fires over the glyphs reads as a dead zone. */
.navbar-brand:hover[b-deaf72oocf]  .brand-product,
.navbar-brand:focus-visible[b-deaf72oocf]  .brand-product {
    color: var(--app-accent-primary);
}

.navbar-brand:hover[b-deaf72oocf]  .brand-mark,
.navbar-brand:focus-visible[b-deaf72oocf]  .brand-mark {
    transform: translateY(-1px);
}

.nav-zone-label[b-deaf72oocf] {
    font-size: 0.7rem;
    font-family: var(--app-font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    /* Secondary, not tertiary: the sidebar ground is --app-sidebar-bg, which is lighter than the white
       the tertiary token was measured against, and this label came out at 4.25:1 there. A section heading
       is read, not glanced at. */
    color: var(--app-text-secondary);
    padding: 0.85rem 1rem 0.35rem 1rem;
}

/* Sidebar nav refresh (N1 §5 D1): a hairline top divider between adjacent groups so the eight
   sections read as distinct chunks, not one wall of links. Uses the shared subtle-border token;
   the padding gives the summary breathing room below the line. Applies in rail mode too. */
.nav-section[b-deaf72oocf] {
    margin-top: 0.4rem;
    padding-top: 0.4rem;
    border-top: 1px solid var(--app-border-subtle);
}

/* #2: flattened single-item zones render as top-level links; keep the section spacing rhythm. */
.nav-item--standalone[b-deaf72oocf] {
    margin-top: 0.35rem;
}

.nav-section-summary[b-deaf72oocf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem;
    list-style: none;
    cursor: pointer;
    min-height: 2.25rem;
    user-select: none;
    border-radius: var(--app-radius-md);
    transition:
        background-color var(--app-motion-fast) var(--app-motion-ease),
        color var(--app-motion-fast) var(--app-motion-ease);
}

.nav-section-summary:hover[b-deaf72oocf],
.nav-section-summary:focus-visible[b-deaf72oocf] {
    background: rgba(0, 120, 212, 0.06);
    color: var(--app-accent-deep);
}

.nav-section-summary[b-deaf72oocf]::-webkit-details-marker {
    display: none;
}

.nav-section:not([open]) .nav-section-chevron[b-deaf72oocf] {
    transform: rotate(-90deg);
}

.nav-section-heading[b-deaf72oocf] {
    display: inline-flex;
    align-items: center;
    gap: 0.7rem;
    min-width: 0;
}

.nav-section-icon[b-deaf72oocf] {
    flex: 0 0 1.25rem;
    width: 1.25rem;
    text-align: center;
    color: var(--app-accent-secondary);
}

.nav-section-title[b-deaf72oocf] {
    max-width: 12rem;
    overflow: hidden;
    white-space: nowrap;
    opacity: 1;
    transition:
        max-width var(--app-motion-fast) var(--app-motion-ease),
        opacity var(--app-motion-fast) var(--app-motion-ease);
}

.nav-section-chevron[b-deaf72oocf] {
    color: var(--app-text-tertiary);
    transition:
        transform var(--app-motion-fast) var(--app-motion-ease),
        opacity var(--app-motion-fast) var(--app-motion-ease),
        color var(--app-motion-fast) var(--app-motion-ease);
}

.nav-item[b-deaf72oocf] {
    font-size: 0.9rem;
    padding-inline: 1rem;
    padding-bottom: 0.25rem;
}

    .nav-item[b-deaf72oocf]  .nav-link {
        color: var(--app-text-secondary);
        background: none;
        border: 1px solid transparent;
        border-radius: var(--app-radius-md);
        min-height: 2.5rem;
        display: flex;
        align-items: center;
        gap: 0.7rem;
        padding: 0.45rem 0.65rem;
        width: 100%;
        position: relative;
        overflow: hidden;
        white-space: nowrap;
        transition:
            background-color var(--app-motion-fast) var(--app-motion-ease),
            border-color var(--app-motion-fast) var(--app-motion-ease),
            box-shadow var(--app-motion-fast) var(--app-motion-ease),
            color var(--app-motion-fast) var(--app-motion-ease),
            transform var(--app-motion-fast) var(--app-motion-ease);
    }

    .nav-item[b-deaf72oocf]  .nav-link::before {
        content: "";
        position: absolute;
        inset: 0.45rem auto 0.45rem 0.25rem;
        width: 0.2rem;
        border-radius: var(--app-radius-pill);
        background: var(--app-signal-ribbon-vertical);
        opacity: 0;
        transition: opacity var(--app-motion-fast) var(--app-motion-ease);
    }

    .nav-item[b-deaf72oocf]  .nav-link.active {
        background:
            var(--app-signal-ribbon-soft),
            var(--app-nav-active-bg);
        border-color: var(--app-nav-active-border);
        color: var(--app-nav-active-text);
        font-weight: 600;
        box-shadow: var(--app-shadow-nav-active);
    }

    .nav-item[b-deaf72oocf]  .nav-link.active::before {
        opacity: 1;
    }

    .nav-item[b-deaf72oocf]  .nav-link:hover {
        background-color: var(--app-nav-hover-bg);
        color: var(--app-text-primary);
        border-color: rgba(0, 120, 212, 0.18);
        transform: translateX(1px);
    }

    .nav-item[b-deaf72oocf]  .nav-link:focus-visible {
        outline: 2px solid var(--app-border-focus);
        outline-offset: 2px;
        box-shadow: var(--app-focus-ring);
    }

    .nav-item[b-deaf72oocf]  .nav-link.nav-quick-action {
        margin-left: 0.35rem;
        width: calc(100% - 0.35rem);
    }

.nav-link-icon[b-deaf72oocf] {
    flex: 0 0 1.25rem;
    width: 1.25rem;
    text-align: center;
    color: var(--app-accent-secondary);
    transition: color var(--app-motion-fast) var(--app-motion-ease);
}

.nav-item[b-deaf72oocf]  .nav-link.active .nav-link-icon,
.nav-item[b-deaf72oocf]  .nav-link:hover .nav-link-icon {
    color: var(--app-accent-primary);
}

.nav-link-label[b-deaf72oocf] {
    max-width: 13rem;
    overflow: hidden;
    white-space: nowrap;
    opacity: 1;
    transition:
        max-width var(--app-motion-fast) var(--app-motion-ease),
        opacity var(--app-motion-fast) var(--app-motion-ease);
}

/* Sidebar nav refresh (N4, PO UAT): the collapse toggle is a compact icon button, desktop-only (collapse-to-rail
   doesn't apply to the mobile menu). Base hides it; ≥768px reveals and PLACES it — see the desktop block.
   I5 §D3: plain icon-button — the rectangle chrome (border, gradient fill, drop-shadow) is stripped so it
   reads as a bare icon; only a subtle hover fill and a keyboard-focus ring remain. */
.sidebar-rail-toggle[b-deaf72oocf] {
    display: none;
    width: 2.5rem;
    min-height: 2.25rem;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    padding: 0.35rem;
    border: none;
    border-radius: var(--app-radius-md);
    background: transparent;
    color: var(--app-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    transition:
        background-color var(--app-motion-fast) var(--app-motion-ease),
        color var(--app-motion-fast) var(--app-motion-ease);
}

.sidebar-rail-toggle:hover[b-deaf72oocf] {
    background-color: var(--app-nav-hover-bg);
    color: var(--app-text-primary);
}

.sidebar-rail-toggle:focus-visible[b-deaf72oocf] {
    background-color: var(--app-nav-hover-bg);
    color: var(--app-text-primary);
    outline: 2px solid var(--app-border-focus);
    outline-offset: 2px;
    box-shadow: var(--app-focus-ring);
}

.sidebar-rail-toggle[aria-pressed="true"][b-deaf72oocf] {
    background-color: var(--app-nav-active-bg);
    color: var(--app-accent-deep);
}

.sidebar-rail-toggle .bi[b-deaf72oocf] {
    flex: 0 0 1.25rem;
    width: 1.25rem;
    text-align: center;
}

.nav-scrollable[b-deaf72oocf] {
    display: none;
}

/* Refinements §D1: pinned header + nav list stack as a flex column when the mobile menu is open. */
.nav-scrollable--open[b-deaf72oocf] {
    display: flex;
    flex-direction: column;
}

/* Refinements §D1: the <nav> is the scroll region so the .nav-footer can pin below it. flex-wrap:nowrap is
   REQUIRED — the element is Bootstrap `.nav.flex-column` (flex-wrap:wrap by default); once it has a bounded
   height (flex:1 1 auto inside the fixed-height .nav-scrollable column), a wrapping column-flex breaks the
   overflow into a SECOND column instead of scrolling. nowrap makes tall menus scroll vertically. */
.nav-scrollable > nav[b-deaf72oocf] {
    flex: 1 1 auto;
    flex-wrap: nowrap;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-color: rgba(0, 120, 212, 0.32) transparent;
    scrollbar-width: thin;
}

/* Sidebar nav refresh (N4, PO UAT): the footer pinned at the sidebar bottom (the
   collapse toggle moved to the brand band). The <nav> scrolls above it. */
.nav-footer[b-deaf72oocf] {
    flex: 0 0 auto;
    border-top: 1px solid var(--app-border-subtle);
    padding-bottom: 0.25rem;
}

/* PO refinement 2026-08-28: the feedback trigger's slot. It is the footer's only occupant now that the
   version moved to the brand lockup, so the slot carries the footer's bottom breathing room itself. */
.nav-feedback[b-deaf72oocf] {
    padding: 0.5rem 0.75rem 0.5rem;
}

/* In the rail, the trigger collapses to its icon — the same rule the nav links follow. ::deep because the label
   belongs to the child component's own scoped DOM. */
.nav-menu--rail .nav-feedback[b-deaf72oocf] {
    padding-inline: 0.35rem;
}

.nav-menu--rail .nav-feedback[b-deaf72oocf]  .feedback-launcher-toggle-label {
    display: none;
}

.nav-scrollable > nav[b-deaf72oocf]::-webkit-scrollbar {
    width: 0.55rem;
}

.nav-scrollable > nav[b-deaf72oocf]::-webkit-scrollbar-track {
    background: transparent;
}

.nav-scrollable > nav[b-deaf72oocf]::-webkit-scrollbar-thumb {
    background: rgba(0, 120, 212, 0.22);
    border: 0.15rem solid transparent;
    border-radius: var(--app-radius-pill);
    background-clip: padding-box;
}

.nav-scrollable > nav[b-deaf72oocf]::-webkit-scrollbar-thumb:hover {
    background: rgba(0, 120, 212, 0.34);
    background-clip: padding-box;
}

@media (min-width: 768px) {
    .nav-menu[b-deaf72oocf] {
        /* relative: the collapse toggle is positioned against this box when the sidebar is expanded. */
        position: relative;
        display: flex;
        flex-direction: column;
        height: 100vh;
    }

    /* The band keeps its right edge clear for the toggle that is drawn over it (1rem edge + 2.5rem button).
       The rail rule below resets both sides — there the toggle has left the band. */
    .top-row[b-deaf72oocf] {
        padding-right: 3.5rem;
    }

    .navbar-toggler[b-deaf72oocf] {
        display: none;
    }

    .nav-scrollable[b-deaf72oocf] {
        /* Refinements §D1: a flex column — the <nav> scrolls, the .nav-footer pins at the bottom. Sized by
           the shared --app-topbar-height token (matches the brand band), not a coincidental 3.5rem. */
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        min-height: 0;
        height: calc(100vh - var(--app-topbar-height));
        overflow: hidden;
    }

    /* Expanded: drawn into the band's right edge, vertically centred in the band the same way the flex band
       centred it when it was a child — (band height − button height) / 2. */
    .sidebar-rail-toggle[b-deaf72oocf] {
        display: inline-flex;
        position: absolute;
        top: calc((var(--app-topbar-height) - 2.25rem) / 2);
        right: 1rem;
        z-index: 1;
    }

    .nav-menu--rail .top-row[b-deaf72oocf] {
        padding-inline: 0.5rem;
    }

    /* Collapsed: the first rail item, directly under the mark. Two full-size controls do not fit side by
       side in a 59px band, and the brand does not leave the screen (BrandMarkE2ETests), so the toggle
       takes the row below — where SidebarRailE2ETests measures it whole, uncovered and clickable. */
    .nav-menu--rail .sidebar-rail-toggle[b-deaf72oocf] {
        position: static;
        margin-block: 0.35rem 0;
    }

    .nav-menu--rail .container-fluid[b-deaf72oocf] {
        justify-content: center;
    }

    /* The rail reduces the lockup to its mark rather than removing it. It used to be display:none —
       narrow enough for the compass AND the toggle was the reasoning — so collapsing the sidebar took the
       brand off the screen entirely, which is not a thing a brand is allowed to do. The wordmark collapses
       to zero width beside the toggle and the mark stays.

       This is a rule and not a component parameter on purpose: the rail is a VIEWPORT condition, while
       .nav-menu--rail follows a stored preference that is just as true on a phone. Deciding the form in C#
       would strip the wordmark from the mobile header, where none of these rules apply. */
    .nav-menu--rail[b-deaf72oocf]  .brand-lockup {
        --brand-mark-size: 2.05rem;
        /* gap 0: the wordmark is zero-width here but the lockup's gap beside it is not, and it left the
           mark 5px off the rail's centre. */
        gap: 0;
    }

    .nav-menu--rail .nav-section-heading[b-deaf72oocf] {
        gap: 0;
    }

    .nav-menu--rail[b-deaf72oocf]  .brand-text,
    .nav-menu--rail .nav-link-label[b-deaf72oocf],
    .nav-menu--rail .nav-section-title[b-deaf72oocf] {
        max-width: 0;
        opacity: 0;
    }

    .nav-menu--rail .nav-item[b-deaf72oocf] {
        padding-inline: 0.55rem;
    }

    .nav-menu--rail .sidebar-rail-toggle[b-deaf72oocf],
    .nav-menu--rail .nav-item[b-deaf72oocf]  .nav-link,
    .nav-menu--rail .nav-section-summary[b-deaf72oocf] {
        width: 2.75rem;
        justify-content: center;
        gap: 0;
        margin-inline: auto;
        padding-inline: 0;
    }

    .nav-menu--rail .nav-item[b-deaf72oocf]  .nav-link.nav-quick-action {
        width: 2.75rem;
        margin-left: auto;
    }

    .nav-menu--rail .nav-zone-label[b-deaf72oocf] {
        padding-inline: 0;
    }

    .nav-menu--rail .nav-section-chevron[b-deaf72oocf] {
        opacity: 0;
        width: 0;
        overflow: hidden;
    }

    .nav-menu--rail .nav-item[b-deaf72oocf]  .nav-link.active::before {
        left: 0.2rem;
        top: 0.45rem;
        bottom: 0.45rem;
        width: 0.2rem;
        border-radius: 999px;
        background: var(--app-signal-ribbon-vertical);
    }

    .nav-menu--rail .nav-item[b-deaf72oocf]  .nav-link:hover {
        transform: translateY(-1px);
    }

    .nav-menu--rail .nav-zone-label[b-deaf72oocf] {
        color: transparent;
    }

    .nav-menu--rail .nav-section-icon[b-deaf72oocf] {
        color: var(--app-accent-secondary);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nav-section-title[b-deaf72oocf],
    .nav-section-chevron[b-deaf72oocf],
    .nav-link-label[b-deaf72oocf],
    .navbar-toggler[b-deaf72oocf],
    .sidebar-rail-toggle[b-deaf72oocf],
    .nav-item[b-deaf72oocf]  .nav-link,
    .nav-item[b-deaf72oocf]  .nav-link::before,
    .nav-link-icon[b-deaf72oocf] {
        transition: none;
    }

    .navbar-brand:hover[b-deaf72oocf]  .brand-mark,
    .navbar-brand:focus-visible[b-deaf72oocf]  .brand-mark,
    .nav-item[b-deaf72oocf]  .nav-link:hover,
    .nav-menu--rail .nav-item[b-deaf72oocf]  .nav-link:hover {
        transform: none;
    }
}
/* /Components/Layout/NotificationBell.razor.rz.scp.css */
.notif-bell[b-o62k1s9tn0] {
    position: relative;
    display: inline-block;
}

.notif-bell-toggle[b-o62k1s9tn0] {
    position: relative;
}

.notif-bell-badge[b-o62k1s9tn0] {
    position: absolute;
    top: -6px;
    right: -6px;
    font-size: 0.6rem;
    line-height: 1;
    padding: 0.2em 0.4em;
    border-radius: 999px;
}

.notif-panel[b-o62k1s9tn0] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.4rem);
    width: 340px;
    max-width: 90vw;
    max-height: 70vh;
    overflow-y: auto;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.15);
    z-index: 1050;
}

.notif-panel-header[b-o62k1s9tn0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.6rem 0.85rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.notif-markall[b-o62k1s9tn0] {
    padding: 0;
    text-decoration: none;
}

.notif-panel-empty[b-o62k1s9tn0] {
    padding: 1.25rem 0.85rem;
    text-align: center;
    color: var(--bs-secondary-color, #6c757d);
}

.notif-list[b-o62k1s9tn0] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.notif-item[b-o62k1s9tn0] {
    border-bottom: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.075));
}

.notif-item--unread[b-o62k1s9tn0] {
    background: var(--bs-tertiary-bg, rgba(13, 110, 253, 0.06));
}

.notif-item-button[b-o62k1s9tn0] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    width: 100%;
    border: 0;
    background: transparent;
    text-align: left;
    padding: 0.6rem 0.85rem;
    cursor: pointer;
}

.notif-item-button:hover[b-o62k1s9tn0] {
    background: var(--bs-secondary-bg, rgba(0, 0, 0, 0.04));
}

.notif-item-dot[b-o62k1s9tn0] {
    flex: 0 0 auto;
    width: 0.5rem;
    height: 0.5rem;
    margin-top: 0.35rem;
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
}

.notif-item-body[b-o62k1s9tn0] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.notif-item-title[b-o62k1s9tn0] {
    font-weight: 500;
}

.notif-item-time[b-o62k1s9tn0] {
    font-size: 0.75rem;
    color: var(--bs-secondary-color, #6c757d);
}

.notif-panel-footer[b-o62k1s9tn0] {
    padding: 0.4rem 0.85rem;
    border-top: 1px solid var(--bs-border-color, #dee2e6);
    text-align: center;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-xqx571b185],
.components-reconnect-repeated-attempt-visible[b-xqx571b185],
.components-reconnect-failed-visible[b-xqx571b185],
.components-pause-visible[b-xqx571b185],
.components-resume-failed-visible[b-xqx571b185],
.components-rejoining-animation[b-xqx571b185] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-xqx571b185],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-xqx571b185],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-xqx571b185],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-xqx571b185],
#components-reconnect-modal.components-reconnect-retrying[b-xqx571b185],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-xqx571b185],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-xqx571b185],
#components-reconnect-modal.components-reconnect-failed[b-xqx571b185],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-xqx571b185] {
    display: block;
}


#components-reconnect-modal[b-xqx571b185] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-xqx571b185 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-xqx571b185 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-xqx571b185 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-xqx571b185]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-xqx571b185 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-xqx571b185 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-xqx571b185 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-xqx571b185 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-xqx571b185] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-xqx571b185] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-xqx571b185] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-xqx571b185] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-xqx571b185] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-xqx571b185] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-xqx571b185] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-xqx571b185 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-xqx571b185] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-xqx571b185 {
    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/ReportLayout.razor.rz.scp.css */
/* The Blazor error UI is hidden by default and revealed by the framework (inline style) only on a real
   circuit error. This rule lived ONLY in MainLayout.razor.css (scoped), so the report page — on its own
   ReportLayout — had no hide rule and the banner showed permanently. Scope the same styling here. */
#blazor-error-ui[b-et50ykt7e2] {
    color-scheme: light only;
    background:
        linear-gradient(90deg, rgba(255, 140, 0, 0.18), rgba(255, 255, 255, 0.96)),
        var(--app-surface-0);
    bottom: 0;
    border-top: 1px solid var(--app-border-strong);
    box-shadow: 0 -8px 24px rgba(23, 32, 51, 0.14);
    box-sizing: border-box;
    color: var(--app-text-primary);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-et50ykt7e2] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/SessionExpiryErrorBoundary.razor.rz.scp.css */
/* F-01 (§7.3 A1): the quiet placeholder the boundary renders in place of a page that hit a session-expiry 401.
   Deliberately understated — the persistent SessionExpiryHost banner (outside this boundary) carries the alarm
   and the "Sign in again" action; this only keeps the content area calm instead of blank or crashed. */
.session-expiry-placeholder[b-2dspnhc1o4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 3rem 1rem;
    color: var(--bs-secondary-color, #6c757d);
    text-align: center;
}

.session-expiry-placeholder-icon[b-2dspnhc1o4] {
    font-size: 1.75rem;
    opacity: 0.6;
}

.session-expiry-placeholder-text[b-2dspnhc1o4] {
    margin: 0;
    max-width: 32rem;
}
/* /Components/Layout/SessionExpiryHost.razor.rz.scp.css */
.session-expired-host[b-t4ny4rjspk] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1080; /* above content + toasts; below the confirm modal backdrop (1055 dialog / bootstrap) is fine — this is a bar */
}

.session-expired-bar[b-t4ny4rjspk] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    padding: 0.5rem 1rem;
    background-color: var(--bs-danger, #dc3545);
    color: #fff;
    font-weight: 500;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

/* F-01: never print the session-expiry banner. ReportLayout mounts this host on the chrome-free print pages
   (QaAuditReportPrint / WorkItemReport); a fixed-position bar in a printed deliverable would repeat/overlap the
   letterhead. Hidden everywhere in print — the banner is an on-screen re-login affordance, never document content. */
@media print {
    .session-expired-host[b-t4ny4rjspk] {
        display: none;
    }
}
/* /Components/Layout/ToastHost.razor.rz.scp.css */
/* S11 Slice 5 — toast stack. Fixed bottom-right, above app chrome. A global positioning fallback also
   lives in app.css (per the blazor rule for fixed floating UI) so a stale/missing scoped build can't drop
   the stack into layout flow. */
.notif-toast-host[b-hjpzhcvfkx] {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 1090; /* above the topbar/drawer, below modals */
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: min(22rem, calc(100vw - 2rem));
    pointer-events: none; /* let clicks fall through the empty gaps */
}

.notif-toast[b-hjpzhcvfkx] {
    pointer-events: auto;
    display: flex;
    align-items: stretch;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    /* The left edge is the toast's severity, drawn from the SAME status tokens the work-item chips and
       the state rails use - so "this failed" is one colour everywhere the app says it. */
    border-left: 3px solid var(--toast-accent, var(--app-accent-primary));
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    overflow: hidden;
    animation: notif-toast-in-b-hjpzhcvfkx 0.18s ease-out;
}

@keyframes notif-toast-in-b-hjpzhcvfkx {
    from { opacity: 0; transform: translateY(0.5rem); }
    to { opacity: 1; transform: translateY(0); }
}

.notif-toast-main[b-hjpzhcvfkx] {
    flex: 1 1 auto;
    display: flex;
    gap: 0.625rem;
    align-items: flex-start;
    padding: 0.625rem 0.5rem 0.625rem 0.75rem;
    background: transparent;
    border: 0;
    text-align: left;
    cursor: pointer;
    color: inherit;
}

.notif-toast--info[b-hjpzhcvfkx] { --toast-accent: var(--app-accent-primary); }
.notif-toast--success[b-hjpzhcvfkx] { --toast-accent: var(--app-st-pushed); }
.notif-toast--warning[b-hjpzhcvfkx] { --toast-accent: var(--app-st-modified); }
.notif-toast--danger[b-hjpzhcvfkx] { --toast-accent: var(--app-st-failed); }

/* An outcome with nowhere to go is not a control, so it takes the same padding without the affordances. */
.notif-toast-main--static[b-hjpzhcvfkx] {
    cursor: default;
}

.notif-toast-icon[b-hjpzhcvfkx] {
    color: var(--toast-accent, var(--app-accent-primary));
    line-height: 1.2;
    flex: 0 0 auto;
}

.notif-toast-body[b-hjpzhcvfkx] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.notif-toast-title[b-hjpzhcvfkx] {
    font-weight: 600;
    font-size: 0.875rem;
    line-height: 1.25;
}

.notif-toast-text[b-hjpzhcvfkx] {
    font-size: 0.8125rem;
    color: var(--bs-secondary-color, #6c757d);
    /* clamp long bodies so a toast never grows unbounded */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.notif-toast-close[b-hjpzhcvfkx] {
    flex: 0 0 auto;
    align-self: flex-start;
    padding: 0.25rem 0.5rem;
    background: transparent;
    border: 0;
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
}

.notif-toast-close:hover[b-hjpzhcvfkx] {
    color: var(--bs-body-color, #212529);
}
/* /Components/Pages/Admin/UserDetail.razor.rz.scp.css */
/* "Danger Zone" card header: the global light .card-header gradient (app.css) paints a ~96%-opaque
   light background-image over Bootstrap's .bg-danger (which only sets background-color), so
   bg-danger + text-white rendered a washed-out pink header with a near-invisible white title. A
   dedicated accent header restores the solid fill and keeps the white title legible —
   white on #d13438 (--app-danger) = 4.93:1 (WCAG AA). Mirrors the .wi-refresh-preview__title fix
   in ExplorerDetail.razor.css. CSS isolation ([b-*], specificity 0,2,0) beats the global
   .card-header rule (0,1,0), so no !important is needed. */
.danger-zone__header[b-jytdylx0og] {
    background: var(--app-danger);
    border-bottom-color: var(--app-danger);
    color: #fff;
}
/* /Components/Pages/AnnouncementDetail.razor.rz.scp.css */
/* The announcement body is plain text rendered escaped (no MarkupString); preserve author line breaks. */
.ann-detail-body[b-0y7z1zdj85] {
    white-space: pre-wrap;
    margin-bottom: 0;
}

.ann-detail-card[b-0y7z1zdj85] {
    max-width: 48rem;
}
/* /Components/Pages/Connections.razor.rz.scp.css */
.connections-hero[b-wxavg82hso] {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: clamp(1rem, 2vw, 1.5rem);
    padding: clamp(1rem, 2vw, 1.35rem);
}

.connections-hero__copy[b-wxavg82hso] {
    max-width: 52rem;
}

.connections-hero__copy h1[b-wxavg82hso] {
    font-weight: 700;
}

.connections-hero__commands[b-wxavg82hso] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-shrink: 0;
}

.connections-form-card[b-wxavg82hso],
.connections-card[b-wxavg82hso] {
    overflow: hidden;
}

.connections-card__header[b-wxavg82hso] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.connections-table[b-wxavg82hso] {
    min-width: 58rem;
}

.connections-table th[b-wxavg82hso] {
    white-space: nowrap;
}

.connection-name-cell[b-wxavg82hso] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 12rem;
}

.connection-name[b-wxavg82hso] {
    font-weight: 600;
}

.connection-url[b-wxavg82hso] {
    display: inline-flex;
    align-items: center;
    max-width: 22rem;
    color: var(--app-text-secondary);
    font-size: 0.875rem;
    word-break: break-word;
}

.connection-icon-button[b-wxavg82hso] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
}

.connection-project-link[b-wxavg82hso] {
    text-decoration: none;
}

.connections-actions-cell[b-wxavg82hso] {
    min-width: 19rem;
}

.connections-action-stack[b-wxavg82hso] {
    display: grid;
    gap: 0.45rem;
    justify-items: end;
}

.connections-action-group[b-wxavg82hso] {
    display: inline-flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.4rem;
    padding: 0.35rem;
    border: 1px solid var(--app-border-subtle);
    border-radius: var(--app-radius-lg);
    background:
        var(--app-surface-1);
}

.connections-action-group--primary[b-wxavg82hso] {
    border-color: rgba(0, 120, 212, 0.18);
}

.connections-action-group--secondary[b-wxavg82hso] {
    background: var(--app-surface-0);
}

.connections-inline-panel[b-wxavg82hso] {
    gap: 1rem;
    border-style: solid;
    background:
        var(--app-signal-ribbon-surface),
        var(--app-surface-0);
}

.connections-inline-panel__heading[b-wxavg82hso],
.connections-project-panel__header[b-wxavg82hso] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.connections-inline-panel__heading[b-wxavg82hso] {
    justify-content: flex-start;
}

.connections-inline-panel__heading > i[b-wxavg82hso] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: var(--app-radius-md);
    background: rgba(0, 120, 212, 0.12);
    color: var(--app-accent-secondary);
}

.connections-project-panel[b-wxavg82hso] {
    border-color: var(--app-border-subtle);
}

.connections-empty-state[b-wxavg82hso] {
    display: block;
    border-style: dashed;
    background:
        var(--app-signal-ribbon-surface),
        var(--app-surface-0);
}

@media (max-width: 991.98px) {
    .connections-hero[b-wxavg82hso] {
        flex-direction: column;
    }

    .connections-hero__commands[b-wxavg82hso] {
        justify-content: flex-start;
    }

    .connections-actions-cell[b-wxavg82hso] {
        min-width: 16rem;
    }

    .connections-action-stack[b-wxavg82hso],
    .connections-action-group[b-wxavg82hso] {
        justify-items: start;
        justify-content: flex-start;
    }
}
/* /Components/Pages/ExplorerDetail.razor.rz.scp.css */
/* The hero and its __main / __badges wrappers went with the PageShell conversion: the identity is the
   shell's title row now, and the chips ride in its Status slot. The command bar and the metadata line
   below it kept their names, which two structure tests pin. */
.wi-detail-hero__meta[b-rfd6phtz8t],
.wi-detail-hero__actions[b-rfd6phtz8t] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.wi-detail-hero__meta[b-rfd6phtz8t] {
    color: var(--app-text-secondary);
    font-size: 0.875rem;
    margin-bottom: 1rem;
}

.wi-detail-hero__link[b-rfd6phtz8t] {
    font-weight: 600;
    text-decoration: none;
}

.wi-detail-hero__actions[b-rfd6phtz8t] {
    justify-content: flex-start;
    padding-bottom: 0.85rem;
}

.wi-detail-tabs-wrapper[b-rfd6phtz8t] {
    margin-inline: 0;
    padding: 0.65rem 0.75rem 0;
    border: 1px solid var(--app-border-subtle);
    border-bottom: 0;
    border-radius: var(--app-radius-lg) var(--app-radius-lg) 0 0;
    background:
        var(--app-surface-0);
    box-shadow: var(--app-shadow-sm);
}

.wi-detail-tabs-wrapper .nav-tabs[b-rfd6phtz8t] {
    gap: 0.35rem;
}

.wi-detail-tabs-wrapper .nav-link[b-rfd6phtz8t] {
    border: 1px solid transparent;
    border-radius: var(--app-radius-md) var(--app-radius-md) 0 0;
    color: var(--app-text-secondary);
    font-weight: 600;
}

.wi-detail-tabs-wrapper .nav-link.active[b-rfd6phtz8t] {
    border-color: var(--app-border-subtle) var(--app-border-subtle) var(--app-surface-0);
    background: var(--app-surface-0);
    color: var(--app-text-primary);
    box-shadow: 0 -0.25rem 0.85rem rgba(23, 32, 51, 0.05);
}

.wi-detail-tab-panel[b-rfd6phtz8t] {
    margin-bottom: 1rem;
    padding: clamp(1rem, 2vw, 1.25rem);
    border: 1px solid var(--app-border-subtle);
    border-radius: 0 0 var(--app-radius-lg) var(--app-radius-lg);
    background: var(--app-surface-0);
    box-shadow: var(--app-shadow-sm);
}

.wi-detail-inline-panel[b-rfd6phtz8t],
.wi-refresh-preview[b-rfd6phtz8t],
.usecase-export-panel[b-rfd6phtz8t],
.usecase-export-preview[b-rfd6phtz8t] {
    padding: clamp(1rem, 2vw, 1.25rem);
    border-radius: var(--app-radius-lg);
    background:
        var(--app-signal-ribbon-surface),
        var(--app-surface-0);
}

.wi-detail-inline-panel__heading[b-rfd6phtz8t],
.wi-refresh-preview__header[b-rfd6phtz8t],
.usecase-export-panel__header[b-rfd6phtz8t],
.usecase-export-preview__header[b-rfd6phtz8t] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.wi-detail-inline-panel__heading[b-rfd6phtz8t] {
    justify-content: flex-start;
}

.wi-detail-inline-panel__heading > i[b-rfd6phtz8t] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: var(--app-radius-md);
    background: rgba(255, 140, 0, 0.12);
    color: var(--app-accent);
}

.usecase-export-preview__content[b-rfd6phtz8t] {
    max-height: 32rem;
    overflow: auto;
}

.user-story-standardization-panel[b-rfd6phtz8t] {
    background:
        var(--app-signal-ribbon-surface),
        var(--app-surface-0);
}

.standardization-preview[b-rfd6phtz8t] {
    overflow-wrap: anywhere;
}

/* "Live version from Azure DevOps" refresh preview headers: the global light .card-header gradient
   (app.css) paints over Bootstrap's .bg-primary, so bg-primary + text-white rendered near-white on
   near-white and the header title disappeared. A dedicated accent header keeps the white title
   legible — white on #0078d4 (--app-accent-primary) = 4.65:1 (WCAG AA). */
.wi-refresh-preview__title[b-rfd6phtz8t] {
    background: var(--app-accent-primary);
    border-bottom-color: var(--app-accent-secondary);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

/* The per-section Apply switch sits inside the accent header — keep it legible on the blue. */
.wi-refresh-apply[b-rfd6phtz8t] {
    margin: 0;
    font-size: 0.8125rem;
}

.wi-refresh-apply .form-check-label[b-rfd6phtz8t] {
    color: #fff;
}
/* /Components/Pages/ExplorerShared.razor.rz.scp.css */
.shared-explorer-header[b-lii92itot4] {
    margin-bottom: 1rem;
}

.shared-tabs[b-lii92itot4] {
    margin-bottom: 0.5rem;
}

.shared-empty[b-lii92itot4] {
    text-align: center;
    padding: 2rem 1rem;
}

.shared-empty i[b-lii92itot4] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.shared-list[b-lii92itot4] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.shared-item[b-lii92itot4] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-body-bg);
}

.shared-item-main[b-lii92itot4] {
    min-width: 0;
}

.shared-item-title[b-lii92itot4] {
    font-weight: 600;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.shared-item-title:hover[b-lii92itot4] {
    text-decoration: underline;
}

.shared-item-meta[b-lii92itot4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.2rem;
    font-size: 0.8125rem;
}

.shared-badge[b-lii92itot4] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    padding: 0 0.35rem;
    background-color: var(--bs-tertiary-bg);
}

.shared-status[b-lii92itot4] {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.72rem;
}

.shared-status--pending[b-lii92itot4] {
    color: var(--bs-warning-text-emphasis);
}

.shared-status--imported[b-lii92itot4] {
    color: var(--bs-success-text-emphasis);
}

.shared-status--revoked[b-lii92itot4],
.shared-status--dismissed[b-lii92itot4] {
    color: var(--bs-secondary-color);
}

.shared-item-note[b-lii92itot4] {
    margin-top: 0.35rem;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.shared-item-actions[b-lii92itot4] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 0;
}

.shared-pager[b-lii92itot4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.75rem;
}
/* /Components/Pages/FeedbackDetail.razor.rz.scp.css */
.feedback-detail-card[b-mjgnh29o2e] {
    max-width: 48rem;
}

.feedback-detail-head[b-mjgnh29o2e] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.feedback-detail-badges[b-mjgnh29o2e] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.feedback-detail-body[b-mjgnh29o2e] {
    white-space: pre-wrap;
    word-break: break-word;
    margin-bottom: 1rem;
}

.feedback-detail-context summary[b-mjgnh29o2e] {
    cursor: pointer;
    font-weight: 600;
    color: var(--bs-secondary-color);
}
/* /Components/Pages/FeedbackTriage.razor.rz.scp.css */
.feedback-triage-header[b-f8ihh3hcbx] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.feedback-triage-filters[b-f8ihh3hcbx] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.feedback-triage-filter[b-f8ihh3hcbx] {
    display: flex;
    flex-direction: column;
    min-width: 9rem;
}

.feedback-triage-empty[b-f8ihh3hcbx] {
    text-align: center;
    padding: 2rem 1rem;
}

.feedback-triage-empty i[b-f8ihh3hcbx] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.feedback-triage-list[b-f8ihh3hcbx] {
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
}

.feedback-triage-item[b-f8ihh3hcbx] {
    border-bottom: 1px solid var(--bs-border-color);
}

.feedback-triage-item:last-child[b-f8ihh3hcbx] {
    border-bottom: none;
}

.feedback-triage-item-link[b-f8ihh3hcbx] {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.7rem 0.85rem;
    color: inherit;
    text-decoration: none;
}

.feedback-triage-item-link:hover[b-f8ihh3hcbx] {
    background-color: var(--bs-tertiary-bg);
}

.feedback-triage-item-title[b-f8ihh3hcbx] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/* Who reported it — quiet next to the title, but always present (no row is anonymous). */
.feedback-triage-item-submitter[b-f8ihh3hcbx] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--bs-secondary-color);
    font-size: 0.85rem;
}

.feedback-triage-item-meta[b-f8ihh3hcbx] {
    display: inline-flex;
    gap: 0.35rem;
    white-space: nowrap;
}

.feedback-triage-item-time[b-f8ihh3hcbx] {
    white-space: nowrap;
    font-size: 0.8125rem;
}

.feedback-triage-pager[b-f8ihh3hcbx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
}
/* /Components/Pages/FeedbackTriageDetail.razor.rz.scp.css */
.feedback-triage-detail-head[b-dc8zoj95cn] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-bottom: 0.75rem;
}

.feedback-triage-detail-badges[b-dc8zoj95cn] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.feedback-triage-detail-body[b-dc8zoj95cn] {
    white-space: pre-wrap;
    word-break: break-word;
    margin-bottom: 1rem;
}

.feedback-triage-detail-context summary[b-dc8zoj95cn] {
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--bs-secondary-color);
}

.feedback-triage-buttons[b-dc8zoj95cn] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
/* /Components/Pages/Import.razor.rz.scp.css */
.import-finder-panel[b-bqzopqu187] {
    display: grid;
    gap: 1rem;
    padding: clamp(1rem, 2vw, 1.25rem);
    border: 1px solid var(--app-border-subtle, rgba(0, 120, 212, 0.16));
    border-radius: var(--app-radius-lg, 1rem);
    background:
        var(--app-surface-0, #fff);
    box-shadow: 0 0.75rem 2rem rgba(0, 32, 80, 0.06);
}

.import-finder-heading[b-bqzopqu187] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.import-finder-controls[b-bqzopqu187] {
    display: grid;
    grid-template-columns: minmax(16rem, 1.4fr) auto minmax(10rem, 0.6fr) minmax(7rem, 0.35fr) auto;
    align-items: end;
    gap: 0.85rem;
}

.import-search-control[b-bqzopqu187] {
    min-width: 0;
}

.import-status-filter .btn-group[b-bqzopqu187] {
    box-shadow: 0 0.35rem 1rem rgba(0, 120, 212, 0.08);
}

.import-clear-filter[b-bqzopqu187] {
    display: flex;
    align-items: end;
}

.import-picker-table[b-bqzopqu187] {
    min-width: 68rem;
}

.import-picker-table thead th[b-bqzopqu187] {
    white-space: nowrap;
    color: var(--app-text-secondary, #536579);
    font-size: 0.82rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.sortable-header[b-bqzopqu187] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 700;
    text-transform: inherit;
}

.sortable-header:hover[b-bqzopqu187],
.sortable-header:focus-visible[b-bqzopqu187] {
    color: var(--bs-primary, #0d6efd);
}

.import-title-cell[b-bqzopqu187] {
    min-width: 22rem;
}

.import-item-title[b-bqzopqu187] {
    font-weight: 600;
    color: var(--app-text-primary, #1f2937);
}

.import-item-metadata[b-bqzopqu187] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.35rem;
}

.metadata-chip[b-bqzopqu187] {
    display: inline-flex;
    align-items: center;
    max-width: 22rem;
    padding: 0.15rem 0.45rem;
    border: 1px solid rgba(0, 120, 212, 0.16);
    border-radius: 999px;
    background: rgba(0, 120, 212, 0.06);
    color: var(--app-text-secondary, #536579);
    font-size: 0.75rem;
    line-height: 1.35;
}

.metadata-chip--tag[b-bqzopqu187] {
    border-color: rgba(89, 57, 179, 0.16);
    background: rgba(89, 57, 179, 0.06);
}

.import-row-disabled[b-bqzopqu187] {
    opacity: 0.58;
}

.import-row-selected[b-bqzopqu187] {
    box-shadow: inset 0.25rem 0 0 var(--bs-primary, #0d6efd);
}

.import-empty-state[b-bqzopqu187] {
    border-style: dashed;
    background:
        var(--app-surface-0, #fff);
}

.import-finder-footer[b-bqzopqu187] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 0.75rem 0.25rem 0;
}

@media (max-width: 1199.98px) {
    .import-finder-controls[b-bqzopqu187] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 767.98px) {
    .import-finder-controls[b-bqzopqu187] {
        grid-template-columns: 1fr;
    }

    .import-finder-footer[b-bqzopqu187] {
        align-items: flex-start;
        flex-direction: column;
    }
}
/* /Components/Pages/ImportFromAudit.razor.rz.scp.css */
/* RFC-024 §6: the correction import borrows the DevOps wizard's shape. Only the item table's imported rows and
   the step blocks carry styling of their own; bands use Bootstrap's contextual badges like the validation panel. */
.ifa-step[b-fv6gy5eiv2] {
    margin-block: 1rem 2rem;
}

.ifa-share-list[b-fv6gy5eiv2] {
    max-width: 48rem;
}

.ifa-items td[b-fv6gy5eiv2],
.ifa-items th[b-fv6gy5eiv2] {
    vertical-align: middle;
}

.ifa-item--imported[b-fv6gy5eiv2] {
    color: var(--app-text-secondary);
}

.ifa-item--imported td:nth-child(3)[b-fv6gy5eiv2] {
    text-decoration: none;
}
/* /Components/Pages/Messages.razor.rz.scp.css */
.msg-inbox-header[b-noiaarg0ow] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.msg-inbox-tabs[b-noiaarg0ow] {
    margin-bottom: 0.75rem;
}

.msg-inbox-empty[b-noiaarg0ow] {
    text-align: center;
    padding: 2rem 1rem;
}

.msg-inbox-empty i[b-noiaarg0ow] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.msg-inbox-list[b-noiaarg0ow] {
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
}

.msg-list-item[b-noiaarg0ow] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0 0.75rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.msg-list-item:last-child[b-noiaarg0ow] {
    border-bottom: none;
}

.msg-list-item--unread[b-noiaarg0ow] {
    background-color: var(--bs-tertiary-bg);
}

.msg-list-item-button[b-noiaarg0ow] {
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: minmax(8rem, 14rem) 1fr auto;
    align-items: baseline;
    gap: 0.75rem;
    background: none;
    border: none;
    text-align: left;
    padding: 0.65rem 0;
    color: inherit;
    min-width: 0;
}

.msg-list-item-name[b-noiaarg0ow] {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.msg-list-item--unread .msg-list-item-name[b-noiaarg0ow] {
    font-weight: 700;
}

.msg-list-item-preview[b-noiaarg0ow] {
    color: var(--bs-secondary-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

.msg-list-item-time[b-noiaarg0ow] {
    white-space: nowrap;
    font-size: 0.8125rem;
}

.msg-unread-badge[b-noiaarg0ow] {
    flex: 0 0 auto;
    background-color: var(--bs-primary);
    color: var(--bs-white);
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    min-width: 1.25rem;
    padding: 0.05rem 0.4rem;
    text-align: center;
}

/* U1: per-row archive/unarchive affordance — sits at the row's trailing edge (after the unread badge). */
.msg-list-item-action[b-noiaarg0ow] {
    flex: 0 0 auto;
}

.msg-inbox-pager[b-noiaarg0ow] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
}

/* Announcement rows: the 📢 badge and a normal-weight "To: …" audience chip nested in the name column. */
.msg-ann-badge[b-noiaarg0ow] {
    margin-right: 0.15rem;
}

.msg-ann-audience[b-noiaarg0ow] {
    font-weight: 400;
}
/* /Components/Pages/MessageThread.razor.rz.scp.css */
.msg-thread-header[b-t6imdjmexm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.msg-not-found[b-t6imdjmexm] {
    text-align: center;
    padding: 2rem 1rem;
}

.msg-not-found i[b-t6imdjmexm] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.msg-thread-pager[b-t6imdjmexm] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0.75rem 0 0;
}

.msg-thread-list[b-t6imdjmexm] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.msg-bubble[b-t6imdjmexm] {
    max-width: min(40rem, 80%);
    padding: 0.5rem 0.75rem;
    border-radius: var(--bs-border-radius-lg);
    border: 1px solid var(--bs-border-color);
}

.msg-bubble--theirs[b-t6imdjmexm] {
    align-self: flex-start;
    background-color: var(--bs-body-bg);
    border-top-left-radius: 0;
}

.msg-bubble--mine[b-t6imdjmexm] {
    align-self: flex-end;
    background-color: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary-border-subtle);
    border-top-right-radius: 0;
}

.msg-bubble-meta[b-t6imdjmexm] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.15rem;
}

.msg-bubble-sender[b-t6imdjmexm] {
    font-weight: 600;
    font-size: 0.8125rem;
}

.msg-bubble-time[b-t6imdjmexm] {
    font-size: 0.75rem;
    white-space: nowrap;
}

.msg-bubble-body[b-t6imdjmexm] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* WI Sharing S3b: a WorkItemShare-kind message renders as a card (link or unavailable notice) inside the bubble. */
.msg-share-card[b-t6imdjmexm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.625rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-tertiary-bg);
    text-decoration: none;
    color: inherit;
}

a.msg-share-card:hover[b-t6imdjmexm] {
    border-color: var(--bs-primary-border-subtle);
    background-color: var(--bs-primary-bg-subtle);
}

.msg-share-card--unavailable[b-t6imdjmexm] {
    color: var(--bs-secondary-color);
    font-style: italic;
}

.msg-share-card-icon[b-t6imdjmexm] {
    font-size: 1.1rem;
    opacity: 0.75;
}

.msg-share-card-text[b-t6imdjmexm] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.msg-share-card-title[b-t6imdjmexm] {
    font-weight: 600;
    overflow-wrap: anywhere;
}

.msg-share-card-meta[b-t6imdjmexm] {
    font-size: 0.75rem;
}

.msg-share-note[b-t6imdjmexm] {
    margin-top: 0.35rem;
}

.msg-reply[b-t6imdjmexm] {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--bs-border-color);
}

.msg-reply-actions[b-t6imdjmexm] {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.5rem;
}
/* /Components/Pages/MyFeedback.razor.rz.scp.css */
.feedback-mine-header[b-295fh8gfaf] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.feedback-empty[b-295fh8gfaf] {
    text-align: center;
    padding: 2rem 1rem;
}

.feedback-empty i[b-295fh8gfaf] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.feedback-list[b-295fh8gfaf] {
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
}

.feedback-list-item[b-295fh8gfaf] {
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--bs-border-color);
}

.feedback-list-item:last-child[b-295fh8gfaf] {
    border-bottom: none;
}

.feedback-list-item-link[b-295fh8gfaf] {
    flex: 1 1 auto;
    min-width: 0;
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.7rem 0.85rem;
    color: inherit;
    text-decoration: none;
}

/* U2: per-row Remove affordance — sits at the row's trailing edge. */
.feedback-list-item-remove[b-295fh8gfaf] {
    flex: 0 0 auto;
    margin-right: 0.6rem;
}

.feedback-list-item-link:hover[b-295fh8gfaf] {
    background-color: var(--bs-tertiary-bg);
}

.feedback-list-item-title[b-295fh8gfaf] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.feedback-list-item-meta[b-295fh8gfaf] {
    display: inline-flex;
    gap: 0.35rem;
    white-space: nowrap;
}

.feedback-list-item-time[b-295fh8gfaf] {
    white-space: nowrap;
    font-size: 0.8125rem;
}

.feedback-mine-pager[b-295fh8gfaf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
}
/* /Components/Pages/Notifications.razor.rz.scp.css */
.notif-inbox[b-elbl4seh5o] {
    max-width: 820px;
    margin: 0 auto;
    padding: 1rem 0;
}

.notif-inbox-header[b-elbl4seh5o] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.notif-inbox-tabs[b-elbl4seh5o] {
    margin-bottom: 1rem;
}

.notif-inbox-empty[b-elbl4seh5o] {
    text-align: center;
    padding: 2.5rem 1rem;
}

.notif-inbox-empty i[b-elbl4seh5o] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
}

.notif-inbox-list[b-elbl4seh5o] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.notif-inbox-item[b-elbl4seh5o] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0.5rem;
    border-bottom: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.075));
}

.notif-inbox-item--unread[b-elbl4seh5o] {
    background: var(--bs-tertiary-bg, rgba(13, 110, 253, 0.06));
}

.notif-inbox-item-main[b-elbl4seh5o] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    min-width: 0;
}

.notif-inbox-item-body[b-elbl4seh5o] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.notif-inbox-item-title[b-elbl4seh5o] {
    font-weight: 500;
    text-align: left;
    text-decoration: none;
}

/* No-link notifications: look like plain text, not a dead/disabled link (still keyboard-clickable to mark read). */
.notif-inbox-item-title--plain[b-elbl4seh5o] {
    color: var(--bs-body-color, #212529);
    cursor: default;
}

.notif-inbox-item-title--plain:hover[b-elbl4seh5o] {
    color: var(--bs-body-color, #212529);
    text-decoration: none;
}

.notif-inbox-item-text[b-elbl4seh5o] {
    font-size: 0.9rem;
    color: var(--bs-body-color, #212529);
}

.notif-inbox-item-time[b-elbl4seh5o] {
    font-size: 0.75rem;
}

.notif-inbox-item-actions[b-elbl4seh5o] {
    flex: 0 0 auto;
    display: flex;
    gap: 0.25rem;
    white-space: nowrap;
}

.notif-inbox-pager[b-elbl4seh5o] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 1rem;
}
/* /Components/Pages/PipelineDesigner.razor.rz.scp.css */
/* #5 designer two-pane (design 2026-06-20): the node palette stacks below the builder on narrow screens
   and sticks beside it on wide screens, scrolling independently so it stays in view while building. */
.pd-palette[b-k3hxj5n6bl] {
    position: static;
    max-height: none;
}

@media (min-width: 992px) {
    .pd-palette[b-k3hxj5n6bl] {
        position: sticky;
        top: 1rem;
        max-height: calc(100vh - 2rem);
        overflow-y: auto;
    }
}

/* Eligibility-aware palette: a node that can't be added in the current pipeline state recedes so the
   nodes ready to add (hoisted to the top of their category) stand out. */
.pd-node-ineligible[b-k3hxj5n6bl] {
    opacity: 0.5;
}

/* Head / Middle / Tail band sub-heading over the ordered node list. */
.pd-zone[b-k3hxj5n6bl] {
    border-top: 1px solid var(--bs-border-color-translucent);
}

.pd-zone:first-child[b-k3hxj5n6bl] {
    border-top: 0;
}
/* /Components/Pages/QaAuditReportPrint.razor.rz.scp.css */
/* QA program item #1: page-scoped styling for the printable audit report. The chrome-free ReportLayout means
   the page IS the report — printing hides only the on-screen toolbar (no global visibility hijack, so no
   blank-pages bug). */

.qa-report-status[b-lh0i3d2g7d] {
    padding: 2rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
    align-items: flex-start;
}

.qa-report-toolbar[b-lh0i3d2g7d] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 1rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.qa-report-toolbar__sections[b-lh0i3d2g7d] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.qa-report-toolbar__sections label[b-lh0i3d2g7d] {
    display: inline-flex;
    gap: .35rem;
    align-items: center;
    margin: 0;
}

.qa-report-toolbar__actions[b-lh0i3d2g7d] {
    display: flex;
    gap: .5rem;
}

.qa-report[b-lh0i3d2g7d] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 2rem;
}

/* Executive letterhead (item #1b) — first-page title block. */
.qa-report__letterhead[b-lh0i3d2g7d] {
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid var(--bs-emphasis-color, #212529);
    break-inside: avoid;
}

.qa-report__letterhead-top[b-lh0i3d2g7d] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-start;
    justify-content: space-between;
}

/* The lockup leads the letterhead; the document type follows it. Ink is forced to the light value because
   a printed page is white whatever theme the screen was in, and --brand-ink inverts with the theme. */
.qa-report__brand[b-lh0i3d2g7d]  .brand-lockup {
    --brand-ink: #0b1f33;
    --brand-north: #ff8c00;
    --brand-mark-size: 2.4rem;

    margin-bottom: .55rem;
}

.qa-report__doctype[b-lh0i3d2g7d] {
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: .01em;
    line-height: 1.1;
}

.qa-report__org[b-lh0i3d2g7d] {
    margin-top: .2rem;
    color: var(--bs-secondary-color, #6c757d);
    font-size: .95rem;
}

.qa-report__confidential[b-lh0i3d2g7d] {
    align-self: center;
    border: 1.5px solid var(--bs-danger, #dc3545);
    color: var(--bs-danger, #dc3545);
    font-weight: 700;
    font-size: .75rem;
    letter-spacing: .12em;
    padding: .2rem .6rem;
    border-radius: .2rem;
    white-space: nowrap;
}

.qa-report__letterhead-meta[b-lh0i3d2g7d] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: .35rem 1.5rem;
    margin: 1rem 0 0;
}

.qa-report__letterhead-meta > div[b-lh0i3d2g7d] {
    display: flex;
    gap: .4rem;
    align-items: baseline;
}

.qa-report__letterhead-meta dt[b-lh0i3d2g7d] {
    color: var(--bs-secondary-color, #6c757d);
    font-weight: 600;
    font-size: .8rem;
    white-space: nowrap;
}

.qa-report__letterhead-meta dd[b-lh0i3d2g7d] {
    margin: 0;
    font-size: .9rem;
}

.qa-report__docfooter[b-lh0i3d2g7d] {
    margin-top: 2rem;
    padding-top: .75rem;
    border-top: 1px solid var(--bs-border-color, #dee2e6);
    color: var(--bs-secondary-color, #6c757d);
    font-size: .8rem;
    break-inside: avoid;
}

.qa-report__docfooter-gen[b-lh0i3d2g7d] {
    margin: 0;
}

.qa-report__docfooter-disclaimer[b-lh0i3d2g7d] {
    margin: .25rem 0 0;
    font-style: italic;
}

.qa-report-toolbar__preparedfor label[b-lh0i3d2g7d] {
    display: inline-flex;
    gap: .4rem;
    align-items: center;
    margin: 0;
    font-size: .9rem;
}

.qa-report-toolbar__preparedfor input[b-lh0i3d2g7d] {
    padding: .15rem .4rem;
    border: 1px solid var(--bs-border-color, #ced4da);
    border-radius: .25rem;
    font-size: .85rem;
}

.qa-report-section[b-lh0i3d2g7d] {
    margin-bottom: 1.5rem;
    break-inside: avoid;
}

.qa-report-summary[b-lh0i3d2g7d] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
}

.qa-report-score__value[b-lh0i3d2g7d] {
    font-size: 2.5rem;
    font-weight: 600;
    line-height: 1;
}

.qa-report-score__label[b-lh0i3d2g7d],
.qa-report-chart__label[b-lh0i3d2g7d] {
    font-size: .8rem;
    color: var(--bs-secondary-color, #6c757d);
}

.qa-report-chart[b-lh0i3d2g7d] {
    margin-top: .75rem;
    break-inside: avoid;
}

.qa-report-props[b-lh0i3d2g7d],
.qa-report-rollup[b-lh0i3d2g7d] {
    width: 100%;
    border-collapse: collapse;
}

.qa-report-props th[b-lh0i3d2g7d],
.qa-report-props td[b-lh0i3d2g7d],
.qa-report-rollup th[b-lh0i3d2g7d],
.qa-report-rollup td[b-lh0i3d2g7d] {
    text-align: left;
    padding: .35rem .5rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    vertical-align: top;
}

.qa-report-props th[b-lh0i3d2g7d] {
    width: 12rem;
    white-space: nowrap;
}

.qa-report-item[b-lh0i3d2g7d] {
    margin-bottom: .75rem;
    break-inside: avoid;
}

.qa-report-item__head[b-lh0i3d2g7d] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: baseline;
}

.qa-report-item__title[b-lh0i3d2g7d] {
    font-weight: 600;
}

.qa-report-item__type[b-lh0i3d2g7d],
.qa-report-item__coeff[b-lh0i3d2g7d] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: .9rem;
}

.qa-report-findings[b-lh0i3d2g7d] {
    margin: .25rem 0 0 1.25rem;
}

.qa-report-findings__meta[b-lh0i3d2g7d] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: .85rem;
}

.text-end[b-lh0i3d2g7d] {
    text-align: right;
}

@media print {
    .qa-report-toolbar[b-lh0i3d2g7d] {
        display: none;
    }

    .qa-report[b-lh0i3d2g7d] {
        max-width: none;
        margin: 0;
    }

    .qa-report-section[b-lh0i3d2g7d],
    .qa-report-item[b-lh0i3d2g7d],
    .qa-report-chart[b-lh0i3d2g7d] {
        break-inside: avoid;
    }
}
/* /Components/Pages/QaRuleSetPrint.razor.rz.scp.css */
/* QA print program, slice B: page-scoped styling for the printable methodology document. The chrome-free
   ReportLayout means the page IS the document — printing hides only the on-screen toolbar (no global visibility
   hijack, so no blank-pages bug). */

.qa-methodology-doc-status[b-0ft450pyj0] {
    padding: 2rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
    align-items: flex-start;
}

.qa-methodology-doc-toolbar[b-0ft450pyj0] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 1rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.qa-methodology-doc-toolbar__sections[b-0ft450pyj0] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
}

.qa-methodology-doc-toolbar__legend[b-0ft450pyj0] {
    font-weight: 600;
    font-size: .9rem;
}

.qa-methodology-doc-toolbar__sections label[b-0ft450pyj0] {
    display: inline-flex;
    gap: .35rem;
    align-items: center;
    margin: 0;
    font-size: .9rem;
}

.qa-methodology-doc-toolbar__actions[b-0ft450pyj0] {
    display: flex;
    gap: .5rem;
}

.qa-methodology-doc[b-0ft450pyj0] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 2rem;
}

/* Letterhead — the first-page identity block: what this methodology is and where it sits in its lifecycle. */
.qa-methodology-doc__letterhead[b-0ft450pyj0] {
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid var(--bs-emphasis-color, #212529);
    break-inside: avoid;
}

.qa-methodology-doc__doctype[b-0ft450pyj0] {
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: .01em;
    line-height: 1.1;
}

.qa-methodology-doc__name[b-0ft450pyj0] {
    margin-top: .35rem;
    font-size: 1.15rem;
    font-weight: 600;
}

.qa-methodology-doc__version[b-0ft450pyj0] {
    color: var(--bs-secondary-color, #6c757d);
    font-weight: 500;
}

.qa-methodology-doc__badges[b-0ft450pyj0] {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin-top: .4rem;
}

.qa-methodology-doc__description[b-0ft450pyj0] {
    margin: .6rem 0 0;
    color: var(--bs-secondary-color, #6c757d);
}

.qa-methodology-doc__meta[b-0ft450pyj0] {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 2rem;
    margin: .75rem 0 0;
    font-size: .9rem;
}

.qa-methodology-doc__meta dt[b-0ft450pyj0] {
    color: var(--bs-secondary-color, #6c757d);
    font-weight: 500;
}

.qa-methodology-doc__meta dd[b-0ft450pyj0] {
    margin: 0;
    font-weight: 600;
}

.qa-methodology-doc-section[b-0ft450pyj0] {
    margin-bottom: 1.75rem;
}

.qa-methodology-doc-section h2[b-0ft450pyj0] {
    font-size: 1.2rem;
    margin-bottom: .35rem;
    padding-bottom: .25rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.qa-methodology-doc-intro[b-0ft450pyj0] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: .9rem;
}

@media print {
    .qa-methodology-doc-toolbar[b-0ft450pyj0] {
        display: none;
    }

    .qa-methodology-doc[b-0ft450pyj0] {
        max-width: none;
        margin: 0;
    }

    .qa-methodology-doc-section[b-0ft450pyj0] {
        break-inside: avoid;
    }
}
/* /Components/Pages/SharedWorkItemView.razor.rz.scp.css */
.shared-view-header[b-rxp9iydf3g] {
    margin-bottom: 1rem;
}

.shared-view-unavailable[b-rxp9iydf3g] {
    text-align: center;
    padding: 2rem 1rem;
}

.shared-view-unavailable i[b-rxp9iydf3g] {
    font-size: 1.75rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.6;
}

.shared-view-card[b-rxp9iydf3g] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: 1rem 1.25rem;
    background-color: var(--bs-body-bg);
}

.shared-view-title-row[b-rxp9iydf3g] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.shared-view-badges[b-rxp9iydf3g] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.shared-badge[b-rxp9iydf3g] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
    padding: 0 0.35rem;
    font-size: 0.8125rem;
    background-color: var(--bs-tertiary-bg);
}

.shared-status[b-rxp9iydf3g] {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.72rem;
}

.shared-status--pending[b-rxp9iydf3g] {
    color: var(--bs-warning-text-emphasis);
}

.shared-status--imported[b-rxp9iydf3g] {
    color: var(--bs-success-text-emphasis);
}

.shared-status--revoked[b-rxp9iydf3g],
.shared-status--dismissed[b-rxp9iydf3g] {
    color: var(--bs-secondary-color);
}

.shared-view-meta[b-rxp9iydf3g] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.35rem;
    font-size: 0.8125rem;
}

.shared-view-note[b-rxp9iydf3g] {
    margin-top: 0.75rem;
    padding: 0.5rem 0.75rem;
    border-left: 3px solid var(--bs-border-color);
    background-color: var(--bs-tertiary-bg);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.shared-view-actions[b-rxp9iydf3g] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.shared-view-import[b-rxp9iydf3g] {
    margin-top: 0.75rem;
    padding: 0.75rem;
    border: 1px dashed var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-tertiary-bg);
}

.shared-view-import-row[b-rxp9iydf3g] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}

.shared-view-import-row .form-select[b-rxp9iydf3g] {
    max-width: 20rem;
}

.shared-view-content[b-rxp9iydf3g] {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--bs-border-color);
}

.shared-view-toolbar[b-rxp9iydf3g] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.shared-view-text[b-rxp9iydf3g] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.shared-view-formatted[b-rxp9iydf3g] {
    overflow-wrap: anywhere;
}

.shared-view-formatted h2[b-rxp9iydf3g] {
    font-size: 0.95rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--bs-secondary-color);
    margin: 1rem 0 0.35rem;
}

.shared-view-formatted h2:first-child[b-rxp9iydf3g] {
    margin-top: 0;
}

/* Paragraphs and list items may carry the renderer's soft line breaks — keep them. */
.shared-view-formatted p[b-rxp9iydf3g],
.shared-view-formatted li[b-rxp9iydf3g] {
    white-space: pre-line;
    margin-bottom: 0.35rem;
}

.shared-view-formatted ul[b-rxp9iydf3g],
.shared-view-formatted ol[b-rxp9iydf3g] {
    margin-bottom: 0.5rem;
    padding-left: 1.5rem;
}
/* /Components/Pages/StandardsPrint.razor.rz.scp.css */
/* Page-scoped styling for the printable Standards document. The chrome-free ReportLayout means the page IS the
   document — printing hides only the on-screen toolbar (no global visibility hijack, so no blank-pages bug).
   Rules that must reach the authored tab bodies (child components) use ::deep, because Blazor CSS isolation
   stamps its scope attribute on THIS component's markup only. */

.standards-doc-status[b-ag9hxe9gyh] {
    padding: 2rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
    align-items: flex-start;
}

.standards-doc-toolbar[b-ag9hxe9gyh] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 1rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.standards-doc-toolbar__group[b-ag9hxe9gyh] {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: center;
}

.standards-doc-toolbar__legend[b-ag9hxe9gyh] {
    font-weight: 600;
    font-size: .9rem;
}

.standards-doc-toolbar__group label[b-ag9hxe9gyh] {
    display: inline-flex;
    gap: .35rem;
    align-items: center;
    margin: 0;
    font-size: .9rem;
}

.standards-doc-toolbar__actions[b-ag9hxe9gyh] {
    display: flex;
    gap: .5rem;
}

.standards-doc[b-ag9hxe9gyh] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 2rem;
}

/* Letterhead — the first-page title block. */
.standards-doc__letterhead[b-ag9hxe9gyh] {
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid var(--bs-emphasis-color, #212529);
    break-inside: avoid;
}

.standards-doc__doctype[b-ag9hxe9gyh] {
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: .01em;
    line-height: 1.1;
}

.standards-doc__meta[b-ag9hxe9gyh] {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 2rem;
    margin: .75rem 0 0;
    font-size: .9rem;
}

.standards-doc__meta dt[b-ag9hxe9gyh] {
    color: var(--bs-secondary-color, #6c757d);
    font-weight: 500;
}

.standards-doc__meta dd[b-ag9hxe9gyh] {
    margin: 0;
    font-weight: 600;
}

/* One part per selected page. Each starts on a fresh sheet so a printout of several pages reads as several
   documents, which is what a reader who ticked several boxes asked for. */
.standards-doc-part[b-ag9hxe9gyh] {
    margin-bottom: 2.5rem;
}

.standards-doc-part + .standards-doc-part[b-ag9hxe9gyh] {
    break-before: page;
}

.standards-doc-part[b-ag9hxe9gyh]  .standards-tab-intro h2 {
    font-size: 1.5rem;
    margin-bottom: .25rem;
    padding-bottom: .25rem;
    border-bottom: 2px solid var(--bs-emphasis-color, #212529);
}

.standards-doc-part[b-ag9hxe9gyh]  .standards-section {
    margin-bottom: 1.5rem;
    break-inside: avoid;
}

.standards-doc-part[b-ag9hxe9gyh]  .standards-section h2 {
    font-size: 1.15rem;
    margin-bottom: .35rem;
    padding-bottom: .25rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

/* Screen-only affordances inside the authored bodies that carry no meaning on paper. */
.standards-doc-part[b-ag9hxe9gyh]  .table-responsive {
    overflow: visible;
}

@media print {
    .standards-doc-toolbar[b-ag9hxe9gyh] {
        display: none;
    }

    .standards-doc[b-ag9hxe9gyh] {
        max-width: none;
        margin: 0;
        padding: 0;
    }

    .standards-doc-part[b-ag9hxe9gyh]  .standards-section,
    .standards-doc-part[b-ag9hxe9gyh]  pre,
    .standards-doc-part[b-ag9hxe9gyh]  table {
        break-inside: avoid;
    }
}
/* /Components/Pages/WizardContextStrip.razor.rz.scp.css */
.wizard-context-strip[b-s93lhu630c] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    padding: 0.8rem 0.9rem 0.8rem 1rem;
    border: 1px solid var(--app-border-subtle);
    border-radius: var(--app-radius-lg);
    background:
        var(--app-surface-1);
    box-shadow: var(--app-shadow-sm);
}
/* /Components/Pages/WizardPage.razor.rz.scp.css */
.wizard-hero[b-t0be7my8t6] {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: clamp(1rem, 2vw, 1.5rem);
    padding: clamp(1rem, 2vw, 1.35rem);
}

.wizard-hero h1[b-t0be7my8t6] {
    font-size: clamp(1.95rem, 3.6vw, 2.75rem);
    font-weight: 700;
    line-height: 1.08;
}

.wizard-hero p[b-t0be7my8t6] {
    max-width: 54rem;
    font-size: 1.05rem;
    line-height: 1.55;
}

.wizard-hero__status[b-t0be7my8t6] {
    display: grid;
    align-content: center;
    gap: 0.15rem;
    min-width: 8rem;
    padding: 0.8rem 1rem;
    border: 1px solid rgba(0, 120, 212, 0.14);
    border-radius: var(--app-radius-xl);
    background: var(--app-surface-2);
    box-shadow: var(--app-shadow-sm);
    text-align: center;
}

.wizard-hero__status strong[b-t0be7my8t6] {
    color: var(--app-accent-deep);
    font-family: var(--app-font-display);
    font-size: 1.75rem;
    line-height: 1;
}

.type-card[b-t0be7my8t6] {
    cursor: pointer;
    transition:
        transform var(--app-motion-fast) var(--app-motion-ease),
        box-shadow var(--app-motion-fast) var(--app-motion-ease),
        border-color var(--app-motion-fast) var(--app-motion-ease);
}

.type-card:hover[b-t0be7my8t6],
.type-card:focus-within[b-t0be7my8t6] {
    border-color: var(--app-accent-primary);
    transform: translateY(-2px);
    box-shadow: var(--app-shadow-md);
}

.wizard-active-panel[b-t0be7my8t6] {
    padding: clamp(0.85rem, 2vw, 1.25rem);
    background:
        var(--app-surface-0);
}

.wizard-active-node-summary[b-t0be7my8t6] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    border: 1px solid rgba(0, 120, 212, 0.16);
    border-radius: var(--app-radius-lg);
    box-shadow: var(--app-shadow-sm);
}

.wizard-context-badges[b-t0be7my8t6] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    justify-content: flex-end;
}

.wizard-command-bar[b-t0be7my8t6],
.sticky-command-bar[b-t0be7my8t6] {
    border-radius: var(--app-radius-lg) var(--app-radius-lg) 0 0;
}

@media (max-width: 991.98px) {
    .wizard-hero[b-t0be7my8t6] {
        flex-direction: column;
    }

    .wizard-hero__status[b-t0be7my8t6] {
        justify-items: start;
        text-align: start;
    }

    .wizard-active-node-summary[b-t0be7my8t6] {
        flex-direction: column;
    }

    .wizard-context-badges[b-t0be7my8t6] {
        justify-content: flex-start;
    }
}
/* /Components/Pages/WizardQuestionForm.razor.rz.scp.css */
.question-progress-panel[b-jqf8hep1mm] {
    position: relative;
    overflow: hidden;
    padding: 0.9rem;
    border: 1px solid var(--app-border-subtle);
    border-radius: var(--app-radius-lg);
    background:
        var(--app-signal-ribbon-surface),
        var(--app-surface-1);
    box-shadow: var(--app-shadow-sm);
}

.wizard-question-progress[b-jqf8hep1mm] {
    display: block;
    width: 100%;
    height: 0.7rem;
    overflow: hidden;
    border: 0;
    border-radius: var(--app-radius-pill);
    background: var(--app-skeleton-base);
    accent-color: var(--app-accent-primary);
}

.wizard-question-progress[b-jqf8hep1mm]::-webkit-progress-bar {
    border-radius: var(--app-radius-pill);
    background: var(--app-skeleton-base);
}

.wizard-question-progress[b-jqf8hep1mm]::-webkit-progress-value {
    border-radius: var(--app-radius-pill);
    background: var(--app-signal-ribbon);
}

.wizard-question-progress[b-jqf8hep1mm]::-moz-progress-bar {
    border-radius: var(--app-radius-pill);
    background: var(--app-signal-ribbon);
}

.wizard-question-card[b-jqf8hep1mm] {
    overflow: hidden;
    border-color: rgba(0, 120, 212, 0.18);
    border-radius: var(--app-radius-xl);
    box-shadow: var(--app-shadow-sm);
}

.wizard-question-card .card-header[b-jqf8hep1mm] {
    background:
        var(--app-surface-1);
}

.wizard-question-card textarea[b-jqf8hep1mm] {
    min-height: 10rem;
    line-height: 1.55;
}
/* /Components/Pages/WizardStepperRail.razor.rz.scp.css */
.wizard-stepper-rail[b-l3yt9hq5yt] {
    position: sticky;
    top: var(--app-sticky-top, 4.25rem);
    padding: 1rem;
    background:
        var(--app-surface-0);
}

.wizard-progress-native[b-l3yt9hq5yt] {
    display: block;
    width: 100%;
    height: 0.7rem;
    overflow: hidden;
    border: 0;
    border-radius: var(--app-radius-pill);
    background: var(--app-skeleton-base);
    accent-color: var(--app-accent-primary);
}

.wizard-progress-native[b-l3yt9hq5yt]::-webkit-progress-bar {
    border-radius: var(--app-radius-pill);
    background: var(--app-skeleton-base);
}

.wizard-progress-native[b-l3yt9hq5yt]::-webkit-progress-value {
    border-radius: var(--app-radius-pill);
    background: var(--app-signal-ribbon);
}

.wizard-progress-native[b-l3yt9hq5yt]::-moz-progress-bar {
    border-radius: var(--app-radius-pill);
    background: var(--app-signal-ribbon);
}

.wizard-step-list[b-l3yt9hq5yt] {
    display: grid;
    gap: 0.55rem;
}

.wizard-step-node[b-l3yt9hq5yt] {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: start;
    gap: 0.65rem;
    padding: 0.8rem;
    overflow: hidden;
    border: 1px solid var(--app-border-subtle);
    border-radius: var(--app-radius-lg);
    background:
        var(--app-surface-1);
    transition:
        border-color var(--app-motion-fast) var(--app-motion-ease),
        box-shadow var(--app-motion-fast) var(--app-motion-ease),
        transform var(--app-motion-fast) var(--app-motion-ease);
}

.wizard-step-node.active[b-l3yt9hq5yt] {
    border-color: rgba(0, 120, 212, 0.35);
    background:
        var(--app-signal-ribbon-surface),
        var(--app-nav-active-bg);
    box-shadow: var(--app-shadow-nav-active);
    transform: translateX(0.1rem);
}

.wizard-step-node.completed[b-l3yt9hq5yt] {
    border-color: rgba(16, 124, 16, 0.32);
    background:
        linear-gradient(135deg, rgba(16, 124, 16, 0.08), transparent),
        var(--bs-success-bg-subtle);
}

.wizard-step-node.upcoming[b-l3yt9hq5yt] {
    color: var(--app-text-secondary);
}

.wizard-step-icon[b-l3yt9hq5yt] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border: 1px solid rgba(0, 120, 212, 0.14);
    border-radius: var(--app-radius-pill);
    background: var(--app-signal-ribbon-soft);
    color: var(--app-accent-primary);
    box-shadow: var(--app-shadow-sm);
}

.wizard-step-node.completed .wizard-step-icon[b-l3yt9hq5yt] {
    background: var(--bs-success);
    color: var(--bs-white);
}

.wizard-step-node.active .wizard-step-icon[b-l3yt9hq5yt] {
    background: var(--app-signal-ribbon);
    color: var(--bs-white);
}

.wizard-step-copy[b-l3yt9hq5yt] {
    display: grid;
    gap: 0.15rem;
}

.wizard-step-label[b-l3yt9hq5yt] {
    color: var(--app-text-primary);
    font-weight: 700;
}

.wizard-step-description[b-l3yt9hq5yt] {
    color: var(--app-text-secondary);
    font-size: 0.85rem;
    line-height: 1.35;
}

@media (max-width: 991.98px) {
    .wizard-stepper-rail[b-l3yt9hq5yt] {
        position: static;
    }
}
/* /Components/Pages/WizardWorkItemTypeSelectionStep.razor.rz.scp.css */
.type-card[b-aagevbyku8] {
    cursor: pointer;
    display: block;
    width: 100%;
    padding: 0;
    text-align: left;
    color: var(--app-text-primary);
    background: var(--app-surface-0);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.type-card:hover[b-aagevbyku8],
.type-card:focus-visible[b-aagevbyku8],
.type-card:focus-within[b-aagevbyku8] {
    transform: translateY(-2px);
    box-shadow: var(--app-shadow-md);
}

.type-card:focus-visible[b-aagevbyku8] {
    outline: 2px solid var(--app-border-focus);
    outline-offset: 2px;
}

.wizard-context-strip[b-aagevbyku8] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem;
    border: 1px solid var(--app-border-subtle);
    border-radius: 0.65rem;
    background: var(--app-surface-1);
}
/* /Components/Pages/WorkItemReport.razor.rz.scp.css */
.wi-report-status[b-sdon8580h9] {
    max-width: 60rem;
    margin: 2rem auto;
    padding: 0 1rem;
    color: var(--app-text-secondary, #555);
}

.wi-report-toolbar[b-sdon8580h9] {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    padding: 0.65rem 1rem;
    border-bottom: 1px solid var(--app-border-subtle, rgba(0, 0, 0, 0.12));
    background: var(--app-surface-0, #fff);
}

.wi-report-toolbar__parts[b-sdon8580h9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
    align-items: center;
    margin: 0;
    padding: 0.15rem 0.6rem;
    border: 1px solid var(--app-border-subtle, rgba(0, 0, 0, 0.12));
    border-radius: 0.375rem;
    min-inline-size: 0;
}

.wi-report-toolbar__parts legend[b-sdon8580h9] {
    float: left;
    width: auto;
    margin: 0;
    padding: 0;
    font-size: 0.9rem;
    font-weight: 600;
    line-height: inherit;
}

.wi-report-toolbar__parts label[b-sdon8580h9] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.9rem;
    margin: 0;
}

.wi-report-toolbar__part-actions[b-sdon8580h9] {
    display: inline-flex;
    gap: 0.5rem;
    font-size: 0.85rem;
}

.wi-report-toolbar__sections[b-sdon8580h9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
    align-items: center;
}

.wi-report-toolbar__sections label[b-sdon8580h9] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.9rem;
    margin: 0;
}

.wi-report-toolbar__actions[b-sdon8580h9] {
    display: flex;
    gap: 0.5rem;
}

.wi-report[b-sdon8580h9] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 1.5rem 1rem 3rem;
}

.wi-report__header h1[b-sdon8580h9] {
    margin: 0 0 0.25rem;
    font-size: 1.6rem;
}

.wi-report__meta[b-sdon8580h9] {
    color: var(--app-text-secondary, #555);
    font-size: 0.9rem;
    margin: 0 0 1rem;
}

.wi-report-section[b-sdon8580h9] {
    margin-bottom: 1.5rem;
    break-inside: avoid;
}

.wi-report-section h2[b-sdon8580h9] {
    font-size: 1.15rem;
    border-bottom: 1px solid var(--app-border-subtle, #ddd);
    padding-bottom: 0.25rem;
    margin-bottom: 0.75rem;
    break-after: avoid;
}

.wi-report-para[b-sdon8580h9] {
    white-space: pre-line;
    margin: 0 0 0.5rem;
}

.wi-report-props[b-sdon8580h9] {
    width: 100%;
    border-collapse: collapse;
}

.wi-report-props th[b-sdon8580h9] {
    text-align: left;
    width: 12rem;
    padding: 0.2rem 0.75rem 0.2rem 0;
    vertical-align: top;
    color: var(--app-text-secondary, #555);
    font-weight: 600;
}

.wi-report-props td[b-sdon8580h9] {
    padding: 0.2rem 0;
}

.wi-report-hier[b-sdon8580h9],
.wi-report-hier__children[b-sdon8580h9] {
    list-style: none;
    margin: 0;
    padding-left: 1.1rem;
}

.wi-report-hier__current[b-sdon8580h9] {
    font-weight: 700;
}

.wi-report-diagram[b-sdon8580h9] {
    margin-bottom: 1rem;
    break-inside: avoid;
}

@media print {
    .wi-report-toolbar[b-sdon8580h9] {
        display: none;
    }

    .wi-report[b-sdon8580h9] {
        max-width: none;
        margin: 0;
        padding: 0;
    }
}
/* /Components/Pages/WorkItemStandards.razor.rz.scp.css */
/* S10: Standards & Guidelines hub — tabbed layout with a sticky ToC and a cross-tab search. */

.standards-tabs[b-083ymy9uei] {
    flex-wrap: wrap;
}

.standards-layout[b-083ymy9uei] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 16rem;
    gap: 1.5rem;
    align-items: start;
}

.standards-content[b-083ymy9uei] {
    order: 1;
    min-width: 0;
}

/* The ToC sits to the right and sticks while the content scrolls. It is offset below the master-page sticky
   topbar (--app-sticky-top) so its top items never hide under it, and scrolls internally if the list is taller
   than the viewport. */
.standards-toc[b-083ymy9uei] {
    order: 2;
    position: sticky;
    top: var(--app-sticky-top);
    max-height: calc(100vh - var(--app-sticky-top) - 1rem);
    overflow-y: auto;
    font-size: 0.9rem;
}

.standards-toc-heading[b-083ymy9uei] {
    font-weight: 600;
    color: var(--bs-secondary-color);
    margin-bottom: 0.25rem;
}

.standards-toc-list[b-083ymy9uei] {
    list-style: none;
    margin: 0;
    padding: 0;
    border-left: 2px solid var(--bs-border-color);
}

.standards-toc-list li a[b-083ymy9uei] {
    display: block;
    padding: 0.25rem 0.75rem;
    margin-left: -2px;
    color: var(--bs-secondary-color);
    text-decoration: none;
    border-left: 2px solid transparent;
}

.standards-toc-list li a:hover[b-083ymy9uei],
.standards-toc-list li a:focus[b-083ymy9uei] {
    color: var(--bs-primary);
    border-left-color: var(--bs-primary);
}

.standards-search-results[b-083ymy9uei] {
    max-height: 22rem;
    overflow-y: auto;
}

/* Keep a jumped-to section clear of the sticky topbar. The sections are rendered by the child tab
   components, so reach them through CSS-isolation's ::deep combinator. */
.standards-content[b-083ymy9uei]  section[id] {
    scroll-margin-top: var(--app-sticky-top);
}

/* On narrow screens the ToC stacks above the content in full; jumped-to sections still clear the topbar via the
   scroll-margin-top above. */
@media (max-width: 992px) {
    .standards-layout[b-083ymy9uei] {
        grid-template-columns: 1fr;
    }

    .standards-toc[b-083ymy9uei] {
        order: 0;
        position: static;
        max-height: none;
        overflow-y: visible;
    }
}
/* /Components/Profile/ProfileLauncher.razor.rz.scp.css */
/* I5 §D5: top-bar trigger + a right-edge off-canvas profile panel. The Bootstrap .btn classes carry the
   toggle look (matching the bell / feedback launcher); the panel is a fixed, full-height drawer over a
   dimmed backdrop so it has room for the profile form + change-password sections. */

.profile-launcher[b-2mrh3lb24n] {
    display: inline-block;
}

.profile-launcher-toggle[b-2mrh3lb24n] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    max-width: 14rem;
}

.profile-launcher-name[b-2mrh3lb24n] {
    /* The signed-in identity is small text in the command bar and measured 3.49:1 on Bootstrap's
       secondary. It names WHO is acting, so it is not decoration. */
    color: var(--app-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.profile-backdrop[b-2mrh3lb24n] {
    position: fixed;
    inset: 0;
    background: rgba(23, 32, 51, 0.32);
    z-index: 1059;
}

.profile-panel[b-2mrh3lb24n] {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: min(30rem, 100vw);
    overflow-y: auto;
    padding: 1.25rem 1.35rem 2rem;
    background: var(--bs-body-bg);
    border-left: 1px solid var(--app-border-subtle, var(--bs-border-color));
    box-shadow: -14px 0 34px rgba(23, 32, 51, 0.18);
    z-index: 1060;
}

.profile-panel-header[b-2mrh3lb24n] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 0.85rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--app-border-subtle, var(--bs-border-color));
}

.profile-panel-title[b-2mrh3lb24n] {
    display: inline-flex;
    align-items: center;
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
}

.profile-panel-body[b-2mrh3lb24n] {
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}

.profile-section-title[b-2mrh3lb24n] {
    font-size: 0.95rem;
    font-weight: 700;
    margin-bottom: 0.85rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--app-border-subtle, var(--bs-border-color));
}

@media (max-width: 575.98px) {
    .profile-launcher-toggle[b-2mrh3lb24n] {
        max-width: 8.5rem;
    }
}
/* /Components/Shared/CompactWorkItemPreview.razor.rz.scp.css */
/* S3: compact structured preview — tight spacing for the narrow tree side panel. */
.compact-preview-section[b-w40rh6d2vi] {
    margin-bottom: 0.5rem;
}

.compact-preview-section:last-child[b-w40rh6d2vi] {
    margin-bottom: 0;
}

.compact-preview-list[b-w40rh6d2vi] {
    padding-left: 1.25rem;
    margin-top: 0.125rem;
}
/* /Components/Shared/GmtHierarchyTree.razor.rz.scp.css */
.gmt-tree[b-62vy6gap64] {
    font-size: .95rem;
}

.gmt-tree__node[b-62vy6gap64] {
    padding: .1rem 0;
}

.gmt-tree__row[b-62vy6gap64] {
    padding: .25rem .4rem;
    border-radius: .375rem;
}

.gmt-tree__node--current > .gmt-tree__row[b-62vy6gap64] {
    background: var(--bs-primary-bg-subtle);
    outline: 1px solid var(--bs-primary-border-subtle);
}

/* A node with a missing level reads as a guided "slot" to fill — a dashed warning accent draws the build. */
.gmt-tree__node--gap > .gmt-tree__row[b-62vy6gap64] {
    border-left: 2px dashed var(--bs-warning-border-subtle, var(--bs-border-color));
    padding-left: .55rem;
}

.gmt-tree__more[b-62vy6gap64] {
    padding: .1rem 0 .1rem .4rem;
}

/* Nested levels indent and grow a connector rail so the US → UC → TC path reads as one tree. */
.gmt-tree__children[b-62vy6gap64] {
    margin-left: 1rem;
    padding-left: .9rem;
    border-left: 1px solid var(--bs-border-color);
}

.gmt-tree__actions[b-62vy6gap64] {
    margin: .15rem 0 .35rem .4rem;
}

.gmt-tree__title[b-62vy6gap64] {
    text-decoration: none;
}

.gmt-tree__title:hover[b-62vy6gap64] {
    text-decoration: underline;
}
/* /Components/Shared/MermaidDiagram.razor.rz.scp.css */
.mermaid-diagram__fallback-source[b-rjxcyf09c4] {
    max-height: 300px;
    overflow: auto;
    white-space: pre-wrap;
}
/* /Components/Shared/MermaidSourceEditor.razor.rz.scp.css */
.mermaid-source-editor__grid[b-2crwc3mykf] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0.75rem;
}

.mermaid-source-editor__textarea[b-2crwc3mykf] {
    resize: vertical;
    min-height: 12rem;
    font-size: 0.85rem;
    line-height: 1.45;
}

.mermaid-source-editor__preview[b-2crwc3mykf] {
    min-height: 12rem;
    padding: 0.5rem;
    border: 1px solid var(--app-border-subtle, rgba(0, 0, 0, 0.1));
    border-radius: var(--app-radius-md, 0.5rem);
    background: var(--app-surface-1, #fff);
    overflow: auto;
}

/* Narrow screens: stack source over preview rather than squeezing two columns. */
@media (max-width: 767.98px) {
    .mermaid-source-editor__grid[b-2crwc3mykf] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/ProjectPicker.razor.rz.scp.css */
.filter-input[b-zlo2csx2tv] {
    margin-bottom: 1rem;
    border-radius: 0.375rem;
}

.connection-header[b-zlo2csx2tv] {
    cursor: pointer;
    font-weight: 600;
}

.project-item[b-zlo2csx2tv] {
    padding-left: 1.5rem;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.project-item:hover[b-zlo2csx2tv] {
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}

.no-results[b-zlo2csx2tv] {
    text-align: center;
    padding: 2rem;
    color: var(--bs-secondary-color);
}
/* /Components/Shared/QaBlendBandsView.razor.rz.scp.css */
.qa-blend-bar[b-obw7x3mofs] {
    height: 1.25rem;
}

.qa-band-gradient[b-obw7x3mofs] {
    height: 1.5rem;
}

/* Cut-point ticks. The row is the same 0-100 axis as .qa-band-gradient above it, so a tick placed at
   left: {value}% lands exactly on the edge between the two bands that value separates. */
.qa-band-ticks[b-obw7x3mofs] {
    position: relative;
    height: 1.6rem;
}

.qa-band-tick[b-obw7x3mofs] {
    position: absolute;
    top: 0;
    padding-top: 0.5rem;
    transform: translateX(-50%);
    white-space: nowrap;
}

.qa-band-tick[b-obw7x3mofs]::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 1px;
    height: 0.4rem;
    background-color: currentColor;
    opacity: 0.6;
}

/* Near either end the label anchors inward instead of centring, so it cannot hang off the bar. */
.qa-band-tick--start[b-obw7x3mofs] {
    transform: none;
}

.qa-band-tick--start[b-obw7x3mofs]::before {
    left: 0;
}

.qa-band-tick--end[b-obw7x3mofs] {
    transform: translateX(-100%);
}

.qa-band-tick--end[b-obw7x3mofs]::before {
    left: auto;
    right: 0;
}
/* /Components/Shared/QaBoundedSlider.razor.rz.scp.css */
.qa-slider-readout[b-ac24fv8oaj] {
    width: 5rem;
    flex: 0 0 auto;
}
/* /Components/Shared/QaGuidelinesPrintBody.razor.rz.scp.css */
/* Print styling for the Audit Guidelines body. It lives with the markup it styles: Blazor CSS isolation stamps
   its scope attribute on this component's own elements, so these rules would not reach here from the hosting
   document's stylesheet without a ::deep for every selector. */

.standards-tab-intro[b-diaq8u4ynx] {
    margin-bottom: 1rem;
}

.standards-tab-intro h2[b-diaq8u4ynx] {
    font-size: 1.5rem;
    margin-bottom: .25rem;
    padding-bottom: .25rem;
    border-bottom: 2px solid var(--bs-emphasis-color, #212529);
}

.standards-doc-lead[b-diaq8u4ynx] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: .9rem;
    margin-bottom: .25rem;
}

.standards-doc-status[b-diaq8u4ynx] {
    padding: 1rem 0;
}

.qa-guidelines-doc-section[b-diaq8u4ynx] {
    margin-bottom: 1.75rem;
}

.qa-guidelines-doc-section h2[b-diaq8u4ynx] {
    font-size: 1.15rem;
    margin-bottom: .35rem;
    padding-bottom: .25rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
}

.qa-guidelines-doc-section h3[b-diaq8u4ynx] {
    font-size: 1rem;
    margin-top: 1rem;
}

.qa-guidelines-doc-intro[b-diaq8u4ynx] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: .9rem;
}

.qa-guidelines-doc-rule[b-diaq8u4ynx] {
    padding-bottom: .75rem;
    margin-bottom: .75rem;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    break-inside: avoid;
}

/* A rule the selected methodology disables still prints (it is reference material) but reads as inactive. */
.qa-guidelines-doc-rule--off[b-diaq8u4ynx] {
    opacity: .55;
}

.qa-guidelines-doc-rule__head[b-diaq8u4ynx] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
}

.qa-guidelines-doc-rule__what[b-diaq8u4ynx] {
    margin: .35rem 0 .25rem;
}

.qa-guidelines-doc-rule__meta[b-diaq8u4ynx] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1.25rem;
    color: var(--bs-secondary-color, #6c757d);
    font-size: .85rem;
}

.qa-guidelines-doc-rule__notes[b-diaq8u4ynx] {
    margin-top: .25rem;
    font-style: italic;
    color: var(--bs-secondary-color, #6c757d);
    font-size: .85rem;
}

.qa-guidelines-doc-bands[b-diaq8u4ynx] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: .5rem;
}

.qa-guidelines-doc-profile[b-diaq8u4ynx],
.qa-guidelines-doc-meta[b-diaq8u4ynx] {
    margin-bottom: .35rem;
}

@media print {
    .qa-guidelines-doc-section[b-diaq8u4ynx],
    .qa-guidelines-doc-rule[b-diaq8u4ynx] {
        break-inside: avoid;
    }
}
/* /Components/Shared/QaThresholdsView.razor.rz.scp.css */
.qa-threshold-control[b-sro9886hhl] {
    flex: 0 0 18rem;
    max-width: 60%;
}
/* /Components/Shared/ShareAuditReportDialog.razor.rz.scp.css */
/* QA item #2 Slice 3: the Share dialog is a Bootstrap modal shown without JS (the component toggles it by
   rendering/removing it), so it must display as a block rather than Bootstrap's default `display:none` — otherwise
   only the .modal-backdrop dims the page and the modal itself stays invisible. Scoped via CSS isolation instead of
   an inline style (mirrors WorkItemShareDialog.razor.css). */
.qa-share-dialog[b-de5ew1nkuo] {
    display: block;
}
/* /Components/Shared/WorkItemAuditContextStrip.razor.rz.scp.css */
/* RFC-024 §7: a slim strip under the command bar, before the validation panel. Bands use Bootstrap's contextual
   badges like the validation panel and the correction import. */
.wi-audit-context[b-rv4clzpqpk] {
    margin-bottom: 1rem;
}

.wi-audit-context__findings[b-rv4clzpqpk] {
    display: grid;
    gap: 0.35rem;
}

.wi-audit-context__severity[b-rv4clzpqpk] {
    flex: 0 0 auto;
    min-width: 3.5rem;
    font-weight: 600;
}
/* /Components/Shared/WorkItemShareDialog.razor.rz.scp.css */
/* WI Sharing Slice 2c: the Share dialog is a Bootstrap modal shown without JS (the component toggles it by
   rendering/removing it), so it must display as a block rather than Bootstrap's default `display:none`. Scoped
   via CSS isolation instead of an inline style. */
.wi-share-dialog[b-f66ukvgpe6] {
    display: block;
}
/* /Components/Shared/WorkItemValidationPanel.razor.rz.scp.css */
/* RFC-023 §6: the validation panel sits in the flow under the command bar, like the AI-prompt panel. Bands
   take Bootstrap's contextual badges (the guidelines page uses the same four), so no colour is defined here. */
.wi-validation[b-jhywsrff5t] {
    margin-bottom: 1rem;
}

.wi-validation__findings[b-jhywsrff5t] {
    display: grid;
    gap: 0.35rem;
}

.wi-validation__severity[b-jhywsrff5t] {
    flex: 0 0 auto;
    min-width: 3.5rem;
    font-weight: 600;
}
