/* =========================================================
   Custom-dropdown-component (fase 1)
   Styling voor de progressive-enhancement-laag op <select>.
   ========================================================= */

/* Wrapper rond <select> + <button> + <ul>. Position:relative zodat de
   absolute-positioned listbox eronder hangt. Width volgt de oorspronkelijke
   select-context; specifieke layout-rules per .filter-rij staan onderaan. */
.cd-wrap {
  position: relative;
  display: inline-block;
  vertical-align: top;
  width: 100%;
  max-width: 360px;
  margin: 0;
}

/* De originele <select> blijft in de DOM staan als bron van waarheid
   (form-submit, .value-API). Visually-hidden — NIET display:none, omdat iOS
   bij focus dan alsnog de native picker zou kunnen openen. */
.cd-source {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  opacity: 0;
  pointer-events: none;
}

/* Toggle-knop: visueel identiek aan .poule-dropdown (rode rand,
   donkerblauwe vette tekst). Tap-target ≥44px op mobiel. */
.cd-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
  min-height: 44px;
  padding: 0.55rem 0.9rem;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  text-align: left;
  color: #1e3a8a;
  background: white;
  border: 1.5px solid #e94560;
  border-radius: 8px;
  cursor: pointer;
  box-sizing: border-box;
}
.cd-toggle:focus-visible {
  outline: 2px solid var(--accent, #e94560);
  outline-offset: 1px;
}
.cd-toggle[aria-expanded="true"] {
  border-radius: 8px 8px 0 0;
}

.cd-label {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cd-pijl {
  flex: 0 0 auto;
  font-size: 0.85rem;
  line-height: 1;
  transition: transform 0.15s ease;
}
.cd-toggle[aria-expanded="true"] .cd-pijl {
  transform: rotate(180deg);
}

/* Listbox: hangt direct onder de toggle, scroll bij veel opties. */
.cd-list {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 100;
  max-height: 320px;
  margin: 0;
  padding: 0.25rem 0;
  list-style: none;
  background: white;
  border: 1.5px solid #e94560;
  border-top: 0;
  border-radius: 0 0 8px 8px;
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.cd-list:focus {
  outline: none;
}
.cd-list[hidden] {
  display: none;
}

.cd-option {
  min-height: 44px;
  padding: 0.55rem 0.9rem;
  font-size: 0.95rem;
  color: #1e3a8a;
  cursor: pointer;
  display: flex;
  align-items: center;
  user-select: none;
}
.cd-option.cd-active {
  background: #f1f5fb;
}
.cd-option[aria-selected="true"] {
  font-weight: 700;
  background: #e8eef9;
}
.cd-option[aria-selected="true"].cd-active {
  background: #dde6f5;
}

/* Separator: niet-selecteerbare regel (bv. ────── tussen poules en KO). */
.cd-option.cd-separator {
  min-height: 0;
  padding: 0.2rem 0.9rem;
  color: #aaa;
  font-size: 0.8rem;
  cursor: default;
  pointer-events: none;
  background: transparent;
}

/* Disabled (niet-separator) opties — defensief voor toekomstig gebruik. */
.cd-option[aria-disabled="true"]:not(.cd-separator) {
  color: #999;
  cursor: not-allowed;
  background: transparent;
}

/* -----------------------------------------------------------
   Layout-context-rules: spiegel de bestaande .poule-dropdown-
   regels in filter-rij-contexten zodat de cd-wrap dezelfde plek
   inneemt als de originele <select> deed. In fase 1 alleen de
   referentie-context (Persoonlijk-tab). Fase 2 voegt overige
   contexten toe.
   ----------------------------------------------------------- */
.filter-rij--persoonlijk .cd-wrap {
  flex: 0 1 180px;
  min-width: 160px;
  width: auto;
  max-width: none;
}
@media (max-width: 600px) {
  .filter-rij--persoonlijk .cd-wrap {
    width: 100%;
    flex: 0 0 auto;
  }
}

/* ===== Fase 2: overige layout-contexten ===== */

/* Tab-Wedstrijden — poule-filter + team-filter */
.filter-rij--wedstrijden .cd-wrap {
  flex: 0 1 200px;
  min-width: 180px;
  width: auto;
  max-width: none;
}

/* Tab-Spelers rij 2 — spelers-poule + spelers-team */
.filter-rij--spelers-r2 .cd-wrap {
  flex: 0 1 200px;
  min-width: 180px;
  width: auto;
  max-width: none;
}

/* Tab-Poule-indelingen — poule-beheer */
.filter-rij--poule .cd-wrap {
  flex: 0 1 220px;
  min-width: 180px;
  width: auto;
  max-width: none;
}

/* Mobiele tab-dropdown — alleen ≤768px zichtbaar, vol-breed in container */
.mobiele-tab-select .cd-wrap {
  width: 100%;
  max-width: none;
}
.mobiele-tab-select .cd-toggle {
  font-size: 1rem;
  padding: 0.7rem 1rem;
}

/* Wedstrijden → nieuw schema-formulier (grid-4 cel) */
.speler-formulier .cd-wrap {
  max-width: none;
}

/* Mobiel — alle filter-rijen krijgen full-width dropdowns */
@media (max-width: 600px) {
  .filter-rij--wedstrijden .cd-wrap,
  .filter-rij--spelers-r2 .cd-wrap,
  .filter-rij--poule .cd-wrap {
    width: 100%;
    flex: 0 0 auto;
  }
}
