/* The entrance's own rules; the framework arms are GENERATED from the catalog and appended by the loader, never hand-authored here. */

[data-sk] {
  /* Divided by the intensity's magnitude, so one dial re-paces pace and phrasing. */
  --sk-cascade-beat: calc(
    var(--kit-cascade-beat) * 1ms / max(abs(var(--sk-anim-intensity, 1)), 0.1)
  );
}

@media (prefers-reduced-motion: no-preference) {
  /* Must win by SPECIFICITY, not order: the generated armed rules are appended after this sheet, wrapped in :where(). */
  html[data-sk-js] [data-anim].sk-in,
  html[data-sk-js] [data-anim] [data-sk-reveal].sk-in,
  html[data-sk-js] [data-anim] [data-sk-cascade].sk-in > * {
    opacity: 1;
    transform: none;
  }
}
/* ── Animation frameworks — GENERATED from pieces/animation-frameworks/ ── */
@media (prefers-reduced-motion: no-preference) {
  html[data-sk-js] [data-anim="fade"]:where(:not(:has([data-sk-reveal], [data-sk-reveal-group], [data-sk-cascade]))),
  html[data-sk-js] [data-anim="fade"] :where([data-sk-reveal]:not([data-sk-cascade])),
  html[data-sk-js] [data-anim="fade"] :where([data-sk-cascade]) > * {
    opacity: 0;
    transform: none;
    transition: opacity calc(0.9s / max(abs(var(--sk-anim-intensity, 1)), 0.1)) ease var(--sk-reveal-delay, 0s);
  }
  html[data-sk-js] [data-anim="rise"]:where(:not(:has([data-sk-reveal], [data-sk-reveal-group], [data-sk-cascade]))),
  html[data-sk-js] [data-anim="rise"] :where([data-sk-reveal]:not([data-sk-cascade])),
  html[data-sk-js] [data-anim="rise"] :where([data-sk-cascade]) > * {
    opacity: 0;
    transform: translateY(calc(26px * var(--sk-anim-intensity, 1)));
    transition: opacity calc(0.7s / max(abs(var(--sk-anim-intensity, 1)), 0.1)) ease var(--sk-reveal-delay, 0s), transform calc(0.7s / max(abs(var(--sk-anim-intensity, 1)), 0.1)) var(--sk-ease-out) var(--sk-reveal-delay, 0s);
  }
  html[data-sk-js] [data-anim="zoom"]:where(:not(:has([data-sk-reveal], [data-sk-reveal-group], [data-sk-cascade]))),
  html[data-sk-js] [data-anim="zoom"] :where([data-sk-reveal]:not([data-sk-cascade])),
  html[data-sk-js] [data-anim="zoom"] :where([data-sk-cascade]) > * {
    opacity: 0;
    transform: scale(max(0, calc(1 - 0.035 * var(--sk-anim-intensity, 1))));
    transition: opacity calc(0.7s / max(abs(var(--sk-anim-intensity, 1)), 0.1)) ease var(--sk-reveal-delay, 0s), transform calc(0.7s / max(abs(var(--sk-anim-intensity, 1)), 0.1)) var(--sk-ease-out) var(--sk-reveal-delay, 0s);
  }
}
