[RESENHA #1010] O patrulheiro literário: conspiração em literária, de Vinícius Lima Costa

Foto: Arte digital / Códice Editorial  APRESENTAÇÃO Todos os escritores permanecem vivos em suas obras para além de sua existência, mas será...

Destaques de fevereiro da editora fósforo e circulo de poemas

Índice, uma história do SOBRE O LIVRO Qual a relação entre Santo Agostinho e as hashtags? O que os sermões de padres do século 13 têm a ver ...

Entrevista com o autor M.E.KRIEGER, autor de ❝contos sádicos❞

Foto: Colagem digital / Divulgação O autor Moises Krieger, conhecido como M.E.KRIEGER, é um talentoso escritor de livros de suspense/terror,...

[RESENHA #1009] Dengue boy: a infância do mundo, de Michel Nieva

RESENHA Uma história sobre um futuro cyberpunk tropical e latino, com Dengue boy: A infância do mundo, Michel Nieva se revela uma das vozes ...

[RESENHA #1008] Nunca confie em uma geminiana, de Freja Nicole Woolf

Foto: Colagem Digital / Divulgação APRESENTAÇÃO Horóscopos preveem o futuro... certo? Em  Nunca confie em uma geminiana  , a jovem Cat Phili...

[RESENHA #1007] Gwen e Art não estão apaixonados, de Lex Croucher

Foto: Arte gráfica / Divulgação APRESENTAÇÃO Uma comédia romântica medieval queer sobre amores, amizade e a coragem necessária para fazer hi...

[RESENHA #1006] Os afegãos: Três vidas de um país marcado pelo Talibã, de Åsne Seierstad

Foto: Colagem Digital / Divulgação APRESENTAÇÃO Em  Os afegãos , a renomada jornalista Åsne Seierstad mergulha na intricada tapeçaria da his...

ULTIMAS RESENHAS PUBLICADAS

// { const speakBtn = document.getElementById('speak-button'); let isSpeaking = false; let synth = window.speechSynthesis; let utterance; if (speakBtn) { speakBtn.addEventListener('click', () => { if (!isSpeaking) { // Seleciona o texto do post const postContent = document.querySelector('.post-body').innerText; utterance = new SpeechSynthesisUtterance(postContent); utterance.lang = 'pt-BR'; utterance.rate = 1.0; // Velocidade da voz // Muda o ícone para "Parar" speakBtn.innerHTML = ""; speakBtn.classList.add('bg-hot-pink', 'text-white'); synth.speak(utterance); isSpeaking = true; // Quando a leitura terminar utterance.onend = () => { resetSpeakButton(); }; } else { synth.cancel(); resetSpeakButton(); } }); } function resetSpeakButton() { speakBtn.innerHTML = ""; speakBtn.classList.remove('bg-hot-pink', 'text-white'); isSpeaking = false; } }); //]]>