/* Decorative portal layer; the source illustration stays unchanged. */
.portal-effect {
  position: absolute;
  pointer-events: none;
  overflow: hidden;
  inset: 0;
}
.portal-effect > svg {
  position: absolute;
  max-width: none;
  overflow: hidden;
}
.portal-water-sheen {
  transform-box: fill-box;
  transform-origin: center;
  animation: portal-water-drift 16s ease-in-out infinite alternate;
}
@keyframes portal-water-drift {
  from { transform: translate(-9px, -15px) scale(.95); opacity: .55; }
  to { transform: translate(8px, 18px) scale(1.08); opacity: .9; }
}
.portal-spark {
  opacity: 0;
  animation: portal-spark-float var(--spark-duration) linear var(--spark-delay) infinite;
}
@keyframes portal-spark-float {
  0% { opacity: 0; transform: translate(0, 9px); }
  20% { opacity: .8; }
  60% { opacity: .6; }
  100% { opacity: 0; transform: translate(var(--spark-drift), var(--spark-rise)); }
}
.portal-effect[data-paused="true"] * { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .portal-water-sheen { animation: none; opacity: .55; }
  .portal-spark { animation: none; opacity: .35; }
}
