TESTE DE CONHECIMENTO

Pasted Oct 14, 2026, 1:11 PM1 file274 lines

Scan to open on your phone

Point a camera at the QR code - it opens this exact paste, no app needed.

https://codepastes.com/zzgswjm8tpxb3x9t
quiz gastronomia
<!doctype html>
<html lang="pt-BR">
 <head><script>window["__codeletBootstrap__"]=JSON.parse('{"A":"A","B":"20261014-04-caa1adb","C":{"Abril Fatface":"YACgEZbkUVE,0","Albert Sans":"YAHO2HRfeh4,0","Alfa Slab One":"YACgEYS9sJU,0","Anton":"YACgEcYqQ-A,0","Archivo Black":"YACgEZulLoA,0","Archivo":"YAHO2-t-jNE,0","Arial":"YAGyDvJ_4Ts,0","Baloo 2":"YAHO2IcQUcM,0","Barlow Condensed":"YAFdJljEuFc,0","Barlow":"YAFdJsyuOPM,1","Bebas Neue":"YACgESME5ew,0","Bricolage Grotesque":"YAFyMcdwzpc,0","Canva Sans":"YAFdJjTk5UU,1","Caveat":"YALBs2ploWQ,0","Cinzel":"YACgEeV8bIQ,0","Cormorant Garamond":"YAFdJhX-538,0","Courier New":"YAGzXiGs0_8,0","Courier Prime":"YAD1aFjegN8,0","DM Sans":"YAD1aU3sLnI,0","DM Serif Display":"YAD1aYG82rc,0","Figtree":"YAHO2b-mV7A,0","Forum":"YACgEcnnqB4,0","Fraunces":"YAFdJpU7Kkk,0","Fredoka":"YACgEZml080,0","Georgia":"YAGzXkO0pEM,0","Hanken Grotesk":"YAHO2VB9G0I,0","Helvetica":"YAFcf7zkXN0,0","IBM Plex Mono":"YAFdJkmvhGI,0","IBM Plex Sans":"YAFdJgT0SHI,0","Impact":"YAFcfnjI7Vk,0","Instrument Sans":"YAHO2bKyaSQ,0","Instrument Serif":"YAHFeOnZNEk,0","Inter":"YAFdJvSyp_k,3","Italiana":"YAHO2Toik_w,0","Jacques Francois":"YAHO2a5g66Q,0","JetBrains Mono":"YAFdJksXcAk,0","Josefin Sans":"YAFdJjvw9Ps,0","Karla":"YAHO2V2NSXM,0","Lato":"YAFdJuFCnaw,0","Libre Baskerville":"YACgEUFdPdA,0","Libre Caslon Display":"YAHO2XhLmt0,0","Lobster":"YAD8SnSjSFI,0","Lora":"YACgEXvxf8Q,0","Manrope":"YAHO2b2feC4,0","Merriweather":"YACgEXvHxxs,0","Montserrat":"YAFdtQi73Xs,0","Noto Sans JP":"YAFdJiHXlcI,0","Noto Sans KR":"YAGsojZj-RQ,0","Nunito Sans":"YAFdtQJYB9w,1","Nunito":"YAFdJoNRMmU,1","Oleo Script":"YACgEQQ14jI,0","Oswald":"YACgEQY10lw,0","Outfit":"YAHO2nVlg14,0","Pacifico":"YADLjORQ1u4,0","Playfair Display":"YAFdJhem5V8,1","Plus Jakarta Sans":"YAHO2gdhi18,0","Poppins":"YAFdJjbTu24,1","Press Start 2P":"YAFyGr-8pmQ,0","Public Sans":"YAFdJj8NdaU,1","Quicksand":"YAFdJpYtCxE,1","Raleway":"YAFdJhmxbVQ,1","Roboto Slab":"YAFdJswIKAg,0","Rockwell":"YAFcfyVZnN0,0","Rye":"YACgEdQP21k,0","Sarabun":"YAFdJssSnME,0","Schibsted Grotesk":"YAHO2sWydRk,0","Segoe UI":"YAHNdRD1Klw,0","Source Sans 3":"YAG4lO1Mj10,0","Space Grotesk":"YAHO2sjPCSM,0","Space Mono":"YADW1-vpsoc,0","Spectral":"YAHO2rVUHIM,0","Times New Roman":"YAGzXW3gftg,0","Trebuchet MS":"YAFcfrglpVA,0","Ubuntu":"YACgERDU--Q,0","Verdana":"YAGzXTctYtQ,0","Work Sans":"YAGXhLOKv44,0","Yellowtail":"YACgEYG4kG4,0"}}');</script><script src="/_sdk/05db820ba1544614.telemetry_sdk.js" integrity="sha512-a7JzkQDDcioSXpM61nxTfeRW7PcxWQy5+BrhyeTFmQFsXJ+Gncm0y50u7fTA7qOPegFnRgqCfa0mGUOK1yjDWQ=="></script>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Quiz de Gastronomia</title>
  <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&amp;display=swap" rel="stylesheet">
  <style>
    :root { --ink:#173b40; --muted:#4a6567; --gold:#b77b29; --paper:#f8f5ec; }
    * { box-sizing:border-box; }
    body { margin:0; width:100%; font-family:Raleway,sans-serif; color:var(--ink); }
    .app-shell { width:100%; min-height:calc(100 * min(var(--vh, 1vh), 1vh)); background:radial-gradient(circle at 85% 5%,#e6d5ae 0%,transparent 36%),#f8f5ec; }
    .editorial-card { background:#fffdf8; border:1px solid #dbdfd6; box-shadow:0 20px 65px rgba(19,56,59,.09); }
    .eyebrow { letter-spacing:.18em; text-transform:uppercase; font-size:.72rem; font-weight:800; }
    h1 { line-height:1.12; letter-spacing:-.04em; }
    .choice { display:flex; align-items:center; width:100%; text-align:left; border:2px solid #c5d3cf; border-radius:14px; padding:16px 18px; background:#fff; color:#173b40; transition:background .18s,border-color .18s,transform .18s; cursor:pointer; line-height:1.5; font-weight:600; }
    .choice:hover:not(:disabled) { border-color:#246873; transform:translateY(-2px); }
    .choice.selected { border-color:#135765; background:#e9f4f2; }
    .choice.correct { border-color:#196a45; background:#dff4e7; }
    .choice.incorrect { border-color:#a52d35; background:#fce9e9; }
    .choice:disabled { cursor:default; }
    .choice-mark { display:inline-grid; place-items:center; flex:none; width:32px; height:32px; margin-right:14px; border-radius:50%; background:#e8efec; font-size:.82rem; font-weight:800; }
    button:focus-visible, input:focus-visible { outline:3px solid #d29a3c; outline-offset:3px; }
    .action { border-radius:12px; padding:14px 22px; font-weight:800; transition:filter .18s,transform .18s; }
    .action:not(:disabled):hover { filter:brightness(1.12); transform:translateY(-1px); }
    .action:disabled { opacity:.48; cursor:not-allowed; }
    .quiz-item[hidden], [hidden] { display:none!important; }
    @media(max-width:640px) { .choice { padding:14px; } }
  </style>
  <script src="https://cdn.tailwindcss.com/3.4.17" type="text/javascript"></script>
  <script src="https://cdn.jsdelivr.net/npm/lucide@0.577.0/dist/umd/lucide.min.js" type="text/javascript"></script>
  <script src="/_sdk/570d53629f0b998d.data_sdk.js" type="text/javascript" integrity="sha512-JEN39+V+Nvv9ZZOVS8vNk1iA9ErZJHTdgOw9KzPuMiK7m0I+KPEr/wmTnCFIQVsDjCZgJWfGnFi1IQh2Io2qyA=="></script>
  <script src="/_sdk/0b63fb8940df03d4.editing_sdk.js" type="text/javascript" integrity="sha512-fFkkekAA7XKU9UcNO+7a7lGi1SDVYUdIo1lpZS9YpfVovu1WAj3C/MEr/w8zt6Jwq6OKflaYkwf4eOUpMYGz9A=="></script>
  <script src="/_sdk/f195026a424c1f85.resizing_sdk.js" type="text/javascript" integrity="sha512-8On4Z+AXh1abEzZJ9Dbn9wOvFg+k1LsAaAzKGQ7LlfgXajZ9xEmZaZ1QVzv0AWhCZtCsEpWSOG9DgLri06TS7A=="></script>
 </head>
 <body data-template-id="__page-root" class="app-shell">
  <main class="w-full px-4 py-8 sm:px-8 sm:py-12">
   <div class="mx-auto w-full max-w-3xl">
    <header class="mb-7 flex items-center justify-between gap-4 border-b border-[#c3ccc3] pb-5"><span data-template-id="brand-label" class="canva-text eyebrow"></span> <span data-template-id="header-category" class="canva-tag rounded-full border border-[#b8c8c3] px-3 py-1 text-right"></span>
    </header>
    <section id="start-screen" data-template-id="start-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10">
     <p data-template-id="intro-kicker" class="canva-text eyebrow mb-4"></p>
     <h1 data-template-id="main-title" class="canva-text mb-5 font-extrabold"></h1>
     <p data-template-id="intro-description" class="canva-text mb-5 leading-relaxed"></p>
     <p data-template-id="editorial-notice" class="canva-banner mb-7 rounded-xl border-l-4 border-[#b77b29] bg-[#fff5dc] p-4 leading-relaxed"></p>
     <form id="start-form" class="border-t border-[#e0e5dd] pt-6"><label data-template-id="name-label" for="student-name" class="canva-text mb-2 block font-bold"></label> <input id="student-name" data-template-id="name-input" class="canva-input w-full rounded-xl border-2 border-[#a6bab5] bg-white px-4 py-3 text-[#173b40]" type="text" maxlength="100" autocomplete="name" required>
      <p id="start-error" class="mt-2 font-semibold text-[#a52d35]" role="alert" hidden></p><button data-template-id="start-button" class="canva-button action mt-5 w-full bg-[#174e59] text-white sm:w-auto" type="submit"></button>
     </form>
    </section>
    <section id="quiz-screen" data-template-id="quiz-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10" hidden aria-label="Questões">
     <div class="mb-6 flex items-center justify-between gap-4"><span data-template-id="question-section-label" class="canva-text eyebrow"></span> <span id="progress-label" class="font-bold text-[#4a6567]" aria-live="polite"></span>
     </div>
     <div class="mb-8 h-2 overflow-hidden rounded-full bg-[#e5ece7]" role="progressbar" id="progress-bar" aria-valuemin="0" aria-valuemax="9" aria-valuenow="0" aria-label="Questões respondidas">
      <div id="progress-fill" class="h-full rounded-full bg-[#b77b29] transition-all duration-300" style="width:0%"></div>
     </div>
     <div id="questions">
      <article class="quiz-item" data-answer="1">
       <p data-template-id="q1-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q1-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 1"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q1-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q1-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q1-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="2" hidden>
       <p data-template-id="q2-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q2-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 2"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q2-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q2-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q2-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="0" hidden>
       <p data-template-id="q3-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q3-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 3"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q3-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q3-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q3-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="1" hidden>
       <p data-template-id="q4-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q4-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 4"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q4-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q4-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q4-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="2" hidden>
       <p data-template-id="q5-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q5-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 5"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q5-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q5-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q5-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="0" hidden>
       <p data-template-id="q6-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q6-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 6"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q6-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q6-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q6-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="1" hidden>
       <p data-template-id="q7-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q7-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 7"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q7-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q7-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q7-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="2" hidden>
       <p data-template-id="q8-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q8-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 8"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q8-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q8-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q8-c" class="canva-text"></span></button>
       </div>
      </article>
      <article class="quiz-item" data-answer="0" hidden>
       <p data-template-id="q9-source" class="canva-text eyebrow mb-3"></p>
       <h2 data-template-id="q9-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
       <div class="space-y-3" role="group" aria-label="Alternativas da questão 9"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q9-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q9-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q9-c" class="canva-text"></span></button>
       </div>
      </article>
     </div>
     <div id="feedback" class="mt-6 rounded-xl border p-4 font-bold leading-relaxed" role="status" aria-live="polite" hidden><span data-template-id="feedback-correct" class="canva-text" hidden></span> <span data-template-id="feedback-incorrect" class="canva-text" hidden></span> <span data-template-id="feedback-key-hint" class="canva-text mt-1 block font-medium"></span>
     </div>
     <div class="mt-7 flex flex-wrap gap-3"><button id="submit-answer" data-template-id="submit-button" class="canva-button action bg-[#174e59] text-white" type="button" disabled></button> <button id="next-question" data-template-id="next-button" class="canva-button action bg-[#b77b29] text-white" type="button" hidden></button>
     </div>
    </section>
    <section id="result-screen" data-template-id="result-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10" hidden>
     <p data-template-id="result-kicker" class="canva-text eyebrow mb-4"></p>
     <h2 data-template-id="result-title" class="canva-text mb-7 font-extrabold"></h2>
     <div class="grid gap-4 sm:grid-cols-2">
      <div class="rounded-2xl bg-[#e8f1ec] p-5">
       <p data-template-id="score-label" class="canva-text font-semibold"></p>
       <p id="result-score" class="mt-2 text-3xl font-extrabold" aria-live="polite"></p>
      </div>
      <div class="rounded-2xl bg-[#f9edcf] p-5">
       <p data-template-id="percentage-label" class="canva-text font-semibold"></p>
       <p id="result-percentage" class="mt-2 text-3xl font-extrabold" aria-live="polite"></p>
      </div>
     </div>
     <p id="attempt-display" class="mt-5 font-semibold" aria-live="polite"></p>
     <p id="save-status" class="mt-3 font-semibold" role="status" aria-live="polite"></p>
     <div class="mt-7 flex flex-wrap gap-3"><button id="retry-save" data-template-id="retry-save-button" class="canva-button action bg-[#b77b29] text-white" type="button" hidden></button> <button id="restart" data-template-id="restart-button" class="canva-button action bg-[#174e59] text-white" type="button"></button>
     </div>
    </section>
    <footer class="pt-6 text-center">
     <p data-template-id="footer-text" class="canva-text"></p>
    </footer>
   </div>
  </main>
  <script>
    const items = [...document.querySelectorAll('.quiz-item')];
    const startScreen = document.getElementById('start-screen');
    const quizScreen = document.getElementById('quiz-screen');
    const resultScreen = document.getElementById('result-screen');
    const submitButton = document.getElementById('submit-answer');
    const nextButton = document.getElementById('next-question');
    const feedback = document.getElementById('feedback');
    const saveStatus = document.getElementById('save-status');
    let records = [], ready = false, index = 0, selected = null, score = 0, studentName = '', attempt = 1, saved = false, saving = false, pendingRecord = null;

    function showScreen(screen) {
      [startScreen, quizScreen, resultScreen].forEach(el => { el.hidden = el !== screen; });
      window.scrollTo({top:0, behavior:'smooth'});
    }
    function showQuestion() {
      items.forEach((item, i) => { item.hidden = i !== index; });
      selected = null;
      submitButton.disabled = true;
      submitButton.hidden = false;
      nextButton.hidden = true;
      feedback.hidden = true;
      document.querySelector('[data-template-id="feedback-correct"]').hidden = true;
      document.querySelector('[data-template-id="feedback-incorrect"]').hidden = true;
      document.getElementById('progress-label').textContent = `Questão ${index + 1} de ${items.length}`;
      document.getElementById('progress-bar').setAttribute('aria-valuenow', String(index));
      document.getElementById('progress-fill').style.width = `${index / items.length * 100}%`;
      items[index].querySelectorAll('.choice').forEach(button => {
        button.disabled = false;
        button.classList.remove('selected','correct','incorrect');
        button.setAttribute('aria-pressed','false');
      });
    }
    document.getElementById('questions').addEventListener('click', event => {
      const button = event.target.closest('.choice');
      if (!button || button.disabled || !button.closest('.quiz-item') || button.closest('.quiz-item').hidden) return;
      selected = Number(button.dataset.option);
      items[index].querySelectorAll('.choice').forEach(option => {
        const active = option === button;
        option.classList.toggle('selected',active);
        option.setAttribute('aria-pressed',String(active));
      });
      submitButton.disabled = false;
    });
    submitButton.addEventListener('click', () => {
      if (selected === null) return;
      const item = items[index], answer = Number(item.dataset.answer);
      const correct = selected === answer;
      if (correct) score++;
      item.querySelectorAll('.choice').forEach(button => {
        const choice = Number(button.dataset.option);
        button.disabled = true;
        button.classList.remove('selected');
        button.classList.toggle('correct', choice === answer);
        button.classList.toggle('incorrect', choice === selected && !correct);
      });
      feedback.hidden = false;
      feedback.className = `mt-6 rounded-xl border p-4 font-bold leading-relaxed ${correct ? 'border-[#196a45] bg-[#e4f5e9] text-[#174f35]' : 'border-[#a52d35] bg-[#fff0ed] text-[#86272d]'}`;
      document.querySelector('[data-template-id="feedback-correct"]').hidden = !correct;
      document.querySelector('[data-template-id="feedback-incorrect"]').hidden = correct;
      submitButton.hidden = true;
      nextButton.hidden = false;
    });
    nextButton.addEventListener('click', () => {
      index++;
      if (index < items.length) showQuestion();
      else finish();
    });
    document.getElementById('start-form').addEventListener('submit', event => {
      event.preventDefault();
      const error = document.getElementById('start-error');
      studentName = document.getElementById('student-name').value.trim().replace(/\s+/g,' ');
      if (!studentName) { error.textContent = 'Informe seu nome para começar.'; error.hidden = false; return; }
      if (!ready) { error.textContent = 'A planilha ainda não está disponível. Tente novamente em instantes.'; error.hidden = false; return; }
      error.hidden = true;
      index = 0; score = 0; showQuestion(); showScreen(quizScreen);
    });
    const handler = { onDataChanged(data) { records = data; } };
    async function init() {
      try {
        const result = await window.dataSdk.init(handler);
        ready = result.isOk;
        if (!ready) {
          const error = document.getElementById('start-error');
          error.textContent = 'Não foi possível conectar à planilha do Canva. Reabra a atividade e tente novamente.';
          error.hidden = false;
        }
      } catch (_) {
        const error = document.getElementById('start-error');
        error.textContent = 'Não foi possível conectar à planilha do Canva. Reabra a atividade e tente novamente.';
        error.hidden = false;
      }
    }
    function finish() {
      document.getElementById('progress-bar').setAttribute('aria-valuenow',String(items.length));
      const percentage = `${Math.round(score / items.length * 100)}%`;
      attempt = records.filter(row => String(row.student_name || '').trim().toLocaleLowerCase('pt-BR') === studentName.toLocaleLowerCase('pt-BR')).reduce((max,row) => Math.max(max,Number(row.attempt_number) || 0),0) + 1;
      document.getElementById('result-score').textContent = `${score} / ${items.length}`;
      document.getElementById('result-percentage').textContent = percentage;
      document.getElementById('attempt-display').textContent = `Número da tentativa: ${attempt}`;
      pendingRecord = {student_name:studentName,score,percentage,attempt_number:attempt,date:new Date().toISOString()};
      saved = false;
      showScreen(resultScreen);
      saveResult();
    }
    async function saveResult() {
      if (saving || saved || !pendingRecord) return;
      saving = true;
      const retry = document.getElementById('retry-save');
      retry.hidden = true;
      saveStatus.textContent = 'Registrando resultado na planilha do Canva…';
      try {
        if (records.length >= 999) throw new Error('limit');
        const result = await window.dataSdk.create(pendingRecord);
        if (!result.isOk) throw new Error('write');
        saved = true;
        saveStatus.textContent = 'Resultado registrado na planilha do Canva.';
      } catch (error) {
        saveStatus.textContent = error.message === 'limit'
          ? 'A planilha atingiu o limite de 999 registros. O resultado não foi salvo.'
          : 'Não foi possível salvar o resultado. Tente novamente.';
        retry.hidden = error.message === 'limit';
      } finally { saving = false; }
    }
    document.getElementById('retry-save').addEventListener('click',saveResult);
    document.getElementById('restart').addEventListener('click', () => {
      pendingRecord = null;
      saving = false;
      showScreen(startScreen);
      document.getElementById('student-name').focus();
    });
    init();
  </script>
 </body>
</html>

24,818 chars · codepastes.com