.ds-form-group {
  display: flex;
  flex-direction: column;
  gap: var(--ds-space-2);
  margin-bottom: var(--ds-space-4);
}

.ds-form-label {
  font-family: var(--ds-font-family);
  font-size: var(--ds-font-size-sm);
  font-weight: var(--ds-font-weight-medium);
  color: var(--ds-color-gray-700);
}

.ds-form-label--required::after {
  content: ' *';
  color: var(--ds-color-danger);
}

.ds-input,
.ds-select,
.ds-textarea {
  font-family: var(--ds-font-family);
  font-size: var(--ds-font-size-sm);
  color: var(--ds-color-gray-900);
  background-color: var(--ds-color-white);
  border: 1px solid var(--ds-color-gray-300);
  border-radius: var(--ds-radius-md);
  padding: var(--ds-space-3) var(--ds-space-4);
  width: 100%;
  transition: border-color var(--ds-transition-fast),
              box-shadow var(--ds-transition-fast);
}

.ds-input:focus,
.ds-select:focus,
.ds-textarea:focus {
  outline: none;
  border-color: var(--ds-color-primary);
  box-shadow: 0 0 0 3px var(--ds-color-primary-light);
}

.ds-input::placeholder,
.ds-textarea::placeholder {
  color: var(--ds-color-gray-400);
}

.ds-input--error,
.ds-select--error,
.ds-textarea--error {
  border-color: var(--ds-color-danger);
}

.ds-input--error:focus,
.ds-select--error:focus,
.ds-textarea--error:focus {
  box-shadow: 0 0 0 3px var(--ds-color-danger-light);
}

.ds-textarea {
  min-height: 6rem;
  resize: vertical;
}

.ds-form-hint {
  font-family: var(--ds-font-family);
  font-size: var(--ds-font-size-xs);
  color: var(--ds-color-gray-500);
}

.ds-form-error {
  font-family: var(--ds-font-family);
  font-size: var(--ds-font-size-xs);
  color: var(--ds-color-danger);
}

.ds-checkbox,
.ds-radio {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-2);
  font-family: var(--ds-font-family);
  font-size: var(--ds-font-size-sm);
  color: var(--ds-color-gray-700);
  cursor: pointer;
}

.ds-checkbox input,
.ds-radio input {
  width: 1rem;
  height: 1rem;
  accent-color: var(--ds-color-primary);
  cursor: pointer;
}
