/* /public_html/assets/css/ui-listCombo.css */
/* =========================================
   LISTCOMBO (custom select)
   ========================================= */

.ui-combo{
  position: relative;
  width: 100%;
}

/* on garde le <select> pour la valeur + accessibilité, mais on le cache */
.ui-combo__native{
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}

/* le bouton visible */
.ui-combo__btn{
  width: 100%;
  text-align: left;

  height: var(--ui-control-h, 44px);
  min-height: var(--ui-control-h, 44px);

  border-radius: var(--ui-control-pill, 999px);
  border: 1px solid color-mix(in srgb, var(--color-border-subtle) 80%, #94a3b8 20%);

  background:
    radial-gradient(circle at 0% 0%, rgba(255,255,255,0.55), transparent 55%),
    color-mix(in srgb, var(--color-surface-soft) 92%, #ffffff 8%);

  color: var(--color-text);
  padding: 0 2.6rem 0 1.15rem;

  font-size: 0.95rem;
  font-weight: 650;
  letter-spacing: 0.01em;
  line-height: 1;

  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;

  box-shadow: var(--shadow-subtle);
  cursor: pointer;

  transition: box-shadow 150ms ease-out, border-color 150ms ease-out, filter 150ms ease-out;
}

.ui-combo__btn:hover{
  transform: none;
  filter: brightness(1.02);
}

.ui-combo__btn:focus{ outline: none; }

.ui-combo__btn:focus-visible{
  border-color: color-mix(in srgb, var(--theme-primary) 55%, var(--color-border-subtle));
  box-shadow: 0 0 0 2px var(--ui-focus-ring), var(--shadow-subtle);
}

.ui-combo__value{
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ui-combo__chev{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.4rem;
  opacity: 0.85;
}

/* Popover */
.ui-combo__menu{
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  z-index: 2000;

  padding: 0.35rem;
  border-radius: 14px;

  border: 1px solid rgba(148, 163, 184, 0.35);
  background: color-mix(in srgb, var(--color-surface) 92%, #ffffff 8%);
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.22);

  max-height: min(320px, 52vh);
  overflow: auto;

  display: none;
}

.ui-combo.is-open .ui-combo__menu{ display: block; }

.ui-combo__opt{
  width: 100%;
  border: none;
  background: transparent;
  color: var(--color-text);
  text-align: left;

  border-radius: 12px;
  padding: 0.6rem 0.75rem;

  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;

  cursor: pointer;
}

.ui-combo__opt:hover{
  background: color-mix(in srgb, var(--theme-primary) 10%, transparent);
}

.ui-combo__opt.is-active{
  background: color-mix(in srgb, var(--theme-primary) 16%, transparent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--theme-primary) 28%, transparent) inset;
}

.ui-combo__check{ opacity: 0; }
.ui-combo__opt.is-active .ui-combo__check{ opacity: 0.95; }

/* Dark tuning */
html[data-theme="dark"] .ui-combo__btn{
  background:
    radial-gradient(circle at 0% 0%, rgba(255,255,255,0.07), transparent 55%),
    color-mix(in srgb, var(--color-surface) 82%, #020617 18%);
  border-color: rgba(148, 163, 184, 0.55);
  box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.22), 0 14px 34px rgba(0, 0, 0, 0.35);
}

html[data-theme="dark"] .ui-combo__menu{
  background: color-mix(in srgb, #020617 35%, var(--color-surface) 65%);
  border-color: rgba(148, 163, 184, 0.22);
  box-shadow: 0 22px 60px rgba(0,0,0,0.55);
}

.student-filter-chips{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}

.filter-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  border-radius: 999px;
  border: 1px solid rgba(148,163,184,0.35);
  background: rgba(255,255,255,0.06);
  color: var(--color-text, inherit);
  cursor:pointer;
  line-height: 1;
  user-select:none;
}

.filter-chip i{ font-size: 0.95em; opacity: 0.9; }
.filter-chip span{ font-size: 0.92rem; }

.filter-chip:hover{
  transform: translateY(-1px);
}

.filter-chip.is-active{
  border-color: rgba(99,102,241,0.55);
  box-shadow: 0 0 0 3px rgba(99,102,241,0.18);
  background: rgba(99,102,241,0.12);
}

.filter-chip--clear{
  opacity: 0.9;
}

.filter-chip--clear:disabled{
  opacity: 0.45;
  cursor: not-allowed;
  transform:none;
}

/* ========= Students filters layout ========= */

.student-filters{
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas:
    "search search"
    "chips  sort";
  gap: 12px 0px;
  align-items: center;
}

.student-search-field{ grid-area: search; }
.student-filter-chips{ grid-area: chips; }
.student-sort-field{ grid-area: sort; justify-self: end; }

/* Chips row */
.student-filter-chips{
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
}

/* Icon-only chips */
.filter-chip.filter-chip--icon{
  padding: 0;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.filter-chip.filter-chip--icon i{
  font-size: 1.05rem;
}

/* Hide label visually but keep for accessibility */
.sr-only{
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Mobile: stack sort under chips */
@media (max-width: 720px){
  .student-filters{
    grid-template-columns: 1fr;
    grid-template-areas:
      "search"
      "chips"
      "sort";
  }
  .student-sort-field{ justify-self: start; }
}

/* =========================================
   FIX: ui-combo dans une row flex (ex: Gala merge)
   Empêche le combo de s’écraser + évite le clipping du dropdown
   ========================================= */

.gala-merge-exclude-row .ui-combo{
  flex: 1 1 auto;
  min-width: 0; /* super important en flex pour éviter le débordement */
}

.gala-merge-exclude-row > .btn-ghost{
  flex: 0 0 auto;
  white-space: nowrap;
}
