@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); :root { /* Modern Black-to-White Gradient System */ --bg-gradient: linear-gradient(135deg, #000000 0%, #1a1a1a 25%, #2d2d2d 75%, #1a1a1a 100%); --primary-gradient: linear-gradient(135deg, #000000 0%, #2d2d2d 50%, #4a4a4a 100%); --secondary-gradient: linear-gradient(135deg, #1a1a1a 0%, #3d3d3d 100%); --accent-gradient: linear-gradient(135deg, #2d2d2d 0%, #5a5a5a 100%); --text-gradient: linear-gradient(135deg, #ffffff 0%, #e5e5e5 50%, #cccccc 100%); /* Glass Morphism - Enhanced */ --glass-bg: rgba(255, 255, 255, 0.08); --glass-bg-strong: rgba(255, 255, 255, 0.12); --glass-border: rgba(255, 255, 255, 0.16); --glass-border-strong: rgba(255, 255, 255, 0.24); --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); --glass-shadow-strong: 0 16px 40px rgba(0, 0, 0, 0.6); /* Interactive States */ --hover-bg: rgba(255, 255, 255, 0.16); --active-bg: rgba(255, 255, 255, 0.20); --focus-ring: rgba(255, 255, 255, 0.24); /* Modern Spacing Scale */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; --space-3xl: 4rem; /* Border Radius Scale */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 20px; --radius-2xl: 24px; } * { box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; margin: 0; padding: 0; background: var(--bg-gradient); background-attachment: fixed; min-height: 100vh; font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Modern Glass Morphism System */ .glass { background: var(--glass-bg); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: var(--radius-xl); border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .glass-card { background: var(--glass-bg-strong); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border-radius: var(--radius-lg); border: 1px solid var(--glass-border-strong); box-shadow: var(--glass-shadow-strong); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .glass-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); opacity: 0.6; } .glass-card:hover { transform: translateY(-2px); background: var(--hover-bg); border-color: var(--glass-border-strong); box-shadow: 0 20px 50px rgba(0, 0, 0, 0.7); } /* Animation utilities */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } .animate-fade-in { animation: fadeIn 0.6s ease-out; } .animate-slide-in { animation: slideIn 0.6s ease-out; } .animate-pulse-slow { animation: pulse 2s infinite; } /* Modern Button System */ .btn-primary { background: var(--primary-gradient); border: none; border-radius: var(--radius-md); color: white; font-weight: 600; padding: var(--space-lg) var(--space-xl); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: var(--glass-shadow); position: relative; overflow: hidden; cursor: pointer; outline: none; } .btn-primary::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.6s; } .btn-primary:hover { transform: translateY(-2px); box-shadow: var(--glass-shadow-strong); background: linear-gradient(135deg, #1a1a1a 0%, #3d3d3d 50%, #5a5a5a 100%); } .btn-primary:hover::before { left: 100%; } .btn-primary:focus { box-shadow: var(--glass-shadow-strong), 0 0 0 3px var(--focus-ring); } .btn-secondary { background: var(--glass-bg-strong); backdrop-filter: blur(12px); border: 1px solid var(--glass-border); border-radius: var(--radius-md); color: white; font-weight: 500; padding: var(--space-lg) var(--space-xl); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; outline: none; } .btn-secondary:hover { background: var(--hover-bg); border-color: var(--glass-border-strong); transform: translateY(-2px); } .btn-secondary:focus { box-shadow: 0 0 0 3px var(--focus-ring); } /* Modern Input System */ .input-glass { background: var(--glass-bg); backdrop-filter: blur(12px); border: 1px solid var(--glass-border); border-radius: var(--radius-md); color: white; padding: var(--space-lg) var(--space-lg); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); font-size: 1rem; font-weight: 400; outline: none; } .input-glass::placeholder { color: rgba(255, 255, 255, 0.6); font-weight: 400; } .input-glass:hover { background: var(--glass-bg-strong); border-color: var(--glass-border-strong); } .input-glass:focus { border-color: var(--focus-ring); background: var(--glass-bg-strong); box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.12); } .input-glass:focus::placeholder { color: rgba(255, 255, 255, 0.4); } /* Loading spinner */ .spinner { width: 40px; height: 40px; border: 4px solid rgba(255, 255, 255, 0.3); border-top: 4px solid white; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Skeleton loading animation */ .skeleton-loader { background: linear-gradient(90deg, rgba(255, 255, 255, 0.1) 25%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 75%); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Lazy image loading states */ .lazy { filter: blur(5px); transition: filter 0.3s; } .lazy.loaded { filter: none; } /* Performance timing display */ .timing-badge { background: rgba(0, 255, 0, 0.1); border: 1px solid rgba(0, 255, 0, 0.3); color: rgba(0, 255, 0, 0.8); padding: 0.25rem 0.5rem; border-radius: 0.5rem; font-size: 0.75rem; font-weight: 600; display: inline-flex; align-items: center; gap: 0.25rem; } .timing-badge::before { content: '⏱️'; font-size: 0.625rem; } /* Panel composition grid */ .panel-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } .panel-item { background: rgba(255, 255, 255, 0.15); backdrop-filter: blur(15px); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.2); overflow: hidden; transition: all 0.3s ease; } .panel-item:hover { transform: scale(1.02); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2); } /* Responsive design */ @media (max-width: 768px) { .panel-grid { grid-template-columns: 1fr; } .glass-card { border-radius: 12px; } } /* Modern Text Gradients */ .gradient-text { background: var(--text-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: 700; } /* Performance indicator colors */ .perf-excellent { color: #10b981; } .perf-good { color: #f59e0b; } .perf-poor { color: #ef4444; } .gradient-text-subtle { background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.7) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Story template cards */ .template-card { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 16px; padding: 20px; transition: all 0.3s ease; cursor: pointer; } .template-card:hover { background: rgba(255, 255, 255, 0.2); transform: translateY(-4px); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); } .template-card.selected { background: rgba(255, 255, 255, 0.3); border-color: rgba(255, 255, 255, 0.5); } /* Story progression cards */ .progression-card { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 16px; padding: 24px; transition: all 0.3s ease; cursor: pointer; position: relative; min-height: 400px; } .progression-card:hover { background: rgba(255, 255, 255, 0.2); transform: translateY(-6px) scale(1.02); box-shadow: 0 16px 40px rgba(0, 0, 0, 0.2); } .progression-card.selected { background: rgba(255, 255, 255, 0.25); border-color: rgba(255, 255, 255, 0.5); box-shadow: 0 0 30px rgba(255, 255, 255, 0.2); } /* Series chapter navigation */ .chapter-nav-button { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 2px solid transparent; border-radius: 12px; padding: 16px; transition: all 0.3s ease; cursor: pointer; } .chapter-nav-button:hover { background: rgba(255, 255, 255, 0.15); transform: translateY(-2px); } .chapter-nav-button.active { background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.5); } /* Enhanced animations for story progression */ @keyframes progressionSlideIn { from { opacity: 0; transform: translateY(30px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .progression-card { animation: progressionSlideIn 0.6s ease-out; } .progression-card:nth-child(2) { animation-delay: 0.1s; } .progression-card:nth-child(3) { animation-delay: 0.2s; } /* Series completion celebration effects */ @keyframes celebrationGlow { 0%, 100% { box-shadow: 0 0 20px rgba(255, 255, 255, 0.3); } 50% { box-shadow: 0 0 40px rgba(255, 255, 255, 0.6); } } .series-complete-glow { animation: celebrationGlow 2s ease-in-out infinite; } /* Enhanced hover effects */ @keyframes scaleHover { to { transform: scale(1.02); } } .hover\:scale-102:hover { animation: scaleHover 0.2s ease-out forwards; } .hover\:scale-105:hover { transform: scale(1.05); } /* Progress indicators */ .progress-step { background: rgba(255, 255, 255, 0.2); border-radius: 50%; width: 12px; height: 12px; transition: all 0.3s ease; } .progress-step.active { background: rgba(255, 255, 255, 0.8); box-shadow: 0 0 15px rgba(255, 255, 255, 0.5); } .progress-step.completed { background: rgba(34, 197, 94, 0.8); box-shadow: 0 0 15px rgba(34, 197, 94, 0.5); } /* Series statistics display */ .series-stats { display: flex; justify-content: center; align-items: center; gap: 2rem; padding: 1.5rem; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.2); } .series-stat-item { text-align: center; padding: 0 1rem; } .series-stat-value { font-size: 2rem; font-weight: 800; color: white; margin-bottom: 0.5rem; } .series-stat-label { font-size: 0.875rem; color: rgba(255, 255, 255, 0.7); } .series-stat-divider { width: 1px; height: 2rem; background: rgba(255, 255, 255, 0.2); } /* Mobile responsiveness for new components */ @media (max-width: 768px) { .progression-card { padding: 16px; min-height: 300px; } .series-stats { flex-direction: column; gap: 1rem; } .series-stat-divider { width: 100%; height: 1px; } .chapter-nav-button { padding: 12px; } }