:root { --primary-color: #2563eb; --primary-light: #3b82f6; --primary-dark: #1d4ed8; --secondary-color: #f59e0b; --light-gray: #f3f4f6; --medium-gray: #e5e7eb; --dark-gray: #6b7280; --success-color: #10b981; --warning-color: #f59e0b; --danger-color: #ef4444; --text-color: #1f2937; --white: #ffffff; --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --radius: 8px; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } body { background-color: var(--light-gray); color: var(--text-color); line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } header { text-align: center; margin-bottom: 30px; padding: 20px 0; border-bottom: 1px solid var(--medium-gray); } h1 { color: var(--primary-color); font-size: 2.5rem; margin-bottom: 10px; } .subtitle { color: var(--dark-gray); font-size: 1.1rem; max-width: 800px; margin: 0 auto; } /* Input Section */ .input-section { background-color: var(--white); border-radius: var(--radius); padding: 25px; margin-bottom: 30px; box-shadow: var(--shadow); } /* Estilos para a seção de autenticação (login/logout) */ #auth-section { background-color: var(--white); border-radius: var(--radius); padding: 25px; margin-bottom: 30px; box-shadow: var(--shadow); text-align: center; /* Centraliza o conteúdo do formulário */ } #auth-section h2 { color: var(--primary-color); margin-bottom: 20px; } #login-form { display: flex; flex-direction: column; align-items: center; /* Centraliza os itens do formulário */ gap: 15px; /* Espaçamento entre os elementos do formulário */ } #login-form .input-group { width: 100%; max-width: 350px; /* Limita a largura dos inputs */ text-align: left; /* Alinha o label e input à esquerda dentro do grupo */ } #login-form label { margin-bottom: 5px; } #login-form input[type="email"], #login-form input[type="password"] { width: 100%; padding: 12px; border: 1px solid var(--medium-gray); border-radius: var(--radius); font-size: 1rem; transition: border-color 0.3s; } #login-form input[type="email"]:focus, #login-form input[type="password"]:focus { outline: none; border-color: var(--primary-color); } #login-button, #logout-button { width: 100%; max-width: 350px; /* Alinha com a largura dos inputs */ padding: 12px 20px; border: none; border-radius: var(--radius); font-size: 1.1rem; font-weight: 600; cursor: pointer; transition: background-color 0.3s, color 0.3s; } #login-button { background-color: var(--primary-color); color: var(--white); } #login-button:hover { background-color: var(--primary-dark); } #logout-button { background-color: var(--danger-color); color: var(--white); } #logout-button:hover { background-color: #c82333; /* Um tom mais escuro de vermelho */ } #auth-message { margin-top: 15px; font-weight: 500; color: var(--text-color); /* Cor padrão */ } /* Cores para mensagens de autenticação (sucesso/erro) */ #auth-message.success { color: var(--success-color); } #auth-message.error { color: var(--danger-color); } .api-key-container { margin-bottom: 25px; } .api-key-input { display: flex; align-items: center; } .api-key-input input { flex: 1; padding: 12px; border: 1px solid var(--medium-gray); border-radius: var(--radius) 0 0 var(--radius); font-size: 1rem; transition: border-color 0.3s; } .toggle-button { background-color: var(--medium-gray); border: none; padding: 12px 15px; border-radius: 0 var(--radius) var(--radius) 0; cursor: pointer; transition: background-color 0.3s; } .toggle-button:hover { background-color: var(--dark-gray); color: var(--white); } .job-description { margin-bottom: 25px; } label { display: block; font-weight: 600; margin-bottom: 8px; color: var(--text-color); } textarea { width: 100%; height: 150px; padding: 12px; border: 1px solid var(--medium-gray); border-radius: var(--radius); resize: vertical; font-size: 1rem; transition: border-color 0.3s; } textarea:focus, .api-key-input input:focus { outline: none; border-color: var(--primary-color); } .file-upload { margin-bottom: 25px; } .upload-area { border: 2px dashed var(--medium-gray); border-radius: var(--radius); padding: 30px; text-align: center; transition: border-color 0.3s; cursor: pointer; margin-bottom: 20px; } .upload-area:hover, .upload-area.dragover { border-color: var(--primary-color); } .upload-area i { font-size: 3rem; color: var(--primary-color); margin-bottom: 15px; } .upload-button { display: inline-block; background-color: var(--primary-color); color: var(--white); padding: 10px 20px; border-radius: var(--radius); cursor: pointer; font-weight: 600; margin-top: 15px; transition: background-color 0.3s; } .upload-button:hover { background-color: var(--primary-dark); } .file-list { background-color: var(--light-gray); border-radius: var(--radius); padding: 15px; margin-top: 20px; } .file-list h3 { margin-bottom: 10px; font-size: 1.1rem; } .file-list ul { list-style: none; } .file-list li { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--medium-gray); } .file-list li:last-child { border-bottom: none; } .file-name { display: flex; align-items: center; } .file-name i { margin-right: 10px; color: var(--primary-color); } .remove-file { color: var(--danger-color); cursor: pointer; font-size: 1.2rem; } .analyze-button { display: block; width: 100%; background-color: var(--primary-color); color: var(--white); border: none; border-radius: var(--radius); padding: 15px; font-size: 1.1rem; font-weight: 600; cursor: pointer; transition: background-color 0.3s; } .analyze-button:hover:not(:disabled) { background-color: var(--primary-dark); } .analyze-button:disabled { background-color: var(--medium-gray); cursor: not-allowed; } .analyze-button i { margin-right: 10px; } /* Progress Bar */ .progress-container { margin-bottom: 25px; display: none; } .progress-info { display: flex; justify-content: space-between; margin-bottom: 8px; } .progress-bar { height: 10px; background-color: var(--medium-gray); border-radius: 5px; overflow: hidden; } .progress-fill { height: 100%; background-color: var(--primary-color); border-radius: 5px; transition: width 0.3s ease; } /* Results Section */ .results-section { background-color: var(--white); border-radius: var(--radius); padding: 25px; box-shadow: var(--shadow); margin-bottom: 30px; } .results-section h2 { margin-bottom: 20px; color: var(--primary-color); } .table-container { overflow-x: auto; margin-bottom: 30px; } .results-table { width: 100%; border-collapse: collapse; table-layout: fixed; /* Isso força a tabela a respeitar as larguras definidas */ } .results-table th, .results-table td { padding: 12px 15px; text-align: left; border-bottom: 1px solid var(--medium-gray); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .results-table th { background-color: var(--light-gray); font-weight: 600; } .results-table tr:hover { background-color: var(--light-gray); } /* MELHORIA: Definir larguras específicas para cada coluna */ .results-table th:nth-child(1), .results-table td:nth-child(1) { /* Rank */ width: 80px; text-align: center; } .results-table th:nth-child(2), .results-table td:nth-child(2) { /* Nome */ width: 150px; } .results-table th:nth-child(3), .results-table td:nth-child(3) { /* Score */ width: 80px; text-align: center; } .results-table th:nth-child(4), .results-table td:nth-child(4) { /* Score Técnico */ width: 120px; } .results-table th:nth-child(5), .results-table td:nth-child(5) { /* Score Comportamental */ width: 120px; } .results-table th:nth-child(6), .results-table td:nth-child(6) { /* Red Flags */ width: 100px; } .results-table th:nth-child(7), .results-table td:nth-child(7) { /* Resumo */ width: auto; /* Ocupa o espaço restante */ } .results-table th:nth-child(8), .results-table td:nth-child(8) { /* Ações */ width: 120px; text-align: center; } /* Adicione uma classe para permitir que o resumo seja expandido ao passar o mouse */ .resume-cell { position: relative; } .resume-cell:hover { white-space: normal; overflow: visible; z-index: 10; background-color: white; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); border-radius: 4px; padding: 10px !important; max-width: 300px; } .rank-cell { width: 60px; text-align: center; } .gold { color: #ffd700; } .silver { color: #c0c0c0; } .bronze { color: #cd7f32; } .score-cell { width: 80px; text-align: center; } .high-score { color: var(--success-color); font-weight: 600; } .medium-score { color: var(--warning-color); font-weight: 600; } .low-score { color: var(--danger-color); font-weight: 600; } .tech-score, .behavior-score { width: 120px; } .score-bar { width: 100%; height: 8px; background-color: var(--medium-gray); border-radius: 4px; margin-bottom: 5px; overflow: hidden; } .score-fill { height: 100%; border-radius: 4px; } .tech-fill { background-color: #3b82f6; } .behavior-fill { background-color: #10b981; } .red-flags { display: flex; justify-content: center; gap: 5px; } .flag { width: 12px; height: 12px; border-radius: 50%; } .flag.red { background-color: var(--danger-color); } .flag.yellow { background-color: var(--warning-color); } .green { background-color: var(--success-color); } /* MELHORIA: Estilo especial para a célula de resumo com hover expandido */ .resume-cell { position: relative; cursor: help; } .resume-cell:hover { white-space: normal; overflow: visible; z-index: 10; background-color: var(--white); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border-radius: 4px; padding: 12px !important; max-width: 350px; border: 1px solid var(--primary-color); } /* MELHORIA: Adicionar indicador visual para células com tooltip */ .resume-cell::after { content: "📄"; position: absolute; right: 5px; top: 50%; transform: translateY(-50%); font-size: 12px; opacity: 0.5; } .resume-cell:hover::after { display: none; } .action-cell { width: 120px; } .view-button { background-color: var(--primary-light); color: var(--white); border: none; border-radius: var(--radius); padding: 6px 12px; cursor: pointer; transition: background-color 0.3s; display: flex; align-items: center; justify-content: center; margin: 0 auto; font-size: 0.8rem; /* MELHORIA: Fonte menor para economizar espaço */ } .view-button:hover { background-color: var(--primary-dark); } .view-button i { margin-right: 5px; } /* MELHORIA: Estilo para quando não há red flags .no-flags { color: var(--dark-gray); font-style: italic; font-size: 0.9rem; } */ /* Exemplo simples para a classe no-flags */ .no-flags { color: var(--dark-gray); /* Cor mais suave */ font-style: italic; /* Texto em itálico */ font-size: 0.9em; /* Fonte um pouco menor */ /* Outros estilos conforme necessário para alinhar/centralizar */ display: block; text-align: center; } .export-buttons { display: flex; gap: 15px; flex-wrap: wrap; } .export-button { background-color: var(--white); color: var(--primary-color); border: 1px solid var(--primary-color); border-radius: var(--radius); padding: 10px 15px; cursor: pointer; transition: all 0.3s; display: flex; align-items: center; font-weight: 500; } .export-button:hover { background-color: var(--primary-color); color: var(--white); } .export-button i { margin-right: 8px; } /* Modal */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); overflow: auto; } .modal-content { background-color: var(--white); margin: 5% auto; padding: 25px; border-radius: var(--radius); width: 80%; max-width: 800px; box-shadow: var(--shadow); position: relative; max-height: 80vh; overflow-y: auto; } .close-button { position: absolute; top: 15px; right: 20px; font-size: 1.5rem; font-weight: bold; color: var(--dark-gray); cursor: pointer; } .close-button:hover { color: var(--text-color); } #modal-title { margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid var(--medium-gray); color: var(--primary-color); } #modal-content { line-height: 1.8; } .candidate-detail { margin-bottom: 25px; } .candidate-detail h3 { margin-bottom: 10px; color: var(--text-color); } .score-detail { display: flex; gap: 20px; margin: 20px 0; flex-wrap: wrap; } .score-card { background-color: var(--light-gray); padding: 15px; border-radius: var(--radius); flex: 1; min-width: 150px; } .score-card h4 { margin-bottom: 10px; font-size: 1rem; } .score-value { font-size: 1.8rem; font-weight: 600; } .tools-section { margin: 20px 0; } .tools-list { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; } .tool { background-color: var(--light-gray); padding: 5px 10px; border-radius: 20px; font-size: 0.9rem; } .tool.known { background-color: #dcfce7; color: #166534; } .tool.unknown { background-color: #fee2e2; color: #991b1b; } .alerts-section { margin: 20px 0; } .alert-item { display: flex; align-items: flex-start; margin-bottom: 10px; } .alert-icon { margin-right: 10px; font-size: 1.2rem; } .alert-icon.red { color: var(--danger-color); } .alert-icon.yellow { color: var(--warning-color); } /* Loading Overlay */ .loading-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); z-index: 2000; justify-content: center; align-items: center; flex-direction: column; } .loading-spinner { border: 5px solid var(--medium-gray); border-top: 5px solid var(--primary-color); border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; margin-bottom: 20px; } #loading-text { color: var(--white); font-size: 1.2rem; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Footer */ footer { text-align: center; padding: 20px 0; color: var(--dark-gray); font-size: 0.9rem; } /* Tool Trace Section */ .tool-trace-section { margin-top: 20px; } .tool-trace-section details { background: #f9f9f9; border: 1px solid #ccc; padding: 10px; border-radius: 6px; } .tool-trace-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 0.95rem; } .tool-trace-table th, .tool-trace-table td { border: 1px solid #ccc; padding: 8px; } .tool-trace-table th { background-color: #f0f0f0; font-weight: bold; text-align: left; } /* Toast Notifications */ .toast { position: fixed; bottom: 20px; right: 20px; padding: 12px 20px; border-radius: 5px; color: white; background-color: red; /* padrão: erro */ font-weight: bold; box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); z-index: 1000; transition: opacity 0.3s ease-in-out; } .toast.success { background-color: green; } .toast.warning { background-color: orange; } .hidden { display: none; } /* Responsive */ @media (max-width: 768px) { .container { padding: 15px; } h1 { font-size: 2rem; } .subtitle { font-size: 1rem; } .input-section, .results-section { padding: 15px; } .export-buttons { flex-direction: column; } .modal-content { width: 95%; margin: 10% auto; } /* MELHORIA: Responsividade da tabela */ .table-container { overflow-x: auto; } .results-table { min-width: 900px; /* Garante que a tabela não fique muito comprimida */ } /* Ajustar larguras das colunas em telas menores */ .results-table th:nth-child(2), .results-table td:nth-child(2) { width: 150px; } .results-table th:nth-child(4), .results-table td:nth-child(4), .results-table th:nth-child(5), .results-table td:nth-child(5) { width: 120px; } .score-bar { width: 60px; } } /* MELHORIA: Melhor visualização em tablets */ @media (max-width: 992px) and (min-width: 769px) { .results-table th:nth-child(2), .results-table td:nth-child(2) { width: 160px; } .results-table th:nth-child(4), .results-table td:nth-child(4), .results-table th:nth-child(5), .results-table td:nth-child(5) { width: 130px; } } /* MELHORIA: Animações suaves */ .results-table tr { transition: background-color 0.2s ease; } .view-button { transition: all 0.2s ease; } .resume-cell { transition: all 0.3s ease; } /* MELHORIA: Melhor contraste para acessibilidade */ .results-table th { color: var(--text-color); } /* MELHORIA: Indicador visual para células interativas */ .resume-cell:hover { cursor: help; } .results-table td:nth-child(2):hover { background-color: rgba(37, 99, 235, 0.05); } /* novo para salvar markd em pdf*/ #markdown-preview { position: absolute; top: -9999px; left: -9999px; width: 210mm; /* largura de uma folha A4 */ max-width: 100%; } /*05/07/2025 //////////////////////////////////////*/ .export-buttons { display: flex; /* Transforma o contêiner em um flexbox */ justify-content: space-between; /* ALINHA ITENS À ESQUERDA E À DIREITA, COM ESPAÇO ENTRE ELES */ align-items: center; /* Centraliza os itens verticalmente */ /* Removido 'gap' daqui, pois space-between já lida com o espaçamento principal */ margin-top: 20px; /* Mantém a margem superior para separação */ } /* Novo contêiner para agrupar os botões à esquerda */ .export-buttons-left { display: flex; gap: 15px; /* Espaço entre os botões */ } .final-time-display { font-size: 1.1em; font-weight: bold; color: #333; white-space: nowrap; /* Evita que o texto do tempo quebre em múltiplas linhas */ } .header-content { display: flex; align-items: center; justify-content: center; /* Centraliza o conteúdo horizontalmente */ gap: 20px; /* Espaço entre a logo, o título e a outra logo */ } .header-logo { height: 50px; /* Ajuste o tamanho da logo conforme necessário */ width: auto; } /* Opcional: Se quiser ajustar o espaçamento especificamente para as logos */ .left-logo { margin-right: 10px; /* Espaço entre a logo da esquerda e o título */ } .right-logo { margin-left: 10px; /* Espaço entre a logo da direita e o título */ } header h1 { margin: 0; /* Remove margens padrão do h1 para melhor alinhamento com flexbox */ }