/* ENGINE BACKGROUND: an engineering blueprint behind the 3D engine. A fine grid, measuring
   circles and cross-hairs centred on the engine, a perspective floor grid and a soft blue glow.
   Fits the "engine being assembled" idea. Engine centre: 31% 52% (desktop), 50% 34% (phones). */
.stage .eng-bg{--ex:31%;--ey:52%;
  background:
    radial-gradient(ellipse 34% 42% at var(--ex) var(--ey),rgba(30,120,220,.38),transparent 70%),
    repeating-radial-gradient(circle at var(--ex) var(--ey),transparent 0 59px,rgba(110,190,255,.19) 59px 60px),
    linear-gradient(90deg,transparent calc(var(--ex) - .5px),rgba(110,190,255,.24) calc(var(--ex) - .5px) calc(var(--ex) + .5px),transparent calc(var(--ex) + .5px)),
    linear-gradient(180deg,transparent calc(var(--ey) - .5px),rgba(110,190,255,.24) calc(var(--ey) - .5px) calc(var(--ey) + .5px),transparent calc(var(--ey) + .5px)),
    repeating-linear-gradient(90deg,rgba(90,170,255,.13) 0 1px,transparent 1px 48px),
    repeating-linear-gradient(180deg,rgba(90,170,255,.13) 0 1px,transparent 1px 48px),
    linear-gradient(120deg,#030c1b,#0b294b 45%,#030c1b);
  -webkit-mask-image:radial-gradient(ellipse 85% 80% at var(--ex) var(--ey),#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 85% 80% at var(--ex) var(--ey),#000 55%,transparent 100%)}
/* perspective floor grid under the engine */
.stage .eng-bg::after{content:'';position:absolute;left:-30%;right:-30%;bottom:-8%;height:46%;pointer-events:none;
  background:repeating-linear-gradient(90deg,rgba(90,170,255,.26) 0 1px,transparent 1px 70px),repeating-linear-gradient(180deg,rgba(90,170,255,.26) 0 1px,transparent 1px 70px);
  transform:perspective(600px) rotateX(62deg);transform-origin:50% 100%;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 60%);mask-image:linear-gradient(180deg,transparent,#000 60%)}
/* a slow scanning line across the blueprint */
.stage .eng-bg::before{content:'';position:absolute;inset:-10% 0;pointer-events:none;filter:none;
  background:linear-gradient(180deg,transparent 0 46%,rgba(120,200,255,.10) 49.5%,rgba(160,220,255,.22) 50%,rgba(120,200,255,.10) 50.5%,transparent 54% 100%) 0 0/100% 200% no-repeat;
  animation:engScan 7s linear infinite}
@keyframes engScan{from{background-position:0 100%}to{background-position:0 -100%}}
@media(max-width:860px){.stage .eng-bg{--ex:50%;--ey:34%}}
@media(prefers-reduced-motion:reduce){.stage .eng-bg::before{animation:none;opacity:0}}
