/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/ui/components/Tooltip/Tooltip.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*
 * Tooltip bubble — fixed-position, portal-rendered.
 *
 * Position is applied via CSS custom properties injected through inline style:
 *   --tooltip-x / --tooltip-y   translate offset from top-left
 *   --tooltip-arrow-offset       perpendicular position of the arrow along the edge
 *
 * The .visible class is added after the first layout measurement so the fade-in
 * only plays once position is known (prevents flash at 0,0).
 *
 * No !important, no hardcoded colours, no Tailwind utilities.
 */

/* ── Bubble ─────────────────────────────────────────────────────────────────── */

.Tooltip_bubble__v9jGN {
    position: fixed;
    top: 0;
    left: 0;
    --tooltip-x: 0px;
    --tooltip-y: 0px;
    --tooltip-arrow-offset: 50%;
    transform: translate3d(var(--tooltip-x), var(--tooltip-y), 0);
    z-index: var(--tooltip-z-index);

    padding: var(--space-xs) var(--space-m);

    background: var(--bg-body);
    color: var(--text-bright);
    border: 1px solid var(--overlay-5);
    border-radius: var(--tooltip-radius);
    box-shadow: var(--shadow-tooltip);

    font-size: var(--text-s);
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0.01em;
    max-width: 240px;
    word-wrap: break-word;

    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    opacity: 0;
    transition: opacity 80ms ease;
}

.Tooltip_visible__GNYFm {
    opacity: 1;
}

.Tooltip_bubbleWide__yuUA9 {
    width: 280px;
    max-width: calc(100vw - 16px);
}

/* ── Arrow ──────────────────────────────────────────────────────────────────── */
/*
 * 6×6px square, rotated 45° to form a diamond ◇.
 * Positioned so one corner pokes outside the bubble edge.
 * Background matches the bubble; border on the two outward-facing sides
 * creates the illusion of a 1px outlined triangle peeking out.
 */

.Tooltip_arrow__ikv38 {
    position: absolute;
    width: 6px;
    height: 6px;
    background: var(--bg-body);
    transform: rotate(45deg);
}

/* Tooltip above trigger → arrow at bottom, pointing down */
.Tooltip_bubble__v9jGN[data-side='top'] .Tooltip_arrow__ikv38 {
    bottom: -3px;
    left: calc(var(--tooltip-arrow-offset) - 3px);
    border-right: 1px solid var(--overlay-5);
    border-bottom: 1px solid var(--overlay-5);
}

/* Tooltip below trigger → arrow at top, pointing up */
.Tooltip_bubble__v9jGN[data-side='bottom'] .Tooltip_arrow__ikv38 {
    top: -3px;
    left: calc(var(--tooltip-arrow-offset) - 3px);
    border-top: 1px solid var(--overlay-5);
    border-left: 1px solid var(--overlay-5);
}

/* Tooltip left of trigger → arrow at right edge, pointing right */
.Tooltip_bubble__v9jGN[data-side='left'] .Tooltip_arrow__ikv38 {
    right: -3px;
    top: calc(var(--tooltip-arrow-offset) - 3px);
    border-top: 1px solid var(--overlay-5);
    border-right: 1px solid var(--overlay-5);
}

/* Tooltip right of trigger → arrow at left edge, pointing left */
.Tooltip_bubble__v9jGN[data-side='right'] .Tooltip_arrow__ikv38 {
    left: -3px;
    top: calc(var(--tooltip-arrow-offset) - 3px);
    border-bottom: 1px solid var(--overlay-5);
    border-left: 1px solid var(--overlay-5);
}

/* ── Reduced motion ─────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .Tooltip_bubble__v9jGN {
        transition: none;
    }
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/ui/components/Button/Button.module.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Button — shared action button primitive (Task #462 / Task #458 Phase 2)
 * Achromatic palette only (Guideline #376).
 * No !important, no Tailwind, no inline styles (Constraints #402/#403).
 * All colours via direct global design tokens tokens.
 */

/* ── Base ─────────────────────────────────────────────────────────────────── */
.Button_btn__P3nWD {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    /* Default radius for size-sm/md/lg — matches `--input-radius` so buttons
     * paired with Input/Select/SearchBar share corners. The smaller toolbar
     * sizes (`.size-micro`, `.size-xs`) override this below. */
    border-radius: var(--input-radius);
    font-family: inherit;
    font-size: var(--text-s);
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    transition:
        color 150ms ease,
        background-color 150ms ease,
        border-color 150ms ease,
        opacity 150ms ease;
    /* Prevent text-overflow in tight toolbars */
    flex-shrink: 0;
}

.Button_btn__P3nWD:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
}

.Button_btn__P3nWD:disabled {
    opacity: 0.38;
    cursor: default;
    pointer-events: none;
}

/* aria-disabled: visually disabled but pointer-events allowed so tooltips fire on hover */
.Button_btn__P3nWD[aria-disabled="true"] {
    opacity: 0.38;
    cursor: default;
}

/* ── Sizes ────────────────────────────────────────────────────────────────── */
.Button_size-micro__BBrrF {
    height: 18px;
    padding: 0 var(--space-3xs);
    gap: var(--space-4xs);
    font-size: var(--text-2xs);
    border-radius: 6px;
}

.Button_size-xs__qMfeK {
    height: 22px;
    padding: 0 var(--space-xs);
    border-radius: 8px;
    gap: var(--space-3xs);
    font-size: var(--text-2xs);
}

.Button_size-sm__sa2LG {
    height: 26px;
    padding: 0 var(--space-s);
    gap: var(--space-3xs);
    font-size: var(--text-xs);
}

.Button_size-md__OPTfK {
    height: 32px;
    padding: var(--space-xs) var(--space-xl);
    gap: var(--space-2xs);
    font-size: var(--text-s);
}

.Button_size-lg__3_NeF {
    height: 44px;
    padding: 0 var(--space-2xl);
    gap: var(--space-xs);
    font-size: var(--text-m);
}

/* ── Icon-only (square) ───────────────────────────────────────────────────── */
.Button_iconOnly__pnhFt {
    padding: 0;
}
.Button_size-micro__BBrrF.Button_iconOnly__pnhFt {
    width: 18px;
}
.Button_size-xs__qMfeK.Button_iconOnly__pnhFt {
    width: 26px;
}
.Button_size-sm__sa2LG.Button_iconOnly__pnhFt {
    width: 28px;
}
.Button_size-md__OPTfK.Button_iconOnly__pnhFt {
    width: 32px;
}
.Button_size-lg__3_NeF.Button_iconOnly__pnhFt {
    width: 44px;
}

.Button_fullWidth__DS_mi {
    width: 100%;
}

.Button_align-center__WjXSe {
    justify-content: center;
    text-align: center;
}

.Button_align-start__Y73pr {
    justify-content: flex-start;
    text-align: left;
}

.Button_align-between__pt_bY {
    justify-content: space-between;
    text-align: left;
}

.Button_shape-pill__ZVXAv {
    border-radius: 999px;
}

.Button_shape-flush__yNxKd {
    border-radius: 0;
}

.Button_numeric__iV6S0 {
    font-feature-settings: "tnum";
    font-variant-numeric: tabular-nums;
}

.Button_menuItem__h0TKq {
    width: 100%;
    height: auto;
    min-height: 28px;
    padding: var(--space-xs) var(--space-l);
    gap: var(--space-s);
    border-radius: 0;
    justify-content: flex-start;
    text-align: left;
    font-size: var(--text-s);
    font-weight: 500;
}

/* ── Variant: ghost ───────────────────────────────────────────────────────── */
.Button_variant-ghost__fIidJ {
    background: transparent;
    color: var(--text-muted);
}

.Button_variant-ghost__fIidJ:hover {
    background: var(--overlay-10);
    color: var(--text);
}

.Button_variant-ghost__fIidJ:active {
    background: var(--overlay-20);
    color: var(--text);
}

/* dangerHover: destructive icon affordance — brighten the icon on hover, no
   background box. Pills carry their own tint, so a colored box/cross reads
   poorly; a brighter foreground is the clearest affordance. */
.Button_variant-ghost__fIidJ[data-danger-hover="true"]:hover,
.Button_variant-ghost__fIidJ[data-danger-hover="true"]:active {
    background: transparent;
    color: var(--text);
}

/* tone="danger" on a ghost button: a constant slight red tint (foreground
   only, no box) so inline destructive controls — e.g. the remove-scale trash —
   read as dangerous at rest, then take a soft tinted background on hover. */
.Button_variant-ghost__fIidJ[data-tone="danger"] {
    color: var(--danger);
}

.Button_variant-ghost__fIidJ[data-tone="danger"]:hover,
.Button_variant-ghost__fIidJ[data-tone="danger"]:active {
    background: var(--danger-10);
    color: var(--danger-light);
}

/* ── Variant: primary ─────────────────────────────────────────────────────── */
/* The one visually loud button: a high-contrast inverse pill (white in the
   dark theme, ink in the light theme) so the screen's key action reads
   instantly. */
.Button_variant-primary__6g_n0 {
    background: var(--btn-primary-bg);
    color: var(--btn-primary-fg);
}

.Button_variant-primary__6g_n0:hover {
    background: var(--btn-primary-bg-hover);
}

.Button_variant-primary__6g_n0:active {
    background: var(--btn-primary-bg-active);
}

/* ── Variant: secondary ───────────────────────────────────────────────────── */
.Button_variant-secondary__6F3AI {
    background: var(--overlay-10);
    color: var(--text-muted);
}

.Button_variant-secondary__6F3AI:hover {
    background: var(--overlay-20);
    color: var(--text);
}

.Button_variant-secondary__6F3AI:active {
    background: var(--overlay-30);
}

.Button_variant-secondary__6F3AI[data-active="true"],
.Button_variant-secondary__6F3AI[aria-pressed="true"] {
    background: var(--overlay-20);
    color: var(--text);
}

.Button_variant-secondary__6F3AI[data-tone="danger"] {
    background: var(--danger-10);
    color: var(--danger);
}

.Button_variant-secondary__6F3AI[data-tone="danger"]:hover {
    background: var(--danger-10);
    color: var(--danger-light);
}

/* ── Variant: destructive ─────────────────────────────────────────────────── */
.Button_variant-destructive__F566d {
    background: var(--danger-10);
    color: var(--danger);
}

.Button_variant-destructive__F566d:hover {
    opacity: 0.9;
}

.Button_variant-destructive__F566d:active {
    opacity: 0.8;
}

/* ── Navigation item chrome ──────────────────────────────────────────────── */
.Button_navItem__oP_QL {
    width: 100%;
    min-height: 44px;
    height: auto;
    padding: 0 var(--space-2xl);
    gap: var(--space-m);
    border: 0;
    border-left: 2px solid transparent;
    border-radius: 0;
    justify-content: flex-start;
    font-size: var(--text-m);
    font-weight: 500;
    text-align: left;
    color: var(--text-subtle);
}

.Button_navItem__oP_QL:hover {
    color: var(--text-muted);
    background: var(--overlay-5);
}

.Button_navItem__oP_QL[data-active="true"] {
    background: var(--overlay-5);
    border-left-color: var(--text);
    color: var(--text);
}

.Button_busySpinner__S9uQE {
    display: inline-flex;
    animation: Button_btnBusySpin__OQe3_ 0.9s linear infinite;
}

@keyframes Button_btnBusySpin__OQe3_ {
    to {
        transform: rotate(360deg);
    }
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/ui/components/Toast/Toast.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* ── Toast stack ─────────────────────────────────────────────────────────── */
/*
 * Bottom-right floating stack — a column of toasts that grows upward.
 * Pointer events are forwarded so close buttons & actions remain clickable;
 * the stack itself doesn't capture clicks behind it because the toasts are
 * the only interactive elements.
 *
 * --toast-z-index sits above every modal layer (incl. the spotlight backdrop
 * at 9000 — a toast fired while a dialog is open must stay visible) and below
 * the tooltip layer (10001) — toasts are non-blocking surfaces.
 */

.Toast_stack__SHk9n {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: var(--toast-z-index);
    display: flex;
    flex-direction: column-reverse;
    gap: var(--space-s);
    max-width: min(420px, calc(100vw - 32px));
    pointer-events: none;
}

/* ── Toast card ──────────────────────────────────────────────────────────── */

.Toast_toast__ekcOd {
    pointer-events: auto;
    display: grid;
    grid-template-columns: 16px 1fr auto;
    align-items: flex-start;
    grid-gap: var(--space-m);
    gap: var(--space-m);
    padding: var(--space-m) var(--space-l);
    background: var(--bg-surface);
    border: 1px solid var(--overlay-10);
    border-radius: var(--panel-radius);
    box-shadow: var(--shadow-panel);
    -webkit-backdrop-filter: blur(var(--panel-blur));
            backdrop-filter: blur(var(--panel-blur));
    color: var(--text);
    font-size: var(--text-s);
    line-height: 1.4;
    animation: Toast_toast-enter__zWrN1 140ms ease-out;
}

@keyframes Toast_toast-enter__zWrN1 {
    from {
        opacity: 0;
        transform: translateY(6px) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* ── Per-kind accents ────────────────────────────────────────────────────── */
/*
 * The card itself stays achromatic — only the leading icon and a 1px tinted
 * left edge carry the semantic colour. Aligned with the achromatic-color-policy
 * gate (Constraint #376): semantic state tokens are the only chromatic accents
 * permitted on editor chrome.
 */

.Toast_kind-error__S5ZWY {
    border-left: 2px solid var(--danger);
}
.Toast_kind-error__S5ZWY .Toast_icon__fza8W {
    color: var(--danger-light);
}

.Toast_kind-warning____LvK {
    border-left: 2px solid var(--warning);
}
.Toast_kind-warning____LvK .Toast_icon__fza8W {
    color: var(--warning);
}

.Toast_kind-success__hC6_D {
    border-left: 2px solid var(--success);
}
.Toast_kind-success__hC6_D .Toast_icon__fza8W {
    color: var(--success);
}

.Toast_kind-info__5W0dS {
    border-left: 2px solid var(--text-subtle);
}
.Toast_kind-info__5W0dS .Toast_icon__fza8W {
    color: var(--text-muted);
}

/* ── Slots ───────────────────────────────────────────────────────────────── */

.Toast_icon__fza8W {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    margin-top: var(--space-px);
}

.Toast_content__WBqw_ {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-4xs);
}

.Toast_title__P_mSg {
    margin: 0;
    color: var(--text-bright);
    font-size: var(--text-s);
    font-weight: 500;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.Toast_body__WO7nM {
    margin: 0;
    color: var(--text-muted);
    font-size: var(--text-xs);
    line-height: 1.45;
    overflow-wrap: anywhere;
    /* Cap to ~3 lines so a noisy stack trace can't fill the viewport. */
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.Toast_location__tbwno {
    margin: var(--space-4xs) 0 0;
    color: var(--text-subtle);
    font-family:
        ui-monospace,
        SFMono-Regular,
        SF Mono,
        Menlo,
        Consolas,
        "Liberation Mono",
        monospace;
    font-size: var(--text-2xs);
    letter-spacing: 0.01em;
}

.Toast_actions__PjZ67 {
    display: inline-flex;
    align-items: center;
    gap: var(--space-3xs);
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/ui/components/ErrorBoundary/ErrorBoundary.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* ── Fallback panel ──────────────────────────────────────────────────────── */
/*
 * Boundaries in dev mode render a panel that shows the failed location,
 * error chain, component stack, and reset/copy actions. In prod the same
 * panel appears with shortened copy.
 *
 * Tokens:
 *   - achromatic surface (panel-bg / panel-border)
 *   - --danger* for the leading icon and title accent
 *   - --radius for outer corners (matches button + section radii)
 */

.ErrorBoundary_fallback__sGLoB {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: var(--space-l);
    padding: var(--space-2xl) var(--space-3xl);
    background: var(--bg-surface);
    border: 1px solid var(--overlay-10);
    border-left: 3px solid var(--danger);
    border-radius: var(--radius);
    color: var(--text);
    font-size: var(--text-s);
    line-height: 1.4;
    max-width: 720px;
    margin: var(--space-2xl) auto;
    overflow: hidden;
}

.ErrorBoundary_head__aoEML {
    display: flex;
    gap: var(--space-m);
    align-items: flex-start;
}

.ErrorBoundary_icon__qbOBQ {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--danger-light);
}

.ErrorBoundary_headText__mNh3B {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-3xs);
}

.ErrorBoundary_title__qsqeK {
    margin: 0;
    color: var(--text-bright);
    font-size: var(--text-l);
    font-weight: 600;
    line-height: 1.3;
}

.ErrorBoundary_message__979NO {
    margin: 0;
    color: var(--text-muted);
    font-size: var(--text-s);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.ErrorBoundary_message__979NO code {
    font-family:
        ui-monospace,
        SFMono-Regular,
        SF Mono,
        Menlo,
        Consolas,
        "Liberation Mono",
        monospace;
    font-size: var(--text-xs);
    color: var(--text-bright);
    padding: var(--space-px) var(--space-3xs);
    background: var(--bg-surface);
    border-radius: var(--radius-sm);
}

/* ── Cause chain ─────────────────────────────────────────────────────────── */

.ErrorBoundary_causeChain__os9_g {
    margin: 0;
    padding-left: var(--space-3xl);
    color: var(--text-muted);
    font-size: var(--text-xs);
    line-height: 1.45;
}

.ErrorBoundary_causeChain__os9_g li {
    margin-bottom: var(--space-4xs);
    overflow-wrap: anywhere;
}

.ErrorBoundary_causeChain__os9_g code {
    font-family:
        ui-monospace,
        SFMono-Regular,
        SF Mono,
        Menlo,
        Consolas,
        "Liberation Mono",
        monospace;
    color: var(--text);
}

/* ── Component stack ─────────────────────────────────────────────────────── */

.ErrorBoundary_details__Eugaa {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: var(--space-s) var(--space-m);
    color: var(--text-muted);
    font-size: var(--text-xs);
}

.ErrorBoundary_details__Eugaa summary {
    cursor: pointer;
    color: var(--text);
    font-weight: 500;
}

.ErrorBoundary_details__Eugaa summary:focus-visible {
    outline: 2px solid var(--overlay);
    outline-offset: 2px;
}

.ErrorBoundary_stack___5uri {
    margin: var(--space-s) 0 0;
    padding: var(--space-s);
    background: var(--bg-body);
    border-radius: var(--radius-sm);
    color: var(--text-subtle);
    font-family:
        ui-monospace,
        SFMono-Regular,
        SF Mono,
        Menlo,
        Consolas,
        "Liberation Mono",
        monospace;
    font-size: var(--text-2xs);
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-x: auto;
    max-height: 240px;
}

/* ── Actions ─────────────────────────────────────────────────────────────── */

.ErrorBoundary_actions__2CqhO {
    display: inline-flex;
    align-items: center;
    gap: var(--space-s);
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/admin/AppLoadingScreen.module.css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.AppLoadingScreen_screen__7uH09 {
    display: grid;
    min-height: 100vh;
    place-items: center;
    overflow: hidden;
    background: var(--bg-body);
    color: var(--text);
}

.AppLoadingScreen_banterLoader__tSvzb {
    position: relative;
    width: 72px;
    height: 72px;
}

.AppLoadingScreen_banterBox__HZrJW {
    float: left;
    position: relative;
    width: 20px;
    height: 20px;
    margin-right: var(--space-xs);
}

.AppLoadingScreen_banterBox__HZrJW::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: var(--text);
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(3n) {
    margin-right: 0;
    margin-bottom: var(--space-xs);
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(1)::before,
.AppLoadingScreen_banterBox__HZrJW:nth-child(4)::before {
    margin-left: var(--space-6xl);
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(3)::before {
    margin-top: var(--space-10xl);
}

.AppLoadingScreen_banterBox__HZrJW:last-child {
    margin-bottom: 0;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(1) {
    animation: AppLoadingScreen_banterMoveBox1__IqPGx 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(2) {
    animation: AppLoadingScreen_banterMoveBox2__5Oyyc 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(3) {
    animation: AppLoadingScreen_banterMoveBox3__GYNVi 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(4) {
    animation: AppLoadingScreen_banterMoveBox4___m8I9 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(5) {
    animation: AppLoadingScreen_banterMoveBox5__PeWkw 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(6) {
    animation: AppLoadingScreen_banterMoveBox6__pB0M4 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(7) {
    animation: AppLoadingScreen_banterMoveBox7__WsKyv 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(8) {
    animation: AppLoadingScreen_banterMoveBox8__wg9kc 4s infinite;
}

.AppLoadingScreen_banterBox__HZrJW:nth-child(9) {
    animation: AppLoadingScreen_banterMoveBox9__Rpkfm 4s infinite;
}

@keyframes AppLoadingScreen_banterMoveBox1__IqPGx {
    9.0909090909% { transform: translate(-26px, 0); }
    18.1818181818% { transform: translate(0px, 0); }
    27.2727272727% { transform: translate(0px, 0); }
    36.3636363636% { transform: translate(26px, 0); }
    45.4545454545% { transform: translate(26px, 26px); }
    54.5454545455% { transform: translate(26px, 26px); }
    63.6363636364% { transform: translate(26px, 26px); }
    72.7272727273% { transform: translate(26px, 0px); }
    81.8181818182% { transform: translate(0px, 0px); }
    90.9090909091% { transform: translate(-26px, 0px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox2__5Oyyc {
    9.0909090909% { transform: translate(0, 0); }
    18.1818181818% { transform: translate(26px, 0); }
    27.2727272727% { transform: translate(0px, 0); }
    36.3636363636% { transform: translate(26px, 0); }
    45.4545454545% { transform: translate(26px, 26px); }
    54.5454545455% { transform: translate(26px, 26px); }
    63.6363636364% { transform: translate(26px, 26px); }
    72.7272727273% { transform: translate(26px, 26px); }
    81.8181818182% { transform: translate(0px, 26px); }
    90.9090909091% { transform: translate(0px, 26px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox3__GYNVi {
    9.0909090909% { transform: translate(-26px, 0); }
    18.1818181818% { transform: translate(-26px, 0); }
    27.2727272727% { transform: translate(0px, 0); }
    36.3636363636% { transform: translate(-26px, 0); }
    45.4545454545% { transform: translate(-26px, 0); }
    54.5454545455% { transform: translate(-26px, 0); }
    63.6363636364% { transform: translate(-26px, 0); }
    72.7272727273% { transform: translate(-26px, 0); }
    81.8181818182% { transform: translate(-26px, -26px); }
    90.9090909091% { transform: translate(0px, -26px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox4___m8I9 {
    9.0909090909% { transform: translate(-26px, 0); }
    18.1818181818% { transform: translate(-26px, 0); }
    27.2727272727% { transform: translate(-26px, -26px); }
    36.3636363636% { transform: translate(0px, -26px); }
    45.4545454545% { transform: translate(0px, 0px); }
    54.5454545455% { transform: translate(0px, -26px); }
    63.6363636364% { transform: translate(0px, -26px); }
    72.7272727273% { transform: translate(0px, -26px); }
    81.8181818182% { transform: translate(-26px, -26px); }
    90.9090909091% { transform: translate(-26px, 0px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox5__PeWkw {
    9.0909090909% { transform: translate(0, 0); }
    18.1818181818% { transform: translate(0, 0); }
    27.2727272727% { transform: translate(0, 0); }
    36.3636363636% { transform: translate(26px, 0); }
    45.4545454545% { transform: translate(26px, 0); }
    54.5454545455% { transform: translate(26px, 0); }
    63.6363636364% { transform: translate(26px, 0); }
    72.7272727273% { transform: translate(26px, 0); }
    81.8181818182% { transform: translate(26px, -26px); }
    90.9090909091% { transform: translate(0px, -26px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox6__pB0M4 {
    9.0909090909% { transform: translate(0, 0); }
    18.1818181818% { transform: translate(-26px, 0); }
    27.2727272727% { transform: translate(-26px, 0); }
    36.3636363636% { transform: translate(0px, 0); }
    45.4545454545% { transform: translate(0px, 0); }
    54.5454545455% { transform: translate(0px, 0); }
    63.6363636364% { transform: translate(0px, 0); }
    72.7272727273% { transform: translate(0px, 26px); }
    81.8181818182% { transform: translate(-26px, 26px); }
    90.9090909091% { transform: translate(-26px, 0px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox7__WsKyv {
    9.0909090909% { transform: translate(26px, 0); }
    18.1818181818% { transform: translate(26px, 0); }
    27.2727272727% { transform: translate(26px, 0); }
    36.3636363636% { transform: translate(0px, 0); }
    45.4545454545% { transform: translate(0px, -26px); }
    54.5454545455% { transform: translate(26px, -26px); }
    63.6363636364% { transform: translate(0px, -26px); }
    72.7272727273% { transform: translate(0px, -26px); }
    81.8181818182% { transform: translate(0px, 0px); }
    90.9090909091% { transform: translate(26px, 0px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox8__wg9kc {
    9.0909090909% { transform: translate(0, 0); }
    18.1818181818% { transform: translate(-26px, 0); }
    27.2727272727% { transform: translate(-26px, -26px); }
    36.3636363636% { transform: translate(0px, -26px); }
    45.4545454545% { transform: translate(0px, -26px); }
    54.5454545455% { transform: translate(0px, -26px); }
    63.6363636364% { transform: translate(0px, -26px); }
    72.7272727273% { transform: translate(0px, -26px); }
    81.8181818182% { transform: translate(26px, -26px); }
    90.9090909091% { transform: translate(26px, 0px); }
    100% { transform: translate(0px, 0px); }
}

@keyframes AppLoadingScreen_banterMoveBox9__Rpkfm {
    9.0909090909% { transform: translate(-26px, 0); }
    18.1818181818% { transform: translate(-26px, 0); }
    27.2727272727% { transform: translate(0px, 0); }
    36.3636363636% { transform: translate(-26px, 0); }
    45.4545454545% { transform: translate(0px, 0); }
    54.5454545455% { transform: translate(0px, 0); }
    63.6363636364% { transform: translate(-26px, 0); }
    72.7272727273% { transform: translate(-26px, 0); }
    81.8181818182% { transform: translate(-52px, 0); }
    90.9090909091% { transform: translate(-26px, 0); }
    100% { transform: translate(0px, 0); }
}

@media (prefers-reduced-motion: reduce) {
    .AppLoadingScreen_banterBox__HZrJW:nth-child(1),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(2),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(3),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(4),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(5),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(6),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(7),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(8),
    .AppLoadingScreen_banterBox__HZrJW:nth-child(9) {
        animation: none;
    }
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/ui/components/Input/Input.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Shared form field primitive. */

.Input_input__ZZCXC {
    width: 100%;
    box-sizing: border-box;
    background: transparent;
    border: 1px solid var(--overlay-20);
    border-radius: var(--input-radius);
    color: var(--text);
    font-family: var(--font-sans);
    font-weight: 500;
    outline: none;
}

.Input_input__ZZCXC:hover {
    border-color: var(--overlay-30);
}

.Input_input__ZZCXC:focus,
.Input_input__ZZCXC:focus-within {
    background: transparent;
    border-color: var(--overlay-50);
}

.Input_input__ZZCXC:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.Input_input__ZZCXC::placeholder {
    color: var(--text-disabled);
}

.Input_input__ZZCXC[data-emphasis="strong"] {
    font-weight: 700;
}

.Input_monospace__JdWg5 {
    font-family: var(--font-mono);
    letter-spacing: 0;
}

.Input_size-xs__soAOs {
    min-height: 24px;
    padding: var(--space-4xs) var(--space-xs);
    font-size: var(--text-xs);
}

.Input_size-sm__B6KmH {
    min-height: 28px;
    padding: var(--space-2xs) var(--space-s);
    font-size: var(--text-xs);
}

.Input_size-md__8Y_AR {
    min-height: 32px;
    padding: var(--space-xs) var(--space-m);
    font-size: var(--text-s);
}

.Input_textarea__ZsNXv {
    resize: vertical;
    line-height: 1.5;
}

.Input_textarea__ZsNXv[data-resize="none"] {
    resize: none;
}

.Input_textarea__ZsNXv[data-resize="both"] {
    resize: both;
}

.Input_invalid__PDtZR {
    border-color: var(--danger);
}

/* ─── Affix wrapper (used when `unit` and/or `numberSpinner` are present) ──
 * The wrapper inherits the same border + size tokens as the bare input so
 * the unit / spinner controls read as part of the field. The actual
 * `<input>` inside the wrapper drops its own border to avoid double frames.
 */

.Input_inputWrapper__umGup {
    position: relative;
    display: inline-flex;
    align-items: stretch;
    width: 100%;
    box-sizing: border-box;
    background: transparent;
    border: 1px solid var(--overlay-20);
    border-radius: var(--input-radius);
    color: var(--text);
    font-family: var(--font-sans);
    overflow: hidden;
    /* Override the size-class padding (the wrapper inherits .size-* for its
     * min-height + font-size, but the inner input owns the visual padding).
     * Without this the wrapper applies padding *and* the input applies
     * padding — nesting them and bumping the field's effective height. */
    padding: 0;
    transition: border-color 120ms ease;
}

.Input_inputWrapper__umGup:hover {
    border-color: var(--overlay-30);
}

.Input_inputWrapper__umGup:focus-within {
    background: transparent;
    border-color: var(--overlay-50);
}

.Input_inputWrapper__umGup[data-disabled="true"] {
    opacity: 0.5;
    cursor: not-allowed;
}

.Input_inputWithAffix__2LnVq {
    flex: 1 1;
    width: auto;
    min-width: 0;
    /* Wrapper drives the field height — null out the size-class min-height
     * here so the input does not push the wrapper taller than a bare
     * Input of the same size class. */
    min-height: 0;
    height: auto;
    background: transparent;
    border: 0;
    border-radius: 0;
    /* The wrapper owns the focus ring + hover styles; its child must not
     * add an extra border on focus. */
}

.Input_inputWithAffix__2LnVq:hover,
.Input_inputWithAffix__2LnVq:focus,
.Input_inputWithAffix__2LnVq:focus-within {
    background: transparent;
    border: 0;
}

/* Prefix label — `--`, `$`, `@` etc. Inside the leading edge of
 * the wrapper, vertically centered with the input value. We pad the left
 * edge here and zero out the input's left padding (via `.inputWithAffix`)
 * so the prefix sits flush against the value with no double-padding. */
.Input_prefix__IV6nS {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    /* Left inset matches a normal input's text inset so the prefix sits where
       the value would start; no right padding — the input's own small left
       padding (.inputWithAffix[data-prefixed]) supplies one space to the
       value, so prefix + value read as one continuous string. */
    padding: 0 0 0 var(--space-s);
    color: var(--text-subtle);
    font-size: inherit;
    font-feature-settings: "tnum";
    font-variant-numeric: tabular-nums;
    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

/* A single space between the prefix and the value / placeholder. */
.Input_inputWithAffix__2LnVq[data-prefixed='true'] {
    padding-left: var(--space-3xs);
}

/* Unit suffix label — `px`, `rem`, `%` etc. Inside the trailing edge of
 * the wrapper, vertically centered with the input value. The input itself
 * owns its right-padding so the value already has breathing room before
 * the unit; we only add a small right-padding here as a buffer to the
 * spinner column or the wrapper's right edge. */
.Input_unit__Tjw0A {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    padding: 0 var(--space-xs) 0 0;
    color: var(--text-subtle);
    font-size: inherit;
    font-feature-settings: "tnum";
    font-variant-numeric: tabular-nums;
    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

/* Generic trailing slot — caller-provided affordance rendered inside the
 * trailing edge of the wrapper (e.g. an enter-key submit icon button on a
 * picker input). Stays vertically centered and inherits muted text color
 * so plain icons read consistently with prefix / unit. The slot itself is
 * a wrapper, not a control — it still allows pointer events on its
 * children so embedded buttons remain clickable. */
.Input_trailingSlot__HiBvZ {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    padding: 0 var(--space-3xs) 0 0;
    color: var(--text-subtle);
}

/* Custom number-input spinner — replaces the browser-default ugly arrows
 * with two compact chevron buttons stacked vertically on the trailing
 * edge. Uses our editor tokens so it matches the rest of the chrome. */
.Input_spinner__Avkpw {
    display: flex;
    flex: 0 0 auto;
    flex-direction: column;
    border-left: 1px solid var(--overlay-20);
    background: var(--overlay-5);
}

.Input_inputWrapper__umGup:focus-within .Input_spinner__Avkpw {
    border-left-color: var(--overlay-50);
}

.Input_spinnerButton__UBgcA {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1 1;
    width: 18px;
    min-height: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-subtle);
    cursor: pointer;
    transition: background 120ms ease, color 120ms ease;
}

/* The increase button reuses the (down) chevron-2 glyph, flipped. */
.Input_spinnerIconUp__RIodg {
    transform: rotate(180deg);
}

.Input_spinnerButton__UBgcA + .Input_spinnerButton__UBgcA {
    border-top: 1px solid var(--overlay-20);
}

.Input_inputWrapper__umGup:focus-within .Input_spinnerButton__UBgcA + .Input_spinnerButton__UBgcA {
    border-top-color: var(--overlay-50);
}

.Input_spinnerButton__UBgcA:hover {
    background: var(--overlay-5);
    color: var(--text);
}

.Input_spinnerButton__UBgcA:active {
    background: var(--overlay-10);
}

.Input_spinnerButton__UBgcA:disabled {
    cursor: not-allowed;
    opacity: 0.4;
}

/* Hide the browser-native number-input spinner so our custom one is the
 * only set of controls visible. */
.Input_numberNoSpinner__cNcqT {
    -webkit-appearance: textfield;
            appearance: textfield;
    -moz-appearance: textfield;
}

.Input_numberNoSpinner__cNcqT::-webkit-outer-spin-button,
.Input_numberNoSpinner__cNcqT::-webkit-inner-spin-button {
    appearance: none;
    -webkit-appearance: none;
    margin: 0;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/admin/AdminEntry.module.css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Shared "auth screen" panel styles used by both the unauthenticated
   pre-auth form (login / setup / MFA) and the authenticated "access
   unavailable" notice. Pre-auth-only styles (brand row, form, field,
   spinner) live in preauth/AdminPreAuthForm.module.css. */

.AdminEntry_page__Ec4PF {
    display: grid;
    min-height: 100vh;
    place-items: center;
    padding: var(--space-7xl) var(--space-2xl);
    background: var(--bg-body);
    color: var(--text);
    font-family: system-ui, sans-serif;
}

.AdminEntry_panel__YFTto {
    width: min(100%, 360px);
    padding: var(--space-5xl);
    border-radius: 16px;
    background: var(--bg-surface);
}

.AdminEntry_title__CfnzU {
    margin: 0 0 var(--space-3xl);
    color: var(--text-bright);
    font-size: var(--text-3xl);
    font-weight: 650;
    letter-spacing: 0;
}

.AdminEntry_error__ajOhM {
    margin: 0;
    color: var(--danger-lighter);
    font-size: var(--text-s);
    line-height: 1.45;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/admin/preauth/AdminPreAuthForm.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.AdminPreAuthForm_brandRow__4kBeq {
  display: flex;
  align-items: center;
  gap: var(--space-m);
  margin-bottom: var(--space-4xl);
  color: var(--text-muted);
  font-size: var(--text-s);
  font-weight: 600;
}

.AdminPreAuthForm_brandIcon__kzvwA {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 6px;
  background: var(--overlay-10);
  color: var(--text);
}

/* Operator-provided favicon used as the login brand mark. Object-fit cover
   so the asset crops cleanly regardless of aspect ratio; the rounded tile
   keeps it visually paired with the default brandIcon background. */
.AdminPreAuthForm_brandFavicon__I7IpZ {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.AdminPreAuthForm_form__Or28j {
  display: grid;
  grid-gap: var(--space-xl);
  gap: var(--space-xl);
}

.AdminPreAuthForm_field__MQ4q5 {
  display: grid;
  grid-gap: var(--space-xs);
  gap: var(--space-xs);
  color: var(--text-muted);
  font-size: var(--text-s);
  font-weight: 600;
}

/* Secondary note inside a field label — lighter than the label it follows. */
.AdminPreAuthForm_hint__IsH7v {
  color: var(--text-subtle);
  font-weight: 400;
}

@keyframes AdminPreAuthForm_instaticAdminSpin__omSnc {
  to {
    transform: rotate(360deg);
  }
}

.AdminPreAuthForm_spinIcon__xpDuS {
  animation: AdminPreAuthForm_instaticAdminSpin__omSnc 0.8s linear infinite;
}

/* Phase toggle under the pre-auth form (login ↔ signup). A quiet text
   button — the primary submit above it carries the visual weight. */
.AdminPreAuthForm_switchPhase___5zDZ {
  display: block;
  width: 100%;
  margin-top: var(--space-xl);
  padding: 0;
  border: 0;
  background: none;
  color: var(--text-muted);
  font-size: var(--text-s);
  font-weight: 600;
  text-align: center;
  cursor: pointer;
}

.AdminPreAuthForm_switchPhase___5zDZ:hover {
  color: var(--text);
}

@media (prefers-reduced-motion: reduce) {
  .AdminPreAuthForm_spinIcon__xpDuS {
    animation: none;
  }
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.29_@babel+core@7.29.13_@types+node@24.19.2_babel-plugin-react-compiler@1.0.0__0d38aac4dd206ca35864d87f92a8be0e/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/admin/shared/AdminContextMenuGuard/AdminContextMenuGuard.module.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.AdminContextMenuGuard_flash__x1JF_ {
    position: fixed;
    left: var(--admin-context-menu-flash-x);
    top: var(--admin-context-menu-flash-y);
    z-index: var(--tooltip-z-index);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: var(--radius);
    color: var(--danger);
    background: var(--danger-10);
    box-shadow: var(--focus-ring);
    pointer-events: none;
    transform: translate(-50%, -50%);
    animation: AdminContextMenuGuard_contextMenuDenied__pQiY9 520ms ease-out both;
}

@keyframes AdminContextMenuGuard_contextMenuDenied__pQiY9 {
    0% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.72) rotate(0deg);
    }

    18% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1.05) rotate(-8deg);
    }

    36% {
        transform: translate(-50%, -50%) scale(1) rotate(7deg);
    }

    54% {
        transform: translate(-50%, -50%) scale(1) rotate(-5deg);
    }

    72% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(0.98) rotate(3deg);
    }

    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.82) rotate(0deg);
    }
}

