/* Schools Directory: presentation contract for the separate first-party platform component.
 * No records, queries, filters or block registration live in the theme.
 */
.bwcet-schools-directory {
  width: 100%;
  max-width: 80rem;
  margin-inline: auto;
  margin-block: 2.5rem 4rem;
  color: var(--wp--preset--color--ink);
}
.bwcet-schools-directory__intro { max-width: 46rem; margin-block-end: 2rem; }
.bwcet-schools-directory__intro > :last-child { margin-block-end: 0; }
.bwcet-schools-directory__toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 1.25rem 2rem;
  margin-block-end: 2rem;
  padding-block-end: 1.5rem;
  border-block-end: 1px solid var(--wp--preset--color--line);
}
.bwcet-school-filter { min-width: 0; max-width: 100%; margin: 0; }
.bwcet-school-filter fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.bwcet-school-filter legend { margin-block-end: .65rem; padding: 0; font-size: .875rem; font-weight: 650; }
.bwcet-school-filter__options { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.bwcet-school-filter__option {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: .55rem .8rem;
  border: 1px solid var(--wp--preset--color--line);
  border-radius: 3px;
  color: var(--wp--preset--color--ink);
  background: var(--wp--preset--color--white);
  font-size: .875rem;
  font-weight: 550;
  line-height: 1.5;
  cursor: pointer;
}
.bwcet-school-filter__option input[type="radio"] {
  flex: 0 0 auto;
  width: 1rem;
  height: 1rem;
  min-height: 0;
  margin: 0;
  padding: 0;
  accent-color: var(--wp--preset--color--brand);
}
.bwcet-school-filter__option:has(input:checked) { border-color: var(--wp--preset--color--brand); background: var(--wp--preset--color--surface); }
.bwcet-school-filter__option:focus-within { outline: 3px solid var(--wp--preset--color--brand-dark); outline-offset: 3px; }
.bwcet-school-filter__submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: .6rem 1rem;
  border: 1px solid var(--wp--preset--color--brand);
  border-radius: 3px;
  color: var(--wp--preset--color--white);
  background: var(--wp--preset--color--brand);
  font: 600 .875rem/1.4 var(--bwcet-font-body);
  cursor: pointer;
}
.bwcet-schools-directory__count { margin: 0; color: var(--wp--preset--color--muted); font-size: .875rem; line-height: 1.6; }
.bwcet-schools-directory .bwcet-school-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 1.5rem;
  padding: 0;
  margin: 0;
  list-style: none;
}
.bwcet-school-grid > .bwcet-school-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: 0;
  overflow-wrap: anywhere;
  border: 1px solid var(--wp--preset--color--line);
  border-radius: 4px;
  background: var(--wp--preset--color--white);
  box-shadow: var(--bwcet-elevation-1, none);
  transition: box-shadow .2s ease, border-color .2s ease;
}
.bwcet-school-card__logo {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 8.5rem;
  margin: 0;
  padding: 1.5rem 1.75rem;
  overflow: hidden;
  border-block-end: 1px solid var(--wp--preset--color--line);
  border-radius: 3px 3px 0 0;
  background: var(--wp--preset--color--white);
}
.bwcet-school-card__logo img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
}
.bwcet-school-card__logo--missing { background: var(--wp--preset--color--surface); }
.bwcet-school-card__monogram {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 4.25rem;
  height: 4.25rem;
  border: 1px solid var(--wp--preset--color--line);
  border-radius: 50%;
  color: var(--wp--preset--color--brand);
  font: 600 1.75rem/1 var(--bwcet-font-display);
  letter-spacing: -.04em;
}
.bwcet-school-card__content { display: flex; flex: 1; flex-direction: column; padding: 1.5rem 1.75rem 1.75rem; }
.bwcet-school-card__phase { margin: 0 0 .6rem; color: var(--wp--preset--color--muted); font-size: .75rem; font-weight: 600; line-height: 1.5; letter-spacing: .04em; }
.bwcet-school-card .bwcet-school-card__name { margin: 0 0 .75rem; color: var(--wp--preset--color--ink); font-size: clamp(1.25rem, 1.65vw, 1.5rem); font-weight: 650; line-height: 1.25; letter-spacing: -.03em; }
.bwcet-school-card__location { margin: 0 0 1rem; font-size: .9375rem; line-height: 1.6; }
.bwcet-school-card__contacts { display: flex; flex-direction: column; align-items: start; margin: 0 0 1rem; padding: 0; list-style: none; }
.bwcet-school-card__contacts li { max-width: 100%; margin: 0; padding: 0; }
.bwcet-school-card__contacts a { display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; padding-block: .5rem; color: var(--wp--preset--color--brand); font-size: .875rem; line-height: 1.45; text-decoration: underline; text-underline-offset: .2em; overflow-wrap: anywhere; }
.bwcet-school-card__actions { margin-block-start: auto; padding-block-start: 1.2rem; border-block-start: 1px solid var(--wp--preset--color--line); }
.bwcet-school-card__visit { display: inline-flex; align-items: center; justify-content: space-between; gap: 1rem; min-width: 44px; min-height: 44px; max-width: 100%; padding-block: .4rem; color: var(--wp--preset--color--brand); font-size: .9375rem; font-weight: 650; line-height: 1.4; text-decoration: underline; text-underline-offset: .25em; }
.bwcet-school-card__visit svg { flex: 0 0 auto; width: 1rem; height: 1rem; }
.bwcet-school-card__visit > span { min-width: 0; }
.bwcet-school-card :is(a, button):focus-visible, .bwcet-school-filter__submit:focus-visible { outline: 3px solid var(--wp--preset--color--brand-dark); outline-offset: 3px; box-shadow: 0 0 0 6px var(--wp--preset--color--white); }
.bwcet-schools-directory__empty { margin: 0; padding: 2rem; border: 1px solid var(--wp--preset--color--line); background: var(--wp--preset--color--surface); }
@media (min-width: 680px) {
  .bwcet-schools-directory .bwcet-school-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .bwcet-schools-directory .bwcet-school-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.75rem; }
}
@media (hover: hover) and (pointer: fine) {
  .bwcet-school-card:has(a:hover), .bwcet-school-card:focus-within { border-color: var(--wp--preset--color--brand); box-shadow: var(--bwcet-elevation-2, none); }
  .bwcet-school-card__visit:hover svg { transform: translate(.15rem, -.15rem); }
  .bwcet-school-card__visit svg { transition: transform .2s ease; }
}
@media (max-width: 389px) {
  .bwcet-school-card__logo { padding-inline: 1.25rem; }
  .bwcet-school-card__content { padding-inline: 1.25rem; }
  .bwcet-school-filter__option { padding-inline: .65rem; }
}
@media (prefers-reduced-motion: reduce) {
  .bwcet-school-card, .bwcet-school-card__visit svg { transition: none; }
  .bwcet-school-card__visit:hover svg { transform: none; }
}
[data-bwcet-reduce-motion="true"] .bwcet-school-card, [data-bwcet-reduce-motion="true"] .bwcet-school-card__visit svg { transition: none; }
[data-bwcet-reduce-motion="true"] .bwcet-school-card__visit:hover svg { transform: none; }
@media (forced-colors: active) {
  .bwcet-school-grid > .bwcet-school-card, .bwcet-school-card__logo, .bwcet-school-filter__option { color: CanvasText; background: Canvas; border-color: CanvasText; box-shadow: none; }
  .bwcet-school-card__monogram { color: CanvasText; border-color: CanvasText; }
  .bwcet-school-card__contacts a, .bwcet-school-card__visit { color: LinkText; }
  .bwcet-school-filter__submit { color: ButtonText; background: ButtonFace; border-color: ButtonText; }
  .bwcet-school-card :is(a, button):focus-visible, .bwcet-school-filter :focus-visible, .bwcet-school-filter__option:focus-within { outline-color: Highlight; box-shadow: none; }
}
@media print {
  .bwcet-school-filter { display: none; }
  .bwcet-schools-directory .bwcet-school-grid { display: block; }
  .bwcet-school-grid > .bwcet-school-card { margin-block-end: 1rem; break-inside: avoid; box-shadow: none; }
}

/* RC8: decorative contact cues from existing semantic tel/mail links. Empty
 * pseudo-elements add no spoken label; the module's real labels/text remain.
 * Unsupported masks and forced colours retain the complete contact links. */
@supports (mask-image: url("../icons/mail.svg")) {
  .bwcet-school-card__contacts a:is([href^="tel:"], [href^="mailto:"]) { align-items: flex-start; gap: .625rem; }
  .bwcet-school-card__contacts a:is([href^="tel:"], [href^="mailto:"])::before {
    content: ""; display: block; flex: 0 0 1rem; width: 1rem; height: 1rem;
    margin-block-start: .13em; background: currentColor;
    mask-size: contain; mask-repeat: no-repeat; mask-position: center;
  }
  .bwcet-school-card__contacts a[href^="tel:"]::before { mask-image: url("../icons/phone.svg"); }
  .bwcet-school-card__contacts a[href^="mailto:"]::before { mask-image: url("../icons/mail.svg"); }
}
@media (forced-colors: active) {
  .bwcet-school-card__contacts a:is([href^="tel:"], [href^="mailto:"])::before { display: none; }
}
