
@plugin "@tailwindcss/typography";
@plugin 'tailwind-scrollbar';

@utility prose {
  blockquote p:first-of-type::before {
    content: none;
  }
  blockquote p:first-of-type::after {
    content: none;
  }
}

@utility article-background {
  @apply bg-article-background dark:bg-article-background-dark;
}

@utility article-blockquote {
  @apply prose-blockquote:font-normal prose-blockquote:not-italic prose-blockquote:ps-6 prose-blockquote:border-l-2 prose-blockquote:border-primary prose-blockquote:text-blockquote-foreground dark:prose-blockquote:text-blockquote-foreground-dark;
}

@utility article-code {
  @apply prose-code:rounded-lg prose-code:px-1 prose-code:py-0.5 prose-code:before:content-none prose-code:after:content-none prose-code:text-code-foreground dark:prose-code:text-code-foreground-dark prose-code:bg-code-background dark:prose-code:bg-code-background-dark prose-code:font-code prose-pre:!bg-pre-background dark:prose-pre:!bg-pre-background-dark; 
}

@utility article-heading {
  @apply prose-headings:text-heading-foreground dark:prose-headings:text-heading-foreground-dark prose-h1:text-article-title-foreground dark:prose-h1:text-article-title-foreground-dark prose-h1:font-title prose-headings:font-heading;
}

@utility article-image {
  @apply prose-img:mx-auto;
}

@utility article-link {
 @apply prose-a:text-primary prose-a:opacity-[0.7] prose-a:hover:opacity-100; 
}

@utility article-list {
  @apply prose-li:font-paragraph prose-li:marker:text-li-marker-foreground dark:prose-li:marker:text-li-marker-foreground-dark;
}

@utility article-paragraph {
  @apply text-paragraph-foreground dark:text-paragraph-foreground-dark prose-p:font-paragraph;
}

@utility article-prose {
  @apply prose dark:prose-invert lg:prose-lg xl:prose-xl 2xl:prose-2xl;
}

@utility article-scroll {
  @apply overflow-x-hidden overflow-y-auto scrollbar-thin;
}

@utility article-separator {
  @apply prose-hr:border-t-2 prose-hr:border-hr-border dark:prose-hr:border-hr-border-dark;
}

@utility article-strong {
  @apply prose-strong:text-strong-foreground dark:prose-strong:text-strong-foreground-dark;
}

@utility article-table {
  @apply prose-table:font-paragraph prose-thead:border-hr-border prose-tr:border-hr-border dark:prose-thead:border-hr-border-dark dark:prose-tr:border-hr-border-dark;
}

@utility article {
  @apply text-base py-8 grow-1 max-w-full article-background article-blockquote article-code article-heading article-image article-link article-list article-paragraph article-prose article-separator article-scroll article-strong article-table;

  ::selection {
    @apply bg-primary/20 dark:bg-primary/25;
  }
}

@utility article-content {
  @apply grid-layout;

  &.wide-page {
    @apply px-4 md:px-8;
    > * {
      grid-column: full;
    }
    > .article-body > * {
      grid-column: full;
    }

    > .article-body > .code-extra > * {
      grid-column: full;
    }
  }

  &.wide-table {
    > table {
      grid-column: full;
    }
    > .article-body > table {
      grid-column: full;
    }
  }
}


@utility article-body {
  @apply col-[full]! grid-layout;

  .code-extra {
    display: contents;
  }

  .code-extra > * {
    grid-column: content;
  }
}

@utility article-title {
  @apply text-h1 font-bold;
}

@utility article-subtitle {
  @apply mb-2 text-h2 text-article-subtitle-foreground dark:text-article-subtitle-foreground-dark;
}

@utility article-description-section {
  @apply flex flex-col lg:flex-row justify-end;
}

@utility article-description {
  @apply text-base !font-heading !m-0;
}


@utility article-meta {
  @apply flex flex-col lg:items-end gap-2 w-full;
}

@utility article-author {
  @apply font-heading;
}

@utility article-date {
  @apply font-heading;
}

@utility article-tags {
  @apply flex flex-wrap flex-row lg:flex-row-reverse gap-4;
}

@utility article-tag {
  @apply no-underline text-sm rounded-4xl py-1 px-2.5 border border-badge-border dark:border-badge-border-dark bg-badge-background dark:bg-badge-background-dark font-menu text-badge-foreground dark:text-badge-foreground-dark;
}

@utility article-cover {
  @apply w-full max-h-48 lg:max-h-[30rem] object-cover;

  .article-cover-image {
    @apply w-full h-full object-cover;
  }
}

@utility article-cover-center {
  @apply object-center;
}

@source inline("prose");
@source inline("not-prose");
@source inline("article-background");
@source inline("article-blockquote");
@source inline("article-code");
@source inline("article-heading");
@source inline("article-image");
@source inline("article-link");
@source inline("article-wikilink");
@source inline("article-list");
@source inline("article-paragraph");
@source inline("article-prose");
@source inline("article-scroll");
@source inline("article-separator");
@source inline("article-strong");
@source inline("article-table");
@source inline("article");
@source inline("article-content");
@source inline("article-body");
@source inline("article-title");
@source inline("article-subtitle");
@source inline("article-description-section");
@source inline("article-description");
@source inline("article-meta");
@source inline("article-author");
@source inline("article-date");
@source inline("article-tags");
@source inline("article-tag");
@source inline("article-cover");
@source inline("article-cover-center"); /** cover without position **/