/**
 * GeoFazendas Form Controls
 * Base styles for form inputs, textareas, labels, and validation states.
 * Split from components/forms.css
 */

/* =============================================================================
   Form Control Base Styles (inputs, selects, textareas)
   ============================================================================= */
.gf-form .form-control,
.gf-form .gf-form-control {
  min-height: var(--gf-field-min-height);
  padding: var(--gf-field-padding-y) var(--gf-field-padding-x);
  font-size: var(--gf-field-font-size);
  font-weight: var(--gf-field-font-weight);
  line-height: var(--gf-field-line-height);
  color: var(--gf-color-neutral-900);
  background-color: var(--gf-field-bg);
  border: 1.5px solid var(--gf-field-border);
  border-radius: var(--gf-button-radius);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.gf-form .form-control::placeholder,
.gf-form .gf-form-control::placeholder {
  color: var(--gf-field-placeholder);
}

/* Focus state - green ring */
.gf-form .form-control:focus,
.gf-form .gf-form-control:focus,
.gf-form input:focus,
.gf-form select:focus,
.gf-form textarea:focus {
  --tw-ring-shadow: none !important;
  outline: none !important;
  border-color: var(--gf-color-primary) !important;
  box-shadow: 0 0 0 0.2rem var(--gf-color-focus-ring) !important;
}

/* Hover state */
.gf-form .form-control:hover:not(:disabled):not(:focus),
.gf-form .gf-form-control:hover:not(:disabled):not(:focus),
.gf-form input:hover:not(:disabled):not(:focus),
.gf-form select:hover:not(:disabled):not(:focus),
.gf-form textarea:hover:not(:disabled):not(:focus) {
  border-color: var(--gf-field-border-hover) !important;
}

/* Disabled state */
.gf-form .form-control:disabled,
.gf-form .gf-form-control:disabled,
.gf-form .form-control.is-disabled,
.gf-form .gf-form-control.is-disabled {
  background-color: rgba(148, 163, 184, 0.18);
  cursor: not-allowed;
  opacity: 0.65;
}

/* Invalid/Error state */
.gf-form .form-control.is-invalid,
.gf-form .gf-form-control.is-invalid,
.gf-form .form-control:invalid:not(:placeholder-shown),
.gf-form .is-invalid .form-control {
  border-color: #dc2626 !important;
}

.gf-form .form-control.is-invalid:focus,
.gf-form .gf-form-control.is-invalid:focus {
  box-shadow: 0 0 0 0.2rem rgba(220, 38, 38, 0.2) !important;
}

/* Warning state */
.gf-form .form-control.is-warning,
.gf-form .gf-form-control.is-warning {
  border-color: #d97706;
}

.gf-form .form-control.is-warning:focus,
.gf-form .gf-form-control.is-warning:focus {
  box-shadow: 0 0 0 0.2rem rgba(217, 119, 6, 0.2) !important;
}

/* Textarea specific */
.gf-form textarea.form-control,
.gf-form textarea.gf-form-control {
  min-height: 120px;
  resize: vertical;
}

.gf-form textarea.form-control:not(.gf-form-control--autosize),
.gf-form textarea.gf-form-control:not(.gf-form-control--autosize) {
  min-height: 150px;
}

/* =============================================================================
   Form Labels
   ============================================================================= */
.gf-form .form-label {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--gf-color-neutral-900);
  margin-bottom: 0.5rem;
}

.gf-form .form-label .text-danger {
  color: #dc2626;
}

/* Help text */
.gf-form .form-text {
  font-size: 0.85rem;
  color: var(--gf-color-neutral-500);
  margin-top: 0.35rem;
}

/* Invalid feedback */
.gf-form .invalid-feedback {
  font-size: 0.85rem;
  color: #dc2626;
  margin-top: 0.35rem;
}
