/* =====================================================================
   Iguassu Ambulâncias — folha principal

   Site inteiro em #05090F. O azul institucional (#0B3B7D) é escuro
   demais para virar texto sobre esse fundo, então ele recua para
   detalhes estruturais e quem carrega a hierarquia é: branco nos
   títulos, ciano nos rótulos técnicos, laranja na ação.
   ===================================================================== */

:root {
  --tinta: #05090f; /* fundo de todo o site */
  --tinta-2: #080e18; /* seção alternada, quase imperceptível */
  --tinta-3: #0c1523; /* cartões */
  --azul: #0b3b7d; /* institucional — só bordas e preenchimentos */
  --azul-claro: #1b63c4;
  --cian: #38b6e8;
  --laranja: #f2751b;
  --branco: #eff4f9;
  --cinza: #93a3b6; /* 7:1 de contraste sobre --tinta */
  --cinza-fraco: #61708260;
  --linha: rgba(239, 244, 249, 0.11);

  /* Bricolage Grotesque tem largura óptica variável e terminais cortados
     em ângulo — dá caráter sem virar fonte de cartaz. Instrument Sans é
     mais aberta que a Roboto no corpo de texto. DM Mono segura o HUD sem
     o ar de terminal genérico. */
  --display: "Bricolage Grotesque", "Archivo", system-ui, sans-serif;
  --texto: "Instrument Sans", "Roboto", system-ui, sans-serif;
  --mono: "DM Mono", "IBM Plex Mono", ui-monospace, monospace;

  --gut: clamp(18px, 4vw, 56px);
  /* Apenas o valor inicial: assim que o vídeo carrega, o palco.js recalcula
   a altura pela duração real (CFG.VH_POR_SEGUNDO). */
  --palco-altura: 560vh;
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
html {
  background: var(--tinta);
}
body {
  background: var(--tinta);
  color: var(--branco);
  font-family: var(--texto);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img {
  display: block;
  max-width: 100%;
}
a {
  color: inherit;
  text-decoration: none;
}
:focus-visible {
  outline: 2px solid var(--cian);
  outline-offset: 3px;
}
.wrap {
  max-width: 1180px;
  margin: 0 auto;
}
.so-leitor {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.pular {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 200;
  background: var(--laranja);
  color: #fff;
  padding: 14px 20px;
  display: inline-flex;
  align-items: center;
  min-height: 46px;
}
.pular:focus {
  left: 0;
}

/* ---------------------------- BOTÕES ---------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  gap: 9px;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 13px 22px;
  border-radius: 3px;
  transition:
    transform 0.18s,
    filter 0.18s,
    border-color 0.18s;
  white-space: nowrap;
}
.btn:hover {
  transform: translateY(-2px);
  filter: brightness(1.08);
}
.btn-g {
  padding: 17px 30px;
  font-size: 13px;
}
/* mesmo desenho do btn-chamar/btn-azul (gradiente + brilho no hover),
   pra não ficar um botão chapado ao lado dos outros já polidos */
.btn-laranja {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-radius: 999px;
  background: linear-gradient(
    135deg,
    #ff8a32 0%,
    var(--laranja) 55%,
    #c94f09 100%
  );
  color: #fff;
  box-shadow:
    0 8px 22px rgba(242, 117, 27, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.22);
  transition:
    transform 0.2s cubic-bezier(0.22, 0.7, 0.3, 1),
    box-shadow 0.25s,
    filter 0.18s;
}
.btn-laranja:hover {
  box-shadow:
    0 12px 30px rgba(242, 117, 27, 0.48),
    inset 0 1px 0 rgba(255, 255, 255, 0.28);
}
.btn-laranja::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    105deg,
    transparent 38%,
    rgba(255, 255, 255, 0.3) 50%,
    transparent 62%
  );
  transform: translateX(-120%);
  transition: transform 0.62s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.btn-laranja:hover::after {
  transform: translateX(120%);
}
.btn-laranja i {
  font-size: 1.1em;
}

/* --------- botão principal: pílula com ponto de plantão --------- */
.btn-chamar {
  border: 0;
  font-family: var(--mono);
  cursor: pointer;
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 22px 12px 18px;
  border-radius: 999px;
  color: #fff;
  font-family: var(--mono);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  background: linear-gradient(
    135deg,
    #ff8a32 0%,
    var(--laranja) 52%,
    #d85f0c 100%
  );
  box-shadow:
    0 6px 20px rgba(242, 117, 27, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.28);
  overflow: hidden;
  isolation: isolate;
  transition:
    transform 0.2s cubic-bezier(0.22, 0.7, 0.3, 1),
    box-shadow 0.25s;
}
.btn-chamar:hover {
  transform: translateY(-2px);
  box-shadow:
    0 10px 28px rgba(242, 117, 27, 0.42),
    inset 0 1px 0 rgba(255, 255, 255, 0.34);
}
.btn-chamar:active {
  transform: translateY(0);
}
/* brilho que atravessa no hover */
.btn-chamar::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    105deg,
    transparent 38%,
    rgba(255, 255, 255, 0.32) 50%,
    transparent 62%
  );
  transform: translateX(-120%);
  transition: transform 0.62s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.btn-chamar:hover::after {
  transform: translateX(120%);
}
.btn-chamar i {
  font-size: 16px;
}
/* ponto de plantão: pulsa devagar, sinalizando 24 h */
.btn-chamar .pulso {
  position: relative;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #8cf5a8;
  flex: none;
  box-shadow: 0 0 0 0 rgba(140, 245, 168, 0.7);
}
.btn-chamar .pulso::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: inherit;
  animation: pulsa 2.4s ease-out infinite;
}
@keyframes pulsa {
  0% {
    transform: scale(1);
    opacity: 0.85;
  }
  70% {
    transform: scale(3.4);
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
/* --azul-claro é só o anel de foco; o institucional é --azul.
   Mesmo desenho do btn-chamar (gradiente + brilho no hover), em azul,
   pra "Solicitar orçamento" parecer uma ação de verdade, não um link solto. */
.btn-azul {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-radius: 999px;
  background: linear-gradient(
    135deg,
    #1b63c4 0%,
    var(--azul) 55%,
    #052247 100%
  );
  color: #fff;
  box-shadow:
    0 8px 22px rgba(11, 59, 125, 0.4),
    inset 0 1px 0 rgba(255, 255, 255, 0.16);
  transition:
    transform 0.2s cubic-bezier(0.22, 0.7, 0.3, 1),
    box-shadow 0.25s,
    filter 0.18s;
}
.btn-azul:hover {
  box-shadow:
    0 12px 30px rgba(11, 59, 125, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.22);
}
.btn-azul::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    105deg,
    transparent 38%,
    rgba(255, 255, 255, 0.26) 50%,
    transparent 62%
  );
  transform: translateX(-120%);
  transition: transform 0.62s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.btn-azul:hover::after {
  transform: translateX(120%);
}
.btn-linha {
  border: 1px solid var(--linha);
  color: var(--branco);
  background: transparent;
}
.btn-linha:hover {
  border-color: var(--cian);
}

/* ---------------------------- TOPO ----------------------------
   Fixo desde o começo: logo, idiomas, botão e menu ficam à vista durante
   todo o palco. O que muda depois do palco é só o fundo — sobre o vídeo
   ele é transparente, no conteúdo ganha vidro fosco. */
.topo {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px var(--gut);
  background: transparent;
  transition:
    background 0.3s,
    backdrop-filter 0.3s,
    border-color 0.3s,
    padding 0.3s;
  border-bottom: 1px solid transparent;
}
.topo-fixo {
  padding: 11px var(--gut);
  background: rgba(5, 9, 15, 0.88);
  backdrop-filter: blur(14px);
  border-bottom-color: var(--linha);
}
/* .topo tem z-index próprio, então cria contexto de empilhamento: sem isto
   o botão fica ATRÁS do painel e o X aparece apagado. */
body.menu-aberto .topo {
  z-index: 120;
  background: transparent;
  border-bottom-color: transparent;
  backdrop-filter: none;
}
body.menu-aberto .topo .btn-chamar {
  opacity: 0;
  pointer-events: none;
}

.topo-marca {
  display: flex;
  align-items: center;
  line-height: 0;
  min-height: 46px;
}
.topo-marca img {
  height: 62px;
  width: auto;
  transition: height 0.3s;
}
.topo-fixo .topo-marca img {
  height: 46px;
}

.topo-acoes {
  display: flex;
  align-items: center;
  gap: clamp(10px, 2vw, 20px);
}
/* --------- seletor de idioma --------- */
.idiomas {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 4px;
  border-radius: 999px;
  border: 1px solid var(--linha);
  background: rgba(5, 9, 15, 0.32);
  backdrop-filter: blur(6px);
}
.idiomas button {
  border: 0;
  cursor: pointer;
  background: transparent;
  color: var(--cinza);
  min-height: 32px;
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  padding: 6px 11px;
  border-radius: 999px;
  transition:
    color 0.2s,
    background 0.2s;
}
.idiomas button:hover {
  color: var(--branco);
}
.idiomas button[aria-current="true"] {
  color: #fff;
  background: rgba(239, 244, 249, 0.12);
}

/* o widget do Google injeta uma barra no topo e desloca o body; isto anula */
.skiptranslate {
  display: none !important;
}
body {
  top: 0 !important;
}
/* O widget precisa existir no DOM (é ele que traduz), mas fica invisível:
   quem aparece são os botões PT/ES/EN. Não use display:none aqui — isso
   impediria o seletor de responder e forçaria recarregar a cada troca. */
#google_translate_element {
  position: fixed;
  top: -200px;
  left: -200px;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}
iframe.goog-te-banner-frame,
.goog-te-banner-frame {
  display: none !important;
}
.goog-te-gadget-icon,
.goog-logo-link,
.goog-te-gadget span {
  display: none !important;
}
font[style] {
  background: none !important;
  box-shadow: none !important;
}

/* --------- hambúrguer: duas hastes que viram X --------- */
.topo-menu {
  position: relative;
  z-index: 120;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid var(--linha);
  background: rgba(5, 9, 15, 0.35);
  backdrop-filter: blur(6px);
  cursor: pointer;
  display: grid;
  place-items: center;
  gap: 0;
  padding: 0;
  transition:
    border-color 0.25s,
    background 0.25s;
}
.topo-menu:hover {
  border-color: var(--laranja);
}
.topo-menu span {
  grid-area: 1/1;
  display: block;
  width: 19px;
  height: 1.5px;
  border-radius: 2px;
  background: var(--branco);
  transition:
    transform 0.34s cubic-bezier(0.22, 0.7, 0.3, 1),
    width 0.34s,
    opacity 0.2s;
}
.topo-menu span:nth-child(1) {
  transform: translateY(-4px);
}
.topo-menu span:nth-child(2) {
  transform: translateY(4px);
  width: 12px;
  justify-self: center;
  margin-left: -7px;
}
body.menu-aberto .topo-menu {
  border-color: var(--laranja);
  background: rgba(5, 9, 15, 0.6);
}
body.menu-aberto .topo-menu span:nth-child(1) {
  transform: rotate(45deg);
  width: 19px;
}
body.menu-aberto .topo-menu span:nth-child(2) {
  transform: rotate(-45deg);
  width: 19px;
  margin-left: 0;
}

/* --------- painel do menu ---------
   position:fixed + altura do conteúdo variável (6 itens grandes + rodapé)
   não cabem sempre em telas mais baixas. Centralizar com grid/align-content
   sozinho cortava os primeiros itens para fora do topo, sem como rolar até
   eles (body.menu-aberto trava o scroll da página). A saída é o painel
   rolar por si (overflow-y:auto) e o conteúdo se centralizar via
   margin:auto — centraliza quando cabe, vira topo com scroll quando não. */
.menu-painel {
  position: fixed;
  inset: 0;
  z-index: 110;
  overflow-y: auto;
  padding: 0 var(--gut);
  background: rgba(5, 9, 15, 0.96);
  backdrop-filter: blur(18px);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.34s,
    visibility 0.34s;
}
body.menu-aberto .menu-painel {
  opacity: 1;
  visibility: visible;
}
body.menu-aberto {
  overflow: hidden;
}

.menu-interno {
  margin: auto;
  max-width: 1180px;
  width: 100%;
  padding: 100px 0 32px;
}

.menu-lista {
  list-style: none;
  border-top: 1px solid var(--linha);
}
.menu-lista li {
  border-bottom: 1px solid var(--linha);
  opacity: 0;
  transform: translateY(14px);
  transition:
    opacity 0.4s,
    transform 0.4s;
}
body.menu-aberto .menu-lista li {
  opacity: 1;
  transform: none;
}
body.menu-aberto .menu-lista li:nth-child(1) {
  transition-delay: 0.06s;
}
body.menu-aberto .menu-lista li:nth-child(2) {
  transition-delay: 0.11s;
}
body.menu-aberto .menu-lista li:nth-child(3) {
  transition-delay: 0.16s;
}
body.menu-aberto .menu-lista li:nth-child(4) {
  transition-delay: 0.21s;
}
body.menu-aberto .menu-lista li:nth-child(5) {
  transition-delay: 0.26s;
}

.menu-lista a {
  display: flex;
  align-items: baseline;
  gap: clamp(14px, 3vw, 34px);
  padding: clamp(14px, 2.4vw, 22px) 4px;
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(30px, 5.6vw, 62px);
  font-variation-settings: "opsz" 96;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--branco);
  transition:
    color 0.22s,
    padding-left 0.28s;
}
.menu-lista a:hover {
  color: var(--laranja);
  padding-left: 16px;
}
.menu-lista a i {
  font-family: var(--mono);
  font-style: normal;
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--cian);
  flex: none;
  width: 2.4em;
}

.menu-pe {
  max-width: 1180px;
  width: 100%;
  margin: clamp(28px, 4vw, 44px) auto 0;
  display: flex;
  flex-wrap: wrap;
  gap: 14px 32px;
  align-items: center;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.1em;
  color: var(--cinza);
}
/* No painel do menu tudo é tocado com o dedo: alvos de 44 px de altura,
   conforme a diretriz de toque. Antes tinham 13 px. */
.menu-pe a {
  color: var(--cinza);
  transition: color 0.2s;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 2px;
}
.menu-pe {
  align-items: center;
}
.menu-pe .idiomas {
  margin-left: auto;
}
.menu-pe a:hover {
  color: var(--laranja);
}

/* --------- botão flutuante: dois números, não um --------- */
/* Emergência e comercial não são o mesmo atendimento. Mandar tudo para um
   número só faz o plantão receber pedido de orçamento de madrugada. */
.zap {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 95;
  display: grid;
  justify-items: end;
  gap: 10px;
}

.zap-bt {
  position: relative;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  border: 0;
  cursor: pointer;
  background: linear-gradient(140deg, #2ee36b 0%, #25d366 55%, #12a84c 100%);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 27px;
  box-shadow:
    0 10px 26px rgba(18, 168, 76, 0.38),
    inset 0 1px 0 rgba(255, 255, 255, 0.35);
  transition: transform 0.22s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.zap-bt:hover {
  transform: scale(1.06);
}
.zap-bt i {
  grid-area: 1/1;
  transition:
    opacity 0.22s,
    transform 0.28s;
}
.zap-bt .zap-x {
  font-size: 21px;
  opacity: 0;
  transform: rotate(-90deg);
}
body.zap-aberto .zap-bt .fa-whatsapp {
  opacity: 0;
  transform: rotate(90deg);
}
body.zap-aberto .zap-bt .zap-x {
  opacity: 1;
  transform: rotate(0);
}

/* anel que pulsa devagar: sinaliza plantão sem virar pisca-pisca */
.zap-anel {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid #25d366;
  animation: anel 2.8s cubic-bezier(0.2, 0.6, 0.35, 1) infinite;
  pointer-events: none;
}
@keyframes anel {
  0% {
    transform: scale(1);
    opacity: 0.6;
  }
  70% {
    transform: scale(1.7);
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
body.zap-aberto .zap-anel {
  animation: none;
  opacity: 0;
}

.zap-opcoes {
  display: grid;
  gap: 8px;
  justify-items: end;
}
.zap-op {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 9px 10px 9px 16px;
  border-radius: 999px;
  background: rgba(10, 17, 26, 0.94);
  backdrop-filter: blur(12px);
  border: 1px solid var(--linha);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.42);
  opacity: 0;
  transform: translateY(10px) scale(0.96);
  pointer-events: none;
  transition:
    opacity 0.26s,
    transform 0.26s cubic-bezier(0.22, 0.7, 0.3, 1),
    border-color 0.2s;
}
body.zap-aberto .zap-op {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
body.zap-aberto .zap-op:nth-child(1) {
  transition-delay: 0.04s;
}
body.zap-aberto .zap-op:nth-child(2) {
  transition-delay: 0.1s;
}
.zap-op:hover {
  border-color: #25d366;
}
.zap-op-txt {
  display: grid;
  text-align: right;
  line-height: 1.25;
}
.zap-op-txt b {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cinza);
  font-weight: 500;
}
.zap-op-txt i {
  font-style: normal;
  font-family: var(--display);
  font-weight: 700;
  font-size: 15px;
  letter-spacing: -0.01em;
  color: var(--branco);
}
.zap-op-ic {
  width: 38px;
  height: 38px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 19px;
  background: rgba(37, 211, 102, 0.16);
  color: #3ee87d;
}
.zap-op-urg .zap-op-txt b {
  color: var(--laranja);
}
.zap-op-urg .zap-op-ic {
  background: rgba(242, 117, 27, 0.18);
  color: var(--laranja);
}

body.menu-aberto .zap {
  opacity: 0;
  pointer-events: none;
}

/* ---------------------------- PALCO ---------------------------- */
.palco-wrap {
  position: relative;
  height: var(--palco-altura);
  z-index: 1;
}
.palco {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: var(--tinta);
}
.palco-cam {
  position: absolute;
  inset: 0;
}
.palco-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Quadro final em foto de alta resolução, alinhado ao último quadro do
   vídeo por correlação de bordas e com a cor casada. Entra por fusão
   durante a espera: a cena parece entrar em foco em vez de cortar. */
.palco-final,
.palco-inicial {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
  will-change: opacity;
}
.palco-final {
  opacity: 0;
}
/* durante a fusão o vídeo perde um fio de nitidez, e a foto entra limpa:
   é o que faz a passagem parecer foco entrando em vez de troca de imagem */
.palco-focando .palco-video {
  filter: blur(var(--foco, 0px));
  transition: filter 0.1s linear;
}
/* O quadro inicial começa visível: é ele que o visitante vê antes de rolar,
   nítido, no lugar do primeiro quadro comprimido do vídeo. */
.palco-inicial {
  opacity: 1;
}
.palco-sem-video {
  background: var(--poster) center/cover no-repeat;
}
.palco-sem-video .palco-video {
  display: none;
}

/* Véu enxuto: só o bastante para o texto ler. A máscara radial que fechava
   o palco foi retirada — ela escurecia o centro da imagem sem necessidade. */
.palco-veu {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(
      180deg,
      rgba(5, 9, 15, 0.58) 0%,
      rgba(5, 9, 15, 0.04) 24%,
      rgba(5, 9, 15, 0.02) 44%,
      rgba(5, 9, 15, 0.86) 100%
    ),
    linear-gradient(
      270deg,
      rgba(5, 9, 15, 0.7) 0%,
      rgba(5, 9, 15, 0.24) 36%,
      transparent 66%
    );
}
.palco-grao {
  position: absolute;
  inset: -50%;
  pointer-events: none;
  opacity: 0.03;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>");
}

/* HUD */
.hud {
  position: absolute;
  inset: 0;
  pointer-events: none;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.hud-se,
.hud-sd,
.hud-id {
  position: absolute;
  display: grid;
  gap: 5px;
}
.hud-se {
  top: 118px;
  left: var(--gut);
}
.hud-sd {
  top: 82px;
  right: var(--gut);
  justify-items: end;
}
.hud-id {
  bottom: 58px;
  left: var(--gut);
  justify-items: start;
}
.hud-lin {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--cinza);
}
.hud-lin b {
  color: var(--branco);
  font-weight: 600;
  letter-spacing: 0.14em;
}
.hud-ch {
  color: var(--cian);
}
.hud-pip {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--laranja);
  box-shadow: 0 0 8px var(--laranja);
}
.colchete {
  position: absolute;
  width: 22px;
  height: 22px;
  border: 1px solid rgba(239, 244, 249, 0.24);
}
.c-se {
  top: 108px;
  left: calc(var(--gut) - 14px);
  border-right: 0;
  border-bottom: 0;
}
.c-sd {
  top: 108px;
  right: calc(var(--gut) - 14px);
  border-left: 0;
  border-bottom: 0;
}
.c-ie {
  bottom: 48px;
  right: calc(var(--gut) - 14px);
  left: auto;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  border-right: 1px solid rgba(239, 244, 249, 0.24);
}
.c-id {
  bottom: 48px;
  right: calc(var(--gut) - 14px);
  border-left: 0;
  border-top: 0;
}

/* legendas */
.legendas {
  position: absolute;
  left: var(--gut);
  right: var(--gut);
  bottom: clamp(84px, 13vh, 138px);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
}
.legenda {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  opacity: 0;
  will-change: opacity, transform;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
}
.leg-chapeu {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--branco);
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
  text-shadow: 0 1px 16px rgba(5, 9, 15, 0.9);
}
/* com a legenda à direita, o filete vai ANTES do texto e degrada para fora */
.leg-chapeu::before {
  content: "";
  height: 1px;
  width: clamp(60px, 10vw, 120px);
  background: linear-gradient(270deg, rgba(239, 244, 249, 0.85), transparent);
}
.leg-titulo {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(34px, 7vw, 84px);
  font-variation-settings: "opsz" 96;
  line-height: 0.94;
  letter-spacing: -0.028em;
  max-width: 16ch;
  text-shadow: 0 2px 40px rgba(5, 9, 15, 0.9);
}
.leg-titulo em {
  font-style: normal;
  color: var(--laranja);
}
.leg-texto {
  margin-top: 18px;
  max-width: 44ch;
  font-size: clamp(16px, 2vw, 21px);
  line-height: 1.5;
  font-weight: 400;
  color: rgba(239, 244, 249, 0.9);
  text-shadow: 0 1px 20px rgba(5, 9, 15, 0.8);
}

/* --------- carregamento do vídeo ---------
   Discreto: um filete de 1 px que preenche e um rótulo em mono. Fica
   centrado sobre o pôster e some sozinho quando o vídeo termina de
   bufferizar. Nada de roda girando. */
/* Fica na base, logo acima do ECG: é onde o gradiente do véu garante
   contraste. No centro da tela ele caía sobre a carroceria clara e sumia. */
.palco-carga {
  position: absolute;
  left: 50%;
  bottom: 56px;
  transform: translateX(-50%);
  display: grid;
  justify-items: center;
  gap: 11px;
  pointer-events: none;
  z-index: 3;
  transition:
    opacity 0.55s ease,
    transform 0.55s ease;
}
.palco-carga.pronto {
  opacity: 0;
  transform: translateX(-50%) translateY(6px);
}
/* enquanto carrega, a dica de rolar não aparece — não há o que rolar ainda */
body.palco-carregando .dica {
  opacity: 0 !important;
}
.carga-trilho {
  display: block;
  width: clamp(120px, 22vw, 190px);
  height: 1px;
  background: rgba(239, 244, 249, 0.18);
  overflow: hidden;
}
.carga-trilho i {
  display: block;
  height: 100%;
  width: 0;
  background: var(--cian);
  box-shadow: 0 0 8px rgba(56, 182, 232, 0.9);
  transition: width 0.35s ease;
}
.carga-txt {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: rgba(239, 244, 249, 0.55);
}
.carga-txt b {
  color: var(--branco);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

/* Números dentro do palco — só no celular (ver bloco @media abaixo) */
.palco-numeros {
  display: none;
}

.ecg {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 44px;
  pointer-events: none;
}
.ecg svg {
  width: 100%;
  height: 100%;
}
.ecg-traco {
  fill: none;
  stroke: var(--cian);
  stroke-width: 1.6;
  vector-effect: non-scaling-stroke;
  filter: drop-shadow(0 0 5px rgba(56, 182, 232, 0.7));
}
.ecg-base {
  fill: none;
  stroke: rgba(239, 244, 249, 0.1);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.dica {
  position: absolute;
  left: 50%;
  bottom: 48px;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 8px 8px 16px;
  border-radius: 999px;
  background: rgba(5, 9, 15, 0.55);
  backdrop-filter: blur(8px);
  border: 1px solid var(--linha);
  transition: opacity 0.35s;
  pointer-events: none;
}
.dica-txt {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--branco);
  white-space: nowrap;
}
.dica-seta {
  width: 26px;
  height: 26px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--laranja);
  color: #fff;
}
.dica-seta svg {
  width: 15px;
  height: 15px;
  animation: cai 1.7s cubic-bezier(0.4, 0, 0.3, 1) infinite;
}
@keyframes cai {
  0%,
  100% {
    transform: translateY(-2px);
    opacity: 0.75;
  }
  50% {
    transform: translateY(3px);
    opacity: 1;
  }
}

/* ---------------------------- SEÇÕES ---------------------------- */
section[id],
.chamada {
  scroll-margin-top: 96px;
}
.secao {
  padding: clamp(42px, 6vw, 78px) var(--gut);
  background: var(--tinta);
}
.secao-clara {
  background: var(--tinta-2);
}
.chapeu {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--laranja);
  margin-bottom: 10px;
}
.titulo-secao {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(32px, 4.6vw, 52px);
  font-variation-settings: "opsz" 72;
  line-height: 1.02;
  letter-spacing: -0.028em;
  color: var(--branco);
  margin-bottom: 26px;
}
.lede {
  font-size: 17px;
  line-height: 1.65;
  color: var(--cinza);
  max-width: 52ch;
  margin-bottom: 26px;
}

/* números */
.numeros {
  background: var(--tinta);
  padding: 36px var(--gut);
  border-top: 1px solid var(--linha);
  border-bottom: 1px solid var(--linha);
}
.numeros-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 22px;
  text-align: center;
}
.num {
  padding: 6px 10px;
  border-left: 1px solid var(--linha);
}
.num:first-child {
  border-left: 0;
}
.num b {
  display: block;
  font-family: var(--display);
  font-weight: 900;
  font-size: clamp(28px, 3.3vw, 40px);
  letter-spacing: -0.03em;
  color: var(--laranja);
}
.num span {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cinza);
}

/* serviços — cards com foto da própria frota ao fundo.
   O card só com ícone não dizia nada sobre a empresa; a foto aparece no
   hover e o número dá ritmo à grade. */
.servicos-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: clamp(14px, 1.6vw, 20px);
}
.servico {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: 6px;
  min-height: clamp(280px, 26vw, 330px);
  background: var(--tinta-3);
  border: 1px solid var(--linha);
  isolation: isolate;
  transition:
    transform 0.3s cubic-bezier(0.22, 0.7, 0.3, 1),
    border-color 0.3s;
}
.servico:hover {
  transform: translateY(-6px);
  border-color: rgba(242, 117, 27, 0.55);
}

.servico-fundo {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-size: cover;
  background-position: center;
  opacity: 0.22;
  transform: scale(1.04);
  transition:
    opacity 0.45s,
    transform 0.6s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.servico:hover .servico-fundo {
  opacity: 0.42;
  transform: scale(1.12);
}
.servico::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    180deg,
    rgba(5, 9, 15, 0.35) 0%,
    rgba(5, 9, 15, 0.82) 55%,
    var(--tinta) 100%
  );
}

.servico-num {
  position: absolute;
  top: 16px;
  right: 20px;
  font-family: var(--display);
  font-weight: 800;
  font-size: 34px;
  letter-spacing: -0.03em;
  color: rgba(239, 244, 249, 0.14);
  line-height: 1;
  transition: color 0.3s;
}
.servico:hover .servico-num {
  color: rgba(242, 117, 27, 0.5);
}

.servico-corpo {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 24px 22px 22px;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.servico-ic {
  width: 44px;
  height: 44px;
  border-radius: 4px;
  background: rgba(11, 59, 125, 0.9);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 19px;
  margin-bottom: 6px;
  border: 1px solid rgba(239, 244, 249, 0.14);
  transition:
    background 0.3s,
    transform 0.3s;
}
.servico:hover .servico-ic {
  background: var(--laranja);
  transform: translateY(-2px);
}
.servico h3 {
  font-family: var(--display);
  font-weight: 800;
  font-size: 18px;
  letter-spacing: -0.018em;
  color: var(--branco);
  line-height: 1.2;
  /* O corpo é ancorado no rodapé do card: título e resumo de tamanhos
     diferentes empurravam o ícone para alturas diferentes em cada card.
     Reservar 3 linhas de título e 3 de resumo deixa ícone, título e
     resumo na mesma linha em todos (o espaço sobra abaixo do texto). */
  min-height: 3.6em;
  text-wrap: balance;
}
.servico p {
  font-size: 14px;
  line-height: 1.55;
  color: rgba(239, 244, 249, 0.72);
  min-height: 4.65em;
}
.servico-mais {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--laranja);
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  opacity: 0.8;
  transition:
    opacity 0.3s,
    gap 0.3s;
}
.servico:hover .servico-mais {
  opacity: 1;
  gap: 12px;
}

/* ---------------------- O QUE SOMOS / NÃO SOMOS ---------------------- */
.sobre-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(26px, 4vw, 56px);
  margin-bottom: clamp(40px, 6vw, 72px);
}
.sobre-titulo {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(25px, 3.2vw, 36px);
  font-variation-settings: "opsz" 48;
  line-height: 1.08;
  letter-spacing: -0.028em;
  color: var(--branco);
  margin-bottom: 16px;
}
.sobre-titulo em {
  font-style: normal;
  color: var(--laranja);
}
.sobre-texto {
  font-size: 15.5px;
  line-height: 1.7;
  color: var(--cinza);
  max-width: 52ch;
}

.publico {
  border: 1px solid var(--linha);
  border-radius: 6px;
  padding: clamp(22px, 3vw, 32px);
  background: linear-gradient(
    180deg,
    rgba(242, 117, 27, 0.055),
    transparent 60%
  );
}
.publico-topo {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 24px;
}
.publico-alerta {
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(242, 117, 27, 0.16);
  color: var(--laranja);
}
.publico-alerta svg {
  width: 21px;
  height: 21px;
}
.publico-titulo {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(19px, 2.2vw, 24px);
  letter-spacing: -0.02em;
  color: var(--branco);
  margin-bottom: 5px;
}
.publico-titulo em {
  font-style: normal;
  color: var(--laranja);
}
/* "o que não somos" em destaque: selo com X, separado da explicação */
.publico-nao {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 8px 0 14px;
  padding: 7px 16px 7px 7px;
  border-radius: 999px;
  border: 1px solid rgba(242, 117, 27, 0.35);
  background: rgba(242, 117, 27, 0.08);
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(14px, 1.5vw, 15.5px);
  letter-spacing: -0.01em;
  color: var(--branco);
  line-height: 1.3;
}
.publico-x {
  width: 26px;
  height: 26px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--laranja);
  color: #fff;
}
.publico-x svg {
  width: 13px;
  height: 13px;
}
.publico-sub {
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--cinza);
  max-width: 60ch;
  padding-left: 14px;
  border-left: 2px solid var(--linha);
}
.publico-sub strong {
  color: var(--branco);
  font-weight: 600;
}

.publico-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}
.orgao {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 18px 18px 16px;
  border-radius: 5px;
  background: var(--tinta-3);
  border: 1px solid var(--linha);
  transition:
    border-color 0.25s,
    transform 0.25s,
    background 0.25s;
}
.orgao:hover {
  border-color: var(--laranja);
  transform: translateY(-3px);
  background: var(--tinta-2);
}
.orgao-sigla {
  font-family: var(--display);
  font-weight: 800;
  font-size: 32px;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--laranja);
  font-variation-settings: "opsz" 48;
}
.orgao-sigla-menor {
  font-size: 22px;
}
.orgao-nome {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--branco);
  margin-top: 4px;
}
.orgao-txt {
  font-size: 13px;
  line-height: 1.5;
  color: var(--cinza);
  flex: 1;
  margin-top: 2px;
}
.orgao-ir {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cinza);
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 10px;
  transition:
    color 0.25s,
    gap 0.25s;
}
.orgao:hover .orgao-ir {
  color: var(--laranja);
  gap: 11px;
}

/* estrutura */
.estrutura {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
}
.lista-check {
  list-style: none;
  margin-bottom: 26px;
  display: grid;
  gap: 12px;
}
.lista-check li {
  position: relative;
  padding-left: 30px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--branco);
}
.lista-check li::before {
  content: "\f058";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  position: absolute;
  left: 0;
  top: 1px;
  color: var(--laranja);
  font-size: 15px;
}

/* estrutura — bloco da equipe, substitui a foto ao lado do texto por um
   card ilustrado com ícones dos profissionais */
.equipe-card {
  border: 1px solid var(--linha);
  border-radius: 8px;
  padding: clamp(24px, 3vw, 34px);
  background: linear-gradient(180deg, rgba(11, 59, 125, 0.14), transparent 60%);
}
.equipe-texto {
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--cinza);
  margin-bottom: 24px;
}
.equipe-texto strong {
  color: var(--branco);
  font-weight: 600;
}
.equipe-grade {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.equipe-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 16px;
  border-radius: 6px;
  background: var(--tinta-3);
  border: 1px solid var(--linha);
  font-family: var(--mono);
  font-size: 11.5px;
  letter-spacing: 0.02em;
  color: var(--branco);
  transition:
    border-color 0.25s,
    transform 0.25s,
    background 0.25s;
}
.equipe-item:hover {
  border-color: var(--laranja);
  transform: translateY(-3px);
  background: var(--tinta-2);
}
.equipe-ic {
  width: 40px;
  height: 40px;
  border-radius: 5px;
  background: rgba(11, 59, 125, 0.9);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 17px;
  border: 1px solid rgba(239, 244, 249, 0.14);
  transition: background 0.3s;
}
.equipe-item:hover .equipe-ic {
  background: var(--laranja);
}

/* parceiros — logos dos parceiros são coloridas sobre fundo claro.
   Invertemos para elas não virarem manchas brancas no escuro. */
.parceiros-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: clamp(16px, 3vw, 34px);
  align-items: center;
}
.parceiro {
  display: grid;
  place-items: center;
  padding: 14px;
  border-radius: 10px;
  opacity: 0.8;
  border: 1px solid #f2f2f2;
}

.parceiro img {
  max-width: 100%;
  height: auto;

  /* Branco */
  filter: grayscale(1) brightness(0) invert(1);

  /* Aumenta somente a imagem */
  transition:
    filter 0.35s ease,
    transform 0.35s ease,
    opacity 0.35s ease;
}

.parceiro:hover img {
  /* Volta à cor original */
  filter: none;

  /* Aumenta somente a imagem */
  transform: scale(1.08);

  opacity: 1;
}

/* depoimentos */
.depo-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
}
.depo {
  background: var(--tinta-3);
  border: 1px solid var(--linha);
  border-radius: 4px;
  padding: 26px 24px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.depo-estrelas {
  color: var(--laranja);
  letter-spacing: 0.14em;
  font-size: 14px;
}
.depo blockquote {
  font-size: 15px;
  line-height: 1.62;
  color: rgba(239, 244, 249, 0.88);
  flex: 1;
}
.depo figcaption {
  display: flex;
  align-items: center;
  gap: 11px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cian);
  border-top: 1px solid var(--linha);
  padding-top: 14px;
}
.depo figcaption img {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  object-fit: cover;
}

/* ------------------ CHAMADA EM VÍDEO (seção #contato) ------------------
   Mesmo mecanismo do palco do topo: bloco alto + sticky. O trecho é curto
   de propósito: prender o visitante logo antes do contato seria o oposto
   do que a seção quer. */
.rodape-wrap {
  position: relative;
  height: 290vh;
}
.rodape-palco {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: var(--tinta);
  display: grid;
  place-items: center;
}
.rodape-cam {
  position: absolute;
  inset: 0;
}
.rodape-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Faixas sólidas em cima/embaixo só pra costurar com as seções escuras
   vizinhas — antes elas comiam quase metade do quadro (26%/60%) e o
   vídeo quase não aparecia. Encolhidas pra 10%/82%: o vídeo ocupa a
   maior parte do quadro, escurecido só o necessário pro texto por cima
   continuar legível. */
.rodape-veu {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(
      180deg,
      var(--tinta) 0%,
      rgba(5, 9, 15, 0.48) 10%,
      rgba(5, 9, 15, 0.56) 82%,
      var(--tinta) 100%
    ),
    radial-gradient(
      74% 60% at 50% 48%,
      rgba(5, 9, 15, 0.56) 0%,
      rgba(5, 9, 15, 0.4) 55%,
      rgba(5, 9, 15, 0.65) 100%
    );
}

.rodape-conteudo {
  position: relative;
  z-index: 2;
  text-align: center;
  padding: 0 var(--gut);
  max-width: 760px;
}
.rodape-titulo {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(32px, 5.4vw, 62px);
  font-variation-settings: "opsz" 96;
  line-height: 1.02;
  letter-spacing: -0.032em;
  color: var(--branco);
  margin: 6px 0 14px;
  text-shadow: 0 2px 40px rgba(5, 9, 15, 0.9);
}
.rodape-titulo em {
  font-style: normal;
  color: var(--laranja);
}
.rodape-texto {
  font-size: clamp(15px, 1.8vw, 18px);
  line-height: 1.6;
  color: rgba(239, 244, 249, 0.82);
  max-width: 44ch;
  margin: 0 auto;
  text-shadow: 0 2px 20px rgba(5, 9, 15, 0.85);
}

/* botões no mesmo desenho do menu do WhatsApp flutuante */
.rodape-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  margin-top: 30px;
}
.linha {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 12px 22px 12px 13px;
  border-radius: 999px;
  background: rgba(10, 17, 26, 0.9);
  backdrop-filter: blur(12px);
  border: 1px solid var(--linha);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.4);
  transition:
    transform 0.22s cubic-bezier(0.22, 0.7, 0.3, 1),
    border-color 0.22s,
    background 0.22s;
}
.linha:hover {
  transform: translateY(-3px);
  border-color: #25d366;
}
.linha-ic {
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 21px;
  background: rgba(37, 211, 102, 0.16);
  color: #3ee87d;
}
.linha-txt {
  display: grid;
  text-align: left;
  line-height: 1.25;
}
.linha-txt b {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cinza);
  font-weight: 500;
}
.linha-txt i {
  font-style: normal;
  font-family: var(--display);
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -0.012em;
  color: var(--branco);
}
.linha-urg .linha-ic {
  background: rgba(242, 117, 27, 0.2);
  color: var(--laranja);
}
.linha-urg .linha-txt b {
  color: var(--laranja);
}
.linha-urg:hover {
  border-color: var(--laranja);
}

/* ---------------------------------------------------------------
   RODAPÉ — rodape.php traz fundo branco e texto #333 embutidos no
   próprio arquivo. Em vez de editá-lo, sobrescrevemos aqui, para o
   arquivo continuar intocado e reaproveitável.
   --------------------------------------------------------------- */
/* rodape.php usa o grid do Bootstrap 3 (container, row, col-*). Em vez de
   carregar a biblioteca inteira só por causa dele, reimplantamos aqui as
   poucas classes usadas, com escopo em #rodape para não vazar. */
#rodape .container-fluid {
  width: 100%;
  padding: 0;
}
#rodape .container {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 var(--gut);
}
#rodape .row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: clamp(24px, 4vw, 40px);
  align-items: start;
  margin: 0 !important;
}
#rodape [class*="col-"] {
  min-width: 0;
  padding: 0;
}
#rodape .text-center {
  text-align: center;
}
#rodape .hidden-xs {
  display: block;
}
#rodape .a_rodape {
  width: auto !important;
  max-width: 186px;
  height: auto;
  margin: 0 0 18px 0 !important;
}
#rodape .social-icons1 {
  display: flex;
  gap: 12px;
  justify-content: center;
  list-style: none;
  padding: 0;
  margin-top: 14px;
}
#rodape .social-icons1 li a {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--tinta-3);
  border: 1px solid var(--linha);
  color: var(--cian) !important;
  font-size: 16px;
  transition:
    background 0.2s,
    color 0.2s;
}
#rodape .social-icons1 li a:hover {
  background: var(--laranja);
  color: #fff !important;
}

#rodape {
  background: var(--tinta) !important;
  color: var(--cinza) !important;
  border-top: 1px solid var(--linha);
  margin-top: 0 !important;
  padding-top: 48px !important;
}
#rodape h3,
#rodape h4,
#rodape h5,
#rodape h6 {
  color: var(--branco) !important;
}
#rodape h4 strong {
  font-family: var(--display);
  letter-spacing: 0.02em;
}
#rodape ul li {
  color: var(--cinza) !important;
}
#rodape ul li a {
  color: var(--cinza) !important;
  transition: color 0.2s;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
#rodape ul li a:hover {
  color: var(--laranja) !important;
}
#rodape h5 {
  color: var(--cinza) !important;
  text-align: left;
  line-height: 1.6 !important;
  font-size: 14px !important;
  font-weight: 400 !important;
}
/* rodape.php aponta para img/logo_iguassu2.webp, que é escura. Inverter por
   filtro apagaria a estrela dentro do losango, então trocamos a imagem pela
   versão clara sem tocar no arquivo PHP. Se quiser garantia total em
   navegador antigo, troque o src direto no rodape.php. */
#rodape img.a_rodape {
  content: url("../img/logo_iguassu2.webp");
}
#rodape .circulo_ic1 {
  background: var(--tinta-3) !important;
  border: 1px solid var(--linha);
}
#rodape .circulo_ic1 i {
  color: var(--cian) !important;
}
#rodape .circulo_ic1:hover {
  background: var(--laranja) !important;
  border-color: var(--laranja);
}
#rodape img[alt="Insite"] {
  filter: brightness(0) invert(1);
  opacity: 0.5;
}
#rodape h6 a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 6px;
}

/* ---------------------------- CELULAR ---------------------------- */
@media (max-width: 900px) {
  .estrutura {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 900px) {
  .topo-marca img {
    height: 46px;
  }
  .topo-fixo .topo-marca img {
    height: 40px;
  }
}

@media (max-width: 760px) {
  /* --- CABEÇALHO --- Os idiomas migram para o painel do menu, onde já
     existem. O botão vira só o ícone: o texto ocupava metade da barra. */
  .topo {
    padding: 10px var(--gut);
  }
  .topo > .topo-acoes > .idiomas {
    display: none;
  }
  .topo-marca img {
    height: 42px;
  }
  .topo-fixo .topo-marca img {
    height: 38px;
  }
  .topo-acoes {
    gap: 10px;
  }
  .btn-chamar {
    padding: 0;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    justify-content: center;
    gap: 0;
  }
  .btn-chamar .rotulo {
    display: none;
  }
  /* sem o ponto verde no celular: o botão já é pequeno e ele virava ruído */
  .btn-chamar .pulso {
    display: none;
  }
  .btn-chamar i {
    font-size: 19px;
  }
  .topo-menu {
    width: 44px;
    height: 44px;
  }

  /* --- PALCO --- O celular usa um vídeo próprio em 9:16
     (assets/palco-mobile.mp4): a faixa nítida fica no terço superior e o
     resto é extensão desfocada do próprio quadro. Sem corte lateral, para
     aparecer mais do cenário atrás da ambulância. Como o arquivo já nasce
     vertical, vale "cover" e a tela é preenchida por inteiro. */
  .palco-video,
  .palco-inicial,
  .palco-final {
    object-fit: cover;
    object-position: 50% 50%;
  }
  /* A faixa nítida vai de 15% a 47% da altura. O véu antigo começava a
     escurecer em 40% e chegava a 90% em 66%: a rampa caía bem na borda da
     faixa e virava uma sombra atravessando na frente da van. Agora ela só
     começa depois da faixa e sobe devagar. */
  .palco-veu {
    background: linear-gradient(
      180deg,
      rgba(5, 9, 15, 0.55) 0%,
      rgba(5, 9, 15, 0.08) 13%,
      rgba(5, 9, 15, 0.04) 50%,
      rgba(5, 9, 15, 0.3) 62%,
      rgba(5, 9, 15, 0.78) 78%,
      var(--tinta) 96%
    );
  }
  .palco-grao {
    opacity: 0.03;
  }

  .hud-sd,
  .c-sd,
  .c-id,
  .c-ie {
    display: none;
  }
  .hud-se {
    top: 76px;
  }
  .c-se {
    top: 66px;
  }
  /* centralizados: à esquerda ficavam desalinhados da legenda, que é à direita */
  .hud-id {
    bottom: 25svh;
    left: var(--gut);
    right: var(--gut);
    justify-items: center;
    text-align: center;
  }
  .hud-id .hud-lin {
    justify-content: center;
  }

  .legendas {
    bottom: 33svh;
  }
  .leg-titulo {
    max-width: 14ch;
    font-size: clamp(30px, 8.6vw, 44px);
  }
  .leg-texto {
    font-size: 15.5px;
    max-width: 34ch;
    margin-top: 12px;
  }
  .leg-chapeu {
    margin-bottom: 10px;
  }
  .leg-chapeu::before {
    width: 44px;
  }

  /* a área que sobrava vazia agora carrega os números */
  /* o botão flutuante do WhatsApp ocupa o canto inferior direito, daí a
     folga extra à direita para o último número não ficar atrás dele */
  .palco-carga {
    bottom: auto;
    top: 56%;
  }
  .dica {
    bottom: 7svh;
    padding: 7px 7px 7px 14px;
  }
  .dica-txt {
    font-size: 9.5px;
    letter-spacing: 0.2em;
  }
  .dica-seta {
    width: 24px;
    height: 24px;
  }
  .palco-numeros {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
    position: absolute;
    left: var(--gut);
    right: var(--gut);
    bottom: 16svh;
    padding-top: 16px;
    border-top: 1px solid var(--linha);
    text-align: center;
  }
  .palco-numeros b {
    display: block;
    font-family: var(--display);
    font-weight: 800;
    font-size: clamp(17px, 5vw, 22px);
    letter-spacing: -0.02em;
    color: var(--laranja);
    font-variation-settings: "opsz" 32;
  }
  .palco-numeros span {
    font-family: var(--mono);
    font-size: 9px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--cinza);
    display: block;
    margin-top: 2px;
  }

  .num {
    border-left: 0;
  }
  .zap {
    right: 14px;
    bottom: 14px;
  }
  .zap-bt {
    width: 54px;
    height: 54px;
    font-size: 25px;
  }
  .zap-op {
    padding: 8px 8px 8px 14px;
  }
  .zap-op-txt i {
    font-size: 14px;
  }
  .menu-lista a {
    gap: 12px;
  }
  .menu-lista a i {
    width: 2.1em;
    font-size: 10px;
  }
  .menu-pe {
    gap: 6px 18px;
    font-size: 11px;
  }
  .idiomas button {
    min-height: 44px;
    padding: 0 16px;
  }
  .menu-pe .idiomas {
    margin-left: 0;
  }
}

/* ---------------------------- LINHA DO TEMPO ----------------------------
   Eixo horizontal no meio, cards alternando acima e abaixo. Cada marco é
   uma grade de três faixas: conteúdo em cima, eixo no centro, conteúdo
   embaixo. Como todos têm a mesma altura, o eixo cai sempre na mesma linha
   e a régua atravessa reta. */
.tl {
  position: relative;
  margin-top: 6px;
}
.tl-trilho {
  display: flex;
  gap: clamp(16px, 2.4vw, 30px);
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: 0 var(--gut) 6px;
  scroll-padding-left: var(--gut);
  position: relative;
  min-height: clamp(500px, 44vw, 640px);
  align-items: stretch;
}
.tl-trilho::-webkit-scrollbar {
  display: none;
}
.tl-trilho.arrastando {
  cursor: grabbing;
  scroll-snap-type: none;
}
.tl-trilho.arrastando .marco-foto {
  pointer-events: none;
}

/* régua: linha contínua no centro, com marcas finas ao longo dela */
.tl-regua {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 0;
  pointer-events: none;
}
.tl-regua::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 2px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(242, 117, 27, 0.55) 3%,
    rgba(242, 117, 27, 0.55) 97%,
    transparent
  );
}
.tl-regua::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -4px;
  height: 10px;
  background: repeating-linear-gradient(
    90deg,
    var(--linha) 0 1px,
    transparent 1px 26px
  );
  opacity: 0.6;
}

.marco {
  flex: 0 0 clamp(238px, 24vw, 286px);
  scroll-snap-align: start;
  position: relative;
  display: grid;
  grid-template-rows: 1fr auto 1fr;
}

/* Alternância. nth-of-type e não nth-child: a régua é o primeiro filho do
   trilho e deslocaria a contagem. A ordem interna nunca inverte — foto,
   título, texto — porque ler texto antes do título fica estranho. */
.marco:nth-of-type(odd) .marco-conteudo {
  grid-row: 1;
  align-self: end;
  padding-bottom: 18px;
}
.marco:nth-of-type(even) .marco-conteudo {
  grid-row: 3;
  align-self: start;
  padding-top: 38px;
}

.marco-eixo {
  grid-row: 2;
  display: grid;
  justify-items: start;
  align-content: center;
  position: relative;
  height: 0;
}
.marco-haste {
  position: absolute;
  left: 5px;
  width: 1px;
  background: rgba(242, 117, 27, 0.4);
}
.marco:nth-of-type(odd) .marco-haste {
  bottom: 6px;
  height: 16px;
}
.marco:nth-of-type(even) .marco-haste {
  top: 6px;
  height: 22px;
}
.marco-pino {
  position: absolute;
  left: 0;
  top: -1.5px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--tinta-2);
  border: 2px solid var(--laranja);
  box-shadow:
    0 0 0 5px var(--tinta-2),
    0 0 12px rgba(242, 117, 27, 0.5);
}
.marco-ano {
  position: absolute;
  left: 22px;
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(19px, 2vw, 24px);
  letter-spacing: -0.02em;
  color: var(--laranja);
  line-height: 1;
  font-variation-settings: "opsz" 32;
  white-space: nowrap;
}
/* o ano fica sempre do mesmo lado da linha, para a leitura não pular */
.marco-ano {
  top: -9px;
}

.marco-conteudo {
  min-width: 0;
}
.marco-foto {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 3/2;
  padding: 0;
  border: 0;
  border-radius: 5px;
  overflow: hidden;
  cursor: pointer;
  background: var(--tinta-3);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.42);
  transition: transform 0.25s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.marco-foto:hover {
  transform: translateY(-4px);
}
.marco-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s;
}
.marco-foto:hover img {
  transform: scale(1.05);
}
.marco-foto.sem-foto {
  background: var(--tinta-3);
}
.marco-foto.sem-foto img {
  opacity: 0;
}

.marco-lupa {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background: linear-gradient(
    180deg,
    rgba(5, 9, 15, 0) 40%,
    rgba(5, 9, 15, 0.55)
  );
  opacity: 0;
  transition: opacity 0.25s;
}
.marco-lupa svg {
  width: 26px;
  height: 26px;
  transform: translateY(6px);
  transition: transform 0.3s;
}
.marco-foto:hover .marco-lupa {
  opacity: 1;
}
.marco-foto:hover .marco-lupa svg {
  transform: none;
}
.marco-qtd {
  position: absolute;
  right: 9px;
  bottom: 9px;
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(5, 9, 15, 0.72);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.16);
}

.marco-titulo {
  font-family: var(--display);
  font-weight: 800;
  font-size: 17px;
  letter-spacing: -0.015em;
  color: var(--branco);
  margin: 14px 0 6px;
}
.marco-texto {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--cinza);
}

/* setas compartilhadas pela linha do tempo e pelos carrosséis */
.tl-setas,
.car-setas {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  max-width: 1180px;
  margin: 20px auto 0;
  padding: 0 var(--gut);
}
.tl-seta {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  display: grid;
  place-items: center;
  background: transparent;
  border: 1px solid var(--linha);
  color: var(--branco);
  transition:
    border-color 0.2s,
    background 0.2s,
    opacity 0.2s;
}
.tl-seta:hover {
  border-color: var(--laranja);
  background: rgba(242, 117, 27, 0.12);
}
.tl-seta svg {
  width: 18px;
  height: 18px;
}
.tl-seta.inativa {
  opacity: 0.28;
  pointer-events: none;
}

/* -------------------- CARROSSÉIS (parceiros e depoimentos) --------------------
   Valem em qualquer largura agora: no desktop o mouse arrasta ou usa as
   setas; no celular o dedo arrasta. */
.parceiros-grade,
.depo-grade {
  display: flex;
  grid-template-columns: none;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  gap: clamp(14px, 2vw, 22px);
  padding: 2px var(--gut) 6px;
  margin: 0 calc(var(--gut) * -1);
  scroll-padding-left: var(--gut);
}
.parceiros-grade::-webkit-scrollbar,
.depo-grade::-webkit-scrollbar {
  display: none;
}
.parceiros-grade.arrastando,
.depo-grade.arrastando {
  cursor: grabbing;
  scroll-snap-type: none;
}
.parceiros-grade.arrastando *,
.depo-grade.arrastando * {
  pointer-events: none;
}
.parceiro {
  flex: 0 0 clamp(140px, 16vw, 190px);
  scroll-snap-align: center;
}
.depo {
  flex: 0 0 clamp(280px, 30vw, 360px);
  scroll-snap-align: start;
}

.carrossel-pontos {
  display: flex;
  justify-content: center;
  gap: 7px;
  margin-top: 20px;
}
.carrossel-pontos b {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--linha);
  transition:
    background 0.25s,
    width 0.25s;
}
.carrossel-pontos b.on {
  width: 20px;
  border-radius: 3px;
  background: var(--laranja);
}

/* ------------------------------ GALERIA ------------------------------ */
.gal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  grid-template-rows: auto 1fr auto auto;
  gap: 12px;
  padding: 18px var(--gut) 22px;
  background: rgba(3, 6, 11, 0.96);
  backdrop-filter: blur(16px);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.28s,
    visibility 0.28s;
}
.gal.on {
  opacity: 1;
  visibility: visible;
}
body.gal-aberta {
  overflow: hidden;
}

.gal-titulo {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cian);
  text-align: center;
  padding-right: 46px;
}
.gal-palco {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 0;
}
.gal-img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: 4px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.6);
  opacity: 0;
  transform: scale(0.985);
  transition:
    opacity 0.3s,
    transform 0.3s;
}
.gal-img.pronta {
  opacity: 1;
  transform: none;
}
.gal-legenda {
  text-align: center;
  font-size: 14px;
  color: rgba(239, 244, 249, 0.8);
  min-height: 20px;
}
/* o contador estava sobreposto à legenda; agora é uma linha própria */
.gal-conta {
  text-align: center;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--cinza);
  opacity: 0.75;
}

.gal-fechar {
  position: absolute;
  top: 14px;
  right: var(--gut);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  display: grid;
  place-items: center;
  background: rgba(239, 244, 249, 0.08);
  border: 1px solid var(--linha);
  color: var(--branco);
  transition:
    background 0.2s,
    border-color 0.2s;
}
.gal-fechar:hover {
  background: rgba(242, 117, 27, 0.18);
  border-color: var(--laranja);
}
.gal-fechar svg {
  width: 19px;
  height: 19px;
}

.gal-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  cursor: pointer;
  display: grid;
  place-items: center;
  background: rgba(239, 244, 249, 0.08);
  border: 1px solid var(--linha);
  color: var(--branco);
  transition:
    background 0.2s,
    border-color 0.2s;
}
.gal-nav:hover {
  background: rgba(242, 117, 27, 0.18);
  border-color: var(--laranja);
}
.gal-nav svg {
  width: 20px;
  height: 20px;
}
.gal-ant {
  left: var(--gut);
}
.gal-prox {
  right: var(--gut);
}

@media (max-width: 760px) {
  .marco {
    flex: 0 0 78%;
  }
  .tl-setas {
    display: none;
  } /* no celular o dedo já arrasta */
  .marco-lupa {
    opacity: 1;
    background: linear-gradient(
      180deg,
      rgba(5, 9, 15, 0) 55%,
      rgba(5, 9, 15, 0.5)
    );
  }
  .marco-lupa svg {
    transform: none;
    width: 22px;
    height: 22px;
    opacity: 0.85;
  }
  .gal {
    padding: 14px 12px 20px;
  }
  .gal-nav {
    width: 44px;
    height: 44px;
    background: rgba(5, 9, 15, 0.6);
  }
  .gal-ant {
    left: 8px;
  }
  .gal-prox {
    right: 8px;
  }
  .gal-fechar {
    right: 12px;
  }
  .gal-titulo {
    font-size: 10px;
    padding-right: 52px;
  }
}

@media (max-width: 760px) {
  .tl-trilho {
    min-height: clamp(430px, 112vw, 520px);
    gap: 14px;
  }
  .marco {
    flex: 0 0 76%;
  }
  .marco-titulo {
    font-size: 16px;
    margin: 12px 0 5px;
  }
  .marco-texto {
    font-size: 13px;
  }
  .marco-ano {
    font-size: 18px;
    left: 20px;
  }
  .tl-setas {
    display: none;
  }
  .marco-lupa {
    opacity: 1;
    background: linear-gradient(
      180deg,
      rgba(5, 9, 15, 0) 55%,
      rgba(5, 9, 15, 0.5)
    );
  }
  .marco-lupa svg {
    transform: none;
    width: 22px;
    height: 22px;
    opacity: 0.85;
  }
  .parceiro {
    flex: 0 0 40%;
  }
  .depo {
    flex: 0 0 82%;
  }
  .car-setas {
    display: none;
  }
  .gal {
    padding: 14px 12px 20px;
  }
  .gal-nav {
    width: 44px;
    height: 44px;
    background: rgba(5, 9, 15, 0.6);
  }
  .gal-ant {
    left: 8px;
  }
  .gal-prox {
    right: 8px;
  }
  .gal-fechar {
    right: 12px;
  }
  .gal-titulo {
    font-size: 10px;
    padding-right: 52px;
  }
}

@media (max-width: 760px) {
  .servico {
    min-height: 250px;
  }
  .servico-num {
    font-size: 28px;
    top: 12px;
    right: 16px;
  }
  .servico-corpo {
    padding: 20px 18px 18px;
  }
  /* uma coluna: não há card vizinho para alinhar */
  .servico h3,
  .servico p {
    min-height: 0;
  }
  .sobre-grade {
    gap: 30px;
    margin-bottom: 34px;
  }
  .publico-topo {
    gap: 12px;
  }
  .publico-grade {
    grid-template-columns: 1fr;
  }
  .orgao {
    flex-direction: row;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
  }
  .orgao-sigla {
    font-size: 26px;
  }
  .orgao-sigla-menor {
    font-size: 17px;
  }
  .orgao-nome {
    margin-top: 0;
  }
  .orgao-txt {
    flex-basis: 100%;
    margin-top: 0;
  }
  .orgao-ir {
    margin-top: 0;
    margin-left: auto;
  }
  .rodape-wrap {
    height: 230vh;
  }
  .rodape-btns {
    flex-direction: column;
    align-items: stretch;
    margin-top: 24px;
  }
  .linha {
    justify-content: flex-start;
  }
}

@media (max-width: 420px) {
  .leg-titulo {
    font-size: clamp(27px, 8.2vw, 36px);
    max-width: 13ch;
  }
  .leg-texto {
    font-size: 14.5px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .legenda {
    transform: none !important;
  }
  .dica i {
    animation: none;
  }
  .btn:hover {
    transform: none;
  }
}

/* ============================== SERVICOS.PHP ==============================
   Página interna de um serviço — mesmo sistema visual da home (fundo
   escuro, Bricolage nos títulos, laranja/azul de acento), sem o palco de
   vídeo. 96px de padding-top porque o header é fixed e some por trás. */
.servico-topo {
  padding: 96px var(--gut) clamp(40px, 6vw, 64px);
  background: var(--tinta);
  border-bottom: 1px solid var(--linha);
}
.servico-topo-grade {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
}
.servico-topo-grade .lede {
  margin-bottom: 0;
}
.servico-topo .chapeu a {
  color: inherit;
  transition: color 0.2s;
}
.servico-topo .chapeu a:hover {
  color: var(--branco);
}
.servico-topo-ic {
  width: 88px;
  height: 88px;
  flex: none;
  border-radius: 14px;
  background: linear-gradient(
    160deg,
    rgba(11, 59, 125, 0.55),
    rgba(11, 59, 125, 0.12)
  );
  border: 1px solid var(--linha);
  display: grid;
  place-items: center;
  color: var(--branco);
  font-size: 36px;
}

.servico-corpo-grade {
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: clamp(32px, 5vw, 64px);
  align-items: start;
}

/* o corpo do texto vem de um editor rico do CMS, com cor/fonte fixas no
   próprio HTML (herança do template antigo) — sobrescrevemos tudo com
   !important pra render no tema escuro em vez de preto sobre escuro. */
.servico-texto {
  color: var(--cinza);
  font-size: 15.5px;
  line-height: 1.75;
  max-width: 64ch;
}
.servico-texto > *:first-child {
  margin-top: 0;
}
.servico-texto h1,
.servico-texto h2,
.servico-texto h3 {
  font-family: var(--display) !important;
  font-weight: 800 !important;
  color: var(--branco) !important;
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-size: clamp(22px, 2.6vw, 28px) !important;
  margin: 30px 0 14px;
}
.servico-texto p {
  margin: 0 0 16px;
}
.servico-texto strong,
.servico-texto b {
  color: var(--branco) !important;
  font-weight: 700;
}
.servico-texto span {
  color: inherit !important;
  font-family: inherit !important;
  background: none !important;
}
.servico-texto ul,
.servico-texto ol {
  margin: 0 0 18px;
  padding-left: 22px;
}
.servico-texto li {
  margin-bottom: 7px;
}
.servico-texto li::marker {
  color: var(--laranja);
}
.servico-texto a:not(.btn) {
  color: var(--laranja);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.servico-texto img {
  max-width: 100%;
  height: auto;
  border-radius: 6px;
  margin: 22px 0;
}
.servico-texto .btn {
  margin-top: 10px;
}

.servico-lateral {
  position: sticky;
  top: calc(96px + 24px);
  border: 1px solid var(--linha);
  border-radius: 8px;
  padding: clamp(20px, 2.6vw, 28px);
  background: linear-gradient(180deg, rgba(11, 59, 125, 0.08), transparent 60%);
}
.servico-lista-lateral {
  list-style: none;
  display: grid;
  gap: 4px;
  margin-top: 6px;
}
.servico-lista-lateral a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 6px;
  border-radius: 6px;
  color: var(--branco);
  font-size: 14px;
  transition:
    background 0.2s,
    color 0.2s,
    gap 0.2s;
}
.servico-lista-lateral a:hover {
  background: rgba(242, 117, 27, 0.1);
  color: var(--laranja);
  gap: 16px;
}
.servico-lista-lateral a i:last-child {
  font-size: 11px;
  opacity: 0.6;
}
.servico-lateral-ic {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 5px;
  background: rgba(11, 59, 125, 0.9);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}
/* alguns glifos do Font Awesome (people-group, hospital...) não são
   desenhados centralizados dentro do próprio quadrado do glifo — sem
   isto, place-items:center centraliza a caixa do ícone, não o desenho,
   e ele fica puxado pro canto superior esquerdo do selo. */
.servico-lateral-ic i {
  display: block;
  line-height: 1;
  text-align: center;
}

.servico-cta-grade {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
}
.servico-cta-grade .titulo-secao {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .servico-corpo-grade {
    grid-template-columns: 1fr;
  }
  .servico-lateral {
    position: static;
  }
}

@media (max-width: 640px) {
  .servico-topo-ic {
    width: 64px;
    height: 64px;
    font-size: 26px;
    border-radius: 10px;
  }
}
