Files
Todo/app/globals.css
Paul Bailey 3f1abd527e feat: add auto-prompt for push notifications on app load
- Create NotificationPrompt component that appears 3 seconds after app loads
- Add to main layout so it shows on all pages (for logged-in users)
- Prompt only shows if permission not yet requested
- Users can dismiss temporarily or permanently
- Add slide-up animation for smooth appearance
- Create simplified SETUP_PUSH_NOTIFICATIONS.md guide

Users will now be automatically prompted to enable notifications
instead of having to go to the profile page.
2025-12-07 01:24:20 +00:00

137 lines
2.5 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;
}
}
@keyframes slide-up {
from {
transform: translateY(100%);
opacity: 0;
}
to {
transform: translateY(0);
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;
}
.animate-slide-up {
animation: slide-up 0.4s 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;
}
/* Remove 300ms click delay on iOS Safari */
a, button, input, select, textarea {
touch-action: manipulation;
}
/* Optimize for touch interactions */
* {
-webkit-touch-callout: none;
}
/* Prevent double-tap zoom on interactive elements */
button, a, input[type="button"], input[type="submit"] {
touch-action: manipulation;
}
}