📴 Sem internet. Você pode continuar usando o app; a sincronização volta quando a conexão retornar.
Planeje a Chegada

Vamos preparar sua família ❤️

Primeiro, diga como você quer aparecer no aplicativo.

Qual é o seu papel?

Isso serve apenas para personalizar a experiência e identificar quem fez cada atualização.

Criar a família

Você criará o espaço compartilhado que depois poderá convidar sua esposa para acessar.

Planeje a Chegada

Agora, a gestação 🤰

Vamos salvar a gestação da família no Supabase. A partir da DUM, o app calcula automaticamente a semana atual e a DPP.

Você poderá alterar o nome do bebê depois. Para datas médicas, confirme a DUM/DPP com o obstetra.

Planeje a Chegada

Convite da família ❤️

Você foi convidada(o) para entrar em uma família e compartilhar a mesma gestação.

Entre com sua conta para aceitar. Se ainda não tiver uma conta, crie-a primeiro no Supabase Authentication durante esta fase de testes.

Planeje a Chegada

Planejador da Gestação

Acompanhe o pré-natal, enxoval e tudo até o grande dia — feito para vocês dois usarem juntos.

Carregando...
Você é:
Conta:
Verificando sincronização...
semanas
Informe a Semana

👋 Bem-vindos! Informe em qual semana de gestação você está.

💡 Dica: Seu obstetra pode ajudar com as datas.

📋 Como você está se sentindo?
Sintomas Físicos:
Humor:
📲 Instalar o app Adicione o Planeje a Chegada à tela inicial para abrir como aplicativo.
Caminho até a chegada 0%
SEMANA
DIAS
DPP
Próximos passos agenda
tarefas pendentes
Protegidosincronização
Seu foco desta semana3 PRIORIDADES

Desenvolvimento desta semana

👶
Acompanhe semana a semana O desenvolvimento do bebê aparecerá aqui conforme a semana da gestação.
💡 Continue acompanhando o pré-natal.

Contagem regressiva

dias estimados
DPP —
A DPP é uma estimativa; mantenha a data confirmada com o obstetra.
Prioridades de agoraautomaticamente organizadas
Organização do casalCOMPARTILHADO

Gestante

0tarefas

Parceiro(a)

0tarefas

Ambos

0tarefas
0prioridade alta
0atrasadas
As tarefas desta área são salvas no Supabase e sincronizadas entre os dois celulares.
Progresso Geral0%

');w.document.close();setTimeout(function(){w.print()},500)});preview.appendChild(imprimir)})}; panels["cronograma-compras"]=function(el){el.innerHTML='

🛒 Cronograma de Compras

Marque os itens já comprados. Valores são estimativas.

';if(!state.comprasChecklist)state.comprasChecklist={};var cats=[{t:"🔴 Essenciais (2º Tri)",c:"#F5E8EF",i:[["Berço","R$ 500-2000"],["Colchão","R$ 150-400"],["Bebê Conforto","R$ 300-1500"],["Carrinho","R$ 400-2500"],["Banheira","R$ 50-200"],["Fraldas RN","R$ 80-160"]]},{t:"🟡 Roupas (2º-3º Tri)",c:"#FBF5E8",i:[["Bodies MC (6)","R$ 120-240"],["Bodies ML (4)","R$ 80-160"],["Macacões (4)","R$ 100-200"],["Meias/Luvas","R$ 40-80"],["Saída Maternidade","R$ 50-150"]]},{t:"🟢 Higiene (3º Tri)",c:"#E8F5E9",i:[["Termômetro","R$ 30-80"],["Aspirador Nasal","R$ 20-50"],["Sabonete/Shampoo","R$ 40-80"],["Pomada Assaduras","R$ 20-40"]]}];var te=0,tc=0;for(var ci=0;ci'+esc(cat.t)+'';for(var ii=0;ii'+esc(n)+''+p+'';(function(key){r.querySelector(".chk").addEventListener("change",function(e){state.comprasChecklist[key]=e.target.checked;persist();panels["cronograma-compras"](el)})})(k);cd.appendChild(r)}el.appendChild(cd)}var rs=document.createElement("div");rs.style.cssText="background:#F0ECF8;border-radius:12px;padding:16px;margin-top:12px";rs.innerHTML='
💰 Total Estimado
R$ '+te.toLocaleString()+'
✅ Já Comprado
R$ '+tc.toLocaleString()+'
';el.appendChild(rs)}; panels.enxoval=function(el){renderSharedInventoryPanel(el,"layette")}; panels.acessorios=function(el){renderSharedInventoryPanel(el,"accessory")}; panels.orcamento=function(el){ el.innerHTML='

💰 Orçamento Compartilhado

Valores estimados e reais sincronizados entre vocês dois.

'; if(!state.budget)state.budget=[]; var tools=document.createElement("div"); tools.style.cssText="display:flex;justify-content:flex-end;gap:8px;margin-bottom:12px;flex-wrap:wrap"; tools.innerHTML=''; el.appendChild(tools); var wrap=document.createElement("div"); wrap.style.cssText="overflow-x:auto;-webkit-overflow-scrolling:touch"; var table=document.createElement("table"); table.className="budget-table"; table.style.minWidth="610px"; table.innerHTML='ItemEstimado (R$)Real (R$)Pago'; wrap.appendChild(table); el.appendChild(wrap); var tbody=table.querySelector("tbody"); var saveTimers={}; function scheduleSave(item){ if(!item||!item.id)return; clearTimeout(saveTimers[item.id]); saveTimers[item.id]=setTimeout(async function(){ try{ await updateSharedBudgetItem(item); updateSyncStatus("synced","✓ V7.2 • Orçamento salvo"); }catch(err){ console.error("Erro ao salvar orçamento:",err); mostrarToast("⚠️ Não foi possível salvar o orçamento."); } },650); } function money(v){ return budgetNumber(v).toLocaleString("pt-BR",{style:"currency",currency:"BRL"}); } function updateTotals(){ var est=0,real=0,pagos=0; for(var i=0;i'+ ''+ ''+ ''+ ''; tr.querySelector(".b-name").addEventListener("input",function(e){ item.item=e.target.value;persist();scheduleSave(item); }); tr.querySelector(".b-est").addEventListener("input",function(e){ item.est=e.target.value;persist();updateTotals();scheduleSave(item); }); tr.querySelector(".b-real").addEventListener("input",function(e){ item.real=e.target.value;persist();updateTotals();scheduleSave(item); }); tr.querySelector(".b-paid").addEventListener("change",async function(e){ item.pago=e.target.checked;persist();updateTotals(); try{await updateSharedBudgetItem(item)} catch(err){console.error(err);mostrarToast("⚠️ Não foi possível atualizar o pagamento.")} }); tr.querySelector(".del-btn").addEventListener("click",async function(){ if(!confirm("Excluir este item do orçamento compartilhado?"))return; try{ await deleteSharedBudgetItem(item.id); render();updateTotals(); mostrarToast("🗑️ Item removido."); }catch(err){alert("Não foi possível excluir este item.")} }); tbody.appendChild(tr); }); } var totals=document.createElement("div"); totals.style.cssText="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px"; totals.innerHTML='
Total estimado
R$ 0,00
'+ '
Total real
R$ 0,00
'; el.appendChild(totals); var status=document.createElement("div"); status.style.cssText="font-size:11px;color:#6B5E7A;text-align:right;margin-top:7px"; status.id="budgetPaidCount"; el.appendChild(status); var ab=document.createElement("button"); ab.className="add-row-btn"; ab.textContent="+ Adicionar Item"; ab.addEventListener("click",async function(){ ab.disabled=true;var old=ab.textContent;ab.textContent="Adicionando..."; try{ await createSharedBudgetItem({item:"Novo item",est:0,real:0,pago:false}); render();updateTotals(); mostrarToast("✅ Item adicionado ao orçamento."); }catch(err){ console.error(err); alert("Não foi possível adicionar o item."); }finally{ab.disabled=false;ab.textContent=old} }); el.appendChild(ab); document.getElementById("budgetRefreshBtn").addEventListener("click",async function(){ var b=this,old=b.textContent;b.disabled=true;b.textContent="Atualizando..."; try{await loadSharedBudget();render();updateTotals();mostrarToast("✅ Orçamento atualizado.");} catch(err){mostrarToast("⚠️ Não foi possível atualizar o orçamento.");} finally{b.disabled=false;b.textContent=old} }); render(); updateTotals(); }; panels.documentos=function(el){el.innerHTML='

📁 Documentos

Organize todos os documentos importantes com fotos e anexos.

';for(var g=0;g

📁 '+esc(grupo.categoria)+'

'+done+'/'+grupo.itens.length+' prontos';var list=document.createElement("div");list.style.display="flex";list.style.flexDirection="column";list.style.gap="8px";for(var i=0;i':'
📄 Documento Anexado
'):"";card.innerHTML='
'+esc(item.nome)+'
'+(item.foto?'':"")+'
'+fs+'
';(function(it){card.querySelector(".chk").addEventListener("change",function(e){it.feito=e.target.checked;persist();panels.documentos(el)});card.querySelector("textarea").addEventListener("input",function(e){it.resultado=e.target.value;persist()});var fi=card.querySelector(".df"),fb=card.querySelector(".foto-label-btn");if(fb&&fi){fb.addEventListener("click",function(){fi.click()});fi.addEventListener("change",function(){var f=fi.files[0];if(!f)return;var r=new FileReader();r.onload=function(e){it.foto=e.target.result;persist();panels.documentos(el)};r.readAsDataURL(f)})}var fr=card.querySelector(".foto-remove-btn");if(fr)fr.addEventListener("click",function(){it.foto="";persist();panels.documentos(el)})})(item);list.appendChild(card)}wrap.appendChild(list);el.appendChild(wrap)}}; panels.planoparto=function(el){el.innerHTML='';var t=document.createElement("h2");t.className="section-title";t.textContent="📋 Plano de Parto";el.appendChild(t);el.appendChild(Object.assign(document.createElement("p"),{className:"section-desc",textContent:"Registre aqui suas preferências para o grande dia."}));var db=document.createElement("div");db.style.cssText="display:flex;justify-content:flex-end;margin-bottom:20px";db.innerHTML='';el.appendChild(db);document.getElementById("dlPDF").addEventListener("click",function(){var pdf='

Plano de Parto

'+esc(state.couple.momName||"Gestante")+' & '+esc(state.couple.partnerName||"Parceiro(a)")+'

';var keys=["maternidade","obstetra","acompanhante","tipoParto","analgesia","contatoPele","amamentacao","clampeamento","musica","fotosVideo","visitas","desejosEspeciais"];for(var i=0;i'+keys[i]+': '+esc(state.birthPlan[keys[i]]||"Não informado")+'
'}pdf+='';var w=window.open("","_blank");w.document.write('Plano de Parto'+pdf+' ');w.document.close()});if(!state.birthPlan)state.birthPlan={};var campos=[{l:"🏥 Maternidade / Hospital",k:"maternidade",d:"Nome da maternidade ou hospital escolhido."},{l:"👨‍⚕️ Médico(a) Obstetra",k:"obstetra",d:"Nome do(a) médico(a) que acompanhará o parto."},{l:"👨‍👩‍👦 Acompanhante(s)",k:"acompanhante",d:"Nome(s) de quem estará presente."},{l:"🤰 Tipo de Parto Desejado",k:"tipoParto",d:"Parto normal, cesárea, humanizado, etc."},{l:"💉 Preferência sobre Analgesia",k:"analgesia",d:"Com ou sem anestesia, métodos naturais, etc."},{l:"🤱 Contato Pele a Pele",k:"contatoPele",d:"Deseja contato pele a pele imediato?"},{l:"🍼 Amamentação na Primeira Hora",k:"amamentacao",d:"Prefere amamentar na primeira hora?"},{l:"✂️ Clampeamento do Cordão",k:"clampeamento",d:"Tardio (após parar de pulsar) ou imediato?"},{l:"🎵 Música / Playlist",k:"musica",d:"Tem alguma música ou playlist especial?"},{l:"📸 Fotos e Vídeos",k:"fotosVideo",d:"Deseja registrar o parto? Como?"},{l:"👥 Visitas",k:"visitas",d:"Quem pode visitar? Quando?"},{l:"💭 Desejos Especiais",k:"desejosEspeciais",d:"Algum desejo ou necessidade especial?"}];for(var c=0;c'+campo.l+'

'+campo.d+'

';(function(key){card.querySelector("textarea").addEventListener("input",function(e){state.birthPlan[key]=e.target.value;persist()})})(campo.k);el.appendChild(card)}var tip=document.createElement("div");tip.className="week-tip";tip.style.marginTop="20px";tip.innerHTML='💡 Importante: Este plano expressa suas preferências. Converse com seu obstetra sobre o que é viável para o seu caso. Leve uma cópia impressa para a maternidade.';el.appendChild(tip)}; panels.mala=function(el){el.innerHTML='

🎒 Mala da Maternidade

Checklist com anotações para cada item.

';for(var g=0;g'+done+'/'+grupo.itens.length+' prontos';wrap.appendChild(hdr);var list=document.createElement("div");list.style.display="flex";list.style.flexDirection="column";list.style.gap="8px";for(var i=0;i
'+esc(item.nome)+'
';(function(it){card.querySelector(".chk").addEventListener("change",function(e){it.feito=e.target.checked;persist();panels.mala(el)});card.querySelector("textarea").addEventListener("input",function(e){it.comentario=e.target.value;persist()})})(item);list.appendChild(card)}wrap.appendChild(list);el.appendChild(wrap)}}; panels.bebe=function(el){el.innerHTML='';var t=document.createElement("h2");t.className="section-title";t.textContent="👶 Acompanhamento do Bebê";el.appendChild(t);var sn=document.createElement("div");sn.className="sleep-subnav";sn.innerHTML='';el.appendChild(sn);var bc=document.createElement("div");bc.id="babyContent";el.appendChild(bc);function renderBabyTab(tab){var sts=sn.querySelectorAll(".sleep-subtab");for(var i=0;i🩺 Registrar Consulta
';bc.appendChild(form);var addConsBtn=document.getElementById("addCons");if(addConsBtn){addConsBtn.addEventListener("click",function(){state.babyConsultas.push({id:uid(),data:document.getElementById("cd").value,idade:document.getElementById("ci").value,peso:document.getElementById("cp").value,altura:document.getElementById("ca").value,pc:document.getElementById("cpc").value,desenvolvimento:document.getElementById("cdv").value,orientacoes:document.getElementById("cor").value,proxima:document.getElementById("cpr").value});state.babyConsultas.sort(function(a,b){return new Date(b.data)-new Date(a.data)});persist();renderBabyTab("consultas")})}var hist=document.createElement("div");hist.style.marginTop="20px";if(state.babyConsultas.length>0){hist.innerHTML='

📊 Histórico de Consultas

';for(var j=0;j
'+c.data.split("-").reverse().join("/")+'
⚖️ Peso
'+(c.peso||"-")+' kg
📏 Altura
'+(c.altura||"-")+' cm
🧠 PC
'+(c.pc||"-")+' cm
'+(c.desenvolvimento?'
🌟 '+esc(c.desenvolvimento)+'
':'')+(c.orientacoes?'
📋 '+esc(c.orientacoes)+'
':'')+(c.proxima?'
📅 Próxima: '+c.proxima.split("-").reverse().join("/")+'
':'');(function(cr){card.querySelector(".del-cons").addEventListener("click",function(){if(confirm("Excluir esta consulta?")){state.babyConsultas=state.babyConsultas.filter(function(x){return x.id!==cr.id});persist();renderBabyTab("consultas")}})})(c);hist.appendChild(card)}}else{hist.innerHTML='

Nenhuma consulta registrada ainda

'}bc.appendChild(hist)}else if(tab==="exames"){bc.innerHTML='

🔬 Exames do Bebê

';for(var e=0;e💉 Vacinas do Bebê';for(var v=0;v😴 Sono, Mamadas e Fraldas';var sn=document.createElement("div");sn.className="sleep-subnav";sn.innerHTML='';el.appendChild(sn);var ct=document.createElement("div");ct.id="babyCareContent";el.appendChild(ct);function renderSubtab(s){var sts=sn.querySelectorAll(".sleep-subtab");for(var i=0;i
';var addSBtn=document.getElementById("addS");if(addSBtn){addSBtn.addEventListener("click",function(){var d=document.getElementById("sd").value,i=document.getElementById("si").value,f=document.getElementById("sf").value;if(!d||!i||!f)return alert("Preencha todos os campos.");state.sleep.logs.push({id:uid(),data:d,inicio:i,fim:f,tipo:document.getElementById("st").value,quem:getCurrentUserName()||"Alguém"});persist();renderSubtab("sono")})}var logs=(state.sleep.logs||[]).slice().sort(function(a,b){return new Date(b.data+" "+b.inicio)-new Date(a.data+" "+a.inicio)}).slice(0,20);var list=document.createElement("div");list.style.marginTop="16px";for(var j=0;j
😴 '+esc(log.tipo)+' - '+log.data+'
'+log.inicio+' às '+log.fim+' · '+dur+' · 👤 '+esc(log.quem||"Alguém")+'
';(function(lr){var delBtn=row.querySelector(".quicklog-del");if(delBtn){delBtn.addEventListener("click",function(){var idx=state.sleep.logs.indexOf(lr);if(idx>-1){state.sleep.logs.splice(idx,1);persist();renderSubtab("sono")}})}})(log);list.appendChild(row)}ct.appendChild(list)}else if(s==="mamadas"){ct.innerHTML='
';var addFBtn=document.getElementById("addF");if(addFBtn){addFBtn.addEventListener("click",function(){if(!state.feedLogs)state.feedLogs=[];state.feedLogs.push({id:uid(),data:document.getElementById("fd").value,hora:document.getElementById("fh").value,tipo:document.getElementById("ft").value,qtd:document.getElementById("fq").value,duracao:document.getElementById("fdur").value,quem:getCurrentUserName()||"Alguém",ladoDuracao:null});persist();renderSubtab("mamadas")})}var logs=(state.feedLogs||[]).slice().sort(function(a,b){return new Date(b.data+" "+b.hora)-new Date(a.data+" "+a.hora)}).slice(0,20);var list=document.createElement("div");list.style.marginTop="16px";for(var k=0;k
🍼 '+esc(log.tipo)+' - '+log.data+' '+(log.hora||"")+'
'+meta+'
';(function(lr){var delBtn=row.querySelector(".quicklog-del");if(delBtn){delBtn.addEventListener("click",function(){var idx=state.feedLogs.indexOf(lr);if(idx>-1){state.feedLogs.splice(idx,1);persist();renderSubtab("mamadas")}})}})(log);list.appendChild(row)}ct.appendChild(list)}else if(s==="fraldas"){ct.innerHTML='
';var addDBtn=document.getElementById("addD");if(addDBtn){addDBtn.addEventListener("click",function(){if(!state.diaperLogs)state.diaperLogs=[];state.diaperLogs.push({id:uid(),data:document.getElementById("dd").value,hora:document.getElementById("dh").value,tipo:document.getElementById("dt").value,quem:getCurrentUserName()||"Alguém"});persist();renderSubtab("fraldas")})}var logs=(state.diaperLogs||[]).slice().sort(function(a,b){return new Date(b.data+" "+b.hora)-new Date(a.data+" "+a.hora)}).slice(0,20);var list=document.createElement("div");list.style.marginTop="16px";for(var l=0;l
'+emoji+' '+esc(log.tipo)+' - '+log.data+' '+(log.hora||"")+'
👤 '+esc(log.quem||"Alguém")+'
';(function(lr){var delBtn=row.querySelector(".quicklog-del");if(delBtn){delBtn.addEventListener("click",function(){var idx=state.diaperLogs.indexOf(lr);if(idx>-1){state.diaperLogs.splice(idx,1);persist();renderSubtab("fraldas")}})}})(log);list.appendChild(row)}ct.appendChild(list)}else if(s==="graficos"){ct.innerHTML='

📊 Acompanhamento dos Últimos 7 Dias

'}}var sts2=sn.querySelectorAll(".sleep-subtab");for(var st=0;st💆‍♀️ Pós-parto

Lista de cuidados importantes para a mãe e a família.

';for(var g=0;g

'+esc(grupo.grupo)+'

'+grupo.itens.length+' cuidados';var list=document.createElement("div");list.style.display="flex";list.style.flexDirection="column";list.style.gap="8px";for(var i=0;i'+esc(grupo.itens[i].nome)+'';list.appendChild(card)}wrap.appendChild(list);el.appendChild(wrap)}}; panels.preparacao=function(el){el.innerHTML='

✅ Preparação Final

Checklist com datas recomendadas para os últimos preparativos.

';for(var g=0;g'+done+'/'+grupo.itens.length+' prontos';wrap.appendChild(hdr);var list=document.createElement("div");list.style.display="flex";list.style.flexDirection="column";list.style.gap="8px";for(var i=0;i
'+esc(item.nome)+''+(item.quando?'📅 '+esc(item.quando)+'':"")+'
';(function(it){card.querySelector(".chk").addEventListener("change",function(e){it.feito=e.target.checked;if(e.target.checked){var who=getCurrentUserName();if(who)it.por=who}persist();panels.preparacao(el);updateOverallProgress()})})(item);list.appendChild(card)}wrap.appendChild(list);el.appendChild(wrap)}}; panels.anotacoes=function(el){el.innerHTML='

📝 Anotações

';var nf=document.createElement("div");nf.className="note-form";nf.innerHTML='';el.appendChild(nf);var anBtn=document.getElementById("an");if(anBtn){anBtn.addEventListener("click",function(){var t=document.getElementById("nt").value.trim();if(!t)return;if(!state.notesBoard)state.notesBoard=[];state.notesBoard.push({id:uid(),texto:t,data:new Date().toISOString()});document.getElementById("nt").value="";persist();panels.anotacoes(el)})}var board=document.createElement("div");board.className="notes-board";var notas=(state.notesBoard||[]).slice().reverse();for(var i=0;i'+esc(note.texto)+'

'+new Date(note.data).toLocaleString("pt-BR")+'';(function(nr){var delBtn=card.querySelector(".note-del");if(delBtn){delBtn.addEventListener("click",function(){var idx=state.notesBoard.indexOf(nr);if(idx>-1){state.notesBoard.splice(idx,1);persist();panels.anotacoes(el)}})}})(note);board.appendChild(card)}el.appendChild(board)}; // ============ CARTÃO DE EMERGÊNCIA ============ document.getElementById("emergencyBtn").addEventListener("click",function(){abrirCartaoEmergencia()}); function abrirCartaoEmergencia(){if(!state.emergencyCard){state.emergencyCard={tipoSanguineo:"",alergias:"",obstetra:"",telefoneObstetra:"",maternidade:"",enderecoMaternidade:"",planoSaude:"",contatoEmergencia1:"",telefoneEmergencia1:"",contatoEmergencia2:"",telefoneEmergencia2:"",observacoes:""}}var ec=state.emergencyCard;if(!ec.obstetra&&state.birthPlan&&state.birthPlan.obstetra)ec.obstetra=state.birthPlan.obstetra;if(!ec.maternidade&&state.birthPlan&&state.birthPlan.maternidade)ec.maternidade=state.birthPlan.maternidade;var modal=document.createElement("div");modal.className="emergency-modal";var campos=[{k:"tipoSanguineo",l:"🩸 Tipo Sanguíneo",p:"Ex: O+"},{k:"alergias",l:"⚠️ Alergias",p:"Medicamentos, alimentos..."},{k:"obstetra",l:"👨‍⚕️ Obstetra",p:"Nome do(a) médico(a)"},{k:"telefoneObstetra",l:"📞 Telefone Obstetra",p:"(XX) XXXXX-XXXX"},{k:"maternidade",l:"🏥 Maternidade",p:"Nome do hospital"},{k:"enderecoMaternidade",l:"📍 Endereço Maternidade",p:"Rua, número, bairro"},{k:"planoSaude",l:"💳 Plano de Saúde",p:"Nome e número"},{k:"contatoEmergencia1",l:"🆘 Contato Emergência 1",p:"Nome"},{k:"telefoneEmergencia1",l:"📞 Telefone Emerg. 1",p:"(XX) XXXXX-XXXX"},{k:"contatoEmergencia2",l:"🆘 Contato Emergência 2",p:"Nome"},{k:"telefoneEmergencia2",l:"📞 Telefone Emerg. 2",p:"(XX) XXXXX-XXXX"},{k:"observacoes",l:"📝 Observações",p:"Outras informações importantes"}];var html='

🚨 Cartão de Emergência

Informações rápidas para situações de urgência.

';for(var c=0;c
'}html+='
';modal.innerHTML=html;document.body.appendChild(modal);document.getElementById("salvarEC").addEventListener("click",function(){for(var s=0;s
';for(var p=0;p'+campos[p].l+': '+esc(state.emergencyCard[campos[p].k]||"—")+'

'}printHtml+='

Mantenha este cartão na carteira ou bolsa.

';var w=window.open("","_blank");w.document.write('Cartão de Emergência'+printHtml+' ');w.document.close()});document.getElementById("fecharEC").addEventListener("click",function(){modal.remove()});modal.addEventListener("click",function(e){if(e.target===modal)modal.remove()})} // ============ SINTOMAS, HUMOR, HEATMAP, TENDÊNCIAS, RESUMO, LEMBRETES ============ var COMMON_SYMPTOMS=["Náusea","Enjoo Matinal","Azia","Cansaço","Sono Excessivo","Dor nas Costas","Dor Pélvica","Inchaço","Cólicas","Tontura","Falta de Ar","Congestão Nasal","Sensibilidade nos Seios","Desejos Alimentares","Aversão a Cheiros","Ansiedade","Insônia","Dor de Cabeça","Constipação","Vontade Frequente de Urinar","Contrações de Braxton Hicks","Câimbras"]; var COMMON_MOODS=["Bem","Cansada","Ansiosa","Irritada","Triste","Animada","Sobrecarregada","Calma","Emocionada","Entediada","Com Fome","Com Sono"]; function renderSymptomsSelector(){var grid=document.getElementById("symptomsGrid"),moodGrid=document.getElementById("moodGrid");if(!grid||!moodGrid)return;if(!state.currentSymptoms)state.currentSymptoms=[];if(!state.symptoms)state.symptoms=[];if(!state.currentMoods)state.currentMoods=[];if(!state.moods)state.moods=[];grid.innerHTML="";for(var i=0;i-1)state.currentSymptoms.splice(idx,1);else state.currentSymptoms.push(symptom);pill.classList.toggle("active");persist()})})(s);grid.appendChild(pill)}moodGrid.innerHTML="";for(var j=0;j-1)state.currentMoods.splice(idx,1);else state.currentMoods.push(mood);pill2.classList.toggle("active");persist()})})(m);moodGrid.appendChild(pill2)}document.getElementById("addSymptomBtn").onclick=function(){if(state.currentSymptoms.length===0&&state.currentMoods.length===0)return alert("Selecione ao menos um sintoma ou humor.");state.symptoms.push({id:uid(),data:todayStr(),hora:new Date().toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"}),sintomas:state.currentSymptoms.slice()});if(state.currentMoods.length>0){if(!state.moods)state.moods=[];state.moods.push({id:uid(),data:todayStr(),hora:new Date().toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"}),humores:state.currentMoods.slice()})}state.currentSymptoms=[];state.currentMoods=[];persist();renderSymptomsSelector()};document.getElementById("clearSymptomsBtn").onclick=function(){state.currentSymptoms=[];state.currentMoods=[];state.symptoms=state.symptoms.filter(function(s){return s.data!==todayStr()});state.moods=(state.moods||[]).filter(function(m){return m.data!==todayStr()});persist();renderSymptomsSelector()};document.getElementById("tendenciasBtn").onclick=function(){abrirTendenciasSintomas()};var log=document.getElementById("symptomsLog");var todayS=(state.symptoms||[]).filter(function(s){return s.data===todayStr()});var todayM=(state.moods||[]).filter(function(m){return m.data===todayStr()});if(todayS.length>0||todayM.length>0){log.style.display="block";log.innerHTML='
📝 Registros de Hoje:
';for(var t=0;t
';for(var si=0;si'+esc(entry.sintomas[si])+''}ed.innerHTML+='
';log.appendChild(ed)}for(var u=0;u
';for(var hi=0;hi'+esc(entryM.humores[hi])+''}ed2.innerHTML+='
';log.appendChild(ed2)}var remBtns=log.querySelectorAll(".rem-single-symp");for(var r=0;r=0;i--){var d=new Date();d.setDate(d.getDate()-i);last7.push(d.getFullYear()+"-"+pad2(d.getMonth()+1)+"-"+pad2(d.getDate()))}var recent=[];for(var j=0;j<(state.symptoms||[]).length;j++){if(last7.indexOf(state.symptoms[j].data)!==-1)recent.push(state.symptoms[j])}var sc={};for(var k=0;k=5)alerts.push({s:s,days:d.days.size,sev:"high"});else if(d.days.size>=3)alerts.push({s:s,days:d.days.size,sev:"medium"})}if(alerts.length>0){var ad=document.createElement("div");ad.style.cssText="margin-top:12px;padding:12px;background:#FFF5F5;border-radius:8px";var ha=[],ma=[];for(var a=0;a0){ad.innerHTML+='
⚠️ Sintomas Persistentes:
';for(var h=0;h🔴 '+esc(ha[h].s)+' por '+ha[h].days+' dias - Consulte seu médico'}}if(ma.length>0){ad.innerHTML+='
📋 Acompanhar:
';for(var m=0;m🟡 '+esc(ma[m].s)+' por '+ma[m].days+' dias'}}log.appendChild(ad)}} function renderHeatmapSintomas(container){if(!container)return;var hoje=new Date(),mesAtual=hoje.getMonth(),anoAtual=hoje.getFullYear();var primeiroDia=new Date(anoAtual,mesAtual,1),diaSemanaInicio=primeiroDia.getDay();var ultimoDia=new Date(anoAtual,mesAtual+1,0),totalDias=ultimoDia.getDate();var meses=["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];var html='
📅 Calendário de '+meses[mesAtual]+'
DomSegTerQuaQuiSexSáb
';for(var i=0;i
';for(var dia=1;dia<=totalDias;dia++){var dataStr=anoAtual+"-"+pad2(mesAtual+1)+"-"+pad2(dia);var isHoje=dataStr===todayStr();var sintomasDia=0;for(var s=0;s<(state.symptoms||[]).length;s++){if(state.symptoms[s].data===dataStr)sintomasDia++}var moodsDia=0;for(var m=0;m<(state.moods||[]).length;m++){if(state.moods[m].data===dataStr)moodsDia++}var total=sintomasDia+moodsDia;var classe="heatmap-day";if(isHoje)classe+=" hoje";if(total>=3)classe+=" tem-muito";else if(total>=1)classe+=" tem-sintoma";html+='
'+dia+'
'}html+='';container.innerHTML=html} function abrirTendenciasSintomas(){if(!state.symptoms||state.symptoms.length===0){alert("Registre sintomas para ver tendências.");return}var g=state.couple.gestation||{};var refDate=new Date((g.refDate||todayStr())+"T00:00:00");var semanaInicial=Number(g.week)||0;var porSemana={};for(var i=0;imaxCount)maxCount=dados[d].count}html+='
'+esc(sintoma)+'
'}html+=''}html+='';modal.innerHTML=html;document.body.appendChild(modal);document.getElementById("fecharTendencias").addEventListener("click",function(){modal.remove()});modal.addEventListener("click",function(e){if(e.target===modal)modal.remove()})} function renderResumoHoje(){var container=document.getElementById("resumoHoje");if(!container)return;var hoje=todayStr(),g=state.couple.gestation||{},semana=Number(g.week)||0;var html='
📋 Resumo de Hoje
',temConteudo=!1;var eventosHoje=(state.agenda||[]).slice();for(var i=0;i<(state.monthlyMilestones||[]).length;i++){if(state.monthlyMilestones[i].lembreteData===hoje)eventosHoje.push(state.monthlyMilestones[i])}if(eventosHoje.length>0){temConteudo=!0;var nomes=[];for(var e=0;e📅Compromissos Hoje: '+nomes.join(", ")+''}if(state.dailyChecklist&&state.dailyChecklist.logs[hoje]){var feitos=state.dailyChecklist.logs[hoje].length,total=state.dailyChecklist.itens.length;if(total>0){temConteudo=!0;html+='
💊Checklist Diário: '+feitos+'/'+total+' ('+Math.round(feitos/total*100)+'%)
'}}var proximas=[];for(var c=0;c<(state.babyConsultas||[]).length;c++){if(state.babyConsultas[c].proxima&&new Date(state.babyConsultas[c].proxima)>=new Date(hoje))proximas.push(state.babyConsultas[c])}if(proximas.length>0){temConteudo=!0;html+='
🩺Próxima Consulta: '+proximas[0].proxima.split("-").reverse().join("/")+'
'}if(semana>0){temConteudo=!0;var diasFaltam=280-(semana*7);html+='
🤰Gestação: '+semana+'ª semana · ~'+Math.max(0,Math.round(diasFaltam/7))+' semanas restantes
'}if(!temConteudo){html+='
👋Preencha seus dados para ver o resumo diário aqui.
'}container.innerHTML=html;container.style.display="block"} function verificarLembretes(){var hoje=todayStr(),amanha=new Date();amanha.setDate(amanha.getDate()+1);var amanhaStr=amanha.getFullYear()+"-"+pad2(amanha.getMonth()+1)+"-"+pad2(amanha.getDate());if(!state.lembretesAtivos)state.lembretesAtivos=[];var ev=(state.agenda||[]).slice();for(var i=0;i<(state.monthlyMilestones||[]).length;i++){var m=state.monthlyMilestones[i];if(m.lembreteData)ev.push({id:m.id,data:m.lembreteData,titulo:m.nome,tipo:"consulta"})}for(var j=0;j<(state.babyConsultas||[]).length;j++){var c=state.babyConsultas[j];if(c.proxima)ev.push({id:"px_"+c.id,data:c.proxima,titulo:"Consulta do Bebê",tipo:"consulta"})}var eh=[],ea=[];for(var k=0;k0&&state.lembretesAtivos.indexOf(hoje)===-1){if(badge&<){badge.style.display="block";badge.style.background="#FF6B6B";lt.textContent=eh.length+" evento(s) hoje!";badge.onclick=function(){switchTab("agenda");badge.style.display="none"};setTimeout(function(){badge.style.display="none";state.lembretesAtivos.push(hoje);persist()},10000)}}else if(ea.length>0&&state.lembretesAtivos.indexOf(amanhaStr)===-1){if(badge&<){badge.style.display="block";badge.style.background="#FF9800";lt.textContent="Amanhã: "+ea.length+" evento(s)";badge.onclick=function(){switchTab("agenda");badge.style.display="none"};setTimeout(function(){badge.style.display="none";state.lembretesAtivos.push(amanhaStr);persist()},10000)}}var at=document.querySelector('.tab-btn[data-id="agenda"]');if(at){if(eh.length>0){at.textContent="📅 Agenda ("+eh.length+")";at.style.color="#FF6B6B"}else{at.textContent="📅 Agenda";at.style.color=""}}} // ============ TABS ============ var TABS=[{id:"agenda",label:"📅 Agenda",grupo:"Gestação"},{id:"prenatal",label:"Pré-natal",grupo:"Gestação"},{id:"peso",label:"⚖️ Peso/Pressão",grupo:"Gestação"},{id:"chutes",label:"👶 Chutes",grupo:"Gestação"},{id:"barriga",label:"📸 Fotos",grupo:"Gestação"},{id:"contracoes",label:"Contrações",grupo:"Gestação"},{id:"vacinas",label:"💉 Vacinas",grupo:"Gestação"},{id:"comer",label:"🍽️ Comer?",grupo:"Gestação"},{id:"preparacao",label:"Preparação",grupo:"Parto"},{id:"planoparto",label:"Plano Parto",grupo:"Parto"},{id:"mala",label:"Mala",grupo:"Parto"},{id:"documentos",label:"Documentos",grupo:"Parto"},{id:"relatorio",label:"📄 Relatório",grupo:"Parto"},{id:"cronograma-compras",label:"Compras",grupo:"Compras"},{id:"enxoval",label:"Enxoval",grupo:"Compras"},{id:"acessorios",label:"Acessórios",grupo:"Compras"},{id:"orcamento",label:"Orçamento",grupo:"Compras"},{id:"bebe",label:"Bebê",grupo:"Bebê"},{id:"sono",label:"Sono/Mamadas",grupo:"Bebê"},{id:"posparto",label:"Pós-parto",grupo:"Bebê"},{id:"anotacoes",label:"Notas",grupo:"Extras"}]; function buildTabs(){var nav=document.getElementById("tabs");if(!nav)return;nav.innerHTML="";var lastGrupo="";for(var i=0;i0){var divider=document.createElement("div");divider.className="tab-divider";nav.appendChild(divider)}lastGrupo=t.grupo;var btn=document.createElement("button");btn.className="tab-btn";if(t.id===currentActiveTab)btn.classList.add("active");btn.textContent=t.label;btn.dataset.id=t.id;(function(tabId){btn.addEventListener("click",function(){switchTab(tabId)})})(t.id);nav.appendChild(btn)}} function buildPanels(){var main=document.getElementById("main");if(!main)return;main.innerHTML="";for(var i=0;iErro: '+e.message+'

'}}}} function switchTab(id){currentActiveTab=id;var botoes=document.querySelectorAll(".tab-btn");for(var i=0;i