/* =========================================================================
   Auto Tech Solutions — Landing Page
   Folha de estilo principal (carregada de forma assíncrona pelo index.html).
   O CSS crítico da dobra (tokens, reset, header, hero, botões) está inline
   no <head> do index.html — este arquivo cuida do resto da página.

   IDENTIDADE VISUAL
     Fundo claro (branco / azul-acinzentado), detalhes em AZUL da marca
     (--blue) e acabamento em PRETO (--ink) no header, rodapé e títulos.

   Ordem: 1 Seções · 2 Prova social · 3 Categorias · 4 Produtos
          5 Diferenciais · 6 Por que a Auto Tech · 7 Quem somos · 8 FAQ
          9 Depoimentos · 10 Selos · 11 Localização · 12 CTA final
          13 Footer · 14 Sticky mobile
   ========================================================================= */

/* =========================================================================
   0. PAPÉIS TIPOGRÁFICOS
   As duas famílias e os h1/h2/h3 são definidos no CSS crítico do index.html.
   Aqui ficam os elementos que não são heading mas pertencem a cada papel.

     PAPEL 1 — Montserrat: números e preços (leitura de "destaque", não de texto)
     PAPEL 2 — Inter 400/500: herdado do body, nada a declarar
     PAPEL 3 — Inter 700/800 caixa alta + tracking: rótulos e informações

   Os botões ficam propositalmente na Inter: em 15–18px ela é mais legível que
   a Montserrat, que foi desenhada para títulos grandes.
   ========================================================================= */
.proof__grid strong,
.card__price,
.modal__preco{font-family:var(--font-titulo);font-weight:900}

.eyebrow,
.modal__eyebrow,
.card__price span,
.card__fit,
.card__tag,
.cat__flag,
.card__frete,
.localiza__list b,
.footer h3,
.modal__sec h3,
.testi figcaption span,
.proof__grid span{font-family:var(--font-texto)}

/* O papel 3 é sempre: caixa alta + peso alto + espaçamento entre letras. */
.eyebrow,.modal__eyebrow,.card__price span,.localiza__list b,
.footer h3,.modal__sec h3{text-transform:uppercase;font-weight:800}

.btn{font-family:var(--font-texto);font-weight:800;letter-spacing:-.005em}

/* ---------------------------- 1. Seções ---------------------------- */
/* mínimo de 44px (era 60px): em 390px o clamp travava no mínimo e cada par
   de seções somava 120px de respiro vertical — exagerado no celular. */
.section{padding:clamp(44px,7vw,104px) 0}
.section--alt{background:var(--bg-soft);border-block:1px solid var(--line)}
.container--narrow{max-width:840px}

.section__head{max-width:62ch;margin:0 auto clamp(36px,5vw,58px);text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 14px;
  color:var(--blue);font-size:12.5px;font-weight:800;letter-spacing:.16em;
  text-transform:uppercase;background:var(--blue-light);
  border-radius:999px;padding:7px 16px}
.section__lead{color:var(--body);font-size:clamp(15.5px,1.7vw,18.5px);margin:0}
.section__cta{text-align:center;margin:clamp(36px,5vw,52px) 0 0}

/* ------------------------- 2. Prova social ------------------------- */
.proof{background:var(--white);border-bottom:1px solid var(--line);padding:40px 0}
.proof__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px 12px;
  list-style:none;margin:0 0 26px;padding:0;text-align:center}
.proof__grid strong{display:flex;align-items:center;justify-content:center;gap:5px;
  font-size:clamp(28px,4.6vw,38px);font-weight:900;letter-spacing:-.035em;
  line-height:1.1;color:var(--ink)}
.proof__grid span{display:block;color:var(--body-soft);font-size:13.5px;
  font-weight:600;margin-top:5px}
.proof__grid .star{width:22px;height:22px;color:#F5A524}

.proof__seals{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;
  list-style:none;margin:0;padding:0}
.proof__seals li{display:flex;align-items:center;gap:8px;background:var(--bg-soft);
  border:1px solid var(--line);border-radius:999px;padding:10px 17px;
  font-size:13.5px;color:var(--body);font-weight:600}
.proof__seals b{color:var(--ink)}
.proof__seals .ico{width:18px;height:18px;color:var(--blue);flex:none}
@media(min-width:720px){.proof__grid{grid-template-columns:repeat(4,1fr)}}

/* -------------------------- 3. Categorias -------------------------- */
.cats{display:grid;gap:20px}
@media(min-width:640px){.cats{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.cats{grid-template-columns:repeat(3,1fr)}}

.cat{position:relative;display:flex;flex-direction:column;background:var(--white);
  border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:30px 26px;box-shadow:var(--shadow-sm);overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
/* barra azul que cresce no topo ao passar o mouse */
.cat::before{content:"";position:absolute;left:0;top:0;height:4px;width:0;
  background:var(--blue);transition:width .38s var(--ease)}
.cat:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:var(--line-2)}
.cat:hover::before{width:100%}
.cat__ico{width:46px;height:46px;color:var(--blue);margin-bottom:18px;
  transition:transform .3s var(--ease)}
.cat:hover .cat__ico{transform:scale(1.08)}
.cat h3{margin-bottom:8px}
.cat p{color:var(--body);font-size:15.5px;margin:0 0 20px}
/* padding vertical + min-height levam o link a 44px de altura: como ele é um
   CTA de verdade (leva ao WhatsApp ou à seção), precisa de área de toque
   confortável — sem ele o alvo tinha só 25px. */
.cat__link{margin-top:auto;display:inline-flex;align-items:center;gap:8px;
  color:var(--blue);font-weight:800;font-size:15px;text-decoration:none;
  padding:10px 0;min-height:44px}
.cat__link .ico{width:19px;height:19px;transition:transform .28s var(--ease)}
.cat__link:hover{color:var(--blue-dark)}
.cat__link:hover .ico{transform:translateX(5px)}
.cat__flag{position:absolute;top:16px;right:16px;background:var(--blue);color:#fff;
  font-size:11.5px;font-weight:800;letter-spacing:.04em;padding:6px 12px;border-radius:999px}

/* Card de destaque (tapete) e card de CTA */
.cat--hero{background:linear-gradient(160deg,var(--blue-light),var(--white) 62%);
  border-color:#BFD8F5}
.cat--hero::before{width:100%}
.cat--cta{background:var(--ink);border-color:var(--ink)}
.cat--cta::before{background:var(--blue-mid)}
.cat--cta h3{color:#fff}
.cat--cta p{color:#B6C0CC}
.cat--cta .cat__ico{color:var(--blue-mid)}
.cat--cta .btn{margin-top:auto}
.cat--cta .btn--dark{background:var(--white);color:var(--ink)}
.cat--cta .btn--dark:hover{background:var(--blue-light);color:var(--blue-dark)}

/* --------------------------- 4. Produtos --------------------------- */
.cards{display:grid;gap:24px}
@media(min-width:700px){.cards{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1040px){.cards{grid-template-columns:repeat(3,1fr)}}

.card{display:flex;flex-direction:column;background:var(--white);
  border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-sm);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:var(--line-2)}
.card .media{border:0;border-radius:0;border-bottom:1px solid var(--line)}
.card .media>img{transition:transform .5s var(--ease)}
.card:hover .media>img{transform:scale(1.05)}
.card__tag{position:absolute;z-index:2;background:var(--blue);color:#fff;
  font-size:12px;font-weight:800;padding:7px 13px;border-radius:999px;
  letter-spacing:.02em;width:auto;height:auto;inset:14px auto auto 14px;
  box-shadow:0 6px 16px rgba(22,104,196,.32)}
.card__tag--alt{background:var(--ink);box-shadow:0 6px 16px rgba(13,15,18,.28)}

.card__body{display:flex;flex-direction:column;flex:1;padding:24px 22px 22px}
.card__body h3{margin-bottom:6px}
.card__fit{color:var(--body-soft);font-size:14px;margin-bottom:16px}
.card__list{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:10px}
.card__list li{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;color:var(--body)}
.card__list .ico{width:17px;height:17px;color:var(--blue);flex:none;margin-top:4px}
.card__rating{display:flex;align-items:center;gap:7px;font-size:13.5px;
  color:var(--body-soft);font-weight:600;margin-bottom:12px}
.card__rating .star{width:16px;height:16px;color:#F5A524;flex:none}
.card__price{margin:auto 0 18px;font-size:30px;font-weight:900;
  letter-spacing:-.035em;color:var(--ink)}
.card__price span{display:block;font-size:12.5px;font-weight:700;color:var(--body-soft);
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px}
.card__ml{margin-top:10px;min-height:48px;font-size:14.5px}

/* ---------- 4b. Carrossel de fotos do produto ----------
   Rolagem nativa com scroll-snap: o swipe no celular é o do próprio
   navegador (fluido, com inércia) e o JS só sincroniza setas e bolinhas. */
.card__gal{position:relative}
.carousel{position:relative;background:#fff;overflow:hidden;
  border-bottom:1px solid var(--line)}
.carousel__track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;-ms-overflow-style:none}
.carousel__track::-webkit-scrollbar{display:none}
.carousel__slide{flex:0 0 100%;margin:0;scroll-snap-align:center;position:relative}
.carousel__slide::before{content:"";display:block;padding-top:100%}
.carousel__slide img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;padding:6px;background:#fff}

.carousel__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:38px;height:38px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.94);
  color:var(--ink);box-shadow:var(--shadow-sm);padding:0;
  opacity:0;transition:opacity .22s var(--ease),background-color .2s var(--ease)}
.carousel__nav svg{width:20px;height:20px}
.carousel__nav--prev{left:10px;transform:translateY(-50%) rotate(90deg)}
.carousel__nav--next{right:10px;transform:translateY(-50%) rotate(-90deg)}
.carousel__nav:hover{background:#fff;color:var(--blue)}
.carousel__nav[disabled]{opacity:0!important;pointer-events:none}
/* setas aparecem no hover (desktop) e sempre que houver foco por teclado */
.card:hover .carousel__nav,.carousel:focus-within .carousel__nav{opacity:1}
/* Em telas de toque as setas ficam sempre visíveis e maiores (44px é o
   mínimo confortável para o dedo; 38px reprovava). */
@media(hover:none){
  .carousel__nav{opacity:1;width:44px;height:44px}
  .carousel__nav svg{width:22px;height:22px}
}

.carousel__dots{position:absolute;left:0;right:0;bottom:9px;z-index:3;
  display:flex;justify-content:center;gap:6px;pointer-events:auto}
.carousel__dots button{position:relative;width:7px;height:7px;padding:0;border:0;
  border-radius:50%;background:var(--line-2);cursor:pointer;
  transition:background-color .22s var(--ease),width .22s var(--ease)}
/* área de toque invisível ao redor da bolinha (7px seria impossível de acertar) */
.carousel__dots button::after{content:"";position:absolute;inset:-9px}
.carousel__dots button[aria-selected="true"]{background:var(--blue);width:20px;border-radius:4px}

/* Selo de frete grátis sobre a foto */
.card__frete{position:absolute;z-index:2;inset:auto auto 14px 14px;
  display:inline-flex;align-items:center;gap:6px;background:var(--wa);
  color:var(--wa-ink);font-size:12px;font-weight:800;padding:6px 12px;
  border-radius:999px;box-shadow:0 6px 16px rgba(37,211,102,.34)}
.card__frete .ico{width:15px;height:15px}

/* Preço + parcelamento */
.card__preco{margin:auto 0 16px}
.card__preco .card__price{margin:0 0 3px}
.card__parcela{margin:0;font-size:14px;color:var(--body)}
.card__parcela strong{color:var(--wa-ink);background:rgba(37,211,102,.16);
  padding:1px 7px;border-radius:6px}
.card__detalhes{margin-bottom:10px;min-height:48px;font-size:14.5px}

/* Bloco "fazemos para o seu modelo" */
.anymodel{position:relative;overflow:hidden;margin-top:clamp(34px,5vw,52px);
  display:grid;gap:26px;align-items:center;background:var(--white);
  border:1px solid var(--line);border-left:5px solid var(--blue);
  border-radius:var(--radius-lg);padding:clamp(26px,4vw,44px);box-shadow:var(--shadow-sm)}
.anymodel h3{margin-bottom:10px}
.anymodel p{color:var(--body);margin-bottom:20px}
.anymodel .btn{white-space:nowrap}
.brands{display:flex;flex-wrap:wrap;gap:9px;list-style:none;margin:0;padding:0}
.brands li{background:var(--bg-soft);border:1px solid var(--line);border-radius:9px;
  padding:8px 14px;font-size:13.5px;font-weight:700;color:var(--ink);
  transition:border-color .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.brands li:hover{border-color:var(--blue);color:var(--blue);transform:translateY(-2px)}
@media(min-width:940px){.anymodel{grid-template-columns:1fr auto;gap:44px}}

/* ------------------------- 5. Diferenciais ------------------------- */
.feats{display:grid;gap:20px;list-style:none;margin:0;padding:0}
@media(min-width:640px){.feats{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.feats{grid-template-columns:repeat(3,1fr)}}
.feats li{background:var(--white);border:1px solid var(--line);
  border-radius:var(--radius);padding:28px 24px;box-shadow:var(--shadow-sm);
  transition:transform .28s var(--ease),box-shadow .28s var(--ease)}
.feats li:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.feats .ico{width:40px;height:40px;color:var(--blue);margin-bottom:16px;
  padding:8px;background:var(--blue-light);border-radius:12px;box-sizing:content-box}
.feats h3{font-size:18px;margin-bottom:7px}
.feats p{color:var(--body);font-size:15px;margin:0}

/* --------------- 6. Por que a Auto Tech (bloco preto) --------------- */
/* Título em duas linhas: a segunda é o nome da empresa, destacado em azul e
   um pouco maior — funciona como assinatura, não como continuação da frase. */
.h2--marca span{display:block;color:var(--blue-mid);font-size:1.14em;
  letter-spacing:-.035em;margin-top:.08em}

.section--dark{background:var(--ink);color:#C3CCD6}
.section--dark h2,.section--dark h3{color:#fff}
.section--dark .eyebrow{color:var(--blue-mid);background:rgba(62,138,224,.16)}
.section--dark .section__lead{color:#B6C0CC}
.why{display:grid;gap:18px;list-style:none;margin:0;padding:0}
@media(min-width:640px){.why{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1060px){.why{grid-template-columns:repeat(4,1fr)}}
.why li{display:flex;gap:15px;background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:22px;
  transition:background-color .28s var(--ease),border-color .28s var(--ease),transform .28s var(--ease)}
.why li:hover{background:rgba(62,138,224,.1);border-color:rgba(62,138,224,.42);transform:translateY(-4px)}
.why .ico{width:27px;height:27px;color:var(--blue-mid);flex:none;margin-top:2px}
.why h3{font-size:16.5px;margin-bottom:6px}
.why p{color:#AEB9C5;font-size:14.5px;margin:0}

/* -------------------------- 7. Quem somos -------------------------- */
.about{display:grid;gap:36px;align-items:center}
.about__text h2{margin-bottom:20px}
.about__text p{color:var(--body)}
.about__text .btn{margin-top:12px}
.about__media .media{box-shadow:var(--shadow-lg)}
@media(min-width:920px){
  .about{grid-template-columns:.82fr 1.18fr;gap:56px}
  .about__media{position:sticky;top:104px}
}

/* ----------------------------- 8. FAQ ----------------------------- */
.faq{display:grid;gap:12px}
.faq__item{background:var(--white);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease)}
.faq__item[open]{border-color:var(--blue);box-shadow:0 8px 24px rgba(22,104,196,.12)}
.faq__item summary{display:flex;align-items:center;justify-content:space-between;
  gap:16px;cursor:pointer;list-style:none;padding:21px 22px;font-weight:700;
  font-size:16.5px;color:var(--ink);transition:color .2s var(--ease)}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary:hover{color:var(--blue)}
.faq__item summary .ico{width:22px;height:22px;color:var(--blue);flex:none;
  transition:transform .3s var(--ease)}
.faq__item[open] summary .ico{transform:rotate(180deg)}
.faq__a{padding:0 22px 22px;color:var(--body);font-size:15.5px}
.faq__a p{margin:0}
/* Respostas com mais de um parágrafo (ex.: "onde comprar", que lista 3
   canais) precisam de respiro entre os blocos — sem isso os parágrafos
   colavam um no outro. */
.faq__a p+p,.faq__a p+ul,.faq__a ul+p{margin-top:12px}
.faq__canais{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.faq__canais li{display:flex;gap:10px;align-items:flex-start;line-height:1.5}
.faq__canais .faq__emoji{flex:none;font-size:17px;line-height:1.4}
/* abertura suave do conteúdo */
.faq__item[open] .faq__a{animation:faqIn .34s var(--ease)}
@keyframes faqIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ------------------------- 9. Depoimentos ------------------------- */
.testis{display:grid;gap:22px}
@media(min-width:940px){.testis{grid-template-columns:repeat(3,1fr)}}
.testi{position:relative;margin:0;background:var(--white);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:28px 24px;display:flex;flex-direction:column;
  box-shadow:var(--shadow-sm);transition:transform .28s var(--ease),box-shadow .28s var(--ease)}
.testi:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
/* aspas decorativas */
.testi::before{content:"\201C";position:absolute;top:8px;right:22px;
  font-size:74px;line-height:1;color:var(--blue-light);font-family:Georgia,serif}
.testi__stars{display:flex;gap:3px;margin:0 0 15px;position:relative}
.testi__stars .star{width:18px;height:18px;color:#F5A524}
.testi__text{margin:0 0 20px;flex:1;position:relative}
.testi__text p{margin:0;font-size:15.5px;color:var(--body);font-style:italic}
.testi figcaption{border-top:1px solid var(--line);padding-top:15px}
.testi cite{display:block;font-style:normal;font-weight:800;font-size:15px;color:var(--ink)}
.testi figcaption span{display:block;color:var(--body-soft);font-size:13px;margin-top:2px}

/* ---------------------------- 10. Selos ---------------------------- */
.trust{background:var(--white);border-block:1px solid var(--line);padding:30px 0}
.trust__list{display:flex;flex-wrap:wrap;justify-content:center;gap:16px 30px;
  list-style:none;margin:0;padding:0}
.trust__list li{display:flex;align-items:center;gap:10px;color:var(--body);
  font-size:14px;font-weight:600}
.trust__list b{color:var(--ink);font-weight:800}
.trust__list .ico{width:23px;height:23px;color:var(--blue);flex:none}

/* ------------------------- 11. Localização ------------------------- */
.localiza{display:grid;gap:30px}
@media(min-width:920px){.localiza{grid-template-columns:1.15fr .85fr;gap:38px}}
.localiza__map{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--line);
  background:var(--white);min-height:340px;box-shadow:var(--shadow-sm)}
.localiza__map iframe{width:100%;height:100%;min-height:340px;display:block}
.localiza__list{list-style:none;margin:0 0 24px;padding:0;display:grid;gap:20px}
.localiza__list li{display:flex;gap:15px}
.localiza__list .ico{width:25px;height:25px;color:var(--blue);flex:none;margin-top:3px}
.localiza__list b{display:block;font-size:13px;text-transform:uppercase;
  letter-spacing:.1em;color:var(--body-soft);margin-bottom:5px;font-weight:800}
.localiza__list p,.localiza__list address{margin:0;font-style:normal;
  font-size:15.5px;color:var(--ink)}
.localiza__list em{color:var(--body-soft);font-size:13.5px;font-style:italic}
/* O telefone virou link tel: (era texto puro); sem isso ficaria idêntico ao
   texto ao redor e ninguém saberia que dá para tocar para ligar. */
.localiza__list a{color:var(--blue);font-weight:700;text-decoration:none}
.localiza__list a:hover{text-decoration:underline}

/* -------------------------- 12. CTA final -------------------------- */
.finalcta{position:relative;overflow:hidden;text-align:center;
  padding:clamp(60px,8vw,100px) 0;
  background:
    radial-gradient(720px 400px at 50% 0%,rgba(22,104,196,.14),transparent 64%),
    linear-gradient(180deg,var(--bg-soft),var(--white))}
.finalcta::before{content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);
  width:min(560px,86%);height:4px;
  background:linear-gradient(90deg,transparent,var(--blue),transparent)}
.finalcta h2{max-width:22ch;margin-inline:auto}
.finalcta>.container>p{color:var(--body);max-width:58ch;margin-inline:auto;
  font-size:clamp(15.5px,1.8vw,18.5px)}
/* 760px (e não 640): lado a lado, cada botão precisa de ~330px para manter
   "Chamar no WhatsApp agora" em uma linha só. Com 640px eles quebravam. */
.finalcta__btns{display:flex;flex-direction:column;gap:12px;
  max-width:760px;margin:30px auto 22px}
.finalcta__note{display:flex;align-items:center;justify-content:center;gap:9px;
  flex-wrap:wrap;font-size:14px;color:var(--body-soft);font-weight:600;margin:0}
.finalcta__note .ico{width:18px;height:18px;color:var(--blue);flex:none}
@media(min-width:640px){.finalcta__btns{flex-direction:row}
  .finalcta__btns .btn{flex:1}}

/* --------------------- 13. Footer (acabamento preto) --------------------- */
.footer{background:var(--ink);color:#AEB9C5;
  padding:clamp(46px,6vw,72px) 0 30px;border-top:4px solid var(--blue)}
.footer__grid{display:grid;gap:34px}
@media(min-width:640px){.footer__grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.footer__grid{grid-template-columns:1.4fr .8fr 1.1fr 1.2fr;gap:42px}}
.footer h3{font-size:13.5px;text-transform:uppercase;letter-spacing:.12em;
  color:#8A96A4;margin-bottom:16px;font-weight:800}
.footer__slogan{color:#9EAAB8;font-size:14.5px;margin:16px 0 0}
.footer__links{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.footer__links a{display:flex;align-items:center;gap:10px;color:#C3CCD6;
  text-decoration:none;font-size:14.5px;transition:color .2s var(--ease),transform .2s var(--ease)}
.footer__links a:hover{color:#fff;transform:translateX(3px)}
.footer__links .ico{width:18px;height:18px;color:var(--blue-mid);flex:none}
.footer__addr{font-style:normal;color:#C3CCD6;font-size:14.5px;line-height:1.75}
.footer__addr span{display:block;color:#8A96A4;font-size:13.5px;margin-top:12px}

.footer__base{margin-top:40px;padding-top:24px;
  border-top:1px solid rgba(255,255,255,.12);text-align:center}
.footer__base p{color:#8A96A4;font-size:13px;margin:0 0 8px}
.footer__sign{font-size:12.5px;color:#7C8894}
.footer__sign a{color:#AEB9C5;font-weight:600;text-decoration:none}
.footer__sign a:hover{color:#fff;text-decoration:underline}

/* ---------------------- 14. Modal de produto ---------------------- */
.modal{width:min(980px,100%);max-width:100%;max-height:100dvh;padding:0;border:0;
  background:transparent;overflow:visible;margin:auto}
/* Rede de segurança: alguns motores (e qualquer navegador sem suporte a
   <dialog>) não aplicam o display:none do fechado. Sem esta regra, a caixa
   vazia com o botão X continuaria pintada na tela depois de fechar. */
dialog.modal:not([open]){display:none!important}
.modal::backdrop{background:rgba(8,12,18,.72)}
.modal__box{position:relative;background:var(--white);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);max-height:92dvh;overflow-y:auto;
  animation:modalIn .3s var(--ease)}
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.modal__box{animation:none}}

/* Ancorado no <dialog> (que é position:fixed quando modal), e não dentro da
   caixa que rola. Assim fica sempre no mesmo lugar sem precisar de sticky —
   que é o que gerava o fantasma no iOS. */
.modal__fechar{position:absolute;top:14px;right:14px;z-index:6;
  width:42px;height:42px;display:grid;place-items:center;cursor:pointer;padding:0;
  border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.97);
  color:var(--ink);box-shadow:var(--shadow);transition:background-color .2s var(--ease),color .2s var(--ease)}
.modal__fechar svg{width:20px;height:20px}
.modal__fechar:hover{background:var(--ink);color:#fff;border-color:var(--ink)}

/* padding-top de 64px reserva a faixa do botão de fechar (que agora é
   absoluto): sem isso o X cairia por cima da galeria e do título. */
.modal__grid{display:grid;gap:24px;padding:64px 18px 24px}
/* Itens de grid nascem com min-width:auto e não encolhem abaixo do próprio
   conteúdo. Sem isto, a faixa de miniaturas (9 itens de 62px) forçava a
   coluna a ~690px dentro de um modal de 355px no celular. */
.modal__grid>*{min-width:0}
@media(min-width:820px){
  .modal__grid{grid-template-columns:1fr 1fr;gap:34px;padding:64px 30px 34px;align-items:start}
  .modal__galeria{position:sticky;top:0}
}
.modal__galeria .carousel{border:1px solid var(--line);border-radius:var(--radius);
  border-bottom:1px solid var(--line)}
.modal__galeria .carousel__nav{opacity:1}

/* Miniaturas da galeria do modal */
.modal__thumbs{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 2px;
  scrollbar-width:thin;min-width:0;max-width:100%}
.modal__thumbs button{flex:0 0 62px;height:62px;padding:2px;cursor:pointer;
  border:2px solid var(--line);border-radius:9px;background:#fff;
  transition:border-color .2s var(--ease)}
.modal__thumbs button[aria-selected="true"]{border-color:var(--blue)}
.modal__thumbs img{width:100%;height:100%;object-fit:contain}

.modal__eyebrow{display:inline-block;margin:0 0 10px;color:var(--blue);
  background:var(--blue-light);border-radius:999px;padding:6px 14px;
  font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.modal__info h2{font-size:clamp(21px,2.6vw,28px);margin-bottom:6px}
.modal__aplic{color:var(--body-soft);font-size:14.5px;margin-bottom:16px}
.modal__precoBox{background:var(--bg-soft);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px 20px;margin-bottom:20px}
.modal__preco{font-size:32px;font-weight:900;letter-spacing:-.035em;
  color:var(--ink);margin:0 0 4px;line-height:1.1}
.modal__parcela{margin:0 0 12px;font-size:15px;color:var(--body)}
.modal__parcela strong{color:var(--ink)}
.modal__benef{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.modal__benef li{display:flex;align-items:flex-start;gap:9px;font-size:14px;color:var(--body)}
.modal__benef .ico{width:18px;height:18px;flex:none;margin-top:2px;color:var(--blue)}
.modal__benef .ico--wa{color:var(--wa-ink)}

.modal__sec{margin-bottom:20px}
.modal__sec h3{font-size:15px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--body-soft);margin-bottom:12px;font-weight:800}
.modal__destaques{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.modal__destaques li{display:flex;align-items:flex-start;gap:10px;font-size:15px;color:var(--body)}
.modal__destaques .ico{width:17px;height:17px;color:var(--blue);flex:none;margin-top:4px}
.modal__specs{width:100%;border-collapse:collapse;font-size:14.5px}
.modal__specs th,.modal__specs td{text-align:left;padding:9px 2px;
  border-bottom:1px solid var(--line);vertical-align:top}
.modal__specs th{color:var(--body-soft);font-weight:700;width:44%}
.modal__specs td{color:var(--ink)}
.modal__ctas{display:grid;gap:10px;margin-top:22px}
.modal__nota{font-size:12.5px;color:var(--body-soft);margin:12px 0 0;text-align:center}

/* ---------------------- 15. Barra CTA fixa (mobile) ---------------------- */
.stickybar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;gap:9px;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);box-shadow:0 -6px 24px rgba(13,15,18,.1)}
/* padding e fonte reduzidos: em 360px o rótulo quebrava em duas linhas */
.stickybar .btn{flex:1;min-height:52px;padding:10px 14px;font-size:15px;white-space:nowrap}
/* seletor duplo para vencer a especificidade de .stickybar .btn acima —
   o botão do ML é só ícone e não deve competir em largura com o CTA principal */
.stickybar .stickybar__ml{flex:0 0 58px;padding:0}
body{padding-bottom:84px}          /* espaço para a barra não cobrir o rodapé */
@media(min-width:1000px){
  .stickybar{display:none}
  body{padding-bottom:0}
}

/* =========================================================================
   16. AJUSTE FINO DE ESPAÇAMENTO NO CELULAR  (≤ 560px)

   Problema corrigido aqui: os recuos laterais se somavam. O .container já
   reservava 20px de cada lado e, dentro dele, cada card somava mais 22–30px
   — até 46px antes do texto começar. Num aparelho de 390px sobravam 296px
   úteis (76% da tela), deixando os blocos estreitos e "apertados por dentro,
   folgados por fora".

   A escala abaixo reduz recuo lateral, respiro entre seções e padding interno
   dos blocos SOMENTE no celular. Nada aqui afeta tablet ou desktop, que já
   foram validados.
   ========================================================================= */
@media (max-width:560px){

  /* --- margem lateral da página: 20px → 16px --- */
  .container{padding-inline:16px}

  /* --- respiro vertical das faixas --- */
  .hero{padding:38px 0 34px}
  .proof{padding:30px 0}
  .trust{padding:24px 0}
  .footer{padding:40px 0 26px}
  .finalcta{padding:48px 0}

  /* --- cabeçalho de seção mais compacto --- */
  .section__head{margin-bottom:26px}
  .section__cta{margin-top:28px}
  .eyebrow{margin-bottom:11px;padding:6px 13px}

  /* --- padding interno dos blocos (o principal ganho de largura útil) --- */
  .card__body{padding:20px 18px 18px}
  .cat{padding:24px 18px}
  .feats li{padding:22px 18px}
  .why li{padding:18px 16px;gap:13px}
  .testi{padding:22px 18px}
  .faq__item summary{padding:17px 18px;font-size:15.5px;gap:12px}
  .faq__a{padding:0 18px 18px}
  .anymodel{margin-top:26px;padding:22px 18px}
  .localiza__map{min-height:260px}
  .localiza__map iframe{min-height:260px}
  .modal__precoBox{padding:16px 16px}

  /* --- gaps de grade --- */
  .cards{gap:18px}
  .cats{gap:14px}
  .feats{gap:14px}
  .why{gap:12px}
  .testis{gap:16px}
  .localiza{gap:24px}
  .footer__grid{gap:26px}
  .footer__base{margin-top:28px;padding-top:18px}

  /* --- hero: texto um pouco mais junto --- */
  .badge{margin-bottom:16px;padding:7px 14px}
  .hero__sub{margin-bottom:22px}
  .hero__cta{margin-bottom:20px}
  .hero__seals{gap:8px}
  .hero__seals li{padding:8px 13px}

  /* --- tipografia: títulos menos "soltos" em tela estreita --- */
  h1{letter-spacing:-.03em}
  .section__lead{font-size:15.5px}

  /* --- alvos de toque de 44px ---
     A regra @media(hover:none) já cobre aparelhos de toque, mas ela não vale
     em navegador de mesa com a janela estreita. Garantir também por largura
     deixa o alvo correto em qualquer combinação. */
  .carousel__nav{width:44px;height:44px}
  .carousel__nav svg{width:22px;height:22px}
  /* Bolinhas um pouco maiores e mais espaçadas no celular. Não vão a 44px de
     propósito: com passo de 13px entre elas, alvos desse tamanho se
     sobreporiam e o toque cairia na bolinha errada. O controle principal é o
     swipe (e as setas de 44px) — as bolinhas são indicador de posição. */
  .carousel__dots{gap:9px;bottom:11px}
  .carousel__dots button{width:9px;height:9px}
  .carousel__dots button::after{inset:-10px}
  .footer__links a{padding:10px 0}
  .footer__links{gap:2px}
}

/* Telas bem estreitas (≤ 360px): mais um passo de compressão lateral. */
@media (max-width:360px){
  .container{padding-inline:14px}
  .card__body,.cat,.feats li,.testi{padding-left:16px;padding-right:16px}
  .faq__item summary,.faq__a{padding-left:16px;padding-right:16px}
}

/* =========================================================================
   17. RENDERIZAÇÃO SOB DEMANDA (content-visibility)

   A página é longa: ~1200 nós, 8 seções, 6 carrosséis. Sem isto o navegador
   calcula layout e pinta TUDO no primeiro frame, mesmo o que está a milhares
   de pixels abaixo da dobra — custo que aparece como long task e atrasa o
   momento em que a página fica interativa.

   Com `content-visibility:auto` o navegador pula a renderização das seções
   fora da tela e as processa conforme o visitante rola. O
   `contain-intrinsic-size` informa a altura estimada para que a barra de
   rolagem não "pule" durante a leitura (sem ele, o CLS iria pro alto).

   NÃO aplicado em:
   - #sobre  → contém .about__media com position:sticky, que precisa do
               contexto de layout da seção inteira para funcionar;
   - .hero / .proof → estão na dobra, nada a economizar.
   ========================================================================= */
#categorias,
#tapetes,
#diferenciais,
#farois,
.section--dark,
#duvidas,
#depoimentos,
.trust,
#contato,
.finalcta{
  content-visibility:auto;
  contain-intrinsic-size:auto 900px;
}

/* O rodapé é curto e previsível — altura menor evita salto na barra. */
.footer{
  content-visibility:auto;
  contain-intrinsic-size:auto 520px;
}
