@layer base {
  /* Body defaults */
  body {
    font-family: var(--font-body);
    font-size: var(--text-body);
    line-height: var(--line-height-body);
    color: var(--color-text);
    background-color: var(--color-bg);
  }

  /* Headings */
  h1 {
    font-size: var(--text-h1);
    color: var(--color-heading);
    line-height: var(--line-height-heading);
    margin-block-start: var(--space-3xl);
  }

  h2 {
    font-size: var(--text-h2);
    color: var(--color-heading);
    line-height: var(--line-height-heading);
    margin-block-start: var(--space-3xl);
  }

  h3 {
    font-size: var(--text-h3);
    color: var(--color-heading);
    line-height: var(--line-height-heading);
    margin-block-start: var(--space-3xl);
  }

  h4 {
    font-size: var(--text-h4);
    color: var(--color-heading);
    line-height: var(--line-height-heading);
    margin-block-start: var(--space-3xl);
  }

  /* No top margin when heading is first child */
  h1:first-child,
  h2:first-child,
  h3:first-child,
  h4:first-child {
    margin-block-start: 0;
  }

  /* Paragraphs */
  p {
    margin-block-start: var(--space-lg);
  }

  /* Links — using AA-compliant --color-accent-text, NOT raw --color-accent */
  a {
    color: var(--color-accent-text);
    text-decoration: underline;
    text-underline-offset: 0.2em;
  }

  a:hover {
    color: var(--color-accent-hover);
  }

  a:focus-visible {
    outline: 2px solid var(--color-accent-text);
    outline-offset: 2px;
    border-radius: 2px;
  }

  /* Small text */
  small {
    font-size: var(--text-sm);
  }

  /* Inline code */
  code {
    font-family: var(--font-mono);
    font-size: 0.9em;
    background-color: var(--color-surface);
    padding: 0.1em 0.3em;
    border-radius: 3px;
  }

  /* Text selection */
  ::selection {
    background-color: var(--color-accent);
    color: white;
  }

  /* Reduced motion preference */
  @media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
      animation-duration: 0.01ms !important;
      transition-duration: 0.01ms !important;
    }
  }
}
