/* ============================================================================ SNOWMAN AI - CSS Principal ============================================================================ */ /* Container principal */ .gradio-container { max-width: 1400px !important; margin: auto; } /* ============================================================================ LANDING PAGE STYLES ============================================================================ */ /* Launch button - big centered button */ .launch-btn { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border: none !important; padding: 1.2rem 3rem !important; font-size: 1.2rem !important; font-weight: 700 !important; border-radius: 50px !important; box-shadow: 0 10px 40px rgba(102, 126, 234, 0.5) !important; transition: all 0.3s ease !important; text-transform: uppercase !important; letter-spacing: 1px !important; animation: pulse-glow 2s ease-in-out infinite !important; white-space: nowrap !important; max-width: 400px !important; margin: 0 auto !important; } /* Hidden Gradio button - invisible but still in DOM */ .launch-btn-hidden { position: absolute !important; left: -9999px !important; opacity: 0 !important; width: 1px !important; height: 1px !important; } .launch-btn:hover { transform: translateY(-2px) scale(1.02) !important; box-shadow: 0 12px 40px rgba(102, 126, 234, 0.6) !important; animation: none !important; } .launch-btn:active { transform: translateY(0) scale(0.98) !important; } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 8px 30px rgba(102, 126, 234, 0.5); } 50% { box-shadow: 0 8px 40px rgba(102, 126, 234, 0.8); } } /* ============================================================================ HEADER STYLES ============================================================================ */ /* Header estilizado */ .header-title { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-size: 2.5rem !important; font-weight: 800 !important; text-align: center; margin-bottom: 0.5rem !important; } .header-subtitle { text-align: center; color: #64748b; font-size: 1.1rem; margin-bottom: 1.5rem !important; } /* Cards de estatísticas */ .stat-card { background: white; border-radius: 16px; padding: 1.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); transition: transform 0.2s ease, box-shadow 0.2s ease; } .stat-card:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15); } /* Badges de fonte */ .source-badge { display: inline-block; padding: 4px 12px; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; margin-right: 4px; } .badge-crossref { background: #dbeafe; color: #1e40af; } .badge-semantic { background: #dcfce7; color: #166534; } .badge-openalex { background: #fef3c7; color: #92400e; } .badge-duckduckgo { background: #ffe4e6; color: #be123c; } .badge-tavily { background: #f3e8ff; color: #7c3aed; } /* Tabs customizadas */ .tabs > .tab-nav > button { font-weight: 600 !important; padding: 12px 24px !important; border-radius: 8px 8px 0 0 !important; transition: all 0.2s ease !important; } .tabs > .tab-nav > button.selected { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; color: white !important; } /* Logs estilizados */ .logs-container textarea { font-family: 'JetBrains Mono', monospace !important; font-size: 0.85rem !important; background: #1e293b !important; color: #e2e8f0 !important; border-radius: 8px !important; } /* Status badges animados */ .status-processing { animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* Dataframe melhorado */ .dataframe-container { border-radius: 12px; overflow: hidden; } /* Accordion melhorado */ .accordion { border-radius: 12px !important; overflow: hidden; } /* Progress bar */ .progress-bar { height: 8px !important; border-radius: 4px !important; background: linear-gradient(90deg, #667eea, #764ba2) !important; } /* Upload area */ .upload-area { border: 2px dashed #cbd5e1 !important; border-radius: 16px !important; background: #f8fafc !important; transition: all 0.3s ease !important; } .upload-area:hover { border-color: #667eea !important; background: #f0f4ff !important; } /* Feature cards */ .feature-card { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-radius: 12px; padding: 1rem; border: 1px solid #e2e8f0; } /* Botões de download */ .download-btn { transition: all 0.2s ease !important; } .download-btn:hover { transform: scale(1.02) !important; } /* Info boxes */ .info-box { background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); border-left: 4px solid #3b82f6; border-radius: 0 8px 8px 0; padding: 1rem; margin: 0.5rem 0; } /* Warning box */ .warning-box { background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%); border-left: 4px solid #f59e0b; border-radius: 0 8px 8px 0; padding: 1rem; } /* Success animation */ @keyframes success-bounce { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } .success-msg { animation: success-bounce 0.5s ease; } /* ============================================================================ ANIMAÇÃO DO PIPELINE DE AGENTES ============================================================================ */ /* Container do pipeline */ .pipeline-container { background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); border-radius: 16px; padding: 2rem; margin: 1rem 0; } /* Linha do pipeline */ .pipeline-flow { display: flex; align-items: center; justify-content: space-between; position: relative; padding: 1rem 0; } /* Linha conectora */ .pipeline-line { position: absolute; top: 50%; left: 5%; right: 5%; height: 3px; background: #334155; z-index: 1; } .pipeline-line-progress { position: absolute; top: 50%; left: 5%; height: 3px; background: linear-gradient(90deg, #667eea, #764ba2); z-index: 2; transition: width 0.5s ease; box-shadow: 0 0 10px rgba(102, 126, 234, 0.5); } /* Nó do agente */ .agent-node { display: flex; flex-direction: column; align-items: center; z-index: 3; transition: all 0.3s ease; } .agent-icon { width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; background: #334155; border: 3px solid #475569; transition: all 0.3s ease; position: relative; } .agent-icon.active { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #a78bfa; box-shadow: 0 0 20px rgba(102, 126, 234, 0.6); animation: pulse-glow 1.5s infinite; } .agent-icon.completed { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); border-color: #4ade80; box-shadow: 0 0 15px rgba(34, 197, 94, 0.4); } .agent-icon.waiting { opacity: 0.5; } .agent-label { color: #94a3b8; font-size: 0.75rem; font-weight: 600; margin-top: 0.5rem; text-align: center; transition: all 0.3s ease; } .agent-label.active { color: #a78bfa; } .agent-label.completed { color: #4ade80; } /* Animação de pulso */ @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.6); transform: scale(1); } 50% { box-shadow: 0 0 30px rgba(102, 126, 234, 0.8); transform: scale(1.05); } } /* Spinner de loading */ .agent-spinner { position: absolute; width: 70px; height: 70px; border: 3px solid transparent; border-top-color: #a78bfa; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Stats em tempo real */ .live-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-top: 1.5rem; } .stat-box { background: rgba(255,255,255,0.05); border-radius: 12px; padding: 1rem; text-align: center; border: 1px solid rgba(255,255,255,0.1); } .stat-value { font-size: 1.75rem; font-weight: 700; background: linear-gradient(135deg, #667eea 0%, #a78bfa 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .stat-label { color: #94a3b8; font-size: 0.75rem; font-weight: 500; margin-top: 0.25rem; } /* Indicador de etapa atual */ .current-step { background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(167, 139, 250, 0.1) 100%); border: 1px solid rgba(102, 126, 234, 0.3); border-radius: 12px; padding: 1rem; margin-top: 1rem; text-align: center; } .current-step-text { color: #e2e8f0; font-size: 0.9rem; } .current-step-detail { color: #a78bfa; font-size: 0.8rem; margin-top: 0.5rem; }