/*
 * Shared compact search/filter density.
 * Keep editor and data-entry forms untouched; these rules only target
 * list-page search/filter containers used by the public site and admin.
 */
:is(
  .admin-filter,
  .filter-panel,
  .guide-filter,
  .student-filter-card,
  .replica-search-card
) {
  gap: 8px;
  padding: 12px 14px;
  border-radius: 10px;
}

:is(
  .admin-filter,
  .filter-panel,
  .guide-filter,
  .student-filter-card,
  .replica-search-card
) label {
  gap: 4px;
  font-size: 0.78rem;
  line-height: 1.25;
}

:is(
  .admin-filter,
  .filter-panel,
  .guide-filter,
  .student-filter-card,
  .replica-search-card
) :is(input:not([type="checkbox"]):not([type="radio"]), select) {
  min-height: 36px;
  height: 36px;
  padding: 6px 10px;
  border-radius: 7px;
  font-size: 0.875rem;
}

:is(
  .admin-filter,
  .filter-panel,
  .guide-filter,
  .student-filter-card,
  .replica-search-card
) .button,
:is(.admin-filter, .guide-filter, .student-filter-card, .replica-search-card) > button {
  min-height: 36px;
  height: 36px;
  padding: 6px 14px;
  border-radius: 7px;
  font-size: 0.875rem;
  white-space: nowrap;
}

/* Legacy admin list filters: fields keep a useful content width and wrap. */
.admin-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  margin-bottom: 12px;
}

.admin-filter > label {
  width: 160px;
  flex: 0 1 160px;
}

.admin-filter > label:first-child {
  width: 260px;
  flex-basis: 260px;
}

.admin-filter > .button {
  flex: 0 0 auto;
}

/* Public school/major filters use an inner field collection. */
.filter-panel {
  margin-bottom: 18px;
}

.filter-panel .filter-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.filter-panel .filter-grid > label {
  width: 170px;
  flex: 0 1 170px;
}

.filter-panel .filter-grid > label:first-child {
  width: 260px;
  flex-basis: 260px;
}

.filter-panel .filter-actions {
  gap: 8px;
  margin-top: 10px;
}

@media (min-width: 721px) {
  .filter-panel:not(.admission-filter) {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
  }

  .filter-panel:not(.admission-filter) .filter-grid {
    display: contents;
  }

  .filter-panel:not(.admission-filter) .filter-actions {
    flex: 0 0 auto;
    align-items: flex-end;
    margin: 0;
  }
}

/* Admissions fields are direct children of the filter form. */
.filter-panel.admission-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
}

.filter-panel.admission-filter > label {
  width: 160px;
  flex: 0 1 160px;
}

.filter-panel.admission-filter > label:first-child {
  width: 260px;
  flex-basis: 260px;
}

.filter-panel.admission-filter > .filter-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: flex-end;
  margin: 0;
}

/* Public guide search follows the same compact one-row rhythm. */
.guide-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
}

.guide-filter > label {
  width: 160px;
  flex: 0 1 160px;
}

.guide-filter > label:first-child {
  width: 260px;
  flex-basis: 260px;
}

/* Replica admin search areas. */
.student-filter-card {
  gap: 8px;
  margin-bottom: 12px;
}

.student-filter-card :is(input, select) {
  width: auto;
  min-width: 118px;
}

.student-filter-card .student-keyword {
  width: 256px;
}

.replica-search-card {
  align-items: center;
  margin-bottom: 12px;
}

.replica-search-card input {
  width: min(320px, 100%);
  flex: 0 1 320px;
}

@media (max-width: 720px) {
  :is(
    .admin-filter,
    .filter-panel .filter-grid,
    .filter-panel.admission-filter,
    .guide-filter,
    .student-filter-card,
    .replica-search-card
  ) {
    align-items: stretch;
  }

  :is(
    .admin-filter,
    .filter-panel .filter-grid,
    .filter-panel.admission-filter,
    .guide-filter,
    .student-filter-card,
    .replica-search-card
  ) > label,
  .student-filter-card > :is(input, select),
  .replica-search-card > input {
    width: 100%;
    flex-basis: 100%;
  }

  .filter-panel .filter-grid > label:first-child {
    width: 100%;
    flex-basis: 100%;
  }

  :is(
    .admin-filter,
    .filter-panel,
    .guide-filter,
    .student-filter-card,
    .replica-search-card
  ) :is(input:not([type="checkbox"]):not([type="radio"]), select),
  :is(
    .admin-filter,
    .filter-panel,
    .guide-filter,
    .student-filter-card,
    .replica-search-card
  ) .button,
  :is(.admin-filter, .guide-filter, .student-filter-card, .replica-search-card) > button {
    min-height: 40px;
    height: 40px;
  }

  .filter-panel.admission-filter > .filter-actions {
    width: 100%;
  }
}
