/* Button component — see button.twig. Values map to the v2 Figma button sheet
   (node 1041:5108) and the design tokens in main.css (:root --secan-*). */

.secan-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--secan-space-xxs);
  min-width: 100px;
  padding: 12px var(--secan-space-m);
  border: 1px solid transparent;
  border-radius: var(--secan-radius-pill);
  font-family: var(--secan-font-body);
  font-weight: var(--secan-fw-medium);
  font-size: var(--secan-fs-label);
  line-height: var(--secan-lh-label);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  transition:
    background-color 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease,
    opacity 0.2s ease,
    box-shadow 0.2s ease;
}

.secan-button--large {
  font-size: var(--secan-fs-body);
  line-height: var(--secan-lh-body);
}

.secan-button:focus-visible {
  outline: none;
  box-shadow: var(--secan-focus-ring);
}

/* Icon */
.secan-button__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.secan-button__icon svg {
  display: block;
  width: 20px;
  height: 20px;
}

.secan-button--large .secan-button__icon svg {
  width: 24px;
  height: 24px;
}

/* Primary + icon (filled brand) */
.secan-button--primary,
.secan-button--icon {
  background-color: var(--secan-red);
  color: var(--secan-white);
}

.secan-button--primary:hover,
.secan-button--icon:hover {
  background-color: var(--secan-red-hover);
  color: var(--secan-white);
}

.secan-button--primary:active,
.secan-button--icon:active {
  background-color: var(--secan-red-active);
}

/* Secondary (filled blue) */
.secan-button--secondary {
  background-color: var(--secan-blue);
  color: var(--secan-white);
}

.secan-button--secondary:hover {
  opacity: 0.9;
  color: var(--secan-white);
}

.secan-button--secondary:active {
  opacity: 0.82;
}

/* Outline */
.secan-button--outline {
  background-color: transparent;
  border-color: var(--secan-blue);
  color: var(--secan-blue);
}

.secan-button--outline:hover {
  opacity: 0.9;
}

.secan-button--outline:active {
  opacity: 0.82;
}

/* Ghost (text only) */
.secan-button--ghost {
  background-color: transparent;
  color: var(--secan-blue);
}

.secan-button--ghost:hover {
  opacity: 0.9;
}

.secan-button--ghost:active {
  opacity: 0.82;
}

/* Icon-only (circular) */
.secan-button--icon-only {
  min-width: 0;
  width: 44px;
  height: 44px;
  padding: 0;
}

.secan-button--icon-only.secan-button--large {
  width: 48px;
  height: 48px;
}

.secan-button--icon-only-fill {
  background-color: var(--secan-red);
  color: var(--secan-white);
}

.secan-button--icon-only-fill:hover {
  background-color: var(--secan-red-hover);
}

.secan-button--icon-only-fill:active {
  background-color: var(--secan-red-active);
}

.secan-button--icon-only-outline {
  background-color: transparent;
  border-color: var(--secan-red);
  color: var(--secan-red);
}

.secan-button--icon-only-outline:hover {
  background-color: var(--secan-red);
  color: var(--secan-white);
}

.secan-button--icon-only-outline:active {
  background-color: var(--secan-red-active);
  border-color: var(--secan-red-active);
  color: var(--secan-white);
}

/* Disabled (all variants) */
.secan-button:disabled,
.secan-button[disabled] {
  background-color: var(--secan-chip-bg);
  border-color: transparent;
  color: var(--secan-disabled);
  cursor: not-allowed;
  pointer-events: none;
  opacity: 1;
}

/* Loading */
.secan-button.is-loading {
  pointer-events: none;
}

.secan-button.is-loading .secan-button__label,
.secan-button.is-loading .secan-button__icon {
  visibility: hidden;
}

.secan-button__spinner {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 18px;
  height: 18px;
  margin: -9px 0 0 -9px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: secan-button-spin 0.6s linear infinite;
}

@keyframes secan-button-spin {
  to {
    transform: rotate(360deg);
  }
}
