@layer components {
  /*
    Conteúdo rico (serviço RichText — ADR-028). Saída **sem estilo inline**: tudo vem daqui, por
    classe + token (ADR-010), então o tema/a11y continuam mandando (ADR-016).

    Tokens: `--ink`, `--line`, `--civic-surface-*`, `--tenant-radius`, `--font-content`.
  */

  .richtext-align--left {
    text-align: left;
  }

  .richtext-align--center {
    text-align: center;
  }

  .richtext-align--right {
    text-align: right;
  }

  .richtext-indent--1 {
    padding-inline-start: calc(var(--space-gutter, 1rem) * 1);
  }

  .richtext-indent--2 {
    padding-inline-start: calc(var(--space-gutter, 1rem) * 2);
  }

  .richtext-indent--3 {
    padding-inline-start: calc(var(--space-gutter, 1rem) * 3);
  }

  .richtext-indent--4 {
    padding-inline-start: calc(var(--space-gutter, 1rem) * 4);
  }

  /* Citação e linha horizontal */
  .prose blockquote {
    margin-inline: 0;
    margin-block: 0 1.5rem;
    padding-inline-start: 1.5rem;
    border-inline-start: 0.25rem solid var(--tenant-primary, currentColor);
    color: var(--ink);
  }

  .prose hr {
    margin-block: 2rem;
    border: 0;
    border-block-start: var(--border) solid var(--line);
  }

  .prose mark.richtext-mark {
    background-color: var(--civic-yellow);
    color: var(--civic-on-yellow);
    border-radius: calc(var(--tenant-radius, 0.5rem) / 2);
    padding-inline: 0.25rem;
  }

  /* Conteúdo marcado como defasado (ADR-028: marca `outdated`) */
  .prose del.richtext-outdated {
    color: var(--ink-muted);
    text-decoration-color: var(--status-danger);
  }

  /* Tabela: região rolável alcançável por teclado, semântica com `thead`/`scope` */
  .richtext-table {
    max-inline-size: 100%;
    overflow-x: auto;
    margin-block: 2rem;
    border: var(--border) solid var(--line);
    border-radius: var(--tenant-radius);
  }

  .richtext-table table {
    inline-size: 100%;
    border-collapse: collapse;
  }

  .richtext-table caption {
    padding: 0.75rem;
    color: var(--ink-muted);
    text-align: start;
  }

  .richtext-table :is(th, td) {
    padding: 0.75rem;
    border-block-start: var(--border) solid var(--line);
    text-align: start;
    vertical-align: top;
  }

  .richtext-table thead th {
    background-color: var(--civic-surface-low, transparent);
  }

  /* Colunas: grid real (nunca `float`), DOM = ordem visual (WCAG 1.3.2/2.4.3) */
  .richtext-columns {
    display: grid;
    gap: var(--space-gutter, 1rem);
    grid-template-columns: 1fr;
    margin-block: 2rem;
  }

  .richtext-column {
    min-inline-size: 0;
    padding-inline: 1rem;
    border-inline-start: var(--border) solid var(--line);
  }

  .richtext-column:first-child {
    border-inline-start: 0;
    padding-inline-start: 0;
  }

  .richtext-column:last-child {
    padding-inline-end: 0;
  }

  @media (min-width: 60rem) {
    .richtext-columns {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  /* Mídia: `<picture>` com largura/intenção por classe (`sizes` calculado no parser) */
  .prose .richtext-figure {
    margin-block: 2rem;
    margin-inline: 0;
  }

  .prose .richtext-figure picture,
  .prose .richtext-figure img {
    inline-size: 100%;
    block-size: auto;
    border-radius: var(--tenant-radius);
  }

  .prose .richtext-figure--25 {
    inline-size: 25%;
  }

  .prose .richtext-figure--50 {
    inline-size: 50%;
  }

  .prose .richtext-figure--75 {
    inline-size: 75%;
  }

  .prose .richtext-figure--100 {
    inline-size: 100%;
  }

  .prose .richtext-figure--center {
    margin-inline: auto;
  }

  .prose .richtext-figure--left {
    margin-inline-end: auto;
  }

  .prose .richtext-figure--right {
    margin-inline-start: auto;
  }

  .prose .richtext-figure figcaption {
    margin-block-start: 0.5rem;
    color: var(--ink-muted);
    font-size: 0.875rem;
  }

  /* Arquivo (PDF/documento): link real, sem `onclick` inline (CSP) */
  .prose .richtext-file {
    margin-block: 2rem;
    margin-inline: 0;
  }

  .prose .richtext-file__link {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem;
    border: var(--border) solid var(--line);
    border-radius: var(--tenant-radius);
    background-color: var(--civic-surface-low, transparent);
    text-decoration: none;
  }

  .prose .richtext-file__type {
    padding-inline: 0.5rem;
    padding-block: 0.25rem;
    border-radius: calc(var(--tenant-radius, 0.5rem) / 2);
    background-color: var(--tenant-primary, currentColor);
    color: var(--color-primary-content, currentColor);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
  }

  .prose .richtext-file__title {
    color: var(--tenant-link, inherit);
    font-weight: 600;
    text-decoration: underline;
  }

  /* Vídeo: link (nenhuma requisição a terceiros — CSP/ADR-002) */
  .prose .richtext-embed {
    margin-block: 2rem;
    margin-inline: 0;
  }

  .prose .richtext-embed__link {
    display: block;
    padding: 1rem;
    border-inline-start: 0.25rem solid var(--status-info);
    background-color: var(--civic-surface-low, transparent);
    font-weight: 600;
  }
}
