.form-group {
  position: relative;
}

.form-label {
  display: block;
  margin-bottom: 5px;
  font-weight: var(--lead-form-font-weight-medium);
  font-size: 16px;
}

.input-container {
  position: relative;
  display: flex;
  align-items: center;
}

.form-control {
  display: block;
  width: 100%;
  padding: 16px;
  font-size: 16px;
  line-height: 1.5;
  color: #495057;
  background-color: var(--lead-form-color-white);
  background-clip: padding-box;
  border: 1px solid var(--lead-form-color-border);
  border-radius: var(--lead-form-border-radius);
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.form-control::placeholder {
  font-size: 16px;
  opacity: 0.6;
}

.form-control:focus {
  color: #495057;
  background-color: var(--lead-form-color-white);
  border-color: #7d7d7d;
  outline: 0;
  box-shadow: var(--lead-form-shadow-focus);
}

.form-control:not(:placeholder-shown):not(.is-invalid) {
  border-color: var(--lead-form-color-success);
  box-shadow: var(--lead-form-shadow-focus);
  background-image: none;
}

.form-control.is-valid {
  border-color: var(--lead-form-color-success);
  box-shadow: var(--lead-form-shadow-focus);
  background-image: none;
}

.form-control:not(:placeholder-shown):not(.is-invalid) ~ .input-success-icon,
.form-control.is-valid ~ .input-success-icon {
  display: flex;
  opacity: 1;
}

.form-control:not(:placeholder-shown):not(.is-invalid) ~ .input-tooltip,
.form-control.is-valid ~ .input-tooltip {
  display: none;
}

.form-control.is-invalid {
  border-color: #dc3545;
  background-image: none !important;
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

/* Override Bootstrap's invalid form control styling */
.form-control.is-invalid,
.was-validated .form-control:invalid {
  background-image: none !important;
  padding-right: 52px !important;
}

.input-container.has-error .form-control:focus {
  border-color: #dc3545;
  box-shadow: var(--lead-form-shadow-error);
}

.invalid-feedback {
  display: block;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 80%;
  color: #dc3545;
}

.input-tooltip {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 200;
}

.info-message .info-header{
  margin: 0 !important;
  position: relative;
  top: 2px;
}

/* Make sure input tooltips properly appear above other elements */
.input-tooltip .tooltip-container .tooltip-text {
  z-index: 199; /* Even higher z-index than regular tooltips */
}

.input-success-icon {
  position: absolute;
  right: var(--lead-form-success-icon-right-position);
  top: 50%;
  transform: translateY(-50%);
  display: none;
  width: var(--lead-form-success-icon-size);
  height: var(--lead-form-success-icon-size);
  border-radius: 50%;
  background-color: var(--lead-form-color-success-icon);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
}

.input-success-icon .success-icon {
  filter: var(--lead-form-filter-white);
  width: var(--lead-form-success-icon-inner-size);
  height: var(--lead-form-success-icon-inner-size);
}

.input-container .form-control {
  padding-right: 52px;
}

/* Select2 validation styling */
.select2-container .select2-selection--single.is-invalid {
  border-color: #dc3545 !important;
  box-shadow: var(--lead-form-shadow-error) !important;
}

.select2-container--default .select2-selection--single.is-invalid {
  border-color: #dc3545 !important;
  box-shadow: var(--lead-form-shadow-error) !important;
}

.select2-container--default.select2-container--focus
  .select2-selection--single.is-invalid {
  border-color: #dc3545 !important;
  box-shadow: var(--lead-form-shadow-error) !important;
}

/* Hide success icon when tooltip is present AND field has errors */
.input-container:has(.input-tooltip):has(.form-control.is-invalid)
  .input-success-icon {
  display: none !important;
  opacity: 0 !important;
}

/* Hide success icon when tooltip is visible AND field has errors */
.form-group:has(.input-tooltip:not([style*="display: none"])):has(
    .form-control.is-invalid
  )
  .input-success-icon {
  display: none !important;
  opacity: 0 !important;
}

/* Hide success icon when field has error */
.form-group:has(.form-control.is-invalid) .input-success-icon {
  display: none !important;
  opacity: 0 !important;
}

/* Hide success icon when there's an error message */
.form-group:has(.invalid-feedback) .input-success-icon {
  display: none !important;
  opacity: 0 !important;
}

/* More specific rule for input containers with errors */
.input-container.has-error .input-success-icon {
  display: none !important;
  opacity: 0 !important;
}

/* Ensure tooltips appear above all other elements */
.input-tooltip {
  z-index: 200 !important;
}

/* Hide up/down arrows on number inputs (Chrome, Safari, Edge) */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Hide spinners and enforce textfield appearance (Firefox and others) */
input[type="number"] {
  -moz-appearance: textfield;
  appearance: textfield;
}

/* Currency suffix styling */
.currency-suffix {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: #495057;
  font-size: 16px;
  font-weight: var(--lead-form-font-weight-medium);
  pointer-events: none;
  z-index: 10;
  white-space: nowrap;
  /* Left position will be set dynamically by JavaScript */
}
