/* _content/Bitting/BittingSlider/BittingSlider.razor.rz.scp.css */
/*
  BittingSlider scoped styles.
  Relies entirely on Bitting CSS variables + Bootstrap colour helpers.
  No hardcoded px values — all sizes derived from the golden-ratio scale.
*/

/* ── Root wrapper ──────────────────────────────────────────────────────── */

.bitting-slider-root[b-wl8l1qm1nm] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: var(--bitting-qtr-md);
    user-select: none;
    -webkit-user-select: none;
    padding: var(--bitting-xs) var(--bitting-icon-md);
}

/* ── Label row ─────────────────────────────────────────────────────────── */

.bitting-slider-label[b-wl8l1qm1nm] {
    display: flex;
    align-items: baseline;
    gap: var(--bitting-sm);
}

.bitting-slider-label-text[b-wl8l1qm1nm] {
    color: var(--bitting-gray);
    white-space: nowrap;
}

.bitting-slider-label-value[b-wl8l1qm1nm] {
    font-variant-numeric: tabular-nums;
}

/* ── Interactive zone ──────────────────────────────────────────────────── */
/*
   Height = thumb diameter so the thumb is fully visible without clipping.
   Thumb diameter ≈ --bitting-icon-md (2 × --bitting-md).
*/

.bitting-slider-interactive[b-wl8l1qm1nm] {
    position: relative;
    width: 100%;
    height: var(--bitting-icon-md);
    cursor: pointer;
}

/* Read-only mode: track is not interactive and the cursor reflects that.
   Drag handlers are no-ops at the C# level; cursor reflects the same to
   the user. */
.bitting-slider-readonly .bitting-slider-interactive[b-wl8l1qm1nm] {
    cursor: default;
}

.bitting-slider-readonly .bitting-slider-thumb[b-wl8l1qm1nm] {
    cursor: default;
}

/* ── Track bar ─────────────────────────────────────────────────────────── */

.bitting-slider-track[b-wl8l1qm1nm] {
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    height: var(--bitting-sm);
    background: var(--bitting-black-10);
    border-radius: var(--bitting-radius-pill);
    overflow: hidden;
}

.bitting-slider-fill[b-wl8l1qm1nm] {
    height: 100%;
    border-radius: var(--bitting-radius-pill);
    /* Smooth fill during drag without adding perceptible lag */
    transition: width var(--bitting-duration-fast) linear;
}

/* ── Thumb ─────────────────────────────────────────────────────────────── */
/*
   Styled to echo RainbowChart's circle thumb:
     – circular with white border
     – colored fill matching the track accent
     – drop shadow for depth
*/

.bitting-slider-thumb[b-wl8l1qm1nm] {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    width: var(--bitting-icon-md);
    height: var(--bitting-icon-md);
    border-radius: var(--bitting-radius-pill);
    border: var(--bitting-slider-thumb-border) solid var(--bitting-white-85);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--bitting-slider-thumb-gap);
    cursor: grab;
    transition: transform var(--bitting-duration-fast) var(--bitting-ease),
                left var(--bitting-duration-fast) linear;
}

/* Optional lighter variant if the full drop shadow feels too heavy for the thumb. */
.bitting-solid-drop-shadow-lite[b-wl8l1qm1nm] {
    box-shadow:
        0 0 0 var(--bitting-shadow-ring) var(--bitting-muted-gray-80),
        0 var(--bitting-shadow-lift) 0 var(--bitting-shadow-ring) var(--bitting-muted-gray);
}

.bitting-slider-thumb-hover[b-wl8l1qm1nm]::after {
    content: "";
    position: absolute;
    inset: var(--bitting-slider-focus-inset);
    border-radius: var(--bitting-radius-pill);
    box-shadow: 0 0 0 var(--bitting-slider-focus-ring) var(--bitting-white-45);
    opacity: var(--bitting-opacity-hidden);
    transform: scale(var(--bitting-slider-scale-active));
    transition: opacity var(--bitting-duration-fast) var(--bitting-ease),
                transform var(--bitting-duration-fast) var(--bitting-ease);
    pointer-events: none;
}

.bitting-slider-thumb-hover:hover[b-wl8l1qm1nm] {
    transform: translate(-50%, -50%) scale(var(--bitting-slider-scale-focus));
}

.bitting-slider-thumb-hover:hover[b-wl8l1qm1nm]::after {
    opacity: var(--bitting-opacity-visible);
    transform: scale(1);
}

.bitting-slider-interactive:active .bitting-slider-thumb-hover[b-wl8l1qm1nm] {
    transform: translate(-50%, -50%) scale(var(--bitting-slider-scale-hover));
}

@media (prefers-reduced-motion: reduce) {
    .bitting-slider-fill[b-wl8l1qm1nm],
    .bitting-slider-thumb[b-wl8l1qm1nm],
    .bitting-slider-thumb-hover[b-wl8l1qm1nm]::after {
        transition: none;
    }

    .bitting-slider-thumb-hover:hover[b-wl8l1qm1nm],
    .bitting-slider-interactive:active .bitting-slider-thumb-hover[b-wl8l1qm1nm] {
        transform: translate(-50%, -50%);
    }

    .bitting-slider-thumb-hover[b-wl8l1qm1nm]::after,
    .bitting-slider-thumb-hover:hover[b-wl8l1qm1nm]::after {
        transform: none;
    }
}

/* ── Labels zone (above-track stripe) ─────────────────────────────────── */
/*
   One horizontal row immediately above the track holding up to three pieces:
   LowEndLabel (anchored left), MarkerLabel (anchored at MarkerPercent X),
   HighEndLabel (anchored right). Sharing one row keeps the vertical air
   above the track minimal.

   MarkerLabel uses a three-layer nest: zone -> absolutely-positioned anchor
   at the marker X -> small inline label. The anchor sizes to the label so
   the BittingTooltip wrapper inside has a real bounding box to anchor its
   tooltip body against.
*/

.bitting-slider-labels-zone[b-wl8l1qm1nm] {
    position: relative;
    height: var(--bitting-md);
    width: 100%;
}

.bitting-slider-end-label[b-wl8l1qm1nm] {
    color: var(--bitting-gray);
    position: absolute;
    bottom: 0;
    white-space: nowrap;
}

.bitting-slider-end-label-low[b-wl8l1qm1nm] { left: 0; }
.bitting-slider-end-label-high[b-wl8l1qm1nm] { right: 0; }

.bitting-slider-marker-label-anchor[b-wl8l1qm1nm] {
    position: absolute;
    bottom: 0;
    transform: translateX(-50%);
}

.bitting-slider-marker-label[b-wl8l1qm1nm] {
    color: var(--bitting-gray);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* ── Marker tick (decorative, fixed-position threshold indicator) ──────── */
/*
   Optional vertical tick mark on the track at a fixed percentage (e.g. a
   median or threshold indicator). Sits behind the thumb so the thumb can
   pass over it when at the same position. Static; never interactive.
*/

.bitting-slider-marker[b-wl8l1qm1nm] {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    width: var(--bitting-slider-tick-width);
    height: var(--bitting-slider-tick-height);
    background: var(--bitting-black-35);
    border-radius: var(--bitting-radius-pill);
    pointer-events: none;
    z-index: var(--bitting-layer-base);
}

/* ── Grip lines (decorative, mirrors AdamSlider's inner lines) ─────────── */

.bitting-slider-thumb-grip[b-wl8l1qm1nm] {
    display: block;
    width: var(--bitting-slider-minor-tick-width);
    border-radius: var(--bitting-slider-tick-radius);
    background: var(--bitting-white-70);
}

/* Three grips at graduated heights — centre taller than outer two */
.bitting-slider-thumb-grip:nth-child(1)[b-wl8l1qm1nm],
.bitting-slider-thumb-grip:nth-child(3)[b-wl8l1qm1nm] {
    height: var(--bitting-slider-minor-tick-height);
}

.bitting-slider-thumb-grip:nth-child(2)[b-wl8l1qm1nm] {
    height: var(--bitting-sm);
}
/* _content/Bitting/Branding/BittingWordmark.razor.rz.scp.css */
.bitting-wordmark[b-pojxbc9nyf] {
    /* One construction at every approved size. These ratios reproduce the
       Standard mark from the shared phi scale, then let font-size scale the
       complete lockup without changing the pip or clear-space proportions. */
    --bitting-wordmark-gap: calc(1em / (var(--bitting-phi) * 4));
    --bitting-pip-width: calc(1em / (var(--bitting-phi) * var(--bitting-phi) * 2));
    --bitting-pip-height: calc(1em * var(--bitting-icon-multiplier) / (var(--bitting-phi) * var(--bitting-phi)));
    --bitting-pip-radius: 1em;

    display: inline-flex;
    align-items: center;
    column-gap: var(--bitting-wordmark-gap);
    width: fit-content;
    color: var(--bitting-primary);
    font-family: var(--bitting-font-family);
    font-size: var(--bitting-lg);
    font-weight: var(--bitting-font-weight-heavy);
    line-height: var(--bitting-line-height-tight);
    /* Let the heavy letterforms keep their natural rhythm. Compactness comes
       from the pip lockup, not from squeezing the word itself. */
    letter-spacing: var(--bitting-letter-spacing-normal);
    text-decoration: none;
    white-space: nowrap;
}

.bitting-wordmark__text[b-pojxbc9nyf] {
    color: inherit;
}

a.bitting-wordmark[b-pojxbc9nyf] {
    min-height: var(--bitting-target-min);
}

.bitting-wordmark--inverse[b-pojxbc9nyf] {
    color: var(--bitting-white);
}

.bitting-wordmark--display[b-pojxbc9nyf] {
    font-size: var(--bitting-xl);
}

/* A wordmark is a brand mark, not a prose role. The overview hero may therefore
   use the largest icon step without introducing a sixth typography token. */
.bitting-wordmark--hero[b-pojxbc9nyf] {
    font-size: var(--bitting-icon-xl);
}
/* _content/Bitting/Charts/BittingSparkline.razor.rz.scp.css */
/* Positioning context for the end-point marker, which is a real DOM dot laid
   over the stretched SVG rather than an SVG circle. */
.bitting-sparkline[b-uq7piisqko] {
    position: relative;
    display: block;
}

/* A true circle regardless of the SVG's non-uniform scale, centred on the last
   point and sized off the same scale as the line. */
.bitting-sparkline-dot[b-uq7piisqko] {
    position: absolute;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    pointer-events: none;
}
/* _content/Bitting/Charts/Cartesian/BittingCartesianChart.razor.rz.scp.css */
/* _content/Bitting/DropDowns/BittingDropDown.razor.rz.scp.css */
.bitting-drop-menu[b-ig4pyow5qd]
{
    background-color: var(--bitting-surface);
    position: absolute;
    top: 120%;
    overflow-y: auto;
    z-index: var(--bitting-layer-dropdown);
    display: none; /* Hide by default */
}

.bitting-drop-menu.show[b-ig4pyow5qd] {
    display: block; /* Show when expanded */
}

.bitting-drop-menu.dropup[b-ig4pyow5qd] {
    top: auto;
    bottom: 120%;
}

/* RightAligned: anchor the menu to the trigger's right edge so it extends leftward.
   Without this the menu starts at the trigger's left edge and extends rightward — which
   clips inside containers with overflow: auto when the trigger sits near the right edge. */
.bitting-drop-menu.right-aligned[b-ig4pyow5qd] {
    right: 0;
    left: auto;
}
/* _content/Bitting/DropDowns/Menus/BittingSelectableDropDownMenu.razor.rz.scp.css */
.selectable-drop-item[b-ba8pp94sg8] {
    background: var(--bitting-surface);
    cursor: pointer;
}

.selectable-drop-item:hover[b-ba8pp94sg8],
.selectable-drop-item.is-hovering[b-ba8pp94sg8] {
    background: var(--bitting-light);
}
/* _content/Bitting/Feedback/BittingEmptyState.razor.rz.scp.css */
/* Centred column. Generous vertical breathing room so an empty panel reads as
   deliberate rather than as content that failed to load. */
.bitting-empty-state[b-0ueubahusk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: var(--bitting-xs);
    padding: var(--bitting-xl) var(--bitting-md);
    width: 100%;
}

/* The icon sets the tone but must not compete with the headline for attention. */
.bitting-empty-state-icon[b-0ueubahusk] {
    display: flex;
    opacity: var(--bitting-opacity-subtle);
    margin-bottom: var(--bitting-xs);
}

.bitting-empty-state-explanation[b-0ueubahusk] {
    color: var(--bitting-gray);
    /* Roughly one comfortable line of reading before it wraps. */
    max-width: 44ch;
}

.bitting-empty-state-action[b-0ueubahusk] {
    margin-top: var(--bitting-sm);
}
/* _content/Bitting/Guidance/BittingFirstOpenGuide.razor.rz.scp.css */
.guide-backdrop[b-wnxm06ynj0] {
    position: fixed;
    inset: 0;
    opacity: var(--bitting-opacity-scrim);
    z-index: var(--bitting-layer-modal-backdrop);
}

.guide-trigger[b-wnxm06ynj0] {
    display: flex;
    justify-content: flex-end;
    width: fit-content;
}

.guide-dialog[b-wnxm06ynj0] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: var(--bitting-layer-modal);
    /* Wide enough to hold three ~15-word bullets without line-thrash on
       desktop; shrinks on small screens. */
    width: min(var(--bitting-dialog-max-width), calc(var(--bitting-viewport-width) - 2 * var(--bitting-md)));
    max-height: calc(var(--bitting-viewport-height) - 2 * var(--bitting-md));
    overflow-y: auto;
    border-radius: var(--bitting-xs);
    padding: var(--bitting-md);
}

/* Corner overlay rather than a flow row. In flow, the close button reserved a
   full line above the content and read as a band of dead space at the top of
   the dialog. */
.guide-close[b-wnxm06ynj0] {
    position: absolute;
    top: var(--bitting-sm);
    right: var(--bitting-sm);
}

.guide-body[b-wnxm06ynj0] {
    display: flex;
    gap: var(--bitting-md);
    align-items: flex-start;
}

.guide-mark[b-wnxm06ynj0] {
    width: calc(var(--bitting-icon-xl) * 2);
    flex-shrink: 0;
}

.guide-actions[b-wnxm06ynj0] {
    display: flex;
    gap: var(--bitting-sm);
    flex-wrap: wrap;
    align-items: center;
}

.guide-speech[b-wnxm06ynj0] {
    display: flex;
    flex-direction: column;
    gap: var(--bitting-sm);
}

.guide-bullets[b-wnxm06ynj0] {
    margin: 0;
    padding-left: var(--bitting-md);
    display: flex;
    flex-direction: column;
    gap: var(--bitting-xs);
}

#guide-headline:focus[b-wnxm06ynj0] {
    outline: none;
}

@media (max-width: 40em) {
    .guide-body[b-wnxm06ynj0] {
        flex-direction: column;
        align-items: stretch;
    }

    .guide-mark[b-wnxm06ynj0] {
        align-self: center;
    }

    .guide-actions[b-wnxm06ynj0] {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* _content/Bitting/Headers/BittingHeader.razor.rz.scp.css */
.bitting-header__title[b-ie2cjhhwsu] {
    padding-right: var(--bitting-corner-affordance-clearance, 0);
}

/* The corner question sits beside the context row. The main title below it
   keeps the full text measure, so compact tiles wrap at words. */
.bitting-header__title--context[b-ie2cjhhwsu] {
    padding-right: 0;
}

.bitting-header__title--context[b-ie2cjhhwsu]  .bitting-icon-lockup__text > .bitting-text-micro {
    box-sizing: border-box;
    max-width: 100%;
    padding-right: var(--bitting-corner-affordance-clearance, 0);
}
/* _content/Bitting/Headers/BittingHeaderTile.razor.rz.scp.css */
.bitting-header-tile__body[b-olxkbsosb0] {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
}

.bitting-header-tile__content[b-olxkbsosb0] {
    width: 100%;
    min-height: 0;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

.bitting-header-tile__header[b-olxkbsosb0] {
    width: 100%;
    padding-bottom: var(--bitting-qtr-md);
}
/* _content/Bitting/Headers/BittingPipHeader.razor.rz.scp.css */
.bitting-pip-header[b-qeeyjq68ng] {
    width: 100%;
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
}

.bitting-pip-header__title[b-qeeyjq68ng] {
    width: 100%;
    min-width: 0;
    padding-bottom: var(--bitting-qtr-md);
}

.bitting-pip-header__underline[b-qeeyjq68ng] {
    width: 100%;
    min-width: 0;
    padding: 0 var(--bitting-half-md);
}
/* _content/Bitting/IconLockup/BittingIconLockup.razor.rz.scp.css */
.bitting-icon-lockup[b-ztqm2g5uyy] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    max-width: 100%;
}

.bitting-icon-lockup__leading[b-ztqm2g5uyy] {
    display: flex;
    flex: 0 0 auto;
}

.bitting-icon-lockup__text[b-ztqm2g5uyy] {
    display: flex;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
}

.bitting-icon-lockup__text--with-leading[b-ztqm2g5uyy] {
    padding-left: var(--bitting-half-md);
}

.bitting-icon-lockup__text--wrap[b-ztqm2g5uyy] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.bitting-icon-lockup__text--single-line[b-ztqm2g5uyy] {
    white-space: nowrap;
    overflow: hidden;
}

.bitting-icon-lockup__text--single-line > *[b-ztqm2g5uyy] {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* _content/Bitting/Navigation/BittingHorizontalNavigation.razor.rz.scp.css */
/* _content/Bitting/Navigation/BittingPageTableOfContents.razor.rz.scp.css */
/* Page orientation is a Bitting composition: BittingTile owns the panel
   chrome, BittingHeader owns its hierarchy, and BittingPillButton owns the
   compact disclosure. This stylesheet owns only placement and list behavior. */
.bitting-page-table-of-contents[b-jeu9gwpr9i] {
    position: fixed;
    inset-block-start: calc(var(--bitting-icon-xl) * 2);
    inset-inline-end: var(--bitting-lg);
    width: calc(var(--bitting-label-column-max) + var(--bitting-lg));
    z-index: var(--bitting-layer-sticky);
}

.bitting-page-table-of-contents__trigger[b-jeu9gwpr9i] {
    display: none;
}

.bitting-page-table-of-contents[b-jeu9gwpr9i]  .bitting-page-table-of-contents__panel {
    flex-direction: column;
    gap: var(--bitting-sm);
    padding: var(--bitting-md);
}

.bitting-page-table-of-contents__scroll[b-jeu9gwpr9i] {
    width: 100%;
    max-height: calc(var(--bitting-viewport-height) - (var(--bitting-xl) * 2));
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

.bitting-page-table-of-contents[b-jeu9gwpr9i]  .bitting-page-table-of-contents__list {
    display: flex;
    flex-direction: column;
    gap: var(--bitting-xs);
    list-style: none;
    margin: 0;
    padding: 0;
}

.bitting-page-table-of-contents[b-jeu9gwpr9i]  .bitting-page-table-of-contents__list
    .bitting-page-table-of-contents__list {
    margin-block-start: var(--bitting-xs);
    padding-inline-start: var(--bitting-md);
}

/* No link styling lives here at all. BittingPillLink owns every visual decision
   a destination makes, including the current one, which it takes as Active
   rather than something this stylesheet paints over the top. An accent drawn
   along a rounded row's edge renders as the bracket listed in AI-design-tells
   and is forbidden. */

/* The rail fits beside the canonical content shell only above this documented
   breakpoint. Below it, the same content becomes a compact disclosure. */
@media (max-width: 100em) {
    .bitting-page-table-of-contents[b-jeu9gwpr9i] {
        inset-block-start: auto;
        inset-block-end: var(--bitting-md);
        inset-inline-end: var(--bitting-md);
        display: flex;
        flex-direction: column-reverse;
        align-items: flex-end;
        gap: var(--bitting-sm);
        width: min(
            calc(var(--bitting-label-column-max) * 2),
            calc(var(--bitting-viewport-width) - (var(--bitting-md) * 2)));
        z-index: var(--bitting-layer-popover);
    }

    .bitting-page-table-of-contents__trigger[b-jeu9gwpr9i] {
        display: flex;
    }

    .bitting-page-table-of-contents__trigger[b-jeu9gwpr9i]  .bitting-pill-button-content {
        gap: var(--bitting-xs);
    }

    .bitting-page-table-of-contents[b-jeu9gwpr9i]  .bitting-page-table-of-contents__panel {
        width: 100%;
    }

    .bitting-page-table-of-contents[b-jeu9gwpr9i]  .bitting-page-table-of-contents__panel:not(.is-open) {
        display: none !important;
    }

    .bitting-page-table-of-contents__scroll[b-jeu9gwpr9i] {
        max-height: calc(var(--bitting-viewport-height) / var(--bitting-phi));
    }
}
/* _content/Bitting/Navigation/BittingVerticalNavigation.razor.rz.scp.css */
.bitting-vertical-navigation[b-yah867vy7g] {
    position: fixed;
    right: var(--bitting-half-md);
    top: 50%;
    transform: translateY(-50%);
    z-index: var(--bitting-layer-dropdown);
}

.bitting-vertical-navigation__items[b-yah867vy7g] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--bitting-md);
    padding: var(--bitting-md) var(--bitting-qtr-md);
}
/* _content/Bitting/PillButton/BittingPillButton.razor.rz.scp.css */
.bitting-pill-button[b-gfi0auqjzd] {
    border-radius: var(--bitting-pill-radius);
    transition: background-color var(--bitting-duration-slow) var(--bitting-ease-out),
                width var(--bitting-duration-slow) var(--bitting-ease);
}

.bitting-pill-button--flatten-left[b-gfi0auqjzd] {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.bitting-pill-button--flatten-right[b-gfi0auqjzd] {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Keyboard-only focus ring. Outline (not box-shadow) cannot collide with the
   BoxShadowStyle utility classes. */
.bitting-pill-button:focus-visible[b-gfi0auqjzd] {
    outline: var(--bitting-focus-width) solid var(--bitting-focus-ring);
    outline-offset: var(--bitting-focus-offset);
}

.bitting-pill-button-content[b-gfi0auqjzd] {
    font-weight: var(--bitting-font-weight-bold);
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
    .bitting-pill-button[b-gfi0auqjzd] {
        transition: none;
    }
}
/* _content/Bitting/PillButton/BittingPillLink.razor.rz.scp.css */
.bitting-pill-link[b-dyafucq9d5] {
    transition: background-color var(--bitting-duration-fast) var(--bitting-ease),
                opacity var(--bitting-duration-fast) var(--bitting-ease);
    font-weight: var(--bitting-font-weight-heavy);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bitting-pill-link:focus-visible[b-dyafucq9d5] {
    outline: var(--bitting-focus-width) solid var(--bitting-focus-ring);
    outline-offset: var(--bitting-focus-offset);
}

.bitting-pill-link[aria-disabled="true"][b-dyafucq9d5] {
    cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
    .bitting-pill-link[b-dyafucq9d5] {
        transition: none;
    }
}
/* _content/Bitting/PillButton/BittingTogglePillButtonGroup.razor.rz.scp.css */
.bitting-toggle-pill-group[b-izvvzol3f8] {
    max-width: 100%;
    min-width: 0;
    overflow: visible;
}

.bitting-toggle-pill-group__track[b-izvvzol3f8] {
    display: flex;
    justify-content: center;
    min-width: 0;
    max-width: 100%;
}

@media (max-width: 40em) {
    .bitting-toggle-pill-group__track[b-izvvzol3f8] {
        flex-wrap: wrap;
        gap: var(--bitting-sm);
    }

    /* Group edge flattening describes a connected row. Once options wrap,
       each option becomes a complete pill again. */
    .bitting-toggle-pill-group__track[b-izvvzol3f8]  .bitting-pill-button {
        border-radius: var(--bitting-pill-radius);
    }
}
/* _content/Bitting/Primitives/BittingDisclosure.razor.rz.scp.css */
.bitting-disclosure[b-74yytqeodu] {
    width: 100%;
    color: var(--bitting-secondary);
}

.bitting-disclosure > summary[b-74yytqeodu] {
    min-height: var(--bitting-target-min);
    padding-block: var(--bitting-xs);
    cursor: pointer;
}

.bitting-disclosure > summary:hover[b-74yytqeodu],
.bitting-disclosure > summary:active[b-74yytqeodu] {
    color: var(--bitting-primary);
}

.bitting-disclosure > summary:focus-visible[b-74yytqeodu] {
    outline: var(--bitting-focus-width) solid var(--bitting-focus-ring);
    outline-offset: var(--bitting-focus-offset);
}

.bitting-disclosure__content[b-74yytqeodu] {
    padding-block: var(--bitting-sm) var(--bitting-md);
}
/* _content/Bitting/Primitives/BittingPip.razor.rz.scp.css */
.bitting-pip[b-122wc4xetz] {
    display: block;
    width: var(--bitting-pip-width, var(--bitting-pip-default-width));
    height: var(--bitting-pip-height, var(--bitting-pip-default-height));
    border-radius: var(--bitting-pip-radius, var(--bitting-pip-default-radius));
    opacity: var(--bitting-pip-opacity);
    flex: 0 0 auto;
}
/* _content/Bitting/Primitives/BittingRenderVeil.razor.rz.scp.css */
.bitting-render-veil-overlay[b-qz7t09dswk] {
    position: absolute;
    inset: 0;
    z-index: var(--bitting-layer-modal);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, color-mix(in srgb, var(--bitting-surface) 98%, transparent) 0%, color-mix(in srgb, var(--bitting-light) 98%, transparent) 100%);
    backdrop-filter: blur(var(--bitting-md));
}

.bitting-render-veil-content[b-qz7t09dswk] {
    flex-direction: column;
    gap: var(--bitting-md);
}

.bitting-render-veil-icon[b-qz7t09dswk] {
    margin: 0;
    text-align: center;
    animation: bitting-render-veil-fade-in-scale-b-qz7t09dswk var(--bitting-duration-slow) var(--bitting-ease-out);
}

.bitting-render-veil-title[b-qz7t09dswk] {
    text-align: center;
    margin-bottom: calc(var(--bitting-half-md) * -1);
    animation: bitting-render-veil-fade-in-scale-b-qz7t09dswk var(--bitting-duration-slow) var(--bitting-ease-out);
}

.bitting-render-veil-message[b-qz7t09dswk] {
    text-align: center;
    animation: bitting-render-veil-fade-in-b-qz7t09dswk var(--bitting-duration) var(--bitting-ease-out);
}

.bitting-render-veil-spinner[b-qz7t09dswk] {
    margin: 0;
    text-align: center;
    animation: bitting-render-veil-fade-in-scale-b-qz7t09dswk var(--bitting-duration-slow) var(--bitting-ease-out);
}

.bitting-render-veil-spinner-icon[b-qz7t09dswk] {
    font-size: var(--bitting-icon-lg);
}

.bitting-render-veil-progress-track[b-qz7t09dswk] {
    width: calc(var(--bitting-md) * 20);
    max-width: var(--bitting-overlay-viewport-width);
    height: var(--bitting-qtr-md);
    background: var(--bitting-muted-gray);
    border-radius: var(--bitting-qtr-md);
    overflow: hidden;
    opacity: var(--bitting-opacity-hidden);
    animation: bitting-render-veil-fade-in-b-qz7t09dswk var(--bitting-duration) var(--bitting-ease-out) var(--bitting-duration-slow) forwards;
}

.bitting-render-veil-progress-fill[b-qz7t09dswk] {
    height: 100%;
    width: 0;
    border-radius: inherit;
    animation-name: bitting-render-veil-progress-fill-b-qz7t09dswk;
    animation-timing-function: var(--bitting-ease-out);
    animation-fill-mode: forwards;
}

@keyframes bitting-render-veil-progress-fill-b-qz7t09dswk {
    from {
        width: 0;
    }

    to {
        width: 95%;
    }
}

.bitting-render-veil-error[b-qz7t09dswk] {
    max-width: min(var(--bitting-overlay-content-max-width), var(--bitting-overlay-viewport-width));
    margin-top: var(--bitting-lg);
    animation: bitting-render-veil-fade-in-slide-up-b-qz7t09dswk var(--bitting-duration-slow) var(--bitting-ease-out);
}

@keyframes bitting-render-veil-fade-in-scale-b-qz7t09dswk {
    from {
        opacity: var(--bitting-opacity-hidden);
        transform: scale(var(--bitting-motion-scale-dismissed));
    }

    to {
        opacity: var(--bitting-opacity-visible);
        transform: scale(1);
    }
}

@keyframes bitting-render-veil-fade-in-b-qz7t09dswk {
    from {
        opacity: var(--bitting-opacity-hidden);
    }

    to {
        opacity: var(--bitting-opacity-visible);
    }
}

@keyframes bitting-render-veil-fade-in-slide-up-b-qz7t09dswk {
    from {
        opacity: var(--bitting-opacity-hidden);
        transform: translateY(var(--bitting-lg));
    }

    to {
        opacity: var(--bitting-opacity-visible);
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .bitting-render-veil-icon[b-qz7t09dswk],
    .bitting-render-veil-title[b-qz7t09dswk],
    .bitting-render-veil-message[b-qz7t09dswk],
    .bitting-render-veil-spinner[b-qz7t09dswk],
    .bitting-render-veil-error[b-qz7t09dswk],
    .bitting-render-veil-progress-track[b-qz7t09dswk] {
        animation: none;
        opacity: 1;
    }

    .bitting-render-veil-progress-fill[b-qz7t09dswk] {
        animation: none;
        width: 50%;
    }
}
/* _content/Bitting/Primitives/BittingScrollFader.razor.rz.scp.css */
/*
    BittingScrollFader: wrapper + scroll area + four edge fade overlays.
    Border-radius is applied inline (parameterised). Overflow on both axes is
    auto: vertical scroll engages only when MaxHeight is set by the consumer.
*/

.bitting-scroll-fader-wrapper[b-p3nlpfhv5l] {
    --fade-shadow: var(--bitting-scroll-fade);
    position: relative;
    width: 100%;
    overflow: visible;
}

.bitting-scroll-fader-area[b-p3nlpfhv5l] {
    overflow: auto;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    /* Inherit the wrapper's height so percentage-height children (e.g. a grid that wants to
       distribute rows evenly across available space) have a definite reference. Resolves to
       `auto` when the wrapper itself has no explicit height, no impact on consumers that
       leave Height at its default. */
    height: 100%;
}

.bitting-scroll-fader-overlay[b-p3nlpfhv5l] {
    position: absolute;
    z-index: var(--bitting-layer-raised);
    pointer-events: none;
}

/* Vertical strips (left/right) span the inset-bounded vertical area so they
   don't extend into sticky top/bottom rows. Vertical fades own the corners.
   z-index 100 places fade overlays above bubble cells (z=3) and sticky cells
   (z=5,6) in consumers. Shared with the z-ladder in
   BittingTripStrip.razor.css; if one moves, the other must too. */
.bitting-scroll-fader-overlay-left[b-p3nlpfhv5l],
.bitting-scroll-fader-overlay-right[b-p3nlpfhv5l] {
    top: var(--fade-inset-top, 0);
    bottom: var(--fade-inset-bottom, 0);
    width: var(--bitting-icon-md);
}

/* Horizontal strips (top/bottom) shortened on each end by one fade-thickness
   so they meet the vertical fades without overlapping at the corners. */

.bitting-scroll-fader-overlay-top[b-p3nlpfhv5l],
.bitting-scroll-fader-overlay-bottom[b-p3nlpfhv5l] {
    left: calc(var(--fade-inset-left, 0) + var(--bitting-icon-md));
    right: calc(var(--fade-inset-right, 0) + var(--bitting-icon-md));
    height: var(--bitting-icon-md);
}

.bitting-scroll-fader-overlay-left[b-p3nlpfhv5l] {
    left: var(--fade-inset-left, 0);
    background: linear-gradient(to right, var(--fade-shadow), transparent);
}

.bitting-scroll-fader-overlay-right[b-p3nlpfhv5l] {
    right: var(--fade-inset-right, 0);
    background: linear-gradient(to left, var(--fade-shadow), transparent);
}

.bitting-scroll-fader-overlay-top[b-p3nlpfhv5l] {
    top: var(--fade-inset-top, 0);
    background: linear-gradient(to bottom, var(--fade-shadow), transparent);
}

.bitting-scroll-fader-overlay-bottom[b-p3nlpfhv5l] {
    bottom: var(--fade-inset-bottom, 0);
    background: linear-gradient(to top, var(--fade-shadow), transparent);
}
/* _content/Bitting/Primitives/BittingSlide.razor.rz.scp.css */
.bitting-slide[b-gkchv6xgqo] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--bitting-sm);
    align-items: center;
    justify-content: center;
    container-type: inline-size;
}

.bitting-slide__top[b-gkchv6xgqo],
.bitting-slide__bottom[b-gkchv6xgqo] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--bitting-sm);
    padding: 0;
    margin: 0;
}

.bitting-slide__panels[b-gkchv6xgqo] {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    padding: 0;
    margin: 0 calc(-1 * var(--bitting-sm) / 2);
}

.bitting-slide__panel[b-gkchv6xgqo] {
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: var(--bitting-sm);
    padding: calc(var(--bitting-sm) / 2);
    margin: 0;
}

@media (min-width: 75em) {
    .bitting-slide__panel[b-gkchv6xgqo] { width: var(--bitting-slide-panel-basis); }
}
/* _content/Bitting/Printing/BittingPrintButton.razor.rz.scp.css */
.bitting-print-action[b-9jz07wq7tx] {
    display: inline-flex;
}

[b-9jz07wq7tx] .bitting-render-veil-overlay {
    position: fixed;
}
/* _content/Bitting/Rainbow/BittingRainbowScore.razor.rz.scp.css */
.bitting-rainbow-score-rating[b-8pmyd7vf23] {
    /* The value is visually translated down by one quarter-step to sit in the
       arc. A half-step flow gap therefore leaves one visible quarter-step
       between its rendered box and the qualitative rating. */
    margin-top: var(--bitting-half-md);
}
/* _content/Bitting/StepStrip/BittingStepStrip.razor.rz.scp.css */
/* The group only breaks its row below the compact breakpoint (40rem), which a
   seven-step strip at Large, roughly 62rem wide, overflows long before. At and
   below the 64rem breakpoint the strip's options wrap as complete, gapped
   pills, the same shape the group gives every option once it wraps, so a
   tablet sees two or three short rows rather than a strip running off the
   edge. A documented breakpoint rather than a container query: the token
   discipline tests hold authored queries to the documented set. */
@media (max-width: 64em) {
    .bitting-step-strip[b-e2kboz69ga]  .bitting-toggle-pill-group__track {
        flex-wrap: wrap;
        gap: var(--bitting-sm);
    }

    .bitting-step-strip[b-e2kboz69ga]  .bitting-toggle-pill-group__track .bitting-pill-button {
        border-radius: var(--bitting-pill-radius);
    }
}
/* _content/Bitting/Tables/BittingSummaryTable.razor.rz.scp.css */
/*
 * Sortable headers sit inside the scroll region, which clips anything drawn
 * outside it, so their ring is inset. The region's own ring is the shared one
 * in bitting.css: it sits outside the region, where the sticky header and
 * grouping column cannot paint over it.
 */
th[tabindex]:focus-visible[b-2bbxsdozhy] {
    outline: var(--bitting-focus-width) solid var(--bitting-focus-ring);
    outline-offset: calc(-1 * var(--bitting-focus-width));
}

/*
 * The sticky grouping <td> sets its own opaque background so other cells don't
 * bleed through it when the table scrolls horizontally. That overrides the
 * <tr>'s bitting-hover background, so re-assert the muted-gray hover on the
 * first cell to keep the whole row highlighting as one unit.
 */
tr.bitting-hover > td:first-child[b-2bbxsdozhy] {
    transition: background-color var(--bitting-duration-fast) var(--bitting-ease);
}

tr.bitting-hover:hover > td:first-child[b-2bbxsdozhy] {
    background-color: var(--bitting-muted-gray) !important;
}

/* `cursor` is inheritable in spec but browsers don't always cascade it from <tr>
 * to <td> when the cell has its own block-level descendants (e.g. the pct pill's
 * nested divs). Force pointer on every cell of an interactive row. */
tr.bitting-hover[b-2bbxsdozhy],
tr.bitting-hover > td[b-2bbxsdozhy],
tr.bitting-hover > td *[b-2bbxsdozhy] {
    cursor: pointer;
}


@media (prefers-reduced-motion: reduce) {
    tr.bitting-hover > td:first-child[b-2bbxsdozhy] {
        transition: none;
    }
}
/* _content/Bitting/Tiles/BittingTile.razor.rz.scp.css */
.bitting-tile[b-p7v6jvuxsc] {
    padding: var(--bitting-tile-padding);
}

.bitting-tile.bitting-tile--flush[b-p7v6jvuxsc] {
    padding: 0;
}

/* Screenshot button: hidden until the tile is hovered/focused */
.bitting-screenshot-btn[b-p7v6jvuxsc] {
    position: absolute;
    bottom: var(--bitting-xs);
    left: var(--bitting-xs);
    z-index: var(--bitting-layer-affordance);
    opacity: var(--bitting-opacity-hidden);
    transition: opacity var(--bitting-duration-fast) var(--bitting-ease-in-out);
}

.bitting-tile:hover .bitting-screenshot-btn[b-p7v6jvuxsc],
.bitting-tile:focus-within .bitting-screenshot-btn[b-p7v6jvuxsc] {
    opacity: var(--bitting-opacity-visible);
}

/* Show capture affordance on touch devices (no hover state). */
@media (hover: none) and (pointer: coarse) {
    .bitting-tile .bitting-screenshot-btn[b-p7v6jvuxsc] {
        opacity: var(--bitting-opacity-visible);
    }
}

@media (prefers-reduced-motion: reduce) {
    .bitting-screenshot-btn[b-p7v6jvuxsc] {
        transition: none;
    }
}
/* _content/Bitting/Tooltip/BittingCornerQuestionTooltip.razor.rz.scp.css */
/* One spatial contract for explanatory affordances: the accessible target sits
   inside the containing block's top-right curve, while its small glyph remains
   visually snug to the corner. The containing block must be position: relative. */
.bitting-corner-question-tooltip[b-dzrxz90em6] {
    position: absolute;
    top: var(--bitting-qtr-md);
    right: var(--bitting-qtr-md);
    z-index: var(--bitting-layer-affordance);
}
/* _content/Bitting/Tooltip/BittingTooltip.razor.rz.scp.css */
.bitting-tooltip-container[b-sj8mojz6qc] {
    position: relative;
    overflow: visible;
    display: inline-block;
}

.bitting-tooltip[b-sj8mojz6qc] {
    display: none;
    /* A Bitting token, not Bootstrap's --bs-secondary. That variable is a host
       dependency leaking into the library, and white on it measures 3.9:1 --
       below the 4.5:1 floor for the tooltip's small bold text. The dark role
       clears it in both themes (13.9:1 light, 19.2:1 dark). */
    background-color: var(--bitting-dark) !important;
    color: var(--bitting-white);
    text-align: center;
    position: absolute;
    z-index: var(--bitting-layer-tooltip);
    bottom: 125%;
    left: 50%;
    width: max-content;
    /* Default cap. Short tooltips render at natural width (the `width:
       max-content` rule above); long tooltips wrap at this cap. md * 16
       lands at ~160-220px - a touch narrower than common design-system
       defaults (Mantine 220px, Bootstrap 200px). Two-sentence captions
       (the documented upper bound for tooltip text) wrap to ~2-3 lines.
       Per-instance overrides via the MaxWidth parameter on BittingTooltip. */
    max-width: min(var(--bitting-tooltip-max-width), calc(var(--bitting-viewport-width) - (var(--bitting-tooltip-offset) * 2)));
    transform: translateX(-50%);
    opacity: var(--bitting-tooltip-opacity);
    border-radius: var(--bitting-radius-sm);
    /* pre-line so callers can chunk tooltip text by inserting \n in the
       Text string: KPI name on one line, value on the next, etc. Whitespace
       (single spaces) still collapses; only newlines force a break. */
    white-space: pre-line;
}

.bitting-tooltip-container:hover .bitting-tooltip[b-sj8mojz6qc],
.bitting-tooltip-container:focus-within .bitting-tooltip[b-sj8mojz6qc] {
    display: block;
}

/* EscapeClipping mode: same visual styling as .bitting-tooltip but positioned via position:fixed
   (so overflow ancestors don't clip it) with top/left/transform set inline by JS on hover. The
   :hover CSS rule above intentionally doesn't target this class — visibility is driven by
   bittingTooltipFixed.attach in bitting.js. */
.bitting-tooltip-fixed[b-sj8mojz6qc] {
    visibility: hidden;
    /* See .bitting-tooltip above for the token and contrast reasoning. */
    background-color: var(--bitting-dark) !important;
    color: var(--bitting-white);
    text-align: center;
    position: fixed;
    z-index: var(--bitting-layer-tooltip);
    top: 0;
    left: 0;
    width: max-content;
    /* Same default cap as .bitting-tooltip - both modes share one source of
       truth so a tooltip's width doesn't change when a caller flips
       EscapeClipping on or off. */
    max-width: min(var(--bitting-tooltip-max-width), calc(var(--bitting-viewport-width) - (var(--bitting-tooltip-offset) * 2)));
    opacity: var(--bitting-tooltip-opacity);
    border-radius: var(--bitting-radius-sm);
    pointer-events: none;
    /* Carries --bitting-tooltip-offset to bitting.js as a resolved length,
       because a custom property reads back unresolved. bittingTooltipFixed
       keeps the body at least this far inside the viewport. scroll-margin
       only matters when something scrolls this element into view, and nothing
       focuses or targets a tooltip body. */
    scroll-margin: var(--bitting-tooltip-offset);
    /* Same line-break-honoring rule as .bitting-tooltip; needed here too
       since EscapeClipping consumers (including the Compliance pip
       tooltip) format their text the same way. */
    white-space: pre-line;
}
