.loading-spinner{border:3px solid #f3f4f6;border-top:3px solid #3b82f6;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-dots{display:inline-block;position:relative;width:80px;height:20px}.loading-dots div{position:absolute;top:8px;width:13px;height:13px;border-radius:50%;background:#3b82f6;animation-timing-function:cubic-bezier(0,1,1,0)}.loading-dots div:nth-child(1){left:8px;animation:loading-dots1 .6s infinite}.loading-dots div:nth-child(2){left:8px;animation:loading-dots2 .6s infinite}.loading-dots div:nth-child(3){left:32px;animation:loading-dots2 .6s infinite}.loading-dots div:nth-child(4){left:56px;animation:loading-dots3 .6s infinite}@keyframes loading-dots1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes loading-dots3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes loading-dots2{0%{transform:translate(0)}to{transform:translate(24px)}}.fade-in{animation:fadeIn .6s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.slide-in-left{animation:slideInLeft .8s ease-out}@keyframes slideInLeft{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}.slide-in-right{animation:slideInRight .8s ease-out}@keyframes slideInRight{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}.bounce-in{animation:bounceIn .8s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}.pulse-green{animation:pulseGreen 2s infinite}@keyframes pulseGreen{0%{box-shadow:0 0 #10b981b3}70%{box-shadow:0 0 0 10px #10b98100}to{box-shadow:0 0 #10b98100}}.pulse-red{animation:pulseRed 2s infinite}@keyframes pulseRed{0%{box-shadow:0 0 #ef4444b3}70%{box-shadow:0 0 0 10px #ef444400}to{box-shadow:0 0 #ef444400}}.pulse-blue{animation:pulseBlue 2s infinite}@keyframes pulseBlue{0%{box-shadow:0 0 #3b82f6b3}70%{box-shadow:0 0 0 10px #3b82f600}to{box-shadow:0 0 #3b82f600}}.hover-lift{transition:all .3s cubic-bezier(.4,0,.2,1)}.hover-lift:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 20px 40px #00000026}.hover-glow{transition:all .3s ease}.hover-glow:hover{box-shadow:0 0 30px #3b82f64d;border-color:#3b82f6}.hover-scale{transition:transform .3s ease}.hover-scale:hover{transform:scale(1.05)}.gradient-animation{background:linear-gradient(-45deg,#667eea,#764ba2,#f093fb,#f5576c);background-size:400% 400%;animation:gradientShift 15s ease infinite}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.aurora-bg{background:linear-gradient(45deg,#0f172a,#1e293b,#334155);background-size:400% 400%;animation:aurora 20s ease infinite;position:relative;overflow:hidden}.aurora-bg:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(120,119,198,.3),transparent 50%),radial-gradient(circle at 80% 20%,rgba(255,119,198,.3),transparent 50%),radial-gradient(circle at 40% 40%,rgba(120,219,255,.2),transparent 50%);animation:aurora 30s ease infinite}@keyframes aurora{0%,to{transform:rotate(0) scale(1)}33%{transform:rotate(120deg) scale(1.1)}66%{transform:rotate(240deg) scale(.9)}}.text-gradient{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:textShimmer 3s ease-in-out infinite}@keyframes textShimmer{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.glitch{position:relative;color:#fff;font-size:2rem;font-weight:700;text-transform:uppercase;animation:glitch-skew 1s infinite linear alternate-reverse}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%}.glitch:before{animation:glitch-anim .5s infinite linear alternate-reverse;color:#0ff;z-index:-1}.glitch:after{animation:glitch-anim2 1s infinite linear alternate-reverse;color:#f0f;z-index:-2}@keyframes glitch-anim{0%{transform:translate(0)}20%{transform:translate(-2px,2px)}40%{transform:translate(-2px,-2px)}60%{transform:translate(2px,2px)}80%{transform:translate(2px,-2px)}to{transform:translate(0)}}@keyframes glitch-anim2{0%{transform:translate(0)}20%{transform:translate(2px,-2px)}40%{transform:translate(2px,2px)}60%{transform:translate(-2px,-2px)}80%{transform:translate(-2px,2px)}to{transform:translate(0)}}@keyframes glitch-skew{0%{transform:skew(0)}10%{transform:skew(-2deg)}20%{transform:skew(2deg)}30%{transform:skew(0)}to{transform:skew(0)}}.card-3d{transform-style:preserve-3d;transition:all .3s ease}.card-3d:hover{transform:rotateY(5deg) rotateX(5deg) translateZ(10px)}.card-glow{position:relative;overflow:hidden}.card-glow:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.1),transparent);transform:rotate(45deg);transition:all .5s;opacity:0}.card-glow:hover:before{animation:shine .5s ease-in-out;opacity:1}@keyframes shine{0%{transform:translate(-100%) translateY(-100%) rotate(45deg)}to{transform:translate(100%) translateY(100%) rotate(45deg)}}.btn-morph{position:relative;overflow:hidden;transition:all .3s ease}.btn-morph:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn-morph:hover:before{width:300px;height:300px}.btn-ripple{position:relative;overflow:hidden}.btn-ripple:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff80;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn-ripple:active:after{width:300px;height:300px}.image-hover-zoom{overflow:hidden;position:relative}.image-hover-zoom img{transition:transform .5s ease}.image-hover-zoom:hover img{transform:scale(1.1)}.image-overlay{position:relative;overflow:hidden}.image-overlay:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(45deg,transparent,rgba(0,0,0,.7));opacity:0;transition:opacity .3s ease;z-index:1}.image-overlay:hover:before{opacity:1}@media(max-width:768px){.hover-lift:hover{transform:translateY(-4px) scale(1.01)}.glitch{font-size:1.5rem}.gradient-animation,.aurora-bg{animation-duration:10s}}.animate-delay-100{animation-delay:.1s}.animate-delay-200{animation-delay:.2s}.animate-delay-300{animation-delay:.3s}.animate-delay-400{animation-delay:.4s}.animate-delay-500{animation-delay:.5s}.animate-duration-300{animation-duration:.3s}.animate-duration-500{animation-duration:.5s}.animate-duration-1000{animation-duration:1s}.scroll-reveal{opacity:0;transform:translateY(30px);transition:all .6s ease}.scroll-reveal.revealed{opacity:1;transform:translateY(0)}.custom-scrollbar::-webkit-scrollbar{width:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#f1f5f9;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px;transition:background .3s ease}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark-mode{background-color:#0f172a;color:#f1f5f9}.dark-mode .bg-white{background-color:#1e293b!important}.dark-mode .text-gray-900{color:#f1f5f9!important}.dark-mode .text-gray-700{color:#cbd5e1!important}.dark-mode .text-gray-600{color:#94a3b8!important}.dark-mode .border-gray-200{border-color:#334155!important}.dark-mode .bg-gray-50{background-color:#334155!important}.dark-mode .bg-gray-100{background-color:#475569!important}.transition-all{transition:all .3s cubic-bezier(.4,0,.2,1)}.transition-colors{transition:color .2s ease,background-color .2s ease,border-color .2s ease}.transition-transform{transition:transform .3s cubic-bezier(.4,0,.2,1)}.high-contrast{filter:contrast(150%) brightness(120%)}.high-contrast *{border-color:#000!important}.low-vision{font-size:1.2em;line-height:1.8}.low-vision *{font-weight:600!important}@tailwind base;@tailwind components;@tailwind utilities;@layer base{body{@apply bg-gray-50 text-gray-900 dark:bg-gray-900 dark:text-gray-100;}}.animate-fade-in{animation:fadeIn .5s ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
