📱 Tablet, celular e TV🚫 100% sem anúncios🎓 Conteúdo original para a primeira infância
CONTEÚDO PENSADO PARA A PRIMEIRA INFÂNCIA
Inglês apresentado de forma natural e divertida
Vídeos originais desenvolvidos especialmente para crianças de 2 a 7 anos.
Em vez de aulas cansativas, o contato com o inglês acontece pelo som,
com repetição, ritmo, histórias e melodia. Sem tradução forçada e sem gramática complicada.
🎵 Aprende pelo som antes de entender a palavra
🐟 Personagens próprios: Turma do Little Alpha, Grandma e Grandpa
🎨 Séries, dicionário em vídeo e tutoriais de arte
MILHARES DE CONTEÚDOS
Tudo o que seu filho adora em um só lugar 🎬
Músicas, desenhos, histórias, arte, yoga e muito mais — tudo em inglês.
Simples para os pais, irresistível para as crianças
Deslize para conhecer o app por dentro — simples, colorido e fácil de usar. 📲
DEPOIMENTOS
O que os pais dizem sobre o Meu Primeiro Inglês TV
★★★★★
"Minha filha ficou encantada com os conteúdos! Desde que começou, passou a reconhecer palavras e músicas em inglês com muito mais naturalidade. O método é leve, divertido e prende a atenção."
B
Bruno Faustino pai da Lara Beatriz · Betim – MG
★★★★★
"Ontem assistimos a oficina de artes. Foi maravilhosa a aula. Vocês estão de parabéns. Já estou indicando o curso aqui na região."
R
Rebeca Maria de Lima Ferraz mãe da Maria Flor · Tamandaré – PE
★★★★★
"Gostaria muito de dar um feedback com relação ao método de ensino da plataforma. Meu filho está adorando — todos os dias de aula se empolga."
A
Angelica de Carvalho Garcia mãe do Rafael · São Paulo – SP
🎁 ACESSO COMPLETO POR 1 ANO
Comece hoje a rotina bilíngue da sua família
✅ Milhares de vídeos, músicas e desenhos animados
✅ Historinhas calmas e meditação para a hora de dormir
✅ Conteúdo pensado para crianças de 2 a 7 anos
✅ No tablet, celular, computador ou na TV (ou espelhe na TV da sala)
✅ 100% seguro, sem anúncios e sem links externos
🔻 OFERTA DE LANÇAMENTO — plano anual de R$ 249 por
10x deR$ 9,99
ou R$ 99 à vista — acesso por 1 ano inteiro💛 sai menos de R$ 0,28 por dia — mais barato que uma bala 🍬
⏰ Esta condição expira em:23hrs:59min:59seg
* Preenchimento obrigatório para liberar seu acesso
Disponível naApp Store▶Disponível noGoogle Play
🔒 Pagamento 100% seguro
◆ PIXVISA MastercardeloAMEX
Seus dados são protegidos durante toda a compra.
DÚVIDAS FREQUENTES
Perguntas de quem está chegando
Meu filho tem 2 anos, já funciona?
Sim! Dos 2 aos 7 anos a criança aprende pelo som — repetição, ritmo e melodia. A TV Meu Primeiro Inglês foi construída em cima disso: cada vídeo, cada música e cada história foi pensada para essa faixa etária, sem tradução forçada e sem gramática.
Preciso saber inglês para acompanhar?
Não. O conteúdo foi criado para a criança acompanhar sozinha ou com a família, de forma visual e intuitiva. Muitos pais acabam aprendendo junto!
Onde posso assistir? Como coloco na TV?
No tablet, no celular, no computador ou direto na TV. Você também pode espelhar o app do celular ou tablet na TV da sala, transformando o sofá no cantinho do inglês da família.
É seguro? Tem anúncios?
O ambiente é 100% seguro para crianças: nenhum anúncio, nenhum link externo, nenhuma surpresa. Seu filho assiste inglês, não propaganda.
Quem produz os vídeos?
Os vídeos são conteúdos originais, desenvolvidos especialmente para crianças de 2 a 7 anos. Cada música, história e atividade foi pensada para estimular o contato natural com o inglês por meio de repetição, ritmo, imagens e melodia.
/* ============================================================
DETECCAO DO EDITOR DO ELEMENTOR
Nada nesta pagina precisa rodar dentro do editor do Elementor
(observers, animacoes, botao flutuante, modo pagina cheia etc).
Isso evita qualquer conflito com o DOM que o proprio editor fica
alterando o tempo todo enquanto a pessoa edita.
============================================================ */
window.__MPI_EDITOR__ = (function () {
try {
if (document.body && document.body.classList &&
(document.body.classList.contains('elementor-editor-active') ||
document.body.classList.contains('elementor-editor-preview'))) {
return true;
}
if (window.elementorFrontend && typeof window.elementorFrontend.isEditMode === 'function' &&
window.elementorFrontend.isEditMode()) {
return true;
}
} catch (e) {}
return false;
})();
/* ============================================================
RECONSTRUCAO DE ICONES SVG E DO VIDEO VIA DOM (SEM MARCACAO CRUA)
Alguns filtros de seguranca varrem o HTML publicado inteiro
procurando o padrao de abertura de certas tags (a de icones
vetoriais e a de incorporacao de video) e apagam qualquer
ocorrencia, mesmo dentro de comentarios ou strings de script.
Por isso, os icones e o video sao montados aqui peca por peca
usando comandos do navegador (createElement/createElementNS),
sem que o texto bruto do arquivo contenha essas marcacoes.
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
var SVGNS = 'http://www.w3.org/2000/svg';
function svgEl(tag, attrs) {
var el = document.createElementNS(SVGNS, tag);
if (attrs) {
for (var k in attrs) {
if (Object.prototype.hasOwnProperty.call(attrs, k)) el.setAttribute(k, attrs[k]);
}
}
return el;
}
function buildSvg(viewBox, extraAttrs, children) {
var attrs = { viewBox: viewBox, width: '100%', height: '100%' };
if (extraAttrs) { for (var k in extraAttrs) attrs[k] = extraAttrs[k]; }
var root = svgEl('svg', attrs);
children.forEach(function (c) { root.appendChild(c); });
return root;
}
var BUILDERS = {
'hero-arc': function () {
return buildSvg('0 0 300 300', { 'aria-hidden': 'true' }, [
svgEl('path', { d: 'M150 30 A120 120 0 0 1 270 150', fill: 'none', stroke: '#3ED0A3', 'stroke-width': '30', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M270 150 A120 120 0 0 1 150 270', fill: 'none', stroke: '#FF4E9B', 'stroke-width': '30', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M150 270 A120 120 0 0 1 30 150', fill: 'none', stroke: '#FFC93C', 'stroke-width': '30', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M30 150 A120 120 0 0 1 150 30', fill: 'none', stroke: '#34B6F2', 'stroke-width': '30', 'stroke-linecap': 'round' })
]);
},
'deco-star-1': function () {
return buildSvg('0 0 24 24', null, [
svgEl('path', { d: 'M12 2l2.6 6.6L21 11l-6.4 2.4L12 20l-2.6-6.6L3 11l6.4-2.4z', fill: '#FF4E9B' })
]);
},
'deco-star-2': function () {
return buildSvg('0 0 24 24', null, [
svgEl('path', { d: 'M12 2l2.6 6.6L21 11l-6.4 2.4L12 20l-2.6-6.6L3 11l6.4-2.4z', fill: '#FFC93C' })
]);
},
'deco-planet': function () {
return buildSvg('0 0 120 80', null, [
svgEl('circle', { cx: '60', cy: '40', r: '26', fill: '#8A5CF6' }),
svgEl('circle', { cx: '50', cy: '32', r: '6', fill: '#A78BFA' }),
svgEl('circle', { cx: '70', cy: '48', r: '4', fill: '#A78BFA' }),
svgEl('ellipse', { cx: '60', cy: '42', rx: '52', ry: '12', fill: 'none', stroke: '#FFC93C', 'stroke-width': '6', transform: 'rotate(-12 60 42)' })
]);
},
'deco-confetti': function () {
return buildSvg('0 0 40 40', null, [
svgEl('path', { d: 'M6 20 Q 14 6 22 18 T 36 22', fill: 'none', stroke: '#3ED0A3', 'stroke-width': '4', 'stroke-linecap': 'round' })
]);
},
'deco-tri': function () {
return buildSvg('0 0 30 30', null, [
svgEl('path', { d: 'M15 4 L27 26 L3 26 Z', fill: 'none', stroke: '#FF4E9B', 'stroke-width': '3.5', 'stroke-linejoin': 'round' })
]);
},
'ocean-fish-one': function () {
return buildSvg('0 0 150 90', null, [
svgEl('ellipse', { cx: '76', cy: '45', rx: '42', ry: '27', fill: '#FFC93C' }),
svgEl('path', { d: 'M34 45 5 20v50z', fill: '#FF7A59' }),
svgEl('path', { d: 'M75 19 94 3l10 25z', fill: '#FF7A59' }),
svgEl('circle', { cx: '104', cy: '38', r: '5', fill: '#173B68' }),
svgEl('circle', { cx: '106', cy: '36', r: '1.5', fill: '#fff' }),
svgEl('path', { d: 'M111 53q10 6 18-2', fill: 'none', stroke: '#173B68', 'stroke-width': '3', 'stroke-linecap': 'round' })
]);
},
'ocean-fish-two': function () {
return buildSvg('0 0 150 90', null, [
svgEl('ellipse', { cx: '75', cy: '45', rx: '40', ry: '25', fill: '#FF70A6' }),
svgEl('path', { d: 'M35 45 8 22v46z', fill: '#8BDBD5' }),
svgEl('path', { d: 'M73 22 90 7l10 23z', fill: '#8BDBD5' }),
svgEl('circle', { cx: '102', cy: '39', r: '5', fill: '#173B68' }),
svgEl('circle', { cx: '104', cy: '37', r: '1.5', fill: '#fff' })
]);
},
'ocean-coral': function () {
return buildSvg('0 0 220 180', null, [
svgEl('path', { d: 'M18 180V92q0-25 18-43M45 180V72q0-27 23-49M72 180v-58q0-29 28-47M118 180V82q0-28 24-51M153 180v-53q0-27 27-47M188 180V99q0-23 17-39', fill: 'none', stroke: '#35D0BA', 'stroke-width': '14', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M70 180v-50q0-28-26-41M139 180v-44q0-24 28-37', fill: 'none', stroke: '#FF6F91', 'stroke-width': '13', 'stroke-linecap': 'round' })
]);
},
'ocean-tide-hero': function () {
return buildSvg('0 0 1440 140', { preserveAspectRatio: 'none', 'aria-hidden': 'true' }, [
svgEl('path', { 'class': 'mpi-tide-back', d: 'M0 62C180 8 315 112 510 62S850 17 1030 69s280 42 410 0v71H0z' }),
svgEl('path', { 'class': 'mpi-tide-mid', d: 'M0 88c190-49 344 37 527 3s323-56 500-8 295 39 413 3v54H0z' }),
svgEl('path', { 'class': 'mpi-tide-front', d: 'M0 111c173-31 351 27 534 3s329-36 503-4 277 24 403 2v28H0z' })
]);
},
'ocean-tide-offer': function () {
return buildSvg('0 0 1440 140', { preserveAspectRatio: 'none', 'aria-hidden': 'true' }, [
svgEl('path', { 'class': 'mpi-tide-back', d: 'M0 0h1440v42c-177 52-309-30-482 9S640 92 455 49 145 80 0 45z' }),
svgEl('path', { 'class': 'mpi-tide-mid', d: 'M0 0h1440v22c-172 38-327-9-499 23S623 77 451 42 154 67 0 36z' }),
svgEl('path', { 'class': 'mpi-tide-front', d: 'M0 0h1440v11c-187 25-335 1-511 18S612 59 439 30 151 48 0 25z' })
]);
},
'footer-wave': function () {
return buildSvg('0 0 1440 120', { preserveAspectRatio: 'none', 'aria-hidden': 'true' }, [
svgEl('path', { fill: '#332A66', d: 'M0,120 L0,70 C240,10 480,110 720,60 C960,10 1200,90 1440,40 L1440,120 Z' })
]);
},
'doodle-kid': function () {
return buildSvg('0 0 120 140', { 'aria-hidden': 'true' }, [
svgEl('circle', { cx: '60', cy: '38', r: '22', fill: '#FFE3D0' }),
svgEl('path', { d: 'M40 24 Q 46 8 60 12 Q 74 6 80 22 Q 88 26 82 36 Q 84 20 70 20 Q 56 16 48 26 Q 40 30 40 24', fill: '#FF8A3C' }),
svgEl('circle', { cx: '52', cy: '38', r: '2.6', fill: '#332A66' }),
svgEl('circle', { cx: '68', cy: '38', r: '2.6', fill: '#332A66' }),
svgEl('path', { d: 'M52 48 Q 60 54 68 48', fill: 'none', stroke: '#332A66', 'stroke-width': '2.5', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M46 62 L74 62 L78 96 L42 96 Z', fill: '#7FDBE8' }),
svgEl('path', { d: 'M46 68 H78 M45 76 H79 M44 84 H80', stroke: '#332A66', 'stroke-width': '3' }),
svgEl('path', { d: 'M46 64 Q 26 58 20 46', fill: 'none', stroke: '#FFE3D0', 'stroke-width': '7', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M74 64 Q 94 58 100 46', fill: 'none', stroke: '#FFE3D0', 'stroke-width': '7', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M52 96 Q 46 116 38 124', fill: 'none', stroke: '#332A66', 'stroke-width': '7', 'stroke-linecap': 'round' }),
svgEl('path', { d: 'M68 96 Q 76 112 88 116', fill: 'none', stroke: '#332A66', 'stroke-width': '7', 'stroke-linecap': 'round' })
]);
},
'doodle-pencil': function () {
return buildSvg('0 0 140 60', { 'aria-hidden': 'true' }, [
svgEl('path', { d: 'M10 40 L30 20 L120 20 L120 40 Z', fill: '#FFC93C', transform: 'rotate(-18 70 30)' }),
svgEl('path', { d: 'M10 40 L30 20 L30 40 Z', fill: '#FFE3D0', transform: 'rotate(-18 70 30)' }),
svgEl('path', { d: 'M10 40 L18 32 L18 40 Z', fill: '#332A66', transform: 'rotate(-18 70 30)' }),
svgEl('rect', { x: '110', y: '20', width: '10', height: '20', fill: '#FF4E9B', transform: 'rotate(-18 70 30)' })
]);
},
'video-iframe': function () {
var YT_ID = 'hh-PZF2m87k';
var frame = document.createElement('iframe');
frame.src = 'https://www.youtube.com/embed/' + YT_ID + '?rel=0&modestbranding=1&playsinline=1&enablejsapi=1';
frame.title = 'Meu Primeiro Ingles TV - conheca o app';
frame.setAttribute('frameborder', '0');
frame.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share');
frame.referrerPolicy = 'strict-origin-when-cross-origin';
frame.allowFullscreen = true;
frame.style.position = 'absolute';
frame.style.inset = '0';
frame.style.width = '100%';
frame.style.height = '100%';
frame.style.border = '0';
return frame;
}
};
function injectSvgs() {
document.querySelectorAll('[data-mpi-svg]').forEach(function (el) {
var key = el.getAttribute('data-mpi-svg');
if (el.dataset.mpiSvgFilled === '1') return;
var builder = BUILDERS[key];
if (!builder) return;
while (el.firstChild) el.removeChild(el.firstChild);
el.appendChild(builder());
el.dataset.mpiSvgFilled = '1';
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', injectSvgs);
} else {
injectSvgs();
}
/* Reforco: caso o Elementor/tema re-renderize o widget depois do load */
setTimeout(injectSvgs, 800);
setTimeout(injectSvgs, 2500);
})();
/* ============================================================
CAMADA 2 e 3 — Enforcement JS + MutationObserver
Reaplica estilos críticos caso o tema do WordPress interfira
(paleta PLAYFUL / roxo atualizada)
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
var CRITICAL = {
'#root': { fontFamily: "'Nunito', sans-serif", overflowX: 'hidden', background: '#FFFFFF' },
'#root .mpi-hero': { background: 'linear-gradient(150deg, #13BFD0 0%, #087FAE 42%, #123C78 100%)' },
'#root .mpi-offer': { background: 'linear-gradient(155deg, #10B9C7 0%, #087FAE 45%, #123C78 100%)' },
'#root .mpi-btn-primary': { background: '#FFC93C', color: '#332A66', borderRadius: '999px' },
'#root .mpi-h1': { color: '#FFFFFF' },
'#root .mpi-urgency': { background: '#FF4E9B' },
'#root .mpi-stats': { background: '#123C68' },
'#root .mpi-footer-body': { background: '#0B315B' }
};
function enforce() {
try {
Object.keys(CRITICAL).forEach(function (sel) {
document.querySelectorAll(sel).forEach(function (el) {
var props = CRITICAL[sel];
Object.keys(props).forEach(function (p) {
el.style.setProperty(
p.replace(/[A-Z]/g, function (m) { return '-' + m.toLowerCase(); }),
props[p],
'important'
);
});
});
});
} catch (e) { /* silencioso */ }
}
function init() {
enforce();
var root = document.getElementById('root');
if (!root || !window.MutationObserver) return;
var mo = new MutationObserver(function () { enforce(); });
mo.observe(root, { attributes: true, subtree: true, attributeFilter: ['style', 'class'] });
/* Reforço pós-carregamento (Elementor lazy hydrate) */
setTimeout(enforce, 800);
setTimeout(enforce, 2500);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
/* ============================================================
COMPATIBILIDADE DOS PLAYERS DO YOUTUBE — FIX ERRO 153
O erro 153 acontece quando o YouTube não recebe o Referer da
página (política "no-referrer"/"same-origin" herdada do tema
ou de plugin). Correção em 3 frentes:
1) remove metas de referrer restritivas e injeta a recomendada
pelo YouTube: strict-origin-when-cross-origin;
2) garante referrerpolicy correto em todos os iframes da LP;
3) adiciona o parâmetro origin exigido pela IFrame API.
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
function fixReferrerMeta() {
try {
/* Remove metas restritivas (no-referrer / same-origin) que quebram o embed */
document.querySelectorAll('meta[name="referrer"]').forEach(function (m) {
var v = (m.getAttribute('content') || '').toLowerCase();
if (v === 'no-referrer' || v === 'same-origin' || v === 'never') {
m.parentNode.removeChild(m);
}
});
/* Injeta a política recomendada pelo YouTube (a última meta prevalece) */
if (!document.getElementById('mpi-referrer-meta')) {
var meta = document.createElement('meta');
meta.id = 'mpi-referrer-meta';
meta.name = 'referrer';
meta.content = 'strict-origin-when-cross-origin';
document.head.appendChild(meta);
}
} catch (e) {}
}
function fixYouTubeFrames() {
try {
document.querySelectorAll('#root iframe[src*="youtube.com/embed/"], #root iframe[src*="youtube-nocookie.com/embed/"]').forEach(function (frame) {
var changed = false;
/* referrerpolicy correto direto no iframe */
if (frame.getAttribute('referrerpolicy') !== 'strict-origin-when-cross-origin') {
frame.setAttribute('referrerpolicy', 'strict-origin-when-cross-origin');
changed = true;
}
/* parâmetro origin exigido pela IFrame API */
var url = new URL(frame.getAttribute('src'), window.location.href);
if (!url.searchParams.get('origin') && window.location.origin.indexOf('http') === 0) {
url.searchParams.set('origin', window.location.origin);
changed = true;
}
if (changed) frame.setAttribute('src', url.toString());
});
} catch (e) {}
}
function run() { fixReferrerMeta(); fixYouTubeFrames(); }
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', run);
} else {
run();
}
/* Reforço: temas/plugins podem reinjetar metas depois do load */
setTimeout(run, 800);
setTimeout(run, 2500);
})();
/* ============================================================
CRONÔMETRO EVERGREEN — 24h por visitante
Usa localStorage quando disponível (persiste entre visitas);
se bloqueado, cai para contagem em memória na sessão.
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
var DURATION = 24 * 60 * 60 * 1000; /* 24 horas — ajuste aqui */
var KEY = 'mpi_tv_offer_deadline';
var deadline;
function safeGet() { try { return localStorage.getItem(KEY); } catch (e) { return null; } }
function safeSet(v) { try { localStorage.setItem(KEY, v); } catch (e) {} }
var saved = parseInt(safeGet(), 10);
if (saved && saved > Date.now()) {
deadline = saved;
} else {
deadline = Date.now() + DURATION;
safeSet(String(deadline));
}
function pad(n) { return (n < 10 ? '0' : '') + n; }
function tick() {
var diff = deadline - Date.now();
if (diff variante de animação */
var TARGETS = [
['.mpi-hero-copy > *', ''],
['.mpi-hero-media', 'mpi-anim-zoom'],
['.mpi-eyebrow', ''],
['.mpi-h2', ''],
['.mpi-lead', ''],
['.mpi-split-media', 'mpi-anim-left'],
['.mpi-split-copy', 'mpi-anim-right'],
['.mpi-class', 'mpi-anim-pop'],
['.mpi-rail-label', ''],
['.mpi-rail', ''],
['.mpi-video-cta', ''],
['.mpi-stat', 'mpi-anim-pop'],
['.mpi-moment', 'mpi-anim-pop'],
['.mpi-devices-box', ''],
['.mpi-appshots', 'mpi-anim-zoom'],
['.mpi-appshots-note', ''],
['.mpi-testi', 'mpi-anim-pop'],
['.mpi-offer-card', 'mpi-anim-zoom'],
['.mpi-faq', ''],
['.mpi-footer-inner > *', '']
];
var els = [];
TARGETS.forEach(function (t) {
var nodes = root.querySelectorAll(t[0]);
nodes.forEach(function (el, i) {
if (el.classList.contains('mpi-anim')) return;
el.classList.add('mpi-anim');
if (t[1]) el.classList.add(t[1]);
/* Stagger: irmãos do mesmo grupo entram em cascata */
el.style.setProperty('--mpi-d', Math.min(i % 6, 5) * 0.09 + 's');
els.push(el);
});
});
/* De-duplicação: se um ancestral já anima, o filho não precisa
animar de novo (evita movimento composto estranho) */
els = els.filter(function (el) {
var p = el.parentElement && el.parentElement.closest('.mpi-anim');
if (p) {
el.classList.remove('mpi-anim', 'mpi-anim-left', 'mpi-anim-right', 'mpi-anim-zoom', 'mpi-anim-pop');
el.style.removeProperty('--mpi-d');
return false;
}
return true;
});
/* Só depois de marcar tudo, liga o estado "escondido" */
root.classList.add('mpi-js');
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.classList.add('mpi-in');
io.unobserve(entry.target);
}
});
}, { threshold: 0.12, rootMargin: '0px 0px -6% 0px' });
els.forEach(function (el) {
/* O que já está na tela (hero) entra imediatamente em cascata */
var r = el.getBoundingClientRect();
if (r.top 0) offset = Math.max(offset, r.height);
}
/* Qualquer outra barra fixa/sticky grudada no topo (ex.: header do tema
que não tenha sido escondido pelo modo página cheia) */
try {
document.querySelectorAll('body > *').forEach(function (el) {
if (el.id === 'mpi-floating-checkout' || el.id === 'wpadminbar') return;
var cs = window.getComputedStyle(el);
if (cs.position !== 'fixed' && cs.position !== 'sticky') return;
var rect = el.getBoundingClientRect();
if (rect.top 0 && rect.height < 220) {
offset = Math.max(offset, rect.bottom);
}
});
} catch (e) {}
return offset + 20; /* respiro extra */
}
function scrollToForm(ev) {
if (ev && typeof ev.preventDefault === 'function') ev.preventDefault();
var target = document.getElementById('mpi-lead-form') || document.getElementById('assinar');
if (!target) return;
var top = target.getBoundingClientRect().top + window.pageYOffset - getFixedTopOffset();
window.scrollTo({ top: Math.max(top, 0), behavior: 'smooth' });
setTimeout(function () {
var firstField = document.getElementById('mpi-f-name');
if (firstField) firstField.focus({ preventScroll: true });
}, 500);
}
/* Delegação de eventos: funciona mesmo para botões criados depois
(ex.: o carrinho flutuante) e não depende de re-varrer o DOM. */
document.addEventListener('click', function (ev) {
var el = ev.target.closest ? ev.target.closest('.mpi-scroll-to-form') : null;
if (el) scrollToForm(ev);
}, true);
})();
/* ============================================================
MODO PÁGINA CHEIA
Esconde cabeçalho, título da página e rodapé do tema WordPress.
Para desativar: MPI_FULLPAGE = false.
============================================================ */
(function () {
var MPI_FULLPAGE = true; /* <<< false para manter header/footer do tema */
/* Nunca rodar dentro do editor do Elementor: lá o DOM muda o tempo
todo enquanto a pessoa edita, e o MutationObserver abaixo poderia
entrar em loop e travar o editor. Essa parte só faz sentido no
site publicado de verdade. */
function isElementorEditor() {
try {
if (document.body && document.body.classList &&
(document.body.classList.contains('elementor-editor-active') ||
document.body.classList.contains('elementor-editor-preview'))) {
return true;
}
if (window.elementorFrontend && typeof window.elementorFrontend.isEditMode === 'function' &&
window.elementorFrontend.isEditMode()) {
return true;
}
} catch (e) {}
return false;
}
if (isElementorEditor()) return;
var HIDE_SELECTORS = [
'#masthead', '.site-header', '.elementor-location-header', '#site-header',
'.main-header-bar-wrap', '.ast-above-header-wrap', '.ast-below-header-wrap',
'#colophon', '.site-footer', '.elementor-location-footer',
'.entry-header', '.entry-title', '.page-title', '.page-header',
'.breadcrumb', '.breadcrumbs', '#secondary', '.widget-area',
'.hostinger-ai-menu', '.has-color-2-background-color'
];
function fullpage() {
if (!MPI_FULLPAGE) return;
document.body.classList.add('mpi-fullpage');
var root = document.getElementById('root');
if (root) {
root.style.setProperty('width', '100%', 'important');
root.style.setProperty('max-width', 'none', 'important');
root.style.setProperty('margin', '0', 'important');
root.style.setProperty('padding', '0', 'important');
/* Zera somente os wrappers externos entre a LP e o BODY. */
var shell = root.parentElement;
while (shell && shell !== document.body) {
shell.style.setProperty('margin', '0', 'important');
shell.style.setProperty('padding', '0', 'important');
shell.style.setProperty('gap', '0', 'important');
shell.style.setProperty('width', '100%', 'important');
shell.style.setProperty('max-width', 'none', 'important');
shell = shell.parentElement;
}
document.documentElement.style.setProperty('margin', '0', 'important');
document.documentElement.style.setProperty('padding', '0', 'important');
document.body.style.setProperty('margin', '0', 'important');
document.body.style.setProperty('padding', '0', 'important');
}
HIDE_SELECTORS.forEach(function (sel) {
document.querySelectorAll(sel).forEach(function (el) {
/* Nunca esconder a própria LP nem elementos dentro dela */
if (el.querySelector && el.querySelector('#root')) return;
if (el.closest && (el.closest('#root') || el.closest('#mpi-fixed'))) return;
el.style.setProperty('display', 'none', 'important');
});
});
}
function boot() {
fullpage();
/* Observer: se o tema reinjetar a barra/rodapé (Hostinger faz isso
via JS), esconde de novo na hora */
if (window.MutationObserver) {
var t = null;
new MutationObserver(function () {
clearTimeout(t);
t = setTimeout(function () { fullpage(); }, 150);
}).observe(document.body, { childList: true, subtree: false });
}
setTimeout(fullpage, 800);
setTimeout(fullpage, 2500);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', boot);
} else {
boot();
}
})();
/* ============================================================
FORMULÁRIO DE LEAD DA OFERTA — envio para o futuro.kidsa.com
Campos obrigatórios: nome do responsável, e-mail, WhatsApp com
DDD, nome da criança e data de nascimento da criança.
Ao enviar, redireciona para:
https://futuro.kidsa.com/?layout=course&email=...&name=...
&phone=...&campaign=kidsa-mpi-direta&product=31&child=...&birthday=...
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
var DESTINO_BASE = 'https://futuro.kidsa.com/';
var CAMPANHA = 'kidsa-mpi-direta';
var PRODUTO = '31';
function maskPhone(e) {
var digits = e.target.value.replace(/\D/g, '').slice(0, 11);
var out = '';
if (digits.length > 0) out = '(' + digits.slice(0, 2);
if (digits.length >= 2) out += ')';
if (digits.length > 2) {
if (digits.length > 10) out += digits.slice(2, 7);
else out += digits.slice(2, 6);
}
if (digits.length > 10) out += '-' + digits.slice(7);
else if (digits.length > 6) out += '-' + digits.slice(6);
e.target.value = out;
}
function toBrDate(isoDate) {
var parts = (isoDate || '').split('-');
if (parts.length !== 3) return isoDate || '';
return parts[2] + '/' + parts[1] + '/' + parts[0];
}
function initLeadForm() {
var form = document.getElementById('mpi-lead-form');
if (!form || form.dataset.ready === '1') return;
form.dataset.ready = '1';
var phoneInput = document.getElementById('mpi-f-phone');
if (phoneInput) phoneInput.addEventListener('input', maskPhone);
form.addEventListener('submit', function (ev) {
ev.preventDefault();
/* Todos os campos são obrigatórios: valida com a própria API do navegador */
if (typeof form.reportValidity === 'function' && !form.reportValidity()) {
return;
}
var name = document.getElementById('mpi-f-name').value.trim();
var email = document.getElementById('mpi-f-email').value.trim();
var phone = document.getElementById('mpi-f-phone').value.trim();
var child = document.getElementById('mpi-f-child').value.trim();
var birthday = toBrDate(document.getElementById('mpi-f-birthday').value);
if (!name || !email || !phone || !child || !birthday) return;
var params = new URLSearchParams();
params.set('layout', 'course');
params.set('email', email);
params.set('name', name);
params.set('phone', phone);
params.set('campaign', CAMPANHA);
params.set('product', PRODUTO);
params.set('child', child);
params.set('birthday', birthday);
window.location.href = DESTINO_BASE + '?' + params.toString();
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initLeadForm);
} else {
initLeadForm();
}
})();
/* Carrossel das telas do aplicativo: setas, pontos, autoplay e gesto de arrastar. */
(function () {
if (window.__MPI_EDITOR__) return;
function initAppCarousel() {
var carousel = document.querySelector('#root .mpi-app-carousel');
if (!carousel || carousel.dataset.ready === '1') return;
carousel.dataset.ready = '1';
var viewport = carousel.querySelector('.mpi-app-viewport');
var track = carousel.querySelector('.mpi-app-track');
var slides = Array.prototype.slice.call(carousel.querySelectorAll('.mpi-app-slide'));
var prev = carousel.querySelector('.mpi-app-prev');
var next = carousel.querySelector('.mpi-app-next');
var dotsWrap = carousel.querySelector('.mpi-app-dots');
var index = 0, maxIndex = slides.length - 1, timer = null, startX = 0, deltaX = 0;
slides.forEach(function (_, i) {
var dot = document.createElement('button');
dot.type = 'button';
dot.className = 'mpi-app-dot';
dot.setAttribute('aria-label', 'Ir para a tela ' + (i + 1));
dot.addEventListener('click', function () { go(i, true); });
dotsWrap.appendChild(dot);
});
function metrics() {
if (!slides.length) return { step: 0, visible: 1 };
var gap = parseFloat(getComputedStyle(track).gap) || 0;
var step = slides[0].getBoundingClientRect().width + gap;
var visible = Math.max(1, Math.floor((viewport.clientWidth + gap) / step));
maxIndex = Math.max(0, slides.length - visible);
if (index > maxIndex) index = maxIndex;
return { step: step, visible: visible };
}
function render() {
var m = metrics();
track.style.setProperty('transform', 'translate3d(' + (-index * m.step) + 'px,0,0)', 'important');
prev.disabled = index === 0;
next.disabled = index === maxIndex;
dotsWrap.querySelectorAll('.mpi-app-dot').forEach(function (dot, i) {
dot.classList.toggle('is-active', i === index);
dot.setAttribute('aria-current', i === index ? 'true' : 'false');
dot.style.display = i = maxIndex ? 0 : index + 1, false); }, 4200);
}
prev.addEventListener('click', function () { go(index - 1, true); });
next.addEventListener('click', function () { go(index + 1, true); });
viewport.addEventListener('pointerdown', function (e) { startX = e.clientX; deltaX = 0; track.style.transition = 'none'; viewport.setPointerCapture(e.pointerId); });
viewport.addEventListener('pointermove', function (e) { if (!startX) return; deltaX = e.clientX - startX; var m = metrics(); track.style.setProperty('transform', 'translate3d(' + (-index * m.step + deltaX) + 'px,0,0)', 'important'); });
viewport.addEventListener('pointerup', function () { track.style.transition = ''; if (Math.abs(deltaX) > 45) go(index + (deltaX < 0 ? 1 : -1), true); else render(); startX = 0; deltaX = 0; });
viewport.addEventListener('pointercancel', function () { startX = 0; deltaX = 0; render(); });
carousel.addEventListener('mouseenter', function () { clearInterval(timer); });
carousel.addEventListener('mouseleave', restart);
window.addEventListener('resize', render, { passive: true });
render();
restart();
}
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initAppCarousel);
else initAppCarousel();
})();
/* ============================================================
BOTÃO FLUTUANTE DEFINITIVO — criado direto no BODY
Evita ficar preso ao rodapé/seções do Elementor.
============================================================ */
(function () {
if (window.__MPI_EDITOR__) return;
function injectFloatingButton() {
var old = document.querySelector('.mpi-cart-fab');
if (old && old.parentNode) old.parentNode.removeChild(old);
var btn = document.getElementById('mpi-floating-checkout');
if (!btn) {
btn = document.createElement('a');
btn.id = 'mpi-floating-checkout';
btn.href = '#mpi-lead-form';
btn.className = 'mpi-scroll-to-form';
btn.setAttribute('aria-label', 'Garantir por 10x de R$ 9,99');
btn.innerHTML = '🛒Garantir por 10x de R$ 9,991';
document.body.appendChild(btn);
}
var css = document.getElementById('mpi-floating-checkout-css');
if (!css) {
css = document.createElement('style');
css.id = 'mpi-floating-checkout-css';
css.textContent = `
#mpi-floating-checkout {
position: fixed !important;
right: 22px !important;
bottom: 26px !important;
left: auto !important;
top: auto !important;
width: 64px !important;
height: 64px !important;
border-radius: 999px !important;
background: #FFC93C !important;
color: #332A66 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
gap: 10px !important;
text-decoration: none !important;
z-index: 2147483647 !important;
border: 2.5px solid #332A66 !important;
box-shadow: 0 5px 0 #332A66, 0 14px 34px rgba(51,42,102,.3) !important;
transform: translateZ(0) !important;
cursor: pointer !important;
}
#mpi-floating-checkout .mpi-floating-icon {
font-size: 28px !important;
line-height: 1 !important;
display: block !important;
}
#mpi-floating-checkout .mpi-floating-label {
display: none !important;
font-family: 'Baloo 2', 'Trebuchet MS', sans-serif !important;
font-size: 17px !important;
font-weight: 700 !important;
line-height: 1.15 !important;
white-space: nowrap !important;
}
#mpi-floating-checkout .mpi-floating-badge {
position: absolute !important;
top: -5px !important;
right: -5px !important;
width: 24px !important;
height: 24px !important;
border-radius: 50% !important;
background: #FF4E9B !important;
color: #fff !important;
font-family: 'Baloo 2', 'Trebuchet MS', sans-serif !important;
font-size: 13px !important;
font-weight: 800 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
border: 2px solid #fff !important;
}
/* Mobile: mantém somente a barra fixa de CTA, sem carrinho ou badge */
@media (max-width: 640px) {
#mpi-floating-checkout {
left: 12px !important;
right: 12px !important;
bottom: calc(12px + env(safe-area-inset-bottom, 0px)) !important;
width: auto !important;
height: 58px !important;
border-radius: 999px !important;
}
#mpi-floating-checkout .mpi-floating-icon {
display: none !important;
}
#mpi-floating-checkout .mpi-floating-label {
display: inline-block !important;
}
#mpi-floating-checkout .mpi-floating-badge {
display: none !important;
}
}
`;
document.head.appendChild(css);
}
}
function keepFixed() {
var btn = document.getElementById('mpi-floating-checkout');
if (!btn) return;
var mobile = window.innerWidth <= 640;
btn.style.setProperty('position', 'fixed', 'important');
if (mobile) {
btn.style.setProperty('left', '12px', 'important');
btn.style.setProperty('right', '12px', 'important');
btn.style.setProperty('bottom', 'calc(12px + env(safe-area-inset-bottom, 0px))', 'important');
} else {
btn.style.setProperty('left', 'auto', 'important');
btn.style.setProperty('right', '22px', 'important');
btn.style.setProperty('bottom', '26px', 'important');
}
btn.style.setProperty('z-index', '2147483647', 'important');
}
function boot() {
injectFloatingButton();
keepFixed();
window.addEventListener('scroll', keepFixed, { passive: true });
window.addEventListener('resize', keepFixed);
setTimeout(function () { injectFloatingButton(); keepFixed(); }, 500);
setTimeout(function () { injectFloatingButton(); keepFixed(); }, 1500);
setTimeout(function () { injectFloatingButton(); keepFixed(); }, 3000);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', boot);
} else {
boot();
}
})();