/* =========================================================================
   Hero v2 — uma tela cheia (100vh), composição centralizada, dois
   indicadores e a esteira de logos no rodapé do próprio hero.

   Decisões de tipografia vindas da auditoria:
   - o título usa clamp travado por LARGURA e por ALTURA (vh), para nunca
     estourar a tela em monitores baixos nem em celular;
   - entrelinha 1.06 (antes 0.99, que cortava a cedilha e o til);
   - letter-spacing -.025em (antes -.055em herdado do h1, fechado demais);
   - o subtítulo fica entre 45 e 65 caracteres por linha;
   - "Ver projetos" agora tem 44px de altura de toque (antes 24px).
   ========================================================================= */

.hero--v2 {
  position: relative;
  height: 100vh;          /* fallback */
  height: 100svh;         /* evita o pulo da barra do navegador no celular */
  min-height: 600px;      /* piso para telas muito baixas */
  display: flex;
  align-items: stretch;
  padding: clamp(84px, 11vh, 128px) 0 clamp(22px, 3.2vh, 44px);
  overflow: hidden;
}
.hero--v2 .hero-inner--centered {
  position: relative; z-index: 2;
  width: var(--wide);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: clamp(26px, 4vh, 64px);
  min-height: 0;
}
.hero--v2 .hero-copy {
  display: grid;
  justify-items: center;
  text-align: center;
  gap: clamp(14px, 2vh, 24px);
  max-width: 900px;
  margin-inline: auto;
  margin-block: auto;
  min-height: 0;
}

/* ------------------------------------------------------------ badge */
.hero-badge {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 15px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .16);
  background: rgba(255, 255, 255, .07);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  font-size: clamp(11px, 1.05vw, 12.5px);
  letter-spacing: .01em;
  color: rgba(255, 255, 255, .85);
}
.hero-badge i { font-style: normal; color: var(--accent-light); font-size: .92em; }

/* ------------------------------------------------------------ título */
.hero--v2 .hero-title {
  display: grid;
  gap: clamp(0px, .3vh, 6px);
  margin: 0;
  /* trava por largura E por altura: em 900px de altura dá ~52px,
     em 1080px dá ~64px, e nunca passa de 72px */
  font-size: clamp(31px, min(6vw, 7.6vh), 72px);
  line-height: 1.06;
  letter-spacing: -.025em;
  color: #fff;
  text-wrap: balance;
}
.hero-line { display: block; }
.hero-line--bold { font-weight: 700; }
.hero-line--italic { font-weight: 300; font-style: italic; }
.hero-line em { font-weight: 300; font-style: italic; }
.hero-mark {
  position: relative;
  font-weight: 700;
  color: var(--accent-light);
  padding-bottom: .05em;
}
.hero-mark::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: .03em;
  height: max(2px, .042em);
  background: var(--accent-light);
  border-radius: 2px;
  transform: scaleX(0); transform-origin: left;
}
body.splash-done .hero-mark::after { animation: hero-mark-in .8s .62s var(--ease) forwards; }
@keyframes hero-mark-in { to { transform: scaleX(1); } }

/* --------------------------------------------------------- subtítulo */
.hero--v2 .hero-sub {
  max-width: 58ch;
  font-size: clamp(13.5px, 1.3vw, 16px);
  line-height: 1.6;
  color: rgba(255, 255, 255, .7);
}
.hero--v2 .hero-sub span { color: rgba(255, 255, 255, .94); font-weight: 500; }

/* ------------------------------------------------------------- ações */
.hero--v2 .hero-actions {
  display: flex; align-items: center; justify-content: center;
  flex-wrap: wrap; gap: 10px 22px;
  margin-top: clamp(2px, .8vh, 10px);
}
.hero--v2 .btn-primary {
  background: var(--accent); color: #fff; border: 0;
  padding: 0 30px; height: 54px; border-radius: 999px;
  font-size: 15px; font-weight: 500;
  box-shadow: 0 16px 44px rgba(66, 88, 252, .38);
}
.hero--v2 .btn-primary:hover { background: var(--accent-strong); }
/* alvo de toque de 44px sem engordar o traço visual: a linha é um ::after */
.hero-link {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 0 4px;
  font-size: 14px; color: rgba(255, 255, 255, .66);
  transition: color .3s var(--ease);
}
.hero-link::after {
  content: ""; position: absolute; left: 4px; right: 4px; bottom: 12px;
  height: 1px; background: rgba(255, 255, 255, .26);
  transition: background .3s var(--ease);
}
.hero-link:hover { color: #fff; }
.hero-link:hover::after { background: rgba(255, 255, 255, .7); }

/* ------------------------------------------------------ prova social */
.hero-proof {
  display: flex; align-items: center;
  gap: clamp(18px, 2.6vw, 40px);
  width: 100%; min-width: 0;
  padding-top: clamp(14px, 2.2vh, 26px);
  border-top: 1px solid rgba(255, 255, 255, .1);
}
.hero-proof-stats {
  flex: 0 0 auto;
  display: flex; align-items: flex-start;
  gap: clamp(20px, 2.4vw, 38px);
}
.hero-stat strong {
  display: block;
  font-size: clamp(24px, 2.6vw, 36px);
  font-weight: 500; letter-spacing: -.03em; color: #fff;
  line-height: 1;
}
.hero-stat span {
  display: block; margin-top: 6px;
  font-size: clamp(10.5px, .82vw, 12px); line-height: 1.35;
  /* .58 em vez de .5: sobe o contraste de 5.4:1 para ~6.9:1 */
  color: rgba(255, 255, 255, .58);
  white-space: nowrap;
}
.hero-proof-rule {
  flex: 0 0 auto; width: 1px; align-self: stretch; min-height: 44px;
  background: rgba(255, 255, 255, .14);
}
/* a esteira fica presa à largura disponível: quem cresce é a <ul> lá
   dentro, nunca este contêiner — senão o hero inteiro estoura */
.hero-proof-logos {
  flex: 1 1 auto;
  min-width: 0; max-width: 100%;
  overflow: hidden;
  display: flex; gap: clamp(30px, 4vw, 58px);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 5%, #000 92%, transparent);
}
.hero-logos-list {
  display: flex; align-items: center;
  gap: clamp(30px, 4vw, 58px);
  margin: 0; padding: 0; list-style: none; flex: 0 0 auto;
  animation: hero-logos-scroll 52s linear infinite;
}
.hero-proof-logos:hover .hero-logos-list { animation-play-state: paused; }
.hero-logos-list li { flex: 0 0 auto; display: grid; place-items: center; }
.hero-logos-list img {
  display: block;
  height: clamp(18px, 2vw, 26px); width: auto; max-width: 148px;
  object-fit: contain;
  /* os arquivos são pretos com alfa: invertidos viram brancos no escuro */
  filter: invert(1);
  opacity: .5;
  transition: opacity .35s var(--ease);
}
.hero-logos-list li:hover img { opacity: 1; }
@keyframes hero-logos-scroll { to { transform: translateX(calc(-100% - clamp(30px, 4vw, 58px))); } }

/* ============================================ animação leve do texto
   Entrada escalonada: cada elemento carrega --i e entra 70ms depois do
   anterior. Só começa quando o splash sai, para o texto não animar
   escondido atrás dele. */
.hero-anim { opacity: 0; }
body.splash-done .hero-anim {
  animation: hero-in .72s cubic-bezier(.22, 1, .36, 1) both;
  animation-delay: calc(var(--i, 0) * 70ms);
}
@keyframes hero-in {
  from { opacity: 0; transform: translate3d(0, 14px, 0); filter: blur(6px); }
  to   { opacity: 1; transform: none; filter: blur(0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-anim,
  body.splash-done .hero-anim { animation: none; opacity: 1; transform: none; filter: none; }
  .hero-mark::after,
  body.splash-done .hero-mark::after { animation: none; transform: scaleX(1); }
  .hero-logos-list { animation: none; }
  .hero-logos-list:last-child { display: none; }
  .hero-proof-logos { flex-wrap: wrap; width: 100%; }
}

/* ------------------------------------------------------- responsivo */
@media (max-width: 900px) {
  .hero-proof { flex-direction: column; align-items: flex-start; gap: 18px; }
  .hero-proof-rule { display: none; }
  .hero-proof-logos { width: 100%; }
}
@media (max-width: 620px) {
  .hero--v2 { padding: 92px 0 26px; }
  .hero--v2 .hero-inner--centered { gap: 22px; }
  /* no celular o gargalo é altura: título menor e entrelinha um pouco
     maior, para caber 4 linhas sem cortar acentos */
  .hero--v2 .hero-title { font-size: clamp(27px, min(8.4vw, 5.4vh), 40px); line-height: 1.1; }
  .hero--v2 .hero-sub { font-size: 13.5px; line-height: 1.55; max-width: none; }
  .hero--v2 .hero-actions { gap: 4px 16px; }
  .hero--v2 .btn-primary { height: 50px; padding: 0 26px; }
  .hero-proof { gap: 14px; padding-top: 14px; }
  .hero-proof-stats { gap: 26px; }
  /* no celular os indicadores viram uma linha so: sobe o rotulo para fora
     da area coberta pelo balao de atendimento flutuante */
  .hero-stat { display: flex; align-items: baseline; gap: 7px; }
  .hero-stat strong { font-size: 24px; }
  .hero-stat span { margin-top: 0; font-size: 11px; white-space: normal; }
  .hero-proof-stats { flex-direction: column; gap: 8px; }
}
/* telas baixas e deitadas: encolhe tudo para continuar cabendo */
@media (max-height: 680px) and (min-width: 621px) {
  .hero--v2 { padding: 76px 0 20px; }
  .hero--v2 .hero-inner--centered { gap: 20px; }
  .hero--v2 .hero-copy { gap: 12px; }
  .hero--v2 .hero-title { line-height: 1.04; }
  .hero--v2 .btn-primary { height: 48px; }
}
