/* Botones base */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  height: 44px;
  min-height: 44px;
  border-radius: 10px;
  border: 1px solid transparent;
  font-weight: 700;
  font-size: 0.95rem;
  cursor: pointer;
  line-height: 1;
  transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}

.button:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
}

.button:active {
  transform: scale(0.98);
}

.button:disabled,
.button[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: var(--disabled-opacity);
  box-shadow: none;
}

/* Dimming the brand-orange background via opacity reads as muddy brown, so
   disabled secondary (principal) buttons swap to a flat neutral instead. */
.button--secondary:disabled,
.button--secondary[aria-disabled="true"] {
  background: var(--color-border);
  color: var(--color-text-muted);
  opacity: 1;
}

.button:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.button--primary { background: var(--color-primary); color: #fff; }
.button--secondary { background: var(--color-secondary); color: #fff; }
.button--ghost { background: transparent; border-color: var(--color-border); color: var(--color-text); }
.button--outline { background: transparent; border-color: var(--color-text); color: var(--color-text); }
.button--whatsapp { background: var(--color-whatsapp); color: #fff; }

.button__icon { display:inline-flex; width:1em; height:1em; align-items:center; justify-content:center; }

/* Loading state: accessible spinner inside button */
.button--loading { position: relative; pointer-events: none; opacity: 0.95; }
.button--loading .button__text { opacity: 0.9; }
.button--loading::after {
  content: '';
  position: absolute;
  left: 0.6rem;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.25);
  border-top-color: rgba(255,255,255,0.9);
  animation: spin 1s linear infinite;
}

/* smaller visual for outline/ghost */
.button--ghost, .button--outline { background: transparent; padding: 0.45rem 0.9rem; }

@media (prefers-reduced-motion: reduce) { .button--loading::after { animation: none; } }