Files
LifeRPG_v2.0/modern/frontend/src/components/ui/responsive.css
T
TLimoges33 7fe4ae5365 🧙‍♂️ Transform LifeRPG into The Wizard's Grimoire - Production-Ready Application
 Major Features Added:
- Complete magical theming and rebranding from LifeRPG to The Wizard's Grimoire
- Production-grade React frontend with Tailwind CSS v4 and magical aesthetics
- Comprehensive analytics dashboard with Recharts integration (ScryingPortal)
- Push notifications system with PWA service worker support
- Drag & drop functionality using @dnd-kit for habit reordering
- Social features with friends system and leaderboards
- Performance optimization tools and monitoring
- Mobile app enhancement with PWA installation support

🏗️ Technical Infrastructure:
- Advanced service worker with offline support and background sync
- Zustand state management for scalable application state
- Production-ready UI component system with enhanced Button, Card, Input
- Progressive Web App (PWA) with manifest and app installation
- FastAPI backend with comprehensive API endpoints
- Docker containerization and CI/CD pipeline setup

📱 Progressive Web App Features:
- Offline functionality with intelligent caching
- Push notification support for habit reminders
- App installation on mobile and desktop platforms
- Background sync for offline data management
- Performance monitoring and optimization tools

🎨 User Experience:
- Magical wizard/grimoire theming throughout application
- Responsive design optimized for all device sizes
- Drag & drop habit management with smooth animations
- Interactive analytics with multiple chart types
- Social connectivity with friends and competitive features
- Comprehensive notification and performance settings

🔧 Developer Experience:
- Modern development stack with Vite and React
- Comprehensive testing setup and CI/CD pipelines
- Code quality tools with pre-commit hooks
- Docker development environment
- Detailed documentation and implementation guides

This represents a complete transformation from prototype to production-ready application with enterprise-grade features and magical user experience.
2025-08-30 17:32:42 +00:00

146 lines
2.6 KiB
CSS

/* Mobile-first responsive improvements */
/* Small devices (phones) */
@media (max-width: 640px) {
.desktop-only {
display: none;
}
.mobile-stack {
flex-direction: column;
}
.mobile-full {
width: 100%;
}
.mobile-text-sm {
font-size: 0.875rem;
}
.mobile-p-2 {
padding: 0.5rem;
}
.mobile-space-y-2>*+* {
margin-top: 0.5rem;
}
}
/* Medium devices (tablets) */
@media (min-width: 641px) and (max-width: 1024px) {
.tablet-grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
}
/* Large devices (desktops) */
@media (min-width: 1025px) {
.desktop-grid-cols-3 {
grid-template-columns: repeat(3, 1fr);
}
.desktop-grid-cols-4 {
grid-template-columns: repeat(4, 1fr);
}
}
/* Interactive elements */
.magical-hover {
transition: all 0.3s ease;
}
.magical-hover:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(124, 58, 237, 0.3);
}
/* Animations */
@keyframes sparkle {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.sparkle-animation {
animation: sparkle 2s ease-in-out infinite;
}
@keyframes float {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-5px);
}
}
.float-animation {
animation: float 3s ease-in-out infinite;
}
/* Magical gradient text */
.magical-text {
background: linear-gradient(45deg, #8b5cf6, #ec4899, #8b5cf6);
background-size: 200% 200%;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: gradientShift 3s ease infinite;
}
@keyframes gradientShift {
0%,
100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
/* Glass morphism effect */
.glass-morphism {
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
/* Improved focus states */
.focus-magical:focus {
outline: none;
ring: 2px solid rgba(168, 85, 247, 0.5);
ring-offset: 2px;
ring-offset-color: transparent;
}
/* Loading shimmer effect */
@keyframes shimmer {
0% {
background-position: -1000px 0;
}
100% {
background-position: 1000px 0;
}
}
.shimmer {
background: linear-gradient(90deg,
rgba(255, 255, 255, 0) 0%,
rgba(255, 255, 255, 0.1) 50%,
rgba(255, 255, 255, 0) 100%);
background-size: 1000px 100%;
animation: shimmer 2s infinite;
}