.lio-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--control-h-sm);
  min-height: var(--control-h-sm);
  padding: var(--space-zero) 10px;
  gap: var(--space-xs3);
  border: var(--border-w) solid transparent;
  border-radius: var(--control-radius);
  background: transparent;
  color: var(--text);
  box-shadow: 0 0 0 0 rgb(0 0 0 / 0), 0 0 0 0 rgb(0 0 0 / 0);
  font: 500 14px/20px var(--font-geist);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease, box-shadow 150ms ease;
}

.lio-btn[data-size="sm"] {
  height: var(--control-h-sm);
  min-height: var(--control-h-sm);
  padding-inline: var(--space-sm);
}

.lio-btn[data-size="lg"] {
  height: var(--control-h-lg);
  min-height: var(--control-h-lg);
  padding-inline: var(--space-lg);
  font: 600 16px/24px var(--font-geist);
}

.lio-btn:focus-visible {
  outline: none;
  box-shadow: var(--ring-brand);
}

.lio-btn[data-variant^="destructive"]:focus-visible {
  box-shadow: var(--ring-error);
}

.lio-btn:disabled,
.lio-btn[data-state="disabled"],
.lio-btn[data-state="loading"] {
  cursor: not-allowed;
  pointer-events: none;
}

.lio-btn__icon,
.lio-btn__spinner {
  inline-size: var(--size-lg);
  block-size: var(--size-lg);
  flex: none;
}

.lio-btn[data-size="lg"] .lio-btn__icon,
.lio-btn[data-size="lg"] .lio-btn__spinner {
  inline-size: var(--size-xl);
  block-size: var(--size-xl);
}

.lio-btn__icon > svg {
  display: block;
  inline-size: 100%;
  block-size: 100%;
}

.lio-btn__spinner {
  border: var(--border-w-2) solid currentColor;
  border-inline-end-color: transparent;
  border-radius: var(--radius-full);
  animation: lio-spin 800ms linear infinite;
}

.lio-btn[data-variant="primary"] {
  background: var(--brand-solid);
  color: var(--text-inverse);
}

.lio-btn[data-variant="primary"]:hover {
  background: var(--brand-solid-hover);
}

.lio-btn[data-variant="primary"]:active,
.lio-btn[data-variant="primary"][data-state="selected"] {
  background: var(--brand-solid-selected);
}

.lio-btn[data-variant="primary"]:disabled,
.lio-btn[data-variant="primary"][data-state="disabled"] {
  background: var(--brand-solid-disabled);
}

.lio-btn[data-variant="accent"] {
  background: var(--brand-tertiary);
  color: var(--text-inverse);
}

.lio-btn[data-variant="accent"]:hover {
  background: var(--brand-tertiary-hover);
}

.lio-btn[data-variant="accent"]:active,
.lio-btn[data-variant="accent"][data-state="selected"] {
  background: var(--brand-tertiary-selected);
}

.lio-btn[data-variant="accent"]:disabled,
.lio-btn[data-variant="accent"][data-state="disabled"] {
  background: var(--brand-tertiary-disabled);
}

.lio-btn[data-variant="secondary"] {
  background: var(--brand-surface);
  color: var(--text-brand);
}

.lio-btn[data-variant="secondary"]:hover {
  background: var(--brand-surface-hover);
}

.lio-btn[data-variant="secondary"]:active,
.lio-btn[data-variant="secondary"][data-state="selected"] {
  background: var(--brand-surface-pressed);
}

.lio-btn[data-variant="secondary"]:disabled,
.lio-btn[data-variant="secondary"][data-state="disabled"] {
  opacity: var(--opacity-disabled);
}

.lio-btn[data-variant="outline"] {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border);
}

.lio-btn[data-variant="outline"]:hover {
  background: var(--surface-hover);
}

.lio-btn[data-variant="outline"]:active,
.lio-btn[data-variant="outline"][data-state="selected"] {
  background: var(--surface-pressed);
}

.lio-btn[data-variant="outline"]:disabled,
.lio-btn[data-variant="outline"][data-state="disabled"] {
  color: var(--text-disabled);
  border-color: var(--border-disabled);
}

.lio-btn[data-variant="ghost"] {
  color: var(--text);
}

.lio-btn[data-variant="ghost"]:hover {
  background: var(--surface-hover);
}

.lio-btn[data-variant="ghost"]:active,
.lio-btn[data-variant="ghost"][data-state="selected"] {
  background: var(--surface-pressed);
}

.lio-btn[data-variant="ghost"]:disabled,
.lio-btn[data-variant="ghost"][data-state="disabled"] {
  color: var(--text-disabled);
}

.lio-btn[data-variant="destructive"] {
  background: var(--error-solid);
  color: var(--text-inverse);
}

.lio-btn[data-variant="destructive"]:hover {
  background: var(--error-solid-hover);
}

.lio-btn[data-variant="destructive"]:disabled,
.lio-btn[data-variant="destructive"][data-state="disabled"] {
  background: var(--error-border-subtle);
}

.lio-btn[data-variant="destructive-outline"],
.lio-btn[data-variant="destructive-ghost"] {
  background: transparent;
  color: var(--brand-tertiary-hover);
}

.lio-btn[data-variant="destructive-outline"] {
  border-color: var(--border);
}

.lio-btn[data-variant="destructive-outline"]:hover,
.lio-btn[data-variant="destructive-ghost"]:hover {
  background: var(--error-bg);
}

.lio-btn[data-variant="destructive-outline"]:active,
.lio-btn[data-variant="destructive-outline"][data-state="selected"],
.lio-btn[data-variant="destructive-ghost"]:active,
.lio-btn[data-variant="destructive-ghost"][data-state="selected"] {
  background: var(--error-bg-hover);
}

.lio-btn[data-variant="destructive-outline"]:disabled,
.lio-btn[data-variant="destructive-outline"][data-state="disabled"],
.lio-btn[data-variant="destructive-ghost"]:disabled,
.lio-btn[data-variant="destructive-ghost"][data-state="disabled"] {
  color: var(--text-disabled);
}

.lio-btn[data-variant="link"] {
  min-height: auto;
  padding-inline: var(--space-zero);
  color: var(--text-brand-secondary);
}

.lio-btn[data-variant="link"]:hover {
  color: var(--border-brand-hover);
  text-decoration: underline;
  text-underline-offset: var(--space-xs2);
}

.lio-btn[data-variant="link"]:disabled,
.lio-btn[data-variant="link"][data-state="disabled"] {
  color: var(--text-disabled);
}
