defaults

Every tunable has a fallback in the exported defaults object - the single source of truth for engine-wide numbers:

js
import { defaults } from 'gclass-anims'

// Config.js:56 exact snapshot
{
  orderDivide: 5,              // .order sequence: index / 5 -> seconds
  spawnDelayMultiplier: 0.2,   // priority-N -> N x 0.2s delay
  spawnOffset: 20,             // px travelled by directional spawns
  clickOffset: 10,             // click-hover lift (px)
  clickExpandOffset: 15,       // click-expand scale x10
  clickDuration: 0.2,
  ease: "back",                // default ease-* when absent
  effectDelay: 0.5,            // loop edelay
  effectDuration: 1,           // loop etime
  effectOffset: 20,            // loop amount
  progressStart: "top bottom", // scroll-progress range start
  progressEnd: "center center",
  textStagger: 0.03,
  typewriterSplitCharDuration: 0.05,
  minTextPartDuration: 0.3,    // floor for back-solved split durations
  revealDelay: 0,              // scramble reveal delay
  characterlist: "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",
  bootTime: 5,                 // boot overlay pause (s)
  breakpoints: { xs: 475, s: 640, m: 768, l: 1024, xl: 1280 },
}

Reading vs mutating

The engine reads this object at wiring time, so overriding entries before initAnimations() changes engine-wide behaviour without touching a single class.

Per-element classes always win over defaults - .time-2 beats effectDuration, .ease-expo beats ease.