/* Audaces Scale — canonical design tokens
   Source: audited WARC of audaces-scale.com, 2026-07-21. */

:root {
  color-scheme: light;

  /* Primitive palette */
  --as-color-ink-950: #050505;
  --as-color-ink-900: #0f1115;
  --as-color-ink-800: #17191f;
  --as-color-gray-900: #111827;
  --as-color-gray-700: #374151;
  --as-color-gray-600: #4b5563;
  --as-color-gray-500: #6b7280;
  --as-color-gray-400: #9ca3af;
  --as-color-gray-300: #d1d5db;
  --as-color-gray-200: #e5e7eb;
  --as-color-gray-100: #f3f4f6;
  --as-color-gray-50: #f9fafb;
  --as-color-white: #ffffff;
  --as-color-emerald-700: #047857;
  --as-color-emerald-600: #059669;
  --as-color-emerald-500: #10b981;
  --as-color-emerald-400: #34d399;
  --as-color-emerald-100: #d1fae5;
  --as-color-red-500: #ef4444;
  --as-color-amber-500: #f59e0b;
  --as-color-indigo-500: #6366f1;

  /* Semantic colors */
  --as-color-brand: var(--as-color-emerald-500);
  --as-color-brand-hover: var(--as-color-emerald-600);
  --as-color-brand-soft: color-mix(in srgb, var(--as-color-brand) 12%, transparent);
  --as-color-brand-on: var(--as-color-ink-950);
  --as-color-canvas: var(--as-color-gray-200);
  --as-color-surface: var(--as-color-gray-50);
  --as-color-surface-raised: var(--as-color-white);
  --as-color-surface-dark: var(--as-color-ink-900);
  --as-color-surface-dark-raised: var(--as-color-ink-800);
  --as-color-text: var(--as-color-gray-900);
  --as-color-text-secondary: var(--as-color-gray-500);
  --as-color-text-muted: var(--as-color-gray-400);
  --as-color-text-inverse: var(--as-color-white);
  --as-color-border: var(--as-color-gray-200);
  --as-color-border-subtle: var(--as-color-gray-100);
  --as-color-border-dark: rgb(255 255 255 / 10%);
  --as-color-danger: var(--as-color-red-500);
  --as-color-warning: var(--as-color-amber-500);
  --as-color-info: var(--as-color-indigo-500);

  /* Typography */
  --as-font-display: "Manrope", "Inter", system-ui, sans-serif;
  --as-font-body: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --as-font-weight-regular: 400;
  --as-font-weight-medium: 500;
  --as-font-weight-semibold: 600;
  --as-font-weight-bold: 700;
  --as-type-display-xl-size: clamp(3rem, 6vw, 4.5rem);
  --as-type-display-xl-line: 1.05;
  --as-type-display-lg-size: clamp(2.25rem, 4.5vw, 3rem);
  --as-type-display-lg-line: 1.08;
  --as-type-heading-size: clamp(1.875rem, 3vw, 2.25rem);
  --as-type-heading-line: 1.15;
  --as-type-title-size: 1.25rem;
  --as-type-title-line: 1.3;
  --as-type-body-lg-size: 1.125rem;
  --as-type-body-lg-line: 1.7;
  --as-type-body-size: 1rem;
  --as-type-body-line: 1.6;
  --as-type-small-size: 0.875rem;
  --as-type-small-line: 1.5;
  --as-type-caption-size: 0.75rem;
  --as-type-caption-line: 1.35;
  --as-tracking-display: -0.045em;
  --as-tracking-heading: -0.03em;
  --as-tracking-label: 0.08em;

  /* Spacing — 4px base */
  --as-space-0: 0;
  --as-space-1: 0.25rem;
  --as-space-2: 0.5rem;
  --as-space-3: 0.75rem;
  --as-space-4: 1rem;
  --as-space-5: 1.25rem;
  --as-space-6: 1.5rem;
  --as-space-8: 2rem;
  --as-space-10: 2.5rem;
  --as-space-12: 3rem;
  --as-space-16: 4rem;
  --as-space-20: 5rem;
  --as-space-24: 6rem;

  /* Shape */
  --as-radius-control: 0.75rem;
  --as-radius-card: 1rem;
  --as-radius-card-lg: 1.5rem;
  --as-radius-section: 2.5rem;
  --as-radius-pill: 9999px;

  /* Elevation */
  --as-shadow-xs: 0 1px 2px rgb(15 17 21 / 5%);
  --as-shadow-sm: 0 6px 20px rgb(15 17 21 / 7%);
  --as-shadow-lg: 0 24px 60px rgb(15 17 21 / 14%);
  --as-shadow-brand: 0 0 28px rgb(16 185 129 / 28%);

  /* Motion */
  --as-duration-fast: 150ms;
  --as-duration-base: 260ms;
  --as-duration-reveal: 700ms;
  --as-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --as-ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);

  /* Layout */
  --as-container-max: 80rem;
  --as-page-gutter: clamp(1rem, 3vw, 2rem);
  --as-section-block: clamp(4rem, 8vw, 6rem);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--as-color-brand) 72%, white);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
  }
}
