/* Size the carousel from all original quotes at the current viewport width.
   The hidden quotes reserve room, but remain invisible and inert. */
.quote-stage[data-quotes-ready="true"] {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
}

.quote-stage[data-quotes-ready="true"] > .quote-slide,
.quote-stage[data-quotes-ready="true"] > .quote-slide[hidden] {
  display: grid !important;
  grid-area: 1 / 1;
  grid-template-rows: 1fr auto auto;
  row-gap: 25px;
  min-width: 0;
}

.quote-stage[data-quotes-ready="true"] > .quote-slide[hidden] {
  visibility: hidden;
  pointer-events: none;
  user-select: none;
}

.quote-stage[data-quotes-ready="true"] blockquote {
  grid-row: 1;
  align-self: start;
}

.quote-stage[data-quotes-ready="true"] .testimonial-tags {
  grid-row: 2;
  align-self: start;
  margin: 0;
}

.quote-stage[data-quotes-ready="true"] figcaption {
  grid-row: 3;
  align-self: start;
  margin-top: 0;
}

/* Shared rows also lock tags and attribution when their own text wraps.
   The grid above keeps the section and controls stable in older browsers. */
@supports (grid-template-rows: subgrid) {
  .quote-stage[data-quotes-ready="true"] {
    grid-template-rows: auto auto auto;
    row-gap: 25px;
  }

  .quote-stage[data-quotes-ready="true"] > .quote-slide,
  .quote-stage[data-quotes-ready="true"] > .quote-slide[hidden] {
    grid-row: 1 / span 3;
    grid-template-rows: subgrid;
  }
}

/* Printed testimonials should include every original endorsement. */
@media print {
  .quote-stage[data-quotes-ready="true"] { display: block; }
  .quote-stage[data-quotes-ready="true"] > .quote-slide,
  .quote-stage[data-quotes-ready="true"] > .quote-slide[hidden] {
    display: block !important;
    visibility: visible;
    margin-bottom: 3rem;
    break-inside: avoid;
  }
  .quote-stage[data-quotes-ready="true"] .testimonial-tags,
  .quote-stage[data-quotes-ready="true"] figcaption { margin-top: 25px; }
  .quote-controls { display: none; }
}
