/* v238.3 — parent social proof as a compact, optional card.
   It sits between the product explanation and the subscription offer, and it must read as a
   secondary reassurance, not as a section of its own. The tall 2:3 poster is no longer part
   of the page flow; the testimonial opens in a modal on explicit click. */

/* Member mode: an entitled member — including one who still has to accept the
   acknowledgement — enters the Academy, never a sales testimonial. */
body.family-member-mode #family-voices { display: none !important; }

.fsp2383 { padding: clamp(26px, 3.6vw, 40px) 0; }

.fsp2383__card {
  display: flex;
  align-items: stretch;
  gap: 0;
  max-width: 640px;
  border: 1px solid rgba(20, 32, 28, .14);
  border-radius: 16px;
  overflow: hidden;
  background: rgba(20, 32, 28, .025);
}

.fsp2383__thumb {
  flex: 0 0 clamp(100px, 13vw, 140px);
  /* a square keeps the crop to the top ~2/3 of the 2:3 poster: the face stays fully in
     frame and the caption burned into the lower third never peeks into the card */
  aspect-ratio: 1 / 1;
  align-self: center;
  position: relative;
  margin: clamp(12px, 1.8vw, 16px);
  border-radius: 12px;
  overflow: hidden;
  background: #0d1512;
}
.fsp2383__thumb picture { display: block; height: 100%; }
.fsp2383__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 10%;
}

.fsp2383__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: .45rem;
  padding: clamp(14px, 2vw, 18px) clamp(14px, 2.2vw, 20px) clamp(14px, 2vw, 18px) 0;
}
.fsp2383__title { margin: 0; font-size: clamp(1.02rem, 1.5vw, 1.18rem); line-height: 1.25; }
.fsp2383__text { margin: 0; font-size: .92rem; line-height: 1.5; color: #4a5551; }

.fsp2383__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .55rem clamp(.7rem, 1.6vw, 1rem);
  margin-top: .2rem;
}
.fsp2383__watch { padding: .5rem .9rem; font-size: .86rem; line-height: 1.2; }
.fsp2383__more { font-size: .84rem; }

@media (max-width: 430px) {
  .fsp2383__thumb { flex-basis: 92px; }
  .fsp2383__body { padding: 13px 13px; }
  .fsp2383__actions { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .fsp2383__watch { width: 100%; text-align: center; }
}

/* ---------- modal ---------- */
.fsp2383-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(12px, 3vw, 28px);
  padding-top: max(clamp(12px, 3vw, 28px), env(safe-area-inset-top, 0px));
  padding-bottom: max(clamp(12px, 3vw, 28px), env(safe-area-inset-bottom, 0px));
  background: rgba(8, 12, 10, .82);
}
.fsp2383-modal[hidden] { display: none; }
.fsp2383-modal__dialog {
  position: relative;
  /* vertical short-form video, never taller than the viewport */
  height: min(82vh, calc((100vw - 2 * clamp(12px, 3vw, 28px)) * 16 / 9));
  max-height: 82vh;
  aspect-ratio: 9 / 16;
  max-width: 100%;
  border-radius: 14px;
  overflow: hidden;
  background: #000;
}
.fsp2383-modal__dialog iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.fsp2383-modal__close {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 2;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .92);
  color: #1b2320;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}
.fsp2383-modal__close:hover { background: #fff; }
.fsp2383-modal__close:focus-visible { outline: 2px solid #c96f50; outline-offset: 2px; }
body.fsp2383-modal-open { overflow: hidden; }
