/* Presentation for the small rotation controller; Home hero and complete testimonial items. */
[data-rotation-stage] { position: relative; isolation: isolate; }
[data-rotation-slide] { position: absolute; inset: 0; opacity: 1; }
[data-rotation-slide][hidden], [data-rotation-controls][hidden] { display: none; }
[data-rotation-counter][hidden] { display: none; }
[data-rotation-slide].rotation-incoming { z-index: 1; opacity: 0; }
[data-rotation-slide].rotation-incoming.rotation-reveal { opacity: 1; transition: opacity 300ms ease; }
.rotation-controls {
  position: relative;
  z-index: var(--layer-content);
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: .75rem;
  padding: 1rem 1rem max(1rem, env(safe-area-inset-bottom));
}
.rotation-controls button {
  min-width: 44px;
  min-height: 44px;
  padding: .5rem .9rem;
  border: 1px solid var(--color-ivory);
  border-radius: 2rem;
  background: var(--color-coffee);
  color: var(--color-ivory);
  font: inherit;
  cursor: pointer;
}
.rotation-controls button:focus-visible { outline: 3px solid var(--color-ivory); outline-offset: 3px; }
.rotation-controls button[aria-disabled="true"] { opacity: .65; cursor: default; }
@media (prefers-reduced-motion: reduce) {
  [data-rotation-slide].rotation-incoming.rotation-reveal { transition: none; }
}

/* Portfolio opts into translation; Home's two opacity modes are unchanged. */
[data-rotation-transition="vertical"] .rotation-vertical-in {
  transform: translateY(calc(var(--rotation-direction, 1) * 100%));
}
[data-rotation-transition="vertical"] .rotation-vertical-out { transform: translateY(0); }
[data-rotation-transition="vertical"] .rotation-vertical-in.rotation-reveal {
  transform: translateY(0); transition: transform 300ms ease-in-out;
}
[data-rotation-transition="vertical"] .rotation-vertical-out.rotation-reveal {
  transform: translateY(calc(var(--rotation-direction, 1) * -100%)); transition: transform 300ms ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  [data-rotation-transition="vertical"] .rotation-vertical-in.rotation-reveal,
  [data-rotation-transition="vertical"] .rotation-vertical-out.rotation-reveal { transition: none; }
}

/* Intrinsic content is normal flow without JS. Only initialized multi-item
   stages reserve the maximum measured height; hidden templates never load. */
[data-rotation-layout="intrinsic"] [data-rotation-slide] { position: relative; inset: auto; }
[data-rotation-layout="intrinsic"] [data-rotation-stage].rotation-sized { height: var(--rotation-height); }
[data-rotation-layout="intrinsic"] .rotation-sized > [data-rotation-slide] { position: absolute; inset: 0 0 auto; }
[data-rotation-layout="intrinsic"] [data-rotation-slide].rotation-measure {
  position: relative; inset: auto; visibility: hidden; pointer-events: none;
}

/* Complete testimonial units never crossfade over one another. */
[data-rotation-transition="sequential"] [data-rotation-slide].rotation-sequential-out {
  opacity: 0; transition: opacity 120ms ease-in-out;
}
[data-rotation-transition="sequential"] [data-rotation-slide].rotation-sequential-in { opacity: 0; }
[data-rotation-transition="sequential"] [data-rotation-slide].rotation-sequential-in.rotation-reveal {
  opacity: 1; transition: opacity 120ms ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  [data-rotation-transition="sequential"] [data-rotation-slide].rotation-sequential-out,
  [data-rotation-transition="sequential"] [data-rotation-slide].rotation-sequential-in.rotation-reveal { transition: none; }
}
