/* One viewport-sized canvas, shared by every page using the site navigation.
   Only compositor transforms animate; document height never tiles the gradient. */
html {
  background: #070e1e !important;
  animation: none !important;
}
body {
  background: transparent !important;
  animation: none !important;
  isolation: isolate;
  min-height: 100vh;
}
/* Retire the older, page-specific decorative halos. */
body::before,
body::after { content: none !important; }
.tvr-ambient-background {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background: linear-gradient(145deg, #071321, #090f23 55%, #100d24);
}
.tvr-ambient-background::before,
.tvr-ambient-background::after {
  content: "";
  position: absolute;
  inset: -15%;
  background: radial-gradient(ellipse at 18% 32%, rgba(80, 223, 219, .16), transparent 58%);
  animation: tvrAmbientCyan 28s ease-in-out infinite alternate;
  will-change: transform;
}
.tvr-ambient-background::after {
  background: radial-gradient(ellipse at 84% 62%, rgba(192, 67, 229, .17), transparent 58%);
  animation: tvrAmbientViolet 34s ease-in-out infinite alternate;
}
@keyframes tvrAmbientCyan {
  from { transform: translate3d(-3%, -4%, 0) scale(1); }
  to { transform: translate3d(8%, 9%, 0) scale(1.1); }
}
@keyframes tvrAmbientViolet {
  from { transform: translate3d(4%, 5%, 0) scale(1.08); }
  to { transform: translate3d(-8%, -7%, 0) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .tvr-ambient-background::before,
  .tvr-ambient-background::after {
    animation: none;
    will-change: auto;
  }
}
