@layer reset, base, components, utilities;

:root {
  /* Spacing */
  --inline-space: 1ch;
  --inline-space-half: calc(var(--inline-space) / 2);
  --inline-space-double: calc(var(--inline-space) * 2);

  --block-space: 1rem;
  --block-space-half: calc(var(--block-space) / 2);
  --block-space-double: calc(var(--block-space) * 2);

  /* Typography */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --text-x-small: 0.75rem;
  --text-small: 0.85rem;
  --text-normal: 1rem;
  --text-medium: 1.1rem;
  --text-large: 1.5rem;
  --text-x-large: 2rem;

  /* Radius */
  --radius-small: 6px;
  --radius-medium: 10px;
  --radius-large: 16px;
  --radius-full: 99rem;

  /* Easing */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);

  /* Z-index scale */
  --z-nav: 30;
  --z-flash: 40;

  /* LCH color components: Lightness Chroma Hue */
  --lch-white: 100% 0 0;
  --lch-ink-darkest: 20% 0.01 260;
  --lch-ink-dark: 40% 0.01 260;
  --lch-ink-light: 60% 0.01 260;
  --lch-ink-lighter: 88% 0.006 260;
  --lch-ink-lightest: 96% 0.003 260;

  --lch-blue-dark: 45% 0.16 260;
  --lch-blue-medium: 58% 0.19 260;
  --lch-blue-lighter: 94% 0.02 260;

  --lch-green-dark: 45% 0.13 150;
  --lch-green-lighter: 94% 0.05 150;

  --lch-red-dark: 50% 0.19 25;
  --lch-red-lighter: 94% 0.04 25;

  --lch-yellow-dark: 55% 0.15 90;
  --lch-yellow-lighter: 94% 0.06 95;

  /* Semantic colors (light mode) */
  --color-canvas: oklch(var(--lch-white));
  --color-canvas-subtle: oklch(96% 0.003 260);
  --color-ink: oklch(var(--lch-ink-darkest));
  --color-ink-dark: oklch(var(--lch-ink-dark));
  --color-ink-light: oklch(var(--lch-ink-light));
  --color-border: oklch(var(--lch-ink-lighter));
  --color-border-subtle: oklch(var(--lch-ink-lightest));

  --color-link: oklch(var(--lch-blue-dark));
  --color-accent: oklch(var(--lch-blue-medium));
  --color-selected: oklch(var(--lch-blue-lighter));

  --color-positive: oklch(var(--lch-green-dark));
  --color-positive-bg: oklch(var(--lch-green-lighter));
  --color-negative: oklch(var(--lch-red-dark));
  --color-negative-bg: oklch(var(--lch-red-lighter));
  --color-warning: oklch(var(--lch-yellow-dark));
  --color-warning-bg: oklch(var(--lch-yellow-lighter));

  --color-ink-inverted: oklch(var(--lch-white));

  --focus-ring-color: var(--color-link);
  --focus-ring: 2px solid var(--focus-ring-color);
}

@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) {
    --lch-white: 16% 0.006 260;
    --lch-ink-darkest: 94% 0.004 260;
    --lch-ink-dark: 80% 0.006 260;
    --lch-ink-light: 60% 0.008 260;
    --lch-ink-lighter: 30% 0.008 260;
    --lch-ink-lightest: 24% 0.006 260;

    --lch-blue-lighter: 28% 0.06 260;
    --lch-green-lighter: 26% 0.05 150;
    --lch-red-lighter: 28% 0.06 25;
    --lch-yellow-lighter: 28% 0.06 95;

    --color-canvas-subtle: oklch(20% 0.006 260);
    --color-ink-inverted: oklch(16% 0.006 260);
  }
}

html[data-theme="dark"] {
  --lch-white: 16% 0.006 260;
  --lch-ink-darkest: 94% 0.004 260;
  --lch-ink-dark: 80% 0.006 260;
  --lch-ink-light: 60% 0.008 260;
  --lch-ink-lighter: 30% 0.008 260;
  --lch-ink-lightest: 24% 0.006 260;

  --lch-blue-lighter: 28% 0.06 260;
  --lch-green-lighter: 26% 0.05 150;
  --lch-red-lighter: 28% 0.06 25;
  --lch-yellow-lighter: 28% 0.06 95;

  --color-canvas-subtle: oklch(20% 0.006 260);
  --color-ink-inverted: oklch(16% 0.006 260);
}
