Skip to main content
Glama
main.css9.97 kB
@tailwind base; @tailwind components; @tailwind utilities; /* Custom CSS animations for enhanced dashboard */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideLeft { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes slideRight { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } /* New floating animation for weather indicators */ @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } /* Enhanced pulse animation */ @keyframes enhancedPulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } /* Gradient text animation */ @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Animation classes */ .animate-fade-in { animation: fadeIn 0.6s ease-out; } .animate-slide-up { animation: slideUp 0.6s ease-out; } .animate-slide-down { animation: slideDown 0.6s ease-out; } .animate-slide-left { animation: slideLeft 0.6s ease-out; } .animate-slide-right { animation: slideRight 0.6s ease-out; } .animate-float { animation: float 3s ease-in-out infinite; } .animate-enhanced-pulse { animation: enhancedPulse 2s ease-in-out infinite; } /* Gradient text with animation */ .gradient-text { background: linear-gradient(-45deg, #667eea, #764ba2, #f093fb, #f5576c); background-size: 400% 400%; animation: gradientShift 3s ease infinite; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Enhanced card hover effects */ .card-hover { transition: all 0.3s ease-in-out; } .card-hover:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15); } /* Glassmorphism effects */ .glass { background: rgba(255, 255, 255, 0.25); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.18); } .glass-dark { background: rgba(0, 0, 0, 0.25); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.18); } /* Smooth transitions for all interactive elements */ * { transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f5f9; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* Loading spinner animation */ @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Enhanced pulse animation for status indicators */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } /* Ping animation for notifications */ @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } } .animate-ping { animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; } /* Bounce animation */ @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: none; animation-timing-function: cubic-bezier(0, 0, 0.2, 1); } } .animate-bounce { animation: bounce 1s infinite; } /* Risk level color utilities */ .bg-status-safe { background-color: #10b981; } .bg-status-medium { background-color: #f59e0b; } .bg-status-high { background-color: #f97316; } .bg-status-critical { background-color: #ef4444; } .bg-status-completed { background-color: #6366f1; } /* Enhanced button hover effects */ .btn-primary { transition: all 0.3s ease; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4); } .btn-secondary { transition: all 0.3s ease; } .btn-secondary:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(107, 114, 128, 0.4); } /* Tab transition effects */ .tab-transition { transition: all 0.3s ease; } .tab-transition:hover { transform: scale(1.05); } /* Card entrance animations with staggered delays */ .stagger-animation > * { animation: slideUp 0.6s ease-out; } .stagger-animation > *:nth-child(1) { animation-delay: 0.1s; } .stagger-animation > *:nth-child(2) { animation-delay: 0.2s; } .stagger-animation > *:nth-child(3) { animation-delay: 0.3s; } .stagger-animation > *:nth-child(4) { animation-delay: 0.4s; } /* Progress bar animation */ .progress-bar { transition: width 1s ease-in-out; } /* Alert notification animations */ .alert-enter { animation: slideRight 0.3s ease-out; } .alert-exit { animation: slideLeft 0.3s ease-out; } /* Weather widget animations */ .weather-value { transition: all 0.3s ease; } .weather-value:hover { transform: scale(1.05); color: #1e40af; } /* Risk factor animations */ .risk-factor { transition: all 0.2s ease; } .risk-factor:hover { transform: translateX(5px); color: #dc2626; } /* Monitoring station status animations */ .station-status { transition: all 0.3s ease; } .station-status.online { animation: pulse 2s infinite; } /* Settings toggle animations */ .toggle-switch { transition: all 0.2s ease; } .toggle-switch:checked { transform: scale(1.1); } /* Dashboard card hover effects */ .dashboard-card { transition: all 0.3s ease; } .dashboard-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); } /* Navigation bar animations */ .nav-item { transition: all 0.2s ease; } .nav-item:hover { transform: translateY(-2px); } /* Header animations */ .header-title { animation: slideDown 0.8s ease-out; } .header-subtitle { animation: slideDown 0.8s ease-out 0.2s both; } /* Floating weather indicators */ .weather-indicator { animation: float 3s ease-in-out infinite; } .weather-indicator:nth-child(2) { animation-delay: 0.5s; } .weather-indicator:nth-child(3) { animation-delay: 1s; } /* Enhanced card backgrounds */ .card-bg-gradient { background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } /* Responsive animations */ @media (max-width: 768px) { .animate-slide-up, .animate-slide-down, .animate-slide-left, .animate-slide-right { animation: fadeIn 0.4s ease-out; } .weather-indicator { animation: none; } } /* Dark mode support */ @media (prefers-color-scheme: dark) { .glass { background: rgba(0, 0, 0, 0.25); border: 1px solid rgba(255, 255, 255, 0.1); } .card-bg-gradient { background: linear-gradient(135deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.05)); border: 1px solid rgba(255, 255, 255, 0.1); } } /* Accessibility improvements */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* High contrast mode support */ @media (prefers-contrast: high) { .glass { background: rgba(255, 255, 255, 0.9); border: 2px solid #000; } .card-bg-gradient { background: #fff; border: 2px solid #000; } } /* Additional movable GIF animations */ @keyframes bounceRotate { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } } .animate-bounce-rotate { animation: bounceRotate 2s ease-in-out infinite; } /* Shimmer effect for loading states */ @keyframes shimmer { 0% { background-position: -200px 0; } 100% { background-position: calc(200px + 100%) 0; } } .animate-shimmer { background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); background-size: 200px 100%; animation: shimmer 2s infinite; } /* Enhanced gradient shift for backgrounds */ .animate-gradient-shift { background-size: 200% 200%; animation: gradientShift 3s ease infinite; } /* Floating elements with different delays */ .animate-float-delay-1 { animation: float 3s ease-in-out infinite; animation-delay: 0.5s; } .animate-float-delay-2 { animation: float 3s ease-in-out infinite; animation-delay: 1s; } .animate-float-delay-3 { animation: float 3s ease-in-out infinite; animation-delay: 1.5s; } /* Enhanced pulse with color change */ @keyframes enhancedPulseColor { 0%, 100% { transform: scale(1); opacity: 1; filter: hue-rotate(0deg); } 50% { transform: scale(1.05); opacity: 0.8; filter: hue-rotate(30deg); } } .animate-enhanced-pulse-color { animation: enhancedPulseColor 3s ease-in-out infinite; } /* Wave animation for water effects */ @keyframes wave { 0%, 100% { transform: translateX(0) translateY(0); } 25% { transform: translateX(5px) translateY(-2px); } 50% { transform: translateX(0) translateY(-5px); } 75% { transform: translateX(-5px) translateY(-2px); } } .animate-wave { animation: wave 4s ease-in-out infinite; } /* Glow effect for important elements */ @keyframes glow { 0%, 100% { box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); } 50% { box-shadow: 0 0 20px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.6); } } .animate-glow { animation: glow 2s ease-in-out infinite; } .shadow-glow { box-shadow: 0 0 0 2px #38bdf8, 0 0 12px 2px #0ea5e9; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sudhans18/AegisFlood-Flood-Prediction-Community-Alert-System'

If you have feedback or need assistance with the MCP directory API, please join our Discord server