/* ============================================================
   POWERBIZZ.AI · PROTÓTIPO 2026
   Design system: precisão Apple, linguagem B2B C-level
   Paleta herdada do powerbizz.ai atual (extraída do CSS em produção)
   ============================================================ */

:root{
  /* marca (do site atual) */
  --ink:        #04071d;   /* fundo institucional */
  --ink-soft:   #0a0e26;
  --ink-line:   #1b2040;
  --paper:      #f1eeea;   /* claro da apresentação comercial */
  --paper-2:    #e6e2dc;
  --magenta:    #eb5cff;
  --magenta-d:  #c000db;
  --violet:     #a855f7;
  --violet-d:   #8a2be2;
  --text-hi:    #e4ecff;
  --text-dim:   #a3a8c6;
  --text-ink:   #12142a;
  --text-ink-2: #55596f;

  --grad: linear-gradient(100deg, var(--magenta) 0%, var(--violet) 55%, #6c5cff 100%);

  --nav-h: 52px;
  --r: 22px;
  --maxw: 1340px;

  --ease: cubic-bezier(.22,.61,.36,1);
  --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
/* Rede de segurança contra arrasto horizontal. Só o <body> com overflow-x
   não segura: quem rola na horizontal no mobile é o <html>. Usamos `clip`
   (e não `hidden`) porque `hidden` transformaria o elemento em container de
   rolagem e quebraria o `position:sticky` da nav. Navegadores antigos
   ignoram `clip` e caem no `hidden` declarado antes.
   Isto é rede, não conserto: as causas reais estão corrigidas abaixo
   (.layer, .nav-in, .feats-2col). */
html{overflow-x:hidden; overflow-x:clip}
body{
  margin:0; background:var(--ink); color:var(--text-hi);
  font-family:var(--font); font-weight:400;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
  overflow-x:clip;
}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
button{font-family:inherit}

/* ---------- tipografia base (escala Apple: pouco texto, muito peso) ---------- */
.display{
  font-size:clamp(2.6rem, 6.4vw, 5.4rem);
  line-height:1.04; letter-spacing:-.035em; font-weight:600; margin:0;
}
.h1{font-size:clamp(2.1rem, 4.6vw, 3.6rem); line-height:1.08; letter-spacing:-.03em; font-weight:600; margin:0}
.h2{font-size:clamp(1.5rem, 2.6vw, 2.15rem); line-height:1.14; letter-spacing:-.022em; font-weight:600; margin:0}
.h3{font-size:1.12rem; line-height:1.3; letter-spacing:-.012em; font-weight:600; margin:0}
.lede{font-size:clamp(1.05rem, 1.5vw, 1.32rem); line-height:1.5; letter-spacing:-.01em; font-weight:400; color:var(--text-dim); margin:0}
.body{font-size:.98rem; line-height:1.62; color:var(--text-dim); margin:0}
.kicker{
  font-size:.72rem; font-weight:600; letter-spacing:.22em; text-transform:uppercase;
  color:var(--magenta); margin:0 0 18px;
}
/* Kicker graúdo, quase do tamanho de um h2, para a seção onde ele carrega a
   pergunta em si e não só rotula o bloco ("Quanto sua operação gasta hoje").
   O letter-spacing cai de .22em para .08em de propósito: o valor original
   foi calibrado para .72rem, e mantido a 1.6rem cada letra afastaria tanto
   que a linha viraria uma régua e quebraria cedo demais.
   O respiro em cima e embaixo é o que separa: nesse tamanho ele deixa de
   ser etiqueta colada no título e passa a ser uma linha própria. */
.kicker-lg{
  /* ~85% do .h2 (que vai a 2.15rem): grande o bastante para segurar a linha
     sozinho, sem competir com o título logo abaixo */
  font-size:clamp(1.2rem, 2.2vw, 1.82rem);
  letter-spacing:.08em; line-height:1.25;
  margin:clamp(16px, 2.6vw, 34px) 0 clamp(20px, 2.2vw, 28px);
}
.grad-text{background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent}

/* ---------- seções ---------- */
section{position:relative}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 24px}
.pad{padding:clamp(84px, 11vw, 150px) 0}
.pad-sm{padding:clamp(56px, 7vw, 90px) 0}
.paper{background:var(--paper); color:var(--text-ink)}
.paper .lede,.paper .body{color:var(--text-ink-2)}
.paper .kicker{color:var(--magenta-d)}

/* ============================================================
   ORBES DAS SEÇÕES CLARAS
   As seções escuras já têm o .hero-glow. As claras ficavam chapadas,
   então ganham duas esferas, uma no canto superior direito e outra no
   inferior direito, na paleta da marca (rosa, roxo, azul).

   Feitas com ::before e ::after do próprio <section>: nenhum elemento
   novo no HTML.

   SÃO OPT-IN, por a classe `orbes` junto de `paper`. Aplicar em toda seção
   clara ficou ruim: onde duas delas se encostam, como #agentes e #pratica
   na home, a esfera de baixo de uma cai colada na de cima da seguinte, e o
   par lido junto parece descuido, não composição. Com opt-in as esferas
   entram só em seções isoladas e espaçadas, e voltam a parecer decisão.

   A esfera é montada em camadas, e a ordem importa: primeiro o brilho
   especular (o ponto de luz), depois o corpo em gradiente. As sombras
   internas fazem o volume, escurecendo o lado oposto à luz, e a sombra
   externa é o bloom que sangra a cor no papel. É isso que separa uma
   esfera de um borrão redondo.

   `overflow:clip` no .paper corta o que passa da borda, então as esferas
   podem sangrar para fora sem criar rolagem horizontal. `clip` em vez de
   `hidden` para não transformar a seção em container de rolagem.
   ============================================================ */
/* A camada ocupa a seção inteira e recorta no retângulo dela, então as
   esferas podem sangrar para fora sem criar rolagem horizontal. `clip` em
   vez de `hidden` para não virar container de rolagem. */
.orbes-camada{
  position:absolute; inset:0; z-index:0;
  overflow:clip; pointer-events:none;
}
/* o conteúdo sobe uma camada, para o texto nunca ficar sob as esferas */
.orbes > .wrap,.orbes > .tela-inner{position:relative; z-index:1}

/* ---------- a esfera ---------- */
/* Esta camada é o CORPO: silhueta, sombra de contato e o brilho neon que
   vaza para o papel. Ela só deriva, não gira e não muda de tamanho.

   ORÇAMENTO DE QUADRO. A primeira versão engasgava, e por três motivos que
   valem ficar registrados:

   1. `backdrop-filter` nas esferas. Reprocessa o fundo a CADA QUADRO, e
      eram quatro esferas animadas. Sobre papel chapado ele quase não
      mudava nada visualmente, então era custo puro: saiu.
   2. Animar `scale` num elemento com sombra grande. Escala obriga a
      rasterizar a sombra de novo em cada tamanho, e a sombra tinha raio de
      120px, o que fazia uma camada enorme. A respiração saiu e as sombras
      encolheram.
   3. `overflow:hidden` recortando o líquido em círculo. Recorte arredondado
      sobre camada que gira é máscara a cada quadro. Resolvido pela forma:
      o líquido virou um círculo do mesmo tamanho do corpo, e girar círculo
      em torno do próprio centro não muda a silhueta, então não precisa de
      recorte nenhum.

   Sobra só `translate` no corpo e `rotate` no líquido, as duas compostas
   pela GPU sem repintura. */
.orbe{
  position:absolute; border-radius:50%;
  will-change:translate;
}
.orbe-a{
  width:clamp(160px, 24vw, 320px); aspect-ratio:1;
  right:clamp(-86px, -6.5vw, -38px); top:clamp(-104px, -8.5vw, -48px);
  box-shadow:
    0 0 46px rgba(235,92,255,.5),            /* neon curto e saturado */
    0 0 70px 6px rgba(150,92,255,.3),     /* halo longo */
    /* Sombra de CONTATO: deslocada para baixo e para a direita, do lado
       oposto à luz. É o que mais ancora a esfera no espaço, porque diz ao
       olho que existe uma superfície embaixo dela. */
    0 40px 60px -30px rgba(45,15,95,.55);
  animation:orbe-deriva-a 34s linear infinite;
}
.orbe-b{
  width:clamp(104px, 16vw, 205px); aspect-ratio:1;
  right:clamp(-56px, -4.2vw, -26px); bottom:clamp(-74px, -5.6vw, -34px);
  box-shadow:
    0 0 38px rgba(108,140,255,.5),
    0 0 56px 5px rgba(120,92,255,.28),
    0 30px 46px -26px rgba(30,15,85,.5);
  animation:orbe-deriva-b 41s linear infinite;
}

/* ---------- o líquido, dentro ---------- */
/* Esta é a ÚNICA camada que gira, e é um círculo do mesmo tamanho do corpo.
   Girar círculo em torno do próprio centro não altera a silhueta: só leva
   os blobs de neon a passearem por dentro do vidro. Por isso o corpo não
   precisa recortar nada, o que economiza uma máscara por quadro.
   Os blobs terminam transparentes antes da borda, então o rodapé do
   círculo nunca aparece como aresta dura. */
.orbe-liquido{
  position:absolute; inset:0; border-radius:50%;
  will-change:rotate;
  animation:orbe-gira 82s linear infinite;
}
.orbe-a .orbe-liquido{
  background:
    radial-gradient(circle at 30% 28%, rgba(255,92,240,.85) 0%, rgba(255,92,240,0) 46%),
    radial-gradient(circle at 68% 66%, rgba(120,92,255,.8)  0%, rgba(120,92,255,0) 48%),
    radial-gradient(circle at 60% 26%, rgba(64,224,255,.55) 0%, rgba(64,224,255,0) 38%),
    radial-gradient(circle at 36% 72%, rgba(196,64,255,.65) 0%, rgba(196,64,255,0) 44%);
}
.orbe-b .orbe-liquido{
  background:
    radial-gradient(circle at 30% 30%, rgba(92,180,255,.82) 0%, rgba(92,180,255,0) 48%),
    radial-gradient(circle at 68% 64%, rgba(150,92,255,.78) 0%, rgba(150,92,255,0) 50%),
    radial-gradient(circle at 58% 26%, rgba(64,240,235,.55) 0%, rgba(64,240,235,0) 40%),
    radial-gradient(circle at 38% 74%, rgba(235,92,255,.55) 0%, rgba(235,92,255,0) 44%);
  animation-duration:104s;
  animation-direction:reverse;
}

/* ---------- a casca de vidro, por cima e PARADA ---------- */
/* Aqui mora tudo que depende da direção da luz. Fica fora do elemento que
   gira, senão a iluminação giraria junto e a esfera viraria adesivo.

   Três fenômenos, e são eles que fazem a leitura tridimensional:

   FRESNEL  A refletividade do vidro cresce nos ângulos rasantes, então a
            silhueta acende num anel fino e o miolo fica limpo. É o cue mais
            forte de "esfera de vidro": diz que a superfície é curva e se
            afasta de você na borda.
   ESPESSURA  Olhando de frente, a luz atravessa pouco vidro no centro e
            muito na borda, então a cor satura na direção da aresta. Repare
            que é o INVERSO de uma bola opaca, onde a borda escurece por
            sombra. Trocar esses dois é o que faz vidro parecer plástico.
   CÁUSTICA  A esfera funciona como lente e concentra a luz num ponto
            difuso do lado oposto ao que ela entra, aqui embaixo à direita.
   Fechando, um fio claro na aresta com franja rosa de um lado e ciano do
   outro, imitando a dispersão da luz ao atravessar vidro curvo. */
.orbe::after{
  content:""; position:absolute; inset:0; border-radius:50%;
  background:
    /* Fresnel: transparente no miolo, acende só na silhueta */
    radial-gradient(circle at 50% 50%,
      rgba(255,255,255,0) 62%, rgba(255,255,255,.3) 88%,
      rgba(255,255,255,.72) 96%, rgba(255,255,255,.15) 100%),
    /* cáustica: foco difuso no lado oposto à entrada da luz */
    radial-gradient(circle at 66% 70%, rgba(255,255,255,.42) 0%, rgba(255,255,255,0) 26%),
    /* espessura: cor satura na direção da borda */
    radial-gradient(circle at 50% 50%,
      rgba(120,60,220,0) 48%, rgba(120,60,220,.2) 84%, rgba(78,36,170,.42) 100%),
    /* corpo do vidro, translúcido: o papel creme atravessa e clareia por dentro */
    radial-gradient(circle at 38% 34%, rgba(255,255,255,.2) 0%, rgba(255,255,255,.03) 66%, rgba(255,255,255,.1) 100%);
  box-shadow:
    inset 0 0 0 1.5px rgba(255,255,255,.6),          /* fio da aresta */
    inset 3px 3px 0 -1.5px rgba(255,140,250,.6),     /* franja rosa */
    inset -3px -3px 0 -1.5px rgba(120,232,255,.55),  /* franja ciano */
    inset 0 -26px 46px -14px rgba(70,30,150,.36);    /* peso do líquido, embaixo */
}
.orbe-b::after{
  background:
    radial-gradient(circle at 50% 50%,
      rgba(255,255,255,0) 62%, rgba(255,255,255,.3) 88%,
      rgba(255,255,255,.72) 96%, rgba(255,255,255,.15) 100%),
    radial-gradient(circle at 66% 70%, rgba(255,255,255,.42) 0%, rgba(255,255,255,0) 26%),
    radial-gradient(circle at 50% 50%,
      rgba(70,80,220,0) 48%, rgba(70,80,220,.2) 84%, rgba(40,44,160,.42) 100%),
    radial-gradient(circle at 38% 34%, rgba(255,255,255,.2) 0%, rgba(255,255,255,.03) 66%, rgba(255,255,255,.1) 100%);
  box-shadow:
    inset 0 0 0 1.5px rgba(255,255,255,.6),
    inset 3px 3px 0 -1.5px rgba(150,235,255,.6),
    inset -3px -3px 0 -1.5px rgba(235,140,255,.55),
    inset 0 -22px 40px -12px rgba(40,30,140,.36);
}

/* ---------- movimento ---------- */
/* `translate`, `rotate` e `scale` são propriedades próprias, separadas de
   `transform`, então rodam como animações independentes sem uma sobrescrever
   a outra, e as três são compostas pela GPU sem repintura.

   A deriva é um caminho FECHADO: o quadro final volta exatamente ao inicial,
   então o ciclo emenda sem solavanco e roda em `linear`, sem aceleração
   perceptível. Ir e voltar pelo mesmo caminho com `alternate` trava e
   inverte a cada ponta, que era o problema da primeira versão.
   Como deriva, giro e respiração têm durações que não são múltiplas entre
   si, as três só coincidem depois de muitos minutos, e o movimento nunca
   parece repetir. */
@keyframes orbe-gira{
  from{rotate:0deg}
  to  {rotate:360deg}
}
@keyframes orbe-deriva-a{
  0%  {translate:0 0}
  25% {translate:-17px 11px}
  50% {translate:-23px 29px}
  75% {translate:-7px 21px}
  100%{translate:0 0}
}
@keyframes orbe-deriva-b{
  0%  {translate:0 0}
  25% {translate:-14px -9px}
  50% {translate:-19px -24px}
  75% {translate:-5px -17px}
  100%{translate:0 0}
}
/* seções distantes não podem pulsar em uníssono, senão a página inteira
   "respira" junto e o efeito fica mecânico */
.orbes:nth-of-type(even) .orbe-a{animation-duration:39s; animation-delay:-11s}
.orbes:nth-of-type(even) .orbe-b{animation-duration:36s; animation-delay:-17s}
.orbes:nth-of-type(even) .orbe-liquido{animation-delay:-30s}

/* Trava contra colisão: se um dia duas seções com orbes ficarem vizinhas,
   a segunda perde as esferas em vez de empilhar com a primeira. */
.orbes + .orbes .orbes-camada{display:none}

@media (prefers-reduced-motion:reduce){
  .orbe,.orbe-liquido{animation:none}
}

/* ---------- modo leve (html.fx-leve) ----------
   Marcado pela sonda de quadros do site.js quando a máquina rasteriza por
   software, sem GPU. Só o decorativo sai; nada funcional muda.
   As esferas ficam PARADAS mas continuam lá: estáticas, elas são pintadas
   uma única vez e depois não custam nada por quadro. As sombras de neon
   encolhem porque blur grande é caro até para pintar uma vez em software.
   O marquee de clientes deixa de rolar e cai no mesmo layout que ele já
   usa em prefers-reduced-motion: todos os nomes visíveis, em linhas. */
html.fx-leve .orbe,
html.fx-leve .orbe-liquido{animation:none}
html.fx-leve .orbe{will-change:auto}
html.fx-leve .orbe-liquido{will-change:auto}
html.fx-leve .orbe-a{box-shadow:0 0 24px rgba(235,92,255,.4), 0 20px 34px -22px rgba(45,15,95,.5)}
html.fx-leve .orbe-b{box-shadow:0 0 20px rgba(108,140,255,.4), 0 16px 28px -18px rgba(30,15,85,.46)}
html.fx-leve .marquee-track{animation:none; flex-wrap:wrap; width:auto; justify-content:center}
html.fx-leve .live i{animation:none}
.center{text-align:center}
.mw-760{max-width:760px}
.mw-860{max-width:860px}
.mx-auto{margin-left:auto; margin-right:auto}

/* ---------- navegação (vidro, estilo Apple) ---------- */
.announce{
  background:#0b0e24; color:var(--text-dim); font-size:.79rem; letter-spacing:-.005em;
  text-align:center; padding:9px 16px; border-bottom:1px solid rgba(255,255,255,.05);
}
.announce b{color:var(--text-hi); font-weight:600}
.announce a{color:var(--magenta); font-weight:500}
/* z-index acima da Bella (120): com 100, o botão flutuante do WhatsApp
   ficava por cima do menu mobile aberto. */
nav{
  position:sticky; top:0; z-index:130; height:var(--nav-h);
  background:rgba(4,7,29,.72); backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(255,255,255,.07);
}
.nav-in{max-width:var(--maxw); margin:0 auto; height:100%; padding:0 22px; display:flex; align-items:center; gap:10px; justify-content:space-between; min-width:0}
.logo{display:flex; align-items:center; gap:7px; flex:0 0 auto}
.nav-links{display:flex; gap:0; list-style:none; margin:0; padding:0; flex:0 1 auto}
.nav-links a{
  font-size:.74rem; color:var(--text-dim); padding:7px 7px; border-radius:8px;
  white-space:nowrap; transition:color .2s var(--ease), background .2s var(--ease);
}
.nav-links a:hover{color:#fff; background:rgba(255,255,255,.06)}
.nav-cta{
  font-size:.79rem; font-weight:500; padding:7px 15px; border-radius:100px;
  background:var(--grad); color:#fff; white-space:nowrap; flex:0 0 auto;
  transition:transform .2s var(--ease), box-shadow .2s var(--ease);
}
.nav-cta:hover{transform:translateY(-1px); box-shadow:0 6px 22px rgba(235,92,255,.35)}
.nav-burger{display:none; background:none; border:0; color:var(--text-hi); font-size:1.1rem; cursor:pointer}

/* ---------- seletor de idioma: um botão só, com dropdown ---------- */
.lang-has-sub{margin-left:4px; padding-left:10px; border-left:1px solid rgba(255,255,255,.12)}
.lang-trigger{
  font:inherit; font-size:.74rem; font-weight:600; letter-spacing:.02em; color:var(--text-dim);
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); border-radius:8px;
  padding:6px 10px; cursor:pointer; white-space:nowrap;
  transition:color .2s var(--ease), background .2s var(--ease);
}
.lang-trigger i{font-style:normal; opacity:.6; font-size:.72rem; margin-left:1px}
.lang-trigger:hover{color:#fff; background:rgba(255,255,255,.1)}
.lang-sub{min-width:150px}
.lang-sub a[aria-current="true"]{color:var(--magenta); background:rgba(235,92,255,.1)}

/* ---------- botões ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px; justify-content:center;
  font-size:.95rem; font-weight:500; letter-spacing:-.01em;
  padding:13px 26px; border-radius:100px; border:1px solid transparent; cursor:pointer;
  transition:transform .22s var(--ease), box-shadow .22s var(--ease), background .22s var(--ease), color .22s var(--ease);
}
.btn-primary{background:var(--grad); color:#fff; box-shadow:0 8px 30px rgba(168,85,247,.28)}
.btn-primary:hover{transform:translateY(-2px); box-shadow:0 14px 40px rgba(235,92,255,.4)}
.btn-ghost{border-color:rgba(228,236,255,.25); color:var(--text-hi); background:transparent}
.btn-ghost:hover{background:rgba(255,255,255,.08); transform:translateY(-2px)}
.paper .btn-ghost{border-color:rgba(18,20,42,.22); color:var(--text-ink)}
.paper .btn-ghost:hover{background:rgba(18,20,42,.06)}
.link-arrow{
  display:inline-flex; align-items:center; gap:5px; color:var(--magenta);
  font-size:.95rem; font-weight:500; letter-spacing:-.01em;
}
.paper .link-arrow{color:var(--magenta-d)}
.link-arrow span{transition:transform .22s var(--ease); display:inline-block}
.link-arrow:hover span{transform:translateX(4px)}
.btn-row{display:flex; flex-wrap:wrap; gap:14px; align-items:center}

/* ---------- animação de entrada ---------- */
.rv{opacity:0; transform:translateY(26px); transition:opacity .85s var(--ease), transform .85s var(--ease)}
.rv.in{opacity:1; transform:none}
.rv-d1{transition-delay:.08s} .rv-d2{transition-delay:.16s} .rv-d3{transition-delay:.24s}
.rv-d4{transition-delay:.32s} .rv-d5{transition-delay:.4s} .rv-d6{transition-delay:.48s}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1; transform:none; transition:none}
  html{scroll-behavior:auto}
}

/* ============================ HERO ============================ */
.hero{
  min-height:calc(100svh - var(--nav-h)); display:flex; align-items:center;
  padding:clamp(60px,9vw,110px) 0 clamp(40px,6vw,70px); overflow:hidden;
}
.hero-bg{position:absolute; inset:0; overflow:hidden; pointer-events:none}
.hero-glow{
  position:absolute; width:min(1100px,120vw); height:min(1100px,120vw); right:-24%; top:-46%;
  background:radial-gradient(circle at center, rgba(192,0,219,.34) 0%, rgba(138,43,226,.16) 38%, transparent 66%);
  filter:blur(28px);
}
.hero-dots{
  position:absolute; inset:0;
  background-image:radial-gradient(rgba(235,92,255,.5) 1px, transparent 1px);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 88% 8%, #000 0%, transparent 70%);
  mask-image:radial-gradient(ellipse 70% 60% at 88% 8%, #000 0%, transparent 70%);
  opacity:.55;
}
.hero-grid{
  position:relative; z-index:2; display:grid; grid-template-columns:1.05fr .95fr;
  gap:clamp(30px,5vw,64px); align-items:center;
}
.hero h1{margin-bottom:22px}
.hero .lede{max-width:520px; margin-bottom:34px}
.hero-meta{display:flex; gap:26px; margin-top:40px; flex-wrap:wrap}
.hero-meta div{border-left:2px solid rgba(235,92,255,.5); padding-left:12px}
.hero-meta strong{display:block; font-size:1.32rem; font-weight:600; letter-spacing:-.03em}
.hero-meta span{font-size:.76rem; color:var(--text-dim); line-height:1.35; display:block; max-width:150px}

/* painel operacional (mock) */
.panel{
  position:relative; border-radius:var(--r); padding:20px;
  background:linear-gradient(160deg, rgba(255,255,255,.075), rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.11);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.09);
  backdrop-filter:blur(14px);
}
.panel-top{display:flex; align-items:center; justify-content:space-between; margin-bottom:16px}
.panel-title{font-size:.8rem; font-weight:600; letter-spacing:-.01em}
.live{display:flex; align-items:center; gap:6px; font-size:.68rem; color:#59f0b0; letter-spacing:.06em}
.live i{width:6px; height:6px; border-radius:50%; background:#59f0b0; animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1; box-shadow:0 0 0 0 rgba(89,240,176,.5)} 50%{opacity:.55; box-shadow:0 0 0 6px rgba(89,240,176,0)}}
.agent-row{
  display:grid; grid-template-columns:26px 1fr auto; gap:11px; align-items:center;
  padding:11px 12px; border-radius:13px; background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.06); margin-bottom:8px;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.agent-row:hover{background:rgba(235,92,255,.09); transform:translateX(3px)}
.av{
  width:26px; height:26px; border-radius:50%; background:var(--grad);
  display:grid; place-items:center; font-size:.66rem; font-weight:600; color:#fff;
}
.agent-name{font-size:.82rem; font-weight:500; letter-spacing:-.01em}
.agent-role{font-size:.68rem; color:var(--text-dim)}
.agent-kpi{font-size:.72rem; font-weight:600; color:#59f0b0; font-variant-numeric:tabular-nums}
.panel-foot{
  margin-top:14px; padding-top:14px; border-top:1px solid rgba(255,255,255,.08);
  display:flex; justify-content:space-between; font-size:.68rem; color:var(--text-dim);
}
.bar{height:3px; border-radius:3px; background:rgba(255,255,255,.09); margin-top:10px; overflow:hidden}
.bar i{display:block; height:100%; width:0; background:var(--grad); border-radius:3px; transition:width 2.2s var(--ease)}

/* ---------- faixa de credibilidade ---------- */
.trust{border-top:1px solid rgba(255,255,255,.07); border-bottom:1px solid rgba(255,255,255,.07); background:#03050f}
.trust-in{display:flex; align-items:center; justify-content:space-between; gap:26px; flex-wrap:wrap; padding:26px 0}
.trust p{font-size:.75rem; color:var(--text-dim); letter-spacing:.1em; text-transform:uppercase; margin:0}
.trust ul{display:flex; gap:28px; list-style:none; margin:0; padding:0; flex-wrap:wrap}
.trust li{font-size:.86rem; color:var(--text-dim); font-weight:500; letter-spacing:-.01em; opacity:.85}

/* ============================ DOR ============================ */
.quotes{display:grid; gap:12px; margin-top:46px}
.quote{
  background:#fff; border-radius:16px; padding:20px 24px; font-size:1.02rem; letter-spacing:-.015em;
  color:var(--text-ink); border:1px solid rgba(18,20,42,.07);
  box-shadow:0 1px 2px rgba(18,20,42,.04); position:relative; overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.quote::before{content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--grad)}
.quote:hover{transform:translateX(5px); box-shadow:0 14px 34px -18px rgba(18,20,42,.35)}
.quote-punch{
  margin-top:34px; font-size:clamp(1.1rem,1.9vw,1.42rem); font-weight:600;
  letter-spacing:-.022em; line-height:1.35; max-width:820px;
}

/* ============================ BENTO 4 LINHAS ============================ */
.bento{display:grid; grid-template-columns:repeat(12,1fr); gap:14px; margin-top:54px}
.card{
  position:relative; border-radius:var(--r); padding:30px;
  background:linear-gradient(165deg, rgba(255,255,255,.065), rgba(255,255,255,.018));
  border:1px solid rgba(255,255,255,.1); overflow:hidden;
  transition:transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease);
}
.card:hover{transform:translateY(-4px); border-color:rgba(235,92,255,.42); box-shadow:0 30px 60px -34px rgba(235,92,255,.5)}
.card .num{
  font-size:.7rem; letter-spacing:.2em; color:var(--magenta); font-weight:600; margin-bottom:14px; display:block;
}
.card h3{margin:0 0 10px; font-size:1.28rem; letter-spacing:-.025em; font-weight:600}
.card p{font-size:.93rem; line-height:1.58; color:var(--text-dim); margin:0}
.card ul{list-style:none; margin:18px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:7px}
.card ul li{
  font-size:.74rem; padding:5px 11px; border-radius:100px;
  background:rgba(235,92,255,.11); border:1px solid rgba(235,92,255,.22); color:#f0c9ff;
}
.c-6{grid-column:span 6} .c-4{grid-column:span 4} .c-3{grid-column:span 3}
.c-8{grid-column:span 8} .c-12{grid-column:span 12} .c-5{grid-column:span 5} .c-7{grid-column:span 7}

/* fundação */
.foundation{
  grid-column:span 12; border-radius:var(--r); padding:clamp(26px,3.4vw,38px);
  background:linear-gradient(120deg, rgba(235,92,255,.16), rgba(108,92,255,.1));
  border:1px solid rgba(235,92,255,.3);
}
.foundation-head{display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-bottom:26px}
.foundation-copy{flex:1 1 380px; min-width:0}
.foundation-tag{margin:0 0 8px; font-size:1.08rem; font-weight:600; letter-spacing:-.018em; color:var(--text-hi)}
.foundation-desc{margin:0; color:var(--text-dim); font-size:.94rem; line-height:1.6; max-width:640px}
.foundation .layers{display:flex; flex-wrap:wrap; gap:8px}
/* Sem `white-space:nowrap`: pílulas de texto longo ("Multimodelo, sem prender
   você a um fornecedor") não cabiam em 375px e empurravam a página inteira,
   criando o arrasto horizontal. Como .layers é flex-wrap, cada pílula ainda
   ocupa a largura do próprio conteúdo quando ele cabe (desktop fica idêntico);
   quando não cabe, o texto quebra em vez de vazar. O max-width é o teto. */
.layer{
  font-size:.76rem; padding:8px 15px; border-radius:100px; background:rgba(4,7,29,.5);
  border:1px solid rgba(255,255,255,.14); letter-spacing:.02em; color:var(--text-hi);
  max-width:100%; overflow-wrap:anywhere;
}

/* ============================ AGENTES (scroll horizontal) ============================ */
.rail-head{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap}
.rail{
  display:flex; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory;
  padding:40px 24px 30px; margin:0 -24px; scrollbar-width:none;
}
.rail::-webkit-scrollbar{display:none}
.rail-card{
  flex:0 0 clamp(258px, 30vw, 320px); scroll-snap-align:center;
  border-radius:var(--r); padding:26px; min-height:290px;
  display:flex; flex-direction:column; justify-content:space-between;
  background:linear-gradient(170deg, #0d1130, #070a1e);
  border:1px solid rgba(255,255,255,.1);
  transition:transform .4s var(--ease), border-color .4s var(--ease);
}
.rail-card:hover{transform:translateY(-5px); border-color:rgba(235,92,255,.45)}
.rail-card .role{font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--magenta); font-weight:600}
.rail-card h3{margin:12px 0 10px; font-size:1.3rem; letter-spacing:-.028em}
.rail-card p{font-size:.9rem; line-height:1.55; color:var(--text-dim); margin:0}
.rail-metric{
  margin-top:20px; padding-top:16px; border-top:1px solid rgba(255,255,255,.09);
  font-size:.78rem; color:var(--text-hi);
}
.rail-metric b{color:var(--magenta); font-weight:600}
.rail-nav{display:flex; gap:8px}
.rail-btn{
  width:34px; height:34px; border-radius:50%; border:1px solid rgba(255,255,255,.2);
  background:transparent; color:var(--text-hi); cursor:pointer; font-size:.9rem;
  transition:background .2s var(--ease), transform .2s var(--ease);
}
.rail-btn:hover{background:rgba(255,255,255,.1); transform:scale(1.06)}
/* no toque, 34px é pequeno demais para as setas do carrossel de agentes */
@media (max-width:620px){
  .rail-btn{width:44px; height:44px; font-size:1rem}
}

/* ============================ ANTES E DEPOIS ============================ */
.tbl{width:100%; border-collapse:collapse; margin-top:44px; font-size:1.05rem}
.tbl thead th{
  text-align:left; font-size:.82rem; letter-spacing:.14em; text-transform:uppercase;
  font-weight:600; color:var(--text-ink-2); padding:0 18px 14px;
}
.tbl tbody tr{border-top:1px solid rgba(18,20,42,.1); transition:background .25s var(--ease)}
.tbl tbody tr:hover{background:rgba(235,92,255,.06)}
.tbl td{padding:18px; vertical-align:top; line-height:1.45}
.tbl td:first-child{font-weight:600; letter-spacing:-.015em; width:22%}
.tbl td.hoje{color:var(--text-ink-2); width:38%}
.tbl td.pbz{color:var(--magenta-d); font-weight:500}

/* ============================ GOVERNANÇA ============================ */
.gov{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(28px,5vw,66px); align-items:start}
.gov-cols{display:grid; grid-template-columns:1fr 1fr; gap:26px; margin-top:8px}
.gov-cols h4{font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--magenta); margin:0 0 16px; font-weight:600}
.gov-cols ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:13px}
.gov-cols li{font-size:.88rem; line-height:1.45; color:var(--text-dim); display:flex; gap:9px; align-items:flex-start}
.gov-cols li::before{content:"✓"; color:var(--magenta); font-size:.78rem; margin-top:2px; flex:0 0 auto}
.gov-visual{
  border-radius:var(--r); padding:28px; background:rgba(255,255,255,.035);
  border:1px solid rgba(255,255,255,.1);
}
.flow-step{display:grid; grid-template-columns:28px 1fr; gap:14px; padding:14px 0; position:relative}
.flow-step:not(:last-child)::after{
  content:""; position:absolute; left:13px; top:42px; bottom:-4px; width:1px; background:rgba(235,92,255,.35);
}
.flow-dot{
  width:28px; height:28px; border-radius:50%; display:grid; place-items:center;
  font-size:.68rem; font-weight:600; background:rgba(235,92,255,.15);
  border:1px solid rgba(235,92,255,.45); color:#f3c8ff;
}
.flow-step b{display:block; font-size:.88rem; font-weight:600; letter-spacing:-.015em; margin-bottom:3px}
.flow-step span{font-size:.8rem; color:var(--text-dim); line-height:1.45}
.gov-note{
  margin-top:22px; font-size:.85rem; color:var(--text-hi); background:rgba(235,92,255,.1);
  border:1px solid rgba(235,92,255,.28); border-radius:14px; padding:14px 16px; line-height:1.5;
}

/* ============================ RESULTADOS ============================ */
.stats{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:52px}
.stat{
  border-radius:var(--r); padding:30px 26px;
  background:linear-gradient(170deg, rgba(255,255,255,.06), rgba(255,255,255,.015));
  border:1px solid rgba(255,255,255,.1);
}
.stat b{
  display:block; font-size:clamp(2.4rem,4.4vw,3.3rem); font-weight:600; letter-spacing:-.045em;
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
  font-variant-numeric:tabular-nums; line-height:1;
}
.stat span{display:block; margin-top:14px; font-size:.86rem; color:var(--text-dim); line-height:1.45}
.stat-note{
  margin-top:16px; border-radius:var(--r); padding:22px 26px; font-size:.93rem; line-height:1.6;
  color:var(--text-dim); border:1px solid rgba(235,92,255,.3); background:rgba(235,92,255,.06);
}

/* ============================ JORNADA ============================ */
.journey{display:grid; grid-template-columns:repeat(5,1fr); gap:12px; margin-top:52px}
.step{
  border-radius:18px; padding:26px 22px; background:#fff; border:1px solid rgba(18,20,42,.08);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.step:hover{transform:translateY(-5px); box-shadow:0 26px 50px -30px rgba(18,20,42,.45)}
.step .n{
  width:38px; height:38px; border-radius:50%; background:var(--grad); color:#fff;
  display:grid; place-items:center; font-size:.82rem; font-weight:600; margin-bottom:18px;
}
.step h3{font-size:1rem; letter-spacing:-.02em; margin:0 0 8px}
.step p{font-size:.83rem; line-height:1.5; color:var(--text-ink-2); margin:0}
.gate{
  margin-top:26px; font-size:1rem; font-weight:600; letter-spacing:-.02em; color:var(--magenta-d);
}

/* ============================ INDÚSTRIAS ============================ */
.inds{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:50px}
.ind{
  border-radius:var(--r); padding:28px; border:1px solid rgba(255,255,255,.1);
  background:linear-gradient(170deg, rgba(255,255,255,.055), rgba(255,255,255,.015));
  transition:transform .35s var(--ease), border-color .35s var(--ease);
}
.ind:hover{transform:translateY(-4px); border-color:rgba(235,92,255,.4)}
.ind h3{font-size:1.06rem; letter-spacing:-.02em; margin:0 0 12px; color:var(--magenta)}
.ind p{font-size:.88rem; line-height:1.55; color:var(--text-dim); margin:0}
.inds-note{margin-top:24px; font-size:.82rem; color:var(--text-dim); font-style:italic}

/* ============================ CTA FINAL ============================ */
.cta{
  position:relative; overflow:hidden;
  background:linear-gradient(150deg,#06091f 0%, #120a30 50%, #1a0a2e 100%);
}
.cta-dots{
  position:absolute; inset:0; opacity:.5;
  background-image:radial-gradient(rgba(235,92,255,.55) 1px, transparent 1px);
  background-size:24px 24px;
  -webkit-mask-image:radial-gradient(ellipse 60% 70% at 85% 15%, #000, transparent 70%);
  mask-image:radial-gradient(ellipse 60% 70% at 85% 15%, #000, transparent 70%);
}
.cta-in{position:relative; z-index:2}
.lines{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:44px 0 40px}
.line-opt{
  border-radius:16px; padding:20px; text-align:left; cursor:pointer;
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.12);
  transition:all .3s var(--ease); color:inherit; display:block; width:100%;
}
.line-opt:hover,.line-opt.sel{background:rgba(235,92,255,.14); border-color:var(--magenta); transform:translateY(-3px)}
.line-opt b{display:block; font-size:.95rem; letter-spacing:-.02em; margin-bottom:5px}
.line-opt span{font-size:.78rem; color:var(--text-dim); line-height:1.4}

/* ---------- rodapé ---------- */
footer{background:#02040d; border-top:1px solid rgba(255,255,255,.07); padding:56px 0 34px; font-size:.82rem}
.foot-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr 1fr; gap:28px}
.foot-grid h5{font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--text-hi); margin:0 0 14px; font-weight:600}
.foot-grid ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px}
.foot-grid a{color:var(--text-dim); transition:color .2s var(--ease)}
.foot-grid a:hover{color:var(--magenta)}
.foot-bottom{
  margin-top:44px; padding-top:22px; border-top:1px solid rgba(255,255,255,.07);
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; color:var(--text-dim); font-size:.75rem;
}

/* ---------- responsivo ---------- */
@media (max-width:960px){
  .hero-grid{grid-template-columns:1fr}
  .panel{margin-top:12px}
  .gov{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
  .journey{grid-template-columns:repeat(2,1fr)}
  .inds{grid-template-columns:repeat(2,1fr)}
  .lines{grid-template-columns:repeat(2,1fr)}
  .c-6,.c-4,.c-3,.c-5,.c-7{grid-column:span 12}
  .foot-grid{grid-template-columns:1fr 1fr}
  .nav-links{display:none}
  .nav-burger{display:block}
  .lang-has-sub{border-left:0; margin-left:0; padding-left:0; padding-top:10px; margin-top:8px; border-top:1px solid rgba(255,255,255,.1)}
}
/* o menu completo espreme demais por volta de 1024px (ex.: tablet em modo
   paisagem) — some um pouco antes, pra sempre sobrar respiro. */
@media (max-width:1040px){
  .nav-links{display:none}
  .nav-burger{display:block}
}

/* ============================================================
   MENU MOBILE
   Antes o painel era montado com style inline pelo JS. Três defeitos
   graves vinham disso:
   1. o inline sobrevivia ao fechar, então `display:none` continuava no
      elemento e, ao girar o aparelho ou voltar para largura de desktop,
      vencia o CSS e a navegação inteira sumia;
   2. `max-height:calc(100vh - 52px)` não descontava a barra .announce,
      então o painel terminava 49px abaixo da tela com a página no topo;
   3. `100vh` no mobile é a viewport GRANDE (com a barra do navegador
      recolhida), o que piora o corte no aparelho real.
   Agora o estado é uma classe e todo o visual mora aqui. O painel é
   position:absolute ancorado no <nav>, que é sticky (portanto posicionado):
   ele gruda sempre logo abaixo da barra, sem depender de conta em pixel.
   ============================================================ */
@media (max-width:1040px){
  .nav-links{
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; align-items:stretch; gap:2px;
    padding:10px 16px calc(14px + env(safe-area-inset-bottom, 0px));
    background:rgba(4,7,29,.98);
    backdrop-filter:saturate(180%) blur(20px);
    -webkit-backdrop-filter:saturate(180%) blur(20px);
    border-bottom:1px solid rgba(255,255,255,.08);
    box-shadow:0 30px 60px -20px rgba(0,0,0,.9);
    /* dvh = viewport dinâmica: acompanha a barra do navegador aparecendo e
       sumindo. --menu-top é a base real da nav, medida no JS na abertura,
       já contando a .announce quando ela está visível. */
    max-height:calc(100dvh - var(--menu-top, var(--nav-h)));
    /* overflow-x explícito: pela especificação, quando um eixo deixa de ser
       `visible` o outro vira `auto` sozinho, então só `overflow-y:auto` já
       criava uma barra de rolagem horizontal dentro do painel. */
    overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
  nav.menu-aberto .nav-links{display:flex}

  /* `.nav-links a` tem white-space:nowrap por causa da nav de desktop, onde
     os itens ficam lado a lado. No painel empilhado isso fazia as descrições
     longas dos submenus ("AI agents that sell and support customers on
     WhatsApp") correrem numa linha só: 482px de conteúdo dentro de 314px,
     com o texto cortado na borda. */
  .nav-links a{white-space:normal; overflow-wrap:anywhere}

  /* alvos de toque: os 7px/.74rem da nav desktop davam ~28px de altura,
     abaixo dos 44px mínimos recomendados para o dedo. */
  .nav-links > li > a,
  .nav-links .lang-trigger{
    display:flex; align-items:center; min-height:46px;
    padding:8px 12px; font-size:.98rem; border-radius:11px; width:100%;
  }
  .nav-links .lang-trigger{justify-content:space-between; background:none; border:0}
  .sub a{min-height:44px; display:flex; flex-direction:column; justify-content:center; padding:9px 12px}
  .nav-links li{position:static}

  /* Os submenus só viravam estáticos em ≤960px, mas o burger aparece em
     ≤1040px: entre 961 e 1040 o painel abria com os submenus ainda em
     position:absolute e visibility:hidden, ou seja, invisíveis. Aqui a
     regra passa a acompanhar o mesmo ponto de corte do burger. */
  .sub{
    position:static; opacity:1; visibility:visible; transform:none;
    box-shadow:none; background:transparent; border:0; padding:0 0 0 10px; min-width:0;
  }
  .nav-links .has-sub > a::after{display:none}

  /* separador antes do bloco de idiomas, no lugar da borda lateral do desktop */
  .lang-has-sub{margin-top:6px; padding-top:8px; border-top:1px solid rgba(255,255,255,.1)}
}

/* ---------- versão enxuta do menu, no telefone ----------
   São 22 destinos no menu. Abertos de uma vez, com as descrições de cada um,
   o painel pedia mais de 1000px de altura num aparelho de 566px: virava uma
   lista para rolar, não para escolher. Aqui os grupos ("Linhas de valor",
   "Setores", "Login", idioma) chegam recolhidos e as descrições somem, o que
   deixa o menu inteiro visível de primeira, sem rolagem.
   As descrições continuam no tablet (621px a 1040px), onde sobra espaço, e no
   dropdown do desktop. Nada sai do HTML: o texto segue lá para leitores de
   tela e para os robôs de busca, apenas não é pintado nesta largura. */
@media (max-width:620px){
  .nav-links .sub a small{display:none}
  .nav-links .sub a{min-height:44px; flex-direction:row; align-items:center; padding:8px 12px}
  .nav-links .sub a b{font-weight:400; font-size:.94rem; color:var(--text-dim)}
  .nav-links .sub{padding-left:8px; margin:2px 0 6px; border-left:1px solid rgba(255,255,255,.12)}

  /* recolhido por padrão; o JS põe .aberto no <li> ao tocar no grupo */
  .nav-links .has-sub > .sub{display:none}
  .nav-links .has-sub.aberto > .sub{display:block}

  /* seta indicando que o item abre. No desktop o "⌄" é decorativo; aqui ele
     vira o indicador de estado do acordeão. */
  .nav-links .has-sub > a::after{
    content:"⌄"; display:block; margin-left:auto; font-size:.9rem;
    opacity:.55; transition:transform .2s var(--ease);
  }
  .nav-links .lang-trigger i{
    font-size:.9rem; opacity:.55; margin-left:auto;
    transition:transform .2s var(--ease);
  }
  .nav-links .has-sub.aberto > a::after,
  .nav-links .has-sub.aberto .lang-trigger i{transform:rotate(180deg)}
}

/* trava a rolagem da página enquanto o menu está aberto: antes o conteúdo
   deslizava por trás do painel. */
html.menu-aberto{overflow:hidden}
/* a Bella sai de cena com o menu aberto, para não competir com ele */
html.menu-aberto .bella{opacity:0; pointer-events:none}

/* Área de toque de 44px no burger e no CTA da barra. O burger tinha 21px de
   altura e o CTA 26px, bem abaixo do mínimo confortável para o dedo: errar o
   alvo dá a impressão de que o menu "não abre".
   Feito com pseudo-elemento, e não com padding, de propósito: assim a área
   clicável cresce SEM ocupar espaço no layout, e a barra continua cabendo em
   320px, onde sobram poucos pixels entre logo, CTA e burger. */
.nav-burger, .nav-cta{position:relative}
.nav-burger::after, .nav-cta::after{
  content:""; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:100%; min-width:44px; height:44px;
}
@media (max-width:620px){
  .stats,.journey,.inds,.lines,.gov-cols{grid-template-columns:1fr}
  .tbl td:first-child,.tbl td.hoje{width:auto}
  .tbl thead{display:none}
  .tbl td{display:block; padding:6px 0}
  .tbl tbody tr{display:block; padding:16px 0}
  .foot-grid{grid-template-columns:1fr}
}
/* Telas estreitas (iPhone SE, Android pequeno). Na barra sobram logo + CTA +
   burger, e os três eram `flex:0 0 auto` com o CTA em `nowrap`: nada podia
   encolher, então a nav vazava 27px e a página inteira arrastava, em TODAS
   as páginas. Aqui a barra é compactada para caber em 320px.
   O !important no logo é necessário porque Marca.astro aplica a altura por
   style inline. Só a altura muda, com width:auto preservado: a proporção do
   arquivo oficial continua intacta, como exige a regra dos logos. */
@media (max-width:400px){
  .nav-in{padding:0 15px; gap:8px}
  .logo img{height:19px !important}
  .nav-cta{font-size:.72rem; padding:6px 12px}
  .nav-burger{font-size:1rem; padding:0 2px}
}

/* ============================================================
   V2 · COMPONENTES DAS PÁGINAS INTERNAS
   Adicionado em 19/08/2026 para o site multipágina.
   Nada acima desta linha foi alterado: a home v1 continua válida.
   ============================================================ */

/* ---------- navegação com submenu ---------- */
.nav-links li{position:relative}
.nav-links .has-sub > a::after{content:"⌄"; font-size:.72rem; margin-left:4px; opacity:.6; position:relative; top:-1px}
.sub{
  position:absolute; top:calc(100% + 8px); left:-10px; min-width:270px;
  background:rgba(9,12,34,.96); backdrop-filter:saturate(180%) blur(20px);
  border:1px solid rgba(255,255,255,.1); border-radius:16px; padding:8px;
  list-style:none; margin:0; box-shadow:0 30px 60px -25px rgba(0,0,0,.9);
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
}
.nav-links li:hover > .sub, .nav-links li:focus-within > .sub{opacity:1; visibility:visible; transform:none}
.sub a{display:block; padding:9px 12px; border-radius:10px; font-size:.82rem; color:var(--text-hi)}
.sub a small{display:block; font-size:.72rem; color:var(--text-dim); margin-top:2px; line-height:1.35; font-weight:400}
.sub a:hover{background:rgba(235,92,255,.12)}
.nav-links a[aria-current="page"]{color:#fff; background:rgba(255,255,255,.08)}

/* ---------- hero de página interna ---------- */
.subhero{position:relative; overflow:hidden; padding:clamp(56px,8vw,104px) 0 clamp(48px,6vw,80px)}
.subhero .hero-glow{width:min(880px,110vw); height:min(880px,110vw); right:-18%; top:-58%}
.subhero-in{position:relative; z-index:2}
.subhero-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(28px,5vw,60px); align-items:center}
.crumb{display:flex; gap:8px; align-items:center; font-size:.76rem; color:var(--text-dim); margin:0 0 22px; flex-wrap:wrap}
.crumb a{color:var(--text-dim)}
.crumb a:hover{color:var(--magenta)}
.crumb span{opacity:.4}
.paper .crumb, .paper .crumb a{color:var(--text-ink-2)}
.subhero h1{margin:0 0 20px}
.subhero .lede{max-width:600px}
.subhero .btn-row{margin-top:32px}

/* placa de números do hero interno. Grid (não flex-wrap): os itens da mesma
   linha sempre dividem a largura em partes iguais, em vez de cada um pedir
   sua largura de conteúdo e sobrar um item sozinho na linha de baixo. */
.figures{display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:24px; margin-top:38px}
.figures div{border-left:2px solid rgba(235,92,255,.5); padding-left:13px}
.figures b{display:block; font-size:1.42rem; font-weight:600; letter-spacing:-.035em; font-variant-numeric:tabular-nums}
.figures span{display:block; font-size:.88rem; color:var(--text-dim); line-height:1.4; margin-top:3px}

/* ---------- lista de capacidades ---------- */
.feats{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:48px}
.feats.feats-2col{grid-template-columns:repeat(2,1fr)}
.feat{
  border-radius:var(--r); padding:26px; border:1px solid rgba(255,255,255,.1);
  background:linear-gradient(170deg, rgba(255,255,255,.055), rgba(255,255,255,.015));
  transition:transform .35s var(--ease), border-color .35s var(--ease);
}
.feat:hover{transform:translateY(-4px); border-color:rgba(235,92,255,.4)}
.feat b{display:block; font-size:1.02rem; letter-spacing:-.022em; margin-bottom:9px}
.feat p{margin:0; font-size:.88rem; line-height:1.56; color:var(--text-dim)}
.paper .feat{background:#fff; border-color:rgba(18,20,42,.08); box-shadow:0 1px 2px rgba(18,20,42,.04)}
.paper .feat:hover{box-shadow:0 24px 48px -30px rgba(18,20,42,.42)}
.paper .feat p{color:var(--text-ink-2)}

/* ---------- bloco de duas colunas ---------- */
.split{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); align-items:start}
.split-wide{grid-template-columns:1.15fr .85fr}
.checks{list-style:none; margin:26px 0 0; padding:0; display:flex; flex-direction:column; gap:14px}
.checks li{font-size:.92rem; line-height:1.5; color:var(--text-dim); display:flex; gap:10px; align-items:flex-start}
.checks li::before{content:"✓"; color:var(--magenta); font-size:.8rem; margin-top:3px; flex:0 0 auto}
.checks li b{color:var(--text-hi); font-weight:600}
.paper .checks li{color:var(--text-ink-2)}
.paper .checks li::before{color:var(--magenta-d)}
.paper .checks li b{color:var(--text-ink)}
/* itens com rótulo + descrição (gerados por _check_item, em sec_split) viram
   colunas de verdade, em vez de o alinhamento depender por acaso da largura
   do rótulo. Listas simples (sem <span>, ex.: bullets de artigo) não mudam. */
.checks li:has(> span){display:grid; grid-template-columns:16px minmax(148px,210px) 1fr; column-gap:16px; row-gap:2px; align-items:baseline}
.checks li:has(> span)::before{grid-column:1; grid-row:1}
@media (max-width:560px){
  .checks li:has(> span){grid-template-columns:16px 1fr; row-gap:4px}
  .checks li:has(> span) b{grid-column:2}
  .checks li:has(> span) span{grid-column:2}
}

/* ---------- painel de evidência ---------- */
.evidence{
  border-radius:var(--r); padding:28px; border:1px solid rgba(255,255,255,.1);
  background:rgba(255,255,255,.035);
}
.evidence h4{font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--magenta); margin:0 0 18px; font-weight:600}
.evidence dl{margin:0; display:flex; flex-direction:column; gap:0}
.evidence dt{font-size:.88rem; color:var(--text-dim); padding-top:14px}
.evidence dd{
  margin:4px 0 0; font-size:.95rem; letter-spacing:-.015em; line-height:1.45;
  padding-bottom:14px; border-bottom:1px solid rgba(255,255,255,.08);
}
.evidence dd:last-of-type{border-bottom:0; padding-bottom:0}
.paper .evidence{background:#fff; border-color:rgba(18,20,42,.08)}
.paper .evidence h4{color:var(--magenta-d)}
.paper .evidence dt{color:var(--text-ink-2)}
.paper .evidence dd{border-color:rgba(18,20,42,.09)}

/* ---------- perguntas frequentes ---------- */
.faq{margin-top:44px; max-width:860px}
.faq details{
  border-top:1px solid rgba(255,255,255,.1); padding:0;
}
.faq details:last-child{border-bottom:1px solid rgba(255,255,255,.1)}
.faq summary{
  list-style:none; cursor:pointer; padding:22px 44px 22px 0; position:relative;
  font-size:1.02rem; font-weight:600; letter-spacing:-.02em; line-height:1.35;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"+"; position:absolute; right:8px; top:19px; font-size:1.3rem; font-weight:400;
  color:var(--magenta); transition:transform .25s var(--ease);
}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{margin:0 0 24px; font-size:.94rem; line-height:1.65; color:var(--text-dim); max-width:720px}
.paper .faq details{border-color:rgba(18,20,42,.12)}
.paper .faq p{color:var(--text-ink-2)}
.paper .faq summary::after{color:var(--magenta-d)}

/* ---------- navegação cruzada entre páginas ---------- */
.crosslinks{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:44px}
.xlink{
  display:block; border-radius:16px; padding:22px 24px; border:1px solid rgba(255,255,255,.11);
  background:rgba(255,255,255,.035); transition:all .3s var(--ease);
}
.xlink:hover{background:rgba(235,92,255,.1); border-color:var(--magenta); transform:translateY(-3px)}
.xlink b{display:block; font-size:.98rem; letter-spacing:-.02em; margin-bottom:6px}
.xlink span{font-size:.8rem; color:var(--text-dim); line-height:1.45; display:block}
.xlink em{
  display:inline-block; margin-top:12px; font-style:normal; font-size:.78rem;
  color:var(--magenta); font-weight:500;
}
.paper .xlink{background:#fff; border-color:rgba(18,20,42,.09)}
.paper .xlink:hover{background:#fff; border-color:var(--magenta-d)}
.paper .xlink span{color:var(--text-ink-2)}
.paper .xlink em{color:var(--magenta-d)}

/* ---------- tabela escura (central de confiança) ---------- */
.tbl-dark{width:100%; border-collapse:collapse; margin-top:40px; font-size:1.05rem}
.tbl-dark thead th{
  text-align:left; font-size:.82rem; letter-spacing:.14em; text-transform:uppercase;
  font-weight:600; color:var(--text-dim); padding:0 18px 14px;
}
.tbl-dark tbody tr{border-top:1px solid rgba(255,255,255,.09)}
.tbl-dark tbody tr:hover{background:rgba(235,92,255,.05)}
.tbl-dark td{padding:17px 18px; vertical-align:top; line-height:1.5; color:var(--text-dim)}
.tbl-dark td:first-child{font-weight:600; letter-spacing:-.015em; color:var(--text-hi); width:26%}
.tbl-dark td em{font-style:normal; color:var(--magenta); font-weight:500}

/* ---------- dossiê: lista de documentos ---------- */
.docs{display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:44px}
.doc{
  display:flex; gap:16px; align-items:flex-start; padding:20px 22px; border-radius:16px;
  border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.035);
}
.doc i{
  flex:0 0 auto; width:30px; height:30px; border-radius:9px; background:rgba(235,92,255,.14);
  border:1px solid rgba(235,92,255,.32); display:grid; place-items:center;
  font-style:normal; font-size:.68rem; font-weight:600; color:#f3c8ff;
}
.doc b{display:block; font-size:.94rem; letter-spacing:-.018em; margin-bottom:5px}
.doc span{font-size:.82rem; color:var(--text-dim); line-height:1.5; display:block}

/* ---------- selo de status ---------- */
.badges{display:flex; flex-wrap:wrap; gap:10px; margin-top:30px}
.badge{
  font-size:.76rem; padding:8px 14px; border-radius:100px; letter-spacing:-.005em;
  background:rgba(235,92,255,.1); border:1px solid rgba(235,92,255,.28); color:#f0c9ff;
}
.badge.ok{background:rgba(89,240,176,.09); border-color:rgba(89,240,176,.3); color:#8df3ca}

/* ---------- aviso / nota de rodapé de seção ---------- */
.note{
  margin-top:30px; border-radius:16px; padding:18px 22px; font-size:.87rem; line-height:1.6;
  color:var(--text-dim); border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03);
}
.paper .note{background:rgba(18,20,42,.04); border-color:rgba(18,20,42,.1); color:var(--text-ink-2)}

/* ---------- calculadora de custo por processo ---------- */
.calc{
  border-radius:var(--r); padding:clamp(26px,3.4vw,38px); margin-top:48px;
  border:1px solid rgba(235,92,255,.3);
  background:linear-gradient(130deg, rgba(235,92,255,.12), rgba(108,92,255,.07));
  display:grid; grid-template-columns:1fr .85fr; gap:clamp(26px,4vw,48px); align-items:center;
}
.calc-fields{display:flex; flex-direction:column; gap:22px}
.field label{display:block; font-size:1rem; color:var(--text-dim); margin-bottom:9px}
.field label b{color:var(--text-hi); font-weight:600; font-variant-numeric:tabular-nums}
.field input[type=range]{
  width:100%; -webkit-appearance:none; appearance:none; height:4px; border-radius:4px;
  background:rgba(255,255,255,.16); outline:none;
}
.field input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none; width:18px; height:18px; border-radius:50%;
  background:var(--grad); cursor:pointer; box-shadow:0 3px 12px rgba(235,92,255,.5);
}
.field input[type=range]::-moz-range-thumb{
  width:18px; height:18px; border:0; border-radius:50%; background:#eb5cff; cursor:pointer;
}
.calc-out{text-align:center}
.calc-out .big{
  display:block; font-size:clamp(2.2rem,4.4vw,3.1rem); font-weight:600; letter-spacing:-.045em;
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
  font-variant-numeric:tabular-nums; line-height:1.05;
}
.calc-out .cap{display:block; font-size:1rem; color:var(--text-dim); margin-top:12px; line-height:1.45}
.calc-out hr{border:0; border-top:1px solid rgba(255,255,255,.12); margin:22px 0}
.calc-out .sec{display:block; font-size:1.25rem; font-weight:600; letter-spacing:-.028em; font-variant-numeric:tabular-nums}
.calc-disc{margin-top:22px; font-size:.9rem; color:var(--text-dim); line-height:1.55; grid-column:1/-1}

/* ---------- botão flutuante do WhatsApp ---------- */
.bella{
  position:fixed; right:20px; bottom:20px; z-index:120;
  display:flex; align-items:center; gap:10px; padding:11px 18px 11px 12px;
  border-radius:100px; background:var(--grad); color:#fff; font-size:.86rem; font-weight:500;
  box-shadow:0 12px 34px -8px rgba(235,92,255,.6); border:0; cursor:pointer;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease);
}
.bella:hover{transform:translateY(-2px); box-shadow:0 18px 44px -8px rgba(235,92,255,.75)}
.bella i{
  width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.2);
  display:grid; place-items:center; font-style:normal; font-size:.72rem; font-weight:600;
  overflow:hidden; flex:0 0 auto;
}
.bella i img{width:100%; height:100%; object-fit:cover; border-radius:50%; display:block}
.bella span small{display:block; font-size:.68rem; opacity:.85; font-weight:400}

/* ---------- responsivo v2 ---------- */
@media (max-width:960px){
  .subhero-grid,.split,.split-wide,.calc{grid-template-columns:1fr}
  .feats,.crosslinks{grid-template-columns:repeat(2,1fr)}
  .docs{grid-template-columns:1fr}
  .sub{position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; background:transparent; border:0; padding:0 0 0 10px; min-width:0}
  .nav-links .has-sub > a::after{display:none}
}
@media (max-width:620px){
  /* .feats.feats-2col precisa estar escrito com as duas classes: a regra
     `.feats.feats-2col{repeat(2,1fr)}` lá de cima tem especificidade maior
     que `.feats` sozinho e vencia mesmo dentro desta media query, então
     /linhas/power-ops seguia em 2 colunas a 320px e vazava a página. */
  .feats,.feats.feats-2col,.crosslinks{grid-template-columns:1fr}
  .tbl-dark thead{display:none}
  .tbl-dark td{display:block; padding:5px 0}
  .tbl-dark td:first-child{width:auto}
  .tbl-dark tbody tr{display:block; padding:16px 0}
  /* No mobile o rótulo some e sobra só o avatar. Antes ficava uma foto de
     26px boiando num botão de 50px, quase toda de gradiente. Agora o padding
     vira um anel fino e o avatar ocupa o botão: 5 + 46 + 5 = 56px, o tamanho
     de FAB que o dedo espera. O env(safe-area-inset-bottom) tira a Bella de
     baixo da barra de gestos do iPhone. */
  .bella span{display:none}
  .bella{
    padding:5px; right:16px;
    bottom:calc(16px + env(safe-area-inset-bottom, 0px));
  }
  .bella i{width:46px; height:46px}
}

/* ============================================================
   V2.1 · LOGOS OFICIAIS
   Os arquivos em assets/logos/ são cópias exatas do que a diretoria
   enviou. NUNCA editar, recortar, recolorir ou trocar o fundo deles.
   Só é permitido redimensionar, e sempre por largura ou altura com a
   outra dimensão em "auto", para preservar a proporção.
   Como os arquivos vieram com fundo preto sólido, eles são exibidos
   dentro de uma placa preta (.logo-plate), que é elemento de layout,
   não alteração do logo.
   ============================================================ */
.logo-plate{
  display:inline-block; background:#000; border-radius:18px; padding:16px 24px;
  border:1px solid rgba(255,255,255,.14); box-shadow:0 18px 40px -22px rgba(0,0,0,.9);
  line-height:0;
}
.logo-plate img{display:block; width:auto; height:44px}
.logo-plate.sm img{height:32px}
.foundation .logo-plate{margin-bottom:18px}
@media (max-width:620px){
  .logo-plate{padding:13px 18px}
  .logo-plate img{height:34px}
}

/* logotipo oficial no topo e no rodapé: só redimensionamento, proporção intacta */
.logo img{display:block; width:auto}

/* ============================================================
   JORNADA DE DIAGNÓSTICO (modal)
   ============================================================ */
.diag-overlay{
  position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center;
  padding:24px; background:rgba(2,4,12,.72); backdrop-filter:blur(6px);
}
.diag-overlay[hidden]{display:none}
.diag-modal{
  position:relative; width:100%; max-width:560px; max-height:min(88vh,780px); overflow-y:auto;
  background:#0a0e26; border:1px solid rgba(255,255,255,.12); border-radius:26px;
  padding:clamp(26px,4vw,40px); box-shadow:0 40px 100px -30px rgba(0,0,0,.9);
}
.diag-close{
  position:absolute; top:18px; right:18px; width:34px; height:34px; border-radius:50%;
  border:1px solid rgba(255,255,255,.16); background:rgba(255,255,255,.04); color:var(--text-hi);
  font-size:1.3rem; line-height:1; cursor:pointer; transition:background .2s var(--ease);
}
.diag-close:hover{background:rgba(255,255,255,.1)}
.diag-field{margin-top:18px}
.diag-field label{display:block; font-size:.84rem; font-weight:500; color:var(--text-hi); margin-bottom:8px}
.diag-field label span{color:var(--text-dim); font-weight:400}
.diag-field input, .diag-field textarea{
  width:100%; padding:12px 14px; border-radius:12px; border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.04); color:var(--text-hi); font:inherit; font-size:.92rem;
  transition:border-color .2s var(--ease), background .2s var(--ease);
}
.diag-field input::placeholder, .diag-field textarea::placeholder{color:var(--text-dim)}
.diag-field input:focus, .diag-field textarea:focus{
  outline:none; border-color:var(--magenta); background:rgba(235,92,255,.06);
}
.diag-field textarea{resize:vertical}
.diag-row{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:18px}
.diag-row .diag-field{margin-top:0}
.diag-pills{display:flex; flex-wrap:wrap; gap:8px}
.diag-pill{
  font-size:.82rem; padding:8px 14px; border-radius:100px; cursor:pointer;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.16); color:var(--text-hi);
  transition:all .2s var(--ease);
}
.diag-pill:hover{background:rgba(255,255,255,.1)}
.diag-pill.sel{background:rgba(235,92,255,.16); border-color:var(--magenta); color:#fff}
.diag-area-atual{margin:10px 0 0; font-size:.78rem; color:var(--text-dim)}
.diag-area-atual strong{color:var(--magenta); font-weight:600}
@media (max-width:560px){
  .diag-row{grid-template-columns:1fr}
  .diag-modal{padding:24px 20px; border-radius:20px}
}
/* Campos com fonte menor que 16px fazem o Safari do iPhone dar zoom na página
   assim que o campo recebe foco, e ele não volta sozinho depois: o visitante
   fica preso numa página ampliada no meio do formulário de diagnóstico, que é
   a captura de leads. 16px é o limiar exato em que o iOS para de ampliar.
   Só afeta telas de toque; no desktop o tamanho original continua.
   O type=range fica de fora: não recebe digitação, logo não dispara zoom. */
@media (max-width:820px){
  input:not([type=range]):not([type=checkbox]):not([type=radio]),
  textarea, select{font-size:16px}
}

/* ---------- modal da Política de Privacidade ---------- */
.politica-overlay{
  position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center;
  padding:24px; background:rgba(2,4,12,.72); backdrop-filter:blur(6px);
}
.politica-overlay[hidden]{display:none}
.politica-modal{
  position:relative; width:100%; max-width:760px; max-height:min(86vh,860px); overflow-y:auto;
  background:var(--paper); color:var(--text-ink); border-radius:26px;
  padding:clamp(28px,4vw,48px); box-shadow:0 40px 100px -30px rgba(0,0,0,.9);
}
.politica-close{
  position:absolute; top:18px; right:18px; width:34px; height:34px; border-radius:50%;
  border:1px solid rgba(18,20,42,.14); background:rgba(18,20,42,.04); color:var(--text-ink);
  font-size:1.3rem; line-height:1; cursor:pointer; transition:background .2s var(--ease);
}
.politica-close:hover{background:rgba(18,20,42,.1)}
.politica-modal .kicker{color:var(--magenta-d)}
.politica-modal h2{font-size:1.05rem; letter-spacing:-.014em; font-weight:600; color:var(--text-ink); margin:28px 0 10px}
.politica-modal h2:first-of-type{margin-top:22px}
.politica-modal p{font-size:.92rem; line-height:1.65; color:var(--text-ink-2); margin:0 0 14px}
.politica-modal ul{margin:0 0 14px; padding-left:20px}
.politica-modal li{font-size:.92rem; line-height:1.6; color:var(--text-ink-2); margin-bottom:6px}
.politica-modal li b{color:var(--text-ink)}
.politica-modal a{color:var(--magenta-d); text-decoration:underline}
.foot-bottom a[data-politica-open]{color:var(--magenta); text-decoration:underline; margin-left:2px}
@media (max-width:560px){
  .politica-modal{padding:22px 18px; border-radius:20px}
}

/* ============================================================
   CENTRAL DE CONTEÚDO (hub + artigo)
   ============================================================ */
.artigo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:20px}
.artigo-card{
  display:flex; flex-direction:column; border-radius:var(--r); overflow:hidden;
  border:1px solid rgba(255,255,255,.1); background:linear-gradient(170deg, rgba(255,255,255,.055), rgba(255,255,255,.015));
  transition:transform .35s var(--ease), border-color .35s var(--ease);
}
.artigo-card:hover{transform:translateY(-4px); border-color:rgba(235,92,255,.4)}
.artigo-card-img{aspect-ratio:16/10; overflow:hidden; background:rgba(255,255,255,.04)}
/* Artigo sem capa não deve deixar um retângulo cinza vazio no card. O campo
   `capa` pode vir em branco (o pipeline do /admin cria assim), e o template
   já protege o <img> com `capa &&`, mas a caixa continuava ocupando 16:10.
   :empty resolve sem tocar no template: sem filho, sem caixa. */
.artigo-card-img:empty,.artigo-destaque .art:empty{display:none}
.artigo-card-img img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease)}
.artigo-card:hover .artigo-card-img img{transform:scale(1.05)}
.artigo-card-corpo{display:flex; flex-direction:column; flex:1; padding:22px 26px 26px}
.artigo-tag{
  align-self:flex-start; font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; font-weight:600;
  color:#f0c9ff; background:rgba(235,92,255,.13); border:1px solid rgba(235,92,255,.28);
  padding:5px 11px; border-radius:100px; margin-bottom:16px;
}
.artigo-card h3{font-size:1.12rem; letter-spacing:-.022em; margin:0 0 10px; line-height:1.3}
.artigo-card p{font-size:.88rem; line-height:1.58; color:var(--text-dim); margin:0; flex:1}
.artigo-meta{margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,.09); font-size:.76rem; color:var(--text-dim); display:flex; justify-content:space-between; gap:10px}
.artigo-destaque{
  grid-column:1/-1; display:grid; grid-template-columns:1fr 1fr; gap:0; overflow:hidden;
  border-radius:var(--r); border:1px solid rgba(235,92,255,.3);
  background:linear-gradient(120deg, rgba(235,92,255,.14), rgba(108,92,255,.08));
}
.artigo-destaque .txt{padding:clamp(26px,3.5vw,40px)}
.artigo-destaque .txt h3{font-size:clamp(1.3rem,2vw,1.7rem); margin:14px 0 12px; letter-spacing:-.026em; line-height:1.2}
.artigo-destaque .txt p{font-size:.96rem; line-height:1.6; color:var(--text-dim); margin:0}
.artigo-destaque .art{overflow:hidden; min-height:280px; border-left:1px solid rgba(235,92,255,.2)}
.artigo-destaque .art img{width:100%; height:100%; object-fit:cover; display:block}
.cat-nav{display:flex; gap:10px; flex-wrap:wrap; margin-top:30px}
.cat-nav a{
  font-size:.82rem; padding:9px 16px; border-radius:100px; border:1px solid rgba(255,255,255,.16);
  color:var(--text-hi); background:rgba(255,255,255,.04); transition:all .2s var(--ease);
}
.cat-nav a:hover{background:rgba(235,92,255,.12); border-color:var(--magenta)}

/* leitura de artigo: coluna mais estreita para conforto de leitura */
.artigo-corpo{max-width:700px; margin:0 auto; padding:clamp(60px,8vw,96px) 24px}
.artigo-corpo .lede-abertura{font-size:clamp(1.1rem,1.6vw,1.3rem); line-height:1.55; color:var(--text-hi); font-weight:400; margin:0 0 8px}
.artigo-corpo h2{font-size:clamp(1.35rem,2.2vw,1.7rem); letter-spacing:-.026em; font-weight:600; margin:44px 0 18px}
.artigo-corpo p{font-size:1.02rem; line-height:1.75; color:var(--text-dim); margin:0 0 20px}
.artigo-corpo p strong{color:var(--text-hi); font-weight:600}
.artigo-corpo ul.checks{margin:0 0 24px}
.artigo-corpo blockquote{
  margin:36px 0; padding:4px 0 4px 22px; border-left:3px solid var(--magenta);
  font-size:1.14rem; line-height:1.5; letter-spacing:-.015em; color:var(--text-hi); font-weight:500;
}
.artigo-corpo cite{display:block; margin-top:34px; padding-top:18px; border-top:1px solid rgba(255,255,255,.1); font-size:.82rem; color:var(--text-dim); font-style:normal}
@media (max-width:900px){
  .artigo-grid{grid-template-columns:1fr 1fr}
  .artigo-destaque{grid-template-columns:1fr}
  .artigo-destaque .art{border-left:0; border-top:1px solid rgba(235,92,255,.2)}
}
@media (max-width:620px){
  .artigo-grid{grid-template-columns:1fr}
}

/* ============================================================
   MURAL DE CLIENTES (marquee horizontal, sem JS)
   ============================================================ */
.clientes{border-top:1px solid rgba(255,255,255,.07); border-bottom:1px solid rgba(255,255,255,.07); background:#03050f; padding:64px 0}
.clientes p{font-size:.8rem; color:var(--text-dim); letter-spacing:.12em; text-transform:uppercase; margin:0 0 26px; text-align:center; font-weight:600}
.marquee{overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent)}
.marquee-track{display:flex; width:max-content; gap:16px; animation:marquee 26s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{
  flex:0 0 auto; font-size:1.05rem; font-weight:600; letter-spacing:-.01em; color:var(--text-hi);
  padding:12px 24px; border-radius:100px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.045);
  white-space:nowrap;
}
@keyframes marquee{from{transform:translateX(0)} to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none; flex-wrap:wrap; width:auto; justify-content:center}
}

/* ============================================================
   IMAGENS DENTRO DE ARTIGO (Central de Conteúdo)
   ============================================================ */
.artigo-capa{max-width:900px; margin:0 auto; padding:0 24px}
.artigo-capa img{width:100%; height:auto; border-radius:var(--r); display:block}
.artigo-corpo figure{margin:36px 0}
.artigo-corpo .artigo-img img{width:100%; height:auto; border-radius:16px; display:block; border:1px solid rgba(255,255,255,.1)}
.artigo-corpo figcaption{margin-top:10px; font-size:.8rem; color:var(--text-dim); line-height:1.5}
.artigo-galeria{
  display:grid; grid-template-columns:repeat(6,1fr); gap:8px; margin:36px 0;
}
.artigo-galeria img{
  width:100%; height:150px; object-fit:cover; border-radius:12px; display:block;
  border:1px solid rgba(255,255,255,.1);
}
.artigo-figura-dupla{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:36px 0}
.artigo-figura-dupla img{width:100%; height:auto; border-radius:14px; display:block; border:1px solid rgba(255,255,255,.1)}
.artigo-pessoa{
  display:flex; gap:20px; align-items:center; margin:36px 0;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); border-radius:18px; padding:20px;
}
.artigo-pessoa img{width:96px; height:96px; border-radius:50%; object-fit:cover; flex:0 0 auto; border:1px solid rgba(255,255,255,.14)}
.artigo-pessoa figcaption{margin:0; font-size:.86rem; color:var(--text-dim); line-height:1.5}
.artigo-pessoa figcaption b{display:block; color:var(--text-hi); font-size:.94rem; margin-bottom:3px}
@media (max-width:760px){
  .artigo-galeria{grid-template-columns:repeat(3,1fr)}
  .artigo-figura-dupla{grid-template-columns:1fr}
}
@media (max-width:480px){
  .artigo-galeria{grid-template-columns:repeat(2,1fr)}
}

/* ============================================================
   TELA CHEIA NA HOME (desktop): cada seção ocupa a altura da
   viewport e o conteúdo é escalado para caber sem cortar nada.
   A escala de verdade é calculada em JS (ver site.js), medindo
   a altura natural do conteúdo contra o espaço disponível. Este
   CSS só prepara o palco: altura fixa, centralização e o ponto
   de origem da escala.
   ============================================================ */
/* .js-tela-ativa só existe se o JavaScript rodou (ver script inline no
   <head>). Sem JS — inclusive crawlers que não executam script, como boa
   parte dos robôs de IA que o site foi otimizado para receber — as seções
   caem no fluxo normal, com todo o conteúdo visível e nada cortado. */
@media (min-width:961px){
  html.js-tela-ativa .tela-home{
    height:calc(100vh - var(--nav-h)); min-height:560px; overflow:hidden;
    display:flex; align-items:center; padding-top:26px; padding-bottom:26px;
  }
  html.js-tela-ativa .tela-home > .wrap, html.js-tela-ativa .tela-home > .tela-inner{
    width:100%; transform-origin:50% 50%; transition:transform .2s var(--ease);
  }
  .tela-inner{max-width:none}
}

/* variante grande do logo-plate, para a seção dedicada ao PowerBizzOS */
.logo-plate.lg img{height:72px}
.fundacao-solo{
  border-radius:var(--r); padding:clamp(32px,4.4vw,52px);
  background:linear-gradient(120deg, rgba(235,92,255,.16), rgba(108,92,255,.1));
  border:1px solid rgba(235,92,255,.3);
}
.fundacao-solo .foundation-head{margin-bottom:30px}
.fundacao-solo .foundation-desc{font-size:1.04rem; max-width:820px}
.fundacao-solo .layers{display:flex; flex-wrap:wrap; gap:10px; margin-top:8px}
.fundacao-solo .layer{font-size:.82rem; padding:10px 18px}
