/*
 * Herald Base Styles
 * Global element defaults
 */

@layer base {
  /* ==========================================================================
     Body
     ========================================================================== */

  body {
    font-family: var(--font-sans);
    font-size: var(--text-base);
    line-height: var(--leading-normal);
    color: var(--color-ink);
    background-color: var(--color-canvas);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }

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

  /* ==========================================================================
     Headings
     ========================================================================== */

  h1, h2, h3 {
    font-weight: var(--font-semibold);
    line-height: var(--leading-tight);
    color: var(--color-ink);
  }

  h1 {
    font-size: var(--text-3xl);
  }

  h2 {
    font-size: var(--text-2xl);
  }

  h3 {
    font-size: var(--text-xl);
  }

  h4 {
    font-size: var(--text-lg);
    font-weight: var(--font-medium);
  }

  /* ==========================================================================
     Links
     ========================================================================== */

  a {
    color: var(--color-link);
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-out);

    &:hover {
      color: var(--color-link-hover);
      text-decoration: underline;
    }
  }

  /* ==========================================================================
     Focus
     ========================================================================== */

  :focus-visible {
    outline: 2px solid var(--color-focus);
    outline-offset: 2px;
  }

  /* ==========================================================================
     Selection
     ========================================================================== */

  ::selection {
    background-color: var(--color-info-canvas);
  }

  /* ==========================================================================
     Code
     ========================================================================== */

  code {
    font-family: var(--font-mono);
    font-size: 0.875em;
    background-color: var(--color-surface-muted);
    padding: var(--space-0_5) var(--space-1);
    border-radius: var(--radius-sm);
  }

  pre {
    font-family: var(--font-mono);
    font-size: var(--text-sm);
    background-color: var(--color-surface);
    padding: var(--space-4);
    border-radius: var(--radius-lg);
    overflow-x: auto;

    & code {
      background: none;
      padding: 0;
    }
  }

  /* ==========================================================================
     Horizontal Rule
     ========================================================================== */

  hr {
    border-color: var(--color-border);
    border-block-start-width: 1px;
    margin-block: var(--space-6);
  }

  /* ==========================================================================
     Paragraphs in content
     ========================================================================== */

  p + p {
    margin-block-start: var(--space-4);
  }
}
