/* Genny animations. Idle: gentle bob + blink. Thinking: idea bulb flickers on, glasses glint, slight tilt. Cheer: hop + stars. */
.genny{overflow:visible}
.genny .gn-body{transform-origin:60px 128px;animation:gn-bob 3.2s ease-in-out infinite}
.genny .eye{transform-box:fill-box;transform-origin:center;animation:gn-blink 5s infinite}
.genny .gn-bulb,.genny .gn-stars{opacity:0}

.gn-thinking .gn-bulb{animation:gn-idea 1.6s ease-in-out infinite}
.gn-thinking .gn-body{animation:gn-ponder 1.6s ease-in-out infinite}
.gn-thinking .gn-eyes{transform:translate(2px,-2px)}

.gn-cheer .gn-body{animation:gn-hop .9s cubic-bezier(.3,1.6,.5,1) infinite}
.gn-cheer .gn-stars{animation:gn-twinkle .9s ease-in-out infinite}
.gn-cheer .arm-l{transform-box:fill-box;transform-origin:right top;transform:rotate(55deg)}
.gn-cheer .arm-r{transform-box:fill-box;transform-origin:left top;transform:rotate(-55deg)}

@keyframes gn-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes gn-blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes gn-idea{0%,20%{opacity:0;transform:translateY(4px)}40%,80%{opacity:1;transform:translateY(0)}60%{opacity:.6}100%{opacity:0}}
@keyframes gn-ponder{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes gn-hop{0%,100%{transform:translateY(0)}55%{transform:translateY(-10px)}}
@keyframes gn-twinkle{0%,100%{opacity:0;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}
/* more life: wave, wow, oops, fidgets, boop */
.genny{cursor:pointer}
.genny .gn-back{opacity:0}
.genny .gn-cardwrap{transform-box:view-box;transform-origin:60px 76px}
.gn-flip .gn-cardwrap{animation:gn-flip 1.25s cubic-bezier(.45,0,.3,1)}
.gn-flip .gn-front{animation:gn-face-front 1.25s steps(1,end)}
.gn-flip .gn-back{animation:gn-face-back 1.25s steps(1,end)}
.gn-flip .gn-glasses,.gn-flip .gn-mouth{animation:none}
@keyframes gn-flip{0%{transform:scaleX(1)}22%{transform:scaleX(0)}28%{transform:scaleX(0)}48%{transform:scaleX(1)}72%{transform:scaleX(0)}78%{transform:scaleX(0)}100%{transform:scaleX(1)}}
@keyframes gn-face-front{0%{opacity:1}25%{opacity:0}75%{opacity:1}}
@keyframes gn-face-back{0%{opacity:0}25%{opacity:1}75%{opacity:0}}
.genny .gn-eyes{transition:transform .12s ease-out}
.genny .gn-spark{opacity:0;transform-box:fill-box;transform-origin:center}
.gn-wave .arm-r{transform-box:fill-box;transform-origin:left top;animation:gn-wave 1.1s ease-in-out infinite}
.gn-wow .gn-body{animation:gn-pop .5s cubic-bezier(.3,1.8,.5,1) 1}
.gn-wow .gn-spark,.gn-wave .gn-spark{animation:gn-twinkle 1.4s ease-in-out infinite}
.gn-wow .gn-glasses{animation:gn-glint 1.4s ease-in-out infinite}
.gn-oops .gn-body{animation:gn-wobble 1.2s ease-in-out infinite}
.gn-look .gn-eyes{animation:gn-lookaround 1.3s ease-in-out}
.gn-adjust .gn-glasses{animation:gn-adjust 1.2s ease-in-out}
.gn-shimmy .gn-body{animation:gn-shimmy 1.2s ease-in-out}
.gn-hopsmall .gn-body{animation:gn-hop .6s cubic-bezier(.3,1.6,.5,1) 2}
.gn-boop .gn-body{animation:gn-boop .8s cubic-bezier(.3,1.7,.5,1)}
.gn-boop .gn-spark{animation:gn-twinkle .8s ease-in-out}
.genny .gn-outfit .gn-pumpkin{transform-box:fill-box;transform-origin:center bottom;animation:gn-swing 2.6s ease-in-out infinite}
.genny .gn-confetti rect{animation:gn-twinkle 1.6s ease-in-out infinite}
.bubble.pop{animation:gn-bubble .35s cubic-bezier(.3,1.6,.5,1)}
@keyframes gn-wave{0%,100%{transform:rotate(-40deg)}50%{transform:rotate(-80deg)}}
@keyframes gn-pop{0%{transform:scale(.9)}60%{transform:scale(1.08)}100%{transform:scale(1)}}
@keyframes gn-glint{0%,100%{filter:none}50%{filter:brightness(1.25) drop-shadow(0 0 3px #F7D27A)}}
@keyframes gn-wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}
@keyframes gn-lookaround{0%,100%{transform:translate(0,0)}30%{transform:translate(-3px,0)}65%{transform:translate(3px,-1px)}}
@keyframes gn-adjust{0%,100%{transform:translateY(0)}40%{transform:translateY(-3px)}60%{transform:translateY(-1px)}}
@keyframes gn-shimmy{0%,100%{transform:rotate(0)}20%{transform:rotate(-6deg)}40%{transform:rotate(6deg)}60%{transform:rotate(-4deg)}80%{transform:rotate(3deg)}}
@keyframes gn-boop{0%{transform:scale(1,1)}25%{transform:scale(1.12,.86)}55%{transform:scale(.92,1.1) translateY(-8px)}100%{transform:scale(1,1)}}
@keyframes gn-swing{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
@keyframes gn-bubble{0%{transform:scale(.85);opacity:.4}100%{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.genny *{animation:none!important}.bubble.pop{animation:none}}
