/* ============================================================
   GeoFazendas Button System
   Base .gf-btn class and all colour / size variants:
   primary, danger, secondary, ghost, ghost--danger, outline.
   ============================================================ */

/* GeoFazendas button system */
.btn.gf-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gf-button-gap);
  padding: var(--gf-button-padding-y) var(--gf-button-padding-x);
  border-radius: var(--gf-button-radius);
  border-width: 1.5px;
  font-weight: var(--gf-button-font-weight);
  font-size: var(--gf-button-font-size);
  line-height: var(--gf-button-line-height);
  letter-spacing: var(--gf-button-letter-spacing);
  transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease,
    transform 0.2s ease;
  box-shadow: none;
  min-height: 2.75rem;
}

.btn.gf-btn .material-icons,
.btn.gf-btn .material-icons-outlined,
.btn.gf-btn i {
  font-size: 1.1em;
  line-height: 1;
}

.btn.gf-btn:focus,
.btn.gf-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 0.2rem var(--gf-color-focus-ring);
}

.btn.gf-btn:active {
  transform: translateY(1px);
}

.btn.gf-btn:disabled,
.btn.gf-btn.disabled {
  opacity: 0.65;
  pointer-events: none;
}

.btn-lg.gf-btn {
  padding: 0.85rem 2rem;
  font-size: 16px;
}

.btn.gf-btn-compact {
  min-height: 0;
  min-width: 0;
  padding: 0.5rem;
  border-radius: 0.75rem;
}

.btn.gf-btn-primary {
  background-color: var(--gf-color-primary);
  border-color: var(--gf-color-primary);
  color: var(--gf-color-primary-contrast);
}

.btn.gf-btn-primary:hover,
.btn.gf-btn-primary:focus {
  background-color: var(--gf-color-primary-hover);
  border-color: var(--gf-color-primary-hover);
  color: var(--gf-color-primary-contrast);
}

.btn.gf-btn-primary:disabled,
.btn.gf-btn-primary.disabled {
  background-color: rgba(var(--gf-color-primary-rgb), 0.55);
  border-color: rgba(var(--gf-color-primary-rgb), 0.55);
  color: var(--gf-color-primary-contrast);
}

.btn.gf-btn-danger {
  background-color: #dc2626;
  border-color: #dc2626;
  color: #fff;
}

.btn.gf-btn-danger:hover,
.btn.gf-btn-danger:focus {
  background-color: #b91c1c;
  border-color: #b91c1c;
  color: #fff;
}

.btn.gf-btn-danger:disabled,
.btn.gf-btn-danger.disabled {
  background-color: rgba(220, 38, 38, 0.55);
  border-color: rgba(220, 38, 38, 0.55);
  color: rgba(255, 255, 255, 0.9);
}

.btn.gf-btn-secondary {
  background-color: rgba(var(--gf-color-primary-rgb), 0.12);
  border-color: rgba(var(--gf-color-primary-rgb), 0.18);
  color: var(--gf-color-primary);
}

.btn.gf-btn-secondary:hover,
.btn.gf-btn-secondary:focus {
  background-color: rgba(var(--gf-color-primary-rgb), 0.16);
  border-color: var(--gf-color-primary);
  color: var(--gf-color-primary);
}

.btn.gf-btn-secondary:disabled,
.btn.gf-btn-secondary.disabled {
  background-color: rgba(var(--gf-color-primary-rgb), 0.08);
  border-color: rgba(var(--gf-color-primary-rgb), 0.12);
  color: rgba(var(--gf-color-primary-rgb), 0.55);
}

.btn.gf-btn-ghost {
  background-color: transparent;
  border-color: var(--gf-color-neutral-300);
  color: var(--gf-color-neutral-700);
}

.btn.gf-btn-ghost:hover,
.btn.gf-btn-ghost:focus {
  background-color: var(--gf-color-primary-soft);
  border-color: var(--gf-color-primary);
  color: var(--gf-color-primary);
}

.btn.gf-btn-ghost:disabled,
.btn.gf-btn-ghost.disabled {
  background-color: transparent;
  border-color: var(--gf-color-neutral-200);
  color: var(--gf-color-neutral-500);
}

.btn.gf-btn-ghost--danger {
  background-color: transparent;
  border-color: var(--gf-color-neutral-300);
  color: var(--gf-color-neutral-700);
}

.btn.gf-btn-ghost--danger:hover,
.btn.gf-btn-ghost--danger:focus {
  background-color: rgba(220, 38, 38, 0.08);
  border-color: #dc2626;
  color: #dc2626;
}

.btn.gf-btn-ghost--danger:disabled,
.btn.gf-btn-ghost--danger.disabled {
  background-color: transparent;
  border-color: var(--gf-color-neutral-200);
  color: var(--gf-color-neutral-500);
}

/* Outline buttons - for white/light backgrounds */
.btn.gf-btn-outline,
.btn.gf-btn-outline-primary {
  background-color: transparent;
  border: 1.5px solid var(--gf-color-primary);
  color: var(--gf-color-primary);
}

.btn.gf-btn-outline:hover,
.btn.gf-btn-outline:focus,
.btn.gf-btn-outline-primary:hover,
.btn.gf-btn-outline-primary:focus {
  background-color: var(--gf-color-primary);
  border-color: var(--gf-color-primary);
  color: var(--gf-color-primary-contrast);
}

.btn.gf-btn-outline:disabled,
.btn.gf-btn-outline.disabled,
.btn.gf-btn-outline-primary:disabled,
.btn.gf-btn-outline-primary.disabled {
  background-color: transparent;
  border-color: rgba(var(--gf-color-primary-rgb), 0.4);
  color: rgba(var(--gf-color-primary-rgb), 0.5);
}
