/* Custom animations and transitions */ @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* Tab styles */ .tab-btn { position: relative; color: #6b7280; } .tab-btn::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, #6366f1, #8b5cf6); transform: scaleX(0); transition: transform 0.3s ease; } .tab-btn.active { color: #6366f1; background: rgba(99, 102, 241, 0.1); } .tab-btn.active::after { transform: scaleX(1); } .tab-btn:hover:not(.active) { background: rgba(107, 114, 128, 0.1); } /* Textarea styles */ textarea { scrollbar-width: thin; scrollbar-color: #cbd5e1 #f1f5f9; } textarea::-webkit-scrollbar { width: 8px; } textarea::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 4px; } textarea::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } textarea::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* Button hover effects */ button { position: relative; overflow: hidden; } button::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.5); transform: translate(-50%, -50%); transition: width 0.6s, height 0.6s; } button:active::before { width: 300px; height: 300px; } /* Loading animation */ .loading { position: relative; pointer-events: none; } .loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin: -10px 0 0 -10px; border: 2px solid #f3f4f6; border-top-color: #6366f1; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Toast notification styles */ #toast.show { transform: translateY(0); opacity: 1; } /* Line clamp utility */ .line-clamp-6 { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; } /* Gradient text effect */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Card hover effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* Pulse animation for optimization score */ @keyframes scorePulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .score-update { animation: scorePulse 0.5s ease; } /* Robustness indicator styles */ .robustness-indicator { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white; padding: 4px 12px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; display: inline-block; margin-top: 4px; } .compliance-badge { background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); color: white; padding: 2px 8px; border-radius: 8px; font-size: 0.625rem; font-weight: 500; display: inline-block; margin-left: 4px; } /* Enhanced textarea focus for precision */ textarea:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } /* Structure validation highlight */ .structure-valid { border-color: #10b981 !important; background-color: #f0fdf4 !important; } .structure-invalid { border-color: #ef4444 !important; background-color: #fef2f2 !important; } /* Responsive adjustments */ @media (max-width: 768px) { .container { padding-left: 1rem; padding-right: 1rem; } h1 { font-size: 2.5rem; } .grid-cols-2 { grid-template-columns: 1fr; } .grid-cols-3 { grid-template-columns: 1fr; } }