Files
Todo/app/globals.css
Paul Bailey e51e88fddd feat: Add visual feedback and polish (Task 15)
- Implement toast notification system for success/error messages
- Add loading states with skeleton loaders for async operations
- Create smooth CSS transitions and animations
- Enhance empty states with EmptyState component
- Add loading.tsx files for Next.js loading states
- Integrate toast notifications across all CRUD operations
- Add fade-in and scale-in animations for better UX
- Improve visual feedback for user actions
2025-12-01 21:14:14 +00:00

107 lines
1.9 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* Search highlight styles */
mark {
background-color: #fef08a;
color: inherit;
padding: 0 2px;
border-radius: 2px;
font-weight: 500;
}
/* Touch-optimized tap targets - minimum 44x44px for iOS */
@layer utilities {
.tap-target {
min-width: 44px;
min-height: 44px;
display: inline-flex;
align-items: center;
justify-content: center;
}
.tap-target-sm {
min-width: 40px;
min-height: 40px;
display: inline-flex;
align-items: center;
justify-content: center;
}
}
/* Animations for visual feedback */
@layer utilities {
@keyframes slide-in-right {
from {
transform: translateX(100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes scale-in {
from {
transform: scale(0.95);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
.animate-slide-in-right {
animation: slide-in-right 0.3s ease-out;
}
.animate-fade-in {
animation: fade-in 0.2s ease-out;
}
.animate-scale-in {
animation: scale-in 0.2s ease-out;
}
/* Smooth transitions for interactive elements */
.transition-smooth {
transition: all 0.2s ease-in-out;
}
}
/* Smooth scrolling for better mobile experience */
@layer base {
html {
-webkit-tap-highlight-color: transparent;
scroll-behavior: smooth;
}
/* Improve touch scrolling on iOS */
body {
-webkit-overflow-scrolling: touch;
}
/* Better focus states for accessibility */
*:focus-visible {
outline: 2px solid #3B82F6;
outline-offset: 2px;
}
/* Prevent text selection on buttons for better mobile UX */
button {
-webkit-tap-highlight-color: transparent;
user-select: none;
}
}