/* T-32. Independent of slide number and the entrance-animation timeout.
   Existing hooks: the four rounded motor housings and their adjacent fin paths.
   No SVG or generator changes required. Translation stays below one artboard pixel. */
.s15-after .s15-floor.after rect[rx="10"],
.s15-after .s15-floor.after rect[rx="10"] + path.ln.thin {
  --motor-period:3.6s;
  --motor-phase:0s;
}
.s15-after .s15-floor.after rect:nth-child(2 of rect[rx="10"]),
.s15-after .s15-floor.after rect:nth-child(2 of rect[rx="10"]) + path.ln.thin {
  --motor-period:4.1s; --motor-phase:-1.35s;
}
.s15-after .s15-floor.after rect:nth-child(3 of rect[rx="10"]),
.s15-after .s15-floor.after rect:nth-child(3 of rect[rx="10"]) + path.ln.thin {
  --motor-period:4.6s; --motor-phase:-2.2s;
}
.s15-after .s15-floor.after rect:nth-child(4 of rect[rx="10"]),
.s15-after .s15-floor.after rect:nth-child(4 of rect[rx="10"]) + path.ln.thin {
  --motor-period:3.9s; --motor-phase:-.75s;
}
@keyframes factory-motor-running {
  0%,50%,100% { transform:translate(0,0); }
  25% { transform:translate(.85px,-.35px); }
  75% { transform:translate(-.65px,.25px); }
}
@media screen and (prefers-reduced-motion:no-preference) {
  body:not(.review):not(:has(#overview:not([hidden]))) .slide.is-active .s15-after .s15-floor.after rect[rx="10"],
  body:not(.review):not(:has(#overview:not([hidden]))) .slide.is-active .s15-after .s15-floor.after rect[rx="10"] + path.ln.thin {
    animation:factory-motor-running var(--motor-period) ease-in-out var(--motor-phase) infinite!important;
  }
}

/* Optional Before comparison, OFF by default.
   Add factory-before-motion to this slide to turn the existing wheel spokes
   and carry a small moving mark along the existing belts. No extra SVG needed.
   Recommend leaving it off: the requested four independent motors stay the focus. */
@keyframes factory-flywheel-turn { to { transform:rotate(360deg); } }
@keyframes factory-belt-travel { to { stroke-dashoffset:-46; } }
@media screen and (prefers-reduced-motion:no-preference) {
  body:not(.review):not(:has(#overview:not([hidden]))) .slide.is-active.factory-before-motion .s15-before .s15-floor.before circle.ln.thin + path.ln.thin {
    transform-box:view-box;
    transform-origin:80px 228px;
    animation:factory-flywheel-turn 7.4s linear infinite!important;
  }
  body:not(.review):not(:has(#overview:not([hidden]))) .slide.is-active.factory-before-motion .s15-before .s15-floor.before .belt {
    stroke-dasharray:18 5;
    animation:factory-belt-travel 3.2s linear infinite!important;
  }
}
