:root{--apo-text:#0D2F2B;--apo-surface:#FFFFFF;--apo-shadow-panel:0 18px 55px rgba(13,47,43,.12);--apo-z-assistant:2147483000}.apo-mascot-root{position:fixed;right:24px;bottom:24px;z-index:var(--apo-z-assistant);width:64px;height:64px;user-select:none;pointer-events:auto;cursor:grab;touch-action:none}.apo-mascot-root[data-dragging=true]{cursor:grabbing}.apo-mascot-img{width:64px;height:64px;object-fit:contain;display:block;pointer-events:none}.apo-close{position:absolute;top:-2px;right:-2px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0;font-size:11px;line-height:1;color:var(--apo-text);background:var(--apo-surface);border:1px solid rgba(0,109,88,.2);border-radius:9999px;box-shadow:var(--apo-shadow-panel);cursor:pointer;opacity:.85;transition:opacity .15s ease,transform .15s ease}.apo-close:hover{opacity:1;transform:scale(1.1)}.apo-bubble{position:absolute;bottom:calc(100% + 8px);right:0;max-width:240px;padding:8px 12px;background:var(--apo-surface);color:var(--apo-text);font-weight:700;font-size:13px;line-height:1.4;white-space:nowrap;border:1px solid rgba(0,109,88,.16);border-radius:14px;box-shadow:var(--apo-shadow-panel);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.apo-bubble:after{content:"";position:absolute;right:26px;bottom:-8px;border:8px solid transparent;border-top:8px solid var(--apo-surface);border-bottom:0}.apo-mascot-root:hover .apo-bubble{opacity:1;visibility:visible;transform:translateY(0)}.apo-mascot-root[data-dragging=true] .apo-bubble{opacity:0;visibility:hidden}body[data-scroll-locked] .apo-mascot-root{display:none}body:has([role=dialog][data-state=open]) .apo-mascot-root{display:none}@keyframes apo-idle-sway{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-3px) rotate(-1deg)}}.apo-idle{animation:apo-idle-sway 2.6s ease-in-out infinite}@keyframes apo-alert-pulse{0%,to{transform:scale(1);filter:drop-shadow(0 0 0 rgba(239,68,68,0))}50%{transform:scale(1.06);filter:drop-shadow(0 0 10px rgba(239,68,68,.55))}}.apo-mascot-root[data-status=alert] .apo-idle{animation:apo-alert-pulse .9s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.apo-idle,.apo-mascot-root[data-status=alert] .apo-idle{animation:none}}