FEAT - atualização CSS e JavaScript

This commit is contained in:
Felipe de Moraes Gomes 2026-04-17 15:59:08 -03:00
parent a2b7d19baf
commit cb813f7288
4 changed files with 1025 additions and 29 deletions

View File

@ -0,0 +1,459 @@
/* funcionou nos planos */
.form-element-field01 {
margin-bottom: 50px;
}
.banda-larga__container {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
gap: 45px;
}
.banda-residencia__container, .banda-empresa__container {
display: flex;
flex-direction: column;
align-items: center;
width: 50%;
border: 1px solid gray;
border-radius: 20px;
height: 270px;
}
.banda-card__content {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 40px;
}
.banda__title > h3 {
margin-top: 0px;
font-size: 18px !important;
color: #234164 !important;
text-align: center;
}
.banda__content > p {
text-align: center;
line-height: 1.5em;
}
.banda-residencia__container > div > div.banda__content > p {
margin-top: 0px;
}
.banda-button__container {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.banda-button__container > a {
padding: 10px !important;
background-color: #31a3b5 !important;
color: white !important;
text-decoration: none !important;
width: 100% !important;
text-align: center !important;
border-radius: 5px !important;
}
.banda-button__container > a:hover {
background-color: #1d6570 !important;
}
.planos__container {
width: 100%;
max-width: 1200px;
margin: auto;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: center !important;
padding: 40px 20px !important;
}
.planos-cards__container {
display: flex !important;
justify-content: center !important;
margin: auto !important;
align-items: center !important;
gap: 25px !important;
}
.instalacao__container {
margin-top: 30px !important;
}
.out-card__container {
display: flex !important;
flex-direction: column !important;
transition: transform 0.5s ease;
}
.most-sell-card__text {
align-self: flex-end !important;
background-color: #1d3350 !important;
border-radius: 20px 20px 0px 0px !important;
}
.most-sell-card__text > p {
font-size: 10px !important;
padding: 0px 30px 0px 30px !important;
margin: 0px !important;
color: white !important;
}
.most-sell-card__container {
background-color: #1d3350 !important;
min-width: 230px !important;
height: 450px !important;
border-radius: 20px 0px 20px 20px !important;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: center !important;
}
.seller-card__container {
background: radial-gradient(circle at 50% 50%,
#B00025 50%, /* intermediário */
#A70022 100%) !important; /* mais escuro nas bordas */
height: 450px !important;
min-width: 230px !important;
border-radius: 20px !important;
display: flex !important;
justify-content: center !important;
align-items: center !important;
flex-direction: column !important;
margin-top: 30px !important;
color: white !important;
transition: transform 0.5s ease;
}
.best-seller-card__container {
background: radial-gradient(circle at 50% 50%,
#B00025 50%, /* intermediário */
#A70022 100%) !important; /* mais escuro nas bordas */
width: 92% !important;
height: 95% !important;
border-radius: 15px !important;
color: white !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
}
.card-title__container {
display: flex !important;
justify-content: center !important;
align-items: flex-end !important;
padding: 20px 0px 15px 0px !important;
font-family: "myriad-variable", sans-serif !important;
border-bottom: 1px solid white !important;
width: 90% !important;
}
.card-title__number > h1 {
padding: 0px !important;
margin: 0px !important;
font-size: 50px !important;
}
.card-title__text > h1 {
padding: 0px !important;
margin: 0px 0px 13px 3px !important;
font-size: 20px !important;
}
.card-description__container {
display: flex !important;
justify-content: center !important;
align-items: center !important;
border-bottom: 1px solid white !important;
width: 90% !important;
margin-top: 25px !important;
padding-bottom: 60px !important;
}
.card-description__content {
margin-left: 5px !important;
margin-bottom: 10px !important;
font-weight: 600 !important;
}
.card-price__container {
display: flex !important;
align-items: flex-end !important;
justify-content: flex-end !important;
margin-top: 20px !important;
}
.card-price__money {
align-self: flex-end !important;
margin-bottom: -5px !important;
}
.card-price__money > p {
height: 100% !important;
color: white !important;
font-weight: bold !important;
font-size: 24px !important;
}
.card-price__value {
align-self: flex-end !important;
}
.card-price__value > p {
height: 100% !important;
font-weight: bold !important;
font-size: 50px !important;
color: white !important;
}
.card-price-small__container {
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-self: flex-end !important;
margin-bottom: -10px !important;
margin-left: 2.5px !important;
}
.small-price p {
height: 100% !important;
color: white !important;
font-weight: bold !important;
font-size: 24px !important;
}
.small-gap-time p {
height: 100% !important;
color: white !important;
font-size: 14px !important;
}
.card-plan-button__container {
margin-top: 30px !important;
width: 100% !important;
display: flex !important;
justify-content: center !important;
align-items: center !important;
}
.card-plan-button__container > a {
color: #A70022 !important;
text-decoration: none !important;
font-weight: bold !important;
font-size: 12px !important;
background-color: white !important;
padding: 8px 40px !important;
border-radius: 10px !important;
}
.card-plan-button__container > a:hover {
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px !important;
}
.most-sell-card__container > div > div.card-title__container {
margin-top: 25px !important;
}
.card-price__container div > p {
margin: 0px !important;
}
html .formcraft-css .fc-form .form-element .field-cover.customText-cover .small-gap-time > p, html .formcraft-css .fc-form .form-element .field-cover.customText-cover .small-price > p {
margin-top: 0 !important;
}
.is-selected {
transform: translateY(-15px);
}
.formcraft-icon {
margin-top: 2.5px !important;
}
.form-element-field38 p {
font-size: 12px !important;
}
#plano-selecionado-msg {
font-weight: bold !important;
text-align: center !important;
font-size: 20px !important
}
@media (max-width: 480px) {
/* --- Banda Larga --- */
.banda-larga__container {
flex-direction: column;
gap: 20px;
padding: 0 15px;
}
.banda-residencia__container,
.banda-empresa__container {
width: 100%;
height: fit-content;
}
.banda-card__content {
padding: 25px;
}
/* --- Planos --- */
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 20px 15px !important;
}
.planos-cards__container {
flex-wrap: wrap !important;
flex-direction: column !important;
align-items: center !important;
gap: 15px !important;
}
/* --- Cards individuais --- */
.out-card__container {
width: 100%;
max-width: 320px;
}
.most-sell-card__container {
min-width: unset !important;
width: 100% !important;
height: auto !important;
min-height: 400px !important;
padding: 15px 0 !important;
}
.seller-card__container {
min-width: unset !important;
width: 100% !important;
height: auto !important;
min-height: 400px !important;
padding: 15px 0 !important;
}
.best-seller-card__container {
width: 92% !important;
height: auto !important;
padding-bottom: 20px !important;
}
/* --- Preço --- */
.card-title__number > h1 {
font-size: 40px !important;
}
.card-price__value > p {
font-size: 40px !important;
}
/* --- Instalação --- */
.instalacao__container > p {
text-align: center;
}
/* --- CORREÇÃO: remover margin-bottom absurdo --- */
.form-element-field1 {
margin-bottom: 20px; /* era 2600px — quase certamente um bug */
}
/* --- Mensagem de plano selecionado --- */
#plano-selecionado-msg {
font-size: 16px !important;
}
}
/* ================================
MOBILE GRANDE (481px até 768px)
================================ */
@media (min-width: 481px) and (max-width: 768px) {
.banda-larga__container {
flex-direction: column;
gap: 25px;
padding: 0 20px;
}
.banda-residencia__container,
.banda-empresa__container {
width: 85%;
height: fit-content;
}
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 30px 20px !important;
}
.planos-cards__container {
flex-wrap: wrap !important;
flex-direction: column !important;
align-items: center !important;
gap: 20px !important;
}
.most-sell-card__container,
.seller-card__container {
min-width: unset !important;
width: 280px !important;
height: auto !important;
min-height: 420px !important;
}
.best-seller-card__container {
height: auto !important;
padding-bottom: 20px !important;
}
}
/* ================================
TABLET (769px até 1024px)
================================ */
@media (min-width: 769px) and (max-width: 1024px) {
.banda-larga__container {
gap: 25px;
padding: 0 20px;
}
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 30px 25px !important;
}
.planos-cards__container {
gap: 15px !important;
flex-wrap: wrap !important; /* permite quebrar linha se não couber */
}
.most-sell-card__container {
min-width: 200px !important;
height: 420px !important;
}
.seller-card__container {
min-width: 200px !important;
height: 420px !important;
}
.best-seller-card__container {
height: 95% !important;
}
}

View File

@ -0,0 +1,459 @@
/* funcionou nos planos */
.form-element-field01 {
margin-bottom: 50px;
}
.banda-larga__container {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
gap: 45px;
}
.banda-residencia__container, .banda-empresa__container {
display: flex;
flex-direction: column;
align-items: center;
width: 50%;
border: 1px solid gray;
border-radius: 20px;
height: 270px;
}
.banda-card__content {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 40px;
}
.banda__title > h3 {
margin-top: 0px;
font-size: 18px !important;
color: #234164 !important;
text-align: center;
}
.banda__content > p {
text-align: center;
line-height: 1.5em;
}
.banda-residencia__container > div > div.banda__content > p {
margin-top: 0px;
}
.banda-button__container {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.banda-button__container > a {
padding: 10px !important;
background-color: #31a3b5 !important;
color: white !important;
text-decoration: none !important;
width: 100% !important;
text-align: center !important;
border-radius: 5px !important;
}
.banda-button__container > a:hover {
background-color: #1d6570 !important;
}
.planos__container {
width: 100%;
max-width: 1200px;
margin: auto;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: center !important;
padding: 40px 20px !important;
}
.planos-cards__container {
display: flex !important;
justify-content: center !important;
margin: auto !important;
align-items: center !important;
gap: 25px !important;
}
.instalacao__container {
margin-top: 30px !important;
}
.out-card__container {
display: flex !important;
flex-direction: column !important;
transition: transform 0.5s ease;
}
.most-sell-card__text {
align-self: flex-end !important;
background-color: #1d3350 !important;
border-radius: 20px 20px 0px 0px !important;
}
.most-sell-card__text > p {
font-size: 10px !important;
padding: 0px 30px 0px 30px !important;
margin: 0px !important;
color: white !important;
}
.most-sell-card__container {
background-color: #1d3350 !important;
min-width: 230px !important;
height: 450px !important;
border-radius: 20px 0px 20px 20px !important;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: center !important;
}
.seller-card__container {
background: radial-gradient(circle at 50% 50%,
#B00025 50%, /* intermediário */
#A70022 100%) !important; /* mais escuro nas bordas */
height: 450px !important;
min-width: 230px !important;
border-radius: 20px !important;
display: flex !important;
justify-content: center !important;
align-items: center !important;
flex-direction: column !important;
margin-top: 30px !important;
color: white !important;
transition: transform 0.5s ease;
}
.best-seller-card__container {
background: radial-gradient(circle at 50% 50%,
#B00025 50%, /* intermediário */
#A70022 100%) !important; /* mais escuro nas bordas */
width: 92% !important;
height: 95% !important;
border-radius: 15px !important;
color: white !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
}
.card-title__container {
display: flex !important;
justify-content: center !important;
align-items: flex-end !important;
padding: 20px 0px 15px 0px !important;
font-family: "myriad-variable", sans-serif !important;
border-bottom: 1px solid white !important;
width: 90% !important;
}
.card-title__number > h1 {
padding: 0px !important;
margin: 0px !important;
font-size: 50px !important;
}
.card-title__text > h1 {
padding: 0px !important;
margin: 0px 0px 13px 3px !important;
font-size: 20px !important;
}
.card-description__container {
display: flex !important;
justify-content: center !important;
align-items: center !important;
border-bottom: 1px solid white !important;
width: 90% !important;
margin-top: 25px !important;
padding-bottom: 60px !important;
}
.card-description__content {
margin-left: 5px !important;
margin-bottom: 10px !important;
font-weight: 600 !important;
}
.card-price__container {
display: flex !important;
align-items: flex-end !important;
justify-content: flex-end !important;
margin-top: 20px !important;
}
.card-price__money {
align-self: flex-end !important;
margin-bottom: -5px !important;
}
.card-price__money > p {
height: 100% !important;
color: white !important;
font-weight: bold !important;
font-size: 24px !important;
}
.card-price__value {
align-self: flex-end !important;
}
.card-price__value > p {
height: 100% !important;
font-weight: bold !important;
font-size: 50px !important;
color: white !important;
}
.card-price-small__container {
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-self: flex-end !important;
margin-bottom: -10px !important;
margin-left: 2.5px !important;
}
.small-price p {
height: 100% !important;
color: white !important;
font-weight: bold !important;
font-size: 24px !important;
}
.small-gap-time p {
height: 100% !important;
color: white !important;
font-size: 14px !important;
}
.card-plan-button__container {
margin-top: 30px !important;
width: 100% !important;
display: flex !important;
justify-content: center !important;
align-items: center !important;
}
.card-plan-button__container > a {
color: #A70022 !important;
text-decoration: none !important;
font-weight: bold !important;
font-size: 12px !important;
background-color: white !important;
padding: 8px 40px !important;
border-radius: 10px !important;
}
.card-plan-button__container > a:hover {
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px !important;
}
.most-sell-card__container > div > div.card-title__container {
margin-top: 25px !important;
}
.card-price__container div > p {
margin: 0px !important;
}
html .formcraft-css .fc-form .form-element .field-cover.customText-cover .small-gap-time > p, html .formcraft-css .fc-form .form-element .field-cover.customText-cover .small-price > p {
margin-top: 0 !important;
}
.is-selected {
transform: translateY(-15px);
}
.formcraft-icon {
margin-top: 2.5px !important;
}
.form-element-field38 p {
font-size: 12px !important;
}
#plano-selecionado-msg {
font-weight: bold !important;
text-align: center !important;
font-size: 20px !important
}
@media (max-width: 480px) {
/* --- Banda Larga --- */
.banda-larga__container {
flex-direction: column;
gap: 20px;
padding: 0 15px;
}
.banda-residencia__container,
.banda-empresa__container {
width: 100%;
height: fit-content;
}
.banda-card__content {
padding: 25px;
}
/* --- Planos --- */
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 20px 15px !important;
}
.planos-cards__container {
flex-wrap: wrap !important;
flex-direction: column !important;
align-items: center !important;
gap: 15px !important;
}
/* --- Cards individuais --- */
.out-card__container {
width: 100%;
max-width: 320px;
}
.most-sell-card__container {
min-width: unset !important;
width: 100% !important;
height: auto !important;
min-height: 400px !important;
padding: 15px 0 !important;
}
.seller-card__container {
min-width: unset !important;
width: 100% !important;
height: auto !important;
min-height: 400px !important;
padding: 15px 0 !important;
}
.best-seller-card__container {
width: 92% !important;
height: auto !important;
padding-bottom: 20px !important;
}
/* --- Preço --- */
.card-title__number > h1 {
font-size: 40px !important;
}
.card-price__value > p {
font-size: 40px !important;
}
/* --- Instalação --- */
.instalacao__container > p {
text-align: center;
}
/* --- CORREÇÃO: remover margin-bottom absurdo --- */
.form-element-field1 {
margin-bottom: 20px; /* era 2600px — quase certamente um bug */
}
/* --- Mensagem de plano selecionado --- */
#plano-selecionado-msg {
font-size: 16px !important;
}
}
/* ================================
MOBILE GRANDE (481px até 768px)
================================ */
@media (min-width: 481px) and (max-width: 768px) {
.banda-larga__container {
flex-direction: column;
gap: 25px;
padding: 0 20px;
}
.banda-residencia__container,
.banda-empresa__container {
width: 85%;
height: fit-content;
}
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 30px 20px !important;
}
.planos-cards__container {
flex-wrap: wrap !important;
flex-direction: column !important;
align-items: center !important;
gap: 20px !important;
}
.most-sell-card__container,
.seller-card__container {
min-width: unset !important;
width: 280px !important;
height: auto !important;
min-height: 420px !important;
}
.best-seller-card__container {
height: auto !important;
padding-bottom: 20px !important;
}
}
/* ================================
TABLET (769px até 1024px)
================================ */
@media (min-width: 769px) and (max-width: 1024px) {
.banda-larga__container {
gap: 25px;
padding: 0 20px;
}
.planos__container {
margin-left: 0 !important;
margin-right: 0 !important;
padding: 30px 25px !important;
}
.planos-cards__container {
gap: 15px !important;
flex-wrap: wrap !important; /* permite quebrar linha se não couber */
}
.most-sell-card__container {
min-width: 200px !important;
height: 420px !important;
}
.seller-card__container {
min-width: 200px !important;
height: 420px !important;
}
.best-seller-card__container {
height: 95% !important;
}
}

View File

@ -52,7 +52,7 @@ function isVisible(el) {
);
}
// form de viabilidade
// puxa o plano selecionado na pag1 para pag2
function aplicarPlanoSelecionado() {
const planoData = JSON.parse(sessionStorage.getItem("planoSelecionado"));
if (!planoData) return;
@ -296,7 +296,6 @@ async function consultarCep() {
// Função para consultar viabilidade ao clicar no botão
document.addEventListener("click", function (e) {
const btn = e.target.closest("#consulta-viabilidade");
const boxResultado = document.querySelector(".form-element-field37");
if (!btn) return;
e.preventDefault();
if (isProcessing) return;
@ -306,58 +305,137 @@ document.addEventListener("click", function (e) {
btn.disabled = true;
consultarCep().finally(() => {
showResultField();
smoothScrollToElement(boxResultado, 150, 500);
// scroll para o bloco de resultado visível - bloqueado
setTimeout(() => {
const blocoVisivel = [
document.querySelector(".form-element-field23"),
document.querySelector(".form-element-field33"),
document.querySelector(".form-element-field32"),
document.querySelector(".form-element-field36"),
].find(el => el && el.style.display !== "none");
isProcessing = false;
btn.textContent = originalBtnText;
btn.disabled = false;
}, 2000);
}, 2200);
});
});
let viabilidadeAprovada = false;
// FUNÇÃO BOTÃO CONSULTAR VIABILIDADE
function showResultField() {
console.log("Mostrando resultado de viabilidade.", {
temosBandaLarga,
error,
});
console.log("Mostrando resultado de viabilidade.", { temosBandaLarga, error });
const temosBandaLargaTitle = document.querySelector(".form-element-field23");
const temosBandaLargaBox = document.querySelector(".form-element-field24");
const naoTemosBandaLargaTitle = document.querySelector(".form-element-field33",);
const errorBox = document.querySelector(".form-element-field32");
const camposNaoPreenchidos = document.querySelector(".form-element-field36");
const temosBandaLargaTitle = document.querySelector(".form-element-field23");
const temosBandaLargaBox = document.querySelector(".form-element-field24");
const naoTemosBandaLargaTitle = document.querySelector(".form-element-field33");
const errorBox = document.querySelector(".form-element-field32");
const camposNaoPreenchidos = document.querySelector(".form-element-field36");
const btnAssinar = document.querySelector(
'.form-element-field8 button, .form-element-field8 input[type="submit"]'
);
// 1) some com todos os blocos
if (temosBandaLargaTitle) temosBandaLargaTitle.style.display = "none";
if (temosBandaLargaBox) temosBandaLargaBox.style.display = "none";
// 1) esconde todos os blocos e bloqueia botão por padrão
if (temosBandaLargaTitle) temosBandaLargaTitle.style.display = "none";
if (temosBandaLargaBox) temosBandaLargaBox.style.display = "none";
if (naoTemosBandaLargaTitle) naoTemosBandaLargaTitle.style.display = "none";
if (errorBox) errorBox.style.display = "none";
if (camposNaoPreenchidos) camposNaoPreenchidos.style.display = "none";
// 2) se campos não estiverem preenchidos, trata como erro
if (errorBox) errorBox.style.display = "none";
if (camposNaoPreenchidos) camposNaoPreenchidos.style.display = "none";
viabilidadeAprovada = false; // bloqueia por padrão
if (btnAssinar) {
btnAssinar.disabled = true;
btnAssinar.style.opacity = "0.5";
btnAssinar.style.cursor = "not-allowed";
btnAssinar.title = "Consulte a viabilidade antes de continuar";
}
// 2) campos incompletos
if (!pronto()) {
if (camposNaoPreenchidos) camposNaoPreenchidos.style.display = "block";
return;
}
// 3) erro de API / outro erro
// 3) erro de API
if (error) {
if (errorBox) errorBox.style.display = "block";
return;
}
// 4) temos / não temos banda
if (temosBandaLarga) {
// TEMOS banda larga
if (temosBandaLargaTitle) temosBandaLargaTitle.style.display = "block";
if (temosBandaLargaBox) temosBandaLargaBox.style.display = "block";
// 4) SEM cobertura
if (!temosBandaLarga) {
if (naoTemosBandaLargaTitle) naoTemosBandaLargaTitle.style.display = "block";
return; // botão continua bloqueado
}
// 5) TEM cobertura — libera o botão
viabilidadeAprovada = true;
if (btnAssinar) {
btnAssinar.disabled = false;
btnAssinar.style.opacity = "";
btnAssinar.style.cursor = "";
btnAssinar.title = "";
}
if (temosBandaLargaTitle) temosBandaLargaTitle.style.display = "block";
const planoJaEscolhido = sessionStorage.getItem("planoSelecionado");
if (planoJaEscolhido) {
if (temosBandaLargaBox) temosBandaLargaBox.style.display = "none";
setTimeout(() => scrollToAssinar({ offset: 250, duration: 500 }), 1500);
} else {
// NÃO TEMOS banda larga
if (naoTemosBandaLargaTitle)
naoTemosBandaLargaTitle.style.display = "block";
if (temosBandaLargaBox) temosBandaLargaBox.style.display = "block";
}
}
function bloquearSubmitSemViabilidade() {
const MAX_TRIES = 40;
const INTERVAL = 300;
let tries = 0;
function init() {
const form = document.querySelector(".fc-form-33");
if (!form) {
if (++tries <= MAX_TRIES) setTimeout(init, INTERVAL);
return;
}
form.addEventListener("submit", function (e) {
if (!viabilidadeAprovada) {
e.preventDefault();
e.stopImmediatePropagation();
// mostra mensagem e rola até ela
const camposNaoPreenchidos = document.querySelector(".form-element-field36");
const errorBox = document.querySelector(".form-element-field32");
// se nenhum bloco de erro está visível, mostra o de campos não preenchidos
const algumErroVisivel = [
document.querySelector(".form-element-field33"),
document.querySelector(".form-element-field32"),
document.querySelector(".form-element-field36"),
].some(el => el && el.style.display !== "none");
if (!algumErroVisivel && camposNaoPreenchidos) {
camposNaoPreenchidos.style.display = "block";
}
// rola até o bloco de erro visível
const blocoErro = [
document.querySelector(".form-element-field33"),
document.querySelector(".form-element-field32"),
document.querySelector(".form-element-field36"),
].find(el => el && el.style.display !== "none");
if (blocoErro) smoothScrollToElement(blocoErro, 150, 500);
console.warn("[viabilidade] Submit bloqueado: viabilidade não aprovada.");
}
}, true); // capture=true garante que roda antes do FormCraft
}
init();
};
function setPlanoSelecionadoTexto(planoLabel) {
const el = document.getElementById('plano-selecionado-msg');
if (!el) {
@ -632,7 +710,7 @@ window.formCraftCEPInstance = new FormCraftCEP();
// Garantir que tela scrolle em caso de campo obrigatório sem preenchimento
(function scrollToFirstInvalidOnSubmit() {
const form = document.querySelector(".fc-form-23");
const form = document.querySelector(".fc-form-33");
if (!form) return;
const OFFSET = 180; // ajuste conforme seu header/spacing