@layer reset, base, components, utilities;

:root {
  /* Typography */
  --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  /* Spacing */
  --space-0: 0;
  --space-0-5: 0.125rem;
  --space-1: 0.25rem;
  --space-1-5: 0.375rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-24: 6rem;
  --space-32: 8rem;

  /* Layout */
  --content-width: 65ch;
  --main-padding-inline: 0.5rem;

  /* Z-index */
  --z-base: 1;
  --z-above: 10;
  --z-popup: 50;
  --z-modal: 100;
  --z-overlay: 200;

  /* Shadows */
  --shadow: 0 1px 3px 0 oklch(0% 0 0 / 0.1), 0 1px 2px -1px oklch(0% 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.1), 0 4px 6px -4px oklch(0% 0 0 / 0.1);

  /* Border radius */
  --radius: 0.25rem;
  --radius-lg: 0.5rem;
  --radius-full: 9999px;

  /* Focus ring */
  --focus-ring: 2px solid oklch(51.1% 0.262 276.96);

  /* Colors — Light mode */
  --color-canvas: oklch(97.78% 0.004 286.32);        /* neutral-50 */
  --color-surface: oklch(100% 0 0);                    /* white */
  --color-ink: oklch(14.49% 0.004 285.82);             /* neutral-900 */
  --color-ink-subtle: oklch(44.6% 0.016 285.75);       /* neutral-600 */
  --color-ink-muted: oklch(55.55% 0.014 285.5);        /* neutral-500 */
  --color-ink-faint: oklch(70.89% 0.01 286.07);        /* neutral-400 */
  --color-ink-inverted: oklch(100% 0 0);                /* white */

  --color-accent: oklch(51.1% 0.262 276.96);           /* indigo-600 */
  --color-accent-hover: oklch(39.58% 0.205 277.15);    /* indigo-800 */
  --color-accent-light: oklch(93.02% 0.04 276.79);     /* indigo-100 */
  --color-accent-dark: oklch(39.58% 0.205 277.15);     /* indigo-800 */

  --color-border: oklch(86.91% 0.006 286.29);          /* neutral-300 */
  --color-border-subtle: oklch(92.85% 0.006 286.32);   /* neutral-200 */

  --color-negative: oklch(57.71% 0.215 27.32);         /* red-600 */
  --color-negative-light: oklch(86.02% 0.06 25.43);    /* red-300 */
  --color-negative-dark: oklch(44.49% 0.173 26.53);    /* red-700 */
  --color-negative-ink: oklch(26.58% 0.1 25.72);       /* red-900 */

  --color-link: var(--color-accent);
  --color-link-hover: var(--color-accent-hover);

  --color-btn-primary-bg: oklch(58.52% 0.232 277.12);  /* indigo-500 */
  --color-btn-primary-bg-hover: oklch(45.69% 0.231 277.02); /* indigo-700 */
  --color-btn-primary-text: oklch(100% 0 0);

  --color-btn-secondary-bg: oklch(55.55% 0.014 285.5); /* neutral-500 */
  --color-btn-secondary-bg-hover: oklch(44.6% 0.016 285.75); /* neutral-600 */

  --color-tag-bg: oklch(93.02% 0.04 276.79);           /* indigo-100 */
  --color-tag-text: oklch(39.58% 0.205 277.15);        /* indigo-800 */
  --color-tag-bg-hover: oklch(82.31% 0.092 276.82);    /* indigo-300 */
  --color-tag-text-hover: oklch(32.42% 0.183 276.93);  /* indigo-900 */

  --color-timeline-dot: oklch(58.52% 0.232 277.12);    /* indigo-500 */
  --color-timeline-line: oklch(82.31% 0.092 276.82);   /* indigo-300 */
  --color-timeline-ring: var(--color-canvas);

  --color-settings-active-bg: oklch(51.1% 0.262 276.96); /* indigo-600 */
  --color-settings-active-text: oklch(100% 0 0);

  --color-subscribe-accent: oklch(58.52% 0.232 277.12); /* indigo-500 */
  --color-subscribe-accent-hover: oklch(45.69% 0.231 277.02); /* indigo-700 */
  --color-subscribe-icon: oklch(70.5% 0.153 53.39);    /* orange-400 */
}

/* Dark mode */
.color-scheme.color-scheme--dark {
  --color-canvas: oklch(0% 0 0);                        /* black */
  --color-surface: oklch(14.49% 0.004 285.82);          /* neutral-900 */
  --color-ink: oklch(92.85% 0.006 286.32);              /* neutral-100 */
  --color-ink-subtle: oklch(55.55% 0.014 285.5);        /* neutral-500 */
  --color-ink-muted: oklch(55.55% 0.014 285.5);
  --color-ink-faint: oklch(55.55% 0.014 285.5);
  --color-ink-inverted: oklch(100% 0 0);

  --color-accent: oklch(79.5% 0.184 86.047);             /* yellow-500 */
  --color-accent-hover: oklch(85.2% 0.199 91.936);      /* yellow-400 */
  --color-accent-light: oklch(90.5% 0.182 98.111);      /* yellow-300 */
  --color-accent-dark: oklch(37.14% 0.014 285.75);      /* neutral-700 */

  --color-border: oklch(55.55% 0.014 285.5);            /* neutral-500 */
  --color-border-subtle: oklch(27.08% 0.006 285.84);    /* neutral-800 */

  --color-link: var(--color-accent);
  --color-link-hover: var(--color-accent-hover);

  --color-btn-primary-bg: oklch(79.5% 0.184 86.047);    /* yellow-500 */
  --color-btn-primary-bg-hover: oklch(85.2% 0.199 91.936); /* yellow-400 */
  --color-btn-primary-text: oklch(39.6% 0.082 73.941);  /* yellow-900 */

  --color-tag-bg: oklch(90.5% 0.182 98.111);            /* yellow-300 */
  --color-tag-text: oklch(37.14% 0.014 285.75);         /* neutral-700 */
  --color-tag-bg-hover: oklch(79.5% 0.184 86.047);      /* yellow-500 */
  --color-tag-text-hover: oklch(14.49% 0.004 285.82);   /* neutral-900 */

  --color-timeline-dot: oklch(79.5% 0.184 86.047);      /* yellow-500 */
  --color-timeline-line: oklch(90.5% 0.182 98.111);     /* yellow-300 */
  --color-timeline-ring: oklch(0% 0 0);                  /* black */

  --color-settings-active-bg: oklch(68.1% 0.162 75.834); /* yellow-600 */
  --color-settings-active-text: oklch(100% 0 0);

  --color-subscribe-accent: oklch(68.1% 0.112 262.87);  /* indigo-400 */
  --color-subscribe-accent-hover: oklch(58.52% 0.232 277.12); /* indigo-500 */
  --color-subscribe-icon: oklch(70.5% 0.153 53.39);

  --shadow: 0 1px 3px 0 oklch(0% 0 0 / 0.3), 0 1px 2px -1px oklch(0% 0 0 / 0.3);
  --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.3), 0 4px 6px -4px oklch(0% 0 0 / 0.3);
}

@media (prefers-color-scheme: dark) {
  .color-scheme:not(.color-scheme--light) {
    --color-canvas: oklch(0% 0 0);
    --color-surface: oklch(14.49% 0.004 285.82);
    --color-ink: oklch(92.85% 0.006 286.32);
    --color-ink-subtle: oklch(55.55% 0.014 285.5);
    --color-ink-muted: oklch(55.55% 0.014 285.5);
    --color-ink-faint: oklch(55.55% 0.014 285.5);
    --color-ink-inverted: oklch(100% 0 0);

    --color-accent: oklch(79.5% 0.184 86.047);
    --color-accent-hover: oklch(85.2% 0.199 91.936);
    --color-accent-light: oklch(90.5% 0.182 98.111);
    --color-accent-dark: oklch(37.14% 0.014 285.75);

    --color-border: oklch(55.55% 0.014 285.5);
    --color-border-subtle: oklch(27.08% 0.006 285.84);

    --color-link: var(--color-accent);
    --color-link-hover: var(--color-accent-hover);

    --color-btn-primary-bg: oklch(79.5% 0.184 86.047);
    --color-btn-primary-bg-hover: oklch(85.2% 0.199 91.936);
    --color-btn-primary-text: oklch(39.6% 0.082 73.941);

    --color-tag-bg: oklch(90.5% 0.182 98.111);
    --color-tag-text: oklch(37.14% 0.014 285.75);
    --color-tag-bg-hover: oklch(79.5% 0.184 86.047);
    --color-tag-text-hover: oklch(14.49% 0.004 285.82);

    --color-timeline-dot: oklch(79.5% 0.184 86.047);
    --color-timeline-line: oklch(90.5% 0.182 98.111);
    --color-timeline-ring: oklch(0% 0 0);

    --color-settings-active-bg: oklch(68.1% 0.162 75.834);
    --color-settings-active-text: oklch(100% 0 0);

    --color-subscribe-accent: oklch(68.1% 0.112 262.87);
    --color-subscribe-accent-hover: oklch(58.52% 0.232 277.12);
    --color-subscribe-icon: oklch(70.5% 0.153 53.39);

    --shadow: 0 1px 3px 0 oklch(0% 0 0 / 0.3), 0 1px 2px -1px oklch(0% 0 0 / 0.3);
    --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.3), 0 4px 6px -4px oklch(0% 0 0 / 0.3);
  }
}
