/* ==========================================================================
   KAIVOR — Design System v3 (rebrand)
   Identidade: wordmark branco sobre azul elétrico.
   Display: Outfit · Texto: Inter · Acentos: JetBrains Mono
   Motion first: todo o sistema de animação vive aqui + em script.js
   NOTA: os nomes de variáveis abaixo são consumidos também por
   admin.css e pagamento.html — manter os tokens legados.
   ========================================================================== */

:root{
  /* --- Marca --- */
  /* Azul amostrado do próprio arquivo da logo (assets/logov3.png) */
  --brand:#0234F8;
  --brand-deep:#0126BE;
  --brand-ink:#ffffff;

  /* --- Tokens legados (admin/pagamento) remapeados para a nova marca --- */
  --navy:#050A24;
  --navy-soft:#0A1240;
  --blue-700:#0126BE;
  --blue-600:#0234F8;
  --blue-500:#2E56FF;
  --blue-400:#6C8BFF;
  --blue-300:#A9BCFF;
  --blue-100:#E9EDFF;
  --ice:#F2F4FC;
  --paper:#ffffff;
  --ink:#070B1C;
  --ink-soft:#5A6285;
  --line:#E2E7F7;
  --shadow:0 24px 70px -24px rgba(7,20,90,.32);
  --ease:cubic-bezier(.4,0,.2,1);

  /* --- Motion --- */
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-in-out:cubic-bezier(.76,0,.24,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);

  /* --- Forma --- */
  --r-sm:12px;
  --r-md:18px;
  --r-lg:28px;
  --r-xl:40px;
  --r-pill:999px;

  /* --- Tipografia --- */
  --font-display:'Outfit','Space Grotesk',system-ui,sans-serif;
  --font-body:'Inter',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;

  --nav-h:78px;
}

/* ---------- Base ---------- */
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth; background:var(--ice); overflow-x:hidden; width:100%; scroll-padding-top:110px;}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:transparent;
  overflow-x:hidden;
  width:100%;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.is-locked{overflow:hidden;}
h1,h2,h3,h4,.display{
  font-family:var(--font-display);
  font-weight:600;
  letter-spacing:-0.03em;
  line-height:1.02;
}
.mono{font-family:var(--font-mono);}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
img{max-width:100%; display:block;}
button{font-family:inherit; cursor:pointer; border:none; background:none; color:inherit;}
input,textarea,select{font-family:inherit;}
::selection{background:var(--brand); color:#fff;}
:focus-visible{outline:2px solid var(--brand); outline-offset:3px; border-radius:4px;}
.container{width:min(1240px, 90%); margin-inline:auto;}
section{position:relative;}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}

/* ==========================================================================
   1. SISTEMA DE ANIMAÇÃO (scroll reveal / split text / stroke draw)
   ========================================================================== */
/* Obs.: sem JavaScript o conteúdo é liberado pelo <noscript> do <head>
   (a CSP do .htaccess bloqueia script inline, mas permite style inline). */
[data-anim]{opacity:0; will-change:transform,opacity;}
[data-anim="up"]     {transform:translate3d(0,46px,0);}
[data-anim="down"]   {transform:translate3d(0,-32px,0);}
[data-anim="left"]   {transform:translate3d(-46px,0,0);}
[data-anim="right"]  {transform:translate3d(46px,0,0);}
[data-anim="scale"]  {transform:scale(.9);}
[data-anim="blur"]   {filter:blur(14px); transform:translate3d(0,26px,0);}
[data-anim="clip"]   {opacity:1; clip-path:inset(0 100% 0 0);}
[data-anim="clip-up"]{opacity:1; clip-path:inset(100% 0 0 0);}
[data-anim].is-in{
  opacity:1; transform:none; filter:none;
  transition:
    opacity .85s var(--ease-out) var(--d,0ms),
    transform 1.05s var(--ease-out) var(--d,0ms),
    filter .9s var(--ease-out) var(--d,0ms),
    clip-path 1.15s var(--ease-in-out) var(--d,0ms);
}
/* Só as variantes de wipe terminam com clip-path: aplicá-lo em tudo
   recortava o que é desenhado fora da caixa (halos, sombras no hover). */
[data-anim="clip"].is-in,[data-anim="clip-up"].is-in{clip-path:inset(0 0 0 0);}

/* Split text — máscara linha a linha / palavra a palavra */
.split{opacity:1;}
.split .w{display:inline-block; overflow:hidden; vertical-align:bottom; padding:.14em .02em .18em; margin:-.14em -.02em -.18em;}
.split .w > i{
  display:inline-block; font-style:inherit;
  transform:translate3d(0,110%,0) rotate(3deg);
  transition:transform 1.05s var(--ease-out) var(--d,0ms);
}
.split.is-in .w > i{transform:none;}

/* Stroke draw — comprimento calculado no JS */
.draw [data-draw]{
  stroke-dasharray:var(--len,400);
  stroke-dashoffset:var(--len,400);
}
.draw.is-in [data-draw]{
  stroke-dashoffset:0;
  transition:stroke-dashoffset 1.3s var(--ease-out) var(--dd,0ms);
}

/* Contador de números */
.counter{font-variant-numeric:tabular-nums;}

/* Origem de transformação correta dentro de SVG */
[class^="sc-"],[class*=" sc-"],[class^="ico-"],[class*=" ico-"],.p-shape svg{
  transform-box:fill-box;
}

/* Entrada dos cards ao filtrar */
@keyframes filterIn{
  from{opacity:0; transform:translateY(26px) scale(.96);}
  to{opacity:1; transform:none;}
}

/* ==========================================================================
   2. FUNDO VIVO
   ========================================================================== */
.site-bg{position:fixed; inset:0; z-index:-2; overflow:hidden; background:var(--ice);}
.site-bg .grid{
  position:absolute; inset:-10%;
  background-image:
    linear-gradient(rgba(2,52,248,.10) 1px, transparent 1px),
    linear-gradient(90deg, rgba(2,52,248,.10) 1px, transparent 1px);
  background-size:72px 72px;
  -webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0%, #000 10%, transparent 72%);
  mask-image:radial-gradient(ellipse 80% 60% at 50% 0%, #000 10%, transparent 72%);
  animation:gridPan 40s linear infinite;
}
@keyframes gridPan{from{background-position:0 0;} to{background-position:72px 72px;}}
.site-bg .orb{position:absolute; border-radius:50%; filter:blur(90px); opacity:.5; will-change:transform;}
.site-bg .orb.o1{width:44vw; height:44vw; left:-8vw; top:-6vw; background:radial-gradient(circle, rgba(46,86,255,.42), transparent 68%); animation:orbDrift 26s var(--ease-in-out) infinite;}
.site-bg .orb.o2{width:38vw; height:38vw; right:-6vw; top:22vh; background:radial-gradient(circle, rgba(2,52,248,.30), transparent 68%); animation:orbDrift 32s var(--ease-in-out) infinite reverse;}
.site-bg .orb.o3{width:34vw; height:34vw; left:24vw; bottom:-12vw; background:radial-gradient(circle, rgba(169,188,255,.55), transparent 70%); animation:orbDrift 38s var(--ease-in-out) infinite;}
@keyframes orbDrift{
  0%,100%{transform:translate3d(0,0,0) scale(1);}
  33%{transform:translate3d(4vw,-3vh,0) scale(1.12);}
  66%{transform:translate3d(-3vw,4vh,0) scale(.94);}
}
.site-bg .noise{
  position:absolute; inset:0; opacity:.35; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E");
}

/* Partículas geométricas flutuantes */
.float-shape{position:absolute; z-index:-1; pointer-events:none; opacity:.5;}
.float-shape svg{width:100%; height:100%; overflow:visible;}
.float-shape.fs1{width:74px; height:74px; top:16%; left:5%; animation:floatY 12s var(--ease-in-out) infinite;}
.float-shape.fs2{width:44px; height:44px; top:64%; right:7%; animation:floatY 15s var(--ease-in-out) infinite reverse;}
.float-shape.fs3{width:58px; height:58px; bottom:12%; left:12%; animation:floatY 18s var(--ease-in-out) infinite;}
@keyframes floatY{
  0%,100%{transform:translate3d(0,0,0) rotate(0deg);}
  50%{transform:translate3d(0,-34px,0) rotate(22deg);}
}

/* ==========================================================================
   3. PRELOADER
   ========================================================================== */
.preloader{
  position:fixed; inset:0; z-index:900;
  display:grid; place-items:center;
  background:var(--brand);
  overflow:hidden;
}
.preloader__inner{position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; gap:1.6rem;}
.preloader__logo{
  width:min(300px, 62vw);
  clip-path:inset(0 100% 0 0);
  animation:plLogo 1.05s var(--ease-in-out) .15s forwards;
}
/* No preloader o fundo já é o azul da marca: o wordmark transparente entra direto. */
.preloader__logo img{width:100%; height:auto; display:block;}
@keyframes plLogo{to{clip-path:inset(0 0 0 0);}}
.preloader__bar{
  width:min(300px, 62vw); height:3px; border-radius:99px;
  background:rgba(255,255,255,.22); overflow:hidden;
}
.preloader__bar span{
  display:block; height:100%; width:0%; border-radius:99px;
  background:#fff; transition:width .3s linear;
}
.preloader__meta{
  display:flex; justify-content:space-between; width:min(300px, 62vw);
  font-family:var(--font-mono); font-size:.7rem; letter-spacing:.16em;
  text-transform:uppercase; color:rgba(255,255,255,.72);
}
.preloader__panels{position:absolute; inset:0; display:flex; z-index:3; pointer-events:none;}
.preloader__panels span{flex:1; background:var(--brand); transform:translateY(0);}
.preloader.is-done .preloader__inner{opacity:0; transform:translateY(-14px); transition:opacity .26s var(--ease), transform .34s var(--ease-out);}
.preloader.is-done .preloader__panels span{
  transform:translateY(-102%);
  transition:transform .55s var(--ease-in-out);
}
.preloader.is-done .preloader__panels span:nth-child(1){transition-delay:.02s;}
.preloader.is-done .preloader__panels span:nth-child(2){transition-delay:.06s;}
.preloader.is-done .preloader__panels span:nth-child(3){transition-delay:.10s;}
.preloader.is-done .preloader__panels span:nth-child(4){transition-delay:.14s;}
.preloader.is-done .preloader__panels span:nth-child(5){transition-delay:.18s;}

/* ==========================================================================
   4. TRANSIÇÃO DE PÁGINA
   ========================================================================== */
.page-fade{position:fixed; inset:0; z-index:880; display:flex; pointer-events:none;}
.page-fade span{flex:1; background:var(--brand); transform:translateY(102%);}
.page-fade.is-out span{transform:translateY(0); transition:transform .7s var(--ease-in-out);}
.page-fade.is-out span:nth-child(2){transition-delay:.06s;}
.page-fade.is-out span:nth-child(3){transition-delay:.12s;}
.page-fade.is-out span:nth-child(4){transition-delay:.18s;}
.page-fade.is-out span:nth-child(5){transition-delay:.24s;}

/* ==========================================================================
   5. CURSOR CUSTOMIZADO
   ========================================================================== */
.cursor,.cursor-dot{position:fixed; top:0; left:0; z-index:950; pointer-events:none; opacity:0;}
.cursor{
  width:38px; height:38px; margin:-19px 0 0 -19px; border-radius:50%;
  border:1.5px solid var(--brand);
  transition:width .35s var(--ease-out), height .35s var(--ease-out),
             margin .35s var(--ease-out), background-color .35s var(--ease-out),
             border-color .35s var(--ease-out), opacity .3s;
}
.cursor-dot{width:6px; height:6px; margin:-3px 0 0 -3px; border-radius:50%; background:var(--brand); transition:opacity .3s, transform .3s var(--ease-out);}
.cursor.is-on,.cursor-dot.is-on{opacity:1;}
.cursor.is-hover{width:74px; height:74px; margin:-37px 0 0 -37px; background:rgba(2,52,248,.10);}
.cursor.is-view{width:96px; height:96px; margin:-48px 0 0 -48px; background:var(--brand); border-color:var(--brand);}
.cursor.is-view::after{
  content:attr(data-label); position:absolute; inset:0; display:grid; place-items:center;
  font-family:var(--font-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:#fff;
}
.cursor.is-view + .cursor-dot,.cursor.is-hover + .cursor-dot{transform:scale(0);}
.cursor.on-dark{border-color:#fff;}
.cursor.on-dark.is-hover{background:rgba(255,255,255,.14);}
@media (max-width:1024px), (pointer:coarse){.cursor,.cursor-dot{display:none;}}

/* ==========================================================================
   6. BARRA DE PROGRESSO
   ========================================================================== */
.scroll-progress{
  position:fixed; top:0; left:0; height:3px; width:0%; z-index:500;
  background:linear-gradient(90deg, var(--brand), var(--blue-400));
  box-shadow:0 0 16px rgba(2,52,248,.55);
  transition:width .1s linear;
}

/* ==========================================================================
   7. HEADER + NAVEGAÇÃO
   ========================================================================== */
#siteHeader{
  position:fixed; top:0; left:0; right:0; z-index:600;
  height:var(--nav-h);
  display:flex; align-items:center;
  transition:transform .5s var(--ease-out), background-color .4s var(--ease), box-shadow .4s var(--ease), height .4s var(--ease);
}
#siteHeader::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  border-bottom:1px solid transparent;
  opacity:0; transition:opacity .4s var(--ease), border-color .4s var(--ease);
}
#siteHeader.scrolled{height:66px;}
#siteHeader.scrolled::before{opacity:1; border-bottom-color:var(--line);}
#siteHeader.is-hidden{transform:translateY(-120%);}
#siteHeader .container{display:flex; align-items:center; justify-content:space-between; gap:1.5rem;}

/* Marca */
.brand{display:inline-flex; align-items:center; gap:.7rem;}
/* Placa da marca. Usa o wordmark já recortado com fundo transparente
   (assets/logov3-wordmark.png) — nada de object-fit/crop aqui.
   Flex em vez de grid: com place-items:center a altura 100% da imagem
   resolvia contra uma linha auto e ela voltava ao tamanho intrínseco. */
.brand__tile{
  position:relative; display:flex; align-items:center; justify-content:center;
  height:38px; padding:0 .85rem;
  border-radius:11px; background:var(--brand); overflow:hidden;
  box-shadow:0 10px 24px -12px rgba(2,52,248,.7);
  transition:transform .5s var(--ease-spring), box-shadow .5s var(--ease);
}
.brand__tile img{height:17px; width:auto; display:block;}
.brand__tile::after{
  content:""; position:absolute; top:0; left:-60%; width:40%; height:100%;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.45), transparent);
  transform:skewX(-18deg);
}
.brand:hover .brand__tile{transform:translateY(-2px) rotate(-3deg);}
.brand:hover .brand__tile::after{animation:tileShine .9s var(--ease-out);}
@keyframes tileShine{from{left:-60%;} to{left:120%;}}
/* Fallback caso o PNG da logo ainda não esteja em /assets */
.brand__tile .brand__fallback{
  display:none; font-family:var(--font-display); font-weight:500; font-size:1.35rem;
  letter-spacing:-.045em; color:#fff !important;
}
.no-img .brand__tile img{display:none;}
.no-img .brand__tile .brand__fallback{display:block;}
.preloader__logo.no-img::after{
  content:"kaivor"; display:block; text-align:center;
  font-family:var(--font-display); font-weight:500; font-size:clamp(3rem,9vw,4.6rem);
  letter-spacing:-.05em; color:#fff;
}
.brand__label{
  font-family:var(--font-mono); font-size:.66rem; letter-spacing:.24em;
  text-transform:uppercase; color:var(--ink-soft); padding-top:2px;
}

/* Nav */
.main-nav{display:flex; align-items:center; gap:.35rem;}
.main-nav a{
  position:relative; padding:.55rem .85rem; border-radius:var(--r-pill);
  font-size:.9rem; font-weight:500; color:var(--ink-soft);
  transition:color .3s var(--ease);
}
.main-nav a::before{
  content:""; position:absolute; inset:0; border-radius:var(--r-pill);
  background:var(--blue-100); transform:scale(.6); opacity:0;
  transition:transform .45s var(--ease-spring), opacity .3s var(--ease);
}
.main-nav a span{position:relative; z-index:1;}
.main-nav a:hover,.main-nav a.active{color:var(--brand);}
.main-nav a:hover::before,.main-nav a.active::before{transform:scale(1); opacity:1;}

.header-actions{display:flex; align-items:center; gap:.6rem;}

/* Botões */
.btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  padding:.85rem 1.5rem; border-radius:var(--r-pill);
  font-size:.9rem; font-weight:600; letter-spacing:-.01em;
  overflow:hidden; isolation:isolate; white-space:nowrap;
  transition:transform .45s var(--ease-out), color .35s var(--ease), box-shadow .45s var(--ease), border-color .35s var(--ease);
}
.btn svg{width:16px; height:16px; flex:none; transition:transform .45s var(--ease-out);}
.btn::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:var(--brand-deep);
  transform:translateY(101%); border-radius:inherit;
  transition:transform .55s var(--ease-in-out);
}
.btn:hover::before{transform:translateY(0);}
.btn:hover svg{transform:translateX(4px);}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--brand); color:#fff; box-shadow:0 16px 34px -16px rgba(2,52,248,.85);}
.btn-primary:hover{box-shadow:0 22px 44px -18px rgba(2,52,248,.95);}
.btn-outline{border:1.5px solid var(--line); color:var(--ink); background:rgba(255,255,255,.6);}
.btn-outline:hover{color:#fff; border-color:var(--brand-deep);}
.btn-ghost{color:var(--brand); padding-inline:1rem;}
.btn-ghost::before{display:none;}
.btn-ghost:hover{color:var(--brand-deep);}
.btn-light{background:#fff; color:var(--brand);}
.btn-light::before{background:var(--blue-100);}
.btn-light:hover{color:var(--brand-deep);}
.btn-lg{padding:1.05rem 1.9rem; font-size:.98rem;}

/* Toggle mobile */
.nav-toggle{
  display:none; width:44px; height:44px; border-radius:50%;
  border:1.5px solid var(--line); background:#fff;
  position:relative; flex:none;
}
.nav-toggle span{
  position:absolute; left:50%; width:17px; height:1.8px; border-radius:2px; background:var(--ink);
  transform:translateX(-50%);
  transition:transform .5s var(--ease-in-out), opacity .3s var(--ease), width .4s var(--ease);
}
.nav-toggle span:nth-child(1){top:16px;}
.nav-toggle span:nth-child(2){top:21px; width:12px;}
.nav-toggle span:nth-child(3){top:26px;}
.nav-toggle.open{background:var(--brand); border-color:var(--brand);}
.nav-toggle.open span{background:#fff;}
.nav-toggle.open span:nth-child(1){transform:translateX(-50%) translateY(5px) rotate(45deg);}
.nav-toggle.open span:nth-child(2){opacity:0; width:0;}
.nav-toggle.open span:nth-child(3){transform:translateX(-50%) translateY(-5px) rotate(-45deg);}

/* Painel mobile */
.mobile-panel{
  position:fixed; inset:0; z-index:590;
  background:var(--brand); color:#fff;
  padding:calc(var(--nav-h) + 2.4rem) 7% 3rem;
  display:flex; flex-direction:column; gap:.25rem;
  clip-path:circle(0% at 92% 6%);
  transition:clip-path .8s var(--ease-in-out);
  overflow-y:auto;
}
.mobile-panel.open{clip-path:circle(150% at 92% 6%);}
.mobile-panel > a{
  font-family:var(--font-display); font-size:2.1rem; font-weight:500; letter-spacing:-.04em;
  padding:.5rem 0; border-bottom:1px solid rgba(255,255,255,.16);
  opacity:0; transform:translateY(24px);
  transition:opacity .6s var(--ease-out), transform .7s var(--ease-out);
}
.mobile-panel.open > a{opacity:1; transform:none;}
.mobile-panel.open > a:nth-child(1){transition-delay:.24s;}
.mobile-panel.open > a:nth-child(2){transition-delay:.30s;}
.mobile-panel.open > a:nth-child(3){transition-delay:.36s;}
.mobile-panel.open > a:nth-child(4){transition-delay:.42s;}
.mobile-panel.open > a:nth-child(5){transition-delay:.48s;}
.mobile-panel .mp-cta{
  margin-top:2rem; align-self:flex-start; border-bottom:none;
  font-family:var(--font-body); font-size:.95rem; font-weight:600;
  background:#fff; color:var(--brand); padding:.9rem 1.7rem; border-radius:var(--r-pill);
  transition-delay:.54s;
}
.mobile-panel .mp-meta{
  margin-top:auto; padding-top:2rem;
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.14em;
  text-transform:uppercase; color:rgba(255,255,255,.6);
}

/* ==========================================================================
   8. TÍTULOS DE SEÇÃO
   ========================================================================== */
.eyebrow{
  display:inline-flex; align-items:center; gap:.6rem;
  font-family:var(--font-mono); font-size:.72rem; font-weight:500;
  letter-spacing:.18em; text-transform:uppercase; color:var(--brand);
  margin-bottom:1.2rem;
}
.eyebrow::before{
  content:""; width:22px; height:2px; border-radius:2px; background:var(--brand);
  transform-origin:left; animation:eyebrowLine 2.6s var(--ease-in-out) infinite;
}
@keyframes eyebrowLine{0%,100%{transform:scaleX(.4);} 50%{transform:scaleX(1);}}
.on-dark .eyebrow,.section--dark .eyebrow{color:var(--blue-300);}
.on-dark .eyebrow::before,.section--dark .eyebrow::before{background:var(--blue-300);}

.section-head{max-width:760px; margin-bottom:3.4rem;}
.section-head.center{margin-inline:auto; text-align:center;}
.section-head.center .eyebrow{justify-content:center;}
.section-head h2{font-size:clamp(2rem, 4.4vw, 3.4rem); margin-bottom:1rem;}
.section-head p{color:var(--ink-soft); font-size:1.03rem; line-height:1.7;}
.section-pad{padding:7rem 0;}

/* ==========================================================================
   9. HERO
   ========================================================================== */
.hero{
  position:relative;
  min-height:100svh;
  padding-top:calc(var(--nav-h) + 4.5rem); padding-bottom:4rem;
  display:grid; grid-template-columns:1.05fr .95fr; gap:3rem; align-items:center;
}
.hero-badge{
  display:inline-flex; align-items:center; gap:.6rem;
  padding:.42rem .95rem .42rem .5rem; border-radius:var(--r-pill);
  background:#fff; border:1px solid var(--line);
  font-size:.78rem; font-weight:500; color:var(--ink-soft);
  box-shadow:0 10px 24px -18px rgba(7,20,90,.6);
  margin-bottom:1.6rem;
}
.hero-badge b{
  display:inline-flex; align-items:center; gap:.35rem;
  background:var(--blue-100); color:var(--brand);
  font-family:var(--font-mono); font-size:.66rem; font-weight:500;
  letter-spacing:.1em; text-transform:uppercase;
  padding:.28rem .6rem; border-radius:var(--r-pill);
}
.hero-badge .dot{width:6px; height:6px; border-radius:50%; background:var(--brand); animation:livePulse 1.8s ease-in-out infinite;}
@keyframes livePulse{0%,100%{box-shadow:0 0 0 0 rgba(2,52,248,.55);} 70%{box-shadow:0 0 0 7px rgba(2,52,248,0);}}

.hero h1{
  font-size:clamp(2.6rem, 6.2vw, 5.05rem);
  line-height:.98; letter-spacing:-.045em; margin-bottom:1.6rem;
}
.hero h1 .accent{color:var(--brand); position:relative;}
.hero h1 .accent svg{
  position:absolute; left:0; bottom:-.14em; width:100%; height:.28em; overflow:visible;
}
.hero h1 .accent svg path{
  stroke:var(--brand); stroke-width:7; fill:none; stroke-linecap:round;
  stroke-dasharray:240; stroke-dashoffset:240;
}
.hero h1.is-in .accent svg path{
  animation:heroUnderline 1.1s var(--ease-out) .75s forwards;
}
@keyframes heroUnderline{to{stroke-dashoffset:0;}}
.hero .lead{
  color:var(--ink-soft); font-size:1.08rem; line-height:1.75; max-width:52ch; margin-bottom:2.2rem;
}
.hero-cta{display:flex; flex-wrap:wrap; gap:.8rem; margin-bottom:3.2rem;}
.hero-stats{display:flex; flex-wrap:wrap; gap:2.6rem;}
.hero-stats .stat b{
  display:block; font-family:var(--font-display); font-size:2.1rem; font-weight:600;
  letter-spacing:-.04em; color:var(--ink); line-height:1;
}
.hero-stats .stat span{
  display:block; margin-top:.35rem;
  font-size:.8rem; color:var(--ink-soft); letter-spacing:.01em;
}
.hero-stats .stat{position:relative; padding-left:1rem;}
.hero-stats .stat::before{
  content:""; position:absolute; left:0; top:.2rem; bottom:.2rem; width:2px; border-radius:2px;
  background:linear-gradient(var(--brand), transparent);
}

/* Cena animada do hero */
.hero-visual{position:relative; perspective:1400px;}
.hero-stage{
  position:relative; width:100%; max-width:560px; margin-inline:auto;
  transform-style:preserve-3d;
  transition:transform .9s var(--ease-out);
}
.hero-stage svg{width:100%; height:auto; overflow:visible;}

/* — camadas da cena — */
.sc-window{animation:scFloat 9s var(--ease-in-out) infinite;}
@keyframes scFloat{0%,100%{transform:translateY(0);} 50%{transform:translateY(-14px);}}
.sc-dot{animation:scDot 2.4s ease-in-out infinite;}
.sc-dot:nth-of-type(2){animation-delay:.2s;}
.sc-dot:nth-of-type(3){animation-delay:.4s;}
@keyframes scDot{0%,100%{opacity:.35;} 50%{opacity:1;}}
.sc-line{transform-origin:left center; animation:scLine 4.6s var(--ease-in-out) infinite;}
.sc-line.d1{animation-delay:.2s;} .sc-line.d2{animation-delay:.45s;} .sc-line.d3{animation-delay:.7s;}
@keyframes scLine{0%,12%{transform:scaleX(0);} 30%,72%{transform:scaleX(1);} 92%,100%{transform:scaleX(0);}}
.sc-block{transform-origin:center; animation:scBlock 5.6s var(--ease-out) infinite;}
.sc-block.b2{animation-delay:.35s;} .sc-block.b3{animation-delay:.7s;}
@keyframes scBlock{
  0%,8%{opacity:0; transform:translateY(16px) scale(.94);}
  22%,74%{opacity:1; transform:translateY(0) scale(1);}
  90%,100%{opacity:0; transform:translateY(-10px) scale(.98);}
}
.sc-bar{transform-origin:bottom; animation:scBar 3.4s var(--ease-out) infinite;}
.sc-bar.g2{animation-delay:.14s;} .sc-bar.g3{animation-delay:.28s;} .sc-bar.g4{animation-delay:.42s;}
@keyframes scBar{0%,100%{transform:scaleY(.25);} 50%{transform:scaleY(1);}}
.sc-ring{transform-origin:center; animation:scSpin 22s linear infinite;}
.sc-ring-rev{transform-origin:center; animation:scSpin 30s linear infinite reverse;}
@keyframes scSpin{to{transform:rotate(360deg);}}
.sc-cursor{animation:scCursor 6.5s var(--ease-in-out) infinite;}
@keyframes scCursor{
  0%{transform:translate(0,0);}
  22%{transform:translate(-64px,-38px);}
  38%{transform:translate(-64px,-38px) scale(.86);}
  46%{transform:translate(-64px,-38px) scale(1);}
  70%{transform:translate(46px,54px);}
  100%{transform:translate(0,0);}
}
.sc-card{animation:scCard 7s var(--ease-in-out) infinite;}
.sc-card.c2{animation-delay:1.2s;}
@keyframes scCard{
  0%,100%{transform:translate3d(0,0,0) rotate(0deg);}
  50%{transform:translate3d(-8px,-20px,0) rotate(-3deg);}
}
.sc-pulse{transform-origin:center; animation:scPulse 3s var(--ease-out) infinite;}
@keyframes scPulse{0%{r:6; opacity:.9;} 100%{r:34; opacity:0;}}
.sc-spark{animation:scSpark 4s var(--ease-in-out) infinite;}
.sc-spark.s2{animation-delay:1.1s;} .sc-spark.s3{animation-delay:2.2s;}
@keyframes scSpark{0%,100%{opacity:0; transform:scale(.4);} 50%{opacity:1; transform:scale(1);}}

.scroll-cue{
  position:absolute; bottom:2rem; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:.6rem;
  font-family:var(--font-mono); font-size:.64rem; letter-spacing:.22em;
  text-transform:uppercase; color:var(--ink-soft);
}
.scroll-cue i{display:block; width:1px; height:44px; background:linear-gradient(var(--brand), transparent); position:relative; overflow:hidden;}
.scroll-cue i::after{
  content:""; position:absolute; top:0; left:0; width:100%; height:14px; background:var(--brand);
  animation:cueRun 2.2s var(--ease-in-out) infinite;
}
@keyframes cueRun{0%{transform:translateY(-100%);} 100%{transform:translateY(320%);}}

/* ==========================================================================
   10. SOBRE
   ========================================================================== */
.about{padding:7rem 0;}
.about-grid{display:grid; grid-template-columns:1fr 1fr; gap:4.5rem; align-items:center;}
.about h2{font-size:clamp(1.9rem, 3.6vw, 2.9rem); margin-bottom:1.4rem;}
.about .lead{color:var(--ink-soft); line-height:1.8; margin-bottom:2rem;}
.check-list{display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1.4rem;}
.check-list li{
  display:flex; align-items:center; gap:.7rem;
  font-weight:500; font-size:.95rem;
}
.check-list li svg{
  width:22px; height:22px; flex:none; padding:4px; border-radius:50%;
  background:var(--blue-100); stroke:var(--brand); fill:none; stroke-width:2.6;
  stroke-linecap:round; stroke-linejoin:round;
  transition:transform .5s var(--ease-spring), background-color .4s var(--ease);
}
.check-list li:hover svg{transform:rotate(-8deg) scale(1.15); background:var(--brand); stroke:#fff;}

.about-visual{position:relative;}
.about-panel{
  position:relative; border-radius:var(--r-lg); overflow:hidden;
  background:var(--navy);
  box-shadow:0 50px 90px -40px rgba(5,10,40,.7);
  aspect-ratio:1/.92;
}
.about-panel::before{
  content:""; position:absolute; inset:0;
  background:
    radial-gradient(circle at 20% 15%, rgba(46,86,255,.5), transparent 55%),
    radial-gradient(circle at 85% 90%, rgba(2,52,248,.55), transparent 55%);
}
.about-panel svg{position:relative; width:100%; height:100%;}
/* Ancorado DENTRO do painel: encostado na borda o card era cortado pelo
   overflow-x da página em telas menores. */
.about-float{
  position:absolute; right:1.25rem; bottom:1.25rem;
  max-width:calc(100% - 2.5rem);
  background:#fff; border-radius:var(--r-md); padding:1rem 1.2rem;
  box-shadow:0 30px 60px -26px rgba(7,20,90,.5);
  display:flex; align-items:center; gap:.9rem;
  animation:floatCard 6s var(--ease-in-out) infinite;
}
@keyframes floatCard{0%,100%{transform:translateY(0);} 50%{transform:translateY(-16px);}}
.about-float .ico{
  width:38px; height:38px; border-radius:11px; background:var(--blue-100);
  display:grid; place-items:center; flex:none;
}
.about-float .ico svg{width:20px; height:20px; stroke:var(--brand); fill:none; stroke-width:2.2;}
.about-float b{display:block; font-family:var(--font-display); font-size:1.15rem; line-height:1.1;}
.about-float .txt{font-size:.74rem; color:var(--ink-soft); white-space:nowrap;}

/* ==========================================================================
   12. CARDS DE DIFERENCIAIS / SERVIÇOS
   ========================================================================== */
.features{padding:6rem 0;}
.feature-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1.4rem;}
.card{
  position:relative; isolation:isolate; overflow:hidden;
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:2.2rem 1.8rem;
  transition:transform .6s var(--ease-out), box-shadow .6s var(--ease), border-color .5s var(--ease);
}
.card::before{
  content:""; position:absolute; inset:0; z-index:-1; opacity:0;
  background:radial-gradient(340px circle at var(--mx,50%) var(--my,50%), rgba(2,52,248,.10), transparent 62%);
  transition:opacity .5s var(--ease);
}
.card:hover::before{opacity:1;}
.card:hover{transform:translateY(-8px); box-shadow:0 40px 70px -34px rgba(7,20,90,.42); border-color:var(--blue-300);}
.card h3{font-size:1.22rem; margin-bottom:.7rem;}
.card p{color:var(--ink-soft); font-size:.93rem; line-height:1.7;}
.card__num{
  position:absolute; top:1.3rem; right:1.5rem;
  font-family:var(--font-mono); font-size:.7rem; letter-spacing:.12em; color:var(--blue-300);
}

/* Ícone animado */
.ico-box{
  width:60px; height:60px; border-radius:17px; margin-bottom:1.5rem;
  display:grid; place-items:center; position:relative;
  background:var(--blue-100);
  transition:background-color .5s var(--ease), transform .6s var(--ease-spring);
}
.ico-box svg{width:28px; height:28px; fill:none; stroke:var(--brand); stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; overflow:visible;}
.card:hover .ico-box{background:var(--brand); transform:translateY(-3px) rotate(-5deg);}
.card:hover .ico-box svg{stroke:#fff;}
/* micro-loops por tipo de ícone */
.ico-spin{transform-origin:center; animation:scSpin 12s linear infinite;}
.ico-pulse{transform-origin:center; animation:icoPulse 2.6s var(--ease-in-out) infinite;}
@keyframes icoPulse{0%,100%{transform:scale(1); opacity:1;} 50%{transform:scale(1.14); opacity:.65;}}
.ico-bob{animation:icoBob 3s var(--ease-in-out) infinite;}
@keyframes icoBob{0%,100%{transform:translateY(0);} 50%{transform:translateY(-2.5px);}}
.ico-dash{stroke-dasharray:4 5; animation:icoDash 3s linear infinite;}
@keyframes icoDash{to{stroke-dashoffset:-18;}}
.ico-blink{animation:icoBlink 2.4s var(--ease-in-out) infinite;}
@keyframes icoBlink{0%,100%{opacity:.25;} 50%{opacity:1;}}
.ico-sweep{transform-origin:center; animation:icoSweep 4s var(--ease-in-out) infinite;}
@keyframes icoSweep{0%,100%{transform:rotate(-14deg);} 50%{transform:rotate(14deg);}}
.ico-rise{animation:icoRise 3.2s var(--ease-in-out) infinite;}
.ico-rise.r2{animation-delay:.2s;} .ico-rise.r3{animation-delay:.4s;}
@keyframes icoRise{0%,100%{transform:translateY(0); opacity:.8;} 50%{transform:translateY(-3px); opacity:1;}}

/* Serviços */
.services{padding:6rem 0;}
.service-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:1.4rem;}
/* Com número ímpar de serviços, o último ocupa a linha inteira em vez de
   deixar um buraco na grade. */
.service-grid .service-card:last-child:nth-child(odd){grid-column:1/-1;}
.service-card{
  position:relative; overflow:hidden; isolation:isolate;
  border-radius:var(--r-lg); border:1px solid var(--line); background:var(--paper);
  padding:2.6rem 2.2rem; display:flex; gap:1.6rem; align-items:flex-start;
  transition:transform .6s var(--ease-out), box-shadow .6s var(--ease), color .5s var(--ease);
}
.service-card::before{
  content:""; position:absolute; inset:0; z-index:-1; background:var(--brand);
  transform:translateY(101%); transition:transform .7s var(--ease-in-out);
}
.service-card:hover::before{transform:translateY(0);}
.service-card:hover{color:#fff; transform:translateY(-6px); box-shadow:0 40px 80px -34px rgba(2,52,248,.6);}
.service-card:hover p{color:rgba(255,255,255,.82);}
.service-card:hover .ico-box{background:rgba(255,255,255,.16);}
.service-card:hover .ico-box svg{stroke:#fff;}
.service-card:hover .service-card__arrow{background:#fff; color:var(--brand); transform:rotate(-45deg);}
.service-card .ico-box{margin-bottom:0; flex:none;}
.service-card h3{font-size:1.35rem; margin-bottom:.6rem;}
.service-card p{color:var(--ink-soft); line-height:1.7; font-size:.95rem; transition:color .5s var(--ease);}
.service-card__arrow{
  position:absolute; right:1.6rem; bottom:1.6rem;
  width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  background:var(--blue-100); color:var(--brand);
  transition:transform .6s var(--ease-spring), background-color .5s var(--ease), color .5s var(--ease);
}
.service-card__arrow svg{width:15px; height:15px; stroke:currentColor; stroke-width:2.4; fill:none; stroke-linecap:round;}

/* ==========================================================================
   13. PROCESSO
   ========================================================================== */
.process{padding:7rem 0;}
.timeline{position:relative; display:grid; grid-template-columns:repeat(5,1fr); gap:1.2rem; padding-top:3.4rem;}
.timeline__rail{
  position:absolute; top:2.15rem; left:6%; right:6%; height:2px; background:var(--line); border-radius:2px; overflow:hidden;
}
.timeline__rail i{
  display:block; height:100%; width:0%; border-radius:2px;
  background:linear-gradient(90deg, var(--brand), var(--blue-400));
  transition:width .1s linear;
}
.step{position:relative; text-align:center;}
.step__num{
  width:56px; height:56px; margin:0 auto 1.4rem; border-radius:50%;
  display:grid; place-items:center; position:relative;
  background:#fff; border:1.5px solid var(--line);
  font-family:var(--font-mono); font-size:.85rem; color:var(--ink-soft);
  transition:background-color .5s var(--ease), color .5s var(--ease), border-color .5s var(--ease), transform .6s var(--ease-spring);
}
.step__num::after{
  content:""; position:absolute; inset:-6px; border-radius:50%; border:1.5px solid var(--brand);
  opacity:0; transform:scale(.8); transition:opacity .5s var(--ease), transform .6s var(--ease-spring);
}
.step.is-active .step__num{background:var(--brand); border-color:var(--brand); color:#fff; transform:scale(1.06);}
.step.is-active .step__num::after{opacity:.35; transform:scale(1);}
.step h3{font-size:1.1rem; margin-bottom:.5rem;}
.step p{color:var(--ink-soft); font-size:.88rem; line-height:1.65;}

/* ==========================================================================
   14. PORTFÓLIO
   ========================================================================== */
.portfolio{padding:6rem 0;}
.portfolio-head{display:flex; justify-content:space-between; align-items:flex-end; gap:2rem; margin-bottom:3rem; flex-wrap:wrap;}
.portfolio-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:2.4rem 1.6rem;}
/* Duas colunas: os prints são widescreen, em três colunas ficariam pequenos
   demais para se enxergar o design do cliente. */
.projects-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:2.6rem 1.6rem;}
/* O card é o print + legenda embaixo. A legenda saiu de cima da imagem:
   sobreposta, ela escondia justamente o hero do site do cliente. */
.project-card{
  position:relative; display:block; cursor:pointer;
  transition:transform .6s var(--ease-out), opacity .5s var(--ease);
}
.project-card.hidden{display:none;}
.project-card:hover{transform:translateY(-6px);}

/* Moldura do print — proporção idêntica à dos arquivos (1600x785),
   então a imagem entra inteira, sem corte nas laterais. */
.project-card .p-shot{
  position:relative; overflow:hidden;
  aspect-ratio:1600/785;
  border-radius:var(--r-md);
  background:var(--navy); border:1px solid var(--line);
  box-shadow:0 22px 46px -26px rgba(7,20,90,.45);
  transition:box-shadow .6s var(--ease), border-color .5s var(--ease);
}
.project-card:hover .p-shot{
  box-shadow:0 42px 80px -32px rgba(7,20,90,.5);
  border-color:var(--blue-300);
}
.project-card .p-img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:top center;
  transition:transform 1.2s var(--ease-out);
}
.project-card:hover .p-img{transform:scale(1.035);}

.project-card .p-content{padding:1.15rem .15rem 0;}
.project-card .p-tag{
  display:inline-block;
  font-family:var(--font-mono); font-size:.64rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--brand); background:var(--blue-100);
  padding:.3rem .65rem; border-radius:var(--r-pill);
}
.project-card h3{
  font-size:1.2rem; letter-spacing:-.03em; color:var(--ink);
  margin-top:.6rem;
  transition:color .35s var(--ease);
}
.project-card:hover h3{color:var(--brand);}
.project-card .p-count{
  display:block; margin-top:.3rem;
  font-size:.82rem; color:var(--ink-soft);
}
.project-card .p-line{
  position:absolute; inset:0; width:100%; height:100%;
  pointer-events:none; z-index:2;
}
.project-card .p-line rect{
  fill:none; stroke:rgba(255,255,255,.9); stroke-width:2;
  stroke-dasharray:342; stroke-dashoffset:342;
  transition:stroke-dashoffset 1.1s var(--ease-out);
}
.project-card:hover .p-line rect{stroke-dashoffset:0;}

/* Filtros */
.filter-bar{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:2.4rem;}
.filter-btn{
  position:relative; padding:.62rem 1.25rem; border-radius:var(--r-pill);
  border:1.5px solid var(--line); background:#fff;
  font-size:.86rem; font-weight:500; color:var(--ink-soft);
  transition:color .35s var(--ease), border-color .35s var(--ease), transform .4s var(--ease-out);
  overflow:hidden; isolation:isolate;
}
.filter-btn::before{
  content:""; position:absolute; inset:0; z-index:-1; background:var(--brand);
  transform:scaleY(0); transform-origin:bottom; transition:transform .45s var(--ease-in-out);
}
.filter-btn:hover{color:var(--brand); border-color:var(--blue-300);}
.filter-btn.active{color:#fff; border-color:var(--brand);}
.filter-btn.active::before{transform:scaleY(1);}

/* ==========================================================================
   15. FAIXA DE NÚMEROS
   ========================================================================== */
.stats-band{background:var(--navy); color:#fff; padding:5rem 0; overflow:hidden;}
.stats-band::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at 15% 20%, rgba(46,86,255,.35), transparent 50%),
             radial-gradient(circle at 85% 80%, rgba(2,52,248,.4), transparent 52%);
}
.stats-grid{position:relative; display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; text-align:center;}
.stats-grid .s-item b{
  display:block; font-family:var(--font-display); font-size:clamp(2.2rem,4.6vw,3.4rem);
  font-weight:600; letter-spacing:-.045em; line-height:1;
  background:linear-gradient(180deg,#fff,var(--blue-300)); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.stats-grid .s-item span{display:block; margin-top:.6rem; font-size:.84rem; color:rgba(255,255,255,.62);}
.stats-grid .s-item{position:relative;}
.stats-grid .s-item + .s-item::before{
  content:""; position:absolute; left:0; top:15%; bottom:15%; width:1px; background:rgba(255,255,255,.12);
}

/* ==========================================================================
   16. DEPOIMENTOS
   ========================================================================== */
.testimonials{padding:7rem 0; overflow:hidden;}
.t-wrap{position:relative; max-width:900px; margin-inline:auto; perspective:1600px;}
.t-viewport{overflow:hidden; border-radius:var(--r-lg); padding:.4rem;}
.t-track{display:flex; transition:transform .95s var(--ease-in-out);}
.t-card{
  flex:0 0 100%; padding:3rem 3rem 2.4rem;
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-lg);
  transition:opacity .8s var(--ease), transform .9s var(--ease-out), filter .8s var(--ease);
  opacity:.35; transform:scale(.93); filter:blur(1px);
}
.t-card.is-active{opacity:1; transform:scale(1); filter:none; box-shadow:var(--shadow);}
.t-quote{width:42px; height:42px; margin-bottom:1.4rem; opacity:.9;}
.t-quote svg{width:100%; height:100%; fill:var(--blue-300);}
.t-stars{display:flex; gap:.28rem; margin-bottom:1.2rem;}
.t-stars svg{width:17px; height:17px; fill:var(--brand); animation:starPop .6s var(--ease-spring) backwards;}
.t-card.is-active .t-stars svg:nth-child(1){animation-delay:.10s;}
.t-card.is-active .t-stars svg:nth-child(2){animation-delay:.18s;}
.t-card.is-active .t-stars svg:nth-child(3){animation-delay:.26s;}
.t-card.is-active .t-stars svg:nth-child(4){animation-delay:.34s;}
.t-card.is-active .t-stars svg:nth-child(5){animation-delay:.42s;}
@keyframes starPop{from{opacity:0; transform:scale(.3) rotate(-40deg);} to{opacity:1; transform:none;}}
.t-card blockquote{
  font-family:var(--font-display); font-size:clamp(1.15rem,2.1vw,1.6rem);
  font-weight:400; line-height:1.5; letter-spacing:-.02em; margin-bottom:2rem;
}
.t-author-row{display:flex; align-items:center; gap:.9rem;}
.t-avatar{
  width:46px; height:46px; border-radius:50%; flex:none; display:grid; place-items:center;
  background:var(--brand); color:#fff; font-family:var(--font-display); font-weight:600; font-size:1.1rem;
}
.t-author{font-weight:600; font-size:.95rem;}
.t-role{font-size:.82rem; color:var(--ink-soft);}
.t-controls{display:flex; align-items:center; justify-content:center; gap:1.2rem; margin-top:2.2rem;}
.t-arrow{
  width:48px; height:48px; border-radius:50%; border:1.5px solid var(--line); background:#fff;
  display:grid; place-items:center; color:var(--ink);
  transition:background-color .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease), transform .5s var(--ease-spring);
}
.t-arrow svg{width:17px; height:17px; stroke:currentColor; fill:none;}
.t-arrow:hover{background:var(--brand); border-color:var(--brand); color:#fff; transform:scale(1.08);}
.t-dots{display:flex; gap:.5rem;}
.t-dot{width:8px; height:8px; border-radius:50%; background:var(--line); cursor:pointer; transition:width .5s var(--ease-spring), background-color .4s var(--ease);}
.t-dot.active{width:26px; border-radius:99px; background:var(--brand);}

/* ==========================================================================
   17. FAQ
   ========================================================================== */
.faq{padding:6rem 0;}
.faq-list{max-width:860px; margin-inline:auto;}
.faq-item{border-bottom:1px solid var(--line); position:relative; overflow:hidden;}
.faq-item::before{
  content:""; position:absolute; left:0; bottom:-1px; height:1px; width:0; background:var(--brand);
  transition:width .7s var(--ease-in-out);
}
.faq-item.open::before,.faq-item:hover::before{width:100%;}
.faq-q{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding:1.5rem .4rem; text-align:left;
  font-family:var(--font-display); font-size:1.1rem; font-weight:500; letter-spacing:-.02em;
  transition:color .4s var(--ease), padding-left .5s var(--ease-out);
}
.faq-item:hover .faq-q{color:var(--brand); padding-left:.9rem;}
.faq-item.open .faq-q{color:var(--brand);}
.faq-plus{position:relative; width:34px; height:34px; border-radius:50%; border:1.5px solid var(--line); flex:none; transition:background-color .45s var(--ease), border-color .45s var(--ease), transform .6s var(--ease-spring);}
.faq-plus::before,.faq-plus::after{
  content:""; position:absolute; top:50%; left:50%; background:var(--ink);
  transform:translate(-50%,-50%); border-radius:2px; transition:transform .5s var(--ease-in-out), background-color .4s var(--ease);
}
.faq-plus::before{width:13px; height:1.8px;}
.faq-plus::after{width:1.8px; height:13px;}
.faq-item.open .faq-plus{background:var(--brand); border-color:var(--brand); transform:rotate(180deg);}
.faq-item.open .faq-plus::before,.faq-item.open .faq-plus::after{background:#fff;}
.faq-item.open .faq-plus::after{transform:translate(-50%,-50%) scaleY(0);}
.faq-a{max-height:0; overflow:hidden; transition:max-height .7s var(--ease-in-out);}
.faq-a > div{padding:0 3rem 1.7rem .4rem; color:var(--ink-soft); line-height:1.75; font-size:.96rem;
  opacity:0; transform:translateY(-8px); transition:opacity .5s var(--ease) .1s, transform .6s var(--ease-out) .1s;}
.faq-item.open .faq-a > div{opacity:1; transform:none;}

/* ==========================================================================
   18. CTA FINAL
   ========================================================================== */
.final-cta{padding:2rem 0 6rem;}
.final-cta__box{
  position:relative; overflow:hidden; border-radius:var(--r-xl);
  background:var(--brand); color:#fff; text-align:center;
  padding:5.5rem 2rem;
}
.final-cta__box::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at 20% 10%, rgba(255,255,255,.22), transparent 45%),
             radial-gradient(circle at 80% 90%, rgba(4,10,50,.35), transparent 45%);
}
.final-cta__word{
  position:absolute; left:0; right:0; bottom:-.18em; z-index:0;
  font-family:var(--font-display); font-weight:600; letter-spacing:-.05em;
  font-size:clamp(6rem,18vw,15rem); line-height:.8;
  color:rgba(255,255,255,.10); white-space:nowrap; text-align:center;
  animation:wordDrift 18s var(--ease-in-out) infinite;
}
@keyframes wordDrift{0%,100%{transform:translateX(-2%);} 50%{transform:translateX(2%);}}
.final-cta__box > *:not(.final-cta__word){position:relative; z-index:1;}
.final-cta h2{font-size:clamp(2rem,4.6vw,3.4rem); margin-bottom:1rem; max-width:20ch; margin-inline:auto;}
.final-cta p{color:rgba(255,255,255,.78); max-width:52ch; margin:0 auto 2.2rem; line-height:1.7;}

/* ==========================================================================
   19. CONTATO
   ========================================================================== */
.contact{padding:5rem 0 7rem;}
.contact-grid{
  position:relative; overflow:hidden;
  display:grid; grid-template-columns:.9fr 1.1fr; gap:3.5rem;
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-xl);
  padding:3.6rem; box-shadow:var(--shadow);
}
.contact-grid::before{
  content:""; position:absolute; width:340px; height:340px; border-radius:50%;
  background:radial-gradient(circle, rgba(2,52,248,.14), transparent 70%);
  top:-120px; right:-80px; animation:orbDrift 24s var(--ease-in-out) infinite;
}
.contact-info h2{font-size:clamp(1.7rem,3vw,2.4rem); margin-bottom:1rem;}
.contact-info > p{color:var(--ink-soft); line-height:1.75; margin-bottom:2.2rem;}
.contact-item{display:flex; align-items:center; gap:.9rem; padding:.7rem 0; font-size:.94rem; font-weight:500;}
.c-icon{
  width:40px; height:40px; border-radius:12px; flex:none; display:grid; place-items:center;
  background:var(--blue-100); transition:background-color .45s var(--ease), transform .55s var(--ease-spring);
}
.c-icon svg{width:18px; height:18px; stroke:var(--brand); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:stroke .4s var(--ease);}
.contact-item:hover .c-icon{background:var(--brand); transform:rotate(-6deg) scale(1.06);}
.contact-item:hover .c-icon svg{stroke:#fff;}

.form-grid{position:relative; display:grid; grid-template-columns:1fr 1fr; gap:1.1rem; align-content:start;}
.field{position:relative; display:flex; flex-direction:column; gap:.45rem;}
.field.full{grid-column:1/-1;}
.field label{font-size:.78rem; font-weight:600; letter-spacing:.02em; color:var(--ink-soft);}
.field input,.field textarea{
  width:100%; padding:.95rem 1.1rem; border-radius:var(--r-sm);
  border:1.5px solid var(--line); background:var(--ice); color:var(--ink);
  font-size:.94rem; transition:border-color .35s var(--ease), background-color .35s var(--ease), box-shadow .35s var(--ease);
}
.field textarea{min-height:130px; resize:vertical;}
.field input:focus,.field textarea:focus{
  outline:none; border-color:var(--brand); background:#fff;
  box-shadow:0 0 0 4px rgba(2,52,248,.12);
}
.field.invalid input,.field.invalid textarea{border-color:#e0464f; background:#fff5f5;}
.field-error{font-size:.76rem; color:#d5343d; animation:shakeIn .45s var(--ease);}
@keyframes shakeIn{0%{transform:translateX(-6px); opacity:0;} 60%{transform:translateX(3px);} 100%{transform:none; opacity:1;}}
.form-feedback{
  margin-top:.9rem; font-size:.86rem; padding:.75rem 1rem; border-radius:var(--r-sm);
  opacity:0; transform:translateY(-6px); transition:opacity .45s var(--ease), transform .5s var(--ease-out);
}
.form-feedback.show{opacity:1; transform:none;}
.form-feedback.success{background:var(--blue-100); color:var(--brand-deep);}
.form-feedback.error{background:#fdeaea; color:#c0323b;}

/* ==========================================================================
   20. RODAPÉ
   ========================================================================== */
footer{background:var(--navy); color:#fff; padding:5rem 0 2rem; overflow:hidden; position:relative;}
footer::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at 12% 0%, rgba(46,86,255,.28), transparent 48%);
}
footer .container{position:relative;}
.footer-grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:2.4rem; padding-bottom:3rem;}
.footer-brand{display:inline-flex; align-items:center; gap:.7rem; margin-bottom:1.1rem;}
.footer-brand .brand__tile{height:44px; padding:0 1rem; box-shadow:0 16px 34px -16px rgba(2,52,248,.9);}
.footer-brand .brand__tile img{height:20px;}
.footer-grid p{color:rgba(255,255,255,.6); font-size:.9rem; line-height:1.75; max-width:34ch;}
.footer-grid h4{font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; font-family:var(--font-mono); font-weight:500; color:rgba(255,255,255,.5); margin-bottom:1.1rem;}
.footer-grid ul li{margin-bottom:.65rem;}
.footer-grid ul a{
  position:relative; font-size:.92rem; color:rgba(255,255,255,.78);
  transition:color .35s var(--ease), padding-left .4s var(--ease-out);
}
.footer-grid ul a::before{
  content:""; position:absolute; left:0; top:50%; width:0; height:1px; background:var(--blue-300);
  transition:width .4s var(--ease-out);
}
.footer-grid ul a:hover{color:#fff; padding-left:1rem;}
.footer-grid ul a:hover::before{width:.7rem;}
.socials{display:flex; gap:.6rem;}
.socials a{
  width:42px; height:42px; border-radius:50%; display:grid; place-items:center;
  border:1px solid rgba(255,255,255,.18); color:#fff;
  transition:background-color .4s var(--ease), transform .55s var(--ease-spring), border-color .4s var(--ease);
}
.socials svg{width:18px; height:18px; stroke:currentColor; fill:none; stroke-linecap:round; stroke-linejoin:round;}
.socials a:hover{background:var(--brand); border-color:var(--brand); transform:translateY(-4px);}

.footer-word{
  font-family:var(--font-display); font-weight:600; letter-spacing:-.05em;
  font-size:clamp(4rem,16vw,13rem); line-height:.82; color:rgba(255,255,255,.06);
  text-align:center; padding:1rem 0 .5rem; user-select:none;
}
.footer-bottom{
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,.1); padding-top:1.6rem;
  font-size:.8rem; color:rgba(255,255,255,.5);
}
.footer-bottom .mono{letter-spacing:.1em; text-transform:uppercase; font-size:.7rem;}

/* ==========================================================================
   21. FAB + VOLTAR AO TOPO
   ========================================================================== */
.fab{
  position:fixed; right:1.5rem; bottom:1.5rem; z-index:520;
  width:58px; height:58px; border-radius:50%; display:grid; place-items:center;
  background:var(--brand); color:#fff;
  box-shadow:0 20px 40px -14px rgba(2,52,248,.8);
  transition:transform .55s var(--ease-spring);
}
.fab svg{width:24px; height:24px; stroke:currentColor; fill:none; stroke-linecap:round; stroke-linejoin:round;}
.fab::after{
  content:""; position:absolute; inset:0; border-radius:50%; border:2px solid var(--brand);
  animation:fabRing 2.6s var(--ease-out) infinite;
}
@keyframes fabRing{0%{transform:scale(1); opacity:.7;} 100%{transform:scale(1.7); opacity:0;}}
.fab:hover{transform:scale(1.1) rotate(6deg);}

.to-top{
  position:fixed; right:1.5rem; bottom:5.6rem; z-index:520;
  width:46px; height:46px; border-radius:50%; display:grid; place-items:center;
  background:#fff; color:var(--ink); border:1px solid var(--line);
  opacity:0; visibility:hidden; transform:translateY(12px);
  transition:opacity .4s var(--ease), transform .5s var(--ease-out), visibility .4s;
}
.to-top.show{opacity:1; visibility:visible; transform:none;}
.to-top svg.arrow{width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2.4; stroke-linecap:round;}
.to-top svg.ring{position:absolute; inset:-1px; width:calc(100% + 2px); height:calc(100% + 2px); transform:rotate(-90deg);}
.to-top svg.ring circle{fill:none; stroke:var(--brand); stroke-width:2; stroke-linecap:round;}

/* ==========================================================================
   22. PÁGINA DE PROJETOS
   ========================================================================== */
.page-hero{padding:calc(var(--nav-h) + 6rem) 0 4rem;}
.page-hero h1{font-size:clamp(2.4rem,5.6vw,4.2rem); letter-spacing:-.045em; margin-bottom:1.2rem; max-width:18ch;}
.page-hero p{color:var(--ink-soft); font-size:1.05rem; line-height:1.75; max-width:60ch;}

.modal-overlay{
  position:fixed; inset:0; z-index:800; display:grid; place-items:center; padding:1.5rem;
  background:rgba(5,10,36,.72); backdrop-filter:blur(10px);
  opacity:0; visibility:hidden; transition:opacity .5s var(--ease), visibility .5s;
}
.modal-overlay.open{opacity:1; visibility:visible;}
.modal-box{
  width:min(760px,100%); background:var(--paper); border-radius:var(--r-lg); overflow:hidden;
  transform:translateY(30px) scale(.96); opacity:0;
  transition:transform .7s var(--ease-out), opacity .5s var(--ease);
  max-height:90vh; overflow-y:auto;
}
.modal-overlay.open .modal-box{transform:none; opacity:1;}
.modal-media{position:relative; aspect-ratio:1600/785; background:var(--navy); overflow:hidden;}
.modal-media img{
  width:100%; height:100%; object-fit:cover; object-position:top center;
  animation:mediaIn .55s var(--ease-out);
}
@keyframes mediaIn{from{opacity:0; transform:scale(1.02);} to{opacity:1; transform:none;}}
.modal-close{
  position:absolute; top:1rem; right:1rem; width:40px; height:40px; border-radius:50%;
  background:rgba(255,255,255,.92); display:grid; place-items:center; color:var(--ink);
  transition:transform .5s var(--ease-spring), background-color .4s var(--ease);
  z-index:2;
}
.modal-close svg{width:16px; height:16px; stroke:currentColor; fill:none;}
.modal-close:hover{transform:rotate(90deg); background:#fff;}

/* Navegação da galeria */
.modal-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:46px; height:46px; border-radius:50%; z-index:2;
  background:rgba(255,255,255,.9); color:var(--ink);
  display:grid; place-items:center;
  opacity:0; transition:opacity .4s var(--ease), transform .5s var(--ease-spring), background-color .3s var(--ease);
}
.modal-nav svg{width:18px; height:18px; stroke:currentColor; fill:none;}
.modal-nav.prev{left:1rem;}
.modal-nav.next{right:1rem;}
.modal-media:hover .modal-nav,.modal-nav:focus-visible{opacity:1;}
.modal-nav:hover{background:#fff; transform:translateY(-50%) scale(1.08);}
.modal-nav[hidden]{display:none;}
.modal-counter{
  position:absolute; left:1rem; bottom:1rem; z-index:2;
  background:rgba(4,8,30,.7); color:#fff; backdrop-filter:blur(6px);
  padding:.35rem .8rem; border-radius:var(--r-pill);
  font-size:.7rem; letter-spacing:.1em;
}
.modal-thumbs{
  display:flex; gap:.6rem; padding:1rem 2.2rem 0; overflow-x:auto;
  scrollbar-width:thin;
}
.modal-thumbs[hidden]{display:none;}
.modal-thumbs button{
  flex:0 0 96px; height:52px; border-radius:9px; overflow:hidden;
  border:2px solid transparent; opacity:.55; padding:0;
  transition:opacity .35s var(--ease), border-color .35s var(--ease), transform .45s var(--ease-out);
}
.modal-thumbs button img{width:100%; height:100%; object-fit:cover; object-position:top center;}
.modal-thumbs button:hover{opacity:.85; transform:translateY(-2px);}
.modal-thumbs button.active{opacity:1; border-color:var(--brand);}
.modal-body{padding:2.2rem;}
.modal-body h3{font-size:1.7rem; margin:.7rem 0 .9rem;}
.modal-body p{color:var(--ink-soft); line-height:1.75;}
.modal-body .p-tag{
  display:inline-block; font-family:var(--font-mono); font-size:.66rem; letter-spacing:.14em;
  text-transform:uppercase; background:var(--blue-100); color:var(--brand);
  padding:.32rem .7rem; border-radius:var(--r-pill);
}
.modal-tags{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.4rem;}
.modal-tags span{
  font-size:.78rem; padding:.42rem .85rem; border-radius:var(--r-pill);
  background:var(--ice); border:1px solid var(--line); color:var(--ink-soft);
}

/* ==========================================================================
   23. RESPONSIVO
   ========================================================================== */
@media (max-width:1080px){
  .feature-grid{grid-template-columns:repeat(2,1fr);}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .timeline{grid-template-columns:repeat(2,1fr); gap:2.4rem; padding-top:1rem;}
  .timeline__rail{display:none;}
  .stats-grid{grid-template-columns:repeat(2,1fr); gap:2.5rem;}
  .stats-grid .s-item + .s-item::before{display:none;}
}
@media (max-width:980px){
  .main-nav,.header-actions .btn{display:none;}
  .nav-toggle{display:block;}
  .hero{grid-template-columns:1fr; text-align:left; min-height:auto; padding-top:calc(var(--nav-h) + 3rem);}
  .hero-visual{order:-1; max-width:400px; margin-inline:auto;}
  .scroll-cue{display:none;}
  .about-grid{grid-template-columns:1fr; gap:3rem;}
  .service-grid{grid-template-columns:1fr;}
  .portfolio-grid{grid-template-columns:1fr;}
  .contact-grid{grid-template-columns:1fr; padding:2.4rem;}
}
@media (max-width:680px){
  :root{--nav-h:70px;}
  .container{width:min(1240px,92%);}
  .section-pad,.about,.features,.services,.process,.portfolio,.testimonials,.faq{padding:4.5rem 0;}
  .feature-grid,.projects-grid,.footer-grid{grid-template-columns:1fr;}
  .check-list{grid-template-columns:1fr;}
  .hero-stats{gap:1.6rem;}
  .hero-stats .stat b{font-size:1.7rem;}
  .form-grid{grid-template-columns:1fr;}
  .t-card{padding:2rem 1.6rem;}
  .final-cta__box{padding:3.6rem 1.4rem;}
  .contact-grid{padding:1.8rem;}
  .footer-bottom{flex-direction:column; text-align:center;}
  .mobile-panel > a{font-size:1.7rem;}
}

/* ==========================================================================
   24. MOVIMENTO REDUZIDO
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  [data-anim]{opacity:1 !important; transform:none !important; clip-path:none !important; filter:none !important;}
  .split .w > i{transform:none !important;}
  .draw [data-draw]{stroke-dashoffset:0 !important;}
  .preloader{display:none;}
}
