/* =========================================================================
   What's inside the cards: text, links, "Played on" tags, the YouTube
   thumbnail, the SoundCloud player and the bookings button.
   ========================================================================= */

.box p {
  margin: 0 0 18px;
  font-size: 15px;
  letter-spacing: 0.3px;
  color: var(--body);
}

/* full bio on tablet and desktop, a shorter one on phones */
.bio-short {
  display: none;
}

/* small uppercase label, e.g. "Played on" */
.label {
  margin: 28px 0 12px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--muted);
}

/* ---------- "Played on" tags ---------- */

.played {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.played a {
  display: inline-block;
  padding: 7px 12px;
  border: 1px solid var(--line);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--text);
  transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.played a:hover {
  border-color: #fff;
  color: #fff;
}

/* ---------- Underlined links under the players ---------- */

/* sits above the player's shadow, with room below the player */
.more-link {
  position: relative;
  z-index: 1;
  margin: 40px 0 0 !important;
}

.link {
  padding-bottom: 2px;
  font-size: 14px;
  letter-spacing: 0.5px;
  text-decoration: none;
  box-shadow: inset 0 -1px 0 0 currentColor;
  transition: box-shadow 0.2s ease;
}

.link:hover {
  box-shadow: inset 0 -3px 0 0 currentColor;
}

.yt-link {
  color: var(--yt);
}

.sc-link {
  color: var(--sc);
}

/* ---------- YouTube thumbnail (js/youtube.js) ----------
   The newest video's thumbnail with a play button; it opens the video on
   YouTube. */
.video-feature {
  position: relative;
  aspect-ratio: 16 / 9;
  margin: 26px 0 6px;
  background: #000;
  box-shadow: var(--shadow);
}

.video-feature > a {
  position: absolute;
  inset: 0;
  display: block;
  cursor: pointer;
}

.video-feature img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.video-feature .play {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 72px;
  height: 72px;
  transform: translate(-50%, -50%);
  transition: transform 0.2s ease;
}

.video-feature > a:hover .play,
.video-feature > a:focus-visible .play {
  transform: translate(-50%, -50%) scale(1.08);
  transition-delay: 100ms;
}

/* ---------- SoundCloud player (js/soundcloud.js) ----------
   SoundCloud's standard single-track player, showing the newest track.
   It stays hidden until it has switched to that track. */
.sc-player {
  position: relative;
  height: 166px;
  margin: 26px 0 6px;
  overflow: hidden; /* the widget rounds its corners; we clip them off */
  background: #000;
  box-shadow: var(--shadow);
}

.sc-player iframe {
  position: absolute;
  top: -4px;
  left: -4px;
  width: calc(100% + 8px);
  height: calc(100% + 8px);
  border: 0;
  opacity: 0;
  transition: opacity 0.4s ease;
}

.sc-player.is-ready iframe {
  opacity: 1;
}

/* ---------- Bookings ----------
   The one light card on the page, so the call to action stands out. The
   button is also the email address, so people can read or copy it. */
.box.booking-box {
  border-color: #f1f1f1;
  background: #f1f1f1;
}

#bookings .row::before {
  box-shadow: var(--shadow), 0 0 32px rgba(255, 255, 255, 0.06);
}

.booking-box p {
  color: #2a2a2a;
}

.mail-btn {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  width: 100%;
  margin-top: 6px;
  padding: 16px 30px;
  border: 1px solid #0b0b0b;
  background: #0b0b0b;
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 3px;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.mail-btn svg {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
}

/* the fill drops away and the outline stays */
.mail-btn:hover {
  background: transparent;
  color: #0b0b0b;
}

/* Hover effects wait 100ms, so passing over quickly doesn't flash them.
   Moving away resets immediately. */
.played a:hover,
.link:hover,
.mail-btn:hover {
  transition-delay: 100ms;
}

/* ---------- Phones ---------- */

@media (max-width: 560px) {
  .bio-long {
    display: none;
  }

  .bio-short {
    display: block;
  }

  /* smaller tags, several to a row */
  .played {
    gap: 6px;
  }

  .played a {
    padding: 5px 8px;
    font-size: 10px;
    letter-spacing: 1px;
  }

  .mail-btn {
    gap: 8px;
    padding: 15px 12px;
    font-size: 11px;
    letter-spacing: 2px;
    overflow-wrap: anywhere;
  }
}

/* narrow phones: keep the email address on one line */
@media (max-width: 374px) {
  .mail-btn {
    padding-left: 6px;
    padding-right: 6px;
    letter-spacing: 0.5px;
  }

  .mail-btn svg {
    display: none;
  }
}
