@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); * { font-family: 'Inter', sans-serif; } .weather-card { backdrop-filter: blur(10px); background: rgba(255, 255, 255, 0.85); border: 1px solid rgba(255, 255, 255, 0.2); } .weather-gradient { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } .animate-pulse-soft { animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.8; } } .weather-icon { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1)); } .loading-dots { display: inline-block; position: relative; width: 80px; height: 80px; } .loading-dots div { position: absolute; top: 33px; width: 13px; height: 13px; border-radius: 50%; background: #0ea5e9; animation-timing-function: cubic-bezier(0, 1, 1, 0); } .loading-dots div:nth-child(1) { left: 8px; animation: loading-dots1 0.6s infinite; } .loading-dots div:nth-child(2) { left: 8px; animation: loading-dots2 0.6s infinite; } .loading-dots div:nth-child(3) { left: 32px; animation: loading-dots2 0.6s infinite; } .loading-dots div:nth-child(4) { left: 56px; animation: loading-dots3 0.6s infinite; } @keyframes loading-dots1 { 0% { transform: scale(0); } 100% { transform: scale(1); } } @keyframes loading-dots3 { 0% { transform: scale(1); } 100% { transform: scale(0); } } @keyframes loading-dots2 { 0% { transform: translate(0, 0); } 100% { transform: translate(24px, 0); } } .slide-up { animation: slideUp 0.3s ease-out; } @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }