Widget:Teste

De Wiki Gla
Revisão de 01h53min de 4 de abril de 2026 por Gurren1 (discussão | contribs)
Ir para navegação Ir para pesquisar

<style>

   /* {literal} */
   #fq-widget * { box-sizing: border-box; margin: 0; padding: 0; }
   
   #fq-widget {
     font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     background: #ffffff;
     color: #202122;
     max-width: 780px;
     margin: 1rem 0;
     font-size: 0.9375rem;
     line-height: 1.6;
   }
   
   .fq-header { margin-bottom: 1.25rem; display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
   .fq-header-main { flex: 1; min-width: 12rem; }
   .fq-title  { font-size: 1.25rem; font-weight: 600; color: #202122; margin-bottom: 0.2rem; }
   .fq-sub    { font-size: 0.875rem; color: #54595d; }
   .fq-lang-wrap { flex-shrink: 0; }
   #fq-lang-select {
     font-size: 0.8125rem; padding: 0.35rem 0.5rem; border: 1px solid #a2a9b1; border-radius: 2px;
     background: #f8f9fa; color: #202122; cursor: pointer; max-width: 100%;
   }
   #fq-lang-select:focus { outline: none; border-color: #36c; box-shadow: 0 0 0 2px rgba(51,102,204,0.15); }
   
   .fq-weekly {
     display: flex; align-items: center; gap: 0.5rem;
     margin-bottom: 1.25rem; cursor: pointer; user-select: none; width: fit-content;
   }
   .fq-checkbox {
     display: flex; align-items: center; justify-content: center;
     width: 1.125rem; height: 1.125rem; border-radius: 3px;
     border: 1px solid #a2a9b1; flex-shrink: 0;
     background: #f8f9fa; transition: all 0.15s;
   }
   .fq-checkbox.on { background: #36c; border-color: #36c; }
   .fq-checkbox svg { display: none; }
   .fq-checkbox.on svg { display: block; }
   .fq-weekly-label { font-size: 0.875rem; color: #54595d; transition: color 0.15s; }
   .fq-weekly-label.on { color: #36c; font-weight: 500; }
   .fq-weekly:hover .fq-checkbox:not(.on) { border-color: #36c; }
   .fq-weekly:hover .fq-weekly-label:not(.on) { color: #36c; }
   
   .fq-search-wrap { position: relative; margin-bottom: 0.75rem; }
   .fq-search-icon {
     position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%);
     color: #72777d; pointer-events: none; line-height: 0;
   }
   #fq-input {
     width: 100%; background: #fff; border: 1px solid #a2a9b1;
     border-radius: 2px; padding: 0.45rem 2.5rem;
     font-size: 0.9375rem; color: #202122; outline: none;
     transition: border-color 0.15s, box-shadow 0.15s;
   }
   #fq-input::placeholder { color: #72777d; }
   #fq-input:focus { border-color: #36c; box-shadow: 0 0 0 2px rgba(51,102,204,0.15); }
   #fq-clear {
     position: absolute; right: 0.75rem; top: 50%; transform: translateY(-50%);
     background: none; border: none; color: #72777d; cursor: pointer;
     line-height: 0; padding: 0; transition: color 0.15s;
   }
   #fq-clear:hover { color: #202122; }
   #fq-clear.hidden { display: none; }
   
   #fq-stats { font-size: 0.8125rem; color: #54595d; margin-bottom: 0.75rem; }
   #fq-stats .vd  { color: #14866d; font-weight: 500; }
   #fq-stats .fa  { color: #c0392b; font-weight: 500; }
   #fq-stats .sep { color: #a2a9b1; margin: 0 0.3rem; }
   #fq-stats.hidden { display: none; }
   
   .fq-msg { font-size: 0.875rem; color: #72777d; text-align: center; padding: 3rem 0; }
   .fq-msg.hidden { display: none; }
   
   #fq-results { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; }
   #fq-results.hidden { display: none; }
   
   .fq-item {
     display: flex; align-items: flex-start; gap: 0.625rem;
     border: 1px solid; border-radius: 2px;
     padding: 0.625rem 0.875rem; font-size: 0.9rem; line-height: 1.55;
   }
   .fq-item.vd { background: #f0fdf4; border-color: #14866d; color: #14433a; }
   .fq-item.fa { background: #fff0f0; border-color: #c0392b; color: #5a1010; }
   
   .fq-badge {
     flex-shrink: 0; margin-top: 0.1rem;
     width: 1.125rem; height: 1.125rem; border-radius: 50%;
     display: flex; align-items: center; justify-content: center;
     font-weight: 700; font-size: 0.7rem; color: #fff;
   }
   .fq-badge.vd { background: #14866d; }
   .fq-badge.fa { background: #c0392b; }
   
   mark { background: #fef08a; color: #713f12; border-radius: 1px; padding: 0 1px; }
   /* {/literal} */
   </style>
   

Foxy Quiz

         <label for="fq-lang-select" class="fq-visually-hidden" id="fq-lang-label" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;">Language</label>
         <select id="fq-lang-select" aria-labelledby="fq-lang-label">
           <option value="pt">Português</option>
           <option value="en">English</option>
           <option value="es">Español</option>
           <option value="pl">Polski</option>
         </select>
       
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"
              fill="none" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
           <polyline points="20 6 9 17 4 12"/>
         </svg>
       
       
       
         <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"
              viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
           <circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
         </svg>
       
       <input id="fq-input" type="text" />
       <button id="fq-clear" class="hidden" type="button" aria-label="">
         <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"
              viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
           <path d="M18 6 6 18M6 6l12 12"/>
         </svg>
       </button>
   <script>
   /* {literal} */
   
   var FQ_LANG_KEY = 'foxy-quiz-lang';
   
   var FQ_STRINGS = {
     pt: {
       langLabel: 'Idioma',
       sub: 'Pesquise uma afirmação para ver se ela é verdadeira ou falsa.',
       weeklyOff: 'Já recebi a recompensa do Foxy Quiz nesta semana!',
       weeklyDone: 'Foxy Quiz concluído em ',
       placeholder: 'Digite palavras-chave para pesquisar...',
       clearAria: 'Limpar',
       tip: 'Digite ao menos 2 caracteres para pesquisar.',
       nores: 'Nenhuma afirmação encontrada.',
       locale: 'pt-BR'
     },
     en: {
       langLabel: 'Language',
       sub: 'Search for a statement to see if it is true or false.',
       weeklyOff: 'I already claimed my Foxy Quiz reward this week!',
       weeklyDone: 'Foxy Quiz completed on ',
       placeholder: 'Type keywords to search...',
       clearAria: 'Clear',
       tip: 'Enter at least 2 characters to search.',
       nores: 'No matching statements found.',
       locale: 'en-US'
     },
     es: {
       langLabel: 'Idioma',
       sub: 'Busca una afirmación para ver si es verdadera o falsa.',
       weeklyOff: '¡Ya reclamé la recompensa del Foxy Quiz esta semana!',
       weeklyDone: 'Foxy Quiz completado el ',
       placeholder: 'Escribe palabras clave para buscar...',
       clearAria: 'Borrar',
       tip: 'Introduce al menos 2 caracteres para buscar.',
       nores: 'No se encontraron afirmaciones.',
       locale: 'es'
     },
     pl: {
       langLabel: 'Język',
       sub: 'Wyszukaj stwierdzenie, aby sprawdzić, czy jest prawdziwe, czy fałszywe.',
       weeklyOff: 'Odebrałem już nagrodę Foxy Quiz w tym tygodniu!',
       weeklyDone: 'Foxy Quiz ukończono ',
       placeholder: 'Wpisz słowa kluczowe, aby wyszukać...',
       clearAria: 'Wyczyść',
       tip: 'Wpisz co najmniej 2 znaki, aby wyszukać.',
       nores: 'Nie znaleziono stwierdzeń.',
       locale: 'pl-PL'
     }
   };
   
   function fqStatsHtml(n, t, f, lang) {
     if (lang === 'en') {
       return n + ' result' + (n !== 1 ? 's' : ) +
         ' · ' +
         '' + t + ' true' +
         ' · ' +
         '' + f + ' false';
     }
     if (lang === 'es') {
       return n + ' resultado' + (n !== 1 ? 's' : ) +
         ' · ' +
         '' + t + ' verdadero' + (t !== 1 ? 's' : ) + '' +
         ' · ' +
         '' + f + ' falso' + (f !== 1 ? 's' : ) + '';
     }
     if (lang === 'pl') {
       return n + ' wynik' + (n === 1 ?  : (n < 5 ? 'i' : 'ów')) +
         ' · ' +
         '' + t + ' prawdziw' + (t === 1 ? 'e' : (t < 5 ? 'e' : 'ych')) + '' +
         ' · ' +
         '' + f + ' fałszyw' + (f === 1 ? 'e' : (f < 5 ? 'e' : 'ych')) + '';
     }
     return n + ' resultado' + (n !== 1 ? 's' : ) +
       ' · ' +
       '' + t + ' verdadeiro' + (t !== 1 ? 's' : ) + '' +
       ' · ' +
       '' + f + ' falso' + (f !== 1 ? 's' : ) + '';
   }
   
   var QUIZ_CORE = [
     { c: true, en: 'Eiichiro Oda is the creator of One Piece.', pt: 'Eiichiro Oda é o criador de One Piece.', es: 'Eiichiro Oda es el creador de One Piece.', pl: 'Eiichiro Oda jest twórcą One Piece.' },
     { c: true, en: 'Zeus is an One Piece character.', pt: 'Zeus é um personagem de One Piece.', es: 'Zeus es un personaje de One Piece.', pl: 'Zeus jest postacią z One Piece.' },
     { c: true, en: 'Neptune is an One Piece character.', pt: 'Neptune é um personagem de One Piece.', es: 'Neptuno es un personaje de One Piece.', pl: 'Neptun jest postacią z One Piece.' },
     { c: true, en: 'If the World Government had known that Crocodile was the head of Baroque Works, his bounty would be at least doubled to 162,000,000 berry.', pt: 'Se o Governo Mundial soubesse que Crocodile era o chefe da Baroque Works, sua recompensa pelo menos dobraria para 162.000.000 de berries.', es: 'Si el Gobierno Mundial hubiera sabido que Crocodile era el jefe de Baroque Works, su recompensa se habría duplicado al menos a 162.000.000 de berries.', pl: 'Gdyby Światowy Rząd wiedział, że Crocodile był szefem Baroque Works, jego nagroda wzrosłaby co najmniej dwukrotnie do 162 000 000 berry.' },
     { c: true, en: "Crocodile's dream was to become the Pirate King.", pt: 'O sonho de Crocodile era se tornar o Rei dos Piratas.', es: 'El sueño de Crocodile era convertirse en el Rey de los Piratas.', pl: 'Marzeniem Crocodile\'a zostało Królem Piratów.' },
     { c: true, en: 'Hancock is the first female character in the series capable of using all three forms of Haki.', pt: 'Hancock é a primeira personagem feminina da série capaz de usar as três formas de Haki.', es: 'Hancock es la primera personaje femenina de la serie capaz de usar las tres formas de Haki.', pl: 'Hancock jest pierwszą kobiecą postacią w serii zdolną do użycia wszystkich trzech form Haki.' },
     { c: true, en: 'Boa Hancock character has several references to Greek mythology.', pt: 'A personagem Boa Hancock tem várias referências à mitologia grega.', es: 'El personaje Boa Hancock tiene varias referencias a la mitología griega.', pl: 'Postać Boa Hancock zawiera kilka odniesień do greckiej mitologii.' },
     { c: true, en: 'If One Piece was set in the real world, then Luffy would be from Brazil.', pt: 'Se One Piece se passasse no mundo real, Luffy seria do Brasil.', es: 'Si One Piece se ambientara en el mundo real, Luffy sería de Brasil.', pl: 'Gdyby One Piece rozgrywało się w prawdziwym świecie, Luffy pochodziłby z Brazylii.' },
     { c: true, en: 'Buggy is the first villain to appear in the series who is a Devil Fruit user. He is the also first Devil Fruit user whom Luffy has fought.', pt: 'Buggy é o primeiro vilão da série que é usuário de Akuma no Mi. Também é o primeiro usuário de Akuma no Mi com quem Luffy lutou.', es: 'Buggy es el primer villano de la serie que es usuario de Fruta del Diablo. También es el primer usuario de Fruta del Diablo contra el que lucha Luffy.', pl: 'Buggy jest pierwszym antagonistą w serii użytkownikiem Diabelskiego Owocu. To także pierwszy taki przeciwnik, z którym walczy Luffy.' },
     { c: true, en: "Monkey D. Luffy's mother was not revealed yet.", pt: 'A mãe de Monkey D. Luffy ainda não foi revelada.', es: 'La madre de Monkey D. Luffy aún no ha sido revelada.', pl: 'Matka Monkey D. Luffy\'ego nie została jeszcze ujawniona.' },
     { c: true, en: "Portgas D. Ace is Gold Roger's son.", pt: 'Portgas D. Ace é filho de Gold Roger.', es: 'Portgas D. Ace es hijo de Gold Roger.', pl: 'Portgas D. Ace jest synem Gold Rogera.' },
     { c: true, en: "Portgas D. Ace is Rouge's son.", pt: 'Portgas D. Ace é filho de Rouge.', es: 'Portgas D. Ace es hijo de Rouge.', pl: 'Portgas D. Ace jest synem Rouge.' },
     { c: true, en: "Gum-Gum Fruit is the official name of Luffy's Devil Fruit in English.", pt: 'Fruta Gum-Gum é o nome oficial da Akuma no Mi do Luffy em inglês.', es: 'Gum-Gum Fruit es el nombre oficial de la Fruta del Diablo de Luffy en inglés.', pl: 'Gum-Gum Fruit to oficjalna angielska nazwa Diabelskiego Owocu Luffy\'ego.' },
     { c: true, en: 'Wapol is the first king shown in the series.', pt: 'Wapol é o primeiro rei mostrado na série.', es: 'Wapol es el primer rey que aparece en la serie.', pl: 'Wapol jest pierwszym królem pokazanym w serii.' },
     { c: true, en: 'Arlong is the only known individual to have been released from Impel Down.', pt: 'Arlong é o único indivíduo conhecido a ter sido solto de Impel Down.', es: 'Arlong es el único individuo conocido que ha sido liberado de Impel Down.', pl: 'Arlong jest jedyną znaną osobą, która została zwolniona z Impel Down.' },
     { c: true, en: 'Mr. 2 has the same voice actor as Franky and Jango.', pt: 'Mr. 2 tem o mesmo dublador que Franky e Jango.', es: 'Mr. 2 tiene el mismo actor de voz que Franky y Jango.', pl: 'Mr. 2 ma tego samego aktora głosowego co Franky i Jango.' },
     { c: true, en: 'Akainu has the same voice actor as Krieg.', pt: 'Akainu tem o mesmo dublador que Krieg.', es: 'Akainu tiene el mismo actor de voz que Krieg.', pl: 'Akainu ma tego samego aktora głosowego co Krieg.' },
     { c: true, en: 'Sanji in his childhood has the same voice actress as Chopper.', pt: 'Sanji na infância tem a mesma dubladora que Chopper.', es: 'Sanji de niño tiene la misma actriz de voz que Chopper.', pl: 'Sanji w dzieciństwie ma tę samą aktorkę głosową co Chopper.' },
     { c: true, en: 'Chopper has his voice actress changed in some episodes.', pt: 'A dubladora de Chopper foi trocada em alguns episódios.', es: 'La actriz de voz de Chopper cambió en algunos episodios.', pl: 'Aktorka głosowa Choppera została zmieniona w niektórych odcinkach.' },
     { c: true, en: 'Nico Robin was also known as Miss All Sunday.', pt: 'Nico Robin também era conhecida como Miss All Sunday.', es: 'Nico Robin también era conocida como Miss All Sunday.', pl: 'Nico Robin znana była też jako Miss All Sunday.' },
     { c: true, en: "Nico Robin's mother hair is white.", pt: 'O cabelo da mãe de Nico Robin é branco.', es: 'El pelo de la madre de Nico Robin es blanco.', pl: 'Włosy matki Nico Robin są białe.' },
     { c: true, en: "Yubashiri (One of Zoro's sword) rusted.", pt: 'Yubashiri (uma das espadas de Zoro) enferrujou.', es: 'Yubashiri (una de las espadas de Zoro) se oxidó.', pl: 'Yubashiri (jeden z mieczy Zoro) zardzewiał.' },
     { c: false, en: 'Masashi Kishimoto is the creator of One Piece.', pt: 'Masashi Kishimoto é o criador de One Piece.', es: 'Masashi Kishimoto es el creador de One Piece.', pl: 'Masashi Kishimoto jest twórcą One Piece.' },
     { c: false, en: 'Akira Toriyama is the creator of One Piece.', pt: 'Akira Toriyama é o criador de One Piece.', es: 'Akira Toriyama es el creador de One Piece.', pl: 'Akira Toriyama jest twórcą One Piece.' },
     { c: false, en: 'Frost is an One Piece character.', pt: 'Frost é um personagem de One Piece.', es: 'Frost es un personaje de One Piece.', pl: 'Frost jest postacią z One Piece.' },
     { c: false, en: 'The bounty of a Pirate reflects his strength.', pt: 'A recompensa de um pirata reflete sua força.', es: 'La recompensa de un pirata refleja su fuerza.', pl: 'Nagroda za pirata odzwierciedla jego siłę.' },
     { c: false, en: 'Franky was the first cyborg to appear in the series.', pt: 'Franky foi o primeiro ciborgue a aparecer na série.', es: 'Franky fue el primer cyborg en aparecer en la serie.', pl: 'Franky był pierwszym cyborgiem w serii.' },
     { c: false, en: "Teach's favorite food is apple pie.", pt: 'A comida favorita de Teach é torta de maçã.', es: 'La comida favorita de Teach es pastel de manzana.', pl: 'Ulubionym jedzeniem Teach\'a jest szarlotka.' },
     { c: false, en: "Monkey D. Garp is Luffy's real father.", pt: 'Monkey D. Garp é o pai biológico de Luffy.', es: 'Monkey D. Garp es el padre biológico de Luffy.', pl: 'Monkey D. Garp jest biologicznym ojcem Luffy\'ego.' },
     { c: false, en: "Pandaman is in Trafalgar Law's Crew.", pt: 'Pandaman está na tripulação de Trafalgar Law.', es: 'Pandaman está en la tripulación de Trafalgar Law.', pl: 'Pandaman jest w załodze Trafalgara Law.' },
     { c: false, en: 'Bepo is not a Mink.', pt: 'Bepo não é um Mink.', es: 'Bepo no es un Mink.', pl: 'Bepo nie jest Minkiem.' },
     { c: false, en: 'Gin has the same voice actor as Kuro.', pt: 'Gin tem o mesmo dublador que Kuro.', es: 'Gin tiene el mismo actor de voz que Kuro.', pl: 'Gin ma tego samego aktora głosowego co Kuro.' },
     { c: false, en: 'Perona has the same voice actress as Koala.', pt: 'Perona tem a mesma dubladora que Koala.', es: 'Perona tiene la misma actriz de voz que Koala.', pl: 'Perona ma tę samą aktorkę głosową co Koala.' },
     { c: false, en: 'Boa Hancock has the same voice actress as Reiju.', pt: 'Boa Hancock tem a mesma dubladora que Reiju.', es: 'Boa Hancock tiene la misma actriz de voz que Reiju.', pl: 'Boa Hancock ma tę samą aktorkę głosową co Reiju.' },
     { c: false, en: 'Dracule Mihawk had only one voice actor in the entire anime.', pt: 'Dracule Mihawk teve apenas um dublador em todo o anime.', es: 'Dracule Mihawk solo tuvo un actor de voz en todo el anime.', pl: 'Dracule Mihawk miał tylko jednego aktora głosowego w całym anime.' },
     { c: false, en: 'Luffy got his scar from a tiger in Foosha Village.', pt: 'Luffy ganhou sua cicatriz de um tigre na Vila Foosha.', es: 'Luffy se hizo la cicatriz por un tigre en la aldea Foosha.', pl: 'Luffy dostał bliznę od tygrysa we wsi Foosha.' },
     { c: false, en: "Sandai Kitetsu (One of Zoro's sword) rusted.", pt: 'Sandai Kitetsu (uma das espadas de Zoro) enferrujou.', es: 'Sandai Kitetsu (una de las espadas de Zoro) se oxidó.', pl: 'Sandai Kitetsu (jeden z mieczy Zoro) zardzewiał.' },
     { c: false, en: 'Ryuma had the shadow of a Legendary Wano samurai.', pt: 'Ryuma tinha a sombra de um samurai lendário de Wano.', es: 'Ryuma tenía la sombra de un samurái legendario de Wano.', pl: 'Ryuma miał cień legendarnego samuraja z Wano.' },
     { c: false, en: "Bartolomeo's Barrier broke only one time during the anime.", pt: 'A barreira de Bartolomeo quebrou apenas uma vez no anime.', es: 'La barrera de Bartolomeo solo se rompió una vez en el anime.', pl: 'Bariera Bartolomeo pękła tylko raz w anime.' },
     { c: false, en: 'Bartolomeo has the Nikyu Nikyu no Mi devil fruit.', pt: 'Bartolomeo possui a Akuma no Mi Nikyu Nikyu no Mi.', es: 'Bartolomeo tiene la Fruta del Diablo Nikyu Nikyu no Mi.', pl: 'Bartolomeo ma Diabelski Owoc Nikyu Nikyu no Mi.' }
   ];
   
   var FQ_KEY = 'foxy-quiz-weekly';
   
   var FQ_LANG = 'pt';
   var QUIZ_DATA = [];
   var IDX = [];
   
   function norm(s) {
     return s.normalize('NFD').replace(/[\u0300-\u036f]/g, ).toLowerCase();
   }
   
   function weekKey() {
     var now  = new Date();
     var diff = (now.getDay() - 5 + 7) % 7;
     var fri  = new Date(now);
     fri.setDate(now.getDate() - diff);
     return fri.toISOString().slice(0, 10);
   }
   
   function esc(s) {
     return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
   }
   
   function highlight(texto, tokens) {
     var n = norm(texto);
     var ranges = [], i, t, idx, pos;
     for (i = 0; i < tokens.length; i++) {
       t = tokens[i]; idx = 0;
       while ((pos = n.indexOf(t, idx)) !== -1) {
         ranges.push([pos, pos + t.length]);
         idx = pos + 1;
       }
     }
     if (!ranges.length) return esc(texto);
     ranges.sort(function(a, b) { return a[0] - b[0]; });
     var merged = [], r, last;
     for (i = 0; i < ranges.length; i++) {
       r = ranges[i]; last = merged[merged.length - 1];
       if (last && r[0] <= last[1]) { if (r[1] > last[1]) last[1] = r[1]; }
       else { merged.push([r[0], r[1]]); }
     }
     var out = , cur = 0, seg;
     for (i = 0; i < merged.length; i++) {
       seg = merged[i];
       out += esc(texto.slice(cur, seg[0]));
       out += '' + esc(texto.slice(seg[0], seg[1])) + '';
       cur  = seg[1];
     }
     return out + esc(texto.slice(cur));
   }
   
   function rebuildIndex() {
     var lang = FQ_LANG;
     var ii, row, t;
     QUIZ_DATA = [];
     for (ii = 0; ii < QUIZ_CORE.length; ii++) {
       row = QUIZ_CORE[ii];
       t = row[lang] || row.en;
       QUIZ_DATA.push({ correto: row.c, texto: t });
     }
     IDX = [];
     for (ii = 0; ii < QUIZ_DATA.length; ii++) {
       IDX.push({ e: QUIZ_DATA[ii], n: norm(QUIZ_DATA[ii].texto) });
     }
   }
   
   function applyUi() {
     var ui = FQ_STRINGS[FQ_LANG] || FQ_STRINGS.en;
     document.getElementById('fq-sub').textContent = ui.sub;
     document.getElementById('fq-lang-label').textContent = ui.langLabel;
     elInput.placeholder = ui.placeholder;
     elClear.setAttribute('aria-label', ui.clearAria);
     elTip.textContent = ui.tip;
     elNores.textContent = ui.nores;
     var on = elChk.classList.contains('on');
     if (!on) elLbl.textContent = ui.weeklyOff;
     elLang.value = FQ_LANG;
   }
   
   var elWidget = document.getElementById('fq-widget');
   var elWeekly  = document.getElementById('fq-weekly');
   var elChk     = document.getElementById('fq-chk');
   var elLbl     = document.getElementById('fq-lbl');
   var elInput   = document.getElementById('fq-input');
   var elClear   = document.getElementById('fq-clear');
   var elStats   = document.getElementById('fq-stats');
   var elTip     = document.getElementById('fq-tip');
   var elNores   = document.getElementById('fq-nores');
   var elResults = document.getElementById('fq-results');
   var elLang    = document.getElementById('fq-lang-select');
   
   function resolveInitialLang() {
     var d = elWidget.getAttribute('data-fq-lang');
     if (d && FQ_STRINGS[d]) return d;
     try {
       var s = localStorage.getItem(FQ_LANG_KEY);
       if (s && FQ_STRINGS[s]) return s;
     } catch (e) {}
     var nav = (navigator.language || navigator.userLanguage || 'en').slice(0, 2).toLowerCase();
     if (nav === 'pt') return 'pt';
     if (nav === 'es') return 'es';
     if (nav === 'pl') return 'pl';
     return 'en';
   }
   
   FQ_LANG = resolveInitialLang();
   rebuildIndex();
   applyUi();
   
   elLang.addEventListener('change', function() {
     FQ_LANG = elLang.value;
     try { localStorage.setItem(FQ_LANG_KEY, FQ_LANG); } catch (e) {}
     rebuildIndex();
     applyUi();
     elInput.dispatchEvent(new Event('input'));
   });
   
   elWeekly.addEventListener('click', function() {
     var ui = FQ_STRINGS[FQ_LANG] || FQ_STRINGS.en;
     var loc = ui.locale;
     var on = elChk.classList.contains('on');
     if (on) {
       elChk.classList.remove('on');
       elLbl.classList.remove('on');
       elLbl.textContent = ui.weeklyOff;
       try { localStorage.removeItem(FQ_KEY); } catch(e) {}
     } else {
       var d = new Date();
       var ds = d.toLocaleDateString(loc) + ' (' + d.toLocaleDateString(loc, { weekday: 'long' }) + ')';
       elChk.classList.add('on');
       elLbl.classList.add('on');
       elLbl.textContent = ui.weeklyDone + ds;
       try { localStorage.setItem(FQ_KEY, JSON.stringify({ weekKey: weekKey(), date: ui.weeklyDone + ds })); } catch(e) {}
     }
   });
   
   elClear.addEventListener('click', function() {
     elInput.value = ;
     elInput.dispatchEvent(new Event('input'));
     elInput.focus();
   });
   
   elInput.addEventListener('input', function() {
     var raw = elInput.value;
     var trimmed = raw.trim();
   
     if (raw.length > 0) {
       elClear.classList.remove('hidden');
     } else {
       elClear.classList.add('hidden');
     }
   
     if (trimmed.length < 2) {
       elStats.classList.add('hidden');
       elTip.classList.remove('hidden');
       elNores.classList.add('hidden');
       elResults.classList.add('hidden');
       elResults.innerHTML = ;
       return;
     }
   
     var parts = trimmed.split(/\s+/);
     var tokens = [];
     for (var i = 0; i < parts.length; i++) {
       if (parts[i]) tokens.push(norm(parts[i]));
     }
   
     var hits = [], item, j, ok;
     for (var k = 0; k < IDX.length; k++) {
       item = IDX[k]; ok = true;
       for (j = 0; j < tokens.length; j++) {
         if (item.n.indexOf(tokens[j]) === -1) { ok = false; break; }
       }
       if (ok) hits.push(item.e);
     }
   
     elTip.classList.add('hidden');
   
     if (hits.length === 0) {
       elStats.classList.add('hidden');
       elResults.classList.add('hidden');
       elResults.innerHTML = ;
       elNores.classList.remove('hidden');
       return;
     }
   
     var tc = 0, fc = 0;
     for (var x = 0; x < hits.length; x++) {
       if (hits[x].correto) tc++; else fc++;
     }
   
     elStats.innerHTML = fqStatsHtml(hits.length, tc, fc, FQ_LANG);
     elStats.classList.remove('hidden');
   
     var html = , h, cls, sym;
     for (var y = 0; y < hits.length; y++) {
       h   = hits[y];
       cls = h.correto ? 'vd' : 'fa';
       sym = h.correto ? '✓' : '✗';

html += '

  • ' + '' + sym + '' + '' + highlight(h.texto, tokens) + '' + '
  • '; } elResults.innerHTML = html; elResults.classList.remove('hidden'); elNores.classList.add('hidden'); }); (function() { try { var raw = localStorage.getItem(FQ_KEY); if (!raw) return; var obj = JSON.parse(raw); if (obj.weekKey !== weekKey()) return; elChk.classList.add('on'); elLbl.classList.add('on'); elLbl.textContent = obj.date; } catch(e) {} })(); /* {/literal} */ </script>