danielclopes commited on
Commit
dfdce9f
·
verified ·
1 Parent(s): 5fdd5fb

<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NeuroAvalia - Identificação de Neurodivergência</title> <script src="https://cdn.tailwindcss.com"></script> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> body { font-family: 'Poppins', sans-serif; background-color: #f8f9fa; } .progress-bar { transition: width 0.5s ease-in-out; } .option:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); } .result-chart { height: 300px; } </style> </head> <body class="min-h-screen bg-gradient-to-b from-indigo-50 to-blue-50"> <div class="container mx-auto px-4 py-8 max-w-6xl"> <!-- Header Section --> <header class="text-center mb-10"> <h1 class="text-4xl md:text-5xl font-bold text-indigo-800 mb-4">NeuroAvalia</h1> <p class="text-lg md:text-xl text-gray-700 max-w-3xl mx-auto"> Ferramenta baseada em pesquisas científicas para identificar sinais de neurodivergência e altas habilidades </p> <div class="w-24 h-1.5 bg-indigo-500 mx-auto mt-4 rounded-full"></div> </header> <!-- Welcome Card --> <div id="welcome-card" class="bg-white rounded-xl shadow-lg p-6 mb-8 transition-all duration-300"> <div class="flex flex-col md:flex-row items-center gap-6"> <div class="flex-shrink-0 mb-4 md:mb-0"> <div class="w-24 h-24 md:w-32 md:h-32 rounded-full bg-indigo-100 flex items-center justify-center"> <i class="fas fa-brain text-4xl md:text-5xl text-indigo-600"></i> </div> </div> <div> <h2 class="text-2xl font-semibold text-gray-800 mb-3">Sobre esta avaliação</h2> <p class="text-gray-600 mb-4"> Este questionário foi desenvolvido com base nos principais estudos mundiais sobre neurodivergência e altas habilidades. As perguntas abrangem diversas áreas cognitivas, emocionais e sensoriais. </p> <p class="text-gray-600 mb-6"> Ao final, você receberá um relatório detalhado com sua pontuação e orientações sobre os próximos passos, caso sejam necessários. </p> <button onclick="startAssessment()" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-6 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50"> Iniciar Avaliação </button> </div> </div> </div> <!-- Assessment Container --> <div id="assessment-container" class="hidden bg-white rounded-xl shadow-lg p-6 mb-8"> <!-- Progress Bar --> <div class="mb-8"> <div class="flex justify-between mb-2"> <span class="text-sm font-medium text-indigo-700">Progresso</span> <span id="progress-percentage" class="text-sm font-medium text-indigo-700">0%</span> </div> <div class="w-full bg-gray-200 rounded-full h-2.5"> <div id="progress-bar" class="progress-bar bg-indigo-600 h-2.5 rounded-full" style="width: 0%"></div> </div> </div> <!-- Question Container --> <div id="question-container"> <!-- Questions will be inserted here dynamically --> </div> <!-- Navigation Buttons --> <div class="flex justify-between mt-10"> <button id="prev-btn" onclick="prevQuestion()" class="hidden bg-gray-200 hover:bg-gray-300 text-gray-800 font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-opacity-50"> <i class="fas fa-arrow-left mr-2"></i> Anterior </button> <button id="next-btn" onclick="nextQuestion()" class="ml-auto bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50"> Próxima <i class="fas fa-arrow-right ml-2"></i> </button> <button id="submit-btn" onclick="submitAssessment()" class="hidden bg-green-600 hover:bg-green-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-opacity-50"> Finalizar <i class="fas fa-check ml-2"></i> </button> </div> </div> <!-- Results Container --> <div id="results-container" class="hidden bg-white rounded-xl shadow-lg p-6"> <div class="text-center mb-8"> <div class="inline-block p-4 bg-indigo-100 rounded-full mb-4"> <i class="fas fa-chart-bar text-4xl text-indigo-600"></i> </div> <h2 class="text-3xl font-bold text-gray-800 mb-2">Seu Resultado</h2> <p class="text-gray-600 max-w-2xl mx-auto"> Veja abaixo sua pontuação e interpretação baseada em pesquisas científicas sobre neurodivergência. </p> </div> <!-- Score Summary --> <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10"> <div class="bg-blue-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-blue-700 mb-2" id="cognitive-score">0</div> <div class="text-lg font-medium text-blue-800 mb-2">Cognitivo</div> <div class="h-1.5 bg-blue-200 rounded-full mb-3"> <div class="h-1.5 bg-blue-600 rounded-full" id="cognitive-bar" style="width: 0%"></div> </div> <p class="text-sm text-blue-900 opacity-80">Processamento de informações e padrões de pensamento</p> </div> <div class="bg-purple-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-purple-700 mb-2" id="emotional-score">0</div> <div class="text-lg font-medium text-purple-800 mb-2">Emocional</div> <div class="h-1.5 bg-purple-200 rounded-full mb-3"> <div class="h-1.5 bg-purple-600 rounded-full" id="emotional-bar" style="width: 0%"></div> </div> <p class="text-sm text-purple-900 opacity-80">Regulação emocional e intensidade de sentimentos</p> </div> <div class="bg-green-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-green-700 mb-2" id="sensory-score">0</div> <div class="text-lg font-medium text-green-800 mb-2">Sensorial</div> <div class="h-1.5 bg-green-200 rounded-full mb-3"> <div class="h-1.5 bg-green-600 rounded-full" id="sensory-bar" style="width: 0%"></div> </div> <p class="text-sm text-green-900 opacity-80">Sensibilidade a estímulos do ambiente</p> </div> </div> <!-- Detailed Analysis --> <div class="bg-gray-50 rounded-xl p-6 mb-8"> <h3 class="text-xl font-semibold text-gray-800 mb-4">Análise Detalhada</h3> <p class="text-gray-700 mb-6" id="detailed-analysis"> <!-- Analysis will be inserted here --> </p> <h4 class="text-lg font-medium text-gray-800 mb-3">Áreas com maior pontuação:</h4> <div id="strengths-list" class="grid grid-cols-1 md:grid-cols-2 gap-3 mb-6"> <!-- Strengths will be inserted here --> </div> <div class="alert bg-indigo-50 border-l-4 border-indigo-500 p-4 rounded mb-6"> <div class="flex"> <div class="flex-shrink-0 text-indigo-500"> <i class="fas fa-info-circle"></i> </div> <div class="ml-3"> <p class="text-sm text-indigo-700"> <strong>Nota:</strong> Esta avaliação não substitui um diagnóstico profissional. Se os resultados indicarem alta probabilidade de neurodivergência, recomendamos consultar um especialista. </p> </div> </div> </div> </div> <!-- Resources Section --> <div class="mb-8"> <h3 class="text-xl font-semibold text-gray-800 mb-4">Recursos e Próximos Passos</h3> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div class="flex items-start p-4 bg-white border border-gray-200 rounded-lg shadow-sm hover:shadow-md transition"> <div class="flex-shrink-0 mt-1 mr-4 text-blue-500"> <i class="fas fa-book-open"></i> </div> <div> <h4 class="font-medium text-gray-800">Leituras recomendadas</h4> <p class="text-sm text-gray-600">Materiais científicos sobre neurodivergência e altas habilidades</p> </div> </div> <div class="flex items-start p-4 bg-white border border-gray-200 rounded-lg shadow-sm hover:shadow-md transition"> <div class="flex-shrink-0 mt-1 mr-4 text-purple-500"> <i class="fas fa-user-md"></i> </div> <div> <h4 class="font-medium text-gray-800">Profissionais especializados</h4> <p class="text-sm text-gray-600">Encontre especialistas em sua região para avaliação detalhada</p> </div> </div> </div> </div> <div class="text-center"> <button onclick="restartAssessment()" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50 inline-flex items-center"> <i class="fas fa-redo mr-2"></i> Refazer Teste </button> </div> </div> </div> <footer class="bg-white py-6 mt-12 border-t border-gray-200"> <div class="container mx-auto px-4 text-center text-gray-600 text-sm"> <p>© 2023 NeuroAvalia. Baseado em pesquisas científicas sobre neurodivergência e altas habilidades.</p> <p class="mt-2">Este instrumento não substitui avaliação profissional.</p> </div> </footer> <script> // Questions database const questions = [ { id: 1, category: 'cognitive', text: "Com que frequência você percebe padrões, conexões ou relações que outras pessoas não percebem?", options: [ { text: "Raramente ou nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 16, category: 'cognitive', text: "Você tem facilidade para aprender conceitos complexos rapidamente?", options: [ { text: "Tenho dificuldade", score: 1 }, { text: "Às vezes", score: 3 }, { text: "Com frequência", score: 4 }, { text: "Sim, quase sempre", score: 5 } ] }, { id: 17, category: 'cognitive', text: "Você se frustra quando outros não acompanham seu raciocínio?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 4 }, { text: "Frequentemente", score: 5 } ] }, { id: 2, category: 'cognitive', text: "Você tem curiosidade intensa sobre vários tópicos diferentes?", options: [ { text: "Não especialmente", score: 1 }, { text: "Tenho algumas áreas de interesse", score: 3 }, { text: "Sim, sobre vários assuntos", score: 4 }, { text: "Sim, sobre muitos assuntos e com grande intensidade", score: 5 } ] }, { id: 3, category: 'emotional', text: "Você já foi descrito como muito intenso(a) emocionalmente?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 4, category: 'emotional', text: "Com que frequência você sente emoções com extrema intensidade (alegria, tristeza, raiva, etc.)?", options: [ { text: "Quase nunca", score: 1 }, { text: "De vez em quando", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 5, category: 'sensory', text: "Você é particularmente sensível a sons, luzes, texturas ou cheiros que não parecem incomodar outras pessoas?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 6, category: 'sensory', text: "Você fica sobrecarregado(a) em ambientes com muita estimulação sensorial (como shoppings, festas, locais barulhentos)?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 7, category: 'cognitive', text: "Você pensa principalmente em imagens ou padrões em vez de palavras?", options: [ { text: "Quase nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 8, category: 'emotional', text: "Você tem forte empatia e pode sentir o que os outros estão sentindo?", options: [ { text: "Não especialmente", score: 1 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Muito intensamente, às vezes é avassalador", score: 5 } ] }, { id: 9, category: 'cognitive', text: "Você aprende melhor quando pode explorar um tópico profundamente em vez de seguir uma estrutura pré-definida?", options: [ { text: "Prefiro seguir a estrutura definida", score: 1 }, { text: "Às vezes gosto de explorar", score: 3 }, { text: "Geralmente prefiro explorar por conta própria", score: 4 }, { text: "Sempre aprendo melhor explorando profundamente", score: 5 } ] }, { id: 10, category: 'sensory', text: "Você tem reações físicas intensas (como náusea ou dor) a certos estímulos sensoriais?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 11, category: 'cognitive', text: "Com que frequência você se envolve em pensamento divergente (várias ideias ou soluções para um problema)?", options: [ { text: "Raramente", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 12, category: 'emotional', text: "Você já sentiu que suas emoções são mais intensas do que as das pessoas ao seu redor?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 13, category: 'sensory', text: "Você tem preferências muito específicas por certos tipos de tecidos, sabores ou sons?", options: [ { text: "Nenhuma preferência especial", score: 1 }, { text: "Algumas pequenas preferências", score: 2 }, { text: "Algumas preferências marcantes", score: 3 }, { text: "Muitas preferências fortes", score: 4 }, { text: "Prefiroências muito específicas e intensas", score: 5 } ] }, { id: 14, category: 'cognitive', text: "Você tende a pensar de maneira não linear (saltando entre ideias em vez de seguir uma sequência lógica)?", options: [ { text: "Quase nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 15, category: 'emotional', text: "Você tem dificuldade em regular suas emoções (calmar-se quando está agitado ou animar-se quando está desanimado)?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 18, category: 'emotional', text: "Você se envolve emocionalmente com personagens de livros/filmes como se fossem reais?", options: [ { text: "Quase nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 19, category: 'sensory', text: "Você evita certas atividades devido à sensibilidade sensorial?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 4 }, { text: "Frequentemente", score: 5 } ] }, { id: 20, category: 'sensory', text: "Você tem reações físicas intensas a certos alimentos (textura, temperatura, sabor)?", options: [ { text: "Nunca", score: 1 }, { text: "1-2 alimentos", score: 2 }, { text: "3-5 alimentos", score: 3 }, { text: "6-10 alimentos", score: 4 }, { text: "Mais de 10 alimentos", score: 5 } ] } ]; // Comparative data for results (percentiles) const comparativeData = { cognitive: { 10: 20, 20: 30, 30: 45, 40: 55, 50: 65, 60: 72, 70: 79, 80: 85, 90: 90, 95: 95 }, emotional: { 10: 25, 20: 35, 30: 45, 40: 55, 50: 62, 60: 69, 70: 75, 80: 81, 90: 88, 95: 93 }, sensory: { 10: 15, 20: 30, 30: 42, 40: 52, 50: 60, 60: 68, 70: 74, 80: 80, 90: 87, 95: 94 } }; // Assessment state let currentQuestionIndex = 0; let answers = []; let scores = { cognitive: 0, emotional: 0, sensory: 0 }; // DOM elements const welcomeCard = document.getElementById('welcome-card'); const assessmentContainer = document.getElementById('assessment-container'); const questionContainer = document.getElementById('question-container'); const resultsContainer = document.getElementById('results-container'); const progressBar = document.getElementById('progress-bar'); const progressPercentage = document.getElementById('progress-percentage'); const prevBtn = document.getElementById('prev-btn'); const nextBtn = document.getElementById('next-btn'); const submitBtn = document.getElementById('submit-btn'); // Current position in assessment currentQuestionIndex = 0; // Start the assessment function startAssessment() { welcomeCard.classList.add('hidden'); assessmentContainer.classList.remove('hidden'); showQuestion(currentQuestionIndex); updateProgress(); } // Show a specific question function showQuestion(index) { // Reset question container questionContainer.innerHTML = ''; // Get current question const question = questions[index]; // Create question element const questionElement = document.createElement('div'); questionElement.className = 'question mb-8'; // Add question text const questionText = document.createElement('h3'); questionText.className = 'text-xl font-semibold text-gray-800 mb-6'; questionText.textContent = question.text; questionElement.appendChild(questionText); // Add options const optionsContainer = document.createElement('div'); optionsContainer.className = 'space-y-3'; question.options.forEach((option, optionIndex) => { const optionElement = document.createElement('div'); optionElement.className = 'option cursor-pointer bg-gray-50 hover:bg-indigo-50 border border-gray-200 rounded-lg p-4 transition duration-300'; optionElement.innerHTML = ` <div class="flex items-center"> <div class="w-5 h-5 rounded-full border border-gray-300 mr-3 flex-shrink-0 option-radio ${answers[index] === optionIndex ? 'bg-indigo-500 border-indigo-500' : ''}"></div> <div>${option.text}</div> </div> `; // Add click event to select option optionElement.addEventListener('click', () => { // Deselect all options document.querySelectorAll('.option-radio').forEach(radio => { radio.className = 'w-5 h-5 rounded-full border border-gray-300 mr-3 flex-shrink-0 option-radio'; }); // Select clicked option const radio = optionElement.querySelector('.option-radio'); radio.className = 'w-5 h-5 rounded-full border border-indigo-500 bg-indigo-500 mr-3 flex-shrink-0 option-radio'; // Store answer answers[index] = optionIndex; // Enable next/submit button if (index === questions.length - 1) { nextBtn.classList.add('hidden'); submitBtn.classList.remove('hidden'); } }); // If this option was previously selected, mark it if (answers[index] === optionIndex) { const radio = optionElement.querySelector('.option-radio'); radio.className = 'w-5 h-5 rounded-full border border-indigo-500 bg-indigo-500 mr-3 flex-shrink-0 option-radio'; // Make sure submit button is visible on last question if answered if (index === questions.length - 1) { nextBtn.classList.add('hidden'); submitBtn.classList.remove('hidden'); } } optionsContainer.appendChild(optionElement); }); questionElement.appendChild(optionsContainer); questionContainer.appendChild(questionElement); // Update navigation buttons prevBtn.classList.toggle('hidden', index === 0); } // Go to next question function nextQuestion() { if (answers[currentQuestionIndex] === undefined) { alert('Por favor, selecione uma resposta antes de continuar.'); return; } currentQuestionIndex++; showQuestion(currentQuestionIndex); updateProgress(); } // Go to previous question function prevQuestion() { currentQuestionIndex--; showQuestion(currentQuestionIndex); updateProgress(); } // Update progress bar function updateProgress() { const progress = ((currentQuestionIndex + 1) / questions.length) * 100; progressBar.style.width = `${progress}%`; progressPercentage.textContent = `${Math.round(progress)}%`; } // Submit assessment and show results function submitAssessment() { if (answers[currentQuestionIndex] === undefined) { alert('Por favor, selecione uma resposta antes de finalizar.'); return; } calculateScores(); showResults(); assessmentContainer.classList.add('hidden'); resultsContainer.classList.remove('hidden'); } // Calculate scores from answers function calculateScores() { // Reset scores scores = { cognitive: 0, emotional: 0, sensory: 0 }; // Count questions per category to calculate averages later const counts = { cognitive: 0, emotional: 0, sensory: 0 }; // Sum scores for each category questions.forEach((question, index) => { if (answers[index] !== undefined) { const selectedOption = question.options[answers[index]]; scores[question.category] += selectedOption.score; counts[question.category]++; } }); // Calculate average scores (percentage of max possible score) ['cognitive', 'emotional', 'sensory'].forEach(category => { if (counts[category] > 0) { const maxPossible = counts[category] * 5; scores[category] = Math.round((scores[category] / maxPossible) * 100); } }); } // Show results page function showResults() { // Update score displays document.getElementById('cognitive-score').textContent = scores.cognitive; document.getElementById('emotional-score').textContent = scores.emotional; document.getElementById('sensory-score').textContent = scores.sensory; // Update progress bars document.getElementById('cognitive-bar').style.width = `${scores.cognitive}%`; document.getElementById('emotional-bar').style.width = `${scores.emotional}%`; document.getElementById('sensory-bar').style.width = `${scores.sensory}%`; // Generate analysis text const analysis = generateAnalysis(); document.getElementById('detailed-analysis').innerHTML = analysis.text; // Add strengths const strengthsList = document.getElementById('strengths-list'); strengthsList.innerHTML = ''; analysis.strengths.forEach(strength => { const strengthItem = document.createElement('div'); strengthItem.className = 'flex items-start'; strengthItem.innerHTML = ` <div class="flex-shrink-0 mt-1 mr-3 text-green-500"> <i class="fas fa-check-circle"></i> </div> <div> <h5 class="font-medium text-gray-800">${strength.title}</h5> <p class="text-sm text-gray-600">${strength.description}</p> </div> `; strengthsList.appendChild(strengthItem); }); } // Generate analysis based on scores function generateAnalysis() { const cognitiveLevel = getLevel(scores.cognitive); const emotionalLevel = getLevel(scores.emotional); const sensoryLevel = getLevel(scores.sensory); // Calculate percentiles const cognitivePercentile = getPercentile('cognitive', scores.cognitive); const emotionalPercentile = getPercentile('emotional', scores.emotional); const sensoryPercentile = getPercentile('sensory', scores.sensory); // Determine overall assessment with comparison data let overallScore = Math.round((scores.cognitive + scores.emotional + scores.sensory) / 3); const overallPercentile = Math.round((cognitivePercentile + emotionalPercentile + sensoryPercentile) / 3); let overallAssessment = ''; if (overallPercentile <= 30) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) sugerem padrões predominantemente neurotípicos, com poucos indícios de neurodivergência. Você está entre os ${100-overallPercentile}% menos neurodivergentes da população.`; } else if (overallPercentile <= 60) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram algumas características neurodivergentes em intensidade moderada. Você está entre os ${60-overallPercentile}% da população com traços leves ou mistos.`; } else if (overallPercentile <= 85) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) indicam um perfil significativamente neurodivergente. Isso coloca você entre os ${100-overallPercentile}% mais neurodivergentes da população.`; } else { overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram um perfil altamente neurodivergente. Você está entre os ${100-overallPercentile}% mais neurodivergentes da população, com padrões intensos e marcantes.`; } // Create strengths list const strengths = []; if (scores.cognitive >= 70) { strengths.push({ title: 'Pensamento complexo', description: 'Você demonstra forte capacidade de perceber padrões, conexões e pensar de maneiras não convencionais.' }); } if (scores.emotional >= 70) { strengths.push({ title: 'Intensidade emocional', description: 'Sua profundidade emocional pode representar uma rica vida interior e alta empatia.' }); } if (scores.sensory >= 70) { strengths.push({ title: 'Percepção sensorial', description: 'Sua sensibilidade sensorial pode indicar uma percepção mais fina e detalhada do ambiente.' }); } return { text: ` <div class="mb-6 p-4 bg-blue-50 rounded-lg"> <h4 class="font-bold text-lg text-blue-800 mb-2">Resumo Geral</h4> <p class="mb-4">${overallAssessment}</p> <div class="flex flex-wrap gap-4"> <div class="bg-white p-3 rounded-lg shadow-sm w-full md:w-auto"> <div class="text-sm text-gray-600">Percentil Total</div> <div class="text-2xl font-bold text-blue-700">${overallPercentile}</div> <div class="text-xs text-gray-500">(maior = mais neurodivergente)</div> </div> </div> </div> <h4 class="font-bold text-lg text-gray-800 mb-3">Detalhes por Área</h4> <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-blue-800 mb-2">Cognitivo <span class="text-sm">(${scores.cognitive}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-blue-600 rounded-full" style="width: ${scores.cognitive}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${cognitiveLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${cognitivePercentile} - ${getPercentileInterpretation(cognitivePercentile)}</div> </div> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-purple-800 mb-2">Emocional <span class="text-sm">(${scores.emotional}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-purple-600 rounded-full" style="width: ${scores.emotional}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${emotionalLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${emotionalPercentile} - ${getPercentileInterpretation(emotionalPercentile)}</div> </div> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-green-800 mb-2">Sensorial <span class="text-sm">(${scores.sensory}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-green-600 rounded-full" style="width: ${scores.sensory}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${sensoryLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${sensoryPercentile} - ${getPercentileInterpretation(sensoryPercentile)}</div> </div> </div> `, strengths }; } // Get descriptive level based on score function getLevel(score) { if (score <= 25) return 'Muito Baixo'; if (score <= 40) return 'Baixo'; if (score <= 60) return 'Moderado'; if (score <= 75) return 'Alto'; return 'Muito Alto'; } // Get percentile based on comparative data function getPercentile(category, score) { const data = comparativeData[category]; for (let percentile = 95; percentile >= 10; percentile -= 5) { if (score >= data[percentile]) return percentile; } return 5; } // Get interpretation of percentile function getPercentileInterpretation(percentile) { if (percentile <= 15) return 'Baixa neurodivergência'; if (percentile <= 40) return 'Neurotípico com alguns traços'; if (percentile <= 60) return 'Perfil misto'; if (percentile <= 80) return 'Neurodivergente significativo'; if (percentile <= 90) return 'Altamente neurodivergente'; return 'Extremamente neurodivergente'; } // Restart assessment function restartAssessment() { currentQuestionIndex = 0; answers = []; resultsContainer.classList.add('hidden'); welcomeCard.classList.remove('hidden'); } </script> </body> </html> - Follow Up Deployment

Browse files
Files changed (2) hide show
  1. index.html +906 -437
  2. prompts.txt +4 -1
index.html CHANGED
@@ -3,499 +3,968 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>EVA CALCULATOR - Jogo de Matemática Divertido</title>
7
  <script src="https://cdn.tailwindcss.com"></script>
 
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <script>
10
- tailwind.config = {
11
- theme: {
12
- extend: {
13
- colors: {
14
- evaPink: '#FF9FF3',
15
- evaBlue: '#48DBFB',
16
- evaYellow: '#FFEC59',
17
- evaPurple: '#C56CF0',
18
- evaGreen: '#1DD1A1',
19
- }
20
- }
21
- }
22
- }
23
- </script>
24
  <style>
25
- @import url('https://fonts.googleapis.com/css2?family=Comic+Neue:wght@400;700&display=swap');
26
-
27
  body {
28
- font-family: 'Comic Neue', cursive;
29
- background-image: linear-gradient(to bottom right, #FF9FF3, #48DBFB);
30
- min-height: 100vh;
31
- overflow-x: hidden;
32
  }
33
-
34
- @media (max-width: 640px) {
35
- .text-4xl {
36
- font-size: 2.25rem;
37
- }
38
- .text-6xl {
39
- font-size: 3rem;
40
- }
41
- .p-6 {
42
- padding: 1rem;
43
- }
44
- .md\\:p-8 {
45
- padding: 1.5rem;
46
- }
47
- #question {
48
- font-size: 2.5rem;
49
- margin: 1.5rem 0;
50
- }
51
- #answerInput {
52
- width: 80%;
53
- font-size: 1.25rem;
54
- }
55
- #btnCheck, #btnSkip {
56
- padding: 0.75rem;
57
- font-size: 0.875rem;
58
- }
59
- .difficulty-btn {
60
- padding: 0.5rem 1rem;
61
- font-size: 0.75rem;
62
- }
63
  }
64
-
65
- .bounce {
66
- animation: bounce 0.5s infinite alternate;
67
  }
68
-
69
- @keyframes bounce {
70
- from { transform: translateY(0); }
71
- to { transform: translateY(-10px); }
 
72
  }
73
-
74
- .pulse {
75
- animation: pulse 2s infinite;
76
  }
77
-
78
- @keyframes pulse {
79
- 0% { transform: scale(1); }
80
- 50% { transform: scale(1.05); }
81
- 100% { transform: scale(1); }
82
  }
83
-
84
- .confetti {
85
- position: absolute;
86
- width: 10px;
87
- height: 10px;
88
- background-color: #f00;
89
- opacity: 0;
90
  }
91
  </style>
92
  </head>
93
- <body class="flex flex-col items-center justify-center p-4">
94
- <div class="w-full max-w-3xl bg-white/80 backdrop-blur-md rounded-3xl shadow-xl overflow-hidden mx-2">
95
- <!-- Header -->
96
- <div class="bg-gradient-to-r from-evaPink to-evaPurple p-6 text-center">
97
- <h1 class="text-4xl md:text-5xl font-bold text-white drop-shadow-lg flex items-center justify-center gap-3">
98
- <i class="fas fa-robot bounce text-evaYellow"></i>
99
- EVA CALCULATOR
100
- <i class="fas fa-calculator bounce text-evaYellow"></i>
101
- </h1>
102
- <p class="text-white/90 mt-2">Aprenda matemática brincando!</p>
103
  </div>
104
-
105
- <!-- Game Area -->
106
- <div class="p-6 md:p-8">
107
- <!-- Difficulty Selector -->
108
- <div class="mb-8 text-center">
109
- <h3 class="text-lg font-semibold text-gray-700 mb-3">Nível de Dificuldade:</h3>
110
- <div class="flex flex-wrap gap-3 justify-center">
111
- <button data-level="easy" class="difficulty-btn bg-green-500 hover:bg-green-600 text-white px-4 py-2 rounded-full text-sm font-medium">
112
- <i class="fas fa-baby mr-1"></i> Fácil
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  </button>
114
- <button data-level="medium" class="difficulty-btn bg-yellow-500 hover:bg-yellow-600 text-white px-4 py-2 rounded-full text-sm font-medium">
115
- <i class="fas fa-child mr-1"></i> Médio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  </button>
117
- <button data-level="hard" class="difficulty-btn bg-red-500 hover:bg-red-600 text-white px-4 py-2 rounded-full text-sm font-medium">
118
- <i class="fas fa-user-graduate mr-1"></i> Difícil
119
  </button>
120
  </div>
121
  </div>
122
-
123
- <!-- Game Display -->
124
- <div id="gameDisplay" class="hidden bg-white p-6 rounded-xl shadow-md mb-8 text-center border-2 border-evaYellow/50">
125
- <div class="flex justify-between items-center mb-6">
126
- <div class="text-evaPurple font-bold">
127
- <i class="fas fa-star mr-1"></i>
128
- Pontos: <span id="score">0</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  </div>
130
- <div class="text-evaBlue font-bold">
131
- <i class="fas fa-clock mr-1"></i>
132
- Tempo: <span id="time">60</span>s
 
 
 
 
 
 
 
133
  </div>
 
134
  </div>
135
-
136
- <div id="question" class="text-3xl md:text-6xl font-bold my-4 md:my-8 text-evaPurple pulse px-2">
137
- 5 + 3 = ?
 
 
 
 
 
 
 
138
  </div>
139
-
140
- <div class="flex flex-wrap gap-3 justify-center mb-6">
141
- <button class="answer-btn bg-evaGreen hover:bg-evaGreen/80 text-white text-2xl font-bold w-16 h-16 rounded-full transition-all transform hover:scale-110">
142
- 7
143
- </button>
 
 
 
 
144
  </div>
145
-
146
- <div class="mb-4">
147
- <input id="answerInput" type="number" class="border-2 border-evaBlue rounded-full px-4 py-2 text-center text-xl focus:outline-none focus:ring-2 focus:ring-evaBlue w-full max-w-xs" placeholder="Digite a resposta">
 
148
  </div>
149
-
150
- <div class="flex justify-center gap-4">
151
- <button id="btnCheck" class="bg-evaBlue hover:bg-evaBlue/90 text-white font-bold py-3 px-6 rounded-full transition-all transform hover:scale-105">
152
- <i class="fas fa-check mr-2"></i> Verificar
153
- </button>
154
- <button id="btnSkip" class="bg-gray-500 hover:bg-gray-600 text-white font-bold py-3 px-6 rounded-full transition-all transform hover:scale-105">
155
- <i class="fas fa-forward mr-2"></i> Pular
156
- </button>
157
  </div>
158
- </div>
159
-
160
- <!-- Start Screen -->
161
- <div id="startScreen" class="text-center py-12">
162
- <div class="max-w-md mx-auto">
163
- <div class="text-9xl mb-6 text-evaYellow">
164
- <i class="fas fa-calculator"></i>
 
 
 
 
 
165
  </div>
166
- <h2 class="text-3xl font-bold text-evaPurple mb-4">Vamos aprender matemática!</h2>
167
- <p class="text-gray-600 mb-8">Escolha uma operação e um nível de dificuldade para começar a jogar.</p>
168
- <button id="btnStart" class="bg-evaPink hover:bg-evaPink/90 text-white font-bold py-4 px-8 rounded-full text-xl transition-all transform hover:scale-105">
169
- <i class="fas fa-play mr-2"></i> Começar o Jogo
170
- </button>
171
  </div>
172
  </div>
173
-
174
- <!-- Results Screen -->
175
- <div id="resultsScreen" class="hidden text-center py-12">
176
- <div class="max-w-md mx-auto">
177
- <div class="text-9xl mb-6 text-evaGreen">
178
- <i class="fas fa-trophy"></i>
179
- </div>
180
- <h2 class="text-3xl font-bold text-evaPurple mb-4">Parabéns!</h2>
181
- <div class="text-5xl font-bold text-evaPink mb-6" id="finalScore">20 pontos</div>
182
- <p class="text-gray-600 mb-8">Você respondeu <span id="correctAnswers" class="font-bold">5</span> de <span id="totalQuestions" class="font-bold">10</span> perguntas corretamente!</p>
183
- <button id="btnPlayAgain" class="bg-evaBlue hover:bg-evaBlue/90 text-white font-bold py-4 px-8 rounded-full text-xl transition-all transform hover:scale-105">
184
- <i class="fas fa-redo mr-2"></i> Jogar Novamente
185
- </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  </div>
187
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  </div>
189
-
190
- <!-- Footer -->
191
- <div class="bg-gradient-to-r from-evaPurple to-evaPink p-4 text-center text-white/90 text-sm">
192
- Criado com ❤️ para crianças aprenderem matemática divertida
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  </div>
194
  </div>
195
-
196
- <!-- Audio elements -->
197
- <audio id="correctSound" src="https://assets.mixkit.co/sfx/preview/mixkit-correct-answer-tone-2870.mp3" preload="auto"></audio>
198
- <audio id="wrongSound" src="https://assets.mixkit.co/sfx/preview/mixkit-wrong-answer-fail-notification-946.mp3" preload="auto"></audio>
199
- <audio id="gameSound" src="https://assets.mixkit.co/sfx/preview/mixkit-game-show-suspense-waiting-668.mp3" loop preload="auto"></audio>
200
- <audio id="winSound" src="https://assets.mixkit.co/sfx/preview/mixkit-winning-chimes-2015.mp3" preload="auto"></audio>
201
-
202
  <script>
203
- // Game state
204
- let gameState = {
205
- operation: null,
206
- operationMode: null, // 'single' or 'mixed'
207
- difficulty: 'easy',
208
- score: 0,
209
- timeLeft: 30,
210
- timer: null,
211
- correctAnswers: 0,
212
- totalQuestions: 0,
213
- currentQuestion: null
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  };
215
-
 
 
 
 
 
216
  // DOM elements
217
- const elements = {
218
- startScreen: document.getElementById('startScreen'),
219
- gameDisplay: document.getElementById('gameDisplay'),
220
- resultsScreen: document.getElementById('resultsScreen'),
221
- question: document.getElementById('question'),
222
- score: document.getElementById('score'),
223
- time: document.getElementById('time'),
224
- answerInput: document.getElementById('answerInput'),
225
- finalScore: document.getElementById('finalScore'),
226
- correctAnswers: document.getElementById('correctAnswers'),
227
- totalQuestions: document.getElementById('totalQuestions'),
228
-
229
- // Buttons
230
- btnStart: document.getElementById('btnStart'),
231
- btnCheck: document.getElementById('btnCheck'),
232
- btnSkip: document.getElementById('btnSkip'),
233
- btnPlayAgain: document.getElementById('btnPlayAgain'),
234
-
235
- // Sounds
236
- correctSound: document.getElementById('correctSound'),
237
- wrongSound: document.getElementById('wrongSound'),
238
- gameSound: document.getElementById('gameSound'),
239
- winSound: document.getElementById('winSound')
240
- };
241
-
242
- // Helper functions
243
- function getRandomNumber(min, max) {
244
- return Math.floor(Math.random() * (max - min + 1)) + min;
245
  }
246
-
247
- function generateQuestion() {
248
- let num1, num2, answer, questionText;
249
-
250
- let operationToUse = gameState.operation;
251
-
252
- if (gameState.operationMode === 'mixed') {
253
- // Randomly select an operation when in mixed mode
254
- const operations = ['add', 'sub', 'mul', 'div'];
255
- operationToUse = operations[Math.floor(Math.random() * operations.length)];
256
- }
257
-
258
- switch(operationToUse) {
259
- case 'add':
260
- num1 = getRandomNumber(1, gameState.difficulty === 'easy' ? 10 : gameState.difficulty === 'medium' ? 20 : 50);
261
- num2 = getRandomNumber(1, gameState.difficulty === 'easy' ? 10 : gameState.difficulty === 'medium' ? 20 : 50);
262
- answer = num1 + num2;
263
- questionText = `${num1} + ${num2} = ?`;
264
- break;
265
- case 'sub':
266
- num1 = getRandomNumber(1, gameState.difficulty === 'easy' ? 10 : gameState.difficulty === 'medium' ? 20 : 50);
267
- num2 = getRandomNumber(1, num1);
268
- answer = num1 - num2;
269
- questionText = `${num1} - ${num2} = ?`;
270
- break;
271
- case 'mul':
272
- num1 = getRandomNumber(1, gameState.difficulty === 'easy' ? 5 : gameState.difficulty === 'medium' ? 10 : 12);
273
- num2 = getRandomNumber(1, gameState.difficulty === 'easy' ? 5 : gameState.difficulty === 'medium' ? 10 : 12);
274
- answer = num1 * num2;
275
- questionText = `${num1} × ${num2} = ?`;
276
- break;
277
- case 'div':
278
- num2 = getRandomNumber(1, gameState.difficulty === 'easy' ? 5 : gameState.difficulty === 'medium' ? 10 : 12);
279
- answer = getRandomNumber(1, gameState.difficulty === 'easy' ? 5 : gameState.difficulty === 'medium' ? 10 : 12);
280
- num1 = num2 * answer;
281
- questionText = `${num1} ÷ ${num2} = ?`;
282
- break;
283
- }
284
-
285
- gameState.currentQuestion = { answer, questionText };
286
- elements.question.textContent = questionText;
287
- elements.answerInput.value = '';
288
- elements.answerInput.focus();
289
-
290
- // For multiple choice (uncomment if you want to add multiple choice answers)
291
- // generateAnswerButtons(answer);
292
  }
293
-
294
- // Uncomment this function if you want to add multiple choice answers
295
- /*
296
- function generateAnswerButtons(correctAnswer) {
297
- const buttonsContainer = document.querySelector('#gameDisplay .justify-center');
298
- buttonsContainer.innerHTML = '';
299
-
300
- const answers = [correctAnswer];
301
-
302
- // Generate 3 wrong answers
303
- while(answers.length < 4) {
304
- let wrongAnswer;
305
- if(gameState.operation === 'add' || gameState.operation === 'mul') {
306
- wrongAnswer = correctAnswer + getRandomNumber(-3, 3);
307
- } else {
308
- wrongAnswer = correctAnswer + getRandomNumber(-2, 2);
309
- }
310
-
311
- // Make sure wrong answer isn't correct and is positive
312
- if(wrongAnswer !== correctAnswer && wrongAnswer > 0 && !answers.includes(wrongAnswer)) {
313
- answers.push(wrongAnswer);
314
- }
 
 
 
 
 
 
 
 
 
 
315
  }
316
-
317
- // Shuffle answers
318
- answers.sort(() => Math.random() - 0.5);
319
-
320
- // Create buttons
321
- answers.forEach(answer => {
322
- const button = document.createElement('button');
323
- button.className = 'answer-btn bg-evaGreen hover:bg-evaGreen/80 text-white text-2xl font-bold w-16 h-16 rounded-full transition-all transform hover:scale-110';
324
- button.textContent = answer;
325
- button.addEventListener('click', function() {
326
- checkAnswer(parseInt(answer));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  });
328
- buttonsContainer.appendChild(button);
 
329
  });
 
 
 
 
 
 
330
  }
331
- */
332
-
333
- function checkAnswer(answer = null) {
334
- const userAnswer = answer !== null ? answer : parseInt(elements.answerInput.value);
335
-
336
- if(isNaN(userAnswer)) {
337
- alert("Por favor, digite um número válido!");
338
  return;
339
  }
340
-
341
- gameState.totalQuestions++;
342
-
343
- if(userAnswer === gameState.currentQuestion.answer) {
344
- // Correct answer
345
- const pointsToAdd = gameState.difficulty === 'easy' ? 1 : gameState.difficulty === 'medium' ? 2 : 3;
346
- gameState.score += pointsToAdd;
347
- gameState.correctAnswers++;
348
- elements.score.textContent = gameState.score;
349
- elements.correctSound.play();
350
- showConfetti();
351
- shakeElement(elements.question, 'correct');
352
- } else {
353
- // Wrong answer
354
- elements.wrongSound.play();
355
- shakeElement(elements.question, 'wrong');
 
 
 
 
 
 
 
 
 
 
 
356
  }
357
-
358
- generateQuestion();
 
 
 
 
359
  }
360
-
361
- function startTimer() {
362
- clearInterval(gameState.timer);
363
- gameState.timeLeft = 60;
364
- elements.time.textContent = gameState.timeLeft;
365
-
366
- gameState.timer = setInterval(() => {
367
- gameState.timeLeft--;
368
- elements.time.textContent = gameState.timeLeft;
369
-
370
- if(gameState.timeLeft <= 0) {
371
- endGame();
 
 
 
372
  }
373
- }, 1000);
374
- }
375
-
376
- function startGame() {
377
- // Always use mixed operations
378
- gameState.operationMode = 'mixed';
379
- gameState.operation = null;
380
-
381
- // Reset game state
382
- gameState.score = 0;
383
- gameState.correctAnswers = 0;
384
- gameState.totalQuestions = 0;
385
-
386
- // Update UI
387
- elements.score.textContent = gameState.score;
388
- elements.startScreen.classList.add('hidden');
389
- elements.gameDisplay.classList.remove('hidden');
390
- elements.resultsScreen.classList.add('hidden');
391
-
392
- // Play game sound
393
- elements.gameSound.play();
394
-
395
- // Start timer
396
- startTimer();
397
-
398
- // Generate first question
399
- generateQuestion();
400
  }
401
-
402
- function endGame() {
403
- clearInterval(gameState.timer);
404
-
405
- // Update results screen
406
- elements.finalScore.textContent = `${gameState.score} pontos`;
407
- elements.correctAnswers.textContent = gameState.correctAnswers;
408
- elements.totalQuestions.textContent = gameState.totalQuestions;
409
-
410
- // Show results
411
- elements.gameDisplay.classList.add('hidden');
412
- elements.resultsScreen.classList.remove('hidden');
413
-
414
- // Play sounds
415
- elements.gameSound.pause();
416
- elements.gameSound.currentTime = 0;
417
- elements.winSound.play();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
418
  }
419
-
420
- function showConfetti() {
421
- for(let i = 0; i < 50; i++) {
422
- const confetti = document.createElement('div');
423
- confetti.className = 'confetti';
424
- confetti.style.left = Math.random() * 100 + 'vw';
425
- confetti.style.backgroundColor = `hsl(${Math.random() * 360}, 100%, 50%)`;
426
- confetti.style.transform = `rotate(${Math.random() * 360}deg)`;
427
-
428
- document.body.appendChild(confetti);
429
-
430
- // Animation
431
- setTimeout(() => {
432
- confetti.style.opacity = 1;
433
- confetti.style.top = Math.random() * 100 + 'vh';
434
- confetti.style.left = (parseFloat(confetti.style.left) + Math.random() * 20 - 10) + 'vw';
435
- confetti.style.width = (Math.random() * 10 + 5) + 'px';
436
- confetti.style.height = (Math.random() * 10 + 5) + 'px';
437
- }, 1);
438
-
439
- // Remove after animation
440
- setTimeout(() => {
441
- confetti.remove();
442
- }, 1000);
443
- }
444
  }
445
-
446
- function shakeElement(element, type) {
447
- element.classList.add('animate-[shake_0.5s_ease-in-out]');
448
- if(type === 'correct') {
449
- element.classList.add('text-evaGreen');
450
- } else {
451
- element.classList.add('text-red-500');
452
- }
453
-
454
- setTimeout(() => {
455
- element.classList.remove('animate-[shake_0.5s_ease-in-out]');
456
- if(type === 'correct') {
457
- element.classList.remove('text-evaGreen');
458
  } else {
459
- element.classList.remove('text-red-500');
 
460
  }
461
- element.classList.add('text-evaPurple');
462
- }, 500);
463
  }
464
-
465
- // Event Listeners
466
- elements.btnStart.addEventListener('click', startGame);
467
- elements.btnPlayAgain.addEventListener('click', startGame);
468
-
469
- elements.btnCheck.addEventListener('click', () => checkAnswer());
470
- elements.answerInput.addEventListener('keypress', (e) => {
471
- if(e.key === 'Enter') {
472
- checkAnswer();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
  }
474
- });
475
-
476
- elements.btnSkip.addEventListener('click', generateQuestion);
477
-
478
- // Difficulty buttons
479
- document.querySelectorAll('.difficulty-btn').forEach(btn => {
480
- btn.addEventListener('click', function() {
481
- gameState.difficulty = this.dataset.level;
482
- document.querySelectorAll('.difficulty-btn').forEach(b => {
483
- b.classList.remove('ring-4');
484
  });
485
- this.classList.add('ring-4');
486
-
487
- if(this.dataset.level === 'easy') {
488
- this.classList.add('ring-green-500/50');
489
- } else if(this.dataset.level === 'medium') {
490
- this.classList.add('ring-yellow-500/50');
491
- } else {
492
- this.classList.add('ring-red-500/50');
493
- }
494
- });
495
- });
496
-
497
- // Set easy as default difficulty
498
- document.querySelector('[data-level="easy"]').classList.add('ring-4', 'ring-green-500/50');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  </script>
500
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=danielclopes/eva-calculator" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
501
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>NeuroAvalia - Identificação de Neurodivergência</title>
7
  <script src="https://cdn.tailwindcss.com"></script>
8
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
9
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  <style>
 
 
11
  body {
12
+ font-family: 'Poppins', sans-serif;
13
+ background-color: #f8f9fa;
 
 
14
  }
15
+ .progress-bar {
16
+ transition: width 0.5s ease-in-out;
17
+ }
18
+ .option:hover {
19
+ transform: translateY(-2px);
20
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  }
22
+ .result-chart {
23
+ height: 300px;
 
24
  }
25
+ .gradient-text {
26
+ background: linear-gradient(90deg, #4f46e5, #8b5cf6);
27
+ -webkit-background-clip: text;
28
+ background-clip: text;
29
+ color: transparent;
30
  }
31
+ .neuro-pattern {
32
+ background-image: radial-gradient(circle, rgba(99, 102, 241, 0.1) 1px, transparent 1px);
33
+ background-size: 20px 20px;
34
  }
35
+ .category-card {
36
+ transition: all 0.3s ease;
 
 
 
37
  }
38
+ .category-card:hover {
39
+ transform: translateY(-5px);
40
+ box-shadow: 0 10px 25px rgba(79, 70, 229, 0.2);
 
 
 
 
41
  }
42
  </style>
43
  </head>
44
+ <body class="min-h-screen bg-gradient-to-b from-indigo-50 to-blue-50 neuro-pattern">
45
+ <div class="container mx-auto px-4 py-8 max-w-6xl">
46
+ <!-- Floating Action Button -->
47
+ <div class="fixed bottom-6 right-6 z-50">
48
+ <button id="help-btn" class="w-14 h-14 rounded-full bg-indigo-600 shadow-lg text-white flex items-center justify-center hover:bg-indigo-700 transition-all duration-300 transform hover:scale-110 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
49
+ <i class="fas fa-question text-xl"></i>
50
+ </button>
 
 
 
51
  </div>
52
+
53
+ <!-- Header Section -->
54
+ <header class="text-center mb-10">
55
+ <div class="inline-block p-3 bg-indigo-100 rounded-lg mb-6">
56
+ <i class="fas fa-brain text-3xl text-indigo-600"></i>
57
+ </div>
58
+ <h1 class="text-4xl md:text-5xl font-bold gradient-text mb-4">NeuroAvalia</h1>
59
+ <p class="text-lg md:text-xl text-gray-700 max-w-3xl mx-auto">
60
+ Ferramenta científica para identificação de neurodivergência e altas habilidades
61
+ </p>
62
+ <div class="w-24 h-1.5 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto mt-4 rounded-full"></div>
63
+ </header>
64
+
65
+ <!-- Welcome Card -->
66
+ <div id="welcome-card" class="bg-white rounded-2xl shadow-xl p-6 md:p-8 mb-8 transition-all duration-500 transform hover:shadow-2xl">
67
+ <div class="flex flex-col md:flex-row items-center gap-6 md:gap-8">
68
+ <div class="flex-shrink-0 mb-4 md:mb-0">
69
+ <div class="w-24 h-24 md:w-32 md:h-32 rounded-full bg-gradient-to-br from-indigo-100 to-purple-100 flex items-center justify-center shadow-inner">
70
+ <i class="fas fa-brain text-4xl md:text-5xl text-indigo-600"></i>
71
+ </div>
72
+ </div>
73
+ <div class="flex-1">
74
+ <h2 class="text-2xl font-semibold text-gray-800 mb-3">Sobre esta avaliação</h2>
75
+ <p class="text-gray-600 mb *-4">
76
+ O <span class="font-medium text-indigo-600">NeuroAvalia</span> é um instrumento desenvolvido com base nas principais pesquisas científicas sobre neurodivergência, incluindo características de autismo, TDAH, altas habilidades e outras formas de neurodiversidade.
77
+ </p>
78
+ <div class="bg-indigo-50 border border-indigo-100 rounded-lg p-4 mb-4">
79
+ <div class="flex items-start">
80
+ <div class="flex-shrink-0 mt-0.5 mr-3 text-indigo-500">
81
+ <i class="fas fa-flask"></i>
82
+ </div>
83
+ <div>
84
+ <h4 class="font-medium text-indigo-800 mb-1">Base Científica</h4>
85
+ <p class="text-sm text-indigo-700">Baseado em critérios do DSM-5, CID-11 e pesquisas atuais sobre neurodiversidade</p>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ <button onclick="startAssessment()" class="w-full md:w-auto bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 text-white font-medium py-3 px-8 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50 shadow-md hover:shadow-lg">
90
+ <i class="fas fa-play mr-2"></i> Iniciar Avaliação
91
  </button>
92
+ </div>
93
+ </div>
94
+ </div>
95
+
96
+ <!-- Assessment Container -->
97
+ <div id="assessment-container" class="hidden bg-white rounded-2xl shadow-xl p-6 md:p-8 mb-8">
98
+ <!-- Progress Bar -->
99
+ <div class="mb-8">
100
+ <div class="flex justify-between mb-2">
101
+ <span class="text-sm font-medium text-indigo-700">Progresso</span>
102
+ <span id="progress-percentage" class="text-sm font-medium text-indigo-700">0%</span>
103
+ </div>
104
+ <div class="w-full bg-gray-200 rounded-full h-2.5 overflow-hidden">
105
+ <div id="progress-bar" class="progress-bar bg-gradient-to-r from-indigo-500 to-purple-500 h-2.5 rounded-full" style="width: 0%"></div>
106
+ </div>
107
+ </div>
108
+
109
+ <!-- Question Container -->
110
+ <div id="question-container">
111
+ <!-- Questions will be inserted here dynamically -->
112
+ </div>
113
+
114
+ <!-- Navigation Buttons -->
115
+ <div class="flex justify-between mt-10">
116
+ <button id="prev-btn" onclick="prevQuestion()" class="hidden bg-gray-200 hover:bg-gray-300 text-gray-800 font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-opacity-50">
117
+ <i class="fas fa-arrow-left mr-2"></i> Anterior
118
+ </button>
119
+ <div class="ml-auto flex gap-3">
120
+ <button id="next-btn" onclick="nextQuestion()" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50 shadow-sm">
121
+ Próxima <i class="fas fa-arrow-right ml-2"></i>
122
  </button>
123
+ <button id="submit-btn" onclick="submitAssessment()" class="hidden bg-gradient-to-r from-green-600 to-teal-500 hover:from-green-700 hover:to-teal-600 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-opacity-50 shadow-sm">
124
+ Finalizar <i class="fas fa-check ml-2"></i>
125
  </button>
126
  </div>
127
  </div>
128
+ </div>
129
+
130
+ <!-- Results Container -->
131
+ <div id="results-container" class="hidden bg-white rounded-2xl shadow-xl p-6 md:p-8">
132
+ <div class="text-center mb-10">
133
+ <div class="inline-block p-5 bg-gradient-to-br from-indigo-100 to-purple-100 rounded-full mb-6 shadow-md">
134
+ <i class="fas fa-chart-pie text-4xl bg-gradient-to-r from-indigo-600 to-purple-600 bg-clip-text text-transparent"></i>
135
+ </div>
136
+ <h2 class="text-3xl font-bold gradient-text mb-3">Seu Resultado</h2>
137
+ <p class="text-gray-600 max-w-2xl mx-auto">
138
+ Baseado nas suas respostas, este é seu perfil de neurodivergência com comparações estatísticas
139
+ </p>
140
+ <div class="w-16 h-1 bg-gradient-to-r from-indigo-500 to-purple-500 mx-auto mt-4 rounded-full"></div>
141
+ </div>
142
+
143
+ <!-- Score Summary -->
144
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10">
145
+ <div class="category-card bg-blue-50 rounded-xl p-6 text-center border border-blue-100">
146
+ <div class="inline-block p-3 bg-blue-100 rounded-full mb-3">
147
+ <i class="fas fa-lightbulb text-xl text-blue-600"></i>
148
+ </div>
149
+ <div class="text-4xl font-bold text-blue-700 mb-2" id="cognitive-score">0</div>
150
+ <div class="text-lg font-medium text-blue-800 mb-3">Cognitivo</div>
151
+ <div class="h-2 bg-blue-200 rounded-full mb-4 w-3/4 mx-auto">
152
+ <div class="h-2 bg-blue-600 rounded-full" id="cognitive-bar" style="width: 0%"></div>
153
  </div>
154
+ <p class="text-sm text-blue-900 opacity-80">Processamento de informações e padrões de pensamento</p>
155
+ </div>
156
+ <div class="category-card bg-purple-50 rounded-xl p-6 text-center border border-purple-100">
157
+ <div class="inline-block p-3 bg-purple-100 rounded-full mb-3">
158
+ <i class="fas fa-heart text-xl text-purple-600"></i>
159
+ </div>
160
+ <div class="text-4xl font-bold text-purple-700 mb-2" id="emotional-score">0</div>
161
+ <div class="text-lg font-medium text-purple-800 mb-3">Emocional</div>
162
+ <div class="h-2 bg-purple-200 rounded-full mb-4 w-3/4 mx-auto">
163
+ <div class="h-2 bg-purple-600 rounded-full" id="emotional-bar" style="width: 0%"></div>
164
  </div>
165
+ <p class="text-sm text-purple-900 opacity-80">Regulação emocional e intensidade de sentimentos</p>
166
  </div>
167
+ <div class="category-card bg-green-50 rounded-xl p-6 text-center border border-green-100">
168
+ <div class="inline-block p-3 bg-green-100 rounded-full mb-3">
169
+ <i class="fas fa-hand-sparkles text-xl text-green-600"></i>
170
+ </div>
171
+ <div class="text-4xl font-bold text-green-700 mb-2" id="sensory-score">0</div>
172
+ <div class="text-lg font-medium text-green-800 mb-3">Sensorial</div>
173
+ <div class="h-2 bg-green-200 rounded-full mb-4 w-3/4 mx-auto">
174
+ <div class="h-2 bg-green-600 rounded-full" id="sensory-bar" style="width: 0%"></div>
175
+ </div>
176
+ <p class="text-sm text-green-900 opacity-80">Sensibilidade a estímulos do ambiente</p>
177
  </div>
178
+ </div>
179
+
180
+ <!-- Detailed Analysis -->
181
+ <div class="bg-gray-50 rounded-2xl p-6 mb-10 border border-gray-200">
182
+ <div class="flex items-center mb-5">
183
+ <div class="w-6 h-6 rounded-full bg-indigo-600 flex items-center justify-center mr-3">
184
+ <i class="fas fa-chart-line text-white text-xs"></i>
185
+ </div>
186
+ <h3 class="text-xl font-semibold text-gray-800">Análise Detalhada</h3>
187
  </div>
188
+ <div class="space-y-4">
189
+ <p class="text-gray-700" id="detailed-analysis">
190
+ <!-- Analysis will be inserted here -->
191
+ </p>
192
  </div>
193
+
194
+ <div class="mt-8">
195
+ <h4 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
196
+ <i class="fas fa-star text-yellow-500 mr-2"></i> Áreas com maior pontuação
197
+ </h4>
198
+ <div id="strengths-list" class="grid grid-cols-1 md:grid-cols-2 gap-4">
199
+ <!-- Strengths will be inserted here -->
200
+ </div>
201
  </div>
202
+
203
+ <div class="mt-8 bg-indigo-50 border-l-4 border-indigo-500 p-4 rounded-lg">
204
+ <div class="flex">
205
+ <div class="flex-shrink-0 text-indigo-500 mt-0.5">
206
+ <i class="fas fa-info-circle"></i>
207
+ </div>
208
+ <div class="ml-3">
209
+ <h4 class="text-sm font-medium text-indigo-800">Importante</h4>
210
+ <p class="text-sm text-indigo-700 mt-1">
211
+ Esta avaliação não substitui um diagnóstico profissional. Se os resultados indicarem alta probabilidade de neurodivergência, recomendamos consultar um especialista para avaliação completa.
212
+ </p>
213
+ </div>
214
  </div>
 
 
 
 
 
215
  </div>
216
  </div>
217
+
218
+ <!-- Resources Section -->
219
+ <div class="mb-8">
220
+ <h3 class="text-xl font-semibold text-gray-800 mb-6 flex items-center">
221
+ <i class="fas fa-book-open text-indigo-600 mr-3"></i> Recursos e Próximos Passos
222
+ </h3>
223
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
224
+ <a href="#" class="flex items-start p-4 bg-white border border-gray-200 rounded-xl hover:shadow-md transition hover:border-indigo-300 group">
225
+ <div class="flex-shrink-0 p-3 bg-indigo-100 rounded-lg text-indigo-600 mr-4 group-hover:bg-indigo-200 transition">
226
+ <i class="fas fa-book"></i>
227
+ </div>
228
+ <div>
229
+ <h4 class="font-medium text-gray-800 mb-1 group-hover:text-indigo-600 transition">Leituras recomendadas</h4>
230
+ <p class="text-sm text-gray-600">Materiais científicos sobre neurodivergência e altas habilidades</p>
231
+ </div>
232
+ </a>
233
+ <a href="#" class="flex items-start p-4 bg-white border border-gray-200 rounded-xl hover:shadow-md transition hover:border-indigo-300 group">
234
+ <div class="flex-shrink-0 p-3 bg-blue-100 rounded-lg text-blue-600 mr-4 group-hover:bg-blue-200 transition">
235
+ <i class="fas fa-user-md"></i>
236
+ </div>
237
+ <div>
238
+ <h4 class="font-medium text-gray-800 mb-1 group-hover:text-indigo-600 transition">Profissionais especializados</h4>
239
+ <p class="text-sm text-gray-600">Encontre especialistas em sua região para avaliação detalhada</p>
240
+ </div>
241
+ </a>
242
+ <a href="#" class="flex items-start p-4 bg-white border border-gray-200 rounded-xl hover:shadow-md transition hover:border-indigo-300 group">
243
+ <div class="flex-shrink-0 p-3 bg-purple-100 rounded-lg text-purple-600 mr-4 group-hover:bg-purple-200 transition">
244
+ <i class="fas fa-users"></i>
245
+ </div>
246
+ <div>
247
+ <h4 class="font-medium text-gray-800 mb-1 group-hover:text-indigo-600 transition">Comunidades de apoio</h4>
248
+ <p class="text-sm text-gray-600">Conecte-se com outras pessoas neurodivergentes</p>
249
+ </div>
250
+ </a>
251
+ <a href="#" class="flex items-start p-4 bg-white border border-gray-200 rounded-xl hover:shadow-md transition hover:border-indigo-300 group">
252
+ <div class="flex-shrink-0 p-3 bg-green-100 rounded-lg text-green-600 mr-4 group-hover:bg-green-200 transition">
253
+ <i class="fas fa-tools"></i>
254
+ </div>
255
+ <div>
256
+ <h4 class="font-medium text-gray-800 mb-1 group-hover:text-indigo-600 transition">Estratégias adaptativas</h4>
257
+ <p class="text-sm text-gray-600">Técnicas para lidar com sensibilidades neurodivergentes</p>
258
+ </div>
259
+ </a>
260
  </div>
261
  </div>
262
+
263
+ <div class="text-center">
264
+ <button onclick="restartAssessment()" class="bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 text-white font-medium py-2.5 px-8 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50 shadow-md hover:shadow-lg inline-flex items-center">
265
+ <i class="fas fa-redo mr-2"></i> Refazer Teste
266
+ </button>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ <footer class="bg-white py-8 mt-12 border-t border-gray-200">
272
+ <div class="container mx-auto px-4">
273
+ <div class="text-center">
274
+ <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDBDOC45NTQgMCAwIDguOTU0IDAgMjBDMCAzMS4wNDYgOC45NTQgNDAgMjAgNDBDMzEuMDQ2IDQwIDQwIDMxLjA0NiA0MCAyMEM0MCA4Ljk1NCAzMS4wNDYgMCAyMCAwWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8cGF0aCBkPSJNMTYuMzgxIDE0LjI4NEMxNS4yIDExLjM2NiAxMy4wODIgMTAgMTAgMTBDNS41ODE3IDEwIDIgMTMuNTgyIDIgMThDMiAyMi40MTggNS41ODE3IDI2IDEwIDI2QzEzLjA4MiAyNiAxNS4yIDI0LjYzNCAxNi4zODEgMjEuNzE2TDMwIDE4TDE2LjM4MSAxNC4yODRaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iMjAiIHkxPSIwIiB4Mj0iMjAiIHkyPSI0MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNEY0NkU1Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzhCNUNGNiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPg==" alt="NeuroAvalia Logo" class="h-10 w-10 mx-auto mb-4">
275
+ <p class="text-gray-600 text-sm">© 2023 NeuroAvalia. Baseado em pesquisas científicas sobre neurodivergência e altas habilidades.</p>
276
+ <p class="text-gray-500 text-xs mt-2">Este instrumento não substitui avaliação profissional.</p>
277
+ </div>
278
  </div>
279
+ </footer>
280
+
281
+ <!-- Help Modal -->
282
+ <div id="help-modal" class="hidden fixed inset-0 bg-gray-600 bg-opacity-50 flex items-center justify-center z-50 px-4">
283
+ <div class="bg-white rounded-xl shadow-2xl max-w-md w-full p-6">
284
+ <div class="flex justify-between items-center mb-4">
285
+ <h3 class="text-xl font-bold text-gray-800">
286
+ <i class="fas fa-info-circle text-indigo-600 mr-2"></i> Ajuda
287
+ </h3>
288
+ <button onclick="toggleHelpModal()" class="text-gray-400 hover:text-gray-600 focus:outline-none">
289
+ <i class="fas fa-times"></i>
290
+ </button>
291
+ </div>
292
+ <div class="space-y-4 text-gray-600">
293
+ <p>Esta avaliação contém 20 perguntas cuidadosamente selecionadas para identificar traços de neurodivergência em três áreas principais: cognitiva, emocional e sensorial.</p>
294
+ <div class="bg-indigo-50 p-4 rounded-lg">
295
+ <h4 class="font-medium text-indigo-800 mb-2">Como responder:</h4>
296
+ <ul class="list-disc pl-5 space-y-1">
297
+ <li>Selecione a opção que mais se aproxima da sua experiência</li>
298
+ <li>Não há respostas certas ou erradas</li>
299
+ <li>Responda com base no que é verdadeiro para você na maior parte do tempo</li>
300
+ </ul>
301
+ </div>
302
+ <p>Ao final, você receberá um relatório personalizado com suas pontuações e interpretações baseadas em dados científicos.</p>
303
+ </div>
304
+ <button onclick="toggleHelpModal()" class="mt-6 w-full bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-4 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50">
305
+ Entendi
306
+ </button>
307
  </div>
308
  </div>
309
+
 
 
 
 
 
 
310
  <script>
311
+ // Questions database
312
+ const questions = [
313
+ {
314
+ id: 1,
315
+ category: 'cognitive',
316
+ text: "Com que frequência você percebe padrões, conexões ou relações que outras pessoas não percebem?",
317
+ options: [
318
+ { text: "Raramente ou nunca", score: 1 },
319
+ { text: "Ocasionalmente", score: 2 },
320
+ { text: "Frequentemente", score: 4 },
321
+ { text: "Quase sempre", score: 5 }
322
+ ]
323
+ },
324
+ {
325
+ id: 16,
326
+ category: 'cognitive',
327
+ text: "Você tem facilidade para aprender conceitos complexos rapidamente?",
328
+ options: [
329
+ { text: "Tenho dificuldade", score: 1 },
330
+ { text: "Às vezes", score: 3 },
331
+ { text: "Com frequência", score: 4 },
332
+ { text: "Sim, quase sempre", score: 5 }
333
+ ]
334
+ },
335
+ {
336
+ id: 17,
337
+ category: 'cognitive',
338
+ text: "Você se frustra quando outros não acompanham seu raciocínio?",
339
+ options: [
340
+ { text: "Nunca", score: 1 },
341
+ { text: "Raramente", score: 2 },
342
+ { text: "Às vezes", score: 4 },
343
+ { text: "Frequentemente", score: 5 }
344
+ ]
345
+ },
346
+ {
347
+ id: 2,
348
+ category: 'cognitive',
349
+ text: "Você tem curiosidade intensa sobre vários tópicos diferentes?",
350
+ options: [
351
+ { text: "Não especialmente", score: 1 },
352
+ { text: "Tenho algumas áreas de interesse", score: 3 },
353
+ { text: "Sim, sobre vários assuntos", score: 4 },
354
+ { text: "Sim, sobre muitos assuntos e com grande intensidade", score: 5 }
355
+ ]
356
+ },
357
+ {
358
+ id: 3,
359
+ category: 'emotional',
360
+ text: "Você já foi descrito como muito intenso(a) emocionalmente?",
361
+ options: [
362
+ { text: "Nunca", score: 1 },
363
+ { text: "Raramente", score: 2 },
364
+ { text: "Às vezes", score: 3 },
365
+ { text: "Frequentemente", score: 4 },
366
+ { text: "Sempre ou quase sempre", score: 5 }
367
+ ]
368
+ },
369
+ {
370
+ id: 4,
371
+ category: 'emotional',
372
+ text: "Com que frequência você sente emoções com extrema intensidade (alegria, tristeza, raiva, etc.)?",
373
+ options: [
374
+ { text: "Quase nunca", score: 1 },
375
+ { text: "De vez em quando", score: 2 },
376
+ { text: "Regularmente", score: 3 },
377
+ { text: "Frequentemente", score: 4 },
378
+ { text: "Quase sempre", score: 5 }
379
+ ]
380
+ },
381
+ {
382
+ id: 5,
383
+ category: 'sensory',
384
+ text: "Você é particularmente sensível a sons, luzes, texturas ou cheiros que não parecem incomodar outras pessoas?",
385
+ options: [
386
+ { text: "Nunca", score: 1 },
387
+ { text: "Raramente", score: 2 },
388
+ { text: "Às vezes", score: 3 },
389
+ { text: "Frequentemente", score: 4 },
390
+ { text: "Sempre ou quase sempre", score: 5 }
391
+ ]
392
+ },
393
+ {
394
+ id: 6,
395
+ category: 'sensory',
396
+ text: "Você fica sobrecarregado(a) em ambientes com muita estimulação sensorial (como shoppings, festas, locais barulhentos)?",
397
+ options: [
398
+ { text: "Nunca", score: 1 },
399
+ { text: "Raramente", score: 2 },
400
+ { text: "Às vezes", score: 3 },
401
+ { text: "Frequentemente", score: 4 },
402
+ { text: "Sempre ou quase sempre", score: 5 }
403
+ ]
404
+ },
405
+ {
406
+ id: 7,
407
+ category: 'cognitive',
408
+ text: "Você pensa principalmente em imagens ou padrões em vez de palavras?",
409
+ options: [
410
+ { text: "Quase nunca", score: 1 },
411
+ { text: "Ocasionalmente", score: 2 },
412
+ { text: "Regularmente", score: 3 },
413
+ { text: "Frequentemente", score: 4 },
414
+ { text: "Quase sempre", score: 5 }
415
+ ]
416
+ },
417
+ {
418
+ id: 8,
419
+ category: 'emotional',
420
+ text: "Você tem forte empatia e pode sentir o que os outros estão sentindo?",
421
+ options: [
422
+ { text: "Não especialmente", score: 1 },
423
+ { text: "Às vezes", score: 3 },
424
+ { text: "Frequentemente", score: 4 },
425
+ { text: "Muito intensamente, às vezes é avassalador", score: 5 }
426
+ ]
427
+ },
428
+ {
429
+ id: 9,
430
+ category: 'cognitive',
431
+ text: "Você aprende melhor quando pode explorar um tópico profundamente em vez de seguir uma estrutura pré-definida?",
432
+ options: [
433
+ { text: "Prefiro seguir a estrutura definida", score: 1 },
434
+ { text: "Às vezes gosto de explorar", score: 3 },
435
+ { text: "Geralmente prefiro explorar por conta própria", score: 4 },
436
+ { text: "Sempre aprendo melhor explorando profundamente", score: 5 }
437
+ ]
438
+ },
439
+ {
440
+ id: 10,
441
+ category: 'sensory',
442
+ text: "Você tem reações físicas intensas (como náusea ou dolor) a certos estímulos sensoriais?",
443
+ options: [
444
+ { text: "Nunca", score: 1 },
445
+ { text: "Raramente", score: 2 },
446
+ { text: "Às vezes", score: 3 },
447
+ { text: "Frequentemente", score: 4 },
448
+ { text: "Sempre ou quase sempre", score: 5 }
449
+ ]
450
+ },
451
+ {
452
+ id: 11,
453
+ category: 'cognitive',
454
+ text: "Com que frequência você se envolve em pensamento divergente (várias idéias ou soluções para um problema)?",
455
+ options: [
456
+ { text: "Raramente", score: 1 },
457
+ { text: "Ocasionalmente", score: 2 },
458
+ { text: "Regularmente", score: 3 },
459
+ { text: "Frequentemente", score: 4 },
460
+ { text: "Quase sempre", score: 5 }
461
+ ]
462
+ },
463
+ {
464
+ id: 12,
465
+ category: 'emotional',
466
+ text: "Você já sentiu que suas emoções são mais intensas do que as das pessoas ao seu redor?",
467
+ options: [
468
+ { text: "Nunca", score: 1 },
469
+ { text: "Raramente", score: 2 },
470
+ { text: "Às vezes", score: 3 },
471
+ { text: "Frequentemente", score: 4 },
472
+ { text: "Sempre ou quase sempre", score: 5 }
473
+ ]
474
+ },
475
+ {
476
+ id: 13,
477
+ category: 'sensory',
478
+ text: "Você tem preferências muito específicas por certos tipos de tecidos, sabores ou sons?",
479
+ options: [
480
+ { text: "Nenhuma preferência especial", score: 1 },
481
+ { text: "Algumas pequenas preferências", score: 2 },
482
+ { text: "Algumas preferências marcantes", score: 3 },
483
+ { text: "Muitas preferências fortes", score: 4 },
484
+ { text: "Preferências muito específicas e intensas", score: 5 }
485
+ ]
486
+ },
487
+ {
488
+ id: 14,
489
+ category: 'cognitive',
490
+ text: "Você tende a pensar de maneira não linear (saltando entre idéias em vez de seguir uma sequência lógica)?",
491
+ options: [
492
+ { text: "Quase nunca", score: 1 },
493
+ { text: "Ocasionalmente", score: 2 },
494
+ { text: "Regularmente", score: 3 },
495
+ { text: "Frequentemente", score: 4 },
496
+ { text: "Quase sempre", score: 5 }
497
+ ]
498
+ },
499
+ {
500
+ id: 15,
501
+ category: 'emotional',
502
+ text: "Você tem dificuldade em regular suas emoções (calmar-se quando está agitado ou animar-se quando está desanimado)?",
503
+ options: [
504
+ { text: "Nunca", score: 1 },
505
+ { text: "Raramente", score: 2 },
506
+ { text: "Às vezes", score: 3 },
507
+ { text: "Frequentemente", score: 4 },
508
+ { text: "Sempre ou quase sempre", score: 5 }
509
+ ]
510
+ },
511
+ {
512
+ id: 18,
513
+ category: 'emotional',
514
+ text: "Você se envolve emocionalmente com personagens de livros/filmes como se fossem reais?",
515
+ options: [
516
+ { text: "Quase nunca", score: 1 },
517
+ { text: "Raramente", score: 2 },
518
+ { text: "Às vezes", score: 3 },
519
+ { text: "Frequentemente", score: 4 },
520
+ { text: "Quase sempre", score: 5 }
521
+ ]
522
+ },
523
+ {
524
+ id: 19,
525
+ category: 'sensory',
526
+ text: "Você evita certas atividades devido à sensibilidade sensorial?",
527
+ options: [
528
+ { text: "Nunca", score: 1 },
529
+ { text: "Raramente", score: 2 },
530
+ { text: "Às vezes", score: 4 },
531
+ { text: "Frequentemente", score: 5 }
532
+ ]
533
+ },
534
+ {
535
+ id: 20,
536
+ category: 'sensory',
537
+ text: "Você tem reações físicas intensas a certos alimentos (textura, temperatura, sabor)?",
538
+ options: [
539
+ { text: "Nunca", score: 1 },
540
+ { text: "1-2 alimentos", score: 2 },
541
+ { text: "3-5 alimentos", score: 3 },
542
+ { text: "6-10 alimentos", score: 4 },
543
+ { text: "Mais de 10 alimentos", score: 5 }
544
+ ]
545
+ }
546
+ ];
547
+
548
+ // Comparative data for results (percentiles)
549
+ const comparativeData = {
550
+ cognitive: {
551
+ 10: 20, 20: 30, 30: 45, 40: 55, 50: 65,
552
+ 60: 72, 70: 79, 80: 85, 90: 90, 95: 95
553
+ },
554
+ emotional: {
555
+ 10: 25, 20: 35, 30: 45, 40: 55, 50: 62,
556
+ 60: 69, 70: 75, 80: 81, 90: 88, 95: 93
557
+ },
558
+ sensory: {
559
+ 10: 15, 20: 30, 30: 42, 40: 52, 50: 60,
560
+ 60: 68, 70: 74, 80: 80, 90: 87, 95: 94
561
+ }
562
  };
563
+
564
+ // Assessment state
565
+ let currentQuestionIndex = 0;
566
+ let answers = [];
567
+ let scores = { cognitive: 0, emotional: 0, sensory: 0 };
568
+
569
  // DOM elements
570
+ const welcomeCard = document.getElementById('welcome-card');
571
+ const assessmentContainer = document.getElementById('assessment-container');
572
+ const questionContainer = document.getElementById('question-container');
573
+ const resultsContainer = document.getElementById('results-container');
574
+ const progressBar = document.getElementById('progress-bar');
575
+ const progressPercentage = document.getElementById('progress-percentage');
576
+ const prevBtn = document.getElementById('prev-btn');
577
+ const nextBtn = document.getElementById('next-btn');
578
+ const submitBtn = document.getElementById('submit-btn');
579
+ const helpBtn = document.getElementById('help-btn');
580
+ const helpModal = document.getElementById('help-modal');
581
+
582
+ // Toggle help modal
583
+ function toggleHelpModal() {
584
+ helpModal.classList.toggle('hidden');
 
 
 
 
 
 
 
 
 
 
 
 
 
585
  }
586
+
587
+ // Event listeners
588
+ helpBtn.addEventListener('click', toggleHelpModal);
589
+
590
+ // Start the assessment
591
+ function startAssessment() {
592
+ welcomeCard.classList.add('hidden');
593
+ assessmentContainer.classList.remove('hidden');
594
+ showQuestion(currentQuestionIndex);
595
+ updateProgress();
596
+ window.scrollTo({ top: 0, behavior: 'smooth' });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
  }
598
+
599
+ // Show a specific question
600
+ function showQuestion(index) {
601
+ // Reset question container
602
+ questionContainer.innerHTML = '';
603
+
604
+ // Get current question
605
+ const question = questions[index];
606
+
607
+ // Create question element
608
+ const questionElement = document.createElement('div');
609
+ questionElement.className = 'question mb-8 animate-fade-in';
610
+ questionElement.style.animation = 'fadeIn 0.3s ease-out';
611
+
612
+ // Add question text
613
+ const questionText = document.createElement('h3');
614
+ questionText.className = 'text-xl md:text-2xl font-semibold text-gray-800 mb-6';
615
+ questionText.textContent = `${index + 1}. ${question.text}`;
616
+ questionElement.appendChild(questionText);
617
+
618
+ // Add category indicator
619
+ const categoryLabel = document.createElement('div');
620
+ categoryLabel.className = 'inline-block text-xs font-medium px-2 py-1 rounded mb-3 ';
621
+ if (question.category === 'cognitive') {
622
+ categoryLabel.className += 'bg-blue-100 text-blue-800';
623
+ categoryLabel.innerHTML = '<i class="fas fa-brain mr-1"></i> Cognitivo';
624
+ } else if (question.category === 'emotional') {
625
+ categoryLabel.className += 'bg-purple-100 text-purple-800';
626
+ categoryLabel.innerHTML = '<i class="fas fa-heart mr-1"></i> Emocional';
627
+ } else {
628
+ categoryLabel.className += 'bg-green-100 text-green-800';
629
+ categoryLabel.innerHTML = '<i class="fas fa-hand-sparkles mr-1"></i> Sensorial';
630
  }
631
+ questionText.insertBefore(categoryLabel, questionText.firstChild);
632
+
633
+ // Add options
634
+ const optionsContainer = document.createElement('div');
635
+ optionsContainer.className = 'space-y-3';
636
+
637
+ question.options.forEach((option, optionIndex) => {
638
+ const optionElement = document.createElement('div');
639
+ optionElement.className = `option cursor-pointer bg-white hover:bg-indigo-50 border ${answers[index] === optionIndex ? 'border-indigo-300 bg-indigo-50' : 'border-gray-200'} rounded-lg p-4 transition duration-300 group`;
640
+ optionElement.innerHTML = `
641
+ <div class="flex items-center">
642
+ <div class="w-5 h-5 rounded-full border ${answers[index] === optionIndex ? 'border-indigo-500 bg-indigo-500' : 'border-gray-300 group-hover:border-indigo-300'} mr-3 flex-shrink-0 flex items-center justify-center transition">
643
+ ${answers[index] === optionIndex ? '<i class="fas fa-check text-white text-xs"></i>' : ''}
644
+ </div>
645
+ <div class="text-gray-700 group-hover:text-indigo-700 transition">${option.text}</div>
646
+ </div>
647
+ `;
648
+
649
+ // Add click event to select option
650
+ optionElement.addEventListener('click', () => {
651
+ // Store answer
652
+ answers[index] = optionIndex;
653
+
654
+ // Re-render options to show selection
655
+ showQuestion(index);
656
+
657
+ // Enable next/submit button
658
+ if (index === questions.length - 1) {
659
+ nextBtn.classList.add('hidden');
660
+ submitBtn.classList.remove('hidden');
661
+ }
662
  });
663
+
664
+ optionsContainer.appendChild(optionElement);
665
  });
666
+
667
+ questionElement.appendChild(optionsContainer);
668
+ questionContainer.appendChild(questionElement);
669
+
670
+ // Update navigation buttons
671
+ prevBtn.classList.toggle('hidden', index === 0);
672
  }
673
+
674
+ // Go to next question
675
+ function nextQuestion() {
676
+ if (answers[currentQuestionIndex] === undefined) {
677
+ alert('Por favor, selecione uma resposta antes de continuar.');
 
 
678
  return;
679
  }
680
+
681
+ currentQuestionIndex++;
682
+ showQuestion(currentQuestionIndex);
683
+ updateProgress();
684
+ window.scrollTo({ top: 0, behavior: 'smooth' });
685
+ }
686
+
687
+ // Go to previous question
688
+ function prevQuestion() {
689
+ currentQuestionIndex--;
690
+ showQuestion(currentQuestionIndex);
691
+ updateProgress();
692
+ window.scrollTo({ top: 0, behavior: 'smooth' });
693
+ }
694
+
695
+ // Update progress bar
696
+ function updateProgress() {
697
+ const progress = ((currentQuestionIndex + 1) / questions.length) * 100;
698
+ progressBar.style.width = `${progress}%`;
699
+ progressPercentage.textContent = `${Math.round(progress)}%`;
700
+ }
701
+
702
+ // Submit assessment and show results
703
+ function submitAssessment() {
704
+ if (answers[currentQuestionIndex] === undefined) {
705
+ alert('Por favor, selecione uma resposta antes de finalizar.');
706
+ return;
707
  }
708
+
709
+ calculateScores();
710
+ showResults();
711
+ assessmentContainer.classList.add('hidden');
712
+ resultsContainer.classList.remove('hidden');
713
+ window.scrollTo({ top: 0, behavior: 'smooth' });
714
  }
715
+
716
+ // Calculate scores from answers
717
+ function calculateScores() {
718
+ // Reset scores
719
+ scores = { cognitive: 0, emotional: 0, sensory: 0 };
720
+
721
+ // Count questions per category to calculate averages later
722
+ const counts = { cognitive: 0, emotional: 0, sensory: 0 };
723
+
724
+ // Sum scores for each category
725
+ questions.forEach((question, index) => {
726
+ if (answers[index] !== undefined) {
727
+ const selectedOption = question.options[answers[index]];
728
+ scores[question.category] += selectedOption.score;
729
+ counts[question.category]++;
730
  }
731
+ });
732
+
733
+ // Calculate average scores (percentage of max possible score)
734
+ ['cognitive', 'emotional', 'sensory'].forEach(category => {
735
+ if (counts[category] > 0) {
736
+ const maxPossible = counts[category] * 5;
737
+ scores[category] = Math.round((scores[category] / maxPossible) * 100);
738
+ }
739
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
740
  }
741
+
742
+ // Show results page
743
+ function showResults() {
744
+ // Update score displays with animation
745
+ animateValue('cognitive-score', 0, scores.cognitive, 1000);
746
+ animateValue('emotional-score', 0, scores.emotional, 1000);
747
+ animateValue('sensory-score', 0, scores.sensory, 1000);
748
+
749
+ // Update progress bars with animation
750
+ animateProgressBar('cognitive-bar', scores.cognitive);
751
+ animateProgressBar('emotional-bar', scores.emotional);
752
+ animateProgressBar('sensory-bar', scores.sensory);
753
+
754
+ // Generate analysis text
755
+ const analysis = generateAnalysis();
756
+ document.getElementById('detailed-analysis').innerHTML = analysis.text;
757
+
758
+ // Add strengths
759
+ const strengthsList = document.getElementById('strengths-list');
760
+ strengthsList.innerHTML = '';
761
+ analysis.strengths.forEach(strength => {
762
+ const strengthItem = document.createElement('div');
763
+ strengthItem.className = 'flex items-start p-4 bg-white border border-gray-200 rounded-lg hover:shadow-md transition';
764
+ strengthItem.innerHTML = `
765
+ <div class="flex-shrink-0 p-3 ${strength.color} rounded-lg text-white mr-4">
766
+ <i class="fas ${strength.icon}"></i>
767
+ </div>
768
+ <div>
769
+ <h5 class="font-medium text-gray-800 mb-1">${strength.title}</h5>
770
+ <p class="text-sm text-gray-600">${strength.description}</p>
771
+ </div>
772
+ `;
773
+ strengthsList.appendChild(strengthItem);
774
+ });
775
  }
776
+
777
+ // Animate number counting up
778
+ function animateValue(id, start, end, duration) {
779
+ const obj = document.getElementById(id);
780
+ let startTimestamp = null;
781
+ const step = (timestamp) => {
782
+ if (!startTimestamp) startTimestamp = timestamp;
783
+ const progress = Math.min((timestamp - startTimestamp) / duration, 1);
784
+ obj.innerHTML = Math.floor(progress * (end - start) + start);
785
+ if (progress < 1) {
786
+ window.requestAnimationFrame(step);
787
+ }
788
+ };
789
+ window.requestAnimationFrame(step);
 
 
 
 
 
 
 
 
 
 
 
790
  }
791
+
792
+ // Animate progress bar filling
793
+ function animateProgressBar(id, finalWidth) {
794
+ const element = document.getElementById(id);
795
+ let width = 0;
796
+ const interval = setInterval(() => {
797
+ if (width >= finalWidth) {
798
+ clearInterval(interval);
 
 
 
 
 
799
  } else {
800
+ width++;
801
+ element.style.width = width + '%';
802
  }
803
+ }, 10);
 
804
  }
805
+
806
+ // Generate analysis based on scores
807
+ function generateAnalysis() {
808
+ const cognitiveLevel = getLevel(scores.cognitive);
809
+ const emotionalLevel = getLevel(scores.emotional);
810
+ const sensoryLevel = getLevel(scores.sensory);
811
+
812
+ // Calculate percentiles
813
+ const cognitivePercentile = getPercentile('cognitive', scores.cognitive);
814
+ const emotionalPercentile = getPercentile('emotional', scores.emotional);
815
+ const sensoryPercentile = getPercentile('sensory', scores.sensory);
816
+
817
+ // Determine overall assessment with comparison data
818
+ let overallScore = Math.round((scores.cognitive + scores.emotional + scores.sensory) / 3);
819
+ const overallPercentile = Math.round((cognitivePercentile + emotionalPercentile + sensoryPercentile) / 3);
820
+
821
+ let overallAssessment = '';
822
+ if (overallPercentile <= 30) {
823
+ overallAssessment = `Seus resultados (percentil ${overallPercentile}) sugerem padrões predominantemente neurotípicos, com poucos indícios de neurodivergência. Você está entre os ${100-overallPercentile}% menos neurodivergentes da população.`;
824
+ } else if (overallPercentile <= 60) {
825
+ overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram algumas características neurodivergentes em intensidade moderada. Você está entre os ${60-overallPercentile}% da população com traços leves ou mistos.`;
826
+ } else if (overallPercentile <= 85) {
827
+ overallAssessment = `Seus resultados (percentil ${overallPercentile}) indicam um perfil significativamente neurodivergente. Isso coloca você entre os ${100-overallPercentile}% mais neurodivergentes da população.`;
828
+ } else {
829
+ overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram um perfil altamente neurodivergente. Você está entre os ${100-overallPercentile}% mais neurodivergentes da população, com padrões intensos e marcantes.`;
830
  }
831
+
832
+ // Create strengths list with appropriate icons and colors
833
+ const strengths = [];
834
+
835
+ if (scores.cognitive >= 70) {
836
+ strengths.push({
837
+ title: 'Pensamento complexo',
838
+ description: 'Você demonstra forte capacidade de perceber padrões, conexões e pensar de maneiras não convencionais, característica comum em neurodivergências como autismo e TDAH.',
839
+ icon: 'fa-lightbulb',
840
+ color: 'bg-blue-500'
841
  });
842
+ }
843
+
844
+ if (scores.emotional >= 70) {
845
+ strengths.push({
846
+ title: 'Intensidade emocional',
847
+ description: 'Sua profundidade emocional pode representar uma rica vida interior e alta empatia, traços associados a diversas formas de neurodivergência.',
848
+ icon: 'fa-heart',
849
+ color: 'bg-purple-500'
850
+ });
851
+ }
852
+
853
+ if (scores.sensory >= 70) {
854
+ strengths.push({
855
+ title: 'Percepção sensorial',
856
+ description: 'Sua sensibilidade sensorial pode indicar uma percepção mais fina e detalhada do ambiente, comum em muitas condições neurodivergentes.',
857
+ icon: 'fa-hand-sparkles',
858
+ color: 'bg-green-500'
859
+ });
860
+ }
861
+
862
+ return {
863
+ text: `
864
+ <div class="mb-6 p-4 bg-gradient-to-r from-indigo-50 to-blue-50 rounded-xl border border-indigo-100">
865
+ <h4 class="font-bold text-lg text-indigo-800 mb-2">Resumo Geral</h4>
866
+ <p class="mb-4">${overallAssessment}</p>
867
+ <div class="flex flex-wrap gap-4">
868
+ <div class="bg-white p-3 rounded-lg shadow-sm w-full md:w-auto">
869
+ <div class="text-sm text-gray-600 flex items-center">
870
+ <i class="fas fa-chart-line text-indigo-500 mr-2"></i> Percentil Total
871
+ </div>
872
+ <div class="text-2xl font-bold text-indigo-700">${overallPercentile}</div>
873
+ <div class="text-xs text-gray-500">(maior = mais neurodivergente)</div>
874
+ </div>
875
+ </div>
876
+ </div>
877
+
878
+ <h4 class="font-bold text-lg text-gray-800 mb-3">Detalhes por Área</h4>
879
+
880
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
881
+ <div class="bg-white p-4 rounded-lg shadow-sm border border-gray-200">
882
+ <h5 class="font-bold text-blue-800 mb-2 flex items-center">
883
+ <i class="fas fa-brain mr-2"></i> Cognitivo <span class="text-sm ml-auto">${scores.cognitive}%</span>
884
+ </h5>
885
+ <div class="h-2 bg-gray-200 rounded-full mb-2">
886
+ <div class="h-2 bg-blue-600 rounded-full" style="width: ${scores.cognitive}%"></div>
887
+ </div>
888
+ <div class="text-sm mb-1">Nível: <strong>${cognitiveLevel}</strong></div>
889
+ <div class="text-xs text-gray-600">Percentil ${cognitivePercentile} - ${getPercentileInterpretation(cognitivePercentile)}</div>
890
+ <p class="text-xs text-gray-500 mt-2">Inclui pensamento padrão, aprendizagem e processamento de informações.</p>
891
+ </div>
892
+ <div class="bg-white p-4 rounded-lg shadow-sm border border-gray-200">
893
+ <h5 class="font-bold text-purple-800 mb-2 flex items-center">
894
+ <i class="fas fa-heart mr-2"></i> Emocional <span class="text-sm ml-auto">${scores.emotional}%</span>
895
+ </h5>
896
+ <div class="h-2 bg-gray-200 rounded-full mb-2">
897
+ <div class="h-2 bg-purple-600 rounded-full" style="width: ${scores.emotional}%"></div>
898
+ </div>
899
+ <div class="text-sm mb-1">Nível: <strong>${emotionalLevel}</strong></div>
900
+ <div class="text-xs text-gray-600">Percentil ${emotionalPercentile} - ${getPercentileInterpretation(emotionalPercentile)}</div>
901
+ <p class="text-xs text-gray-500 mt-2">Inclui intensidade emocional, empatia e regulação de sentimentos.</p>
902
+ </div>
903
+ <div class="bg-white p-4 rounded-lg shadow-sm border border-gray-200">
904
+ <h5 class="font-bold text-green-800 mb-2 flex items-center">
905
+ <i class="fas fa-hand-sparkles mr-2"></i> Sensorial <span class="text-sm ml-auto">${scores.sensory}%</span>
906
+ </h5>
907
+ <div class="h-2 bg-gray-200 rounded-full mb-2">
908
+ <div class="h-2 bg-green-600 rounded-full" style="width: ${scores.sensory}%"></div>
909
+ </div>
910
+ <div class="text-sm mb-1">Nível: <strong>${sensoryLevel}</strong></div>
911
+ <div class="text-xs text-gray-600">Percentil ${sensoryPercentile} - ${getPercentileInterpretation(sensoryPercentile)}</div>
912
+ <p class="text-xs text-gray-500 mt-2">Inclui resposta a estímulos sensoriais e preferências específicas.</p>
913
+ </div>
914
+ </div>
915
+
916
+ <div class="bg-white border border-gray-200 rounded-xl p-4 mb-6">
917
+ <h4 class="font-medium text-gray-800 mb-3 flex items-center">
918
+ <i class="fas fa-search-plus text-indigo-600 mr-2"></i> Interpretação dos Resultados
919
+ </h4>
920
+ <ul class="list-disc pl-5 space-y-2 text-gray-700">
921
+ <li><strong>0-40%:</strong> Características predominantemente neurotípicas</li>
922
+ <li><strong>40-70%:</strong> Traços moderados de neurodivergência</li>
923
+ <li><strong>70-85%:</strong> Perfil neurodivergente significativo</li>
924
+ <li><strong>85-100%:</strong> Alto grau de neurodivergência</li>
925
+ </ul>
926
+ </div>
927
+ `,
928
+ strengths
929
+ };
930
+ }
931
+
932
+ // Get descriptive level based on score
933
+ function getLevel(score) {
934
+ if (score <= 25) return 'Muito Baixo';
935
+ if (score <= 40) return 'Baixo';
936
+ if (score <= 60) return 'Moderado';
937
+ if (score <= 75) return 'Alto';
938
+ return 'Muito Alto';
939
+ }
940
+
941
+ // Get percentile based on comparative data
942
+ function getPercentile(category, score) {
943
+ const data = comparativeData[category];
944
+ for (let percentile = 95; percentile >= 10; percentile -= 5) {
945
+ if (score >= data[percentile]) return percentile;
946
+ }
947
+ return 5;
948
+ }
949
+
950
+ // Get interpretation of percentile
951
+ function getPercentileInterpretation(percentile) {
952
+ if (percentile <= 15) return 'Baixa neurodivergência';
953
+ if (percentile <= 40) return 'Neurotípico com alguns traços';
954
+ if (percentile <= 60) return 'Perfil misto';
955
+ if (percentile <= 80) return 'Neurodivergente significativo';
956
+ if (percentile <= 90) return 'Altamente neurodivergente';
957
+ return 'Extremamente neurodivergente';
958
+ }
959
+
960
+ // Restart assessment
961
+ function restartAssessment() {
962
+ currentQuestionIndex = 0;
963
+ answers = [];
964
+ resultsContainer.classList.add('hidden');
965
+ welcomeCard.classList.remove('hidden');
966
+ window.scrollTo({ top: 0, behavior: 'smooth' });
967
+ }
968
  </script>
969
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=danielclopes/eva-calculator" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
970
  </html>
prompts.txt CHANGED
@@ -1,4 +1,7 @@
1
  não esta aceitando a opção todas
2
  não está sendo possivel selecionar a operação matemática
3
  retire as abas de operações matematicas e deixe elas randomicas 100%
4
- deixe 100% responsivo para celulares. e aumente a sessão para 1 minuto
 
 
 
 
1
  não esta aceitando a opção todas
2
  não está sendo possivel selecionar a operação matemática
3
  retire as abas de operações matematicas e deixe elas randomicas 100%
4
+ deixe 100% responsivo para celulares. e aumente a sessão para 1 minuto
5
+ baseado em todos os melhores estudos do mundo sobre altas habilidades.crie um site que ajude a identificar o nivel de neurodivergencia que que estiver respondendo o questionario tem. de pontuações e relatórios de avaliação ao final do teste. deve ser altamente responsivo para celulares.
6
+ poderia aumentar o numero de perguntas e explorar ainda mais o relatório? coloque niveis de comparação para quem ler o resultado entender quão descolado está!
7
+ <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NeuroAvalia - Identificação de Neurodivergência</title> <script src="https://cdn.tailwindcss.com"></script> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> body { font-family: 'Poppins', sans-serif; background-color: #f8f9fa; } .progress-bar { transition: width 0.5s ease-in-out; } .option:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); } .result-chart { height: 300px; } </style> </head> <body class="min-h-screen bg-gradient-to-b from-indigo-50 to-blue-50"> <div class="container mx-auto px-4 py-8 max-w-6xl"> <!-- Header Section --> <header class="text-center mb-10"> <h1 class="text-4xl md:text-5xl font-bold text-indigo-800 mb-4">NeuroAvalia</h1> <p class="text-lg md:text-xl text-gray-700 max-w-3xl mx-auto"> Ferramenta baseada em pesquisas científicas para identificar sinais de neurodivergência e altas habilidades </p> <div class="w-24 h-1.5 bg-indigo-500 mx-auto mt-4 rounded-full"></div> </header> <!-- Welcome Card --> <div id="welcome-card" class="bg-white rounded-xl shadow-lg p-6 mb-8 transition-all duration-300"> <div class="flex flex-col md:flex-row items-center gap-6"> <div class="flex-shrink-0 mb-4 md:mb-0"> <div class="w-24 h-24 md:w-32 md:h-32 rounded-full bg-indigo-100 flex items-center justify-center"> <i class="fas fa-brain text-4xl md:text-5xl text-indigo-600"></i> </div> </div> <div> <h2 class="text-2xl font-semibold text-gray-800 mb-3">Sobre esta avaliação</h2> <p class="text-gray-600 mb-4"> Este questionário foi desenvolvido com base nos principais estudos mundiais sobre neurodivergência e altas habilidades. As perguntas abrangem diversas áreas cognitivas, emocionais e sensoriais. </p> <p class="text-gray-600 mb-6"> Ao final, você receberá um relatório detalhado com sua pontuação e orientações sobre os próximos passos, caso sejam necessários. </p> <button onclick="startAssessment()" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-6 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50"> Iniciar Avaliação </button> </div> </div> </div> <!-- Assessment Container --> <div id="assessment-container" class="hidden bg-white rounded-xl shadow-lg p-6 mb-8"> <!-- Progress Bar --> <div class="mb-8"> <div class="flex justify-between mb-2"> <span class="text-sm font-medium text-indigo-700">Progresso</span> <span id="progress-percentage" class="text-sm font-medium text-indigo-700">0%</span> </div> <div class="w-full bg-gray-200 rounded-full h-2.5"> <div id="progress-bar" class="progress-bar bg-indigo-600 h-2.5 rounded-full" style="width: 0%"></div> </div> </div> <!-- Question Container --> <div id="question-container"> <!-- Questions will be inserted here dynamically --> </div> <!-- Navigation Buttons --> <div class="flex justify-between mt-10"> <button id="prev-btn" onclick="prevQuestion()" class="hidden bg-gray-200 hover:bg-gray-300 text-gray-800 font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-opacity-50"> <i class="fas fa-arrow-left mr-2"></i> Anterior </button> <button id="next-btn" onclick="nextQuestion()" class="ml-auto bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50"> Próxima <i class="fas fa-arrow-right ml-2"></i> </button> <button id="submit-btn" onclick="submitAssessment()" class="hidden bg-green-600 hover:bg-green-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-opacity-50"> Finalizar <i class="fas fa-check ml-2"></i> </button> </div> </div> <!-- Results Container --> <div id="results-container" class="hidden bg-white rounded-xl shadow-lg p-6"> <div class="text-center mb-8"> <div class="inline-block p-4 bg-indigo-100 rounded-full mb-4"> <i class="fas fa-chart-bar text-4xl text-indigo-600"></i> </div> <h2 class="text-3xl font-bold text-gray-800 mb-2">Seu Resultado</h2> <p class="text-gray-600 max-w-2xl mx-auto"> Veja abaixo sua pontuação e interpretação baseada em pesquisas científicas sobre neurodivergência. </p> </div> <!-- Score Summary --> <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10"> <div class="bg-blue-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-blue-700 mb-2" id="cognitive-score">0</div> <div class="text-lg font-medium text-blue-800 mb-2">Cognitivo</div> <div class="h-1.5 bg-blue-200 rounded-full mb-3"> <div class="h-1.5 bg-blue-600 rounded-full" id="cognitive-bar" style="width: 0%"></div> </div> <p class="text-sm text-blue-900 opacity-80">Processamento de informações e padrões de pensamento</p> </div> <div class="bg-purple-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-purple-700 mb-2" id="emotional-score">0</div> <div class="text-lg font-medium text-purple-800 mb-2">Emocional</div> <div class="h-1.5 bg-purple-200 rounded-full mb-3"> <div class="h-1.5 bg-purple-600 rounded-full" id="emotional-bar" style="width: 0%"></div> </div> <p class="text-sm text-purple-900 opacity-80">Regulação emocional e intensidade de sentimentos</p> </div> <div class="bg-green-50 rounded-xl p-6 text-center"> <div class="text-4xl font-bold text-green-700 mb-2" id="sensory-score">0</div> <div class="text-lg font-medium text-green-800 mb-2">Sensorial</div> <div class="h-1.5 bg-green-200 rounded-full mb-3"> <div class="h-1.5 bg-green-600 rounded-full" id="sensory-bar" style="width: 0%"></div> </div> <p class="text-sm text-green-900 opacity-80">Sensibilidade a estímulos do ambiente</p> </div> </div> <!-- Detailed Analysis --> <div class="bg-gray-50 rounded-xl p-6 mb-8"> <h3 class="text-xl font-semibold text-gray-800 mb-4">Análise Detalhada</h3> <p class="text-gray-700 mb-6" id="detailed-analysis"> <!-- Analysis will be inserted here --> </p> <h4 class="text-lg font-medium text-gray-800 mb-3">Áreas com maior pontuação:</h4> <div id="strengths-list" class="grid grid-cols-1 md:grid-cols-2 gap-3 mb-6"> <!-- Strengths will be inserted here --> </div> <div class="alert bg-indigo-50 border-l-4 border-indigo-500 p-4 rounded mb-6"> <div class="flex"> <div class="flex-shrink-0 text-indigo-500"> <i class="fas fa-info-circle"></i> </div> <div class="ml-3"> <p class="text-sm text-indigo-700"> <strong>Nota:</strong> Esta avaliação não substitui um diagnóstico profissional. Se os resultados indicarem alta probabilidade de neurodivergência, recomendamos consultar um especialista. </p> </div> </div> </div> </div> <!-- Resources Section --> <div class="mb-8"> <h3 class="text-xl font-semibold text-gray-800 mb-4">Recursos e Próximos Passos</h3> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div class="flex items-start p-4 bg-white border border-gray-200 rounded-lg shadow-sm hover:shadow-md transition"> <div class="flex-shrink-0 mt-1 mr-4 text-blue-500"> <i class="fas fa-book-open"></i> </div> <div> <h4 class="font-medium text-gray-800">Leituras recomendadas</h4> <p class="text-sm text-gray-600">Materiais científicos sobre neurodivergência e altas habilidades</p> </div> </div> <div class="flex items-start p-4 bg-white border border-gray-200 rounded-lg shadow-sm hover:shadow-md transition"> <div class="flex-shrink-0 mt-1 mr-4 text-purple-500"> <i class="fas fa-user-md"></i> </div> <div> <h4 class="font-medium text-gray-800">Profissionais especializados</h4> <p class="text-sm text-gray-600">Encontre especialistas em sua região para avaliação detalhada</p> </div> </div> </div> </div> <div class="text-center"> <button onclick="restartAssessment()" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-lg transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-opacity-50 inline-flex items-center"> <i class="fas fa-redo mr-2"></i> Refazer Teste </button> </div> </div> </div> <footer class="bg-white py-6 mt-12 border-t border-gray-200"> <div class="container mx-auto px-4 text-center text-gray-600 text-sm"> <p>© 2023 NeuroAvalia. Baseado em pesquisas científicas sobre neurodivergência e altas habilidades.</p> <p class="mt-2">Este instrumento não substitui avaliação profissional.</p> </div> </footer> <script> // Questions database const questions = [ { id: 1, category: 'cognitive', text: "Com que frequência você percebe padrões, conexões ou relações que outras pessoas não percebem?", options: [ { text: "Raramente ou nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 16, category: 'cognitive', text: "Você tem facilidade para aprender conceitos complexos rapidamente?", options: [ { text: "Tenho dificuldade", score: 1 }, { text: "Às vezes", score: 3 }, { text: "Com frequência", score: 4 }, { text: "Sim, quase sempre", score: 5 } ] }, { id: 17, category: 'cognitive', text: "Você se frustra quando outros não acompanham seu raciocínio?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 4 }, { text: "Frequentemente", score: 5 } ] }, { id: 2, category: 'cognitive', text: "Você tem curiosidade intensa sobre vários tópicos diferentes?", options: [ { text: "Não especialmente", score: 1 }, { text: "Tenho algumas áreas de interesse", score: 3 }, { text: "Sim, sobre vários assuntos", score: 4 }, { text: "Sim, sobre muitos assuntos e com grande intensidade", score: 5 } ] }, { id: 3, category: 'emotional', text: "Você já foi descrito como muito intenso(a) emocionalmente?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 4, category: 'emotional', text: "Com que frequência você sente emoções com extrema intensidade (alegria, tristeza, raiva, etc.)?", options: [ { text: "Quase nunca", score: 1 }, { text: "De vez em quando", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 5, category: 'sensory', text: "Você é particularmente sensível a sons, luzes, texturas ou cheiros que não parecem incomodar outras pessoas?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 6, category: 'sensory', text: "Você fica sobrecarregado(a) em ambientes com muita estimulação sensorial (como shoppings, festas, locais barulhentos)?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 7, category: 'cognitive', text: "Você pensa principalmente em imagens ou padrões em vez de palavras?", options: [ { text: "Quase nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 8, category: 'emotional', text: "Você tem forte empatia e pode sentir o que os outros estão sentindo?", options: [ { text: "Não especialmente", score: 1 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Muito intensamente, às vezes é avassalador", score: 5 } ] }, { id: 9, category: 'cognitive', text: "Você aprende melhor quando pode explorar um tópico profundamente em vez de seguir uma estrutura pré-definida?", options: [ { text: "Prefiro seguir a estrutura definida", score: 1 }, { text: "Às vezes gosto de explorar", score: 3 }, { text: "Geralmente prefiro explorar por conta própria", score: 4 }, { text: "Sempre aprendo melhor explorando profundamente", score: 5 } ] }, { id: 10, category: 'sensory', text: "Você tem reações físicas intensas (como náusea ou dor) a certos estímulos sensoriais?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 11, category: 'cognitive', text: "Com que frequência você se envolve em pensamento divergente (várias ideias ou soluções para um problema)?", options: [ { text: "Raramente", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 12, category: 'emotional', text: "Você já sentiu que suas emoções são mais intensas do que as das pessoas ao seu redor?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 13, category: 'sensory', text: "Você tem preferências muito específicas por certos tipos de tecidos, sabores ou sons?", options: [ { text: "Nenhuma preferência especial", score: 1 }, { text: "Algumas pequenas preferências", score: 2 }, { text: "Algumas preferências marcantes", score: 3 }, { text: "Muitas preferências fortes", score: 4 }, { text: "Prefiroências muito específicas e intensas", score: 5 } ] }, { id: 14, category: 'cognitive', text: "Você tende a pensar de maneira não linear (saltando entre ideias em vez de seguir uma sequência lógica)?", options: [ { text: "Quase nunca", score: 1 }, { text: "Ocasionalmente", score: 2 }, { text: "Regularmente", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 15, category: 'emotional', text: "Você tem dificuldade em regular suas emoções (calmar-se quando está agitado ou animar-se quando está desanimado)?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Sempre ou quase sempre", score: 5 } ] }, { id: 18, category: 'emotional', text: "Você se envolve emocionalmente com personagens de livros/filmes como se fossem reais?", options: [ { text: "Quase nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 3 }, { text: "Frequentemente", score: 4 }, { text: "Quase sempre", score: 5 } ] }, { id: 19, category: 'sensory', text: "Você evita certas atividades devido à sensibilidade sensorial?", options: [ { text: "Nunca", score: 1 }, { text: "Raramente", score: 2 }, { text: "Às vezes", score: 4 }, { text: "Frequentemente", score: 5 } ] }, { id: 20, category: 'sensory', text: "Você tem reações físicas intensas a certos alimentos (textura, temperatura, sabor)?", options: [ { text: "Nunca", score: 1 }, { text: "1-2 alimentos", score: 2 }, { text: "3-5 alimentos", score: 3 }, { text: "6-10 alimentos", score: 4 }, { text: "Mais de 10 alimentos", score: 5 } ] } ]; // Comparative data for results (percentiles) const comparativeData = { cognitive: { 10: 20, 20: 30, 30: 45, 40: 55, 50: 65, 60: 72, 70: 79, 80: 85, 90: 90, 95: 95 }, emotional: { 10: 25, 20: 35, 30: 45, 40: 55, 50: 62, 60: 69, 70: 75, 80: 81, 90: 88, 95: 93 }, sensory: { 10: 15, 20: 30, 30: 42, 40: 52, 50: 60, 60: 68, 70: 74, 80: 80, 90: 87, 95: 94 } }; // Assessment state let currentQuestionIndex = 0; let answers = []; let scores = { cognitive: 0, emotional: 0, sensory: 0 }; // DOM elements const welcomeCard = document.getElementById('welcome-card'); const assessmentContainer = document.getElementById('assessment-container'); const questionContainer = document.getElementById('question-container'); const resultsContainer = document.getElementById('results-container'); const progressBar = document.getElementById('progress-bar'); const progressPercentage = document.getElementById('progress-percentage'); const prevBtn = document.getElementById('prev-btn'); const nextBtn = document.getElementById('next-btn'); const submitBtn = document.getElementById('submit-btn'); // Current position in assessment currentQuestionIndex = 0; // Start the assessment function startAssessment() { welcomeCard.classList.add('hidden'); assessmentContainer.classList.remove('hidden'); showQuestion(currentQuestionIndex); updateProgress(); } // Show a specific question function showQuestion(index) { // Reset question container questionContainer.innerHTML = ''; // Get current question const question = questions[index]; // Create question element const questionElement = document.createElement('div'); questionElement.className = 'question mb-8'; // Add question text const questionText = document.createElement('h3'); questionText.className = 'text-xl font-semibold text-gray-800 mb-6'; questionText.textContent = question.text; questionElement.appendChild(questionText); // Add options const optionsContainer = document.createElement('div'); optionsContainer.className = 'space-y-3'; question.options.forEach((option, optionIndex) => { const optionElement = document.createElement('div'); optionElement.className = 'option cursor-pointer bg-gray-50 hover:bg-indigo-50 border border-gray-200 rounded-lg p-4 transition duration-300'; optionElement.innerHTML = ` <div class="flex items-center"> <div class="w-5 h-5 rounded-full border border-gray-300 mr-3 flex-shrink-0 option-radio ${answers[index] === optionIndex ? 'bg-indigo-500 border-indigo-500' : ''}"></div> <div>${option.text}</div> </div> `; // Add click event to select option optionElement.addEventListener('click', () => { // Deselect all options document.querySelectorAll('.option-radio').forEach(radio => { radio.className = 'w-5 h-5 rounded-full border border-gray-300 mr-3 flex-shrink-0 option-radio'; }); // Select clicked option const radio = optionElement.querySelector('.option-radio'); radio.className = 'w-5 h-5 rounded-full border border-indigo-500 bg-indigo-500 mr-3 flex-shrink-0 option-radio'; // Store answer answers[index] = optionIndex; // Enable next/submit button if (index === questions.length - 1) { nextBtn.classList.add('hidden'); submitBtn.classList.remove('hidden'); } }); // If this option was previously selected, mark it if (answers[index] === optionIndex) { const radio = optionElement.querySelector('.option-radio'); radio.className = 'w-5 h-5 rounded-full border border-indigo-500 bg-indigo-500 mr-3 flex-shrink-0 option-radio'; // Make sure submit button is visible on last question if answered if (index === questions.length - 1) { nextBtn.classList.add('hidden'); submitBtn.classList.remove('hidden'); } } optionsContainer.appendChild(optionElement); }); questionElement.appendChild(optionsContainer); questionContainer.appendChild(questionElement); // Update navigation buttons prevBtn.classList.toggle('hidden', index === 0); } // Go to next question function nextQuestion() { if (answers[currentQuestionIndex] === undefined) { alert('Por favor, selecione uma resposta antes de continuar.'); return; } currentQuestionIndex++; showQuestion(currentQuestionIndex); updateProgress(); } // Go to previous question function prevQuestion() { currentQuestionIndex--; showQuestion(currentQuestionIndex); updateProgress(); } // Update progress bar function updateProgress() { const progress = ((currentQuestionIndex + 1) / questions.length) * 100; progressBar.style.width = `${progress}%`; progressPercentage.textContent = `${Math.round(progress)}%`; } // Submit assessment and show results function submitAssessment() { if (answers[currentQuestionIndex] === undefined) { alert('Por favor, selecione uma resposta antes de finalizar.'); return; } calculateScores(); showResults(); assessmentContainer.classList.add('hidden'); resultsContainer.classList.remove('hidden'); } // Calculate scores from answers function calculateScores() { // Reset scores scores = { cognitive: 0, emotional: 0, sensory: 0 }; // Count questions per category to calculate averages later const counts = { cognitive: 0, emotional: 0, sensory: 0 }; // Sum scores for each category questions.forEach((question, index) => { if (answers[index] !== undefined) { const selectedOption = question.options[answers[index]]; scores[question.category] += selectedOption.score; counts[question.category]++; } }); // Calculate average scores (percentage of max possible score) ['cognitive', 'emotional', 'sensory'].forEach(category => { if (counts[category] > 0) { const maxPossible = counts[category] * 5; scores[category] = Math.round((scores[category] / maxPossible) * 100); } }); } // Show results page function showResults() { // Update score displays document.getElementById('cognitive-score').textContent = scores.cognitive; document.getElementById('emotional-score').textContent = scores.emotional; document.getElementById('sensory-score').textContent = scores.sensory; // Update progress bars document.getElementById('cognitive-bar').style.width = `${scores.cognitive}%`; document.getElementById('emotional-bar').style.width = `${scores.emotional}%`; document.getElementById('sensory-bar').style.width = `${scores.sensory}%`; // Generate analysis text const analysis = generateAnalysis(); document.getElementById('detailed-analysis').innerHTML = analysis.text; // Add strengths const strengthsList = document.getElementById('strengths-list'); strengthsList.innerHTML = ''; analysis.strengths.forEach(strength => { const strengthItem = document.createElement('div'); strengthItem.className = 'flex items-start'; strengthItem.innerHTML = ` <div class="flex-shrink-0 mt-1 mr-3 text-green-500"> <i class="fas fa-check-circle"></i> </div> <div> <h5 class="font-medium text-gray-800">${strength.title}</h5> <p class="text-sm text-gray-600">${strength.description}</p> </div> `; strengthsList.appendChild(strengthItem); }); } // Generate analysis based on scores function generateAnalysis() { const cognitiveLevel = getLevel(scores.cognitive); const emotionalLevel = getLevel(scores.emotional); const sensoryLevel = getLevel(scores.sensory); // Calculate percentiles const cognitivePercentile = getPercentile('cognitive', scores.cognitive); const emotionalPercentile = getPercentile('emotional', scores.emotional); const sensoryPercentile = getPercentile('sensory', scores.sensory); // Determine overall assessment with comparison data let overallScore = Math.round((scores.cognitive + scores.emotional + scores.sensory) / 3); const overallPercentile = Math.round((cognitivePercentile + emotionalPercentile + sensoryPercentile) / 3); let overallAssessment = ''; if (overallPercentile <= 30) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) sugerem padrões predominantemente neurotípicos, com poucos indícios de neurodivergência. Você está entre os ${100-overallPercentile}% menos neurodivergentes da população.`; } else if (overallPercentile <= 60) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram algumas características neurodivergentes em intensidade moderada. Você está entre os ${60-overallPercentile}% da população com traços leves ou mistos.`; } else if (overallPercentile <= 85) { overallAssessment = `Seus resultados (percentil ${overallPercentile}) indicam um perfil significativamente neurodivergente. Isso coloca você entre os ${100-overallPercentile}% mais neurodivergentes da população.`; } else { overallAssessment = `Seus resultados (percentil ${overallPercentile}) mostram um perfil altamente neurodivergente. Você está entre os ${100-overallPercentile}% mais neurodivergentes da população, com padrões intensos e marcantes.`; } // Create strengths list const strengths = []; if (scores.cognitive >= 70) { strengths.push({ title: 'Pensamento complexo', description: 'Você demonstra forte capacidade de perceber padrões, conexões e pensar de maneiras não convencionais.' }); } if (scores.emotional >= 70) { strengths.push({ title: 'Intensidade emocional', description: 'Sua profundidade emocional pode representar uma rica vida interior e alta empatia.' }); } if (scores.sensory >= 70) { strengths.push({ title: 'Percepção sensorial', description: 'Sua sensibilidade sensorial pode indicar uma percepção mais fina e detalhada do ambiente.' }); } return { text: ` <div class="mb-6 p-4 bg-blue-50 rounded-lg"> <h4 class="font-bold text-lg text-blue-800 mb-2">Resumo Geral</h4> <p class="mb-4">${overallAssessment}</p> <div class="flex flex-wrap gap-4"> <div class="bg-white p-3 rounded-lg shadow-sm w-full md:w-auto"> <div class="text-sm text-gray-600">Percentil Total</div> <div class="text-2xl font-bold text-blue-700">${overallPercentile}</div> <div class="text-xs text-gray-500">(maior = mais neurodivergente)</div> </div> </div> </div> <h4 class="font-bold text-lg text-gray-800 mb-3">Detalhes por Área</h4> <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-blue-800 mb-2">Cognitivo <span class="text-sm">(${scores.cognitive}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-blue-600 rounded-full" style="width: ${scores.cognitive}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${cognitiveLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${cognitivePercentile} - ${getPercentileInterpretation(cognitivePercentile)}</div> </div> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-purple-800 mb-2">Emocional <span class="text-sm">(${scores.emotional}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-purple-600 rounded-full" style="width: ${scores.emotional}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${emotionalLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${emotionalPercentile} - ${getPercentileInterpretation(emotionalPercentile)}</div> </div> <div class="bg-white p-4 rounded-lg shadow-sm"> <h5 class="font-bold text-green-800 mb-2">Sensorial <span class="text-sm">(${scores.sensory}%)</span></h5> <div class="h-2 bg-gray-200 rounded-full mb-2"> <div class="h-2 bg-green-600 rounded-full" style="width: ${scores.sensory}%"></div> </div> <div class="text-sm mb-1">Nível: <strong>${sensoryLevel}</strong></div> <div class="text-xs text-gray-600">Percentil ${sensoryPercentile} - ${getPercentileInterpretation(sensoryPercentile)}</div> </div> </div> `, strengths }; } // Get descriptive level based on score function getLevel(score) { if (score <= 25) return 'Muito Baixo'; if (score <= 40) return 'Baixo'; if (score <= 60) return 'Moderado'; if (score <= 75) return 'Alto'; return 'Muito Alto'; } // Get percentile based on comparative data function getPercentile(category, score) { const data = comparativeData[category]; for (let percentile = 95; percentile >= 10; percentile -= 5) { if (score >= data[percentile]) return percentile; } return 5; } // Get interpretation of percentile function getPercentileInterpretation(percentile) { if (percentile <= 15) return 'Baixa neurodivergência'; if (percentile <= 40) return 'Neurotípico com alguns traços'; if (percentile <= 60) return 'Perfil misto'; if (percentile <= 80) return 'Neurodivergente significativo'; if (percentile <= 90) return 'Altamente neurodivergente'; return 'Extremamente neurodivergente'; } // Restart assessment function restartAssessment() { currentQuestionIndex = 0; answers = []; resultsContainer.classList.add('hidden'); welcomeCard.classList.remove('hidden'); } </script> </body> </html>