// Eyelid variants — controls how much the eye is covered
// scaleY: 0 = fully open, 1 = fully closed
const eyelidVariants = {
    idle: { scaleY: 0 },
    email: { scaleY: 0 },
    password: { scaleY: 1 },
    peek: { scaleY: 0.6 },
    surprised: { scaleY: 0 }, // wide open
    love: { scaleY: 0.65 }, // happy squint ^_^
    excited: { scaleY: 0 }, // wide open
};
// Body sway variants per character
const blobBodyVariants = {
    idle: { rotate: 0, y: 0 },
    email: { rotate: 2, y: -2 },
    password: { rotate: -1, y: 2, scale: 0.97 },
    peek: { rotate: 3, y: -1 },
    surprised: { rotate: 0, y: -8, scale: 1.05 }, // jump up, puff out
    love: { rotate: 0, y: 0 },
    excited: { rotate: 0, y: 0 },
};
const tallBodyVariants = {
    idle: { rotate: 0, y: 0 },
    email: { rotate: -1.5, y: 0 },
    password: { rotate: 0, y: 3, scale: 0.96 },
    peek: { rotate: 2, y: -2 },
    surprised: { rotate: 0, y: 0 },
    love: { rotate: -2, y: -3, scale: 1.03 }, // slight lean, puff up
    excited: { rotate: 0, y: 0 },
};
const smallBodyVariants = {
    idle: { rotate: 0, y: 0 },
    email: { rotate: 3, y: -3 },
    password: { rotate: -2, y: 1, scale: 0.95 },
    peek: { rotate: -3, y: -2 },
    surprised: { rotate: 0, y: 0 },
    love: { rotate: 0, y: 0 },
    excited: { rotate: 5, y: -10, scale: 1.08 }, // big bounce, spin
};
// Mouth paths for each character per state
// All paths use M + Q for smooth interpolation between states
const blobMouthPaths = {
    idle: 'M -10 0 Q 0 8 10 0', // wide gentle smile
    email: 'M -12 -2 Q 0 12 12 -2', // big happy smile
    password: 'M -6 0 Q 0 2 6 0', // flat/neutral
    peek: 'M -8 0 Q 0 5 8 0', // small smirk
    surprised: 'M -5 -4 Q 0 10 5 -4', // round "O" mouth
    love: 'M -10 0 Q 0 8 10 0', // gentle smile
    excited: 'M -12 -2 Q 0 12 12 -2', // big grin
};
const tallMouthPaths = {
    idle: 'M -6 0 Q 0 3 6 0', // subtle relaxed smile
    email: 'M -10 -1 Q 0 10 10 -1', // big happy smile
    password: 'M -5 0 Q 0 0 5 0', // flat line (Q-based for animation)
    peek: 'M -5 0 Q 2 6 7 -1', // asymmetric smirk
    surprised: 'M -5 -3 Q 0 8 5 -3', // small O
    love: 'M -10 -2 Q 0 12 10 -2', // wide beaming smile
    excited: 'M -8 -1 Q 0 10 8 -1', // happy grin
};
const smallMouthPaths = {
    idle: 'M -7 0 Q 0 6 7 0', // sweet smile
    email: 'M -9 -1 Q 0 9 9 -1', // big grin
    password: 'M -4 0 Q 0 1 4 0', // tiny neutral
    peek: 'M -4 1 Q 1 6 6 0', // cheeky smirk
    surprised: 'M -4 -3 Q 0 8 4 -3', // little O
    love: 'M -7 0 Q 0 6 7 0', // sweet smile
    excited: 'M -10 -3 Q 0 14 10 -3', // huge open grin
};
// Eyebrow angles for Tall character
const eyebrowVariants = {
    idle: { rotate: 0, y: 0 },
    email: { rotate: -5, y: -2 },
    password: { rotate: 8, y: 2 },
    peek: { rotate: -10, y: -1 },
    surprised: { rotate: -12, y: -4 }, // raised high
    love: { rotate: -6, y: -2 }, // gently raised
    excited: { rotate: -8, y: -3 }, // raised
};
// Spring configs per character for mouse tracking
const springConfigs = {
    small: { stiffness: 300, damping: 20 },
    blob: { stiffness: 150, damping: 25 },
    tall: { stiffness: 80, damping: 30 },
};
// Body spring for state transitions
const bodyTransition = {
    type: 'spring',
    stiffness: 200,
    damping: 20,
};
// Bouncier transition for click reactions
const clickTransition = {
    type: 'spring',
    stiffness: 300,
    damping: 15,
};

export { blobBodyVariants, blobMouthPaths, bodyTransition, clickTransition, eyebrowVariants, eyelidVariants, smallBodyVariants, smallMouthPaths, springConfigs, tallBodyVariants, tallMouthPaths };
