.webgl-fallback{opacity:1}canvas#gradient-canvas.opacity-100+.webgl-fallback{opacity:0}@supports not ((-webkit-mask-image:linear-gradient(#000,#000)) or (mask-image:linear-gradient(#000,#000))){.webgl-fallback{background:radial-gradient(circle at 0 0,#00D4AA 0,transparent 50%),radial-gradient(circle at 100% 0,#10B981 0,transparent 50%),radial-gradient(circle at 100% 100%,#0A4F63 0,transparent 50%),radial-gradient(circle at 0 100%,#0F172A 0,transparent 50%)}}@keyframes gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes chat-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.chat-message-enter{animation:chat-fade-in .4s ease-out both}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.typing-dot{animation:typing-bounce 1.4s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.blink-cursor:after{content:"|";animation:blink-cursor 1s step-end infinite;color:#9ca3af}@media (prefers-reduced-motion:reduce){.chat-message-enter{animation:none;opacity:1;transform:none}.typing-dot{opacity:.6}.blink-cursor:after,.typing-dot{animation:none}}