| null>(null);
const firedReroll = useRef(false);
const perturbDown = () => {
firedReroll.current = false;
lp.current = setTimeout(() => {
firedReroll.current = true;
onReroll();
}, 600);
};
const perturbUp = () => {
if (lp.current) clearTimeout(lp.current);
if (!firedReroll.current) onPerturb();
};
const big = (extra: CSSProperties): CSSProperties => ({
width: 64,
height: 64,
borderRadius: '50%',
fontSize: 26,
cursor: 'pointer',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
fontFamily: 'var(--font-mono)',
border: '1px solid var(--glass-line)',
transition: 'transform var(--dur-fast) var(--ease-console), background var(--dur-fast)',
...extra,
});
return (
setHover(true)}
onPointerLeave={() => setHover(false)}
style={{
position: 'absolute',
bottom: 28,
left: '50%',
transform: 'translateX(-50%)',
display: 'flex',
alignItems: 'center',
gap: 'var(--sp-3)',
padding: 'var(--sp-2) var(--sp-3)',
background: 'var(--glass)',
backdropFilter: 'blur(14px)',
WebkitBackdropFilter: 'blur(14px)',
border: '1px solid var(--glass-line)',
borderRadius: 'var(--r-pill)',
boxShadow: 'var(--shadow-2)',
opacity: hover || firstSession ? 1 : 0.55,
transition: 'opacity var(--dur-med) var(--ease-console)',
zIndex: 40,
}}
>
);
}