.story-player {
  display: grid;
  justify-items: center;
  align-self: center;
  width: 100%;
  max-width: 550px;
  min-width: 0;
  margin: 0 auto;
  color: var(--wine);
  text-align: center;
}

.story-stage {
  --stage-height: clamp(252px, 27vw, 340px);
  position: relative;
  isolation: isolate;
  width: 100%;
  height: var(--stage-height);
  overflow: clip;
}

.story-scene {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template: minmax(0, 1fr) / minmax(0, 1fr);
  place-items: center;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(8px) scale(.86) rotate(-4deg);
  filter: blur(4px);
  transition: opacity .36s ease, transform .44s ease, filter .36s ease, visibility 0s linear .44s;
}

.story-scene.is-current {
  opacity: 1;
  visibility: visible;
  transform: none;
  filter: none;
  transition-delay: 0s;
}


.story-player:is([data-state="playing"], [data-state="paused"]) .story-scene.is-current:not(.story-duck)::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(35%, 135px);
  aspect-ratio: 1;
  border: 1.5px solid #ad764a;
  border-radius: 50%;
  content: "";
  pointer-events: none;
  animation: story-handoff .65s ease-out both;
}

@keyframes story-handoff {
  from { opacity: .42; transform: translate(-50%, -50%) scale(.54); }
  to { opacity: 0; transform: translate(-50%, -50%) scale(1.8); }
}

.story-duck.is-current .story-duck-button { pointer-events: auto; }

.story-duck-button {
  display: grid;
  place-items: center;
  width: min(88%, var(--stage-height));
  max-height: 100%;
  padding: 0;
  border: 0;
  border-radius: 36%;
  background: transparent;
  color: inherit;
  cursor: pointer;
  touch-action: manipulation;
}

.story-duck-button img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: contain;
  transform-origin: 50% 86%;
  transition: transform .22s ease;
}

.story-duck-button:hover img { transform: rotate(-3deg) translateY(-3px); }
.story-duck-button:focus-visible,
.story-controls button:focus-visible,
.story-link:focus-visible {
  outline: 2px solid var(--rose);
  outline-offset: 3px;
}

.story-quack {
  position: absolute;
  top: 10%;
  right: 5%;
  color: var(--rose);
  opacity: 0;
  font: italic 630 clamp(1.4rem, 3.8vw, 2.8rem)/1 var(--serif);
  letter-spacing: -.055em;
  pointer-events: none;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-duck.is-current .story-duck-button img {
  animation: story-waddle 2.4s ease-in-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-duck.is-current .story-quack {
  animation: story-quack 1.55s .12s ease-out both;
}

@keyframes story-waddle {
  0%, 100% { transform: none; }
  13% { transform: translate(-5%, -1%) rotate(-7deg); }
  26% { transform: translate(-2%, 1%) rotate(4deg); }
  40% { transform: translate(4%, -4%) rotate(-5deg); }
  55% { transform: translate(8%, 1%) rotate(5deg); }
  70% { transform: translate(4%, -2%) rotate(-4deg); }
  86% { transform: translate(-1%, 1%) rotate(2deg); }
}

@keyframes story-quack {
  0% { opacity: 0; transform: translate(-8px, 8px) rotate(6deg) scale(.82); }
  22%, 66% { opacity: 1; transform: translate(0, 0) rotate(-7deg) scale(1); }
  100% { opacity: 0; transform: translate(4px, -8px) rotate(-9deg); }
}

.lily-figure {
  position: relative;
  height: calc(var(--stage-height) * .91);
  max-width: 88%;
  aspect-ratio: 2 / 3;
  transform-origin: 45% 87%;
}

.lily-figure > img,
.patch-figure > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.echo-spark {
  position: absolute;
  left: 72.1%;
  top: 18.4%;
  width: 19%;
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.echo-spark::before, .echo-spark::after {
  position: absolute;
  border-radius: 50%;
  content: "";
}

.echo-spark::before {
  inset: 0;
  border: 2px solid #6bd4e5;
  box-shadow: 0 0 15px #48c6e766, inset 0 0 7px #7af2e557;
  opacity: .54;
}

.echo-spark::after {
  inset: 23%;
  background: #0b1b2c;
  opacity: 0;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-lily.is-current .lily-figure {
  animation: story-lift-disk 4.4s ease-in-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-lily.is-current .echo-spark::before {
  animation: story-echo 2.9s .98s ease-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-lily.is-current .echo-spark::after {
  animation: story-echo-dark 3.6s .25s ease-in-out both;
}

@keyframes story-lift-disk {
  0%, 100% { transform: none; }
  29%, 59% { transform: translateY(-8px) rotate(-4deg); }
  80% { transform: translateY(-4px) rotate(-1deg); }
}

@keyframes story-echo {
  0% { opacity: 0; transform: scale(.72); }
  32% { opacity: .92; transform: scale(1); }
  100% { opacity: .26; transform: scale(1.75); }
}

@keyframes story-echo-dark {
  0%, 16%, 48%, 100% { opacity: 0; }
  22%, 33% { opacity: 1; }
}

.patch-figure {
  position: relative;
  width: min(92%, 430px, calc(var(--stage-height) * 1.38));
  aspect-ratio: 3 / 2;
  transform-origin: 52% 82%;
}

.patch-splash, .patch-ring {
  position: absolute;
  z-index: 1;
  pointer-events: none;
}

.patch-splash {
  bottom: 13%;
  left: 24%;
  width: 51%;
  opacity: .54;
  transform-origin: center bottom;
}

.patch-ring {
  top: 28%;
  right: 16%;
  width: clamp(23px, 5.5vw, 42px);
  opacity: .84;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-patch.is-current .patch-figure > img {
  transform-origin: 52% 82%;
  animation: story-patch-leap 3.6s ease-in-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-patch.is-current .patch-splash {
  animation: story-patch-splash 3.6s ease-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-patch.is-current .patch-ring {
  animation: story-patch-ring 4.3s ease-out both;
}

@keyframes story-patch-leap {
  0%, 100% { transform: none; }
  12% { transform: translate(-4px, 5px) scale(1.01, .96); }
  32% { transform: translate(13px, -17px) rotate(-6deg); }
  49% { transform: translate(19px, 3px) rotate(3deg); }
  61% { transform: translate(16px, -2px) rotate(-1deg); }
  73% { transform: translate(17px, 0) rotate(1deg); }
}

@keyframes story-patch-splash {
  0%, 38% { opacity: 0; transform: translateY(5px) scale(.56, .5); }
  51% { opacity: .82; transform: translateY(-5px) scale(.96, 1.12); }
  83%, 100% { opacity: .54; transform: none; }
}

@keyframes story-patch-ring {
  0%, 58% { opacity: 0; transform: translate(-4px, 5px) rotate(-14deg) scale(.7); }
  73% { opacity: 1; transform: translate(0, -5px) rotate(8deg) scale(1.12); filter: drop-shadow(0 0 6px #f0ad34); }
  100% { opacity: .84; transform: none; }
}

.quantum-visual {
  width: min(100%, 490px, calc(var(--stage-height) * 1.46));
  max-height: 94%;
  overflow: visible;
}

.pixel-sprite {
  position: absolute;
  bottom: 8%;
  left: 10%;
  width: clamp(74px, 11vw, 108px);
  aspect-ratio: 192 / 208;
  background: url("/assets/pixel-quantum.webp") no-repeat 0% 50% / 600% 100%;
  pointer-events: none;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-pixel.is-current .pixel-sprite {
  animation: story-pixel-steps 1.33s steps(5, end) .2s 4 alternate both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-pixel.is-current .quantum-path {
  animation: story-quantum-path 3s ease-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-pixel.is-current .quantum-arrivals circle {
  animation: story-quantum-arrive .48s ease-out var(--arrival, 0s) both;
}

@keyframes story-pixel-steps {
  to { background-position-x: 100%; }
}

@keyframes story-quantum-path {
  0% { opacity: .12; }
  44% { opacity: 1; }
  100% { opacity: .72; }
}

@keyframes story-quantum-arrive {
  from { opacity: 0; }
  to { opacity: 1; }
}

.story-sign { perspective: 820px; }

.sign-object {
  position: relative;
  width: min(100%, 520px, calc(var(--stage-height) * 1.78));
  aspect-ratio: 840 / 470;
  transform-style: preserve-3d;
}

.sign-vintage, .sign-future {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  backface-visibility: hidden;
}

.sign-future { opacity: 0; }

.story-player:is([data-state="playing"], [data-state="paused"]) .story-sign.is-current .sign-vintage {
  animation: story-sign-past 6.2s ease-in-out both;
}

.story-player:is([data-state="playing"], [data-state="paused"]) .story-sign.is-current .sign-future {
  animation: story-sign-future 6.2s ease-in-out both;
}


.story-player:is([data-state="playing"], [data-state="paused"]) .story-sign.is-current .sign-object::after {
  position: absolute;
  top: 28%;
  left: 13%;
  width: 74%;
  height: 2px;
  background: #a9faff;
  box-shadow: 0 0 12px 2px #76baff;
  content: "";
  opacity: 0;
  pointer-events: none;
  animation: story-sign-scan 1.35s 3.6s ease-out both;
}

@keyframes story-sign-scan {
  0% { opacity: 0; transform: translateY(0); }
  24% { opacity: .68; }
  100% { opacity: 0; transform: translateY(clamp(55px, 9vw, 120px)); }
}

.story-player[data-state="ended"] .story-sign.is-current .sign-vintage { opacity: 0; }
.story-player[data-state="ended"] .story-sign.is-current .sign-future { opacity: 1; }

@keyframes story-sign-past {
  0%, 19% { opacity: 1; transform: rotateY(0deg); }
  42% { opacity: 1; }
  49%, 100% { opacity: 0; transform: rotateY(90deg); }
}

@keyframes story-sign-future {
  0%, 47% { opacity: 0; transform: rotateY(-90deg); }
  58% { opacity: 1; }
  78%, 100% { opacity: 1; transform: rotateY(0deg); }
}

.story-player[data-state="paused"] .story-scene.is-current,
.story-player[data-state="paused"] .story-scene.is-current::after,
.story-player[data-state="paused"] .story-scene.is-current *,
.story-player[data-state="paused"] .story-scene.is-current *::before,
.story-player[data-state="paused"] .story-scene.is-current *::after {
  animation-play-state: paused !important;
}

.story-caption {
  display: grid;
  justify-items: center;
  align-content: start;
  gap: 4px;
  min-height: 118px;
  max-width: 42ch;
  margin: 1px 0 6px;
  padding-inline: 6px;
}

.story-kicker {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .48em;
  margin: 0;
  color: var(--wine);
  font: 700 .66rem/1.28 var(--sans);
  letter-spacing: .14em;
  text-transform: uppercase;
}

.story-kicker [aria-hidden="true"] { color: var(--rose); }

.story-line {
  margin: 0;
  color: var(--muted);
  font: 600 .83rem/1.35 var(--sans);
  letter-spacing: normal;
  text-transform: none;
}

.story-link {
  align-self: start;
  min-width: 0;
  color: var(--wine);
  font: 700 .76rem/1.45 var(--sans);
  letter-spacing: normal;
  text-decoration: underline;
  text-transform: none;
  text-underline-offset: 3px;
}

.story-link:hover { color: var(--rose); }

.story-controls {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 5px;
  margin-top: 4px;
}

.story-controls[hidden], .story-link[hidden] { display: none; }

.story-controls button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-width: 44px;
  min-height: 44px;
  padding: 5px 9px;
  border: 1px solid #925a6263;
  border-radius: 24px;
  background: transparent;
  color: var(--wine);
  font: 700 .72rem/1.1 var(--sans);
  cursor: pointer;
  touch-action: manipulation;
}

.story-controls button:hover { background: #b9746a19; }
.story-controls button:disabled { opacity: .44; cursor: default; }
.story-controls .story-play {
  min-width: 86px;
  padding-inline: 14px;
  border-color: var(--wine);
  background: var(--wine);
  color: #fff9ee;
}

.story-controls .story-play:hover { background: #703143; }

.story-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  padding: 0;
  border: 0;
  margin: -1px;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

.story-player[data-state="preview"] .sign-object {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  aspect-ratio: auto;
}

.story-player[data-state="preview"] .sign-object img {
  position: static;
  opacity: 1;
  transform: none;
}

@media (max-width: 620px) {
  .story-stage { --stage-height: clamp(200px, 59vw, 248px); }
  .story-duck-button { width: min(76%, var(--stage-height)); }
  .story-caption { margin-bottom: 4px; }
  .pixel-sprite { left: 6%; bottom: 10%; }
}

@media (prefers-reduced-motion: reduce) {
  .story-player .story-scene,
  .story-player .story-scene::after,
  .story-player .story-scene *,
  .story-player .story-scene *::before,
  .story-player .story-scene *::after {
    animation: none !important;
    transition: none;
  }

  .story-player .story-scene.is-current::after { opacity: 0; }
  .pixel-sprite { background-position: 40% 50%; }

  .story-sign.is-current .sign-object {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    aspect-ratio: auto;
  }

  .story-player .story-sign.is-current .sign-object img {
    position: static;
    opacity: 1;
    transform: none;
  }
}
