:root{--ease:cubic-bezier(0.22,1,0.36,1);--spring:cubic-bezier(0.34,1.56,0.64,1)}@keyframes spin{to{rotate:1turn}}.orb{--gx:-0.5;--gy:-0.1;--fx:0.9;--orb-glow:37,99,235;position:relative;display:inline-block;flex-shrink:0;animation:orbFloat 4.2s ease-in-out var(--float-delay,0s) infinite}@keyframes orbFloat{50%{translate:0 calc(var(--s) * -.05)}}.orb i{font-style:normal}.orb i,.orb-ball{position:absolute}.orb-ball{inset:0;border-radius:50%;overflow:hidden;isolation:isolate;background:radial-gradient(75% 50% at 50% 100%,rgba(52,211,153,.95),rgba(52,211,153,0) 72%),radial-gradient(60% 60% at 47% 44%,#1d4ed8 0,#2563eb 42%,#3b82f6 64%,#93c5fd 82%,#e0f2fe 100%);box-shadow:0 calc(var(--s) * .16) calc(var(--s) * .36) calc(var(--s) * -.1) rgba(var(--orb-glow),.62),0 calc(var(--s) * .03) calc(var(--s) * .08) rgba(var(--orb-glow),.2);transition:translate .6s var(--ease),rotate .6s var(--spring),scale .5s var(--spring),filter .6s ease}.orb-swirl{inset:-25%;border-radius:50%;background:radial-gradient(28% 24% at 36% 40%,rgba(29,78,216,.9),rgba(29,78,216,0)),radial-gradient(26% 22% at 66% 64%,rgba(16,185,129,.55),rgba(16,185,129,0));filter:blur(calc(var(--s) * .07));animation:spin 9s linear infinite}.orb-rim{inset:0;border-radius:50%;box-shadow:inset 0 0 calc(var(--s) * .07) calc(var(--s) * .015) rgba(255,255,255,.6),inset 0 calc(var(--s) * .06) calc(var(--s) * .1) rgba(255,255,255,.35),inset 0 calc(var(--s) * -.05) calc(var(--s) * .12) rgba(167,243,208,.45)}.orb-shine{left:17%;top:9%;width:38%;height:22%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.7),rgba(255,255,255,0));rotate:-28deg;opacity:.6}.orb-face{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.orb-eyes{translate:calc(var(--gx) * 11px) calc(var(--gy) * 8px);filter:drop-shadow(0 0 1.6px rgba(255,255,255,.55));transition:translate .34s var(--ease)}.orb-eye{transition:translate .45s var(--spring),scale .45s var(--spring),rotate .45s var(--spring)}.orb-lid{scale:var(--fx) 1;transition:scale .09s ease-out}.orb.blink .orb-lid{scale:var(--fx) .08}.orb-pill{fill:#fff;transition:scale .35s var(--spring),opacity .2s ease}.orb-arc{fill:none;stroke:#fff;stroke-width:4.4;stroke-linecap:round;opacity:0;scale:.6 .2;transition:scale .4s var(--spring),opacity .2s ease}.orb:is([data-mood=happy],[data-mood=excited]) .orb-pill,.orb[data-mood=wink] .orb-eye.l .orb-pill,.sage-fab:hover .orb .orb-pill{opacity:0;scale:1 .1}.orb:is([data-mood=happy],[data-mood=excited]) .orb-arc,.orb[data-mood=wink] .orb-eye.l .orb-arc,.sage-fab:hover .orb .orb-arc{opacity:1;scale:1}.orb[data-mood=happy] .orb-ball{animation:orbHop .75s var(--spring)}.orb[data-mood=excited] .orb-ball{animation:orbHop .6s var(--spring) 2}.orb[data-mood=excited] .orb-eye{scale:1.2}.orb[data-mood=wink] .orb-ball{rotate:8deg}@keyframes orbHop{30%{translate:0 calc(var(--s) * -.14);scale:.96 1.05}60%{translate:0 0;scale:1.06 .94}}.orb[data-mood=concerned] .orb-eye{scale:1 .58;translate:0 2.5px}.orb[data-mood=concerned] .orb-ball{translate:0 calc(var(--s) * .04);filter:saturate(.82) brightness(.97)}.orb[data-mood=confused] .orb-eye.l{scale:1 .55}.orb[data-mood=confused] .orb-eye.r{scale:1.15}.orb[data-mood=confused] .orb-ball{rotate:-10deg}.orb[data-mood=thinking] .orb-eye.r{scale:1 .78}.orb[data-mood=thinking] .orb-swirl{animation-duration:1.6s}.orb[data-mood=thinking] .orb-ball{animation:orbPulse 1.2s ease-in-out infinite}@keyframes orbPulse{50%{scale:1.06;box-shadow:0 0 0 calc(var(--s) * .12) rgba(var(--orb-glow),.16),0 calc(var(--s) * .16) calc(var(--s) * .36) calc(var(--s) * -.1) rgba(var(--orb-glow),.62)}}.orb[data-mood=talking] .orb-eye{animation:orbTalk .34s ease-in-out infinite alternate}.orb[data-mood=talking] .orb-swirl{animation-duration:3s}@keyframes orbTalk{to{scale:1.06 .8}}.orb[data-mood=listening] .orb-eye{scale:1.08}.orb[data-sleep]{animation-duration:7s}.orb[data-sleep] .orb-lid{scale:var(--fx) .1;transition-duration:.9s}.orb[data-sleep] .orb-ball{filter:saturate(.75) brightness(.92)}.orb[data-sleep] .orb-swirl{animation-duration:20s}.orb-z{right:-8%;top:-18%;font-size:calc(var(--s) * .3);font-weight:700;line-height:1;color:rgb(var(--orb-glow));opacity:0;pointer-events:none}.orb[data-sleep] .orb-z{animation:orbZ 2.6s ease-out infinite}@keyframes orbZ{0%{opacity:0;translate:0 0;scale:.6}30%{opacity:.9}to{opacity:0;translate:calc(var(--s) * .18) calc(var(--s) * -.3);scale:1.1}}.orb.startle .orb-eye{scale:1.3}.orb.startle .orb-ball{animation:orbHop .6s var(--spring)}.sage-arrival{position:fixed;left:0;top:0;z-index:160;width:var(--size);height:var(--size);pointer-events:none;opacity:0;will-change:transform}.sage-arrival-body{position:relative;width:100%;height:100%}.sage-arrival .orb{display:block}.sage-arrival.hello .sage-arrival-body,.sage-arrival.leaving .sage-arrival-body{animation:arrivalBounce .75s cubic-bezier(.3,.7,.4,1) both,arrivalFloat 1.8s ease-in-out .75s infinite}@keyframes arrivalBounce{0%{scale:1;translate:0 0}16%{scale:1.14 .86;translate:0 6px}42%{scale:.94 1.07;translate:0 -24px}64%{scale:1.05 .95;translate:0 2px}82%{scale:.99 1.01;translate:0 -6px}to{scale:1;translate:0 0}}@keyframes arrivalFloat{50%{translate:0 -9px}}.sage-arrival-body:before{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(37,99,235,.5);opacity:0}.sage-arrival.hello .sage-arrival-body:before{animation:arrivalRing .9s ease-out .06s both}@keyframes arrivalRing{0%{opacity:.9;transform:scale(.85)}to{opacity:0;transform:scale(1.9)}}.sage-arrival-says{position:absolute;left:50%;bottom:calc(100% + 18px);padding:11px 18px;border-radius:18px;background:#fff;color:#0A0F1D;font-size:16px;font-weight:500;letter-spacing:-.2px;white-space:nowrap;box-shadow:0 20px 50px -12px rgba(10,15,29,.35);opacity:0;transform:translate(-50%,10px) scale(.86);transform-origin:50% 100%;transition:opacity .35s ease,transform .55s var(--spring)}.sage-arrival-says b{font-weight:700;background:linear-gradient(90deg,#2563eb,#10b981);-webkit-background-clip:text;background-clip:text;color:transparent}.sage-arrival-says:after{content:"";position:absolute;left:50%;top:100%;width:12px;height:12px;margin:-7px 0 0 -6px;background:inherit;border-radius:0 0 4px 0;transform:rotate(45deg)}.sage-arrival.hello .sage-arrival-says{opacity:1;transform:translate(-50%) scale(1);transition-delay:.1s}.sage-arrival.leaving .sage-arrival-says{opacity:0;transform:translate(-50%,-6px) scale(.94);transition-duration:.22s}@media (prefers-reduced-motion:reduce){.orb,.orb *{animation:none!important}}.sage-fab{position:relative}.msg-in{animation:msgIn .45s var(--ease) both}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}}.ab{animation:msgIn .5s var(--ease) both}.dots{display:inline-flex;gap:4px}.dots i{width:6px;height:6px;border-radius:50%;background:#60a5fa;animation:dotBounce 1s ease-in-out infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dotBounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}.thinking-txt{background:linear-gradient(90deg,#64748b,#e2e8f0 50%,#64748b);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmerText 1.6s linear infinite,msgIn .3s ease both}@keyframes shimmerText{to{background-position:-200% 0}}.caret{display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:-2px;background:#34d399;animation:caretBlink .8s steps(2) infinite}@keyframes caretBlink{50%{opacity:0}}.hello-ring{position:relative}.hello-ring:after,.hello-ring:before{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid rgba(96,165,250,.35);animation:ripple 3s ease-out infinite}.hello-ring:after{animation-delay:1.5s}@keyframes ripple{0%{transform:scale(.8);opacity:1}to{transform:scale(1.35);opacity:0}}@media (prefers-reduced-motion:reduce){.ab,.caret,.dots i,.hello-ring:after,.hello-ring:before,.msg-in,.thinking-txt{animation:none!important}}