.ua-dialog,.ua-drawer,.ua-tooltip,.ua-tabs,.ua-carousel,.ua-parallax-section,.ua-sticky-section,.ua-parallax-layers,.ua-magnetic-element{color:var(--universe-color-text);font-family:var(--universe-font-standard,var(--ua-font-body,inherit))}
.ua-dialog-shell{position:relative;display:block}
.ua-dialog-trigger{display:inline-flex}
/* The dialog is the platform's full-screen focus surface (north star §5): the world
   behind FADES and BLURS but stays present — the overlay softens the page, the panel
   becomes the page. Never a small floating card. It must layer over the ENTIRE page,
   so the client portals the overlay+panel into `.ua-dialog-portal` on <body> (escaping
   any glass/transform ancestor that would otherwise clamp a fixed element to its box). */
.ua-dialog-portal{position:static}
.ua-dialog-overlay{position:fixed;inset:0;z-index:2147483646;background:var(--ua-glass-veil);backdrop-filter:var(--ua-glass-veil-frost);-webkit-backdrop-filter:var(--ua-glass-veil-frost)}
.ua-drawer-panel,.ua-tooltip-bubble{background:var(--ua-glass-text-led);border: var(--universe-elev-3-border);box-shadow: var(--universe-elev-3-shadow);backdrop-filter:var(--ua-glass-frost)}
/* Full-bleed glass surface: the page is still felt through it. Content rides in a
   centered column with breath; the gutters around the column belong to the surface
   and (when closeOnOutside) act as the tap-outside-to-dismiss area. */
/* THE BODY IS THE ONLY THING THAT SCROLLS. This panel used to be the scroller itself
   (`overflow-y:auto` with `grid-template-rows:auto 1fr auto`), which meant a long dialog scrolled its
   own title bar - AND THE CLOSE X - off the top along with the content. The operator named it on
   2026-09-01 against the dashboard filter dialog: "the search and the chips kind of scroll away if you
   have lots and lots of items, as opposed to always being on top when you're scrolling."
   It was never the filter control's bug; it was this rule, and every dialog on the platform had it.
   The panel is now a fixed-height column: header, the optional pinned region, a scrolling body, and
   the actions. Nothing above or below the body can scroll out of reach. */
.ua-dialog{position:fixed;inset:0;z-index:2147483647;max-width:none;border:0;border-radius:0;box-shadow:none;background:var(--ua-glass-text-led);backdrop-filter:var(--ua-glass-frost);-webkit-backdrop-filter:var(--ua-glass-frost);overflow:hidden;overscroll-behavior:contain;padding-inline:clamp(1.1rem,4vw,3rem);padding-block:0 env(safe-area-inset-bottom,0rem)}
.ua-dialog:not([hidden]){display:flex;flex-direction:column;gap:clamp(.85rem,2.5vh,1.6rem)}
.ua-dialog>header,.ua-dialog>.ua-dialog-pinned,.ua-dialog>.ua-dialog-actions{flex:0 0 auto}
/* Every dialog is full-screen; fullscreen=true/false only picks the content column width. */
.ua-dialog[data-ua-fullscreen=true]{--ua-dialog-col:64rem}
.ua-dialog[data-ua-fullscreen=false]{--ua-dialog-col:var(--ua-dialog-width,42rem)}
.ua-dialog>header,.ua-dialog>.ua-dialog-pinned,.ua-dialog>.ua-dialog-body,.ua-dialog>.ua-dialog-actions{inline-size:min(100%,var(--ua-dialog-col,64rem));margin-inline:auto}
/* Desktop standard (operator §DIALOGS): full-screen FEEL = a blurred backdrop (the overlay)
   with a large CENTERED GLASS SHEET floating on top — never an opaque dark slab. On wide
   viewports the panel keeps its frosted-glass surface but draws in to a centered, rounded,
   bordered sheet at a comfortable max width/height; the overlay behind it carries the page
   blur. On phones the panel stays the full-viewport glass surface (the base rule above), which
   is the right mobile feel. The surface is always glass (translucent + blur), so the beautiful
   page/background is still felt through it — no scrim, no opaque slab. */
@media (min-width:48rem){
/* Operator §DIALOGS [2026-06-29]: EVERY dialog is a FULL-SCREEN blurred-glass surface that uses the
   whole viewport — never a small centered floating box. The content rides in a centered, comfortable
   reading column (margin-auto, --ua-dialog-col) so it never sprawls edge to edge; the page behind still
   blurs through the glass (no dark scrim). This is the default for every breakpoint (the base rule above
   already does it on phones). The legacy centered SHEET is now an explicit opt-in (surface=sheet) only. */
.ua-dialog>header{padding-block:max(clamp(1.1rem,3vh,2rem),env(safe-area-inset-top,0rem)) 0}
.ua-dialog>.ua-dialog-actions{padding-block:0 clamp(1.1rem,3vh,2rem)}
/* OPT-IN legacy centered sheet (surface=sheet): a rounded, bordered glass card at a comfortable max
   width/height, floating on the blurred overlay. Not used by default; kept for a deliberate small task. */
.ua-dialog[data-ua-dialog-surface=sheet]{inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:min(calc(100vw - 4rem),calc(var(--ua-dialog-col,64rem) + 6rem));max-height:min(calc(100vh - 4rem),52rem);border:var(--universe-elev-3-border);border-radius:1.5rem;box-shadow:var(--universe-elev-3-shadow);background:var(--ua-glass-text-led);padding-inline:clamp(1.4rem,3vw,2.6rem)}
.ua-dialog[data-ua-dialog-surface=sheet][data-ua-fullscreen=false]{width:min(calc(100vw - 4rem),calc(var(--ua-dialog-width,42rem) + 4rem))}
/* FULL-BLEED surface (operator §DIALOGS power-tool): the filter / workspace dialog must use ALL the free
   space — NOT draw in to a centered sheet with empty side margins. surface=fullbleed OPTS OUT of the
   centered-sheet treatment above, keeping the base full-viewport blurred-glass surface (inset:0, no
   transform, no max-height, no rounded floating card) on every breakpoint, and widens the content column
   to use the room. The page behind still blurs through the glass (no dark scrim). */
.ua-dialog[data-ua-dialog-surface=fullbleed]{inset:0;top:0;right:0;bottom:0;left:0;transform:none;width:auto;max-width:none;max-height:none;border:0;border-radius:0;box-shadow:none;background:var(--ua-glass-text-led);padding-inline:clamp(1.4rem,5vw,4rem);--ua-dialog-col:min(100%,86rem)}
}
.ua-dialog>header,.ua-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.ua-dialog>header{padding-block:max(clamp(1rem,3.5vh,2.2rem),env(safe-area-inset-top,0rem)) 0}
.ua-dialog>header h2{margin:0;font-family:var(--universe-font-heading,inherit);font-size:clamp(1.45rem,1.1rem + 1.6vw,2.2rem);font-weight:var(--universe-font-weight-title);letter-spacing:.01em}
/* `safe center` is the second declaration on purpose: a centred grid that overflows clips its own top
   in every engine, which is how a scrollable centred body loses its first rows. Browsers without `safe`
   drop the line and keep plain `center` (they also had the old behaviour), so this only ever improves. */
.ua-dialog-body{flex:1 1 auto;min-block-size:0;overflow-y:auto;overscroll-behavior:contain;display:grid;align-content:center;align-content:safe center;gap:clamp(.85rem,2vh,1.35rem);padding-block:clamp(.5rem,2vh,1.5rem)}
.ua-dialog-pinned{display:grid;gap:clamp(.5rem,1.5vh,.85rem)}
/* The full-bleed (power-tool) dialog body is content-rich and top-aligned: it fills the surface from the
   top down so the facet grid uses the whole space, rather than floating centered with empty space below. */
.ua-dialog[data-ua-dialog-surface=fullbleed]>.ua-dialog-body{align-content:start}
.ua-dialog-actions{padding-block:0 clamp(1rem,3.5vh,2rem)}
.ua-dialog-close,.ua-drawer-close{min-width:2.75rem;min-height:2.75rem;border:var(--universe-elev-2-border);border-color:color-mix(in srgb,var(--universe-color-primary) 40%,transparent);border-radius:999rem;background:var(--ua-glass-text-led);backdrop-filter:var(--ua-glass-frost);-webkit-backdrop-filter:var(--ua-glass-frost);color:inherit;display:inline-grid;place-items:center;cursor:pointer}
.ua-dialog-close svg{inline-size:1.1rem;block-size:1.1rem}

html.ua-dialog-lock,html.ua-dialog-lock body{overflow:hidden}
@supports not (backdrop-filter:blur(1rem)){.ua-dialog{background:var(--ua-glass-text-led)}.ua-dialog-overlay{background:var(--ua-glass-veil)}}
/* Motion keys off whichever element currently holds the overlay/panel — the portal
   host once open (state is mirrored onto both the shell and the host by the client). */
@media (prefers-reduced-motion:no-preference){
.ua-dialog-shell[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog-overlay,
.ua-dialog-portal[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog-overlay{animation:ua-dialog-fade var(--ua-motion-veil) var(--ua-motion-ease-standard)}
.ua-dialog-shell[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog,
.ua-dialog-portal[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog{animation:ua-dialog-rise var(--ua-motion-enter) var(--ua-motion-ease-standard)}
.ua-dialog-shell[data-ua-dialog-closing=true] .ua-dialog-overlay,
.ua-dialog-portal[data-ua-dialog-closing=true] .ua-dialog-overlay{animation:ua-dialog-fade var(--ua-motion-base) var(--ua-motion-ease-exit) reverse forwards}
.ua-dialog-shell[data-ua-dialog-closing=true] .ua-dialog,
.ua-dialog-portal[data-ua-dialog-closing=true] .ua-dialog{animation:ua-dialog-settle var(--ua-motion-base) var(--ua-motion-ease-exit) forwards}
}
@keyframes ua-dialog-fade{from{opacity:0}to{opacity:1}}
@keyframes ua-dialog-rise{from{opacity:0;transform:translateY(.85rem) scale(.992)}to{opacity:1;transform:none}}
@keyframes ua-dialog-settle{from{opacity:1;transform:none}to{opacity:0;transform:translateY(.5rem) scale(.996)}}
/* Desktop the panel is centred with translate(-50%,-50%); the rise/settle motion must keep that
   centring, so override the keyframes for wide viewports to animate around the centred origin. */
@media (min-width:48rem) and (prefers-reduced-motion:no-preference){
.ua-dialog-shell[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog:not([data-ua-dialog-surface=fullbleed]),
.ua-dialog-portal[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog:not([data-ua-dialog-surface=fullbleed]){animation:ua-dialog-rise-center var(--ua-motion-enter) var(--ua-motion-ease-standard)}
.ua-dialog-shell[data-ua-dialog-closing=true] .ua-dialog:not([data-ua-dialog-surface=fullbleed]),
.ua-dialog-portal[data-ua-dialog-closing=true] .ua-dialog:not([data-ua-dialog-surface=fullbleed]){animation:ua-dialog-settle-center var(--ua-motion-base) var(--ua-motion-ease-exit) forwards}
/* full-bleed is not translate-centered, so it keeps the non-centered rise/settle keyframes on desktop. */
.ua-dialog-shell[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog[data-ua-dialog-surface=fullbleed],
.ua-dialog-portal[data-ua-dialog-open=true]:not([data-ua-dialog-closing=true]) .ua-dialog[data-ua-dialog-surface=fullbleed]{animation:ua-dialog-rise var(--ua-motion-enter) var(--ua-motion-ease-standard)}
.ua-dialog-shell[data-ua-dialog-closing=true] .ua-dialog[data-ua-dialog-surface=fullbleed],
.ua-dialog-portal[data-ua-dialog-closing=true] .ua-dialog[data-ua-dialog-surface=fullbleed]{animation:ua-dialog-settle var(--ua-motion-base) var(--ua-motion-ease-exit) forwards}
}
@keyframes ua-dialog-rise-center{from{opacity:0;transform:translate(-50%,calc(-50% + .85rem)) scale(.992)}to{opacity:1;transform:translate(-50%,-50%)}}
@keyframes ua-dialog-settle-center{from{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,calc(-50% + .5rem)) scale(.996)}}
.ua-drawer{position:relative}
.ua-drawer-panel{position:fixed;z-index:85;display:grid;grid-template-rows:auto 1fr auto;gap:1rem;padding:1rem;overflow:auto}
.ua-drawer-panel[data-ua-edge=left],.ua-drawer-panel[data-ua-edge=right]{top:0;bottom:0;width:min(var(--ua-drawer-size,24rem),calc(100vw - 2rem))}
.ua-drawer-panel[data-ua-edge=left]{left:0}.ua-drawer-panel[data-ua-edge=right]{right:0}.ua-drawer-panel[data-ua-edge=top]{top:0;left:0;right:0;max-height:min(var(--ua-drawer-size,24rem),80vh)}.ua-drawer-panel[data-ua-edge=bottom]{bottom:0;left:0;right:0;max-height:min(var(--ua-drawer-size,24rem),80vh)}
.ua-drawer-overlay{position:fixed;inset:0;z-index:84;background:rgba(0,0,0,.45)}
.ua-tooltip{position:relative;display:inline-flex;align-items:center;gap:.35rem}
.ua-tooltip-trigger{display:inline-flex;align-items:center;gap:.35rem;min-height:2.35rem;border:1px solid color-mix(in srgb,var(--universe-color-primary) 26%,transparent);border-radius:.5rem;background:color-mix(in srgb,var(--universe-color-background) 72%,transparent);color:inherit;padding:.35rem .65rem;text-decoration:none;text-underline-offset:.18em;cursor:help}

.ua-tooltip-bubble{position:absolute;z-index:90;width:min(var(--ua-tooltip-width,18rem),calc(100vw - 2rem));border-radius:.5rem;padding:.72rem .82rem;font-size:.875rem;font-weight:var(--universe-font-weight-title);line-height:1.38;letter-spacing:0}
.ua-tooltip-bubble[hidden]{display:none!important}
.ua-tooltip-bubble::after{content:"";position:absolute;width:.65rem;height:.65rem;border:1px solid color-mix(in srgb,var(--universe-color-primary) 28%,transparent);background:inherit;transform:rotate(45deg)}
.ua-tooltip[data-ua-position=top] .ua-tooltip-bubble{bottom:calc(100% + .65rem);left:50%;transform:translateX(-50%)}.ua-tooltip[data-ua-position=bottom] .ua-tooltip-bubble{top:calc(100% + .65rem);left:50%;transform:translateX(-50%)}.ua-tooltip[data-ua-position=left] .ua-tooltip-bubble{right:calc(100% + .65rem);top:50%;transform:translateY(-50%)}.ua-tooltip[data-ua-position=right] .ua-tooltip-bubble{left:calc(100% + .65rem);top:50%;transform:translateY(-50%)}
.ua-tooltip[data-ua-position=top] .ua-tooltip-bubble::after{bottom:-.36rem;left:calc(50% - .33rem);border-top:0;border-left:0}.ua-tooltip[data-ua-position=bottom] .ua-tooltip-bubble::after{top:-.36rem;left:calc(50% - .33rem);border-bottom:0;border-right:0}.ua-tooltip[data-ua-position=left] .ua-tooltip-bubble::after{right:-.36rem;top:calc(50% - .33rem);border-bottom:0;border-left:0}.ua-tooltip[data-ua-position=right] .ua-tooltip-bubble::after{left:-.36rem;top:calc(50% - .33rem);border-top:0;border-right:0}
.ua-scroll-progress{position:sticky;top:0;z-index:40;height:var(--ua-scroll-progress-height,.25rem);background:color-mix(in srgb,var(--universe-color-text) 20%,transparent)}
.ua-scroll-progress-bar{display:block;width:var(--ua-scroll-progress-value,0%);height:100%;background:var(--universe-color-primary)}
.ua-parallax-section,.ua-sticky-section,.ua-parallax-layers{position:relative;overflow:hidden}
.ua-parallax-section{min-height:clamp(18rem,70vh,42rem);display:grid;align-items:center}
.ua-sticky-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(1rem,4vw,3rem)}
.ua-sticky-pin{position:sticky;top:var(--ua-sticky-top,2rem);align-self:start}
.ua-parallax-layer{position:absolute;inset:0;transform:translate3d(0,calc(var(--ua-parallax-progress,0)*var(--ua-layer-speed,1rem)),0);pointer-events:none}
.ua-parallax-layer-content{position:relative;z-index:1}
.ua-cursor-effect{position:fixed;left:0;top:0;z-index:9999;width:var(--ua-cursor-size,1rem);height:var(--ua-cursor-size,1rem);border-radius:62.4375rem;border:1px solid var(--universe-color-primary);pointer-events:none;transform:translate(-50%,-50%);mix-blend-mode:var(--ua-cursor-blend,normal)}
.ua-confetti{position:relative}
.ua-confetti-cue{display:inline-flex;align-items:center;gap:.4rem}
.ua-confetti-particle{position:absolute;width:.45rem;height:.75rem;border-radius:.125rem;background:var(--universe-color-primary);opacity:.9}
.ua-magnetic-element{display:inline-flex;will-change:transform;transition:transform .18s ease}
@media (max-width:48rem){.ua-sticky-section{grid-template-columns:1fr}.ua-sticky-pin{position:relative;top:auto}.ua-drawer-panel{width:100%;max-width:100%}}
@media (prefers-reduced-motion:reduce){.ua-parallax-layer,.ua-magnetic-element,.ua-cursor-effect{transform:none!important;transition:none!important}.ua-confetti-particle{display:none}}

/* ── ua.confirm — the platform's one confirmation ([[D071]] §2, universe-controls doctrine) ──────────
   It is a `ua.dialog` in sheet form, so it inherits the overlay, the glass, the portal, the scroll lock
   and the focus trap from the rules above. Only the confirmation's own parts are declared here: the
   summary that names what is being deleted, and the two answers. */
.ua-confirm-message{margin:0;font-size:1rem;line-height:1.5}
.ua-confirm-summary{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.3rem .8rem;margin:0;padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--universe-color-text) 14%,transparent);border-radius:.6rem;background:color-mix(in srgb,var(--universe-color-background) 45%,transparent)}
.ua-confirm-summary-label{margin:0;font-size:.78rem;letter-spacing:.02em;text-transform:uppercase;color:color-mix(in srgb,var(--universe-color-text) 58%,transparent);align-self:center}
.ua-confirm-summary-value{margin:0;min-width:0;overflow-wrap:anywhere;font-weight:var(--universe-font-weight-quiet)}
.ua-confirm-note{margin:0;font-size:.88rem;color:color-mix(in srgb,var(--universe-color-text) 64%,transparent)}
.ua-confirm-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.6rem}
.ua-confirm-actions .ua-button{min-height:2.75rem}
/* THE DESTRUCTIVE ANSWER READS AS DESTRUCTIVE AT REST, not only on hover — a touch device never hovers.
   It was painted identically to "Keep it", measured in real Chrome at 1440 and 375.
   
   THE CAUSE WAS SPECIFICITY, and only that. The dashboard paints every button inside a dialog's action
   row with `.ua-wizard-actions button, .ua-dialog-actions button` — a class-plus-type selector that
   outranks a lone class however late it is loaded — so `.ua-button-danger` lost. Written as
   `.ua-button.ua-button-danger`, the modifier outranks the base it modifies. Found by asking the accept
   button, in the page, which rules actually matched it rather than reasoning about the cascade.
   
   EVERY COLOUR IS A TOKEN, none is a literal. An earlier pass ended these chains in hex on the theory
   that the dashboard defined neither --universe-color-danger nor --universe-color-error; it defines
   both, through universe-interface.css, which it inlines ahead of everything else. The literals fixed
   nothing (the specificity change is what made the button turn pink) and they would have put a colour
   here that no tenant's brand could reach. --universe-color-danger, its --universe-color-error sibling
   and the ink that rides on it all live on :root in universe-interface.css, where a brand can retint
   them. */
.ua-button.ua-button-danger{color:var(--universe-color-on-danger-action);background:var(--universe-color-danger,var(--universe-color-error));border-color:var(--universe-color-danger,var(--universe-color-error));box-shadow:0 .75rem 2rem color-mix(in srgb,var(--universe-color-danger,var(--universe-color-error)) 28%,transparent)}
.ua-button.ua-button-danger:hover,.ua-button.ua-button-danger:focus-visible{--glow-ink:var(--universe-color-danger,var(--universe-color-error))}
/* At 375px the two answers stack full-width. column-reverse puts the SAFE answer at the bottom, under
   the thumb, and the destructive one above it — the reading order in the DOM is unchanged, so a screen
   reader and a keyboard still meet Cancel first. */
@media (max-width:26rem){.ua-confirm-actions{flex-direction:column-reverse}.ua-confirm-actions .ua-button{width:100%}}

/* ── ua.prompt — the platform's one TEXT ENTRY ([[D364]], universe-controls doctrine) ────────────────
   A `ua.dialog` in sheet form, exactly as ua.confirm is, so the overlay, the glass, the portal, the
   scroll lock and the focus trap all come from the rules above. The FIELDS are the platform's own
   (`.ua-control` / `.ua-input` / `.ua-textarea` in element-runtime.css), including their focus ring and
   their `data-ua-control-error` paint — so only the dialog's own spacing and its refusal line are
   declared here. No colour and no size is invented; every value is a token or a ratio of one. */
.ua-prompt-message{margin:0;font-size:1rem;line-height:1.5}
.ua-prompt-field{margin:0;gap:.4rem}
.ua-prompt-multiline{display:block}
/* THE REFUSAL LINE. It is in the DOM from the start (a live region created at the moment of the refusal
   announces unreliably), so while it is empty it must take no space at all — otherwise every field
   carries a permanent blank row. `:empty` is the whole mechanism. */
.ua-prompt-error{margin:0;font-size:.8125rem;font-weight:var(--universe-font-weight-quiet);color:var(--ua-control-error,var(--universe-color-error,var(--universe-color-danger)))}
.ua-prompt-error:empty{display:none}
.ua-prompt-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.6rem}
.ua-prompt-actions .ua-button{min-height:2.75rem}
/* The same specificity lesson the danger answer above was taught: a dialog's action row is painted by
   `.ua-dialog-actions button` on some surfaces, a class-plus-type selector that outranks a lone
   `.ua-button-primary`. Written as `.ua-button.ua-button-primary` the modifier outranks the base, so the
   submit answer reads as the primary one at rest — on a touch device, which never hovers, at rest is the
   only state there is. Measured in real Chrome at 1440 and 375, never inferred from the cascade.
   The declaration is the SHARED one from ua.foundation.css verbatim: this rule may only ever restore the
   platform's primary button, never invent a second look for it. */
.ua-prompt-actions .ua-button.ua-button-primary{color:var(--universe-color-background);background:var(--universe-color-primary);border-color:var(--universe-color-primary);box-shadow:0 .75rem 2rem color-mix(in srgb,var(--universe-color-primary) 28%,transparent)}
/* At 375px the two answers stack full-width, and column-reverse puts SAVE under the thumb with Cancel
   above it. The DOM order is unchanged, so a keyboard and a screen reader still meet Cancel first. */
@media (max-width:26rem){.ua-prompt-actions{flex-direction:column-reverse}.ua-prompt-actions .ua-button{width:100%}}
/* ONE DEFAULT IN A DIALOG ACTION ROW. `.ua-dialog-actions button` (element-runtime.css, class plus
   type) outranks a lone `.ua-button-primary`, so the row's buttons all read as quiet glass. Written
   on `.ua-button.ua-button-primary`, the modifier is the solid gold from ua.foundation.css. A danger
   accept stays danger and is not given a second gold. When the row marks neither, the first action
   is that gold. Return is not wired to it: this rule sets no type and no key. The context switch
   CTA already is that gold on its own class. */
.ua-dialog-actions .ua-button.ua-button-primary,
.ua-dialog-actions:not(:has(.ua-button-primary, .ua-button-danger)) > :is(button, a):first-child:not(.dashboard-context-switch-cta) {
  color: var(--universe-color-background);
  background: var(--universe-color-primary);
  border-color: var(--universe-color-primary);
  box-shadow: 0 .75rem 2rem color-mix(in srgb, var(--universe-color-primary) 28%, transparent);
  --glow-ink: var(--universe-color-primary);
}
.ua-reauth-body{display:grid;place-items:center;padding-block:0}
.ua-reauth-dialog>.ua-dialog-bar>h2{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ua-reauth-frame{inline-size:min(100%,34rem);block-size:min(40rem,calc(100dvh - 7rem));border:0;border-radius:var(--universe-radius-lg,1rem);background:transparent;color-scheme:normal}
.ua-reauth-focus-wrap{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media (max-width:40rem){.ua-reauth-frame{inline-size:100%;block-size:calc(100dvh - 5rem);border-radius:0}}
