/* A separate link and favorite button keep every program card valid and usable. */
article.featured-card {
  position: relative;
  isolation: isolate;
}
.featured-card .program-card-open {
  color: inherit;
  text-decoration: none;
}
.program-card-open::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  content: "";
}
.program-card-open:focus-visible {
  outline: none;
}
.program-card-open:focus-visible::after {
  outline: 3px solid #2455bc;
  outline-offset: -4px;
}
.program-favorite-button {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: 0;
  border: 1px solid #cbd2db;
  border-radius: 50%;
  color: #303742;
  background: #fff;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.program-favorite-button > svg {
  display: block;
  width: 25px;
  height: 25px;
  overflow: visible;
  fill: transparent;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linejoin: round;
}
.program-favorite-button[aria-pressed="true"] {
  color: #e43d82;
  border-color: #ec9cbc;
}
.program-favorite-button[aria-pressed="true"] > svg {
  fill: currentColor;
}
.program-favorite-button:focus-visible {
  outline: 3px solid #2455bc;
  outline-offset: 3px;
}
.featured-card > .program-favorite-button {
  position: absolute;
  z-index: 2;
  top: 10px;
  right: 10px;
  box-shadow: 0 2px 8px #00000018;
}
.featured-card--rider > .featured-rider-title {
  padding-right: 58px;
}
.featured-card .program-social-links {
  position: relative;
  z-index: 2;
}

/* Both actions stay in the dialog scrollport without covering its heading. */
.program-dialog > .program-detail-controls,
.professional-dialog > .program-detail-controls {
  position: sticky;
  z-index: 5;
  top: calc(var(--detail-close-inset) - var(--detail-top-padding));
  display: flex;
  align-items: center;
  gap: 8px;
  width: max-content;
  margin: calc(var(--detail-close-inset) - var(--detail-top-padding))
    calc(var(--detail-close-inset) - var(--detail-inline-padding))
    calc(var(--detail-top-padding) - var(--detail-close-inset) - 44px) auto;
}
.program-dialog .program-detail-controls > .dialog-close,
.professional-dialog .program-detail-controls > .professional-dialog-close {
  position: static;
  float: none;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  margin: 0;
}
