/* Chief Form Components */
/* Form elements matching Chief desktop aesthetic */

/* Form container */
.form {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xl);
}

/* Form group */
.form-group {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
  margin-bottom: var(--spacing-xl);
}

/* Form label */
.form-label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  color: var(--theme-text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--letter-spacing-wide);
}

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

/* Base input styles */
.form-input,
.form-textarea,
.form-select {
  width: 100%;
  padding: var(--spacing-md) var(--spacing-lg);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--border-radius-md);
  font-family: var(--font-family-sans);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  transition: var(--transition-fast);
}

.form-input:hover,
.form-textarea:hover,
.form-select:hover {
  background-color: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.3);
}

.form-input:focus,
.form-textarea:focus,
.form-select:focus {
  outline: none;
  background-color: rgba(255, 255, 255, 0.08);
  border-color: var(--color-primary);
  box-shadow: 0 0 0 2px rgba(74, 158, 255, 0.1);
}

.form-input::placeholder,
.form-textarea::placeholder {
  color: var(--theme-text-faint);
}

/* Small input variant */
.form-input-sm {
  padding: var(--spacing-sm) var(--spacing-md);
  font-size: var(--font-size-sm);
}

/* Input with icon */
.form-input-group {
  position: relative;
  display: flex;
  align-items: center;
}

.form-input-group .form-input {
  padding-left: calc(var(--spacing-3xl) + var(--spacing-lg));
}

.form-input-group.icon-right .form-input {
  padding-left: var(--spacing-lg);
  padding-right: calc(var(--spacing-3xl) + var(--spacing-lg));
}

.form-input-icon {
  position: absolute;
  left: var(--spacing-lg);
  color: var(--theme-text-muted);
  pointer-events: none;
}

.form-input-group.icon-right .form-input-icon {
  left: auto;
  right: var(--spacing-lg);
}

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

/* Select specific */
.form-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--spacing-lg) center;
  background-size: 20px;
  padding-right: calc(var(--spacing-3xl) + var(--spacing-sm));
  cursor: pointer;
}

.form-select option {
  color: #000;
}

/* Checkbox and Radio */
.form-checkbox,
.form-radio {
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-md);
  cursor: pointer;
  user-select: none;
}

/* Checkbox label when used as a wrapper */
.form-label.checkbox-label {
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-md);
  text-transform: none;
  font-weight: var(--font-weight-normal);
  cursor: pointer;
}

.form-label.checkbox-label input[type="checkbox"] {
  margin-top: 2px;
}


.form-checkbox input[type="checkbox"],
.form-radio input[type="radio"] {
  appearance: none;
  width: 20px;
  height: 20px;
  background: rgba(255, 255, 255, 0.05);
  border: 2px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--border-radius-sm);
  cursor: pointer;
  transition: var(--transition-fast);
  position: relative;
  flex-shrink: 0;
}

.form-radio input[type="radio"] {
  border-radius: 50%;
}

.form-checkbox input[type="checkbox"]:hover,
.form-radio input[type="radio"]:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.3);
}

.form-checkbox input[type="checkbox"]:checked,
.form-radio input[type="radio"]:checked {
  background: var(--color-primary);
  border-color: var(--color-primary);
}

.form-checkbox input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 6px;
  width: 4px;
  height: 8px;
  border: solid var(--color-black);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.form-radio input[type="radio"]:checked::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 8px;
  height: 8px;
  background: var(--color-black);
  border-radius: 50%;
}

.form-checkbox label,
.form-radio label {
  font-size: var(--font-size-base);
  cursor: pointer;
}

/* Switch toggle */
.form-switch {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  cursor: pointer;
}

.form-switch input[type="checkbox"] {
  appearance: none;
  width: 48px;
  height: 24px;
  background: var(--theme-switch-track);
  border-radius: 12px;
  position: relative;
  cursor: pointer;
  transition: var(--transition-fast);
}

.form-switch input[type="checkbox"]:hover {
  background: var(--theme-switch-track-hover);
}

.form-switch input[type="checkbox"]:checked {
  background: var(--color-primary);
}

.form-switch input[type="checkbox"]::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 20px;
  height: 20px;
  background: var(--theme-switch-knob);
  border-radius: 50%;
  transition: var(--transition-fast);
  box-shadow: var(--theme-switch-knob-shadow);
}

.form-switch input[type="checkbox"]:checked::after {
  transform: translateX(24px);
  background: var(--theme-switch-knob-checked);
}

/* Form validation states */
.form-input.is-valid,
.form-textarea.is-valid,
.form-select.is-valid {
  border-color: var(--color-success);
}

.form-input.is-valid:focus,
.form-textarea.is-valid:focus,
.form-select.is-valid:focus {
  box-shadow: 0 0 0 2px rgba(127, 186, 0, 0.1);
}

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

.form-input.is-invalid:focus,
.form-textarea.is-invalid:focus,
.form-select.is-invalid:focus {
  box-shadow: 0 0 0 2px rgba(255, 74, 74, 0.1);
}

/* Form help text */
.form-help {
  font-size: var(--font-size-sm);
  color: var(--theme-text-muted);
  margin-top: var(--spacing-xs);
}

.form-help.is-valid {
  color: var(--color-success);
}

.form-help.is-invalid {
  color: var(--color-danger);
}

/* Form fieldset */
.form-fieldset {
  border: 1px solid var(--theme-border-subtle);
  border-radius: var(--border-radius-md);
  padding: var(--spacing-xl);
  margin-bottom: var(--spacing-xl);
}

.form-fieldset legend {
  padding: 0 var(--spacing-sm);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  color: var(--theme-text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--letter-spacing-wide);
}

/* Form actions */
.form-actions {
  display: flex;
  gap: var(--spacing-md);
  margin-top: var(--spacing-xl);
}

.form-actions.align-right {
  justify-content: flex-end;
}

.form-actions.align-center {
  justify-content: center;
}

/* Inline form */
.form-inline {
  display: flex;
  align-items: flex-end;
  gap: var(--spacing-md);
}

.form-inline .form-group {
  flex: 1;
}

/* Search input */
.form-search {
  position: relative;
}

.form-search .form-input {
  padding-left: calc(var(--spacing-3xl) + var(--spacing-lg));
}

.form-search::before {
  content: '🔍';
  position: absolute;
  left: var(--spacing-lg);
  top: 50%;
  transform: translateY(-50%);
  color: var(--theme-text-muted);
  pointer-events: none;
}

/* File input */
.form-file {
  position: relative;
  display: inline-block;
  cursor: pointer;
  overflow: hidden;
}

.form-file input[type="file"] {
  position: absolute;
  left: -9999px;
}

.form-file-label {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-md) var(--spacing-xl);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--border-radius-md);
  font-size: var(--font-size-base);
  transition: var(--transition-fast);
}

.form-file:hover .form-file-label {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--color-primary);
}

/* Light theme overrides - forms need special handling for backgrounds and select arrows */
.light-bg .form-input,
.light-bg .form-textarea {
  background: var(--theme-bg);
  border-color: var(--theme-border);
}

.light-bg .form-select {
  background-color: var(--theme-bg);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f172a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  border-color: var(--theme-border);
}

.light-bg .form-input:hover,
.light-bg .form-textarea:hover,
.light-bg .form-select:hover {
  background-color: var(--theme-bg-subtle);
  border-color: var(--theme-border-strong);
}

.light-bg .form-input:focus,
.light-bg .form-textarea:focus,
.light-bg .form-select:focus {
  background-color: var(--theme-bg);
}