@import '_content/Microsoft.FluentUI.AspNetCore.Components/Microsoft.FluentUI.AspNetCore.Components.lcdo7z9xd2.bundle.scp.css';

/* /Components/BooleanField.razor.rz.scp.css */
.boolean-field[b-8byvxx52ww] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    column-gap: 0.75rem;
}

.boolean-field__text[b-8byvxx52ww] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

/* Match the stacked field labels (.fluent-input-label: 0.875rem / 400 / foreground). */
.boolean-field__label[b-8byvxx52ww] {
    width: fit-content;
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.25rem;
    color: hsl(var(--foreground));
    cursor: pointer;
}

.boolean-field--disabled .boolean-field__label[b-8byvxx52ww] {
    cursor: default;
}

.boolean-field[b-8byvxx52ww]  fluent-switch {
    justify-self: start;
}
/* /Components/ConfigurationGroup.razor.rz.scp.css */
/* The group's layout, spacing, colors and header fill live as utility classes in
   the markup. Only styling that reaches into the Fluent components' shadow DOM
   (via ::deep / ::part), plus the header's 1px delimiters (this project's UnoCSS
   runtime doesn't emit border width/style), remains here. The shared text-input
   surface is defined once for the whole design system in wwwroot/css/overrides.css. */

.config-group[b-oju7s8sqrg]  .fluent-icon {
    color: hsl(var(--primary));
}

.config-group__header[b-oju7s8sqrg] {
    border-top: 1px solid hsl(var(--foreground) / 0.15);
    border-bottom: 1px solid hsl(var(--foreground) / 0.15);
}

/* Cancel: quiet neutral ghost — gray text, gentle gray tint on hover. */
.config-group[b-oju7s8sqrg]  .config-group__cancel::part(control) {
    color: hsl(var(--muted-foreground));
    background: transparent;
    border-color: transparent;
}

.config-group[b-oju7s8sqrg]  .config-group__cancel:hover::part(control) {
    background: hsl(var(--foreground) / 0.06);
    color: hsl(var(--foreground) / 0.85);
}

.config-group[b-oju7s8sqrg]  .config-group__cancel[disabled]::part(control) {
    color: hsl(var(--muted-foreground));
    background: transparent;
}

/* Save: pastel green in light, deeper GitHub green in dark; muted when disabled. */
.config-group[b-oju7s8sqrg]  .config-group__save::part(control) {
    background: #52b06e;
    border-color: #52b06e;
    color: #ffffff;
}

.config-group[b-oju7s8sqrg]  .config-group__save:hover::part(control) {
    background: #47a463;
    border-color: #47a463;
}

.dark .config-group[b-oju7s8sqrg]  .config-group__save::part(control) {
    background: #2ea043;
    border-color: #2ea043;
}

.dark .config-group[b-oju7s8sqrg]  .config-group__save:hover::part(control) {
    background: #2c934c;
    border-color: #2c934c;
}

.config-group[b-oju7s8sqrg]  .config-group__save::part(control):focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgb(46 160 67 / 0.35);
}

.config-group[b-oju7s8sqrg]  .config-group__save[disabled]::part(control) {
    background: hsl(var(--muted));
    border-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}
/* /Components/DataView/DataTableView.razor.rz.scp.css */
/* Shared whole-table styling for every DataView table page (Pull Requests,
   Builds, Known Issues). Generic grid, header, link, filter-field, and status
   badge rules live here so pages only carry page-specific markup.

   The grid rows and cells are rendered by FluentDataGrid (and the per-page
   column fragments) as descendants of `.data-table-view__grid`, so `::deep`
   reaches them regardless of which component emitted the element. */

/* Right-aligned filter-row toolbar: page-level actions (e.g. "New known issue") plus the
   built-in Refresh button, grouped as one cluster instead of Refresh alone. */
.data-table-view__toolbar[b-32ttn9jkpk] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.data-table-view__toolbar-actions[b-32ttn9jkpk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.data-table-view__toolbar-divider[b-32ttn9jkpk] {
    width: 1px;
    height: 1.5rem;
    background-color: hsl(var(--border));
}

/* Same faint accent-tinted fill as TableActionButton (see
   Components/DataView/TableActionButton.razor.css), so Refresh reads as part of the same
   toolbar family instead of a bare, unstyled icon next to a filled action button. */
.data-table-view__refresh-button[b-32ttn9jkpk] {
    background-color: hsl(var(--link) / 0.08);
    border: none;
}

.data-table-view__grid[b-32ttn9jkpk] {
    height: 100%;
    /* Anchor the absolutely-positioned loading overlay to the grid content area only, so the
       page title, filter controls and paginator (all outside this element) stay interactive
       while a filter/refresh reload is in flight. This box itself never scrolls (that happens
       one level down, in `.data-table-view__scroll`), which is what keeps the overlay's
       `inset: 0` fixed on screen instead of drifting away as the rows scroll. */
    position: relative;
}

/* The grid's actual scrolling viewport. Keeping the scroll here — rather than on the ancestor
   `.data-view__content` — means `.data-table-view__grid` (and the overlay anchored to it) stays
   put on screen while only the rows/header inside this box move. */
.data-table-view__scroll[b-32ttn9jkpk] {
    height: 100%;
    overflow: auto;
    scrollbar-color: hsl(var(--muted-foreground) / 0.4) transparent;
    scrollbar-width: thin;
}

.data-table-view__scroll[b-32ttn9jkpk]::-webkit-scrollbar {
    width: 0.625rem;
    height: 0.625rem;
}

.data-table-view__scroll[b-32ttn9jkpk]::-webkit-scrollbar-track {
    background: transparent;
}

.data-table-view__scroll[b-32ttn9jkpk]::-webkit-scrollbar-thumb {
    border: 2px solid transparent;
    border-radius: 9999px;
    background: hsl(var(--muted-foreground) / 0.4) padding-box;
}

.data-table-view__scroll[b-32ttn9jkpk]::-webkit-scrollbar-thumb:hover {
    background-color: hsl(var(--muted-foreground) / 0.6);
}

/* Filter/refresh loading overlay. FluentDataGrid keeps the previous rows rendered until the
   provider returns, so this sits on top of them: a translucent, lightly blurred shield with a
   centred spinner. It reads in both themes via the shared `--background`/`--muted-foreground`
   variables. The overlay captures pointer events over the grid region so rows and in-cell
   controls cannot be clicked while loading; everything outside `.data-table-view__grid`
   remains usable. No custom animation is added — the FluentProgressRing owns its own motion,
   which already honours the user's reduced-motion preference. */
.data-table-view__overlay[b-32ttn9jkpk] {
    position: absolute;
    inset: 0;
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    background-color: hsl(var(--background) / 0.55);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    /* Deliberately intercept interaction with the grid beneath while loading. */
    pointer-events: auto;
}

.data-table-view__overlay-text[b-32ttn9jkpk] {
    font-size: 0.8rem;
    font-weight: 500;
    color: hsl(var(--muted-foreground));
}

/* Keep rows at the top while the grid fills the available height.
   FluentDataGrid sets an inline `grid-template-rows: auto 1fr`; that trailing
   `1fr` row stretches the first data row (and the empty/loading row) to fill
   all remaining height, which vertically centers the content when there are
   few items. Pin the template to just the header row so data rows fall back to
   `grid-auto-rows` and pack at the top via `align-content: start`. */
.data-table-view__grid[b-32ttn9jkpk]  .fluent-data-grid {
    grid-auto-rows: minmax(3.5rem, auto);
    align-content: start;
    grid-template-rows: auto !important;
}

.data-table-view__grid[b-32ttn9jkpk]  tbody td {
    display: flex;
    align-items: center;
    min-width: 0;
    min-height: 3.5rem;
    padding: 0.625rem 0.75rem;
    border-bottom: 1px solid hsl(var(--border));
}

/* FluentDataGrid right-aligns `Align.End` data cells with `text-align: end` on
   `td.col-justify-end`, but the flex `td` rule above makes the cell content a flex
   item that `text-align` can no longer position. Translate Fluent's alignment onto
   the flex main axis so `Align.End` columns render their content at the right edge. */
.data-table-view__grid[b-32ttn9jkpk]  tbody td.col-justify-end,
.data-table-view__grid[b-32ttn9jkpk]  tbody td.col-justify-right {
    justify-content: flex-end;
    text-align: end;
}

.data-table-view__grid[b-32ttn9jkpk]  .fluent-data-grid tbody tr .hover {
    background: hsl(var(--muted) / 0.5);
}

.data-table-view__grid[b-32ttn9jkpk]  thead th {
    display: flex;
    align-items: center;
    min-width: 0 !important;
    min-height: 2.5rem;
    padding: 0 0.75rem;
    border-bottom: 1px solid hsl(var(--border));
    /* Emphasize the header row with the same dark surface used by the shell's
       side panels (sidebar / top bar), so it reads as a distinct band in both
       light and dark themes. */
    background-color: hsl(var(--background));
}

.data-table-view__grid[b-32ttn9jkpk]  thead .col-title {
    padding-inline: 0;
}

/* The header cell content wrapper is a flex item inside the flex `th`; without
   this it shrinks to min-content and the column title (`width: calc(100% - 10px)`)
   collapses, truncating every header to an ellipsis even when the column is wide. */
.data-table-view__grid[b-32ttn9jkpk]  thead th > div {
    flex: 1 1 auto;
    min-width: 0;
}

.data-table-view__grid[b-32ttn9jkpk]  tr[row-type='sticky-header'] > th {
    background-color: hsl(var(--background));
    z-index: 2;
}

.data-table-view__grid[b-32ttn9jkpk]  thead .col-title-text {
    color: hsl(var(--muted-foreground));
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

/* Standard external/internal link treatment: cells carry the shared .content-link
   class (see theme.css) for accent color, normal weight, and hover / focus /
   visited affordances. */

/* Status pills used by the Status/Latest analysis columns. Translucent colored
   pill per state so they read in both light and dark themes. Shared here so
   every table can present analysis/build status identically. */
.data-table-view__grid[b-32ttn9jkpk]  .status-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

.data-table-view__grid[b-32ttn9jkpk]  .status-badge--muted {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}

.data-table-view__grid[b-32ttn9jkpk]  .status-badge--running {
    background-color: hsl(var(--link) / 0.15);
    color: hsl(var(--link));
}

.data-table-view__grid[b-32ttn9jkpk]  .status-badge--failed {
    background-color: hsl(var(--status-error) / 0.15);
    color: hsl(var(--status-error));
}

.data-table-view__grid[b-32ttn9jkpk]  .status-badge--green {
    background-color: hsl(var(--status-success) / 0.16);
    color: hsl(var(--status-success-foreground));
}
/* /Components/DataView/DataViewLayout.razor.rz.scp.css */
.data-view[b-yay4nyqh61] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    height: calc(100vh - var(--app-header-height, 4.5rem) - 2rem);
    min-height: 0;
}

.data-view__filters[b-yay4nyqh61],
.data-view__footer[b-yay4nyqh61] {
    flex: 0 0 auto;
}

.data-view__content[b-yay4nyqh61] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.data-view__footer[b-yay4nyqh61] {
    display: flex;
    justify-content: flex-end;
}
/* /Components/DataView/RepositoryLabel.razor.rz.scp.css */
.repository-label[b-oar5hv288h] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.375rem;
    min-width: 0;
    overflow: hidden;
}

/* The name is what identifies the repository, so it is never abbreviated and carries no colour of
   its own (keeping whatever emphasis its host applies, such as the accent of a selected option).
   Only the trailing org gives way when the field is too narrow. */
.repository-label__name[b-oar5hv288h] {
    flex: none;
}

.repository-label__org[b-oar5hv288h] {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    color: hsl(var(--muted-foreground));
    font-weight: initial;
}
/* /Components/DataView/RepositoryPathLabel.razor.rz.scp.css */
.repository-path-label[b-c2zwi2p23n] {
    display: inline-flex;
    align-items: baseline;
    min-width: 0;
}

/* No colour of its own so the name keeps whatever emphasis its host applies (for example the
   accent a selected option carries). */
.repository-path-label__name[b-c2zwi2p23n] {
    overflow: hidden;
    text-overflow: ellipsis;
}

.repository-path-label__org[b-c2zwi2p23n] {
    color: hsl(var(--muted-foreground));
    font-weight: initial;
}
/* /Components/DataView/SearchableSelect.razor.rz.scp.css */
/* Shared filter-row combobox. The collapsed trigger reuses the same --input-* depth model as the
   Fluent text controls (see wwwroot/css/overrides.css) so it sits in the input family, even though
   it renders a templated value rather than editable text. Filters whose value needs more room
   override the width through --searchable-select-width. */
.searchable-select[b-xdlmycm28y] {
    position: relative;
    width: var(--searchable-select-width, 14rem);
    min-width: 0;
}

.searchable-select__trigger[b-xdlmycm28y] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    min-width: 0;
    height: var(--input-height);
    box-sizing: border-box;
    padding: 0 0.5rem 0 0.625rem;
    background: var(--input-bg);
    border: 1px solid var(--input-border);
    border-radius: var(--radius);
    box-shadow: var(--input-shadow);
    outline: none;
    cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
}

.searchable-select__trigger:hover[b-xdlmycm28y] {
    background: var(--input-bg-hover);
    border-color: var(--input-border-hover);
}

.searchable-select__trigger:focus-visible[b-xdlmycm28y] {
    border-color: hsl(var(--primary));
    box-shadow: var(--input-ring);
}

/* The value renders through the same option template as a list row, so the collapsed field and the
   list show the selection identically. */
.searchable-select__value[b-xdlmycm28y] {
    display: flex;
    align-items: baseline;
    min-width: 0;
    flex: 1;
    font-family: var(--body-font);
    font-size: var(--type-ramp-base-font-size);
    line-height: var(--type-ramp-base-line-height);
    color: hsl(var(--foreground));
    white-space: nowrap;
    overflow: hidden;
}

.searchable-select__chevron[b-xdlmycm28y] {
    display: inline-flex;
    align-items: center;
    flex: none;
    color: hsl(var(--muted-foreground));
}

.searchable-select__chevron[b-xdlmycm28y]  svg {
    display: block;
    width: 0.9rem;
    height: 0.9rem;
}

/* Overlays the page instead of reflowing the filter row. The popup may grow wider than the 14rem
   trigger so full "org/repo" names stay readable. */
.searchable-select__popup[b-xdlmycm28y] {
    position: absolute;
    z-index: 20;
    top: calc(100% + 0.25rem);
    left: 0;
    width: max-content;
    min-width: 100%;
    max-width: 32rem;
    padding: 0.25rem;
    background-color: hsl(var(--background));
    border: 1px solid hsl(var(--border));
    border-radius: var(--radius);
    box-shadow: 0 0.5rem 1.5rem hsl(var(--foreground) / 0.18);
}

/* Pinned above the list rather than scrolling with it, so the query stays visible and editable no
   matter how far down the options the highlight has moved. */
.searchable-select__search[b-xdlmycm28y] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    box-sizing: border-box;
    height: var(--input-height);
    margin-bottom: 0.25rem;
    padding: 0 0.375rem 0 0.5rem;
    background: var(--input-bg);
    border: 1px solid hsl(var(--primary));
    border-radius: calc(var(--radius) - 0.125rem);
}

.searchable-select__search-icon[b-xdlmycm28y] {
    display: inline-flex;
    align-items: center;
    flex: none;
    color: hsl(var(--muted-foreground));
}

.searchable-select__search-icon[b-xdlmycm28y]  svg,
.searchable-select__clear[b-xdlmycm28y]  svg {
    display: block;
    width: 0.9rem;
    height: 0.9rem;
}

.searchable-select__search-input[b-xdlmycm28y] {
    flex: 1;
    min-width: 0;
    height: 100%;
    padding: 0;
    font-family: var(--body-font);
    font-size: var(--type-ramp-base-font-size);
    line-height: var(--type-ramp-base-line-height);
    color: hsl(var(--foreground));
    background: transparent;
    border: none;
    outline: none;
    white-space: nowrap;
    overflow-x: hidden;
    text-overflow: ellipsis;
}

.searchable-select__search-input[b-xdlmycm28y]::placeholder {
    color: hsl(var(--muted-foreground));
    opacity: 1;
}

.searchable-select__clear[b-xdlmycm28y] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    padding: 0.125rem;
    color: hsl(var(--muted-foreground));
    background: none;
    border: none;
    border-radius: calc(var(--radius) - 0.25rem);
    cursor: pointer;
}

.searchable-select__clear:hover[b-xdlmycm28y] {
    color: hsl(var(--foreground));
    background-color: hsl(var(--muted));
}

/* Capped so a long option list scrolls inside the popup rather than running off the bottom of the
   viewport; the search box above it stays pinned because only this element scrolls. */
.searchable-select__listbox[b-xdlmycm28y] {
    max-height: min(18rem, 45vh);
    overflow-y: auto;
    scrollbar-color: hsl(var(--muted-foreground) / 0.4) transparent;
    scrollbar-width: thin;
}

.searchable-select__option[b-xdlmycm28y] {
    display: flex;
    align-items: baseline;
    padding: 0.3125rem 0.5rem;
    border-radius: calc(var(--radius) - 0.25rem);
    font-size: var(--type-ramp-base-font-size);
    line-height: var(--type-ramp-base-line-height);
    color: hsl(var(--foreground));
    white-space: nowrap;
    cursor: pointer;
}

/* Keyboard and hover share one highlight so the item Enter would commit is always the item the
   pointer would click. */
.searchable-select__option--active[b-xdlmycm28y] {
    background-color: hsl(var(--muted));
}

.searchable-select__option--selected[b-xdlmycm28y] {
    font-weight: 600;
}

.searchable-select__option--selected .searchable-select__option-text[b-xdlmycm28y] {
    color: hsl(var(--primary));
}

.searchable-select__option-text[b-xdlmycm28y] {
    display: inline-flex;
    align-items: baseline;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.searchable-select__empty[b-xdlmycm28y] {
    padding: 0.5rem;
    font-size: 0.8125rem;
    color: hsl(var(--muted-foreground));
}

/* Inline load-failure indicator shown beside the filter when its options could not be loaded.
   Kept subtle so the still-usable "All …" option stays the focus, while making the failure
   visible (not mistaken for an empty list). */
.searchable-select__error[b-xdlmycm28y] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    color: hsl(var(--muted-foreground));
    white-space: nowrap;
}
/* /Components/DataView/TableActionButton.razor.rz.scp.css */
.table-action-button[b-046plxly07] {
    background-color: hsl(var(--link) / 0.08);
    color: hsl(var(--foreground) / 0.85);
    border: none;
    font-weight: 600;
}
/* /Components/ExternalReference.razor.rz.scp.css */
.external-ref[b-xcw7wmvqcu] {
    display: inline-flex;
    align-items: center;
    min-width: 0;
}

.external-ref__text[b-xcw7wmvqcu] {
    min-width: 0;
    font-weight: 600;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

.external-ref__link[b-xcw7wmvqcu] {
    display: inline-flex;
    align-items: center;
    align-self: center;
    flex-shrink: 0;
    line-height: 0;
    margin-inline-start: 0.5rem;
}

.external-ref__link:hover[b-xcw7wmvqcu] {
    text-decoration: none;
    opacity: 0.85;
}

.external-ref__link svg[b-xcw7wmvqcu],
.external-ref__link fluent-icon[b-xcw7wmvqcu] {
    flex-shrink: 0;
    width: 0.9rem;
    height: 0.9rem;
}
/* /Components/HottestKnownIssues.razor.rz.scp.css */
.known-issues__header[b-u351hd2vth] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.known-issues__title[b-u351hd2vth] {
    white-space: nowrap;
}

.known-issues__status[b-u351hd2vth] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.known-issues__notice[b-u351hd2vth] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
}

/* Layout only — accent color, weight, and hover / focus / visited come from the
   shared .content-link class (see theme.css). */
.known-issues__view-all[b-u351hd2vth] {
    font-size: 0.75rem;
    white-space: nowrap;
}

@media (max-width: 40rem) {
    .known-issues__header[b-u351hd2vth] {
        flex-direction: column;
        align-items: stretch;
        gap: 0.125rem;
    }

    .known-issues__view-all[b-u351hd2vth] {
        align-self: flex-end;
    }
}

.known-issues__list[b-u351hd2vth] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.known-issue-item[b-u351hd2vth] {
    display: flex;
    gap: 0.75rem;
    padding: 0.625rem 0;
    border-top: 1px solid hsl(var(--border));
}

.known-issues__list li:first-child .known-issue-item[b-u351hd2vth] {
    border-top: none;
    padding-top: 0.25rem;
}

/* Decorative rail: a slim colored spine with closed issues visually subdued. */
.known-issue-item__rail[b-u351hd2vth] {
    flex: 0 0 auto;
    width: 3px;
    border-radius: 9999px;
    background-color: hsl(var(--border));
}

.known-issue-item__rail--running[b-u351hd2vth] {
    background-color: hsl(var(--link));
}

.known-issue-item__rail--muted[b-u351hd2vth] {
    background-color: hsl(var(--muted-foreground));
}

.known-issue-item__body[b-u351hd2vth] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
    flex: 1;
}

/* Layout only — link styling comes from the shared .content-link class. */
.known-issue-item__title[b-u351hd2vth] {
    display: block;
    font-size: 0.875rem;
    overflow-wrap: anywhere;
}

.known-issue-item__meta[b-u351hd2vth] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.75rem;
    color: hsl(var(--muted-foreground));
}

.known-issue-item__identity[b-u351hd2vth] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.125rem 0.75rem;
    min-width: 0;
}

.known-issue-item__repo[b-u351hd2vth] {
    font-weight: 500;
    color: hsl(var(--foreground) / 0.75);
    overflow-wrap: anywhere;
}

.known-issue-item__number[b-u351hd2vth] {
    font-variant-numeric: tabular-nums;
    font-weight: 500;
}

.known-issue-item__hits[b-u351hd2vth] {
    flex: 0 0 auto;
    font-size: 0.7rem;
    color: hsl(var(--muted-foreground));
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.known-issue-item__occurrences[b-u351hd2vth] {
    color: hsl(var(--foreground));
    font-weight: 700;
}

/* Visually hidden but available to assistive technology. */
.sr-only[b-u351hd2vth] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Components/KnownIssueMatchPreview.razor.rz.scp.css */
.match-preview[b-daqknng4yg] {
    margin-top: 1rem;
    border: 1px solid hsl(var(--border));
    border-radius: 0.5rem;
    padding: 1rem;
}

.match-preview--matched[b-daqknng4yg] {
    border-color: #2da44e;
    background: rgba(45, 164, 78, 0.07);
}

.match-preview--nomatch[b-daqknng4yg] {
    background: hsl(var(--foreground) / 0.03);
}

.match-preview--loading[b-daqknng4yg] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: hsl(var(--foreground) / 0.03);
}

.match-preview__header[b-daqknng4yg] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.match-preview__title[b-daqknng4yg] {
    font-weight: 600;
}

.match-preview__meta[b-daqknng4yg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    margin-top: 0.5rem;
}

.match-preview__pipeline[b-daqknng4yg] {
    font-weight: 600;
    color: hsl(var(--foreground));
}

.match-preview__evidence[b-daqknng4yg] {
    list-style: none;
    margin: 0.875rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.match-preview__evidence-item[b-daqknng4yg] {
    border: 1px solid hsl(var(--border));
    border-radius: 0.375rem;
    padding: 0.625rem 0.75rem;
    background: hsl(var(--foreground) / 0.02);
}

.match-preview__evidence-head[b-daqknng4yg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.match-preview__source[b-daqknng4yg] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: hsl(var(--muted-foreground));
    border: 1px solid hsl(var(--border));
    border-radius: 0.25rem;
    padding: 0.05rem 0.4rem;
    white-space: nowrap;
}

.match-preview__location[b-daqknng4yg] {
    font-size: 0.875rem;
    font-weight: 500;
    word-break: break-word;
}

.match-preview__evidence-context[b-daqknng4yg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.75rem;
    margin-top: 0.375rem;
}

.match-preview__evidence-context > span[b-daqknng4yg] {
    white-space: nowrap;
}

.match-preview__excerpt[b-daqknng4yg] {
    margin: 0.5rem 0 0;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.8125rem;
    line-height: 1.45;
    white-space: pre-wrap;
    word-break: break-word;
    background: hsl(var(--foreground) / 0.05);
    padding: 0.5rem 0.625rem;
    border-radius: 0.25rem;
    overflow-x: auto;
}

.match-preview__detail[b-daqknng4yg],
.match-preview__truncated[b-daqknng4yg] {
    margin: 0.5rem 0 0;
}
/* /Components/KnownIssueOccurrences.razor.rz.scp.css */
/* Occurrence report for the known-issue detail page. An aligned, responsive seven-column grid
   (Occurred, Type, Build, Repository, Match, Details, Azure DevOps) at desktop that collapses to
   semantic stacked rows at narrow widths, following the pull-request Builds list. Long repository,
   match, and org/project values wrap instead of widening the page. Colors are theme tokens only, so
   it reads correctly in both dark and light, and every state/type is expressed as text — color only
   reinforces it. */

.occ-report[b-l9cqrcsdoo] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.occ-toolbar[b-l9cqrcsdoo] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.occ-windows[b-l9cqrcsdoo] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}

.occ-toolbar > .occ-windows + *[b-l9cqrcsdoo] {
    margin-left: auto;
}

.occ-summary[b-l9cqrcsdoo] {
    margin: 0;
}

.occ-truncation[b-l9cqrcsdoo] {
    margin: 0;
    padding: 0.5rem 0.75rem;
    border-left: 3px solid hsl(38 92% 50%);
    background-color: hsl(38 92% 50% / 0.1);
    color: hsl(var(--foreground));
    font-size: 0.8125rem;
    border-radius: calc(var(--radius) - 3px);
}

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

.occ-notice[b-l9cqrcsdoo] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
}

/* Shared column layout for the header and every row. Repository and Match get the flexible tracks;
   the rest stay compact. */
.occ-header[b-l9cqrcsdoo],
.occ-item[b-l9cqrcsdoo] {
    display: grid;
    grid-template-columns:
        minmax(9rem, auto)
        minmax(5rem, auto)
        minmax(5rem, auto)
        minmax(10rem, 1.5fr)
        minmax(12rem, 2fr)
        minmax(6rem, auto)
        minmax(9rem, 1fr);
    align-items: center;
    gap: 0.25rem 1rem;
}

.occ-header[b-l9cqrcsdoo] {
    padding: 0 0.75rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: hsl(var(--muted-foreground));
    border-bottom: 1px solid hsl(var(--border));
}

.occ-list[b-l9cqrcsdoo] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.occ-item[b-l9cqrcsdoo] {
    padding: 0.625rem 0.75rem;
    border-bottom: 1px solid hsl(var(--border));
    transition: background-color 120ms ease-out;
}

.occ-list .occ-item:last-child[b-l9cqrcsdoo] {
    border-bottom: none;
}

.occ-item:hover[b-l9cqrcsdoo] {
    background-color: hsl(var(--muted) / 0.5);
}

.occ-item__field[b-l9cqrcsdoo] {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Repeats the column header inside every row so the record stays understandable to assistive
   technology regardless of viewport. Visually redundant once the desktop header is showing, so it
   collapses to screen-reader-only text there; the narrow layout below restores it as a visible
   inline label. */
.occ-item__label[b-l9cqrcsdoo] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.occ-item__value[b-l9cqrcsdoo] {
    font-size: 0.875rem;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

.occ-item__value--time[b-l9cqrcsdoo] {
    font-variant-numeric: tabular-nums;
    color: hsl(var(--muted-foreground));
    font-size: 0.8125rem;
}

.occ-item__field--repo .occ-item__value[b-l9cqrcsdoo] {
    color: hsl(var(--foreground) / 0.75);
}

/* Details cell can carry two independent links (console log + test result). Lay them out inline with
   generous separation so the two labels never run together, and allow them to wrap onto a second line
   at narrow widths instead of widening the row. */
.occ-item__links[b-l9cqrcsdoo] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.125rem 0.75rem;
    min-width: 0;
}

/* Layout only — link styling comes from the shared .content-link class. */
.occ-item__link[b-l9cqrcsdoo] {
    font-size: 0.875rem;
    overflow-wrap: anywhere;
}

.occ-item__field--build .occ-item__link[b-l9cqrcsdoo] {
    font-variant-numeric: tabular-nums;
}

/* Type pills — text is the source of the type; color only reinforces it. */
.occ-type[b-l9cqrcsdoo] {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    padding: 0.1rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

.occ-type--build[b-l9cqrcsdoo] {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}

.occ-type--test[b-l9cqrcsdoo] {
    background-color: hsl(var(--link) / 0.15);
    color: hsl(var(--link));
}

.occ-pager[b-l9cqrcsdoo] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-top: 0.75rem;
}

.occ-pager__status[b-l9cqrcsdoo] {
    font-variant-numeric: tabular-nums;
}

@media (max-width: 60rem) {
    .occ-header[b-l9cqrcsdoo] {
        display: none;
    }

    .occ-item[b-l9cqrcsdoo] {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        grid-template-areas:
            "time    type"
            "build   repo"
            "match   match"
            "details ado";
        row-gap: 0.5rem;
    }

    .occ-item__field--time[b-l9cqrcsdoo] {
        grid-area: time;
    }

    .occ-item__field--type[b-l9cqrcsdoo] {
        grid-area: type;
        align-items: flex-end;
    }

    .occ-item__field--build[b-l9cqrcsdoo] {
        grid-area: build;
    }

    .occ-item__field--repo[b-l9cqrcsdoo] {
        grid-area: repo;
    }

    .occ-item__field--match[b-l9cqrcsdoo] {
        grid-area: match;
    }

    .occ-item__field--details[b-l9cqrcsdoo] {
        grid-area: details;
    }

    .occ-item__field--ado[b-l9cqrcsdoo] {
        grid-area: ado;
    }

    /* Restore the per-row labels as visible, compact inline text once the desktop header (which
       otherwise conveys the same meaning) is hidden. */
    .occ-item__label[b-l9cqrcsdoo] {
        position: static;
        width: auto;
        height: auto;
        padding: 0;
        margin: 0 0 0.125rem;
        overflow: visible;
        clip: auto;
        white-space: nowrap;
        font-size: 0.7rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.02em;
        color: hsl(var(--muted-foreground));
    }
}

/* Visually hidden but available to assistive technology. */
.sr-only[b-l9cqrcsdoo] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Components/MyRecentPullRequests.razor.rz.scp.css */
.my-recent-prs__header[b-p5up9wd6kn] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.my-recent-prs__title[b-p5up9wd6kn] {
    white-space: nowrap;
}

.my-recent-prs__status[b-p5up9wd6kn] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.my-recent-prs__notice[b-p5up9wd6kn] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
}

/* Layout only — accent color, weight, and hover / focus / visited come from the
   shared .content-link class (see theme.css). */
.my-recent-prs__cta[b-p5up9wd6kn] {
    font-size: 0.8125rem;
}

.my-recent-prs__view-all[b-p5up9wd6kn] {
    font-size: 0.75rem;
    white-space: nowrap;
}

@media (max-width: 40rem) {
    .my-recent-prs__header[b-p5up9wd6kn] {
        flex-direction: column;
        align-items: stretch;
        gap: 0.125rem;
    }

    .my-recent-prs__view-all[b-p5up9wd6kn] {
        align-self: flex-end;
    }
}

.my-recent-prs__list[b-p5up9wd6kn] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.pr-item[b-p5up9wd6kn] {
    display: flex;
    gap: 0.75rem;
    padding: 0.625rem 0;
    border-top: 1px solid hsl(var(--border));
}

.my-recent-prs__list li:first-child .pr-item[b-p5up9wd6kn] {
    border-top: none;
    padding-top: 0.25rem;
}

/* Status rail: a slim colored spine reinforcing the labelled badges. Purely decorative
   (aria-hidden), so color is never the only way to read the status. */
.pr-item__rail[b-p5up9wd6kn] {
    flex: 0 0 auto;
    width: 3px;
    border-radius: 9999px;
    background-color: hsl(var(--border));
}

.pr-item__rail--failed[b-p5up9wd6kn] {
    background-color: hsl(var(--status-error));
}

.pr-item__rail--running[b-p5up9wd6kn] {
    background-color: hsl(var(--link));
}

.pr-item__rail--muted[b-p5up9wd6kn] {
    background-color: hsl(var(--muted-foreground));
}

.pr-item__rail--green[b-p5up9wd6kn] {
    background-color: hsl(var(--status-success));
}

.pr-item__rail--none[b-p5up9wd6kn] {
    background-color: hsl(var(--border));
}

.pr-item__body[b-p5up9wd6kn] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "title summary"
        "meta summary";
    gap: 0.25rem 0.75rem;
    min-width: 0;
    flex: 1;
}

.pr-item__meta[b-p5up9wd6kn] {
    grid-area: meta;
    display: flex;
    flex-wrap: wrap;
    gap: 0.125rem 0.75rem;
    font-size: 0.75rem;
    color: hsl(var(--muted-foreground));
}

.pr-item__repo[b-p5up9wd6kn] {
    font-weight: 500;
    color: hsl(var(--foreground) / 0.75);
}

/* Layout only — link styling comes from the shared .content-link class. */
.pr-item__number[b-p5up9wd6kn] {
    font-variant-numeric: tabular-nums;
}

/* Primary internal detail link — layout only; the accent color and affordances
   come from the shared .content-link class (see theme.css). */
.pr-item__title[b-p5up9wd6kn] {
    grid-area: title;
    display: block;
    font-size: 0.875rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pr-item__summary[b-p5up9wd6kn] {
    grid-area: summary;
    display: grid;
    grid-template-rows: repeat(2, 1fr);
    justify-items: end;
    align-items: center;
}

.pr-item__badges[b-p5up9wd6kn] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.375rem;
}

.pr-item__builds[b-p5up9wd6kn] {
    font-size: 0.7rem;
    color: hsl(var(--muted-foreground));
    white-space: nowrap;
}

@media (max-width: 40rem) {
    .pr-item__body[b-p5up9wd6kn] {
        display: flex;
        flex-direction: column;
        gap: 0.25rem;
    }

    .pr-item__summary[b-p5up9wd6kn] {
        display: flex;
        justify-content: flex-end;
        align-items: center;
        flex-wrap: wrap;
        gap: 0.375rem;
    }

}

/* Status pills — same translucent per-state treatment as the shared table badges, redeclared here
   because those live inside the table component's scoped styles. */
.status-badge[b-p5up9wd6kn] {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

.status-badge--muted[b-p5up9wd6kn] {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}

.status-badge--running[b-p5up9wd6kn] {
    background-color: hsl(var(--link) / 0.15);
    color: hsl(var(--link));
}

.status-badge--failed[b-p5up9wd6kn] {
    background-color: hsl(var(--status-error) / 0.15);
    color: hsl(var(--status-error));
}

.status-badge--green[b-p5up9wd6kn] {
    background-color: hsl(var(--status-success) / 0.16);
    color: hsl(var(--status-success-foreground));
}

/* Visually hidden but available to assistive technology. */
.sr-only[b-p5up9wd6kn] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Components/PullRequestBuilds.razor.rz.scp.css */
/* Build records for the pull-request detail page's Builds card: an aligned, responsive
   five-column admin grid (Pipeline, Repository, Build ID, Created, Status) with a colored
   status pill. Rows and the header share one grid-template-columns definition so every
   column lines up. Colors are theme tokens only, so it reads correctly in both dark and
   light. No decorative side rail — the status pill alone carries the color. */

.pr-builds__status[b-99uu02a8pd] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pr-builds__notice[b-99uu02a8pd] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
}

/* Shared column layout for the header and every row. Repository gets the largest flexible
    track, Pipeline the second largest; Build ID/Created/Status stay compact. The extra
   left padding leaves room for the per-row status rail, which is positioned outside the
   grid so the header (which has no rail) still lines up with the rows. */
.pr-builds__header[b-99uu02a8pd],
.build-item[b-99uu02a8pd] {
    display: grid;
    grid-template-columns:
        minmax(12rem, 2fr)
        minmax(16rem, 3fr)
        minmax(6rem, auto)
        minmax(10rem, auto)
        minmax(7rem, auto);
    align-items: center;
    gap: 0.25rem 1rem;
    padding-left: 1.25rem;
}

.pr-builds__header[b-99uu02a8pd] {
    padding: 0 0.75rem 0.5rem 1.25rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: hsl(var(--muted-foreground));
    border-bottom: 1px solid hsl(var(--border));
}

.pr-builds__list[b-99uu02a8pd] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.build-item[b-99uu02a8pd] {
    position: relative;
    padding: 0.625rem 0.75rem 0.625rem 1.25rem;
    border-bottom: 1px solid hsl(var(--border));
    transition: background-color 120ms ease-out;
}

/* Status rail: a slim colored spine reinforcing the labelled status pill, matching the
   dashboard pull-request list. Purely decorative (aria-hidden), so color is never the
   only way to read the status. */
.build-item__rail[b-99uu02a8pd] {
    position: absolute;
    left: 0.5rem;
    top: 0.625rem;
    bottom: 0.625rem;
    width: 3px;
    border-radius: 9999px;
    background-color: hsl(var(--border));
}

.build-item__rail--muted[b-99uu02a8pd] {
    background-color: hsl(var(--muted-foreground));
}

.build-item__rail--running[b-99uu02a8pd] {
    background-color: hsl(var(--link));
}

.build-item__rail--failed[b-99uu02a8pd] {
    background-color: hsl(var(--status-error));
}

.build-item__rail--green[b-99uu02a8pd] {
    background-color: hsl(var(--status-success));
}

.pr-builds__list .build-item:last-child[b-99uu02a8pd] {
    border-bottom: none;
}

.build-item:hover[b-99uu02a8pd] {
    background-color: hsl(var(--muted) / 0.5);
}

.build-item__field[b-99uu02a8pd] {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Repeats the column header inside every row so the record stays understandable to
   assistive technology regardless of viewport. Visually redundant once the desktop
   header is showing, so it collapses to screen-reader-only text there; the narrow
   layout below restores it as a visible inline label. */
.build-item__label[b-99uu02a8pd] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.build-item__value[b-99uu02a8pd] {
    font-size: 0.875rem;
    color: hsl(var(--foreground));
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.build-item__field--pipeline .build-item__value[b-99uu02a8pd] {
    font-weight: 500;
}

.build-item__field--repo .build-item__value[b-99uu02a8pd] {
    color: hsl(var(--foreground) / 0.75);
}

.build-item__value--time[b-99uu02a8pd] {
    font-variant-numeric: tabular-nums;
    color: hsl(var(--muted-foreground));
    font-size: 0.8125rem;
}

/* Layout only — accent color, weight, and hover / focus / visited come from the
   shared .content-link class (see theme.css). */
.pr-builds__list[b-99uu02a8pd]  .build-item__link {
    font-variant-numeric: tabular-nums;
    font-size: 0.875rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 48rem) {
    .pr-builds__header[b-99uu02a8pd] {
        display: none;
    }

    .build-item[b-99uu02a8pd] {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "pipeline status"
            "repo     status"
            "id       created";
        row-gap: 0.375rem;
    }

    .build-item__field--pipeline[b-99uu02a8pd] {
        grid-area: pipeline;
    }

    .build-item__field--repo[b-99uu02a8pd] {
        grid-area: repo;
    }

    .build-item__field--id[b-99uu02a8pd] {
        grid-area: id;
    }

    .build-item__field--created[b-99uu02a8pd] {
        grid-area: created;
    }

    .build-item__field--status[b-99uu02a8pd] {
        grid-area: status;
        align-items: flex-end;
        justify-self: end;
    }

    .build-item__field--id[b-99uu02a8pd],
    .build-item__field--created[b-99uu02a8pd] {
        flex-direction: row;
        align-items: baseline;
        gap: 0.375rem;
    }

    /* Restore the per-row labels as visible, compact inline text once the desktop
       header (which otherwise conveys the same meaning) is hidden. */
    .build-item__label[b-99uu02a8pd] {
        position: static;
        width: auto;
        height: auto;
        padding: 0;
        margin: 0;
        overflow: visible;
        clip: auto;
        white-space: nowrap;
        font-size: 0.7rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.02em;
        color: hsl(var(--muted-foreground));
    }

    .build-item__value[b-99uu02a8pd] {
        white-space: normal;
        overflow-wrap: anywhere;
    }

    .pr-builds__list[b-99uu02a8pd]  .build-item__link {
        white-space: normal;
        overflow-wrap: anywhere;
    }
}

/* Status pills — same translucent per-state treatment as the shared table/dashboard badges,
   redeclared here because CSS isolation scopes those rules to their own components. Text
   remains the status source; color only reinforces it. */
.status-badge[b-99uu02a8pd] {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

.status-badge--muted[b-99uu02a8pd] {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}

.status-badge--running[b-99uu02a8pd] {
    background-color: hsl(var(--link) / 0.15);
    color: hsl(var(--link));
}

.status-badge--failed[b-99uu02a8pd] {
    background-color: hsl(var(--status-error) / 0.15);
    color: hsl(var(--status-error));
}

.status-badge--green[b-99uu02a8pd] {
    background-color: hsl(var(--status-success) / 0.16);
    color: hsl(var(--status-success-foreground));
}

/* Visually hidden but available to assistive technology. */
.sr-only[b-99uu02a8pd] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Components/PullRequestReport.razor.rz.scp.css */
/* Build Analysis report section of the pull-request detail page: the lazy-loading
   placeholder, its notice/empty states, and the rendered report markup. */

.pr-check-status[b-8oungj19tk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pr-check-empty[b-8oungj19tk] {
    margin: 0;
}

.pr-check-notice[b-8oungj19tk] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
}

/* The check content is emitted via MarkupString, so its nodes do not carry
   this component's scope attribute; `::deep` is required to reach them. Every
   color is a theme token so the rendered markdown themes with dark + light. */
.pr-check-content[b-8oungj19tk] {
    font-size: 0.9375rem;
    line-height: 1.6;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

.pr-check-content[b-8oungj19tk]  > *:first-child {
    margin-top: 0;
}

.pr-check-content[b-8oungj19tk]  > *:last-child {
    margin-bottom: 0;
}

.pr-check-content[b-8oungj19tk]  h1,
.pr-check-content[b-8oungj19tk]  h2,
.pr-check-content[b-8oungj19tk]  h3,
.pr-check-content[b-8oungj19tk]  h4,
.pr-check-content[b-8oungj19tk]  h5,
.pr-check-content[b-8oungj19tk]  h6 {
    font-weight: 600;
    line-height: 1.3;
    margin: 1.5rem 0 0.75rem;
    color: hsl(var(--foreground));
}

.pr-check-content[b-8oungj19tk]  h1 {
    font-size: 1.5rem;
}

.pr-check-content[b-8oungj19tk]  h2 {
    font-size: 1.25rem;
}

/* GitHub underlines its top-level section headings. Only direct children get the
   rule so headings that live inside a <summary> (styled separately below) keep a
   single underline on the summary row instead of a doubled-up border. */
.pr-check-content[b-8oungj19tk]  > h1,
.pr-check-content[b-8oungj19tk]  > h2 {
    padding-bottom: 0.3em;
    border-bottom: 1px solid hsl(var(--border));
}

.pr-check-content[b-8oungj19tk]  h3 {
    font-size: 1.125rem;
}

.pr-check-content[b-8oungj19tk]  h4,
.pr-check-content[b-8oungj19tk]  h5,
.pr-check-content[b-8oungj19tk]  h6 {
    font-size: 1rem;
}

.pr-check-content[b-8oungj19tk]  p {
    margin: 0.75rem 0;
}

.pr-check-content[b-8oungj19tk]  a {
    color: hsl(var(--primary));
    text-decoration: underline;
    text-underline-offset: 2px;
}

.pr-check-content[b-8oungj19tk]  a:hover {
    text-decoration: none;
}

.pr-check-content[b-8oungj19tk]  ul,
.pr-check-content[b-8oungj19tk]  ol {
    margin: 0.75rem 0;
    padding-left: 1.5rem;
}

.pr-check-content[b-8oungj19tk]  li {
    margin: 0.25rem 0;
}

.pr-check-content[b-8oungj19tk]  table {
    width: 100%;
    border-collapse: collapse;
    margin: 1rem 0;
    font-size: 0.875rem;
}

.pr-check-content[b-8oungj19tk]  th,
.pr-check-content[b-8oungj19tk]  td {
    border: 1px solid hsl(var(--border));
    padding: 0.5rem 0.75rem;
    text-align: left;
    vertical-align: top;
}

.pr-check-content[b-8oungj19tk]  th {
    background-color: hsl(var(--muted));
    font-weight: 600;
}

.pr-check-content[b-8oungj19tk]  tbody tr:nth-child(even) {
    background-color: hsl(var(--muted) / 0.4);
}

.pr-check-content[b-8oungj19tk]  code {
    font-family: ui-monospace, SFMono-Regular, "Cascadia Code", Consolas, monospace;
    font-size: 0.85em;
    background-color: hsl(var(--muted));
    padding: 0.1rem 0.35rem;
    border-radius: calc(var(--radius) - 3px);
}

.pr-check-content[b-8oungj19tk]  pre {
    background-color: hsl(var(--muted));
    border: 1px solid hsl(var(--border));
    border-radius: var(--radius);
    padding: 0.875rem 1rem;
    overflow: auto;
    margin: 1rem 0;
}

.pr-check-content[b-8oungj19tk]  pre code {
    background: none;
    padding: 0;
    border-radius: 0;
    font-size: 0.85rem;
}

.pr-check-content[b-8oungj19tk]  blockquote {
    margin: 1rem 0;
    padding: 0.25rem 1rem;
    border-left: 3px solid hsl(var(--border));
    color: hsl(var(--muted-foreground));
}

.pr-check-content[b-8oungj19tk]  hr {
    border: 0;
    border-top: 1px solid hsl(var(--border));
    margin: 1.5rem 0;
}

.pr-check-content[b-8oungj19tk]  img {
    max-width: 100%;
    height: auto;
}

/* GitHub-flavored alert callouts. Markdig's alert extension turns `> [!TIP]`,
   `> [!IMPORTANT]`, `> [!NOTE]`, `> [!WARNING]`, `> [!CAUTION]` into
   `.markdown-alert.markdown-alert-<kind>` blocks with an octicon SVG title,
   matching GitHub's rendered markup. Each kind gets a colored left border and a
   colored, icon-led title; the body inherits normal text color. Colors reuse the
   theme's semantic hues where they exist so the callouts read in dark and light. */
.pr-check-content[b-8oungj19tk]  .markdown-alert {
    margin: 1rem 0;
    padding: 0.5rem 1rem;
    border-left: 0.25rem solid hsl(var(--border));
    color: hsl(var(--foreground));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert > *:first-child {
    margin-top: 0;
}

.pr-check-content[b-8oungj19tk]  .markdown-alert > *:last-child {
    margin-bottom: 0;
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.375rem;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1;
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-title svg {
    width: 1rem;
    height: 1rem;
    fill: currentColor;
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-note {
    border-left-color: hsl(var(--link));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-note .markdown-alert-title {
    color: hsl(var(--link));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-tip {
    border-left-color: hsl(var(--status-success));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-tip .markdown-alert-title {
    color: hsl(var(--status-success));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-important {
    border-left-color: hsl(265 70% 60%);
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-important .markdown-alert-title {
    color: hsl(265 70% 60%);
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-warning {
    border-left-color: hsl(38 92% 50%);
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-warning .markdown-alert-title {
    color: hsl(38 92% 45%);
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-caution {
    border-left-color: hsl(var(--status-error));
}

.pr-check-content[b-8oungj19tk]  .markdown-alert-caution .markdown-alert-title {
    color: hsl(var(--status-error));
}

/* Collapsible report sections. Each is `<details open><summary><h2>…</h2></summary>`.
   Keep the native disclosure triangle, render the heading inline beside it, and
   underline the summary row the way GitHub underlines section headings. */
.pr-check-content[b-8oungj19tk]  details {
    margin: 1rem 0;
}

.pr-check-content[b-8oungj19tk]  summary {
    cursor: pointer;
    margin: 1.5rem 0 0.75rem;
}

.pr-check-content[b-8oungj19tk]  summary > h1,
.pr-check-content[b-8oungj19tk]  summary > h2,
.pr-check-content[b-8oungj19tk]  summary > h3,
.pr-check-content[b-8oungj19tk]  summary > h4 {
    display: inline;
    margin: 0;
    padding: 0;
    border: 0;
}

.pr-check-content[b-8oungj19tk]  summary:has(> h1),
.pr-check-content[b-8oungj19tk]  summary:has(> h2) {
    padding-bottom: 0.3em;
    border-bottom: 1px solid hsl(var(--border));
}

/* The report uses bare <ul>/<dl> wrappers (often without <li>) purely to indent
   nested detail under a heading. Keep the indent but drop list bullets so those
   wrappers don't render stray markers next to prose. */
.pr-check-content[b-8oungj19tk]  ul > :not(li),
.pr-check-content[b-8oungj19tk]  dl {
    list-style: none;
}

.pr-check-content[b-8oungj19tk]  dl {
    margin: 0.5rem 0;
    padding-left: 1.5rem;
}

.pr-check-content[b-8oungj19tk]  dl > * {
    margin: 0.25rem 0;
}
/* /Components/RepositoryReference.razor.rz.scp.css */
/* Inline repository label. The root stays inline so a caller's truncate/sizing class clips the
   whole "org / name" run exactly like the single span it replaced. */
.repo-ref[b-u5qjc5ufl9] {
    display: inline-flex;
    align-items: baseline;
    min-width: 0;
}

/* Owner is subdued so the repository name reads as the primary token. */
.repo-ref__org[b-u5qjc5ufl9] {
    color: hsl(var(--muted-foreground));
}

/* The literal "/" between owner and name; slightly muted with equal spacing on each side. */
.repo-ref__divider[b-u5qjc5ufl9] {
    margin-inline: 0.25rem;
    color: hsl(var(--muted-foreground));
}

.repo-ref__name-row[b-u5qjc5ufl9] {
    min-width: 0;
}

/* Repository name is distinguished by color without changing its weight. */
.repo-ref__name[b-u5qjc5ufl9] {
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

/* Compact icon-only external link riding next to the name; never shrinks, no underline on hover.
   The anchor comes from the GridLink child component, so it carries no scope attribute and only
   `::deep` reaches it. */
.repo-ref__name-row[b-u5qjc5ufl9]  .repo-ref__link {
    display: inline-flex;
    align-items: center;
    align-self: center;
    flex-shrink: 0;
    line-height: 0;
    margin-inline-start: 0.5rem;
}

.repo-ref__name-row[b-u5qjc5ufl9]  .repo-ref__link:hover {
    text-decoration: none;
    opacity: 0.85;
}

.repo-ref__name-row[b-u5qjc5ufl9]  .repo-ref__link svg,
.repo-ref__name-row[b-u5qjc5ufl9]  .repo-ref__link fluent-icon {
    flex-shrink: 0;
    width: 0.9rem;
    height: 0.9rem;
}

/* Reverse only the boxed presentation while preserving the natural org/repo source order. */
.repo-ref--boxed[b-u5qjc5ufl9] {
    flex-direction: column-reverse;
    min-width: 0;
    line-height: 1.25;
}

.repo-ref--boxed .repo-ref__org[b-u5qjc5ufl9] {
    font-size: 0.75rem;
    overflow-wrap: anywhere;
}

.repo-ref--boxed .repo-ref__divider[b-u5qjc5ufl9] {
    display: none;
}

.repo-ref--boxed .repo-ref__name-row[b-u5qjc5ufl9] {
    display: inline-flex;
    align-items: center;
}
/* /Layout/FormPageLayout.razor.rz.scp.css */
/* Center the single content column horizontally within the main content area and
   constrain it to one shared width so every form / settings page lines up. */
.form-page[b-hfinv6epot] {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.form-page__content[b-hfinv6epot] {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 50.4rem;
}
/* /Pages/BuildDetail.razor.rz.scp.css */
/* Build-detail page. Reuses the detail-page vocabulary: a responsive metadata grid of
   label/value pairs, plus compact table-like rows for the known build/test errors. Colors are
   theme tokens only, so it reads correctly in both dark and light. Accent color is reserved for
   links, focus, and state — never decoration. */

/* Metadata grid — auto-fit keeps it readable from narrow to wide without media queries. */
.bd-meta[b-qgxls7204n] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
}

.bd-meta__item[b-qgxls7204n] {
    min-width: 0;
}

.bd-meta__label[b-qgxls7204n] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: hsl(var(--muted-foreground));
}

.bd-meta__value[b-qgxls7204n] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
    min-width: 0;
    font-size: 0.875rem;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

/* Let long repository/branch text wrap inside its own metadata track instead of overflowing
   into the neighboring column; the leading status/branch icon keeps its size. */
.bd-meta__value > span[b-qgxls7204n],
.bd-meta__value > a[b-qgxls7204n] {
    min-width: 0;
    overflow-wrap: anywhere;
}

.bd-meta__value > svg[b-qgxls7204n],
.bd-meta__value fluent-icon[b-qgxls7204n] {
    flex-shrink: 0;
}

.bd-meta__value--pipeline[b-qgxls7204n] {
    gap: 0.25rem;
}

.bd-pipeline-name[b-qgxls7204n] {
    font-weight: 600;
    color: hsl(var(--foreground));
}

.bd-pr-list[b-qgxls7204n] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.bd-pr-list li[b-qgxls7204n] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.bd-pr-title[b-qgxls7204n] {
    font-size: 0.8125rem;
    color: hsl(var(--muted-foreground));
    overflow-wrap: anywhere;
}

.bd-meta__value--repo[b-qgxls7204n] {
    align-items: flex-start;
}

/* Internal and external link atom. Accent color, weight, and hover / focus /
   visited affordances come from the shared .content-link class (see theme.css);
   only layout remains here. */
.bd-link[b-qgxls7204n] {
    overflow-wrap: anywhere;
}

/* External links carry a small, subordinate Open icon before their label so leaving the app is a
   consistent cue across the page. inline-flex keeps the icon aligned with the first text line and
   flex-shrink:0 stops it from collapsing; the label wraps inside its own span. */
.bd-link--external[b-qgxls7204n] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    min-width: 0;
}

.bd-link__text[b-qgxls7204n] {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* Icon-only external link (repository shortcut): no visible text, so it is sized to the icon and
   keeps hover/focus affordances without an underline to nothing. */
.bd-icon-link[b-qgxls7204n] {
    display: inline-flex;
    align-items: center;
    align-self: center;
    flex-shrink: 0;
    line-height: 0;
    margin-inline-start: 0.25rem;
}

.bd-icon-link:hover[b-qgxls7204n] {
    text-decoration: none;
    opacity: 0.85;
}

/* Small, subordinate external-link glyphs sit tight against their label and never shrink. */
.bd-link--external svg[b-qgxls7204n],
.bd-link--external fluent-icon[b-qgxls7204n],
.bd-icon-link svg[b-qgxls7204n],
.bd-icon-link fluent-icon[b-qgxls7204n] {
    flex-shrink: 0;
    width: 0.9rem;
    height: 0.9rem;
}

.bd-empty[b-qgxls7204n] {
    margin: 0;
}

/* Known issues hits — a compact wrapping list of linked issue references. */
.bd-issue-list[b-qgxls7204n] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem 1rem;
}

.bd-issue[b-qgxls7204n] {
    min-width: 0;
    font-size: 0.875rem;
    font-variant-numeric: tabular-nums;
}

/* Known build/test error rows — an aligned grid on wide screens; the header and every row
   share one grid-template-columns definition so columns line up. */
.bd-rows[b-qgxls7204n] {
    display: flex;
    flex-direction: column;
}

.bd-rows--build .bd-rows__header[b-qgxls7204n],
.bd-rows--build .bd-row[b-qgxls7204n] {
    display: grid;
    grid-template-columns: minmax(12rem, 3fr) minmax(6rem, auto) minmax(10rem, 1.5fr);
    align-items: start;
    gap: 0.25rem 1rem;
}

.bd-rows--test .bd-rows__header[b-qgxls7204n],
.bd-rows--test .bd-row[b-qgxls7204n] {
    display: grid;
    grid-template-columns: minmax(14rem, 3fr) minmax(10rem, 1.5fr);
    align-items: start;
    gap: 0.25rem 1rem;
}

.bd-rows__header[b-qgxls7204n] {
    padding: 0 0.25rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: hsl(var(--muted-foreground));
    border-bottom: 1px solid hsl(var(--border));
}

.bd-row[b-qgxls7204n] {
    padding: 0.625rem 0.25rem;
    border-bottom: 1px solid hsl(var(--border));
}

.bd-rows .bd-row:last-child[b-qgxls7204n] {
    border-bottom: none;
}

.bd-cell[b-qgxls7204n] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    font-size: 0.875rem;
}

/* Repeats the column header inside every row so the record stays understandable to assistive
   technology regardless of viewport. Visually redundant while the desktop header shows, so it
   collapses to screen-reader-only text there and is restored as a visible label in the narrow
   layout below. */
.bd-cell__label[b-qgxls7204n] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.bd-cell__value[b-qgxls7204n] {
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

@media (max-width: 48rem) {
    .bd-rows--build .bd-rows__header[b-qgxls7204n],
    .bd-rows--test .bd-rows__header[b-qgxls7204n] {
        display: none;
    }

    .bd-rows--build .bd-row[b-qgxls7204n],
    .bd-rows--test .bd-row[b-qgxls7204n] {
        grid-template-columns: minmax(0, 1fr);
        row-gap: 0.5rem;
    }

    /* Restore the per-row labels as visible, compact inline text once the desktop header
       (which otherwise conveys the same meaning) is hidden. */
    .bd-cell__label[b-qgxls7204n] {
        position: static;
        width: auto;
        height: auto;
        padding: 0;
        margin: 0;
        overflow: visible;
        clip: auto;
        white-space: nowrap;
        font-size: 0.7rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.02em;
        color: hsl(var(--muted-foreground));
    }
}

/* Skeleton placeholders sized to the eventual metadata card and section rows so the layout
   does not shift when content arrives. */
.bd-skeleton-meta[b-qgxls7204n] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
}

.bd-skeleton-item[b-qgxls7204n] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.bd-skeleton[b-qgxls7204n] {
    display: block;
    border-radius: calc(var(--radius) - 3px);
    background-color: hsl(var(--muted) / 0.6);
}

.bd-skeleton--label[b-qgxls7204n] {
    width: 5rem;
    height: 0.75rem;
}

.bd-skeleton--value[b-qgxls7204n] {
    width: 80%;
    height: 1rem;
}

.bd-skeleton--heading[b-qgxls7204n] {
    width: 12rem;
    height: 1.125rem;
    margin-bottom: 1rem;
}

.bd-skeleton--row[b-qgxls7204n] {
    width: 100%;
    height: 1rem;
    margin-top: 0.75rem;
}

/* Status pills — same translucent per-state treatment as the shared table/dashboard badges,
   redeclared here because CSS isolation scopes those rules to their own components. Text remains
   the status source; color only reinforces it. */
.status-badge[b-qgxls7204n] {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

.status-badge--muted[b-qgxls7204n] {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
}

.status-badge--running[b-qgxls7204n] {
    background-color: hsl(var(--link) / 0.15);
    color: hsl(var(--link));
}

.status-badge--failed[b-qgxls7204n] {
    background-color: hsl(var(--status-error) / 0.15);
    color: hsl(var(--status-error));
}

.status-badge--green[b-qgxls7204n] {
    background-color: hsl(var(--status-success) / 0.16);
    color: hsl(var(--status-success-foreground));
}

/* Partially-succeeded: an amber pill for the Azure DevOps result that is neither a clean pass
   nor a failure. Uses fixed amber hues (no dedicated theme token) that read in dark and light. */
.status-badge--warning[b-qgxls7204n] {
    background-color: hsl(38 92% 50% / 0.16);
    color: hsl(38 92% 42%);
}

.dark .status-badge--warning[b-qgxls7204n] {
    color: hsl(38 92% 62%);
}
/* Visually hidden but available to assistive technology. */
.sr-only[b-qgxls7204n] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Pages/CreateKnownIssue.razor.rz.scp.css */
.ki-create__field[b-j0ya6ge2h6] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.ki-create__textarea[b-j0ya6ge2h6] {
    width: 100%;
}

.ki-create__labels-hint[b-j0ya6ge2h6],
.ki-create__labels[b-j0ya6ge2h6] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.375rem;
}

.ki-create__label[b-j0ya6ge2h6] {
    display: inline-flex;
    align-items: center;
    font-size: 0.75rem;
    font-weight: 500;
    color: hsl(var(--foreground) / 0.8);
    background: hsl(var(--primary) / 0.12);
    border-radius: 999px;
    padding: 0.1rem 0.55rem;
}

.ki-create__options-warning[b-j0ya6ge2h6] {
    padding: 0.625rem 0.75rem;
    border: 1px solid hsl(var(--border));
    border-radius: 0.375rem;
    background: hsl(var(--foreground) / 0.03);
}

.ki-create__created[b-j0ya6ge2h6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border: 1px solid hsl(var(--status-success));
    background: hsl(var(--status-success) / 0.08);
    border-radius: 0.5rem;
    padding: 2.75rem 1.5rem;
    margin-top: 0.5rem;
}

.ki-create__created-head[b-j0ya6ge2h6] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.ki-create__created-title[b-j0ya6ge2h6] {
    font-size: 1.125rem;
    font-weight: 600;
}

.ki-create__created-meta[b-j0ya6ge2h6] {
    margin: 0.5rem 0 0;
}

.ki-create__created .ki-create__labels[b-j0ya6ge2h6] {
    justify-content: center;
    margin-top: 0.625rem;
}

.ki-create__created-actions[b-j0ya6ge2h6] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    margin-top: 2.25rem;
}

.ki-create__created-actions[b-j0ya6ge2h6]  .external-ref__text {
    font-size: 1rem;
}

.ki-create__created-actions[b-j0ya6ge2h6]  .external-ref__link svg,
.ki-create__created-actions[b-j0ya6ge2h6]  .external-ref__link fluent-icon {
    width: 1.05rem;
    height: 1.05rem;
}

/* FluentTextArea renders its control inside a shadow root; stretch it to the group width. */
.ki-create__textarea[b-j0ya6ge2h6]::part(control) {
    width: 100%;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
/* /Pages/KnownIssueDetail.razor.rz.scp.css */
/* Known-issue detail page. Reuses the pull-request detail metadata vocabulary — a responsive grid
   of label/value pairs — plus a compact synchronized-count strip. Colors are theme tokens only, so
   it reads correctly in both dark and light. */

.ki-back[b-c2xr4poj66] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    align-self: flex-start;
    font-size: 0.875rem;
    color: hsl(var(--muted-foreground));
    text-decoration: none;
}

.ki-back:hover[b-c2xr4poj66] {
    color: hsl(var(--foreground));
    text-decoration: underline;
}

.ki-meta[b-c2xr4poj66] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
}

.ki-meta__item[b-c2xr4poj66] {
    min-width: 0;
}

.ki-meta__value--repo[b-c2xr4poj66] {
    align-items: flex-start;
}

.ki-meta__label[b-c2xr4poj66] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: hsl(var(--muted-foreground));
}

.ki-meta__value[b-c2xr4poj66] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
    font-size: 0.875rem;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

.ki-counts__note[b-c2xr4poj66] {
    margin: 0 0 1rem;
}

/* Compact summary strip of the synchronized rolling counts. */
.ki-counts[b-c2xr4poj66] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.ki-count[b-c2xr4poj66] {
    flex: 1 1 8rem;
    min-width: 7rem;
    padding: 0.75rem 1rem;
    border: 1px solid hsl(var(--border));
    border-radius: var(--radius);
    background-color: hsl(var(--muted) / 0.35);
}

.ki-count__value[b-c2xr4poj66] {
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.1;
    color: hsl(var(--foreground));
    font-variant-numeric: tabular-nums;
}

.ki-count__label[b-c2xr4poj66] {
    margin-top: 0.25rem;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: hsl(var(--muted-foreground));
}

/* Visually hidden but available to assistive technology. */
.sr-only[b-c2xr4poj66] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Pages/PullRequestDetail.razor.rz.scp.css */
/* Metadata panel — a responsive grid of label/value pairs. Auto-fit keeps it
   readable from narrow to wide without media queries. Colors are theme tokens
   only, so it reads correctly in both dark and light. */
.pr-meta[b-34qenajnr0] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
}

.pr-meta__item[b-34qenajnr0] {
    min-width: 0;
}

.pr-meta__value--repo[b-34qenajnr0] {
    align-items: flex-start;
}

.pr-meta__label[b-34qenajnr0] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: hsl(var(--muted-foreground));
}

.pr-meta__value[b-34qenajnr0] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
    font-size: 0.875rem;
    color: hsl(var(--foreground));
    overflow-wrap: anywhere;
}

