/* =========================================================
   NexaAI — Forms
   ========================================================= */

.form-label-nexa {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.form-label-nexa .req { color: var(--danger); }

.form-hint {
  font-size: 0.78rem;
  color: var(--text-faint);
  margin-top: 4px;
}

.form-control-nexa,
.form-select-nexa {
  width: 100%;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  font-size: 0.92rem;
  font-family: var(--font-body);
  transition: border-color var(--dur-fast) var(--ease-standard),
    box-shadow var(--dur-fast) var(--ease-standard);
}

.form-control-nexa::placeholder { color: var(--text-faint); }

.form-control-nexa:focus,
.form-select-nexa:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px var(--primary-soft);
}

.form-control-nexa.is-invalid,
.form-select-nexa.is-invalid {
  border-color: var(--danger);
}

.form-error {
  font-size: 0.78rem;
  color: var(--danger);
  margin-top: 4px;
  display: none;
  align-items: center;
  gap: 4px;
}

.form-control-nexa.is-invalid + .form-error,
.form-select-nexa.is-invalid + .form-error {
  display: flex;
}

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

.input-group-nexa .form-control-nexa { padding-right: 42px; }

.input-group-nexa .input-action {
  position: absolute;
  right: 6px;
  background: transparent;
  border: none;
  color: var(--text-faint);
  width: 32px;
  height: 32px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.input-group-nexa .input-action:hover { color: var(--text); background: var(--surface-2); }

/* Switch */
.switch-nexa {
  position: relative;
  display: inline-block;
  width: 42px;
  height: 24px;
  flex-shrink: 0;
}
.switch-nexa input { opacity: 0; width: 0; height: 0; }
.switch-nexa .track {
  position: absolute;
  inset: 0;
  background: var(--border-strong);
  border-radius: var(--radius-pill);
  transition: background var(--dur-fast) var(--ease-standard);
  cursor: pointer;
}
.switch-nexa .track::before {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  left: 3px;
  top: 3px;
  background: #fff;
  border-radius: 50%;
  transition: transform var(--dur-fast) var(--ease-standard);
}
.switch-nexa input:checked + .track { background: var(--primary); }
.switch-nexa input:checked + .track::before { transform: translateX(18px); }
.switch-nexa input:focus-visible + .track { outline: 2px solid var(--primary); outline-offset: 2px; }

/* Checkbox / radio */
.form-check-nexa {
  display: flex;
  align-items: center;
  gap: 8px;
}
.form-check-nexa input[type="checkbox"],
.form-check-nexa input[type="radio"] {
  width: 17px;
  height: 17px;
  accent-color: var(--primary);
}

/* Range slider */
.range-nexa {
  -webkit-appearance: none;
  width: 100%;
  height: 4px;
  border-radius: var(--radius-pill);
  background: var(--border-strong);
}
.range-nexa::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--primary);
  cursor: pointer;
  border: 2px solid var(--surface);
  box-shadow: 0 0 0 1px var(--primary);
}

/* File upload */
.file-drop {
  border: 1.5px dashed var(--border-strong);
  border-radius: var(--radius-md);
  padding: 28px;
  text-align: center;
  color: var(--text-muted);
  cursor: pointer;
  transition: border-color var(--dur-fast), background var(--dur-fast);
}
.file-drop:hover,
.file-drop.is-dragover {
  border-color: var(--primary);
  background: var(--primary-soft);
}

/* Password strength */
.pw-strength {
  height: 4px;
  border-radius: var(--radius-pill);
  background: var(--border);
  overflow: hidden;
  margin-top: 8px;
}
.pw-strength-bar {
  height: 100%;
  width: 0%;
  background: var(--danger);
  transition: width var(--dur-base) var(--ease-standard), background var(--dur-base);
}
