/* Card motion is enabled only after the observer is ready. */
.card-reveal {
  transition:opacity .5s ease, transform .5s ease;
  transition-delay:var(--card-reveal-delay, 0ms);
}
.card-reveal.is-reveal-pending { opacity:0; transform:translateY(20px); }
.card-reveal.is-revealed { opacity:1; transform:none; }
.card-reveal.is-reveal-immediate { transition:none; }

/* Square portraits, a single framed link and a readable blue active caption. */
.team-tiles .team-tile--framed {
  border:3px solid transparent;
  color:var(--ink);
  background:var(--white);
  text-decoration:none;
  border-radius:0;
}
.team-tiles .team-tile--framed .team-tile-photo { aspect-ratio:1; }
.team-tiles .team-tile--framed .team-tile-caption {
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:108px;
  padding:18px 16px;
  background:#edf8fa;
  transition:background-color .18s ease, color .18s ease;
}
.team-tiles .team-tile--framed .team-tile-caption p {
  margin:0 0 6px;
  font-size:12px;
  line-height:1.5;
  color:inherit;
}
.team-tiles .team-tile--framed .team-tile-caption h3 {
  margin:0;
  font-size:clamp(20px, 1.65vw, 23px);
  line-height:1.3;
  color:inherit;
  text-decoration:none;
}
.team-tiles .team-tile--framed:is(:hover, :focus-visible, :focus-within) {
  border-color:#38a2b8;
  text-decoration:none;
}
.team-tiles .team-tile--framed:is(:hover, :focus-visible, :focus-within) .team-tile-caption {
  /* Dark brand derivative gives normal white text sufficient contrast. */
  background:#237b8e;
  color:#fff;
}
.team-tiles .team-tile--framed:is(:hover, :focus-visible, :focus-within) .team-tile-caption h3 {
  color:#fff;
  text-decoration:none;
}
.team-tiles .team-tile--framed:focus-visible { outline:3px solid var(--ink); outline-offset:4px; }
@media (max-width:759px) {
  .team-tiles .team-tile--framed .team-tile-caption { padding:16px 12px; }
  .team-tiles .team-tile--framed .team-tile-caption h3 { font-size:20px; }
}
@media (prefers-reduced-motion:reduce) {
  .card-reveal, .card-reveal.is-reveal-pending { opacity:1; transform:none; transition:none; }
}
@media print {
  .card-reveal, .card-reveal.is-reveal-pending { opacity:1; transform:none; transition:none; }
  .team-tiles .team-tile--framed .team-tile-caption { background:white; color:var(--ink); }
}
