/* Viewport-sized light layer; the shared shell survives Swup navigation. */
.contact-ambient { display: none; }
body:has(.brand-contact) { isolation: isolate; }
body:has(.brand-contact) .contact-ambient {
  display: block;
  position: fixed;
  inset: 0;
  overflow: hidden;
  z-index: -1;
  pointer-events: none;
  background: #fafaf9;
}
.contact-ambient span {
  position: absolute;
  inset: -18%;
  filter: blur(18px);
  /* Static ivory pools also cover unavailable canvas / no-JS rendering. */
  background:
    radial-gradient(ellipse 50% 62% at 22% 62%,
      rgba(239, 236, 231, .7) 12%, rgba(245, 243, 239, .48) 45%, transparent 75%),
    radial-gradient(ellipse 62% 48% at 90% 24%,
      rgba(242, 239, 234, .65) 16%, rgba(251, 249, 246, .5) 48%, transparent 76%);
  animation: contact-light-drift 28s ease-in-out infinite alternate paused;
}
.contact-ambient span + span {
  background:
    radial-gradient(ellipse 42% 46% at 58% 86%,
      rgba(245, 242, 237, .6) 15%, rgba(254, 253, 250, .7) 44%, transparent 74%);
  animation-name: contact-light-counter;
  animation-duration: 34s;
  animation-delay: -12s;
}
body[data-contact-flow-running] .contact-ambient span { animation-play-state: running; }
.contact-ambient canvas {
  display: block;
  width: 100%;
  height: 100%;
  filter: blur(12px);
  transform: scale(1.04);
}
.contact-ambient.has-flow-canvas span { display: none; }
.brand-contact__spread,
.brand-contact__qr-stage,
.brand-contact__copy,
.brand-contact__process { background: transparent; }
@keyframes contact-light-drift {
  from { transform: translate(-4%, 3%) rotate(-8deg) scale(1); }
  to { transform: translate(6%, -5%) rotate(9deg) scale(1.1, .94); }
}
@keyframes contact-light-counter {
  from { transform: translate(7%, -5%) rotate(12deg) scale(.94, 1.08); }
  to { transform: translate(-6%, 6%) rotate(-9deg) scale(1.08, .96); }
}
@media (max-width: 767px) {
  .contact-ambient span { filter: blur(14px); animation-duration: 34s; }
  .contact-ambient span + span { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .contact-ambient span { animation: none; }
}
