/* BlazorBlueprint reads shadcn-shaped semantic names and declares defaults for almost none of them, so this
   file is what makes its components paint in the TENANT's brand rather than in its own oklch fallbacks. It
   ships from the library both guest hosts reference, like brand-tokens.css, so the mapping cannot become two
   copies; only the Showcase links it, because only the Showcase links blazorblueprint.css.

   EVERY VALUE IS A var(). Not one hex is written here, and that is a rule, not a habit: the palette guards
   assert the token lists are a proper subset of the hexes design.md publishes, so a literal introduced in a
   Presentation tree is a second palette claiming the same surface. Aliasing cannot fork what it points at.

   IT LOADS LAST, after app.css. blazorblueprint.css declares --alert-* defaults of its own and the names below
   that it does NOT declare (--primary, --background, --border, --ring, --radius) would resolve to its inline
   fallbacks without this file at all.

   ONE BLOCK, no light/dark pair, and that is the difference from the console's copy: every value here is an
   alias, and brand-tokens.css already re-declares each target under [data-theme="dark"]. A second block would
   be a second place for the dark vitrine to drift. blazorblueprint.css looks for a `.dark` CLASS, which no
   guest document sets, so that sheet's own dark block never fires and these declarations are the only source.

   --muted IS DELIBERATELY ABSENT. shadcn means a muted SURFACE by it; brand-tokens.css already declares
   --muted as the muted INK every guest .text-muted reads, and declaring it here would repaint that ink with a
   background tint on both surfaces. So the name stays the guest's, and the components that paint with
   `bg-muted`, the skeleton, the avatar fallback and the data grid, are not adopted on this surface. */

:root {
    --background: var(--bg);
    --foreground: var(--ink);
    --card: var(--brand-tint);
    --card-foreground: var(--ink);
    --popover: var(--bg);
    --popover-foreground: var(--ink);

    /* The CTA fill floor, not the raw primary: --brand-primary-raised is what the vitrine's own .btn fills
       with, and it is the value the dark block lifts so a near-black tenant primary still reads as a chip. */
    --primary: var(--brand-primary-raised);
    --primary-foreground: var(--brand-on-primary);
    --secondary: var(--brand-tint-2);
    --secondary-foreground: var(--ink);

    /* The muted FOREGROUND takes the ink token, which is the darker of the two muted inks and clears AA on
       the light canvas by a margin --subtle does not. */
    --muted-foreground: var(--muted);

    /* Amber text on a light canvas is the resolver's gated ink, never the raw accent: --on-accent-soft is the
       ink brand-tokens.css already pairs with --brand-accent-soft, in both themes. */
    --accent: var(--brand-accent-soft);
    --accent-foreground: var(--on-accent-soft);

    /* --invert-ink is the ink that contrasts with the canvas's opposite, which is exactly what a red fill is:
       near-white on #dc2626 in the light theme, near-black on the lightened #ef4444 in the dark one. */
    --destructive: var(--danger-line);
    --destructive-foreground: var(--invert-ink);

    /* --input is the FIELD border, not a fill: it matches the border every vitrine input already carries. */
    --border: var(--brand-hairline);
    --input: var(--border-strong);
    --ring: var(--accent-line);

    --alert-success: var(--status-positive-dot);
    --alert-success-foreground: var(--status-positive-ink);
    --alert-success-bg: var(--status-positive-bg);
    --alert-info: var(--status-neutral-dot);
    --alert-info-foreground: var(--status-neutral-ink);
    --alert-info-bg: var(--status-neutral-bg);
    --alert-warning: var(--status-caution-dot);
    --alert-warning-foreground: var(--status-caution-ink);
    --alert-warning-bg: var(--status-caution-bg);
    --alert-danger: var(--status-negative-dot);
    --alert-danger-foreground: var(--status-negative-ink);
    --alert-danger-bg: var(--status-negative-bg);

    --radius: var(--radius-lg);
}
