/* HOVERLINKS! */
:root {
  /**
   * Configuration variables
   * CSS themes should start by changing these
   * Edit other properties only if necessary
   */
 
  --hoverlink-bg-color: white;
  --hoverlink-text-color: black;
 
  /* Vertical distance between popup and link */
  --hoverlink-distance: 0.5rem;
 
  /* How far the popup moves as it fades in */
  --hoverlink-motion-distance: 1rem;
 
  /* Width of the popup on desktop, including image */
  --hoverlink-width: 30rem;
 
  /* Height of the popup */
  --hoverlink-height: 12rem;
 
  /* Width of the image on desktop */
  --hoverlink-image-width: var(--hoverlink-height);
 
  /* Text at the bottom of the card. Set to "" to remove */
  --hoverlink-read-more: "↗ Read more";
}
 
.hoverlink > a[href="javascript:;"] ~ .hoverlink-card {
  --hoverlink-read-more: "";
}
 
.hoverlink {
  position: relative;
}
@media (max-width: 1200px) {
  .hoverlink {
    position: static;
  }
}
 
.hoverlink-card {
  display: grid;
  grid-template-areas: "title" "text";
  grid-template-rows: auto 1fr;
  border: thin solid #0006;
  border-radius: 0.25rem;
  width: calc(var(--hoverlink-width) - var(--hoverlink-image-width));
  height: var(--hoverlink-height);
  box-shadow: 0 2.5rem 5rem -1rem #0002;
  background-color: var(--hoverlink-bg-color);
  color: var(--hoverlink-text-color);
  text-align: left;
  font-style: normal;
  font-weight: normal;
  font-family: sans-serif;
 
  opacity: 0;
  visibility: hidden;
  transition-property: opacity, transform, visibility;
  transition-duration: 0.2s, 0.2s, 0s;
  transition-timing-function: ease-out;
  transition-delay: 0s, 0s, 0.4s;
 
  position: absolute;
  z-index: 9;
  top: 0; left: 50%;
  pointer-events: none;
  user-select: none;
  transform: translate( -50%, calc(
    -100%
    - var(--hoverlink-distance)
    + var(--hoverlink-motion-distance)
  ));
}
.hoverlink-card:where(:has(.hoverlink-image)) {
  grid-template-areas: "title image" "text image";
  grid-template-columns: auto var(--hoverlink-image-width);
  width: var(--hoverlink-width);
}
@media (max-width: 1200px) {
  .hoverlink-card {
    top: auto;
    transform: translate(-50%, calc(
      0px
      - var(--hoverlink-distance)
      + var(--hoverlink-motion-distance)
    ));
    --hoverlink-distance: 100% - 2rem;
  }
}
@media (max-width: 600px) {
  .hoverlink-card {
    --hoverlink-image-width: 16rem;
    width: 16rem;
    height: auto;
    min-height: var(--hoverlink-height);
    max-height: 15rem;
  }
  .hoverlink-card:has(.hoverlink-image) {
    height: 28rem;
    grid-template-areas: "title" "text" "image";
    grid-template-rows: auto 1fr var(--hoverlink-image-width);
    grid-template-columns: auto;
    max-height: none;
  }
}
.hoverlink-image {
  grid-area: image;
  aspect-ratio: 1;
  width: var(--hoverlink-image-width);
  background-image: var(--src);
  background-size: cover;
  background-position: center;
  color: transparent;
}
.hoverlink-title {
  grid-area: title;
  font-size: 1.2em;
  font-weight: 600;
  margin: 0.5rem;
  font-family: sans-serif;
}
.hoverlink-text {
  grid-area: text;
  margin-inline: 0.5rem;
  text-overflow: ellipsis;
  overflow: hidden;
  position: relative;
}
.hoverlink-text::after {
  position: absolute;
  pointer-events: none;
  inset: 0;
  background-image: linear-gradient(to bottom,
    transparent 70%,
    var(--hoverlink-bg-color) 95%
  );
 
  content: var(--hoverlink-read-more);
  font-size: 80%;
  display: flex;
  align-items: end;
  justify-content: end;
  opacity: 0.9;
}
 
.hoverlink > a {
  /* Disable page preview on iOS as this covers the popup and you can't dismiss it without dismissing the popup */
  -webkit-touch-callout: none;
}
.hoverlink > :is(a:hover, a:active, a:focus, sup:hover) ~ .hoverlink-card,
.hoverlink-card--static {
  opacity: 1;
  visibility: visible;
  --hoverlink-motion-distance: 0rem;
  transition-delay: 0.2s, 0.2s, 0s;
}
.hoverlink-card--static {
  position: relative;
  pointer-events: auto;
  user-select: auto;
  transform: translate(-50%, -0.5rem);
  --hoverlink-distance: 0.5rem;
  --hoverlink-motion-distance: 0rem;
}
.hoverlink > sup {
  user-select: none;
  top: -0.4em;
  margin-right: -0.25ch;
}
 
/* Remove 'read more' text when it's a fake link */
.hoverlink > a[href="javascript:;"] ~ .hoverlink-card {
  --hoverlink-read-more: "";
}