.filters {
  margin-left: -5rem;
  background: #f5f5f5;
  margin-right: -5rem;
  padding: 2rem 5rem;
  margin-bottom: 3rem;
}

.filters input,
.filters select {
  margin-bottom: 0;
}

/* Filter Form BEM Styles */
.filter-form {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

/* tom-select's default control is shorter than the app's native inputs.
   Match the established 4.3rem control height (same as the cross-airport
   wizard and submit buttons) across the filter bars. */
.filter-form .ts-control,
.global-reports-filters .ts-control,
.product-filters--multi .ts-control,
.training-completion-filters .ts-control {
  min-height: 4.3rem;
}

@media (min-width: 768px) {
  .filter-form {
    grid-template-columns: 2fr 1.5fr 1fr 1fr 2fr;
    gap: 1.5rem;
  }

  .filters--published-report-wizard .filter-row {
    display: grid;
    grid-column-gap: 1rem;
    grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  }
}

.filter-form__field {
  display: flex;
  flex-direction: column;
}

.filter-form__input,
.filter-form__select {
  width: 100%;
}

.filter-form__input:focus,
.filter-form__select:focus {
  outline: 0;
}

.filter-form__field--reporting-period-start span {
  margin: 0 1rem;

}

/* Stacked variant: one field per row, constrained width — used for the
   combined reports export creation form rather than an inline filter bar. */
.filter-form--stacked {
  grid-template-columns: 1fr;
  gap: 1.5rem;
  max-width: 36rem;
}

@media (min-width: 768px) {
  .filter-form--stacked {
    grid-template-columns: 1fr;
  }
}

/* Global reports filter bar. The shared #js--filters form has no layout,
   so left alone the controls stack full-width. Lay them out as a wrapping
   row that uses the available width. Scoped to this form only (the
   #js--filters id is reused across many admin pages). */
.global-reports-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  margin-top: 2rem;
  margin-bottom: 2rem;
}

.global-reports-filters input[type="date"] {
  flex: 0 1 16rem;
  margin-bottom: 0;
}

.global-reports-filters .ts-wrapper {
  flex: 1 1 18rem;
  max-width: 26rem;
  margin-bottom: 0;
}

.global-reports-filters input[type="submit"] {
  margin-bottom: 0;
}

/* /admin/products filter bar (multi variant of the shared product filter).
   Same rationale as global reports: the shared #js--filters form has no
   layout, so lay it out as a wrapping row. Scoped to the multi variant. */
.product-filters--multi {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  margin-top: 2rem;
  margin-bottom: 2rem;
}

.product-filters--multi input[type="text"] {
  flex: 1 1 18rem;
  max-width: 26rem;
  margin-bottom: 0;
}

.product-filters--multi .ts-wrapper {
  flex: 1 1 18rem;
  max-width: 26rem;
  margin-bottom: 0;
}

.product-filters--multi input[type="submit"] {
  margin-bottom: 0;
}

/* /admin/training-completion-reports filter bar. Same shared #js--filters
   form with no layout — lay it out as a wrapping row. Scoped to this form. */
.training-completion-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  margin-top: 2rem;
  margin-bottom: 2rem;
}

.training-completion-filters input[type="date"] {
  flex: 0 1 16rem;
  margin-bottom: 0;
}

.training-completion-filters .ts-wrapper {
  flex: 1 1 18rem;
  max-width: 26rem;
  margin-bottom: 0;
}

.training-completion-filters input[type="submit"] {
  margin-bottom: 0;
}

