/* Layout layer - Grid and page structure */
@layer layout {
  body {
    display: grid;
    grid-template-rows: auto 1fr auto;
    grid-template-columns: 1fr min(var(--wide-width), calc(100% - var(--gutter) * 2)) 1fr;

    & > * {
      grid-column: 2;
    }
  }

  .site-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm);
    padding-block: var(--space-md);
    border-block-end: 1px solid var(--color-border);
  }

  .logo {
    font-size: var(--font-size-lg);
    font-weight: 700;
    text-decoration: none;
    color: var(--color-accent);

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

  .content {
    padding-block: var(--space-xl);
  }

  .hero {
    margin-block-end: var(--space-2xl);

    & h1 {
      margin-block-end: var(--space-md);
    }

    & .tagline {
      font-size: var(--font-size-lg);
      color: var(--color-text-muted);
      line-height: var(--line-height-relaxed);
      max-width: 60ch;
    }

    & .hero-cta {
      margin-block-start: var(--space-lg);
    }

    & .hero-cta .btn {
      display: inline-flex;
      padding: var(--space-sm) var(--space-lg);
      font-size: var(--font-size-base);
      background-color: var(--color-accent);
      color: var(--color-bg);
      text-decoration: none;
      border: none;

      &:hover {
        background-color: var(--color-accent-hover);
      }
    }
  }

  .posts {
    & h2 {
      margin-block-end: var(--space-lg);
      color: var(--color-text-muted);
      font-size: var(--font-size-sm);
      text-transform: uppercase;
      letter-spacing: 0.1em;
    }
  }

  .posts-grid {
    display: grid;
    gap: var(--space-md);
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 30ch), 1fr));
  }

  .site-footer {
    padding-block: var(--space-lg);
    border-block-start: 1px solid var(--color-border);
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);

    & .prompt {
      color: var(--color-accent);
    }

    & .footer-links {
      margin-block-start: var(--space-sm);
    }
  }

  /* Content width constraint */
  .content-narrow {
    max-width: var(--content-width);
  }

  /* Full bleed for wide elements */
  .full-bleed {
    grid-column: 1 / -1;
    width: 100%;
  }

  /* Post article layout */
  .post {
    max-width: var(--content-width);
  }

  .post-header {
    margin-block-end: var(--space-xl);
  }

  .post-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2xs);
    margin-block-end: var(--space-sm);
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);

    & .prompt {
      color: var(--color-accent);
    }

    & .separator {
      color: var(--color-text-faint);
    }
  }

  .post-header h1 {
    margin-block-end: var(--space-md);
  }

  .post-tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2xs);
  }

  .post-content {
    & > * + * {
      margin-block-start: var(--space-md);
    }

    & h2 {
      margin-block-start: var(--space-xl);
      margin-block-end: var(--space-sm);
      color: var(--color-accent);
    }

    & h3 {
      margin-block-start: var(--space-lg);
      margin-block-end: var(--space-xs);
    }

    & p {
      line-height: var(--line-height-relaxed);
    }

    & code:not(code-block code) {
      background-color: var(--color-surface);
      padding: 0.125em 0.375em;
      border-radius: var(--radius-sm);
      font-size: 0.9em;
    }

    & ul,
    & ol {
      padding-inline-start: var(--space-md);

      & li + li {
        margin-block-start: var(--space-2xs);
      }
    }

    & blockquote {
      padding-inline-start: var(--space-md);
      border-inline-start: 3px solid var(--color-accent);
      color: var(--color-text-muted);
      font-style: italic;
    }
  }
}
