@layer components {

  /* ── Base ─────────────────────────────────────────────────────────── */

  .tag {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    line-height: var(--leading-normal);
    background-color: var(--color-surface-tertiary);
    color: var(--color-text-secondary);
    border: none;
    border-radius: 0;
    text-decoration: none;
  }

  /* ── Accent variant ──────────────────────────────────────────────── */

  .tag-accent {
    background-color: var(--color-accent-subtle);
    color: var(--color-accent-text);
  }

  /* ── Interactive tags ────────────────────────────────────────────── */

  a.tag,
  button.tag {
    cursor: pointer;
    transition: background-color var(--duration-normal) ease-out;
  }

  a.tag:hover,
  button.tag:hover {
    background-color: var(--color-border-default);
  }

  a.tag:active,
  button.tag:active {
    background-color: var(--color-border-emphasis);
    transition: none;
  }

  a.tag-accent:hover,
  button.tag-accent:hover {
    background-color: var(--color-accent-muted);
  }

  a.tag-accent:active,
  button.tag-accent:active {
    background-color: var(--color-accent-muted);
    transition: none;
  }

  a.tag:focus-visible,
  button.tag:focus-visible {
    outline: 2px solid var(--color-accent-base);
    outline-offset: 2px;
  }

  /* ── Selected state ──────────────────────────────────────────────── */

  .tag.is-selected {
    background-color: var(--color-accent-subtle);
    border-left: 2px solid var(--color-accent-base);
    padding-left: calc(var(--space-2) - 2px);
    color: var(--color-accent-text);
  }

  /* ── Remove button ───────────────────────────────────────────────── */

  .tag-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    cursor: pointer;
    width: var(--icon-sm);
    height: var(--icon-sm);
    flex-shrink: 0;
    transition: color var(--duration-normal) ease-out;
  }

  .tag-remove:hover {
    color: var(--color-text-primary);
  }

  .tag-remove:focus-visible {
    outline: 2px solid var(--color-accent-base);
    outline-offset: 2px;
  }

  .tag-remove > svg {
    width: var(--icon-sm);
    height: var(--icon-sm);
  }
}
