
/* ===== Animated backgrounds (vbgx-) ===== */
.vjx{position:relative;overflow:hidden;isolation:isolate}
.vjx::before{content:"";position:absolute;inset:-20%;z-index:-2;pointer-events:none;
  background:radial-gradient(closest-side,rgba(16,76,141,.10),transparent 70%) 12% 18%/48% 48% no-repeat,
  radial-gradient(closest-side,rgba(246,167,0,.12),transparent 70%) 88% 78%/44% 44% no-repeat;
  animation:vbgxDrift 26s ease-in-out infinite alternate}
.vjx::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(16,76,141,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(16,76,141,.06) 1px,transparent 1px);
  background-size:56px 56px;animation:vbgxGrid 34s linear infinite;
  -webkit-mask-image:radial-gradient(120% 90% at 50% 40%,#000 30%,transparent 78%);
  mask-image:radial-gradient(120% 90% at 50% 40%,#000 30%,transparent 78%)}
@keyframes vbgxDrift{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(3%,-2.5%,0) scale(1.08)}100%{transform:translate3d(-3%,3%,0) scale(1.04)}}
@keyframes vbgxGrid{to{background-position:56px 56px,56px 56px}}
/* dark card sheen */
.vaf-card::after{content:"";position:absolute;inset:-40%;z-index:0;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(246,167,0,.16) 40deg,transparent 110deg,rgba(16,76,141,.55) 200deg,transparent 300deg);
  animation:vbgxSpin 30s linear infinite;opacity:.55}
@keyframes vbgxSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.vjx::before,.vjx::after,.vaf-card::after{animation:none}}
