/**
 * Final luxury token contract (quiet, restrained, platform-wide).
 * This file is the canonical contract for spacing/type/radius/shadow/surface/motion.
 * Legacy variables are kept as aliases to avoid breakage while converging older layers.
 */
:root {
  /* -------------------------------------------------------------------------- */
  /* Canonical luxury contract                                                   */
  /* -------------------------------------------------------------------------- */

  /* Spacing */
  --lux-space-1: 0.25rem;
  --lux-space-2: 0.5rem;
  --lux-space-3: 0.75rem;
  --lux-space-4: 1rem;
  --lux-space-5: 1.25rem;
  --lux-space-6: 1.5rem;
  --lux-space-7: 2rem;
  --lux-space-8: 2.5rem;
  --lux-space-9: 3rem;
  --lux-space-10: 4rem;
  --lux-space-11: 5rem;
  --lux-space-12: 6rem;

  /* Typography */
  --lux-type-xs: 0.75rem;
  --lux-type-sm: 0.875rem;
  --lux-type-md: 1rem;
  --lux-type-lg: 1.125rem;
  --lux-type-xl: 1.375rem;
  --lux-type-2xl: 1.75rem;
  --lux-type-3xl: 2.25rem;
  --lux-type-display: clamp(2.25rem, 4vw, 3.25rem);

  /* Radius */
  --lux-radius-sm: 0.375rem;
  --lux-radius-md: 0.5rem;
  --lux-radius-lg: 0.75rem;
  --lux-radius-xl: 1rem;
  --lux-radius-2xl: 1.25rem;

  /* Shadows (quiet luxury: no aggressive bloom) */
  --lux-shadow-hairline: 0 0 0 1px rgba(15, 23, 42, 0.08);
  --lux-shadow-elevated: 0 6px 18px rgba(15, 23, 42, 0.08);
  --lux-shadow-floating: 0 14px 30px rgba(15, 23, 42, 0.12);

  /* Surfaces */
  --lux-surface-base: #ffffff;
  --lux-surface-elevated: #f8fafc;
  --lux-surface-muted: #f1f5f9;

  /* Motion (calm; long durations only for explicit decorative use; keep 150–250ms band) */
  --lux-motion-fast: 160ms ease;
  --lux-motion-base: 220ms ease;
  --lux-motion-slow: 360ms ease;

  /* Palette */
  --lux-color-ink: #0f172a;
  --lux-color-ink-muted: #475569;
  --lux-color-border: rgba(15, 23, 42, 0.12);
  --lux-color-border-strong: rgba(15, 23, 42, 0.2);
  --lux-color-accent: #0f172a;
  --lux-color-accent-contrast: #ffffff;
  /* Highlight follows tenant accent (was hardcoded gold #d4af37 — single-tenant residue).
     Keep a fallback that works on white surfaces if --school-accent is unset. */
  --lux-color-highlight: var(--school-accent, #10b981);

  /* -------------------------------------------------------------------------- */
  /* Legacy aliases (compatibility bridge)                                      */
  /* -------------------------------------------------------------------------- */
  --luxury-rich-black: var(--lux-color-ink);
  --luxury-gallery-white: var(--lux-surface-base);
  --luxury-platinum: #e5e7eb;
  --luxury-text: var(--lux-color-ink);
  --luxury-text-muted: var(--lux-color-ink-muted);
  --luxury-primary: var(--lux-color-accent);
  --luxury-primary-invert: var(--lux-color-accent-contrast);
  --luxury-accent: var(--lux-color-highlight);
  --luxury-accent-alt: var(--lux-color-accent);
  --luxury-border: var(--lux-color-border);
  --luxury-border-strong: var(--lux-color-border-strong);

  --luxury-section-padding: var(--lux-space-9);
  --luxury-gap: var(--lux-space-7);
  --luxury-gap-sm: var(--lux-space-5);
  --luxury-card-padding: var(--lux-space-6) var(--lux-space-7);
  --luxury-font-display: "Inter", system-ui, -apple-system, sans-serif;
  --luxury-font-body: "Inter", system-ui, -apple-system, sans-serif;
  --luxury-letter-spacing-caps: 0.08em;
  --luxury-letter-spacing-tight: -0.02em;
  --luxury-heading-weight: 700;
  --luxury-body-weight: 400;
  --luxury-motion-duration: var(--lux-motion-base);
  --luxury-motion-ease: ease;
  --luxury-motion-hover: var(--lux-motion-fast);
  --luxury-btn-radius: var(--lux-radius-sm);
  --luxury-btn-padding-x: var(--lux-space-6);
  --luxury-btn-padding-y: var(--lux-space-3);
  --luxury-btn-weight: 600;
  --luxury-surface: var(--lux-surface-base);
  --luxury-surface-subtle: var(--lux-surface-elevated);
  --luxury-surface-muted: var(--lux-surface-muted);
  --luxury-shadow-soft: var(--lux-shadow-elevated);
  --luxury-shadow-lift: var(--lux-shadow-floating);

  /* Statement header */
  --statement-header-bg: var(--lux-surface-base);
  --statement-header-fg: var(--lux-color-ink);
  --statement-header-height: calc(72px * 1.1); /* v4.01.43 +10% platform header band */
  --statement-logo-min-width: 150px;
  --statement-logo-font: "Inter", system-ui, -apple-system, sans-serif;
  --statement-logo-weight: 700;
  --statement-header-padding-x: var(--lux-space-7);
  --statement-header-padding-y: var(--lux-space-5);
}

html[data-theme="dark"],
html[data-bs-theme="dark"],
body.portal-backend-dark {
  --lux-color-ink: #e2e8f0;
  --lux-color-ink-muted: #94a3b8;
  --lux-color-border: rgba(148, 163, 184, 0.28);
  --lux-color-border-strong: rgba(148, 163, 184, 0.38);
  --lux-color-accent: #f8fafc;
  --lux-color-accent-contrast: #0f172a;
  --lux-surface-base: #0f172a;
  --lux-surface-elevated: #1e293b;
  --lux-surface-muted: #334155;
  --lux-shadow-hairline: 0 0 0 1px rgba(148, 163, 184, 0.2);
  --lux-shadow-elevated: 0 8px 20px rgba(0, 0, 0, 0.3);
  --lux-shadow-floating: 0 18px 36px rgba(0, 0, 0, 0.4);

  --statement-header-bg: #0f172a;
  --statement-header-fg: #f8fafc;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --lux-motion-fast: 0ms;
    --lux-motion-base: 0ms;
    --lux-motion-slow: 0ms;
    --luxury-motion-duration: 0ms;
    --luxury-motion-hover: 0ms;
  }
}
