/*
  Auth-layout bridge for @shadcn/css + CLERP Tailwind (tw: prefix).

  Theme contract (@shadcn/css): semantic tokens are full CSS colors on
  --background / --primary / …; --color-* aliases point at those vars.
  Stock shadcn.css ships nova oklch — this file re-applies CLERP auth brand.

  Load order on layouts/application:
    1. tailwind
    2. shadcn
    3. shadcn_auth_bridge (this file)
*/

:root {
  --background: hsl(0 0% 100%);
  --foreground: hsl(0 0% 9%);

  --card: hsl(0 0% 100%);
  --card-foreground: hsl(0 0% 9%);

  --popover: hsl(0 0% 100%);
  --popover-foreground: hsl(0 0% 9%);

  /* Auth primary: near-black (shadcn nova), not Madmin purple/indigo */
  --primary: hsl(0 0% 9%);
  --primary-foreground: hsl(0 0% 98%);

  --secondary: hsl(0 0% 96.1%);
  --secondary-foreground: hsl(0 0% 9%);

  --muted: hsl(0 0% 96.1%);
  --muted-foreground: hsl(0 0% 45.1%);

  --accent: hsl(0 0% 96.1%);
  --accent-foreground: hsl(0 0% 9%);

  --destructive: hsl(0 84.2% 60.2%);
  --destructive-foreground: hsl(0 0% 98%);

  --border: hsl(0 0% 89.8%);
  --input: hsl(0 0% 89.8%);
  --ring: hsl(0 0% 9%);

  --radius: 0.5rem;
  --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
    "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";

  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --color-card: var(--card);
  --color-card-foreground: var(--card-foreground);
  --color-popover: var(--popover);
  --color-popover-foreground: var(--popover-foreground);
  --color-primary: var(--primary);
  --color-primary-foreground: var(--primary-foreground);
  --color-secondary: var(--secondary);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-muted: var(--muted);
  --color-muted-foreground: var(--muted-foreground);
  --color-accent: var(--accent);
  --color-accent-foreground: var(--accent-foreground);
  --color-destructive: var(--destructive);
  --color-destructive-foreground: var(--destructive-foreground);
  --color-border: var(--border);
  --color-input: var(--input);
  --color-ring: var(--ring);
}

/*
  Structural bits the React registry applies as utilities alongside cn-*.
  Kept here so HTML/ERB auth forms work without the full kit-structure rebuild.
*/
.cn-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  cursor: pointer;
  text-decoration: none;
}

/* Same as madmin bridge: opaque hover lift + lock FG against global a:hover */
a.cn-button.cn-button-variant-default {
  color: var(--primary-foreground);
  text-decoration: none;
}

@media (hover: hover) {
  a.cn-button.cn-button-variant-default:hover,
  .cn-button.cn-button-variant-default:hover {
    background-color: color-mix(in oklab, var(--primary) 82%, white);
    color: var(--primary-foreground);
    text-decoration: none;
  }
}

a.cn-button.cn-button-variant-default:focus-visible,
a.cn-button.cn-button-variant-default:active {
  color: var(--primary-foreground);
  text-decoration: none;
}

.cn-input {
  display: block;
  width: 100%;
}

.cn-label {
  display: inline-flex;
  align-items: center;
}

/* Native checkbox — kit cn-checkbox targets custom button-style controls */
.cn-native-checkbox {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  border-radius: 0.25rem;
  border: 1px solid var(--input);
  accent-color: var(--primary);
}

/*
  Kit ships only default + destructive (untinted). Auth has no --chart-*;
  emerald / amber / red hsl match Madmin chart-2 / chart-4 / destructive.
  See shadcn-css-madmin/references/alerts.md
*/
.cn-alert-variant-success {
  background-color: color-mix(in oklab, hsl(160 84% 39%) 12%, var(--card));
  border-color: color-mix(in oklab, hsl(160 84% 39%) 40%, var(--border));
  color: var(--foreground);
}

.cn-alert-variant-success > [data-slot="alert-title"],
.cn-alert-variant-success > svg {
  color: hsl(160 84% 39%);
}

.cn-alert-variant-success > [data-slot="alert-description"] {
  color: color-mix(in oklab, hsl(160 84% 39%) 75%, var(--foreground));
}

.cn-alert-variant-warning {
  background-color: color-mix(in oklab, hsl(38 92% 50%) 12%, var(--card));
  border-color: color-mix(in oklab, hsl(38 92% 50%) 40%, var(--border));
  color: var(--foreground);
}

.cn-alert-variant-warning > [data-slot="alert-title"],
.cn-alert-variant-warning > svg {
  color: hsl(38 92% 50%);
}

.cn-alert-variant-warning > [data-slot="alert-description"] {
  color: color-mix(in oklab, hsl(38 92% 50%) 70%, var(--foreground));
}

.cn-alert-variant-destructive,
.cn-alert-variant-danger {
  background-color: color-mix(in oklab, var(--destructive) 12%, var(--card));
  border-color: color-mix(in oklab, var(--destructive) 40%, var(--border));
  color: var(--foreground);
}

.cn-alert-variant-destructive > [data-slot="alert-title"],
.cn-alert-variant-destructive > svg,
.cn-alert-variant-danger > [data-slot="alert-title"],
.cn-alert-variant-danger > svg {
  color: var(--destructive);
}

.cn-alert-variant-destructive > [data-slot="alert-description"],
.cn-alert-variant-danger > [data-slot="alert-description"] {
  color: color-mix(in oklab, var(--destructive) 80%, var(--foreground));
}

.cn-alert:has(> svg) > [data-slot="alert-title"],
.cn-alert:has(> svg) > [data-slot="alert-description"] {
  grid-column-start: 2;
}

.cn-alert > [data-slot="alert-action"] {
  top: calc(var(--spacing, 0.25rem) * 1.25);
  right: calc(var(--spacing, 0.25rem) * 1.25);
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
}

.cn-alert > [data-slot="alert-action"] .cn-button.cn-button-size-icon {
  width: 1.75rem;
  height: 1.75rem;
  padding: 0;
  flex-shrink: 0;
}

.cn-alert > [data-slot="alert-action"] .cn-button .ti {
  display: block;
  font-size: 1rem;
  line-height: 1;
}
