@layer modules {
  /* Article content styles - scoped to article tag */
  article {
    color: var(--color-slate-300);
    line-height: 1.8;
    font-family: var(--font-sans);
    background-color: transparent;

    /* Headings */

    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
      position: relative;
      scroll-margin-top: 2rem;
      transition: color 0.2s ease;
    }

    h1 {
      font-size: var(--text-4xl);
      font-weight: var(--font-weight-extrabold);
      color: var(--color-slate-50);
      margin-top: var(--spacing-12);
      margin-bottom: var(--spacing-6);
      padding-bottom: var(--spacing-3);

      &:first-child {
        margin-top: 0;
      }

      &::after {
        content: '';
        position: absolute;
        bottom: -1px;
        left: 0;
        width: 80px;
        height: 3px;
        background: linear-gradient(90deg, var(--color-sky-400), var(--color-indigo-400));
      }
    }

    h2 {
      font-size: var(--text-3xl);
      font-weight: var(--font-weight-bold);
      color: var(--color-slate-100);
      margin-top: var(--spacing-10);
      margin-bottom: var(--spacing-5);

      &:first-child {
        margin-top: 0;
      }
    }

    h3 {
      font-size: var(--text-2xl);
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-200);
      margin-top: var(--spacing-8);
      margin-bottom: var(--spacing-4);

      &:first-child {
        margin-top: 0;
      }
    }

    h4 {
      font-size: var(--text-xl);
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-200);
      margin-top: var(--spacing-6);
      margin-bottom: var(--spacing-3);
      position: relative;
      padding-bottom: var(--spacing-1);

      &:first-child {
        margin-top: 0;
      }

      &::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 0;
        width: 40px;
        height: 2px;
        background-color: var(--color-slate-700);
      }
    }

    h5 {
      font-size: var(--text-lg);
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-200);
      margin-top: var(--spacing-5);
      margin-bottom: var(--spacing-3);

      &:first-child {
        margin-top: 0;
      }
    }

    h6 {
      font-size: var(--text-base);
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-400);
      margin-top: var(--spacing-4);
      margin-bottom: var(--spacing-2);
      text-transform: uppercase;
      letter-spacing: 0.05em;

      &:first-child {
        margin-top: 0;
      }
    }

    /* Paragraphs */

    p {
      margin-bottom: var(--spacing-6);
      text-align: justify;
      text-justify: inter-word;

      &:last-child {
        margin-bottom: 0;
      }
    }

    /* Links */

    a {
      color: var(--color-sky-400);
      text-decoration: none;
      position: relative;
      transition: color 0.2s ease;

      &::after {
        content: '';
        position: absolute;
        bottom: -2px;
        left: 0;
        width: 0;
        height: 2px;
        background-color: var(--color-sky-400);
        transition: width 0.3s ease;
      }

      &:hover {
        color: var(--color-sky-300);

        &::after {
          width: 100%;
        }
      }
    }

    /* Lists */

    ul,
    ol {
      margin-bottom: var(--spacing-6);
      padding-left: var(--spacing-8);

      &:last-child {
        margin-bottom: 0;
      }
    }

    ul {
      list-style-type: disc !important;
      list-style-position: inside !important;

      li {
        display: list-item !important;
        margin-bottom: var(--spacing-2);
        padding-left: var(--spacing-2);
      }

      li::marker {
        color: var(--color-sky-400);
      }
    }

    ol {
      list-style-type: decimal !important;
      list-style-position: inside !important;

      li {
        display: list-item !important;
        margin-bottom: var(--spacing-2);
        padding-left: var(--spacing-2);
      }

      li::marker {
        color: var(--color-sky-400);
        font-weight: var(--font-weight-semibold);
      }
    }

    li {
      &:last-child {
        margin-bottom: 0;
      }

      > p {
        margin-bottom: var(--spacing-2);
      }
    }

    /* Blockquotes */

    blockquote {
      border-left-width: 4px;
      border-color: var(--color-sky-500);
      padding: var(--spacing-6);
      margin: var(--spacing-6) 0;
      background: linear-gradient(to right, color-mix(in srgb, var(--color-sky-500) 10%, transparent), transparent);
      border-radius: var(--radius-lg);
      position: relative;
      box-shadow: var(--shadow-sm);

      &::before {
        content: '"';
        position: absolute;
        top: var(--spacing-2);
        left: var(--spacing-3);
        font-size: 3rem;
        color: var(--color-sky-500);
        font-family: Georgia, serif;
        line-height: 1;
      }

      p {
        color: var(--color-slate-300);
        font-style: italic;
        margin-bottom: 0;
        font-size: var(--text-lg);
      }
    }

    /* Code */

    code {
      background-color: color-mix(in srgb, var(--color-white) 10%, transparent);
      color: var(--color-sky-300);
      padding: var(--spacing-1) var(--spacing-2);
      border-radius: var(--radius-sm);
      font-size: var(--text-sm);
      font-family: var(--font-mono);
      box-shadow: var(--shadow-xs);
    }

    pre {
      background-color: var(--color-slate-900);
      border: 1px solid var(--color-slate-700);
      color: var(--color-gray-100);
      padding: var(--spacing-6);
      border-radius: var(--radius-lg);
      overflow-x: auto;
      margin: var(--spacing-6) 0;
      position: relative;
      box-shadow: var(--shadow-md);

      &::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 3px;
        border-radius: 0.5rem 0.5rem 0 0;
      }

      code {
        background-color: transparent;
        color: var(--color-gray-100);
        padding: 0;
        font-size: var(--text-sm);
        line-height: 1.5;
      }
    }

    /* Tables */

    table {
      width: 100%;
      border-collapse: collapse;
      border: 1px solid var(--color-gray-200);
      margin: var(--spacing-6) 0;
      border-radius: var(--radius-lg);
      overflow: hidden;
      box-shadow: var(--shadow-sm);
    }

    th,
    td {
      border: 1px solid var(--color-gray-200);
      padding: var(--spacing-3) var(--spacing-4);
      text-align: left;
    }

    th {
      background: linear-gradient(to bottom, var(--color-slate-800), var(--color-slate-900));
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-100);
      position: relative;
    }

    tr:nth-child(even) {
      background-color: var(--color-slate-800);
    }

    tr:hover {
      background-color: var(--color-slate-700);
      transition: background-color 0.2s ease;
    }

    /* Images */

    img {
      max-width: 100%;
      height: auto;
      border-radius: var(--radius-lg);
      box-shadow: var(--shadow-md);
      margin: var(--spacing-6) 0;
      transition: transform 0.3s ease, box-shadow 0.3s ease;

      &:hover {
        transform: translateY(-2px);
        box-shadow: var(--shadow-lg);
      }
    }

    /* Horizontal rules */

    hr {
      border: 0;
      height: 1px;
      margin: var(--spacing-8) 0;
      background-image: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.1), transparent);
    }

    /* Strong and emphasis */

    strong {
      font-weight: var(--font-weight-semibold);
      color: var(--color-slate-100);
      position: relative;
      display: inline-block;

      &::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 3px;
        background-color: color-mix(in srgb, var(--color-amber-300) 30%, transparent);
        border-radius: 2px;
      }
    }

    em {
      font-style: italic;
      color: var(--color-slate-400);
    }
  }
}