/* Custom styles and utilities beyond Tailwind */ :root { --ring: 0 0% 100%; --shadow-glow: 0 0 20px rgba(99,102,241,0.3), 0 0 40px rgba(99,102,241,0.2); } /* Fallback styles in case Tailwind doesn't load */ body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background-color: #0f172a; color: #f1f5f9; line-height: 1.6; margin: 0; padding: 0; } /* Global text justification */ p, li, div { text-align: justify; text-justify: inter-word; } /* Override for specific elements that should be left-aligned */ .btn-primary, .btn-secondary, .btn-ghost, .tab, .chip, .metric-value, .metric-label { text-align: left; } /* Ensure h2 headers in section headers are centered */ .section-header h2 { text-align: center !important; } /* Add proper margins to main content */ .container { margin-left: auto; margin-right: auto; padding-left: 2rem; padding-right: 2rem; } @media (max-width: 768px) { .container { padding-left: 1rem; padding-right: 1rem; } } h1, h3, h5, h6 { font-weight: 700; line-height: 1.2; margin: 0 0 1rem 0; } /* Ensure card titles have proper styling */ .card-title { font-weight: 600 !important; font-size: 1.125rem !important; line-height: 1.4 !important; margin-bottom: 0.75rem !important; color: #f1f5f9 !important; text-align: left !important; } h1 { font-size: 2.5rem; } h3 { font-size: 1.5rem; } /* Only apply basic h2 styles to non-section-header h2s */ h2:not(.section-header h2) { font-size: 2rem; font-weight: 700; line-height: 1.2; margin: 0 0 1rem 0; } /* Override any conflicting h2 styles for section headers */ .section-header h2 { font-size: 3rem !important; font-weight: 800 !important; line-height: 1.2 !important; margin: 0 0 1rem 0 !important; text-align: center !important; } @media (min-width: 1024px) { .section-header h2 { font-size: 4rem !important; } } section { padding: 4rem 0; } .container { max-width: 80rem; margin: 0 auto; padding: 0 1rem; } .grid { display: grid; gap: 1.5rem; } .grid.lg\\:grid-cols-2 { grid-template-columns: 1fr; } @media (min-width: 1024px) { .grid.lg\\:grid-cols-2 { grid-template-columns: repeat(2, 1fr); } } .grid.md\\:grid-cols-3 { grid-template-columns: 1fr; } @media (min-width: 768px) { .grid.md\\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); } } .flex { display: flex; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .gap-3 { gap: 0.75rem; } .gap-6 { gap: 1.5rem; } .gap-12 { gap: 3rem; } .text-4xl { font-size: 2.25rem; } .text-6xl { font-size: 3.75rem; } .font-extrabold { font-weight: 800; } .leading-tight { line-height: 1.25; } .mt-5 { margin-top: 1.25rem; } .mt-8 { margin-top: 2rem; } .mt-6 { margin-top: 1.5rem; } .text-slate-300 { color: #cbd5e1; } .text-slate-400 { color: #94a3b8; } .text-indigo-400 { color: #818cf8; } .max-w-2xl { max-width: 42rem; } .text-lg { font-size: 1.125rem; } .text-sm { font-size: 0.875rem; } .text-xs { font-size: 0.75rem; } .hidden { display: none; } @media (min-width: 640px) { .sm\\:inline { display: inline; } } @media (min-width: 768px) { .md\\:flex { display: flex; } } @media (min-width: 1024px) { .lg\\:py-24 { padding-top: 6rem; padding-bottom: 6rem; } .lg\\:text-6xl { font-size: 3.75rem; } } /* Base link styles */ .link { color: rgb(165 180 252); transition: all 0.2s ease; } .link:hover { text-decoration: underline; color: rgb(129 140 248); } .btn-primary { @apply inline-flex items-center gap-2 px-3 py-2 rounded-xl bg-indigo-500 hover:bg-indigo-400 text-white font-semibold shadow-glow transition; } .btn-secondary { @apply inline-flex items-center gap-2 px-3 py-2 rounded-xl bg-slate-800 hover:bg-slate-700 text-slate-100 border border-white/10 transition; } .btn-ghost { @apply inline-flex items-center gap-2 px-3 py-2 rounded-xl text-indigo-300 hover:text-white hover:bg-white/5 transition; } .btn-icon { @apply inline-flex items-center justify-center w-10 h-10 rounded-xl bg-slate-800 hover:bg-slate-700 border border-white/10 transition; } .icon { width: 20px; height: 20px; } .section { @apply py-16 lg:py-24; } /* Reduce gap specifically between Architecture and Training sections */ #architecture { padding-bottom: 2rem !important; } #training { padding-top: 2rem !important; } .container { @apply max-w-7xl mx-auto px-4; } .section-header h2 { @apply text-3xl lg:text-4xl font-extrabold; position: relative; display: block; text-align: center; background: linear-gradient(135deg, #f1f5f9 0%, #818cf8 50%, #f1f5f9 100%); background-size: 200% 200%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: gradientShift 3s ease-in-out infinite; text-shadow: 0 0 30px rgba(129, 140, 248, 0.3); margin-bottom: 0.5rem; } .section-header h2::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, #818cf8, #a855f7, #ec4899); border-radius: 0.5rem; padding: 0.25rem; z-index: -1; opacity: 0; transition: opacity 0.3s ease; animation: pulseGlow 2s ease-in-out infinite; } .section-header h2:hover::before { opacity: 0.1; } @keyframes gradientShift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } @keyframes pulseGlow { 0%, 100% { box-shadow: 0 0 20px rgba(129, 140, 248, 0.2); } 50% { box-shadow: 0 0 40px rgba(129, 140, 248, 0.4); } } .section-header p { color: #94a3b8; font-size: 0.95rem; line-height: 1.5; font-style: italic; text-align: left; margin-top: 0.75rem; margin-bottom: 0; max-width: none; } .section-header { text-align: left; margin-bottom: 2.5rem; } .card { @apply rounded-2xl bg-slate-900/60 border border-white/10 backdrop-blur; transition: all 0.3s ease; position: relative; overflow: hidden; } .card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(129, 140, 248, 0.5), transparent); transform: translateX(-100%); transition: transform 0.6s ease; } .card:hover::before { transform: translateX(100%); } .card:hover { transform: translateY(-4px); border-color: rgba(129, 140, 248, 0.3); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .card.glass { @apply bg-slate-900/50; } .card-body { @apply p-6; } .card-title { @apply text-lg font-semibold mb-2; } .feature { @apply rounded-2xl p-6 bg-slate-900/60 border border-white/10 backdrop-blur; } .feature-icon { width: 28px; height: 28px; color: rgb(129 140 248); @apply mb-3; } .chip { @apply inline-flex items-center px-4 py-2 rounded-full text-sm font-medium transition-all duration-300; background: linear-gradient(135deg, rgba(129, 140, 248, 0.1), rgba(168, 85, 247, 0.1)); border: 1px solid rgba(129, 140, 248, 0.2); color: #cbd5e1; position: relative; overflow: hidden; backdrop-filter: blur(10px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .chip::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); transition: left 0.5s ease; } .chip:hover::before { left: 100%; } .chip:hover { background: linear-gradient(135deg, rgba(129, 140, 248, 0.2), rgba(168, 85, 247, 0.2)); border-color: rgba(129, 140, 248, 0.4); color: #f1f5f9; transform: translateY(-2px); box-shadow: 0 4px 15px rgba(129, 140, 248, 0.2); } .chip:active { transform: translateY(0); box-shadow: 0 2px 8px rgba(129, 140, 248, 0.3); } .tabs { @apply flex flex-wrap gap-3; justify-content: center; margin-bottom: 2rem; } .tab { @apply px-6 py-3 rounded-2xl bg-slate-800/50 border border-white/10 text-slate-200 transition-all duration-300; position: relative; overflow: hidden; font-weight: 600; font-size: 0.95rem; min-width: 140px; text-align: center; backdrop-filter: blur(10px); } .tab::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(129, 140, 248, 0.2), transparent); transition: left 0.6s ease; } .tab:hover::before { left: 100%; } .tab:hover { transform: translateY(-2px); border-color: rgba(129, 140, 248, 0.3); box-shadow: 0 8px 25px rgba(129, 140, 248, 0.15); background: rgba(129, 140, 248, 0.1); } .tab.active { @apply bg-gradient-to-r from-indigo-500/30 to-purple-500/30 border-indigo-400/60 text-indigo-100; transform: translateY(-2px); box-shadow: 0 10px 30px rgba(129, 140, 248, 0.3); background: linear-gradient(135deg, rgba(129, 140, 248, 0.2), rgba(168, 85, 247, 0.2)); } .tab.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 60%; height: 3px; background: linear-gradient(90deg, #818cf8, #a855f7); border-radius: 2px; animation: pulseGlow 2s ease-in-out infinite; } .diagram { display: none; opacity: 0; transform: translateY(20px); transition: all 0.3s ease; min-height: 300px; margin: 0; padding: 0; } .diagram.visible { display: block; opacity: 1; transform: translateY(0); } pre.mermaid { @apply rounded-2xl bg-slate-900/70 border border-white/10 p-4 overflow-auto; text-align: center; display: flex; justify-content: center; align-items: center; min-height: 300px; } pre.mermaid svg { max-width: 100%; height: auto; margin: 0 auto; display: block; } /* Ensure Mermaid diagrams are properly centered */ .diagram.visible { display: block; width: 100%; } .diagram pre.mermaid { width: 100%; max-width: 100%; } .metric { @apply bg-slate-900/60 border border-white/10 rounded-2xl p-6 text-center; } .metric-value { @apply text-4xl font-extrabold text-indigo-300; } .metric-label { @apply text-slate-400 mt-1; } .list { @apply pl-5 space-y-2 text-slate-300; list-style: none; } .list li { position: relative; padding-left: 1.5rem; line-height: 1.6; transition: all 0.2s ease; } .list li::before { content: '▶'; position: absolute; left: 0; top: 0; color: #818cf8; font-size: 0.75rem; transition: all 0.2s ease; } .list li:hover { color: #f1f5f9; transform: translateX(4px); } .list li:hover::before { color: #a855f7; transform: scale(1.2); } .avatar { @apply rounded-2xl bg-slate-800 border border-white/10 p-6 text-center font-semibold; transition: all 0.3s ease; position: relative; overflow: hidden; min-width: 120px; min-height: 80px; display: flex; align-items: center; justify-content: center; } .avatar::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(129, 140, 248, 0.2), transparent); transition: left 0.6s ease; } .avatar:hover::before { left: 100%; } .avatar:hover { transform: translateY(-4px); border-color: rgba(129, 140, 248, 0.4); box-shadow: 0 10px 25px rgba(129, 140, 248, 0.2); background: linear-gradient(135deg, rgba(129, 140, 248, 0.1), rgba(168, 85, 247, 0.1)); } /* Enhanced Team section styling */ #team .container { text-align: center; } .team-info { margin-top: 2rem; } .university-info { margin-bottom: 3rem; display: flex; flex-direction: column; align-items: center; gap: 0.5rem; } .university-name { font-size: 1.5rem; font-weight: 700; background: linear-gradient(135deg, #818cf8, #a855f7, #ec4899); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: gradientShift 3s ease-in-out infinite; text-shadow: 0 0 20px rgba(129, 140, 248, 0.3); } .course-code { font-size: 1.1rem; font-weight: 600; color: #94a3b8; background: rgba(129, 140, 248, 0.1); padding: 0.5rem 1rem; border-radius: 1rem; border: 1px solid rgba(129, 140, 248, 0.2); display: inline-block; } .team-members { display: flex; justify-content: center; flex-wrap: wrap; gap: 1.5rem; margin-top: 2rem; } .member-card { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; padding: 1.5rem; background: rgba(15, 23, 42, 0.6); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 1rem; transition: all 0.3s ease; position: relative; overflow: hidden; min-width: 120px; backdrop-filter: blur(10px); } .member-card::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(129, 140, 248, 0.1), transparent); transition: left 0.6s ease; } .member-card:hover::before { left: 100%; } .member-card:hover { transform: translateY(-5px); border-color: rgba(129, 140, 248, 0.4); box-shadow: 0 15px 35px rgba(129, 140, 248, 0.2); background: rgba(129, 140, 248, 0.05); } .member-avatar { width: 60px; height: 60px; border-radius: 50%; background: linear-gradient(135deg, #818cf8, #a855f7); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 700; color: white; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); box-shadow: 0 8px 20px rgba(129, 140, 248, 0.3); transition: all 0.3s ease; } .member-card:hover .member-avatar { transform: scale(1.1); box-shadow: 0 12px 25px rgba(129, 140, 248, 0.4); } .member-name { font-size: 1rem; font-weight: 600; color: #e2e8f0; transition: color 0.3s ease; } .member-card:hover .member-name { color: #818cf8; } /* Responsive design for team members */ @media (max-width: 768px) { .team-members { gap: 1rem; } .member-card { padding: 1rem; min-width: 100px; } .member-avatar { width: 50px; height: 50px; font-size: 1.25rem; } .university-name { font-size: 1.25rem; } } /* Enhanced shadow and animation utilities */ .shadow-glow { box-shadow: var(--shadow-glow); transition: box-shadow 0.3s ease; } .shadow-glow:hover { box-shadow: 0 0 30px rgba(99,102,241,0.4), 0 0 60px rgba(99,102,241,0.3); } .animate-pulse-slow { animation: pulse-slow 8s ease-in-out infinite; } @keyframes pulse-slow { 0%, 100% { transform: scale(1); opacity: .7; } 50% { transform: scale(1.05); opacity: 1; } } /* Additional animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } .animate-fade-in-up { animation: fadeInUp 0.6s ease-out; } .animate-slide-in-right { animation: slideInRight 0.6s ease-out; } /* Enhanced button states */ .btn-primary:active { transform: translateY(1px); box-shadow: 0 5px 15px rgba(99,102,241,0.3); } .btn-secondary:active { transform: translateY(1px); } .btn-ghost:active { transform: translateY(1px); } /* Enhanced card interactions */ .card { transition: all 0.3s ease; } .card:hover { transform: translateY(-2px); box-shadow: 0 20px 40px rgba(0,0,0,0.3); } .card.glass:hover { background: rgba(15, 23, 42, 0.7); backdrop-filter: blur(20px); } /* Enhanced feature cards */ .feature { transition: all 0.3s ease; } .feature:hover { transform: translateY(-4px); background: rgba(15, 23, 42, 0.8); border-color: rgba(99, 102, 241, 0.3); } .feature-icon { transition: all 0.3s ease; } .feature:hover .feature-icon { color: rgb(99, 102, 241); transform: scale(1.1); } /* Enhanced chip interactions */ .chip { transition: all 0.2s ease; } .chip:hover { background: rgba(99, 102, 241, 0.1); border-color: rgba(99, 102, 241, 0.3); color: rgb(129, 140, 248); transform: translateY(-1px); } /* Enhanced tab interactions */ .tab { transition: all 0.2s ease; position: relative; overflow: hidden; } .tab::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent); transition: left 0.5s ease; } .tab:hover::before { left: 100%; } .tab:hover { transform: translateY(-1px); } .tab.active { background: linear-gradient(135deg, rgba(99, 102, 241, 0.2), rgba(79, 70, 229, 0.1)); box-shadow: 0 4px 15px rgba(99, 102, 241, 0.2); } /* Enhanced diagram styling */ pre.mermaid { transition: all 0.3s ease; position: relative; } pre.mermaid:hover { border-color: rgba(99, 102, 241, 0.3); box-shadow: 0 10px 30px rgba(0,0,0,0.2); } /* Enhanced metric cards */ .metric { transition: all 0.3s ease; position: relative; overflow: hidden; background: rgba(15, 23, 42, 0.6); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 1rem; padding: 1.5rem; text-align: center; min-height: 120px; display: flex; flex-direction: column; justify-content: center; align-items: center; } .metric::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgb(99, 102, 241), transparent); transform: translateX(-100%); transition: transform 0.6s ease; } .metric:hover::before { transform: translateX(100%); } .metric:hover { transform: translateY(-4px); border-color: rgba(99, 102, 241, 0.4); background: rgba(15, 23, 42, 0.8); box-shadow: 0 10px 30px rgba(99, 102, 241, 0.2); } .metric-value { transition: all 0.3s ease; font-size: 2.5rem; font-weight: 800; color: rgb(129, 140, 248); margin: 0; text-align: center; width: 100%; display: block; position: relative; z-index: 2; } .metric:hover .metric-value { color: rgb(99, 102, 241); transform: scale(1.1); text-shadow: 0 0 20px rgba(99, 102, 241, 0.5); } .metric-label { transition: all 0.3s ease; color: rgb(148, 163, 184); font-size: 0.875rem; font-weight: 500; margin-top: 0.5rem; text-align: center; width: 100%; position: relative; z-index: 2; } .metric:hover .metric-label { color: rgb(203, 213, 225); transform: translateY(-2px); } /* Add a subtle glow effect on hover */ .metric::after { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: radial-gradient(circle, rgba(99, 102, 241, 0.1) 0%, transparent 70%); border-radius: 50%; transform: translate(-50%, -50%); transition: all 0.3s ease; z-index: 1; } .metric:hover::after { width: 200px; height: 200px; } /* Enhanced avatar styling */ .avatar { transition: all 0.3s ease; position: relative; overflow: hidden; } .avatar::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(45deg, transparent, rgba(99, 102, 241, 0.1), transparent); transform: translateX(-100%) translateY(-100%); transition: transform 0.6s ease; } .avatar:hover::before { transform: translateX(100%) translateY(100%); } .avatar:hover { transform: translateY(-2px); border-color: rgba(99, 102, 241, 0.3); background: rgba(99, 102, 241, 0.05); } /* Team member card styles */ .member-card { @apply rounded-2xl bg-slate-900/60 border border-white/10 p-4 text-center transition-all duration-300 hover:bg-slate-800/80 hover:border-indigo-400/30 hover:transform hover:-translate-y-1; } .member-avatar { @apply text-4xl mb-2 w-16 h-16 mx-auto flex items-center justify-center rounded-full bg-gradient-to-br from-indigo-500/20 to-purple-500/20 border border-indigo-400/30; } .member-name { @apply block text-lg font-semibold text-slate-200 mb-1; } .member-role { @apply block text-sm text-slate-400 font-medium; } /* Enhanced text justification and spacing */ .section p, .section li, .section div:not(.btn-primary):not(.btn-secondary):not(.btn-ghost):not(.tab):not(.chip):not(.metric-value):not(.metric-label) { text-align: justify; text-justify: inter-word; hyphens: auto; } /* Ensure proper margins for all sections */ .section { margin-left: 2rem; margin-right: 2rem; } @media (max-width: 768px) { .section { margin-left: 1rem; margin-right: 1rem; } } /* Enhanced responsive improvements */ @media (max-width: 1024px) { .container { padding-left: 1rem; padding-right: 1rem; } .section { padding-top: 4rem; padding-bottom: 4rem; } .section-header h2 { font-size: 2.5rem; } } @media (max-width: 768px) { .section-header h2 { font-size: 2rem; line-height: 1.2; } .section-header p { font-size: 0.9rem; } .card-body { padding: 1rem; } .feature { padding: 1rem; } .metric-value { font-size: 2rem; } .tabs { flex-direction: column; gap: 0.5rem; } .tab { text-align: center; padding: 0.75rem 1rem; } /* Hero section mobile improvements */ .hero h1 { font-size: 2.5rem; line-height: 1.1; } .hero p { font-size: 1rem; } /* Button improvements for mobile */ .btn-primary, .btn-secondary, .btn-ghost { padding: 0.75rem 1.5rem; font-size: 0.9rem; } /* Chip improvements for mobile */ .chip { padding: 0.5rem 1rem; font-size: 0.8rem; } /* Diagram improvements for mobile */ pre.mermaid { font-size: 0.8rem; padding: 1rem; overflow-x: auto; } /* Metric cards mobile layout */ .metric { padding: 1rem; } .metric-value { font-size: 1.75rem; } /* Avatar improvements for mobile */ .avatar { padding: 1rem; font-size: 0.9rem; } /* Team member card mobile improvements */ .member-card { padding: 1rem; } .member-avatar { @apply text-3xl w-12 h-12; } .member-name { @apply text-base; } .member-role { @apply text-xs; } /* Navigation improvements */ nav { display: none; } /* Header mobile layout */ header .flex { gap: 1rem; } /* Feature grid mobile */ .grid.md\\:grid-cols-3 { grid-template-columns: 1fr; gap: 1rem; } .grid.md\\:grid-cols-2 { grid-template-columns: 1fr; gap: 1rem; } .grid.lg\\:grid-cols-2 { grid-template-columns: 1fr; gap: 1rem; } .grid.lg\\:grid-cols-3 { grid-template-columns: 1fr; gap: 1rem; } .grid.md\\:grid-cols-5 { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; } } @media (max-width: 480px) { .container { padding-left: 0.75rem; padding-right: 0.75rem; } .section { padding-top: 3rem; padding-bottom: 3rem; } .section-header h2 { font-size: 1.75rem; } .hero h1 { font-size: 2rem; } .hero p { font-size: 0.9rem; } .btn-primary, .btn-secondary, .btn-ghost { padding: 0.625rem 1.25rem; font-size: 0.85rem; } .chip { padding: 0.375rem 0.75rem; font-size: 0.75rem; } .metric-value { font-size: 1.5rem; } .avatar { padding: 0.75rem; font-size: 0.8rem; } /* Team member card very small screen improvements */ .member-card { padding: 0.75rem; } .member-avatar { @apply text-2xl w-10 h-10; } .member-name { @apply text-sm; } .member-role { @apply text-xs; } .grid.md\\:grid-cols-5 { grid-template-columns: 1fr; gap: 0.5rem; } /* Stack hero content vertically on very small screens */ .hero .grid { grid-template-columns: 1fr; gap: 2rem; } .hero .grid > div:first-child { order: 2; } .hero .grid > div:last-child { order: 1; } } /* Print styles */ @media print { .btn-primary, .btn-secondary, .btn-ghost, .btn-icon { background: none !important; color: black !important; border: 1px solid black !important; } .card, .feature { border: 1px solid #ccc !important; background: white !important; } .shadow-glow { box-shadow: none !important; } .animate-pulse-slow { animation: none !important; } } /* Focus states for accessibility */ .btn-primary:focus, .btn-secondary:focus, .btn-ghost:focus, .tab:focus, .chip:focus { outline: 2px solid rgb(99, 102, 241); outline-offset: 2px; } /* Loading states */ .loading { position: relative; overflow: hidden; } .loading::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent); animation: loading 1.5s infinite; } @keyframes loading { 0% { left: -100%; } 100% { left: 100%; } }