/* Living section backgrounds for the inner pages: see assets/fields.js.
   The layer sits at z-index:-1 inside an isolated section, so it paints over
   the section's own background and under every piece of content, without
   touching the positioning of anything the section already has. */
.fx-host{position:relative;isolation:isolate;overflow:clip}
.fx{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.fx canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .9s cubic-bezier(.22,1,.36,1)}
.fx canvas.on{opacity:1}

/* objects live in the gutters, bleed off the edge and never reach the text column */
.fx-obj{position:absolute;display:block;width:var(--s,200px);will-change:transform}
.fx-obj img{display:block;width:100%;height:auto;
  filter:drop-shadow(0 30px 40px rgba(10,17,40,.22)) drop-shadow(0 6px 12px rgba(10,17,40,.12));
  animation:fxFloat var(--d,9s) ease-in-out var(--dl,0s) infinite alternate}
.fx-obj.soft img{filter:blur(3px) drop-shadow(0 20px 30px rgba(10,17,40,.18));opacity:.85}
.fx.dark .fx-obj img{filter:drop-shadow(0 0 40px rgba(242,118,27,.35)) drop-shadow(0 30px 40px rgba(0,0,0,.5))}
.fx.dark .fx-obj.soft img{filter:blur(3px) drop-shadow(0 0 30px rgba(242,118,27,.3));opacity:.8}
@keyframes fxFloat{
  from{transform:translate3d(0,-10px,0) rotate(var(--r0,-4deg))}
  to{transform:translate3d(0,12px,0) rotate(var(--r1,4deg))}
}
/* a soft light pool behind each object so it sits in the scene, not on it */
.fx-obj::before{content:"";position:absolute;inset:10% 5%;border-radius:50%;z-index:-1;
  background:radial-gradient(closest-side,rgba(242,118,27,.16),transparent);filter:blur(10px)}
.fx.dark .fx-obj::before{background:radial-gradient(closest-side,rgba(242,118,27,.28),transparent)}

/* the gutter only exists on wide screens; below that the objects step aside */
@media (max-width:1180px){.fx-obj{--s:150px!important;opacity:.55}}
@media (max-width:900px){.fx-obj{display:none}}
@media (prefers-reduced-motion:reduce){.fx-obj img{animation:none}.fx canvas{transition:none}}
