
.sani{position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:60;width:56px;height:56px;pointer-events:none;will-change:transform;font:600 14px/1.4 'Nunito Sans',system-ui,sans-serif}
.sani.away{opacity:0;visibility:hidden}
.sani-lean{width:100%;height:100%;transition:transform .12s linear}
.sani-btn{display:block;width:100%;height:100%;padding:0;border:0;border-radius:50%;background:none;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 0 12px rgba(124,58,237,.55)) drop-shadow(0 6px 10px rgba(0,0,0,.25))}
.sani-btn:focus-visible{outline:3px solid #F5D08A;outline-offset:3px}
.sani-bob{display:block;width:100%;height:100%;animation:sani-bob 3.6s ease-in-out infinite;transform-origin:50% 90%}
.sani-btn svg{display:block;width:100%;height:100%;overflow:visible;transition:transform .25s cubic-bezier(.2,.7,.2,1)}
.sani-eyes{transform-box:fill-box;transform-origin:center;animation:sani-blink 5s infinite;transition:transform .2s}
.sani-pu{transition:transform .12s linear}
.sani-mb,.sani-mo,.sani-hand{opacity:0}
.sani-ms{transform-box:fill-box;transform-origin:center}
.sani-hand{transform-origin:50px 42px;transition:transform .3s cubic-bezier(.2,.7,.2,1),opacity .2s}
.sani-z{position:absolute;left:62%;top:-4px;opacity:0;font:800 14px/1 'Nunito Sans',system-ui,sans-serif;font-style:normal;color:#F5D08A;pointer-events:none}
.sani-z.z2{left:80%;top:-14px;font-size:11px}
.sani-sparks{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}
.sani-sparks i{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:#F5D08A;box-shadow:0 0 8px #E8A15C;opacity:0;animation:sani-sp .8s ease-out both}
.sani-tip,.sani-menu{position:absolute;max-width:min(250px,calc(100vw - 28px));background:#12121F;color:#F4F2FB;border:1px solid rgba(245,208,138,.45);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.35),0 0 22px rgba(124,58,237,.25);animation:sani-in .3s ease both}
.sani-tip{display:flex;gap:6px;align-items:flex-start;width:max-content;padding:10px 6px 10px 14px;pointer-events:none}
.sani-x{pointer-events:auto}
.sani-tip[hidden],.sani-menu[hidden]{display:none}
.sani[data-ts=r] .sani-tip,.sani[data-ts=r] .sani-menu{left:calc(100% + 12px);top:50%;translate:0 -50%}
.sani[data-ts=l] .sani-tip,.sani[data-ts=l] .sani-menu{right:calc(100% + 12px);top:50%;translate:0 -50%}
.sani[data-ts=t] .sani-tip,.sani[data-ts=t] .sani-menu,.sani:not([data-ts]) .sani-tip,.sani:not([data-ts]) .sani-menu{bottom:calc(100% + 10px)}
.sani[data-ts=b] .sani-tip,.sani[data-ts=b] .sani-menu{top:calc(100% + 10px)}
.sani[data-ts=t][data-tx=r] .sani-tip,.sani[data-ts=b][data-tx=r] .sani-tip,.sani[data-ts=t][data-tx=r] .sani-menu,.sani[data-ts=b][data-tx=r] .sani-menu,.sani:not([data-ts]) .sani-tip,.sani:not([data-ts]) .sani-menu{right:0}
.sani[data-ts=t][data-tx=l] .sani-tip,.sani[data-ts=b][data-tx=l] .sani-tip,.sani[data-ts=t][data-tx=l] .sani-menu,.sani[data-ts=b][data-tx=l] .sani-menu{left:0}
.sani-x{flex:none;width:28px;height:28px;margin:-4px 0;border:0;border-radius:50%;background:none;color:#B9B6CE;font:700 18px/1 system-ui,sans-serif;cursor:pointer}
.sani-x:hover{color:#fff;background:rgba(255,255,255,.1)}
.sani-menu{display:grid;min-width:164px;padding:6px;pointer-events:auto}
.sani-menu a,.sani-menu button{display:block;width:100%;padding:10px 12px;border:0;border-radius:9px;background:none;color:#F4F2FB;font:inherit;text-align:left;text-decoration:none;cursor:pointer}
.sani-menu a:hover,.sani-menu button:hover{background:rgba(245,208,138,.14);color:#fff}
.sani-menu a:focus-visible,.sani-menu button:focus-visible,.sani-x:focus-visible{outline:2px solid #F5D08A;outline-offset:1px}
.sani-menu button{color:#B9B6CE}

.sani[data-m=curious] .sani-bob{animation:none}
.sani[data-m=curious] svg{transform:rotate(-7deg) scale(1.03)}
.sani[data-m=curious] .sani-eyes{transform:scale(1.1)}
.sani[data-m=excite] .sani-bob,.sani[data-m=cheer] .sani-bob{animation:sani-hop .6s ease-in-out infinite}
.sani[data-m=excite] .sani-ms,.sani[data-m=cheer] .sani-ms,.sani[data-m=wow] .sani-ms,.sani[data-m=spin] .sani-ms,.sani[data-m=dizzy] .sani-ms{opacity:0}
.sani[data-m=excite] .sani-mb,.sani[data-m=cheer] .sani-mb,.sani[data-m=spin] .sani-mb,.sani[data-m=wave] .sani-mb{opacity:1}
.sani[data-m=wave] .sani-ms,.sani[data-m=salute] .sani-ms{opacity:0}
.sani[data-m=wave] .sani-mb{opacity:1}
.sani[data-m=wow] .sani-mo,.sani[data-m=dizzy] .sani-mo{opacity:1}
.sani[data-m=wow] .sani-eyes{transform:scale(1.25)}
.sani[data-m=wow] .sani-bob{animation:sani-jump .5s ease-out}
.sani[data-m=sleep] .sani-bob{animation:sani-snooze 4s ease-in-out infinite}
.sani[data-m=sleep] .sani-eyes{animation:none;transform:scaleY(.18)}
.sani[data-m=sleep] svg{transform:rotate(6deg)}
.sani[data-m=sleep] .sani-z{animation:sani-z 2.6s ease-in infinite}
.sani[data-m=sleep] .sani-z.z2{animation-delay:1.2s}
.sani[data-m=dizzy] .sani-bob,.sani[data-m=spin] .sani-bob{animation:sani-spin .85s cubic-bezier(.4,0,.2,1) 2}
.sani[data-m=spin] .sani-bob{animation-iteration-count:1}
.sani[data-m=stretch] .sani-bob{animation:sani-stretch .8s ease-out}
.sani[data-m=stretch] .sani-eyes{animation:none;transform:scaleY(.4)}
.sani[data-m=wave] .sani-hand,.sani[data-m=salute] .sani-hand{opacity:1}
.sani[data-m=wave] .sani-hand{animation:sani-wave .55s ease-in-out infinite alternate}
.sani[data-m=wave] svg{transform:rotate(4deg)}
.sani[data-m=salute] .sani-hand{transform:rotate(-130deg)}
.sani[data-m=salute] svg{transform:translateY(-1px)}
.sani[data-m=point] .sani-bob{animation:none}
.sani[data-m=point][data-pt=r] .sani-hand{opacity:1;transform:rotate(-45deg)}
.sani[data-m=point][data-pt=b] .sani-hand{opacity:1;transform:rotate(45deg)}
.sani[data-m=point][data-pt=t] .sani-hand{opacity:1;transform:rotate(-135deg)}
.sani[data-m=point] svg{transform:rotate(-4deg)}
.sani[data-m=point][data-pt=r] svg{transform:rotate(4deg)}
.sani[data-m=point][data-pt=l] svg{transform:scaleX(-1) rotate(-4deg)}
.sani[data-m=point][data-pt=l] .sani-hand{opacity:1;transform:rotate(-45deg)}
@keyframes sani-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes sani-snooze{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(1px) scale(1.03,.97)}}
@keyframes sani-hop{0%,100%{transform:translateY(0) scale(1)}35%{transform:translateY(-9px) scale(.96,1.05)}70%{transform:translateY(0) scale(1.06,.94)}}
@keyframes sani-jump{0%{transform:translateY(0)}35%{transform:translateY(-10px) scale(.95,1.06)}100%{transform:translateY(0)}}
@keyframes sani-spin{to{transform:rotate(360deg)}}
@keyframes sani-stretch{0%{transform:scale(1,.9)}40%{transform:scale(.92,1.16) translateY(-3px)}100%{transform:scale(1)}}
@keyframes sani-wave{from{transform:rotate(-70deg)}to{transform:rotate(-105deg)}}
@keyframes sani-z{0%{opacity:0;transform:translate(0,6px)}30%{opacity:1}100%{opacity:0;transform:translate(8px,-16px)}}
@keyframes sani-sp{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.3)}}
@keyframes sani-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}
@keyframes sani-in{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.sani{width:44px;height:44px}.sani-tip,.sani-menu{font-size:13px}}
@media(prefers-reduced-motion:reduce){.sani,.sani *{animation:none!important;transition:none!important}.sani-z,.sani-sparks{display:none}}
@media print{.sani{display:none}}
