.elementor-10 .elementor-element.elementor-element-094defa{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-10 .elementor-element.elementor-element-101a414{width:100%;max-width:100%;}/* Start custom CSS for html, class: .elementor-element-101a414 */@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap');

/* ---------------------------------------------------------------------------
   1. TOKENS DE DESIGN
   --------------------------------------------------------------------------- */
#jc-lp-wrapper {
  /* Marca */
  --jc-blue:        #0068B5;
  --jc-blue-400:    #2E9BE8;
  --jc-blue-300:    #79C6F7;
  --jc-green:       #76B900;
  --jc-green-400:   #96E01A;

  /* Base dark blue */
  --jc-bg:          #050A14;
  --jc-bg-2:        #071120;
  --jc-surface:     #0A1524;
  --jc-surface-2:   #0D1B2E;

  /* Traços e texto */
  --jc-line:        rgba(118, 176, 232, .16);
  --jc-line-2:      rgba(118, 176, 232, .30);
  --jc-text:        #E9F0F9;
  --jc-muted:       #9AAEC6;
  --jc-dim:         #6F849F;
  --jc-warn:        #E8A33D;

  /* Métrica — chanfro é a assinatura da placa */
  --jc-notch:       14px;
  --jc-notch-sm:    9px;
  --jc-card-x:      26px;   /* padding lateral do card; a foto sangra por ele */
  --jc-max:         1180px;
  --jc-pad:         clamp(20px, 5vw, 40px);
  --jc-sec-y:       clamp(56px, 6.5vw, 92px);

  /* Altura da barra de navegação. O JS mede a real e sobrescreve inline;
     este é o valor que vale ANTES disso — e o único, se o script não rodar.
     O fallback antigo era 66px, altura da barra em UMA linha: no desktop,
     onde ela passa de 200px por causa da logo grande, o hero ficava alto
     demais e a faixa nascia cerca de 100px abaixo da dobra, invisível. */
  --jc-nav-h:       206px;

  --jc-font:    'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --jc-display: 'Archivo', 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --jc-mono:    'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --jc-ease:    cubic-bezier(.2, .8, .2, 1);
}

/* ---------------------------------------------------------------------------
   2. RESET LOCAL — neutraliza herança do tema sem vazar para fora
   ---------------------------------------------------------------------------
   ZONAS FRANCAS: fica DE FORA do reset tudo que é renderizado por terceiros
   dentro do wrapper —

     .jc-ti      selo do Trustindex (shortcode do plugin)
     .jc-elform  os dois formulários (templates do Elementor, por shortcode)
     .jc-embed   o vídeo do Instagram (bloco 4)

   Todos trazem o próprio CSS, e como este reset carrega um ID na
   especificidade, ele venceria os estilos deles: o selo saía ilegível, os
   campos do formulário sairiam sem borda, sem fundo e sem fonte, e a logo do
   Instagram viraria contorno vazado (ela pinta por atributo `fill`, e
   atributo perde para regra de CSS). O `:not(:where(...))` exclui o subtree
   sem alterar em nada a especificidade das regras — `:where()` pesa zero.

   Repare que as exclusões são `.jc-elform *` e `.jc-embed *`, SEM os próprios
   contêineres: eles são nossos e continuam resetados; livre é só o que o
   terceiro renderiza dentro deles.

   >>> AO CRIAR QUALQUER REGRA AMPLA NOVA (img, svg, a, button, strong, em),
       REPLIQUE ESTAS EXCLUSÕES — senão o selo, os campos ou o vídeo quebram.
   --------------------------------------------------------------------------- */
#jc-lp-wrapper,
#jc-lp-wrapper *:not(:where(.jc-ti, .jc-ti *, .jc-elform *, .jc-embed *)),
#jc-lp-wrapper *:not(:where(.jc-ti, .jc-ti *, .jc-elform *, .jc-embed *))::before,
#jc-lp-wrapper *:not(:where(.jc-ti, .jc-ti *, .jc-elform *, .jc-embed *))::after { box-sizing: border-box; }

#jc-lp-wrapper *:not(:where(.jc-ti, .jc-ti *, .jc-elform *, .jc-embed *)) {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-align: inherit;
  text-transform: none;
  text-decoration: none;
  list-style: none;
  box-shadow: none;
  vertical-align: baseline;
}

#jc-lp-wrapper {
  position: relative;
  z-index: 0;
  isolation: isolate;
  display: block;
  width: 100%;
  font-family: var(--jc-font);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.62;
  letter-spacing: 0;
  color: var(--jc-text);
  text-align: left;
  background-color: var(--jc-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#jc-lp-wrapper img:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)),
#jc-lp-wrapper svg:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) { display: block; max-width: 100%; }

/* Ícones de esquemático: traço puro, sem preenchimento */
#jc-lp-wrapper svg:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* Sprite fora de fluxo: guarda o símbolo da estrela */
#jc-lp-wrapper .jc-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

#jc-lp-wrapper a:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) { cursor: pointer; }
#jc-lp-wrapper button:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) {
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

#jc-lp-wrapper :is(strong, b):not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) { font-weight: 600; }

#jc-lp-wrapper em:not(:where(.jc-ti *, .jc-elform *, .jc-embed *)) { font-style: normal; }

#jc-lp-wrapper :focus-visible {
  outline: 2px solid var(--jc-green-400);
  outline-offset: 3px;
}

#jc-lp-wrapper [hidden] { display: none !important; }

/* ---------------------------------------------------------------------------
   3. CAMADA DE FUNDO — PLACA + VINHETA
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-circuit {
  position: fixed;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity .9s ease;
}
#jc-lp-wrapper.jc-ready .jc-circuit { opacity: 1; }

#jc-lp-wrapper .jc-vignette {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(125% 72% at 50% -12%, rgba(0, 104, 181, .24), transparent 62%),
    radial-gradient(85%  58% at 100% 42%, rgba(0, 104, 181, .09), transparent 60%),
    radial-gradient(78%  52% at 0%   88%, rgba(118, 185, 0,  .06), transparent 60%);
}

#jc-lp-wrapper .jc-nav,
#jc-lp-wrapper .jc-main,
#jc-lp-wrapper .jc-footer,
#jc-lp-wrapper .jc-float,
#jc-lp-wrapper .jc-progress { position: relative; z-index: 2; }

/* ---------------------------------------------------------------------------
   4. LAYOUT BASE
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-wrap {
  width: 100%;
  max-width: var(--jc-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--jc-pad);
  padding-right: var(--jc-pad);
}

#jc-lp-wrapper .jc-sec {
  position: relative;
  padding-top: var(--jc-sec-y);
  padding-bottom: var(--jc-sec-y);
  overflow: hidden;
}

#jc-lp-wrapper .jc-sec--alt::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent, rgba(7, 17, 32, .74) 16%, rgba(7, 17, 32, .74) 84%, transparent);
  pointer-events: none;
}
#jc-lp-wrapper .jc-sec--alt > * { position: relative; }

/* Filete separador com marcas de furação nas extremidades */
#jc-lp-wrapper .jc-sec + .jc-sec::after {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(90%, 940px);
  height: 1px;
  background:
    linear-gradient(90deg, transparent, var(--jc-line-2) 12%, var(--jc-line-2) 88%, transparent);
}

/* ---------------------------------------------------------------------------
   5. TIPOGRAFIA
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-h1 {
  font-family: var(--jc-display);
  font-size: clamp(2.05rem, 5.1vw, 3.75rem);
  font-weight: 700;
  line-height: 1.06;
  letter-spacing: -.028em;
  color: #fff;
  text-wrap: balance;
}

/* Destaque como trilha de placa: sublinhado com pads nas extremidades */
#jc-lp-wrapper .jc-h1 em,
#jc-lp-wrapper .jc-h2 em {
  position: relative;
  color: var(--jc-green-400);
  white-space: nowrap;
}
#jc-lp-wrapper .jc-h1 em::after,
#jc-lp-wrapper .jc-h2 em::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -.14em;
  height: 2px;
  background: var(--jc-green);
  box-shadow: -3px 0 0 0 var(--jc-green), 3px 0 0 0 var(--jc-green);
}

#jc-lp-wrapper .jc-h2 {
  font-family: var(--jc-display);
  font-size: clamp(1.68rem, 3.5vw, 2.5rem);
  font-weight: 700;
  line-height: 1.14;
  letter-spacing: -.024em;
  color: #fff;
  text-wrap: balance;
}
#jc-lp-wrapper .jc-h2--sm { font-size: clamp(1.42rem, 2.5vw, 1.9rem); }

#jc-lp-wrapper .jc-h3 {
  font-family: var(--jc-display);
  font-size: 1.1rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.012em;
  color: #fff;
}

#jc-lp-wrapper .jc-lead {
  font-size: clamp(1rem, 1.7vw, 1.12rem);
  line-height: 1.66;
  color: var(--jc-muted);
}

#jc-lp-wrapper .jc-sub { font-size: 1.01rem; color: var(--jc-muted); }

/* Etiqueta de seção em monoespaçada, precedida de trilha curta */
#jc-lp-wrapper .jc-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--jc-mono);
  font-size: .755rem;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--jc-blue-400);
}
#jc-lp-wrapper .jc-eyebrow::before {
  content: '';
  width: 26px;
  height: 1px;
  background: currentColor;
  opacity: .55;
}

#jc-lp-wrapper .jc-head {
  max-width: 760px;
  margin: 0 auto clamp(44px, 6vw, 66px);
  text-align: center;
}
#jc-lp-wrapper .jc-head--left { margin-left: 0; text-align: left; }
#jc-lp-wrapper .jc-head > * + * { margin-top: 15px; }

/* ---------------------------------------------------------------------------
   6. BOTÕES — retangulares, com canto cortado e sombra sólida
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  padding: 14px 26px;
  font-family: var(--jc-display);
  font-size: .95rem;
  font-weight: 600;
  letter-spacing: -.005em;
  line-height: 1.2;
  white-space: nowrap;
  clip-path: polygon(var(--jc-notch-sm) 0, 100% 0, 100% calc(100% - var(--jc-notch-sm)),
                     calc(100% - var(--jc-notch-sm)) 100%, 0 100%, 0 var(--jc-notch-sm));
  transition: transform .2s var(--jc-ease), filter .2s var(--jc-ease),
              background-color .25s ease, color .25s ease;
}

#jc-lp-wrapper .jc-btn--green {
  color: #061007;
  background: var(--jc-green);
  /* drop-shadow acompanha o recorte do chanfro; box-shadow seria cortado */
  filter: drop-shadow(4px 4px 0 rgba(11, 46, 3, .85));
}
#jc-lp-wrapper .jc-btn--green:hover {
  background: var(--jc-green-400);
  transform: translate(2px, 2px);
  filter: drop-shadow(2px 2px 0 rgba(11, 46, 3, .85));
}
#jc-lp-wrapper .jc-btn--green:active {
  transform: translate(4px, 4px);
  filter: drop-shadow(0 0 0 rgba(11, 46, 3, .85));
}

/* A variante "ghost" saiu junto com os botões da dobra: era o único lugar
   onde aparecia, e CSS sem markup correspondente é peso morto. */

#jc-lp-wrapper .jc-ico--arr { width: 18px; height: 18px; transition: transform .25s var(--jc-ease); }

#jc-lp-wrapper .jc-btn--sm  { padding: 10px 18px; font-size: .86rem; gap: 9px; }
#jc-lp-wrapper .jc-btn--sm .jc-ico--arr { width: 15px; height: 15px; }
#jc-lp-wrapper .jc-btn--lg  { padding: 17px 32px; font-size: 1.01rem; }
#jc-lp-wrapper .jc-btn--xl  { padding: 21px 42px; font-size: clamp(1rem, 2.1vw, 1.15rem); }

/* ---------------------------------------------------------------------------
   7. BARRA DE PROGRESSO
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-progress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 60;
  width: 100%;
  height: 2px;
  background: rgba(255, 255, 255, .05);
  opacity: 0;
  transition: opacity .4s ease;
}
#jc-lp-wrapper.jc-stuck .jc-progress { opacity: 1; }

#jc-lp-wrapper .jc-progress span {
  display: block;
  width: 100%;
  height: 100%;
  transform: scaleX(0);
  transform-origin: 0 50%;
  background: linear-gradient(90deg, var(--jc-blue), var(--jc-green-400));
}

/* ---------------------------------------------------------------------------
   8. NAVEGAÇÃO
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid transparent;
  transition: background-color .3s ease, border-color .3s ease;
}
#jc-lp-wrapper.jc-stuck .jc-nav {
  background: rgba(5, 10, 20, .88);
  border-bottom-color: var(--jc-line);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* Desktop: duas fileiras centradas — logo grande em cima, menu embaixo.
   O respiro entre as duas fileiras é maior que o padding externo de propósito:
   com a logo nesta escala, um vão apertado faz o menu parecer legenda dela. */
#jc-lp-wrapper .jc-nav__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 26px;
  width: 100%;
  max-width: var(--jc-max);
  margin: 0 auto;
  padding: 22px var(--jc-pad) 20px;
}

#jc-lp-wrapper .jc-brand { display: inline-flex; align-items: center; }
#jc-lp-wrapper .jc-brand__logo {
  width: auto;
  height: 100px;
  max-width: 480px;
  object-fit: contain;
  transition: opacity .25s ease;
}
#jc-lp-wrapper .jc-brand:hover .jc-brand__logo { opacity: .82; }

/* Segunda fileira. No mobile fica sem altura: o painel de links é absoluto e
   o botão do WhatsApp some — então ela não interfere na linha única. */
#jc-lp-wrapper .jc-nav__bar {
  display: flex;
  align-items: center;
  gap: 26px;
}

#jc-lp-wrapper .jc-nav__links { display: flex; align-items: center; gap: 26px; }
#jc-lp-wrapper .jc-nav__links a {
  position: relative;
  font-family: var(--jc-mono);
  font-size: .795rem;
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--jc-dim);
  transition: color .2s ease;
}
#jc-lp-wrapper .jc-nav__links a::before {
  content: '';
  position: absolute;
  left: -11px;
  top: 50%;
  width: 4px;
  height: 4px;
  margin-top: -2px;
  background: var(--jc-green-400);
  opacity: 0;
  transition: opacity .2s ease;
}
#jc-lp-wrapper .jc-nav__links a:hover { color: #fff; }
#jc-lp-wrapper .jc-nav__links a:hover::before { opacity: 1; }

/* Botão de menu — só existe abaixo de 1000px */
#jc-lp-wrapper .jc-burger {
  display: none;
  position: relative;
  width: 42px;
  height: 42px;
  padding: 12px 10px;
  background: rgba(118, 176, 232, .07);
  box-shadow: inset 0 0 0 1px var(--jc-line-2);
  clip-path: polygon(9px 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%, 0 9px);
  transition: background-color .25s ease, box-shadow .25s ease;
}
#jc-lp-wrapper .jc-burger span {
  display: block;
  width: 100%;
  height: 1.5px;
  background: var(--jc-blue-300);
  transition: transform .3s var(--jc-ease), opacity .2s ease, background-color .25s ease;
}
#jc-lp-wrapper .jc-burger span + span { margin-top: 5px; }

#jc-lp-wrapper .jc-burger[aria-expanded="true"] {
  background: rgba(150, 224, 26, .14);
  box-shadow: inset 0 0 0 1px rgba(150, 224, 26, .5);
}
#jc-lp-wrapper .jc-burger[aria-expanded="true"] span { background: var(--jc-green-400); }
#jc-lp-wrapper .jc-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
#jc-lp-wrapper .jc-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
#jc-lp-wrapper .jc-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* ---------------------------------------------------------------------------
   9. BLOCO 1 — HERO
   --------------------------------------------------------------------------- */
/* Ocupa a tela inteira menos a barra de navegação, que é sticky e portanto
   ocupa espaço no fluxo. A altura da barra é medida pelo JS em --jc-nav-h.
   A faixa contínua é o último filho e fecha a dobra por dentro. */
#jc-lp-wrapper .jc-hero {
  display: flex;
  flex-direction: column;
  min-height: calc(100vh  - var(--jc-nav-h, 66px));
  min-height: calc(100svh - var(--jc-nav-h, 66px));
  padding-top: clamp(24px, 3.5vw, 44px);
  padding-bottom: 0;
}
/* A faixa já separa o hero do bloco seguinte — dispensa o filete */
#jc-lp-wrapper .jc-hero + .jc-sec::after { display: none; }

/* Duas colunas: copy à esquerda, formulário curto à direita, o par
   centralizado na dobra. Abaixo de 1000px vira uma coluna só (seção 16) e a
   ordem do markup — copy, depois formulário — já é a desejada no mobile.
   A coluna do formulário tem largura própria em `px` porque ela não deve
   crescer junto com a tela: o painel fica largo demais e os campos, ridículos. */
#jc-lp-wrapper .jc-hero__inner {
  display: grid;
  flex: 1 1 auto;
  grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
  align-items: center;
  align-content: center;
  gap: clamp(30px, 4vw, 58px);
  padding-bottom: clamp(18px, 2.6vw, 34px);
}
#jc-lp-wrapper .jc-hero__copy > * + * { margin-top: clamp(15px, 2vw, 24px); }
#jc-lp-wrapper .jc-hero .jc-lead { max-width: 640px; }

/* Etiqueta de bancada: retângulo tracejado, sem cápsula nem ponto pulsante */
#jc-lp-wrapper .jc-stamp {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 7px 15px;
  font-family: var(--jc-mono);
  font-size: .755rem;
  font-weight: 500;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--jc-blue-300);
  border: 1px dashed rgba(46, 155, 232, .45);
}
#jc-lp-wrapper .jc-stamp i {
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  background: var(--jc-green-400);
}

#jc-lp-wrapper .jc-proof {
  padding-left: 14px;
  font-size: .93rem;
  color: var(--jc-dim);
  border-left: 2px solid var(--jc-green);
  text-align: left;
}

/* Faixa de capacidades em rolagem contínua — fecha a dobra do hero */
#jc-lp-wrapper .jc-ticker {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
  margin-top: clamp(28px, 4vw, 52px);
  overflow: hidden;
  background: var(--jc-green);
}
#jc-lp-wrapper .jc-ticker__track {
  display: flex;
  align-items: center;
  width: max-content;
  padding: 12px 0;
  will-change: transform;
  animation: jc-ticker 30s linear infinite;
}
#jc-lp-wrapper .jc-ticker:hover .jc-ticker__track { animation-play-state: paused; }
@keyframes jc-ticker {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}
#jc-lp-wrapper .jc-ticker__track span {
  padding: 0 24px;
  font-family: var(--jc-mono);
  font-size: .795rem;
  font-weight: 500;
  letter-spacing: .07em;
  text-transform: uppercase;
  white-space: nowrap;
  color: #08160A;
}
#jc-lp-wrapper .jc-ticker__track i {
  width: 5px;
  height: 5px;
  flex: 0 0 auto;
  background: rgba(6, 16, 7, .5);
  rotate: 45deg;
}

/* ---------------------------------------------------------------------------
   10. GRIDS E CARDS — chanfro de placa, borda desenhada pelo fundo
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-grid { display: grid; gap: 18px; }
#jc-lp-wrapper .jc-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
#jc-lp-wrapper .jc-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

#jc-lp-wrapper .jc-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 15px;
  padding: 30px var(--jc-card-x) 28px;
  /* O fundo do elemento é a borda; ::before pinta o miolo 1px menor. */
  background: var(--jc-line);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
  transition: background-color .35s ease, transform .4s var(--jc-ease);
}

#jc-lp-wrapper .jc-card::before {
  content: '';
  position: absolute;
  inset: 1px;
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
  background: linear-gradient(168deg, var(--jc-surface-2), var(--jc-surface) 62%);
}

/* Halo do cursor */
#jc-lp-wrapper .jc-card::after {
  content: '';
  position: absolute;
  inset: 1px;
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
  background: radial-gradient(360px circle at var(--jc-mx, 50%) var(--jc-my, 0%),
              rgba(46, 155, 232, .13), transparent 66%);
  opacity: 0;
  transition: opacity .4s ease;
  pointer-events: none;
}
#jc-lp-wrapper .jc-card:hover::after { opacity: 1; }
#jc-lp-wrapper .jc-card:hover { background: rgba(46, 155, 232, .45); }

#jc-lp-wrapper .jc-card > * { position: relative; }
#jc-lp-wrapper .jc-card p { font-size: .94rem; color: var(--jc-muted); }

/* Ícone do card — traço puro, sem caixa de fundo */
#jc-lp-wrapper .jc-glyph {
  width: 40px;
  height: 40px;
  margin-bottom: 4px;
  color: var(--jc-blue-300);
  stroke-width: 1.4;
  transition: color .35s ease, transform .4s var(--jc-ease);
}
#jc-lp-wrapper .jc-card:hover .jc-glyph { color: var(--jc-green-400); transform: translateY(-2px); }
#jc-lp-wrapper .jc-card--pain .jc-glyph { color: var(--jc-warn); }
#jc-lp-wrapper .jc-card--pain:hover .jc-glyph { color: #FFC46A; }

/* Etiqueta técnica no rodapé do card */
#jc-lp-wrapper .jc-tag {
  margin-top: auto;
  padding-top: 14px;
  width: 100%;
  font-family: var(--jc-mono);
  font-size: .715rem;
  letter-spacing: .06em;
  color: var(--jc-dim);
  border-top: 1px solid var(--jc-line);
}
#jc-lp-wrapper .jc-tag--green { color: var(--jc-green-400); }

/* Card destaque — reparo em placa-mãe */
#jc-lp-wrapper .jc-card--hero { background: rgba(150, 224, 26, .3); padding-top: 44px; }
#jc-lp-wrapper .jc-card--hero::before { background: linear-gradient(168deg, #13230D, var(--jc-surface) 58%); }
#jc-lp-wrapper .jc-card--hero::after {
  background: radial-gradient(360px circle at var(--jc-mx, 50%) var(--jc-my, 0%),
              rgba(150, 224, 26, .13), transparent 66%);
}
#jc-lp-wrapper .jc-card--hero:hover { background: rgba(150, 224, 26, .6); }
#jc-lp-wrapper .jc-card--hero .jc-glyph { color: var(--jc-green-400); }

#jc-lp-wrapper .jc-flag {
  position: absolute;
  top: 1px;
  left: 1px;
  padding: 6px 14px;
  font-family: var(--jc-mono);
  font-size: .655rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #061007;
  background: var(--jc-green);
  clip-path: polygon(0 0, 100% 0, calc(100% - 10px) 100%, 0 100%);
}

/* Card de chamada dentro da matriz de serviços */
#jc-lp-wrapper .jc-card--cta { justify-content: center; background: rgba(46, 155, 232, .34); }
#jc-lp-wrapper .jc-card--cta::before {
  background: linear-gradient(168deg, #0A2038, var(--jc-surface) 66%);
}
#jc-lp-wrapper .jc-card--cta .jc-btn { margin-top: 8px; }

/* Cards de autoridade: símbolo com mais presença */
#jc-lp-wrapper .jc-card--corp .jc-glyph { width: 46px; height: 46px; }

/* Chamada centralizada ao pé dos contratos */
#jc-lp-wrapper .jc-corp-cta {
  display: flex;
  justify-content: center;
  margin-top: clamp(30px, 4.5vw, 46px);
}

/* ---------------------------------------------------------------------------
   10a. FOTO DO SERVIÇO
   ---------------------------------------------------------------------------
   Sangra pelo padding lateral e encosta na base, de modo que o chanfro do
   card recorte a própria imagem. Um gradiente no topo funde a foto ao corpo
   do card em vez de deixar um corte seco. */
#jc-lp-wrapper .jc-card--svc,
#jc-lp-wrapper .jc-card--hero { padding-bottom: 0; }

#jc-lp-wrapper .jc-photo {
  position: relative;
  width: calc(100% + var(--jc-card-x) * 2);
  height: clamp(146px, 16vw, 184px);
  margin: 8px calc(var(--jc-card-x) * -1) 0;
  overflow: hidden;
}
#jc-lp-wrapper .jc-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.8) brightness(.84);
  transition: transform .6s var(--jc-ease), filter .45s ease;
}
#jc-lp-wrapper .jc-card:hover .jc-photo img {
  transform: scale(1.05);
  filter: saturate(1) brightness(1);
}
#jc-lp-wrapper .jc-photo::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg,
              var(--jc-surface) 0%,
              rgba(10, 21, 36, .45) 26%,
              transparent 62%);
}
/* No card verde a fusão acompanha o fundo próprio dele */
#jc-lp-wrapper .jc-card--hero .jc-photo::after {
  background: linear-gradient(180deg,
              var(--jc-surface) 0%,
              rgba(10, 21, 36, .4) 26%,
              transparent 62%);
}

/* ---------------------------------------------------------------------------
   10b. FOTO DO DIAGNÓSTICO — o inverso da foto de serviço
   ---------------------------------------------------------------------------
   Aqui a imagem abre o card: sangra pelo topo e pelas laterais, e é o PÉ dela
   que se dissolve no corpo — de modo que o ícone repouse sobre a dissolução.
   As fotos do cliente são claras e de fundo branco; sem o rebaixamento de
   brilho e o véu azul elas rasgariam o fundo escuro da página. */
#jc-lp-wrapper .jc-card--pain { padding-top: 0; }

#jc-lp-wrapper .jc-shot {
  position: relative;
  width: calc(100% + var(--jc-card-x) * 2);
  height: clamp(148px, 15.5vw, 178px);
  /* a margem negativa no pé traz o ícone para cima da dissolução */
  margin: 0 calc(var(--jc-card-x) * -1) -34px;
  overflow: hidden;
}
#jc-lp-wrapper .jc-shot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 35%;
  filter: saturate(.62) brightness(.66) contrast(1.06);
  transition: transform .6s var(--jc-ease), filter .45s ease;
}
#jc-lp-wrapper .jc-card--pain:hover .jc-shot img {
  transform: scale(1.05);
  filter: saturate(.85) brightness(.82) contrast(1.02);
}
#jc-lp-wrapper .jc-shot::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg,
      rgba(5, 10, 20, .22) 0%,
      rgba(7, 17, 32, .58) 46%,
      var(--jc-surface) 97%),
    linear-gradient(0deg, rgba(0, 104, 181, .22), rgba(0, 104, 181, .22));
}

/* ---------------------------------------------------------------------------
   10c. AVALIAÇÕES — carrossel de balões de fala
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-stars { display: flex; gap: 3px; color: var(--jc-warn); }
#jc-lp-wrapper .jc-stars svg { width: 15px; height: 15px; fill: currentColor; stroke: none; }

/* Selo de reputação (shortcode Trustindex).
   Só reserva espaço e centraliza — nenhuma propriedade visual é imposta,
   para que o widget renderize exatamente como o plugin o define. */
#jc-lp-wrapper .jc-ti {
  margin: -6px 0 clamp(30px, 4vw, 46px);
  text-align: center;
}

#jc-lp-wrapper .jc-rev-shell { position: relative; }

#jc-lp-wrapper .jc-rev-track {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-bottom: 6px;
}
#jc-lp-wrapper .jc-rev-track::-webkit-scrollbar { display: none; }
#jc-lp-wrapper .jc-rev-track:focus-visible { outline-offset: 6px; }

#jc-lp-wrapper .jc-rev {
  flex: 0 0 calc((100% - 40px) / 3);
  scroll-snap-align: start;
}

/* Balão de fala: borda real + rabo desenhado por dois triângulos */
#jc-lp-wrapper .jc-rev__bubble {
  position: relative;
  padding: 22px 24px 20px;
  background: var(--jc-surface-2);
  border: 1px solid var(--jc-line-2);
  border-radius: 4px 14px 4px 4px;
  transition: border-color .3s ease, background-color .3s ease;
}
#jc-lp-wrapper .jc-rev__bubble::before,
#jc-lp-wrapper .jc-rev__bubble::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 30px;
  width: 0;
  height: 0;
  border: 11px solid transparent;
  border-bottom: 0;
  border-top-color: var(--jc-line-2);
}
#jc-lp-wrapper .jc-rev__bubble::after {
  margin-top: -1px;
  border-top-color: var(--jc-surface-2);
}
#jc-lp-wrapper .jc-rev:hover .jc-rev__bubble { border-color: rgba(46, 155, 232, .55); }
#jc-lp-wrapper .jc-rev:hover .jc-rev__bubble::before { border-top-color: rgba(46, 155, 232, .55); }

#jc-lp-wrapper .jc-rev__text {
  display: -webkit-box;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin-top: 13px;
  font-size: .945rem;
  line-height: 1.6;
  color: var(--jc-text);
}
#jc-lp-wrapper .jc-rev__text.jc-open {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
}

#jc-lp-wrapper .jc-rev__more {
  margin-top: 12px;
  padding: 0;
  font-family: var(--jc-mono);
  font-size: .735rem;
  letter-spacing: .05em;
  color: var(--jc-blue-300);
  border-bottom: 1px solid rgba(121, 198, 247, .4);
  transition: color .25s ease, border-color .25s ease;
}
#jc-lp-wrapper .jc-rev__more:hover { color: var(--jc-green-400); border-bottom-color: var(--jc-green-400); }

#jc-lp-wrapper .jc-rev__by {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 22px;
  padding-left: 14px;
}
#jc-lp-wrapper .jc-rev__av {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  flex: 0 0 auto;
  font-family: var(--jc-mono);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .02em;
  color: var(--jc-blue-300);
  background: rgba(0, 104, 181, .22);
  box-shadow: inset 0 0 0 1px rgba(46, 155, 232, .32);
  clip-path: polygon(7px 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%, 0 7px);
}
#jc-lp-wrapper .jc-rev__id b { display: block; font-size: .9rem; color: #fff; }
#jc-lp-wrapper .jc-rev__id small {
  display: block;
  margin-top: 1px;
  font-family: var(--jc-mono);
  font-size: .705rem;
  letter-spacing: .04em;
  color: var(--jc-dim);
}

/* Navegação: contador técnico em vez de bolinhas */
#jc-lp-wrapper .jc-rev-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  margin-top: 26px;
}
#jc-lp-wrapper .jc-rev-btn {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  color: var(--jc-blue-300);
  background: rgba(118, 176, 232, .06);
  box-shadow: inset 0 0 0 1px var(--jc-line-2);
  clip-path: polygon(9px 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%, 0 9px);
  transition: color .2s ease, background-color .2s ease, box-shadow .2s ease;
}
#jc-lp-wrapper .jc-rev-btn svg { width: 19px; height: 19px; stroke-width: 1.8; }
#jc-lp-wrapper .jc-rev-btn:hover {
  color: #061007;
  background: var(--jc-green-400);
  box-shadow: inset 0 0 0 1px var(--jc-green-400);
}
#jc-lp-wrapper .jc-rev-count {
  font-family: var(--jc-mono);
  font-size: .8rem;
  letter-spacing: .1em;
  color: var(--jc-dim);
}
#jc-lp-wrapper .jc-rev-count b { color: var(--jc-blue-300); font-weight: 600; }

/* ---------------------------------------------------------------------------
   11. FAQ — ACORDEÃO
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-faq {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: start;
  margin-top: clamp(66px, 9vw, 104px);
  padding-top: clamp(50px, 7vw, 76px);
  border-top: 1px solid var(--jc-line);
}
#jc-lp-wrapper .jc-faq .jc-head { margin-bottom: 0; }

#jc-lp-wrapper .jc-acc { display: flex; flex-direction: column; }

#jc-lp-wrapper .jc-acc__item {
  border-bottom: 1px solid var(--jc-line);
  transition: border-color .3s ease;
}
#jc-lp-wrapper .jc-acc__item:first-child { border-top: 1px solid var(--jc-line); }
#jc-lp-wrapper .jc-acc__item.jc-open { border-bottom-color: rgba(46, 155, 232, .4); }

#jc-lp-wrapper .jc-acc__btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  width: 100%;
  padding: 21px 6px 21px 0;
  font-family: var(--jc-display);
  font-size: .98rem;
  font-weight: 600;
  line-height: 1.4;
  text-align: left;
  color: var(--jc-text);
  transition: color .25s ease, padding-left .3s var(--jc-ease);
}
#jc-lp-wrapper .jc-acc__btn:hover { color: #fff; padding-left: 6px; }
#jc-lp-wrapper .jc-acc__item.jc-open .jc-acc__btn { color: #fff; }

/* O texto é um item flex: sem min-width:0 ele se recusa a encolher abaixo
   da própria linha e empurra o indicador para fora do card. Em telas
   estreitas era o que cortava a pergunta na borda. */
#jc-lp-wrapper .jc-acc__btn > span {
  flex: 1 1 auto;
  min-width: 0;
  white-space: normal;
  overflow-wrap: break-word;
}

/* Indicador de polaridade: + fechado, − aberto */
#jc-lp-wrapper .jc-acc__ico {
  position: relative;
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  box-shadow: inset 0 0 0 1px var(--jc-line-2);
  transition: box-shadow .3s ease, background-color .3s ease;
}
#jc-lp-wrapper .jc-acc__ico::before,
#jc-lp-wrapper .jc-acc__ico::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 1.5px;
  margin: -.75px 0 0 -5px;
  background: var(--jc-blue-300);
  transition: transform .35s var(--jc-ease), background-color .3s ease;
}
#jc-lp-wrapper .jc-acc__ico::after { transform: rotate(90deg); }
#jc-lp-wrapper .jc-acc__item.jc-open .jc-acc__ico { box-shadow: inset 0 0 0 1px rgba(150, 224, 26, .55); }
#jc-lp-wrapper .jc-acc__item.jc-open .jc-acc__ico::before { background: var(--jc-green-400); }
#jc-lp-wrapper .jc-acc__item.jc-open .jc-acc__ico::after  { background: var(--jc-green-400); transform: rotate(0deg); }

#jc-lp-wrapper .jc-acc__panel { overflow: hidden; }
#jc-lp-wrapper .jc-acc__panel p {
  padding: 0 44px 22px 0;
  font-size: .93rem;
  color: var(--jc-muted);
}

/* ---------------------------------------------------------------------------
   12. BLOCO 7 — FECHAMENTO
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-final__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 820px;
  text-align: center;
}
#jc-lp-wrapper .jc-final__inner > * + * { margin-top: 24px; }

#jc-lp-wrapper .jc-final__glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(760px, 105%);
  height: 400px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  background: radial-gradient(closest-side, rgba(118, 185, 0, .14), transparent 72%);
}

#jc-lp-wrapper .jc-final__note {
  font-family: var(--jc-mono);
  font-size: .78rem;
  letter-spacing: .05em;
  color: var(--jc-dim);
}

/* ---------------------------------------------------------------------------
   13. RODAPÉ — copyright, CNPJ, endereço e links legais
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-footer { border-top: 1px solid var(--jc-line); }

#jc-lp-wrapper .jc-footer__bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 24px;
  padding-top: 26px;
  padding-bottom: 28px;
  font-family: var(--jc-mono);
  font-size: .755rem;
  letter-spacing: .04em;
  color: var(--jc-dim);
}
#jc-lp-wrapper .jc-footer__bar a { transition: color .25s ease; }
#jc-lp-wrapper .jc-footer__bar a:hover { color: var(--jc-blue-300); }

/* Links legais — privacidade e termos ficam lado a lado dentro de um mesmo
   item flex, para não virar uma quarta coluna e desequilibrar o rodapé. */
#jc-lp-wrapper .jc-footer__legal {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 10px;
}
#jc-lp-wrapper .jc-footer__legal i {
  font-style: normal;
  opacity: .5;
}

/* Endereço físico — sinal de autoridade local, com marcador discreto */
#jc-lp-wrapper .jc-footer__addr {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
#jc-lp-wrapper .jc-footer__addr svg {
  width: 14px;
  height: 14px;
  flex: 0 0 auto;
  color: var(--jc-blue-400);
  stroke-width: 1.6;
}

/* ---------------------------------------------------------------------------
   13b. GALERIA DE PROJETOS — carrossel em fade + foto ampliada
   ---------------------------------------------------------------------------
   Os slides ficam EMPILHADOS no mesmo palco e trocam por opacidade, não por
   deslocamento: é o fade pedido pelo cliente e dispensa qualquer cálculo de
   largura — a volta ao início não tem emenda para disfarçar.
   O palco tem proporção fixa e as fotos entram com `object-fit: cover`, então
   foto em pé, deitada ou quadrada vira sempre o mesmo retângulo.
   SEM JS: o primeiro slide aparece e os controles somem, para a seção nunca
   ficar como um bloco preto vazio.
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-gal { margin-top: clamp(54px, 7vw, 86px); }

#jc-lp-wrapper .jc-gal__shell { position: relative; }

/* A moldura é o fundo do próprio elemento e os slides recuam 1px, deixando-a
   à mostra — `border` não sobreviveria ao recorte do chanfro. */
#jc-lp-wrapper .jc-gal__stage {
  /* FONTE ÚNICA de quantas fotos aparecem por vez. O JS lê este número em
     vez de ter o seu próprio: assim o breakpoint mora só aqui, e mudar de 3
     para 4 fotos é mexer em um lugar. */
  --jc-gal-per: 3;
  --jc-gal-gap: 12px;

  position: relative;
  aspect-ratio: 32 / 7;   /* três fotos lado a lado, cada uma perto de 3:2 */
  overflow: hidden;
  background: var(--jc-line-2);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}

/* Cada página é uma fila de fotos. As páginas ficam empilhadas e trocam por
   opacidade — é o mesmo fade de antes, só que agora de três em três. */
#jc-lp-wrapper .jc-gal__page {
  position: absolute;
  inset: 1px;
  z-index: 1;
  display: flex;
  gap: var(--jc-gal-gap);
  opacity: 0;
  pointer-events: none;
  transition: opacity .55s var(--jc-ease);
}
#jc-lp-wrapper .jc-gal__page.jc-on { opacity: 1; pointer-events: auto; }

/* Sem JS não existem páginas: o palco vira a própria fila e o recorte deixa
   à mostra as primeiras fotos, em vez de empilhar tudo na vertical. */
#jc-lp-wrapper:not(.jc-js) .jc-gal__stage {
  display: flex;
  gap: var(--jc-gal-gap);
  padding: 1px;
}
/* O véu fica em cada foto, não no palco inteiro: no palco ele atravessaria
   também os vãos entre as fotos, sujando a moldura. */
#jc-lp-wrapper .jc-gal__slide::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  /* fecha o pé da foto no escuro, como nos cards de serviço */
  background: linear-gradient(to top, rgba(5, 10, 20, .5), transparent 40%);
}

/* Largura fixa pelo número de fotos por página: numa última página incompleta
   as fotos continuam do mesmo tamanho, em vez de esticarem para preencher. */
#jc-lp-wrapper .jc-gal__slide {
  position: relative;
  flex: 0 0 calc((100% - (var(--jc-gal-per) - 1) * var(--jc-gal-gap)) / var(--jc-gal-per));
  display: block;
  overflow: hidden;
  cursor: zoom-in;
}
#jc-lp-wrapper .jc-gal__slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* as fotos são claras; sem isso elas rasgam o fundo escuro da página */
  filter: brightness(.94) saturate(1.03);
  transition: transform .9s var(--jc-ease), filter .4s ease;
}
#jc-lp-wrapper .jc-gal__slide:hover img,
#jc-lp-wrapper .jc-gal__slide:focus-visible img {
  transform: scale(1.05);
  filter: brightness(1) saturate(1.03);
}

/* Aviso discreto de que a foto abre ampliada */
#jc-lp-wrapper .jc-gal__hint {
  position: absolute;
  left: 16px;
  bottom: 14px;
  z-index: 3;
  pointer-events: none;
  font-family: var(--jc-mono);
  font-size: .7rem;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--jc-muted);
  text-shadow: 0 1px 6px rgba(0, 0, 0, .8);
}

#jc-lp-wrapper .jc-gal__arrow {
  position: absolute;
  top: 50%;
  z-index: 4;
  translate: 0 -50%;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  color: var(--jc-text);
  background: rgba(5, 10, 20, .72);
  box-shadow: inset 0 0 0 1px var(--jc-line-2);
  clip-path: polygon(var(--jc-notch-sm) 0, 100% 0, 100% calc(100% - var(--jc-notch-sm)),
                     calc(100% - var(--jc-notch-sm)) 100%, 0 100%, 0 var(--jc-notch-sm));
  transition: background-color .25s ease, color .25s ease;
}
#jc-lp-wrapper .jc-gal__arrow:hover {
  color: #fff;
  background: rgba(0, 104, 181, .88);
  box-shadow: inset 0 0 0 1px rgba(46, 155, 232, .7);
}
#jc-lp-wrapper .jc-gal__arrow svg { width: 20px; height: 20px; stroke-width: 2; }
#jc-lp-wrapper .jc-gal__arrow--prev { left: 14px; }
#jc-lp-wrapper .jc-gal__arrow--next { right: 14px; }

#jc-lp-wrapper .jc-gal__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px 20px;
  margin-top: 16px;
}
#jc-lp-wrapper .jc-gal__count {
  flex: 0 0 auto;
  font-family: var(--jc-mono);
  font-size: .8rem;
  letter-spacing: .1em;
  color: var(--jc-dim);
}
#jc-lp-wrapper .jc-gal__count b { color: var(--jc-blue-300); font-weight: 600; }

/* Losangos, ecoando os separadores da faixa. O JS é quem os cria, então a
   quantidade acompanha sozinha o número de fotos no markup. */
#jc-lp-wrapper .jc-gal__dots {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}
#jc-lp-wrapper .jc-gal__dot {
  width: 8px;
  height: 8px;
  background: var(--jc-line-2);
  rotate: 45deg;
  transition: background-color .25s ease, scale .25s ease;
}
#jc-lp-wrapper .jc-gal__dot:hover { background: var(--jc-blue-400); }
#jc-lp-wrapper .jc-gal__dot.jc-on { background: var(--jc-green); scale: 1.3; }

#jc-lp-wrapper:not(.jc-js) .jc-gal__arrow,
#jc-lp-wrapper:not(.jc-js) .jc-gal__bar { display: none; }

/* ---------- foto ampliada ---------- */
@keyframes jc-lb-in { from { opacity: 0; } to { opacity: 1; } }

#jc-lp-wrapper .jc-lb {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: clamp(14px, 4vw, 46px);
  background: rgba(3, 7, 14, .94);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
  animation: jc-lb-in .28s var(--jc-ease) both;
  cursor: zoom-out;
}
/* Tamanho real da foto, limitado só pelo que cabe na tela */
#jc-lp-wrapper .jc-lb__img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 86vh;
  object-fit: contain;
  cursor: default;
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}
#jc-lp-wrapper .jc-lb__close {
  position: absolute;
  top: clamp(12px, 3vw, 28px);
  right: clamp(12px, 3vw, 28px);
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  color: var(--jc-text);
  background: rgba(10, 21, 36, .9);
  box-shadow: inset 0 0 0 1px var(--jc-line-2);
  clip-path: polygon(var(--jc-notch-sm) 0, 100% 0, 100% calc(100% - var(--jc-notch-sm)),
                     calc(100% - var(--jc-notch-sm)) 100%, 0 100%, 0 var(--jc-notch-sm));
  transition: background-color .25s ease, color .25s ease;
}
#jc-lp-wrapper .jc-lb__close:hover {
  color: #fff;
  background: rgba(0, 104, 181, .9);
}
#jc-lp-wrapper .jc-lb__close svg { width: 20px; height: 20px; stroke-width: 2; }

/* ---------------------------------------------------------------------------
   13b-bis. PAINEL DO VÍDEO (bloco 4 — Instagram)
   ---------------------------------------------------------------------------
   O cartão do Instagram é branco e não há como escurecê-lo: o conteúdo vem
   num iframe de outro domínio. Em vez de disfarçar, ele ganha a mesma moldura
   chanfrada dos outros painéis — assim o branco lê como escolha, não como
   corpo estranho caído no meio da página escura.

   A largura máxima acompanha os 540px que o próprio embed pede, mais o
   respiro da moldura; deixar esticar até a largura da seção só produziria um
   retângulo branco enorme.

   Aqui NÃO se estiliza nada de dentro (ver zona franca na seção 2). As duas
   únicas regras que atravessam a fronteira são de empilhamento e largura, e
   existem porque o miolo do painel é um ::before que passaria por cima. */
#jc-lp-wrapper .jc-embed {
  position: relative;
  max-width: 576px;
  margin: 0 auto;
  padding: clamp(10px, 1.4vw, 16px);
  background: var(--jc-line-2);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}
#jc-lp-wrapper .jc-embed::before {
  content: '';
  position: absolute;
  inset: 1px;
  z-index: 0;
  background: linear-gradient(165deg, var(--jc-surface-2), var(--jc-surface) 62%, #071120);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}
/* o embed troca o <blockquote> por um <iframe>; a regra vale para os dois */
#jc-lp-wrapper .jc-embed > * {
  position: relative;
  z-index: 1;
  max-width: 100%;
}

/* ---------------------------------------------------------------------------
   13c. PAINEL DO FORMULÁRIO
   ---------------------------------------------------------------------------
   O que sobra aqui é só a MOLDURA: o painel chanfrado, o título da dobra e a
   nota de rodapé. Campos e botão vêm de templates do Elementor, por shortcode
   ([elementor-template id="3328"] na dobra, id="3332" no bloco 8), e quem os
   estiliza é o custom CSS do próprio Elementor.

   As regras dos campos que viviam nesta seção (.jc-field*, .jc-check*,
   .jc-form__grid, .jc-form__foot) FORAM REMOVIDAS junto com o markup delas.
   Para referência, no Elementor os equivalentes são:

     .jc-form__grid        ->  .elementor-form-fields-wrapper
     .jc-field             ->  .elementor-field-group
     .jc-field--full       ->  .elementor-field-group.elementor-col-100
     .jc-field__label      ->  .elementor-field-label
     .jc-field__ctrl       ->  .elementor-field-textual   (input/select/textarea)
     .jc-check__grid       ->  .elementor-field-subgroup
     .jc-check__opt        ->  .elementor-field-option
     .jc-form__foot .jc-btn->  .elementor-button

   Duas notas que continuam valendo do lado do Elementor:
   1. Os campos são retangulares de propósito. O chanfro a 45° vive no painel
      e no botão; num <input> ele exigiria `clip-path`, que corta a borda
      justamente na diagonal e deixa o campo com o contorno faltando.
   2. Nada aqui pode voltar a estilizar o que está dentro de .jc-elform: aquele
      subtree está fora do reset (seção 2) justamente para o CSS do Elementor
      mandar nele sozinho. Duas fontes de estilo brigando é o caminho curto
      para o campo ficar diferente em cada formulário.
   --------------------------------------------------------------------------- */
#jc-lp-wrapper .jc-form {
  position: relative;
  max-width: 920px;
  margin: 0 auto;
  padding: clamp(22px, 3.4vw, 40px);
  background: var(--jc-line-2);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}
/* miolo do painel — a borda é o fundo do próprio elemento */
#jc-lp-wrapper .jc-form::before {
  content: '';
  position: absolute;
  inset: 1px;
  z-index: 0;
  background: linear-gradient(165deg, var(--jc-surface-2), var(--jc-surface) 62%, #071120);
  clip-path: polygon(var(--jc-notch) 0, 100% 0, 100% calc(100% - var(--jc-notch)),
                     calc(100% - var(--jc-notch)) 100%, 0 100%, 0 var(--jc-notch));
}
#jc-lp-wrapper .jc-form > * { position: relative; z-index: 1; }

/* Caixa do shortcode. O contêiner é nosso — margem, largura e empilhamento
   saem daqui; o miolo é do Elementor e não se toca (ver seção 2). */
#jc-lp-wrapper .jc-elform { min-width: 0; }

/* A margem só existe quando há algo acima. No bloco 8 o shortcode é o
   primeiro filho do painel, e uma margem fixa somaria ao padding — o campo
   nasceria bem mais afastado do topo do que da base. */
#jc-lp-wrapper * + .jc-elform { margin-top: clamp(18px, 2.4vw, 26px); }
#jc-lp-wrapper .jc-form__nota {
  min-width: 0;
  margin-top: 18px;
  font-size: .8rem;
  line-height: 1.6;
  color: var(--jc-dim);
}
#jc-lp-wrapper .jc-form__nota b { color: var(--jc-green-400); }
#jc-lp-wrapper .jc-form__nota a {
  color: var(--jc-blue-300);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---------------------------------------------------------------------------
   13d. PAINEL CURTO DA DOBRA (.jc-form--mini)
   ---------------------------------------------------------------------------
   Mesmo painel do bloco 8, encolhido para caber ao lado do título sem roubar
   a dobra dele. Só sobrescreve medidas — cores e chanfro continuam vindo do
   bloco acima, para os dois painéis não divergirem. O tamanho dos CAMPOS lá
   dentro não sai daqui: é o template 3328 que define o dele.
   O `max-width: none` é obrigatório: o `920px` do painel grande, dentro de
   uma coluna de 440px, não faria mal nenhum, mas some assim que alguém
   alargar a coluna — e aí o painel deixaria de acompanhar. */
#jc-lp-wrapper .jc-form--mini {
  max-width: none;
  padding: clamp(20px, 2.3vw, 28px);
}

#jc-lp-wrapper .jc-form__titulo {
  font-family: var(--jc-display);
  font-size: 1.18rem;
  font-weight: 700;
  line-height: 1.24;
  letter-spacing: -.015em;
  color: #fff;
}
#jc-lp-wrapper .jc-form__desc {
  margin-top: 6px;
  font-size: .85rem;
  line-height: 1.55;
  color: var(--jc-muted);
}

#jc-lp-wrapper .jc-form--mini .jc-elform     { margin-top: 18px; }
#jc-lp-wrapper .jc-form--mini .jc-form__nota { margin-top: 14px; font-size: .74rem; line-height: 1.5; }

/* ---------------------------------------------------------------------------
   14. BOTÃO FLUTUANTE
   --------------------------------------------------------------------------- */
/* Atalho para o formulário. Antes era só o SVG do WhatsApp, que trazia as
   próprias cores e dispensava moldura; um ícone de contorno precisa de fundo
   para existir sobre a página escura. Segue o botão verde da marca —
   chanfro e sombra sólida por `drop-shadow`, que acompanha o recorte. */
#jc-lp-wrapper .jc-float {
  position: fixed;
  right: clamp(16px, 3vw, 28px);
  bottom: clamp(16px, 3vw, 28px);
  z-index: 55;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  color: #061007;
  background: var(--jc-green);
  clip-path: polygon(var(--jc-notch-sm) 0, 100% 0, 100% calc(100% - var(--jc-notch-sm)),
                     calc(100% - var(--jc-notch-sm)) 100%, 0 100%, 0 var(--jc-notch-sm));
  filter: drop-shadow(4px 4px 0 rgba(11, 46, 3, .85));
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity .35s var(--jc-ease), transform .35s var(--jc-ease),
              visibility .35s, background-color .25s ease;
}
#jc-lp-wrapper.jc-stuck .jc-float { opacity: 1; visibility: visible; transform: none; }
#jc-lp-wrapper.jc-stuck .jc-float:hover {
  transform: scale(1.07);
  background: var(--jc-green-400);
}
#jc-lp-wrapper .jc-float svg { width: 26px; height: 26px; stroke-width: 1.8; }

/* ---------------------------------------------------------------------------
   15. REVELAÇÃO AO SCROLL
   --------------------------------------------------------------------------- */
/* Usa `translate` (e não `transform`) para não colidir com o tilt dos cards
   nem com o deslocamento de hover dos botões. */
/* O estado ESCONDIDO depende da classe .jc-js, que o próprio JS põe no
   wrapper ao iniciar. Se o script não rodar — bloqueado, com erro, carregado
   fora de ordem pelo Elementor — a página aparece inteira em vez de ficar em
   branco. Nunca deixe o conteúdo depender do JS só para ficar visível. */
#jc-lp-wrapper.jc-js .jc-rv:not(:where(.jc-hero *)) {
  opacity: 0;
  translate: 0 22px;
  transition: opacity .7s var(--jc-ease), translate .7s var(--jc-ease);
  transition-delay: var(--jc-d, 0ms);
}
#jc-lp-wrapper .jc-rv.jc-in { opacity: 1; translate: 0 0; }

/* ---------------------------------------------------------------------------
   A DOBRA ENTRA SOZINHA, EM CSS
   ---------------------------------------------------------------------------
   Quem chega na página vê o hero aparecer sem rolar, sem mexer o mouse e sem
   depender de o JS ter rodado. É passada única (`both`, sem `infinite`) — não
   contraria a regra de movimento do projeto, que proíbe laços.
   Por isso o hero está fora da regra escondida acima: as duas mecânicas
   brigariam pelo mesmo elemento.
   O atraso vem do atributo `data-d` do markup, não de variável posta por JS,
   senão o escalonamento sumiria justamente quando o script falhasse.
   --------------------------------------------------------------------------- */
@keyframes jc-entra {
  from { opacity: 0; translate: 0 22px; }
  to   { opacity: 1; translate: 0 0; }
}
#jc-lp-wrapper .jc-hero .jc-rv          { animation: jc-entra .7s var(--jc-ease) both; }
#jc-lp-wrapper .jc-hero .jc-rv[data-d="60"]  { animation-delay: .06s; }
#jc-lp-wrapper .jc-hero .jc-rv[data-d="120"] { animation-delay: .12s; }
#jc-lp-wrapper .jc-hero .jc-rv[data-d="180"] { animation-delay: .18s; }
#jc-lp-wrapper .jc-hero .jc-rv[data-d="240"] { animation-delay: .24s; }

/* A faixa fecha a dobra: entra junto, logo depois do último texto */
#jc-lp-wrapper .jc-ticker { animation: jc-entra .7s var(--jc-ease) .3s both; }

/* ---------------------------------------------------------------------------
   16. RESPONSIVO
   --------------------------------------------------------------------------- */
@media (max-width: 1000px) {
  /* aqui a barra volta a ser uma linha só — ver nota no token */
  #jc-lp-wrapper                   { --jc-nav-h: 69px; }

  #jc-lp-wrapper .jc-grid--3,
  #jc-lp-wrapper .jc-grid--4       { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #jc-lp-wrapper .jc-faq           { grid-template-columns: minmax(0, 1fr); }
  #jc-lp-wrapper .jc-rev           { flex-basis: calc((100% - 20px) / 2); }

  /* Dobra em uma coluna só: a copy primeiro, o formulário logo abaixo —
     que é exatamente a ordem do markup, sem precisar reordenar nada. */
  #jc-lp-wrapper .jc-hero__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(26px, 4.5vw, 40px);
    padding-top: clamp(10px, 3vw, 26px);
  }
  #jc-lp-wrapper .jc-hero__form    { max-width: 560px; }

  /* Galeria: duas fotos por vez na largura intermediária */
  #jc-lp-wrapper .jc-gal__stage    { --jc-gal-per: 2; aspect-ratio: 3 / 1; }

  /* A barra volta a ser uma linha só: logo à esquerda, menu à direita. */
  #jc-lp-wrapper .jc-nav__inner {
    flex-direction: row;
    gap: 26px;
    padding: 13px var(--jc-pad);
  }
  #jc-lp-wrapper .jc-brand         { margin-right: auto; }
  #jc-lp-wrapper .jc-brand__logo   { height: 40px; max-width: 190px; }

  /* O botão de orçamento sai da barra e dá lugar ao menu — o flutuante
     continua garantindo o atalho para o formulário. */
  #jc-lp-wrapper .jc-nav__cta      { display: none; }
  #jc-lp-wrapper .jc-burger        { display: block; margin-left: auto; }

  /* Painel suspenso com as mesmas âncoras do desktop */
  #jc-lp-wrapper .jc-nav__links {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 4px var(--jc-pad) 14px;
    background: rgba(5, 10, 20, .97);
    border-bottom: 1px solid var(--jc-line-2);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
  }
  #jc-lp-wrapper .jc-nav__links.jc-open { display: flex; }

  #jc-lp-wrapper .jc-nav__links a {
    padding: 15px 0 15px 18px;
    font-size: .84rem;
    border-bottom: 1px solid var(--jc-line);
  }
  #jc-lp-wrapper .jc-nav__links a:last-child { border-bottom: 0; }
  #jc-lp-wrapper .jc-nav__links a::before {
    left: 0;
    opacity: .45;
  }
  #jc-lp-wrapper .jc-nav__links a:hover::before,
  #jc-lp-wrapper .jc-nav__links a:focus-visible::before { opacity: 1; }
}

@media (max-width: 700px) {
  #jc-lp-wrapper { font-size: 15.5px; --jc-notch: 11px; --jc-card-x: 22px; }
  #jc-lp-wrapper .jc-grid--3,
  #jc-lp-wrapper .jc-grid--4       { grid-template-columns: minmax(0, 1fr); }
  #jc-lp-wrapper .jc-card          { padding: 26px var(--jc-card-x) 24px; }
  #jc-lp-wrapper .jc-card--svc,
  #jc-lp-wrapper .jc-card--hero    { padding-bottom: 0; }
  /* o shorthand acima zeraria o recuo que abre espaço para a etiqueta
     "Nosso diferencial" — sem isto ela cobre o símbolo do card */
  #jc-lp-wrapper .jc-card--hero    { padding-top: 44px; }
  /* mesma armadilha: sem isto a foto do diagnóstico descola do topo */
  #jc-lp-wrapper .jc-card--pain    { padding-top: 0; }
  #jc-lp-wrapper .jc-photo         { height: clamp(170px, 44vw, 230px); }
  #jc-lp-wrapper .jc-shot          { height: clamp(180px, 46vw, 240px); }
  #jc-lp-wrapper .jc-btn--xl       { width: 100%; padding: 18px 22px; white-space: normal; }
  #jc-lp-wrapper .jc-brand__logo   { height: 34px; }
  #jc-lp-wrapper .jc-h1 em,
  #jc-lp-wrapper .jc-h2 em         { white-space: normal; }
  #jc-lp-wrapper .jc-float         { width: 52px; height: 52px; }
  #jc-lp-wrapper .jc-acc__btn      { gap: 12px; font-size: .93rem; }
  #jc-lp-wrapper .jc-acc__ico      { width: 20px; height: 20px; }
  #jc-lp-wrapper .jc-acc__panel p  { padding-right: 0; }
  #jc-lp-wrapper .jc-footer__bar   { justify-content: flex-start; }
  #jc-lp-wrapper .jc-rev           { flex-basis: 100%; }
  #jc-lp-wrapper .jc-rev-nav       { justify-content: space-between; }

  /* Galeria: uma foto por vez, em proporção que cabe na coluna estreita. */
  #jc-lp-wrapper .jc-gal__stage    { --jc-gal-per: 1; aspect-ratio: 4 / 3; }
  #jc-lp-wrapper .jc-gal__dots     { display: none; }
  #jc-lp-wrapper .jc-gal__bar      { justify-content: center; }
  #jc-lp-wrapper .jc-gal__arrow    { width: 40px; height: 40px; }
  #jc-lp-wrapper .jc-gal__arrow--prev { left: 8px; }
  #jc-lp-wrapper .jc-gal__arrow--next { right: 8px; }
  #jc-lp-wrapper .jc-gal__hint     { display: none; }
  #jc-lp-wrapper .jc-lb__img       { max-height: 78vh; }

  /* O formulário não aparece mais aqui: a quebra em uma coluna nesta largura
     é responsabilidade do template do Elementor, não deste arquivo. */
}

/* ---------------------------------------------------------------------------
   17. ACESSIBILIDADE — MOVIMENTO REDUZIDO
   --------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  #jc-lp-wrapper *,
  #jc-lp-wrapper *::before,
  #jc-lp-wrapper *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  /* !important porque a regra escondida agora carrega .jc-js e ganharia
     desta por especificidade */
  #jc-lp-wrapper .jc-rv { opacity: 1 !important; translate: none !important; }
  /* A faixa para de correr e mostra os itens em posição inicial */
  #jc-lp-wrapper .jc-ticker__track { animation: none !important; transform: none !important; }
}/* End custom CSS */