/* Image settle + rule draw: the motion is Web Animations in part.js (one start keyframe each, so items land on their
   own resting style). This file holds the rule origins, the held state and the pre-paint hide (part.js in <head>
   adds .isr-js to <html>), with a failsafe that shows everything at 4 s if the script never arrives.
   Knobs (read by part.js):
     --isr-scale: 1.25;  --isr-dur: 1.6s;  --isr-ease: (expo.out as linear(), cubic-bezier(.16,1,.3,1) fallback)
     --isr-rule-dur: 1s;  --isr-rule-ease: cubic-bezier(.4,0,.2,1);  --isr-rule-delay: .15s   (Sadewa vision rule)
     Heron's rule instead: --isr-rule-dur: 1.2s; --isr-rule-ease: cubic-bezier(.333,.667,.667,1); --isr-rule-delay: 0s
     --isr-stagger: .1s */
[data-isr="rule"] { transform-origin: left center; }   /* give the rule a block or inline-block box: scale needs one */
[data-isr="rule"][data-isr-from="right"] { transform-origin: right center; }
[data-isr="rule"][data-isr-from="top"] { transform-origin: center top; }
[data-isr="rule"][data-isr-from="bottom"] { transform-origin: center bottom; }
[data-isr="rule"][data-isr-from="center"] { transform-origin: center; }

.isr-held { visibility: hidden; }

.isr-js [data-isr]:not([data-isr-state]) {
  visibility: hidden;
  animation: isr-failsafe 0s 4s forwards;
}
@keyframes isr-failsafe { to { visibility: visible; } }

@media (prefers-reduced-motion: reduce) {
  .isr-held, .isr-js [data-isr]:not([data-isr-state]) { visibility: visible; animation: none; }
}
