/* Custom animations */ @keyframes slideIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .task-card-enter { animation: slideIn 0.3s ease-out; } .reminder-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } /* Smooth transitions */ * { transition: all 0.2s ease; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Focus styles */ :focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; } /* Checkbox custom styles */ .custom-checkbox { appearance: none; width: 24px; height: 24px; border: 2px solid #d1d5db; border-radius: 6px; cursor: pointer; position: relative; transition: all 0.2s ease; } .custom-checkbox:checked { background-color: #10b981; border-color: #10b981; } .custom-checkbox:checked::after { content: ''; position: absolute; left: 7px; top: 3px; width: 6px; height: 12px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); } /* Email button hover effects */ .email-button { position: relative; overflow: hidden; } .email-button::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.5); transform: translate(-50%, -50%); transition: width 0.6s, height 0.6s; } .email-button:hover::before { width: 300px; height: 300px; } /* Glass morphism effect */ .glass-effect { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } /* Mobile responsive adjustments */ @media (max-width: 768px) { .container { padding-left: 1rem; padding-right: 1rem; } } /* Loading spinner */ .spinner { border: 3px solid #f3f3f3; border-top: 3px solid #3b82f6; border-radius: 50%; width: 20px; height: 20px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }