.zx-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-radius: 4px;
  background-color: var(--zx-color-primary, #2563eb);
  color: #fff;
  font: inherit;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  align-self: flex-start;
  transition-property: color, background-color, border-color, box-shadow, transform;
  transition-duration: 0.3s;
  transition-timing-function: ease;
}
/* Size presets (T217): zero specificity, so the Padding / Typography controls (`.zx-<id>`) always win. */
:where(.zx-button) {
  padding: 12px 24px;
}
:where(.zx-button--sm) {
  padding: 8px 16px;
  font-size: 0.875em;
}
:where(.zx-button--md) {
  padding: 12px 24px;
}
:where(.zx-button--lg) {
  padding: 16px 32px;
  font-size: 1.125em;
}
:where(.zx-button--xl) {
  padding: 20px 40px;
  font-size: 1.25em;
}
.zx-button:hover {
  filter: brightness(1.08);
}
.zx-button__icon {
  display: inline-flex;
  align-items: center;
  line-height: 1;
}
.zx-button__icon svg {
  width: 1em;
  height: 1em;
  fill: currentColor;
}
