/* Media placeholders: video, image, audio. Shared by index.html and every sub-page.
   Each <figure class="media-slot"> marks a spot where real media should go.
   Replace the figure's inner frame with the embed and keep the figcaption. */
.media-slot { margin: 2.2rem 0 2.6rem; max-width: 100%; }
.media-slot .slot-frame {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.9rem;
  border: 1px dotted var(--gray-2);
  background: var(--paper-deep);
  color: var(--ink);
  text-align: center;
  padding: 1.5rem;
  overflow: hidden;
}
.media-slot .slot-frame::before {
  content: "";
  position: absolute; inset: 0;
  background-image: radial-gradient(var(--ink) 1.1px, transparent 1.3px);
  background-size: 11px 11px;
  opacity: 0.10;
  -webkit-mask-image: radial-gradient(ellipse at center, transparent 30%, black 100%);
  mask-image: radial-gradient(ellipse at center, transparent 30%, black 100%);
  pointer-events: none;
}
.media-slot.video .slot-frame { aspect-ratio: 16 / 9; }
.media-slot.image .slot-frame { aspect-ratio: 3 / 2; }
.media-slot.audio .slot-frame { min-height: 7.5rem; flex-direction: row; justify-content: flex-start; gap: 1.4rem; text-align: left; padding: 1.4rem 1.8rem; }
.media-slot .slot-kind {
  font-family: var(--mono);
  font-size: 0.7rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--gray-2);
  position: relative;
}
.media-slot .slot-title {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2.4vw, 1.6rem);
  line-height: 1.25;
  max-width: 30ch;
  position: relative;
}
.media-slot.audio .slot-kind { position: absolute; top: 1rem; left: 1.8rem; }
.media-slot.audio .slot-title { font-size: 1.15rem; margin-top: 0.8rem; }
.media-slot .slot-play {
  position: relative;
  width: 64px; height: 64px;
  border: 1px solid var(--ink);
  border-radius: 50%;
  background: var(--paper);
  box-shadow: 0 0 0 5px var(--paper-deep), 0 0 0 6px var(--gray-3);
}
.media-slot .slot-play::after {
  content: "";
  position: absolute; left: 50%; top: 50%;
  transform: translate(-40%, -50%);
  border-left: 14px solid var(--ink);
  border-top: 9px solid transparent;
  border-bottom: 9px solid transparent;
}
.media-slot .slot-wave {
  flex: 0 0 120px;
  height: 36px;
  margin-top: 0.8rem;
  background-image: repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 6px);
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
  opacity: 0.7;
}
.media-slot figcaption {
  margin-top: 0.7rem;
  font-size: 0.86rem;
  color: var(--gray-1);
  max-width: 70ch;
}
.media-slot .slot-tag {
  font-family: var(--mono);
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gray-2);
  border: 1px dotted var(--gray-3);
  padding: 0.1rem 0.45rem;
  margin-right: 0.5rem;
}

/* unrecorded video slots stay in the source for the content plan but are not shown; delete this rule to show them again */
.media-slot.video { display: none; }

/* filled slots: a real player or a silent diagram loop in place of the frame */
.media-slot.filled video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--paper-deep);
  border: 1px dotted var(--gray-2);
  object-fit: cover;
  transition: border-color 0.4s, box-shadow 0.4s;
}
.media-slot.filled.playing video { border: 1px solid var(--ink); box-shadow: 0 24px 50px -30px rgba(0,0,0,.5); }
.media-slot.filled figcaption { transition: color 0.4s; }
.media-slot.filled.playing figcaption { color: var(--gray-2); }

/* filled image and audio slots */
.media-slot.filled img {
  display: block;
  width: 100%;
  height: auto;
  background: var(--paper-deep);
  border: 1px dotted var(--gray-2);
}
.media-slot.filled .audio-head {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-bottom: 0.7rem;
}
.media-slot.filled .audio-head .slot-title { font-family: var(--serif); font-size: 1.15rem; line-height: 1.25; }
.media-slot.filled audio { display: block; width: 100%; }
