Spaces:
Running
Running
| /* Additional Custom Styles */ | |
| /* Smooth transitions for all interactive elements */ | |
| button, a, input, select { | |
| transition: all 0.2s ease-in-out; | |
| } | |
| /* Custom focus styles */ | |
| input:focus, select:focus, textarea:focus { | |
| outline: none; | |
| box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); | |
| } | |
| /* Calendar day hover effect */ | |
| .calendar-day { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .calendar-day::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient(135deg, transparent 0%, rgba(59, 130, 246, 0.03) 100%); | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .calendar-day:hover::before { | |
| opacity: 1; | |
| } | |
| /* Appointment card hover animation */ | |
| .calendar-day > div:last-child > div { | |
| transform: translateX(0); | |
| transition: transform 0.2s ease, opacity 0.2s ease; | |
| } | |
| .calendar-day:hover > div:last-child > div { | |
| transform: translateX(2px); | |
| } | |
| /* Sidebar text transition */ | |
| .sidebar-text { | |
| transition: opacity 0.2s ease, width 0.2s ease; | |
| } | |
| /* Custom scrollbar for webkit */ | |
| ::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: #f1f5f9; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: #cbd5e1; | |
| border-radius: 3px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: #94a3b8; | |
| } | |
| /* Mobile optimizations */ | |
| @media (max-width: 1024px) { | |
| .calendar-day { | |
| min-height: 80px; | |
| } | |
| .calendar-grid { | |
| gap: 0.5px; | |
| } | |
| } | |
| @media (max-width: 640px) { | |
| .calendar-day { | |
| min-height: 60px; | |
| padding: 0.25rem; | |
| } | |
| /* Stack appointments on mobile */ | |
| .calendar-day > div:last-child { | |
| display: none; | |
| } | |
| .calendar-day.active > div:last-child { | |
| display: block; | |
| } | |
| } | |
| /* Category button animations */ | |
| .category-btn { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .category-btn::after { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| width: 0; | |
| height: 0; | |
| background: rgba(255, 255, 255, 0.2); | |
| border-radius: 50%; | |
| transform: translate(-50%, -50%); | |
| transition: width 0.3s ease, height 0.3s ease; | |
| } | |
| .category-btn:active::after { | |
| width: 200px; | |
| height: 200px; | |
| } | |
| /* Stats card hover effects */ | |
| .grid > div { | |
| transition: transform 0.2s ease, box-shadow 0.2s ease; | |
| } | |
| .grid > div:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); | |
| } | |
| /* Modal animation improvements */ | |
| #addModal > div { | |
| transform: scale(0.95); | |
| opacity: 0; | |
| transition: transform 0.3s ease, opacity 0.3s ease; | |
| } | |
| #addModal:not(.hidden) > div { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| /* Loading state for buttons */ | |
| button.loading { | |
| position: relative; | |
| color: transparent; | |
| } | |
| button.loading::after { | |
| content: ''; | |
| position: absolute; | |
| width: 16px; | |
| height: 16px; | |
| top: 50%; | |
| left: 50%; | |
| margin-left: -8px; | |
| margin-top: -8px; | |
| border: 2px solid #ffffff; | |
| border-radius: 50%; | |
| border-top-color: transparent; | |
| animation: spinner 0.8s linear infinite; | |
| } | |
| @keyframes spinner { | |
| to { transform: rotate(360deg); } | |
| } | |
| /* Notification toast animation */ | |
| .fade-in { | |
| animation: slideIn 0.3s ease-out; | |
| } | |
| @keyframes slideIn { | |
| from { | |
| transform: translateX(100%); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: translateX(0); | |
| opacity: 1; | |
| } | |
| } |