@layer components {
  /* Blockquote styling — left-bordered quote blocks with accent color. */
  blockquote {
    --blockquote-bg: var(--app-blockquote-background-color);
    --blockquote-color: inherit;
    --blockquote-border: var(--app-blockquote-border-color);
    --blockquote-footer-color: var(--app-blockquote-footer-color);

    display: block;
    margin: var(--app-typography-spacing-vertical) 0;
    padding: var(--app-spacing);
    border-right: none;
    border-left: 0.25rem solid var(--app-blockquote-border-color);
    border-inline-start: 0.25rem solid var(--app-blockquote-border-color);
    border-inline-end: none;
    background-color: var(--blockquote-bg);
    color: var(--blockquote-color);
    border-left-color: var(--blockquote-border);
    border-inline-start-color: var(--blockquote-border);
    border-radius: var(--app-border-radius);
  }
  blockquote:has(small) {
    padding: 6px 8px;
  }
  blockquote p:last-child {
    margin: 0;
  }

  blockquote footer {
    margin-top: calc(var(--app-typography-spacing-vertical) * 0.5);
    color: var(--blockquote-footer-color);
  }

  blockquote[data-variant="success"] {
    --blockquote-bg: var(--badge-success-bg);
    --blockquote-color: var(--badge-success-color);
    --blockquote-border: var(--badge-success-border);
    --blockquote-footer-color: var(--badge-success-color);
  }

  blockquote[data-variant="error"],
  blockquote[data-variant="danger"] {
    --blockquote-bg: var(--badge-danger-bg);
    --blockquote-color: var(--badge-danger-color);
    --blockquote-border: var(--badge-danger-border);
    --blockquote-footer-color: var(--badge-danger-color);
  }

  blockquote[data-variant="info"] {
    --blockquote-bg: var(--badge-info-bg);
    --blockquote-color: var(--badge-info-color);
    --blockquote-border: var(--badge-info-border);
    --blockquote-footer-color: var(--badge-info-color);
  }

  blockquote[data-variant="warn"],
  blockquote[data-variant="warning"] {
    --blockquote-bg: var(--badge-warn-bg);
    --blockquote-color: var(--badge-warn-color);
    --blockquote-border: var(--badge-warn-border);
    --blockquote-footer-color: var(--badge-warn-color);
  }

  blockquote[data-variant="neutral"] {
    --blockquote-bg: var(--badge-neutral-bg);
    --blockquote-color: var(--badge-neutral-color);
    --blockquote-border: var(--badge-neutral-border);
    --blockquote-footer-color: var(--badge-neutral-color);
  }
}
