/** Character-only motion — see MOTION-EVOO-CHARACTER.md */ /** Eyes lead mouth on pose change (ms). */ export const EVOO_MOUTH_LAG_MS = { min: 40, max: 80 } as const; /** Full pose transition duration (ms). */ export const EVOO_POSE_TRANSITION_MS = { min: 220, max: 320 } as const; /** Midpoint transition used in SVG/CSS. */ export const EVOO_POSE_TRANSITION_S = (EVOO_POSE_TRANSITION_MS.min + EVOO_POSE_TRANSITION_MS.max) / 2 / 1000; /** Cute / soft / snap — character springs only. */ export const EVOO_CHARACTER_SPRING = "cubic-bezier(0.34, 1.25, 0.64, 1)"; export function evooMouthLagMs(seed = Math.random()): number { return Math.round(EVOO_MOUTH_LAG_MS.min + seed * (EVOO_MOUTH_LAG_MS.max - EVOO_MOUTH_LAG_MS.min)); }