/**
 * CLMS v2 Dark Theme - Form Styling
 * Consolidated form element styling using CSS variables
 */

/* ===== BASE FORM STYLING ===== */
[data-bs-theme="dark"] {
  /* Labels and legends */
  .form-label,
  label,
  legend {
    color: var(--clms-text-primary) !important;
  }

  /* Help text */
  .form-text,
  .text-muted {
    color: var(--clms-text-muted) !important;
  }

  /* Required asterisk */
  .required::after {
    color: #dc3545 !important;
  }
}

/* ===== INPUT ELEMENTS ===== */
[data-bs-theme="dark"] {
  /* Base input styling */
  .form-control,
  .form-select,
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="password"],
  input[type="search"],
  input[type="url"],
  input[type="tel"],
  input[type="date"],
  input[type="datetime-local"],
  input[type="month"],
  input[type="week"],
  input[type="time"],
  textarea {
    background-color: var(--clms-form-bg) !important;
    border-color: var(--clms-form-border) !important;
    color: var(--clms-text-primary) !important;
  }

  /* Placeholder styling */
  .form-control::placeholder,
  .form-select::placeholder,
  input::placeholder,
  textarea::placeholder {
    color: var(--clms-form-placeholder) !important;
    opacity: 1 !important;
  }

  /* Focus states */
  .form-control:focus,
  .form-select:focus,
  input[type="text"]:focus,
  input[type="number"]:focus,
  input[type="email"]:focus,
  input[type="password"]:focus,
  input[type="search"]:focus,
  input[type="url"]:focus,
  input[type="tel"]:focus,
  input[type="date"]:focus,
  input[type="datetime-local"]:focus,
  input[type="month"]:focus,
  input[type="week"]:focus,
  input[type="time"]:focus,
  textarea:focus {
    background-color: var(--clms-form-bg) !important;
    border-color: var(--clms-form-focus-border) !important;
    color: var(--clms-text-primary) !important;
    box-shadow: 0 0 0 0.2rem var(--clms-form-focus-shadow) !important;
    outline: none !important;
  }

  /* Disabled states */
  .form-control:disabled,
  .form-select:disabled,
  input:disabled,
  textarea:disabled {
    background-color: var(--clms-form-disabled-bg) !important;
    color: var(--clms-form-disabled-color) !important;
    border-color: var(--clms-form-border) !important;
    opacity: 0.65 !important;
  }

  /* Readonly states */
  .form-control[readonly],
  .form-select[readonly],
  input[readonly],
  textarea[readonly] {
    background-color: var(--clms-form-disabled-bg) !important;
    color: var(--clms-text-secondary) !important;
  }
}

/* ===== SELECT ELEMENTS ===== */
[data-bs-theme="dark"] {
  /* Select specific styling */
  .form-select,
  select.form-control,
  select.form-select,
  select {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
    background-repeat: no-repeat !important;
    background-position: right 0.75rem center !important;
    background-size: 16px 12px !important;
  }

  /* Select options */
  .form-select option,
  select option {
    background-color: var(--clms-form-bg) !important;
    color: var(--clms-text-primary) !important;
  }

  .form-select option:hover,
  .form-select option:focus,
  select option:hover,
  select option:focus {
    background-color: var(--clms-dropdown-item-hover-bg) !important;
    color: var(--clms-white) !important;
  }
}

/* ===== CHECKBOXES & RADIOS ===== */
[data-bs-theme="dark"] {
  /* Checkbox styling */
  .form-check-input[type="checkbox"] {
    background-color: var(--clms-form-bg) !important;
    border-color: var(--clms-form-border) !important;
  }

  .form-check-input[type="checkbox"]:checked {
    background-color: var(--clms-accent-blue) !important;
    border-color: var(--clms-accent-blue) !important;
  }

  .form-check-input[type="checkbox"]:focus {
    box-shadow: 0 0 0 0.2rem var(--clms-form-focus-shadow) !important;
  }

  /* Radio button styling */
  .form-check-input[type="radio"] {
    background-color: var(--clms-form-bg) !important;
    border-color: var(--clms-form-border) !important;
  }

  .form-check-input[type="radio"]:checked {
    background-color: var(--clms-accent-blue) !important;
    border-color: var(--clms-accent-blue) !important;
  }

  .form-check-input[type="radio"]:focus {
    box-shadow: 0 0 0 0.2rem var(--clms-form-focus-shadow) !important;
  }

  /* Check/radio labels */
  .form-check-label {
    color: var(--clms-text-primary) !important;
  }
}

/* ===== FORM VALIDATION ===== */
[data-bs-theme="dark"] {
  /* Valid feedback */
  .valid-feedback {
    color: #198754 !important;
  }

  .is-valid .form-control,
  .is-valid .form-select {
    border-color: #198754 !important;
  }

  .is-valid .form-control:focus,
  .is-valid .form-select:focus {
    box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.25) !important;
  }

  /* Invalid feedback */
  .invalid-feedback {
    color: #dc3545 !important;
  }

  .is-invalid .form-control,
  .is-invalid .form-select {
    border-color: #dc3545 !important;
  }

  .is-invalid .form-control:focus,
  .is-invalid .form-select:focus {
    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
  }
}

/* ===== INPUT GROUPS ===== */
[data-bs-theme="dark"] {
  .input-group-text {
    background-color: var(--clms-bg-tertiary) !important;
    border-color: var(--clms-form-border) !important;
    color: var(--clms-text-primary) !important;
  }

  .input-group .form-control:not(:first-child),
  .input-group .form-select:not(:first-child) {
    border-left-color: var(--clms-form-border) !important;
  }
}

/* ===== FORM FLOATING LABELS ===== */
[data-bs-theme="dark"] {
  .form-floating > label {
    color: var(--clms-form-placeholder) !important;
  }

  .form-floating > .form-control:focus ~ label,
  .form-floating > .form-control:not(:placeholder-shown) ~ label,
  .form-floating > .form-select ~ label {
    color: var(--clms-text-secondary) !important;
  }
}

/* ===== RANGE INPUTS ===== */
[data-bs-theme="dark"] {
  .form-range {
    background: transparent !important;
  }

  .form-range::-webkit-slider-track {
    background-color: var(--clms-bg-tertiary) !important;
  }

  .form-range::-webkit-slider-thumb {
    background-color: var(--clms-accent-blue) !important;
  }

  .form-range::-moz-range-track {
    background-color: var(--clms-bg-tertiary) !important;
  }

  .form-range::-moz-range-thumb {
    background-color: var(--clms-accent-blue) !important;
    border: none !important;
  }
}